小主机大作为:Minisforum N5 Pro 打造 PVE + TrueNAS All-in-One 家庭数据中心

如何在一台小主机上同时实现虚拟化管理与高性能 NAS 存储?包含硬件直通与网络配置详解。

为什么选择 All-in-One?

作为一名量化交易者和开发者,我对家庭数据中心的需求非常明确:

  1. 高性能计算:需要运行 DolphinDB 和 Python 策略容器。
  2. 大容量存储:海量的 Tick 数据和训练集需要可靠的 ZFS 存储。
  3. 低功耗:7x24 小时运行,电费敏感。

Minisforum N5 Pro 凭借其优秀的能效比和扩展性(双 2.5G 网口 + 多盘位支持),成为了我构建 Proxmox VE (PVE) 底层 + TrueNAS Scale 存储层的最佳载体。

架构设计

我的 All-in-One (AIO) 架构如下:

  • 底层系统 (Host): Proxmox VE 8.x
  • 核心虚拟机 (VM1): TrueNAS Scale (直通 SATA 控制器,管理所有机械硬盘)
  • 应用虚拟机 (VM2): Ubuntu Server (跑 Docker, ClickHouse, JupyterLab)
  • 网络: OpenWrt (旁路由模式,可选)

核心步骤记录

1. 基础环境:安装 PVE

这步比较常规,下载 PVE ISO 写入 U 盘启动即可。 注意点: 建议将 PVE 安装在独立的 NVMe SSD 上,不要占用 SATA 接口,把 SATA 通道全部留给 TrueNAS。

2. 关键难点:SATA 控制器直通 (PCIe Passthrough)

为了让 TrueNAS 能够完全掌控硬盘(实现 SMART 监控和硬盘休眠),必须将 SATA 控制器透传给虚拟机,而不是通过虚拟磁盘映射。

首先,在 PVE 的 Shell 中开启 IOMMU:

1
2
3
4
5
6
7
nano /etc/default/grub
# 修改 GRUB_CMDLINE_LINUX_DEFAULT 如下
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
# 更新 Grub
update-grub
reboot
mastering-systemd

重启后,在PVE界面创建一个新的虚拟机 (TrueNAS),在“硬件”选项卡中添加PCI设 备。选择对应的SATA Controller(通常是ASM1166或Intel原生控制器)。 远思提示:如果勾选”所有功能(All Functions)”导致虚拟机无法启动,请尝试取消勾选、或者检查是否与PVE的系统盘冲突。 3.TrueNAS Scale 配置 TrueNAS启动后,应该能直接识别到所有物理硬盘。 ·存储池(Pool):我组建了一个RAID-Z1池, 兼顾冗余和容量。 ·网络共享:开启NFS和SMB。 ·数据集(Dataset): · /mnt/data/quant (存放CSV/ Parquet原始数据) ·/mnt/data/docker_vol 4.内部万兆互联(VirtlO) 为了让PVE里的Ubuntu虚拟机能以极快速度访问TrueNAS里的数据,我们不需要走物理网线。 在TrueNAS和Ubuntu的网卡设置中,确保模型都选择VirtIO(paravirtualized)。在PVE内部,通过Linux Bridge (vmbrO),这两台虚拟机之间的通信速度仅受CPU和内存带宽限制,实测可以轻松跑满10Gbps+,这对于加载几百GB的训练数据至关重要。 避坑指南 1.内存分配:ZFS非常吃内存(ARC缓 存)。我的N5Pro插了32GB内存,分了16GB给TrueNAS,保证读取命中率。 2.引导顺序:在PVE的”选项”中,设置 TrueNAS为“开机自启”、并设置30秒的启动延迟给其他依赖存储的虚拟机。 结语 经过一周的压力测试,这套Minisforum N5 Pro + PVE + TrueNAS的组合运行极其稳定。 它不仅是我代码的仓库,更是我量化模型的“核动力“数据底座。