前文讨论到了ESXi中直通遇到的诡异BUG,然而最近发现不使用直通依然存在内核卡死的问题,虽然服务仍然可以跑,但是无法重启vm,smb写入在windows上依然存在未知瓶颈。正好忙里偷闲有点空,抓紧时间整体逃离ESXi吧……

PVE SATA直通的正确姿势

迁移过程没啥技术含量不再赘述,需要注意的是在PVE7.2中SATA直通的正确姿势:
首先 lspci -v 找到 00:17.0,这是hpe gen10 plus上的sata设备,可以看到有

Kernel driver in use: ahci

这行,说明目前没有进行直通,修改 /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
=>
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on vfio-pci.ids=8086:a352"

这里的id就是很久以前提到的设备id。

然后由于未知原因更新grub后PVE依然默认使用ahci,懒得找原因了,暴力一点直接禁掉这个内核模块吧~修改 /etc/modprobe.d/pve-blacklist.conf,添加下面一行:

blacklist ahci

最后更新grub:

1
2
update-grub
update-initramfs -u -k all

重启之后再次查看 lspci -v,看到

Kernel driver in use: vfio-pci

就代表ok了。

测试结果

-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from [ip], port 58362
[  5] local [ip] port 5201 connected to [ip] port 58364
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  3.63 GBytes  31.2 Gbits/sec
[  5]   1.00-2.00   sec  3.82 GBytes  32.8 Gbits/sec
[  5]   2.00-3.00   sec  3.91 GBytes  33.6 Gbits/sec
[  5]   3.00-4.00   sec  4.10 GBytes  35.3 Gbits/sec
[  5]   4.00-5.00   sec  3.81 GBytes  32.7 Gbits/sec
[  5]   5.00-6.00   sec  3.91 GBytes  33.6 Gbits/sec
[  5]   6.00-7.00   sec  3.94 GBytes  33.8 Gbits/sec
[  5]   7.00-8.00   sec  4.01 GBytes  34.5 Gbits/sec
[  5]   8.00-9.00   sec  3.98 GBytes  34.2 Gbits/sec
[  5]   9.00-10.00  sec  4.03 GBytes  34.7 Gbits/sec
[  5]  10.00-10.00  sec  1.00 MBytes  27.6 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  39.2 GBytes  33.6 Gbits/sec                  receiver

Excuse me? 整整3倍的性能提升?当然了重新配置的时候把mtu调到了9000以适应万兆内网,没有控制变量,但是差别应该不大,怎么也不会是3倍的提升,说明vmware搞的这玩意儿性能真不行(笑)。逃离之后没有遇到杀不掉虚拟机的问题了,直通和smb也基本跑满,还有因为是基于debian的可以直接安装apcupsd实现ups检测了,不需要esxi的ssh中转,体验满分!

结论:不要迷信商业化软件23333。