virt-install支持VF

2 篇文章 0 订阅
1 篇文章 0 订阅

原始CentOS自带QEMU是不支持RDMA的,需要重新编译,可以参考我的上一篇文档:

QEMU源码编译CentOS

物理机BIOS已开启SR-IOV,就开始使用SR-IOV

SR-IOV创建出的虚拟网卡称为VF(Virtual Function),如下命令可以查看网卡物理端口ens4f0/1(称PF)最大支持创建的VF均为8个



# cat /sys/class/net/ens4f0/device/sriov_totalvfs
8
# cat /sys/class/net/ens4f1/device/sriov_totalvfs
8
ens4f0单个网口虚拟出6个VF

# echo 6 > /sys/class/net/ens4f0/device/sriov_numvfs
 
# lspci|grep Mellanox
b1:00.0 Ethernet controller: Mellanox Technologies MT2894 Family [ConnectX-6 Lx]
b1:00.1 Ethernet controller: Mellanox Technologies MT2894 Family [ConnectX-6 Lx]
b1:00.2 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
b1:00.3 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
b1:00.4 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
b1:00.5 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
b1:00.6 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
b1:00.7 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
 
# ip link |grep ens4
261: ens4f0v0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
262: ens4f0v1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
263: ens4f0v2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
264: ens4f0v3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
265: ens4f0v4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
266: ens4f0v5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
18: ens4f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
19: ens4f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
 
# ip link show ens4f0v0
261: ens4f0v0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 56:ba:79:b5:fb:3a brd ff:ff:ff:ff:ff:ff
[root@stgExt1 qemu]# ip link show ens4f0v1
262: ens4f0v1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 42:f9:c8:62:be:fd brd ff:ff:ff:ff:ff:ff
[root@stgExt1 qemu]# ip link show ens4f0v2
263: ens4f0v2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 2e:2b:21:22:a7:da brd ff:ff:ff:ff:ff:ff
[root@stgExt1 qemu]# ip link show ens4f0v3
264: ens4f0v3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 22:cd:f8:8e:8b:39 brd ff:ff:ff:ff:ff:ff
[root@stgExt1 qemu]# ip link show ens4f0v4
265: ens4f0v4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether b6:b1:22:d5:28:46 brd ff:ff:ff:ff:ff:ff
[root@stgExt1 qemu]# ip link show ens4f0v5
266: ens4f0v5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether be:64:4f:36:e0:f7 brd ff:ff:ff:ff:ff:ff

虚拟网卡已经准备就绪了,开始创建KVM了,并且制定mac=${VF MAC}

rm -rf /var/lib/libvirt/images/mytest.raw
qemu-img create -f raw /var/lib/libvirt/images/mytest.raw 120G
chown qemu:qemu /var/lib/libvirt/images/mytest.raw

virt-install \
        --name mytest \
        --vcpus 2 \
        --cpu host-passthrough \
        --memory 8348 \
        --location ./CentOS8.4_x86_64.iso,kernel=images/pxeboot/vmlinuz,initrd=images/pxeboot/initrd.img \
        --extra-args "inst.stage2=hd:LABEL=XXXXXX inst.ks=file:/ks_preload.cfg mgmt_net=192.128.134.112/24@192.128.134.1@preload-mytest@ sys_drive=auto" \
        --disk path=/var/lib/libvirt/images/mytest.img,format=qcow2,size=120,bus=scsi,cache=writeback \
        "--qemu-commandline= -drive file=/var/lib/libvirt/images/mytest.raw,format=raw,if=none,id=D1 -device nvme,drive=D1,serial=1" \
        --os-variant centos7.0 \
        --network network=host-bridge,model=virtio \
        --network network=cluster_E,model=virtio,mac=56:ba:79:b5:fb:3a \
        --graphics vnc \
        --noautoconsole

我还需要使用VF passthrough功能将虚拟网口映射到KVM虚拟机中,上述virt-install命令中,我尝试添加新参数 --hostdev b1:00.4,但是报错如下:

WARNING  ./CentOS8.4-x86_64.iso 可能不能被管理程序访问。您将需要授予 'qemu' 用户搜索以下目录的权限: ['']

