데이터베이스

Logical Volume Manager (LVM)의 개념

LVM(Logical Volume Manager)은 Linux에서 디스크 공간을 동적으로 관리할 수 있도록 하는 스토리지 가상화 기술입니다. 기존의 파티션 방식보다 유연하게 디스크를 할당하고 조정할 수 있습니다.

1. LVM의 기본 개념

LVM은 여러 개의 물리 디스크 또는 파티션을 하나의 논리적 볼륨(Logical Volume)으로 묶어서 관리하는 시스템입니다. 이를 통해 저장소를 확장하거나 축소할 수 있으며, 기존 파티션 방식보다 더 유연한 스토리지 관리가 가능합니다.

2. LVM의 주요 구성 요소

LVM은 다음과 같은 3가지 주요 계층으로 구성됩니다.

  1. 물리적 볼륨 (PV, Physical Volume)
    • 실제 물리적 디스크 또는 디스크의 특정 파티션을 의미합니다.
    • pvcreate 명령을 사용하여 LVM에서 사용할 수 있도록 초기화합니다.
    • 예: /dev/sda1, /dev/sdb1 등이 물리적 볼륨이 될 수 있음.
  2. 볼륨 그룹 (VG, Volume Group)
    • 여러 개의 물리적 볼륨(PV)을 하나의 그룹으로 묶은 것입니다.
    • VG는 여러 개의 PV를 포함할 수 있으며, VG 내부에서 논리적 볼륨을 생성할 수 있습니다.
    • vgcreate 명령을 사용하여 생성합니다.
  3. 논리적 볼륨 (LV, Logical Volume)
    • 사용자가 실제로 파일 시스템을 생성하여 데이터를 저장할 수 있는 가상 디스크 공간입니다.
    • lvcreate 명령을 사용하여 생성하며, 필요에 따라 크기를 조정할 수 있습니다.
    • 일반적인 디바이스 경로: /dev/mapper/vgname-lvname 또는 /dev/vgname/lvname
  4. 물리적 익스텐트 (PE, Physical Extent)
    • VG 내에서 할당 가능한 최소 저장 단위입니다.
    • 기본적으로 4MB(변경 가능)이며, LV는 PE 단위로 확장 또는 축소됩니다.

3. LVM의 주요 기능

LVM은 기존의 정적인 파티션 방식과 비교하여 다양한 기능을 제공합니다.

  1. 동적 크기 조정 (Resize)
    • LV 크기를 확장 (lvextend) 또는 축소 (lvreduce) 할 수 있습니다.
    • 파일 시스템 크기도 resize2fs (ext4) 또는 xfs_growfs (XFS) 등을 사용하여 변경할 수 있습니다.
  2. 디스크 추가 및 제거
    • 기존 VG에 새로운 PV를 추가 (vgextend) 하거나, 특정 PV를 제거 (vgreduce) 할 수 있습니다.
  3. 스냅샷 (Snapshot)
    • 현재 LV의 상태를 저장하여 특정 시점으로 복구할 수 있는 기능입니다.
    • lvcreate -s 명령을 사용하여 생성하며, 백업 및 데이터 보호에 유용합니다.
  4. RAID 및 미러링
    • LVM을 사용하여 RAID-1(미러링) 구성 가능 (lvconvert --type mirror)
    • 디스크 장애 발생 시 데이터 보호 가능.

4. LVM 명령어 정리

기능명령어
물리적 볼륨 생성pvcreate /dev/sdb1
물리적 볼륨 확인pvdisplay
볼륨 그룹 생성vgcreate my_vg /dev/sdb1 /dev/sdc1
볼륨 그룹 확인vgdisplay
논리 볼륨 생성lvcreate -L 10G -n my_lv my_vg
논리 볼륨 크기 확장lvextend -L +5G /dev/my_vg/my_lv
논리 볼륨 크기 축소lvreduce -L 5G /dev/my_vg/my_lv
파일 시스템 크기 조정resize2fs /dev/my_vg/my_lv
논리 볼륨 제거lvremove /dev/my_vg/my_lv

5. LVM의 장점과 단점

✅ 장점

  • 디스크 공간을 유동적으로 관리 가능 (확장/축소)
  • 여러 개의 디스크를 하나로 묶어 사용 가능
  • 스냅샷 기능을 통한 데이터 보호 및 백업 용이
  • RAID 및 미러링 기능 지원

❌ 단점

  • 설정이 복잡하고, 일반적인 파티션 방식보다 초기 설정이 어려움
  • LVM 메타데이터 손상 시 데이터 복구가 어려울 수 있음
  • 논리 볼륨 축소 시 데이터 손실 위험이 있음 (주의 필요)

6. LVM 활용 예시

  1. 기본적인 LVM 생성 과정
# 물리적 볼륨 생성
pvcreate /dev/sdb1 /dev/sdc1

# 볼륨 그룹 생성
vgcreate my_vg /dev/sdb1 /dev/sdc1

# 논리 볼륨 생성 (10GB 크기)
lvcreate -L 10G -n my_lv my_vg

# 파일 시스템 생성 (ext4)
mkfs.ext4 /dev/my_vg/my_lv

# 마운트 및 사용
mkdir /mnt/lvm_storage
mount /dev/my_vg/my_lv /mnt/lvm_storage
  1. 논리 볼륨 확장
# 논리 볼륨 크기 확장 (+5GB)
lvextend -L +5G /dev/my_vg/my_lv

# 파일 시스템 크기 조정 (ext4)
resize2fs /dev/my_vg/my_lv
  1. 스냅샷 생성
# 현재 논리 볼륨의 스냅샷 생성 (5GB 크기)
lvcreate -L 5G -s -n my_lv_snapshot /dev/my_vg/my_lv

7. 결론

LVM은 디스크 관리를 더욱 유연하고 효율적으로 할 수 있도록 도와주는 강력한 도구입니다. 특히, 서버 환경에서 디스크 공간을 효율적으로 사용하고 관리해야 할 경우 매우 유용합니다. 하지만 설정이 복잡하고, 실수로 인해 데이터가 손실될 위험이 있기 때문에 신중한 사용이 필요합니다.

zerg96

Recent Posts

타입스크립트 (TypeScript)

1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…

5개월 ago

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

6개월 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7개월 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

7개월 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

7개월 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

7개월 ago