LVM 이란
여러 개의 하드디스크를 합쳐서 한 개의 파일시스템으로 사용하는 것으로 필요에 따라서 다시 나눌 수 있다.
물리 볼륨 : /dev/sda1, /dev/sdb1 등의 파티션
볼륨 그룹 : 물리 볼륨을 합쳐서 1개의 물리 그룹으로 만드는 것
LVM 은 명령어를 통해서 RAID 구성을 할 수 있다.
최소 디스크 숫자는 지켜줘야 한다.
물리 볼륨 생성
pvcreate [장치 이름]
ex)
파티션 생성 (sdb1~4 생성)
해당 파티션를 하나의 물리 볼륨으로 구성
$ pvcreate /dev/sdb[1-4]
논리 볼륨 생성
lvcreate [vg 이름] -n [lv 이름] -L [실제 크기] 또는 -l [le 갯수]
ex)
lvcreate [vg명] -l 100%FREE -n [lv명] -> 남은 용량 모두 할당
mkfs.xfs /dev/[vg명]/[lv명] -> 논리볼륨 포맷
mkdir /mnt/disk{1..3} -> 마운트해 줄 폴더 생성
mount /dev/[vg명]/[lv명] /mnt/disk1 -> 마운트
물리볼륨 삭제
pvremove [pv 이름]
볼륨그룹 삭제
vgremove [vg 이름]
논리볼륨 삭제
lvremove [lv 경로]
논리 볼륨 삭제하기 전에 마운트 해제해줘야 한다.
LVM 실습
4G 2개, 6G 2개 되도록 설정하시오.
$ fdisk
$ n
$ p
$ +4G, +4G
$ +6G, +6G
/dev/sdb1~4 모두 물리 볼륨으로 생성
$ pvcreate /dev/sdb[1-4]
/dev/sdb2,4 볼륨 그룹 생성 (pe 단위를 8M로)
$ vgcreate vg0 /dev/sdb[24] -s 8M
lv01 2G (-L 옵션을 사용해서)
$ lvcreate vg0 -n lv01 -L +2G
lv02 4G (-l 옵션을 사용해서)
8M * 512 == 4G
$ lvcreate vg0 -n lv02 -l 256
lv01 은 /mnt/disk1로 마운트 (파일시스템 xfs)
$ mkdir /mnt/disk{1..3}
$ mkfs.xfs /dev/vg0/lv01
$ mount /dev/vg0/lv01 /mnt/disk1
lv02 는 /mnt/disk2로 마운트 (파일시스템 ext4)
$ mkfs.ext4 /dev/vg0/lv02
$ mount /dev/vg0/lv02 /mnt/disk2
lv03 생성 - 나머지 용량 모두 사용해서 생성 (파일시스템 xfs) 영구마운트
$ lvcreate vg0 -n lv03 -l 100%FREE
$ mkfs.xfs /dev/vg0/lv03
$ vi /etc/fstab
/dev/vg0/lv03 /mnt/disk3 xfs defaults 0 1
mount -a 마운트 시키고 확인
$ mount -a
$ lsblk
$ df -Th
생성한 lv,vg,pv 모두 삭제
$ umount -a
$ vi /etc/fstab
dd 로 지운다.
$ lvremove /dev/vg0/lv0[1-3]
$ vgremove vg0
$ pvremove /dev/sdb[1-4]
설정의 역순
볼륨 그룹 확장
vgextend [vg명] [pv명]
$ vgextend vg0 /dev/sdb2
볼륨 그룹 축소
vgreduce [vg명] [pv명]...
해당 물리 볼륨이 사용 중이라면 물리 볼륨의 내용을 볼륨 그룹에 옮긴 후에 축소시켜야 한다.
물리 볼륨 내용 이동
pvmove [pv명]...
$ pvmove /dev/sdb3
$ vgreduce vg0 /dev/sdb3
논리 볼륨 확장
lvextend -L [+추가 크기 또는 최종 크기][ [lv경로] -r(파일시스템 확장)
ex)
$ lvextend -L +2G /dev/vg0/lv01
또는
$ lvextend -L 7G /dev/vg0/lv02
-> 논리 볼륨만 확장된 것이고 실제 사용할 수 있게 해주는 파일 시스템을 확장하지 않았기 때문에
파일 시스템도 확장된 만큼 같이 확장시켜줘야 한다.
파일시스템의 종류에 따라 확장 방법이 다르다.
xfs 파일시스템 확장 : xfs_growfs 마운트 포인트
ex)
xfs_growfs /mnt/disk1
ext4 파일시스템 확장 : resize2fs lv경로
ex)
resize2fs /dev/vg0/lv02
즉 확장과 동시에 파일시스템도 동시에 확장시켜줘야 한다.
$ lvextend -L +0.5G /dev/vg0/lv01 -r 이런 식으로 해주면 같이 확장된다.
LVM 확장, 축소 실습
스냅샷 초기화
파티션 용량 4,6,4,6
/dev/sdb1~4 모두 물리 볼륨으로 생성
$ pvcreate /dev/sdb[1-4]
/dev/sdb1,4 으로 볼륨 그룹 생성 (pe 단위를 16M로)
$ vgcreate vg0 /dev/sdb[14] -s 16M
lv01 4G (-L 옵션을 사용해서)
$ lvcreate vg0 -n lv01 -L +4G
lv02 4G (-l 옵션을 사용해서)
256 * 16M == 4G
$ lvcreate vg0 -n lv02 -l 256
lv03 남은 용량 모두 사용
$ lvcreate vg0 -n lv03 -l 100%FREE
lv01 은 xfs 파일시스템으로 format 해서 /mnt/disk1로 마운트
$ mkdir /mnt/disk/{1..3}
$ mkfs.xfs /dev/vg0/lv01
$ mount /dev/vg0/lv01 /mnt/disk1
lv02 는 ext4 파일시스템으로 format 해서 /mnt/disk2로 마운트
$ mkfs.ext4 /dev/vg0/lv02
$ mount /dev/vg0/lv02 /mnt/disk2
lv03 은 xfs 파일시스템으로 format 해서/mnt/disk3로 마운트
$ mkfs.xfs /dev/vg0/lv03
$ mount /dev/vg0/lv03 /mnt/disk3
볼륨그룹에 /dev/sdb3 추가할 것
$ vgextend vg0 /dev/sdb3
lv01를 5G로 확장할 것(+ 옵션을 사용해서) -r 옵션 사용하지 말 것
$ lvextend -L +1G /dev/vg0/lv01
명령어로 파일시스템 확장
$ xfs_growth /mnt/disk1
$ lsblk
$ df -Th
lv02를 6G로 확장할 것(+ 옵션을 사용하지 말고) -r 옵션 사용하지 말 것
$ lvextend -L 6G /dev/vg0/lv02
명령어로 파일시스템 확장
$ resize2fs /dev/vg0/lv02
$ lsblk
$ df -Th
/dev/sdb4가 문제가 생겼습니다. /dev/sdb4를 제거하시오.
$ vgextend vg0 /dev/sdb2 => vgmove 할 용량이 부족하기 때문에 확장을 해줘야 한다.
$ vgmove /dev/sdb4
$ vgreduce vg0 /dev/sdb4