备份ESXi主机配置的4种方法

虚拟化为备份和恢复操作提供了几个优势,这些优势是数据保护、运营连续性和可用性的支柱。最重要的是,虚拟化使得无代理和基于镜像的主机级备份成为可能。这些类型的备份可以捕获完整的虚拟机,包括虚拟机配置和虚拟机数据。

然而,保护主机也很重要,因为健康的 ESXi 主机对于虚拟机的正常运行至关重要。建议您还备份 ESXi 配置,因为可用的主机备份可以帮助您在几分钟内恢复主机配置,而无需从头设置 ESXi 服务器。继续阅读以了解 ESXi 主机备份的不同方法。

方法1:使用 ESXi 命令行备份 ESXi 主机

使用 ESXi 命令行是备份 ESXi 主机配置的最经济的方法。您无需安装任何额外的软件来使用 ESXi 命令行。您只需启用 ESXi shell 和远程 SSH 访问 ESXi 主机。一旦通过 SSH 连接到您的 ESXi 主机,就可以运行命令。

ESXi 配置每小时自动保存到/bootblank/state.tgz文件中。因此,您应确保当前的 ESXi 配置立即写入 ESXi 配置文件,以确保自上次自动保存以来对 ESXi 配置所做的所有更改都已保存。要做到这一点:检查并将 ESXi 配置与持久存储同步:
vim-cmd hostsvc/firmware/sync_config

  1. 检查并同步ESXi配置与持久存储:

    vim-cmd hostsvc/firmware/sync_config

  2. 在同步完成后备份ESXi配置:

    vim-cmd hostsvc/firmware/backup_config

    因此,您将收到一个链接,用于从ESXi主机下载configBundle.tgz存档。

    http://*/downloads/UUID/configBundle-ESXiNameOrIPAddress.tgz

  3. 替换星号(*)为您的 ESXi 主机的 IP 地址。包含 ESXi 配置备份的归档文件将保存在/scratch/downloads目录中一段短时间(几分钟)内。

    esxcli network ip interface ipv4 get
    192.168.101.208

  4. 尽快下载 ESXi 备份归档文件并将其存储在安全的位置。

如何在 ESXi 命令行中自动备份 ESXi 配置

命令行界面的优点在于能够自动化,ESXi 配置备份也不例外。让我们来看看如何完成这个过程:

  1. 在您的 ESXi 数据存储上创建一个目录来存储备份文件。

    mkdir /vmfs/volumes/datastore1/ESXi_backup

  2. 创建备份ESXi配置的脚本:

    vi /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh

  3. 将以下行添加到脚本中:

    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 \;

  4. 保存文件并退出 vi

    :wq

    注意

    为了更方便,您还可以将ESXi主机名或IP地址包含到备份文件名中。这将帮助您避免在多个ESXi主机中造成混淆。

  5. 使脚本可执行:

    chmod +x /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh

  6. 转到脚本所在的目录:

    cd /vmfs/volumes/datastore1/ESXi_backup/

  7. 运行脚本:

    ./esxi_backup.sh

  8. 验证是否已创建备份文件:

    ls -al

  9. 确保ESXi配置备份脚本按计划(自动)运行。为此目的编辑调度程序配置:

    vi /var/spool/cron/crontabs/root

  10. 添加以下字符串以在每天凌晨02:10执行ESXi配置备份:

    10 02 * * * /vmfs/volumes/datastore1/ESXi_backup/esxi_backup.sh

  11. 保存文件更改。要保存只读文件中的更改,请输入:

    :wq!

    作为替代,您可以在编辑文件之前更改文件权限:

    chmod +w /var/spool/cron/crontabs/root

设置完成后,ESXi配置将每晚02:10自动备份到文件中,文件名为ESXi_config_bakup_date_time.tgz

如何在ESXi命令行中恢复ESXi配置

您应该在想要恢复ESXi配置的机器上安装与备份的ESXi主机相同版本和构建号的ESXi。此规则适用于本文中考虑的所有ESXi配置恢复方法。

如果您打算在从头安装(全新安装)的ESXi主机上恢复ESXi配置,则需要为用于ESXi管理网络的网络接口设置IP地址并启用SSH访问。

UUID必须在备份的ESXi服务器和将要恢复配置的ESXi服务器上相同。如果UUID值不同,则下一节将介绍要遵循的步骤。

