在安装KVM虚拟机的时候,如果不指定network,会采用默认的网络default,如果没有default则会报出错误。我们通过
virsh net-list来查看当前的网络
如果default不存在我们需要自己编写一个default.xml文件,根据位置在/etc/libvirt/qemu/networks/default.xml的文件编写my-net.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh net-edit default
or other application using the libvirt API.
-->
<network>
<name>my-net</name>
<uuid>57df750e-4d32-4c60-a9d4-e665ecaa50fd</uuid>
<forward mode='nat'/>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='52:54:00:5d:02:81'/>
<ip address='192.122.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.122.122.2' end='192.122.122.254'/>
</dhcp>
</ip>
</network>
然后启动这个network(不用手动创建新的网桥virbr1,这个网桥会自动创建)
virsh net-define my-net.xml
此时这个network还没有激活,使用virsh net-list看不到,需要使用virsh net-list --all才能够看到
激活自定义网络
virsh net-start my-net
设置为自动启动
virsh net-autostart my-net
然后我们能够在ip a中看到出现一个新的虚拟网卡virbr1
如果我们启动虚拟机需要使用自定义的网络,可以在虚拟机的配置文件中修改network配置项,使用我们的自定义网络作为虚拟机的默认网络
可能的错误:
1. 如果在net-start的过程中出现了如下错误
error: Failed to start network inner
error: internal error: Child process (VIR_BRIDGE_NAME=virbr1 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/inner.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper) unexpected exit status 5:
dnsmasq: failed to create inotify: Too many open files
可以尝试增大系统的fs.inotify.max_user_instances值
sysctl -w fs.inotify.max_user_instances=1024