VMware 虛擬機磁盤空間不足時,可通過虛擬化平台擴容虛擬磁盤,然後在 Linux 客戶機內部**無需重啟**即可識別新空間、擴展分區與文件系統。本文提供 LVM 與非 LVM 兩種場景的標準化在線擴容操作流程。
lsblk -f 查看 TYPE 列:part (分區) → lvm (LVM) 或 ext4/xfs (直掛載)。yum install cloud-utils-growpart gdisk (RHEL) / apt-get install cloud-guest-utils gdisk (Debian) — 提供 growpart 自動擴展分區。# 查看 SCSI 主機號
ls /sys/class/scsi_host/
# host0, host1, ...
# 對每個 host 觸發重掃
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
# 或批量
for host in /sys/class/scsi_host/host*; do echo "- - -" > $host/scan; done
# 驗證:lsblk 應顯示磁盤容量已增大 (如 sda 100GB)
lsblk /dev/sda
echo 1 > /sys/block/sda/device/rescan
# 或
blockdev --rereadpt /dev/sda
# 1. 查看當前分區表
fdisk -l /dev/sda
# 假設 sda3 為 LVM 分區,需向末尾擴展
# 2. 使用 growpart 自動擴展分區到磁盤末尾 (需安裝 cloud-guest-utils)
growpart /dev/sda 3
# 輸出:CHANGED: partition=3 start=... old_size=... new_size=... (成功)
# 3. 通知內核分區表變更
partprobe /dev/sda
# 或
partx -u /dev/sda
# 4. 擴展 PV (物理卷)
pvresize /dev/sda3
# 輸出:Physical volume "/dev/sda3" changed
# 1 physical volume(s) resized / 0 physical volume(s) not resized
# 5. 擴展 LV (邏輯卷) - 使用所有剩餘空間
lvextend -l +100%FREE /dev/mapper/centos-root # RHEL 系統卷組名通常為 centos/rl/ubuntu-vg
# 或指定大小:lvextend -L +20G /dev/mapper/centos-root
# 6. 擴展文件系統
# ext4
resize2fs /dev/mapper/centos-root
# xfs (需掛載狀態)
xfs_growfs /dev/mapper/centos-root # 或 xfs_growfs / (掛載點)
# 7. 驗證
df -h /
lsblk /dev/sda
# 1. 卸載分區 (若為根分區無法卸載,需 LiveCD/救援模式)
# umount /dev/sda1 (非根分區可操作)
# 2. 刪除並重建分區 (fdisk/parted,起始扇區保持不變,結束扇區設為磁盤末尾)
fdisk /dev/sda
# d (刪除分區 1) -> n (新建主分區) -> 起始扇區同原值 -> 結束默認(末尾) -> w (寫入)
# 關鍵:勿選擇「清除簽名」選項
# 3. 通知內核
partprobe /dev/sda
# 4. 擴展文件系統
resize2fs /dev/sda1 # ext4
xfs_growfs /dev/sda1 # xfs
# 5. 掛載驗證
mount /dev/sda1 /mnt
df -h /mnt
# 1. vSphere/Workstation 添加新硬碟 (SCSI 控制器)
# 2. 客戶機觸發重掃 (同上)
for host in /sys/class/scsi_host/host*; do echo "- - -" > $host/scan; done
# 3. 確認新設備 (如 /dev/sdb)
lsblk
# 4. 分區、格式化、掛載 (標準流程)
fdisk /dev/sdb # 新建分區 sdb1
mkfs.ext4 /dev/sdb1
mkdir /data/newdisk
echo "/dev/sdb1 /data/newdisk ext4 defaults 0 0" >> /etc/fstab
mount -a
| 現象 | 原因 | 解決 |
|---|---|---|
| lsblk 磁盤大小未變 | SCSI 重掃未生效 / 虛擬機硬件版本過低 | 重啟虛擬機 / 升級硬件版本至 13+ / 確認 VMware Tools 運行 |
| growpart 失敗 "NOCHANGE" | 分區非最後一個 / 分區表為 GPT 需 gdisk / 磁盤無剩餘空間 | fdisk -l 確認分區位置,手動 fdisk/parted 擴展 |
| pvresize 無變化 | 分區擴展未通知內核 / 分區類型非 8e (LVM) | partprobe/partx -u,fdisk t 修改類型為 8e |
| xfs_growfs 報錯 "data size unchanged" | LV 未擴展 / 文件系統非 XFS | 先 lvextend,確認文件系統類型 |
| 根分區非 LVM 無法在線擴容 | 需卸載文件系統修改分區表 | 使用 LiveCD (SystemRescueCD) 啟動離線操作 |


echo "- - -" > /sys/class/scsi_host/host*/scan 觸發重掃。growpart → pvresize → lvextend → resize2fs/xfs_growfs (全程在線)。fdisk 重建分區 → resize2fs。fdisk/mkfs/mount 標準流程。掌握在線擴容全流程,將存儲擴容從「停機維護窗口」轉化為「業務無感的標準化操作」。