首页 > 其他分享 >OpenStack虚拟化PCI设备直通

OpenStack虚拟化PCI设备直通

时间:2024-05-30 15:44:09浏览次数:14  
标签:vfio 01 PCI 虚拟化 iommu driver pci OpenStack id

1、确定主板和CPU都支持虚拟化技术,在BIOS将VT-d(芯片组、IO)、VT-x(CPU)设置成启用。

2、确保BIOS中启用了SR-IOV。

3、内核启动参数设置,开启IOMMU。

# 检查系统是否启用iommu
cat /proc/cmdline | grep iommu

# 编辑/etc/default/grub文件
# X86架构设置为
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on iommu=pt"
# ARM架构设置为
GRUB_CMDLINE_LINUX_DEFAULT="iommu.passthrough=on iommu=pt"

更新grub2

rm -f /boot/grub2/grubenv

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS  # 判断启动方式

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg  # EFI模式启动
# grub2-mkconfig -o /boot/grub2/grub.cfg  # 传统模式启动

shutdown -r now

重启后再次检查

cat /proc/cmdline | grep iommu  # 内核IO虚拟化启用确认
dmesg | grep -iE '(iommu|DMAR)'  # IO虚拟化确认
grep -cE '(vmx|svm)' /proc/cpuinfo  # CPU虚拟化确认

4、列出主机上的PCI设备及名称和ID

# 查询vendor_id和product_id,输出如[8086:8d10],8086为vendor_id,8d10为product_id
lspci -nn
00:1c.0 PCI bridge [0604]: Intel Corporation C610/X99 series chipset PCI Express Root Port #1 [8086:8d10] (rev d5)

5、确认驱动

lspci -vv -s 01:00.0 | grep driver
lspci -vv -s 01:00.1 | grep driver
lspci -vv -s 01:00.3 | grep driver
lspci -vv -s 06:00.2 | grep driver 
	Kernel driver in use: xhci_hcd

配置加载vfio-pci模块

# 配置加载vfio-pci模块,编辑/etc/modules,添加如下内容
vfio
vfio_pci
vfio_virqfd
vfio_iommu_type1

modprobe

配置设备vfio驱动

# 解绑定原有驱动
echo 0000:01:00.0 >>/sys/bus/pci/devices/0000\:01\:00.0/driver/unbind
echo 0000:01:00.1 >>/sys/bus/pci/devices/0000\:01\:00.1/driver/unbind
echo 0000:01:00.3 >>/sys/bus/pci/devices/0000\:01\:00.3/driver/unbind

# 绑定到vfio-pci
echo 125b 9100 > /sys/bus/pci/drivers/vfio-pci/new_id

# 获取设备所在的iommu group
readlink /sys/bus/pci/devices/0000\:01\:00.0/iommu_group
../../../../kernel/iommu_groups/31

# 查看设备使用的驱动,都显示vfio说明正确
# 注意,一定要看到设备使用vfio-pci作为驱动才能直通,否则无法直通
lspci -vv -s 01:00.0 | grep driver
	Kernel driver in use: vfio-pci
lspci -vv -s 01:00.1 | grep driver
	Kernel driver in use: vfio-pci
lspci -vv -s 01:00.3 | grep driver
	Kernel driver in use: vfio-pci

6、配置nova_scheduler

[filter_scheduler]
enabled_filters = AvailabilityZoneFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter, PciPassthroughFilter
available_filters = nova.scheduler.filters.all_filters

7、配置nova_api

[pci]
alias = { "vendor_id":"125b", "product_id":"9100", "device_type":"type-PCI", "name":"a1" }

# device_type网卡为type-PF,其他PCI设备为type-PCI。如果有多个设备,定义多个alias

8、配置nova_compute

[pci] 
alias = {"name":"a1", "product_id":"9100", "vendor_id":"125b", "device_type":"type-PCI"}
passthrough_whitelist = [{ "vendor_id": "125b", "product_id": "9100" }]

# alias配置与nova_api一致,passthrough_whitelist只需要vendor_id和product_id即可
# 如果有多个设备,定义多个alias,passthrough_whitelist写成json格式的列表形式

9、配置flavor

openstack flavor set m1.large --property "pci_passthrough:alias"="a1:1,a2:1"

# 设置规格的属性可以在界面设置,键为pci_passthrough:alias,值为a1:3吗,其中a1为alias中定义的名称,3为需要映射的数量。多个pci设备设置用英文逗号分割

