torutkのブログ

ソフトウェア・エンジニアのブログ

ハードディスク障害か

昨日、Linux OSを入れたPCが立ち上がらくなりました。CentOS 6の起動時のグラフィックス表示(CentOSのロゴとくるくる回転している画面)のまま先に進みません。この画面で[←]キーを押すと、グラフィックス表示を消去し起動中のコンソールが表示されます。そこで、

ata5.00: status: { DRDY ERR }
ata5.00: err: { UNC }
ata5: EH in SWNCQ mode,QC:qf_active 0x1 sactive 0x1
    :

のようなメッセージが繰り返し表示され続けていました。

PCの仕様

CPU: AMD Phenom 9750(4コア)
M/B: ASUS M2N-SLI Deluxe
HDD: HDT722525DLA380 (HGST製、250GB)
WD10EARS(Western Digital製、1TB)
メモリ: Corsair CM2X1024-6400 1GB×2枚
Patriot PSD24G800KH 2GB×2枚

障害探求の方針

おそらくHDD障害と思われますが、メモリということもあり得ると思い、次の手順で進めることとしました。
# memtest86によるメモリテストを実行
# HDDメーカーが提供するツールでHDD検証を実行

メモリテスト

前に、Ultimate Boot CDを入手しCD-Rに焼いていたので、これをPCに入れてブートします。Ultimate Boot CDは、CDブートしてCPU、メモリ、HDDなどの各種ツールを集めてメニューから選択して実行できるようにした便利ツールです。
http://www.ultimatebootcd.com/

最初memtest86を実行したら、すぐにフリーズしてしまい、メモリ障害を疑って4枚実装したDIMMを1枚ずつ挿して起動しどれがだめかを見ることで障害メモリを特定しようとしました。しかし、どれを挿しても最初の問題事象は解消されません。Ultimate Boot CDのメモリのメニューには、memtest86memtest86+とあって、念のためmemtest86+を実行したらフリーズする現象は起きません。ここでメモリの線は消えました。

HDDテスト

HDDは製造メーカーごとに検証ツールを提供しています。このPCのように、HGST製とWestern Digital製と別メーカーのHDDを積んでいると、それぞれごとにツールを入手しなくてはならず使い方もそれぞれなので不便です。
これもUltimate Boot CDにはHDDメーカーごとのツールを収容しているのでそれを選択実行するだけと便利に使えます。

まず、HGST製HDDはテスト結果良好となりました。次に、Western Digitalはテストで異常が発生しました。
そこで、障害原因はWestern DigitalのWD10EARSと特定しました。
障害は物理的なもの、論理的なものがあります。論理的な障害であれば、ファイルシステムを修復する、あるいは再フォーマットして再使用するといったことが可能です。

HDD復旧の試み

CD/DVDのみで起動するLinux(Live CD)を使って起動し、HDDにアクセスする方法が一般的と思います。今回はSystemRescue CDというツールを使ってCDブートし、障害発生HDDに作ったファイルシステムの復旧をfsckを実行して試みます。
SystemRescue CDは次のサイトで提供されています。
http://www.sysresccd.org/SystemRescueCd_Homepage

まずブート後、問題のHDDが/dev/sdbで認識されているので、ここをfsckしようとしました。しかし、LVMを使っていたため、ちょっと手間がかかりました。

fsck実施後、リブートしましたが、エラー状態は変わりません。

HDDデータの復旧

fsckでは復旧できなかったので、再フォーマットをすることになりそうです。そこで、いまあるデータをいったん取り出すことにします。
このマシンは、Linux KVMで仮想化していたので、必要なデータはKVMゲストイメージファイルになります。いったんゲストイメージファイルとゲスト定義ファイルをネットワーク上のNASドライブにコピーします。NASWindowsファイル共有なので、mountで-t cifsを指定してマウントします。

HDDの初期化

Ultimate Boot CDでPCを起動し、HDDのDiagnosisからDLG Diagnostic V5.04f (Western Digital)を選択、Write Zeros to Driveを実行します。Western Digitalのツールには物理フォーマット的なものが見当たらないのでこれにしました。

HDDの状態調査

