Logical Volume Manager (LVM)의 개념

LVM(Logical Volume Manager)은 Linux에서 디스크 공간을 동적으로 관리할 수 있도록 하는 스토리지 가상화 기술입니다. 기존의 파티션 방식보다 유연하게 디스크를 할당하고 조정할 수 있습니다.

1. LVM의 기본 개념

LVM은 여러 개의 물리 디스크 또는 파티션을 하나의 논리적 볼륨(Logical Volume)으로 묶어서 관리하는 시스템입니다. 이를 통해 저장소를 확장하거나 축소할 수 있으며, 기존 파티션 방식보다 더 유연한 스토리지 관리가 가능합니다.

2. LVM의 주요 구성 요소

LVM은 다음과 같은 3가지 주요 계층으로 구성됩니다.

  1. 물리적 볼륨 (PV, Physical Volume)
    • 실제 물리적 디스크 또는 디스크의 특정 파티션을 의미합니다.
    • pvcreate 명령을 사용하여 LVM에서 사용할 수 있도록 초기화합니다.
    • 예: /dev/sda1, /dev/sdb1 등이 물리적 볼륨이 될 수 있음.
  2. 볼륨 그룹 (VG, Volume Group)
    • 여러 개의 물리적 볼륨(PV)을 하나의 그룹으로 묶은 것입니다.
    • VG는 여러 개의 PV를 포함할 수 있으며, VG 내부에서 논리적 볼륨을 생성할 수 있습니다.
    • vgcreate 명령을 사용하여 생성합니다.
  3. 논리적 볼륨 (LV, Logical Volume)
    • 사용자가 실제로 파일 시스템을 생성하여 데이터를 저장할 수 있는 가상 디스크 공간입니다.
    • lvcreate 명령을 사용하여 생성하며, 필요에 따라 크기를 조정할 수 있습니다.
    • 일반적인 디바이스 경로: /dev/mapper/vgname-lvname 또는 /dev/vgname/lvname
  4. 물리적 익스텐트 (PE, Physical Extent)
    • VG 내에서 할당 가능한 최소 저장 단위입니다.
    • 기본적으로 4MB(변경 가능)이며, LV는 PE 단위로 확장 또는 축소됩니다.

3. LVM의 주요 기능

LVM은 기존의 정적인 파티션 방식과 비교하여 다양한 기능을 제공합니다.

  1. 동적 크기 조정 (Resize)
    • LV 크기를 확장 (lvextend) 또는 축소 (lvreduce) 할 수 있습니다.
    • 파일 시스템 크기도 resize2fs (ext4) 또는 xfs_growfs (XFS) 등을 사용하여 변경할 수 있습니다.
  2. 디스크 추가 및 제거
    • 기존 VG에 새로운 PV를 추가 (vgextend) 하거나, 특정 PV를 제거 (vgreduce) 할 수 있습니다.
  3. 스냅샷 (Snapshot)
    • 현재 LV의 상태를 저장하여 특정 시점으로 복구할 수 있는 기능입니다.
    • lvcreate -s 명령을 사용하여 생성하며, 백업 및 데이터 보호에 유용합니다.
  4. RAID 및 미러링
    • LVM을 사용하여 RAID-1(미러링) 구성 가능 (lvconvert --type mirror)
    • 디스크 장애 발생 시 데이터 보호 가능.

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 활용 예시

  1. 기본적인 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
  1. 논리 볼륨 확장
# 논리 볼륨 크기 확장 (+5GB)
lvextend -L +5G /dev/my_vg/my_lv

# 파일 시스템 크기 조정 (ext4)
resize2fs /dev/my_vg/my_lv
  1. 스냅샷 생성
# 현재 논리 볼륨의 스냅샷 생성 (5GB 크기)
lvcreate -L 5G -s -n my_lv_snapshot /dev/my_vg/my_lv

7. 결론

LVM은 디스크 관리를 더욱 유연하고 효율적으로 할 수 있도록 도와주는 강력한 도구입니다. 특히, 서버 환경에서 디스크 공간을 효율적으로 사용하고 관리해야 할 경우 매우 유용합니다. 하지만 설정이 복잡하고, 실수로 인해 데이터가 손실될 위험이 있기 때문에 신중한 사용이 필요합니다.

Leave a Comment