如何在独立的 ESXi 主机上备份虚拟机?

Mas*_*imo 21 backup vmware-esxi

没有任何 vCenter Server 的独立 ESXi (4.1) 主机。

如何尽可能快速和存储友好地备份虚拟机?

我知道我可以访问 ESXi 控制台并使用标准的 Unixcp命令,但这会导致复制整个 VMDK 文件,而不仅仅是它们实际使用的空间;因此,对于仅使用 1 GB 的 30 GB VMDK,备份将占用 30 GB 的空间和相应的时间。

是的,我知道精简配置的虚拟磁盘,但它们在物理复制时往往表现得非常糟糕,和/或炸毁到其完整配置的大小;此外,不建议将它们用于实际的 VM 性能。

我可以在备份之前关闭虚拟机(即我不需要“实时”备份);但我需要一种方法来有效地复制它们;是的,在进行备份时自动关闭/启动的方法也会有所帮助。

我只有 ESXi;没有服务控制台,没有 vCenter Server……处理这项任务的最佳方式是什么?另外,恢复呢?

Jed*_*els 20

我对此的首选解决方案是使用 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
Run Code Online (Sandbox Code Playgroud)

您可能还希望查看http://www.virtuallyghetto.com/ 上的一些选项,我知道这些选项非常流行,我认为有一些不错的备份选择,尽管我还没有看过其中的任何一个太最近了。


joe*_*rty 5

我不知道这是否适合您,但是VM Explorer在执行虚拟机的热备份或冷备份方面做得很好。我相信使用 ESXi 4.1 VM Explorer 也允许您从一台主机到另一台主机执行 VM 来宾备份。

  • 值得一提的是,这不再是免费的,最低级别是“专业”,699 美元 (2认同)

Mas*_*imo 5

我最终编写了一个脚本,该脚本复制 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"
Run Code Online (Sandbox Code Playgroud)

这需要关闭 VM 并且没有活动快照。