1. 程式人生 > >LVM原理與實現過程

LVM原理與實現過程

LVM原理與實現過程

一、什麽是LVM

不管是使用傳統的MBR分區方式或者是GPT的分區方式,在最後數據量逐漸變大的過程中都會出現空間不足的情況,但是若是使用將此分區的數據全部遷移至一個更大空間的磁盤上的遷移時間也是不可想象的,為了解決這個問題,LVM就誕生了。
LVM(Logical volume Manager)是邏輯卷管理的簡稱。
LVM的工作原理其實很簡單,它就是通過將底層的物理硬盤抽象的封裝起來,然後以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對於分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。比如說我增加一個物理硬盤,這個時候上層的服務是感覺不到的,因為呈現給上次服務的是以邏輯卷的方式。

LVM最大的特點就是可以對磁盤進行動態管理。因為邏輯卷的大小是可以動態調整的。


二、LVM原理

技術分享圖片
PV(physical volume):物理卷在邏輯卷管理系統最底層,可為整個物理硬盤或實際物理硬盤上的分區。
VG(volume group):卷組建立在物理卷上,一卷組中至少要包括一物理卷,卷組建立後可動態的添加卷到卷組中,一個邏輯卷管理系統工程中可有多個卷組。
LV(logical volume):邏輯卷建立在卷組基礎上,卷組中未分配空間可用於建立新的邏輯卷,邏輯卷建立後可以動態擴展和縮小空間。
PE(physical extent):物理區域是物理卷中可用於分配的最小存儲單元,物理區域大小在建立卷組時指定,一旦確定不能更改,同一卷組所有物理卷的物理區域大小需一致,新的pv加入到vg後,pe的大小自動更改為vg中定義的pe大小。

LE(logical extent):邏輯區域是邏輯卷中可用於分配的最小存儲單元,邏輯區域的大小取決於邏輯卷所在卷組中的物理區域的大小。


三、LVM實現過程

1、創建PV(即從一塊硬盤中創建分區,或者直接將此硬盤作為一個PV)
需要將此分區的標誌該為lvm格式
技術分享圖片
pvcreate /dev/vdb1
pvcreate /dev/vdb2
技術分享圖片
2、創建VG
vgcreate vg0 /dev/vdb1 vg0任意,表示將/dev/vdb1加入到vg0這個物理卷組中
技術分享圖片
3、創建LV
lvcreate -L 50M -n lv0 vg0
-L 表示大小,該lv0的物理卷大小設置為50M
-n 表示邏輯卷的名字,可任意
技術分享圖片
4、格式化此邏輯卷
若是xfs文件系統,僅可以進行拉申,不可以進行縮減

若是ext4文件系統,可以進行拉申,也可以進行縮減
技術分享圖片
此時呈現給上層服務是邏輯卷的狀態,但是上層服務是沒有感知的,可以將邏輯卷與真實的硬盤分區一樣的進行使用。


四、xfs文件系統

當物理卷組中的空間足夠使用時,直接對邏輯卷進行拉申即可
lvextend -L 500M /dev/vg0/lv0 對設備進行拉申
xfs_growfs /dev/vg0/lv0 為熱拉申,即在設備/dev/vg0/lv0正在使用的情況下進行拉申操作
技術分享圖片
技術分享圖片
設備與文件系統均被擴展至500M
當物理卷組中的空間不夠使用時,若物理卷空間足夠,之間將物理卷中沒有加入物理圈足中的分區直接加入到物理圈足中,如果物理卷不夠時,在硬盤中在進行分區,或者在加入新的硬盤。
技術分享圖片
/dev/vdb4是擴展分區
pvcreate /dev/vdb5
vgextend vg0 /dev/vdb5
lvextend -L 1G /dev/vg0/lv0
xfs_growfs /dev/vg0/lv0
技術分享圖片


五、ext4文件系統

(1)拉申操作
lvextend -L 500M /dev/vg0/lv0 拉申設備
resize2fs /dev/vg0/lv0 拉申文件系統
技術分享圖片
(2)縮減操作
umount /mnt/
e2fsck -f /dev/vg0/lv0 對邏輯卷中的文件進行掃描,以確定需要縮減多少空間,以免出現丟失文件的情況
resize2fs /dev/vg0/lv0 100M 縮減文件系統到100M
技術分享圖片
lvreduce -L 100M /dev/vg0/lv0 縮減設備至100M
(3)遷移操作
技術分享圖片
若需要將/dev/vdb1物理卷上的文件全部遷移至/dev/vdb2物理卷上,然後將/dev/vdb1從物理卷中取出
pvmove /dev/vdb1 /dev/vdb2
技術分享圖片
遷移成功
vgreduce vg0 /dev/vdb1
pvremove /dev/vdb1
(4)快照
通過使用lvm的快照我們可以輕松的備份數據,由於snapshot和源lvm的關系,snapshot只能夠臨時使用,不能脫離源lvm而存在.
snapshotCOW(COPY-ON-WRITE)簡單原理:
技術分享圖片
當一個snapshot創建的時候,僅拷貝原始卷裏的數據,這部是物理上的數據拷貝,因此snapshot創建的特別塊,當原始卷裏的數據由寫入時,備份卷開始記錄原始卷哪些數據發生了變化,然後在原始卷新書局覆蓋舊數據時,將舊數據拷貝到snapshot的預留空間中,起到備份數據的作用,就保證了所有數據和創建備份卷之前的數據一致性。
snapshot的特點:
采用COW實現方式時,snapshot的大小並不需要和原始卷一樣大
1、根據原始卷數據的改變大小範圍來設置
2、根據原始卷數據的更新頻率來定,一旦snapshot的空間記錄滿了原始卷塊變換的信息,那麽這個snapshot就不能使用了
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
創建一個50M 名字為lv0backup源設備為/dev/vg0/lv0的快照
此快照不需要格式化,直接進行掛載使用就行

LVM原理與實現過程