Friday, April 13, 2018

CentOS 6.6 리눅스 관리] 5.1 LVM (Linux Volume Manager) - PV (Physical Volume)


안녕하세요. 썬구루입니다. 이번 게시물에서는 리눅스 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