首页 > 数据库 > 数据库开发技术 > 49 最佳实践-性能最佳实践-Nvme磁盘直通
设备直通技术是一种基于硬件的虚拟化解决方案,通过该技术,虚拟机可以直接连接到指定的物理直通设备上。对于用户来说,如果需要提升虚拟机存储性能,可以采用将 Nvme 磁盘通过 PCI 直通技术直通给虚拟机的办法,从而获得更高的性能表现。
使用前准备
确认 Guest OS 内安装 Nvme 磁盘供应商所提供的驱动程序,否则 Nvme 磁盘无法正常工作。
确认 Host OS 开启CPU的 VT-d 和 VT-x 支持。
确认 Host OS 开启内核的 IOMMU 功能。
确认 Host OS 开启内核的中断重映射功能。
获取 Nvme 磁盘的 PCI BDF 信息
在Host上通过 lspci 命令获取主机上pci设备的资源列表,具体命令如下所示。
# lspci -vmm
Slot: 81:00.1
Class: Non-Volatile memory controller
...
命令回显其中的 Slot 选项及对应了 Nvme 磁盘的 PCI BDF 号,以上方命令为例,每个值的对应关系即81-bus号,00-slot号,1-function号。
挂载 PCI 直通 Nvme 磁盘至虚拟机中
创建虚拟机时,在其对应的 xml 配置文件中加入 PCI Nvme 磁盘直通的配置选项。具体配置文件如下所示
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x81' slot='0x00' function='0x1' />
</source>
</hostdev>
hostdev.source.address.domain: Host OS 上 PCI 设备的 domain 号。
hostdev.source.address.bus: Host OS 上 PCI 设备的 bus 号。
hostdev.source.address.slot: Host OS 上 PCI 设备的 slot 号。
hostdev.source.address.function: Host OS 上 PCI 设备的 function 号。
指定 Nvme 磁盘的 PCI bar 空间
为了进一步将 Nvme 磁盘的性能发挥到极致,需要指定直通 Nvme 磁盘在 Guest OS 内 PCI MSI-X 中断的 Bar 空间。具体配置如下。
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0' />
</source>
<alias name='ua-sm2262'/>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</hostdev>
<qemu:commandline>
<qemu:arg value='-set'/>
<qemu:arg value='device.ua-sm2262.x-msix-relocation=bar2'/>
</qemu:commandline>
以上xml配置将直通的 Nvme 磁盘的中断信息处理指定在第2号 Bar 上,增加该项配置可以使 Guest OS 内的 Nvme 磁盘性能达到与 Host OS 上的 Nvme 磁盘性能几乎一致。
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
有什么吐槽或反馈意见,直接告诉我!
温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。

原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。