파티션 용량 변경

요즘같은 가상화/클라우드 환경에서는 디스크 용량을 매우 유연하게 조절이 가능하다.
아래 예제는 실제 사용중인 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]
  

확장이 완료되었다.