1、LVM存在的意義
相信不少Linux的用戶都曾遇見這樣一個問題:在爲系統建立分區時,因爲對各個硬盤分區的容量的評估和分配不精確,可能致使某個分區不夠用的現象。一般狀況下大多數系統管理員可能會選擇備份整個系統、清除硬盤、從新對硬盤分區,而後恢復數據到新分區。固然也有人使用動態調整磁盤的工具,可是這需要從新引導系統才能實現,對於不少關鍵的服務器,停機是不可接受的,並且對於添加新硬盤,但願一個能跨越多個硬盤驅動器的文件系統時,分區調整程序就不能解決問題。
所以完美的解決方法應該是在零停機前提下能夠自如對文件系統的大小進行調整,能夠方便實現文件系統跨越不一樣磁盤和分區。當Linux提供的LVM邏輯盤卷管理機制的出現,當即就完美的解決許多用戶的煩惱。
2、什麼是LVM
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是創建在硬盤和分區之上的一個邏輯層,來提升磁盤分區管理的靈活性。spa
LVM能夠整合多個物理分區在一塊兒,讓這些分區看起來像是一個磁盤同樣,並且還能夠添加或刪除新的物理分區,這樣一來就使得整個磁盤空間的使用具備至關好的彈性。3d
3、LVM中的基本術語
1.物理卷(Physical Volume,PV)
A、物理卷在LVM系統中處於最底層。
B、物理卷能夠是整個硬盤、硬盤上的分區或從邏輯上與磁盤分區具備一樣功能的設備(如:RAID)。
C、物理卷是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
2.卷組(Volume Group, VG)
A、 卷組創建在物理卷之上,它由一個或多個物理卷組成。
B、 卷組建立以後,能夠動態地添加物理捲到卷組中,在卷組上能夠建立一個或多個「LVM分區」(邏輯卷)。
C、 一個LVM系統中能夠只有一個卷組,也能夠包含多個卷組。
D、LVM的卷組相似於非LVM系統中的物理硬盤。
3.邏輯卷(Logical Volume, LV)
A、 邏輯卷創建在卷組之上,它是從卷組中「切出」的一塊空間。
B、邏輯卷建立以後,其大小能夠伸縮。
C、LVM的邏輯卷相似於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統(好比,/home或者/usr等)。
4.物理區域(Physical Extent, PE)
A、每個物理卷被劃分爲基本單元(稱爲PE),具備惟一編號的PE是能夠被LVM尋址的最小存儲單元。
B、 PE的大小可根據實際狀況在建立物理卷時指定,默認爲4 MB。
C、 PE的大小一旦肯定將不能改變,同一個卷組中的全部物理卷的PE的大小須要一致。
4、LVM的建立
LVM各階段的實現流程圖
1、分割分區:
# fdisk /dev/sdb # fdisk -l /dev/sdb
2、PV階段:
pvcreate /dev/sda將分區轉成pv
pvscan查看pv被vg使用狀況
pvdisplay PE是在創建 VG 時纔給予的參數,此時pv內無任何pe
# pvcreate /dev/sdb1 /dev/sdb2 # pvscan # pvdisplay
3、VG階段:vg當作一個硬盤
vgcreate -s N[M|G|T] VG名稱 pv名稱 利用pv創建vg,並指定PE大小
vgscan 查看是否有vg
pvscan查看pv被vg使用狀況
vgdisplay查看vg總量和pe數狀況
# vgcreat -s 16M myvg /dev/sdb1 /dev/sdb2 # vgscan # pvscan # vgdisplay
4、LV階段:
lvcreate [-l N] [-n LV名稱] vg都分配給lv,創建lv分割
lvdisplay 查看lv分割區詳細屬
# lvcreate -l SIZE -n lv1 myvg # ll dev/myvg/lv1 # lvdisplay
5、文件系統階段:格式化lv分區並掛載使用
mkfs -t ext3 /dev/myvg/lv1 格式化
mkdir /mnt/lvm
mount /dev/myvg/lv1 /mnt/lvm創建一個目錄掛載lv分區,就能夠用了。
# mkfs -t ext3 /dev/myvg/lv1 # mkdir /mnt/lvm # mount /dev/myvg/lv1 /mnt/lvm # df
5、擴展LVM的容量
1、用 fdisk建具備8e system ID 的partition
二、用 pvcreate 建PV
三、用 vgextend 將 PV 加入vg
四、用lvextend命令對物理邊界進行擴展
五、用resize2fs命令對邏輯邊界進行擴展
# lvextend -L SISE /path/to/lv # resize2fs /path/to/device
6、縮減LVM的容量
一、查看當前LVM信息並肯定縮減後的邏輯卷至少能容納原有的全部數據;
2、卸載並強行檢測文件系統;
3、用lvreduce命令在物理上縮減邏輯卷的邊界
四、用resize2fs命令在邏輯上對邏輯卷的空間大小進行縮減
# e2fsck [-t fs_type] [-f] [-p] /path/to/device # lvreduce -L [-]SIZE /path/to/lv # resize2fs /path/to/device SIZE
7、LVM的系統快照
快照區與被快照的 LV 必需要在同一個VG上頭。因此要VG有多餘的容量來做爲快照區。
要復原的數據量不可以高於快照區所能負載的實際容量。
1、創建:
將快照分區加入vg,
利用# lvcreate -l 60 -s -n mylv /dev/myvg/lv1 就能夠了,掛載來看,與lvm分區如出一轍
二、還原:不是直接格式化lv再將快照區複製給lv。而是把快照區打包備份出來,移除快照區,格式化lv,利用打包的備份還原。
三、用於測試環境:卸載原分區,給快照分區做爲測試環境。卸載移除快照分區,從新創建快照分區,又復原了。
8、移除LVM
若是你尚未將 LVM 關閉就直接將那些 partition 刪除或轉爲其它用途的話,系統是會發生很大的問題的!
先卸載系統上面的 LVM 檔案系統 (包括快照與全部 LV);
使用 lvremove 移除 LV ;
使用 vgchange -a n VGname 讓 VGname 這個 VG 不具備 Active 的標誌;
使用 vgremove 移除 VG:
使用 pvremove 移除 PV;