본문 바로가기

Linux Server

[CentOS 7.8] Linux LVM 세팅

※ 네이버 클라우드 플랫폼 서비스(NCP)를 이용해 리눅스 서버를 만든뒤 LVM 테스트를 진행하였습니다.

1. LVM (Logical Volume Manager)

LVM은 파티션을 논리적인 개념인 볼륨으로 나눠서 더 유동적으로 디스크의 용량을 관리할 수 있습니다.

볼륨은 기본적으로 단일 파티션에 상주하게 되지만 다수의 파티션을 하나의 볼륨으로 관리할 수도 있습니다. 그래서 여러 파티션을 합치거나 분할하기에 용이해서 유용하게 사용할 수 있습니다.

2. 디스크의 볼륨과 파티션

파티션

디스크는 파티션이라는 논리적인 크기로 분할 / 통합해서 사용합니다. 하나의 디스크를 여러 개로 분할하기도 하며 여러 개의 디스크를 하나의 파티션으로 통합하기도 합니다. 파티션은 고정적이고 물리적인 개념이 강하며 한 번 크기를 설정하면 변경하거나 추가하기 힘들고 OS는 각 파티션을 별도의 디스크처럼 인식합니다.

 

볼륨

볼륨은 디스크의 단일 파티션에 상주하게 되며 파티션보다 논리적이고 유동적인 개념입니다. 하나의 디스크를 여러 개의 파티션으로 나누어 사용합니다. 이때 볼륨은 파티션마다 하나씩 존재하기도 하며, 여러 파티션에 하나만 존재할 수도 있습니다.

 

2-1 Linux 디스크 파티션 설정하기

콘솔에서 스토리지 생성→생성된 디스크 확인               # fdisk /dev/xvdbnpEnter(기본값)w(저장)

 

# mkfs –t ext4 /dev/xvdb (ext4 타입으로 파일시스템 포맷)

 

3. 파일시스템 종류

파일시스템의 종류는 여러가지 있지만, 해당 LVM 테스트에서는 파일시스템 타입을 ext4와 xfs 타입 두가지만 가지고 하였습니다.

 

4. LVM의 구성&명령어

LVM에서는 디스크를 좀 더 유연하게 사용하기 위해 여러 파티션을 하나의 논리적인 볼륨으로 묶은 뒤 다시 필요한 크기만큼 나눠서 사용할 수 있습니다

 

PV (Physical Volume)

물리적 볼륨으로 디스크를 LVM에서 사용할 수 있게 변환하는 작업을 말합니다. 디스크의 파티션을 PV초기화시켜 일정한 크기의 PE로 구성됩니다.

기능 명령어  예시
PV정보조회 pvs pvs
PV생성 pvcreate pvcreate /dev/xvdb
PV속성변경 pvchange pvchange [옵션] /dev/xvdb
PV삭제 pvremove pvremove /dev/xvdb

PE (Physical Extent)

PV에서 나누어 사용하는 블록입니다. 보통 1PE의 크기는 4MB이며 VG가 새롭게 나누는 논리적인 LVLE1:1 대응합니다.

 

VG (Volume Group)

PV가 모여 만들어진 그룹을 말합니다. 물리적인 일정한 크기의 PE로 구성된 PV들이 모여 VG가 만들어집니다. VG는 다시 LV로 할당할 수 있는 공간을 말하기도 합니다.

기능 명령어  예시
VG정보조회 vgs vgs
VG생성 vgcreate vgcreate testvg /dev/xvdb
VG확장 vgextend vgextend testvg /dev/xvdb
VG속성변경 vgchage vgchange [옵션] testvg
VG안에PV삭제 vgreduce vgreduce testvg /dev/xvdb
VG삭제 vgremove vgremove testvg /dev/xvdb

 

LV (Logical Volume)

VG에서 사용자가 필요한 만큼 할당돼서 만들어지는 공간입니다. 논리적인 파티션이라고 볼 수 있으며 이는 다시 LE로 나누어집니다.

 

LE (Logical Extent)

LV가 나누어진 일정한 크기의 블록으로 물리적 크기인 PE1:1 대응합니다.

기능 명령어  예시
LV정보조회 lvs lvs
LV생성(VG용량할당) lvcreate lvcreate -n testlv -L 50G testvg
LV생성(전체할당) lvcreate lvcreate -n testlv -l 100%FREE testvg
LV확장 lvextend lvextend –L 20G /dev/testvg/testlv
LV속성변경 lvchage lvchange –a [y or n] testlv
LV축소 lvreduce lvreduce –L 50G /dev/testvg/testlv
LV리사이징 resize2fs /dev/testvg/testlv
LV삭제 lvremove lvremove testlv

 

5. LVM 실습

5-1 PV 생성,확인

        # pvcreate /dev/xvdb (pv생성)                                                      # pvs (pv확인)

        # pvremove /dev/xvdb (pv삭제)

 

5-2 VG 생성,확인

     # vgcreate testvg1 /dev/xvdb /dev/xvdc                                            # vgs (vg확인)

       (xvdb xvdc test1vg생성하고 할당)

     # vgcreate testvg2 /dev/xvdd

       (xvddtestvg2생성하고 할당)

 

5-3 LV 생성,확인,포맷

방법1 # lvcreate –n testlv1 –L 10G testvg1                                                # lvs (lv확인)

(10G용량의 testlv1testvg1에 생성)

 

방법2 # lvcreate –n testlv1 –L +25G testvg2

(25G용량의 testlv1testvg2에 생성)

 

# mkfs.ext4 /dev/testvg1/testlv1

(testlv1ext4형식으로 포맷)

 

5-4 LV 용량 확장

# df -h

마운트정보 확인

방법1 # lvextend –L +10G /deve/testvg1/testlv1

(testlv1의 용량을 10G 늘린다)

 

resize2fs /dev/testvg1/testlv1

(resize 진행후 조회시 늘어난 용량 확인)

방법2 # lvresize -L +10G --resizefs /dev/testvg1/testlv1

(testlv1의 용량을 10G 늘리고 resize 진행)

 

5-5 LV 용량 축소

# umount /dev/testvg1/testlv1 /마운트포인트     (마운트된 디스크 해제)

# e2fsck -f /dev/testvg1/testlv1

# resize2fs /dev/testvg1/testlv1

# lvreduce -L -10G /dev/testvg1/testlv1     (testlv1의 용량을 10G 줄이고 resiz진행)

# lvs

# mount /dev/testvg1/testllv1 /마운트포인트     (줄어든 용량 확인후 마운트)

 

참고한 글 URL

LVM축소 : https://m.blog.naver.com/dlatjgns/220031793234