仙石浩明の日記

2008年1月17日

1/9 以降、Windows VISTA 搭載 レッツノートのハードディスクが突然死する可能性がある hatena_b

先日 1/10 (運悪く出張初日だった *_*) に、 レッツノート CF-R6MWVAJP のハードディスク・ドライブ (以下、HDD と略記) が 回転しなくなり (スピン・アップしない) 往生した。 電源を入れても、 BIOS が

Phoenix TrustedCore(tm) NB
Copyright 1985-2004 Phoenix Technologies Ltd.
All Rights Reserved

Copyright (C) Matsushita Electric Industrial Co.,Ltd. 2007
BIOS Version 1.00-L13

CPU = 1 Processors Detected, Cores per Processor = 2
Intel(R) Core(TM) Duo CPU      U2400  @ 1.06GHz
2048MシステムRAMテスト完了。
システムBIOSがシャドウされました。
ビデオBIOSがシャドウされました。
ハードディスク0:
マウスが初期化されました。
エラー
0200: ハードディスクエラーです。 0

<F2>キーを押すとセットアップを起動します。

というメッセージをビープ音とともに出力して止まってしまう。 HDD が壊れたのかと思い、 BIOS で HDD を起動ドライブから外して USB メモリからブートを試みたが、 起動ドライブから外しても内蔵 HDD に問題があると先に進めないようだ。

HDD を完全に取り除いてしまえば USB メモリからブートするらしいが、 このような中途半端な死にかただとスピン・アップ待ちになってしまって、 そこから先に進めなくなる (後で知ったのだが、 実は上記画面で止まっているとき <F1> を押すと、 ブートを継続できて USB メモリ等からブートできる)。

昔、HDD のスピンドル (spindle) が固着して、 スピン・アップ (spin up) しなくなる症状に見舞われたことがあったが、 今回はつい数分前まで全く正常に動いていた HDD が、 突然スピン・アップしなくなったのであって、 あからさまに症状が異なるように思われた。 しかもごく短い距離を移動するためにレッツ・ノートを閉じただけなので、 途中衝撃なども一切与えていない。 機械的な障害ではないように思われた。

とはいえ、 いちおー無駄な抵抗は試みた (^^;)。 すなわち、 HDD が回転しなくなったときに、 HDD を振り回すことによってトルクを与える手法や、 あるいは結露等で回路に異常がおきたときに、 結露を霧散させる手法 (平たく言うとしばらく放置しただけ ;) を試したのだが、 HDD が回転音を発することは無かった。 出張初日で、 代替マシンの調達もままならず、 Advanced/W-ZERO3[es] に USB キーボードをつないで急場をしのいだものの、 えらく難儀した。

- o -

結論から言うと、 想像通りハードウェア的にはなんら故障していなかった。 単に HDD が 「電源投入時にスタンバイ・モードに入る (power-on in standby)」 状態になっていただけだった。

1/9 に行なわれた Windows Update KB943899 が原因らしいです。 おそらくこの Update のバグで、 HDD に power-on in standby を有効にする命令が 送られてしまうことがあるのでしょう。 私の CF-R6 は 1/10 に発症しましたが、 他にも同様の発症例が多数あるとか。

例えば、 Linux の hdparm コマンドのマニュアルには、 次のような記述がある。

NAME
    hdparm - get/set hard disk parameters

SYNOPSIS
    hdparm [ flags ] [device] ..

OPTIONS

    -s   Enable/disable  the power-on in standby feature, if supported by
         the drive.  VERY DANGEROUS.  Do not use  unless  you  are  abso-
         lutely  certain  that both the system BIOS (or firmware) and the
         operating system kernel (Linux >= 2.6.22)  support  probing  for
         drives  that  use this feature.  When enabled, the drive is pow-
         ered-up in the standby mode to allow the controller to  sequence
         the  spin-up of devices, reducing the instantaneous current draw
         burden when many drives share a power supply.

VERY DANGEROUS」と書いてある通り、 HDD がひとたびこの「power-on in standby」モードになってしまうと、 電源を投入してもスピン・アップしなくなる (スタンバイ状態になる)。 HDD が沢山あるサーバなどで、 全ディスクが一斉に回転を始めると、 突入電流が電源の許容範囲を超えてしまったりするわけで、 それを回避するためのモードらしい。 つまり、 電源を投入したあと、 おもむろに HDD を一台づつスピン・アップしていくことにより、 回転開始にともなう突入電流を分散させることができるというわけ。

