티스토리 뷰

반응형

 

 

LVM
Logical Volume Manager
물리적 디스크를 묶은 후 필요에 의해 논리적으로 나누어 논리적 가용성을 극대화

 

Physical Volume물리 볼륨 : 볼륨 그룹에 소속되기 위한 실제 디스크 파티션
Volume Group볼륨 그룹 : 디스크 파티션들을 모아 논리 볼륨으로 나누어주기 위한 모음
Logical Volume논리 볼륨 : 볼륨 그룹에서 쪼개져서 나누어진 실사용을 위한 볼륨

 

 

@구성시 필요한 패키지 : lvm2

 

 

LVM 생성

* 2개의 디스크를 묶은 후 3개의 논리적 볼륨으로 나누어 볼 것이다.


0. 디스크를 추가하고 물리 볼륨용 파티션 만들기(Type : 8e)

 

20GB 용량의 디스크 2개를 추가

 

디스크 잘 들어갔는지, 장치명 확인

lsblk

 

LVM 타입(8e)으로 파티션 생성 : /dev/sdb와 /dev/sdc 두 번 수행

fdisk /dev/sdb

 

fdisk /dev/sdc

사진 생략

 

파티션 생성 여부 확인

lsblk

이제부터 장치명을 쓸 땐 /dev/sdb(/dev/sdc)가 아니고 /dev/sdb1(/dev/sdc1)이라고 써줘야 한다.

 


1. pvcreate 물리 볼륨 선언

pvcreate /dev/sdb1
pvcreate /dev/sdc1



*파티션의 일부만 pv로  선언하고 싶을 때
pvcreate --setphysicalvolumesize 15G /dev/sdb1

*pv의 사이즈 변경시
pvresize --setphysicalvolumesize 20G /dev/sdb1

*명령어 없을 시 패키지 설치

dnf -y install lvm2

<확인하는 명령어>


pvs


pvdisplay


pvscan



2. vgcreate 볼륨 그룹 생성 


vgcreate VG이름 장치명1 장치명2
vgcreate unissVG /dev/sdb1 /dev/sdc1


*새로운 디스크를 vg에 추가할 때
lvm타입(8e)으로 파티션 생성 후,
vgextend unissVG /dev/sdd1

이 때는 추가할 디스크를 pv선언(pvcreate) 하지 않아도 자동으로 pv화 되어 vg에 추가된다.

*특정 디스크를 볼륨그룹에서 제거할 때
vgreduce unissVG /dev/sdc1

 

<확인하는 명령어>

vgs
vgdisplay
vgscan



3. lvcreate 논리 볼륨 생성

lvcreate --size 사이즈 --name 생성할lv이름 나눌vg이름

아래처럼 간단하게 쓸수도 있다.
lvcreate -L 사이즈 -n 생성할lv이름 나눌vg이름


lvcreate -l 100%FREE -n 생성할lv이름 나눌vg이름 : 남은 용량(익스텐츠)의 전부로 생성
lvcreate -l 50%FREE -n 생성할lv이름 나눌vg이름 : 남은 용량(익스텐츠)의 50%만큼 사용해서 생성

 

lv1, lv2, lv3 각각 15G, 15G, 남은용량전부 로 해서 lv 생성할 것임.

lvcreate --size 15G --name lv1 unissVG

lvcreate -L 15G -n lv2 unissVG

lvcreate -l 100%FREE -n lv3 unissVG


생성된 lv의 경로 : /dev/vg이름/lv이름

위의 경우, /dev/unissVG/lv1,  /dev/unissVG/lv2,  /dev/unissVG/lv3

*남겨둔 용량 사용하여 lv 사이즈를 늘릴 때
lvextend -L 용량 /dev/unissVG/lv1

위에 용량은 늘렸을 때의 총 용량이다. 늘릴 용량이 아니다.

 

*시스템 재구축(확장)시 마운트 후 사용한다.
mount /dev/unissVG/lv1 /lvmount1
xfs_growfs /lvmount1 ->이건 파일시스템이 xfs일 때 사용 가능.

 

<확인하는 명령어>

lvs


lvdisplay


lvscan

 

4. 각각의 lv 포맷

 

깜빡하고 포맷하지 않은 상태로 마운트를 시도했더니 아래와 같은 에러가 나온다.

