LVM
쉽게 말하면
디스크 칸 크기는 한 번 정하면 바꾸기 어려워요. LVM은 여러 디스크를 큰 통 하나에 모아 두고, 거기서 필요한 만큼 떼어 쓰게 해 줘요. 공간이 모자라면 디스크를 하나 더 붓고 칸을 늘리면 되니, 쓰던 서버를 멈추지 않고도 늘릴 수 있어요.
시험용 정의
LVM(Logical Volume Manager)은 물리 디스크 위에 한 단계 추상화를 두어 파티션 크기를 유연하게 바꾸는 기술이다. 구성은 PV(물리 볼륨) → VG(볼륨 그룹) → LV(논리 볼륨) 순서이고, 공간의 최소 단위는 PE(Physical Extent, 기본 4MB)다.
비유로 이해하기
여러 개의 물통(디스크, PV)을 큰 저수조 하나(VG)에 모아 두고, 필요한 만큼 수도꼭지(LV)로 나눠 쓰는 것이다. 물이 모자라면 물통을 하나 더 붓고 꼭지를 늘린다.
자세히
왜 LVM을 쓰나
일반 파티션은 디스크의 연속된 구간이라, 한번 나누면 크기를 바꾸기 어렵다. /home이 가득 찼는데 바로 뒤에 다른 파티션이 있으면 늘릴 수 없고, 디스크를 새로 달아도 그 디스크는 따로 놀 뿐이다.
LVM은 디스크들을 한 공간 풀(VG)에 모아 두고, 거기서 필요한 만큼 떼어 논리 볼륨(LV)을 만든다. LV는 여러 디스크에 흩어져 있어도 하나의 파티션처럼 보이고, 쓰는 중에도 늘리거나(디스크 추가 포함) 줄일 수 있다. 사용자는 LV를 파티션처럼 포맷하고 마운트한다.
- 볼륨: 파일시스템을 만들어 쓸 수 있는 저장 공간 하나(파티션과 같은 역할)
- 추상화: 실제 디스크 위치를 숨기고 논리적인 이름과 크기로만 다루게 하는 것
- 스냅샷: 특정 순간의 LV 상태를 그대로 얼려 둔 복사본. 백업하는 동안 데이터가 바뀌지 않게 쓴다
구성 요소
| 단계 | 뜻 | 만드는 명령 |
|---|---|---|
| PV (Physical Volume) | LVM용으로 초기화한 디스크·파티션 (타입 8e) | pvcreate /dev/sdb1 |
| VG (Volume Group) | PV 여러 개를 묶은 저장 공간 풀 | vgcreate vg01 /dev/sdb1 /dev/sdc1 |
| LV (Logical Volume) | VG에서 잘라 낸 볼륨. 파일시스템을 만들어 마운트 | lvcreate -L 20G -n lv_home vg01 |
| PE (Physical Extent) | 공간 할당 최소 단위 (기본 4MB) | vgcreate -s |
확인·확장·삭제
| pvs · vgs · lvs | 간단 목록 (pvdisplay·vgdisplay·lvdisplay는 자세히) |
| vgextend vg01 /dev/sdd1 | VG에 PV 추가 |
| lvextend -L +10G /dev/vg01/lv_home | LV 늘리기 (-r이면 파일시스템도 함께) |
| resize2fs / xfs_growfs | ext4 / XFS 파일시스템 늘리기 |
| lvreduce | LV 줄이기 (ext4만, 파일시스템 먼저 줄여야 함). 줄이는 작업은 데이터 손실 위험이 있어 백업 후에 |
| lvcreate -s | 스냅샷 만들기 (백업 시점 고정) |
| lvremove · vgremove · pvremove | 삭제 (LV → VG → PV 순) |
장치 경로
LV는 /dev/VG이름/LV이름(예: /dev/vg01/lv_home) 또는 /dev/mapper/vg01-lv_home으로 접근한다.
시험에 이렇게 나와요
- 구성 순서 → PV → VG → LV(매 회)
- 물리 디스크 공간을 나누는 기본 단위 → PE(기본 4MB), VG에서 잘라 쓰는 볼륨 → LV
- 디렉터리(파티션) 용량을 나중에 늘리기 좋은 기술 → LVM
- LVM 설명 중 틀린 것 고르기 → 크기를 줄여도 데이터가 안전하다는 설명(축소는 손실 위험)
확인 문제
Q1. /home 파티션이 가득 찼다. 새 디스크를 추가해 /home의 크기를 서비스 중단 없이 늘리고 싶다. 무엇으로 구성되어 있어야 가능할까?
- MBR 주 파티션
- 확장 파티션
- LVM 논리 볼륨
- 스왑 파티션
정답 보기
3번 LVM 논리 볼륨
LVM은 여러 디스크를 하나의 저장 공간 풀(볼륨 그룹)로 묶고 거기서 원하는 크기만큼 논리 볼륨을 잘라 쓴다. 새 디스크를 풀에 넣고(vgextend) 논리 볼륨을 늘리면(lvextend) 마운트된 상태로도 확장할 수 있다.
Q2. LVM에서 물리 볼륨을 일정한 크기로 나눈 할당 단위는?
- PV
- LV
- VG
- PE
정답 보기
4번 PE
PE(Physical Extent), 기본 4MB.
Q3. LVM 구성 순서로 옳은 것은?
- LV → VG → PV
- PV → VG → LV
- VG → PV → LV
- PV → LV → VG
정답 보기
2번 PV → VG → LV
pvcreate → vgcreate → lvcreate.
Q4. 볼륨 그룹에 새 물리 볼륨을 추가하는 명령은?
- pvextend
- vgextend
- vgadd
- lvextend
정답 보기
2번 vgextend
vgextend다. 볼륨 그룹(VG)을 새 물리 볼륨(PV)으로 넓힌다. lvextend는 논리 볼륨(LV)의 크기를 늘린다.
Q5. LVM에서 공간을 나누는 기본 단위는?
- inode
- PE
- 블록
- 섹터
정답 보기
2번 PE
PE(Physical Extent), 기본 4MB.
헷갈리기 쉬운 O·X
LVM을 쓰면 여러 디스크를 하나의 볼륨처럼 묶어 쓸 수 있다.
정답 보기
O 맞는 설명이다.
lvextend로 LV를 늘리면 그 위의 파일시스템도 항상 자동으로 커진다.
정답 보기
X -r 옵션을 주거나 resize2fs·xfs_growfs를 따로 실행해야 한다.
LVM 파티션의 fdisk 타입 코드는 8e다.
정답 보기
O 맞는 설명이다.