10、使用该规格创建虚拟机

官方文档:https://docs.openstack.org/nova/pike/admin/pci-passthrough.html

标签:vfio,01,PCI,虚拟化,iommu,driver,pci,OpenStack,id
From: https://www.cnblogs.com/wanghongwei-dev/p/18222523

相关文章

  • 全国产RK3568J + FPGA的PCIe、FSPI通信实测数据分享!
    测试数据汇总案例时钟频率理论速率测试结果FSPI通信案例150MHz71.53MB/s读速率:67.452MB/s写速率:52.638MB/sPCIe通信案例100MHz803.09MB/s读速率:595.24MB/s写速率:791.14MB/s备注:(1)当TLPheadersize=16Byte时,PCIe理论传输速率为:7......
  • 含税168元起!四核A53+NPU+PCIe+USB3.0,瑞芯微RK3562性价比真高!
     ......
  • 虚拟化技术[1]之服务器虚拟化
    文章目录虚拟化技术简介数据中心虚拟化服务器虚拟化服务器虚拟化层次寄居虚拟化裸机虚拟化VMM无法直接捕获特权指令解决方案服务器虚拟化底层实现CPU虚拟化内存虚拟化I/O设备虚拟化虚拟机迁移虚拟机动态迁移迁移内容:内存迁移迁移内容:网络资源迁移迁移内容:存储设备迁移......
  • 全国产化服务器设计原理图:905-多路PCIe的阵列计算全国产化服务器
    多路PCIe的阵列计算全国产化服务器      多路PCIe的阵列计算全国产化服务器以国产化处理器(海光、飞腾ARM、算能RSICV)为主板,扩展6-8路PCIe3.0X4计算卡;计算卡为全国产化的AI处理卡(瑞星微ARM,算能AI,灵犀类脑计算),低功耗FPGAPCIe计算卡;同时扩展万兆以太......
  • ShareStation工作站虚拟化实现图形工作站的一机多用,满足大型设计软件需求
    一、背景公司设计部需要使用大型的CAD/CAM软件进行设计。比如运行Siemens NX的工作站配置了i913900KF和NVIDIARTXA5000显卡。略微差一些的工作站,配置了A2000的显卡。还有一些相对老旧的工作站配置Q2000/Q2200的显卡。实际工作中,设计师的工作是分阶段的。有些设计......
  • 转载: PCIE linux驱动
    https://www.cnblogs.com/LoyenWang/p/14209318.htmlPCIE物理结构PCIDevice;PCI总线中有三类设备:PCI从设备,PCI主设备,桥设备。PCI从设备:被动接收来自HostBridge或者其他PCI设备的读写请求;PCI主设备:可以通过总线仲裁获得PCI总线的使用权,主动向其他PCI设备或主存储器发起读写请......
  • PCIe
    PCIe(PeripheralComponentInterconnectExpress)PCIe总线使用点对点连接,因此没有传统的并行总线的地址线、数据线和控制线。地址数据控制信号传输方式数据包、分组交换将数据分成小包(事务层包TLP))每个包中包含地址信息和数据同通道传输PCIe通道每个通道有两对差分信号......
  • OpenStack Centos7 T版本搭建
    目录Centos7搭建OpenStackT版本--上1.环境准备(所有节点操作)1.1修改主机名1.2关闭selinux以及防火墙1.3修改hosts1.4配置时间同步controller操作compute以及其他节点操作1.5配置OpenStack软件包1.6安装数据库1.7安装消息队列1.8安装memcached1.9安装etcd2.安装Ke......
  • PCIE状态机-LTSSM
    一、PCIE LTSSMLTSSM是指LinkTrainingandStatusStateMachine,是PCIe物理层实现的,用于控制和管理PCIe总线上的数据链路。它提供了一组状态,以便设备进行链路训练和链接协商。在PCIe总线上,发送端和接收端需要进行链路训练,以便确定最佳的链接速度和链接宽度。LTSSM的作......
  • Windows下QEMU虚拟化探索:从入门到精通
    本文背景:大部分云电脑不会开启intelVT-X虚拟技术,导致VM、Vbox等都无法使用。就得靠搭建QEMU版的虚拟机了。一、QEMU简介QEMU是一款开源的虚拟化软件,可以模拟CPU以及其他硬件设备,使你在一台物理机器上运行多个虚拟机。QEMU支持广泛的操作系统,包括Windows、Linux、macOS等。二......