BackupZit

VMware ESXi 备份,免费版 ESXi 许可证也适用

一份完整的指南:从一台 ESXi 主机——有许可证、免费版或由 vCenter 管理——到其虚拟机的定时、加密、去重备份,包括更改块跟踪、静默(quiesce)快照、异地副本,以及作为新虚拟机、替换原虚拟机、按文件或直接从备份运行的还原。

您将搭建什么

BackupZit 备份 VMware ESXi 虚拟机时,无需在 ESXi 或虚拟机内安装任何东西。网络中任意一台机器上的 BackupZit 代理充当主机的代理服务器(proxy):它创建快照,只读取虚拟磁盘中已更改的块,并写入您的存储。Web 控制台负责调度作业、保存历史并执行还原。BackupZit 免费且开源(AGPLv3),不限主机和虚拟机数量。

免费版 ESXi 许可证使主机的 API 变为只读:可以通过它读取虚拟机,但不能修改。因此,BackupZit 在免费主机上通过 SSH 创建快照和执行还原,在有许可证的主机和 vCenter 上则使用 vSphere API。控制台会自动选择正确的方式。

所需条件

  • 直接连接的 ESXi 6.7、7 或 8,或带有其 ESXi 主机的 vCenter Server 7 或 8。
  • 具有管理员权限的用户:主机上通常为 root;vCenter 上为 administrator@vsphere.local 或具有 Administrator 角色的用户。
  • 放置 BackupZit 控制台的位置:一台 2 vCPU、2–4 GB 内存、16–20 GB 磁盘的小型 Linux 虚拟机。控制台本身不存储备份数据。
  • 一个代理服务器代理:任意装有 BackupZit 代理的 Windows 或 Linux 机器,能通过 443 端口(使用 SSH 时还有 22 端口)访问主机。
  • 主机之外的备份存储——例如通过 SFTP 访问的 Linux 服务器或 NAS、SMB 共享、S3 兼容存储桶或 BackupZit 加固存储库。
  • 网络:代理通过 TCP 8443 端口访问控制台。

免费版 ESXi 许可证有何不同

免费许可证可以使用,只需准备三件事:

  • 在主机上启用 SSH:在 ESXi Host Client 中选择 Host → Actions → Services → Enable Secure Shell。有许可证的主机和 vCenter 不需要 SSH。
  • 更改块跟踪(CBT)只能在虚拟机关机时开启。BackupZit 会在第一次发现虚拟机处于关机状态的备份中开启它;在此之前,每次备份都读取整个磁盘,运行记录会显示警告。请将每台虚拟机关机一次(例如在维护窗口内),并让一次备份运行。
  • 数据存储的可用空间:备份运行中的虚拟机时,其磁盘会以精简(thin)方式复制到所在的数据存储,因此数据存储需要与磁盘实际占用量相当的可用空间。

之后获得许可证的主机会自动切换到 vSphere API,无需额外设置。

第 1 步 — 安装控制台

在 ESXi 上最快的方式是使用下载页面上的现成虚拟机映像 backupzit-appliance.ova(Debian、PostgreSQL 和控制台均已配置好,含 VMware Tools):

  1. 在 ESXi Host Client 中选择 Create / Register VM → Deploy a virtual machine from an OVF or OVA file 并选择 OVA 文件。在 vCenter 上使用 Deploy OVF Template。为虚拟机分配 2 vCPU 和 2–4 GB 内存。
  2. 启动虚拟机。其屏幕上会显示 Web 控制台的地址和用户 admin 的初始密码。打开 https://<地址>:8443,登录并修改密码。

在虚拟机屏幕上,bzadmin 可以设置静态地址和时区(计划按控制台的时区运行)。如果使用现有的 Linux 服务器,请改用下载页面上的安装脚本。

第 2 步 — 添加存储目标

在控制台中打开存储并添加目标。虚拟机备份的常见选择:

类型适用于
SFTP任何带 SSH 的 Linux 服务器或 NAS;服务器的主机密钥会被固定。
SMB 共享Windows 文件服务器、Synology 或 QNAP NAS(SMB 2/3)。
S3 兼容异地副本:AWS S3、Wasabi、Backblaze B2、MinIO、Ceph;配合 Object Lock 可不可变。
加固存储库运行 backupzit-repo 的 Linux 服务器:在不可变期结束前备份无法删除。

