리눅스 환경에서 LVM(Logical Volume Manager)은 저장 장치를 효율적으로 관리하는 데에 매우 유용한 도구입니다. LVM을 사용하면 물리적인 디스크를 논리적으로 구성하여 더 유연하고 효율적인 저장 공간 관리를 할 수 있습니다.
이번 글에서는 LVM의 기본 개념부터 시작하여 PV(Physical Volume), VG(Volume Group), LV(Logical Volume)의 생성, 삭제, 조회 및 추가 방법을 자세히 설명하겠습니다.
![]()
LVM의 기본 개념

LVM은 기존의 고정된 파티션 구조에서 벗어나 동적으로 저장 공간을 관리할 수 있게 해주는 시스템입니다. 사용자는 LVM을 통해 필요한 만큼의 저장 공간을 자유롭게 생성하고 관리할 수 있으며, 데이터의 이동 없이도 논리 볼륨의 크기를 조정할 수 있습니다.
LVM은 크게 다음과 같은 구성 요소로 나뉩니다.
| 용어 | 설명 |
|---|---|
| PV (Physical Volume) | 물리적 볼륨으로, LVM에서 사용할 수 있는 실제 저장 장치의 파티션입니다. |
| VG (Volume Group) | 여러 개의 PV를 묶어 하나의 저장 공간으로 만드는 그룹입니다. |
| LV (Logical Volume) | 사용자가 데이터를 저장할 수 있는 논리적 단위로, VG에서 생성됩니다. |
| PE (Physical Extent) | PV를 구성하는 일정한 크기의 블록으로, 기본적으로 4MB입니다. |
| LE (Logical Extent) | LV를 구성하는 블록으로, PE와 1:1로 매핑됩니다. |
LVM은 이러한 구성 요소를 통해 물리적인 저장 장치를 유연하게 관리할 수 있도록 해줍니다. LVM을 사용하는 주된 이유는 다음과 같습니다.
- 유연한 용량 관리: LVM에서는 필요한 경우 저장 공간의 크기를 동적으로 조정할 수 있습니다.
- 데이터 안전성: LVM을 사용하면 데이터의 이동 없이도 볼륨 크기를 조정할 수 있습니다.
- 효율적인 스토리지 사용: 여러 개의 PV를 하나의 VG로 묶어 사용함으로써, 저장 공간을 보다 효율적으로 활용할 수 있습니다.
PV(Physical Volume) 생성 및 관리

