這是 OpenStack 實施經驗分享系列的第 12 篇。
問題描述
客戶報告了一個問題:對 instance 執行 migrate 操作,幾個小時了一直無法完成,不太正常。
問題分析
遇到這種情況,第一個要檢查的就是 instance 所在計算節點的 nova-compute.log 日志,但不幸的是沒有發現相關的錯誤。
如果 nova-compute 沒有錯誤,那更底層的 hypervisor 有相關報錯嗎? 打開 /var/log/libvirt/libvirtd.log,這里我們發現了一些線索:
上面的 log 告訴我們:沒有找到 instance swap 對應 image backing file /var/lib/nova/instances/_base/swap_8192。
當前這個 instance 確實使用了一個 8192M 的 swap disk,但奇怪的是:正在使用的 image backing file 為什么會不見了呢?
在排除了人為誤刪后,懷疑是一個 bug。搜索一下:
運氣不錯,第三個結果是 OpenStack 的 bug,好像就是我們要找的。 瀏覽 bug 信息發現描述的現象跟我們的情況一樣,而且在客戶使用的 kilo 版本上已經有 fix。
點擊 commit 鏈接,可以看到 fix 都修改了哪些文件。
對照客戶系統中的代碼,確實沒有包含該 fix,也印證了確實是這個 bug。
解決問題
因為 fix 的文件位於 nova 目錄,可見這是 nova 模塊的 bug。 接下來的工作就很直接了:
-
下載 nova 的代碼。
-
安裝 kilo 的最新版本。
-
重啟所有 nova-* 服務。
關於如何更新 OpenStack 組件,請參考上一節的方法。
下節教大家如何快速安全地給 instance 做快照。