Xen 虛擬機使用映像檔作為虛擬硬碟,空間不足時可透過 dd 追加空白區塊擴大映像檔,再以 resize2fs 線上調整 ext2/ext3/ext4 檔案系統大小。本文提供完整操作流程與原理解析。
# /usr/sbin/xm shutdown vm01
必須完全關機,不可僅暫停或休眠,確保檔案系統處於乾淨卸載狀態。
# dd if=/dev/zero bs=1024k count=4096 >> /vm/vm01.img
bs=1024k:區塊大小 1MBcount=4096:4096 × 1MB = 4GB>>:追加模式寫入映像檔末尾# /sbin/e2fsck -f /vm/vm01.img
-f 強制檢查即使標記為乾淨。修復任何不一致後再進行擴容。
# /sbin/resize2fs /vm/vm01.img
此步驟將 ext2/3/4 檔案系統擴展至映像檔新大小。**關鍵步驟**:若略過此步,虛擬機內 df -h 仍顯示原大小。
# /usr/sbin/xm create vm01
# /usr/sbin/xm console vm01
# df -h
# 應顯示新增空間已可用
dd 僅擴大容器resize2fs 修改檔案系統超級區塊、群組描述符、inode 表等中繼資料,使檔案系統識別新空間從技術角度來說,VPS 服務商隨時可掛載/卸載你的虛擬機映像檔讀寫內容。若宿主機 root 權限外洩,攻擊者可在你不知情下植入後門、竊取金鑰、修改系統二進制檔。這是雲端運算固有的信任邊界問題,也是企業遲遲不採用公有雲、轉向私有雲/混合雲的核心考量。
若虛擬機內部使用 LVM 管理磁碟,擴容流程更彈性:
dd 擴大映像檔pvresize /dev/xvda → lvextend -l +100%FREE /dev/vg/lv → resize2fs /dev/vg/lvxm list 檢查狀態)xfs_growfs、btrfs filesystem resize 等)