LVM (Logical Voulme Manager) 이란?
LVM이란 물리적인 디스크를 논리적 볼륨 그룹으로 구성하는 것이다. 이러한 방식을 이용하면 논리적인 볼륨 그룹 내에 사용자가 원하는 크기 만큼의 논리본륨을 할당하여 사용할 수 있으며, 여러 개의 디스크를 하나의 논리적인 볼륨 그룹(VG)으로 구성할 수 있다. 각 논리 볼륨(LV)은 독립적이므로, 하나의 디스크에도 여러 가지의 파일 시스템을 설치할 수 있다. (하나의 VG은 여러 개의 LV을 갖기 때문에 가능하다.)
EBS 볼륨에서 생성된 파티션에 LVM 논리 볼륨 생성하기
- EBS 볼륨에서 물리 볼륨(PV)을 생성합니다.
- 볼륨 그룹(VG)을 생성한 다음, 볼륨 그룹에 물리 볼륨을 추가합니다.
- 논리 볼륨(LV)을 생성한 다음, LVM에 디렉터리를 탑재합니다.
- 파일 시스템을 생성하고 탑재합니다.
- 논리 볼륨의 크기를 조정합니다.
1. AWS EBS 볼륨생성 후 인스턴스에 연결 그리고 파티션 생성하기
- gdisk 명령어로 파티션 생성하기
$ sudo gdisk /dev/xvdh
Command (? for help): n
Partition number (1-1218, default 1): 1
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
...
OK; writing new GUID partition table (GPT) to /dev/xvdh.
The operation has completed successfully.
- lsblk 명령어를 사용하여 파티션 생성 확인
[ec2-user@ ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
`-xvda1 202:1 0 20G 0 part /
xvdf 202:80 0 100G 0 disk
`-xvdf1 202:81 0 100G 0 part
2. pvcreate 명령을 사용하여 파티션에서 물리 볼륨 (Physical Volume) 생성
[ec2-user@ ~]$ sudo pvcreate /dev/xvdf1
Physical volume "/dev/xvdf1" successfully created.
3. vgcreate 명령을 사용하여 생성한 물리볼륨에 결합할 볼륨 그룹(Volume Group) 생성
[ec2-user@ ~]$ sudo vgcreate ljkVG1 /dev/xvdf1
Volume group "ljkVG1" successfully created
- sudo vgs 를 사용하여 볼륨 그룹 세부 정보 확인
[ec2-user@~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
ljkVG1 1 0 0 wz--n- <100.00g <100.00g
4. lvcreate 명령을 사용하여 볼륨 그룹에서 논리 그룹 (Logical Volume) 생성
- 앞에 만들어놓은 ljkVG1(볼륨 그룹)에 10GB에 이름은 ljkLV1(논리 그룹) 생성
[ec2-user@ ~]$ sudo lvcreate -n ljkLV1 -L 10G ljkVG1
Logical volume "ljkLV1" created.
[ec2-user@ ~]$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ljkLV1 ljkVG1 -wi-a----- 10.00g
- mkdir 명령을 사용하여 탑재 디렉터리를 생성한다.
$ sudo mkdir /mnt1
5. 파일 시스템 생성 및 탑재
- mkfs -t 명령을 실행하여 생성한 LV에 파일 시스템 탑재
$sudo mkfs -t xfs /dev/ljkVG1/ljkLV1
- mount 명령을 실행하여 생성해놓은 디렉터리에 파일 시스템을 탑재한다.
$ sudo mount /dev/ljkVG1/ljkLV1 /mnt1
최종
NAME FSTYPE LABEL UUID MOUNTPOINT
xvda
`-xvda1 xfs / /
xvdf xfs
`-xvdf1 LVM2_member
`-ljkVG1-ljkLV1 xfs /mnt1
기존 EBS 볼륨의 크기 증가
- growpart 명령을 실행하여 파티션을 확장한 다음 pvresize명령을 통해 PV의 크기를 조정한다. 나는 위에 만들어놓은 PV인 /dev/xvdf1을 확장해보겠다.
- growpart 유틸리티 설치
$ sudo yum install cloud-utils-growpart
- pvs (또는 pvdisplay)와 vgs(또는 vgdisplay)를 사용하여 물리 볼륨 세부 정보 및 볼륨 그룹 세부 정보 확인
[ec2-user@ ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdf1 ljkVG1 lvm2 a-- <100.00g <90.00g
[ec2-user@ ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
ljkVG1 1 1 0 wz--n- <100.00g <90.00g
[ec2-user@ ~]$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ljkLV1 ljkVG1 -wi-ao---- 10.00g
- lvextend 명령을 실행하여 논리 볼륨 확장
$sudo lvextend -L 20G /dev/ljkVG1/ljkLV1
Size of logical volume ljkVG1/ljkLV1 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume ljkVG1/ljkLV1 successfully resized.
- 파일 시스템을 확장
$ sudo yum install x rogs
$ sudo xfs_growfs /dev/ljkVG1/ljkLV1
볼륨 그룹 (VG)에 EBS 볼륨 추가
- 10GB의 EBS볼륨을 생성 후 인스턴스에 연결한다. 이후 파티션을 생성한다. (생략 가능)
- pvcreate 명령을 실행하여 PV볼륨을 추가로 생성
[ec2-user@~]$ sudo pvcreate /dev/xvdg
Physical volume "/dev/xvdg" successfully created.
- vgextend 명령을 실행하여 볼륨 그룹을 확장하고 새 볼륨을 추가한다.
[ec2-user@ ~]$ sudo vgextend ljkVG1 /dev/xvdg
Volume group "ljkVG1" successfully extended
- lvextend 명령을 실행하여 논리 볼륨을 확장한다.
[ec2-user@ ~]$ sudo lvextend -L 109G /dev/ljkVG1/ljkLV1
Size of logical volume ljkVG1/ljkLV1 changed from 20.00 GiB (5120 extents) to 109.00 GiB (27904 extents).
Logical volume ljkVG1/ljkLV1 successfully resized.
- 파일 시스템의 크기를 조정한다.
[ec2-user@ ~]$ sudo xfs_growfs /dev/ljkVG1/ljkLV1
댓글