文章目录
- 49 最佳实践-性能最佳实践-Nvme磁盘直通
- 49.1 概述
- 49.2 操作指导
49 最佳实践-性能最佳实践-Nvme磁盘直通
49.1 概述
设备直通技术是一种基于硬件的虚拟化解决方案,通过该技术,虚拟机可以直接连接到指定的物理直通设备上。对于用户来说,如果需要提升虚拟机存储性能,可以采用将 Nvme 磁盘通过 PCI 直通技术直通给虚拟机的办法,从而获得更高的性能表现。
49.2 操作指导
-
使用前准备
- 确认 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 磁盘性能几乎一致。
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!