LVM(Logical Volume Manager)은 Linux에서 디스크 공간을 동적으로 관리할 수 있도록 하는 스토리지 가상화 기술입니다. 기존의 파티션 방식보다 유연하게 디스크를 할당하고 조정할 수 있습니다.
1. LVM의 기본 개념
LVM은 여러 개의 물리 디스크 또는 파티션을 하나의 논리적 볼륨(Logical Volume)으로 묶어서 관리하는 시스템입니다. 이를 통해 저장소를 확장하거나 축소할 수 있으며, 기존 파티션 방식보다 더 유연한 스토리지 관리가 가능합니다.
2. LVM의 주요 구성 요소
LVM은 다음과 같은 3가지 주요 계층으로 구성됩니다.
- 물리적 볼륨 (PV, Physical Volume)
- 실제 물리적 디스크 또는 디스크의 특정 파티션을 의미합니다.
pvcreate
명령을 사용하여 LVM에서 사용할 수 있도록 초기화합니다.- 예:
/dev/sda1
,/dev/sdb1
등이 물리적 볼륨이 될 수 있음.
- 볼륨 그룹 (VG, Volume Group)
- 여러 개의 물리적 볼륨(PV)을 하나의 그룹으로 묶은 것입니다.
- VG는 여러 개의 PV를 포함할 수 있으며, VG 내부에서 논리적 볼륨을 생성할 수 있습니다.
vgcreate
명령을 사용하여 생성합니다.
- 논리적 볼륨 (LV, Logical Volume)
- 사용자가 실제로 파일 시스템을 생성하여 데이터를 저장할 수 있는 가상 디스크 공간입니다.
lvcreate
명령을 사용하여 생성하며, 필요에 따라 크기를 조정할 수 있습니다.- 일반적인 디바이스 경로:
/dev/mapper/vgname-lvname
또는/dev/vgname/lvname
- 물리적 익스텐트 (PE, Physical Extent)
- VG 내에서 할당 가능한 최소 저장 단위입니다.
- 기본적으로 4MB(변경 가능)이며, LV는 PE 단위로 확장 또는 축소됩니다.
3. LVM의 주요 기능
LVM은 기존의 정적인 파티션 방식과 비교하여 다양한 기능을 제공합니다.
- 동적 크기 조정 (Resize)
- LV 크기를 확장 (
lvextend
) 또는 축소 (lvreduce
) 할 수 있습니다. - 파일 시스템 크기도
resize2fs
(ext4) 또는xfs_growfs
(XFS) 등을 사용하여 변경할 수 있습니다.
- LV 크기를 확장 (
- 디스크 추가 및 제거
- 기존 VG에 새로운 PV를 추가 (
vgextend
) 하거나, 특정 PV를 제거 (vgreduce
) 할 수 있습니다.
- 기존 VG에 새로운 PV를 추가 (
- 스냅샷 (Snapshot)
- 현재 LV의 상태를 저장하여 특정 시점으로 복구할 수 있는 기능입니다.
lvcreate -s
명령을 사용하여 생성하며, 백업 및 데이터 보호에 유용합니다.
- RAID 및 미러링
- LVM을 사용하여 RAID-1(미러링) 구성 가능 (
lvconvert --type mirror
) - 디스크 장애 발생 시 데이터 보호 가능.
- LVM을 사용하여 RAID-1(미러링) 구성 가능 (
4. LVM 명령어 정리
기능 | 명령어 |
---|---|
물리적 볼륨 생성 | pvcreate /dev/sdb1 |
물리적 볼륨 확인 | pvdisplay |
볼륨 그룹 생성 | vgcreate my_vg /dev/sdb1 /dev/sdc1 |
볼륨 그룹 확인 | vgdisplay |
논리 볼륨 생성 | lvcreate -L 10G -n my_lv my_vg |
논리 볼륨 크기 확장 | lvextend -L +5G /dev/my_vg/my_lv |
논리 볼륨 크기 축소 | lvreduce -L 5G /dev/my_vg/my_lv |
파일 시스템 크기 조정 | resize2fs /dev/my_vg/my_lv |
논리 볼륨 제거 | lvremove /dev/my_vg/my_lv |
5. LVM의 장점과 단점
✅ 장점
- 디스크 공간을 유동적으로 관리 가능 (확장/축소)
- 여러 개의 디스크를 하나로 묶어 사용 가능
- 스냅샷 기능을 통한 데이터 보호 및 백업 용이
- RAID 및 미러링 기능 지원
❌ 단점
- 설정이 복잡하고, 일반적인 파티션 방식보다 초기 설정이 어려움
- LVM 메타데이터 손상 시 데이터 복구가 어려울 수 있음
- 논리 볼륨 축소 시 데이터 손실 위험이 있음 (주의 필요)
6. LVM 활용 예시
- 기본적인 LVM 생성 과정
# 물리적 볼륨 생성
pvcreate /dev/sdb1 /dev/sdc1
# 볼륨 그룹 생성
vgcreate my_vg /dev/sdb1 /dev/sdc1
# 논리 볼륨 생성 (10GB 크기)
lvcreate -L 10G -n my_lv my_vg
# 파일 시스템 생성 (ext4)
mkfs.ext4 /dev/my_vg/my_lv
# 마운트 및 사용
mkdir /mnt/lvm_storage
mount /dev/my_vg/my_lv /mnt/lvm_storage
- 논리 볼륨 확장
# 논리 볼륨 크기 확장 (+5GB)
lvextend -L +5G /dev/my_vg/my_lv
# 파일 시스템 크기 조정 (ext4)
resize2fs /dev/my_vg/my_lv
- 스냅샷 생성
# 현재 논리 볼륨의 스냅샷 생성 (5GB 크기)
lvcreate -L 5G -s -n my_lv_snapshot /dev/my_vg/my_lv
7. 결론
LVM은 디스크 관리를 더욱 유연하고 효율적으로 할 수 있도록 도와주는 강력한 도구입니다. 특히, 서버 환경에서 디스크 공간을 효율적으로 사용하고 관리해야 할 경우 매우 유용합니다. 하지만 설정이 복잡하고, 실수로 인해 데이터가 손실될 위험이 있기 때문에 신중한 사용이 필요합니다.