이번 포스팅은 예제와 같이 LVM 을 활용해서 논리적 볼륨을 구성하는 방법을 알아본다.
물리적 디스크 찾기
먼저 PV 로 등록할 물리적 디스크를 찾아야한다. lvmdiskscan 을 활용하면 /dev/ 나 fdisk -l 등을 사용하지 않고 쉽게 현재 사용가능한 디스크 목록을 보여준다.
$ sudo lvmdiskscan
/dev/loop0 [ <44.68 MiB]
/dev/loop1 [ 61.89 MiB]
/dev/sda1 [ <1.05 GiB]
/dev/loop2 [ <79.95 MiB]
/dev/sda2 [ 2.00 GiB]
/dev/sda3 [ 229.83 GiB] LVM physical volume
/dev/sdb [ <1.82 TiB]
/dev/sdc [ <1.82 TiB]
/dev/sdd [ <1.82 TiB]
/dev/sde [ <1.82 TiB]
/dev/sdf [ <1.82 TiB]
/dev/sdg [ <1.82 TiB]
/dev/sdh [ <1.82 TiB]
/dev/sdi [ <1.82 TiB]
8 disks
5 partitions
0 LVM physical volume whole disks
1 LVM physical volume
지금 새로 구성한 스토리지 서버가 디스크가 많아서 많이 보이는데 보통 ssd 1개 hdd 1개 정도로 구성되어있다면 /dev/sda, /dev/sdb 정도만 보이게 된다. 위에 보면 이미 PV 가 생성 되어있는 것으로 보이는데 ubuntu 설치 시 기본적으로 lvm 으로 볼륨들을 만들고 OS 를 설치한다. (물론 lvm 사용하지 않고 설치할 수도 있다)
위 결과로 나온 디스크중에 PV에 등록할 디스크를 골라서 진행하시면 된다.
예제에서는 /dev/sdb와 /dev/sdc 를 활용해서 구성을 해본다.
Physical Volume 만들기
pvcreate 를 활용해서 PV 를 등록한 모습이다.
$ sudo pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
pvs 를 이용해서 현재 PV 리스트를 조회할 수도 있다. 방금 추가한 디스크가 잘 등록된 것을 확인할 수 있다. 아래서 확인할 수 있듯이 /dev/sda3 은 ubuntu-vg 에 할당된게 보이고, 방금 등록한 /dev/sdb, /dev/sdc 는 할당되지 않은게 보인다.
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- 229.83g 129.83g
/dev/sdb lvm2 --- <1.82t <1.82t
/dev/sdc lvm2 --- <1.82t <1.82t
Volume Group 만들기
자 그럼 이제 우리도 PV들을 VG에 추가해보자.
vgcreate 를 통해서 PV들을 VG에 할당한다.
$ sudo vgcreate simple-vg /dev/sdb /dev/sdc
Volume group "simple-vg" successfully created
pvs 로 다시 조회해보면 아까 추가했던 PV 에 VG 가 할당된 것을 볼 수 있다.
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- 229.83g 129.83g
/dev/sdb simple-vg lvm2 a-- <1.82t <1.82t
/dev/sdc simple-vg lvm2 a-- <1.82t <1.82t
그다음 vgs 로 VG 도 조회해보자. 그러면 새로 생성된 simple-vg 가 생긴 것을 확인할 수 있다.
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
simple-vg 2 0 0 wz--n- <3.64t <3.64t
ubuntu-vg 1 1 0 wz--n- 229.83g 129.83g
2T 하드를 2개를 붙였더니 4T 가 되지만. 디스크 제조사는 K 단위를 1024 단위로 계산하지 않고 1000 단위로 계산해서 Bytes 로 환산하기 때문에 3.64TB 로 줄어서 보인다. (이게 G 단위일 떄는 이렇게 확티가 안났는데 T 단위로 가니까 표시 용량하고 차이가 많이나서 손해보는 기분이다)
Logical Volume 만들기
자 이제 하이라이트 우리가 사용할 논리적 볼륨을 lvcreate 를 통해서 만들어보자
예시로 메인 작업에 쓸 볼륨 main-lv 100G, 저장용 storage-lv 1T, 임시용 tmp-lv 500M 로 만들어본다.
$ sudo lvcreate -L 100G -n main-lv simple-vg
Logical volume "main-lv" created.
$ sudo lvcreate -L 1T -n storage-lv simple-vg
Logical volume "storage-lv" created.
$ sudo lvcreate -L 500M -n tmp-lv simple-vg
Logical volume "tmp-lv" created.
lvcreate 를 -L 는 사이즈 옵션이고, -n 은 LV 의 이름을 지정해주는 옵션이다. 그리고 마지막 인자는 VG 을 지정해주면 된다.
lvs 를 통해서 확인해보면 simple-vg 에 각 LV 들이 할당된게 보인다.
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
main-lv simple-vg -wi-a----- 100.00g
storage-lv simple-vg -wi-a----- 1.00t
tmp-lv simple-vg -wi-a----- 500.00m
ubuntu-lv ubuntu-vg -wi-ao---- 100.00g
그런데 보통 LV를 생성할떄, 파티션을 나누고 마지막에 남은 볼륨 전체를 하나의 LV에 할당하고 싶어질 때가 있다. 그래서 그럴 때를 위해 lvm 에서 사이즈 지정방식중 % 비율 할당하는 방식도 제공한다. -l(extend 옵션. man lvcreate 를 이용해 다른 옵션도 확인 가능) 옵션에 100%FREE 를 줘서 미 할당된 용량 100% 를 할당 시켜버릴 수 있다.
$ sudo lvcreate -l 100%FREE -n remain-lv simple-vg
Logical volume "remain-lv" created.
lvs 를 통해서 확인하면 남아있던 모든 용량이 할당된 것을 확인할 수 있다.
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
main-lv simple-vg -wi-a----- 100.00g
remain-lv simple-vg -wi-a----- 2.54t
storage-lv simple-vg -wi-a----- 1.00t
tmp-lv simple-vg -wi-a----- 500.00m
ubuntu-lv ubuntu-vg -wi-ao---- 100.00g
vgs 를 통해서 VG 도 확인하면 남아있는 용량이 없다는 것을 확인할 수 있다.
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
simple-vg 2 4 0 wz--n- <3.64t 0
ubuntu-vg 1 1 0 wz--n- 229.83g 129.83g
지금까지 생성에 대해서 알아봤지만 지우는 옵션은 ..remove, 확장은 ..extend 등으로 삭제 또는 리사이징도 가능하다.
자 여기까지 LVM 을 활용해서 논리적 볼륨을 생성해봤다. 이제 기존 볼륨 디바이스를 사용하듯이 포맷을 하고 마운트해서 사용하시면 됩니다. 포맷과 마운트 하는 법을 모른는 분들은 다음 포스트를 통해 배워보자.
'Tech > LVM' 카테고리의 다른 글
| LVM 볼륨 미러링 (0) | 2022.07.02 |
|---|---|
| Linux 디스크 포맷과 마운트 (0) | 2022.07.01 |
| LVM (Logical Volume Manager) 개념 (0) | 2022.06.29 |