[Linux] LVM
Linux LVM_Logical Volume Manager
- 리눅스에서 디스크를 효율적으로 관리하고 사용하는 방법 중 하나
- 물리적인 디스크를 논리적 볼륨그룹(VG)으로 구성해서, 이 논리적인 볼륨그룹 내에 사용자가 원하는 크기만큼의, 유동적으로! 논리볼륨(LV)을 할당하여 사용하는 방법
- 여러개의 디스크를 하나의 논리적인 볼륨그룹(VG)로 구성할 수 있고 각 논리볼륨(LV)은 독립적이기에 하나의 디스크에도 여러가지 파일 시스템 설치 가능
- 디스크 용량증설이 요구 될 경우에도 볼륨그룹에 물리볼륨(PV)만 추가하여 용량증설 가능
- 볼륨은 기본적으로 단일 파티션에 상주하게 되지만 다수의 파티션을 하나의 볼륨으로도 관리할 수 있음
LVM 구성요소 전에 파티션, 볼륨 파악
- 파티션 Partition
- 물리적인 디스크는 파티션이라는 논리적인 크기로 분할 or 통합해서 사용
- 하나의 디스크를 여러 개로 분할하거나 여러 개의 디스크를 하나의 파티션으로 통합하기도 함
- 파티션은 고정적이고 물리적인 개념이 강하며 한 번 크기를 설정하면 변경하거나 추가하기 힘들고 OS는 각 파티션을 별도의 디스크처럼 인식
- 물리적인 디스크는 파티션이라는 논리적인 크기로 분할 or 통합해서 사용
- 볼륨 Volume
- 파일 시스템으로 포맷된 디스크 상의 저장 영역
- 디스크의 단일 파티션에 상주, 파티션보다 논리적이고 유동적인 개념
- 하나의 디스크를 여러 개의 파티션으로 나누어 사용하는데 이때 볼륨은 파티션마다 하나씩 존재하거나, 여러 파티션에 하나만 존재할 수도 있음
LVM 구성요소

- PV_Physical Volume
- 물리적 볼륨
- 물리적 하드디스크에 LVM을 사용할 수 있도록 LVM 데이터 구조를 생성한 것
- 디스크에 PV가 생성되면 LVM은 디스크를 하나의 LV로 간주, VG에 포함시킬 수 있게됨
- VG_Volume Group
- 볼륨 그룹
- VG는 하나 또는 그 이상의 PV를 포함
- LV를 생성할 수 있는 VG의 집합
- 물리적인 일정한 크기의 PE로 구성된 PV들이 모여 VG가 만들어짐
- LV_Logical Volume
- 논리적 볼륨
- 하나 또는 그 이상의 PV로 구성되어있는 VG 공간을 전체 or 분할하여 일반 파일시스템, swap or dump area, raw disk로 사용할 수 있도록 논리적으로 할당한 공간
- 운영 중 공간이 부족할 경우 VG에 속해 있는 또 다른 PV를 사용하여 확장 가능, 필요하다면 크기를 변경하거나 다른 디스크로 데이터 옮기기 가능
- 논리적인 파티션으로 볼 수 있으며 LV는 다시 LE로 나뉨
- PE_Physical Extent
- PV가 갖는 일정한 블록
- 디스크에 PV 생성 시, LVM은 주소를 지정할 수 있는 PE라는 단위로 물리 디스크를 나눔
- extent는 주소 0번부터 시작하여 1씩 증가, 순차적으로 디스크에 할당되고, PE의 크기는 VG를 만들 때 구성할 수 있음
- 각 PE의 default 크기는 4MB, 필요에 따라 VG 생성 시 1MB에서 256MB 사이의 값 지정 가능
- PE와 LE는 1:1로 대응
- LE_Logical Extent
- LV가 갖는 일정한 블록
- 디스크에 PV 생성 후, 생성된 PV를 이용해 VG 구성, 이 VG에 LV 생성!
- LV의 기본 할당 단위가 LE
- LE는 PV 생성 시 나눠진 PE영역과 Mapping
- PE의 크기가 4MB면 LE의 크기도 4MB
_____
- PE의 크기가 4MB면 LE의 크기도 4MB
- LE는 PV 생성 시 나눠진 PE영역과 Mapping
LVM 작업순서
- System Partition ID 변경 (fdisk CMD)
- PV 생성 (pvcreate CMD)
- VG 생성 (vgcreate CMD)
- LV 생성 (lvcreate CMD)
- F/S 생성 (mkfs CMD)
- 마운트 (mount CMD, /etc/fstab)
VirtualBox_Rocky Linux 9.0
1. System Partition ID 변경 (fdisk CMD)
-
디스크 장착 및 확인 용량이 1G인 디스크 4개 추가 후 디스크 확인
ls -l /dev/sd?

