Linux LVM卷組管理
由於傳統的磁盤管理不能對磁盤進行磁盤管理,因此誕生了LVM技術,LVM技術最大的特點就是對磁盤進行動態管理。
由於LVM的邏輯卷的大小更改可以進行動態調整,且不會出現丟失數據的情況。
一、LVM基本屬於介紹
- 物理存儲介質(The physical media)
- 這里指系統的存儲設備:硬盤,如:/dev/hda、/dev/sda等等,是存儲系統最低層的存儲單元。
- 物理卷(physicalvolume)
- 物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
- 卷組(Volume Group)
- LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
- 邏輯卷(logicalvolume)
- LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
- PV(physical volume,PV)
- 物理卷,它的文件格式不是ext4這些,而是具有LVM管理功能的LVM格式
- VG(Volume Group,VG)
- 卷組,卷組是在PV物理卷的基礎上創建的,卷組是由一個或多個物理卷組成的,卷組可以在物理卷PV的基礎上擴展和縮小。
- LV(logical volume,LV)
- 邏輯卷,在VG的基礎上創建,可以進行格式化、可以創建文件系統、可以被掛載。對於用戶相當於一個磁盤分區,不過實際上是在VG上邏輯出來的,可以在VG的基礎上實現擴展和縮小,擴展的邊界是不能超過VG的。
- PE(Physical Extents)
- 物理塊、PE相當於block塊,默認是4M,一個物理卷PV被划分為稱為PE(Physical Extents)的基本單元,VG是由這些PE塊組成,也是VG可以自由擴展和縮小的關鍵原因。
- LE(Logical Extent)
- 邏輯卷LV也被划分為可被尋址的基本單位,稱為LE。在同一個卷組中,LE的大小和PE是相同的,並且一一對應
分類 | 命令 | 說明 | 示例 |
---|---|---|---|
PV | pvcreate | 創建物理卷 | pvcreate /dev/sdb1 |
PV | pvdisplay | 顯示已創建的物理卷的詳細信息 | |
PV | pvs | 顯示已創建的物理卷的匯總信息 | |
PV | pvremove | 刪除物理卷 | pvremove /dev/sdb1 |
VG | vgcreate | 創建卷組 | pvcreate vg1 /dev/sdb1 /dev/sdb2 … |
VG | vgdisplay | 顯示已創建的卷組的詳細信息 | |
VG | vgs | 顯示已創建的卷組的匯總信息 | |
VG | vgextend | 擴展卷組 | vgextend vg1 /dev/sdb3 … |
VG | vgreduce | 收縮卷組 | vgreduce vg1 /dev/sdb5 |
VG | vgremove | 刪除卷組 | vgremove vg1 |
LV | lvcreate | 創建邏輯卷 | lvcreate -L 1000M -n lv1 vg1 |
LV | lvdisplay | 顯示已創建的邏輯卷的詳細信息 | |
LV | lvs | 顯示已創建的邏輯卷的匯總信息 | |
LV | lvresize | 重設邏輯卷大小 | lvresize -L 1000M /dev/vg1/lv1 |
LV | resize2fs | 更新邏輯卷信息(ext4) | resize2fs /dev/vg1/lv1 |
LV | lvremove | 刪除邏輯卷 | lvremove /dev/vg1/lv1 |
LV | xfs_growfs | 更新邏輯卷信息(xfs) | xfs_growfs /dev/vg1/lv1 |
LV | e2fsck | 檢查邏輯卷錯誤(ext4) | e2fsck -f /dev/vg1/lv1 |
其它參數:

-f 強制創建物理卷,不需要用戶確認 -u 指定設備的UUID -y 所有的問題都回答“yes” -Z 是否利用前4個扇區

-l 卷組上允許創建的最大邏輯卷數 -p 卷組中允許添加的最大物理卷數 -s 卷組上的物理卷的PE大小

