CNF 블로그

CNF 블로그에서 최신 정보와 유용한 팁을 만나보세요. 다양한 콘텐츠와 전문 지식을 통해 더 나은 경험을 제공합니다.

LVM 이란 무엇인가요?

LVM (Logical Volume Manager) 은 디스크 공간을 유연하게 관리하고 확장할 수 있도록 도와주는 스토리지 관리 시스템입니다.

2025년 05월 20일

LVM 이란 무엇인가요?

LVM 이란 무엇인가요?

LVM (Logical Volume Manager) 는 리눅스에서 디스크 공간을 유연하고 효율적으로 관리하기 위한 논리 볼륨 관리 시스템입니다. 기존의 고정된 파티션 방식과 달리, LVM은 물리적인 디스크를 추상화하여 논리적인 볼륨으로 관리함으로써 스토리지 확장, 축소, 이동 등을 보다 쉽게 수행할 수 있습니다.

LVM은 리눅스 시스템에서 스토리지를 보다 유연하게 관리할 수 있는 강력한 도구입니다. 특히, 스토리지 확장이나 재구성이 빈번한 환경에서 그 진가를 발휘합니다.

LVM 이란 무엇인가요?

1. LVM 의 기본 구성 요소

  • PV (Physical Volume)
    • 물리적인 디스크나 파티션을 LVM에서 사용할 수 있도록 초기화한 단위입니다.
  • VG (Volume Group)
    • 하나 이상의 PV를 묶어 만든 논리적인 스토리지 풀입니다. VG는 논리 볼륨(LV)을 생성하는 기반이 됩니다.
  • LV (Logical Volume)
    • VG에서 할당된 공간으로, 실제 파일 시스템을 생성하고 데이터를 저장하는 단위입니다.
  • PE (Physical Extent)
    • PV를 구성하는 최소 단위의 블록으로, 일반적으로 4MB 크기를 가집니다.

2. LVM 의 주요 장점

  • 유연한 스토리지 관리: LV의 크기를 동적으로 조절할 수 있어, 디스크 공간의 확장이나 축소가 용이합니다.
  • 스토리지 스냅샷: LV의 특정 시점 상태를 스냅샷으로 저장하여, 백업이나 복구에 활용할 수 있습니다.
  • 디스크 통합 및 분할: 여러 개의 디스크를 하나의 VG로 통합하거나, 하나의 디스크를 여러 개의 LV로 분할하여 사용할 수 있습니다.
  • 데이터 이동의 용이성: LV를 다른 PV로 이동시킬 수 있어, 디스크 교체나 재배치가 간편합니다.

3. LVM 설정 절차

  • 물리 볼륨 생성: pvcreate /dev/sdX 명령어를 사용하여 디스크를 PV로 초기화합니다.
  • 볼륨 그룹 생성: vgcreate vg_name /dev/sdX 명령어로 VG를 생성합니다.
  • 논리 볼륨 생성: lvcreate -L 10G -n lv_name vg_name 명령어로 LV를 생성합니다.
  • 파일 시스템 생성 및 마운트: mkfs.ext4 /dev/vg_name/lv_name으로 파일 시스템을 생성하고, mount /dev/vg_name/lv_name /mnt로 마운트합니다

4. 활용 예시

  • 서버 환경: 데이터베이스 서버에서 데이터 증가에 따라 스토리지를 확장할 때 유용합니다.
  • 백업 및 복구: 스냅샷 기능을 활용하여 시스템 백업 및 복구 시점을 관리할 수 있습니다.
  • 테스트 환경: 여러 개의 테스트 환경을 구성할 때, LV를 분할하여 독립적인 공간을 제공합니다

LVM 구성 요소 비교

리눅스의 LVM(Logical Volume Manager)은 디스크 공간을 유연하게 관리하기 위한 시스템으로, 주요 구성 요소는 PV (Physical Volume), VG (Volume Group), LV (Logical Volume), PE (Physical Extent), LE (Logical Extent)입니다. 아래 표는 각 구성 요소의 차이점, 생성 순서, 논리화 수준을 정리한 것입니다.

