本帖最后由 CatoHT 于 2017-5-15 14:58 编辑
最近在做家用虚拟化平台,需求为 NAS + HTPC,硬件列表如下:
CPU:i7-7700K
主板:华擎Z270M-ITX
内存:芝奇3000C15 2x16G
固态:Toshiba XG3 256G / M.2 NVMe
硬盘:6x3T SATA
机箱:FD Node 304
受硬件所限(无闲置PCIe插槽),加之EXSi 6.x不支持板载USB、USB Controller转发,我只得转战KVM。
最终敲定的方案如下:
- 宿主系统为 Debian Jessie w/ Backports
- NAS 方案为宿主系统加装 OMV 3,并开启 ZFS 阵列
- HTPC 方案为KVM虚拟机+显卡直通
原因是这样的:- 我想换 AM4-ITX + VEGA 全家桶,所以之前购买的 Kabylake 平台就显得多余了
- 目前使用的 J4205-ITX 在 Debian Jessie 下的核显驱动很成问题,作为 NAS 很好,作为 HTPC 差得太原,打算出掉
- KVM 下的 SATA Controller 直通存在问题,测试的时候一下午死机3次
- KVM 下的整盘直通不传递 SMART 信息,和 Hyper-V 一个德性
- 不得已,我只能选择在宿主机上解决掉 NAS
- 而且,这么做可以不用折腾桥接网卡的事情
- 成熟的 NAS 解决方案大体分 FreeNAS/NAS4Free 和 OMV 两种
- 前者基于 BSD,我不太熟悉,且在上面跑 KVM 会很蛋疼
- 后者基于 Debian Jessie,虽然 Jessie 比较旧,但好歹可以拿 Jessie-Backports 顶一下
- HDD 目前正在跑 ZFS,所以希望迁移 ZFS,而非重建
- KVM 不能直通 Bluetooth Controller,但可以将蓝牙设备当作 USB 直通,未试验稳定性
- KVM 能直通 USB Port,起码罗技的 unfying reciever 和 XBOX 手柄的无线接收器工作完美
OMV 安装(细节略过):
之后是 HTPC 虚拟机的安装和配置(细节略过):
- 具体参考 Archlinux 上的 Wiki Guide: https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF
- 加入 testing 源并用 Pin-Priority 降权,并从 testing 源安装 ovmf
- # apt install -t testing ovmf
复制代码
- 建立 KVM 虚拟机,命名为 HTPC,配置后直接关闭,不安装系统
- 运行并将 Guest 配置文件修改为用 EFI 启动、隐藏虚拟化 flag、CPU 选 host-passthrough 模式
- 安装 Win10,更新、配置并激活 Win10
- 回到宿主机,在 Grub 中开启 IOMMU (intel_iommu=on / amd_iommu = on)
- # nano /etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT="...... intel_iommu=on"
- # update-grub
复制代码
用 vfio-pci 对宿主机屏蔽 GPU:先寻找设备 ID - #!/bin/bash
- shopt -s nullglob
- for d in /sys/kernel/iommu_groups/*/devices/*; do
- n=${d#*/iommu_groups/*}; n=${n%%/*}
- printf 'IOMMU Group %s ' "$n"
- lspci -nns "${d##*/}"
- done;
复制代码
找到类似于“10de:13c2”、“10de:0fbb”的设备 ID(会在同一个IOMMU Group里) - IOMMU Group 1 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
- <blockquote>IOMMU Group 1 01:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
复制代码
添加刚刚看到的两个ID到配置文件(GPU和 Nvidia Audio的) - # nano /etc/modprobe.d/vfio.conf
- options vfio-pci ids=10de:13c2,10de:0fbb
复制代码
- 添加vfio到自动启动
- # nano /etc/modules-load.d/vfio.conf
- vfio
- vfio_iommu_type1
- vfio_pci
- vfio_virqfd
复制代码
- 重启系统
- 将显卡和 Nvidia Audio 作为 PCIE 设备添加到虚拟机
- 开启虚拟机,并安装 Nvidia 驱动程序
以上流程在 Fedora 下毫无问题,但在 Debian 宿主机下,虚拟机的 HDMI 音频可能会出现问题,是虚拟机未能开启 Nvidia Audio 的 MSI 功能导致的,Windows 虚拟机有可用的解决方案,运行 utility for switching MSI-mode 并将 GPU 和 Nvidia Audio 选上即可:http://forums.guru3d.com/showthread.php?t=378044
|