簡述
LVM Logical Volume Manager
,中文一般翻譯為 "邏輯卷管理",它是 Linux 下對磁盤分區進行管理的一種機制。LVM利用Linux內核的device-mapper
功能來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。
LVM 是建立在磁盤分區和文件系統之間的一個邏輯層,++系統管理員可以利用 LVM 在不重新對磁盤分區的情況下動態的調整分區的大小++。如果系統新增了一塊硬盤,通過LVM就可以將新增的硬盤空間直接擴展到原來的磁盤分區上。
LVM 的優點:
- 文件系統可以跨多個磁盤,因此大小不再受物理磁盤的限制。
- 可以在系統運行狀態下動態地擴展文件系統大小。
- 可以以鏡像的方式冗余重要數據到多個物理磁盤上。
- 可以很方便地導出整個卷組,並導入到另外一台機器上。
LVM 缺點:
- 在從卷組中移除一個磁盤的時候必須使用 reducevg 命令(這個命令要求root權限,並且不允許在快照卷組中使用)。
- 當卷組中的一個磁盤損壞時,整個卷組都會受影響。
- 因為增加了一個邏輯層,存儲的性能會受影響。
LVM相關概念
- PV(Physical Volume):物理卷
硬盤分區后但還未格式化為文件系統,可使用pvcreate
命令將分區創建為PV,其對應的system ID為8e即LVM格式所對應的系統標識符。
- VG(Volume Group):卷組
將多個PV組合起來,使用vgcreate
創建卷組,這樣卷組就可以包含多個PV,相當於重新組合多個分區后所得到的磁盤。雖然VG是組合了多個PV,但創建VG時會將VG所有的空間根據指定的PE大小划分為多個PE,在LVM模式中存儲都是以PE為單元,類似於文件系統中的BLOCK。
- PE(Physical Extent):物理塊
PE是VG的存儲單元,實際的數據都是存儲在PE中
- LV(Logical Volume):邏輯卷
VG相當於組合的多個硬盤,則LV相當於分區,只不過該分區是通過VG進行划分的。VG中存在很多PE,可以指定將多少個PE划分給一個LV,也可以直接指定大小來划分。划分為LV后就相當於划分了分區,僅需要對LV進行格式化文件系統即可。
- LE(Logical Extent):邏輯塊
PE是物理存儲單元,而LE則是邏輯存儲單元,即LE為LV中的邏輯存儲單元,與PE大小一致。從VG中划分LV,實際上就是從VG中划分PE,而划分LV后稱之為LE,而不是PE了。
LVM之所以能夠伸縮容量,其實現方法就是將LV中的PE進行刪除或增加
LVM的存儲機制
LV是從VG中划分出來的,因此LV中的PE可能來自於多個PV。因此向LV存儲數據時,主要有兩種機制:
- 線性模式(Linear):先將數據存儲在屬於同一個PV的PE,然后再向下一個PV中的PE
- 條帶模式(Striped):將一份數據拆分為多份,分別寫入該LV對應的每個PV中,類似於RAID 0,因此讀寫性能會優於線性模式。
使用場景
在對磁盤分區的大小進行規划時,如果不能確定磁盤分區大小,可以通過LVM來解決;
使用 fdisk、gdisk 等工具對磁盤分區后,磁盤空間就固定了。空間過大會導致浪費,對於分區過小可以從新划分磁盤的分區,或者通過軟連接的方式將此分區的目錄鏈接到另外一個分區。這樣雖然能夠臨時解決問題,但會給管理帶來麻煩
創建LVM
一、磁盤分區(物理分區)
- 添加硬盤,通過
fdisk -l
查看硬盤是否添加成功; - 對硬盤進行分區
二、准備物理卷
在這之前,檢查是否安裝了lvm(pvcreat /dev/sdb1),如果未安裝,安裝命令:
yum install -y lvm2
1、安裝好之后,創建物理卷:
2、查看物理卷:
pvdisplay
#或
pvs
三、創建卷組
先用2個物理卷創建一個卷組vg1
vgcreate vg1 /dev/sdb1 /dev/sdb2
使用vgdisplay
或者vgs
查看卷組信息
四、創建邏輯卷
1、在vg1卷組創建一個1000M的邏輯卷:
lvcreate -L 1000M -n lv1 vg1
2、查看邏輯卷信息:
3、邏輯卷格式化:
mkfs.ext4 /dev/vg1/lv1
4、掛載邏輯卷:
mount /dev/vg1/lv1 /data
五、擴展、縮減邏輯卷
- 添加硬盤;
fdisk -l #確認硬盤添加成功
- 開始分區;
fdisk /dev/sdk
Command (m for help): n # 1
Select (default p): p # 2
Partition number (1-4, default 1): 1 # 3
First sector (2048-20971519, default 2048): #4
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): #5
Command (m for help): t # 6
Hex code (type L to list all codes): 8e # 7
Command (m for help): p # 8
Command (m for help): w # 9
partprobe #激活分區
- 創建物理卷pv
pvcreate /dev/sdk #此處可以添加多個磁盤,和raid設備
pvs #查看pv詳細信息
pvscan #查看當前系統中的所有PV
- 將物理卷添加至卷組vg
vgdisplay #查看卷組信息
vgextend centos /dev/sdk #將pv添加至centos卷組
- 增加邏輯卷容量
vgdisplay #查看vg可用空間
lvs #查看lvs信息
lvresize -L 30G /dev/vg1/lv1 #重新設置lv大小
lvextend -L +5G /dev/testVG/testLV #擴展lv
e2fsck -f /dev/vg1/lv1 #檢查磁盤錯誤(ext4)
resize2fs /dev/vg1/lv1 #更新邏輯卷信息
xfs_growfs /dev/centos/root #更新邏輯卷信息,針對xfs文件系統
mount /mnt/ #重新掛載磁盤
- lvresize:擴展或縮小邏輯卷
- lvextend: 擴展邏輯卷
- 縮減邏輯卷大小
100縮減邏輯卷的時候,要事先卸載掛載的文件系統,然后減少邏輯卷的容量,然后重新掛載
umount /lvm1
e2fsck -f /dev/vgcyn/lvcyn #強行檢查文件系統
resize2fs /dev/vgcyn/lvcyn 10G #縮減邏輯空間到10G
lvreduce -L 10G /dev/vg1/lv1 #縮減邏輯空間到10G
lvs
五、刪除邏輯卷,卷組,物理卷
[注意: ]對於創建物理卷、創建卷組以及創建邏輯卷是有嚴格順序的,同樣,對於刪除邏輯卷、刪除卷組以及刪除物理卷也是有嚴格順序要求的
1、首先將正在使用的邏輯卷卸載掉 通過 umount
命令
2、將邏輯卷先刪除 通過 lvremove
命令
3、刪除卷組 通過 vgremove
命令
3、最后再來刪除我們的物理卷 通過 pvremove
命令
補充
2、在yum安裝某個服務的時候,如果不知道這個服務的准確名稱,但是知道其中的命令,比如LVM我們知道它的軟件名稱,但是知道LVM中的pvcreate命令,可以:
yum provides "/*/pvcreate"
3、安裝好之后,無法創建物理卷,輸入命令:
partprobe
參考
https://blog.51cto.com/dreamfire/1084729
https://www.cnblogs.com/gucb/p/13361087.html