Benjy's Blog

「All In One 主机」— 黑群晖与飞牛 OS 存算分离

2025-06-12

本篇记录存储层的配置过程。黑群晖作为存储节点,飞牛 OS 作为计算节点,两者通过 SMB 打通,实现存算分离。飞牛 OS 从发布就开始关注了,最近也是了解了一下,相比来说影音这块还是比在群辉上部署各种容器要方便很多。安全性方面我使用存算分离的方式应该也不会有什么问题,容错配置满了。


存储架构回顾

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PVE(ZFS RAID1,西数 1T NVMe + 铠侠 1T NVMe)
├── 群晖系统盘:32GB 虚拟盘
├── 群晖读写缓存:30GB × 2 虚拟盘 组 SHR
├── 群晖高速盘:250GB 虚拟盘 → Basic 卷 → SMB: fast
└── 飞牛 OS 系统盘:200GB 虚拟盘(64G 系统 + 136G 内部高速存储)

群晖(SATA 控制器直通)
├── 希捷 2.5寸机械 × 2 → SHR 存储池 → SMB: media / photo
└── 西数 3.5寸机械 → 备份盘 → SMB: backup

飞牛 OS(SMB 挂载群晖三个共享)
├── /mnt/nas-hdd ← 群晖 media(机械 SHR)
├── /mnt/nas-fast ← 群晖 fast(NVMe 虚拟盘)
└── /mnt/nas-backup ← 群晖 backup(备份盘)

存算分离的逻辑:数据只存一份在群晖,飞牛的 Docker 容器通过 SMB 直接读写,不重复占空间,群晖统一负责备份和 S.M.A.R.T 监控。


一、VM3:黑群晖

黑群晖使用 RR 引导(Redpill Repack),支持 DSM 7.x,是目前最稳定的方案。

SATA 控制器直通

将整块 SATA 控制器直通给群晖 VM,让 DSM 直接管理物理硬盘,S.M.A.R.T 数据完整,稳定性更好。

在 PVE Shell 中确认 SATA 控制器:

1
2
lspci | grep -i sata
# 找到类似 00:17.0 SATA controller 的设备

在 PVE Web → VM → 硬件 → 添加 → PCI 设备,勾选该 SATA 控制器和 All Functions,保存。

SATA 控制器直通后,该控制器下的硬盘对 PVE 不再可见,完全由群晖接管。PVE 系统盘是 NVMe,不受影响。

三个盘位规划:

盘位 硬盘 用途
SATA 1 希捷 1TB 2.5 寸机械 SHR 存储池(主数据)
SATA 2 希捷 1TB 2.5 寸机械 SHR 存储池(主数据)
SATA 3 西数 1TB 3.5 寸机械 备份盘(SMB 共享)

创建虚拟机

项目 配置
CPU 4 核,类型 host
内存 12 GB
系统盘 32 GB 虚拟盘,总线 SATA(DSM 系统)
网卡1 桥接 vmbr0,VirtIO(备用管理 124.11)
网卡2 桥接 vmbr2,VirtIO(日常内网 11.11,2.5G)
PCI 设备 SATA 控制器直通
vGPU Intel UHD 630 GVT-g 虚拟显卡(mediated device)

准备虚拟盘(在 PVE Shell 中执行)

1
2
3
4
5
6
# 群晖 SSD 缓存盘 × 2(替换 <VMID> 为群晖 VM ID)
qm set <VMID> --sata1 local-zfs:30,ssd=1
qm set <VMID> --sata2 local-zfs:30,ssd=1

# 群晖高速共享盘
qm set <VMID> --sata3 local-zfs:250,ssd=1

sata0 是群晖 DSM 系统盘,sata1/sata2 是 SSD 缓存盘,sata3 是 250GB 高速盘。物理 SATA 控制器是 PCI 直通,和这些 PVE 模拟的虚拟 SATA 盘走不同的控制器,DSM 里能分别看到,互不干扰。

导入 RR 引导

RR Releases 下载最新 .img.gz,解压后在 PVE Shell 导入:

1
2
gunzip rr.img.gz
qm importdisk <VMID> rr.img local-btrfs

在 VM 硬件页面将导入的磁盘挂载为 scsi0,并在选项 → 引导顺序中设为第一启动项。

