本日、不良セクタのリペアをしたので備忘録として。
SMARTはHDD(ハードディスク)異常の検知をしてくれます。
異常を検知すると「SMART error (CurrentPendingSector) detected on host:xxxx」という件名のメールが送られて来ます。
This email was generated by the smartd daemon running on:
host name: www.xxxx.com
DNS domain: xxxx.com
NIS domain: (none)
The following warning/error was logged by the smartd daemon:
Device: /dev/hda, 1 Currently unreadable (pending) sectors
For details see host's SYSLOG (default: /var/log/messages).
You can also use the smartctl utility for further investigation.
No additional email messages about this problem will be sent.
1. まずはセルフテストを実施します。1時間程度待ちます。
[root@www ~]# smartctl -t long /dev/hda smartctl version 5.38 [i686-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === 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 61 minutes for test to complete. Test will complete after Mon Jan 18 16:23:24 2010 Use smartctl -X to abort test.
2. 1時間後、結果を確認します。
[root@www ~]# smartctl -A -l selftest /dev/hda smartctl version 5.38 [i686-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is 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 0x000f 200 200 051 Pre-fail Always - 169 3 Spin_Up_Time 0x0003 167 163 021 Pre-fail Always - 2625 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 9 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x000e 200 200 051 Old_age Always - 0 9 Power_On_Hours 0x0032 079 079 000 Old_age Always - 15484 10 Spin_Retry_Count 0x0012 100 253 051 Old_age Always - 0 11 Calibration_Retry_Count 0x0012 100 253 051 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 9 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 5 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 9 194 Temperature_Celsius 0x0022 118 102 000 Old_age Always - 25 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 1 198 Offline_Uncorrectable 0x0010 100 253 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 100 253 051 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: read failure 90% 15484 33769597上記の「197 Current_Pending_Sector」は、不安定なセクタ数。代替セクタに再配置されるのを待っているセクタの総数です。
また「LBA_of_first_error」の部分が不良ブロックのLBA番号です。
3. 不良セクタがどのパーティション内にあるかを調べます。
[root@www ~]# fdisk -lu /dev/hda Disk /dev/hda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = セクタ数 of 1 * 512 = 512 bytes デバイス Boot Start End Blocks Id System /dev/hda1 * 63 208844 104391 fd Linux raid 自動検出 /dev/hda2 208845 33768629 16779892+ fd Linux raid 自動検出 /dev/hda3 33768630 310472189 138351780 fd Linux raid 自動検出 /dev/hda4 310472190 312576704 1052257+ fd Linux raid 自動検出不良ブロックのLBA番号は「33769597」なので、パティション「/dev/hda3」に含まれる事が判明します。
4. ブロックサイズを調査する。
[root@www ~]# tune2fs -l /dev/hda3 | grep Block Block count: 34587920 Block size: 4096 Blocks per group: 32768ブロックサイズは「4096」です。
5. LBAがどのブロックに含まれているかを計算で求めます。
b = (int)((L-S)*512/B)
where:
b = File System block number
B = File system block size in bytes
L = LBA of bad sector
S = Starting sector of partition as shown by fdisk -lu
and (int) denotes the integer part.
B = 「4096」、L = 「33769597」、S = 「33768630」を代入すると、
b = (int)((33769597 - 33768630) * 512 / 4096) = 120ブロック番号は「120」である事が判明しました。
6. 該当ブロックのinode情報を調べます。
[root@www ~]# debugfs debugfs 1.39 (29-May-2006) debugfs: open /dev/hda3 debugfs: icheck 120 Block Inode number 120 <block not found> debugfs: quit未使用のようです。もし、使用されている場合は、「ncheck ブロック番号」でどのファイルが使用しているか確認する事が出来ます。
7. 該当ブロックを再配置します。
[root@www ~]# dd if=/dev/zero of=/dev/hda3 bs=4096 count=1 seek=120 1+0 records in 1+0 records out 4096 bytes (4.1 kB) copied, 6.4496e-05 seconds, 63.5 MB/s [root@www ~]# sync
8. 再度セルフテストを実行します。1時間程度待ちます。
[root@www ~]# smartctl -t long /dev/hda smartctl version 5.38 [i686-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === 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 61 minutes for test to complete. Test will complete after Mon Jan 18 17:23:24 2010 Use smartctl -X to abort test.
9. 結果を確認します。
[root@www ~]# smartctl -A -l selftest /dev/hda smartctl version 5.38 [i686-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is 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 0x000f 200 200 051 Pre-fail Always - 176 3 Spin_Up_Time 0x0003 167 163 021 Pre-fail Always - 2625 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 9 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x000e 200 200 051 Old_age Always - 0 9 Power_On_Hours 0x0032 079 079 000 Old_age Always - 15489 10 Spin_Retry_Count 0x0012 100 253 051 Old_age Always - 0 11 Calibration_Retry_Count 0x0012 100 253 051 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 9 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 5 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 9 194 Temperature_Celsius 0x0022 118 102 000 Old_age Always - 25 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 253 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 051 Old_age Offline - 4 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% 15485 - # 2 Extended offline Completed: read failure 90% 15484 33769597上記の「197 Current_Pending_Sector」が「0」になっています。
またセルフテスト結果も「Completed without error」となります。
10. 念の為、サーバを再起動します。
[root@www ~]# reboot起動直後にSMARTからメールが送信されない事を確認します。
Bad block HOWTO for smartmontools
0 件のコメント:
コメントを投稿