OpenStack配置PCI直通(PCI passthrough)

*azeqjz OpenStack: *

除OVS与硬直通SR-IOV外,还有PCI直通,即物理网卡给一个虚拟机网口独占。

PCI直通特性允许虚拟机完全访问与直接控制物理PCI设备。此机制对任何类型的PCI设备都是通用的,并且可以与网络接口卡(NIC),图形处理单元(GPU)或可以连接到PCI总线的任何其他设备一起运行。

有的PCI设备提供SR-IOV能力,当使用SR-IOV时,物理设备被虚拟呈现为多个PCI设备。虚拟PCI设备被分配到同一个或多个虚拟机。在PCI直通的情况下,整个物理设备只能分配给一个虚拟机,并且不能共享。

执行以下步骤使能PCI直通(以地址为0000:41:00.0的PCI设备为例。
):

  1. 配置nova-scheduler (Controller)
  2. 配置nova-api (Controller)**
  3. 配置flavor (Controller)
  4. 使能PCI直通 (Compute)
  5. 在nova.conf配置PCI设备 (Compute)

1. Configure nova-scheduler (Controller)

  1. 参考 Configure nova-scheduler配置nova-scheduler
    在运行nova-scheduler的每个控制节点,把PciPassthroughFilter添加到scheduler_default_filters,以默认使能PciPassthroughFilter过滤器。同时,确保nova.conf [DEFAULT]下的scheduler_available_filters参数设置为all_filters,以使能compute服务提供的所有过滤器。
[DEFAULT]
scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter, PciPassthroughFilter
scheduler_available_filters = nova.scheduler.filters.all_filters
  1. 重启nova-scheduler服务。

2. 配置nova-api (Controller)**

  1. 指定设备的PCI别名。
    配置PCI别名a1来请求一个vendor_id为0x8086和product_id为0x154d的PCI设备。vendor_id和product_id对应于地址为0000:41:00.0的PCI设备。
    编辑/etc/nova/nova.conf:
[pci]
alias = { "vendor_id":"8086", "product_id":"154d", "device_type":"type-PF", "name":"a1" }

获取alias的更多信息,参考nova.conf中的alias配置项
PCI直通配置项:

配置项 = 默认值
alias = []

描述
要求填写PCI直通设备的别名。
这允许用户在flavor的extra_spec属性中指定PCI设备的别名,而不需给出指定PCI设备属性要求。

可能的值:
描述别名的JSON值列表,例如:
alias = { “name”: “QuickAssist”, “product_id”: “0443”, “vendor_id”: “8086”, “device_type”: “type-PCI” }
定义了Intel QuickAssist卡的别名。有效的值为:

  • “name”: PCI设备的别名
  • “product_id”: 设备的十六进制Product ID
  • “vendor_id”: 设备的十六进制Vendor ID
  • “device_type”: PCI设备的类型,有效的值为: “type-PCI”, “type-PF” and “type-VF”。
  1. 重启nova-api服务

3. 配置flavor (Controller)

通过flavor为guest虚拟机配置两个PCI设备,每个PCI设备的vendor_id0x8086product_id0x154d

# openstack flavor set m1.large --property "pci_passthrough:alias"="a1:2"

具体参考flavor

$ openstack flavor set FLAVOR-NAME \
    --property pci_passthrough:alias=ALIAS:COUNT
  • COUNT: (整数) 分配给虚拟机的ALIAS中指定类型的PCI设备数量T。

4.使能PCI passthrough (Compute)

使能VT-d和IOMMU,参考Create Virtual Functions中的步骤一与二:
Step 1 BIOS开启SR-IOV与VT-d。
Step 2 在Linux中使能IOMMU,例如使用GRUB把intel_iommu=on添加到内核参数。

5.在nova.conf配置PCI设备 (Compute)

  1. 配置nova-compute,允许PCI设备直通到虚拟机,编辑/etc/nova/nova.conf文件:
[pci]
passthrough_whitelist = { "address": "0000:41:00.0" }

或者指定多个PCI设备:

[pci]
passthrough_whitelist = { "vendor_id": "8086", "product_id": "10fb" }

所有vendor_id与product_id 匹配的PCI设备会被添加到可以直通分配给虚拟机的PCI设备池。

更多关于passthrough_whitelist的用法,参考nova.conf中的passthrough_whitelist配置项

  1. 指定PCI设备的alias。

从Newton版本开始,为了resize带有PCI设备的虚拟机,需要在计算节点上同时配置PCI设备alias。

配置请求alias为a1的PCI设备,其中vendor_id0x8086product_id0x154d,对应地址为 0000:41:00.0的PCI设备。

编辑/etc/nova/nova.conf文件:

[pci]
alias = { "vendor_id":"8086", "product_id":"154d", "device_type":"type-PF", "name":"a1" }
  1. 重启nova-compute服务。

6. 创建带PCI直通设备的虚拟机实例

nova-scheduler选择目标主机,这台主机的PCI设备的vendor_id和product_id可以和flavor中定义的alias设备匹配。

# openstack server create --flavor m1.large --image cirros-0.3.5-x86_64-uec --wait test-pci

可以通过lspci | grep -i eth(型号与产品id等)查询环境已有硬件是否符合要求。

参考原文:Attaching physical PCI devices to guests

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Nova Nova,即计算服务,是OpenStack计算的弹性控制器。Nova可以说是整个云平台最重要的组件,Op...
    邵胜奥阅读 4,078评论 0 8
  • 以下是本人通过阅读Grizzly版OpenStack源码,整理的简要的Nova模块源码结构,希望和大家相互交流。 ...
    Chenzongshu阅读 2,594评论 0 50
  • 第一章 OpenStack基础 OpenStack管理的资源及提供的服务OpenStack做为一个操作系统,...
    sgt_tiger阅读 12,711评论 4 72
  • 有人留言问道:“老师,营销的核心是什么?” 在准确回答这个问题之前,首先需要弄清楚问这个问题的人想问的到底是什么?...
    陈信诚阅读 19,927评论 0 18
  • 今晚想写一个女人的故事。 女人今年大约有四十几岁,这是从她孩子的年龄大致推断的,不是从她的脸上看岀来的...
    瑞恩126阅读 350评论 0 0