LVM,Logical Volume Manger,是linux核心提供的一種邏輯磁碟區管理功能,由核心驅動和應用層工具組成,它是在硬碟的分區基礎上,創建了一個邏輯層,可以非常靈活且非常方便的管理儲存設備。
LVM利用Linux核心的device-mapper功能來實現儲存系統的虛擬化(系統分割區獨立於底層硬體)。透過LVM,可以實現儲存空間的抽象化並在上面建立虛擬分區(virtual partitions),可以更簡便地擴大和縮小分區,可以增刪分區時無需擔心某個硬碟上沒有足夠的連續空間,避免為正在使用的磁碟重新分割的麻煩、為調整分割區而不得不移動其他分割區的不便,它相比傳統的分割系統可以更靈活地管理磁碟。
一個可供儲存LVM的區塊裝置. 如硬碟分割區(MBR或GPT分區)、SAN 的硬碟、RAID 或LUN,一個回環檔案, 一個被核心映射的設備(例如dm-crypt),它包含一個特殊的LVM頭,它是LVM 建構的實際硬體或儲存系統。
卷組是對一個或多個實體磁碟區的集合,並在裝置檔案系統中顯示為 /dev/VG_NAME。
邏輯磁碟區是可供系統使用的最終元設備,它們在磁碟區組中建立和管理,由實體區塊組成,實際上就是一個虛擬分區,並顯示為/dev/VG_NAME/LV_NAME,通常在其上可以建立檔案系統。
如果一個邏輯磁碟區需要分配多個物理區塊,它們將會成為一個卷組中最小的連續區域(預設為4 MiB )。你可以把它看成物理卷的一部分,這部分可以被指派給一個邏輯磁碟區。
下面我畫了一張lvm在linux磁碟管理的位置圖:
依序為:disk -> partition -> PV - > VG -> LV -> fs,也即磁碟->分割->物理磁碟區->磁碟區->邏輯磁碟區->檔案系統。
其創建也是按照這個順序,以下會詳細介紹。
比起傳統的硬碟分割區管理方式,LVM更富於彈性:
將多塊硬碟視為一塊大硬碟
使用邏輯磁碟區(LV),可以建立跨越眾多硬碟空間的分割區。
可以建立小的邏輯磁碟區(LV),在空間不足時再動態調整它的大小。
在調整邏輯磁碟區(LV)大小時可以不用考慮邏輯磁碟區在硬碟上的位置,不用擔心沒有可用的連續空間。
在線上進行邏輯捲和卷組的建立、刪除、大小調整等操作是可行的。對於LVM上的檔案系統,需要重新調整大小,但有些檔案系統(例如ext4)支援線上操作。
無需重新啟動服務,就可以將服務中使用的邏輯磁碟區(LV)在線上(online)/動態(live)遷移到別的硬碟上。
允許建立快照,可以儲存檔案系統的備份,同時將服務的離線時間(downtime)降低到最小。
支援各種裝置映射目標(device-mapper targets),包括透明檔案系統加密和快取常用資料(caching of frequently used data)。這將允許你建立一個包含一個或多個磁碟、並用LUKS加密的系統,使用LVM on top 可輕鬆地管理和調整這些獨立的加密磁碟區(例如. /, /home, /backup等) 並免去開機時多次輸入密鑰的麻煩。
在系統設定時需要更複雜的額外步驟。
Windows系統不支援LVM,若使用雙系統,你將無法在Windows上存取LVM分割區。
在配置lvm之前,必須對儲存設備進行分區,可以使用fdisk或parted工具進行,建立分割區時注意分割區類型的設定(類型為linux lvm):
如果使用的是MBR,設定分割區類型要為8e。
如果使用的是GPT,設定分區類型要為E6D6D379-F507-44C2-A23C-238F2A3DF928。
我虛擬機器新加了個磁碟/dev/sdb,下面我們建立一個8G的分割區:
以同樣的方式,再建立一個10G的linux lvm類型的分割區:
注:如果系统引导程序不支持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
root# pvcreate device1 device2 ...
可以通过pvs、pvscan、pvdisplay这三个命令查看pv信息
注意: 如果你用的是未格式化过且擦除块(erase block)大小小于1M的SSD,请采用以下命令
pvcreate --dataalignment 1m /dev/sda
来设置对齐(alignment)。
使用命令vgcreate创建卷组
root# vgcreate vg_name pv1 pv2 ...
创建卷组vg_fedora_yg,并把pv /dev/sdb1加入该卷组。
此时,也可以通过pvs查看各个物理卷所在的卷组:
使用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>
root# lvcreate -L <lv_size> <vg_name> -n <lv_name>
该逻辑卷创建完后,你就可以通过/dev/mapper/vg_fedora_yg-lv_yg01
或/dev/vg_fedora_yg/lv_yg01
来访问它:
命令lvs、lvscan、lvdisplay查看
通过命令lvextend:
root# lvextend -L <extend_size> <lv_path>
注意:如果扩容的逻辑卷已经挂载到具体文件系统,则需要执行resize2fs或者xfs_growfs(针对xfs文件系统)命令使修改生效,可以通过df -Th或者blkid查看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
# mount /dev/mapper/<vg_name>-<lv_name> <mount_point>
注:挂载点请选择你所新建的逻辑卷(例如:/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空閒空間未分割區,可以分割後使用。
以上是Linux磁碟管理之LVM磁碟操作指令怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!