保持加密备份(AES-256)开启(默认)。控制台随后会显示恢复密钥——打印恢复单或将密钥存入密码管理器,与备份分开保存。有了密钥、存储位置及其凭据,即使控制台丢失也能还原。

第 3 步 — 安装代理服务器代理

备份数据经过代理服务器代理传输,因此请将其放在靠近 ESXi 主机和存储的高速网络中。Linux 是更好的选择:只有 Linux 代理才能执行即时恢复。

  1. 在控制台中打开 Agent,点击创建注册令牌。您会得到一个有效期 7 天的注册码(BZ1-…)。
  2. 从 Agent 页面下载代理软件包。在 Debian 或 Ubuntu 上:
    apt install ./backupzit-agent_*.deb
    backupzit-agent enroll --code "BZ1-..."
    systemctl enable --now backupzit-agent
    在 Windows 上运行代理 MSI 并粘贴注册码。控制台也可以自行安装代理:Agent → 从此处安装到机器。

第 4 步 — 添加 ESXi 主机或 vCenter

打开 Agent 页面的 VMware ESXi 主机部分,填写添加 ESXi 主机或 vCenter Server——地址、用户、密码和代理服务器代理——然后点击添加 ESXi 主机或 vCenter。控制台会连接一次,读取虚拟机列表和许可证,并固定主机的 HTTPS 证书和 SSH 主机密钥:如果之后同一地址上换成了另一台机器,BackupZit 会拒绝连接,而不是把密码发给它。密码以加密形式保存。

模式列显示主机的处理方式:

  • vSphere API(有许可证的主机,无需 SSH)——快照、磁盘复制、还原和即时恢复都通过 API 完成。
  • 免费许可证:通过 SSH 进行快照和还原——API 为只读,因此这些步骤通过 SSH 完成。

主机的更改方式默认为自动,也可以强制设为始终使用 SSH 或始终使用 vSphere API。如果主机证书因已知原因发生变化——重装、新证书、加入 vCenter——请先将指纹与主机核对,再点击接受新证书。

使用 vCenter Server

像添加主机一样添加 vCenter。BackupZit 便可通过这一个连接看到数据中心内所有 ESXi 主机和集群的虚拟机;不会通过 SSH 做任何更改。用 vMotion 迁移的虚拟机会继续被备份,因为虚拟机按实例 UUID 而非所在主机识别。不要将同一台 ESXi 主机既直接添加又通过 vCenter 添加,否则其虚拟机会被备份两次。

第 5 步 — 创建备份作业

  1. 打开备份作业,创建作业并选择 ESXi 主机——它在代理列表的 VMware ESXi 主机下。
  2. 选择虚拟机(Proxmox VE、Hyper-V、VMware),再选择主机上的所有虚拟机(及容器)——之后创建的虚拟机会自动包含在内——或勾选单个虚拟机。
  3. 选择第 2 步中的存储目标并设置计划,例如每个工作日 22:00。
  4. 设置保留备份。示例:最近 3 个、每日 7 个、每周 4 个、每月 6 个,可保留约半年的历史,约 20 个还原点。

作业在主机的代理服务器代理上运行。每次运行时会发生:

  1. 如果虚拟机的更改块跟踪处于关闭状态,则将其开启——在有许可证的主机上自动开启,在免费主机上则在第一次发现虚拟机关机的备份中开启。
  2. 创建快照 backupzit_…;如果客户机中运行着 VMware Tools,则为静默快照(参见第 6 步)。
  3. CBT 报告要读取哪些块:第一次备份只读取已使用的块,之后只读取自上次备份以来更改的块。
  4. 运行中的虚拟机会锁定其磁盘,因此磁盘会以精简方式复制到数据存储,快照随即删除,通常只需几秒。代理通过 HTTPS 读取副本后将其删除。关机的虚拟机直接读取。
  5. 虚拟机的配置(.vmx)和 NVRAM 与备份一起保存。

来自 BackupZit 测试实验室的示例:一台 Debian 虚拟机,磁盘 8 GB,已用 1.6 GB。第一次备份读取了 1.6 GB。下一次在新增 50 MB 数据后读取了 70 MB,耗时 23 秒。

第 6 步 — 应用一致性备份

