2010-06-26
PCがHDD容量を誤認識する場合の対処方法
linux |
![]()
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
2010/07/22 追記その1
hdparmの-N オプションの詳細については、
http://manpages.ubuntu.com/manpages/jaunty/man8/hdparm.8.html
あたりをご覧ください。
2010/07/22 追記その2
上記のLinuxを使う方法以外に、
する方法もあるとのことです。
- 235 http://www.google.co.jp/url?sa=t&rct=j&q=hdd 容量認識しない&source=web&cd=9&ved=0CG0QFjAI&url=http://d.hatena.ne.jp/pyopyopyo/20100626/p1&ei=h9yfTtCDHebkmAX67NnUBA&usg=AFQjCNGTQXgEB9V8XpTGJzge
- 172 http://garakutaen.sakura.ne.jp/storage/Cg15to40.html
- 114 http://www.google.co.jp/url?sa=t&rct=j&q=hdd+容量+認識しない&source=web&cd=9&ved=0CGoQFjAI&url=http://d.hatena.ne.jp/pyopyopyo/20100626/p1&ei=PXLGTvahIJDkmAX_p5Ao&usg=AFQjCNGTQXgEB9V8XpTGJzgeLAO
- 102 http://oshiete.goo.ne.jp/qa/6228147.html
- 89 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CD0QFjAA&url=http://d.hatena.ne.jp/pyopyopyo/20100626/p1&ei=0mdnT_-dKYeYmQXprbDmBQ&usg=AFQjCNGTQXgEB9V8XpTGJzgeLAOaN5T94g
- 85 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=3&cts=1331373362764&sqi=2&ved=0CEwQFjAC&url=http://d.hatena.ne.jp/pyopyopyo/20100626/p1&ei=JiVbT9ugNeTImQWYzpS3Dw&usg=AFQjCNGTQXgEB9V8XpTGJzgeLAOaN5T94g&sig2=ZS-budp0L2z5JEwr
- 84 http://search.yahoo.co.jp/search?p=ハードディスク データ 方法&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 83 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/pyopyopyo/20100626/p1&rct=j&q=hdd 容量 認識&ei=wcGwTZOaF4zuvQPM_v2LBw&usg=AFQjCNGTQXgEB9V8XpTGJzgeLAOaN5T94g
- 74 http://www.google.co.jp/url?sa=t&rct=j&q=ハードディスク サイズ 認識&source=web&cd=10&ved=0CHsQFjAJ&url=http://d.hatena.ne.jp/pyopyopyo/20100626/p1&ei=SlqjT
- 73 http://search.yahoo.co.jp/search?p=hdd+容量 認識&search.x=1&fr=top_of3&tid=top_of3&ei=UTF-8

先日購入したHDDがまさにこの記事と同じ現象になってしまいました。1TBなのに33MBしか認識してくれません。
いろいろネットで調べてるんですが
解決に値するページはここ以外ない感じです。
しかし、私はLinuxに関しては全くの初心者ですし
書いてある通りにやっていくしか、なかなかできない状態です。
Kinoppix601日本語版をダウンロードして試そうとしても
hdparmが見つからず、hdparmをダウンロードしてインストールしようにも今度はmakeコマンドが見つからず・・・。
結局puppylinuxにはインストールされてるようで、やっと実行しようとしましたが
今度は-Nのオプションがどう探しても見つかりません。
hdparmコマンドの説明のページを見ても -N オプションについては記載されてません。海外のサイトでも見つけれませんでした。
慣れないLinuxな為か何をやってもうまくいかず
ちょっと途方にくれてる感じです。
こちらはお願いしかできませんが
何か解決に向けてアドバイスなどありましたら教えてくださると大変助かります。
コマンド一つ叩くのも簡単ではありませんね…;;
HDAT2というソフトを使ってHPAエリアの削除→HPA無効化を設定できました。
TestDiskを利用してCHSも設定しなおしてもう大丈夫と思っていたところ
BIOSがCHSを勝手に書き換えていたことが判明。
シリンダ数も最大65535までしか認識できず
結局セクタ数で帳尻合わせして1TBが無事使用できてるようです。
コメント欄汚し、そして一人であたふたして申し訳ありませんでした〜^^;
あとLinuxを使う方法以外にも、HDAT2というソフトを使う方法がある、ということですね。それはそれで貴重な情報です。本文にも追記しておきますね。ありがとうございました。
# hdparm -v 2>&1 | head -2 | tail -1
hdparm - get/set hard disk parameters - version v7.7
# hdparm -V
hdparm v7.7
makeは開発用パッケージを入れないと使えないLinuxが多いのでソフトの構築・再構築する場合には必要に応じて開発パッケージを導入する必要があります。