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 |