再起動がソフトウェアによって発生したのか、ハードウェアによって発生したのかをデバッグする方法は?

再起動がソフトウェアによって発生したのか、ハードウェアによって発生したのかをデバッグする方法は?

新しいLinux debian 2.6.32-5-amd64#1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU / Linuxサーバーが複数回再起動されました。

' last -x' 出力結果は次のとおりです。

root     pts/0        192.168.254.11   Sat Dec 15 13:13   still logged in   
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 13:10 - 13:17  (00:06)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 13:10 - 13:17  (00:06)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 12:53 - 13:10  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 12:53 - 13:17  (00:23)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 12:36 - 12:53  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 12:36 - 13:17  (00:40)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 12:19 - 12:36  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 12:19 - 13:17  (00:57)    
root     pts/0        192.168.254.11   Sat Dec 15 12:04 - crash  (00:14)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 12:01 - 12:19  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 12:01 - 13:17  (01:15)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 11:44 - 12:01  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 11:44 - 13:17  (01:32)    
root     pts/0        192.168.254.11   Sat Dec 15 11:36 - crash  (00:08)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 11:26 - 11:44  (00:18)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 11:26 - 13:17  (01:50)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 11:08 - 11:26  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 11:08 - 13:17  (02:08)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 10:51 - 11:08  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 10:51 - 13:17  (02:25)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 10:34 - 10:51  (00:17)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 10:34 - 13:17  (02:42)    
root     pts/0        192.168.254.11   Sat Dec 15 02:41 - crash  (07:53)    
runlevel (to lvl 2)   2.6.32-5-amd64   Sat Dec 15 02:32 - 10:34  (08:02)    
reboot   system boot  2.6.32-5-amd64   Sat Dec 15 02:32 - 13:17  (10:45)    
runlevel (to lvl 0)   2.6.32-5-amd64   Sat Dec 15 02:12 - 02:32  (00:19)

top衝突/再起動前0.1秒以内に ""コマンドの出力:

top - 15:14:04 up 16 min,  2 users,  load average: 0.00, 0.00, 0.01
Tasks: 163 total,   1 running, 162 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  8.3%sy,  0.0%ni, 91.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8191048k total,    87356k used,  8103692k free,     2432k buffers
Swap:        0k total,        0k used,        0k free,    20120k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                       
 2296 root      20   0 19072 1432 1032 R    9  0.0   0:10.25 top                                                                                                            
    1 root      20   0  8356  820  684 S    0  0.0   0:00.79 init                                                                                                           
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd                                                                                                       
    3 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0                                                                                                    
    4 root      20   0     0    0    0 S    0  0.0   0:00.03 ksoftirqd/0                                                                                                    
    5 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0                                                                                                     
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/1                                                                                                    
    7 root      20   0     0    0    0 S    0  0.0   0:00.00 ksoftirqd/1                                                                                                    
    8 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/1                                                                                                     
    9 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/2                                                                       

16分の出力は次のようになりますSensors

temp1:       +37.0 C  (high = +60.0 C, hyst = +55.0 C)  sensor = thermistor
temp2:       +75.0 C  (high = +95.0 C, hyst = +92.0 C)  sensor = diode
temp3:       +32.0 C  (high = +75.0 C, hyst = +70.0 C)  sensor = thermistor

アップデート#2:

  • 実行中にtop問題は通常、稼働時間16分で発生します。
  • Corsair 1050HX PSUに接続されている負荷が少ない場合(74台のSATAドライブではなく60台)、この問題は発生しません。
  • 74台のSATAドライブが接続されている間、14分で「ワット数が増加するかどうか」メーターが突然増加した消費電力を測定し始めました。つまり、326ワットではなく435ワットです。
  • 14分の急激な電力増加は、ストレージモジュールがカーネルにロードされていない(/ dev / sdbなどなし)、他のbpo.3およびbpo.4カーネルバージョンでも発生します。

アップデート#3: 1 つのブートドライブを除くすべてのドライブは分割されず、フォーマットされず、マウント解除されます。

アップデート#4cat /proc/diskstats | grep " sd": Hitachi/Toshiba HDS5C ドライブがより多くの電力を消費し始める問題そうです。起動後に作成されたセクタの数を合計するとゼロになり、消費電力が急増し始めると、この数字は変わりません。

問題は、これらの再起動が次の原因で発生するかどうかを確認する方法です。

  • ソフトウェア
  • ハードウェア(例:短絡状態に対する電源の過電流保護)?

答え1

「ワット数の増加?」を使用して、システムの消費電力をより詳細に監視します。電力計は、これらの再起動が電源装置の過電流保護(OCP)の活性化によって引き起こされることを保証します。

