Backup

如何備份獨立 ESXi 主機上的虛擬機?

  • February 16, 2022

沒有任何 vCenter Server 的獨立 ESXi (4.1) 主機。

如何盡可能快地備份虛擬機和儲存友好?

我知道我可以訪問 ESXi 控制台並使用標準的 Unixcp命令,但這會導致複製整個 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/上的一些選項,我知道這些很受歡迎,我認為備份有一些不錯的選擇,儘管我沒有看過其中任何一個太近了。

引用自:https://serverfault.com/questions/311459