簡介:
業務服務器有一台服務器出現意外down機,服務器ping 不通、無法登陸,本想通過公司KVM系統登陸系統重啟解決,登陸KVM后發現系統屏幕打印大量的內核錯誤,KVM無法使用、無法發送重啟服務器。果斷聯系 機房人員幫助手工重啟,手動重啟服務器后服務器運行狀態回歸正常。
在服務器重啟前通過KVM管理系統能看到系統屏幕上打印的內核錯誤,此時做了一個頁面截屏,后根據屏幕打印的報錯關鍵字,進行查找追蹤發現原來我們的linux服務器內核bug問題導致。
此內核BUG問題會直接導致服務器down機,查找相關資料發現這個內核BUG存在相關觸發條件,下面對個人收集整理的一些資料進行歸納,給大家借鑒。
1.官方描述:
sched_clock() overflow after 208.5 days in Linux Kernel
Linux Kernel 2.6.28版本以上內核存在此問題。
服務器出現故障時系統在屏幕上打印錯誤大致如下:
Jun 8 14:26:06 acme kernel: irq 19: nobody cared (try booting with the "irqpoll" option)
Jun 8 14:26:06 acme kernel: Pid: 0, comm: swapper Not tainted 2.6.32-220.7.1.el6.x86_64 #1
Jun 8 14:26:06 acme kernel: Call Trace:
Jun 8 14:26:06 acme kernel: <IRQ> [<ffffffff810db42b>] ? __report_bad_irq+0x2b/0xa0
Jun 8 14:26:06 acme kernel: [<ffffffff810db62c>] ? note_interrupt+0x18c/0x1d0
Jun 8 14:26:06 acme kernel: [<ffffffff810dbd4d>] ? handle_fasteoi_irq+0xcd/0xf0
Jun 8 14:26:06 acme kernel: [<ffffffff8100df09>] ? handle_irq+0x49/0xa0
Jun 8 14:26:06 acme kernel: [<ffffffff814f4dbc>] ? do_IRQ+0x6c/0xf0
Jun 8 14:26:06 acme kernel: [<ffffffff8100ba53>] ? ret_from_intr+0x0/0x11
Jun 8 14:26:06 acme kernel: [<ffffffff8100ba53>] ? ret_from_intr+0x0/0x11
Jun 8 14:26:06 acme kernel: <EOI> [<ffffffff812c4b0e>] ? intel_idle+0xde/0x170
Jun 8 14:26:06 acme kernel: [<ffffffff812c4af1>] ? intel_idle+0xc1/0x170
Jun 8 14:26:06 acme kernel: [<ffffffff813fa027>] ? cpuidle_idle_call+0xa7/0x140
Jun 8 14:26:06 acme kernel: [<ffffffff81009e06>] ? cpu_idle+0xb6/0x110
Jun 8 14:26:06 acme kernel: [<ffffffff814e5ffc>] ? start_secondary+0x202/0x245
Jun 8 14:26:06 acme kernel: handlers:
Jun 8 14:26:06 acme kernel: [<ffffffffa01e5020>] (rtl8169_interrupt+0x0/0x380 [r8169])
2.經查找資料分析此內核bug經查找資料有3個觸發條件;
a:linux系統內核版本Linux Kernel 2.6.28版本以上(函2.8);
b.系統運行208天左右;
c.服務器使用Pentium 4 以上intel CPU(含CPU、32bit/64bit);
很悲催!我們的服務器上面條件全滿足。
3.bug相關通報
版本是2011年發布的 如果沒有打過補丁 應該沒有修復這個bug
kernel-2.6.32-220.4.2.el6 centos在這個內核版本修復了這個bug
此缺陷在 Linux Kernel 2.6.32.50 / 3.0.13 / 3.1.5 已被修正。
3. 內核升級
經過排查排查發現我們好多服務器都滿足上面的內核BUG觸發條件,果斷安排服務器計划,避免服務器意外DOWN機事情再次發生,下面是對相關操作進行簡單記錄,以供大家參考:
3.1:確認系統版本和內核版本
[root@slave2 ~]# uname -a
Linux slave2 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@slave2 ~]# more /etc/redhat-release
CentOS release 6.2 (Final)
[root@slave2 ~]# more /proc/version
Linux version 2.6.32-220.el6.x86_64 (mockbuild@c6b18n3.bsys.dev.centos.org) (gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) ) #1 SMP Tue Dec 6 19:48:22 GMT 2011
[root@slave2 ~]#
3.2:內核升級:
我使用的是覆蓋處理方式,執行如下命令;
yum update -y
升級完成,重啟服務器新的內核版本才能生效。
init 6
3.3:檢查升級結果:
[root@slave2 ~]# uname -a
Linux master 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@slave2 ~]# more /etc/redhat-release
CentOS release 6.4 (Final)
[root@slave2 ~]# more /proc/version
Linux version 2.6.32-358.11.1.el6.x86_64 (mockbuild@c6b7.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Wed Jun 12 03:34:52 UTC 2013
系統重啟完成后,通過查看發現內核版本已經升級到2.6.32-358,系統升級為6.4目前最新版本。
redhat官方發布消息:
https://rhn.redhat.com/errata/RHBA-2012-0124.html
centos官方發布消息
https://www.centos.org/modules/newbb/viewtopic.php?topic_id=42031
相關信息:
https://www.centos.org/modules/newbb/viewtopic.php?topic_id=42031
http://bugs.centos.org/view.php?id=4586#c14466
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=46348
http://bugs.centos.org/view.php?id=5397