要恢复ESXi配置:

  1. 一旦您已准备好刚刚安装的ESXi主机以从备份中恢复ESXi配置,请通过SSH连接到ESXi主机,并将主机置于维护模式(在此模式下,VM停止运行)。

    esxcli system maintenanceMode set --enable yes

    vim-cmd hostsvc/maintenance_mode_enter

  2. 通过使用SCP客户端(例如WinSCP),将包含ESXi配置备份的存档复制到ESXi主机上的目录中。让我们将本地机器上的configBundle-xxxx.tgz存档复制到目标ESXi服务器上的/tmp/目录中。

  3. configBundle-xxxx.tgz文件重命名为configBundle.tgz,然后再输入恢复ESXi配置的命令。否则,您将收到错误消息:“未找到文件 /tmp/configBundle.tgz“。

    您可以在通过SSH连接的ESXi Shell中将文件重命名:

    mv /tmp/configBundle-esxi6-7b.localdomain.tgz /tmp/configBundle.tgz

  4. 恢复ESXi配置:

    vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz

    运行此命令后,ESXi主机将自动重新启动。

  5. 重新启动ESXi服务器后,退出维护模式,然后您可以像往常一样使用主机。

    esxcli system maintenanceMode set --enable no

    或者

    vim-cmd hostsvc/maintenance_mode_exit

如何将UUID更改以恢复ESXi配置

您可以使用以下两种方法之一来检查ESXi服务器的UUID:

  1. 在ESXi命令行界面中:

    esxcfg-info -u

  2. 在您使用上述命令制作的configBundle.tgz备份存档中的Manifest.txt文件中。

您无法更改ESXi服务器的UUID,因为标识符是根据硬件生成的。但是,在更改存储在configBundle.tgz ESXi配置备份存档中的Manifest.txt文件中的UUID后,您可以将ESXi主机A的ESXi配置恢复到ESXi主机B。

现在让我们看看如何更改UUID以将备份的配置应用到另一台物理服务器上。 服务器A是备份其配置的服务器,服务器B是要应用配置的服务器。

阶段1

检查要将备份的配置应用到的ESXi主机的UUID(服务器B)。 这可以通过至少两种方法来完成,但第二种方法还允许您检查ESXi版本:

  1. 运行esxcfg-info -u
  2. 备份 ESXi 服务器 B 的配置:

    vim-cmd hostsvc/firmware/sync_config

    vim-cmd hostsvc/firmware/backup_config

  3. 将备份归档复制到临时目录并转到该目录:

    cp /scratch/downloads/_hash_value_/configBundle-localhost.localdomain.tgz /tmp

    cd /tmp/

  4. 从归档中提取文件:

    tar zxvf configBundle.tgz

  5. 用 vi 打开 Manifest.txt 文件并检查 UUID 值(您将看到一个单独的带有 UUID 的行)。记下 UUID。

    vi Manifest.txt

    在我们的情况下,UUID 是 1E9E4D56-B724-DFBE-D19D-4C2D827E0188

  6. 您可以删除 /tmp/ 目录中的临时文件:

    rm configBundle-localhost.localdomain.tgz Manifest.txt state.tgz

阶段 2

  1. 将 ESXi 服务器 A 的 configBundle.tgz 配置备份归档文件复制到服务器 B,例如,到 /tmp/ 目录并进入该目录。
  2. configBundle.tgz 归档中提取文件:

    tar zxvf configBundle.tgz

  3. 使用 vi 打开 Manifest.txt 文件并将服务器 A 的 UUID 值更新为服务器 B 的 UUID:

    vi Manifest.txt

    在我们的情况下,我们将 9EA94D56-7E39-96A8-AB45-DF31EF0971EC 更改为 1E9E4D56-B724-DFBE-D19D-4C2D827E0188

    保存文件并退出文本编辑器:

    :wq

  4. 将您的源 configBundle.tgz 文件重命名为 configBundle1.tgz,例如(如果您的 ESXi 配置备份文件名称与 configBundle.tgz 不同,您可以跳过此步骤):

    mv configBundle.tgz configBundle1.tgz

  5. Manifest.txtstate.tgzjumpstrt.gz文件打包到一个新的configBundle.tgz存档中:

    tar zcvf configBundle.tgz Manifest.txt state.tgz jumpstrt.gz

  6. 将ESXi主机置于维护模式并恢复配置:

    esxcli system maintenanceMode set --enable yes

    vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz

