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

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

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

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

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

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

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

我只有 ESXi;没有服务控制台,没有 vCenter Server... 处理此任务的最佳方法是什么?此外,恢复又如何呢?

答案1

我对此的首选解决方案是使用 vSphere 客户端或命令行 ovftool

在 vSphere Client 中,确保虚拟机已关闭,然后突出显示它并转到文件->导出->导出 OVF 模板。然后只需按照提示操作即可。

恢复非常简单,只需反向操作即可(我认为菜单选项是“部署 OVF 模板”)。

使用 ovftool 创建精简备份

ovftool -dm=thin  vi://<user>@<esxi-host>/<vm-name> <local-file>.ovf

您可能还希望查看以下选项http://www.virtuallyghetto.com/,我知道这些非常受欢迎,而且我认为有一些不错的备份选择,尽管我最近没有看过它们中的任何一个。

答案2

我最终编写了一个脚本,它复制了 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"

这要求关闭虚拟机并且没有活动快照。

答案3

我不知道这是否适合你,但是虚拟机资源管理器可以很好地执行虚拟机的热备份或冷备份。我相信,使用 ESXi 4.1 VM Explorer 还可以执行从一台主机到另一台主机的 VM 客户机备份。

答案4

XSIBackup 是一个高度优化的工具,用 C 和汇编语言编写,提供两个版本以满足所有可能的需求:

  • XSIBackup-DC(在这里下载):在 ESXi 虚拟机管理程序中运行的服务,用于备份独立主机。它不需要其他元素,可以将虚拟机备份/复制到本地存储或通过 IP 备份/复制到任何 IP/SSH Linux 主机。

  • XSIBackup 应用程序 (在这里下载):基于 CentOS 7 的设备,可以轻松部署到任何 ESXi 盒中。它允许连接到任意数量的 ESXi 主机,以将其虚拟机从集中控制台备份/复制到任何 IP/SSH 服务器或几乎任何可以安装在 Linux 中的东西。其中包括大多数云服务提供商。

上述两个版本都提供了统一的控制台以及可通过常规 SSH 连接使用的 nCurses GUI。它提供了您能想到的几乎所有功能:

  • 与 ESXi 5.1 至 8.0 兼容
  • 虚拟机的热备份/复制。
  • 块级别重复数据删除+LZJB压缩,压缩率高达99%。
  • 即使在 ESXi 上也免费提供 Delta 算法、零感知和 CBT 本机支持。
  • 使用命令行工具 xsigr 进行完整或粒度恢复。
  • 电子邮件报告布局,完全可定制。
  • 本地或通过 IP/SSH 备份。
  • 多服务器备份(XSIBackup-App)。
  • 完全可编写脚本,以融入更广泛的方案中。
  • 高度稳定。它是在 Linux 中运行的 C 二进制文件。

相关内容