开始安装......
搜索文件 vmlinuz......                                                                                                       | 9.6 MB  00:00:00     
搜索文件 initrd.img......                                                                                                    |  72 MB  00:00:00     
正在分配 'mytest.img'                                                                                                 | 120 GB  00:00:00     
ERROR    unsupported configuration: host doesn't support passthrough of host PCI devices
正在删除磁盘 'mytest.img'                                                                                               |    0 B  00:00:00     
域安装失败,您可以运行下列命令重启您的域:
'virsh start virsh --connect qemu:///system start xiaonan_test3'
否则请重新开始安装。

virt-install不支持后,又尝试qemu-system-x86直接映射VF依旧失败 no iommu_group found: No such file or directory

# qemu-system-x86 -name xiaonan_test2 -machine pc -cpu host -m 4G  -drive file=/var/lib/libvirt/images/xiaonan_test2.qcow2,format=qcow2 -device vfio-pci,host=b1:00.4,id=net0,multifunction=on -boot c

qemu-kvm: -device vfio-pci,host=b1:00.4,id=net0,multifunction=on: vfio 0000:b1:00.4: no iommu_group found: No such file or directory

再尝试virsh命令关联PCI,但是遇到 error: argument unsupported: VFIO device assignment is currently not supported on this system

# virsh nodedev-list --tree
# virsh nodedev-detach pci_0000_b1_00_4
setlocale: No such file or directory
error: Failed to detach device pci_0000_b1_00_4
error: argument unsupported: VFIO device assignment is currently not supported on this system

### 回答1: virt-install 是一个命令行工具,用于在本地或远程系统上创建新的虚拟机。在你的命令中,--name 参数指定了虚拟机的名称,--ram 参数指定了虚拟机所需的内存大小。 storage install 是不识别的参数,导致 virt-install 报错 "unrecognized arguments"。 ### 回答2: virt-install命令是用于创建并安装KVM虚拟机的工具。它提供了很多选项来配置虚拟机的各种参数。根据错误"unrecognized arguments",你可能提供了一些virt-install不识别的参数。 首先,请确保你已经正确输入了所有必需的参数。命令格式通常需要提供虚拟机的名称(--name NAME)、内存大小(--ram RAM)、存储选项(storage)和安装选项(install)等。请检查是否正确输入了这些参数,并且确保它们的格式正确。 另外,虚拟机的创建和安装过程可能会有一些特定的选项,你需要根据你的需求提供正确的选项。例如,你可能需要指定虚拟机的磁盘大小、CPU核心数量、网络配置等。请查阅virt-install命令的文档或帮助手册,了解可用的选项及其使用方法。 如果你确定没有输入错误的参数或选项,但仍然出现"unrecognized arguments"错误,那么可能是由于你使用的virt-install版本与当前系统的KVM版本不匹配导致的。请检查你使用的virt-install版本是否适配当前系统的KVM版本,如果不匹配,尝试升级virt-install或KVM来解决兼容性问题。 最后,请记住在使用命令之前仔细阅读相应的文档,并确保所有参数和选项的正确性,以避免出现错误。 ### 回答3: virt-install是一个用于在KVM虚拟化环境中创建并安装虚拟机的命令。在执行virt-install命令时,如果出现"unrecognized arguments"的错误,这意味着在命令行中使用了未识别的参数。 要解决此问题,首先需要确保使用正确的命令语法。根据提供的信息,命令应该是"virt-install --name NAME --ram RAM --disk INSTALL [options]"。其中,NAME表示虚拟机的名称,RAM表示虚拟机的内存大小,INSTALL表示虚拟机的存储介质。 如果仍然出现错误,可能是由于以下原因之一: 1. virt-install命令不存在:请确保在使用该命令之前已经正确安装了virt-install工具。可以使用"which virt-install"命令来检查是否已经安装了该工具。 2. virt-install命令的版本不匹配:有可能使用的virt-install命令的版本与当前系统不兼容。请确保使用的virt-install版本与当前系统要求的版本相匹配。可以使用"virt-install --version"命令来检查virt-install的版本。 3. 参数拼写错误:请仔细检查命令行中的参数和选项是否拼写正确。确保参数的顺序和名称与命令语法一致。 总之,要解决"virt-install:error: unrecognized arguments"的错误,请检查并确保已正确安装virt-install工具、使用了正确的命令语法,并且参数和选项的拼写正确。如有需要,可以参考virt-install的文档或使用"virt-install --help"命令来获取更多关于命令的详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值