개발/Linux

Linux - LVM (PV, VG, LV)

잇(IT) 2022. 3. 7. 12:51
728x90

7.1 LVM 활용 절차

 

LVM을 활용하기 위한 절차를 먼저 간단하게 보면

하드디스크 파티셔닝 -> 시스템 idLVM으로 변경 -> PV 생성 -> VG 생성 -> LV 생성 -> 파일 시스템 포맷 -> mount

 

반대로 초기화를 해주기 위해선

umount -> LV 해제 -> VG 해제 -> PV 해제 -> 파티셔닝 삭제 순으로 초기화를 시켜주면 된다.

 

7.2 LVM 활용 예시

 

LVM을 활용하기 위해 사전에 sdb 하드 디스크를 파티셔닝 해준다.

 

다음과 같이 sdb를 파티셔닝 해줬다.

LVM을 사용하기 위해서 추가로 시스템 id LVM으로 바꿔주어야 한다.

 

sdbt 옵션을 이용하여 시스템 id 설정으로 가서 LVM에 해당하는 코드 8e를 입력해준다. 다음과 같이 LVM으로 바뀐 것을 볼 수 있다.

 

7.3 PV 생성

 

- PV (Phygical Volume)

pv란 블록 장치 전체 또는 그 블록 장치를 이루고 있는 파티션들을 LVM에서 사용할 수 있게 변환하는 것이다.

 

7.3.1 pvcreate

 

먼저 PV를 생성해준다.

 

7.3.2 pvscan

pvscan, pvdisplay, pvs 명령어를 이용해 PV에 관한 정보들을 볼 수 있다.

 

pvscan을 통해 확인한 모습

 

7.3.3 pvs

 

pvs를 통해 확인한 모습

 

7.3.4 pvdisplay

 

pvdisplay를 통해 확인한 모습

 

7.4 VG 생성

 

- VG (Volume Group)

VGPV들의 집합으로 LV를 할당할 수 있는 공간이다. , PV들로 초기화된 장치들은 VG로 통합되게 된다.

 

7.4.1 vgcreate

 

# vgcreate [VG] [pv1] [pv 2] [pv 3]…..

다음 명령어를 이용하여 VG를 생성해준다.

 

VG도 마찬가지로 vgscan, vgdisplay, vgsVG의 정보를 확인 할 수 있다. 그렇지만 VG는 주로 vgdisplay로 정보를 확인한다.

 

7.4.2 vgdisplay

 

vgdisplay 명령어로 VG 크기, 현재 VG에 할당된 크기, 사용중인 크기 등 여러 정보들을 볼 수 있다. 현재 VG10G이고 할당된 크기는 아직 없으며 아직 약 10G를 사용할 수 있는 것을 볼 수 있다.

 

7.4.3 vgscan

 

7.4.4 vgs

 

7.5 LV 생성

 

- LV (Logical Volume)

LVVG에서 원하는대로 공간을 나누어서 디렉토리에 마운트를 시킬 수 있는 실질적인 파티션이다.

 

7.5.1 lvcreate

 

# lvcreate -L [용량] -n (처음 새롭게 만들어 줄 때 붙여야 한다) [lv] [vg]

다음 명령어를 이용하여LV를 생성한 것을 볼 수 있다.

 

LV도 마찬가지로 lvscan, lvdisplay, lvsLV에 관한 정보들을 볼 수 있다.

 

7.5.2 lvscan

 

lvscan 명령어를 이용해 3Gsdbis1에 할당된 것을 볼 수 있다.

 

7.5.3 lvdisplay

 

7.5.4 lvs

 

vgdisplay로 확인해보면 VG sdbis3G가 할당되었고 7G를 사용할 수 있다고 나온다. 이는 방금 3G를 할당하여 새로운 LV를 생성했기 때문이다.

 

LV를 여러 개 생성한다.

 

lvscan으로 다음과 같이 생성된 것을 볼 수 있다.

 

vgdisplay로 보면 3G 3개의 LV를 생성했기 때문에 9G가 할당되었고 약 1G 용량을 사용할 수 있다고 나온다.

 

7.6 파일 시스템 포맷

 

위에서 블록 스토리지를 사용하기 위해 하드 디스크를 파티셔닝하고 파일 시스템을 포맷했었다. 마찬가지로 LVM도 파일 시스템을 포맷 해야한다.

 

파일 시스템 포맷 방법은 위에서 했던 방법과 동일하다. 뒤에 파일 시스템을 포맷할 디바이스명만 주의해서 작성해주면 된다.

 

