web-dev-qa-db-ja.com

ハードウェアRAID1構成-1つの物理ディスクで障害が発生した可能性のあるセクター。 OSは他のディスクから自動的に読み取りますか?

私はプロのシステム管理者ではありませんが、しばらく調査した後、特定のケースに対する回答が見つからなかったため、ここで助けが得られることを望んでいました。私たちのサーバーは、RAID1構成のHPSmartコントローラーアレイであるP222を使用しています。物理ハードドライブの1つにあるいくつかのセクターに障害が発生したと思います。 hpacucliツールを使用したところ、出力は次のようになりました。-

 $ hpacucli ctrl all show config 

 Smart Array P222 in Slot 1                (sn: PDSXH0ARH5I0SW)

 array A (SATA, Unused Space: 0  MB)


  logicaldrive 1 (2.7 TB, RAID 1, Ready for Rebuild)

  physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SATA, 3 TB, OK)
  physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SATA, 3 TB, Predictive Failure)

同じツールを数回実行してステータスを確認しましたが、ある時点で「予測障害」が「1%の再構築」に置き換えられ、後で2%に増加したことに気付きました。再建を始めるために何もしなかったと思います。とにかく、私はそれを実行させ、しばらくしてステータスをチェックしました。その時点で、「予測障害」に戻りました。

Smartctlのロングテストとショートテストの実行時に-セルフテストログが報告されました:-

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     14368         334201968
# 2  Short offline       Completed: read failure       90%     14367         625082211

このサーバーでMySQLインスタンスを実行していますが、ハードディスクの故障/不良セクタが原因である可能性があることを示す読み取りエラーの不平を言い始めていないため、上記のツールを使用しています。私はいくつか質問がありました:-

  1. よくわかりませんが、ハードディスクの1つが部分的に故障しているようです。その場合、OS(Ubuntu 12.04)はミラーリングされたハードディスクからデータを読み取るだけではいけませんか? (つまり、MySQLは引き続き実行する必要があります)
  2. http://sg.danny.cz/scsi/badblockhowto.html の手順に従っていました。 LBA 334201968(長いテスト読み取り失敗のLBA)は、MySQLのデータファイルに対応します。しかし、MySQLがファイルを永続的に破損していると見なすかどうかわからないため、このファイルのどの部分も上書きしたくありませんでした。ディスクの破損した部分を「修正」するための最善のオプションは何でしょうか。

これを診断/修正するために必要となる可能性のある追加の詳細を報告してください

編集1:要求に応じてMySQLエラーログは次のようになります:-

150824 10:27:00 InnoDB: Completed initialization of buffer pool
150824 10:27:00 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
150824 10:27:00  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
150824 10:27:00  InnoDB: Waiting for the background threads to start
150824 10:27:01 InnoDB: 5.5.35 started; log sequence number 2723867081864
150824 10:27:01 [Note] Server hostname (bind-address): <ip and port here>;
150824 10:27:01 [Note]   - <ip here> resolves to <ip here>;
150824 10:27:01 [Note] Server socket created on IP: <ip here>.
InnoDB: Error: tried to read 16384 bytes at offset 70 1898921984.
InnoDB: Was only able to read -1.
150824 10:27:01  InnoDB: Operating system error number 5 in a file operation.
InnoDB: Error number 5 means 'Input/output error'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html
InnoDB: File operation call: 'read'.
InnoDB: Cannot continue operation.

編集2:コメントに基づいて https://serverfault.com/a/716471/306555 、ディスクを交換するためのチケットを開き、ディスクを交換してRAIDを再構築しました。 hpacucliからの出力は次のようになります:-

  physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SATA, 3 TB, OK)
  physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SATA, 3 TB, OK)

したがって、予測の失敗はなくなりました。ただし、MySQLで読み取りエラーが発生し続けたため、smartctlの長いテストと短いテストを再度実行しました。短いテストは合格しましたが、長いテストは読み取りエラーで失敗しました:-

Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     14393         625116232
# 2  Short offline       Completed without error       00%     14392         -

また、syslogを確認したところ、MySQLを起動しようとするたびに、syslogにこのエラーがあることに気付きました。

Aug 25 14:23:41 kernel: [ 1603.911185] sd 6:0:0:1: [sda] Unhandled sense code
Aug 25 14:23:41 kernel: [ 1603.911186] sd 6:0:0:1: [sda]  Result: hostbyte=invalid driverbyte=DRIVER_SENSE
Aug 25 14:23:41 kernel: [ 1603.911188] sd 6:0:0:1: [sda]  Sense Key : Medium Error [current] 
Aug 25 14:23:41 kernel: [ 1603.911190] sd 6:0:0:1: [sda]  Add. Sense: Unrecovered read error
Aug 25 14:23:41 kernel: [ 1603.911192] sd 6:0:0:1: [sda] CDB: Read(10): 28 00 46 a2 d5 a0 00 00 08 00

それは何を示していますか? (ディスク上の不良セクタのように見えますか?)その場合、それを修正する方法はありますか?

4
J Doestev

はい。これは長い質問ですが、短い答えが得られます。

「予測障害」または「失敗」が表示された場合は、ディスクを交換してください。

これらの条件は両方とも、HPからのサポートチケットおよび/または保証部品の交換を確立する目的で有効です。

「予測障害」には、S.M.A.R.T.データと、ドライブの状態を判断するための他のヒューリスティックが組み込まれています。ただし、詳細はそれほど重要ではありません。ドライブの交換を計画してください。

アプリケーションレベルで影響が見られるという事実は、正しい行動方針がディスクを交換することであることを示すもう1つの兆候です。簡単に行えます... SATAドライブでありながら、HPパーツであるため、保証が付いています(おそらく1年ですが、サーバーのシリアル番号に関連付けられています)

HPに電話...

2
ewwhite
  1. はい、RAID内の1つのドライブに障害が発生した場合、RAIDコントローラーはそれを障害としてマークし、他の正常なhddで読み取られます。
  2. 予測障害とは、ディスクは引き続き機能しますが、制御されているため、すぐに障害が発生することを意味します。テストで読み取りエラーが発生した場合は、ドライブを別のドライブと交換する必要があります。お近くのストア/ベンダーサポートでスペアドライブを購入してインストールするだけで、RAIDコントローラーがアレイを正常な状態に再構築します。
1
BaZZiliO

HPハードドライブを使用していますか?または通常の消費者ドライブ?ドライブには時間制限付きエラー回復機能がありますか?

そうでない場合、ドライブは不良セクタを読み取ろうとしているときにコントローラをロックアップする可能性があります。ドライブが放棄するまでに長い時間がかかるため、読み取りは失敗します。 RAIDコントローラは、最初のドライブが故障したと判断するのを待ってスタックしているため、他のドライブを試す機会がありません。

この動作により、ドライブが一時的にレイドから脱落し、再構築が説明されます。

これは、HP以外のドライブを使用している場合にのみ適用されます。サポートされているドライブは、すぐに諦め、RAIDコントローラーにエラーを処理させるようにプログラムされています。

1
Grant