可以将端口配置为允许 SR-IOV 直通,然后创建使用物理网络适配器的 OpenStack 实例。
前提条件
- 在 vSphere 中启用 SR-IOV。请参见《vSphere 网络连接》中的在主机物理适配器上启用 SR-IOV。
- 为 SR-IOV 设备创建专用计算集群。DRS 规则不适用于这些设备。
- 要保留物理设备的 MAC 地址,请将其集群添加为计算节点,然后在设备上启用直通。如果已启用直通,可以将其禁用,重新启动集群,然后重新启用直接直通。
- 启用 VMware Integrated OpenStack 运营商版本 功能。请参见启用 Carrier Edition 功能。
过程
- 以
root
用户身份登录到 Integrated OpenStack Manager。ssh root@mgmt-server-ip
- 编辑 Nova 计算配置。
viocli update nova-compute
- 在 nova_compute 部分中添加以下信息。
pci: passthrough_whitelist: type: multistring values: - '{"product_id": "*", "vendor_id": "*", "physical_network": "*"}'
- 如果使用 DVS 或 NSX-T Data Center 部署,请在 vmware 部分中添加 dvs_moid 参数。
dvs_moid: sriov-vds-moid
将 dvs_moid 的值设置为分布式交换机(与 SR-IOV 设备的计算集群关联)的受管对象标识符 (MOID)。 - 打开工具箱并设置
admin
帐户的密码。toolbox export OS_PASSWORD=admin-password
- (可选) 如果要配置端口冗余,请创建具有隔离属性的虚拟机特定实例。
隔离属性确保 SR-IOV 端口按照端口冗余的要求分布在 ESXi 服务器主机中的不同物理网卡。
openstack flavor set <FLAVOR_ID> --property group_policy=isolate
FLAVOR_ID 是要用于具有隔离 SR-IOV 端口的虚拟机的 Nova 特定实例的 UUID。 - 为 SR-IOV 设备创建提供商网络。
- 对于 NSX Data Center for vSphere 部署,请创建 VLAN 或端口组网络。
- 对于 NSX-T Data Center 部署,请创建 VLAN 或含糊网络。
- 对于 DVS 部署,请创建 VLAN 网络。
neutron net-create network-name --tenant-id project-uuid --provider:network_type {vlan | portgroup | nsx-net} --provider:physical_network physical-id [--provider:segmentation_id vlan-id]
选项 说明 network-name 为网络输入一个名称。
--tenant-id 指定要为其创建端口的项目的 UUID。您可以通过运行 openstack project list 命令查找项目的 UUID。
--provider:network_type 为 VLAN 网络输入 vlan,为端口组网络输入 portgroup,或为含糊网络输入 nsx-net。
--provider:physical_network - 对于 NSX Data Center for vSphere 中的 VLAN 网络,请指定分布式交换机的 MOID。
- 对于 NSX-T Data Center 中的 VLAN 网络,请指定 VLAN 传输区域的 UUID。
- 对于 DVS 中的 VLAN 网络,请指定分布式交换机的名称。
- 对于端口组网络,请指定端口组的名称。网络名称必须与端口组名称相匹配。
- 对于含糊网络,请指定逻辑交换机的 UUID。
--provider:segmentation_id 如果要创建基于 VLAN 的网络,请输入 VLAN ID。
- 在网络上创建子网。
neutron subnet-create network-id --tenant-id project-uuid --name subnet-name
选项 说明 network-id 指定要在其上创建子网的网络的 UUID。您可以通过运行 openstack network list 命令查找网络的 UUID。
--tenant-id 指定要为其创建子网的项目的 UUID。
--name 输入子网的名称。
- 使用 --vnic_type direct 参数创建启用直通的端口。
neutron port-create network-id --tenant-id project-uuid --name port-name --vnic_type direct
选项 说明 network-id 指定要在其上创建端口的网络的 UUID。您可以通过运行 openstack network list 命令查找网络的 UUID。
--tenant-id 指定要为其创建端口的项目的 UUID。
--name 输入端口的名称。
注: 启用直通的端口不支持端口安全,将自动为创建的端口禁用端口安全。要为 OpenStack 实例提供对物理网络适配器的访问权限,请为您的实例配置此单个端口。或者,要部署具有多个可提供冗余的端口的虚拟机,请记下输出中的端口 ID,然后重复执行此步骤以创建第二个直接端口。 - (可选) 为虚拟机部署虚拟机特定实例和两个直接端口。
nova boot --flavor <FLAVOR_ID> --image <IMAGE_ID> --nic port-id=<port1-id> --nic port-id=<port2-id> <VM_NAME>
选项 说明 FLAVOR_ID 指定在 步骤 6 中创建的特定实例。
--nic 输入使用每个直接端口创建的端口 ID。