HDD関連のトラブルとして、HDD容量が正しく認識されない、という類の事故があります。たとえば
- 新品の1TBのHDDなのに、BIOSとかOSは33MBのHDDとして認識している。初期不良?相性問題?
- 普段使っているHDDを外して、別PCにつないだら、HDD容量を正しく認識しなくなった。HDDこわれた?
- いつも使っているHDDが突然認識されなくなった。BIOSの画面で確認するとHDD容量が大幅に減っているように見える。データ消失?
といったものです。
この手のトラブルは、実は簡単に復旧できる場合が多いです。知ってて損は無い情報なので、以下原因と復旧方法を説明します。
HPA (Hidden Protected Area)
HDDにはHPAと呼ばれる、隠し領域*1が設定できます。HPAとして設定した領域は、BIOSから無視され、OSからもアクセスすることはできません。通常の使い方だと、例えばノートPCのリカバリ用のファイルを置く領域がHPAになっていたりします。
そして
といったキッカケでHPAが勝手に設定されると、前述の"HDD容量が正しく認識されない系"のトラブルが発生します。
このような場合は、以下の手順で HPA を無効にするだけで復旧できます。
Step-1) HPA領域の確認
KNOPPIX等の適当なLinuxでPCをブートして、 hdparm コマンドで HPA の設定状況を調べます。
$ sudo hdparm -N /dev/sdb /dev/sdb: max sectors = 65134/1953525168, HPA is enabled
このように "HPA is enabled"とでれば HPA が有効になっていて、隠し領域が設定されています。上記の例だと、1953525168セクタ中 65134セクタだけが利用できる状態で、残りのセクタはOSからも BIOSからも見えません。
HPAが設定されると、 fdisk コマンドの出力も、以下のようになります。
$ LANG=C sudo /sbin/fdisk -l /dev/sdb Disk /dev/sdb: 33 MB, 33348608 bytes 255 heads, 63 sectors/track, 4 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: ******** Device Boot Start End Blocks Id System /dev/sdb1 1 60000 481949968+ 83 Linux Partition 1 has different physical/logical endings: phys=(1023, 254, 63) logical=(59999, 254, 63) /dev/sdb2 60001 121601 494810032+ 83 Linux Partition 2 has different physical/logical beginnings (non-Linux?): phys=(1023, 254, 63) logical=(60000, 0, 1) Partition 2 has different physical/logical endings: phys=(1023, 254, 63) logical=(121600, 254, 63)
この例だと、HDD自体は1TBあるのですが、HPAが設定されているため、先頭の33MBしか見えない状況になっています。
この場合は HPAの設定を削除するだけで、正常な状態に戻ります。
Step-2) HPAの削除
hdparamコマンドいっぱつです。これで、HPAが無効になります。
$ sudo hdparm -N -p1953525168 /dev/sdb/dev/sdb: setting max visible sectors to 1953525168 (permanent) max sectors = 1953525168/1953525168, HPA is disabled
あとはPCを再起動するだけです。簡単ですね。
2010/07/22 追記その1
hdparmの-N オプションの詳細については、
http://manpages.ubuntu.com/manpages/jaunty/man8/hdparm.8.html
あたりをご覧ください。
2010/07/22 追記その2
上記のLinuxを使う方法以外に、
HDAT2というソフトを使ってHPAエリアの削除→HPA無効化を設定
する方法もあるとのことです。
コメントをくださった、まさむねさん、ありがとうございました。