Nixos虚拟化,六计拿下特洛伊

架构

  • 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 调度