구성 요소 설명 생성 순서 논리화 수준 주요 특징
PV (Physical Volume) 물리 디스크나 파티션을 LVM에서 사용할 수 있도록 초기화한 단위 1단계 가장 낮음 (물리 계층) 디스크나 파티션을 pvcreate로 초기화하여 LVM에 포함시킴
PE (Physical Extent) PV를 일정 크기로 나눈 블록 단위 (기본 4MB) PV 생성 시 자동 생성 낮음 LVM이 데이터를 관리하는 최소 단위
VG (Volume Group) 하나 이상의 PV를 묶은 논리적 스토리지 풀 2단계 중간 vgcreate로 생성하며, LV를 생성할 수 있는 기반이 됨
LV (Logical Volume) VG에서 할당된 공간으로, 실제 파일 시스템을 생성하고 데이터를 저장하는 단위 3단계 높음 lvcreate로 생성하며, 파일 시스템을 생성하고 마운트하여 사용
LE (Logical Extent) LV를 구성하는 블록 단위로, PE와 1:1 매핑됨 LV 생성 시 자동 생성 가장 높음 (논리 계층) LV의 데이터를 구성하는 최소 단위

리눅스에서 디스크 초기화부터 LVM 설정 및 파일 저장까지의 전체 과정 요약

  1. 디스크 확인 및 초기화: lsblk로 디스크를 확인하고, 필요한 경우 fdisk나 parted로 파티션을 생성합니다.
  2. PV 생성: pvcreate /dev/sdX 명령어로 물리 볼륨을 생성합니다.
  3. VG 생성: vgcreate vg_name /dev/sdX 명령어로 볼륨 그룹을 생성합니다.
  4. LV 생성: lvcreate -L 10G -n lv_name vg_name 명령어로 논리 볼륨을 생성합니다.
  5. 파일 시스템 생성 및 마운트: mkfs.ext4 /dev/vg_name/lv_name으로 파일 시스템을 생성하고, mount /dev/vg_name/lv_name /mnt로 마운트합니다.

디스크 초기화 부터 파일 저장까지

  • LVM을 사용하면 디스크 공간을 유연하게 관리할 수 있으며, 필요에 따라 논리 볼륨의 크기를 동적으로 조절할 수 있습니다.
  • 스냅샷 기능을 활용하여 특정 시점의 데이터를 보존하거나 복구할 수 있습니다.
  • 여러 디스크를 하나의 볼륨 그룹으로 묶어 사용할 수 있어, 스토리지 확장성이 뛰어납니다.
1. 디스크 확인 및 초기화

a. 디스크 확인

lsblk

시스템에 연결된 디스크와 파티션 정보를 확인합니다.

b. 디스크 초기화

새로운 디스크를 사용할 경우, 파티션을 생성하거나 전체 디스크를 LVM에 사용할 수 있습니다.

  • 파티션 생성 예시

fdisk /dev/sdb

n을 눌러 새 파티션을 생성하고, t로 파티션 타입을 8e(Linux LVM)로 설정합니다.

  • 전체 디스크 사용 예시

파티션을 생성하지 않고 전체 디스크를 LVM에 사용할 수도 있습니다.

2. 물리 볼륨(PV) 생성

디스크 또는 파티션을 LVM에서 사용할 수 있도록 초기화합니다.

pvcreate /dev/sdb1

여러 디스크를 사용할 경우, 공백으로 구분하여 여러 개를 지정할 수 있습니다.

3. 볼륨 그룹(VG) 생성

하나 이상의 물리 볼륨을 묶어 볼륨 그룹을 생성합니다.

vgcreate my_vg /dev/sdb1

my_vg는 볼륨 그룹의 이름이며, 원하는 이름으로 지정할 수 있습니다.

4. 논리 볼륨(LV) 생성

볼륨 그룹에서 논리 볼륨을 생성합니다.

lvcreate -L 10G -n my_lv my_vg

  • L 10G: 10GB 크기의 논리 볼륨을 생성합니다.
  • n my_lv: 논리 볼륨의 이름을 my_lv로 지정합니다.
5. 파일 시스템 생성

논리 볼륨에 파일 시스템을 생성합니다.

mkfs.ext4 /dev/my_vg/my_lv

다른 파일 시스템을 사용하려면 ext4 대신 xfs, btrfs 등을 사용할 수 있습니다.

6. 마운트 및 자동 마운트 설정

a. 마운트 포인트 생성 및 마운트

mkdir /mnt/my_mount
mount /dev/my_vg/my_lv /mnt/my_mount

b. 부팅 시 자동 마운트 설정

/etc/fstab 파일에 다음 라인을 추가하여 부팅 시 자동으로 마운트되도록 설정합니다.

/dev/my_vg/my_lv /mnt/my_mount ext4 defaults 0 0

파일 시스템 종류(ext4)는 실제 사용한 파일 시스템에 맞게 변경해야 합니다.

7. 상태 확인 명령어

물리 볼륨 확인 : pvs

볼륨 그룹 확인 : vgs

논리 볼륨 확인 : lvs

마운트 상태 확인 : df -h

리눅스 논리 볼륨 관리자 비교

