본문 바로가기

Operating Systems/Linux

[ Linux ] LVM 활용

실습을 위해 5GB 하드 두개를 생성

LVM(Logical Volume Manager)

Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램

논리 볼륨을 확장 및 축소하여 관리 가능( 단 xfs 시스템은 축소 x )


Physical Volume(물리 볼륨) : /dev/sda1, /dev/sdb2 등의 파티션
Volume Group(볼륨 그룹) : 물리 볼륨을 합쳐서 1개의 물리 그룹으로 만드는 것
Logical Volume(논리 볼륨) : 볼륨 그룹을 1개 이상으로 나눠서 논리 그룹으로 나눈 것

 

0. 환경 설정

# centos7의 경우
yum -y install lvm2

# ubuntu20의 경우
apt-get -y install lvm2

 

1. LVM 생성

# sdb LVM 으로 설정
# fdisk /dev/sdb
# n : 파티션 생성
# p : 파티션 번호 지정 
# 1 : 파티션 번호 1번으로 지정
# t : 파티션 파일타입 병경
# 8e : LVM
# w : 저장후 종료
fdisk /dev/sdb <<LVM_SETTING
n
p
1


t
8e
w
LVM_SETTING

# 파티션 생성 확인
fdisk -l /dev/sdb

# 파티셔닝한 디스크 물리볼륨으로 선언
pvcreate /dev/sdb1

# 리눅스 내 물리 볼륨 확인
pvscan

# 볼륨 그룹 정보 및 볼륨 그룹 이름 확인
vgdisplay

# 물리 볼륨으로 vgroup1 추가
vgcreate vgroup1 /dev/sdb1

# 볼륨 그룹 추가 확인
vgdisplay

# 논리 디스크 생성
# 물리 디스크를 100% 전부 논리 디스크로 생성할 경우 아래 명령어 사용
# lvcreate --extents 100%FREE -n lv1 vgroup1
lvcreate -L 4G -n lv1 vgroup1

lvdisplay

# 논리 디스크 파일 시스템 지정
mkfs.ext4 `lvdisplay | grep "LV Path" | grep vgroup1 | awk '{print $3}'`

# 논리 디스크를 마운트를 폴더 생성
mkdir /disk1

mount `lvdisplay | grep "LV Path" | grep vgroup1 | awk '{print $3}'` /disk1

# mount 되었는지 확인
df -h

 

2. LVM 확장 (ext4)

# sdc LVM 으로 설정
# fdisk /dev/sdb
# n : 파티션 생성
# p : 파티션 번호 지정 
# 1 : 파티션 번호 1번으로 지정
# t : 파티션 파일타입 병경
# 8e : LVM
# w : 저장후 종료
fdisk /dev/sdc <<LVM_SETTING
n
p
1


t
8e
w
LVM_SETTING

# 파티셔닝한 디스크 물리볼륨으로 선언
pvcreate /dev/sdc1

# 리눅스 내 물리 볼륨 확인
pvscan

# 볼륨 그룹 정보 및 볼륨 그룹 이름 확인
vgdisplay

# 볼륨 그룹에 /dev/sdc1 물리 볼륨 추가
vgextend vgroup1 /dev/sdc1

# Free Size 가 늘어난 것 확인
vgdisplay

# PE 단위 만큼 공간 할당하여 디스크 용량을 늘림
# ex) Free  PE / Size       1279 / <5.00 GiB
lvextend -L +5G /dev/vgroup1/lv1

# 현재 잡고있는 논리 디스크를 리사이즈 명령어를 통해 사이즈 재할당
resize2fs /dev/vgroup1/lv1

# 추가한 용량만큼 용량이 늘어난 것 확인
df -h

 

3. LVM 축소 (ext4)

# 온라인중 축소 불가하기 때문에 unmount
umount /disk1

# ext4 점검 및 복구명령으로 논리디스크 점검 및 복구
e2fsck -f /dev/vgroup1/lv1 

# 최종 사이즈를 7GB 로 재할당
resize2fs /dev/vgroup1/lv1 7G

# 논리 디스크가 7GB 만큼 용량을 차지하도록 변경
echo -e 'y\n' | lvreduce -L 7G /dev/vgroup1/lv1

vgdisplay

# 리마운트
mount /dev/vgroup1/lv1 /disk1

# 설정한 용량만큼 용량이 줄어든 것 확인
df -h

 

4. LVM 삭제

# 논리 디스크 언마운트
umount /disk1

# 논리 디스크 삭제
echo -e "y\n" | lvremove /dev/vgroup1/lv1

# 볼륨 그룹 삭제
vgremove /dev/vgroup1

# 물리디스크의 종속성 메타데이터 삭제
pvremove /dev/sdb1
pvremove /dev/sdc1

 

5. LVM 확장 (xfs) - CentOS7

# h : 사용자가 인식하기 쉬운 형태로 용량을 표시(K, M, G 바이트 형태)
# / 파일 시스템의 마운트 포인트 확인
df -h | grep -E '/$'

# 해당 파일시스템의 포멧 형식을 확인
# xfs 파일 시스템 : 강력하고 확장성 높은 단일 호스트 64 비트 저널링 파일 시스템
mount | grep `df -h | grep -E '/$' | awk '{print $1}'`

# 명령어를 통해 마운트 포인트가 해당하는 논리 볼륨 경로를 확인
lvdisplay

# 파티션 테이블 정보(sda, sdb) 확인
fdisk -l

# 파티셔닝한 디스크 물리볼륨으로 선언
pvcreate /dev/sdb1

# 리눅스 내 물리 볼륨 확인
pvscan

# 볼륨 그룹 정보 및 볼륨 그룹 이름 확인
vgdisplay

# 볼륨 그룹에 /dev/sdb1 물리 볼륨 추가
vgextend `vgdisplay | grep "VG Name" | awk '{print $3}'` /dev/sdb1

# Free Size 가 늘어난 것 확인
vgdisplay

# PE 단위 만큼 공간 할당하여 디스크 용량을 늘림
# ex) Free  PE / Size       1279 / <5.00 GiB
lvextend `lvdisplay | grep "LV Path" | grep -v swap | awk '{print $3}'` -l +`vgdisplay | grep Free | awk '{print $5}'`

# 현재 잡고있는 논리 디스크를 리사이즈 명령어를 통해 사이즈 재할당
# ext4 포멧일 경우 [resize2fs] 명령어 사용
xfs_growfs `lvdisplay | grep "LV Path" | grep -v swap | awk '{print $3}'`

# 추가한 용량만큼 용량이 늘어난 것 확인
df -h

'Operating Systems > Linux' 카테고리의 다른 글

[ Linux ] TFTP 서버 설치  (0) 2021.10.15
[ Linux ] Quota 활용  (0) 2021.10.02
[ Linux ] ORACLE 19c 서버 설치  (0) 2021.09.30
[ Linux ] GIT 서버 설치  (0) 2021.09.26
[ Linux ] NFS 서버 설치  (0) 2021.09.25