linux LVM

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

 

앞장에서 배운 RAID과 데이터의 안정성에 기반을 두고 있다면 LVM은 디스크 관리의 효율성에 기반을 두고 있다고 보면 되겠다.
효과적인 디스크 관리를 원한다면 LVM을 사용해 보도록 하자.

 

먼저 아래의 그림을 보도록 하자.

lvm.jpg


용어 설명.

PV Physical Volume 으로 파티션 또는 디스크를 의미한다.
VG Volume Group으로 PV을 그룹화 한것이다.
LV Logical Volume으로 볼륨그룹(VG)에 가상의 파티션을 이야기한다.

LVM 생성

PV 생성하기

PV는 파티션이나 디스크 자체가 될 수 있다. 파티션을 PV로 만들기 위해서는 파티션 타입을 8e(Linux 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 라는 명령을 이용하면 되겠다.

[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생성.

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는 차후에 자유롭게 용량을 늘렸다가 줄였다가 할 수 있다.
자세한 사용법은 다음장에서 진행하도록 하겠다.

Pages:

stone has written 25 articles

Leave a Reply