首頁 > 軟體

Linux基礎教學:邏輯卷管理LVM的原理與實現方式

2020-06-16 16:52:56

今天我們來了解一下LVM的概念、作用以及使用方法,幫助大家了解LVM,並能夠使用LVM對您的磁碟系統進行靈活的設定和管理。

一,什麼是LVM
LVM是邏輯卷管理(Logical Volume Manager)的簡稱,它是對磁碟分割區進行管理的一種機制,簡歷在磁碟和分割區之上的一個邏輯層,用來提高磁碟管理的靈活性。通過LVM可以將若干個磁碟分割區連線為一個整塊的捲組(Volume Group),形成一個儲存池。可以在捲組上隨意建立邏輯卷(Logical Volume),並進一步在邏輯卷上建立檔案系統,與直接的物理儲存在管理上相比,提供了更好的靈活性。
LVM本質上是一個虛擬的裝置驅動,處於物理裝置和檔案系統層之間,維護這個邏輯盤區和物理盤區之間的對映。LVM主要是通過DM技術實現的,即Device mapper裝置對映技術。

Device Mapper Kernel Architecture即DM裝置對映的核心架構,其中DM支援的技術比較廣,包含linear線性連結,類似於JBod技術,可以將多個磁碟組織成一塊磁碟使用;還有mirror映象技術,可以實現資料的備份;snapshot即快照卷技術,可以將系統之前某一時刻儲存下來,等後續如果系統出現錯誤,需要恢復,便可以使用快照來恢復;multipath多路徑可以讓伺服器有多條線路傳輸資料,當一條線路出現問題後,系統仍然可以通過其他線路順利的進行資料的傳輸。
二,LVM的優點
LVM將儲存虛擬化,使用邏輯卷,你不會受限於物理磁碟的大小,另外與硬體相關的儲存設定會被其隱藏,可以不停止應用或解除安裝檔案系統就能直接調整捲大小和資料遷移,減少操作成本。LVM與直接使用物理儲存相比,有以下優點:
(1)靈活的容量
當使用邏輯卷時,檔案系統可以擴充套件到多個磁碟上,你可以聚合多個磁碟或磁碟分割區成單一的邏輯卷。
(2)可伸縮的儲存池
你可以使用簡單的命令來擴大或縮小邏輯卷大小,不用重新格式化或分割區磁碟裝置。
(3)線上的資料分配
你可以線上移動資料,資料可以在磁碟線上的情況下重新分配。
(4)便捷的裝置命名
邏輯卷可以按你覺得方便的方式來起任何的名稱。
(5)映象捲
LVM邏輯卷提供方便的方法來映象你的資料。
(6)快照捲
使用邏輯卷,你可以獲得裝置快照用來一致性備份或者測試資料更新效果而不影響真實資料。
三,基本概念

