サーバの一台からアラートを受け取りました。内容はSMARTエラーなのでその対処についてご報告します。
まずは一次対処として応急処置を試みます。
対処(応急処置)
導かれた箇所にddコマンドで「0」を書き込んで問題箇所を初期化するようにします。
※この操作ではddで指定箇所のデータを初期化してしまいますので、くれぐれもコマンド実行にはご注意ください。データ損失があっても保証の限りではありません。
----------------------------------------------
$ sudo dd if=/dev/zero of=/dev/hda3 bs=4096 count=1 seek=42182796
1+0 レコード入力
1+0 レコード出力
4096 バイト (4.1 kB) コピーされました、 0.00101558 秒、 4.0 MB/秒
$ sudo dd if=/dev/zero of=/dev/hda3 bs=4096 count=1 seek=44072277
1+0 レコード入力
1+0 レコード出力
4096 バイト (4.1 kB) コピーされました、 0.000996336 秒、 4.1 MB/秒
----------------------------------------------
再度「smartctl -t long /dev/sdb」を実行してSMARTのテストを実行します。
どうなるものか…
----------------------------------------------
$ sudo smartctl -A -l selftest /dev/sdb
smartctl 6.4 2014-10-07 r4002 [i686-linux-3.16.0-4-686-pae] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== 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 - 2533
3 Spin_Up_Time 0x0027 141 141 021 Pre-fail Always - 3925
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 993
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 085 085 000 Old_age Always - 11642
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 - 535
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 27
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 965
194 Temperature_Celsius 0x0022 094 087 000 Old_age Always - 49
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 4
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 4
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 1
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 5
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% 11641 337464416
# 2 Extended offline Completed: read failure 90% 11640 337464416
# 3 Short offline Completed: read failure 90% 6222 352580271
# 4 Short offline Completed without error 00% 3963 -
----------------------------------------------
ダメでした。
参照元では「197 Current_Pending_Sector」の値「RAW_VALUE」が「0」になったようですが、私の方では変わらず「4」のままでした。なんか間違えてるかな…。
けっきょくエラーの発生源はRAID1の同期によるブランクからブランクへの書き込みエラーが原因なのだから、いくらddでzero化したとしてもダメなものはダメ、ということな気がしてきました。
何はともあれ、ハードディスクはあきらめて交換が必要のようです。
救いなのは
不良セクタにはどのデータも書き込みされていないので当然ですが、RAIDは生きている、というところが救いです。
----------------------------------------------
$ sudo cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[2]
4156416 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdb1[2] sda1[0]
239906816 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk
unused devices: <none>
----------------------------------------------
RAID1としてはまだ生きています。ブランクセクタなのでRAIDとしては正常動作中、ということで動作しているようです。これならHDD交換も容易ですね。
もしまかりまちがって/dev/sdaが突然死したとしても/dev/sdbから環境の復旧は可能です。(不良セクタ箇所はブランクであるため)
一方でエラーは順調に記録されています。
----------------------------------------------
$ sudo cat /var/log/messages | grep smartd
$ sudo cat /var/log/syslog | grep smartd
Apr 14 06:50:34 svr01 smartd[451]: Device: /dev/sdb [SAT], 4 Currently unreadable (pending) sectors
Apr 14 06:50:34 svr01 smartd[451]: Device: /dev/sdb [SAT], 4 Offline uncorrectable sectors
Apr 14 07:20:33 svr01 smartd[451]: Device: /dev/sdb [SAT], 4 Currently unreadable (pending) sectors
Apr 14 07:20:33 svr01 smartd[451]: Device: /dev/sdb [SAT], 4 Offline uncorrectable sectors
Apr 14 07:20:33 svr01 smartd[451]: Device: /dev/sdb [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 95 to 96
Apr 14 11:20:33 svr01 smartd[451]: Device: /dev/sdb [SAT], Self-Test Log error count increased from 1 to 2
Apr 14 11:20:33 svr01 smartd[451]: Sending warning via /usr/share/smartmontools/smartd-runner to root ...
Apr 14 11:20:33 svr01 smartd[451]: Warning via /usr/share/smartmontools/smartd-runner to root: successful
Apr 14 12:20:33 svr01 smartd[451]: Device: /dev/sda [SAT], SMART Usage Attribute: 9 Power_On_Hours changed from 88 to 87
Apr 14 12:50:33 svr01 smartd[451]: Device: /dev/sdb [SAT], Self-Test Log error count increased from 2 to 3
----------------------------------------------
「Self-Test Log error count increased from 2 to 3」の記録が順調に増えていってるので、交換は早めに実施しないといけませんね。
ディスクを交換
準備して後日、ディスクを交換することにしました。