这个问题是从 stackoverflow 复制而来的,正如我所说的,我的问题更适合在这里。
尽管我搜索了好几天,但我还是找不到有关以下内容的任何有用信息 - 尽管我认为我不是第一个遇到此问题的人:我们正在使用 MATLAB、MPI 和 Infiniband 开发高性能集群。此设置在过去几年中一直运行良好。但为了实现更大的灵活性和更易于维护,我们正在考虑使用 KVM 虚拟化计算节点。
现在我有一个大问题,就是如何将 Infiniband “放入”我的虚拟机中。我不仅想通过 PCI 接口,还想构建一些与乙太網路橋我可以将其连接到主机上的机器。我找到了一些讨论此问题的资料 - 但没有介绍如何安装/配置 IB。有谁知道如何做到这一点?
提前致谢!
答案1
NVidia (Mellanox) 是 Infiniband 的主要支持者,对 Infiniband 虚拟化提供了良好的支持。借助 NVidia ConnectX 卡和 SR-IOV 支持,它可以与 Redhat、Centos、Debian 和其他 Linux 版本(x86_64 和 ARM)下的 KVM 配合使用。借助 SR-IOV,您可以安装 OFED 和 VM,SR-IOV 将为每个 VM 提供一个类似于硬件网卡的接口。KVM 有许多网络/桥接选项,NAT、路由、隔离,允许您构建任意数量的虚拟网络,无论是否带有物理或虚拟功能适配器。
确保您的 Infiniband 卡支持单根 IO 虚拟化 (SR-IOV)。SR-IOV 似乎为每个虚拟机提供了唯一的物理网卡、GPU 或其他 IO 设备。并非所有 Infiniband 卡都支持 SR-IOV。
SR-IOV 背景:
https://en.wikipedia.org/wiki/Single-root_input/output_virtualization
我假设您使用的是 Intel CPU、NVidia ConnectX 卡、NVidia OFED 和 Redhat 7.9 或更高版本或 Centos 7.9 或更高版本。在其他版本的 Linux 上也是可能的。我熟悉 Centos 和 Redhat。
- 您的计算机 BIOS 必须支持 CPU、IOMMU 和 SR-IOV 虚拟化
- 在 BIOS 中打开 CPU 虚拟化,在英特尔处理器上,这也称为 VT-x
- 在 BIOS 中打开 IOMMU(输入输出内存管理单元),在英特尔处理器上,这也称为 VT-d
- 在 BIOS 中打开 SR-IOV 支持
- Linux 内核需要打开 IOMMU。对于 Intel 处理器,您需要将“intel_iommu=on”传递给内核。我总是添加 IOMMU 直通“iommu=pt”如果您使用的是 Redhat,请编辑 /etc/default/grub 并将其添加到 GRUB_COMMAND_LINE。
- “sudo dracut--force”
- “sudo grub2-mkconfig -o /boot/..path_to_your_grub_cfg”。对于非 UEFI,这是“grub2-mkconfig -o /boot/grub2/grub.cfg”
- 如果成功,您应该在启动过程中通过查看“dmesg”的输出看到 IOMMU 和 DMAR(DMA 重映射)消息
- 从 NVidia 下载并安装最近支持的与您的 Infiniband 卡、操作系统和处理器相匹配的 NVidia OFED,并使其在主机上运行。
- 从 NVidia 下载并安装 Mellanox 固件工具 mft。
- 从 NVidia 下载并安装受您的 OFED、OS、处理器和 NVidia ConnectX 卡组合支持的最新固件。
- 使用 NVidia MST 和 Flint 更新 ConnectX 卡上的固件。
https://network.nvidia.com/support/firmware/update-instructions/
- 您必须使用 mlxconfig 在 OFED 中启用 SR-IOV,并设置虚拟功能的数量,即您要支持的虚拟 ConnectX 卡的数量。“mlxconfig -d /dev/mst/YOUR_INTERFACE_pciconf0 set SRIOV_EN=1 NUM_OF_VFS=4”
https://shawnliu.me/post/configuring-sr-iov-for-mellanox-adapters/
- “sudo lspci | grep Mellanox” 应该显示硬件和虚拟功能适配器。
- 您需要从主机解除一个或多个虚拟功能绑定,并将其绑定到所需的虚拟机
- 然后,KVM virt-manager 或 virsh 将允许您将虚拟功能添加为虚拟机中的 PCI 设备。
- 在虚拟机中安装 OFED