리눅스에서 LVM(Logical Volume Manager)과 비교할 수 있는 주요 논리 볼륨 관리 시스템으로는 ZFS, Btrfs, Stratis가 있습니다. 아래 표는 이들 시스템의 주요 기능과 차이점을 비교한 것입니다:

기능/특징 LVM ZFS Btrfs Stratis
개발사/출시 Linux 커뮤니티 / 1998년 Sun Microsystems / 2005년 (현재 OpenZFS로 오픈소스화) Oracle / 2009년 (리눅스 커널에 통합) Red Hat / 2018년
구조 볼륨 관리 계층 (파일 시스템과 분리) 파일 시스템과 볼륨 관리 통합 구조 파일 시스템과 볼륨 관리 통합 구조 LVM 및 XFS 기반의 사용자 공간 구성
파일 시스템 ext4, XFS 등 선택 가능 자체 파일 시스템(ZFS) 자체 파일 시스템(Btrfs) XFS 사용
스냅샷 지원 (기본적이며 성능 저하 가능) 고급 스냅샷 및 클론 기능 제공 고급 스냅샷 및 서브볼륨 기능 제공 지원 (XFS 기반)
데이터 무결성 없음 종단 간 체크섬 및 자동 복구 기능 제공 체크섬 및 일부 자동 복구 기능 제공 없음
RAID 지원 mdadm 또는 LVM RAID 사용 자체 RAID-Z 지원 자체 RAID 0/1/5/6/10 지원 LVM RAID 사용
압축/중복 제거 없음 지원 (압축 및 중복 제거) 지원 (압축 및 중복 제거) 없음
암호화 LUKS 등 외부 도구 사용 자체 암호화 기능 제공 자체 암호화 기능 제공 LUKS 등 외부 도구 사용
확장성 우수 (온라인 확장 및 축소 지원) 매우 우수 (페타바이트급 확장성) 우수 (다중 디스크 및 서브볼륨 지원) 우수 (LVM 기반 확장성)
성능 낮은 오버헤드, 파일 시스템에 따라 다름 높은 메모리 사용, 고성능 캐시 및 로그 시스템 제공 중간 수준의 오버헤드, Copy-on-Write로 인한 성능 저하 가능 낮은 오버헤드, XFS 성능에 의존
사용 사례 전통적인 서버, 가상 머신, 단순 스토리지 관리 데이터 무결성이 중요한 엔터프라이즈 환경, NAS, 백업 시스템 데스크탑, 개발 환경, 스냅샷 및 서브볼륨 활용이 필요한 경우 Fedora, RHEL 등에서의 간편한 스토리지 관리
요약
  • LVM: 유연한 볼륨 관리를 제공하지만, 데이터 무결성 보호 기능은 부족합니다. 다양한 파일 시스템과의 호환성이 장점입니다.
  • ZFS: 파일 시스템과 볼륨 관리가 통합되어 있으며, 데이터 무결성 보호, 스냅샷, 압축 등 고급 기능을 제공합니다. 그러나 높은 메모리 사용량과 리눅스에서의 제한된 지원이 단점입니다.
  • Btrfs: ZFS와 유사한 기능을 제공하며, 리눅스 커널에 통합되어 있습니다. 스냅샷, 서브볼륨, 압축 등을 지원하지만, 일부 기능은 아직 안정성 문제로 제한적일 수 있습니다.
  • Stratis: LVM과 XFS를 기반으로 하며, 사용자 공간에서 동작하는 데몬을 통해 ZFS/Btrfs와 유사한 기능을 제공합니다. 그러나 기능 면에서는 제한적일 수 있습니다.

각 시스템의 선택은 사용자의 요구사항과 환경에 따라 달라질 수 있습니다. 예를 들어, 데이터 무결성이 중요한 환경에서는 ZFS가 적합할 수 있으며, 리눅스 환경에서의 통합성과 유연성을 원한다면 Btrfs나 Stratis를 고려할 수 있습니다.

마무리

LVM(Logical Volume Manager)은 리눅스에서 디스크 공간을 유연하고 효율적으로 관리하기 위한 논리 볼륨 관리 시스템입니다. 기존의 고정된 파티션 방식과 달리, LVM은 물리적인 디스크를 추상화하여 논리적인 볼륨으로 관리함으로써 스토리지 확장, 축소, 이동 등을 보다 쉽게 수행할 수 있습니다.

LVM은 리눅스 시스템에서 스토리지를 보다 유연하게 관리할 수 있는 강력한 도구입니다. 특히, 스토리지 확장이나 재구성이 빈번한 환경에서 그 진가를 발휘합니다.

이제 나도 MSA 전문가 개념부터 실무까지

Share This Story, Choose Your Platform!

Go to Top