LVM(Logical Volume Manager)
LVM이란 디스크 파티션이나 디스크 자체를 볼륨 그룹으로 만들고 그 위에 Logical 파티션을 생성해서
사용하도록 해주는 프로그램이다.
복잡하게 들릴지 모르겠지만 아래와 같은 상황이 발생했을 경우를 생각해 보도록 하자.
여러분의 리눅스 시스템이 /home 파티션을 10G로 할당을 했다. 그런데 유저들이 늘어나고 디스크 사용량이 많아져서 10G 로는 부족한 상황이 되었다.
이런 경우 여러분은 좀더 여유가 있는 디스크를 추가로 증설을 할 것을 고려할 것이다.
물론 디스크 추가를 위해서 시스템을 셧다운 시켜야 될 것이다.
LVM으로 시스템을 구축하면 이러한 경우 시스템을 셧다운 하지 않고서도 여러분은 /home 파티션을 쉽게 늘려줄 수가 있다.
LVM은 디스크나 파티션을 하나의 가상 디스크로 만들어서 디스크를 관리하는 시스템이다 라고 이해를 하면 된다.
LVM이란 디스크 파티션이나 디스크 자체를 볼륨 그룹으로 만들고 그 위에 Logical 파티션을 생성해서
사용하도록 해주는 프로그램이다.
복잡하게 들릴지 모르겠지만 아래와 같은 상황이 발생했을 경우를 생각해 보도록 하자.
여러분의 리눅스 시스템이 /home 파티션을 10G로 할당을 했다. 그런데 유저들이 늘어나고 디스크 사용량이 많아져서 10G 로는 부족한 상황이 되었다.
이런 경우 여러분은 좀더 여유가 있는 디스크를 추가로 증설을 할 것을 고려할 것이다.
물론 디스크 추가를 위해서 시스템을 셧다운 시켜야 될 것이다.
LVM으로 시스템을 구축하면 이러한 경우 시스템을 셧다운 하지 않고서도 여러분은 /home 파티션을 쉽게 늘려줄 수가 있다.
LVM은 디스크나 파티션을 하나의 가상 디스크로 만들어서 디스크를 관리하는 시스템이다 라고 이해를 하면 된다.
앞장에서 배운 RAID과 데이터의 안정성에 기반을 두고 있다면 LVM은 디스크 관리의 효율성에 기반을 두고 있다고 보면 되겠다.
효과적인 디스크 관리를 원한다면 LVM을 사용해 보도록 하자.
효과적인 디스크 관리를 원한다면 LVM을 사용해 보도록 하자.
먼저 아래의 그림을 보도록 하자.

용어 설명.
PV | Physical Volume 으로 파티션 또는 디스크를 의미한다. |
VG | Volume Group으로 PV을 그룹화 한것이다. |
LV | Logical Volume으로 볼륨그룹(VG)에 가상의 파티션을 이야기한다. |
PV 생성하기
PV는 파티션이나 디스크 자체가 될 수 있다. 파티션을 PV로 만들기 위해서는 파티션 타입을 8e(Linux LVM)으로 설정해 주면 되겠다.
아래의 예를 보도록 하자.
/dev/sdb 에 각각 2G,1G 의 LVM 파티션을 설정하는 과정이다.
아래의 예를 보도록 하자.
/dev/sdb 에 각각 2G,1G 의 LVM 파티션을 설정하는 과정이다.
[root@linuxstudy ~]# fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-783, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-783, default 783): +2000M Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 244 1959898+ 8e Linux LVM Command (m for help): n Command action e extended p primary partition (1-4) 2 Invalid partition number for type `2' Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (245-783, default 245): Using default value 245 Last cylinder or +size or +sizeM or +sizeK (245-783, default 783): +1000M Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 8e Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 6442 MB, 6442450944 bytes 255 heads, 63 sectors/track, 783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 244 1959898+ 8e Linux LVM /dev/sdb2 245 367 987997+ 8e Linux LVM
준비가 되었다면 이제 PV 을 생성해 보도록 하자.
pvcreate 라는 명령을 이용하면 되겠다.
pvcreate 라는 명령을 이용하면 되겠다.
[root@linuxstudy ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created [root@linuxstudy ~]# pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created [root@linuxstudy ~]#
참고로 fdisk 과정을 거치지 않고 디스크를 통째로 사용도 가능하다..^^;
디스크를 통째로 PV로 만들기.
[root@linuxstudy ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created [root@linuxstudy ~]#
생성된 PV를 보고 싶다면 pvdisplay 명령을 수행하면 된다.
[root@linuxstudy ~]# pvdisplay "/dev/sdb1" is a new physical volume of "1.87 GB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.87 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID LIzfUV-g1dF-17ze-8xxC-DI8H-I96k-eR86wA "/dev/sdb2" is a new physical volume of "964.84 MB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 964.84 MB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID XbYFbH-3bzf-a0EL-Jt0c-B0Sn-32Sy-dh3eSS "/dev/sdc" is a new physical volume of "8.00 GB" --- NEW Physical volume --- PV Name /dev/sdc VG Name PV Size 8.00 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID L7wDn7-Pi5t-RnM3-LX5R-cCJ1-j8H9-xDEjOV [root@linuxstudy ~]#
VG 생성
vgcreate.
vgcreate 볼륨그룹이름 PV PV PV ...
이제 앞에서 만든 PV들을 묶어서 하나의 볼륨그룹(VG)로 생성해 보도록 하겠다.
/dev/sdb1 파티션과 /dev/sdb2 파티션을 VG0 이라는 이름으로 생성하는 예제이다.
[root@linuxstudy ~]# vgcreate VG0 /dev/sdb1 /dev/sdb2 Volume group "VG0" successfully created [root@linuxstudy ~]#
생성된 VG를 확인해 보도록 하자.
[root@linuxstudy ~]# vgdisplay --- Volume group --- VG Name VG0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 2.81 GB PE Size 4.00 MB Total PE 719 Alloc PE / Size 0 / 0 Free PE / Size 719 / 2.81 GB VG UUID Xyye0d-VZGJ-gFfX-KLhU-LSe4-KK6r-2HkGP1 [root@linuxstudy ~]#
LV 생성
이제 볼륨그룹(VG)에 LV를 생성해 보도록 하자.
LV생성.
LV생성.
lvcreate -L 용량 -n LV이름 VG이름
만들어진 볼륨그룹에 가상의 파티션을 생성하는 과정이라고 이해하면 되겠다.
[root@linuxstudy ~]# lvcreate -L 1.5G -n lvm_home VG0 Logical volume "lvm_home" created [root@linuxstudy ~]#
VG0 볼륨그룹에 lvm_home 이라는 LV를 생성했다.
이제 일반적인 파티션처럼 mkfs 명령으로 포맷을 하고 사용하면 된다.
생성된 장치는 보통 /dev/VG명/LV명 형태로 생성이 된다.
LV 포맷 및 마운트
[root@linuxstudy ~]# mkfs /dev/VG0/lvm_home mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux [root@linuxstudy ~]# mount /dev/VG0/lvm_home /home
제대로 mount가 되었다면 아래와 같이 나올것이다.
/dev/mapper/VG0-lvm_home on /home type ext2 (rw)
이렇게 생성된 LV는 차후에 자유롭게 용량을 늘렸다가 줄였다가 할 수 있다.
자세한 사용법은 다음장에서 진행하도록 하겠다.
자세한 사용법은 다음장에서 진행하도록 하겠다.