`
Hangdong.Zhang
  • 浏览: 15256 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

OpenStack PCI passthrough 环境配置

阅读更多

OpenStack PCI passthrough 环境配置

作者:张航东

OpenStack版本:Kilo


虚拟机使用透传设备可以获得设备近乎原生的性能。Intel AMD 都在它们的新一代处理器架构中提供对设备透传的支持(以及辅助管理程序的新指令)。Intel 将这种支持称为 Virtualization Technology for Directed I/O (VT-d),而 AMD 称之为 I/O Memory Management Unit (IOMMU)。不管是哪种情况,最新的 CPU 都提供将 PCI 物理地址映射到客户虚拟系统的方法。当这种映射发生时,硬件将负责访问(和保护),客户操作系统在使用该设备时,就仿佛它不是一个虚拟系统一样。除了将客 户机映射到物理内存外,新的架构还提供隔离机制,以便预先阻止其他客户机(或管理程序)访问该内存。

 

1. 确认Host是否支持pci-passthrough

由于需要硬件支持,所以要预先确认cpu及主板是否支持IntelAMD的硬件辅助虚拟化功能,请查阅官方的硬件支持列表或者查看BIOS中的相关选项。

另外,所谓巧妇难为无米之炊,CPU支持只是pci-passthrough技术的必要条件,当然还

需要支持pci-passthrough的网卡。

以下以Intel E5-2690 + Intel X540 10G NIC + RHEL7.0为例。

 

2.查看Host是否开启硬件辅助虚拟化功能

[root@nova2 ~]# cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.10.0-229.el7.x86_64

root=/dev/mapper/rhel-root

ro

rd.lvm.lv=rhel/root

crashkernel=auto

rd.lvm.lv=rhel/swap

vconsole.font=latarcyrheb-sun16

vconsole.keymap=us

rhgb

quiet

LANG=en_US.UTF-8

intel_iommu=on    #有这个字段说明Intel硬件辅助虚拟化功能已开启

default_hugepagesz=1G hugepagesz=1G hugepages=20

 

如果确认硬件支持硬件辅助虚拟化功能但没有开启,可以进行如配置:

[root@nova2 ~]# vi /boot/grub2/grub.cfg    #不同的OS或版本可能文件不同

#向其中的启动参数中添加以下

intel_iommu=on

然后reboot使配置生效

 

3. 确认NIC信息

[root@nova2 ~]# lspci -nn | grep Ethernet

01:00.0 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)

01:00.1 Ethernet controller [0200]: Intel Corporation I350 Gigabit Network Connection [8086:1521] (rev 01)

82:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 [8086:1528] (rev 01)

82:00.1 Ethernet controller [0200]: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 [8086:1528] (rev 01)

84:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 [8086:1528] (rev 01)

84:00.1 Ethernet controller [0200]: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 [8086:1528] (rev 01)

 

此处以Intel X540 10G NIC为例:

1.84:00.1  pci bus address

2.[8086   vendor id

3.1528]   product id

(记住这三个信息,后面会用到)

 

4. 确认pci设备驱动信息并从host默认驱动程序中解绑,以备虚拟机透传使用

 

[root@nova2 ~]# virsh nodedev-list | grep pci | grep 84   #84是从上面的①来的

pci_0000_84_00_0

pci_0000_84_00_1

#因为这块网卡有两个物理port所以grep出来两条结果,下面我们只用pci_0000_84_00_1来演示

 

#然后确认pci_0000_84_00_1的相关信息

[root@nova2 ~]# virsh nodedev-dumpxml pci_0000_84_00_1

<device>

  <name>pci_0000_84_00_1</name>

  <path>/sys/devices/pci0000:80/0000:80:03.0/0000:84:00.1</path>

  <parent>pci_0000_80_03_0</parent>

  <driver>

    <name>ixgbe</name> #host默认驱动

  </driver>

  <capability type='pci'>

    <domain>0</domain>

    <bus>132</bus>

    <slot>0</slot>

    <function>1</function>

    <product id='0x1528'>Ethernet Controller 10-Gigabit X540-AT2</product>

    <vendor id='0x8086'>Intel Corporation</vendor>

    <iommuGroup number='34'>

      <address domain='0x0000' bus='0x84' slot='0x00' function='0x1'/>

    </iommuGroup>

  </capability>

</device>

 

#host的默认驱动ixgbe中解绑pci_0000_84_00_1

[root@nova2 ~]# virsh nodedev-detach pci_0000_84_00_1

Device pci_0000_84_00_1 detached

 

#再次确认解绑后的pci_0000_84_00_1信息

[root@nova2 ~]# virsh nodedev-dumpxml pci_0000_84_00_1

<device>

  <name>pci_0000_84_00_1</name>

  <path>/sys/devices/pci0000:80/0000:80:03.0/0000:84:00.1</path>

  <parent>pci_0000_80_03_0</parent>

  <driver>

    <name>vfio-pci</name> #驱动程序变为vfio(目前默认的虚拟化驱动)

  </driver>

  <capability type='pci'>

    <domain>0</domain>

    <bus>132</bus>

    <slot>0</slot>

    <function>1</function>

    <product id='0x1528'>Ethernet Controller 10-Gigabit X540-AT2</product>

    <vendor id='0x8086'>Intel Corporation</vendor>

    <iommuGroup number='34'>

      <address domain='0x0000' bus='0x84' slot='0x00' function='0x1'/>

    </iommuGroup>

  </capability>

</device>

 

5. 配置openstack,以启用pci-passthrough:

#Nova controller

[root@osc ~]# vi /etc/nova/nova.conf

#

# Options defined in nova.pci.pci_request

#

 

# An alias for a PCI passthrough device requirement. This

# allows users to specify the alias in the extra_spec for a

# flavor, without needing to repeat all the PCI property

# requirements. For example: pci_alias = { "name":

# "QuicAssist",   "product_id": "0443",   "vendor_id": "8086",

# "device_type": "ACCEL" } defines an alias for the Intel

# QuickAssist card. (multi valued) (multi valued)

#pci_alias=

pci_alias={ "name":"X540NIC", "slabel":"dpdk-int"}

       ①                                  

name字段,固定

name值,可以自己随便起

③不知道什么意思,好像也是自己起的

④不知道什么意思,好像也是自己起的

 

#Nova compute

[root@osc ~]# vi /etc/nova/nova.conf

#

# Options defined in nova.pci.pci_whitelist

#

 

# White list of PCI devices available to VMs. For example:

# pci_passthrough_whitelist =  [{"vendor_id": "8086",

# "product_id": "0443"}] (multi valued)

#pci_passthrough_whitelist=

pci_passthrough_whitelist={"vendor_id":"8086", "product_id":"1528", "slabel":"dpdk-int"}

               ⑤                                                          

vendor_id字段,固定

vendor_id的值,对应于表3中的②

product_id字段,固定

product_id的值,对应于表3中的③

⑨不知道什么意思,但要和controller的配置保持一致

⑩不知道什么意思,但要和controller的配置保持一致

 

改完重启OpenStack controller和compute服务。

 

6. 创建带有pci-passthrough的flavor

  在flavor中添加metadata,字段名为”pci_passthrough:alias”,值分为两部分,第一部分为别名,和表5中的②保持一致,第二部分为数量,根据实际情况填写即可。

 

7. 创建虚拟机,并确认pci-passthrough设备分配至虚拟机

  • 大小: 43 KB
  • 大小: 12.5 KB
分享到:
评论

相关推荐

    openstack 单网卡多IP配置.pdf

    通过上述介绍可以看出,在OpenStack环境中实现单网卡多IP配置不仅可以有效利用网络资源,还能够支持复杂的网络架构需求,如负载均衡、故障转移等高级功能。掌握了这项技术,对于提升OpenStack云平台的整体性能和可用...

    system-config, OpenStack基础设施的系统配置.zip

    system-config, OpenStack基础设施的系统配置 Puppet 模块这些是一组 Puppet 清单和模块,目前正被用于管理OpenStack项目基础结构。主要入口点位于清单/站点中。通常,这里的大多数模块都是设计成可以在代理或者应用...

    Openstack L版,最新配置文件node1

    在这个"Openstack L版,最新配置文件node1"的压缩包中,我们可以看到一系列与OpenStack核心组件相关的配置文件,这些文件对于理解和管理OpenStack环境至关重要。 1. **LVM(Logical Volume Manager)**:LVM是Linux...

    OpenStack的环境配置.rtf

    OpenStack的环境配置.rtf

    openstack安装包(shell脚本配置文件)

    在Linux环境下安装OpenStack需要一系列步骤,而这个"openstack_grizzly_install-master"压缩包正是为了简化这一过程而设计的。 首先,让我们详细了解一下OpenStack Grizzly版本。Grizzly是OpenStack的一个重要版本...

    openstack安装配置手册1

    在完成基础环境配置和 NTP 服务器配置后,接着可以安装 OpenStack。包括: * 安装 OpenStack 软件包:在每个节点上安装 OpenStack 软件包。 * 配置 OpenStack:配置 OpenStack 的配置文件,以便在不同的节点之间...

    OpenStack 开发环境搭建

    总之,搭建OpenStack开发环境涉及多个步骤,包括系统准备、安装基础工具、设置虚拟化环境、安装DevStack、配置开发环境以及进行实际的开发工作。这个过程可能需要一定的耐心和时间,但一旦完成,你就能在自己的机器...

    Openstack 详细配置教程 单节点 单网卡 单机

    至此,我们已经完成了OpenStack单节点单网卡单机环境的基本配置。这些步骤涵盖了系统级别的准备、网络配置、数据库配置以及OpenStack核心组件的安装与配置。需要注意的是,在实际部署时还需要根据具体需求进行更多的...

    在云计算平台Openstack中利用GPU透传实现高性能计算.pdf

    本文重点讨论了在Openstack云平台中,通过VT-D硬件技术和KVM/QEMU虚拟化技术实现PCI设备透传的技术细节。VT-D(虚拟化技术-Virtualization Technology for Directed I/O)是Intel推出的一种硬件辅助虚拟化技术,它...

    openstack高可用配置文档

    openstack高可用配置文档,openstack高可用配置文档,openstack高可用配置文档,openstack高可用配置文档,openstack高可用配置文档

    Openstack L版,最新配置文件node2

    在这个"Openstack L版,最新配置文件node2"的压缩包中,包含了一系列关键组件的配置文件,这些都是搭建和管理OpenStack环境所必需的。 首先,`libvirt`是OpenStack中虚拟化管理的关键组件,它提供了与多种虚拟化...

    详细讲解OpenStack3安装配置指南

    OpenStack3.0(Grizzly)的安装与配置指南主要面向使用Red Hat Enterprise Linux操作系统来手动安装和配置OpenStack环境的用户。指南分为几个部分,包括介绍和安装过程。在介绍部分,文档通常会给出产品介绍、先决...

    OpenStack配置准备.docx

    OpenStack 配置准备 在这篇实验报告中,我们将学习如何在 Ubuntu 上部署 kvm 虚拟化平台,利用 virt-manager 安装部署虚拟机,创建 OpenStack 所需的虚拟环境。 实验目的及要求 在开始实验之前,你必须具备以下...

    OpenStack入门学习之环境搭建

    2 实验环境准备 2.1 操作系统准备 2.2 NTP时间同步 2.3 内核参数调整 2.4 关闭iptables和selinux 2.5 基础软件包 2.5.1 EPEL仓库 2.5.2 基础软件包安装 2.6 Openstack 软件包准备 2.6.1 下载软件包 2.6.2 ...

    openstack网络配置及管理

    OpenStack的网络配置与管理是一个复杂但灵活的过程,通过合理选择网络类型和管理模式,可以构建出既安全又高效的企业级云环境。无论是公共云、私有云还是混合云,OpenStack都能提供强大的网络支持,满足不同规模和...

    多节点openstack安装

    OpenStack是一个广泛使用的开源云计算平台,致力...理解每个组件的作用和配置方式是成功部署的关键,同时,随着OpenStack版本的更新,安装步骤和配置细节可能会有所变化,因此保持对最新文档和技术动态的关注也很重要。

    实验2OpenStack最小平台配置实验OpenStack基础环境安装配置,准备CentOS7 镜像安装操作系统

    OpenStack基础环境安装配置,准备CentOS7 镜像安装操作系统

    部署OpenStack生产环境实战.pdf

    关于OpenStack的部署有很多方法和社区项目,笔者公司采用了社区中的kolla项目作为部署OpenStack的方案,本文会详细介绍使用kolla在基于传统企业常用的vlan网络环境下部署OpenStack生产环境的实际案例。

    Cloudify连接OpenStack的配置

    Cloudify 是一款由 GigaSpaces 公司开发的开源应用程序管理平台,它允许用户在不同的云环境中部署和管理应用...正确配置这些参数后,Cloudify 可以作为强大的工具来自动化 OpenStack 环境中的应用程序生命周期管理。

Global site tag (gtag.js) - Google Analytics