Logical Volume Manager
Wikimedia_-_Lvm.svg.png
리눅스에서 논리 볼륨 관리자(Logical Volume Manager, LVM)는 리눅스 커널에 논리 볼륨 관리 기능을 제공하는 장치 매퍼 대상이다. 현대의 대부분의 리눅스 배포판들은 논리 볼륨 위에 자신만의 루트 파일 시스템을 가질 수 있는 지점에 대하여 LVM을 인식한다.
Heinz Mauelshagen는 HP-UX 볼륨 관리자로부터의 주요 설계 지침을 취하면서 1998년에 LVM 코드 원본을 작성하였다.
Category
- CentOS:ResizeLVM: CentOS7최소 설치시 기본적으로 잡혀 있는 /home 디렉토리의 용량 크기를 조정하는 방법에 대한 설명.
About LVM
LVM 은 Logical Volume Manager 의 약자로서, 저장장치들을 좀더 효율적이고 유연하게 관리할 수 있는 커널의 부분과 프로그램을 말한다. 처음에는 IBM에서 개발되었는데, 그후에 OSF(현재는 OpenGroup)에서 차용을 하여 OSF/1 operating system 에서 쓰였다. 지금은 HP-UX, Digital Unix operating system, AIX 등의 상용 유닉스에서 쓰고 있다. 리눅스 버전은 현재 HP-UX의 것을 모델로 하여 Sistina Software 사에서 open source로 개발하고 있다.
LVM 을 이해하려면 먼저 Software RAID (Redundant Array of Inexpensive Drives)를 언급해야 하는데, 이 둘은 비슷하면서도 큰 차이가 있다. 비슷한 점은 여러 물리적인 디스크들을 하나의 논리적인 디스크처럼 다룰 수 있게 함으로서 조합방법에 따라 고용량, 고속, 데이터의 무결성을 실현하는 점이다. 하지만 분명하게 다른 점이 있는데. lvm은 raid보다 관리 및 확장이 비교적 쉬운 반면, raid에는 lvm에는 없는 disk mirroring(RAID level 1), Parity Stripe (RAID level 4,5) 등의 방식이 있어서 속도 또는 데이터의 무결성을 보장 받을 수 있다.
그러나 이런 차이점에도 불구하고 lvm가 주목을 받는 이유는 다음과 같다.
- 쉬운 관리.
- 서로 다른 많은 디바이스 조합 지원.
- 직관적인 저장 장치로의 접근.
- 뛰어난 확장성.
- 믿을만한 안전성과 효율.
- 스냅샷 기능 지원.
이와 같은 특징들로 인해 사용자들이 얻는 이득은 많다.
우선, pc 급 시스템 사용자들의 가장 큰 고민 중의 하나가 시스템을 처음 설치할 때에 파티션의 구성을 어떻게 할 것인가 일 것이다. 파티션은 한번 구성해 놓으면 바꾸기가 쉽지 않기 때문이다. 또 파티션이 가득 차기라도 하면 어렵게 백업을 하거나 눈물을 머금고(?) 자료를 지워야 할 경우도 심심치 않게 생기기 마련이다. 하지만 LVM를 쓰면 간단하게 저장공간을 확장, 축소 할 수 있기 때문에 그런 고민을 덜 수 있다.
다른 예로, 중소형 서버에서는 비교적 적은 비용으로 대용량 저장 장치를 구현하는 것이 가능해진다. 그리고, 백업 없이 기존의 환경을 유지한 채 확장이 가능하기 때문에 (물론 백업은 언제나 중요하다.) 유지보수면에서 상당한 이득이 있을 것이다.
중요사항 |
LVM은 물리적인 볼륨을 논리적으로 바꾸는 역할을 한다. 즉, 파일 시스템 (Filesystem)이 아니다. 간단히 설명해서 하드 디스크의 파티션을 논리적으로 유연하게 관리할 수 있도록 도와준다. |
Terms
- 물리볼륨 (PV; Physical Volume)
- 물리볼륨 은 일반적으로 하드디스크 파티션이나 RAID 장치와 같이 하드디스크 파티션과 비슷하게 보이는 장치를 지칭한다.
- 논리볼륨 (LV; Logical Volume)
- 여러 물리볼륨이 논리볼륨 을 이룬다. LVM에서 논리볼륨은 LVM를 사용하지않는 시스템의 하드디스크 파티션과 유사하다. 논리볼륨은 /home이나 /usr와 같은 파일시스템을 포함할 수 있다.
- 볼륨그룹 (VG; Volume Group)
- 이런 논리볼륨이 모여서 볼륨그룹 을 이룬다. LVM에서 볼륨그룹은 LVM을 사용하지않는 시스템의 물리적 하드디스크와 유사하다. 볼륨그룹은 여러 논리볼륨을 모아서 관리상 하나의 단위로 만든다.
- 물리적 범위 (PE; Physical Extent)
- 물리볼륨은 PE 라는 기본 단위로 나눠진다. 물리적 범위의 크기는 자유롭지만, 같은 볼륨그룹에 속한 물리볼륨끼리는 같다. 한 물리볼륨안에서 PE는 유일한 번호를 가진다. PE는 LVM이 물리적 저장공간을 가리키는 최소 단위이다.
- 논리적 범위 (LE; Logical Extent)
- 각각의 논리볼륨은 LE 라는 가리킬 수 있는 기본 단위들로 나눠진다. 같은 볼륨그룹에서 논리적 범위의 크기는 물리적 범위의 크기와 같다. 또, 한 볼륨그룹안에 있는 모든 논리볼륨의 LE 크기도 당연히 같다.
- 볼륨그룹 지시자영역 (VGDA; Volume Group Descriptor Area)
- 아마도 논리볼륨과 볼륨그룹에 대한 모든 메타정보가 저장되는 장소가 궁금할 것이다. LVM을 사용하지 않는 시스템의 비유를 들자면 파티션에 대한 정보는 파티션표에 저장된다. LVM에서 볼륨그룹 지시자영역 (VGDA, Volume Group Descriptor Area) 은 파티션표와 같은 기능을 한다. VGDA는 각 물리볼륨의 처음부분에 저장된다. VGDA에는 다음과 같은 정보가 있다.
- PV 지시자(descriptor) 한개
- VG 지시자 한개
- LV 지시자들
- 여러 PE 지시자들.
어떻게 LVM이 동작하나
각 PE는 물리볼륨에서 유일한 번호를 가지지만, 논리볼륨에서는 가질 수 없다. 이는 논리볼륨이 여러 물리볼륨으로 구성되므로 PE ID가 겹칠 수 있기 때문이다. 그래서 'LE'와 'LE와 연결된 PE'를 구별할 LE ID가 필요하다. 이미 말했듯이 LE와 PE는 1:1대응한다. 저장공간을 접근하여 실제 자료를 물리적 저장공간에 쓸때 LE ID를 사용한다.
시스템이 부팅할때 LV와 VG들이 활성화되고 VGDA가 메모리로 읽혀진다. VGDA는 LV가 실제로 어디에 저장되있는지 알려준다. 시스템이 저장장치에 접근할때 실제 입출력을 할 물리적 위치를 알아내기위해 (VGDA의 도움으로) 대응 과정을 거친다.
물리적인 디스크는 fdisk로 파티션을 분할 하지만, 논리적인 LVM디스크는 lvcreate 명령어로 분할한다. (logical volume)
List of command
-
vgs
- Report information about volume groups.
-
vgdisplay
- 볼륨 그룹(VG)을 출력한다.
-
vgdisplay -v test
- 볼륨 그룹(VG)의 상세 정보를 출력한다. (위에선
test
볼륨 그룹을 출력한다.)
-
pvcreate /dev/hda3
- 인자로 넘겨진 파티션(위에선
/dev/hda3
)에 물리 볼륨(PV)을 생성한다.
-
vgcreate test /dev/hdb2 /dev/hda3
- 볼륨 그룹(VG)을 생성하며, 인자로 넘겨진 파티션을 해당 그룹에 포함한다.
-
lvcreate -L 50M -n test-volume test
- 논리 볼륨(LV)을 생성한다. (위에선
test
볼륨 그룹(VG)에,50M
크기로,test-volume
이란 이름으로 생성한다.) - 이후, 해당 논리 볼륨(LV)에 파일 시스템을 할당할 수 있다. (e.g.
mke2fs {volume_path}
) 1
-
lvscan
- 전체 디스크의 논리 볼륨(LV)을 스캔한다.
-
lvdisplay
- 논리 볼륨(LV)을 출력한다.
-
vgextend my_volume_group /dev/hdc1
-
/dev/hdc1
파티션을my_volume_group
볼륨 그룹에 추가한다.
Remove example
lvm 을 해체하고자 하면 만든 순서의 반대로 진행하면 된다.
Files
-
/etc/lvm/lvm.conf
- LVM관련 설정파일. 필터 등의 설정을 추가할 수 있다.
See also
Favorite site
- Wikipedia (en) LVM에 대한 설명
- [추천] KLDP: Logical Volume Manager HOWTO
- [추천] 논리볼륨관리자(Logical Volume Manager) 사용하기
- 리눅스 하드디스크 추가 / LVM
- LVM (Logical Volume Manage) 만들고 삭제하기
- [추천] LVM(Logical Volumn Manager)개념과 설정 2
Manual
- Red Hat Enterprise Linux 6 LVM (Logical Volume Manager) 관리
- Gentoo linux: LVM
- 리눅스(linux) LVM 디스크 관리 및 추가