BackupZit

免费 Hyper-V 备份:如何备份 Hyper-V 虚拟机

完整指南:从一台 Hyper-V 主机到对其所有虚拟机进行定时、加密、去重的备份——通过 VSS 保持一致,借助 Resilient Change Tracking 实现增量,带有异地副本,并可还原为新虚拟机、原位还原或按文件还原。

您将搭建什么

BackupZit 通过 Hyper-V 主机上的代理备份 Hyper-V 虚拟机,虚拟机内无需安装任何东西。备份时 Windows 和 Linux 客户机继续运行。Web 控制台负责调度作业、保存历史记录并执行还原。BackupZit 免费且开源(AGPLv3),不限主机和虚拟机数量。

Windows Server 自带 Windows Server Backup,也能备份主机上的 Hyper-V 虚拟机。对于单台主机和本地磁盘,它可能就够用了。如果您需要把多台主机定时备份到 SFTP、SMB、S3 或不可变存储库,并带有保留策略、加密和去重,能从虚拟机磁盘还原单个文件——并用同一个控制台管理 Proxmox、VMware、物理服务器、数据库和 Microsoft 365,BackupZit 就值得一试。

准备条件

  • 一台 Hyper-V 主机:带 Hyper-V 角色的 Windows Server 2016 或更高版本,或启用 Hyper-V 的 Windows 10/11。集群中为每台主机。
  • BackupZit 控制台的运行位置:一台 2 vCPU、2–4 GB 内存、16–20 GB 磁盘的小型 Linux 虚拟机。它本身不存储备份数据,因此可以作为虚拟机运行在同一台 Hyper-V 主机上。
  • 主机之外的备份存储——例如文件服务器或 NAS 上的 SMB 共享、通过 SFTP 访问的 Linux 服务器、S3 兼容存储桶,或 BackupZit 加固存储库。代理直接写入其中。
  • 网络:代理通过 TCP 8443 端口连接控制台。

第 1 步 — 安装控制台

在 Hyper-V 上最快的方式是使用下载页面上现成的虚拟机镜像 backupzit-appliance-vhdx.zip(Debian、PostgreSQL 和控制台均已配置好):

  1. 将 backupzit-appliance-vhdx.zip 解压到存放虚拟机磁盘的文件夹。
  2. 在 Hyper-V 管理器中创建一台 2–4 GB 内存的第 1 代虚拟机,连接到虚拟交换机,并选择解压出的 VHDX 作为现有磁盘。
  3. 启动虚拟机。屏幕上会显示 Web 控制台地址和用户 admin 的初始密码。打开 https://<地址>:8443,登录并修改密码。浏览器会对自签名证书提示一次警告。

在虚拟机自身的屏幕上可以用 bzadmin 登录,设置静态地址、服务器名称和时区(appliance 以 UTC 启动,计划任务按控制台时区运行)。想用现有的 Debian、Ubuntu、AlmaLinux 或 Rocky Linux 服务器?下载页面上的一行安装脚本可以完成同样的工作。

第 2 步 — 添加存储目标

在控制台中打开存储并添加一个目标。Windows 环境中的常见选择:

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

保持加密备份(AES-256)开启(默认):所有数据在离开主机之前都会在主机上用 AES-256 加密。控制台随后会显示恢复密钥——打印恢复页,或将密钥保存在密码管理器中,与备份分开存放。有了密钥、存储位置及其凭据,即使控制台丢失也能还原。

第 3 步 — 在 Hyper-V 主机上安装代理

  1. 在控制台中打开Agent,点击创建注册令牌。您会获得一个注册码(BZ1-…),有效期 7 天,可用于任意数量的机器。
  2. 从 Agent 页面下载 Windows 代理(MSI),在主机上运行,并在安装程序提示时粘贴注册码。多台主机可以通过 GPO、Intune 或 RMM 工具静默安装:
    msiexec /i backupzit-agent.msi /qn ENROLLCODE="BZ1-..."
    控制台也可以通过 WinRM 自行安装代理:Agent → 从此处安装到机器,使用仅用于安装、不会被保存的管理员帐户。
  3. 一分钟内,主机会出现在 Agent 页面上,并带有 Hyper-V · N VMs 标记。

代理通过 Hyper-V 自身的接口工作:Hyper-V PowerShell 模块和 Windows Virtual Disk API。控制台不保存任何 Hyper-V 凭据。在集群中,请在每台主机上安装代理。

第 4 步 — 创建备份作业

  1. 打开备份作业,创建作业并选择主机的代理。
  2. 选择虚拟机(Proxmox VE、Hyper-V、VMware),然后选择主机上的所有虚拟机(及容器)——之后创建的虚拟机会自动包含——或勾选单个虚拟机。
  3. 选择第 2 步中的存储目标。
  4. 设置计划,例如每个工作日 22:00。作业也可以每 15 分钟到 12 小时重复一次、每月运行一次,或在另一个作业之后启动。
  5. 设置保留策略。例如:3 个最新、7 个每日、4 个每周、6 个每月,约保留半年历史和约 20 个还原点。

