Post

LVM(Logical Volume Manager)-개념, 사용 방법

LVM(Logical Volume Manager)-개념, 사용 방법

1. LVM(Logical Volume Manager)의 개념

LVM이란 리눅스와 유닉스 기반 운영체제에서 Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램입니다. LVM은 물리적인 디스크를 논리적인 볼륨으로 추상화하여 유연하게 디스크 공간을 활용할 수 있게 해줍니다.

-> LV2를 사용 중 디스크 용량이 더 필요하다면? 디스크를 추가 장착한 뒤 VG에 편입하고 LV2에 볼륨 사이즈를 추가로 할당할 수 있습니다.

그림 1 - LVM 개요


2. LVM의 구성 요소

LVM은 PV, PE, VG, LV, LE의 총 5가지로 구성됩니다.

2.1. PV(Physical Volume)

LVM에서 블록 장치를 사용하려면 PV로 초기화 후 사용이 가능합니다. PV란 블록 장치 전체 또는 그 장치를 이루고 있는 파티션들을 LVM에서 사용할 수 있게 변환한 것을 말합니다.

PE - PV는 데이터를 저장하는 각각의 고정된 크기의 논리적 블록으로 나뉘는데, 이를 PE(Physical Extent)라고 합니다. PV는 여러 개의 PE로 구성됩니다.

그림 2 - PV의 구조

2.2. VG(Volume Group)

VG는 PV를 모아놓은 것으로, LV를 할당할 수 있는 공간입니다.
즉 PV로 초기화된 장치들은 VG로 통합되게 되고, VG 안의 공간을 사용해 LV를 만들 수 있습니다.

그림 3 - VG의 구조

2.3. LV(Logical Volume)

LV는 VG에서 공간을 할당받아 사용자가 최종적으로 다룰 수 있는 논리적인 스토리지(실제 데이터를 저장)입니다. LV는 PV와 동일하게 LE(Logical Extent)라는 일정한 크기의 블록 단위로 나뉘며 각각의 LE들은 PE와 1:1로 매핑되어 사용됩니다.

LV는 LE들의 집합이며 LE는 PE와 1:1로 매핑, VG에서 필요한 크기를 할당받아 필요 시 크기를 조정 가능

그림 4 - LV의 구조


3. LVM 사용법

LVM을 사용하기 위해서는 아래의 절차가 필요합니다.

3.1.1. 절차 요약

PV 생성 → VG 생성 → LV 생성 → LV 포맷 → 마운트 → /etc/fstab 설정

아래 LVM 예시는 CentOS 7을 사용해 구축했습니다.

그림 5


3.1.2. 디스크 확인

현재 sdb, sdc, sdd 세 개의 5GB 디스크가 추가로 연결되어 있습니다.

1
2
3
4
5
6
7
8
# 서버에서 인식하고 있는 디스크들 Tree 형태로 확인
lsblk 

# 전체 디스크 목록과 디스크 파티션 목록 확인
fdisk -l 

# 마운트되어 있는 디스크 확인
df -h

image

3.2. PV 만들기

3.2.1. lvm2 package 다운로드

1
yum -y install lvm2

3.2.2. 파티션 생성 (sdb, sdc, sdd 모두에 적용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fdisk /dev/sdb

=> n # 새 파티션 생성
	
Command :

	p
		{Enter} # primary
		{Enter} # 파티션 개수
		{Enter} # First Sector 지정
		{Enter} # Last Sector 지정
		

=> t # 파일 시스템 타입을 8e(LVM)로 설정

=> p # 현재 설정한 정보 확인

=> w # 현재 설정한 정보대로 저장

image

3.2.3. PV 생성

image

1
pvcreate {파티션명}

3.3. VG 만들기

image

1
vgcreate {VG 이름} {VG에 포함될 PV목록}

3.4. LV 만들기

image

1
lvcreate --size {lv 사이즈} --name {lv 이름} {VG 이름}

PV의 용량을 5GB × 3개(15GB)로 구성했으나 실제 사용 가능 용량은 약간 작습니다. 따라서 lv1을 만든 뒤 남은 VG 용량을 모두 lv2에 할당했습니다.

1
lvcreate --extents 100%FREE --name {lv 이름} {VG 이름}

3.5. LV 포맷 (ext4 형식으로)

1
mkfs.ext4 {LV 경로}

image

3.6. Mount 및 /etc/fstab 설정

1
mount -t {파일 타입} {마운트 할 LV} {LV가 마운트 될 디렉토리}

image

3.6.1. /etc/fstab 설정 (vi Editor 사용)

image

  • 12행, 13행에 lv1, lv2를 추가합니다.
  • /etc/fstab을 설정하지 않으면 재부팅 시 마운트가 해제됩니다.
  • /etc/fstab 설정 후 재부팅하여 마운트가 정상인지 확인하세요.

3.7. 확인

생성된 PV, VG, LV 상태는 아래의 명령어로 확인 가능합니다

3.7.1. PV 상태 확인

1
2
pvdisplay  # 자세하게 확인
pvscan     # 간단하게 확인

3.7.2. VG 상태 확인

1
2
vgdisplay
vgscan

3.7.3. LV 상태 확인

1
2
lvdisplay
lvscan

```

3.7.1. [결과1] PV 상태

image

3.7.2. [결과2] VG 상태

image

3.7.3. [결과3] LV 상태

image


4. 그 외 명령어

VG 관리

  • vgremove {vg_name}: VG 삭제
  • vgextend {vg_name} {pv_name}: VG 확장
  • vgreduce {vg_name} {pv_name}: VG에서 특정 PV 제거

LV 관리

  • lvremove {lv_name}: LV 삭제
  • lvextend -L {+Size} {lv_path}: LV 크기를 {+Size}만큼 확장
  • lvreduce -L {-Size} {lv_path}: LV 크기를 {-Size}만큼 축소

파일 시스템 조정

  • resize2fs {lv_path}: ext 계열 파일 시스템 크기 조정
  • xfs_growfs {lv_path}: XFS 파일 시스템 크기 조정



궁금하신 점이나 추가해야 할 부분은 댓글이나 아래의 링크를 통해 문의해주세요.
Written with KKamJi

This post is licensed under CC BY 4.0 by the author.