Linux 內(nèi)核超時導(dǎo)致虛擬機(jī)無法正常啟動

問題描述

當(dāng) Linux 虛擬機(jī)啟動時,通過串口輸出或者啟動日志, 觀察到超時的報錯.導(dǎo)致虛擬機(jī)無法正常啟動和連接.

問題分析

常見的超時報錯范例如下:

復(fù)制

INFO: task swapper:1 blocked for more than 120 seconds.

Not tainted 2.6.32-504.8.1.el6.x86_64 #1

"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.

swapper? D 0000000000000000 0 1? 0 0x00000000

ffff88010f64fde0 0000000000000046 ffff88010f64fd50 ffffffff81074f95

0000000000005c2f ffffffff8100bb8e ffff88010f64fe50 0000000000100000

0000000000000002 00000000fffb73e0 ffff88010f64dab8 ffff88010f64ffd8

1. Call Trace:

[] ? __call_console_drivers+0x75/0x90

[] ? apic_timer_interrupt+0xe/0x20

[] ? vprintk+0x251/0x560

[] schedule_timeout+0x192/0x2e0

[] ? process_timeout+0x0/0x10

[] schedule_timeout_uninterruptible+0x1e/0x20

[] msleep+0x20/0x30

[] prepare_namespace+0x30/0x1a9

[] kernel_init+0x2e1/0x2f7ls

[] child_rip+0xa/0x20

[] ? kernel_init+0x0/0x2f7

[] ? child_rip+0x0/0x20

上述報錯描述了系統(tǒng)任務(wù)在等待 IO 超過 120 秒以后, 依舊沒有得到響應(yīng),導(dǎo)致該任務(wù)被阻止. IO 超時未響應(yīng)的原因, 有多種: 磁盤下線、 存儲有嚴(yán)重的延遲、 磁盤陣列(RAID)工作異常, 或者 Linux 虛擬機(jī)本身的 CPU 和內(nèi)存資源不足都會導(dǎo)致 IO 超時.

解決方案

方案一:

最快速的嘗試是通過 Azure 門戶重啟該虛擬機(jī),大部分問題可以得到解決.

方案二:

如果方案一依然無法解決連接的問題, 建議您選擇刪除虛擬機(jī)保留磁盤, 然后基于該磁盤新建虛擬機(jī).修改內(nèi)核參數(shù):

注: 以下方案僅適用于 CentOS 和 RHEL,其他版本 Linux 略有不同, 僅供參考.如果業(yè)務(wù)生產(chǎn)對內(nèi)核參數(shù)嚴(yán)格要求的, 請參考相關(guān)參數(shù)的說明, 酌情進(jìn)行修改配置.

編輯/etc/sysctl.conf增加(修改以下參數(shù)):

復(fù)制

vm.dirty_background_ratio = 5

vm.dirty_ratio = 10

保存并退出.

執(zhí)行命令是上述改動立即生效:

復(fù)制

sysctl -p

如果上述兩個方案依然無法解決問題, 請及時聯(lián)系 Azure 技術(shù)支持中心,獲取更深入的支持和幫助.

立即訪問http://market.azure.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容