方法2:使用vSphere CLI备份ESXi主机

VMware提供的另一种用于管理ESXi主机的命令行界面是vSphere CLI(不要与VMware PowerCLI混淆)。您应该在运行Linux或Windows的计算机上安装vSphere CLI以远程管理ESXi主机。Perl是安装vSphere CLI所需的。

使用vSphere CLI的优点是在Linux中的便利性和bash的强大功能。这种方法在ESXi 6.x特别方便。如果您正在使用ESXi 8,请选择本文中其他解释的方法。

安装和配置vCLI

  1. VMware的网站下载适用于您操作系统的vSphere CLI版本。本示例中使用Ubuntu Linux。
  2. 前往下载文件所在的目录并从存档中提取文件:

    tar -zxvf VMware-vSphere-CLI-6.5.0-4566394.x86_64.tar.gz

  3. 安装所需的软件包:

    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

  4. 前往提取文件所在的目录并运行安装程序:

    ./vmware-install.pl

  5. 阅读并接受许可协议。如果安装程序要求安装一些必需模块,请键入y并安装这些模块。

  6. 在我们的情况下,某些模块必须手动安装。可以通过使用 Perl 的交互式 shell 安装它们。

    进入 Perl 的交互式 shell:

    perl -MCPAN -e shell

  7. 运行命令以安装所需的 Perl 模块:

    install Devel::StackTrace

    同样安装其他模块。

    注意在我们的情况下,有一个模块无法在交互式 Perl shell 中安装,但我们可以使用 Ubuntu 控制台中的命令安装该模块:

    apt-get install libcrypt-ssleay-perl

  8. 安装 Perl 模块后,再次运行 VMware vSphere CLI 安装程序。
  9. 安装已成功完成,您可以在此情况下看到以下屏幕:

  10. 现在让我们尝试使用 vSphere CLI 并在 Linux 控制台中输入以下命令以显示 ESXi 服务器的设备列表(192.168.101.208 是 ESXi 服务器的 IP 地址):

    esxcli --server 192.168.101.208 storage core device list

  11. 服务器的 SHA-1 指纹不受信任,与 ESXi 主机的连接失败。这意味着出于安全原因,您应该定义指纹。让我们尝试另一个命令:

    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主机的指纹

每次运行命令时输入ESXi指纹都不方便。幸运的是,可以保存指纹并在vSphere CLI中运行进一步命令而无需定义指纹。

  1. 转到目录:

    cd /usr/lib/vmware-vcli/apps/general/

  2. /usr/lib/vmware-vcli/apps/general/credstore_admin.pl add -s 服务器 -t 指纹

    在我们的特定示例中,命令如下:

    /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

  3. 现在您可以在vSphere CLI中运行命令,而无需每次输入指纹:

    esxcli --server 192.168.101.208 system maintenanceMode get

然而,您仍然需要输入用户名和密码。不过,您可以根据下面的部分配置vSphere CLI,以便每次运行命令时无需输入密码。

使用会话文件连接到ESXi主机

使用保存的会话文件是在运行vSphere CLI命令时避免输入用户名和密码的方法之一。

  1. 创建一个目录来存储ESXi配置备份文件,例如,/backup/

    mkdir /backup

  2. 进入该目录:

    cd /usr/lib/vmware-vcli/apps/session

  3. 使用Perl脚本命令将已授权的ESXi主机会话保存到文件中:

    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 是创建的会话文件的名称

    server 192.168.101.208 是保存会话的ESXi主机的名称(此ESXi主机在多个示例中使用)

    username root 是连接到ESXi主机的用户的名称

    password TestPass_555 是连接到ESXi主机的用户的密码

现在您可以在不输入密码的情况下运行命令,但应输入 sessionfile 键(选项)并定义会话文件的路径。

例如:

esxcli --sessionfile /backup/192-168-101-208session system maintenanceMode get

使用配置文件连接到 ESXi 主机

此方法的思想是将凭据以明文形式保存在配置文件中,并在运行 vSphere CLI 中的 ESXi 命令时引用此文件。

  1. 创建配置文件:

    vim /backup/vcli-config

  2. 在以下位置输入凭据:

    VI_USERNAME=root

    VI_PASSWORD=TestPass_555

  3. 保存文件。
  4. 在远程ESXi服务器上使用vSphere CLI运行以下命令:

    esxcli --server 192.168.101.208 --config vcli-config system maintenanceMode get

