如何在Linux中创建多队列tap设备?
How to create a multiqueue tap device in Linux?
我已经尝试使用以下命令为我的虚拟机 tap0
创建一个 tap 设备 vm1
:
$ tunctl -t tap0 -u root
$ brctl addif br0 tap0
$ ifconfig tap0 up
检查频道时出现以下错误:
$ ethtool -l tap0
Cannot get device channel parameters
: Operation not supported
我想也许我创建的方法 tap0
不正确,但我不知道正确的方法。
感谢任何帮助。
关于这个问题,我还不知道如何实现。但是我找到了另一种方法来使用 qemu-kvm
为 VM 创建多队列分路器设备。这是我的脚本:
#!/bin/bash
qemu-kvm -name vm1 -smp cpus=8 -m 8192 \
-drive file=/opt/kvm/vm1.qcow2,if=virtio \
-netdev tap,id=dev0,script=no,downscript=no,ifname=tap0,vhost=on,queues=8 \
-device virtio-net-pci,netdev=dev0,mac=52:54:00:56:78:90,mq=on,vectors=18 \
-daemonize
if [ $? -eq 0 ];then
sleep 5
brctl addif br1 tap0
ifconfig tap0 up
fi
该脚本创建一个带有 8 个队列的分路器 tap0
,将 tap0
添加到网桥 br0
,并设置 tap0
。
您可以在您的 VM 中使用 ethtool -l [ifname]
,这是我的输出:
$ ethtool -l eth0
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 8
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 8 # current has 8 queues enabled
完成。
我已经尝试使用以下命令为我的虚拟机 tap0
创建一个 tap 设备 vm1
:
$ tunctl -t tap0 -u root
$ brctl addif br0 tap0
$ ifconfig tap0 up
检查频道时出现以下错误:
$ ethtool -l tap0
Cannot get device channel parameters
: Operation not supported
我想也许我创建的方法 tap0
不正确,但我不知道正确的方法。
感谢任何帮助。
关于这个问题,我还不知道如何实现。但是我找到了另一种方法来使用 qemu-kvm
为 VM 创建多队列分路器设备。这是我的脚本:
#!/bin/bash
qemu-kvm -name vm1 -smp cpus=8 -m 8192 \
-drive file=/opt/kvm/vm1.qcow2,if=virtio \
-netdev tap,id=dev0,script=no,downscript=no,ifname=tap0,vhost=on,queues=8 \
-device virtio-net-pci,netdev=dev0,mac=52:54:00:56:78:90,mq=on,vectors=18 \
-daemonize
if [ $? -eq 0 ];then
sleep 5
brctl addif br1 tap0
ifconfig tap0 up
fi
该脚本创建一个带有 8 个队列的分路器 tap0
,将 tap0
添加到网桥 br0
,并设置 tap0
。
您可以在您的 VM 中使用 ethtool -l [ifname]
,这是我的输出:
$ ethtool -l eth0
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 8
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 8 # current has 8 queues enabled
完成。