Backup
如何備份獨立 ESXi 主機上的虛擬機?
沒有任何 vCenter Server 的獨立 ESXi (4.1) 主機。
如何盡可能快地備份虛擬機和儲存友好?
我知道我可以訪問 ESXi 控制台並使用標準的 Unix
cp
命令,但這會導致複製整個 VMDK 文件,而不僅僅是它們實際使用的空間;因此,對於僅使用 1 GB 的 30 GB VMDK,備份將佔用 30 GB 的空間和相應的時間。是的,我知道精簡配置的虛擬磁碟,但是它們在物理複製時往往表現得非常糟糕,和/或炸毀到它們的完整配置大小;此外,不建議將它們用於實際 VM 性能。
我可以在備份之前關閉虛擬機(即我不需要“實時”備份);但我需要一種有效地複制它們的方法;是的,在進行備份時自動關閉/啟動的方法也會有所幫助。
我只有 ESXi;沒有服務控制台,沒有 vCenter Server……處理此任務的最佳方式是什麼?另外,恢復怎麼辦?
我最終編寫了一個腳本,該腳本複制 VM 配置文件並用於
vmkfstools -d
複製 VMDK,同時保留精簡配置。以供參考:
#!/bin/sh if [ $# != 2 ]; then echo "Usage: $(basename $0) <SOURCE VM PATH> <DESTINATION PATH>" echo "Example: $(basename $0) /vmfs/volumes/datastore1/VM1 /vmfs/volumes/datastore2" exit fi vmx=$(basename $(/bin/ls $1/*.vmx)) name=$(grep displayName $1/$vmx | /bin/awk -F\" '{print $(NF-1)}') vmxf=$(grep vmxf $1/$vmx | /bin/awk -F\" '{print $(NF-1)}') nvram=$(grep nvram $1/$vmx | /bin/awk -F\" '{print $(NF-1)}') vmdks=$(grep vmdk $1/$vmx | /bin/awk -F\" '{print $(NF-1)}') echo "Started copying VM $name" vmdir=$(basename $1) destpath="$2/$vmdir" echo "Source path: $1" echo "Destination path: $destpath" echo "Creating destination path $destpath" /bin/mkdir -p $destpath echo "Copying configuration files:" echo $vmx /bin/cp $1/$vmx $destpath echo $vmxf /bin/cp $1/$vmxf $destpath echo $nvram /bin/cp $1/$nvram $destpath echo "Copying virtual disks:" for vmdk in $vmdks; do echo $vmdk /sbin/vmkfstools -d thin -i $1/$vmdk $destpath/$vmdk done echo "Completed copying VM $name"
這需要關閉 VM 並且沒有活動快照。
我首選的解決方案是使用 vSphere 客戶端或命令行 ovftool將它們簡單地導出到 ovf 或 ova 文件。
在 vSphere Client 中,確保 VM 已關閉,然後突出顯示它並轉到 File->Export->Export OVF Template。然後按照提示進行操作。
恢復是小菜一碟,只需做相反的事情(我認為菜單選項是“部署 OVF 模板”)。
使用 ovftool 創建精簡備份
ovftool -dm=thin vi://<user>@<esxi-host>/<vm-name> <local-file>.ovf
您可能還希望查看http://www.virtuallyghetto.com/上的一些選項,我知道這些很受歡迎,我認為備份有一些不錯的選擇,儘管我沒有看過其中任何一個太近了。