1,物理卷:PV(Physical Volume)
物理捲在邏輯管理中處於最底層,它可以是實際物理磁碟上的分割區,也可以是整個物理磁碟,甚至可以是RAID磁碟陣列。
2,捲組:VG(Volume Group)
捲組建立在物理卷之上,一個捲組中至少包括一個物理卷,在捲組簡歷之後可以動態的擴充套件或縮小空間。
3,邏輯卷:LV(Logical Volume)
邏輯卷建立在捲組之上,捲組中的未分配空間可以用於建立新的邏輯卷,邏輯卷建立後可以動態的擴充套件或縮小空間。系統中的多個邏輯卷可以屬於同一個捲組,也可以屬於不同的多個捲組。
4,物理盤區:PE(Physical Extent)
物理盤區是物理捲中可用於分配的最小的儲存單元,物理盤區的大小可根據實際情況在建立物理卷的時候指定。物理盤區大小一旦確定將不能更改,同一卷組中所有物理的物理盤區大小都一致。
5,邏輯盤區:LE(Logical Extent)
邏輯盤區是邏輯卷中可用於分配的最小的儲存單元,邏輯盤區的大小取決於邏輯卷縮在捲組物理盤區的大小。
四,常用命令
PV
pvcreat,pvremove,pvscan,pvdisplay,pvmove
VG
vgvreat,vgremove,vgextend,vgreduce,vgs,vgdisplay,vgscan
LV
lvcreat,lvremove,lvextend,lvreduce,lvs,lvdisplay
五,LVM邏輯卷管理操作詳解
首先建立三個PV分割區
#fdisk /dev/sda
n(新建分割區)
+7G
n
+3G
n
+5G
t(調整分割區型別)
10
8e(調整為LVM型別)
t
11
8e
t
12
8e
w(儲存退出)
#partprobe /dev/sda
解釋:重讀/dev/sda分割區的資訊
#cat /proc/partitions
解釋:檢視是否有重讀分割區資訊後更新成功
#pvcreat /dev/sda{10,11}
解釋:建立物理卷sda10和sda11
#pvs
解釋:檢視當前系統的PV資訊
#pvdisplay /dev/sda10
解釋:檢視sda10物理卷的詳細資訊
#pvscan
解釋:掃描當前系統一共有多少個物理卷
建立VG卷組
#vgs
解釋:檢視當前系統的捲組資訊
#vgcreat myvg /dev/sda{10,11}
解釋:建立卷組,將sda10和sda11放到myvg的捲組中
#vgs
解釋:再來檢視一下建立的卷組的資訊
#vgdisplay myvg
解釋:顯示卷組建立的詳細資訊,可以看到PE Size的大小為4M
#pvdisplay /dev/sda10
解釋:可以發現PE Size和Total PE的數值都顯示出來了
#vgremove myvg
解釋:移除myvg
#vgcreat -s 8M myvg /dev/sda{10,11}
解釋:重新指定PE物理盤區的單位大小為8M
#vgdisplay myvg
解釋:顯示卷組的詳細資訊,並且可以看到PE物理盤區的大小為8M
執行縮減VG捲組操作
#pvs
解釋:可以檢視每個磁碟對應的卷組的對應項
#pvmove /dev/sda11
解釋:先把sda11上的物理盤區的資料先挪到其他盤區
#vgreduce myvg /dev/sda11
解釋:從myvg中把sda11移除
#pvremove /dev/sda11
解釋:最後可以執行刪除物理卷sda11的操作
擴充套件新的捲組VG操作
#pvcreat /dev/sda12
解釋:建立物理卷sda12
#vgextend myvg /dev/sda12
解釋:在myvg的捲組中加入物理卷sda12
#pvdisplay /dev/sda12
解釋:可以發現當sda12加入myvg的捲組後,sda12的預設物理盤區大小就自動更新為8M
建立邏輯卷
#lvcreat -L 50M -n testlv myvg
解釋:對卷組myvg建立一個大小為50M名稱為testlv的LV邏輯卷
#lvdisplay /dev/myvg/testlv
解釋:顯示/myvg/testlv下的邏輯卷的詳細資訊
#mke2fs -j /dev/myvg/testlv
解釋:對邏輯卷testlv進行高階格式化為ext3檔案系統
#mount /dev/myvg/testlv /mnt
解釋:將檔案系統testlv掛載至/mnt目錄下
#ls /mnt
解釋:在/mnt目錄下可以看到lost+found檔案。說明掛載成功,該檔案系統可用
#mount
解釋:可以看到/mnt下掛載的是/dev/mapper/myvg-testlv檔案
#ls -l /dev/mapper
解釋:可以看到這個是屬於b塊裝置檔案
#ls -l /dev/myvg
解釋:可以看到/dev/myvg下的testlv是一個連結檔案,指向/dev/mapper/myvg-testlv
移除邏輯卷
#umount /mnt
解釋:如果一個邏輯卷處於掛載的狀態是處於開啟的狀態,是無法直接移除的,需要先解除安裝
#lvremove /dev/myvg/testlv
解釋:可以移除邏輯卷成功
擴充套件邏輯卷
#lvcreat -L 2G -n testlv myvg
解釋:由於之前的刪除了,所以重新使用卷組myvg建立一個2G的邏輯卷testlv
#mke2fs -j /dev/myvg/testlv
解釋:對重新建立的邏輯卷testlv進行高階格式化為ext3檔案系統
#mkdir /users
解釋:建立一個使用者的目錄,用來掛載邏輯卷的檔案系統
#vim /etc/fstab
解釋:進入/etc/fstab的組態檔中
/dev/myvg/testlv /users ext3 defaults,acl 0 0
解釋:在/etc/fstab組態檔中新增上面的一行資訊
#mount -a
解釋:-a選項表示掛載/etc/fstab檔案中定義的所有的檔案系統
#df -lh
解釋:此時發現/dev/mapper/myvg-testlv的大小是2G
#lvextend -L 5G /dev/myvg/testlv
解釋:將邏輯卷testlv的物理邊界擴充套件到5G大小
#lvs
解釋:發現testlv的大小是擴充套件到了5G,但是目前只是擴充套件了物理邊界,沒有擴充套件邏輯邊界
#resize2fs -p /dev/myvg/testlv
解釋:將邏輯卷testlv的邏輯邊界也擴充套件到和物理邊界一樣的大小5G
#df -lh
解釋:發現dev/mapper/myvg-testlv也顯示了5G
#cd /users
#ls
解釋:仍然可以正常的檢視檔案inittab
縮減邏輯卷
注意:
1,不能線上縮減,得先解除安裝
2,確保縮減的空間大小仍然能儲存原有的所有資料
3,在縮減之前應該先強行檢查檔案,以確保檔案系統處於一致性狀態
#df -lh
解釋:先檢視一下邏輯卷的大小
#umount /users
解釋:解除安裝/users掛載的目錄
#e2fsck -f /dev/myvg/testlv
解釋:強行檢查邏輯卷檔案系統內部的一致性
#resize2fs /dev/myvg/testlv 3G
解釋:首先縮減testlv邏輯卷的邏輯邊界至3G大小
#lvreduce -L 3G /dev/myvg/testlv
解釋:然後再縮減testlv邏輯卷的物理邊界
#mount -a
解釋:重讀/etc/fstab中定義的所有檔案系統,重新掛載縮減後的testlv邏輯卷
建立快照捲
注意:
1,生命週期為整個資料時長,在這段時長內,資料的增長量不能超出快照捲大小
2,快照捲應該是唯讀的
3,跟原卷在同一個捲組內
#cp /ect/inittab ./
解釋:將/ect/inittab複製到當前目錄下來
#cp /etc/issue ./
#lvcreat -L 20M -n test-snap -s -p r /dev/myvg/testlv
解釋:-L快照捲的大小為20M,-n快照捲的名稱為test-snap,-s建立快照捲,-p許可權為唯讀
#mount /dev/myvg/tsetlv-snap /mnt
解釋:掛載快照卷後,發現資料內容儲存的是備份的那一時刻的資料資訊,後面如果修改或新增都不會有顯示
#tar jcf /tmp/users.tar.bz2 inittab issue
解釋:將快照捲下的檔案壓縮為/tmp/users.tar.bz2檔案
#umount /mnt
解釋:此時快照捲的作用結束,可以解除安裝快照捲
#lvremove /dev/myvg/testlv-snap
解釋:移除快照捲testlv-snap
#cd /users
#rm inittab issue messages
解釋:模擬無意間刪除了/users目錄下的資訊
#tar xf /tmp/users.tar.bz2
解釋:將剛剛儲存的快照捲的打包壓縮檔案展開至/users目錄下,從而完成用快照捲還原到過去特定時刻的作用

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-04/151917.htm


IT145.com E-mail:sddin#qq.com