리눅스 LVM 디스크 확장 실전 가이드

1. 현재 파티션 표 확인

명령어: fdisk -l

현재 vda1, vda2, vda3가 마운트되어 있으며, 사용되지 않은 vdb 디스크가 100GB 있음을 확인. 현재 LV 크기는 29GB임.

sysadmin@Storage-Node-01:~# fdisk -l
Disk /dev/vda:60 GiB,64424509440 bytes,125829120 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
Disklabel type: gpt
Disk identifier: 4A7F1857-B833-4D08-9D5C-3A0A3DB2D192

Device          Start      End      Sectors  Size Type
/dev/vda1     2048      4095      2048   1M BIOS boot
/dev/vda2     4096   4198399   4194304   2G Linux filesystem
/dev/vda3  4198400 125827071 121628672  58G Linux filesystem

Disk /dev/vdb:100 GiB,107374182400 bytes,209715200 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 /dev/mapper/datastore-datastore--lv:28.102 GiB,31134318592 bytes,60809216 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
sysadmin@Storage-Node-01:~#

2. 새 디스크 /dev/vdb 파티션 생성

명령어: fdisk /dev/vdb

작업 순서: n(새 파티션 추가) → p(파티션 표 출력) → 1(파티션 번호 1 선택) → Enter(시작 섹터 기본값) → Enter(종료 섹터 기본값) → t(파티션 타입 변경) → 8e(Linux 타입을 "Linux LVM"으로 변경) → p(파티션 표 출력) → w(변경 사항 디스크에 쓰고 종료)

sysadmin@Storage-Node-01:~# fdisk /dev/vdb

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xa8f54781.

Command (m for help): n
Partition type
   p   primary partition (0 primary, 0 extended, 4 free)
   e   extended partition (for logical partitions)
Select (default p): p
Partition number (1-4, default  1): 1
First sector (2048-209715199, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-209715199, default 209715199):

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

Command (m for help): p
Disk /dev/vdb:100 GiB,107374182400 bytes,209715200 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
Disklabel type: dos
Disk identifier: 0xa8f54781

Device       Boot   Start      End    Sectors  Size Id Type
/dev/vdb1         2048 209715199 209713152  100G 8e Linux LVM

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

sysadmin@Storage-Node-01:~#

3. 파티션 표 재확인

명령어: fdisk -l

새로 생성된 /dev/vdb1 파티션 확인

sysadmin@Storage-Node-01:~# fdisk -l

Disk /dev/vda:60 GiB,64424509440 bytes,125829120 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
Disklabel type: gpt
Disk identifier: 4A7F1857-B833-4D08-9D5C-3A0A3DB2D192

Device          Start      End      Sectors  Size Type
/dev/vda1     2048      4095      2048   1M BIOS boot
/dev/vda2     4096   4198399   4194304   2G Linux filesystem
/dev/vda3  4198400 125827071 121628672  58G Linux filesystem

Disk /dev/vdb:100 GiB,107374182400 bytes,209715200 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
Disklabel type: dos
Disk identifier: 0xa8f54781

Device       Boot   Start      End    Sectors  Size Id Type
/dev/vdb1         2048 209715199 209713152  100G 8e Linux LVM

Disk /dev/mapper/datastore-datastore--lv:28.102 GiB,31134318592 bytes,60809216 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
sysadmin@Storage-Node-01:~#

4. PV(물리 볼륨) 확인

명령어: pvs

현재 PV는 /dev/vda3 하나만 존재

VG도 datastore-vg 하나만 존재

sysadmin@Storage-Node-01:~# pvs
  PV         VG          Fmt  Attr PSize   PFree
  /dev/vda3  datastore-vg lvm2 a--  <58.00g 29.00g
sysadmin@Storage-Node-01:~#

5. 새 PV 생성 및 확인

명령어: pvcreate /dev/vdb1

새로 생성된 PV /dev/vdb1이 100GB 크기임을 확인

sysadmin@Storage-Node-01:~# pvcreate /dev/vdb1
  Physical volume "/dev/vdb1" successfully created.
