LVM (Linux)

민콕이·2025년 12월 12일

LVM이란

LVM(Logical Volume Manager)은 리눅스에서 디스크·파티션을 유연하게 관리하기 위한 논리적 스토리지 관리 기술입니다. 일반적인 고정 파티션과 달리, LVM을 사용하면 디스크 공간을 동적으로 확장하거나 축소하고, 여러 물리 디스크를 하나처럼 묶어서 사용할 수 있습니다.



기본 개념

LVM은 크게 세 단계 구조로 이루어져 있습니다.

1) Physical Volume (PV)

  • 실제 물리 디스크나 파티션
  • 예: /dev/sda1, /dev/nvme0n1p2

2) Volume Group (VG)

  • 여러 PV를 묶어 하나의 큰 스토리지 풀처럼 사용
  • 예: vg_main

3) Logical Volume (LV)

  • 실제로 파일 시스템을 생성하고 마운트하여 사용하는 영역
  • 예: /dev/vg_main/lv_home


주요 기능

1. 동적 크기 조절 (확장/축소)

  • LV의 크기를 늘리거나 줄일 수 있음
    lvextend -L +10G /dev/vg_main/lv_data
    resize2fs /dev/vg_main/lv_data

2. 여러 디스크를 하나로 묶기

  • 예: 100GB SSD + 500GB HDD → 하나의 큰 Volume Group으로 사용

3. 스냅샷(Snapshot)

  • 특정 시점의 데이터 복제본 생성
  • 백업, 업그레이드 테스트에 유용

4. 온라인 확장

  • 파일 시스템을 마운트한 상태에서 LV 확장이 가능 (ext4, xfs 등)



Linux에서 LVM 해보기

디스크 파티션 작업 하기 (sdb 디스크 기준)
해당 방법대로 모든 디스크 파티션 작업을 진행합니다.

# 파티션 생성
# /dev/sdb1 /dev/sdc1

[root@ftp]# fdisk /dev/sdb                                 -> 디스크 선택

Command (m for help): n                                    -> 새로운 파티션 분할
Select (default p): p                                      -> Primary 파티션 선택
Partition number(1-4, default 1): 1                        -> 파티션 번호 선택
First sector (2048-4194303, default 2024): [enter]         -> 시작 섹터 번호
Last sector ... (2028-4194303, default 4194303): [enter]   -> 마지막 섹터 번호
Command (m for help): p                                    -> 설정 내용 확인
Command (m for help): w                                    -> 설정 저장

피지컬 볼륨 생성

[root@localhost ~]# pvcreate /dev/sdb1
[root@localhost ~]# pvcreate /dev/sdc1

# 확인
[root@localhost ~]# pvdisplay

볼륨 그룹 추가

[root@localhost ~]# vgcreate /dev/testVG /dev/sdb1 /dev/sdc1

#확인
[root@localhost ~]# vgdisplay

로지컬 볼륨 생성

# 1기가 짜리 논리 그룹 2개와 나머지 용량 전부를 사용하는 논리 그룹 생성
[root@localhost ~]# lvcreate --size 1G --name testLV1 testVG
[root@localhost ~]# lvcreate --size 1G --name testLV2 testVG
[root@localhost ~]# lvcreate --extents 100%FREE --name testLV3 testVG

# lv 확인
[root@localhost ~]# lvdisplay


링크파일) 윈도우의 바로가기 파일과 같이 testLV1../dm-2 를 가리키는 것과 같습니다.



testVG 볼륨 그룹 내의 세 개의 논리 볼륨(testLV1, testLV2, testLV3)에 각각 ext4 파일 시스템을 생성

[root@localhost ~]# mkfs.ext4 /dev/testVG/testLV1
[root@localhost ~]# mkfs.ext4 /dev/testVG/testLV2
[root@localhost ~]# mkfs.ext4 /dev/testVG/testLV3

동일한 LV(testLV3)를 세 개의 디렉터리(lvm1, lvm2, lvm3)에 각각 마운트

[root@localhost ~]# mount /dev/testVG/testLV3 /lvm1
[root@localhost ~]# mount /dev/testVG/testLV3 /lvm2
[root@localhost ~]# mount /dev/testVG/testLV3 /lvm3

sdb1sdc1을 나눠서 분배하고 있는 모습을 볼 수 있다.




디스크 추가 할당

먼저 디스크를 하나 추가해 위에서 작업했던 것처럼 디스크 파티션 작업합니다.

이 후 아래와 같이 작업을 진행합니다.

# 피지컬 볼륨을 생성
[root@localhost ~]# pvcreate /dev/sdd1

# 기존 볼륨그룹에 추가
[root@localhost ~]# vgextend testVG /dev/sdd1

# 현재 남아있는 잔여 용량을 testLV1에 추가
[root@localhost ~]# lvextend -l +100%FREE /dev/testVG/testLV1

# 용량 변경 적용 (마운트 되어있는 상태여도 적용 가능)
[root@localhost ~]# resize2fs /dev/testVG/testLV1


sdd1 이 추가되어 같이 분배하고 있는 모습을 볼 수 있다.

profile
정리 블로그

0개의 댓글