blkid 명령어를 이용해 파일 시스템 포맷 상태를 확인할 수 있다.

 

7.7 Mount

 

블록 스토리지를 최종적으로 사용하기 위해서 디렉토리에 마운트를 했었다. LVM도 마찬가지로 최종적으로 디렉토리에 마운트를 시켜주어야 사용이 가능하다.

 

미리 생성한 디렉토리에 각 LV를 마운트 시킨다.

 

mount 명령어를 이용해 마운트 된 것을 확인한다.

 

df -Th 명령어를 이용하면 조금 더 직관적이고 자세한 정보들을 볼 수 있다.

 

여기까지가 LVM를 활용하는 방법이다.

 

하지만 LVM을 사용하면서 용량이 부족하여 용량을 추가해야 하는 경우가 발생할 것이다. LVMVG에 추가적으로 다른 PV를 추가하여 부족한 용량을 채워서 사용 할 수 있다.

 

7.8 LVM 용량 늘려주기

 

sdc 하드 디스크를 파티셔닝 해준다.

 

sdb와 마찬가지로 시스템 IDLVM으로 변경해준다.

 

 

7.8.1 vgextend

 

현재 이미 만들어져있던 VG에 용량을 추가 하는 것이기 때문에 create가 아닌 extend를 사용해 크기를 확장해준다.

 

Vgextend [기존 vg이름] [추가 할 pv 1] [추가 할 pv 2]…….

 

vgdisplay로 확인해보면 VG의 크기가 sdc1의 크기만큼 늘어났고 사용 가능한 용량도 늘어난 것을 확인 할 수 있다.

 

7.8.2 lvextend

 

lv를 새롭게 추가한다면 lvcreate를 사용하면 되겠지만 기존 lv에 용량을 추가하기 위해선 lvextend 명령어를 사용한다.

lvextend -L [+추가 할 용량] [lv]

lvextend -L [목표 용량] [lv]

 

다음과 같이 최종적으로 원하는 크기를 작성하여 크기를 늘려 줄 수 있고 +를 사용해 원하는 용량만큼 용량을 늘려줄 수 있다.

 

하지만 df -Th 명령어를 사용하여 확인해보면 sdbis1, sdbis2, sdbis3를 전부 4G로 늘렸지만 사이즈가 약 3G 그대로인 것을 확인 할 수 있다. 왜냐하면 새롭게 추가한 저장소의 파일 시스템을 포맷하지 않았기 때문이다.

 

위에서 sdbis1, sdbis2 ext4sdbis3 xfs 파일 시스템을 포맷해 줬었다.

ext4     -> resize2fs

xfs       -> xfs_growfs

위를 참고하여 파일 시스템을 전체적으로 다시 포맷해주어야 한다.

 

다시 df -Th로 확인해보면 사이즈가 변경되어 있는 것을 볼 수 있다.

 

7.9 초기화

 

위에서 LVM을 생성하는 과정들을 봤다면 이제 제거하는 방법에 대해서도 보겠다.

 

7.9.1 초기화 절차

 

umount -> lvremove -> vgremove -> pvremove -> fdisk에서 파티션 삭제

위의 절차를 마치게되면 초기화가 완료된다.

 

7.9.2 umount

 

가장 먼저 각 디렉토리에 마운트를 해제 해준다.

 

7.9.3 lvremove

 

lvremove [lv]           /dev/vg/lv

 

lvremove를 해주게되면 다음과 같이 LV들이 사라진 것을 확인 할 수 있다.

 

또한 vgdiplay를 확인해보면 할당량이 0이 되고 사용 가능한 용량이 15G로 늘어난 것을 볼 수 있다.

 

7.9.4 vgremove

 

vgremove [vg이름]

 

다음으로 VG를 제거해준다

 

7.9.5 pvremove

 

pvremove [장치명]

 

다음으로 pv를 제거해준다.

 

7.9.6 파티션 삭제

 

마지막으로 sdb1. sdc1 파티션을 삭제해준다.

파티션까지 전부 삭제해주면 모든 것이 초기화 된 상태가 된다.

728x90

'개발 > Linux' 카테고리의 다른 글

Linux - ACL (setfacl, getfacl)  (0) 2022.03.09
Linux - LVM 2 (PV, VG, LV)  (0) 2022.03.08
Linux - storage 관리 (LVM)  (0) 2022.03.07
Linux - storage 종류 (DAS, NAS, SAN)  (0) 2022.03.07
linux - chage  (0) 2022.03.04