sysadmin@Storage-Node-01:~# pvs
  PV         VG          Fmt  Attr PSize    PFree
  /dev/vda3  datastore-vg lvm2 a--   <58.00g   29.00g
  /dev/vdb1             lvm2 ---  <100.00g <100.00g
sysadmin@Storage-Node-01:~#
  1. 새 PV를 VG에 확장

명령어: vgextend datastore-vg /dev/vdb1

VG 확장 전후 비교 확인

sysadmin@Storage-Node-01:~# vgs
  VG          #PV #LV #SN Attr   VSize   VFree
  datastore-vg   1   1   0 wz--n- <58.00g 29.00g
sysadmin@Storage-Node-01:~# vgextend datastore-vg /dev/vdb1
  Volume group "datastore-vg" successfully extended
sysadmin@Storage-Node-01:~# vgs
  VG          #PV #LV #SN Attr   VSize   VFree
  datastore-vg   2   1   0 wz--n- 157.99g <129.00g
sysadmin@Storage-Node-01:~#

7. PV 재확인

명령어: pvs

새로 추가된 PV가 VG에 할당되었음을 확인

sysadmin@Storage-Node-01:~# pvs
  PV         VG          Fmt  Attr PSize    PFree
  /dev/vda3  datastore-vg lvm2 a--   <58.00g      0
  /dev/vdb1  datastore-vg lvm2 a--  <100.00g <39.50g
sysadmin@Storage-Node-01:~#

8. LV(논리 볼륨) 확인

명령어: lvdisplay

현재 LV 크기는 29G이며, LV 경로는 /dev/datastore-vg/datastore-lv임

sysadmin@Storage-Node-01:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/datastore-vg/datastore-lv
  LV Name                datastore-lv
  VG Name                datastore-vg
  LV UUID                wDo2pg-iIhK-ig7s-2Hwy-swrW-j1cp-Y2zpQ1
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2023-02-24 02:09:04 +0000
  LV Status              available
  # open                 1
  LV Size                <29.00 GiB
  Current LE             7423
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

sysadmin@Storage-Node-01:~#

9. LV 확장

명령어:

lvextend -L +50G /dev/datastore-vg/datastore-lv lvextend -l +50%FREE /dev/datastore-vg/datastore-lv

-L와 -l 옵션의 대소문자에 주의

sysadmin@Storage-Node-01:~# lvextend -L +50G /dev/datastore-vg/datastore-lv
  Size of logical volume datastore-vg/datastore-lv changed from <29.00 GiB (7423 extents) to <79.00 GiB (20223 extents).
  Logical volume datastore-vg/datastore-lv successfully resized.
sysadmin@Storage-Node-01:~# lvs
  LV         VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  datastore-lv datastore-vg -wi-ao---- <79.00g
sysadmin@Storage-Node-01:~# lvextend -l +50%FREE /dev/datastore-vg/datastore-lv
  Size of logical volume datastore-vg/datastore-lv changed from <79.00 GiB (20223 extents) to <118.50 GiB (30335 extents).
  Logical volume datastore-vg/datastore-lv successfully resized.
sysadmin@Storage-Node-01:~# lvs
  LV         VG          Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  datastore-lv datastore-vg -wi-ao---- <118.50g
sysadmin@Storage-Node-01:~#

10. LV 공간 새로고침

명령어: lvscan

sysadmin@Storage-Node-01:~# lvscan
  ACTIVE            '/dev/datastore-vg/datastore-lv' [<118.50 GiB] inherit
sysadmin@Storage-Node-01:~#

11. 파일시스템 타입 확인

ext4 파일시스템의 경우 resize2fs, xfs 파일시스템의 경우 xfs_growfs 명령어 사용

명령어: lsblk -f 또는 df -Th

sysadmin@Storage-Node-01:~# lsblk -f
NAME                      FSTYPE      LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
loop1                     squashfs                                                       0   100% /snap/core20/1828
loop2                     squashfs                                                       0   100% /snap/lxd/22753
loop3                     squashfs                                                       0   100% /snap/snapd/18357
loop4                     squashfs                                                       0   100% /snap/core20/1822
loop5                     squashfs                                                       0   100% /snap/lxd/24061
sr0
vda
├─vda1
├─vda2                    ext4              61ee5337-c84b-4da9-8927-cf1aa05df1aa      1.6G    11% /boot
└─vda3                    LVM2_member       aeuGO5-PGh7-iLWr-oYag-iy1l-gUgr-AdrUQD
  └─datastore--vg-datastore--lv ext4              76558209-dbb2-4b7c-8260-618da43abcb7      7.7G    68% /
