優點
比起正常的硬盤分區管理,LVM更富於彈性:
使用卷組(VG),使衆多硬盤空間看起來像一個大硬盤。
使用邏輯卷(LV),可以創建跨越衆多硬盤空間的分區。
可以創建小的邏輯卷(LV),在空間不足時再動態調整它的大小。
在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬盤上的位置,不用擔心沒有可用的連續空間。可以在線(online)對邏輯卷(LV)和卷組(VG)進行創建、刪除、調整大小等操作。LVM上的文件系統也需要重新調整大小,某些文件系統也支持這樣的在線操作。
無需重新啓動服務,就可以將服務中用到的邏輯卷(LV)在線(online)/動態(live)遷移至別的硬盤上。
允許創建快照,可以保存文件系統的備份,同時使服務的下線時間(downtime)降低到最小。
這些優點使得LVM對服務器的管理非常有用,對於桌面系統管理的幫助則沒有那麼顯著,你需要根據實際情況進行取捨。
缺點
只能在Linux上使用。對於其他操作系統(如FreeBSD, Windows等),尚未有官方支持。
在系統設置時需要更復雜的額外步驟。
假如你使用的是btrfs文件系統,那麼它所提供的子卷(subvolume)實際上已經時一層可動態調整的存儲層,此時再用LVM就顯得多餘了。
LVM基本組成塊(building blocks)
LVM利用Linux內核的device-mapper來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。 通過LVM,你可以實現存儲空間的抽象化並在上面建立虛擬分區(virtual partitions),可以更簡便地擴大和縮小分區,可以增刪分區時無需擔心某個硬盤上沒有足夠的連續空間,是用來方便管理的,不會提供額外的安全保證。
LVM的基本組成塊(building blocks)如下:
物理卷Physical volume (PV):可以在上面建立卷組的媒介,可以是硬盤分區,也可以是硬盤本身或者回環文件(loopback file)。物理捲包括一個特殊的header,其餘部分被切割爲一塊塊物理區域(physical extents)。
卷組Volume group (VG):將一組物理卷收集爲一個管理單元。
邏輯卷Logical volume (LV):虛擬分區,由物理區域(physical extents)組成。
物理區域Physical extent (PE):硬盤可供指派給邏輯卷的最小單位(通常爲4MB)。
LVM方式 卷組VG1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |邏輯卷1 15GB |邏輯卷2 35GB |邏輯卷3 200GB | |/dev/MyStorage/rootvol |/dev/MyStorage/homevol |/dev/MyStorage/mediavol | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
創建物理卷(PV)
pvcreate /dev/sdc{1,2}
pvs 查看創建信息
pvdisplay 查看已創建好的物理卷
pvdisplay /dev/sdc1 查看已創建好的物理卷
刪除物理卷(PV)
pvmove /dev/sdc1 移除sdc1
創建卷組(VG)
vgcreate VG_NAME /PATH/PV -s#:PE大小
vgcreate myvg /dev/sdc{1,2}
vgs 命令查看卷組
vgdisplay myvg 命令查看卷組
移除邏輯組(LV)
vgremove myvg 移除myvg
vgreduce myvg 調整myvg大小
創建邏輯卷(LV)
lvcreate –n LV_NAME –L #G VG_NAME
lvcreate -C y -L 10G VG_NAME -n LV_NAME
-C y
參數用來指定邏輯卷的空間分配是連續的,這保證了你所創建的swap空間不會被分散在不連續的物理空間甚至不同的硬盤中。
lvcreate –L 50M –n testlv myvg
lvs 查看邏輯卷
lvdisplay 查看邏輯卷
lvcreate -l +100%FREE VolGroup00 -n lvolmedia
mke2fs –j /dev/myvg/testlv 格式化磁盤
mount /dev/myvg/testlv /mnt 掛載磁盤
移除邏輯卷(LV)
umount /mnt
lvremount /dev/myvg/testlv 移除lv
擴展邏輯卷(LV)
lvextend
-L [+]# /PATH/LV
resize2fs 大小調整
resize –p /PATH/LV
縮減邏輯卷(LV)
1.不能在線操作。
2.確保縮減後的空間能存儲原有數據
3.在縮減後檢查文件的一致性
df –lh
unount
e2fsck –f /dev/myvg/testv
resize2fs /dev/myvg/testlv 100M
lvreduce –L 100M /dev/myvg/testlv
mount /dev/myvg/testlv /mnt