配置引导 & 安装 DSM

  1. 启动 VM,访问 RR 引导页面(http://192.168.124.11:7681
  2. 选择机型 DS920+
  3. 选择 DSM 版本,点击构建引导,完成后重启
  4. 重启后访问 http://192.168.124.11:5000,按向导完成 DSM 安装

每次重建 VM 建议在网络设置中固定两张虚拟网卡的 MAC 地址,避免 DSM 重新激活。

核显直通(UHD 630 GVT-g)

i5-9500 的核显 UHD 630 支持 Intel GVT-g,可以虚拟出多个 vGPU 分配给不同 VM,宿主机同时保留核显使用权。把一个 vGPU 给群晖,Synology Photos 就能用 Quick Sync 加速照片编解码和人脸识别。

第一步:PVE 宿主机启用 GVT-g

编辑 /etc/default/grub,追加 i915.enable_gvt=1

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1"

编辑 /etc/modules,追加:

1
2
3
4
kvmgt
vfio
vfio_iommu_type1
vfio_mdev
1
2
3
update-grub
update-initramfs -u -k all
reboot

重启后验证:

1
2
ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/
# 应该看到 i915-GVTg_V5_1 / V5_2 / V5_4 等选项

第二步:创建 vGPU 实例并持久化

生成固定 UUID 并创建 systemd 服务,确保每次开机自动创建 mediated device:

1
2
UUID=$(uuidgen)
echo $UUID # 记下这个值

创建 /etc/systemd/system/gvt-g-group.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Create Intel GVT-g vGPU for Synology
After=syslog.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c 'echo <UUID> > /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create'
ExecStop=/bin/bash -c 'echo 1 > /sys/bus/pci/devices/0000:00:02.0/<UUID>/remove'

[Install]
WantedBy=multi-user.target
1
systemctl enable --now gvt-g-group.service

i915-GVTg_V5_4 对应 128MB 显存,群晖照片用够了。GVT-g 是 Coffee Lake(8/9 代)特有功能,i5-9500 正好是支持的最后几代之一。

第三步:将 vGPU 挂给群晖 VM

在 PVE Web → 群晖 VM → 硬件 → 添加 → PCI 设备,切换到 Mediated Devices 标签,选择创建的 UUID 实例。

或直接编辑 /etc/pve/qemu-server/<VMID>.conf,追加:

1
hostpci1: 0000:00:02.0,mdev=<UUID>

第四步:DSM 中确认并启用硬件加速

1
2
3
# SSH 进入群晖,验证核显识别
ls /dev/dri/
# 看到 renderD128 即成功

套件中心 → Synology Photos → 设置 → 硬件加速 → 启用。开启后照片索引、缩略图生成、人脸识别速度明显提升。

存储池配置(SHR)

DSM 安装完成后进入存储管理员

  1. 选择两块希捷 1T 2.5 寸机械,RAID 类型选 SHR(Synology Hybrid RAID)
  2. SHR 在容量相同时等同于 RAID1,任意一块损坏数据不丢失,可用空间约 1T
  3. 创建完成后在存储池上新建共享文件夹 mediaphoto

西数 1TB 3.5 寸机械盘单独作为备份盘,创建新的存储池。在 DSM 中将其格式化后创建共享文件夹 backup,开启 SMB 共享,群晖自己和飞牛都可以把备份写到这块盘上。

群晖侧通过 Hyper Backup 定期将 SHR 存储池数据备份到 backup 目录。

SSD 读写缓存

SHR 是机械硬盘,随机读写是短板。DS920+ 支持 SSD 缓存,前面已经从 ZFS 划了两块 30GB 虚拟盘,现在在 DSM 里激活:

进入 DSM 存储管理员 → SSD 缓存 → 新增

  1. 选择挂入的两块虚拟 SSD(sata1、sata2)
  2. 模式选择读写缓存(两块盘内部做 RAID1,保证缓存安全)
  3. 将缓存绑定到 SHR 存储池
  4. 创建完成后热点数据逐步预热,缓存命中后体感接近固态速度

高速虚拟盘(250GB NVMe 共享盘)

从 ZFS 划出的 250GB 虚拟盘挂给群晖后,在 DSM 里格式化成独立卷:

进入 DSM 存储管理员 → 存储池 → 新增

  1. RAID 类型选 Basic(单盘,底层 ZFS RAID1 已做容错,DSM 层面不需要再做 RAID)
  2. 选择 250GB 虚拟盘(sata3)
  3. 文件系统选 Btrfs(支持快照)

在新建的 250GB 卷上创建共享文件夹 fast,开启 SMB 共享。

SMB 共享规划

DSM 控制面板 → 文件服务 → SMB → 启用 SMB 服务后,三个共享对局域网可见:

共享名 存储 适合放什么
media / photo 希捷 2.5 寸机械 SHR(~1T) 照片、视频、主力数据
fast NVMe 虚拟盘(250G) Docker 数据、数据库、热数据
backup 西数 3.5 寸机械(1T) 群晖和飞牛的定期备份

二、VM4:飞牛 OS

飞牛 OS(fnOS)内置 Docker,作为计算节点跑媒体服务和下载工具,数据通过 SMB 挂载群晖存储。

创建虚拟机

项目 配置
CPU 4 核,类型 host
内存 12 GB
系统盘 200 GB 虚拟盘(来自 ZFS),总线 SATA
网卡1 桥接 vmbr0,VirtIO(备用管理 124.14)
网卡2 桥接 vmbr2,VirtIO(日常内网 11.14,2.5G)
PCI 设备 AMD RX550 半高显卡直通

准备 200GB 虚拟盘

1
2
# 创建 200GB 虚拟盘(替换 <VMID> 为飞牛 VM ID)
qm set <VMID> --sata0 local-zfs:200,ssd=1

飞牛安装后系统约占用 64GB,剩余约 136GB 在飞牛 OS 存储管理中作为内部高速存储,底层是 ZFS RAID1,任意一块 NVMe 损坏不影响飞牛运行。

显卡直通(RX550)

RX550 直通给飞牛 OS,飞牛影视和飞牛相册等媒体服务用 GPU 做硬件加速,CPU 占用大幅降低。

开启 IOMMU(和 GVT-g 同时在 grub 配置,已在群晖章节说明):

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1"

确认 RX550 的 IOMMU 分组

1
2
lspci | grep -i vga
find /sys/kernel/iommu_groups/ -type l | sort -V | xargs -I{} sh -c 'echo "$(dirname {})" && cat {}'

RX550 独立显卡通常单独成一个 IOMMU 组,直通比较顺利。

PVE 中添加 PCI 设备

飞牛 OS VM → 硬件 → 添加 → PCI 设备,选择 RX550,勾选 All Functions,保存。

直通后 RX550 对 PVE 宿主机不再可见。800 G5 SFF 有核显(UHD 630),PVE 管理界面走核显输出,不受影响。

飞牛 OS 中验证和配置

1
2
ls /dev/dri/
# 看到 renderD128 即 RX550 识别成功

安装

  1. 飞牛官网 下载 ISO,上传到 PVE ISO 镜像库
  2. 挂载 ISO 启动,按向导选择 200GB 虚拟盘作为系统盘完成安装
  3. 安装完成后访问 http://192.168.124.14:5666
  4. 进入网络设置,将两张网卡分别固定为 192.168.124.14192.168.11.14
  5. 进入存储管理,剩余的 136GB 空间单独创建一个卷,作为内部高速存储

挂载群晖共享目录(SMB)

飞牛和群晖都在 vmbr2 的 2.5G 内网里,SMB 传输走 11 网段。

飞牛 OS 的「存储」→「网络存储」→「添加 SMB/CIFS」,依次添加三个挂载:

挂载点 服务器地址 共享名 用途
/mnt/nas-hdd 192.168.11.11 media 群晖机械 SHR,主力媒体库
/mnt/nas-fast 192.168.11.11 fast 群晖 NVMe 虚拟盘,热数据
/mnt/nas-backup 192.168.11.11 backup 西数 3.5 寸机械,备份目标

挂载完成后,所有 Docker 容器都可以通过这三个路径访问群晖存储。

飞牛 OS 定期备份到冷备盘

在飞牛 OS 「备份」功能中新建任务,源路径选飞牛内部存储,目标路径选 /mnt/nas-backup,设置定期执行时间。和群晖的 Hyper Backup 一起,两台 VM 的数据都备份到西数 3.5 寸机械盘。


踩坑记录

1、黑群晖 RR 引导构建失败
RR 需要联网下载 DSM 固件。如果卡住,可以提前手动下载对应版本的 PAT 文件放到引导目录,RR 会自动识别本地文件。

2、DSM 重新激活弹窗
每次重建群晖 VM 如果虚拟网卡 MAC 地址变了,DSM 会提示重新激活。在 PVE 的 VM 网络设备设置中固定 MAC 地址即可避免。

3、GVT-g 服务起来了但群晖 VM 起不来
检查 /etc/pve/qemu-server/<VMID>.conf 中的 hostpci1 行,UUID 是否和 systemd 服务中创建的一致。可以用 ls /sys/bus/pci/devices/0000:00:02.0/ 确认 mdev 目录是否存在。

4、飞牛 OS SMB 挂载后 Docker 容器没权限写入
SMB 挂载时指定 uidgid 参数,与飞牛 OS 中运行 Docker 的用户 ID 一致。或者在共享文件夹权限中给对应账号写权限。


Tags: PVE