1. 개요
- 두 개의 디스크(/dev/vdb, /dev/vdc)로 LVM을 구성하고, ext4·XFS 파일시스템 생성 → 마운트 → VG/LV 확장 → ext4 축소(오프라인)까지 전체 과정을 실습 형태로 정리합니다.
2. 버전
- Rocky Linux 9.5
3. 설명
3-1. LVM이란?
- LVM(Logical Volume Manager)은 디스크 공간을 논리적으로 관리할 수 있게 해주는 스토리지 추상화 계층입니다.
- 여러 물리 디스크를 묶어 용량을 유연하게 나누고, 필요 시 온라인으로 확장·이동하실 수 있습니다.
3-2. PV(Physical Volume)란?
- PV는 LVM이 사용하는 물리 저장소 단위(디스크 전체 또는 파티션)입니다.
pvcreate
로 초기화하여 볼륨 그룹(VG)에 편입해 사용하실 수 있습니다.
3-3. VG(Volume Group)란?
- VG는 여러 PV를 모아 만든 공용 저장소 풀입니다.
vgextend
로 디스크를 추가해 용량을 늘리신 뒤, 해당 공간에서 논리 볼륨(LV)을 생성해 활용하실 수 있습니다.
3-4. LV(Logical Volume)란?
- LV는 VG에서 분할하여 제공하는 가상 디스크입니다.
- LV 위에 파일시스템을 생성·마운트하여 일반 디스크처럼 사용하실 수 있습니다.
4. 디스크 설정
4-1. 파티션 생성 및 LVM 설정
# parted -s /dev/vdb mklabel gpt # parted -s /dev/vdb mkpart vdb 1 100% # parted -s /dev/vdb set 1 lvm on
4-2. LVM 확인
# parted -l | grep lvm
출력 예시:
1 1049kB 137GB 137GB vdd lvm
5. LVM 생성
5-1. PV 생성
# pvcreate /dev/vdb1
출력 예시:
Physical volume "/dev/vdb1" successfully created. Creating devices file /etc/lvm/devices/system.devices
5-2. VG 생성
# vgcreate vgtest /dev/vdb1
출력 예시:
Volume group "vgtest" successfully created
5-3. LV 생성
# lvcreate -n lv_ext4 -L 10G vgtest # lvcreate -n lv_xfs -L 10G vgtest
6. 파일 시스템 생성
# mkfs.ext4 /dev/vgtest/lv_ext4 # mkfs.xfs /dev/vgtest/lv_xfs
7. 마운트
7-1. 마운트 포인트 생성
# mkdir -p /mnt/ext4 /mnt/xfs
7-2. 마운트
# mount /dev/vgtest/lv_ext4 /mnt/ext4 # mount /dev/vgtest/lv_xfs /mnt/xfs
7-3. 마운트 확인
# df -Th /mnt/ext4 /mnt/xfs
출력 예시:
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vgtest-lv_ext4 ext4 9.8G 24K 9.3G 1% /mnt/ext4 /dev/mapper/vgtest-lv_xfs ext4 9.8G 24K 9.3G 1% /mnt/xfs
7-4. LV-PE 매핑 확인
# lvs -o+devices
출력 예시:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices lv_ext4 vgtest -wi-ao---- 10.00g /dev/vdb1(0) lv_xfs vgtest -wi-ao---- 10.00g /dev/vdb1(2560)
8. LVM 확장
8-1. 디스크 설정
# parted -s /dev/vdc mklabel gpt # parted -s /dev/vdc mkpart vdc 1 100% # parted -s /dev/vdc set 1 lvm on
8-2. 디스크 설정 확인
# parted -l | grep lvm
출력 예시:
1 1049kB 137GB 137GB vdd lvm 1 1049kB 137GB 137GB vdc lvm
8-3. PV 설정
8-3-1. PV 확인
# pvdisplay
출력 예시:
--- Physical volume --- PV Name /dev/vdb1 VG Name vgtest PV Size <128.00 GiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 32767 Free PE 27647 Allocated PE 5120 PV UUID IQbVSq-NQGW-m2Xn-emp4-5Ygz-eCAw-fkXj7B
8-3-2. PV 추가
# pvcreate /dev/vdc1
출력 예시:
Physical volume "/dev/vdc1" successfully created.
8-3-3. PV 추가 확인
# pvdisplay
출력 예시:
--- Physical volume --- PV Name /dev/vdb1 VG Name vgtest PV Size <128.00 GiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 32767 Free PE 27647 Allocated PE 5120 PV UUID IQbVSq-NQGW-m2Xn-emp4-5Ygz-eCAw-fkXj7B "/dev/vdc1" is a new physical volume of "<128.00 GiB" --- NEW Physical volume --- PV Name /dev/vdc1 VG Name PV Size <128.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 283rhf-kkfk-c8Qp-M4Ts-m9bp-2xMd-DkMhuN
8-4. VG 설정
8-4-1. VG 확인
# vgdisplay
출력 예시:
--- Volume group --- VG Name vgtest System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size <128.00 GiB PE Size 4.00 MiB Total PE 32767 Alloc PE / Size 5120 / 20.00 GiB Free PE / Size 27647 / <108.00 GiB VG UUID 34QJUg-QapN-4rLJ-3HXG-nDpq-oio5-Hr3OwD
8-4-2. VG 확장
# vgextend vgtest /dev/vdc1
출력 예시:
Volume group "vgtest" successfully extended
8-4-3. VG 확장 확인
# vgdisplay
출력 예시:
--- Volume group --- VG Name vgtest System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 255.99 GiB PE Size 4.00 MiB Total PE 65534 Alloc PE / Size 5120 / 20.00 GiB Free PE / Size 60414 / 235.99 GiB VG UUID 34QJUg-QapN-4rLJ-3HXG-nDpq-oio5-Hr3OwD
8-5. LV 설정 및 온라인 확장
8-5-1. LV 확인
# lvdisplay
출력 예시:
--- Logical volume --- LV Path /dev/vgtest/lv_ext4 LV Name lv_ext4 VG Name vgtest LV UUID vnYPbj-TyVi-iWKo-iSFU-mYHj-EOZU-Gyv4nG LV Write Access read/write LV Creation host, time KVM01, 2025-08-23 17:09:57 +0900 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/vgtest/lv_xfs LV Name lv_xfs VG Name vgtest LV UUID oe7NMp-zbHY-Zyfd-RaA9-N7HT-4Far-dmO5PQ LV Write Access read/write LV Creation host, time KVM01, 2025-08-23 17:10:04 +0900 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1
8-5-2. ext4 온라인 확장
# lvextend -r -L +10G /dev/vgtest/lv_ext4
출력 예시:
Size of logical volume vgtest/lv_ext4 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents). File system ext4 found on vgtest/lv_ext4 mounted at /mnt/ext4. Extending file system ext4 to 20.00 GiB (21474836480 bytes) on vgtest/lv_ext4... resize2fs /dev/vgtest/lv_ext4 resize2fs 1.46.5 (30-Dec-2021) Filesystem at /dev/vgtest/lv_ext4 is mounted on /mnt/ext4; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 3 The filesystem on /dev/vgtest/lv_ext4 is now 5242880 (4k) blocks long. resize2fs done Extended file system ext4 on vgtest/lv_ext4. Logical volume vgtest/lv_ext4 successfully resized.
8-5-3. xfs 온라인 확장
# lvextend -r -L +10G /dev/vgtest/lv_xfs
출력 예시:
Size of logical volume vgtest/lv_xfs changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents). File system xfs found on vgtest/lv_xfs mounted at /mnt/xfs. Extending file system xfs to 20.00 GiB (21474836480 bytes) on vgtest/lv_xfs... xfs_growfs /dev/vgtest/lv_xfs meta-data=/dev/mapper/vgtest-lv_xfs isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 2621440 to 5242880 xfs_growfs done Extended file system xfs on vgtest/lv_xfs. Logical volume vgtest/lv_xfs successfully resized.
8-5-4. LV 확장 확인
# lvdisplay
출력 예시:
--- Logical volume --- LV Path /dev/vgtest/lv_ext4 LV Name lv_ext4 VG Name vgtest LV UUID vnYPbj-TyVi-iWKo-iSFU-mYHj-EOZU-Gyv4nG LV Write Access read/write LV Creation host, time KVM01, 2025-08-23 17:09:57 +0900 LV Status available # open 1 LV Size 20.00 GiB Current LE 5120 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/vgtest/lv_xfs LV Name lv_xfs VG Name vgtest LV UUID oe7NMp-zbHY-Zyfd-RaA9-N7HT-4Far-dmO5PQ LV Write Access read/write LV Creation host, time KVM01, 2025-08-23 17:10:04 +0900 LV Status available # open 1 LV Size 20.00 GiB Current LE 5120 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1
8-5-5. LV 확장 확인
# df -Th /mnt/ext4 /mnt/xfs
출력 예시:
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vgtest-lv_ext4 ext4 20G 24K 19G 1% /mnt/ext4 /dev/mapper/vgtest-lv_xfs ext4 20G 24K 19G 1% /mnt/xfs
8-5. LV-PE 매핑 재확인
# lvs -o+devices
출력 예시:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices lv_ext4 vgtest -wi-ao---- 20.00g /dev/vdb1(0) lv_ext4 vgtest -wi-ao---- 20.00g /dev/vdb1(5120) lv_xfs vgtest -wi-ao---- 20.00g /dev/vdb1(2560) lv_xfs vgtest -wi-ao---- 20.00g /dev/vdb1(7680)
9. 오프라인 축소(ext4)
- XFS는 축소 불가능 합니다.
9-1. 마운트 해제
# umount /mnt/ext4/
9-2. 파일 시스템 검사
# e2fsck -f /dev/vgtest/lv_ext4
출력 예시:
e2fsck 1.46.5 (30-Dec-2021) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vgtest/lv_ext4: 11/1310720 files (0.0% non-contiguous), 109927/5242880 blocks
9-3. 파일 시스템 축소(15G)
# resize2fs /dev/vgtest/lv_ext4 15360M
출력 예시:
resize2fs 1.46.5 (30-Dec-2021) Resizing the filesystem on /dev/vgtest/lv_ext4 to 3932160 (4k) blocks. The filesystem on /dev/vgtest/lv_ext4 is now 3932160 (4k) blocks long.
9-4. LV 크기 축소
# lvreduce -L 15360M /dev/vgtest/lv_ext4
출력 예시:
File system ext4 found on vgtest/lv_ext4. File system size (15.00 GiB) is equal to the requested size (15.00 GiB). File system reduce is not needed, skipping. Size of logical volume vgtest/lv_ext4 changed from 20.00 GiB (5120 extents) to 15.00 GiB (3840 extents). Logical volume vgtest/lv_ext4 successfully resized.
9-5. 재마운트 및 확인
# mount /dev/vgtest/lv_ext4 /mnt/ext4/
# df -Th /mnt/ext4/
출력 예시:
Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vgtest-lv_ext4 ext4 15G 24K 14G 1% /mnt/ext4
# lvs -o+devices
출력 예시:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices lv_ext4 vgtest -wi-ao---- 15.00g /dev/vdb1(0) lv_ext4 vgtest -wi-ao---- 15.00g /dev/vdb1(5120) lv_xfs vgtest -wi-ao---- 20.00g /dev/vdb1(2560) lv_xfs vgtest -wi-ao---- 20.00g /dev/vdb1(7680)