ESXi Config Backup - 夜莺博客

ESXi Config Backup

原文:ESXi Config Backup — theDXT (Daniel Keer)

Backups are a good thing to have. While it can be super quick and easy to rebuild your ESXi config sometimes that is not always the case. It’s a good idea to have a backup just in case. Here’s how to do it.

背景:为什么单机也要单独做配置备份

ESXi 主机的配置看起来不多,但一旦重装,需要人工重建的东西并不少:标准交换机的 vSwitch 与端口组、VLAN ID、物理上行与负载均衡策略、存储的 iSCSI/NFS 挂载与 CHAP 参数、本地用户与权限、证书与 SSL 指纹、NTP/DNS/syslog 设置,以及各种高级参数(ESXi Shell 超时、设备队列深度、TSO 开关等)。主机只有一两台时重建很快,遇到十几台做过大量自定义参数的主机,重建一次就是半天甚至一整天的工作量,还容易漏掉某个不起眼但关键的设置。

好消息是 ESXi 自带一个非常轻量的配置导出接口:vim-cmd hostsvc/firmware/backup_config。它会把整机配置打包成一个 tgz,恢复时也只需要一条命令。原文给出的最小流程是:启用 SSH → 执行 sync_configbackup_config → 按输出地址下载 tgz。下面在完整保留原文步骤与截图的前提下,补齐了自动同步、下载归档、恢复验证与常见的坑。

需要提前知道的一点是:这个接口导出的是“主机配置”,不含虚拟机的数据盘文件,也不替代虚拟机级备份(Veeam 之类的镜像备份)。两者是互补关系:配置包负责让主机快速回到原本的样子,虚拟机备份负责业务数据。

什么时候最值得做一次导出?经验上有四个节点:主机首次上架并完成网络与存储配置之后(作为“基线包”);修改 vSwitch、端口组、VLAN 或上行策略之前;安装补丁与大版本升级之前;以及把主机交给客户或同事之前。尤其是最后一条,交付时附一份配置包,对方后续不管重装还是迁机房都能快速对齐。

前置条件

  • 主机 root 账号与口令;ESXi 6.x / 7.x / 8.x 都支持该接口,语法一致。
  • 启用 SSH 服务:在 vSphere Client 或主机客户端里选中主机 → 右键 → Services → Enable Secure Shell。原文截图如下。
  • 准备存放备份的位置(NAS、文件服务器或管理跳板机),并留出访问权限;配置包里含主机名、管理 IP、数据存储与网络配置,属于敏感信息。
  • 如果主机已加入 vCenter,建议先同步一次运行态配置,保证导出的是最新状态。
  • 维护窗口不是必须的,导出过程对主机无影响;但恢复过程会重启主机,必须安排窗口。

Image 8
原文截图:在主机右键菜单的 Services 里启用 Secure Shell

分步命令

第 1 步,启用 SSH 并登录。按上面的方式启用 Secure Shell 后,用 SSH 登录主机:

ssh root@esxi-host-ip

第 2 步,执行原文给出的两条命令。第一条把当前运行配置同步到本地配置文件,第二条生成可下载的配置包:

vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config

第二条命令的输出会直接告诉你去哪里下载(原文截图):

Image 9

输出形如(目录名与主机名随环境不同):

Bundle can be downloaded at : http://*/downloads/6d1b2c3d/configBundle-esxi01.lab.local.tgz

第 3 步,把输出里的 * 换成主机 IP,用浏览器下载——这是原文的做法,也是最直观的一种:

Image 10

如果主机数量多,建议直接在跳板机上用命令行取走,避免手工点浏览器:

mkdir -p /backup/esxi01
wget http://10.0.0.21/downloads/6d1b2c3d/configBundle-esxi01.lab.local.tgz \
     -O /backup/esxi01/$(date +%F)-configBundle-esxi01.lab.local.tgz

第 4 步,校验并归档。打开压缩包看一眼目录结构,并生成校验值方便日后确认文件没被截断:

tar -tzf configBundle-esxi01.lab.local.tgz | head
sha256sum configBundle-esxi01.lab.local.tgz > configBundle-esxi01.lab.local.tgz.sha256

第 5 步(可选,恢复用)。把配置包放回主机的 /tmp 或本地存储,然后执行恢复:

vim-cmd hostsvc/firmware/restore_config /tmp/configBundle-esxi01.lab.local.tgz

恢复过程中主机会自动进入维护模式、导入配置并重启,重启后配置即生效。到此就完成了原文结尾描述的那一步:你已经有了一份这台 ESXi 主机的配置备份。

Image 11

验证

  • 导出侧tar -tzf 能列出配置包内容,文件大小稳定(通常几十 KB 到 1 MB 级别);sha256sum -c 校验通过。
  • 恢复侧:重启后逐项确认——esxcli system hostname get 主机名正确;esxcli network vswitch standard portgroup list 端口组齐全;esxcli storage filesystem list 数据存储已挂回;esxcli network ip interface ipv4 get 管理地址与网管一致。
  • 带外再确认:在 vCenter 里看主机连接状态是否为 Connected、告警是否清空。
  • 做成例行任务:导出操作可以脚本化,参考本站的 vCenter ESXi 配置备份脚本,把每台主机的配置包按日期归档。

回滚与常见问题

  • 下载地址打不开backup_config 生成的下载地址只在本次会话内有效,主机重启或服务重启后失效,务必当场把文件取走。
  • 恢复报配置不兼容:备份包与目标主机的 ESXi 版本、机型需要匹配,跨大版本恢复前先把目标主机升到相同 build;本站记录过的 ESXi 配置恢复 bug 也是常见坑。
  • 只执行了一条命令sync_config 只是把运行态写入本地配置,本身不产生可下载的包;漏掉 backup_config 会以为“已经备份过了”,实际上没有任何可恢复的文件。
  • 升级前后各做一次:ESXi 打补丁或大版本升级前先备份配置,升级方式见 ESXi 手动升级,出问题可以先退回配置再排查。
  • 忘记关闭 SSH:备份做完就把 Secure Shell 关掉,或设置服务自动停止,减少管理面暴露。
  • 恢复后留意证书:配置包会把主机自签名证书一并带回来,如果之前重新生成过证书(参见本站相关文章),恢复后再核对一次指纹,避免 vCenter 报证书不受信任。
  • 保留策略:至少保留最近三次的配置包加一份基线包;主机名或管理 IP 变更后重新导出一份,旧包里的地址信息会误导恢复操作。
  • 文件名带日期:归档时把日期写进文件名或目录名,比依赖文件系统时间戳可靠,回滚时能快速判断该用哪一份。
  • 文件保存策略:配置包内含主机名、IP 与访问信息,归档时按备份介质同等级别加密存放,不要放在公开的 Web 目录里。