LVM 개요
LVM(Logical Volume Manager)은 관리자가 파일 시스템과 사용 중인 물리 저장소 사이의 추상 레이어를 제공하여 메타 장치를 만들 수 있게 한다. (파일 시스템이 있는)메타 장치는 논리 볼륨이며, 저장소 풀에서 사용하는 저장소를 볼륨 그룹 이라고 말한다. 볼륨 그룹은 데이터를 저장하는 하나 이상의 실제 장치로 구성 되어 있다.

물리 볼륨은 파티션으로 구성되어 있고, 전체 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

필자가 테스트로 운영중인 서버에서는 현재 2G 디스크 3개를 구성하였다. 이 3개의 디스크를 이용해서 lvm 구성을 해보도록 한다. 그림을 잘 보시면 분할공간 형식인 Id 값이 8e 형태로 되어있어야지 lvm 구성이 되는 디바이스이다. 이점 꼭 참고하시기 바란다.
방법은 아래 그림을 참고하면 될 것 같다.

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

[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 해주면 된다.