架构
- nisox宿主系统:运行在盘2,接管所有硬件,虚拟化提供,显卡可切换直通,看vm需求,公共需求的标准件则在宿主直接docker提供
- vm虚拟系统:运行在盘1子目录内,被动接受资源,关注内部最优,不干预宿主机行为
- 数据:运行在盘1,映射给vm,冷备给移动盘
初始态
固态硬盘1:c盘300G(win10) D盘1700G(data),速度1GB/s,
固态硬盘2:闲置,120G,速度300MB/s,
移动硬盘:2000GB(原先的对系统分区的镜像和数据分区的文件同步冷备盘),速度800MB/s
中间态
固态硬盘1:整盘 ZFS,挂载 /dataset
├── vms/ Win10ltsc2021.qcow2(从移动硬盘恢复)
├── s500data/ D盘数据(从移动硬盘恢复,NTFS 数据迁入 ZFS)
├── repos/ NixOS 配置仓库 + Git 仓库
└── docker/ Docker Compose 与映射数据
固态硬盘2:NixOS 宿主系统 + Docker 程序盘
└── 极简系统、KVM/libvirt、Docker、Hermes-Host
固态移动硬盘:数据恢复源 + QCOW2 来源 + 傲梅原始镜像冷备
├── D盘数据(用于恢复到 /dataset/atdata)
├── WinVM.qcow2(用于放入 /dataset/vms)
└── 傲梅原始 .adi 镜像(最终兜底)
最终态态
固态硬盘1:/dataset(ZFS 单池,dataset 逻辑隔离)
├── s500data/ 核心数据资产(自动快照 + zfs send 到移动硬盘)
├── repos/ Git 仓库 + NixOS 配置(自动快照 + zfs send)
├── docker/ Docker 配置与映射数据(不自动快照)
└── vms/ QCOW2 虚拟磁盘(不备份,可随时重建)
固态硬盘2:NixOS 系统 + Docker 程序盘
└── 运行时卷,可抛弃,从配置重建
固态移动硬盘:ZFS 备份目标 + 冷数据归档 + 傲梅原始镜像兜底
├── 接收 atdata 和 repos 的 zfs send 流(保留快照历史)
└── 冷数据归档
实施注意点
网络 VM 无法访问外网 → virsh net-start default;防火墙信任 virbr0
网络 多 VM 互联 → Bridge 网络(br0),VM XML 指定 source bridge
网络 透明代理阻断 br0 内部通信 → Mihomo iptables 规则需放行 br0
VirtioFS Windows 端无法挂载 → 安装 WinFsp + 启用 VirtioFS 服务
VirtioFS 大文件传输性能下降 → 超过 10GB 的文件可能性能骤降,考虑 Samba 备选
驱动 Win VM 蓝屏 → 磁盘总线先用 IDE,装好 VirtIO 驱动后再切换
性能 VM 磁盘 I/O 瓶颈 → 磁盘总线设为 VirtIO,网卡设为 VirtIO,启用 vhost-net
性能 CPU 绑核 → 7840U 只有 8 核 16 线程,不建议硬绑,动态调度更灵活
性能 Hugepages → 启用后不支持内存超配,需权衡
休眠 S0ix 调不通 → 禁用虚假唤醒源(I2C 环境光传感器),NixOS 配置固化
休眠 suspend-then-hibernate → 需配置 swap 分区,至少 16GB
备份 ZFS 流无法直接查看 → 双轨制:ZFS send 增量 + rsync 可浏览副本
Hermes 多实例 Bot 冲突 → 每个 profile 使用独立 Telegram Bot Token
外设 Input Leap 与 Hermes 关系 → Input Leap 管键鼠跨界,Hermes 管 AI 调度