実験してみる (非常に危険なので何をやっているか完全に理解するまでは 真似しないでください):

# hdparm -s1 /dev/sda

/dev/sda:
 setting power-up in standby to 1 (on)
# hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
        Model Number:       Hitachi HTS541612J9SA00                 
        Serial Number:      SBXXXXXXXXXXXX
        Firmware Revision:  SBDOC70P
Standards:
        Used: ATA/ATAPI-7 T13 1532D revision 1 
        Supported: 7 6 5 4 
Configuration:
        Logical                max        current
        cylinders        16383        16383
        heads                16        16
        sectors/track        63        63
        --
        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  234441648
        LBA48  user addressable sectors:  234441648
        device size with M = 1024*1024:      114473 MBytes
        device size with M = 1000*1000:      120034 MBytes (120 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Vendor, no device specific minimum
        R/W multiple sector transfer: Max = 16        Current = 16
        Advanced power management level: 128 (0x80)
        Recommended acoustic management value: 128, current value: 254
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled        Supported:
           *        SMART feature set
           *        Security Mode feature set
           *        Power Management feature set
           *        Write cache
           *        Look-ahead
           *        Host Protected Area feature set
           *        WRITE_BUFFER command
           *        READ_BUFFER command
           *        NOP cmd
           *        DOWNLOAD_MICROCODE
           *        Advanced Power Management feature set
           *        Power-Up In Standby feature set
           *        SET_FEATURES required to spinup after power up
                    SET_MAX security extension
                    Automatic Acoustic Management feature set
           *        48-bit Address feature set
           *        Device Configuration Overlay feature set
           *        Mandatory FLUSH_CACHE
           *        FLUSH_CACHE_EXT
           *        SMART error logging
           *        SMART self-test
           *        General Purpose Logging feature set
           *        WRITE_{DMA|MULTIPLE}_FUA_EXT
           *        64-bit World wide name
           *        IDLE_IMMEDIATE with UNLOAD
           *        SATA-I signaling speed (1.5Gb/s)
           *        Native Command Queueing (NCQ)
           *        Host-initiated interface power management
           *        Phy event counters
                    Non-Zero buffer offsets in DMA Setup FIS
                    DMA Setup Auto-Activate optimization
                    Device-initiated interface power management
                    In-order data delivery
           *        Software settings preservation
Security: 
        Master password revision code = 2007
                supported
                enabled
        not        locked
                frozen
        not        expired: security count
        not        supported: enhanced erase
        Security level maximum
        72min for SECURITY ERASE UNIT. 
Checksum: correct
# 

「Power-Up In Standby feature set」が有効になっていることが分かる。 この状態で再起動する (HDD の電源をいったん切る) と、 冒頭に引用した「0200: ハードディスクエラーです。 0」を表示して止まってしまう。 <F1> を押して HDD 以外から起動させると、

[    0.000000] Linux version 2.6.23.12 ([email protected]) (gcc version 4.1.2) #1 SMP Mon Dec 24 09:50:41 JST 2007
        ...
[   72.479025] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[   72.479031] ata3.00: irq_stat 0x40000001
[   72.479044] ata3.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 cdb 0x0 data 4096 in
[   72.479047]          res 51/04:08:00:00:00/00:00:00:00:00/e0 Emask 0x1 (device error)
[   72.481033] ata3.00: configured for UDMA/33
[   72.481043] sd 2:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
[   72.481051] sd 2:0:0:0: [sda] Sense Key : Aborted Command [current] [descriptor]
[   72.481060] Descriptor sense data with sense descriptors (in hex):
[   72.481066]         72 0b 00 00 00 00 00 0c 00 0a 80 00 00 00 00 00 
[   72.481082]         00 00 00 00 
[   72.481089] sd 2:0:0:0: [sda] Add. Sense: No additional sense information
[   72.481099] end_request: I/O error, dev sda, sector 0
[   72.481114] ata3: EH complete
[   72.481738] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   72.481794] sd 2:0:0:0: [sda] 234441648 512-byte hardware sectors (120034 MB)
[   72.481818] sd 2:0:0:0: [sda] Write Protect is off
[   72.481824] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   72.481861] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

何度も HDD へリクエストを再送した末、「I/O error」になる。 Linux 2.6.22 以降の場合、 I/O error にはなるものの HDD デバイス自体は認識しているので、 hdparm コマンドからコントロールすることができる。

