PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

KVM 虚拟化踩坑记录

[复制链接]
跳转到指定楼层
1#
CatoHT 发表于 2017-5-15 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:1952|回复数:12
本帖最后由 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
    1. # apt install -t testing ovmf
    复制代码

  • 建立 KVM 虚拟机,命名为 HTPC,配置后直接关闭,不安装系统
  • 运行
    1. # virsh edit HTPC
    复制代码
    并将 Guest 配置文件修改为用 EFI 启动、隐藏虚拟化 flag、CPU 选 host-passthrough 模式
  • 安装 Win10,更新、配置并激活 Win10
  • 回到宿主机,在 Grub 中开启 IOMMU (intel_iommu=on / amd_iommu = on
    1. # nano /etc/default/grub

    2. GRUB_CMDLINE_LINUX_DEFAULT="...... intel_iommu=on"

    3. # update-grub
    复制代码

  • 用 vfio-pci 对宿主机屏蔽 GPU:先寻找设备 ID
    1. #!/bin/bash
    2. shopt -s nullglob
    3. for d in /sys/kernel/iommu_groups/*/devices/*; do
    4.     n=${d#*/iommu_groups/*}; n=${n%%/*}
    5.     printf 'IOMMU Group %s ' "$n"
    6.     lspci -nns "${d##*/}"
    7. done;
    复制代码

  • 找到类似于“10de:13c2”、“10de:0fbb”的设备 ID(会在同一个IOMMU Group里)
    1. IOMMU Group 1 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
    2. <blockquote>IOMMU Group 1 01:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
    复制代码

  • 添加刚刚看到的两个ID到配置文件(GPU和 Nvidia Audio的)
    1. # nano /etc/modprobe.d/vfio.conf

    2. options vfio-pci ids=10de:13c2,10de:0fbb
    复制代码

  • 添加vfio到自动启动
    1. # nano /etc/modules-load.d/vfio.conf

    2. vfio
    3. vfio_iommu_type1
    4. vfio_pci
    5. 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

2#
junweb 发表于 2017-5-15 15:16 | 只看该作者
这个玩法不错。mark
3#
爱吟诗坦 发表于 2017-5-16 10:52 | 只看该作者
问一下J4205-ITX 有什么问题,是驱动程序不行还是GPU性能跟不上
4#
CatoHT  楼主| 发表于 2017-5-16 12:15 | 只看该作者
爱吟诗坦 发表于 2017-5-16 10:52
问一下J4205-ITX 有什么问题,是驱动程序不行还是GPU性能跟不上

硬解播放部分高码率4K视频时掉帧严重,疑为驱动问题

Debian下 HDMI 接口识别故障,只能 4K@30Hz,疑为驱动问题

Debian 下的 Chrome 安装 Flash 很麻烦,而且播放卡顿严重,CPU满载

总体来说作为NAS很合适,但兼职HTPC则力有不及
来自安卓客户端来自安卓客户端
5#
CatoHT  楼主| 发表于 2017-5-16 12:17 | 只看该作者
爱吟诗坦 发表于 2017-5-16 10:52
问一下J4205-ITX 有什么问题,是驱动程序不行还是GPU性能跟不上

我之前有块J3455,在Win下面的表现还算可以,但那就没法作为NAS了
来自安卓客户端来自安卓客户端
6#
909648183 发表于 2017-5-16 16:34 | 只看该作者
CatoHT 发表于 2017-5-16 12:15
硬解播放部分高码率4K视频时掉帧严重,疑为驱动问题

Debian下 HDMI 接口识别故障,只能 4K@30Hz,疑为驱 ...

J4205 DXVA checker



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
909648183 发表于 2017-5-16 16:35 | 只看该作者
本帖最后由 909648183 于 2017-5-16 16:37 编辑
CatoHT 发表于 2017-5-16 12:17
我之前有块J3455,在Win下面的表现还算可以,但那就没法作为NAS了

J1800 安装WIN10 作为NAS工作中....

目前直接挂两块3T各自分一个分区使用中,以后可以考虑使用存储池 双向镜像模式

WIN10 开SMB,同时IIS 开FTP



8#
CatoHT  楼主| 发表于 2017-5-16 17:18 | 只看该作者
909648183 发表于 2017-5-16 16:35
J1800 安装WIN10 作为NAS工作中....

目前直接挂两块3T各自分一个分区使用中,以后可以考虑使用存储池 双 ...

这对我是不可接受的方案,理由不再赘述。

虽然RAID1在很多情况下是最佳用法,但我还是不打算这么做。

目前6x3T RAIDZ2中
来自安卓客户端来自安卓客户端
9#
CatoHT  楼主| 发表于 2017-5-16 17:19 | 只看该作者
909648183 发表于 2017-5-16 16:34
J4205 DXVA checker

so?
来自安卓客户端来自安卓客户端
10#
909648183 发表于 2017-5-16 18:52 | 只看该作者
本帖最后由 909648183 于 2017-5-16 18:56 编辑

J4205 硬解 HEVC 10bit 8K 都是可以的,当然前提是正确配置,装WIN是最简单的方案

内存够大的话WIN上跑KVM也是可以的,你自己也说了,WIN上虚拟机有解决方案
11#
909648183 发表于 2017-5-16 19:00 | 只看该作者
我甚至在J1800 WIN10上 VBOX 跑xp虚拟机,还直通USB设备。。。。
12#
CatoHT  楼主| 发表于 2017-5-17 09:20 | 只看该作者
909648183 发表于 2017-5-16 18:52
J4205 硬解 HEVC 10bit 8K 都是可以的,当然前提是正确配置,装WIN是最简单的方案

内存够大的话WIN上跑KV ...

“J4205 硬解 HEVC 10bit 8K 都是可以的,当然前提是正确配置,装WIN是最简单的方案”
是的,如果只是作为 HTPC 的话。

“内存够大的话WIN上跑KVM也是可以的,你自己也说了,WIN上虚拟机有解决方案”
我都尝试过,结论是在 Win10 跑NAS虚拟机对我而言是不可接受的解决方案,原因不再赘述。


13#
Atom 发表于 2017-5-24 16:18 | 只看该作者
没玩过KVM,  这个管理起来麻烦么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部