注意: 鉴于凭证保存为明文,此方法不安全。

为连接到ESXi主机使用凭证存储

A credential store is the xml file located in the user directory in the vmware subdirectory ~/.vmware/credstore/vicredentials.xml. The advantage of using the credentials store to run commands on remote ESXi hosts is that the password is not saved as plain text. As a result, this method provides higher security.

  1. 添加凭证到凭证存储,运行以下命令:

    /usr/lib/vmware-vcli/apps/general/credstore_admin.pl add --server 192.168.101.208 --username root

  2. 列出凭证存储中保存的凭证,以确保所需凭证存在:

    /usr/lib/vmware-vcli/apps/general/credstore_admin.pl list

  3. 在不输入密码的情况下,使用凭据存储库在远程ESXi主机上运行以下命令:

    # esxcli --server 192.168.101.208 --credstore /root/.vmware/credstore/vicredentials.xml system maintenanceMode get

    如果您使用非root用户,则凭据文件保存在/home/user_name/.vmware/credstore/vicredentials.xml

在下面的截图中,您可以看到凭据是如何保存在凭据存储文件中的。

使用vSphere CLI备份ESXi主机配置

现在您已经在Ubuntu Linux机器上配置了vSphere CLI,您可以运行以下命令并备份ESXi配置:

  1. 进入/usr/bin/目录:

    cd /usr/bin

  2. 要创建ESXi配置的备份而无需输入用户名和密码,请使用以下命令之一。
    • 对于保存在凭据存储中的用户名和密码,请使用以下命令:

      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分钟后会超时。之后,您必须重新验证并创建会话文件。

    • 如果您想在交互模式下输入密码创建ESXi配置的备份,可以运行以下命令:

      vicfg-cfgbackup --server 192.168.101.208 -s /backup/192-168-101-208-esxi-cfg.tgz

如何自动化 ESXi 配置备份

如果您的环境经常发生动态变化,并且 ESXi 主机的配置经常更改,则手动备份 ESXi 主机可能不切实际。在这种情况下,您可以通过向调度程序添加备份命令或包含多个命令的备份脚本来自动化 ESXi 配置备份。Crontab 是 Linux 中的一个调度程序。

  1. 编辑 Linux 中的调度器配置,以便周期性自动运行 ESXi 配置备份命令。

    crontab -e

    注意如果您是第一次编辑 crontab 配置,您应该选择默认的文本编辑器来编辑 crontab 配置。在我们的示例中,我们使用 /usr/bin/vim.basic

    crontab 配置的格式如下:

    分钟 小时 月份中的某天 月份 星期几 命令 

  2. 让我们通过将以下行添加到 crontab 配置,每晚 03:25 AM 备份 ESXi 主机配置:

    25 03 * * * /usr/bin/vicfg-cfgbackup server 192.168.101.208 config /backup/vcli-config -s /backup/192-168-101-208-esxi-cfg-cron.tgz

  3. 写入 crontab 调度器的配置并退出文本编辑器 vim(本示例中使用):

    :wq

  4. 等待到 03:25 AM 之后,检查 ESXi 备份配置文件必须保存的目录:

    ls -al

    如下屏幕截图所示,ESXi 主机配置的备份文件于 03:25 自动创建。

现在已经自动创建了ESXi配置备份,这很好,但存在一个缺点。每次crontab运行预定命令来创建ESXi配置备份时,先前的tgz文件都会被新的tgz文件覆盖。如果前天创建的具有正确ESXi配置的备份被隔天创建的包含不正确ESXi配置的文件覆盖,这可能会导致问题。为了防止这个问题,应该将ESXi配置备份到不同的文件中。

我们来创建一个简单的脚本,每次保存ESXi配置时都以包含文件创建日期和时间的唯一文件名作为文件名。创建一个脚本可以让您通过运行单个脚本添加命令来备份多个ESXi主机。

  1. 在/backup/目录中创建esxi_backup.sh文件:

    vim /backup/esxi_backup.sh

  2. 将以下行添加到文件中:

    #!/bin/bash

    ESXI101_208_BACKUP_NAME=”192-168-101-208-$(date +’%Y%m%d_%H%M%S’)esxi-cfg.tgz”

    vicfg-cfgbackup server 192.168.101.208 config /backup/vcli-config -s /backup/$ESXI101_208_BACKUP_NAME

  3. 将更改写入文件并退出文本编辑器vim:

    :wq

  4. 使文件可执行:

    chmod +x /backup/esxi_backup.sh

  5. 编辑调度程序配置:

    crontab -e

  6. 添加以下行:

    50 06 * * * /backup/esxi_backup.sh

    此配置行允许我们将crontab设置为在上午06:50运行ESXi配置备份脚本。

    通过在行首添加#字符来禁用先前添加的计划任务。

    保存配置。

  7. 等待设定的时间,然后检查是否已创建 ESXi 配置备份存档。

