快照故障常見情境
- 快照未出現在 Snapshot Manager,但磁碟目錄仍有 *-delta.vmdk 檔案。
- 刪除快照失敗,虛擬機持續在快照狀態運行,佔用大量磁碟空間。
- 使用 VMotion 遷移有快照的虛擬機時發生錯誤或遷移後崩潰。
一、定位擁有快照的虛擬機
方法 1:ESX 服務主控台 Find 指令
cd /vmfs/volumes/
find -iname "*-delta.vmdk" -mtime +7 -ls # 找出 7 天未修改的快照
find -iname "*-delta.vmdk" # 找出所有快照檔
方法 2:SnapAlert 腳本(免費,VI Perl Toolkit)
直接與 vCenter 對話,無需各主機安裝代理,支援 ESXi,可產生 Email 報告。
方法 3:SnapHunter 工具(免費,Xtravirt)
跨多台 ESX 回報快照狀態,支援 Email 警報。
方法 4:查詢 vCenter SQL 資料庫
查詢 VPX_SNAPSHOT 表,但依賴資料庫結構,升級風險較高。
二、處理未正確刪除的快照(殘留 delta 檔)
- 建立新快照再全刪:vSphere Client → 右鍵虛擬機 → 「快照」→「建立快照」→ 再「刪除所有快照」。
- 命令列建立/刪除:
vmware-cmd <vmx路徑> createsnapshot
vmware-cmd <vmx路徑> removesnapshots
檢查 delta 檔是否消失。
- 檢查 .vmx 設定:確認
scsi0:0.fileName 是否指向 *-00000#.vmdk(表示仍在用快照)。正常應指向基底 .vmdk。
- 複製虛擬機/磁碟(終極手段):
- 用 VMware Converter 複製整台虛擬機(會合併快照)。
- 或關機 → `vmkfstools -i source-000001.vmdk new.vmdk` 複製磁碟 → 編輯虛擬機掛載新磁碟 → 驗證正常後移除舊磁碟與 delta 檔。
三、變更快照儲存位置
# 編輯 .vmx
workingDir = "/vmfs/volumes/SnapVolume/Snapshots/"
# 可選:讓 vswp 留在原目錄
sched.swap.dir = "/vmfs/volumes/VM-Volume1/MyVM/"
警告:若虛擬機在共享儲存,將快照導向本地儲存將導致 vMotion/HA/DRS 失效。
四、快照與 vMotion 共存注意事項
- 虛擬機所有檔案(含快照、vswp)必須在所有主機均可存取的共享儲存上,否則遷移後會崩潰。
- 官方建議遷移前「認可」所有快照;若不認可,確保路徑在共享儲存上可行。
最佳實務
- 快照非備份,勿長期保留(建議 < 72 小時)。
- 定期用腳本/工具掃描殘留快照。
- 生產環境遷移前務必合併快照。