티스토리 뷰
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버전에 와서 달라진 점은 따로 기입했지만 빠진 것이 있을 수 있다.
'리눅스' 카테고리의 다른 글
[Linux] NFS(Network File System) 서버와 클라이언트 구성 (Rocky 8) (0) | 2023.10.22 |
---|---|
[Linux] quota쿼터(사용자 용량 할당) 설정 (Rocky 8) (0) | 2023.10.21 |
[Linux] RAID 구성/복구/삭제 (Rocky 8) (0) | 2023.10.13 |
[Linux] ssh 연결 + 키 교환, root접속 차단, scp(Secure Copy) (Rocky 8) (0) | 2023.10.12 |
[Linux] yum 리포지터리 파일 생성 : 인터넷 연결 없이 패키지 설치 (Rocky 8) (0) | 2023.10.10 |