Write Zeros to Drive実行後、HDDのテスト(QUICK TESTとEXTENDED TEST)を実行し、エラーのないことを確認しました。ただし、問題の原因がこのWrite Zeros to Driveで解消しているとは限らないので、このHDDについては今後監視をしていくのがよさそうです。

CentOS 6の再インストール

一番確実なCentOS 6のインストールCDを作成してインストールすることにします。通常のCentOS 6(64bit版)インストールイメージはDVD2枚組みなので、今回はminimalインストール用ISOイメージをCD-Rに焼いてインストールします。

minimalインストールの場合、インストールするソフトウェアパッケージの構成を選択する画面はなく、所定のパッケージ(199個)がインストールされます。HDDのパーティションは任意に設定することができます。今回は次のパーティション分割にしました。

  • HDT722525DLA380
    • /boot ext4 500MB
    • - swap 8000MB
    • 残りは未割り当て
  • WD10EARS

HDDの状況調査

HDDのS.M.A.R.T.機能を使って(?)、HDDの状況を調査し、障害が発生したHDDを使用し続けるか早急に交換するかの判断材料を入手します。

smartctlコマンドを使って、HDDの自己診断を実行しその結果を見ます。

自己診断(簡易)

まず、自己診断(簡易)をHDDにトリガーします。自己診断には時間がかかるので、結果は自己診断終了後に確認可能となります。

# smartctl -t short /dev/sdb
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-358.6.2.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Sun May 26 10:19:38 2013

Use smartctl -X to abort test.
#

メッセージには、自己診断(簡易)完了まで2分かかるとあるので、2分後に診断結果を取得します。smartctl -cで自己診断実行状況を都度確認することもできます。

  • 自己診断結果取得
smartctl -l selftest /dev/sdb
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-358.6.2.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== 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  Short offline       Completed without error       00%      7734         -
# 2  Conveyance offline  Completed without error       00%      7719         -
# 3  Conveyance offline  Completed: read failure       90%      7696         40
# 4  Conveyance offline  Completed without error       00%      3322         -
# 5  Conveyance offline  Completed: read failure       90%      3300         2056
# 6  Conveyance offline  Completed: read failure       90%      3294         2056
# 7  Short offline       Completed: read failure       50%      3293         2056

うーん、read failureが発生し、寿命(LifeTime)が3000時間(125日)となっています。

一方、エラーのなかったHDDについて同じ自己診断を実施してみたところ、結果は次のようになりました。

=== 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  Short offline       Completed without error       00%     15373         -
# 2  Short offline       Completed without error       00%     15337         -
# 3  Short offline       Completed without error       00%     13081         -
# 4  Short offline       Completed without error       00%     11021         -
# 5  Short offline       Completed without error       00%     10919         -

ずいぶん違いました。やはり交換を急いだほうがよさそうです。

自己診断(拡張)

簡易とちがって非常に時間がかかります。

# smartctl -t long /dev/sdb
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 240 minutes for test to complete.
Test will complete after Sun May 26 20:31:08 2013

Use smartctl -X to abort test.

自己診断実行状況を確認してみます。

# smartctl -c /dev/sdb
  :
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
  :
#

これは自己診断実行中のときのメッセージです。

# smartctl -c /dev/sdb|grep -A 1 Self-test
  :
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever

これは自己診断が完了しているときのメッセージです。

# smartctl -A -l selftest /dev/sdb
  :
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      7744         -
# 2  Conveyance offline  Completed without error       00%      7740         -
# 3  Short offline       Completed without error       00%      7734         -
# 4  Conveyance offline  Completed without error       00%      7719         -
# 5  Conveyance offline  Completed: read failure       90%      7696         40
# 6  Conveyance offline  Completed without error       00%      3322         -
# 7  Conveyance offline  Completed: read failure       90%      3300         2056
# 8  Conveyance offline  Completed: read failure       90%      3294         2056
# 9  Short offline       Completed: read failure       50%      3293         2056
4 of 4 failed self-tests are outdated by newer successful extended offline self-test # 1

簡易よりも診断項目が増えています。

一連の作業で知ったこと

  • CentOS 6のブート時グラフィックス画面は[←]キーを押すとコンソール表示に切り替えることができる
  • LVMの場合fsckを実行するには、ひと手間いる