본문 바로가기

Tech/LVM

LVM을 활용해 논리적 볼륨을 구성해보자

이번 포스팅은 예제와 같이 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