HOOOS

穷玩 HomeLab:双盘位 N100 小主机跑 PVE,怎么用 ZFS 做最低成本的容灾?

0 4 HomeLab老Q Proxmox VEZFS数据备份
Apple

在 HomeLab 圈子里,N100 双盘位小主机(比如各类双网口/多网口轻量 NAS、小主机)几乎是性价比的代名词。

但双盘位跑 Proxmox VE (PVE) 会面临一个尴尬的痛点:如果直接做 ZFS Mirror(镜像),可用容量直接减半,且由于很多小主机是“一个 NVMe + 一个 SATA”的非对称组合,强行组 Mirror 会让 NVMe 降速降寿命去迁就 SATA。

如果不组 Mirror,一旦单盘挂掉,宿主机重装、虚拟机(VM)和容器(LXC)数据丢失的痛苦,经历过一次就终生难忘。

如何在不牺牲双盘容量、不购买昂贵外部 NAS 的前提下,利用 ZFS 优秀的快照特性,实现低成本甚至零成本的 PVE 宿主机与数据“防灾恢复”?

下面这套针对 N100 双盘主机的“非对称容灾策略”,兼顾了空间利用率、备份可靠性和重建速度。


一、 核心痛点:双盘位小主机的物理限制

在设计方案前,先要明确 N100 小主机的硬件局限:

  1. 通道与接口不对称: 通常是一个 M.2 NVMe(PCIe 3.0 x2 或 x4)加一个 2.5 寸 SATA。
  2. IO 性能瓶颈: N100 的 PCIe 通道总数有限(共 9 条),无法承载高并发的 ZFS 存储阵列。
  3. 无物理冗余: 一旦机器冒烟,或者双盘因电源问题同时受损,本地备份全部失效。

因此,我们的装机思路是:

  • 盘 A(NVMe SSD): 划分为单盘 ZFS 存储池(rpool),跑 PVE 系统和对 IO 要求高的 VM/LXC。
  • 盘 B(SATA SSD/大容量 HDD): 划分为第二个单盘 ZFS 存储池(backup-pool),用于本地温备份、存储大容量冷数据(如 PT 下载、媒体库)。
  • 外置介质(USB 移动硬盘/闲置 U 盘/云端): 用于核心数据的冷备份与异地备份。

二、 策略一:宿主机配置备份(最易被忽略的环节)

很多人只备份虚拟机,结果宿主机一挂,网络桥接(VLAN、物理网卡命名)、PCIe 直通、本地定时脚本、挂载路径全部得重新摸索配置,极其耗时。

PVE 的系统本质上是 Debian,但其集群配置存储在特殊的 pmxcfs/etc/pve)中。我们不需要备份整个系统盘,只需要定期备份核心配置文件。

1. 编写轻量化备份脚本

在 PVE 宿主机中创建脚本 /root/pve-config-backup.sh

#!/bin/bash
BACKUP_DIR="/backup-pool/pve-host-backup"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p ${BACKUP_DIR}

# 打包核心配置目录
tar -czf ${BACKUP_DIR}/pve-etc_${DATE}.tar.gz /etc/pve /etc/network/interfaces /etc/fstab /etc/resolv.conf /etc/hosts /etc/modules /etc/default/grub

# 保留最近 7 天的备份
find ${BACKUP_DIR} -name "pve-etc_*.tar.gz" -mtime +7 -exec rm -f {} \;

2. 设定 Cron 定时任务

通过 crontab -e 设定每晚 3 点自动运行。这样,即使 rpool 彻底报废,重装 PVE 后,只需解压这个包,覆盖 /etc/network/interfaces 等文件,即可瞬间找回原网络和集群配置。


三、 策略二:利用 ZFS 快照与 replication(复制)实现本地快速拉起

因为我们有两个独立的 ZFS 池(rpoolbackup-pool),可以完美利用 ZFS 的原生底层复制功能(zfs send / recv),这比任何应用层备份都要快,且不占用 CPU。

1. 跨池数据同步

在 PVE 网页端中,我们可以直接利用自带的 Replication(复制) 功能。

  • 前提: PVE 必须处于集群模式下(即使是单节点,也可以通过 pvecm create local 自建伪集群)。
  • 操作: 在 VM/CT 的 "Replication" 选项中,新增复制任务,将 rpool 上的虚拟机定时同步到 backup-pool
  • 效果: 比如每 30 分钟同步一次。一旦 rpool(NVMe 盘)暴毙,你只需要在命令行将 backup-pool 上的快照克隆出来,修改一下 VM 的存储指向,1 分钟内就能在盘 B 上把虚拟机重新开机。

四、 策略三:虚拟化部署 PBS(Proxmox Backup Server)

这是双盘位玩家的“白嫖”大招。PBS 的去重和增量备份能力极强,但买一台独立服务器跑 PBS 太奢侈。我们直接在 PVE 宿主机里用 LXC 容器虚拟化部署一个本地 PBS