vdb
└─vdb1                    LVM2_member       V0zlFz-jw0X-mRXp-XAWc-3qld-Boc1-Xocb1j
  └─datastore--vg-datastore--lv ext4              76558209-dbb2-4b7c-8260-618da43abcb7      7.7G    68% /
sysadmin@Storage-Node-01:~#

12. 파일시스템 확장 전 용량 확인

명령어: df -Th

df -h와 df -Th의 차이점은 파일시스템 타입(ext4 또는 xfs) 표시 여부

sysadmin@Storage-Node-01:~# df -Th
Filesystem                         Type      Size  Used Avail Use% Mounted on
udev                               devtmpfs  7.8G     0  7.8G    0% /dev
tmpfs                              tmpfs     1.6G  1.7M  1.6G    1% /run
/dev/mapper/datastore--vg-datastore--lv ext4       29G   20G  7.8G   72% /
tmpfs                              tmpfs     7.8G     0  7.8G    0% /dev/shm
tmpfs                              tmpfs     5.0M     0  5.0M    0% /run/lock
tmpfs                              tmpfs     7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/vda2                          ext4      2.0G  209M  1.6G   12% /boot
/dev/loop2                         squashfs   68M   68M     0  100% /snap/lxd/22753
/dev/loop3                         squashfs   50M   50M     0  100% /snap/snapd/18357
/dev/loop4                         squashfs   64M   64M     0  100% /snap/core20/1822
/dev/loop5                         squashfs   92M   92M     0  100% /snap/lxd/24061
/dev/loop1                         squashfs   64M   64M     0  100% /snap/core20/1828
tmpfs                              tmpfs     1.6G     0  1.6G    0% /run/user/0
sysadmin@Storage-Node-01:~#

13. 파일시스템 확장

명령어: resize2fs /dev/datastore-vg/datastore-lv

sysadmin@Storage-Node-01:~# resize2fs /dev/datastore-vg/datastore-lv
resize2fs 1.45.5 (07-Jan-2020)
The filesystem on /dev/datastore-vg/datastore-lv is currently mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 15
The filesystem on /dev/datastore-vg/datastore-lv is now 31063040 blocks long.
sysadmin@Storage-Node-01:~#
  • xfs 파일시스템의 경우 xfs_growfs 명령어 사용

명령어: xfs_growfs /dev/[VG_NAME]/[LV_NAME]

sysadmin@Storage-Node-01:~# xfs_growfs /dev/datastore-vg/datastore-lv

14. 최종 용량 확인

명령어: df -h

sysadmin@Storage-Node-01:~# df -h
Filesystem                          Size  Used Avail Use% Mounted on
udev                               7.8G     0  7.8G    0% /dev
tmpfs                              1.6G  1.7M  1.6G    1% /run
/dev/mapper/datastore--vg-datastore--lv  117G   20G   93G   18% /
tmpfs                              7.8G     0  7.8G    0% /dev/shm
tmpfs                              5.0M     0  5.0M    0% /run/lock
tmpfs                              7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/vda2                          2.0G  209M  1.6G   12% /boot
/dev/loop2                          68M   68M     0  100% /snap/lxd/22753
/dev/loop3                          50M   50M     0  100% /snap/snapd/18357
/dev/loop4                          64M   64M     0  100% /snap/core20/1822
/dev/loop5                          92M   92M     0  100% /snap/lxd/24061
/dev/loop1                          64M   64M     0  100% /snap/core20/1828
tmpfs                              1.6G     0  1.6G    0% /run/user/0
sysadmin@Storage-Node-01:~#

확장 작업 완료.

  • LV 확장 시 처음 50G 추가, 두 번째 50% 추가 후에도 약 25G가 남아있지만 VG는 100% 확장됨

태그: LVM 리눅스 디스크 관리 파티션 볼륨 관리

6월 8일 00:01에 게시됨