안녕하세요. 썬구루입니다. 이번 게시물에서는 리눅스 LVM에 대해 알아보도록 하겠습니다. 하드디스크의 파티션 사용에 대한 단점은 용량에 대한 유연성이 없다는 것입니다.
과거에는 파티션에 만들어진 파일시스템에 데이터가 가득 차면 더 큰 용량의 파티션을 만들어 데이터를 마이그레이션 했었습니다. 이러한 문제를 극복하고자 볼륨 매니저라는 디스크 또는 스토리지 관리 툴을 사용한 것이죠.
볼륨 매니저를 사용하여 디스크들을 묶어서 디스크 그룹을 만들고 그 그룹의 일정 용량을 분할하여 데이터를 저장할 수 있는 공간 즉 볼륨을 만듭니다. 그리고 볼륨에 파일시스템을 만들어 사용하는 것이죠.
볼륨을 사용하다가 용량이 부족하면 디스크 그룹의 일정 용량을 때어 볼륨에 추가할 수 있습니다. 그것도 온라인되어 있는 볼륨에다 말이죠. 그리고 파일시스템 확장도 온라인 시에 가능합니다. 여기서 온라인이라는 것은 사용되고 있다는 것을 의미합니다.
'그 옛날 상용 볼륨 매니저로 이름을 떨쳤던 제품이 있었으니 그 이름이 Veritas Volume Manager(이하 VxVM) 라 하였느니라~!'
리눅스에서도 볼륨 매니저 기능을 제공합니다. 이름은 LVM(Linux Volume Manager)입니다. 만약 VxVM을 알고 있는 분이라면 리눅스 LVM을 사용하는 것은 어렵지 않을 것입니다. 왜냐면 개념이 비슷하니까요. ㅎ~
CentOS 6.6에 사용되는 LVM 버전은 다음과 같습니다. 다른 리눅스(요즘 사용되는)도 비슷한 버전을 사용하고 있습니다. 보통 LVM2 버전이라고 하죠.
[root@sunguru ~]# lvm version
LVM version: 2.02.111(2)-RHEL6 (2014-09-01) Library version: 1.02.89-RHEL6 (2014-09-01) Driver version: 4.27.0 [root@sunguru ~]# [root@sunguru ~]# lvm help Available lvm commands: Use 'lvm help <command>' for more information devtypes Display recognised built-in block device types dumpconfig Dump configuration formats List available metadata formats help Display help for commands lvchange Change the attributes of logical volume(s) lvconvert Change logical volume layout lvcreate Create a logical volume lvdisplay Display information about a logical volume lvextend Add space to a logical volume lvmchange With the device mapper, this is obsolete and does nothing. lvmdiskscan List devices that may be used as physical volumes lvmsadc Collect activity data lvmsar Create activity report lvreduce Reduce the size of a logical volume lvremove Remove logical volume(s) from the system lvrename Rename a logical volume lvresize Resize a logical volume lvs Display information about logical volumes lvscan List all logical volumes in all volume groups pvchange Change attributes of physical volume(s) pvresize Resize physical volume(s) pvck Check the consistency of physical volume(s) pvcreate Initialize physical volume(s) for use by LVM pvdata Display the on-disk metadata for physical volume(s) pvdisplay Display various attributes of physical volume(s) pvmove Move extents from one physical volume to another pvremove Remove LVM label(s) from physical volume(s) pvs Display information about physical volumes pvscan List all physical volumes segtypes List available segment types tags List tags defined on this host vgcfgbackup Backup volume group configuration(s) vgcfgrestore Restore volume group configuration vgchange Change volume group attributes vgck Check the consistency of volume group(s) vgconvert Change volume group metadata format vgcreate Create a volume group vgdisplay Display volume group information vgexport Unregister volume group(s) from the system vgextend Add physical volumes to a volume group vgimport Register exported volume group with system vgmerge Merge volume groups vgmknodes Create the special files for volume group devices in /dev vgreduce Remove physical volume(s) from a volume group vgremove Remove volume group(s) vgrename Rename a volume group vgs Display information about volume groups vgscan Search for all volume groups vgsplit Move physical volumes into a new or existing volume group version Display software and driver version information [root@sunguru ~]# |
일단 이 게시물에서는 LVM 개체에 대해 간단하게 알아보도록 하겠습니다.
■ Linux LVM 개체
1). PV (Physical Volume)
PV (Physical Volume)은 LVM 용도로 초기화(Initialization)된 파티션(Partition), LUN, MD(Multi-disk) 또는 하드 디스크를 뜻합니다. 테스트할 때 저희는 디스크를 가지고 PV를 만들 것입니다. 초기화를 하면 여기에 관련된 라벨(Label)이 영역의 첫 부분에 저장됩니다. 여기에는 LVM를 위한 UUID 등 여러 정보가 저장됩니다.
2). VG (Volume Group)
VG (Volume Group)은 하나 이상의 PV를 가지고 만들어진 그룹을 뜻합니다. VG의 공간 확장을 위해서는 간단하게 디스크를 LVM 용도로 초기화하여 만들어진 PV를 VG에 추가하면 됩니다.
3). LV (Logical Volume)
LV (Logical Volume)는 VG (Volume Group)의 일정 공간을 분할하여 만들어진 공간을 뜻합니다. 실제 데이터 저장 공간으로 사용되는 개체입니다. 그리고 고정된 사이즈 단위로 용량이 할당되는데 이를 Extent라 하며 일반적인 Extent 용량 단위는 4MB입니다.
■ Linux LVM 테스트 환경
RAID 구성 시 사용한 환경을 그대로 사용할 것입니다. 그리고 PV는 하드 디스크를 사용하여 만들 것입니다. VMware Workstation의 스냅샷 기술을 사용하면 간단하게 시점 되돌리기를 할 수 있을 것입니다.
[root@sunguru ~]# lsblk | grep 10G
sde 8:64 0 10G 0 disk sdf 8:80 0 10G 0 disk sdi 8:128 0 10G 0 disk sdd 8:48 0 10G 0 disk sdg 8:96 0 10G 0 disk sdh 8:112 0 10G 0 disk |
만약 fdisk로 파티션 분할이 되어 있다면 아래와 같은 명령을 실행하여 파티션 테이블 정보를 제거합니다. dd 명령 사용법을 모른다면 반드시 테스트 용도로만 사용하시길 바랍니다.
[root@sunguru ~]# fdisk -l /dev/sdd
Disk /dev/sdd: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xf4516896 Device Boot Start End Blocks Id System /dev/sdd1 1 1305 10482381 83 Linux [root@sunguru ~]# [root@sunguru ~]# dd if=/dev/zero of=/dev/sdd bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.0036833 s, 139 kB/s [root@sunguru ~]# [root@sunguru ~]# fdisk -l /dev/sdd Disk /dev/sdd: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@sunguru ~]# |
■ PV(Physical Volume) 생성, 확인, 제거
PV에 관련된 여러 명령들이 있지만 여기서는 pvcreate, pvscan, pvdisplay, pvremove 명령만 언급할 것이다.
1). pvscan
PV를 위한 모든 디스크를 조사하기 위해 사용하는 명령
▶ 명령 형식
pvcreate
2). pvcreate
LVM 용도의 하드디스크, LUN, MD, 파티션으로 만들기 위해 사용하는 명령이다.
▶ 명령 형식
pvcreate DEVICE NAME
[root@sunguru ~]# lsblk | grep 10G
sdd 8:48 0 10G 0 disk sdf 8:80 0 10G 0 disk sdh 8:112 0 10G 0 disk sde 8:64 0 10G 0 disk sdi 8:128 0 10G 0 disk sdg 8:96 0 10G 0 disk [root@sunguru ~]# [root@sunguru ~]# pvscan No matching physical volumes found [root@sunguru ~]# pvcreate /dev/sdd /dev/sde /dev/sdf Physical volume "/dev/sdd" successfully created Physical volume "/dev/sde" successfully created Physical volume "/dev/sdf" successfully created [root@sunguru ~]# [root@sunguru ~]# pvscan PV /dev/sdd lvm2 [10.00 GiB] PV /dev/sde lvm2 [10.00 GiB] PV /dev/sdf lvm2 [10.00 GiB] Total: 3 [30.00 GiB] / in use: 0 [0 ] / in no VG: 3 [30.00 GiB] [root@sunguru ~]# |
3). pvdisplay
존재하는 PV 세부 정보를 확인하기 위해 사용되는 명령이다.
▶ 명령 형식
pvdisplay [PV NAME]
[root@sunguru ~]# pvdisplay
"/dev/sdd" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sdd VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID HfqL6w-NL8p-vkhi-Uhj1-dXHO-OX0q-TtNrqK "/dev/sde" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sde VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 14vi9E-gOSE-AjvE-HDIr-FHD9-yCRP-DX4xR6 "/dev/sdf" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sdf VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID ceNvBb-bmsH-BYGs-ly34-JPnB-0fQ2-HJP9f3 [root@sunguru ~]# pvdisplay /dev/sdd "/dev/sdd" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sdd VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID HfqL6w-NL8p-vkhi-Uhj1-dXHO-OX0q-TtNrqK [root@sunguru ~]# |
3). pvremove
존재하는 PV를 제거하기 위해 사용되는 명령이다.
▶ 명령 형식
pvremove PV NAME
[root@sunguru ~]# pvscan
PV /dev/sdd lvm2 [10.00 GiB] PV /dev/sde lvm2 [10.00 GiB] PV /dev/sdf lvm2 [10.00 GiB] Total: 3 [30.00 GiB] / in use: 0 [0 ] / in no VG: 3 [30.00 GiB] [root@sunguru ~]# [root@sunguru ~]# pvremove /dev/sdf Labels on physical volume "/dev/sdf" successfully wiped [root@sunguru ~]# [root@sunguru ~]# pvscan PV /dev/sdd lvm2 [10.00 GiB] PV /dev/sde lvm2 [10.00 GiB] Total: 2 [20.00 GiB] / in use: 0 [0 ] / in no VG: 2 [20.00 GiB] [root@sunguru ~]# |
여기까지 LVM의 간략한 정보와 PV(Physical Volume) 생성, 확인, 제거에 대해 알아보았습니다. 다음 게시물에서 VG(Volume Group) 생성, 수정, 확인, 제거에 대해 알아보도록 하겠습니다.
No comments:
Post a Comment