PV는 LVM의 기본 구성 요소로, 물리적인 저장 장치를 의미합니다. LVM을 사용하기 위해서는 먼저 사용하고자 하는 디스크를 PV로 초기화해야 합니다.
다음은 PV를 생성하는 과정입니다.
- 디스크 확인:
fdisk -l명령어를 사용하여 현재 시스템에 연결된 디스크를 확인합니다.
bash
fdisk -l
-
디스크 파티셔닝: 원하는 디스크를 파티셔닝합니다.
fdisk또는parted등의 도구를 사용하여 필요한 크기로 파티션을 나눕니다. -
PV 생성:
pvcreate명령어를 사용하여 파티션을 PV로 초기화합니다.
bash
pvcreate /dev/sdX1
| 명령어 | 설명 |
|---|---|
fdisk -l |
현재 연결된 디스크 확인 |
pvcreate |
파티션을 PV로 초기화 |
pvdisplay |
현재 PV의 상태와 정보를 표시 |
- PV 상태 확인:
pvdisplay명령어를 사용하여 생성한 PV의 상태를 확인할 수 있습니다.
bash
pvdisplay
PV를 생성한 후에는 물리적인 볼륨의 상태를 주기적으로 확인하여, 문제가 발생하지 않도록 관리하는 것이 필요합니다. LVM이 제공하는 유연성을 최대한 활용하려면 PV를 잘 관리해야 합니다.
VG(Volume Group) 생성 및 관리
VG는 여러 개의 PV를 묶어 하나의 저장 공간으로 만드는 그룹입니다. VG를 통해 사용자는 복수의 물리 저장 장치를 하나의 논리적 단위로 관리할 수 있습니다.
VG의 생성 과정은 다음과 같습니다.
- VG 생성:
vgcreate명령어를 사용하여 VG를 생성합니다. 이때, 여러 개의 PV를 동시에 묶어서 VG를 만들 수 있습니다.
bash
vgcreate my_volume_group /dev/sdX1 /dev/sdY1
- VG 상태 확인:
vgdisplay명령어를 사용하여 VG의 상태를 확인할 수 있습니다.
bash
vgdisplay
| 명령어 | 설명 |
|---|---|
vgcreate |
VG를 생성하는 명령어 |
vgdisplay |
VG의 상태 및 정보를 확인하는 명령어 |
vgextend |
기존 VG에 추가 PV를 더하는 명령어 |
- VG 확장: 만약 VG의 용량이 부족해지면, 새로운 PV를 추가하여 VG를 확장할 수 있습니다.
vgextend명령어를 사용하여 수행합니다.
bash
vgextend my_volume_group /dev/sdZ1
VG를 효과적으로 관리하는 것은 LVM의 성능을 극대화하는 데 큰 도움이 됩니다. VG의 크기를 주기적으로 확인하고, 필요에 따라 확장하는 것이 필요합니다.
LV(Logical Volume) 생성 및 관리
LV는 사용자가 실제로 데이터를 저장하는 단위입니다. LV의 생성 과정은 다음과 같습니다.
- LV 생성:
lvcreate명령어를 사용하여 LV를 생성합니다. 이때, LV의 크기와 이름을 지정할 수 있습니다.
bash
lvcreate -L 10G -n my_logical_volume my_volume_group
- LV 상태 확인:
lvdisplay명령어를 사용하여 LV의 상태를 확인할 수 있습니다.
bash
lvdisplay
| 명령어 | 설명 |
|---|---|
lvcreate |
LV를 생성하는 명령어 |
lvdisplay |
LV의 상태 및 정보를 확인하는 명령어 |
lvextend |
LV의 크기를 늘리는 명령어 |
- LV 확장: LV의 용량이 부족하면,
lvextend명령어를 사용하여 LV의 크기를 늘릴 수 있습니다.
bash
lvextend -L +5G /dev/my_volume_group/my_logical_volume
- 파일 시스템 생성: LV를 파일 시스템으로 포맷하여 실제로 데이터를 저장할 수 있도록 합니다.
bash
mkfs.ext4 /dev/my_volume_group/my_logical_volume
LV를 생성한 후에는 주기적으로 상태를 확인하고, 필요한 경우 크기를 조정하여 효율적으로 데이터를 관리하는 것이 필요합니다.
LVM 삭제 및 수정
LVM을 관리하다 보면 필요에 따라 생성한 PV, VG, LV를 삭제해야 할 경우가 있습니다. 삭제 시 주의해야 할 사항과 과정은 다음과 같습니다.
- LV 삭제: 먼저 LV를 삭제합니다. 이때, LV가 마운트되어 있지 않은지 확인해야 합니다.
bash
umount /dev/my_volume_group/my_logical_volume
lvremove /dev/my_volume_group/my_logical_volume
- VG 삭제: LV가 삭제된 후, VG를 삭제합니다.
bash
vgremove my_volume_group
- PV 삭제: 마지막으로 PV를 삭제합니다. PV가 VG에 속해있지 않아야 합니다.
bash
pvremove /dev/sdX1
| 명령어 | 설명 |
|---|---|
lvremove |
LV를 삭제하는 명령어 |
vgremove |
VG를 삭제하는 명령어 |
pvremove |
PV를 삭제하는 명령어 |
LVM을 삭제할 때에는 데이터 손실을 방지하기 위해 항상 주의해야 하며, 필요시 백업을 생각해야 합니다.
결론
LVM은 리눅스 환경에서 저장 공간을 유연하게 관리할 수 있는 강력한 도구입니다. PV, VG, LV의 생성과 삭제, 조회 및 추가 방법을 이해하면, 데이터 저장소를 보다 효율적으로 관리할 수 있습니다.
LVM을 활용하여 물리적인 저장 장치를 보다 유연하게 사용할 수 있으며, 데이터의 안전성과 효율성을 동시에 확보할 수 있습니다. LVM을 적절히 활용하여 리눅스 시스템의 저장 관리를 최적화하시기 바랍니다.