這里引用鳥哥說明
LVM 的重點在於『可以彈性的調整 filesystem 的容量!』而並非在於效能與數據保全上面。 需要文件的讀寫效能或者是數據的可靠性,請參考前面的 RAID 小節。 LVM 可以整合多個實體 partition 在一起, 讓這些 partitions 看起來就像是一個磁碟一樣!而且,還可以在未來新增或移除其他的實體 partition 到這個 LVM 管理的磁碟當中。 如此一來,整個磁碟空間的使用上,實在是相當的具有彈性啊! 既然 LVM 這么好用,那就讓我們來瞧瞧這玩意吧!
什么是 LVM: PV, PE, VG, LV 的意義
LVM 的全名是 Logical Volume Manager,中文可以翻譯作邏輯卷軸管理員。之所以稱為『卷軸』可能是因為可以將 filesystem 像卷軸一樣伸長或縮短之故吧!LVM 的作法是將幾個實體的 partitions (或 disk) 透過軟件組合成為一塊看起來是獨立的大磁碟 (VG) ,然后將這塊大磁碟再經過分割成為可使用分割槽 (LV), 最終就能夠掛載使用了。但是為什么這樣的系統可以進行 filesystem 的擴充或縮小呢?其實與一個稱為 PE 的項目有關! 底下我們就得要針對這幾個項目來好好聊聊!
Physical Volume, PV, 實體卷軸
我們實際的 partition 需要調整系統識別碼 (system ID) 成為 8e (LVM 的識別碼),然后再經過 pvcreate 的命令將他轉成 LVM 最底層的實體卷軸 (PV) ,之后才能夠將這些 PV 加以利用! 調整 system ID 的方是就是透過 fdisk 啦!
Volume Group, VG, 卷軸群組
所謂的 LVM 大磁碟就是將許多 PV 整合成這個 VG 的東西就是啦!所以 VG 就是 LVM 組合起來的大磁碟!這么想就好了。 那么這個大磁碟最大可以到多少容量呢?這與底下要說明的 PE 有關喔~因為每個 VG 最多僅能包含 65534 個 PE 而已。 如果使用 LVM 默認的參數,則一個 VG 最大可達 256GB 的容量啊!(參考底下的 PE 說明)
Physical Extend, PE, 實體延伸區塊
LVM 默認使用 4MB 的 PE 區塊,而 LVM 的 VG 最多僅能含有 65534 個 PE ,因此默認的 LVM VG 會有 4M*65534/(1024M/G)=256G。 這個 PE 很有趣喔!他是整個 LVM 最小的儲存區塊,也就是說,其實我們的文件數據都是藉由寫入 PE 來處理的。 簡單的說,這個 PE 就有點像文件系統里面的 block 大小啦。 這樣說應該就比較好理解了吧?所以調整 PE 會影響到 VG 的最大容量喔!
- Logical Volume, LV, 邏輯卷軸
最終的 VG 還會被切成 LV,這個 LV 就是最后可以被格式化使用的類似分割槽的咚咚了!那么 LV 是否可以隨意指定大小呢? 當然不可以!既然 PE 是整個 LVM 的最小儲存單位,那么 LV 的大小就與在此 LV 內的 PE 總數有關。 為了方便使用者利用 LVM 來管理其系統,因此 LV 的裝置檔名通常指定為『 /dev/vgname/lvname 』的樣式!
此外,我們剛剛有談到 LVM 可彈性的變更 filesystem 的容量,那是如何辦到的?其實他就是透過『交換 PE 』來進行數據轉換, 將原本 LV 內的 PE 移轉到其他裝置中以降低 LV 容量,或將其他裝置的 PE 加到此 LV 中以加大容量! VG、LV 與 PE 的關系有點像下圖:
圖 3.1.1、PE 與 VG 的相關性圖示
如上圖所示,VG 內的 PE 會分給虛線部分的 LV,如果未來這個 VG 要擴充的話,加上其他的 PV 即可。 而最重要的 LV 如果要擴充的話,也是透過加入 VG 內沒有使用到的 PE 來擴充的!
- 實作流程
透過 PV, VG, LV 的規划之后,再利用 mkfs 就可以將你的 LV 格式化成為可以利用的文件系統了!而且這個文件系統的容量在未來還能夠進行擴充或減少, 而且里面的數據還不會被影響!實在是很『福氣啦!』那實作方面要如何進行呢?很簡單呢! 整個流程由基礎到最終的結果可以這樣看:
圖 3.1.2、 LVM 各組件的實現流程圖示
如此一來,我們就可以利用 LV 這個玩意兒來進行系統的掛載了。不過,你應該要覺得奇怪的是, 那么我的數據寫入這個 LV 時,到底他是怎么寫入硬盤當中的? 呵呵!好問題~其實,依據寫入機制的不同,而有兩種方式:
- 線性模式 (linear):假如我將 /dev/hda1, /dev/hdb1 這兩個 partition 加入到 VG 當中,並且整個 VG 只有一個 LV 時,那么所謂的線性模式就是:當 /dev/hda1 的容量用完之后,/dev/hdb1 的硬盤才會被使用到, 這也是我們所建議的模式。
- 交錯模式 (triped):那什么是交錯模式?很簡單啊,就是我將一筆數據拆成兩部分,分別寫入 /dev/hda1 與 /dev/hdb1 的意思,感覺上有點像 RAID 0 啦!如此一來,一份數據用兩顆硬盤來寫入,理論上,讀寫的效能會比較好。
基本上,LVM 最主要的用處是在實現一個可以彈性調整容量的文件系統上, 而不是在創建一個效能為主的磁碟上
目前使用的lvm版本為2比lvm1增加了在線修改容量
lvm2(rhel4以后)
實現邏輯過程
線性模式(linear):
假如將 /dev/sdb1、/dev/sdb2 這兩個分區加入到 VG 中,並且 VG 只有一個 LV。那么,線性模式就是,當 /dev/sdb1 的容量用完之后,/dev/sdb2 的硬盤才會使用。
交錯模式(triped):
交錯的意思是將一份數據拆成兩部分,分別寫入 /dev/sdb1 和 /dev/sdb2 。如此一來,一份數據寫入兩個磁盤。理論上,讀寫性能會較好。
通常,LVM 最主要的用處就是產生一個大磁盤,而不是在建立性能好的磁盤。所以,我們使用的是 LVM 可以管理整個分區大小的靈活性,而不是着眼在性能上。
因此,LVM 默認的讀寫模式是線性模式。
如果使用交錯模式,要注意,當任何一個分區“歸天”時,所有的數據都會“損壞”。所以,不是很合適使用這種模式。
如果要強調性能與備份,那么就直接使用 RAID 即可,不需要使用 LVM。
fdisk -l看到的sectors和cylinders也是邏輯的值,在LBA模式下,設置的柱面、磁頭、扇區等參數並不是實際硬盤的物理參數
硬盤容量=磁頭數×柱面數×扇區數×512字節
一、 LVM測試過程
1.將新增加硬盤划分4個分區,每個分區1G
這里我選擇的是擴展分區
這里我用的擴展分區,可以看到是4之前是為主分區固定的
這里需要將分區類型轉換成8E,其他分區按照以下同樣分
注意保存不然白做了,
查看分區表設定
將物理卷轉換為lvm卷
pvscan
pvdisplay可以看到的uuid
關於PV命令
pvcreate:將物理分區制作成 物理卷 PV
pvscan:搜索當前系統里所有的具有 PV 屬性的磁盤
pvdisplay:顯示當前系統上的 PV 狀態
pvremove:將 PV 屬性刪除,讓其不具有 PV 屬性,成為一般的分區
創建卷組 VG
顯示當前系統里指定的 VG 或所有 VG 的信息
搜索當前系統里有多少個卷組 VG 存在
將某一個特定的物理卷加入到VG里面,剛剛沒有划分的1個G加入到里面
之前我已經fdisk分區好了
可以看到已經加入到VG里面了
如果需要移除可以直接pvremove刪除物理分區如 pvremove /dev/sdb9
關於VG下命令
vgcreate:建立 VG 。它的參數比較多,一會兒詳細介紹
vgscan:搜索當前系統里有多少個卷組 VG 存在
vgdisplay:顯示當前系統里指定的 VG 或所有 VG 的信息
vgextend:在卷組 VG 中增加額外的物理卷 PV
vgreduce:在卷組 VG 中刪除 物理卷 PV
vgchange:設置 VG 是否啟動(active)
vgremove:刪除一個卷組 VG 本身
如果需要刪除VG直接vgremove
創建LV分區
查詢
格式化LV分區
分區掛載
擴展lv分區,可以在線擴展,不需要umount分區
減少分區大小,要注意一定卸載分區
檢查分區文件系統正確性
這里大小很重要,不然會造成分區錯誤
掛載后查看
自動掛載分區
lvm 命令
pvcreate:將物理分區制作成 物理卷 PV
pvscan:搜索當前系統里所有的具有 PV 屬性的磁盤
pvdisplay:顯示當前系統上的 PV 狀態
pvremove:將 PV 屬性刪除,讓其不具有 PV 屬性,成為一般的分區
lvcreate:用來建立 LV
lvscan:查詢系統上的 LV
lvdisplay:顯示系統上的 LV 狀態
lvextend:在 LV 里增加容量
lvreduce:在 LV 里減少容量
lvremove:刪除一個 LV 本身
lvresize:對 LV 進行容量大小的調整
LVM快照功能
備注:和創建邏輯卷差不多,只是加了參數 -s,快照會占用一定的空間
移除快照
快照也可以掛載跟普通分區掛載一樣的
LVM分區遷移,當硬盤出現問題,可以實現遷移
首先在對應分區創建文件
添加一塊硬盤,並轉換為lvm卷
將新建的pv卷加入到vgtest01中
我們用lvdisplay -m查看lv對應的物理分區
我們遷移物理/dev/sdb5的數據
查詢已經遷移過來了
lvm整個硬盤遷移
注意之前將所有掛載目錄掛載掉
vgchange -a n vgtest01
使用vgchange 將卷組修改為非有效(inactive)
vgexport vgtest01
將硬盤安裝到目標計算機
pvscan 掃描所有的pv
vgimport vgtest01 導入vg
vgchange -a y vgtest01 #將卷組修改為有效(active)配置
mount 掛載
df -h檢驗是否正常










































