스왑 영역을 구성하는 방식은 스왑 파티션과 스왑 파일 두 가지 방식이 있음
스왑 파티션 방식
- 별도의 파일시스템 개입 없이 파티션 전체가 스왑으로 동작하므로 성능저하가 일어나지 않는다는 장점이 있지만 별도의 스왑 파티션 영역으로 사용할 전용 파티션을 확보하기 어려울 수 있다는 단점도 존재
스왑 파일 방식
- 파일시스템 내에 파일을 생성하고, 이 파일을 스왑 영역으로 사용하는 방식
- 디스크에서 파티셔닝 할 필요 없이, 기존 파일시스템에서 사용할 수 있는 저장 공간을 스왑 영역으로 사용
- 스왑 파일을 사용하는 방식은 스왑 파일을 생성하기 위해 파일시스템이라는 중간 단계가 필요
- 따라서, 스왑 파티션에 비해 성능이 떨어질 수 있음.
- 파티션의 경우 디스크에서 연속된 공간에 위치하지만, 파일시스템 내의 파일형태로 저장된 스왑 파일은 디스크에서 연속된 공간을 할당받지 못 할 수도 있기 때문
swapon, free
[root@centOS8 ~]# swapon /dev/sdb1
[root@centOS8 ~]# swapon -s
Filename Type Size Used Priority
/dev/sdb1 partition 511996 0 -2
[root@centOS8 ~]# swapoff /dev/sdb1
[root@centOS8 ~]# swapon -s
[root@centOS8 ~]#
[root@centOS8 ~]# free
total used free shared buff/cache available
Mem: 1996208 1102680 420076 10776 473452 710148
Swap: 511996 0 511996
swapon
옵션 |
설명 |
-a |
/etc/fstab 파일을 참고하여 스왑영역 활성화 |
-p |
스왑 영역을 활성화 할 때 우선순위 지정 |
-s |
활성화된 스왑 영역의 정보를 출력 |
- 스왑 영역의 활성화와 스왑 영역 확인에 사용
- 스왑도 파일시스템과 마찬가지로 시스템의 전원이 종료될 때 해제되며 시스템의 전원이 시작될 때 파일시스템 테이블에 등록되어 있지 않으면 자동으로 활성화되지 않음.
- '-s' 옵션을 함께 사용하면 활성화된 스왑 영역의 목록과 유형, 사이즈, 사용량, 우선순위가 출력
- 스왑 영역 활성화 해제는 swapoff
free
- 전체 물리메모리의 사이즈 및 사용량, 스왑 영역의 사용량 등을 출력
- '-h' 옵션을 추가하여 실행하면 사이즈가 사용자가 읽기 쉬운 단위로 출력
스왑 파티션 생성
- 스왑 파티션을 생성하기 위하여 먼저 디스크 파티셔닝을 해야 함.
- 생성된 파티션을 스왑 영역으로 사용하기 위해서 파티션 타입을 스왑 장치용 파티션으로 바꿔야 함.
- fdisk 명령의 프롬프트에서 't' 명령을 사용하여 파티션 타입 변경 가능
- t 명령에서 'l' 명령 사용 시, 사용가능한 파티션 타입 조회가능
fdisk -> t
parted -s /dev/sdb mklabel msdos
parted -s /dev/sdb mkpart primary 0% 3G
[root@CentOs8 ~]# fdisk /dev/sdb
//파티션 타입 변경
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
mkswap
- 파일 입출력 용도의 파일시스템을 생성할 때 파티셔닝 한 후 파일시스템을 생성(mkfs)했던 것처럼 스왑 영역을 생성할 때에도 파티셔닝 한 후에 파티션에 스왑 영역을 생성해야 함. 이때 사용하는 명령이 mkswap
[root@CentOs8 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
└─sda1 8:1 0 60G 0 part /
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 3G 0 part
sdc 8:32 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
[root@CentOs8 ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 3 GiB (3221221376 bytes)
no label, UUID=efa1d0ba-4f73-4f16-ab6d-1146604611c4
[root@CentOs8 ~]# swapon -s
Filename Type Size Used Priority
/dev/sdb1 partition 3145724 0 -2
영구적인 스왑 파티션 등록
[root@CentOs8 ~]# nano /etc/fstab
// 1 //2 //3 //4 //5 //6
UUID=56d9d275-e21e-4958-934f-e3e0f6b8e608 swap swap defaults 0 0
or
/dev/sdb1 swap swap defaults 0 0
- 1번 필드는 스왑 파티션의 장치이름, 스왑 파일 이름, 스왑의 UUID 중 하나 입력.
- UUID 를 적는다면 오타에 주의해야 함. 재부팅 시 복구모드로 접근해서 장애처리를 해야할 수도 있음.
- 장치 경로를 적는 것은 부팅시에 장치의 순번이 바뀔 수 있기 때문에 주의해야 함.
- 2번 필드에는 마운트 포인트를 지정하는 필드. 스왑 영역은 마운트 포인트가 필요하지 않음. 단순히 swap 입력
- 3번 필드는 파일 시스템 종류를 입력하는 필드. 스왑 영역은 swap 으로 입력
- 4번 필드는 마운트 옵션을 지정하는 필드. 스왑영역은 별도의 옵션을 지정하지 않을 경우 'defaults' 옵션 사용
- 5번 필드에는 덤프(dump) 백업의 사용 유무를 지정하는 필드. 스왑영역은 덤프(dump) 백업을 사용하지 않음. 따라서 0
- 6번 필드는 파일시스템 체크필드. 스왑 영역은 파일시스템 체크가 필요하지 않기 때문에 '0'을 입력.
- /etc/fstab 파일에서 스왑 영역을 설정해야 함
스왑 파일 생성
- 스왑 파일은 파일시스템 아래에 파일을 생성하여 그 파일을 스왑 영역으로 사용.
- 따라서 스왑 파일은 파티션 장치를 사용하지 않고 디스크 파티셔닝을 위한 파티션을 확보할 필요가 없음
- 스왑 파일을 생성하여 스왑 영역을 생성하기 전에 먼저 파일시스템에서 사용할 여유 공간이 존재하는지 확인
- 파일시스템의 사용량 확인은 df 명령을 사용
- df 명령과 '-h' 옵션을 함께 사용할 경우 사용자가 보기 편한 방식으로 파일시스템 사용량을 출력
- 영구 설정은 위와 마찬가지로 /etc/fstab 에 등록하면 됌
[root@CentOs8 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 947M 0 947M 0% /dev
tmpfs 975M 84K 975M 1% /dev/shm
tmpfs 975M 18M 958M 2% /run
tmpfs 975M 0 975M 0% /sys/fs/cgroup
/dev/sda1 60G 6.0G 55G 10% /
tmpfs 195M 88K 195M 1% /run/user/3896
tmpfs 195M 1.2M 194M 1% /run/user/42
tmpfs 195M 4.6M 191M 3% /run/user/0
- 현재 파일을 생성 할 수 있는 파일시스템은 루트 파일시스템 뿐
- 실제 시스템에서 루트 파일 시스템에 스왑 파일을 생성할 경우 시스템 성능 저하가 발생할 수 있으므로 권장하지 않음
[root@CentOs8 ~]# mkdir /swapdir
// 0으로 채워진 데이터를 512byte씩 1,048,000번 /swapdir/swapfile 파일에 복사
[root@CentOs8 ~]# dd if=/dev/zero of=/swapdir/swapfile bs=512 count=1048000
1048000+0 records in
1048000+0 records out
536576000 bytes (537 MB, 512 MiB) copied, 2.87316 s, 187 MB/s
[root@CentOs8 ~]# file -s /swapdir/swapfile
/swapdir/swapfile: data
[root@CentOs8 ~]# mkswap /swapdir/swapfile
mkswap: /swapdir/swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 511.7 MiB (536571904 bytes)
no label, UUID=11e9518c-0edd-4760-b16a-f92045aa614c
[root@CentOs8 ~]# swapon /swapdir/swapfile
swapon: /swapdir/swapfile: insecure permissions 0644, 0600 suggested.
[root@CentOs8 ~]# swapon -s
Filename Type Size Used Priority
/dev/sdb1 partition 3145724 55296 -2
/swapdir/swapfile file 523996 0 -3
dd 명령
- 블록단위로 파일을 변환하거나 복사하는 명령
- 'if' 에는 복사할 파일
- 'of' 에는 생성될 파일
- 'bs' 에는 복사할 때 사용할 블록의 크기를 바이트(byte)단위로 지정
- 'count' 에는 복사할 횟수