1. 为什么要在本地虚拟化 PBS?

  • 超强去重: 多个 VM 即使天天备份,由于数据去重,实际占用的盘 B 空间极小。
  • 极速恢复: 本地总线传输,恢复 VM 速度可达数百兆每秒。
  • 脏页跟踪: 备份只需几秒钟即可完成。

2. 部署方案

  1. 在 PVE 上创建一个 Debian 12 的 LXC 容器,将其存储放在盘 B(backup-pool)上。
  2. 在容器内添加 Proxmox 官方非订阅源,直接 apt install proxmox-backup-server
  3. 将盘 B 的一部分目录挂载给这个 LXC 容器,作为 PBS 的 Datastore(数据存储库)。
  4. 在 PVE 宿主机中,将这个本地 PBS 添加为备份存储。

防灾考量: 如果系统盘 A 挂了,本地 PBS 的容器不也没了吗?
不用慌。因为 PBS 的 Datastore 完好无损地保存在盘 B(SATA 盘)上。重装 PVE 后,只需新建一个 PBS 容器,直接挂载盘 B 的旧目录,点击“扫描/重构索引”,所有历史备份立刻完美呈现。


五、 策略四:终极防线——外置 USB 硬盘冷备(异地防灾)

本地双盘再怎么备份,也防不住整机断电烧毁、雷击或者小偷光顾。必须引入 3-2-1 备份原则中的“1 个异地介质”。

这里推荐使用最廉价的旧 2.5 寸机械硬盘 + USB 易驱线,插在 N100 小主机的 USB 3.0 接口上。

1. 为什么不用 ZFS 格式化 USB 硬盘?

警告: 绝对不要用 ZFS 去格式化 USB 外置硬盘。USB 链路极不稳定,轻微的电压波动会导致 ZFS 认为磁盘损坏而直接 export/panic,甚至导致 PVE 宿主机卡死。

  • 推荐格式: 将 USB 硬盘格式化为 Ext4XFS

2. 本地 PBS 数据同步(Sync Job)

如果你采用了策略三(本地部署了 PBS 容器),那么防灾就变得无比简单:

  1. 将 USB 硬盘挂载到 PVE 宿主机,并透传给 PBS 容器。
  2. 在 PBS 容器内,将该 USB 盘设置为第二个 Datastore(命名为 usb-backup)。
  3. 在 PBS 后台配置一个 Sync Job(同步任务),设定每周或每三天,自动将本地 SATA 盘(backup-pool)上的备份,同步复制到 usb-backup 中。
  4. 备份完成后,物理拔掉 USB 硬盘,实现物理冷隔离

哪怕小主机被雷劈得灰飞烟灭,你手里那块拔掉的 USB 硬盘里,依然保留着结构完整、可以直接被任何一台新 PBS 恢复的全部虚拟机数据。


六、 终极灾难恢复演练:假如小主机今天彻底挂了,怎么一步步复活?

别等到灾难发生时才去查手册。以下是这套低成本方案的黄金恢复流程

1. 硬件重建

  1. 买台新的 N100 小主机(或者换掉坏掉的 NVMe 系统盘)。
  2. 将原有的 SATA 盘(盘 B)和备份 USB 硬盘插上。

2. PVE 系统复活

  1. 用 U 盘重装最新版 PVE。
  2. 拔掉 U 盘,插上 USB 备份盘,挂载并读取我们之前备份的 /root/pve-config-backup.sh 压缩包。
  3. 恢复 /etc/network/interfaces,重启网络,PVE 瞬间找回原来的 IP 和网卡配置。

3. 数据拉回

  • 情况 A(SATA 盘没坏):
    导入原有的 backup-pool(命令行执行 zpool import -f backup-pool)。直接新建一个 PBS 容器,把存储挂载过去,PVE 链接本地 PBS,一键 Restore 所有虚拟机。整个过程不超过 20 分钟。
  • 情况 B(两块盘全坏了,只有 USB 盘):
    在全新的盘上装好 PVE 和 PBS,插上 USB 盘,在 PBS 里把 USB 盘添加为 Datastore。PVE 链接该 Datastore,直接往新系统盘里恢复关键 VM(如 OpenWrt、NAS、数据库)。

总结:成本账单

这套方案的额外硬件成本是多少?

  • 盘 A (NVMe) + 盘 B (SATA/HDD):这是建机标配,0 元额外成本
  • USB 回收老硬盘/易驱线:约 30-50 元(甚至可以用手头闲置的 U 盘代替,只备份核心轻量 VM)。
  • 软件:PVE, PBS, ZFS 均为开源免费,0 元

用两顿快餐的价格,换取即便整机烧毁也能在 30 分钟内完整复活所有服务的底气。这,就是 HomeLab 垃圾佬的终极浪漫。

点评评价

captcha
健康