起動後15分後に電力消費が増加した理由を尋ねる質問にserverfaultの答えは、起動後15分後に74ドライブすべてが自動オフラインSMART(ハードドライブセルフモニタリング、分析、レポート)を同時に実行し始めることができるということです。 。時間技術)テスト。

次の試みは、自動オフラインテストの実行を無効にすることでしたsmartctl --offlineauto=off /dev/sdx。 20時間が経過したため、電源投入や再起動なしで、最初の結論は、定期的なオフラインSMARTテストを実行するようにドライブを設定したことが原因でした。

答え2

まず、72台のハードドライブは大量です(私の最大のコンピュータには24台しかあり、電源装置は1200Wです)。すれ違った回転を使用してください。

ドライブがオフラインデータ収集を開始していることがわかります。これは電気使用量の増加を説明することができる。これは、実際にドライブを使用している場合、消費電力が少なくともそれだけ高くなる可能性があることを意味します。

ドライブ仕様シートには、12Vレールのピーク電流が2Aで示されています。あなたの電源は12Vレールで87.5Aを提供できると主張します。したがって、特に他のコンポーネントにもいくつかの値が必要であるため、この値を簡単に超えることができます。これが発生することを確認するために、そのレールに電圧計(可能であれば電流計)を取り付けることをお勧めします。

私は引き続き答えが「はい」と推測します。実行中の供給装置はドライブの数に比べて少なくなります。たとえば、私たちが使用するシステムビルダーは1400W電源を備えた45ドライバJBOD、より多くのドライブとコンピュータがあります。もちろん、このJBODは15K SASドライブ用に指定することもできます。しかし、さらに27台のドライブがあります。

ソフトウェア競合のデバッグ(そうでない可能性があります)

ソフトウェアの競合を見つけようとするときに最も重要なのは、カーネルログを最後の瞬間まで取得することです。シリアルポートがある場合、最良の方法は別のコンピュータに接続してシリアルコンソールを使用することです(カーネルコマンドラインにconsole = / dev / ttyS0,57600を追加する)。 2番目に良い方法は、netconsoleを使用することです。これは、システムの起動後(ただし16分前)に簡単に設定できます。

まず、別のコンピュータで実行しますnc -l -u -p 1234。その後、常にクラッシュするコンピュータでは、modprobe netconsole netconsole=@/eth0,1234@some-ip/netcatウィンドウにいくつかのコンソールメッセージがすぐに表示されます。

[508073.196581] console [netcon0] enabled
[508073.197026] netconsole: network logging started

もちろん、タイムスタンプははるかに低いでしょう。

答え3

出力結果によると、last -x17〜18分ごとに再起動されるようですが、最初に再起動するように設定されたスクリプトまたはクローンがあるかどうかを確認する必要がありますか?そうでない場合は、以下をお読みください。

ハードウェア関連のエラーを確認したり、サーバー上で一般的に実行されている特定のアプリケーションまたは(Debianベースの)ログからソフトウェア関連のログを見つけるdmesg | tailことができます。tail -f /var/log/messagestail -f /var/log/syslog

ソフトウェアの問題かハードウェアの問題かをすばやく確認したい場合は、確認してくださいtop

hi  --  Hardware IRQ
          The amount of time the CPU has been servicing hardware interrupts.

si  --  Software Interrupts
          The amount of time the CPU has been servicing software interrupts.

ここに画像の説明を入力してください。

また、上部の%wa値を確認する必要があります。ハードドライブに問題が発生した場合に備えて、この値が増加します。したがって、使用しているツールやhdparam -T /dev/sdxその他のツールを確認できます。しかし、まだ最終段階ではないので、確認できる方法はいくつかあります。

答え4

CPU温度を確認する必要があります。次のコマンドを使用してシステムログを確認できます。 - grep 'temperature' /var/log/syslog 上記のコマンド出力が空の場合は、パッケージをインストールしてlm-sensors実行する必要があり、sudo sensors-detectすべてのはい/いいえ質問に「はい」を選択します。センサーの検出が完了すると、ロードする必要があるモジュールのリストが表示されます。センサーが/ etc / modulesに挿入されているこれらのモジュールを検出できるようにするには、「yes」と入力するか、/ etc / modulesを直接編集します。次に、sudo service module-init-tools restartこれを実行すると、手順3で/ etc / modulesへの変更を読み取り、新しいモジュールをカーネルに挿入します。次に、lmセンサーが正しく機能していることをテストする必要があります。sensorsコマンドを実行し、可能な後の出力を確認してください。毎回17:00~18:00に再起動するため、システム起動時間の15分後にこのコマンドを実行する必要があるようです。

関連情報