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