49 最佳实践-性能最佳实践-Nvme磁盘直通

文章目录

      • 49 最佳实践-性能最佳实践-Nvme磁盘直通
        • 49.1 概述
        • 49.2 操作指导

49 最佳实践-性能最佳实践-Nvme磁盘直通

49.1 概述

设备直通技术是一种基于硬件的虚拟化解决方案,通过该技术,虚拟机可以直接连接到指定的物理直通设备上。对于用户来说,如果需要提升虚拟机存储性能,可以采用将 Nvme 磁盘通过 PCI 直通技术直通给虚拟机的办法,从而获得更高的性能表现。

49.2 操作指导

  1. 使用前准备

    • 确认 Guest OS 内安装 Nvme 磁盘供应商所提供的驱动程序,否则 Nvme 磁盘无法正常工作。
    • 确认 Host OS 开启CPU的 VT-d 和 VT-x 支持。
    • 确认 Host OS 开启内核的 IOMMU 功能。
    • 确认 Host OS 开启内核的中断重映射功能。
  2. 获取 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号。

  3. 挂载 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 号。
  4. 指定 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 磁盘性能几乎一致。

点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

49 最佳实践-性能最佳实践-Nvme磁盘直通_第1张图片

你可能感兴趣的:(KVM,虚拟化,开源软件,linux,运维)