1、查看虚机的宿主机/var/log/nova/nova-compute.log
显示libvirtError: internal error: referenced filter 'no-mac-spoofing' is missing
2、输入命令virsh nwfilter-list显示确实缺少no-mac-spoofing
3、解决方法:
yum install libvirt-daemon-config-nwfilter
Systemctl restart libvirtd.service
再次输入virsh nwfilter-list查看no-mac-spoofing存在
报错原理分析:
libvirt是一套支持Linux下主流虚拟化工具的C函数库,它起初是专门为 Xen 设计的一种管理 API,后来被扩展为可支持多个虚拟机监控程序,目前支持包括 Xen 和 KVM,以及 QEMU 等在内的一些虚拟产品。
libvirt的nwfilter功能,全称为network filtering,其目的在于可让系统管理员在host上通过一套抽象的标准化的配置方式实现对vm的网络数据包的过滤,可以准确的控制到每个vm的每块网卡上。同一个filter规则可以被不同的vm重复使用,当然也可以为每一个vm创建不同的filter规则。
当nwfilter规则配置好之后,启动vm的时候libvirt会自动将配置规则转换为对应的iptables或者ebtables规则,加载到vm对应的网卡tap设备上。
nwfilter规则配置文件和libvirt其他资源配置一样使用xml格式,文件位置在:/etc/libvirt/nwfilter/no-mac-spoofing.xml
[root@computer01 nova]# cat /etc/libvirt/nwfilter/no-mac-spoofing.xml
当openstack调用libvirt库的nwfilter功能时,需要上述配置文件确定虚拟机的包过滤规则,找不到就会出现上述错误!