邏輯磁碟管理員 LVM (Logical Volume Manager),簡單來說便是把一堆硬碟結合成為一顆大硬碟讓空間使用更具彈性,整個 LVM 組成的架構圖請參考下列二張圖表。(圖片來源: RedHat - LVM Administrator Guide)
下圖為 PV (Physical Volume) 示意圖
下圖為 LVM Logical Volume Components (LVM 元件組成示意圖)
本次實作為將二顆 2 GB 的硬碟 (PV) 結合成為一顆 4 GB 的大硬碟 (VG) 在這大硬碟中切割出二顆 1 GB 的硬碟 (LV),相關資訊如下:
PV (Physical Volume): sdb (2 GB)、sdc (2 GB)
VG (Volume Group): myvg (4 GB)
LV (Logic Volume): mylv1 (1 GB)、mylv2 (1 GB)
同樣先以「fdisk」指令對 /dev/sdb、/dev/sdc 硬碟進行分割區及格式設定,格式請設定為**「8e(Linux LVM)」**:
#fdisk /dev/sdb
n > p > 1 > enter > enter > t > 8e > w
#fdisk /dev/sdc
n > p > 1 > enter > enter > t > 8e > w
#cat /proc/partitions | grep -E "sdb|sdc"
8 16 2097152 sdb
8 17 2095662 sdb1
8 32 2097152 sdc
8 33 2095662 sdc1
確定系統可偵測到 /dev/sdb1、/dev/sdc1 分割區後即著手建立 PV、VG、LV 資訊,建立完成後可使用**「pvs、vgs、lvs」查看相對應簡單資訊,或者使用「pvdisplay、vgdisplay、lvdisplay」**查看詳細資訊。
#pvcreate /dev/sd{b,c}1 //建立 PV
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
#vgcreate myvg /dev/sd{b,c}1 //建立 VG
Volume group "myvg" successfully created
#lvcreate -L 1G -n mylv1 myvg //建立 LV
Logical volume "mylv1" created
#lvcreate -L 1G -n mylv2 myvg //建立 LV
Logical volume "mylv2" created
#pvs //查看 PV 資訊
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a- 2.00g 2.00g
/dev/sdc1 lvm2 a- 2.00g 2.00g
#vgs //查看 VG 資訊
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 3.99g 3.99g
#lvs //查看 LV 資訊
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mylv1 myvg -wi-a- 1.00g
mylv2 myvg -wi-a- 1.00g
接著將建立好的二個 LV 格式化後進行建資料夾及掛載的動作:
#mkfs.ext4 /dev/myvg/mylv1 //格式化 LV
#mkfs.ext4 /dev/myvg/mylv2
#mkdir /mnt/mylv{1,2} //建立掛載資料夾
#mount /dev/myvg/mylv1 /mnt/mylv1 //掛載 LV
#mount /dev/myvg/mylv2 /mnt/mylv2
#df -h //查看檔案系統掛載資訊
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root
7.5G 2.1G 5.0G 30% /
tmpfs 504M 88K 504M 1% /dev/shm
/dev/sda1 485M 29M 431M 7% /boot
/dev/mapper/myvg-mylv1 1008M 34M 924M 4% /mnt/mylv1
/dev/mapper/myvg-mylv2 1008M 34M 924M 4% /mnt/mylv2
----- 將 LV (mylv1) 由 1 GB 空間擴大為 1.5 GB -----
一般來說將 LV 空間擴大比較簡單也才是合理的狀況,當然前提是 VG 還有空間可以撥給 LV 使用,因此只要使用「lvextend、resize2fs」即可達成將 LV 空間線上擴充的目的。
#lvextend -L +512M /dev/myvg/mylv1
Extending logical volume mylv1 to 1.50 GiB
Logical volume mylv1 successfully resized
#resize2fs -p /dev/myvg/mylv1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv1 is mounted on /mnt/mylv1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv1 to 393216 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 393216 blocks long.
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root
7.5G 2.1G 5.0G 30% /
tmpfs 504M 88K 504M 1% /dev/shm
/dev/sda1 485M 29M 431M 7% /boot
/dev/mapper/myvg-mylv1 1.5G 34M 1.4G 3% /mnt/mylv1
/dev/mapper/myvg-mylv2 1008M 34M 924M 4% /mnt/mylv2
----- 將 LV (mylv2) 由 1 GB 空間縮小為 512 MB -----
一般來說將 LV 空間縮小比較複雜並且比較不合理 (資料可能會有遺失的風險!!),而縮小 LV 的空間會還給 VG,必須先把 LV 離線 (umount) 之後透過「resize2fs、lvreduce、mount」才可達成將 LV 空間縮小的目的。
#umount /mnt/mylv2
#e2fsck -f /dev/myvg/mylv2
e2fsck 1.41.12 (17-May-2010)
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/myvg/mylv2: 11/65536 files (0.0% non-contiguous), 12635/262144 blocks
#resize2fs /dev/myvg/mylv2 512M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv2 to 131072 (4k) blocks.
The filesystem on /dev/myvg/mylv2 is now 131072 blocks long.
#lvreduce -L 512M /dev/myvg/mylv2
WARNING: Reducing active logical volume to 512.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv2? [y/n]: y
Reducing logical volume mylv2 to 512.00 MiB
Logical volume mylv2 successfully resized
#mount /dev/myvg/mylv2 /mnt/mylv2
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root
7.5G 2.1G 5.0G 30% /
tmpfs 504M 88K 504M 1% /dev/shm
/dev/sda1 485M 29M 431M 7% /boot
/dev/mapper/myvg-mylv1 1.5G 34M 1.4G 3% /mnt/mylv1
/dev/mapper/myvg-mylv2 504M 33M 446M 7% /mnt/mylv2
以上都是使用指令進行操作,若是在圖形介面環境中您可以使用指令**「system-config-lvm」**呼叫出 Logical Volume Management 管理介面進行 LVM (PV、VG、LV) 的管理。
(上一篇)邁向 RHCE 之路 (Day19) - Software RAID
(下一篇)邁向 RHCE 之路 (Day21) - 主機基礎安全防護 TCP Wrappers
邁向 RHCE 之路系列文章連結