-L 指定邏輯卷的大小,單位為“kKmMgGtT”字節 -l 指定邏輯卷的大小(LE數) -n 后面跟邏輯卷名 -s 創建快照
二、實驗的操作環境
- 操作系統:Redhat 7 x64
- 磁盤:1快/dev/sdb磁盤10G、已創建4個分區、3個主分區各2G、1個擴展分區4G。
- 如果使用CentOS 7.4默認沒有安裝支持上述命令的軟件包,因此需要提前安裝
lvm2
軟件包,具體命令為:yum install -y lvm2
1、創建LVM
【創建過程】
(1)對新磁盤進行分區操作(fdisk
);
(2)逐一變更分區類型為Linux LVM
(Hex代碼為:8e
);
(3)將物理磁盤初始化為物理卷PV(pvcreate
);
(4)將一個或多個物理卷PV轉變為一個卷組VG(vgcreate
)。
(5)從VG中創建邏輯卷(lvcreate
)。
(6)格式化(mkfs.ext4
/mkfs.xfs
)。
(7)根據實際需要將邏輯卷掛載使用(mount
)。
(8)根據需要對磁盤or邏輯卷進行擴展和縮減。
1.1、先將創建4個分區、3個主分區各2G、1個擴展分區4G。
# 管理/dev/sdb磁盤 fdisk /dev/sdb # 添加主分區/sdb1 給2G空間 n -> p -> 1 -> 空格 -> +2G # 添加主分區/sdb2 給2G空間 n -> p -> 2 -> 空格 -> +2G # 添加主分區/sdb3 給2G空間 n -> p -> 3 -> 空格 -> +2G # 添加擴展分區/sdb4 給4G空間 n -> e -> 4 -> 空格 -> 空格
1.2、轉換分區類型為8e、8e類型為LVM。
# 將主分區1轉換為LVM t -> 1 -> 8e # 將主分區2轉換為LVM t -> 2 -> 8e # 將主分區3轉換為LVM t -> 3 -> 8e
1.3、將物理磁盤分區初始化為物理卷PV
# 為/dev/sdb1分區 創建PV pvcreate /dev/sdb1 # 為/dev/sdb2分區 創建PV pvcreate /dev/sdb2 # 為/dev/sdb3分區 創建PV pvcreate /dev/sdb3
1.4、將一個或多個物理卷PV轉變為一個卷組VG
# 分區/dev/sdb1 /dev/sdb2 整合為一個 VG、命名為 vg1 vgcreate vg1 /dev/sdb1 /dev/sdb2
1.5、從VG中創建邏輯卷。
# 方案1:創建邏輯卷、lvcreate -L 划分大小 -n 邏輯卷名稱 卷組名稱 lvcreate -L 1G -n lv1 vg1
# 方案2:創建邏輯卷、通過使用vg的PE大小來分邏輯卷,下面-l 分配了100個PE大小的邏輯卷
lvcreate -l 100 -n lv1 vg1
1.6、格式化邏輯卷、並掛載使用
# 格式化、/dev/vg1/lv1 為卷組創建出的邏輯卷位置 mkfs.ext4 /dev/vg1/lv1 # 掛載邏輯卷使用 掛載到 /mnt 目錄下 mount /dev/vg1/lv1 /mnt

# 查看邏輯卷的UUID:最后一行就是邏輯卷的信息,把該行的UUID復制出來,不含引號。 命令:blkid 例:/dev/mapper/vg1-lv1: UUID="11262806-d796-4f49-8f08-897181e8ec33" # 編輯fstab: 在最后添加一行,輸入如下內容: # 然后保存退出(:wq),重啟后查看結果,如果能正常掛載就沒有問題了。 UUID=11262806-d796-4f49-8f08-897181e8ec33 /mnt ext4 defaults 0 0
1.7、卷組擴容 將/dev/sdb3 添加到 vg1 卷組內
# 將/dev/sdb3 分區添加到vg1卷組內 vgextend vg1 /dev/sdb3
1.8、卷則縮容 將/dev/sdb3 移除 vg1 卷組
命令:pvs PV VG Fmt Attr PSize PFree /dev/sdb1 vg1 lvm2 a-- <2.00g 0 /dev/sdb2 vg1 lvm2 a-- <2.00g 0 /dev/sdb3 vg1 lvm2 a-- <2.00g <2.00g
- 只有PFree等於PSize,也就是說沒有被使用的物理卷,還能被列入考慮范圍。
- 根據上面命令的執行結果,只有/dev/sdb5和/dev/sdb6二個可以被移除。
# 將分區/dev/sdb3 移除 vg1 卷組 vgreduce vg1 /dev/sdb3
1.9、更新邏輯卷狀態
# 更新/dev/vg1/lv1邏輯卷狀態 resize2fs /dev/vg1/lv1
2、徹底刪除邏輯卷
2.1、查看掛載、並取消掛載
# 查看掛載 df -mT /dev/mapper/vg1-1v1 ext4 2.6M 907M 1% /mnt # 取消掛載 umount /dev/mapper/vg1-1v1
2.2、刪除掛在記錄
# 刪除/etc/fstab 下掛載信息 vim /etc/fstab ...
2.3、刪除邏輯卷
lvremove /dev/mapper/vg1-1v1
2.4、刪除卷組
vgremove vg1
2.5、刪除物理卷
pvremove /dev/sdb1
pvremove /dev/sdb2