设备共享分配:虚拟化和 SRIOV
SRIOV 简介
SRIOV 配置
NovaPCIPassthrough:
- devname: "ens10"
trusted: "true"
physical_network: "sriov-a"
- devname: "ens11"
trusted: "true"
physical_network: "sriov-b"
- devname: "ens20"
trusted: "true"
physical_network: "sriov-a"
- devname: "ens21"
trusted: "true"
physical_network: "sriov-b"
NeutronPhysicalDevMappings: "sriov-a:ens10,sriov-a:ens20,sriov-b:ens10f1,sriov-b:ens21"
[root@compute-1 home]# cat /sys/class/net/ens10/device/sriov_
sriov_drivers_autoprobe sriov_offset sriov_totalvfs
sriov_numvfs sriov_stride sriov_vf_device
[root@compute-1 home]# cat /sys/class/net/ens10/device/sriov_numvfs
16
[root@compute-1 home]# cat /sys/class/net/ens10/device/sriov_totalvfs
63
[root@compute-1 home]# lspci | grep Eth
09:00.0 Ethernet controller: Intel Corporation 82599 10 Gigabit Dual Port Backplane Connection (rev 01)
09:00.1 Ethernet controller: Intel Corporation 82599 10 Gigabit Dual Port Backplane Connection (rev 01)
09:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
09:10.1 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
09:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
... [root@compute-1 home]# ip link show ens10
4: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 48:df:37:0f:19:f0 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 2e:c7:47:d8:26:ea, spoof checking on, link-state auto, trust off, query_rss off
vf 1 MAC 06:13:09:1d:10:47, spoof checking on, link-state auto, trust off, query_rss off
vf 2 MAC fa:f9:c0:ea:17:79, spoof checking on, link-state auto, trust off, query_rss off
...
创建带 VF 的 VM
$ openstack network create --provider-physical-network physnet2 \
--provider-network-type vlan --provider-segment 1000 \
sriov-net $ openstack subnet create --network sriov-net \
--subnet-pool shared-default-subnetpool-v4 \
sriov-subnet
$ openstack port create --network $net_id --vnic-type direct \
sriov-port
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| allowed_address_pairs | |
| binding_host_id | |
| binding_profile | trusted='true' |
| binding_vif_details | |
| binding_vif_type | unbound |
| binding_vnic_type | direct |
| created_at | 2020-06-14T03:10:13Z |
| data_plane_status | None |
| description | |
| device_id | |
| device_owner | |
| dns_assignment | None |
| dns_domain | None |
| dns_name | None |
| extra_dhcp_opts | |
| fixed_ips | ip_address='192.168.2.87', subnet_id='35b2c708-ab7b-4a22-8ae4-d6ecd5e8a5ed' |
| id | 815f26de-ba36-4c9b-b8e2-b052fdb7d28d |
| location | cloud='', project.domain_id=, project.domain_name='Default', project.id='b336e515d511487db8d359e8722c3d7c', project.name='admin', region_name='regionOne', zone= |
| mac_address | fa:16:3e:46:43:be |
| name | sriov-port |
| network_id | 23b60822-b4c7-4501-b509-e9deb92ae925 |
| port_security_enabled | True |
| project_id | b336e515d511487db8d359e8722c3d7c |
| propagate_uplink_status | None |
| qos_policy_id | None |
| resource_request | None |
| revision_number | 1 |
| security_group_ids | 1777fd33-ffd9-404d-b58e-0eb15e0b2c13 |
| status | DOWN |
| tags | |
| trunk_details | None |
| updated_at | 2020-06-14T03:10:13Z |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@compute-1 home]# ip link show ens10 | grep fa:16:3e:8b:c6:51
vf 11 MAC fa:16:3e:8b:c6:51, spoof checking on, link-state auto, trust off, query_rss off
$ openstack server create --flavor m1.large --image ubuntu_18.04 \
--nic port-id=$port_id \
test-sriov
[root@controller-0 ~]# openstack server show demo | grep compute
| OS-EXT-SRV-ATTR:host | compute-1.localdomain
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| allowed_address_pairs | |
| binding_host_id | compute-1.localdomain |
| binding_profile | pci_slot='0000:87:13.4', pci_vendor_info='8086:10ed', physical_network='sriov-a' |
| binding_vif_details | connectivity='l2', port_filter='False', vlan='0' |
| binding_vif_type | hw_veb |
| binding_vnic_type | direct |
| created_at | 2020-06-05T01:39:41Z |
| data_plane_status | None |
| description | |
| device_id | 322443ba-91da-472f-88d5-9e300797d457 |
| device_owner | compute:nova |
| dns_assignment | None |
| dns_domain | None |
| dns_name | None |
| extra_dhcp_opts | |
| fixed_ips | ip_address='192.168.2.7', subnet_id='35b2c708-ab7b-4a22-8ae4-d6ecd5e8a5ed' |
| id | cd35f343-774e-4a31-a353-328e2fbad125 |
| location | cloud='', project.domain_id=, project.domain_name='Default', project.id='b336e515d511487db8d359e8722c3d7c', project.name='admin', region_name='regionOne', zone= |
| mac_address | fa:16:3e:46:43:be |
| name | demo-sriov_a |
| network_id | 23b60822-b4c7-4501-b509-e9deb92ae925 |
| port_security_enabled | True |
| project_id | b336e515d511487db8d359e8722c3d7c |
| propagate_uplink_status | None |
| qos_policy_id | None |
| resource_request | None |
| revision_number | 6 |
| security_group_ids | 1777fd33-ffd9-404d-b58e-0eb15e0b2c13 |
| status | ACTIVE |
| tags | |
| trunk_details | None |
| updated_at | 2020-06-05T01:40:21Z |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
验证 SRIOV
[root@demo1:/home/robot]
# ip a | grep eth0
18: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.57.0.3/27 brd 10.57.0.1 scope global f1om [root@demo:/home/robot]
# ip a | grep eth0
14: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.57.0.2/27 brd 10.57.0.1 scope global f1om # 从 VM1 ping VM2,在 eth0 端口上抓包:
[root@demo:/home/robot]
# ping -I 10.57.0.2 -c 4 10.57.0.3
PING 10.57.0.3 (10.57.0.3) from 10.57.0.2 : 56(84) bytes of data.
64 bytes from 10.57.0.3: icmp_seq=1 ttl=64 time=0.383 ms
64 bytes from 10.57.0.3: icmp_seq=2 ttl=64 time=0.103 ms
64 bytes from 10.57.0.3: icmp_seq=3 ttl=64 time=0.274 ms
64 bytes from 10.57.0.3: icmp_seq=4 ttl=64 time=0.146 ms --- 10.57.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3089ms [root@demo1:/home/robot]
# tcpdump -i f1om host 10.57.0.2 -nn
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on f1om, link-type EN10MB (Ethernet), capture size 262144 bytes
22:51:48.904493 ARP, Request who-has 10.57.199.65 tell 10.57.0.2, length 42
22:51:49.146108 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 1, length 64
22:51:50.187253 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 2, length 64
22:51:51.211443 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 3, length 64
22:51:52.235339 IP 10.57.0.3 > 10.57.0.2: ICMP echo reply, id 15, seq 4, length 64
22:51:54.453779 ARP, Request who-has 10.57.0.2 tell 10.57.0.3, length 28
22:51:54.453885 ARP, Reply 10.57.0.2 is-at fa:16:3e:46:43:be, length 42
22:51:54.475245 ARP, Request who-has 10.57.0.3 tell 10.57.0.2, length 42
22:51:54.475260 ARP, Reply 10.57.0.3 is-at fa:16:3e:d6:f0:b6, length 28
22:51:58.917049 ARP, Request who-has 10.57.199.65 tell 10.57.0.2, length 42
22:52:08.936950 ARP, Request who-has 10.57.199.65 tell 10.57.0.2, length 42
Trust mode
[root@compute-1 home]# ip link show ens10 | grep fa:16:3e:8b:c6:51
vf 11 MAC fa:16:3e:8b:c6:51, spoof checking on, link-state auto, trust off, query_rss off
$ ip link set ens10 vf 19 trust on
openstack port create --network sriov111 \
--vnic-type direct --binding-profile trusted=true \
sriov111_port_trusted
[root@controller-0 ~]# cat /sys/class/net/ens10/flags
0x1003
[root@controller-0 ~]# ifconfig ens10 promisc
[root@controller-0 ~]# cat /sys/class/net/ens10/flags
0x1103
设备共享分配:虚拟化和 SRIOV的更多相关文章
- KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- KVM(四) I/O 设备直接分配和 SR-IOV
(4):I/O 设备直接分配和 SR-IOV 本文将分析 PCI/PCIe 设备直接分配(Pass-through)和 SR-IOV, 以及三种 I/O 虚拟化方式的比较. 1. PCI/PCI-E ...
- 网络I/O虚拟化,SR-IOV技术
1.简介 网络I/O虚拟化是服务器虚拟化技术的重要组成部分,在服务器虚拟化技术领域,计算虚拟化(如CPU和内存虚拟化)已经日趋成熟,但是,网络I/O虚拟化技术的发展相对比较滞后.当前,主流的网络I/O ...
- 操作系统-I/O(2)设备的分配
作业执行前对设备提出申请时,指定某台具体的物理设备会让设备分配变得简单,但如果所指定设备出现故障,即便计算机系统中有同类设备也不能运行 设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户作 ...
- 【整理】--【字符设备】分配设备号register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
(1) 分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下: extern int register_chrdev_region(dev_t,unsigned int,const char ...
- Ubuntu和Windows设备共享
http://blog.csdn.net/pipisorry/article/details/51725942 蓝牙设备如键盘.鼠标都可以. 装的双系统win7和Ubuntu,如果只使用一个系统,蓝牙 ...
- [图解tensorflow源码] [转载] tensorflow设备内存分配算法解析 (BFC算法)
转载自 http://weibo.com/p/1001603980563068394770 @ICT_吴林阳 tensorflow设备内存管理模块实现了一个best-fit with coales ...
- cgroup测试存储设备IOPS分配
1 使用:创建树并且attach子系统 首先要创建文件系统的挂载点作为树的根 mkdir /cgroup/name mkdir /cgroup/cpu_and_mem Mount这个挂载点到一个或者多 ...
- linux设备号分配
参考:http://blog.chinaunix.net/uid-24460251-id-2606762.htmlhttp://blog.csdn.net/zjjyliuweijie/article/ ...
- virtualbox之usb设备的分配
来源:http://www.cnblogs.com/fsjohnhuang/p/3987545.html 首先下载安装virtualbox的扩展包,因为box原本不支持usb设备.www.virtua ...
随机推荐
- 解决yolo+cudnn+opencv+gpu的一些问题
问题描述: 在makefile文件中修改GPU=1 CUDNN=1 OPENCV=1,然后重新make,执行命令时出现: Yolov3 darknet: ./src/cuda.c:36: check_ ...
- CUDA C编程权威指南:1.1-CUDA基础知识点梳理
主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的. 1.CUDA 解析:2007年,NV ...
- LeetCode DP篇-背包问题(416、518)
416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...
- DevOps|我们需要什么样的产研项目管理工具
上一篇文章<DevOps|产研运协作工具链上的皇冠-项目管理工具>主要讲了项目管理工具对软件研发的重要性,本篇文章主要想讲清楚我们需要什么样的项目管理工具,项目管理工具必须具备的功能有哪些 ...
- 让gorm代码飞起来,gorm+gmodeltool生成entity,让实体类代码更轻松。
背景 不卷!php经历多年的不衰败的原因只有一个,哪就是不卷,但是由于并发和缺乏编译严谨度降低,使得长青树不得己走向了衰败. 但!叱咤风云多年,大企百度.腾讯.新浪.搜狐的首先语言的流行在于,其语言的 ...
- 拥抱Serverless释放生产力,探索华为云Serverless车联网最佳实践
华为云Serverless车联网场景解决方案,以FunctionGraph为核心的Serverless化组合方案,使用FunctionGraph.OBS.DIS等技术,可以实现架构的灵活扩展,在出行高 ...
- 优化了MYSQL大量写入问题,老板奖励了1000块给我
摘要:大家提到Mysql的性能优化都是注重于优化sql以及索引来提升查询性能,大多数产品或者网站面临的更多的高并发数据读取问题.然而在大量写入数据场景该如何优化呢? 今天这里主要给大家介绍,在有大量写 ...
- 从原理到实践,手把手带你轻松get数仓双集群容灾
摘要:本文通过介绍双集群的架构.log结构.分析步骤来介绍双集群容灾的问题分析方法. 本文分享自华为云社区<从原理到实践,手把手带你轻松get数仓双集群容灾>,原文作者:Puyol . 双 ...
- VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在和平区成功举办!
摘要:近日,由沈阳市和平区人民政府和华为技术有限公司主办的VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在沈阳君悦酒店圆满举办. 12月29日,由沈阳市和平区人民政府和华为技术有限公司主办的VR ...
- Solon2 的 Bean 生命周期
Solon 框架的 Bean 是被容器托管的,所以它的生命周期只限定在容器内部: 时机点 说明 补充 AopContext::new() 是在应用初始化时执行 ::new() AopContext:: ...