这是一个演示自动化理念的简单脚本。您可以创建复杂的脚本来备份多个 ESXi 主机。

注意:每次 ESXi 重启或空闲时间达到 30 分钟时,ESXi 会话的身份验证会过期。在创建自动化 ESXi 备份脚本时,请记住此功能。

如何在 vSphere CLI 中恢复 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 定义在Manifest.txt文件中,位于tgz备份存档内),您可以使用-f键(强制)来覆盖 UUID。

您可以使用以下命令检查运行中的 ESXi 主机的 UUID,正如您回忆的:

esxcfg-info -u

注意:从 ESXi 7.0 U2 开始,如果 ESXi 主机上使用了 TPM(可信平台模块),UUID 强制覆盖功能将不起作用。

方法 3:使用 PowerCLI 备份 ESXi 主机

喜欢使用 Windows PowerShell 的用户可以使用用于 vSphere 管理的 PowerCLI 来备份 ESXi 配置。PowerCLI 是一组 PowerShell 命令,一些基本的 PowerCLI 命令在这篇博文中有解释。

要使用 PowerCLI 备份 ESXi 主机,您首先必须在操作系统上安装 PowerCLI

  1. 以管理员身份在 Windows 中运行 PowerCLI。
  2. 连接到您的ESXi服务器:

    Connect-VIServer ESXi_IP_address -user user_name -password your_password

    在我们的情况下,我们使用以下命令:

    Connect-VIServer 192.168.101.208 -user root -password TestPass_555

    Get-VMHostFirmware -vmhost 192.168.101.208 -BackupConfiguration -DestinationPath "C:\backup ESXi host"

    • 如果您的ESXi主机由vCenter Server管理,您可以先连接到vCenter,然后在PowerCLI中备份每个主机配置时无需每次在备份每个主机配置之前进行身份验证:

      Connect-VIServer 10.10.10.16

      输入用于访问vCenter Server的管理登录和密码。出现一个弹出窗口用于此目的。

  3. 备份每个 ESXi 主机的配置:

    Get-VMHostFirmware -vmhost 10.10.10.61 -BackupConfiguration -DestinationPath "C:\backup ESXi host"

    Get-VMHostFirmware -vmhost 10.10.10.46 -BackupConfiguration -DestinationPath "C:\backup ESXi host"

如何在PowerCLI中恢复ESXi配置

  1. 以管理员身份运行VMware PowerCLI。
  2. 连接到要恢复配置的ESXi主机(在我们的示例中,我们将在IP地址为192.168.101.208的ESXi主机上恢复配置)。
  3. 将ESXi主机进入维护模式:

    Set-VMHost -VMHost 192.168.101.208 -State Maintenance

  4. 确保该ESXi主机上的虚拟机已关闭或迁移到另一个ESXi主机上,然后再恢复ESXi配置。请注意,在执行恢复配置的命令后,ESXi主机将自动重新启动。
  5. 使用Set-VMHostFirmware restore命令来恢复配置:

    Set-VMHostFirmware -vmhost 192.168.101.208 -Restore -SourcePath "C:\backup ESXi host\configBundle-192.168.101.20

    8.tgz" -HostUser root -HostPassword TestPass_555

配置还原所用的 ESXi 主机的版本、构建号和 UUID 必须与您用来恢复配置的 ESXi 主机的版本、构建号和 UUID 相匹配。在命令中使用 -force 键跳过 UUID 检查。

方法 4:ESXi 配置的手动备份和还原

您还应该准备好这样一种情况,即您无法登录到您的 ESXi 主机,或者当 ESXi 主机无法启动时,您无法使用命令行界面来运行备份或还原 ESXi 配置的命令。这可能是由于硬件故障或软件问题导致的。在这种情况下,最好知道如何手动备份和恢复 ESXi 配置。

