Logical Volume Manager - cra16/overcast GitHub Wiki
1์๊ฐ์ด๋ฉด LVM ์ดํดํ ์ ์๋ค
์ํํธ์จ์ด์ชฝ์ ์๋ฆฌ๋ณด๋ค ์ฉ์ด๋ฅผ ์ดํดํ๋๊ฒ ๋ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ฉ์ด ์์ฒด๊ฐ ์ถ์์ ์ธ๋ฐ, ๊ทธ๋๋ง ์ค์ฌ์ ํํํ๊ธฐ ๋๋ฌธ์ด๋ค. ํนํ "๋ ผ๋ฆฌ์ ", "์ถ์์ " ๋ฐ์์ ๋จ์ด๊ฐ ๋ค์ด๊ฐ๋ฉด ์ ํ ๊ฐ์ด ์กํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๊ทธ๋์ ์ ์ด์ ํฌ๊ธฐํด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ฌ๋์ ์ ์ด์ ์ถ์์ ์ธ ๊ฒ๋ณด๋ค๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ์, ๋ ผ๋ฆฌ์ ์ธ ๊ฒ๋ณด๋ค๋ ์ง๊ด์ ์ธ ๊ฒ์ ๋ ์ ์ดํดํ๋ค. ํ์๊ฐ ์๋ ํ๋ฒํ ์ฌ๋๋ค์ด ์ง๊ธ ์์ค์ ์ถ์์ ์ธ ์๊ฐ์ ํ๊ฑฐ๋ 2์ธ๊ธฐ๊ฐ ์ฑ ์๋์ง ์ถ๋ค. ๊ทธ๋ฌ๋ ๋จธ๋ฆฌ์ ๋ค์ด์ฌ๋ฆฌ๊ฐ ๋ง๋ฌดํ๋ค.
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ตฌ์ฒดํํ๋ ๊ฒ์ด๋ค. ๊ตฌ์ฒดํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์์ ์ ๊ฒฝํ์ ์ง์ ๊ธ๋ก ๋ํ๋ด๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆผ์ด ํฌํจ๋๋ค๋ฉด ๊ทธ๋ณด๋ค ์ข์ ์ ์๊ฒ ๋ค.
ํด์ ํ ์๊ฐ์ด๋ฉด, LVM์ ์ดํดํ ์ ์๋๋ก ๊ธ๊ณผ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ์ ํด๋ณผ๊น ํ๋ค. ๊ทธ๋ ๋ค๊ณ ํด๋ ๋ฆฌ๋ ์ค ์ด์์ฒด์ ๋ฅผ ์ด๋ ์ ๋๋ ๋ค๋ฃฐ์ ์์ด์ผ ํ๊ฒ ๋ค.
LVM ๊ตฌ์กฐ
๋ฆฌ๋ ์ค ์์คํ ์์ Volume์ ๋ง๋๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ธ๋ก ๋๋ฐ์ด์ค์ ํ์ผ ์์คํ ์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋๊ฒ ๋ค. ํ์ผ ์์คํ ์ ํ์์ ๋ง๊ฒ ํฌ๋งทํด์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ณด์๋ฉด ๋๋ต ์๋์ ๊ฐ๋ค.
๋ธ๋ญ ์ฅ์น์ธ /dev/sda1, /dev/sda2๋ฅผ ํ์ผ ์์คํ ์ ๋ง์ดํธ ํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
๋ง์ฝ /dev/sda1 ์ /mnt/ftp์ ๋ง์ดํธ ํด์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด ๋๋ค.
# mkfs -t ext4 /dev/sda1 # ํฌ๋งทํ๊ณ
# mount -t ext4 /dev/sda2 /usr/data/ftp # ๋ง์ดํธํ๋ค.
์ด ๋ฐฉ์์ ํ์ผ ์์คํ ๊ณผ ์ฅ์น๊ฐ ์ง์ ๋งตํ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ด ์ง๊ด์ ์ด๋ผ๋ ์ฅ์ ์ด ์๋ค. ํ์ง๋ง ํ๋์จ์ด๋ฅผ ์ง์ ๋ค๋ฃจ๋ ๊ธฐ์ ๋ค์ด ๊ทธ๋ ๋ฏ์ด __์ ์ฐํ์ง ์๋ค__๋ ๋จ์ ์ด ์๋ค. ์ฒ์ /dev/sda1์ ํฌ๊ธฐ๋ฅผ 10G๋ก ์ก์๋๋ฐ, ์ฉ๋์ด ๋ถ์กฑํ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ์ฅ์น๋ฅผ ์๋ก ๋ง๋ จํ๋ ๋ฐฉ๋ฒ ๋ฐ์ ์๋ค. ์ฅ์น๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ฌถ์ด์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ๋ ์ฌ์ด ์ผ์ด ์๋๋ค. ํํฐ์ ์ ๋๋ ์ผ ํ ๊ฒฝ์ฐ๋ ๊ฐ๋ค.
ํนํ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ผ์ด ๋ง์ ์์ฆ์๋ disk๋ฅผ ํจ๊ป ๋ฌถ์ด์ ๋จ์ผํ ๊ฑฐ๋ storage๋ฅผ ๊ตฌ์ฑํด์ผ ํ ํ์์ฑ์ด ๋์ด๋๊ณ ์๋ค. ๋ฌผ๋ฆฌ์ ์ธ ๋ณผ๋ฅจ์ ๋ ผ๋ฆฌ์ ์ธ ๋จ์ผ ๋ณผ๋ฅจ์ผ๋ก ๋ฌถ๋ ๊ฒ์ด๋ค.
์ด๋ LVM์ ์ฌ์ฉํ๋ค. Logical์ด๋ ๋ง์ ๋์์ ์ถ์ํ ํ๊ฒ ๋ค๋ ๊ฒ์ด๋ค. File System๊ณผ ๋ธ๋ญ ๋๋ฐ์ด์ค ์ฌ์ด์ ์ถ์ํ ๊ณ์ธต์ ํ๋ ๋ ๋๋ ๊ฐ๋ ์ด๋ค. ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ผ.
๋ ผ๋ฆฌ์ ์ธ ๋ณผ๋ฅจ์ ํ๋ ๋ง๋ค์ด์ ๋ธ๋ญ ์ฅ์น๋ค์ ํ๋๋ก ๋ฌถ์๋ค. ๊ทธ ๋ค์ ์ ์ ํ ํฌ๊ธฐ๋ก ๋๋ ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ ผ๋ฆฌ์ ์ด๋ ๋งํผ ๋ณผ๋ฅจ์ ์๋ก ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ๋ณผ๋ฅจ์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ํ๋ ์ผ์ ์์ ๋กญ๊ฒ ํ ์ ์๋ค. ๊ฐ์ธ์ด ์ฌ์ฉํ๋ค๋ฉด, ๋ณผ๋ฅจ์ ๋๋์ด์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ด์ฌ์ด ์์ ๊ฒ์ด๊ณ . Cloud ์ชฝ ์ผ์ ํ๋ ์ฌ๋์ด๋ผ๋ฉด ๋ณผ๋ฅจ์ ํ๋๋ก ๋ฌถ๋ ๊ฒ์ ๊ด์ฌ์ด ๋ง์ ๊ฒ์ด๋ค.
LVM์ด๋ผ๋ ๊ฒ์ Logical Volume๋ฅผ Managingํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ Storage ์ํํธ์จ์ด์ธ ์ ์ด๋ค.
LVM๋ฅผ ์ข ๋ ์์ธํ ์ดํด ๋ณด์. LVM์์ ๊ฐ์ฅ ๋ฐ์ ์๋๊ฒ ๋ฌผ๋ฆฌ์ ๋ณผ๋ฅจ์ด๋ค. ์ด๊ฒ์ PV(Physical Volume)๋ผ๊ณ ํ๋ค. ์ ๊ทธ๋ฆผ์ 2๊ฐ์ PV๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ PV๋ PE๋ผ๋ ๋ธ๋ญ์ ๋ชจ์์ผ๋ก ๊ตฌ์ฑ๋๋ค. PE๋ Physical Extents์ ์ค์๋ง์ด๋ค.
PV์์ VG๊ฐ ์๋ค. Volume Group์ ์ค์๋ง์ธ๋ฐ, PV๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ ๋ณผ๋ฅจ ๊ทธ๋ฃน์ด๋ค. VG๋ ํ๋ ์ด์์ PV๋ก ๊ตฌ์ฑ์ด ๋๋ค. ์ด์ LVM์ Volume์ ์์ฒญํ๋ฉด, ์์ฒญํ ํฌ๊ธฐ๋งํผ LV๋ฅผ ๋๋ ค์ค๋ค. ์ด LV๋ฅผ (/mnt/ftp ๋ฑ์)๋ง์ดํธ ํด์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ง์ฝ /mnt/ftp์ ๋ณผ๋ฅจ ํฌ๊ธฐ๋ฅผ ํค์ธ๋ ค๋ฉด ๋จ๋ PE๋ฅผ ์์ฒญํด์ LV ํฌ๊ธฐ๋ฅผ ํค์ฐ๋ฉด ๋๋ค.
LVM์ผ๋ก ํ ์ ์๋ ๊ฒ๋ค
๋๋ต LVM์ผ๋ก ํ ์ ์๋ ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด์.
- ์๋ก์ด ๋ธ๋ญ ์ฅ์น๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ, ๊ธฐ์กด ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์์ด ๋ณผ๋ฅจ์ ํฌ๊ธฐ ์กฐ์ ๊ฐ๋ฅ.
- ๊ฐ๋จํ๊ฒ LV๋ฅผ ํ์ฅ ๊ฐ๋ฅ.
- LV๋ก ๋ถํฐ ์ฝ๊ธฐ ์ ์ฉ์ snapshot๋ฅผ ์์ฑ ๊ฐ๋ฅ.
- RAID 0์ฒ๋ผ PV๋ฅผ 2๊ฐ ์ด์ ์ฎ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅ. ๋์ญํญ ์ฆ๊ฐ.
- ํ์ง๋ง parity ๊ธฐ๋ฅ์ ์์. fault toleranceํ์ง ์์.
- RAID 1์ฒ๋ผ mirror ๊ตฌ์ฑ์ ํ ์ ์์.
Linear Mapping LV ์ Striped Mapping LV
์์์ RAID 0 ์ฒ๋ผ PV๋ฅผ ์ฎ์ด์ ๋์ญํญ์ ์ฆ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณธ๋ค.
- Linear Mapping LV: ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ด๋ค. ๋ธ๋ญ ์ฅ์น์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ฏ์ด ์์ฐจ์ ์ผ๋ก ์ด๋ค.
- Striped Mapping LV: ๋ ๊ฐ์ PV๋ฅผ stripingํด์ ์ฌ์ฉํ๋ค. PV์ PE๋ ์ ๋นํ ํฌ๊ธฐ์ ์กฐ๊ฐ๋ค๋ก ๋๋์ด์ง๋๋ฐ, LVM์ ๋ฐ์ดํฐ๋ฅผ ๋ PV์ ๋ถ์ฐํ์ฌ ํ ๋น์ ํ๋ค. ๊ทธ๋์ ๋๊ฐ์ PV์์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ์ ์๊ฒ ๋์ด์ ๋์ญํญ ์ฆ๊ฐ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค. ๋ฌผ๋ก ์ด๋ฐ ํจ๊ณผ๋ฅผ ์ป์๋ ค๋ฉด PV๊ฐ ๋ ๋ฆฝ๋ ์ฅ์น์ฌ์ผ ํ๋ค. ๊ฐ์ ์ฅ์น๋ด์ ํํฐ์ ์ด๋ผ๋ฉด ์คํ๋ ค ์ญํจ๊ณผ๊ฐ ๋ ๊ฒ์ด๋ค.
Snapshot LV
์๋น์ค์ ์ค์ง ์์ด ๋ฐฑ์ ์ ํ๋ ค๊ณ ํ ๋๋ ๋ฐฑ์ ๊ณผ์ ๋์ค ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ํนํ ์ ๊ฒฝ์จ์ผ ํ๋ค. ์ด ๋ฌธ์ ๋ Snapshot LV๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ ์ ์๋ค. ์ด ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ํน์ ์์ ์ ๋ฐ์ดํฐ ์ํ๋ฅผ ๊ณ ์ ํ ์ ์๋ค. ๊ณ ์ ํ๊ธฐ ์ํ๋ LV๋ฅผ ๋ณต์ฌํด์ ์ฝ๊ธฐ ์ ์ฉ์ ์๋ก์ด LV๋ฅผ ๋ง๋ค๋ฉด ๋๋ค.
Linux LVM
Linux์์ LVM์ ํ ์คํธ ํด๋ณด์. ๋ ๊ฐ์ SATA ๋๋ฐ์ด์ค๋ฅผ ์ถ๊ฐํ๊ณ ์ด๋ฆ์ PV1 PV2, ํฌ๊ธฐ๋ 2G byte๋ก ์ค์ ํ๋ค.
ํ์ฌ ์ฅ์น ์ํ ํ์ธ
VM์ ์คํํ ๋ค์ fdisk๋ก ์ฅ์น ์ํ๋ฅผ ํ์ธ.
# fdisk -l
....
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
2G byte ํฌ๊ธฐ์ ๋ธ๋ญ ์ฅ์น๊ฐ ๊ฐ๊ฐ /dev/sdb, /dev/sdc์ ๋ง์ดํธ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
pv ํ์ธํ๊ธฐ
ํ์ฌ ์์คํ ์ physical volume์ ๋จผ์ ํ์ธํด ๋ณด์.
# pvscan
No matching physical volumes found
๋ง๋ pv๊ฐ ์์ผ๋ฏ๋ก ๋น์ฐํ ๋จ์ง ์๋๋ค.
pv ๋ง๋ค๊ธฐ
์ด์ pv๋ฅผ ๋ง๋ค์ด ๋ณด์.
# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
๋ค์ ํ๋ฒ pvscan์ผ๋ก ํ์ธ.
# pvscan
PV /dev/sdb lvm2 [2.00 GiB]
PV /dev/sdc lvm2 [2.00 GiB]
Total: 2 [4.00 GiB] / in use: 0 [0 ] / in no VG: 2 [4.00 GiB]
vg ๋ง๋ค๊ธฐ
์ด์ vg๋ฅผ ์์ฑํ๋ค. lv์ ๊ทธ๋ฃน์ผ๋ก ํ๋ ์ด์์ PV๋ฅผ ๋ณผ๋ฅจ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ค๋ค.
# vgcreate myVG /dev/sdb /dev/sdc
Volume group "myVG" successfully created
lv ๋ง๋ค๊ธฐ
์ด์ lv๋ฅผ ์์ฑํ๋ค. ํฌ๊ธฐ๋ 1G๋ก ์ก์์ค๋ค.
# lvcreate -L 1000M myVG
Logical volume "lvol0" created
lvdisplay๋ก lv ์ ๋ณด๋ฅผ ํ์ธํด ๋ณด์.
#lvdisplay
--- Logical volume ---
LV Name /dev/myVG/lvol0
VG Name myVG
LV UUID fxc9Lm-MmRh-JTg2-rt6u-2shi-KvPN-udIS73
LV Write Access read/write
LV Status available
# open 0
LV Size 1000.00 MiB
Current LE 250
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
/dev/myVG/lvol0์ผ๋ก ์ ์์ฑ๋์์์ ๋ณผ ์ ์๋ค.
mountํด์ ์ ์ฌ์ฉํ๊ธฐ
์ด์ ํ์ผ ์์คํ ์ฌ์ฉํ๋ฏ์ด ํฌ๋งทํ๊ณ ๋ง์ดํธํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
# mkfs.ext4 /dev/myVG/lvol0
# mount -t ext4 /dev/myVG/lvol0 /mnt/ftp/
# mount | grep mnt
/dev/mapper/myVG-lvo10 /mnt/ftp type ext4 (rw)
Volume ๊ด๋ฆฌํ๊ธฐ
๋ณผ๋ฅจ ํฌ๊ธฐ ํค์ฐ๊ธฐ. ์ฌ์ฉํ๋ค ๋ณด๋ ๋ณผ๋ฅจ์ด ๊ฝ์ฐผ๋ค. LV์ ํฌ๊ธฐ๋ฅผ 500M ๋งํผ ์ฆ๊ฐ์์ผ ๋ณด์.
# lvextend -L+500M /dev/myVG/lvol0 /dev/sdb /dev/sdc
Extending logical volume lvol0 to 1.46 GiB
Logical volume lvol0 successfully resized
lv ํฌ๊ธฐ๊ฐ ํ์ฅ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ ๋ณผ๋ฅจ๋ง ์ปค์ง ์ํ์ด๋ฉฐ ์ค์ ํ์ผ ์์คํ ์ ํ์ฅ๋์ง ์์ ์ํ์ด๋ค.
# df -h
/dev/mapper/myVG-lvol0 985M 18M 918M 2% /mnt/ftp
ํ์ผ ์์คํ ์ ๋๋ ค๋ณด์. ํฌ๋งทํ์ง ์๊ณ ํํฐ์ ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
# resize2fs /dev/myVG/lvol0
resize2fs 1.41.14 (22-Dec-2010)
Filesystem at /dev/myVG/lvol0 is mounted on /mnt/ftp; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myVG/lvol0 to 384000 (4k) blocks.
The filesystem on /dev/myVG/lvol0 is now 384000 blocks long.
๋ง์ง๋ง์ผ๋ก df
๋ cfdisk
๋ก ํํฐ์
ํฌ๊ธฐ๊ฐ ์ค์ ๋ก ์ฆ๊ฐํ๋์ง ํ์ธํ๋ฉด ๋๋ค.