2013/01/07
RAID1 設定したHDDのS.M.A.R.Tエラーを修復する
Disk Utility で確認したところ |
このディスク、Ubuntu 上でFakeRAIDを組んだもの。
いままで RAID の修復なんてやったことないよ…
というわけで、やってみました。
バックアップ
なにはともあれ、まずはバックアップから。対象のHDDに入っているデータを丸々退避。
Nasneに外付けハードディスクをつけたばかりだったので、データを退避する場所があったのは幸いでした。
エラー箇所の確認
エラー箇所を確認するためには、S.M.A.R.T のセルフテストを実行します。(short ではエラーが出ない場合もあるので、その場合は long にします)$ sudo smartctl -t short /dev/sdd smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-35-generic] (local build) Copyright (C) 2002-11 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 Jan 6 10:46:18 2013 Use smartctl -X to abort test.
2分待てとのことなので、待ちます。
2分経ったら、結果を確認。
$ sudo smartctl -A -l selftest /dev/sdd smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-35-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 113 109 021 Pre-fail Always - 7325 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 523 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 072 072 000 Old_age Always - 20601 10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 521 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 284 193 Load_Cycle_Count 0x0032 051 051 000 Old_age Always - 448507 194 Temperature_Celsius 0x0022 119 094 000 Old_age Always - 28 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 2 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 1 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0 SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed: read failure 90% 20600 1348821247
2箇所もエラーがありますね。とりあえず、最初に問題のあるセクタは 1348821247 (LBA) であることがわかりました。
RAIDの解除
RAID を組んだままで修復すると何がおこるかわからないので、RAIDを解除します。まずは、RAID-set name を確認。
$ sudo dmraid -s *** Group superset isw_defhhdihjj --> Active Subset name : isw_defhhdihjj_Volume0 size : 1953517824 stride : 128 type : mirror status : ok subsets: 0 devs : 2 spares : 0
isw_defhhdihjj_Volume0 であることがわかりました。
マウントを解除してから、RAID のマッピングを解除。
$ sudo umount /dev/mapper/isw_defhhdihjj_Volume0p1 $ sudo dmraid -an isw_defhhdihjj_Volume0
修復
Current Pending Sector を修復、もしくは Reallocate するわけですが、基本的にはそのセクタに何かを書きこんでやるだけで良いはずです。参考:Technical Memorandum: ハードディスクエラーとSMARTのPending sector, reallocated sector
LBA を直接指定できる hdparm を使用して書き込みを行なってみます。
$ sudo hdparm --write-sector 1348821247 /dev/sdd Use of --write-sector is VERY DANGEROUS. You are trying to deliberately overwrite a low-level sector on the media. This is a BAD idea, and can easily result in total data loss. Please supply the --yes-i-know-what-i-am-doing flag if you really want this. Program aborted.
「データが簡単に壊れるけど、本当にいいのか?本当に良いなら --yes-i-know-what-i-am-doing をつけて実行しろ」とのこと。
ちなみに、使用した hdparm のバージョンは v9.37 です。
言われた通り、フラグをつけて実行してみました。
$ sudo hdparm --yes-i-know-what-i-am-doing --write-sector 1348821247 /dev/sdd /dev/sdd: re-writing sector 1348821247: succeeded
書き込めたようです。
修復されたかどうかを確認
セルフテストを実行して結果を確認。$ sudo smartctl -t long /dev/sdd $ sudo smartctl -A -l selftest /dev/sdd smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-35-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 113 109 021 Pre-fail Always - 7325 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 523 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 072 072 000 Old_age Always - 20606 10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 521 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 284 193 Load_Cycle_Count 0x0032 051 051 000 Old_age Always - 448544 194 Temperature_Celsius 0x0022 114 094 000 Old_age Always - 33 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 1 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 1 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0 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% 20606 - # 2 Short offline Completed without error 00% 20602 - # 3 Short offline Completed: read failure 90% 20600 1348821247
今回の場合は 2つの Current Pending Sector があったので、もう一度同じ事をして修復する必要がありましたが、そこは割愛します。
以下のように、Current_Pending_Sector が0になりました。
本当は、Reallocated_Event_Count が増えるはずですが、今回は増加しませんでした。正常なセクタとして認識され直したようです。
$ sudo smartctl -A /dev/sdd smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-35-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 112 109 021 Pre-fail Always - 7366 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 524 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 072 072 000 Old_age Always - 20645 10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 522 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 284 193 Load_Cycle_Count 0x0032 051 051 000 Old_age Always - 448908 194 Temperature_Celsius 0x0022 115 094 000 Old_age Always - 32 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
RAID組み直し
この状態で RAID を activate し直してみました。$ sudo dmraid -an特に問題なく activate されました。
バックアップとの差分をチェック
バックアップとの diff をとってみました。$ diff -r /mnt/Data /mnt/nasne/backup/Data結果は特に問題なし。
まー、もともと問題なく動いていたので、大丈夫だとは思うのですが、Pending Sector だったところの修復はちゃんと行われているのかなど、少し不安です。
今回、dmraid (device-mapper) に関しての理解がまだまだ不十分だと感じました。
ちょっとこれから勉強してみようかと思います。
0 件のコメント:
コメントを投稿