libvirtd初始化異常(/usr/local/sbin/libvirtd: initialization failed)解決
阿新 • • 發佈:2019-02-02
今天在一臺通過apt-get安裝過老版本libvirt(0.9.8)的機器上安裝OpenStack,由於老版本的libvirt有Bug,故通過原始碼編譯安裝1.2.0版本。編譯安裝一切正常,不過在啟動nova-compute服務時出現錯誤:
Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 346, in fire_timers timer() File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/timer.py", line 56, in __call__ cb(*args, **kw) File "/usr/local/lib/python2.7/dist-packages/eventlet/event.py", line 163, in _do_send waiter.switch(result) File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 194, in main result = function(*args, **kwargs) File "/opt/stack/nova/nova/service.py", line 132, in run_server server.start() File "/opt/stack/nova/nova/service.py", line 398, in start self.manager.init_host() File "/opt/stack/nova/nova/compute/manager.py", line 294, in init_host self.driver.init_host(host=self.host) File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 344, in init_host if not self.has_min_version(MIN_LIBVIRT_VERSION): File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 332, in has_min_version libvirt_version = self._conn.getLibVersion() File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 361, in _get_connection self._connect, self.uri, self.read_only) File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 139, in proxy_call rv = execute(f,*args,**kwargs) File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 77, in tworker rv = meth(*args,**kwargs) File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 415, in _connect return libvirt.openAuth(uri, auth, 0) File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth if ret is None:raise libvirtError('virConnectOpenAuth() failed') libvirtError: Failed to connect socket to '/usr/local/var/run/libvirt/libvirt-sock': No such file or directory 2014-03-08 09:13:10 CRITICAL nova [-] Failed to connect socket to '/usr/local/var/run/libvirt/libvirt-sock': No such file or directory
由於之前也遇到過,是由於libvirtd沒有正常啟動導致的,於是嘗試啟動libvirtd服務:
/usr/local/sbin/libvirtd -l -f /etc/libvirtd.conf
這時候本該正常啟動,卻出現以下問題,/var/log/libvirt/下的日誌中也完全找不到任何異常。
/usr/local/sbin/libvirtd: initialization failed
Google後說是字元編碼的問題,需要修改:
#將以下語句新增到 /etc/profile 中
export export LC_ALL=POSIX
#重新載入
source /etc/profile
再次重啟libvirtd,這次仍有錯誤:
# /usr/local/sbin/libvirtd -l -f /etc/libvirtd.conf
2014-03-08 00:57:31.361+0000: 10577: info : libvirt version: 1.2.0
2014-03-08 00:57:31.361+0000: 10577: error : virNetTLSContextCheckCertFile:117 : Cannot read CA certificate '/usr/local/etc/pki/CA/cacert.pem': No such file or directory
但發現正常執行的機器上也沒有 /usr/local/etc/pki/CA/cacert.pem這個檔案,再次檢查/etc/libvirtd.conf檔案,發現有這麼一段:
# Flag listening for secure TLS connections on the public TCP/IP port.
# NB, must pass the --listen flag to the libvirtd process for this to
# have any effect.
#
# It is necessary to setup a CA and issue server certificates before
# using this capability.
#
# This is enabled by default, uncomment this to disable it
# listen_tls = 0
於是將最後一行解除註釋,關閉驗證,再次啟動libvirtd,啟動正常,問題得解。
補充,有時候建立不了快照,可能是qemu-common或是qemu-utils沒有安裝好,apt-get重灌也可解決,主要還是從錯誤資訊中找相關線索。
參考資料:
http://www.cnblogs.com/zhangzhang/archive/2013/03/04/2943263.html
http://liuzhijun.iteye.com/blog/1783698