先週の月曜日の朝、サーバーがコマンドを実行できないことがわかり、「入出力エラー」と表示されました。 30分試してみたところ、実行できるコマンドはSudo poweroff -f
のみであることがわかりました(フラグ-f
を使用する必要があります。そうしないと、「入出力エラー」が発生します)。
サーバーを手動で起動してシステムログを確認しましたが、特別なことは何もありませんでした。そして、smartctlテストを行って、ハードディスクに問題がないか確認しました。そして、それはエラーなしで通過しました。
そして今週月曜日にこの問題が再び現れます。サーバーをシャットダウンして手動で起動すると、何も起こらなかったように見えます。次に、メモリスティックに問題がなければ、msmtest86 8.2テストを使用します。また、SATAケーブルとハードディスクが良好な状態であり、確実に接続されていることを確認してください。
OSやファイルシステムの問題かもしれません。私のOSはDebian 8.11です。アドバイスをいただけますか?皆さん、ありがとうございました!
サーバーがコマンドを実行できないことがわかり、「入出力エラー」が表示されます
コマンド起動時のエラーコードEIO
( "入出力エラー")は、ファイルシステムが破損している場合に発生します。または、不良なストレージで実行している場合。
指をクロスします。どちらにしても、この時点では、本当に必要でない限りサーバーの電源をオンにしないでください。1
2つの根本原因を区別する確実な方法が1つあります。システムでブロックレベルの読み取りスキャンを実行し、カーネルメッセージに注意します。
dmesg -E
を実行して、コンソールでのカーネルメッセージのライブ表示を有効にします。dmesg -n debug
を実行すると、低レベルのカーネルメッセージが表示されます。blkid
を実行して、どのdiskにシステムパーティションが含まれているかを確認します。 (blkid
はパーティションを一覧表示します。パーティションパスの末尾から番号を削除すると、ディスクが取得されます)time -p dd if=/dev/sda of=/dev/null bs=4M
を実行して-disk全体の読み取りテストを実行します(これは慎重に入力してください)。システムdiskが/dev/sda
でない場合は、適宜置き換えてください。dd
が問題なく正常に完了した最良の場合は、ファイルシステムの問題である可能性があります。
fsck.mode=force
を追加します。 (詳細は この質問 を参照)ただし、最悪の場合では、次のようなカーネルメッセージが画面に表示されます。
ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata2.00: irq_stat 0x40000001
ata2.00: failed command: READ DMA EXT
ata2.00: cmd 25/00:08:78:15:c5/00:00:6c:00:00/e0 tag 0 dma 4096 in
res 51/40:00:78:15:c5/00:00:6c:00:00/e0 Emask 0x9 (media error)
ata2.00: status: { DRDY ERR }
ata2.00: error: { UNC }
ata2.00: configured for UDMA/100
sd 1:0:0:0: [sda] Unhandled sense code
sd 1:0:0:0: [sda]
Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 1:0:0:0: [sda]
Sense Key : Medium Error [current] [descriptor]
Descriptor sense data with sense descriptors (in hex):
72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
6c c5 15 78
sd 1:0:0:0: [sda]
Add. Sense: Unrecovered read error - auto reallocate failed
sd 1:0:0:0: [sda] CDB:
Read(10): 28 00 6c c5 15 78 00 00 08 00
end_request: I/O error, dev sda, sector 1824855416
Buffer I/O error on device sda, logical block 228106927
ata2: EH complete
重要な部分を探します。
DRDY
、ERR
およびUNC
Medium Error
ステータスUnrecovered read error
センスメッセージこれらをちらっと見てメッセージで(一度でも)見つけると、物理ディスクエラーが発生していることが示されます。
この場合、dd
を終了させずに、Ctrl + Cを押して停止します。NOW;システムをシャットダウンし、信頼できるデータ復旧ショップにディスクを持ち込みます。
上記の最悪の事例を見つけられず、この種のカーネルメッセージが繰り返し見つかった場合:
ata2: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
ata2: irq_stat 0x00000040, connection status changed
ata2: SError: { CommWake DevExch }
ata2: hard resetting link
ata2: link is slow to respond, please be patient (ready=0)
重要なパーツ:
hard resetting link
link is slow to respond
次に、SATAリンクの問題(ケーブル不良など)に直面しています。Ctrl+ Cを押して停止し、システムをシャットダウンして、ディスクケーブルと接続を修正してから、再試行してください。
また、smartctlテストを実行して、ハードディスクに問題がないか確認しました。そして、それはエラーなしで通過しました。
一部のハードディスクでは、S.M.A.R.Tステータス(私はあなたを見ている、東芝);私の以前のラップトップのハードディスクは、読み取り時に読み取りを停止して読み取りエラーを吐き出し、ステータスレジスタにまだ「何も問題はない」と表示されていました。
サーバーがミッションクリティカルな場合は、 [〜#〜] raid [〜#〜] ベースのセットアップを検討する必要があります。
1注意物語:私のハウスメイトはかつてこの警告を無視し、とにかくファイルシステムチェッカーを彼のデスクトップシステムで削っていました。最終的に起動に失敗するまで、彼は私がそれをチェックするのを待ちませんでした。それを確認する機会を得たとき、ディスクの損傷はすでに回復の域を超えていました(500 GBのディスクはカタツムリのペースのKB /秒でかろうじて読み取ることができ、数日後でも重要な継続的な読み取り可能領域は見つかりませんでした)。
一方、同じ症状の別のケースでは、マシンの所有者が私の警告に耳を傾け、それをチェックできるようになるまでその状態を残しました。もちろん、それはハードディスクの故障でした。 GNU DDRescue セッションの半日と1台の新しいハードディスクの後、私は彼にシステムとデータがブロックレベルで100%回復したこと、つまりすべてのファイルが完全であり、起動する準備ができていることを彼に朗報しました改造せずに。