虚拟机使用透传设备可以获得设备近乎原生的性能。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及主板是否支持Intel或AMD的硬件辅助虚拟化功能,请查阅官方的硬件支持列表或者查看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设备分配至虚拟机
相关推荐
通过上述介绍可以看出,在OpenStack环境中实现单网卡多IP配置不仅可以有效利用网络资源,还能够支持复杂的网络架构需求,如负载均衡、故障转移等高级功能。掌握了这项技术,对于提升OpenStack云平台的整体性能和可用...
system-config, OpenStack基础设施的系统配置 Puppet 模块这些是一组 Puppet 清单和模块,目前正被用于管理OpenStack项目基础结构。主要入口点位于清单/站点中。通常,这里的大多数模块都是设计成可以在代理或者应用...
在这个"Openstack L版,最新配置文件node1"的压缩包中,我们可以看到一系列与OpenStack核心组件相关的配置文件,这些文件对于理解和管理OpenStack环境至关重要。 1. **LVM(Logical Volume Manager)**:LVM是Linux...
OpenStack的环境配置.rtf
在Linux环境下安装OpenStack需要一系列步骤,而这个"openstack_grizzly_install-master"压缩包正是为了简化这一过程而设计的。 首先,让我们详细了解一下OpenStack Grizzly版本。Grizzly是OpenStack的一个重要版本...
在完成基础环境配置和 NTP 服务器配置后,接着可以安装 OpenStack。包括: * 安装 OpenStack 软件包:在每个节点上安装 OpenStack 软件包。 * 配置 OpenStack:配置 OpenStack 的配置文件,以便在不同的节点之间...
总之,搭建OpenStack开发环境涉及多个步骤,包括系统准备、安装基础工具、设置虚拟化环境、安装DevStack、配置开发环境以及进行实际的开发工作。这个过程可能需要一定的耐心和时间,但一旦完成,你就能在自己的机器...
本文重点讨论了在Openstack云平台中,通过VT-D硬件技术和KVM/QEMU虚拟化技术实现PCI设备透传的技术细节。VT-D(虚拟化技术-Virtualization Technology for Directed I/O)是Intel推出的一种硬件辅助虚拟化技术,它...
openstack高可用配置文档,openstack高可用配置文档,openstack高可用配置文档,openstack高可用配置文档,openstack高可用配置文档
在这个"Openstack L版,最新配置文件node2"的压缩包中,包含了一系列关键组件的配置文件,这些都是搭建和管理OpenStack环境所必需的。 首先,`libvirt`是OpenStack中虚拟化管理的关键组件,它提供了与多种虚拟化...
OpenStack3.0(Grizzly)的安装与配置指南主要面向使用Red Hat Enterprise Linux操作系统来手动安装和配置OpenStack环境的用户。指南分为几个部分,包括介绍和安装过程。在介绍部分,文档通常会给出产品介绍、先决...
OpenStack 配置准备 在这篇实验报告中,我们将学习如何在 Ubuntu 上部署 kvm 虚拟化平台,利用 virt-manager 安装部署虚拟机,创建 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基础环境安装配置,准备CentOS7 镜像安装操作系统
关于OpenStack的部署有很多方法和社区项目,笔者公司采用了社区中的kolla项目作为部署OpenStack的方案,本文会详细介绍使用kolla在基于传统企业常用的vlan网络环境下部署OpenStack生产环境的实际案例。
Cloudify 是一款由 GigaSpaces 公司开发的开源应用程序管理平台,它允许用户在不同的云环境中部署和管理应用...正确配置这些参数后,Cloudify 可以作为强大的工具来自动化 OpenStack 环境中的应用程序生命周期管理。