LVM是邏輯捲管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制。 LVM通過在硬盤和文件系統之間添加一個邏輯層,來為文件系統屏蔽下層硬盤分區佈局,提高硬盤分區管理的靈活性,
LVM簡介
LVM是邏輯捲管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制。 LVM通過在硬盤和文件系統之間添加一個邏輯層,來為文件系統屏蔽下層硬盤分區佈局,提高硬盤分區管理的靈活性.
使用LVM管理硬盤的基本過程如下:
- 將硬盤創建為物理卷
- 將多個物理卷組合成捲組
- 在卷組中創建邏輯卷
- 在邏輯卷之上創建文件系統
- 通過LVM管理硬盤之後,文件系統不再受限於硬盤的大小,可以分佈在多個硬盤上,也可以動態擴容。
LVM基本概念
- 物理存儲介質(The physical media):指系統的物理存儲設備,如硬盤,系統中為/dev/hda、/dev/sda等等,是存儲系統最低層的存儲單元。
- 物理卷(Physical Volume,PV):指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊。物理卷包括一個特殊的標籤,該標籤默認存放在第二個 512 字節扇區,但也可以將標籤放在最開始的四個扇區之一。該標籤包含物理卷的隨機唯一識別符(UUID),記錄塊設備的大小和LVM元數據在設備中的存儲位置。
- 卷組(Volume Group,VG):由物理卷組成,屏蔽了底層物理卷細節。可在卷組上創建一個或多個邏輯卷且不用考慮具體的物理卷信息。
- 邏輯卷(Logical Volume,LV):卷組不能直接用,需要劃分成邏輯卷才能使用。邏輯卷可以格式化成不同的文件系統,掛載後直接使用。
- 物理塊(Physical Extent,PE):物理卷以大小相等的“塊”為單位存儲,塊的大小與卷組中邏輯卷塊的大小相同。
- 邏輯塊(Logical Extent,LE):邏輯卷以“塊”為單位存儲,在一卷組中的所有邏輯卷的塊大小是相同的。
安裝
1
2
|
sudo apt update
sudo apt install lvm2
|
管理物理卷 PV
創建物理卷
1
2
3
4
|
pvcreate [option] devname ...
示例:將/dev/sdb、/dev/sdc創建為物理卷。
# pvcreate /dev/sdb /dev/sdc
|
查看物理卷
1
2
3
4
|
pvdisplay [option] devname
示例:顯示物理卷/dev/sdb的基本信息。
# pvdisplay /dev/sdb
|
刪除物理卷
1
2
3
4
|
pvremove [option] pvname ...
示例:刪除物理卷/dev/sdb。如果物理卷已經加入卷組,需要先刪除卷組或者從卷組中移除,再刪除物理卷。
# pvremove /dev/sdb
|
管理卷組 VG
創建卷組
1
2
3
4
|
vgcreate [option] vgname pvname ...
示例:創建卷組 vg1,並且將物理卷/dev/sdb和/dev/sdc添加到卷組中。
# vgcreate vg1 /dev/sdb /dev/sdc
|
查看卷組
1
2
3
4
|
vgdisplay [option] [vgname]
示例:顯示卷組vg1的基本信息。
# vgdisplay vg1
|
擴展卷組
1
2
3
4
|
vgextend [option] vgname pvname ...
示例:將捲組vg1中添加物理卷/dev/sdb。
# vgextend vg1 /dev/sdb
|
收縮卷組
1
2
3
4
|
vgreduce [option] vgname pvname ...
示例:從卷組vg1中移除物理卷/dev/sdb2。
# vgreduce vg1 /dev/sdb2
|
刪除卷組
1
2
3
4
|
vgremove [option] vgname
示例:刪除卷組vg1。
# vgremove vg1
|
管理邏輯卷 LV
創建邏輯卷
1
2
3
4
5
6
7
|
lvcreate [option] vgname
示例1:在卷組vg1中創建10G大小的邏輯卷。
# lvcreate -L 10G vg1
示例2:在卷組vg1中創建200M的邏輯卷,並命名為lv1。
# lvcreate -L 200M -n lv1 vg1
|
查看邏輯卷
1
2
3
4
|
lvdisplay [option] [lvname]
示例:顯示邏輯卷lv1的基本信息。
# lvdisplay /dev/vg1/lv1
|
調整邏輯卷大小
1
2
3
4
5
6
7
8
9
10
|
lvresize [option] vgname
示例1:為邏輯卷/dev/vg1/lv1增加200M空間。
# lvresize -L +200 /dev/vg1/lv1
示例2:為邏輯卷/dev/vg1/lv1減少200M空間。
# lvresize -L -200 /dev/vg1/lv1
示例3:為邏輯卷/dev/vg1/lv1增加所有可用空間
# lvresize -l +100%FREE /dev/vg1/lv1
|
擴展邏輯卷
1
2
3
4
5
6
7
|
lvextend [option] lvname
示例1:為邏輯卷/dev/vg1/lv1增加100M空間。
# lvextend -L +100M /dev/vg1/lv1
示例2:為邏輯卷/dev/vg1/lv1增加所有可用空間
# lvextend -l +100%FREE /dev/vg1/lv1
|
收縮邏輯卷
1
2
3
4
|
lvreduce [option] lvname
示例:將邏輯卷/dev/vg1/lv1的空間減少100M。
# lvreduce -L -100M /dev/vg1/lv1
|
刪除邏輯卷
1
2
3
4
|
lvremove [option] vgname
示例:刪除邏輯卷/dev/vg1/lv1。
# lvremove /dev/vg1/lv1
|
創建並掛載文件系統
創建文件系統
1
2
3
4
|
mkfs [option] lvname
示例:在邏輯卷/dev/vg1/lv1上創建ext4文件系統。
# mkfs -t ext4 /dev/vg1/lv1
|
手動掛載文件系統
1
2
3
4
|
mount lvname mntpath
示例:將邏輯卷/dev/vg1/lv1掛載到/mnt/data目錄。
# mount /dev/vg1/lv1 /mnt/data
|
擴展文件系統
擴展邏輯卷LV後, 分區大小還會保持原狀, 需要手動擴展分區,下面以ext4文件系統為例:
1
2
3
4
5
6
|
先把分區umount
umount /dev/vg1/lv1
檢查並修復文件系統的錯誤
e2fsck -f /dev/vg1/lv1
擴展文件系統到所有分區空間
resize2fs /dev/vg1/lv1
|
另外看到也可以不umount直接在線調整分區大小
1
2
|
擴展文件系統到所有分區空間
resize2fs /dev/vg1/lv1
|