/dev/sdb ~ sde 까지 새로 장착된 디스크
-
디스크 파티션 설정 하나의 디스크는 하나의 파티션으로 설정, LVM 설정을 하기 위해서는 System Partition ID는 8e로 설정
fdisk /dev/sdb

-
fdisk 진입 후 m 입력 시 fdisk 옵션 목록 나열됨
- fdisk 내에서 n은 add a partition, 새로운 파티션 추가
- n 옵션 입력 후 select에서 p (partition type을 주 파티션인 primary로 설정,
e는 extended, 확장 파티션),
partition number에서 1 (엔터 입력 시 기본 값인 1로 설정),
First sector에서 엔터 (엔터 입력 시 기본 값으로 설정, 시작 섹터 값은 2048),
Last sector에서 엔터 (엔터 입력 시 기본 값으로 설정, 마지막 섹터 값은 2097151) - 파티션 설정 후 p 옵션 입력해서 현재 설정된 파티션 정보 확인

-
fdisk 내에서 t 옵션 입력으로 partition type 설정

- t 옵션 내부에서 L 옵션 입력 시 전체 partition type과 연결된 Hex code 목록 출력

- t 옵션 내부에서 L 옵션 입력 시 전체 partition type과 연결된 Hex code 목록 출력
-
LVM 설정을 위해서 partition type을 8e로 설정

-
이후 p 옵션으로 partition type 8e로 변경 확인 후 w 옵션으로 파티션 수정 정보 저장
(이미 저장된 상태여서 아래와 같이 뜬당,,~! 수정하고 w 바로 누르면Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks
이렇게 뜰 것이얌)
-
장착 디스크 전부 파티션 설정하고 디스크 확인하면 앞서 처음에 장착한 디스크 명과
숫자가 붙어있는 디스크 명이 동시에 존재해야 파티션 설정이 맞게 된 것
2. PV 생성 (pvcreate CMD)
생성한 디스크를 LVM으로 사용하기 위한 선처리 작업으로 PV 생성
-
PV 생성 및 삭제 관련한 커맨드를 사용하기 위해선 lvm2 패키지 설치 필요

-
pvcreate /dev/sdb1입력으로 pv 생성

-
pv 생성 후 pv 정보 확인
pvspvscanpvdisplaylvmdiskscan

| PV 생성 | PV 정보 확인 |
|---|---|
pvcreate |
pvs pvscan pvdisplay lvmdiskscan |
3. VG 생성 (vgcreate CMD)
PV 생성 후 각각의 PV를 하나의 그룹으로 생성
-
vgcreate primary_vg /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1명령으로 VG 생성
-
생성 후 VG 정보 확인
vgsvgscanvgdisplay

| VG 생성 | VG 정보 확인 |
|---|---|
vgcreate |
vgs vgscan vgdisplay |
4. LV 생성 (lvcreate CMD)
LV는 LVM에서 생성하는 파티션, 단일 파티션 or 다중 파티션으로 나눌 수 있는데 이때 LV를 생성하는 방법은 용량 단위 or PE 수를 통해 생성 가능
lvcreate -L 1G n lv1 primary_vg명령으로 lv 생성
- LV 생성 후 LV 정보 확인
lvslvscanlvdisplay

| LV 생성 | LV 정보 확인 |
|---|---|
lvcreate |
lvs lvscan lvdisplay |
5. F/S 생성 (mkfs CMD)
LV에 대해 ext4 파일 시스템을 갖도록 mkfs.ext4로 포맷
mkfs.ext4 /dev/primary_vg/lv1으로 파일시스템 포맷 진행
6. 마운트 (mount CMD, /etc/fstab)
LV 마운트
- 마운트는 디렉터리를 하나 생성 후 진행 !
(나는 그냥,,, user1 홈 디렉터리에 만들랜당)
-
mkdir lvm_dic디렉터리 생성
mount /dev/primary_vg/lv1 /home/user1/lvm_dic로 디렉터리에 LV를 마운트
df -h로 마운트 된 디스크 사용량 확인
Leave a comment