読者です 読者をやめる 読者になる 読者になる

treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

(2/3)smartdからの手紙「エラーの対処」

Linux サーバ トラブルシューティング

サーバの一台からアラートを受け取りました。内容は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のテストを実行します。
どうなるものか…

f:id:treedown:20160416001005p:plain

----------------------------------------------
$ 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」の記録が順調に増えていってるので、交換は早めに実施しないといけませんね。

ディスクを交換

準備して後日、ディスクを交換することにしました。