LVM 이란
LVM 사용 방법
LVM 이란
LVM이란
●
Logical Volume(LV)을 효율적이고 유연하게 관리하기 위한 기능입니다.
●
여러 물리 디스크를 하나의 볼륨 그룹으로 만든 후, 다시 논리적 볼륨으로 나누어서 사용합니다.
장점
●
유연한 용량
논리 볼륨을 사용하는 경우 장치 및 파티션을 단일 논리 볼륨에 집계할 수 있습니다. 이 기능을 사용하면 파일 시스템을 단일 대규모 장치처럼 여러 장치에 걸쳐 확장할 수 있습니다.
●
편리한 장치 이름 지정
논리 스토리지 볼륨은 사용자 정의 및 사용자 정의 이름으로 관리할 수 있습니다.
●
크기 조정할 수 있는 스토리지 볼륨
기본 장치를 다시 포맷하고 다시 분할하지 않고도 간단한 소프트웨어 명령으로 논리 볼륨을 확장하거나 논리 볼륨을 줄일 수 있습니다
? 디스크의 용량이 더 필요할 때 기존의 쓰던 디스크를 그대로 두고, 새로운 디스크를 추가 장착하여, Volume Grub에 추가한 뒤 사용하면 편하게 용량을 확장할 수 있습니다.
구성 방법은 아래와 같습니다.
●
과정: PV구성 → VG구성 → LV구성
●
OS: Centos7
●
DISK: 50GB *3
CentOS 7에서는 LVM 패키지가 기본으로 설치되어 있지만, 만약 없다면 다음 명령으로 설치할 수 있습니다.
# yum install lvm2
디스크 추가 및 파티션 생성
현재 추가한 디스크 정보를 확인합니다. [실제 디스크명은, 시스템에 따라 다를 수 있습니다.]
# fdisk -1
추가한 디스크 파티션을 생성해 줍니다.
[저는 아래와 같이 /dev/sdb, /dev/sdc, /dev/sdd 3개의 디스크를 추가하였습니다]
# fdisk /dev/sdb
# fdisk /dev/sdc
# fdisk /dev/sdd
각각의 디스크들을 파티션 설정을 해줍니다.
# fdisk /dev/sdb
Command (m for help) : n [n을 눌러 넘어가 줍니다.]
Partition type :
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p) : ---------[파티션 유형 선택으로 Enter를 눌러 넘어가줍니다. (default)]
Using default response p
Partition number (1-4, default 1) : ------------[파티션 번호 설정으로 Enter를 눌러줍니다. (default)]
First sector (2048-104857599, default 2048) : ----[섹터 설정으로 Enter를 눌러줍니다. (default)]
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599) :
Using default value 104857599
Partition 1 of type Linux and of size 50 GiB is set
Command (m for help) : w ------------[저장 명령어로, w를 눌러줍니다.]
The partition table has been altered!
Calling ioctl( ) to re-read partition table.
Syncing disks.
아래 명령어로 파티션이 설정된 디스크 정보를 확인할 수 있습니다.
# fdisk -l
Disk /dev/sdb : 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk label type : dos
Disk identifier : 0xec2d7732
Device Boot
Start
End
Blocks
Id
System
/dev/sdb1
2048
104857599
5242777683
83
Linux
Disk /dev/sdc : 53.7GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk label type : dos
Disk identifier : 0x564a089d
Device Boot
Start
End
Blocks
Id
System
/dev/sdc1
2048
104857599
52427776
83
Linux
Disk /dev/sdd : 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk label type : dos
Disk identifier : 0x6ddfa8e1
Device Boot
Start
End
Blocks
Id
System
/dev/sdd1
2048
104857599
52427776
83
Linux
설정된 파티션을 물리 볼륨(PV)으로 설정
# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
하나 이상의 물리 볼륨(PV)을 하나의 볼륨 그룹(VG)으로 설정
# vgcreate (VG이름) (PV)
(예시)
# vgcreate VG0 /dev/sdb1 /dev/sdc1 /dev/sdd1
VG확인 방법 [생성된 VG를 확인할 수 있습니다.]
# vgdisplay
-- Volume group ---
VG Name
VG0
System ID
Format
lvm2
Metadata Areas
3
Metadata Sequence No
1
VG Access
read/write
VG Status
resizable
MAX LV
0
Cur LV
0
Open LV
0
Max PV
0
Cur PV
3
Act PV
3
VG Size
< 149.99 GiB
PE Size
4.00 MiB
Total PE
38397
Alloc PE / Size
0 / 0
Free PE / Size
38397 / < 149.99 GiB
VG UUID
WIgfbu-7RaH-XjAQ-HEzi-PUYS-0Cca-x2ea1K
볼륨그룹(VG)에서 원하는 용량으로 논리 볼륨(LV)을 생성합니다.
# lvcreate -L (원하는 용량) -n (LV이름) (생성된 VG)
(예시)
# lvcreate -L 50GB -n maya VG0
아래는 생성된 LV를 확인하는 방법입니다.
# lvdisplay
--- Logical volume ---
LV Path
/dev/VG0/maya
LV Name
maya
VG Name
VG0
LV UUID
w97PnQ-IseL-CngM-M6hu-Iwz4-cwCR-sT134F
LV Write Access
read/write
LV Creation host, time
localhost.localdomain, 2024-01-10 15:38:27 +0900
LV Status
available
# open
0
LV Size
50.00 GiB
Current LE
12800
Segments
2
Allocation
inherit
Read ahead sectors
auto
- currently set to
8192
Block device
253:2
해당 LV에 파일시스템을 생성합니다.
# mkfs.xfs -f /dev/VG0/maya
아래 명령어로 UUID를 확인해줍니다.
# blkid
/dev/sr0: UUID=\"2020-11-04-11-36-43-00\" LABEL=\"CentOS 7 x86_64\" TYPE=\"iso9660\"
PTTYPE=\"dos\"
/dev/sda1: UUID=\"50c1c5d4-162a-484e-9fa4-7e4344c1635d\" TYPE=\"xfs\"
/dev/sda2: UUID=\"dpdJGz-sJyQ-JiQw-1CoH-hcez-7K4e-gVLd16\" TYPE=\"LVM2_member\"
/dev/mapper/centos-root: UUID=\"2c9ed7a0-ce19-4d88-99db-cc983328ff01\" TYPE=\"xfs\"
/dev/mapper/centos-swap: UUID=\"72b8aa15-e046-4084-9c2c-f40b93879e84\" TYPE=\"swap\"
/dev/sdb1: UUID=\"PdhsGo-1oDI-BceI-Ot9c-Tq0q-F2JB-kVzfkk\" TYPE=\"LVM2_member\"
/dev/sdc1: UUID=\"kOmHXN-8EJx-RAh1-RVJd-hvwz-wY9R-QOIYq3\" TYPE=\"LVM2_member\"
/dev/sdd1: UUID=\"WrNvhk-B0Hs-AJpB-R9TF-QdVw-855b-8dQLfG\"TYPE=\"LVM2_member\"
/dev/mapper/VG0-maya: UUID=\"9ce07e0f-dcb0-409c-b1b3-a940060ef138\" TYPE=\"xfs\"
마지막으로 마운트 후, 사용하시면 됩니다.
디렉토리 생성
# mkdir /data
마운트
# mount /dev/mapper/VG0-maya /data
디스크 정보 확인
# df -h
Filesystem
Size
Used
Avail
Use%
Mounted on
devtmpfs
6.2G
0
6.2G
0%
/dev
tmpfs
6.3G
0
6.3G
0%
/dev/shm
tmpfs
6.3G
8.6M
6.2G
1%
/run
tmpfs
6.3G
0
6.3G
0%
/sys/fs/cgroup
/dev/mapper/centos-root
28G
1.5G
27G
6%
/
/dev/sda1
1014M
137M
878M
14%
/boot
tmpfs
1.3G
0
1.3G
0%
/run/user/0
/dev/mapper/VG0-maya
50G
33M
50G
1%
/data
LV생성 후, VG 용량 확인 방법은 아래와 같습니다.
# vgdisplay
---- Volume group ---
VG Name
/dev/VG0
System ID
Format
lvm2
Metadata Areas
3
etadata Sequence No
2
VG Access
read/write
VG Status
esizable
MAX LV
0
Cur LV
1
Open LV
1
Max PV
0
Cur PV
3
Act PV
3
VG Size
< 149.99GiB
PE Size
4.00 MiB
Total PE
38397
Alloc PE / Size
12800 / 50.00 GiB -----------------(남은 용량 확인)
Free PE / Size
25597 / < 99.99 GiB
Free VG UUID
WIgfbu-7RaH-XjAQ-HEzi- PUYS -0Cca-x2ea1K
논리 볼륨(LV)을 삭제하려면 아래와 같습니다.
[논리 볼륨을 삭제하면 해당 볼륨에 저장된 데이터가 사라지므로 신중히 진행해야 합니다.]
삭제할 LV마운트 해제 (필수)
# umount /dev//
(예시)
# umount /dev/mapper/VG0-maya
논리 볼륨 삭제
# lvremove /dev//
(예시)
# lvremove /dev/mapper/VG0-maya
볼륨 그룹에서 삭제
# vgremove
(예시)
# vgremove VG0
물리 볼륨에서 삭제
# pvremove /dev/sdd1
여기서 sdd1은 PV의 경로에 따라 적절히 변경해 줍니다.
? LVM은 설정 및 조작에 대한 오류로 인해 데이터 손실이 발생할 수 있으며, 복구가 어렵습니다. 각 볼륨그룹과, 논리볼륨이 일부 공간을 소비하여 디스크 공간 낭비가 있습니다.
LVM은 유연성과 운영체제에서 볼륨을 효과적으로 관리하는 데에 많은 도움을 주지만, 이러한 단점을 고려하여 사용해야 합니다.
2024.03.04