虚拟机ESXI系统配置备份? 可以这样实现
备份虚拟机ESXi系统配置至关重要,因为它涵盖了关键的网络、存储和虚拟机设置。定期备份可以确保在系统故障或灾难性事件发生时快速恢复至先前的状态,最大程度地减少业务中断。通过选择合适的备份工具和制定有效的备份策略,管理员可以保障虚拟化环境的稳定运行。
虚拟化为备份和恢复操作提供了多种优势,这是数据保护、操作连续性和可用性的支柱。最重要的是,虚拟化使无代理和基于映像的主机级备份成为可能。 这些类型的备份可以捕获完整的虚拟机,包括虚拟机配置和虚拟机数据。
然而,保护主机也很重要,因为健康的 ESXi 主机对于虚拟机的正常运行非常重要。建议您还备份 ESXi 配置,因为可用的主机备份可以帮助您在几分钟内恢复主机配置,而无需从头开始设置 ESXi 服务器。
继续阅读以了解ESXI系统配置备份的不同方法。
通过创建ESXI系统配置备份,可以有效地确保重要数据丢失时能够及时恢复。实施良好的ESXI系统配置备份策略可以实现更快的灾难恢复,并保持业务连续性。
使用 ESXi 命令行是备份 ESXI系统配置最经济的方法。 您无需安装任何其他软件即可使用 ESXi 命令行。 您只需 启用 ESXi shell 和对 ESXi 主机的远程 SSH 访问 。 通过 SSH 连接到 ESXi 主机后,您可以运行命令。
ESXi 配置每小时自动保存到 /bootblank/state.tgz 文件中。 因此,您应确保立即将当前 ESXi 配置写入 ESXi 配置文件,以确保保存自上次自动保存以来对 ESXi 配置所做的所有更改。 要做到这一点:
vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config
因此,您将收到下载 configBundle 的链接。 来自 ESXi 主机的 tgz存档。
http://*/downloads/UUID/configBundle-ESXiNameOrIPAddress.tgz
您可以在 ESXi 直接控制台界面或命令行中使用以下命令找到 ESXi 主机的 IP 地址:
esxcli network ip interface ipv4 get
当前示例中使用的ESXi主机的IP地址是 192.168.101.208
命令行界面的优点是能够实现自动化,ESXi 配置的备份也不例外。 让我们回顾一下执行此操作的步骤:
mkdir /vmfs/volumes/datastore1/ESXi_backup
vi /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh
vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config
find /scratch/downloads/ -name \*.tgz -exec cp{} /vmfs/volumes/datastore1/ESXi_backup/ESXi_config_backup_$(date +'%Y%m%d_%H%M%S').tgz \;
:wq
注意 : 为了更加方便,您还可以在备份文件名中包含 ESXi 主机名或 IP 地址。 这将帮助您避免与多个 ESXi 主机混淆。
chmod +x /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh
cd /vmfs/volumes/datastore1/ESXi_backup/
./esxi_backup.sh
ls -al
vi /var/spool/cron/crontabs/root
10 02 * * * /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh
:wq!
作为替代方案,您可以在编辑文件之前更改文件权限:
chmod +w /var/spool/cron/crontabs/root
设置完成后,ESXi 配置将在每晚凌晨 02:10 自动备份到名为 ESXi_config_bakup_date_time.tgz 的文件中。
您应该拥有与要还原 ESXi 配置的计算机上安装的备份 ESXi 主机相同版本和内部版本号的 ESXi。 此规则适用于本博文中考虑的所有 ESXi 配置恢复方法。
如果要在 从头安装 (全新安装)的 ESXi 主机上恢复 ESXi 配置,则需要设置用于 ESXi 管理网络的网络接口的 IP 地址并启用 SSH 访问。
已备份的 ESXi 服务器和要恢复配置的 ESXi 服务器上的 UUID 必须相同。 下一节将介绍 UUID 值不同时应遵循的步骤。
要恢复 ESXi 配置:
esxcli system maintenanceMode set --enable yes
或者
vim-cmd hostsvc/maintenance_mode_enter
您可以在通过 SSH 连接的 ESXi shell 中重命名该文件:
mv /tmp/configBundle-esxi6-7b.localdomain.tgz /tmp/configBundle.tgz
vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz
运行此命令后,ESXi 主机将自动重新启动。
esxcli system maintenanceMode set --enable no
或者
vim-cmd hostsvc/maintenance_mode_exit
您可以使用以下两种方法之一来检查 ESXi 服务器的 UUID:
您无法更改 ESXi 服务器的 UUID,因为该标识符是根据硬件生成的。但是,在更改configBundle.tgz ESXi配置备份存档 中存储的 Manifest.txt 文件中的 UUID 后,您可以将 ESXi 主机 A 的 ESXi 配置恢复到 ESXi 主机 B。
现在让我们看看如何更改 UUID 以将备份的配置应用到另一台物理服务器。 服务器 A 是已备份配置的服务器, 服务器 B 是要应用配置的服务器。
检查要应用备份配置的 ESXi 主机(服务器 B)上的 UUID。 至少可以使用两种方法来完成此操作,但第二种方法还允许您检查 ESXi 版本:
esxcfg-info -u
vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config
cp /scratch/downloads/_hash_value_/configBundle-localhost.localdomain.tgz /tmp
cd /tmp/
tar zxvf configBundle.tgz
vi Manifest.txt
在我们的例子中,UUID 是 1E9E4D56-B724-DFBE-D19D-4C2D827E0188
rm configBundle-localhost.localdomain.tgz Manifest.txt state.tgz
tar zxvf configBundle.tgz
vi Manifest.txt
在我们的例子中,我们将 9EA94D56-7E39-96A8-AB45-DF31EF0971EC 更改为 1E9E4D56-B724-DFBE-D19D-4C2D827E0188
保存文件并退出文本编辑器:
:wq
mv configBundle.tgz configBundle1.tgz
tar zcvf configBundle.tgz Manifest.txt state.tgz jumpstrt.gz
esxcli system maintenanceMode set --enable yes
vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz
VMware 提供的另一个用于管理 ESXi 主机的命令行界面是 vSphere CLI(不要与 VMware PowerCLI 混淆)。 您应该在运行 Linux 或 Windows 的计算机上安装 vSphere CLI 以远程管理 ESXi 主机。 安装 vSphere CLI 需要 Perl 。
使用 vSphere CLI 的优点是方便以及 Linux 中 bash 的强大功能。 此方法对于 ESXi 6.x 特别方便。 如果您使用的是 ESXi 8,请选择本文中介绍的其他方法。
tar -zxvf VMware-vSphere-CLI-6.5.0-4566394.x86_64.tar.gz
apt-get install -y perl-doc libmodule-build-perl libssl-dev libxml-libxml-perl libsoap-lite-perl libuuid-perl build-essential
VMware官方建议是安装这组软件包:
apt-get install ia32-libs build-essential gcc uuid uuid-dev perl libssl-dev perl-doc liburi-perl libxml-libxml-perl libcrypt-ssleay-perl
./vmware-install.pl
进入Perl的交互式shell:
perl -MCPAN -e shell
install Devel::StackTrace
同样安装其他模块。
注意 : 在我们的例子中,一个模块无法安装在交互式 Perl shell 中,但我们可以在 Ubuntu 控制台中使用以下命令安装该模块:
apt-get install libcrypt-ssleay-perl
esxcli --server 192.168.101.208 storage core device list
esxcli --server 192.168.101.208 --thumbprint B3:63:9F:67:E2:D9:C4:53:7D:A9:2A:4A:37:DC:AE:73:3C:83:C7:DA system maintenanceMode get
控制台会以交互方式提示输入用户名和密码。
尽量不要使用以纯文本形式输入用户名和密码的命令,如下所示:
esxcli --server 192.168.101.208 --username root --password TestPass_555 --thumbprint B3:63:9F:67:E2:D9:C4:53:7D:A9:2A:4A:37:DC:AE:73:3C:83:C7:DA system maintenanceMode get
注意: 这是出于安全原因。 执行过的命令会保存在Linux中,直到您使用 history -c 命令清除历史记录。 如果需要避免使用交互模式并手动输入登录名和密码,可以将 ESXi 会话保存到该文件并在运行命令时使用该文件。 与在命令中以纯文本形式输入密码不同,保存会话是安全的。 保存会话的说明如下。
每次运行命令时都输入 ESXi 指纹并不方便。 幸运的是,可以保存指纹并使用 vSphere CLI 运行更多命令,而无需定义指纹。
cd /usr/lib/vmware-vcli/apps/general/
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add -s server -t thumbprint
在我们的特定示例中,命令是:
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add -s 192.168.101.208 -t B3:63:9F:67:E2:D9:C4:53:7D:A9:2A:4A:37:DC:AE:73:3C:83:C7:DA
esxcli --server 192.168.101.208 system maintenanceMode get
但是,您仍然需要输入用户名和密码。 但是,您可以将 vSphere CLI 配置为运行命令,而无需每次都输入密码,如以下部分所示。
使用保存的会话文件是使用 vSphere CLI 在远程 ESXi 主机上运行命令时避免输入用户名和密码的方法之一。
mkdir /backup
cd /usr/lib/vmware-vcli/apps/session
perl save_session.pl --savesessionfile /backup/192-168-101-208session --server 192.168.101.208 --username root --password TestPass_555
在哪里:
– – savesessionfile /backup/192-168-101-208session是创建的session文件名
– – server 192.168.101.208 是保存会话的ESXi主机的名称(多个示例中都使用该ESXi主机)
– – 用户名root是连接ESXi主机的用户名
– – 密码TestPass_555是连接ESXi主机的用户的密码
现在您可以在不输入密码的情况下运行命令,但您应该输入 – – sessionfile 键(选项)并定义会话文件的路径。
例如:
esxcli --sessionfile /backup/192-168-101-208session system maintenanceMode get
此方法背后的想法是将凭据以纯文本形式保存在配置文件中,并在 vSphere CLI 中运行 ESXi 命令时引用此文件。
vim /backup/vcli-config
VI_USERNAME=root
VI_PASSWORD=TestPass_555
esxcli --server 192.168.101.208 --config vcli-config system maintenanceMode get
注意: 由于凭据以纯文本形式保存,因此此方法并不安全。
凭证存储是位于 vmware 子目录 ~/.vmware/credstore/vicredentials.xml 中用户目录中的 xml 文件。 使用凭据存储在远程 ESXi 主机上运行命令的优点是密码不会保存为纯文本。 因此,该方法提供了更高的安全性。
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add --server 192.168.101.208 --username root
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl list
# esxcli --server 192.168.101.208 --credstore /root/.vmware/credstore/vicredentials.xml system maintenanceMode get
如果您使用非 root 用户,凭据文件将保存在 /home/user_name/.vmware/credstore/vicredentials.xml中
在下面的屏幕截图中,您可以看到凭据如何保存在凭据存储文件中。
现在您已在 Ubuntu Linux 计算机上配置了 vSphere CLI,您可以运行命令并备份 ESXi 配置:
cd /usr/bin
vicfg-cfgbackup --server 192.168.101.208 --credstore /root/.vmware/credstore/vicredentials.xml -s /backup/192-168-101-208-esxi-cfg.tgz
vicfg-cfgbackup --sessionfile /backup/192-168-101-208session -s /backup/192-168-101-208-esxi-cfg.tgz
注意: vicfg- 命令已弃用。 如果 vicfg 在您的情况下不起作用,请 在使用最新版本的 ESXi 主机时在命令行界面中使用 ESXCLI等效命令。 请参阅其他 ESXi 配置备份方法的命令。
使用– – sessionfile 选项的缺点 是在 vSphere CLI 中运行最后一个命令后空闲时会超时 30 分钟。 之后,您必须再次进行身份验证并创建会话文件。
vicfg-cfgbackup --server 192.168.101.208 -s /backup/192-168-101-208-esxi-cfg.tgz
如果您的环境动态变化,并且 ESXi 主机的配置经常变化,则手动备份 ESXi 主机可能不切实际。 在这种情况下,您可以通过向计划程序添加备份命令或包含多个命令的备份脚本来自动执行 ESXi 配置备份。 Crontab 是 Linux 中的调度程序。
crontab -e
注意 : 如果您是第一次编辑 crontab 配置,则应选择必须用于编辑 crontab 配置的默认文本编辑器。 在我们的示例中,我们使用 /usr/bin/vim.basic 来实现此目的。
crontab配置的格式如下:
分钟 小时 day_of_the_month 月 day_of_the_week 命令
25 03 * * * /usr/bin/vicfg-cfgbackup – – 服务器 192.168.101.208 – – config /backup/vcli-config -s /backup/192-168-101-208-esxi-cfg-cron.tgz
:wq
ls -al
正如下面的屏幕截图所示,ESXI系统配置的备份文件是在 03:25 自动创建的。
现在 ESXi 配置备份已自动创建,这很好,但有一个缺点。 每次 crontab 运行计划命令来创建 ESXi 配置备份时,之前的 tgz文件都会被新的 tgz 文件覆盖 。 如果前天创建的具有正确 ESXi 配置的备份被第二天创建的包含错误 ESXi 配置的文件覆盖,则可能会导致问题。 为了防止出现此问题,您应该将 ESXi 配置备份到不同的文件。
让我们创建一个简单的脚本,每次将 ESXi 配置保存为具有唯一文件名的单独文件,该文件名中包含 ESXi 配置备份文件创建的日期和时间。 创建脚本允许您添加命令以通过运行单个脚本来备份多个 ESXi 主机。
vim /backup/esxi_backup.sh
#!/bin/bash
ESXI101_208_BACKUP_NAME=”192-168-101-208-$(日期 +'%Y%m%d_%H%M%S')esxi-cfg.tgz”
vicfg-cfgbackup – – 服务器 192.168.101.208 – – config /backup/vcli-config -s /backup/$ESXI101_208_BACKUP_NAME
:wq
chmod +x /backup/esxi_backup.sh
crontab -e
50 06 * * * /备份/esxi_backup.sh
此配置行允许我们将 crontab 设置为在上午 06:50 运行 ESXi 配置备份脚本。
通过在行首添加 # 字符来禁用之前添加的计划任务。
保存配置。
这是一个演示自动化理念的简单脚本。 您可以创建复杂的脚本来备份多个 ESXi 主机。
注意: 每次 ESXi 重新引导或闲置 30 分钟后,ESXi 会话的身份验证就会过期。 创建自动 ESXi 备份脚本时请记住此功能。
使用 vSphere CLI 恢复 ESXi 配置的要求与其他方法的要求类似。 为了恢复 ESXi 配置,请确保启用了通过 SSH 的远程访问并且已知 ESXi 服务器的 IP 地址(建议您使用与备份的 ESXi 主机的 IP 地址相同的 IP 地址) 。
要恢复 ESXi 配置,请运行以下命令:
vicfg-cfgbackup --server=ESXi_host_IP_address --username=root -l backup_file
在我们的特定示例中,命令是:
vicfg-cfgbackup --server=192.168.101.208 --username=root -l /backup/192-168-101-208-esxi-cfg.tgz
如果要还原配置的目标 ESXi 主机的 UUID 与备份 ESXi 服务器的 UUID(其 UUID 在 tgz 备份存档内的 Manifest.txt 文件 中定义 )不同,您可以使用-f 键(强制)覆盖 UUID。
您可以使用以下命令检查正在运行的 ESXi 主机的 UUID:
esxcfg-info -u
注意: 从 ESXi 7.0 U2 开始,如果 ESXi 主机上使用 TPM(可信平台模块),则 UUID 强制覆盖不起作用。
备份 VMware ESXI系统配置后,您需要做的下一件事是备份主机上的虚拟机。 事实上,由于备份虚拟机是保护关键虚拟机数据的唯一方法,因此它比备份主机配置重要得多。
创建独立 ESXi 虚拟机备份的方法很少。 例如:
但是,通过这些方式,您一次只能备份一个虚拟机。 尤其是当您想要迁移到另一个数据存储或主机时,这很不方便。
因此,接下来我将向您介绍一个方便的工具 傲梅企业备份旗舰版 。
它将多个虚拟机备份简化为 3 个简洁的步骤,并支持付费和免费版本的 VMware ESXi。 这里我以ESXi虚拟机为例演示如何备份和恢复。 您可以单击按钮下载 永久免费版本 并开始使用:
*您可以选择在Windows或Linux系统上安装此虚拟机备份软件。
1. 绑定设备 :访问 傲梅企业备份旗舰版 网页客户端,导航到 “源设备” 选项卡, 添加 vCenter 或独立 ESXi 主机作为源设备,主机上的虚拟机将清晰列出及其备份状态,以便监控和恢复。
支持的版本 :VMware ESXi 6.0 及更高版本以及 Windows Server 2012 及更高版本上的 Hyper-V。
2. 备份多个虚拟机 :导航到 备份任务 > + 创建新任务 ,并在直观的页面上设置 任务名称 、 备份类型 、 设备 、 目标 和 计划 ,您可以快速创建完整的备份任务,该任务可以自动执行和删除旧备份文件。
您可以在一项任务中覆盖主机上的多个虚拟机。 备份文件将按照虚拟机名称、备份时间和类型明确区分,并存放在以您指定的任务名称命名的文件夹中。
3. 恢复整个虚拟机 :在单独列出的备份任务上单击 ... > 恢复 ,将列出与该任务相关的所有恢复点,您可以根据需要从中进行选择。
在大多数情况下,无需备份 VMware ESXI系统配置。 重新部署主机既快速又简单,并且可以借助自动化部署工具。
但是,如果您管理较小的站点,您可能不想从头开始设置主机。 在这篇文章中我总结了使用官方工具备份VMware ESXi主机配置的3种方法。 在这种情况下他们会有所帮助。
备份主机后,下一个重要的事情是备份主机上的虚拟机。 在本文中,我介绍傲梅企业备份旗舰版可以同时备份主机上的多个虚拟机,以及 恢复到另一个数据存储 或主机。 如果您想迁移到新主机,这会很方便。
ESXI系统配置备份是确保虚拟机数据安全的最基本措施之一。在本文中,我介绍了什么是ESXI系统配置备份,如何实现ESXI系统配置备份。
此外,作为另一项故障安全措施,请注意VMware 快照不能用作备份,否则可能会导致数据丢失。