LVM 개요
LVM(Logical Volume Manager)은 관리자가 파일 시스템과 사용 중인 물리 저장소 사이의 추상 레이어를 제공하여 메타 장치를 만들 수 있게 한다. (파일 시스템이 있는)메타 장치는 논리 볼륨이며, 저장소 풀에서 사용하는 저장소를 볼륨 그룹 이라고 말한다. 볼륨 그룹은 데이터를 저장하는 하나 이상의 실제 장치로 구성 되어 있다.
![](https://www.itopening.com/wp-content/uploads/2019/10/CentOS7-LVM-생성-4.png)
물리 볼륨은 파티션으로 구성되어 있고, 전체 SATA 하드 디스크 드라이브는 JBOD(Just a Bunch Of Disks), RAID 체계, iSCSI, 광 채널, eSATA 등으로 묶도록 한다.
*이 문서는 lvm 를 초기 구성하기 쉽게 설명한 가이드이다. 세부적인 내용은 다루지 않는다.
LVM 설치 및 구성
설치
설치 환경
os : centos 7 (64bit)
ram : 1G
hdd : 2G x 3
yum install lvm*
설치가 완료되었으면 실행 하도록 합니다.
lvm 를 별도로 시작할 경우
systemctl start lvm2-monitor.service
부팅할때 실행할 경우
systemctl enable lvm2-monitor.service
자신의 현재 보유하고 있는 디스크를 확인한다.
fdisk -l
![](https://www.itopening.com/wp-content/uploads/2019/10/CentOS7-LVM-생성-1.png)
필자가 테스트로 운영중인 서버에서는 현재 2G 디스크 3개를 구성하였다. 이 3개의 디스크를 이용해서 lvm 구성을 해보도록 한다. 그림을 잘 보시면 분할공간 형식인 Id 값이 8e 형태로 되어있어야지 lvm 구성이 되는 디바이스이다. 이점 꼭 참고하시기 바란다.
방법은 아래 그림을 참고하면 될 것 같다.
![](https://www.itopening.com/wp-content/uploads/2019/10/CentOS7-LVM-생성-2.png)
PV 만들기
파티션을 나누셨으면, 이제 PV 를 만들 차례이다.
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]#
[root@localhost ~]# pvdisplay
"/dev/sdb1" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 7nr6RN-JrBQ-ImCf-Qmvb-YA9b-VAH8-wb4iM4
[root@localhost ~]#
확인을 꼭 하도록 한다.
나머지 디스크 또한 동일하게 pv 생성 한다.
[root@localhost ~]# pvscan
PV /dev/sdb1 lvm2 [2.00 GiB]
PV /dev/sdd1 lvm2 [2.00 GiB]
PV /dev/sdc1 lvm2 [2.00 GiB]
Total: 3 [6.00 GiB] / in use: 0 [0 ] / in no VG: 3 [6.00 GiB]
그럼 이런식으로 나타나게 된다.
VG(볼륨 그룹)
볼륨 그룹(VG)은 수많은 물리 볼륨을 묶고 장치 파일 시스템에 /dev/VG_NAME와 같은 식으로 보여준다. 볼륨 그룹의 이름은 관리자가 선택한다.
VG 만들기
[root@localhost ~]# vgcreate vg0 /dev/sdb1
Volume group "vg0" successfully created
여기서 vg 를 확장함으로써, 디스크 용량을 늘렸다 줄였다 조절할수 있다. vg를 확장해야만 나중에 lv 에서 확실한 용량 분배가 된다.
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 2.00 GiB
PE Size 4.00 MiB
Total PE 511
Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID MA92Io-yqWu-Jrrm-Apax-MYeT-uWoA-Mhq1Im
VG 확장
[root@localhost ~]# vgextend vg0 /dev/sdc1
Volume group "vg0" successfully extended
[root@localhost ~]# vgextend vg0 /dev/sdd1
Volume group "vg0" successfully extended
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
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 5.99 GiB
PE Size 4.00 MiB
Total PE 1533
Alloc PE / Size 0 / 0
Free PE / Size 1533 / 5.99 GiB
VG UUID MA92Io-yqWu-Jrrm-Apax-MYeT-uWoA-Mhq1Im
LV(논리 볼륨)
논리 볼륨은 시스템에 존재하는 최종 메타 장치이며, 보통 파일 시스템에 만들게 된다. 볼륨 그룹에 만들고 관리하며 /dev/VG_NAME/LV_NAME 형식으로 나타나게 된다. 볼륨 그룹처럼, 논리 볼륨에 사용하는 이름은 관리자가 결정한다.
LV 만들기
[root@localhost ~]# lvcreate -L 5.9G -n test vg0
Rounding up size to full physical extent 5.90 GiB
WARNING: ext4 signature detected on /dev/vg0/test at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/vg0/test.
Logical volume "test" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/test
LV Name test
VG Name vg0
LV UUID kBdxQy-1ADs-LR8k-TRhq-dU9I-aLIe-FZeE81
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2016-05-23 16:50:38 +0900
LV Status available
# open 0
LV Size 5.90 GiB
Current LE 1511
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
fdisk -l
를 해보면 위의 그림처럼 lvm 디바이스를 확인할수 있다.
이제 포맷을 해야된다.
mkfs.ext4 /dev/mapper/vg0-test
![](https://www.itopening.com/wp-content/uploads/2019/10/CentOS7-LVM-생성-3.png)
[root@localhost ~]# mount /dev/mapper/vg0-test /media/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 11G 5.5G 4.9G 53% /
devtmpfs 912M 0 912M 0% /dev
tmpfs 921M 0 921M 0% /dev/shm
tmpfs 921M 12M 909M 2% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/sda1 497M 113M 385M 23% /boot
tmpfs 185M 0 185M 0% /run/user/0
/dev/mapper/vg0-test 5.7G 24M 5.4G 1% /media
정상적으로 생성이 된 파티션을 확인 할 수 있다.
성공적이다.
최종 테스트
새로 구성된 디바이스에 파일을 생성해 보도록 하겠습니다.
[root@localhost media]# dd if=/dev/zero of=test1 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0271646 s, 386 MB/s
[root@localhost media]# ll
합계 10256
drwx------. 2 root root 16384 5월 23 17:02 lost+found
-rw-r--r--. 1 root root 10485760 5월 23 17:05 test1
잘 된다.
LV 용량 조절
[root@localhost ~]# umount /media/
[root@localhost ~]# e2fsck -f /dev/mapper/vg0-test
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg0-test: 12/387072 files (8.3% non-contiguous), 65678/1547264 blocks
[root@localhost ~]# resize2fs /dev/mapper/vg0-test 4G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg0-test to 1048576 (4k) blocks.
The filesystem on /dev/mapper/vg0-test is now 1048576 blocks long.
[root@localhost ~]# mount /dev/mapper/vg0-test /media/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 11G 5.5G 4.9G 53% /
devtmpfs 912M 0 912M 0% /dev
tmpfs 921M 0 921M 0% /dev/shm
tmpfs 921M 12M 909M 2% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/sda1 497M 113M 385M 23% /boot
tmpfs 185M 0 185M 0% /run/user/0
/dev/mapper/vg0-test 3.9G 34M 3.6G 1% /media
늘리고 싶으시면 저기 4G 를 자신이 원하는 용량만큼 조절하면 된다. 디스크 추가를 하시면 VG 에서 꼭 vgextend 해주면 된다.