안녕하세요. 썬구루입니다. 이번 이 게시물에서는 리눅스 LVM의 LV (Logical Volume) 생성, 수정, 확인, 삭제에 대해 알아보도록 하겠습니다.
LV (Logical Volume)는 앞 게시물에서 VG (Volume Group)의 일정 공간을 분할하여 만들어진 공간을 뜻합니다. LV는 실제 파일시스템이 만들어지며 데이터가 저장되는 공간입니다.
데이터 저장을 위해 사용되고 있는 즉 온라인 된 LV 개체에 대해 용량 증설 및 파일시스템 리사이징이 가능합니다. 온라인 중에요. 이것이 볼륨의 가장 큰 장점이죠. Flexible Capacity ^^
관리자는 LV에 대한 이름을 정의할 수 있습니다. 목적에 맞는 의미 있는 이름을 부여하는 것이 좋습니다.
■ LV (Logical Volume) 생성, 확인, 제거
LV에 관련된 여러 명령들이 있지만 여기서는 lvscan, lvdisplay, lvcreate, lvextend, lvremove 명령만 언급할 것이다.
1). lvscan
존재하는 LV를 확인하기 위해 사용되는 명령이다.
▶ 명령 형식
lvscan
아직 생성한 LV (Logical Volume)가 없기 때문에 어떠한 LV도 찾을 수 없다고 출력된다.
[root@sunguru ~]# lvscan
No volume groups found [root@sunguru ~]# |
2). lvdisplay
존재하는 LV의 세부 정보를 확인하기 위해 사용되는 명령이다.
▶ 명령 형식
lvdisplay [LV_NAME]
아직 생성한 LV (Logical Volume)가 없기 때문에 어떠한 볼륨도 찾을 수 없다고 출력된다.
[root@sunguru ~]# lvdisplay
No volume groups found [root@sunguru ~]# |
3). lvcreate
존재하는 VG로부터 용량을 분할하여 볼륨을 생성하기 확인하기 위해 사용되는 명령이다.
▶ 명령 형식
lvcreate [옵션] VG_NAME
▶ 옵션
옵 션
|
내 용
|
-L LV_SIZE
|
볼륨 용량을 설정하기 위해 사용한다. 숫자 뒤 kmgtpe 가능 |
-n LV_NAME
|
볼륨 이름을 설정하기 위해 사용한다. |
아래는 vg_db VG의 용량을 사용하여 oradata01과 oradata02 이름을 가지는 LV를 만드는 것을 보여준다. 그리고 파일시스템을 생성한 후 /etc/fstab 파일에 내용을 추가한 후에 리부팅 후에도 자동으로 파일시스템이 마운트 되는지를 보여준다.
[root@sunguru ~]# pvscan
PV /dev/sdd lvm2 [10.00 GiB] PV /dev/sde lvm2 [10.00 GiB] PV /dev/sdf lvm2 [10.00 GiB] PV /dev/sdh lvm2 [10.00 GiB] Total: 4 [40.00 GiB] / in use: 0 [0 ] / in no VG: 4 [40.00 GiB] [root@sunguru ~]# [root@sunguru ~]# vgcreate vg_db /dev/sdd /dev/sde Volume group "vg_db" successfully created [root@sunguru ~]# [root@sunguru ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "vg_db" using metadata type lvm2 [root@sunguru ~]# [root@sunguru ~]# vgdisplay -v vg_db | grep -E "PV Name|VG Size" DEGRADED MODE. Incomplete RAID LVs will be processed. Using volume group(s) on command line Finding volume group "vg_db" VG Size 19.99 GiB PV Name /dev/sdd PV Name /dev/sde [root@sunguru ~]# [root@sunguru ~]# lvcreate -L 9g -n oradata01 vg_db Logical volume "oradata01" created [root@sunguru ~]# lvcreate -L 9g -n oradata02 vg_db Logical volume "oradata02" created [root@sunguru ~]# [root@sunguru ~]# lvscan ACTIVE '/dev/vg_db/oradata01' [9.00 GiB] inherit ACTIVE '/dev/vg_db/oradata02' [9.00 GiB] inherit [root@sunguru ~]# [root@sunguru ~]# lvdisplay vg_db/oradata01 --- Logical volume --- LV Path /dev/vg_db/oradata01 LV Name oradata01 VG Name vg_db LV UUID 0mAnvr-k460-4UYt-OQvE-uof6-ujec-d3sLI2 LV Write Access read/write LV Creation host, time centos01, 2016-07-07 17:28:39 +0900 LV Status available # open 0 LV Size 9.00 GiB Current LE 2304 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 [root@sunguru ~]# vgdisplay vg_db --- Volume group --- VG Name vg_db System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 19.99 GiB PE Size 4.00 MiB Total PE 5118 Alloc PE / Size 4608 / 18.00 GiB Free PE / Size 510 / 1.99 GiB VG UUID H3OzRC-ne5W-HGqN-2Be3-lUUi-Oz0M-1fxEP3 [root@sunguru ~]# [root@sunguru ~]# mkfs -t ext4 /dev/vg_db/oradata01 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 589824 inodes, 2359296 blocks 117964 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2415919104 72 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 31 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@sunguru ~]# [root@sunguru ~]# mkdir /oradata01 [root@sunguru ~]# [root@sunguru ~]# mount /dev/vg_db/oradata01 /oradata01 [root@sunguru ~]# [root@sunguru ~]# df -h /oradata01 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_db-oradata01 8.8G 21M 8.3G 1% /oradata01 [root@sunguru ~]# [root@sunguru ~]# vi /etc/fstab /dev/vg_db/oradata01 /oradata01 ext4 defaults 1 2 <== 추가 [root@sunguru ~]# [root@sunguru ~]# shutdown - r now [root@sunguru ~]# [root@sunguru ~]# df -h /oradata01 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_db-oradata01 8.8G 21M 8.3G 1% /oradata01 [root@sunguru ~]# |
4). lvextend
존재하는 LV에 용량을 추가하기 위해 사용되는 명령이다.
▶ 명령 형식
lvextend [옵션]
▶ 옵션
옵 션
|
내 용
|
-L +LV_SIZE
|
존재하는 볼륨에 용량을 추가하기 위해 사용한다. +숫자 뒤 kmgtpe 가능 |
-n LV_NAME
|
존재하는 볼륨 이름을 지정하기 위해 사용한다. |
아래는 vg_db VG에 10GB 용량의 PV를 하나 추가한 후 oradata01과 oradata02 LV의 용량을 추가하는 것을 보여준다. 리부팅 후에도 파일시스템이 잘 마운트 되는지 확인한다.
[root@sunguru ~]# mkdir /oradata02
[root@sunguru ~]# [root@sunguru ~]# mkfs -t ext4 /dev/vg_db/oradata02 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 589824 inodes, 2359296 blocks 117964 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2415919104 72 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@sunguru ~]# [root@sunguru ~]# blkid | grep ora /dev/mapper/vg_db-oradata01: UUID="0f5e66cd-cce0-49e8-ae89-beb89878c8b9" TYPE="ext4" /dev/mapper/vg_db-oradata02: UUID="91935f1a-e4ec-4740-969a-45baf4a864c6" TYPE="ext4" [root@sunguru ~]# [root@sunguru ~]# mount /dev/vg_db/oradata02 /oradata02 [root@sunguru ~]# [root@sunguru ~]# vi /etc/fstab /dev/vg_db/oradata01 /oradata01 ext4 defaults 1 2 /dev/vg_db/oradata02 /oradata02 ext4 defaults 1 2 <== 추가 [root@sunguru ~]# vgdisplay -v vg_db | grep -E "PV Name|VG Size" DEGRADED MODE. Incomplete RAID LVs will be processed. Using volume group(s) on command line Finding volume group "vg_db" VG Size 19.99 GiB PV Name /dev/sdd PV Name /dev/sde [root@sunguru ~]# [root@sunguru ~]# lvdisplay vg_db/oradata01 | grep "LV Size" LV Size 9.00 GiB [root@sunguru ~]# lvdisplay vg_db/oradata02 | grep "LV Size" LV Size 9.00 GiB [root@sunguru ~]# [root@sunguru ~]# df -h | grep oradata /dev/mapper/vg_db-oradata01 8.8G 21M 8.3G 1% /oradata01 /dev/mapper/vg_db-oradata02 8.8G 21M 8.3G 1% /oradata02 [root@sunguru ~]# [root@sunguru ~]# vgextend vg_db /dev/sdf Volume group "vg_db" successfully extended [root@sunguru ~]# [root@sunguru ~]# vgdisplay -v vg_db | grep -E "PV Name|VG Size" DEGRADED MODE. Incomplete RAID LVs will be processed. Using volume group(s) on command line Finding volume group "vg_db" VG Size 29.99 GiB PV Name /dev/sdd PV Name /dev/sde PV Name /dev/sdf [root@sunguru ~]# [root@sunguru ~]# lvextend -L +3g -n /dev/vg_db/oradata01 Size of logical volume vg_db/oradata01 changed from 9.00 GiB (2304 extents) to 12.00 GiB (3072 extents). Logical volume oradata01 successfully resized [root@sunguru ~]# [root@sunguru ~]# lvextend -L +3g -n /dev/vg_db/oradata02 Size of logical volume vg_db/oradata02 changed from 9.00 GiB (2304 extents) to 12.00 GiB (3072 extents). Logical volume oradata02 successfully resized [root@sunguru ~]# [root@sunguru ~]# lvdisplay vg_db/oradata01 | grep "LV Size" LV Size 12.00 GiB [root@sunguru ~]# lvdisplay vg_db/oradata02 | grep "LV Size" LV Size 12.00 GiB [root@sunguru ~]# [root@sunguru ~]# df -h | grep oradata /dev/mapper/vg_db-oradata01 8.8G 21M 8.3G 1% /oradata01 /dev/mapper/vg_db-oradata02 8.8G 21M 8.3G 1% /oradata02 [root@sunguru ~]# [root@sunguru ~]# resize2fs /dev/mapper/vg_db-oradata01 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/vg_db-oradata01 is mounted on /oradata01; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/mapper/vg_db-oradata01 to 3145728 (4k) blocks. The filesystem on /dev/mapper/vg_db-oradata01 is now 3145728 blocks long. [root@sunguru ~]# [root@sunguru ~]# resize2fs /dev/mapper/vg_db-oradata02 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/vg_db-oradata02 is mounted on /oradata02; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/mapper/vg_db-oradata02 to 3145728 (4k) blocks. The filesystem on /dev/mapper/vg_db-oradata02 is now 3145728 blocks long. [root@sunguru ~]# [root@sunguru ~]# df -h | grep oradata /dev/mapper/vg_db-oradata01 12G 23M 12G 1% /oradata01 /dev/mapper/vg_db-oradata02 12G 23M 12G 1% /oradata02 [root@sunguru ~]# [root@sunguru ~]# shutdown -r now [root@sunguru ~]# [root@sunguru ~]# df -h | grep oradata /dev/mapper/vg_db-oradata01 12G 23M 12G 1% /oradata01 /dev/mapper/vg_db-oradata02 12G 23M 12G 1% /oradata02 [root@sunguru ~]# |
5). lvremove
존재하는 LV에 제거하기 위해 사용되는 명령이다. 제거하기 전 마운트 된 파일시스템을 언마운트하고 관련된 내용은 /etc/fstab 파일에 지우도록 한다.
▶ 명령 형식
lvremove LV_NAME
[root@sunguru ~]# lvscan
ACTIVE '/dev/vg_db/oradata01' [12.00 GiB] inherit ACTIVE '/dev/vg_db/oradata02' [12.00 GiB] inherit [root@sunguru ~]# [root@sunguru ~]# vgdisplay vg_db --- Volume group --- VG Name vg_db System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 10 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 3 Act PV 3 VG Size 29.99 GiB PE Size 4.00 MiB Total PE 7677 Alloc PE / Size 6144 / 24.00 GiB Free PE / Size 1533 / 5.99 GiB VG UUID H3OzRC-ne5W-HGqN-2Be3-lUUi-Oz0M-1fxEP3 [root@sunguru ~]# [root@sunguru ~]# df -h | grep oradata /dev/mapper/vg_db-oradata01 12G 23M 12G 1% /oradata01 /dev/mapper/vg_db-oradata02 12G 23M 12G 1% /oradata02 [root@sunguru ~]# [root@sunguru ~]# umount /oradata02 [root@sunguru ~]# [root@sunguru ~]# lvremove vg_db/oradata02 Do you really want to remove active logical volume oradata02? [y/n]: y Logical volume "oradata02" successfully removed [root@sunguru ~]# [root@sunguru ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "vg_db" using metadata type lvm2 [root@sunguru ~]# [root@sunguru ~]# vgdisplay vg_db --- Volume group --- VG Name vg_db System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 11 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size 29.99 GiB PE Size 4.00 MiB Total PE 7677 Alloc PE / Size 3072 / 12.00 GiB Free PE / Size 4605 / 17.99 GiB VG UUID H3OzRC-ne5W-HGqN-2Be3-lUUi-Oz0M-1fxEP3 [root@sunguru ~]# [root@sunguru ~]# vi /etc/fstab /dev/vg_db/oradata01 /oradata01 ext4 defaults 1 2 /dev/vg_db/oradata02 /oradata02 ext4 defaults 1 2 <== 제거 [root@sunguru ~]# shutdown -r now [root@sunguru ~]# [root@sunguru ~]# df -h | grep oradata /dev/mapper/vg_db-oradata01 12G 23M 12G 1% /oradata01 [root@sunguru ~]# [root@sunguru ~]# lvscan ACTIVE '/dev/vg_db/oradata01' [12.00 GiB] inherit [root@sunguru ~]# |
여기까지 간단하게 Linux LVM에 대해 알아보았습니다. 한대의 시스템에 대해 적용될 수 있지만 여러 시스템이 같은 볼륨을 바라보도록 만들 수도 있습니다. 보통 클러스터 환경에서 많이 사용하는데 그것은 리눅스 클러스터 다룰 때 알아보도록 하겠습니다. 다음 게시물에서 소프트웨어 패키지를 관리하기 위해 rpm 명령에 대해 알아보도록 하겠습니다.
No comments:
Post a Comment