1.官方对于此问题的解释:
简单来说,就是ovs数据库里保存的和ovs-vsctl show里的不一致。这样使用ovs-ofctl dump-flows想查看某个网桥的流表时,库里找不到,自然就会报错。
2.排查过程和问题解决
按照官方的建议,我查看了/var/log/openvswitch/ovs-vswitchd.log,但是里面没有异常。
官方文档又说,可能是ovs-vswtichd服务没有启动,导致ovs-vsctl命令挂起。我使用systemctl status ovs-vswitchd查看,服务也处于active状态,一切正常。
最后,只好使用重启大法,但是在实验的过程中,使用systemctl restart openvswitch是无效的。
需要这样重启(如果运行的时候,报pid已经存在,则先进行kill再运行如下命令):
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \--remote=db:Open_vSwitch,Open_vSwitch,manager_options \--private-key=db:Open_vSwitch,SSL,private_key \--certificate=db:Open_vSwitch,SSL,certificate \--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \--pidfile --detach
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach