安裝Linux系統時,我們第一個考慮的可能是如何給磁盤分區。Linux的分區工具如fdisk和parted等很難甚至是無法改變分區大小,一旦以後磁盤空間使用殆盡,當我們插上新磁盤後,將會發現我們不得不重新分區格式化,當然之前的數據是必須要備份的,但是這其中仍然存在這數據丟失的風險,有沒有無需重新分區直接使用新加入磁盤的方法呢?LVM真是基於這樣的需求被設計出來的。
LVM(Logical Volume Manager)邏輯卷管理是建立在硬盤和分區之上,文件系統之下的一個邏輯層。注意:不建議將boot放在邏輯卷中。
LVM的工作原理其實很簡單,它就是通過將底層的物理硬盤抽象的封裝起來,然後以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對於分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。比如說我增加一個物理硬盤,這個時候上層的服務是感覺不到的,因爲呈現給上層服務的是以邏輯卷的方式。LVM最大的特點就是可以對磁盤進行動態管理。因爲邏輯卷的大小是可以動態調整的,而且不會丟失現有的數據。如果我們新增加了硬盤,其也不會改變現有上層的邏輯卷。作爲一個動態磁盤管理機制,邏輯卷技術大大提高了磁盤管理的靈活性。
PV:物理卷,處於LVM的最底層,他可以是實際的硬盤、分區或raid設備。和基本的物理存儲介質相比,其中包含有與LVM相關的管理參數。
VG:卷組,建立在物理卷之上,必須有至少一個物理卷,在卷組建立之後可以動態的添加新的物理捲來擴容。
PE:每一個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是在VG過程中配置的,默認爲4MB。
LV:邏輯卷,建立在卷組之上,卷組中的未分配空間可以用於建立新的邏輯卷,邏輯卷建立後可以動態地擴展和縮小空間。系統中的多個邏輯卷可以屬於同一個卷組,也可以屬於不同的多個卷組。
PV管理工具:
pvs:顯示簡要的pv信息,pvdisplay:顯示較詳細的pv信息
pvscan:掃描並瀏覽所有的pv
pvchange:改變pv的屬性
pvck:檢查pv的元數據信息
pvmove:移動PE
pvremove:移除pv卷
pvresize:改變pv的大小
pvcreate /dev/DEVICE:創建pv
[root@linux ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created [root@linux ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created [root@linux ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 ---- 20.00g 20.00g /dev/sdc lvm2 ---- 20.00g 20.00g [root@linux ~]# pvdisplay "/dev/sdb" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID mNZepm-JrpU-4eRX-Hqis-mwXq-ZJFW-or9S2t "/dev/sdc" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdc VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID P2fwdI-2eCR-rgwO-RnUA-4Wh1-62qT-B035Zz
VG管理工具
顯示卷組:vgs,vgdisplay
創建卷組:vgcreate
選項:
-s:指定PE的大小,
-l:給該vg設置最大的lv數,可通過vgchange修改,lvm1默認最大爲255個,lvm2則沒有限制
[root@linux ~]# vgcreate IT /dev/sd{b,c} Volume group "IT" successfully created [root@linux ~]# vgs VG #PV #LV #SN Attr VSize VFree IT 2 0 0 wz--n- 39.99g 39.99g [root@linux ~]# vgdisplay --- Volume group --- VG Name IT System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 39.99 GiB PE Size 4.00 MiB Total PE 10238 Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiB VG UUID TxjZPe-CbN8-Edj3-EHE3-8g3G-cplW-7QFcTw [root@linux ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb IT lvm2 a--u 20.00g 20.00g /dev/sdc IT lvm2 a--u 20.00g 20.00g
vgcfgbackup:備份vg的元數據信息
vgrename:改變vg名
vgsplit:將源vg中pv移到其他vg中
vgreduce:縮減vg大小
vgextent:擴展vg大小
vgremove:移除vg
LV管理工具
lvcreate:創建lv
選項:
-n:設置lv的名字
-L:指定lv的大小
-s:創建lv的快照,後面接源lv的路徑或名字
lvs/lvdisplay:顯示lv的信息
lvremove:移除lv
lvextent:擴展lv
lvreduce:縮減lv