每次运行时会发生什么:

  1. 创建一个临时恢复检查点(backupzit_…)——这是 Hyper-V 为备份应用提供的检查点类型。虚拟机继续运行。
  2. 恢复检查点会为虚拟机磁盘开启 Resilient Change Tracking(RCT);磁盘旁会出现 .rct 和 .mrt 文件。首次备份读取整个磁盘;之后 RCT 会报告自上次备份以来哪些块发生了变化,只读取这些块。
  3. 按检查点时刻的状态以 1 MiB 块读取磁盘——VHDX 和 VHD,包括早期检查点链。空块不存储,已在存储库中的块不会再次上传。但每个备份仍是一个完整的还原点。
  4. 删除检查点,Hyper-V 在后台合并它。虚拟机配置随备份一起保存:代数、CPU、内存、网络适配器(交换机、VLAN、MAC 地址)、磁盘控制器、安全启动和 TPM。

BackupZit 测试实验室中的一个例子:一台带 3 GB 磁盘的 Linux 虚拟机。首次备份读取了 3 GB;新增 64 MB 数据后,下一次备份读取了 96 MB。

已关闭的虚拟机直接读取,不创建检查点。在早于 Windows Server 2016 的主机上没有恢复检查点:会使用生产检查点,每次备份都读取整个磁盘。

Windows 10/11 主机:除非关闭该选项,Hyper-V 会在每次启动虚拟机时创建自动检查点。BackupZit 能处理这些检查点,但对于服务器虚拟机,请关闭自动检查点(虚拟机设置 → 检查点)。

第 5 步 — 应用一致性备份

创建恢复检查点时,Hyper-V 会请求客户机做好准备:

  • Windows 客户机通过 VSS 刷新其应用程序(SQL Server、Exchange、Active Directory 等)的数据。
  • Linux 客户机在安装了 Hyper-V 守护程序时冻结其文件系统——根据发行版为 hyperv-daemons 软件包或 hv-vss-daemon。

如果客户机两者都做不到,检查点为崩溃一致性——就像断电后一样。运行页面会按虚拟机显示所用的类型,让您一眼看出哪些客户机还需要安装守护程序。

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

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

  • 代理复制现有备份;不会再次读取虚拟机。
  • 只发送目标中尚不存在的数据,并使用目标的密钥加密。
  • 副本有自己的计划和保留策略,例如 NAS 上保留 7 个每日、云端保留 12 个每月。

从副本还原虚拟机和单个文件与从原始备份还原相同。自动还原测试(默认每周一次,位于设置 → 还原测试)会读取最新虚拟机备份中的随机块,并按校验和进行验证。关于不可变副本的更多信息,请参阅勒索软件防护。

还原

打开一次备份运行(从作业页面或活动中),选择还原 Hyper-V 虚拟机。可以还原到同一台主机,或另一台装有代理的 Hyper-V 主机。

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

  • 创建第二台带有新 MAC 地址的虚拟机,使其能与原虚拟机在同一网络中运行。默认名称为原名称加上“restored”和日期。
  • 新虚拟机上的自动检查点已关闭,因此启动它不会留下检查点文件。
  • 绑定到 MAC 地址的客户机网络设置(例如 Linux 云镜像中 netplan 的 match: macaddress)不适用于新的适配器。

替换原虚拟机

勾选关闭它并替换其磁盘。BackupZit 会关闭现有虚拟机、合并其检查点,并用还原的磁盘替换其磁盘。虚拟机保留其 ID、网络适配器和 MAC 地址,因此作业、监控和客户机网络都能继续工作。旧的磁盘文件不会删除,而是重命名为 ….replaced-日期——还原的虚拟机正常工作后再删除它们。如果原虚拟机已不存在,则会以新的 Hyper-V ID 重新创建。

还原后的虚拟机会获得什么

  • 虚拟交换机按名称连接;如果主机上没有该交换机,适配器保持断开。
  • 每台还原的虚拟机都会获得新的生成 ID,使 Active Directory 域控制器能够安全地识别还原。
  • 选项:虚拟磁盘的文件夹,以及还原后是否启动虚拟机。

单个文件

在备份运行的虚拟机表中点击浏览文件,可查看虚拟机磁盘上的分区和卷。可以浏览 NTFS、ext2/3/4 和 XFS,包括 LVM 内部,并下载文件(多个文件打包为 ZIP)或还原到任意代理上的文件夹——不必为一份丢失的文档还原整台虚拟机。

使用命令行

不使用控制台也能完成所有操作,在 Hyper-V 主机上以管理员身份运行——例如在灾难后重建主机:

backupzit-agent hyperv list
backupzit-agent hyperv backup  --repo ... [--vmid N,N]
backupzit-agent hyperv restore --repo ... --vmid N --new --name 名称 --folder D:\VMs --start latest

--vmid 是 hyperv list 显示的编号。不带 --new 时虚拟机原位还原;--overwrite 确认可以替换现有虚拟机的磁盘。

需要了解的限制

  • 不备份共享 VHDX、VHD Set 和直通磁盘。
  • 即时恢复(直接从备份运行虚拟机)适用于 Proxmox VE 和 VMware,Hyper-V 暂不支持——已在计划中。Hyper-V 还原会先复制磁盘。
  • 早于 Windows Server 2016 的主机没有恢复检查点和 RCT,因此每次备份都读取整个磁盘。

下一步

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