前言
LVM(Logical Volume Manager,邏輯卷管理器)是 Linux 系統中一個強大的磁碟管理工具,它提供了比傳統分割區更靈活的儲存管理方式。本文將詳細介紹在 Ubuntu 22.04 中如何使用 LVM 進行磁碟管理。
LVM 基本概念
LVM 架構由三個主要層級組成:
物理卷 (Physical Volume, PV)
物理卷是 LVM 的最底層,可以是整個硬碟或是硬碟分割區。物理卷是建立 LVM 的基礎單元。
卷組 (Volume Group, VG)
卷組是由一個或多個物理卷組成的儲存池。你可以將卷組想像成一個大型的虛擬硬碟,它整合了多個物理卷的空間。
邏輯卷 (Logical Volume, LV)
邏輯卷是從卷組中切割出來的空間,類似於傳統的分割區。你可以在邏輯卷上建立檔案系統並掛載使用。
1
2
3
4
5
6
7
8
9
10
| +------------------------------------------+
| 邏輯卷 (LV) |
| /dev/vg_data/lv_home /dev/vg_data/lv_var |
+------------------------------------------+
| 卷組 (VG) |
| vg_data |
+------------------------------------------+
| 物理卷 (PV) |
| /dev/sdb1 /dev/sdc1 /dev/sdd1 |
+------------------------------------------+
|
建立 PV、VG、LV
安裝 LVM 工具
首先確保系統已安裝 LVM 工具:
1
2
| sudo apt update
sudo apt install lvm2
|
建立物理卷 (PV)
假設我們有三個磁碟 /dev/sdb、/dev/sdc、/dev/sdd:
1
2
3
4
5
6
| # 建立物理卷
sudo pvcreate /dev/sdb /dev/sdc /dev/sdd
# 查看物理卷資訊
sudo pvs
sudo pvdisplay
|
建立卷組 (VG)
1
2
3
4
5
6
| # 建立名為 vg_data 的卷組
sudo vgcreate vg_data /dev/sdb /dev/sdc /dev/sdd
# 查看卷組資訊
sudo vgs
sudo vgdisplay
|
建立邏輯卷 (LV)
1
2
3
4
5
6
7
8
9
| # 建立指定大小的邏輯卷
sudo lvcreate -L 50G -n lv_home vg_data
# 使用百分比建立邏輯卷(使用剩餘空間的 100%)
sudo lvcreate -l 100%FREE -n lv_var vg_data
# 查看邏輯卷資訊
sudo lvs
sudo lvdisplay
|
格式化並掛載
1
2
3
4
5
6
7
8
9
10
11
| # 格式化為 ext4 檔案系統
sudo mkfs.ext4 /dev/vg_data/lv_home
# 建立掛載點
sudo mkdir -p /mnt/data
# 掛載邏輯卷
sudo mount /dev/vg_data/lv_home /mnt/data
# 設定開機自動掛載(編輯 /etc/fstab)
echo '/dev/vg_data/lv_home /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
|
擴展與縮小
擴展邏輯卷
LVM 的一大優勢是可以在不停機的情況下擴展邏輯卷。
新增物理卷到卷組
1
2
3
4
5
| # 建立新的物理卷
sudo pvcreate /dev/sde
# 將物理卷加入卷組
sudo vgextend vg_data /dev/sde
|
擴展邏輯卷
1
2
3
4
5
6
7
8
| # 擴展指定大小
sudo lvextend -L +20G /dev/vg_data/lv_home
# 或擴展到指定大小
sudo lvextend -L 100G /dev/vg_data/lv_home
# 使用所有可用空間
sudo lvextend -l +100%FREE /dev/vg_data/lv_home
|
調整檔案系統大小
1
2
3
4
5
| # ext4 檔案系統(支援線上擴展)
sudo resize2fs /dev/vg_data/lv_home
# 或者使用 lvextend 的 -r 參數同時調整檔案系統
sudo lvextend -r -L +20G /dev/vg_data/lv_home
|
縮小邏輯卷
警告:縮小邏輯卷有資料遺失的風險,請務必先備份資料!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 首先卸載檔案系統
sudo umount /mnt/data
# 檢查檔案系統
sudo e2fsck -f /dev/vg_data/lv_home
# 縮小檔案系統(必須先縮小檔案系統)
sudo resize2fs /dev/vg_data/lv_home 30G
# 縮小邏輯卷
sudo lvreduce -L 30G /dev/vg_data/lv_home
# 重新掛載
sudo mount /dev/vg_data/lv_home /mnt/data
|
快照功能
LVM 快照是一個強大的功能,可以在某個時間點建立邏輯卷的副本,非常適合用於備份和測試。
建立快照
1
2
3
4
5
| # 建立 5GB 大小的快照
sudo lvcreate -L 5G -s -n lv_home_snapshot /dev/vg_data/lv_home
# 查看快照資訊
sudo lvs
|
掛載快照
1
2
3
4
5
| # 建立掛載點
sudo mkdir -p /mnt/snapshot
# 掛載快照(唯讀方式)
sudo mount -o ro /dev/vg_data/lv_home_snapshot /mnt/snapshot
|
還原快照
1
2
3
4
5
6
7
8
| # 卸載原始邏輯卷和快照
sudo umount /mnt/data
sudo umount /mnt/snapshot
# 還原快照
sudo lvconvert --merge /dev/vg_data/lv_home_snapshot
# 重新啟動後生效(如果邏輯卷正在使用)
|
刪除快照
1
2
3
4
5
| # 卸載快照
sudo umount /mnt/snapshot
# 刪除快照
sudo lvremove /dev/vg_data/lv_home_snapshot
|
常用指令速查表
物理卷 (PV) 相關指令
| 指令 | 說明 |
|---|
pvcreate | 建立物理卷 |
pvs | 簡要顯示物理卷資訊 |
pvdisplay | 詳細顯示物理卷資訊 |
pvscan | 掃描所有物理卷 |
pvremove | 移除物理卷 |
卷組 (VG) 相關指令
| 指令 | 說明 |
|---|
vgcreate | 建立卷組 |
vgs | 簡要顯示卷組資訊 |
vgdisplay | 詳細顯示卷組資訊 |
vgscan | 掃描所有卷組 |
vgextend | 擴展卷組 |
vgreduce | 縮小卷組 |
vgremove | 移除卷組 |
邏輯卷 (LV) 相關指令
| 指令 | 說明 |
|---|
lvcreate | 建立邏輯卷 |
lvs | 簡要顯示邏輯卷資訊 |
lvdisplay | 詳細顯示邏輯卷資訊 |
lvscan | 掃描所有邏輯卷 |
lvextend | 擴展邏輯卷 |
lvreduce | 縮小邏輯卷 |
lvremove | 移除邏輯卷 |
lvrename | 重新命名邏輯卷 |
實用技巧
查看 LVM 整體狀態
1
2
3
| # 一次查看所有 PV、VG、LV 資訊
sudo lsblk
sudo lvmdiskscan
|
移除 LVM 設定
如果需要完全移除 LVM 設定,請按以下順序操作:
1
2
3
4
5
6
7
8
9
10
11
| # 1. 卸載邏輯卷
sudo umount /dev/vg_data/lv_home
# 2. 移除邏輯卷
sudo lvremove /dev/vg_data/lv_home
# 3. 移除卷組
sudo vgremove vg_data
# 4. 移除物理卷
sudo pvremove /dev/sdb /dev/sdc /dev/sdd
|
總結
LVM 提供了靈活的磁碟管理功能,主要優點包括:
- 動態調整大小:可以在不停機的情況下擴展邏輯卷
- 跨磁碟整合:可以將多個磁碟整合成一個大的儲存池
- 快照功能:方便進行備份和測試
- 線上遷移:支援在不停機的情況下遷移資料
掌握 LVM 的使用方法,將大大提升你在 Linux 系統中管理儲存空間的能力。