linux LVM

반응형

LVM

(Logical Volme Manager)


- 소프트웨어적인 구성 제공

- 레이드보다 유연한 기능

- Linear, Stripe, mirror


LVM 용어정리!


PV

(physical volume)

- VG를 이루는 장치의 기본 단위

- LVM에서 사용하기 위해 하드디스크들을 PV로 초기화


VG

(volume group)

- 1개 이상의 PV가 모여 구성된 볼륨그룹

- 가상의 장치


LV

(logical volume)

- VG내에서 사용하기 위해 할당된 볼륨

- 파티션과 같은 개념


LVM에 대한 간단한 용어정리가 되었으니 생성하는 법을 절차적으로 해보겠습니다.


RAID를 포스팅하신 분들은 리눅스에 하드디스크가 4개 정도 있을텐데 만약 안보신 분들은 리눅스 poweroff 후 설정변경에서 하드디크스를 3개 정도만 추가해 주시면 됩니다!

- dev/sdb

- dev/sdc

- dev/sdd


① PV 생성


pvcreate <dev path>

ex) pvcreate /dev/sdb

PV 확인 : pvs



sdc,sdd 도 같은 방식으로 PV 생성해주시면 되는데 하나하나 하기 번거롭죠. grep 정규표현식 기억나시나요? 다음과 같이 정규표현식을 사용하면 한꺼번에 생성해줄 수 있습니다.

pvcreate /dev/sd[bcd]



② VG 생성


vgcreate <vg name> <pvs path> ...

ex) vgcreate web /dev/sdb /dev/sdc /dev/sdd

VG 확인 : vgs



vgs 명령으로 VG생성한 것을 확인할 수 있는데 PV 3 이라고 3개의 PV로 형성된 것을 볼 수 있습니다. 이름과 용량도 보이네요~



③ LV 생성


LV 생성은 옵션이 좀 많습니다. lvcreate --help 로 옵션을 보실 수 있는데 제가 자주 쓰는 옵션을 추려드릴게요!


lvcreate {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |

-L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}


[-n|--name LogicalVolumeName]


 [-i|--stripes Stripes [-I|--stripesize StripeSize]]


 [-m|--mirrors Mirrors [--nosync]


설명해드리자면 -l과 -L 옵션은 lv 사이즈, -n 옵션은 lv 생성할 이름이겠네요.

-l : vg,pvs,free 등 장치 사이즈

-L : 1G, 1M 등

-i : stripe 옵션

-m : mirror 옵션


두개의 옵션을 붙여 사용할 수도 있습니다.


ex) lvcreate -l 100%VG -n linux web

해석) VG의 용량 100%를 다 사용하고 이름은 linux로 VG는 web을 사용하겠다.

LV 확인 : lvs



지금까지의 작업을 정리해드리자면!

3개의 하드디스크를 이용해 LVM사용을 위해 3개의 장치를 각각 PV로 초기화 시켰고 3개의 PV로 1개의 web VG를 생성, 최종적으로 VG의 모든 용량을 사용할 linux라는 이름의 LV를 생성~


그러면, 최종적으로 생성된 LVM장치를 한번 확인해 볼까요?


ls -l /dev/mapper/<VG name>-<LV name>

ls -l /dev/<VG name>/<LV name>

ex) ls -l /dev/web/linux



위와 같이 LVM이 생성된 것을 확인할 수 있네요~ 이제 파일시스템 생성 후 마운트해서 사용하시면 됩니다. 

ex)

mkfs.ext4 /dev/web/linux

mount /dev/web/linux /mnt



장치 제거

LV제거 -> VG제거 -> PV제거 순으로 제거해주시면 됩니다.

마운트가 되어있다면 마운트 먼저 해제 해주셔야겠죠?


① 마운트 제거


② lvremove <lv path>

ex) lvremove /dev/web/linux


③ vgremove <vg name>

ex) vgremove web


④ pvremove <pv name>

ex) pvremove /dev/sd[bcde]



LVM의 몇가지 기능


사용중인 PV 교체

- 낡은 디스크를 새 디스크로 교체할 때

- 더 큰 용량의 디스크로 교체할 때

* 사용중인 장치만 작업이 가능!


① 새로운 하드디스크 추가

/dev/sde


② pv에 추가


③ 새 pv를 vg에 추가

vgextend <vg name> <pv path>

ex) vgextend web /dev/sde


④ 낡은 pv의 데이터를 새 pv로 이전

 pvmove <src pv> <dst pv>

ex) pvmove /dev/sdb /dev/sde


⑤ 낡은 PV를 VG에서 제거

vgreduce <vg name> <pv path>

ex) vgreduce web /dev/sdb



작업을 완료하면 최종적으로 sdb는 vg에서 제거가 됬기 때문에 사용할 수 있는 Free용량이 다시 돌아왔고 sde가 sdb자리로 들어갔기 때문에 (용량을 사용함) Free 사이즈가 0으로 변한걸 볼 수 있습니다.



LV의 크기를 변경


- PV를 추가하여 LV에 용량을 증설

* 사용중인 장치만 작업 가능!

방금 pv를 바꾸는 작업에서 뺀 sdb를 추가해서 lv 용량을 늘려볼게요!


① VG에 PV를 추가

vgextend <vg name> <pv path>

ex) vgextend web /dev/sdb



PV를 추가 후 vgs로 보면 Vsize는 4G 정도 되고 VFree 사이즈는 1G, 즉 사용할 수 있는 용량이 1G 정도 추가 되었군요. 아직까지는 lv에 추가해주지 않았기 때문에 VG의 총 용량은 4G지만 lv에 3G만 사용하고 있는거죠.


② LV에 용량을 증설

lvextend -l +100%FREE /dev/<vg name>/<lv name>



만약.. 파일시스템을 생성하기 전에 이 과정을 했다면 그대로 파일시스템 생성해서 사용하면 되지만 LV크기를 늘리기 전에 이미 파일시스템을 만들어놨다면 .. LV용량을 늘려도 파일시스템에 반영되지 않습니다. 즉 마운트해서 사용해도 늘어난 1G는 사용하지 못하는거죠. 그래서 LV용량을 늘리면 다음과같이 파일시스템에 반영을 해야합니다.


파일시스템 ext4 사용

resize2fs /dev/<vgname>/<lvname>


파일시스템 xfs 사용

xfs_growxfs /dev/<vgname>/<lvname>



이상으로 LVM 포스트를 마치겠습니다.

반응형

'OS > linux' 카테고리의 다른 글

linux NFS  (0) 2016.10.10
linux ACL  (0) 2016.10.10
linux RAID  (0) 2016.10.05
linux find, grep  (0) 2016.10.03
linux 백업  (0) 2016.10.03
TAGS.

Comments