요즘같은 가상화/클라우드 환경에서는 디스크 용량을 매우 유연하게 조절이 가능하다.
아래 예제는 실제 사용중인 OS Disk의 용량을 가상화/클라우드에서 확장해주는 과정을 설명한다.
1. 가상화 / 클라우드 플랫폼에서 해당 머신의 디스크 용량을 증설 해준다.
[root@registry ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 100G 0 disk # <- 원래 용량은 100G ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 99G 0 part ├─rhel_registry-root 253:0 0 97G 0 lvm / # <- 최종적으로 root 디스크 용량을 확장할 예정이다. └─rhel_registry-swap 253:1 0 2.1G 0 lvm [SWAP]
2. 변경된 디스크 용량을 확인한다.
[root@registry ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 110G 0 disk # <- 증설된 용량 확인 ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 99G 0 part ├─rhel_registry-root 253:0 0 97G 0 lvm / # <- 파티션 용량을 확장해야함 └─rhel_registry-swap 253:1 0 2.1G 0 lvm [SWAP]
3. 파티션 자체를 확장하기 위해서는 growpart
라는 툴이 필요하다. 해당 명령어는 cloud-utils-growpart
패키지 안에 포함되어있다.
[root@registry ~]# dnf -y install cloud-utils-growpart
4. 해당 디스크의 2번째 파티션을 확장하기 위해 growpart
명령어를 사용하여 확장시켜준다.
[root@registry ~]# growpart /dev/vda 2 growpart /dev/vda 2 CHANGED: partition=2 start=2099200 old: size=207615967 end=209715167 new: size=228587487 end=230686687 [root@registry ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 110G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 109G 0 part # <- 해당 PV 파티션용량이 확장된것을 확인한다. ├─rhel_registry-root 253:0 0 97G 0 lvm / └─rhel_registry-swap 253:1 0 2.1G 0 lvm [SWAP]
5. 해당 PV파티션을 resize 해준다.
[root@registry ~]# pvs PV VG Fmt Attr PSize PFree /dev/vda2 rhel_registry lvm2 a-- <99.00g 0 [root@registry ~]# pvresize /dev/vda2 Physical volume "/dev/vda2" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized [root@registry ~]# pvs PV VG Fmt Attr PSize PFree /dev/vda2 rhel_registry lvm2 a-- <109.00g 10.00g [root@registry ~]# vgs VG #PV #LV #SN Attr VSize VFree rhel_registry 1 2 0 wz--n- <109.00g 10.00g
6. PV resize 를 수행하면 자동으로 VG의 여유공간이 확장되는것을 확인할 수 있다.
[root@registry ~]# lvextend -l+100%FREE rhel_registry/root -r Size of logical volume rhel_registry/root changed from <96.93 GiB (24814 extents) to <106.93 GiB (27374 extents). Logical volume rhel_registry/root successfully resized. meta-data=/dev/mapper/rhel_registry-root isize=512 agcount=9, agsize=3075584 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=25409536, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=6007, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 25409536 to 28030976
[root@registry ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 110G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 109G 0 part ├─rhel_registry-root 253:0 0 107G 0 lvm / └─rhel_registry-swap 253:1 0 2.1G 0 lvm [SWAP]
확장이 완료되었다.