Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

CentOS 7 LVM 線上縮減 /home 擴充 /root 根分區實戰操作手冊

編輯:Linux 教學

生產環境常遇到 /home 分配過大導致 / (根分區) 空間不足,需將 /home 縮減並將釋出空間線上擴充給根分區。本文以 CentOS 7 LVM 為例,完整記錄 umount → e2fsck → resize2fs → lvreduce → lvextend → resize2fs 完整流程,並強調資料安全關鍵步驟,避免資料遺失。

一、環境與目標

項目現狀目標
根分區/dev/mapper/VolGroup-lv_root (154G, 用 7.9G)擴充至全可用空間
家目錄/dev/mapper/VolGroup-lv_home (299G, 用 984M)縮減至 20G
檔案系統ext4支援線上擴充、離線縮減

二、操作步驟 (嚴禁跳步)

1. 確認現況並備份重要資料

df -h
lvdisplay
vgdisplay
# 重要:先備份 /home 關鍵資料至異地

2. 卸載 /home (必須離線縮減)

umount /home
# 若提示 busy,查佔用進程並終止
fuser -mv /home
kill -9 
umount /home

3. 檢查檔案系統完整性 (強制)

e2fsck -f /dev/mapper/VolGroup-lv_home

4. 縮減檔案系統至 20G (resize2fs 先於 lvreduce)

resize2fs -p /dev/mapper/VolGroup-lv_home 20G

鐵律:檔案系統縮減必須小於等於目標 LV 大小,否則資料損毀。

5. 縮減邏輯卷 LV 至 20G

lvreduce -L 20G /dev/mapper/VolGroup-lv_home
# 提示確認輸入 y
# -L 20G  = 設定最終大小 20G
# -l -20G = 從目前減少 20G (切勿混淆)

6. 掛回 /home 驗證

mount /home
df -h /home
# 應顯示 20G 總容量

7. 擴充根分區 LV (線上可操作)

# 先確認 VG 剩餘可用空間
vgdisplay
# 將所有剩餘 PE 給根分區 (或指定具體大小)
lvextend -l +100%FREE /dev/mapper/VolGroup-lv_root
# 或指定具體大小:lvextend -L +283G /dev/mapper/VolGroup-lv_root

8. 線上擴充根分區檔案系統

resize2fs -p /dev/mapper/VolGroup-lv_root
# ext4 支援線上擴充,無需卸載

9. 最終驗證

df -h
lsblk -f

根分區應已擴充至接近 450G (視原始總容量),/home 穩定在 20G。

三、關鍵風險控制點

風險後果防範
未先 e2fsck 直接 resize2fs檔案系統錯誤放大導致資料毀損強制執行 e2fsck -f
lvreduce 大小小於檔案系統實際大小截斷檔案系統尾部資料,永久遺失resize2fs 先縮減至目標大小,再 lvreduce 同尺寸
混淆 -L (絕對) 與 -l (相對)誤縮減/擴充錯誤大小操作前用 vgdisplay/lvdisplay 核對單位
未備份 /home 關鍵資料操作失敗資料無法找回異地備份後再操作

四、XFS 檔案系統注意

XFS 不支援縮減,若 /home 為 XFS,唯一解法:備份資料 → 刪除 LV → 重建較小 LV → 還原資料。ext4 則支援雙向調整。

五、自動化腳本雛形 (謹慎使用)

#!/bin/bash
set -euo pipefail
HOME_LV="/dev/mapper/VolGroup-lv_home"
ROOT_LV="/dev/mapper/VolGroup-lv_root"
TARGET_HOME_SIZE="20G"

umount /home
e2fsck -f "$HOME_LV"
resize2fs -p "$HOME_LV" "$TARGET_HOME_SIZE"
lvreduce -L "$TARGET_HOME_SIZE" "$HOME_LV"
mount /home
lvextend -l +100%FREE "$ROOT_LV"
resize2fs -p "$ROOT_LV"
df -h

生產環境請人工逐步確認,切勿直接跑腳本。

Copyright © Windows教程網 All Rights Reserved