들어가기
리눅스를 사용하다 보면 디스크 용량이 부족해질 때가 있습니다.
처음 설치할 때는 넉넉해 보이던 공간도 로그가 쌓이고, 데이터가 늘고, 서비스가 추가되면서 금방 한계에 도달합니다.
이때 가장 많이 쓰이는 기술이 LVM(Logical Volume Management) 입니다.
LVM은 단순히 디스크를 묶는 도구가 아니라, 디스크를 다루는 사고방식 자체를 바꿔주는 계층이라고 보는 편이 더 정확합니다.
이번 글에서는 명령어 암기보다는,
디스크 → LVM → 파일시스템으로 이어지는 흐름과 내부 개념을 이해하는 데 초점을 두고 정리해보겠습니다.
LVM이 필요한 이유
전통적인 파티션 기반 디스크 관리는 한계가 명확합니다.
- 파티션 크기를 줄이기 어렵습니다.
- 디스크를 추가해도 기존 파티션을 바로 확장할 수 없습니다.
- 서비스 중단 없이 구조를 바꾸기 힘듭니다.
LVM은 이 문제를 중간 계층을 하나 둠으로써 해결합니다.
plain디스크/파티션 → LVM → 파일시스템
이 중간 계층 덕분에 디스크를 추가하거나, 용량을 늘리거나, 재배치하는 작업이 훨씬 유연해집니다.
LVM 주요 구성 요소
Physical Volume (PV)
Physical Volume은 물리 디스크 또는 파티션을 LVM에서 사용할 수 있도록 초기화한 단위입니다.
/dev/sda,/dev/sdb1같은 실제 블록 디바이스가 대상입니다.pvcreate명령으로 생성합니다.- 이 단계에서부터 디스크는 LVM의 관리 영역으로 들어옵니다.
PV는 아직 용량을 사용하는 단계는 아닙니다.
말 그대로 “재료 준비” 단계에 가깝습니다.
Physical Extent (PE)
Physical Extent는 Physical Volume 내부를 나눈 최소 관리 단위입니다.
- 기본 크기는 보통 4MB입니다.
- LVM은 디스크를 연속 공간으로 다루지 않습니다.
- 항상 PE 단위로 나누어 관리합니다.
PE 크기는 VG 생성 시 변경할 수 있으며,
일반적으로 2의 거듭제곱 단위(2MB, 4MB, 8MB 등)를 사용합니다.
이 개념이 이후 용량 확장과 이동을 가능하게 만드는 핵심입니다.
Volume Group (VG)
Volume Group은 여러 개의 Physical Volume을 하나로 묶은 논리적인 저장소 풀입니다.
- 하나 이상의 PV로 구성됩니다.
- Logical Volume은 반드시 VG 안에서 생성됩니다.
- 실제 디스크 크기와 관계없이 하나의 큰 저장소처럼 보입니다.
운영 관점에서는
“이 서버에서 LVM으로 관리되는 전체 저장 공간” 정도로 이해해도 무리가 없습니다.
Logical Volume (LV)
Logical Volume은 사용자가 실제로 사용하는 디스크입니다.
- 일반적인 파티션과 거의 동일한 역할을 합니다.
/dev/vgname/lvname형태로 접근합니다.- 파일시스템을 생성하고 마운트하여 사용합니다.
LVM의 장점은 바로 이 LV를
- 확장
- 축소
- 이동
할 수 있다는 점입니다.
Logical Extent (LE)
Logical Extent는 Logical Volume을 구성하는 최소 단위입니다.
- Physical Extent와 1:1로 매핑됩니다.
- LVM은 PE ↔ LE 매핑 테이블을 관리합니다.
이 매핑 구조 덕분에
디스크 공간이 물리적으로 연속되지 않아도
논리적으로는 하나의 볼륨처럼 사용할 수 있습니다.
Filesystem
Filesystem은 Logical Volume 위에 생성됩니다.
ext4,xfs등이 대표적입니다.- 파일시스템 생성 이후 마운트하여 실제 데이터를 저장합니다.
중요한 점은,
LVM과 파일시스템은 서로 다른 계층이라는 점입니다.
LVM에서 용량을 늘렸다고 해서
파일시스템이 자동으로 커지지는 않습니다.
이 차이는 실습 단계에서 반드시 짚고 넘어가야 합니다.
Extent 개념 정리
Extent는 LVM에서 용량을 관리하고 할당하는 최소 단위입니다.
디스크 공간을 연속 영역으로 다루지 않고,
고정 크기의 블록(Extent)으로 나누어 관리함으로써
- 용량 확장
- 축소
- 이동
같은 작업을 유연하게 처리할 수 있습니다.
이 개념을 이해하지 못하면
LVM은 단순한 “디스크 묶기 도구”로만 보이게 됩니다.
실습 환경 초기화
실습을 위해 기존 디스크의 메타데이터를 초기화합니다.
bash# 디스크 헤더 초기화 (주의)
dd if=/dev/zero of=/dev/sda bs=512 count=1
dd if=/dev/zero of=/dev/sdb bs=512 count=1
dd if=/dev/zero of=/dev/sdc bs=512 count=1
이 작업은 실제 운영 환경에서는 절대 사용하면 안 됩니다.
순수 실습 환경에서만 의미가 있습니다.
Physical Volume 확인과 생성
pvs 명령어
pvs는 시스템에 존재하는 Physical Volume을 확인하는 명령어입니다.
bashpvs
아직 pvcreate를 하지 않은 디스크는 목록에 나타나지 않습니다.
pvcreate
디스크를 Physical Volume으로 초기화합니다.
bashpvcreate /dev/sda /dev/sdb
이제 pvs로 확인하면 LVM 관리 대상으로 편입된 것을 볼 수 있습니다.
pvdisplay
pvdisplay는 특정 PV의 상세 정보를 보여줍니다.
이 단계에서는 VG에 속하지 않았기 때문에
PE 크기와 할당 정보가 아직 비어 있는 상태입니다.
Volume Group 생성
vgcreate
두 개의 Physical Volume을 하나의 Volume Group으로 묶습니다.
bashvgcreate testvg /dev/sda /dev/sdb
이 순간부터 두 디스크는
논리적으로 하나의 저장소 풀처럼 동작합니다.
vgdisplay
vgdisplay를 통해 VG의 전체 크기와 PE 정보를 확인할 수 있습니다.
여기서 중요한 포인트는 다음입니다.
- PE Size
- Total PE
- Free PE
이 값들이 이후 LV 크기 계산의 기준이 됩니다.
Volume Group 삭제
실습이 끝났다면 VG를 제거할 수 있습니다.
bashvgremove testvg
VG를 제거하면 그 안에 속한 LV도 함께 제거됩니다.
Logical Volume 생성
lvcreate 기본 개념
Logical Volume은 두 가지 방식으로 생성할 수 있습니다.
- 용량 기준 (-L)
- Extent 개수 기준 (-l)
이 차이를 이해하는 것이 매우 중요합니다.
용량 기준 생성 (-L)
bashlvcreate -L 310M -n lvred vgcolor
LVM은 항상 PE 단위로 동작하기 때문에,
요청한 크기가 PE 단위에 맞지 않으면 자동으로 올림 처리됩니다.
Extent 기준 생성 (-l)
bashlvcreate -l 30 -n lvblue vgcolor
이 방식은 PE 단위로 정확한 제어가 필요할 때 유용합니다.
남은 공간 비율로 생성
bashlvcreate -l 50%FREE vgcolor
VG에 남아 있는 공간의 비율을 기준으로 LV를 생성할 수도 있습니다.
운영 환경에서 자주 사용되는 방식입니다.
파일시스템 생성과 마운트
Logical Volume 위에 파일시스템을 생성해야 실제로 사용할 수 있습니다.
bashmkfs.xfs /dev/vgcolor/lvred
mkfs.ext4 /dev/vgcolor/lvblue
그 이후에 마운트하여 사용합니다.
이 단계에서야 비로소 사용 가능한 스토리지가 됩니다.
Advanced LVM: RAID 볼륨
LVM은 단순히 디스크를 묶는 기능만 제공하는 것이 아닙니다.
소프트웨어 RAID 기능도 함께 제공합니다.
RAID 1
- 미러링 방식
- 데이터가 두 디스크에 동일하게 저장됩니다.
- 안정성이 가장 높습니다.
RAID 5
- 패리티 분산 저장
- 디스크 하나까지 장애 복구 가능
- 읽기 성능이 좋습니다.
단, 두 개 이상의 디스크가 동시에 장애가 나면 데이터가 유실됩니다.
RAID 10
- RAID 1 + RAID 0 구조
- 성능과 안정성을 모두 확보
- 디스크 비용이 큽니다.
LVM RAID 실습 예시
bashvgcreate last /dev/sda /dev/sdb /dev/sdc
lvcreate -L 200M -n lvdata1 --type raid1 last
lvcreate -L 300M -n lvdata2 --type raid5 -i2 last
lvdisplay -m /dev/last/lvdata1
lvdisplay -m /dev/last/lvdata2
lvdisplay -m 명령을 통해
실제 디스크와 LV 간의 매핑 구조를 확인할 수 있습니다.
마무리
LVM은 단순한 디스크 관리 기술이 아닙니다.
- 디스크를 유연하게 다루는 사고방식
- 운영 중인 시스템을 멈추지 않고 확장하는 방법
을 함께 제공합니다.