Post

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을 사용하기 위해서는 아래의 절차가 필요합니다.

PV 생성 -> VG 생성 -> LV 생성 -> LV 포맷 -> mount -> /etc/fstab 설정

아래의 LVM을 CentOS7 을 사용해 구축하면서 사용법을 기술하겠습니다.

그림 5


디스크 확인

현재 sdb, sdc, sdd라는 5G까지 용량을 가진 sdb, sdc, sdd라는 디스크가 있습니다.

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

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

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

image

3.1 PV 만들기

1. lvm2 package 다운로드

1
yum -y install lvm2

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} #Frist Sector 지정
		{Enter} #Last Sector 지정
		

=> t # 파일 시스템 타입 설정 8e -> LVM으로 사용될 파티션

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

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

image

3. PV 생성

image

1
pvcreate {파티션명}

3.2 VG 만들기

image

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

3.3 LV 만들기

image

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

## PV의 용량을 5x3개 15로 했으나 실제로는 15G보다 작은 용량이 할당되게 됩니다. 따라서 lv1을 만들고 남은 VG의 용량을 모두 lv2에 할당하는 명령어를 사용했습니다.
lvcreate --extents 100%FREE --name {lv 이름} {VG 이름}

3.4 LV 포맷 (ext4 형식으로)

1
mkfs.ext4 {LV 경로}

image

3.5 Mount 및 /etc/fstab 설정

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

image

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

image

1
2
3
12행, 13행에 lv1, lv2 추가
/etc/fstab을 설정해주지 않을 시 재부팅 하면 마운트가 풀립니다.
/etc/fstab을 설정 후 정상적으로 재부팅이 되고 mount가 잘 되어있는지 확인 후 사용해주세요.

3.6 확인

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

1
2
3
4
5
6
7
8
9
10
11
## PV상태확인
pvdisplay #자세하게 확인
pvscan    #간단하게 확인

## VG상태확인
vgdisplay
vgscan

## LV상태확인
lvdisplay
lvscan

[결과1] PV 상태

image

[결과2] VG 상태

image

[결과3] LV 상태

image

4. 그 외 명령어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# VG 명령어

## VG 삭제
vgremove {vg_name}

## VG 확장
vgextend {vg_name} {pv_name}

## VG 안에 있는 PV 삭제
vgreduce {vg_name} {pv_name}


# LV 명령어

## LV 삭제
lvremove {lv_name}

## LV 크기를 {+Size}만큼 확장
lvextend -L {+Size} {lv_path}

## LV 크기를 {-Size}만큼 축소
lvreduce -L {-Size} {lv_path}

# 파일 시스템 및 포맷, 사이즈 재 할당 명령어

## ext 파일시스템 타입의 LV 사이즈 재조정
resize2fs {lv_path}

## xfs 파일시스템 타입의 LV 사이즈 재조정
xfs_growfs {lv_path}



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

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