1、什麼是LVMide
不論是使用傳統的MBR分區方式或者是GPT的分區方式,在最後數據量逐漸變大的過程當中都會出現空間不足的狀況,可是如果使用將此分區的數據所有遷移至一個更大空間的磁盤上的遷移時間也是不可想象的,爲了解決這個問題,LVM就誕生了。
LVM(Logical volume Manager)是邏輯卷管理的簡稱。
LVM的工做原理其實很簡單,它就是經過將底層的物理硬盤抽象的封裝起來,而後以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,咱們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其經過對底層的硬盤進行封裝,當咱們對底層的物理硬盤進行操做時,其再也不是針對於分區進行操做,而是經過一個叫作邏輯卷的東西來對其進行底層的磁盤管理操做。好比說我增長一個物理硬盤,這個時候上層的服務是感受不到的,由於呈現給上次服務的是以邏輯卷的方式。
LVM最大的特色就是能夠對磁盤進行動態管理。由於邏輯卷的大小是能夠動態調整的。3d
2、LVM原理blog
PV(physical volume):物理卷在邏輯卷管理系統最底層,可爲整個物理硬盤或實際物理硬盤上的分區。
VG(volume group):卷組創建在物理捲上,一卷組中至少要包括一物理卷,卷組創建後可動態的添加捲到卷組中,一個邏輯卷管理系統工程中可有多個卷組。
LV(logical volume):邏輯卷創建在卷組基礎上,卷組中未分配空間可用於創建新的邏輯卷,邏輯卷創建後能夠動態擴展和縮小空間。
PE(physical extent):物理區域是物理卷中可用於分配的最小存儲單元,物理區域大小在創建卷組時指定,一旦肯定不能更改,同一卷組全部物理卷的物理區域大小需一致,新的pv加入到vg後,pe的大小自動更改成vg中定義的pe大小。
LE(logical extent):邏輯區域是邏輯卷中可用於分配的最小存儲單元,邏輯區域的大小取決於邏輯卷所在卷組中的物理區域的大小。rem
3、LVM實現過程get
一、建立PV(即從一塊硬盤中建立分區,或者直接將此硬盤做爲一個PV)
須要將此分區的標誌該爲lvm格式
pvcreate /dev/vdb1
pvcreate /dev/vdb2
二、建立VG
vgcreate vg0 /dev/vdb1 vg0任意,表示將/dev/vdb1加入到vg0這個物理卷組中
三、建立LV
lvcreate -L 50M -n lv0 vg0
-L 表示大小,該lv0的物理卷大小設置爲50M
-n 表示邏輯卷的名字,可任意
四、格式化此邏輯卷
如果xfs文件系統,僅能夠進行拉申,不能夠進行縮減
如果ext4文件系統,能夠進行拉申,也能夠進行縮減
此時呈現給上層服務是邏輯卷的狀態,可是上層服務是沒有感知的,能夠將邏輯卷與真實的硬盤分區同樣的進行使用。it
4、xfs文件系統class
當物理卷組中的空間足夠使用時,直接對邏輯捲進行拉申便可
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
基礎
5、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的大小並不須要和原始卷同樣大
一、根據原始卷數據的改變大小範圍來設置
二、根據原始卷數據的更新頻率來定,一旦snapshot的空間記錄滿了原始卷塊變換的信息,那麼這個snapshot就不能使用了
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
建立一個50M 名字爲lv0backup源設備爲/dev/vg0/lv0的快照
此快照不須要格式化,直接進行掛載使用就行擴展