PV(Physical Volume), VG(Volume Group), LV(Logical Volume)
하나 이상의 PV가 모여 VG를 이루고, VG를 가상으로 나누어 할당하면 LV가 된다.
LVM을 사용하려면 가장 먼저 물리적 저장 장치를(조금 더 정확히는, 파티션(Partition)을) PV(Physical Volume)로 초기화해야 한다. 물리적 저장 장치를 PV로 초기화하면 LVM은 물리적 저장 장치를 PE(Physical Extent)라 불리는, 일정한 크기(4MB)의 작은 저장 공간들로 쪼갠다.
VG(Volume Group)은 한 개 혹은 여러 개의 PV들의 집합을 의미한다. VG를 사용함으로서 개별 물리적 저장 장치는 숨겨지고, PE들의 풀(pool)인 VG만 보이게 되는 것이다. LVM은 필요한 만큼 필요한 구성의 PE들을 적당히 가져가 (아래 후술할) LV를 만들게 된다.
사용자가 실제로 다룰 수 있는, 눈에 보이는 최종적인 저장 장치를 LV(Logical Volume)라 한다. 사용자는 이렇게 만들어진 LV를 (마치 일반 저장 장치를 사용할 때처럼) 마운트(mount) 해 사용하면 된다. PV → VG → LV로 이어지는 과정 속에서 실제 물리적 장치(PV)는 숨겨지고, 사용자는 추상화된 논리적 장치(LV)만을 다룰 수 있게 되는 것이다.
LV는 LE(Logical Extent)라 불리는, 일정한 크기(4MB)의 작은 저장 공간들로 구성되어 있다.
LE와 PE는 같은 크기를 가지고, 서로 매핑된다. LE와 PE를 어떻게 매핑하느냐에 따라 다양한 기능을 사용할 수 있다. 예를 들어 두 개의 PE를 한 LE에 매핑한다면 미러링(mirroring)을 달성할 수 있다.
여러 개의 PV의 PE들에 LE를 번갈아가며 매핑시키면 스트라이핑(stripping)을 달성할 수 있다.
cf) 'vg이름'에 지정하고자 하는 이름 지정
lvcreate
lv 생성
-L: 사이즈 지정 [K,M,G,T]
-n: lv이름 지정
lvcreate -L 300G -n lv이름 vg이름
lvcreate -l 50%FREE -n lv이름 vg이름 <-- 남은 용량 중 50% 사용해서 할당
lvremove
lv 삭제
lvremove lv이름
lvreduce
lv 용량 축소
lvreduce -L 100G /dev/vg이름/lv이름 <-- 해당 lv 100G 축소
lvextend
lv 용량 확장
-L: 사이즈 지정 [K,M,G,T]
-n: lv이름 지정
lvextend -L +100G /dev/vg이름/lv이름 <-- 해당 lv +100G 확장
lvextend -L 150G /dev/vg이름/lv이름 <-- 해당 lv +150G로 변경
lvextend -l +100%FREE /dev/vg이름/lv이름 <-- 남은용량 lv에 모두 할당
lvdisplay
lv 속성 출력
lvs
lvscan
lv스캔 출력
참고링크
https://yoon1seok.tistory.com/47
https://heekangpark.github.io/linux/lvm