_ [vdr] 続・HDD 崩壊の前兆?

しばらく落ち着いたと思っていたら、

Feb  6 06:25:12 XXXXXXXX kernel: hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Feb  6 06:25:12 XXXXXXXX kernel: hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=237641434, sector=237641271
Feb  6 06:25:12 XXXXXXXX kernel: ide: failed opcode was: unknown
Feb  6 06:25:12 XXXXXXXX kernel: end_request: I/O error, dev hda, sector 237641271

また出ていた。さすがに対処しないとやばそうだ。

_ [comp] smartmontools

いろいろ検索していると Nano domain - diary: HDD破損ハードディスクのS.M.A.R.T.情報を表示するには という記事を発見。紹介されている smartmontools を早速導入。

# smartctl -a /dev/hda
        :                              
=== START OF INFORMATION SECTION ===
Model Family:     Maxtor DiamondMax Plus 9 family
Device Model:     Maxtor 6Y120P0
Serial Number:    XXXXXXXX    
Firmware Version: YAR41BW0    
User Capacity:    122,942,324,736 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7           
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 0
Local Time is:    Tue Feb  7 14:51:22 2006 JST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled    
                              
SMART Disabled. Use option -s with argument 'on' to enable it.

まずこんな感じ。SMART Disabled だそうなので有効にする。

# smartctl -s on /dev/hda
        :
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

SMART を有効にした。エラーログを見てみる。

# smartctl -l error /dev/hda
        :
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 25 (device log contains only the most recent five errors)
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 25 occurred at disk power-on lifetime: 111 hours (4 days + 15 hours)
  When the command that caused the error occurred, the device was in an unknown state.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 4d 37 1e 2a ee  Error: UNC 77 sectors at LBA = 0x0e2a1e37 = 237641271

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  c8 00 f0 37 1e 2a ee 08   2d+22:20:48.128  READ DMA
  c8 00 f8 2f 1e 2a ee 08   2d+22:20:47.120  READ DMA
  c8 00 00 27 1e 2a ee 08   2d+22:20:46.096  READ DMA
  c8 00 00 27 1d 2a ee 08   2d+22:20:46.080  READ DMA
  c8 00 00 27 1c 2a ee 08   2d+22:20:46.064  READ DMA
        :

に記録されたセクタで UNC (UncorrectableError) と記録されている。ショートテストをしてみる。

# smartctl -t short /dev/hda
        :
=== 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 Tue Feb  7 15:14:49 2006

Use smartctl -X to abort test.

テストに2分かかるようなので待つ。結果を表示。

# smartctl -l selftest /dev/hda
        :
=== 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%       142         -

ショートテストではエラーは検出されなかったけど、やばそうなことに変わりはない。

_ [comp] dd でセクタ調査

最近記録されてるやばそうなセクタを調べてみる。

zcat /var/log/syslog*gz | grep "dev hda" | awk '{print $12}' | sort -n > /tmp/sectors

for i in `cat /tmp/sectors`
dd if=/dev/hda of=/tmp/dd-${i}.img bs=512 skip=${i} count=1

これで出てきた /tmp/dd-*.img を見てみると、/var/lib/apt/lists/ 以下のファイルと思しき断片が大量に出てきた。そういや apt-get update を実行した時間と syslog にエラーが記録された時間が一致する。他にも謎のバイナリデータの断片が出てきたけど、正体はわからず。 ひとまず /home ではないようなので安心したけど、早めに HDD を換装しなくては。

_ [debian] gkrellm 2.2.7-8

昨日の問題だけど、即 FIX された。 2.2.7-7vd1 を削除。

_ [debian] xft 2.1.8.2-3

pkg-config xft が freetype2 のパスを吐き出してくれない問題が FIX された。

_ [debian] firefox 1.5.dfsg+1.5.0.1-1vd1

を当てて作成。 bugzilla-org_bug-316636_nsTableFrame.cpp-3.622vs3.623.patch (nsTableFrame.cpp: 3.622 vs. 3.623) は不要になったけど、続・MozFx 1.5 が落ちるページBugzilla ORG 316636 は未だに見えない。 また、Pango サポートがデフォルトで有効になった。