LVM(Logical Volume Manager)
- Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 부분이자 프로그램
- (기존) 파일시스템이 블록 장치에 직접 접근하여 읽기/쓰기 작업 진행
(LVM) 파일 시스템이 LVM이 만든 가상의 블록 장치에 읽기/쓰기 작업 진행
- LVM은 물리적 스토리지 이상의 추상적 Layer를 생성하여 논리적 스토리지(가상 블록 장치)를 생성할 수 있게 해준다.
- 직접적으로 물리적 스토리지를 사용한 것보다 다양한 측면에서 유연성을 제공해준다.
특징 (Features)
- 유연한 용량
- Scalable Storage Pool
- 온라인 데이터 재배치
- 편의에 따라 장치 이름 지정
- 디스크 스트라이핑
- 미러 볼륨
- 볼륨 스냅샷
LVM 2 (LVM1 의 기능 개선)
- 유연한 용량
- 보다 효율적인 MetaData Storage
- 보다 향상된 복구 포맷
- 새로운 ASCII 메타데이터 포멧
- 메타데이터로 원자 변경
- 메타데이터의 이중 복사본
LVM2는 '스냅샷' 과 '클러스터 지원'을 제외하고 LVM1과 역 호환성이 있다.
vgconvert
명령어로 LVM1 포멧에서 LVM2 포멧으로 변환이 가능하다.
LVM 용어 정리
PV(Physical Volume)
- LVM에서 블록 장치를 사용하려면 PV로 초기화를 해야한다. 즉, 블록 장치 전체 또는 그 블록 장치를 이루고 있는 파티션들을 LVM에서 사용할 수 있게 변환한 것이다.
- PV는 일정한 크기의 PE(Pysical Extent)들로 구성이 된다.
(*) 블록 장치: 블록 단위로 접근하는 스토리지, 예를 들어 대용량 하드 디스크
PE(Physical Extent)
- PV를 구성하는 일정한 크기의 블록으로 LVM2에서의 기본크기는 4MB이다.
- LV(Logical Volume)의 LE(Logical Extent)들로 1:1로 맵핑된다.
※ 항상 PE와 LE의 크기는 동일하다.
VG(Volume Group)
- PV들의 집합으로 LV를 할당할 수 있는 공간이다.
- 사용자는 VG안에서 원하는데로 공간을 쪼개서 LV로 만들 수 있다.
- 아래 그림은 블록 장치(Pysical Disk)의 파티션들을 PV들로 초기화 시킨 모습이다. 각각의 PV들은 동일한 크기의 PE들로 구성이 되며 PV들이 하나의 VG1으로 묶여있다.

LV(Logical Volume)
- 사용자가 최종적으로 다루게 되는 논리적인 스토리지이다.
- 생성된 LV는 파일 시스템 및 애플리케이션(Database 등)으로 사용된다.
- LV를 구성하는 LE들이 PV의 PE들과 mapping 하면서 존재하게 된다.
LV 유형 (Types of LV)
가. 선형(Linear) LV
-
하나의 LV로 PV를 모으는 방법

나. 스트라이프(Striped) LV
-
LV에 데이터를 기록하면 파일 시스템은 PV에 데이터를 기록하게 된다. (PE와 LE의 매핑대로)
-
스트라이프된 LV를 생성하여 데이터가 PV에 기록되는 방식을 바꿀 수 있다.
-
대량의 순차적 읽기/쓰기 작업의 경우에 효율을 높일 수 있다.
-
Striped LV는 Round-Robin 방식으로 미리 지정된 PV들에 데이터를 분산 기록을 하게 된다.
분산 기록 → 성능 향상, R/W 병렬로 실행 가능
-
번갈아가는 기준은 데이터의 크기이며 이를 Stripe 크기라고 한다.
Extent 크기( = PE/LE)를 초과할 수 없다.

다. Mirrored 된 LV
- 데이터의 복사본을 다른 블록 장치에 저장하는 방식
- 장치에 장애가 발생할 경우 데이터를 보호할 수 있게 된다.
- 장애시 Linear로 저장되어 있기에 다른 장치에서 쉽게 접근이 가능하다.
- 어떤 부분이 미러를 써서 동기화 되었는지에 대한 로그를 디스크에 저장

LE(Logical Extent)
- LV를 구성하는 일정한 크기의 블록으로 LVM2의 기본크기는 4MB이다.
- 항상 PE와 LE의 크기는 동일하다.

Traditional vs LVM
전통적 저장장치
- 물리 디스크를 파티션이라는 단위로 나누어 OS에 마운트하여 사용
- 마운트를 하려면 파티션을 특정 디렉토리와 일치시켜 주어야 한다.
- 마운트된 파티션이 용량이 일정 수준 찼을 때 번거로운 작업을 수행해야 함.

LVM (Logical Volume Management)
- 물리 디스크를 Volume 그룹으로 묶고 이것을 다시 Logical Volume으로 분할하여 관리
- 특정 영역의 사용량이 많아져서 저장 공간이 부족할 경우 유연하게 대응 가능

참조:
https://kit2013.tistory.com/199
https://tech.cloud.nongshim.co.kr/2018/11/23/lvmlogical-volume-manager-1-개념/
