lvm,logical volume manger,是linux內核提供的一種邏輯卷管理功能,由內核驅動和應用層工具組成,它是在硬盤的分區基礎上,創建了一個邏輯層,可以非常靈活且非常方便的管理存儲設備。
LVM利用linux內核的device-mapper功能來實現存儲系統的虛擬化(系統分區獨立于底層硬件)。 通過LVM,可以實現存儲空間的抽象化并在上面建立虛擬分區(virtual partitions),可以更簡便地擴大和縮小分區,可以增刪分區時無需擔心某個硬盤上沒有足夠的連續空間,避免為正在使用的磁盤重新分區的麻煩、為調整分區而不得不移動其他分區的不便,它相比傳統的分區系統可以更靈活地管理磁盤。
一、LVM的基本組成
1、物理卷 (PV,Physical Volume)
一個可供存儲LVM的塊設備. 如硬盤分區(MBR或GPT分區)、SAN 的硬盤、RAID 或 LUN,一個回環文件, 一個被內核映射的設備 (例如 dm-crypt),它包含一個特殊的LVM頭,它是 LVM 構建的實際硬件或存儲系統。
2、卷組 (VG,Volume Group)
卷組是對一個或多個物理卷的集合,并在設備文件系統中顯示為 /dev/VG_NAME。
3、邏輯卷 (LV,Logical Volume)
邏輯卷是可供系統使用的最終元設備,它們在卷組中創建和管理,由物理塊組成,實際上就是一個虛擬分區,并顯示為 /dev/VG_NAME/LV_NAME,通常在其上可以創建文件系統。
4、物理塊 (PE,Physical Extends)
如果一個邏輯卷需要分配多個物理塊,它們將會成為一個卷組中最小的連續區域(默認為4 MiB)。你可以把它看成物理卷的一部分,這部分可以被分配給一個邏輯卷。
下面我畫了一張lvm在linux磁盤管理中的位置圖:
?依次為:disk -> partition -> PV -> VG -> LV -> fs,也即磁盤->分區->物理卷->卷組->邏輯卷->文件系統。
其創建也是按照這個順序,下面會詳細介紹。?
二、LVM的優缺點
1、優點
比起傳統的硬盤分區管理方式,LVM更富于靈活性:
-
將多塊硬盤看作一塊大硬盤
-
使用邏輯卷(LV),可以創建跨越眾多硬盤空間的分區。
-
可以創建小的邏輯卷(LV),在空間不足時再動態調整它的大小。
-
在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬盤上的位置,不用擔心沒有可用的連續空間。
-
在線進行邏輯卷和卷組的創建、刪除、大小調整等操作是可行的。對于LVM上的文件系統,需要重新調整大小,但有些文件系統(例如ext4)支持在線操作。
-
無需重新啟動服務,就可以將服務中用到的邏輯卷(LV)在線(online)/動態(live)遷移至別的硬盤上。
-
允許創建快照,可以保存文件系統的備份,同時使服務的下線時間(downtime)降低到最小。
-
支持各種設備映射目標(device-mapper targets),包括透明文件系統加密和緩存常用數據(caching of frequently used data)。這將允許你創建一個包含一個或多個磁盤、并用LUKS加密的系統,使用LVM on top 可輕松地管理和調整這些獨立的加密卷 (例如. /, /home, /backup等) 并免去開機時多次輸入密鑰的麻煩。
2、缺點
-
在系統設置時需要更復雜的額外步驟。
-
Windows系統并不支持LVM,若使用雙系統,你將無法在Windows上訪問LVM分區。
三、LVM的使用
1、創建分區(partition)
在配置lvm之前,必須對存儲設備進行分區,可以使用fdisk或者parted工具進行,創建分區時注意分區類型的設置(類型為linux lvm):
-
如果使用的是MBR,設置分區類型要為8e。
-
如果使用的是GPT,設置分區類型要為E6D6D379-F507-44C2-A23C-238F2A3DF928。
我虛擬機新加了個磁盤/dev/sdb,下面我們創建一個8G的分區:
以同樣的方式,再創建一個10G的linux lvm類型的分區:
2、物理卷(PV)相關操作
①、通過lvmdiskscan命令列出可被用作pv的設備
?注:如果系統引導程序不支持LVM,則/boot不能置于LVM中。此刻必須創建一個獨立的/boot分區并直接格式化后掛載到/boot。已知支持LVM的引導程序只有GRUB。
從上圖可以看到//dev/sda2已經是PV了,所以只有dev/sda1、/dev/sdb1、/dev/sdb2可以用于創建PV,又因為/dev/sda1是boot引導區,所以下面我們可以對/dev/sdb1、/dev/sdb2創建PV
②、使用pvcreate命令創建pv
root#?pvcreate?device1?device2?...
③、查看當前所有PV信息
可以通過pvs、pvscan、pvdisplay這三個命令查看pv信息?
?注意:?如果你用的是未格式化過且擦除塊(erase block)大小小于1M的SSD,請采用以下命令pvcreate –dataalignment 1m /dev/sda來設置對齊(alignment)。
3、卷組(VG)相關操作
①、創建卷組
使用命令vgcreate創建卷組
root#?vgcreate?vg_name?pv1?pv2?...
?創建卷組vg_fedora_yg,并把pv /dev/sdb1加入該卷組。
②、查看卷組信息
?此時,也可以通過pvs查看各個物理卷所在的卷組:
4、邏輯卷(LV)相關操作
①、創建LV
使用lvcreate命令
root#?lvcreate?-L?<lv_size>??<vg_name>?-n?<lv_name> ? #?將卷組vg_name下所有剩余空間給創建的lv_name邏輯卷 root#?lvcreate?-l?+100%FREE??<vg_name>?-n?<lv_name></lv_name></vg_name></lv_name></vg_name></lv_size>
root#?lvcreate?-L?<lv_size>?<vg_name>?-n?<lv_name></lv_name></vg_name></lv_size>
該邏輯卷創建完后,你就可以通過/dev/mapper/vg_fedora_yg-lv_yg01或/dev/vg_fedora_yg/lv_yg01來訪問它:
②、查看lv
?命令lvs、lvscan、lvdisplay查看
③、擴容邏輯卷
通過命令lvextend:
root#?lvextend?-L?<extend_size>?<lv_path></lv_path></extend_size>
注意:如果擴容的邏輯卷已經掛載到具體文件系統,則需要執行resize2fs或者xfs_growfs(針對xfs文件系統)命令使修改生效,可以通過df -Th或者blkid查看lv所掛載的文件系統類型。
5、格式化并掛載LV(邏輯卷)
上面邏輯卷LV創建之后,通常是已經可以在/dev/mapper/或者/dev/vg_name/下面找到該邏輯卷了,如果找不到的話,可以執行如下命令:
#?modprobe?dm-mod #?vgscan #?vgchange?-ay
最后,可以看到如下:
①、格式化邏輯卷
現在可以在該邏輯卷上創建文件系統:
#?mkfs.<filesystem_type>?/dev/mapper/<vg_name>-<lv_name> ? #? #?mkfs.xfs?/dev/mapper/vg_fedora_yg-lv_yg01</lv_name></vg_name></filesystem_type>
②、掛載
#?mount?/dev/mapper/<vg_name>-<lv_name>?<mount_point></mount_point></lv_name></vg_name>
?注:掛載點請選擇你所新建的邏輯卷(例如:/dev/mapper/vg_fedora_yg-lv_yg01),不要使用邏輯卷所在的實際分區設備(即不要使用:/dev/sdb1)
?最后,我畫了一張圖,來展示linux lvm:
你可以對照上面內容,理解下linux lvm的磁盤管理機制。
說明:
①、圖中/dev/sda1是boot引導區,不能用lvm管理,所以直接格式化后掛載到目錄/boot下,另外/dev/sdb2也是沒有經過lvm直接格式化后掛載到目錄的。?
②、卷組vg_fedora1容量為139G,從其中分配出去了40+5+45=90G,還有49G空閑,這些空閑容量可以lvextend到下面的lv中;也可以再創建個lv,分配出去。
③、磁盤設置/dev/sdc還有50G空閑空間未分區,可以分區后使用。