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

Linux VMware 虛擬磁盤在線擴容實戰:無需重啟識別新空間

編輯:關於 Linux

VMware 虛擬機磁盤空間不足時,可通過虛擬化平台擴容虛擬磁盤,然後在 Linux 客戶機內部**無需重啟**即可識別新空間、擴展分區與文件系統。本文提供 LVM 與非 LVM 兩種場景的標準化在線擴容操作流程。

一、前置條件與準備

  • 快照備份:擴容前務必在 vSphere/Workstation 創建快照,防止操作失誤導致數據損失。
  • 確認磁盤類型:
    lsblk -f 查看 TYPE 列:part (分區) → lvm (LVM) 或 ext4/xfs (直掛載)。
  • 安裝工具:
    yum install cloud-utils-growpart gdisk (RHEL) / apt-get install cloud-guest-utils gdisk (Debian) — 提供 growpart 自動擴展分區。

二、平台層擴容虛擬磁盤 (vSphere/Workstation/Fusion)

  1. 關閉虛擬機 (熱擴容需硬件版本 13+ 且客戶機支持,建議冷擴容最穩妥)。
  2. 編輯虛擬機設置 → 硬碟 → 擴展 → 輸入新大小 (如 50GB → 100GB)。
  3. 開機。

三、客戶機內部識別新空間 (無需重啟)

方法 1:SCSI 設備重掃 (通用)

# 查看 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

方法 2:特定設備重掃 (更精準)

echo 1 > /sys/block/sda/device/rescan
# 或
blockdev --rereadpt /dev/sda

四、分區擴展

場景 A:LVM 分區 (最常見,彈性最強)

# 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

場景 B:非 LVM (直接掛載分區,如 /dev/sda1 掛載 /)

# 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) 啟動離線操作

VMware擴容前磁盤狀態

VMware擴容後磁盤狀態

七、總結

  1. 平台層擴容虛擬磁盤 (建議冷擴容 + 快照)。
  2. 客戶機 echo "- - -" > /sys/class/scsi_host/host*/scan 觸發重掃。
  3. LVM 路徑:growpart → pvresize → lvextend → resize2fs/xfs_growfs (全程在線)。
  4. 非 LVM 根分區:需 LiveCD 離線 fdisk 重建分區 → resize2fs。
  5. 新增磁盤:重掃 → fdisk/mkfs/mount 標準流程。

掌握在線擴容全流程,將存儲擴容從「停機維護窗口」轉化為「業務無感的標準化操作」。

Copyright © Windows教程網 All Rights Reserved