在Ubuntu中使用LVM管理硬盤

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
记录并分享
Built with Hugo
Theme Stack designed by Jimmy