본문 바로가기
OS/RHEL | CentOS

Swap 영역 생성/확장 (Standard Partition / LVM)

by stkang 2022. 7. 5.

저번 포스트에 이어서 OS설치 시 구성되지 않은 Swap 영역을 생성하거나 기존에 있는 Swap 영역을 확장하는 방법에 대해서 포스팅 하겠습니다.

Swap 영역 생성

이전 포스트에 내용처럼 Swap은 파티션 형태(Standard/LVM) 와 File형태로 생성하여 사용할 수 있습니다.

이 글에선 Partition 형식으로 생성할때의 내용을 게시하겠습니다.

Partition 형태의 Swap 생성방법 (Standard / LVM)

1. LVM Volume형식

사전에 LVM에 대해서 기본적인 로직을 알고계시면 도움됩니다.

해당 내용은 이번 포스트에서 다루지 않겠습니다.

 

Swap을 LVM형식으로 생성되기 위해선 사용되고있는 디스크의 특정 Partition이 PV로 구성되고 해당 PV를 통한 VG(VolumeGroup) 이 구성되어 사용할만큼의 유휴용량이 존재해야합니다.

하기 명령을 통해 VG내의 유휴용량 확인합니다.

# vgs

 

먼저 Swap 영역으로 사용될 LV를 생성해주어야합니다.

LV 생성명령의 형식은 하기와 같습니다.

ex)
# lvcreate "VolumeGroupName" -n "LogicalVolumeName" -L SIZE
# lvcreate rootvg -n swaplv -L 4G

-n 옵션 : LV의 Name 지정

-L 옵션 : LE의 Size 단위가 아닌 MB, GB 단위로 지정할 수있는 사이즈 지정옵션

  (-l 소문자 사용 시 LE의 갯수를 지정하는 옵션 / LE의 Size는 PE의 Size와 동일하게 따라감)

 

위 명령으로 LV를 생성하셨다면 해당 볼륨의 파일시스템 타입을 Swap 형식으로 생성해주어야 합니다.

일반 파일시스템으로 사용될 볼륨과는 다르게 OS에서 Swap 형식으로 인식해야하기 때문에 하기의 명령을 통해서 Swap타입으로 생성이 가능합니다.

ex)
# mkswap /dev/VolumeGroupName/LogicalVolumeName
# mkswap /dev/rootvg/swaplv

 

위 명령을 통해 볼륨에 Swap 으로 사용되게끔 생성해준 후엔 시스템 Reboot시 자동으로 마운트되어 사용될 수 있도록 /etc/fstab 파일에 볼륨의 대한 마운트정보를 등록해 주어야합니다.

# vi /etc/fstab
===================================
...
/dev/VolumeGroupName/LogicalVolumeName   swap     swap    defaults     0 0
...
===================================

그 뒤로는 시스템에서 해당 구성을 등록하여 사용할 수있게 하기 명령을 실행합니다.

# systemctl daemon-reload

 

이후 해당 볼륨을 실제 Swap 공간으로 활성화하려면 하기 명령을 실행 시 Online상으로 활성화 됩니다.

ex)
# swapon -v /dev/VolumeGroupName/LogicalVolumeName
# swapon -v /dev/rootvg/swaplv

 

실제 활성화 되었는지 현재 상태를 확인할땐 하기 명령을 통해 출력되는 내용으로 확인 가능합니다.

# cat /proc/swaps
# swapon -s
# free -h

 

2. Standard Partition 형식 

 

#fdisk /dev/sdX 명령을 통해 특정 디스크에 Standard Partition을 추가하는 작업을 진행합니다.

# fdisk /dev/vdb
...
Building a new DOS disklabel with disk identifier 0x4b808001.

Command (m for help): p (현재상태 확인)

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4b808001

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n (파티션 새로 생성)
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p (Primary 형식 선택)
Partition number (1-4, default 1): 1 (첫번째 파티션 / 해당부분은 사용상황마다 상이)
First sector (2048-20971519, default 2048): <Enter>( 첫번째 섹터지정)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +8G (8G 지정)
Partition 1 of type Linux and of size 8 GiB is set

Command (m for help): p (상태확인)

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4b808001

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    16779263     8388608   83  Linux

Command (m for help): t (파티션 타입설정)
Selected partition 1 (하나밖에 없어서 자동으로 1번 파티션 선택됨)
Hex code (type L to list all codes): L (지정할 수있는 타입 코드출력)

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
...
Hex code (type L to list all codes): 82 (Linux SWAP 형식 지정)
Changed type of partition 'Linux' to 'Linux swap / Solaris'

Command (m for help): p (상태확인)

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4b808001

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    16779263     8388608   82  Linux swap / Solaris

Command (m for help): w (현재 상태저장)
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

위의 예시처럼 Standard Partition 생성 후 Type까지 변경이 완료 되었으면 해당 공간의 파일시스템 타입을 Swap형식으로 새로 생성해주고 활성화를 진행하면 구성 완료됩니다.

 

파티션 구성사항을 OS에 재인식 하게끔 Sync 해주는 명령을 실행합니다.

# partprobe

 

생성한 파티션에 Swap 파일시스템으로 포멧합니다.

# mkswap /dev/vdb1
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=8ee9105f-6382-49f3-9433-5f812e54e636

 

/etc/fstab에 등록하여 재부팅시에도 사용될 수있게끔 설정합니다.

# vi /etc/fstab
===================================
...
/dev/vdb1   swap     swap    defaults     0 0
...
===================================

 

생성한 Swap 영역을 활성화합니다.

# swapon -v /dev/vdb1

or 

# swapon -a

 

활성화 된 Swap 영역을 확인합니다.

# cat /proc/swaps
# swapon -s
# free -h

 

Swap 영역 확장

Partition 형태의 Swap 확장방법 (Standard / LVM)

1. LVM Volume형식

Swap 영역의 VG의 유휴용량을 확보한 상황이라면 해당 Swap 영역을 확장할 수 있습니다.
구성된 논리 볼륨에 대한 Swap 비활성화를 진행합니다.
# swapoff -v /dev/VolGroup00/LogVol01

 

LVM 논리 볼륨의 크기를 원하는 크기를 지정하여 조정합니다.
# lvresize /dev/VolGroup00/LogVol01 -L +4G

 

기존 Swap 영역의 포멧에서 알고있는 사이즈는 확장 전의 사이즈로 구성이 되어있기에 해당 영역에 파일시스템을 재포멧하여 늘어난 영역만큼 재생성되게끔 하기 명령을 실행합니다.
# mkswap /dev/VolGroup00/LogVol01

 

 

위의 명령들을 통해 확장된 논리 볼륨을 Swap으로써 활성화합니다.
# swapon -v /dev/VolGroup00/LogVol01

 

Swap 논리 볼륨이 원하는 사이즈로 활성화 되어있는지 하기 명령을 통해 확인합니다.
# cat /proc/swaps
# free -h

 

 

2. Standard Partiton 형식

Standard partition 형태일시엔 해당 Swap 비활성화 후 해당 파티션을 삭제하고 원하는 사이즈로 재생성해주시면 됩니다.

 

 

 

 

 

다음 포스트에선 File형태의 Swap 생성 및 확장 방법에 대해 포스팅 하겠습니다.

 

댓글