正如您记得的,默认 crontab 配置在 ESXi 主机上,/sbin/auto-backup.sh 脚本每小时运行一次,每当 ESXi 主机重新启动或关闭时也会运行。此脚本旨在将存储在内存中的 ESXi 配置备份(保存)到 /bootbank/state.tgz 文件中。

注意: /bootbank/state.tgz 文件不能加密以使用此方法。

ESXi 配置在 ESXi 服务器运行时存储在计算机的 RAM 中(适当的 RAM 磁盘已挂载在 /etc/ 目录上)。当 ESXi 启动时,系统文件从 /bootbank/state.tgz 存档中提取到 /etc/ 目录中。如果您的 ESXi 主机正在运行,您可以使用诸如 WinSCP(必须启用远程 SSH 访问)之类的 SCP 客户端手动复制 /bootbank/state.tgz 文件。作为替代方案,如果您的 ESXi 主机无法启动(例如,由于硬件故障),您可以从 Live DVD 引导并手动复制 state.tgz 文件。

手动恢复工作流程

  1. 准备您之前使用 ESXi shell、vSphere CLI 或 PowerCLI 制作的备份存档。在我们的情况下,文件的名称为 configBundle-192-168-101-208.tgz。您可以将文件复制到 USB 闪存驱动器上,然后将该闪存驱动器插入到您必须恢复系统配置的 ESXi 服务器的 USB 端口中。
  2. 从安装了 ESXi 的计算机上的 Live CD/DVD 引导。您可以将 Ubuntu 安装光盘用作 Live CD/DVD。
  3. 在 Linux 中打开控制台(终端)。
  4. 列出分区:

    ls -al /dev/sd*

    fdisk -l | grep /dev/sda

    在这种情况下,我们需要标记为Microsoft基本数据的/dev/sda5/分区。

    在关于从USB闪存驱动器启动ESXiESXi密码恢复的博客文章中提到了ESXi磁盘分区。

    在这种情况下,我们感兴趣的是/dev/sda5分区。

  5. 创建将挂载/dev/sda5分区的目录:

    mkdir /mnt/sda5

  6. 将磁盘分区挂载到该目录:

    mount /dev/sda5 /mnt/sda5

  7. /mnt/sda5目录中,您可以找到state.tgz文件,其中包含ESXi配置。当ESXi主机启动时,该目录(存储state.tgz的目录)称为/bootblank/
  8. 将ESXi配置备份存档从USB闪存驱动器复制到从Live DVD加载的Ubuntu的/tmp/目录。在我们的示例中,我们复制:

    cp /media/Ubuntu/Ubuntu\ 18.0/backup_ESXi_host/configBundle-192-168-101-208.tgz /tmp/configBundle.tgz

  9. 从备份存档中提取文件:

    tar zxvf /tmp/configBundle.tgz

  10. 您可以看到从存档中提取了state.tgz文件:

    ls -al /tmp/

  11. 将位于/mnt/sda5//dev/sda5分区上挂载的原始state.tgz文件重命名

    mv /mnt/sda5/state.tgz /mnt/sda5/state-old.tgz

  12. 复制您从ESXi配置备份存档(configBundle.tgz)中提取的state.tgz文件到/tmp/目录:

    cp /tmp/state.tgz /mnt/sda5/

  13. 卸载已挂载的分区:

    umount /dev/sda5/

  14. 重新启动服务器。弹出Ubuntu Live DVD并从安装了ESXi的磁盘启动。

    init 6

现在您的ESXi配置应该已经恢复。

结论

使用ESXi命令行界面很好,因为您不需要安装额外的软件。 vSphere CLI的优势在于可以通过使用Linux机器远程运行命令以及使ESXi配置备份自动化。另一方面,Windows用户可能会喜欢PowerCLI。

如果ESXi主机不健康,并且无法引导主机,则可以手动备份和恢复配置。请注意,引导空白信息和有关虚拟机的信息不存储在ESXi配置备份文件中。恢复ESXi配置后,您可能需要在库存中注册虚拟机。

建议除了备份ESXi主机外,还备份您的vSphere虚拟机。NAKIVO备份与复制是一种通用的备份解决方案,可以备份您的VMware VM、Hyper-V VM、Amazon EC2实例以及物理Linux和Windows服务器。

Source:
https://www.nakivo.com/blog/back-up-and-restore-vmware-esxi-host-configuration-guide/