客户机中运行 VMware Tools 时,快照会被静默(quiesce):应用程序和文件系统先将数据刷新到磁盘,因此备份具有应用一致性。没有 VMware Tools 时则为崩溃一致性——相当于断电后的状态。请在 Linux 虚拟机中安装 open-vm-tools,在 Windows 虚拟机中安装 VMware Tools。

第 7 步 — 保留异地副本(3-2-1)

3-2-1 规则:数据保留三份副本,存放在两种不同介质上,其中一份在异地。添加第二个类型为备份副本的作业,选择 VMware 作业作为源,并选择一个异地目标,例如启用 Object Lock 的 S3 存储桶或另一栋楼里的加固存储库。

  • 代理复制已有的备份;不会再次读取虚拟机。
  • 默认情况下,副本在源作业每次备份后运行,并有自己的保留策略——例如 NAS 上保留 7 个每日备份,云端保留 12 个每月备份。

整台虚拟机和单个文件都可以像从原始备份一样从副本还原。在设置 → 还原测试中,自动还原测试(默认每周)和检查已存储的数据(默认每月)会校验备份。关于不可变副本的更多信息,请参阅勒索软件防护。

还原

打开一次备份运行(从作业页面或活动中),选择还原 VMware 虚拟机,或在还原向导中选择整台虚拟机。在在 ESXi 主机上还原中选择目标(使用 vCenter 时还可选择运行虚拟机的 ESXi 主机),需要时再选择其他数据存储。

作为原虚拟机旁的新虚拟机

创建一个具有新名称、新 UUID 和新 MAC 地址的副本;默认名称为原名称加 -restored- 和日期。与旧 MAC 地址绑定的客户机网络设置(例如云映像中 netplan 的 match: macaddress)对副本不生效。

替换原虚拟机

勾选关闭它并替换其磁盘。BackupZit 会关闭虚拟机,删除其快照,将当前磁盘重命名为 ….replaced-日期.vmdk(还原后的虚拟机正常工作后请删除它们),然后将备份写入使用原名称的新磁盘。虚拟机保留其 UUID、网络适配器和 MAC 地址。已删除的虚拟机会以原有身份重新创建。

磁盘以精简方式还原,只写入有数据的块——在有许可证的主机和 vCenter 上通过 vSphere API,在免费许可证上通过 SSH。如需要,可勾选还原后启动虚拟机。连接到 CD/DVD 驱动器的 ISO 映像不属于备份内容。

即时恢复

选择即时从备份运行,虚拟机可在几秒内启动。Linux 代理服务器代理通过 NFS 直接从备份提供其磁盘;主机将其挂载为数据存储 backupzit-<代理>。更改保存在代理上;备份本身从不被修改。当虚拟机运行正常后,在运行页面上:

  • 完成将其迁移到数据存储——在 vCenter 上通过 Storage vMotion 在运行中完成;在独立主机上,复制磁盘期间需要短暂关机(免费许可证上通过 SSH 使用 vmkfstools)。
  • 丢弃虚拟机会停止并删除它及其所有更改。

如果 ESXi 主机与代理之间有防火墙,请开放从主机到代理的 2049 和 111 端口。

单个文件

备份页面上的浏览文件(或还原向导中的虚拟机中的文件)会打开虚拟机的磁盘。您可以浏览 NTFS、ext2/3/4 和 XFS(包括 LVM 上的),下载文件或将其还原到任意代理。

同一控制台中的 Proxmox。BackupZit 也备份 Proxmox VE 虚拟机和容器。如果您正从 ESXi 迁移到 Proxmox,在迁移完成之前,两个平台都可以在同一个控制台中、使用相同的存储和报表进行保护。VMware 备份会还原到 ESXi 主机。

需要了解的限制

  • 暂不能添加包含多个数据中心的 vCenter;请直接添加其他数据中心的主机。
  • 自带快照的虚拟机不会被备份:请先删除或整合这些快照。
  • 裸设备映射(RDM)和独立磁盘不会被备份。
  • 即时恢复需要 Linux 代理服务器代理。

后续步骤

下载 BackupZit,查看所有 VMware 功能,或阅读控制台内置指南中关于 VMware ESXi 的完整章节。也在使用 Proxmox 或 Hyper-V?请参阅 Proxmox 虚拟机备份指南和 Hyper-V 备份指南。欢迎在 GitHub Discussions 中提问。企业可以从 MaxZit 获得商业支持(仅提供英文服务)。