mount: /lvmount1: wrong fs type, bad option, bad superblock on /dev/mapper/unissVG-lv1, missing codepage or helper program, or other error.

포맷 안해서 그런거니까 빠르게 포맷을 해주자. 다양한 형식과 파일시스템으로 포맷해보았다.

mkfs.ext4 /dev/unissVG/lv1

mkfs -t ext4 /dev/unissVG/lv2

mkfs.xfs /dev/unissVG/lv3

잘 되었다는 내용이 ext4 와 xfs가 다르게 나온다.

5. 각각의 lv마운트

 

마운트하기 전에 마운트하 디렉터리를 만들어주었다. 이미 마운트할 곳이 있으면 스킵.

mkdir /lvmount{1,2,3}

위와 같이 해주면 {}중괄호 안에 있는 거 각각 붙어서 한번에 만들 수 있다.

 

확인

ls /

 

마운트

mount /dev/unissVG/lv1 /lvmount1

mount /dev/unissVG/lv2 /lvmount2

mount /dev/unissVG/lv3 /lvmount3

 

부팅시 자동 마운트되게 하려면 추가로 /etc/fstab에 추가해줘야 한다.

 

echo "/dev/unissVG/lv1 /lvmount1 ext4 defaults 0 0" >> /etc/fstab

echo "/dev/unissVG/lv2 /lvmount2 ext4 defaults 0 0" >> /etc/fstab

echo "/dev/unissVG/lv3 /lvmount3 xfs defaults 0 0" >> /etc/fstab

포맷할 때 사용한 파일시스템 잘 맵핑해서 써주기.

에코할 때 >> 요거 두개 써주는 것도 체크. 하나만 해주면 파일을 덮어써버린다.

 

잘 들어갔나 확인

vi /etc/fstab

 

마지막으로 확인

lsblk

타입과 마운트포인트, 사이즈를 확인할 수 있고 각 디스크가 어느 lv에 나눠져 들어가있는지도 볼 수 있다.

lv1은 sdb1의 20GB 중 15GB를 사용중이고, lv2는 sdc1의 20GB 중 15GB를 사용중이고, lv3는 sdb1과 sdc1의 5GB씩을 함께 사용하고 있다고 추측할 수 있다.

 

 

LVM 삭제
삭제는 언제나 만들 때의 역순으로 하면 된다.

 


1. 마운트 해제

 

디렉터리 만들 때와 마찬가지로 한 번에 해제해줬다.

umount /lvmount{1,2,3}

mount | grep lvmount

마운트 해제된 것 확인까지 완료.

 


2. lv 삭제


lvremove /dev/unissVG/lv{1,2,3}

yyy



3. vg 삭제


vgremove /dev/unissVG

경로말고 vg이름만 써도 삭제가 가능하다.

 


4. pv 해제

 

pvremove /dev/sdb1 /dev/sdc1

위처럼 장치 나열해줘도 되지만 규칙성이 있을 경우 아래처럼 해줘도 된다. 

pvremove /dev/sd{b,c}1

확인

전부 없어진 것을 확인했지만 파티션 상태는 남아있다. 아마도 lvm(8e) type으로.

그래서 깔끔하게 파티션도 삭제해주었다.

fdisk /dev/sdb

write 명령어로 저장하기 전까지는 변화가 적용되지 않으니까 저장할 때 주의하라고 한다.

d로 삭제해주고 p로 type 사라진 것 확인 w로 저장까지 해주고, sdc도 똑같이 해주었다.

 

마지막 확인

lsblk

처음의 순수한 디스크의 상태로 돌아왔다.

 

5. 자동마운트 설정 해제

 

자동마운트를 설정했다면 지워줘야한다.

vi /etc/fstab

추가한 내용 지우고 저장

 

*깜빡하고 /etc/fstab 안지우고 껐다 켰는데 당연히 부팅이 안된다.

응급복구모드로 보내줬다. 루트 비밀번호 입력 후 들어가서

vi /etc/fstab

밑에 지워주고

systemctl reboot

성공 휴

 

끗~~

더보기

실습은 RHEL(Red Hat Enterprise Linux)의 클론 버전인 Rocky Linux 8버전을 사용했으며 Rocky Linux 9버전에서도 거의 문제없이 실행된다. 9버전에 와서 달라진 점은 따로 기입했지만 빠진 것이 있을 수 있다.

 

반응형