逆に言うと、古いカーネルだとデバイス認識も行なわれないので、 hdparm コマンドすら使えなくなってしまい 以下の方法では復旧できない。 現時点では Knoppix などの LiveCD の多くは、 2.6.21 以前のカーネルのまま (例えば Knoppix v5.1.1 は 2.6.19) なので注意。

hdparm を使って「Power-Up In Standby feature」を無効にする:

# hdparm -I /dev/sda | grep Power-Up
           *        Power-Up In Standby feature set
# hdparm -s0 /dev/sda

/dev/sda:
 setting power-up in standby to 0 (off)
# hdparm -I /dev/sda | grep Power-Up
                    Power-Up In Standby feature set
# 

これで、電源投入時に HDD は自動的に回転を始めるようになる。
再起動すれば HDD から正常にブートする。

Filed under: ハードウェアの認識と制御 — hiroaki_sengoku @ 08:59

9 Comments

  1. Windows VISTA 搭載 レッツノートのハードディスクが突然死する可能性がある

    Comment by 素晴しき Gadget 達 — 2008年1月17日 @ 19:25

  2. Fedora 8 のライブCDのカーネルが2.6.23だったのでhdparmコマンドを試してみたら、ハードディスク復活して再起動できました!!
    ありがとうございました。
    一時はどうなることかと思いました。
    たいへん助かりました。_o_
    ところでWindows Update KB943899 はアンインストールしたほうがいいんでしょうか…
    どうされています?

    Comment by 通りすがり — 2008年1月17日 @ 22:53

  3. KANOTIX2007 RC7を外付けドライブから起動(F1キーにて起動先切り替え)にて同様に救われました。
    最初、hdparmが見つからなくてちょっと焦りましたが、/KANOTIX/sbin/下にありました。
    前夜作ったデータでプレゼンしようと思った訳ですが、ちょっと蓋を閉じてスリープした為の「事故」でした。プレゼンは結局散々でしたが、ひとまずデータ消去もなく復旧できましたのが不幸中の幸い。
    と言う事で、貴重な情報感謝致します。

    Comment by 助かりました — 2008年1月18日 @ 02:28

  4. Windows VISTA 用の更新プログラム KB943899 が原因で突然死したハードディスクを復旧させる方法

    昨日書いた
    「1/9 以降、Windows VISTA 搭載 レッツノートのハードディスクが突然死する可能性がある
    」を大変多くの方に読んで頂けた。
    頂いたコメントで目立ったのが、
    復旧方法が万人向けではない、という点。
    確かに Linux 2.6.22 以上の LiveCD を自前で調達しな…

    Comment by 仙石浩明の日記 — 2008年1月18日 @ 09:40

  5. どのくらいの頻度でハードディスクが突然死するか興味があったんで、しばらく KB943899 をインストールしたままにしていたのですが、一週間で三回も死んだので、今はアンインストールしています。三回とも、バッテリ駆動で省電力モードでした。
    KB943899 には、ハードディスクが死ぬ、という致命的な問題のほか、バッテリ駆動で省電力モードだとディスプレイがちらつく、という問題もありますね。
    いずれもバッテリ駆動が関係しているわけで、バグ発症の引き金になっているのかもしれません。

    Comment by 仙石浩明 — 2008年1月18日 @ 16:09

  6. 1/9 以降 ハードディスクが突然死する可能性がある

    仙石浩明の日記さんの記事。
    Windows Update KB943899 原因でHDDがスピンアップしなくなることがあるそうです。
    レッツノートで起こったそうですが、??.

    Comment by PCとほほ日記 — 2008年1月20日 @ 16:47

  7. 更新プログラムKB943899は危険!?

    hortenseさんの「PCとほほ日記」経由の情報です。 1月9日にWindow

    Comment by プログラマーになりたい! — 2008年1月20日 @ 22:16

  8. KB943899とCF-R6のBIOS更新

    なんだか、CF-R6M/CF-R6Aシリーズご使用のお客様へのご案内と言うのが出ていました。
    対象は色つきの機種だけ。
    レッツノート 店頭販売モデル
    CF-R6MW4AJR
    CF-R6AW1BJR、CF-R6AW1PJR
    レッツ

    Comment by 黒翼猫のコンピュータ日記 — 2008年1月22日 @ 02:32

  9. Let’s note R6 でのハードディスク不具合の原因

    やはりKB943899が原因だった。 まず、仙石氏のブログのエントリ「1/9 以

    Comment by ぽこログ — 2008年1月22日 @ 02:44

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.