Linux 환경에서 LVM을 활용한 유연한 스토리지 관리

LVM 아키텍처 및 작동 원리

논리 볼륨 관리자(Logical Volume Manager, LVM)는 물리적 디스크와 파일 시스템 사이에 추상화 계층을 제공합니다. 이 구조를 통해 관리자는 파티션 재구성을 하지 않고도 볼륨 크기를 동적으로 조정할 수 있으며, 여러 물리 장치를 하나의 논리적 저장소로 통합할 수 있습니다. LVM은 기존의 정적인 파티셔닝 방식에서 벗어나 서버에 새로운 디스크를 추가하더라도 기존 데이터를 이동하지 않고도 스토리지 풀을 확장할 수 있게 해줍니다.

핵심 구성 요소

  • 물리적 장치(Physical Device): 파티션(/dev/sdXN), 전체 디스크, RAID 어레이 또는 SAN 스토리지 등 실제 저장 매체입니다.
  • 물리 볼륨(PV, Physical Volume): 물리 장치를 LVM에서 사용할 수 있도록 초기화한 단위입니다. pvcreate 명령어로 생성됩니다.
  • 볼륨 그룹(VG, Volume Group): 하나 이상의 PV를 결합하여 형성되는 논리적 저장 풀입니다. 마치 가상의 큰 디스크처럼 동작하며, 여기서 논리 볼륨을 할당합니다.
  • 논리 볼륨(LV, Logical Volume): VG 위에 생성되며, 일반 파티션처럼 사용됩니다. 이 위에 파일 시스템을 생성하고 마운트합니다.
  • 물리 익스텐트(PE, Physical Extent): PV에서 할당 가능한 최소 단위 블록으로, 기본값은 4MiB입니다.
  • 논리 익스텐트(LE, Logical Extent): LV 내부에서 사용되는 블록 단위이며, 같은 VG 내에서는 PE와 크기가 일치합니다.

데이터 흐름은 다음과 같습니다: 디스크 → 파티션 → PV → VG → LV → 파일 시스템 → 마운트.

LVM의 주요 이점

  • 여러 디스크를 하나의 대용량 볼륨처럼 사용 가능.
  • 파일 시스템이 여러 물리 디스크에 걸쳐 존재할 수 있음.
  • 온라인 상태에서 볼륨 크기 조정이 가능 (특히 확장 시).
  • 익스텐트 기반 할당으로 조각화 최소화.
  • 스냅샷 기능을 통해 일관성 있는 백업 지원.

중요한 점은 LVM이 소프트웨어 기반의 볼륨 관리 도구이며, RAID와는 목적과 계층이 다릅니다. 실제 디스크 고장을 방지하기 위해선 RAID를 기반에 두고, 그 위에 LVM을 적용하는 것이 권장됩니다.

LVM 명령어 개요

기능 PV 관리 VG 관리 LV 관리
스캔 pvscan vgscan lvscan
생성 pvcreate vgcreate lvcreate
정보 확인 pvdisplay / pvs vgdisplay / vgs lvdisplay / lvs
제거 pvremove vgremove lvremove
확장 - vgextend lvextend
축소 - vgreduce lvreduce

간단한 상태 확인에는 pvs, vgs, lvs를, 자세한 정보에는 pvdisplay 등을 사용합니다.

실습 예제: LVM 설정 및 운영

가상 환경에서 /dev/sdb 디스크에 4개의 2GiB 파티션(sdb1~sdb4)을 생성했다고 가정합니다.

1단계: 물리 볼륨 생성

# 파티션을 LVM 용도로 초기화
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4

# 상태 확인
pvs
PV         VG   Fmt  Attr PSize  PFree
/dev/sdb1       lvm2 ---  2.00g 2.00g
/dev/sdb2       lvm2 ---  2.00g 2.00g
...

2단계: 볼륨 그룹 생성

# 기본 PE 크기(4MiB)로 vg1 생성
vgcreate vg1 /dev/sdb1

# PE 크기를 16MiB로 지정해 vg2 생성
vgcreate -s 16M vg2 /dev/sdb2

# 결과 확인
vgs
VG  #PV #LV VSize   VFree
vg1   1   0 <2.00g <2.00g
vg2   1   0  1.98g  1.98g

3단계: 논리 볼륨 생성

# 64MiB 크기의 LV 생성
lvcreate -L 64M -n data_lv vg1

# 익스텐트 단위로 생성 (vg1의 PE=4MiB이므로 16 * 4 = 64MiB)
lvcreate -l 16 -n log_lv vg1

# 확인
lvs
LV      VG  Attr     LSize
data_lv vg1 -wi-a--- 64.00m
log_lv  vg1 -wi-a--- 64.00m

4단계: 파일 시스템 생성 및 마운트

# ext4 파일 시스템 생성
mkfs.ext4 /dev/vg1/data_lv

# 마운트 디렉터리 생성 및 연결
mkdir /mnt/data
mount /dev/vg1/data_lv /mnt/data

# 부팅 시 자동 마운트 등록
echo "/dev/vg1/data_lv /mnt/data ext4 defaults 0 0" >> /etc/fstab

논리 볼륨 크기 조정

확장 (온라인)

# 볼륨 그룹 여유 공간 확인
vgs

# LV 확장 + 파일 시스템 자동 조정
lvextend -L 500M -r /dev/vg1/data_lv

# 이후 df로 확인
df -h /mnt/data

축소 (주의 필요)

ext4는 축소가 가능하지만, 반드시 마운트 해제 후 수행하거나 -r 옵션을 사용해야 합니다. XFS는 축소를 지원하지 않습니다.

# ext4 볼륨 축소 예시
lvreduce -L 200M -r /dev/vg1/data_lv

XFS의 경우 lvreducexfs_growfs는 축소를 수행할 수 없으며, 데이터 손실 위험이 있으므로 추후 재구성이 필요합니다.

볼륨 그룹 확장 및 축소

VG 확장

# 새로운 PV를 기존 VG에 추가
vgextend vg1 /dev/sdb3

# 확인
vgs  # VG 크기 증가 확인

VG 축소

사용 중인 PV를 제거하려면 먼저 데이터를 다른 PV로 이전해야 합니다.

# sdb1의 데이터를 sdb3으로 이동
pvmove /dev/sdb1 /dev/sdb3

# 이동 후 sdb1을 VG에서 분리
vgreduce vg1 /dev/sdb1

# 이제 sdb1은 자유 상태
pvs

LVM 삭제 절차

  1. 마운트 해제: umount /mnt/data
  2. 논리 볼륨 제거: lvremove /dev/vg1/data_lv
  3. 볼륨 그룹 제거: vgremove vg1
  4. 물리 볼륨 초기화 해제: pvremove /dev/sdb1

SSM 도구를 이용한 통합 스토리지 관리

System Storage Manager(SSM)은 LVM, Btrfs, 디스크 정보를 통합적으로 관리할 수 있는 편의 도구입니다.

# 설치
yum install -y system-storage-manager

# 장치 목록 확인
ssm list dev

# 볼륨 그룹 목록
ssm list pool

# 논리 볼륨 목록
ssm list vol

# 한 번에 LVM 생성 및 마운트
ssm create -s 1G -n webdata --fstype xfs -p webpool /dev/sdb4 /var/www/html

SSM은 PV/VG/LV 생성, 파일 시스템 포맷, 마운트까지 자동으로 처리하여 복잡한 절차를 단순화합니다.

태그: LVM Linux Storage Volume Management SSM ext4

6월 15일 16:07에 게시됨