【ovs】升級ovs過程中遇到的ovsdb-server.pid 失敗的問題

今天在工作中,遇到了一個升級ovs 的過程中啓動失敗的情況。因爲定位了將近半天,爲此在這裏做下記錄。

問題現象如下, ovs啓動一直失敗,log提示找不到ovsdb-server.pid。

148 16:08:11 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-ctl --no-ovs-vswitchd start 
ovsdb-server is already running. Enabling remote OVSDB managers 2019-09-28T08:08:24Z|00001|daemon_unix|WARN|/var/run/openvswitch/ovsdb-server.pid: open: No such file or directory 
ovs-appctl: cannot read pidfile "/var/run/openvswitch/ovsdb-server.pid" (No such file or directory) 
					[FAILED]

在這裏直接說明原因和修改方法。

問題原因
我的openvswitch的版本是2.11.1,卸載原先的ovs,沒有刪除乾淨。導致殘留,路徑不匹配導致。

修改方法

cp ./openvswitch-2.11.1/utilities/ovs-appctl /usr/bin/ovs-appctl
cp ./openvswitch-2.11.1/vswitchd/ovs-vswitchd ./usr/sbin/ovs-vswitchd
cp ./openvswitch-2.11.1/vswitchd/ovs-vswitchd ./usr/local/sbin/ovs-vswitchd

一般修改了這幾個文件就可以, 如果還有錯誤,檢查是否還有不一致的地方。我在修改這些文件之前,做了一次尋找root目錄下,所有的以openvswitch命名的文件夾刪除的動作,重啓系統後,重新編譯安裝ovs的步驟。


請留步,下面是我的定位過程,不感興趣的可以略過,避免浪費時間。


硬件環境

os centos7.6
cpu E5-2620
dpdk 18.11
openvswitch 2.11.1
qemu 3.09
nic intel 82599ES

問題背景

我在做openvswitch升級的動作,希望支持dpdk的vhostuser模式。因爲服務器之前有了ovs, 所以我這邊只是做了一下stop,便開始編譯,安裝。之後便出現如上的情況。

定位步驟

  1. 在編譯dpdk的時候,內核版本出現了升級的情況,於是我第一步做的便
    是update,重新編譯dpdk,然後在重新安裝ovs,其結果依然如此。

  2. 我關注在log的本身, 查看了/var/run/openvswitch/目錄下確實沒有這個
    文件,但是真的沒有創建出來嗎? 我在根目錄下找了一下,找到了它。它被放在/user/local/var/run/openvswitch。如下:

0 16:04:43 host1:/ # find -name ovsdb-server.pid 
find: ‘./proc/51712’: No such file or directory
./usr/local/var/run/openvswitch/ovsdb-server.pid
  1. 於是我猜想可能是隨着ovs版本的更新,安裝目錄發生了變化,而系統中仍存在以前的殘留文件,導致socket創建的時候,兩邊出現了不統一的情況。根據這個猜想,我關注到的第一個文件便是ovs-appctl文件(爲什麼是它, 因爲他在出錯日誌上寫着呢,它報告的錯誤)。
0 16:09:02 host1:~/yazhou/src/openvswitch-2.11.1 # md5sum /root/yazhou/src/openvswitch-2.11.1/utilities/ovs-appctl  /usr/bin/ovs-appctl  /usr/local/bin/ovs-appctl
a0289f65b7a674cc562fd4e87adda8e1  /root/yazhou/src/openvswitch-2.11.1/utilities/ovs-appctl
e6091e80cf2160f3d642d4fd21ab9f1e  /usr/bin/ovs-appctl
a0289f65b7a674cc562fd4e87adda8e1  /usr/local/bin/ovs-appctl

  1. 顯然/usr/bin/ovs-appctl並不是我編譯出來的文件,很可能是它導致的問題。替換掉,錯誤便沒有了。
0 16:09:38 host1:~/yazhou/src/openvswitch-2.11.1 # cp /root/yazhou/src/openvswitch-2.11.1/utilities/ovs-appctl /usr/bin/ovs-appctl 
cp: overwrite ‘/usr/bin/ovs-appctl’? y 
0 16:09:48 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-ctl --no-ovs-vswitchd start
ovsdb-server is already running. Enabling remote OVSDB managers [ OK ] 

後面還遇到其他的問題,都是一些殘留文件導致的,可以通過MD5
比較。

0 16:03:21 host1:~/yazhou/src/openvswitch-2.11.1 # ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema 
0 16:03:33 host1:~/yazhou/src/openvswitch-2.11.1 # ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach
0 16:03:40 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true 
0 16:03:49 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-lcore-mask=0x3f
0 16:04:14 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-hugepage-dir=/dev/hugepages 
0 16:04:14 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-vsctl --no-wait set Open_vSwitch . other_config:vhost-sock-dir=/tmp 
0 16:04:14 host1:~/yazhou/src/openvswitch-2.11.1 # ovs-ctl --no-ovsdb-server start Inserting openvswitch module [ OK ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章