LVM (Logical Volume Manager) 提供彈性儲存管理,當需移除物理卷 (PV,如硬碟分區 /dev/sda6) 時,必須先將其上資料遷移至同卷組 (VG) 內其他 PV,再縮減邏輯卷 (LV)、移除 PV。本文以 /home 掛載點為例,完整演示離線縮減、pvmove 遷移、vgreduce 移除全流程。
umount),業務停機窗口規劃。pvmove 失敗。VG: liuhg_disk
LV: /dev/liuhg_disk/home (掛載 /home, ext4, 2.6G)
PVs:
/dev/sda5 100M (全滿)
/dev/sda6 200M (目標移除, 全滿)
/dev/sda7 300M (空閒 300M, 可接收遷移資料)
/dev/sda8 400M (部分使用)
/dev/sda9 500M
/dev/sda10 600M
/dev/sda11 500M
當前使用 2G,空閒 500M,移除 sda6 (200M) 需遷移 200M 資料,sda7 空閒 300M 滿足。
umount /home
# 若提示 busy,用 lsof/fuser 找出佔用進程殺掉
# 強制檢查
e2fsck -f /dev/liuhg_disk/home
# 縮減檔案系統至 2200M (原 2600M - 移除 200M - 預留 200M 緩衝)
resize2fs /dev/liuhg_disk/home 2200M
關鍵: 檔案系統縮減目標大小 必須小於等於 縮減後的 LV 大小,建議留 100-200M 緩衝。
lvreduce -L 2200M /dev/liuhg_disk/home
# 輸出確認:Logical volume liuhg_disk/home successfully resized
pvdisplay -m
# 關注:
# /dev/sda6: Allocated PE 50, Free PE 0 ← 來源,需遷移 50 PE
# /dev/sda7: Allocated PE 0, Free PE 76 ← 目標,有 76 PE 空閒,足夠
pvmove /dev/sda6 /dev/sda7
# 將 sda6 上所有 PE 遷移到 sda7
# 可加 -v 顯示進度,-b 後台執行
# 輸出範例:
# /dev/sda6: Moved: 12.5%
# ...
# /dev/sda6: Moved: 100.0%
注意: pvmove 會鎖定 VG 元資料,期間不可進行其他 LVM 操作。大量資料遷移耗時較長,建議在維護窗口執行。
pvdisplay -m
# /dev/sda6 應顯示 Allocated PE 0, Free PE 50
# /dev/sda7 Allocated PE 增加 50
vgreduce liuhg_disk /dev/sda6
# 輸出:Removed "/dev/sda6" from volume group "liuhg_disk"
pvremove /dev/sda6
# 輸出:Labels on physical volume "/dev/sda6" successfully wiped
mount /home
df -h /home
# 確認容量為 2.2G 左右,資料完整
若只需將資料從舊硬碟遷移到新硬碟 (擴充 VG),可線上操作:
# 1. 新硬碟建立 PV、加入 VG
pvcreate /dev/sdb1
vgextend liuhg_disk /dev/sdb1
# 2. 線上遷移
pvmove /dev/sda6 /dev/sdb1
# 3. 移除舊 PV
vgreduce liuhg_disk /dev/sda6
pvremove /dev/sda6
關鍵差異: 線上遷移不涉及 umount、resize2fs、lvreduce,LV 大小不變,業務零中斷。
| 錯誤 | 原因 | 對策 |
|---|---|---|
resize2fs: Bad magic number | 非 ext4 檔案系統 (如 xfs) | xfs 不支援縮減,需備份重建 |
lvreduce: Insufficient free space | 目標 LV 大小小於檔案系統實際使用量 | 先 resize2fs 縮減檔案系統 |
pvmove: Insufficient free extents | 目標 PV 空閒 PE 不足 | 加入更大 PV 或清理目標 PV 空間 |
vgreduce: Physical volume still in use | PV 上仍有 PE 配置 | 確認 pvmove 完成,pvdisplay -m 驗證 |
XFS 不支援縮減,移除 PV 流程變為:
pvmove 遷移舊 PV 資料vgreduce 移除舊 PV若必須縮減總容量:備份資料 → 刪除 LV/PV/VG → 重建較小 LV → 還原資料。
嚴格遵循「卸載 → 檢查 → 縮減 FS → 縮減 LV → 遷移 PV → 移除 PV」順序,配合完整備份,即可安全完成 LVM 物理卷移除操作。