IDE ディスク容量の壁について

■ディスクの認識容量の壁
■ハードディスク認識の壁ができた経緯
 PCにディスクを接続する際には,IDEまたはSCSIインターフェイスを用いての 接続を行うのが一般的です.また,現在ディスクはIDEディスクの方がコスト パフォーマンスが良いため,サーバー等の高いパフォーマンスを要求する用途 以外は,IDEディスクを使用するのが一般的です.

 しかし,IDEはその誕生の経緯より,あまり大容量のディスクを搭載すること を考慮して仕様が策定されていませんでした.そのため,過去にBIOS 上で認 識可能なディスク容量に制限がいくつか存在していました.仕様策定当初は 『これだけ大容量であれば大丈夫だろう』と,思われていたものが,予想を 遥かに越えるスピードで大容量のディスクが市場に出回り,一般に使用される ようになってしまったからです.

■ディスクのジオメトリ
 BIOSは,『ディスクジオメトリ』と呼ばれる情報をIDEディスクから取得し, その情報を元にディスクの容量やタイプを認識して,ディスクへのアクセスを 行います.このジオメトリは,C/H/S とも言われ,以下のような値を表して います.

略称正式名称IDEの上限BIOSの上限実際の制限(少ない方)
Cシリンダ数65536(16bit)1024(10bit)1024
Hヘッド数16(4bit)255(8bit)16
Sセクタ数255 (8bit)63(6bit)63

 ディスクの構造や仕組みに関しては,JF のハードディスクドライブの基礎知識を参照すると良いでしょう.

■504MBの壁
 最も初期に存在した容量認識の壁は,504MBの壁です.これは,C/H/S が BIOS,IDEのそれぞれの値の上限である,1024/16/63 の値を取ったときの 容量です.つまり,

    1024*16*63*512(1セクタの容量) = 528,482,305 [Byte] = 504 [MB]
から導き出される容量です.

 この壁を越えるために,BIOS側でのIDEディスクの認識に際し,SCSIコントロー ラで使用されているLBAアドレッシングという手法が採り入れられました.LBA アドレッシングとは,ディスクメディア上の最内周と最外周のセクタ数が異な ることを利用し,全てのセクタに対して通し番号を付けて管理しようという手 法です.この手法を用いると,最大の論理的なディスクの容量は 2[TB] になり ます.

 98年春以前のPCでは,この壁を持つものが存在します.

■2GB,4GBの壁
 LBAアドレッシングを利用することにより,504MBの壁は越えることが出来まし た.しかし,BIOSによっては,シリンダ数の制約を仕様上内部的に持っている 場合がありました.そのため,このような問題のある BIOS を搭載している場合, 2GB,4GBの壁を持っている場合があります.私がこの問題に直面したのは 富士通製 DeskPower 575-SX(Pentium 75MHzを搭載) で,この機種で はディスクのシリンダ数が 4096 以下でなければ使用できませんでした.

 また,MS-DOS 4.0 〜Windows95 の場合は,FAT16 を使用してパーティションを作成する場合,1パーティション辺り 2[GB]以下にしなければならないという壁が存在します.Windows95 OSR2 以降の場合,FAT32 や NTFS 等を使用することによって,このパーティション辺りの容量の壁を越えることができます.

■8GBの壁
 DOSの頃に策定された仕様で,BIOSを経由してディスクにアクセスする際には, INT13という割り込みを利用して来ました.しかし,このINT13では,C/H/S アドレッシング方式しか利用できません.つまり,BIOSの上限であるパラメータしか 利用できないわけです.

この容量は,

    1024*255*63*512=8,422,686,720[Byte]=7.8[GB]
 であり,8[GB]の壁と呼ばれています.

 この8GBの壁は,『拡張INT13』と呼ばれるディスクアクセス用の割り込み サービスをBIOSに実装することにより,クリアすることが可能です.この拡張 INT13 とは,INT13 においてLBAアドレッシングを利用可能にし,137.4GB までのディスクを利用可能にしたものです.

 ただし,8GBの壁を越えることが可能なのは,LBA および拡張 INT13 を サポートしたBIOS,OSとハードディスクを利用した場合のみです.

 私がこれまで使用してきたものでは, Asus TX97-XE 等がこれに該当し ましたが,BIOS を update することにより対応が可能です.

■32GBの壁
 PC用の M/B で広く使用されている AWARD BIOS にはバグが存在し,32GB 以上のディスクは使用できないという問題がありました.この問題はAWARD BIOS 4.5x に存在します.

 2000年にはこの問題が明らかになり,AWARDの問題対策済みのBIOSを各 M/B メーカーが提供しています.基本的にはメーカーから提供されている BIOS の update によりこの問題は解決します.しかし,古いM/B の場合,メーカー サポートが打ち切りになっており,対応不可能な場合もありますが.

■64GBの壁
 Windows 98までのOSでは FDISKの問題により,64GBを越えるディスクでの パーティション分けが出来ません. 対策を施したFDISKプログラムをMicrosoftからダウンロードしてくる か,ディスク全てを 1つのパーティションとして(100%使用として パーティションを切る)使用しなくてはなりません.

 また,搭載されているBIOSの問題により,BIOS側でここに壁がある場合があり ます.BKi810 の BIOS には,どうもここに壁があるようです.

['01/08/19] BKi810 v3.3 の場合は,BIOS のupgradeによって解決することが可能です.また,BIOSに制限がある場合でも,メーカー提供のソフトで対応可能です.詳しくは,BKi810 で 60GBよりも大容量のディスクを使うを参照してください

■136.9GB,137.4GB,2TBの壁
 この壁に当たるのはまだ先のこと…と,思っていても,案外すぐにそのときが やって来るかもしれません.それぞれ,E-IDEをCHSでアクセスした場合の上限, EーIDEをLBA(28bit)でアクセスした場合の上限,そして32bit セクタアドレス を使用しているOSの上限です.


['02/02/10 追記]  あっと言う間にそのときは来ました.MAXTORから160GBディスクが発表され たこともあり,IDE仕様の137GBの壁超えの必要が出てきました.

 これを受け,MAXTOR,Compaq,Microsoft,VIAはLBA(Logical Block Addresses)を従来の28bitから48bitに拡張するBigDrive技術を 発表しました (参考リンク:Maxtor Big Drives の white paper). この方式を採用することにより,144PB(Pは「ペタ」と読み, 1000Tを表す)までのディスク容量の拡張が可能になります.

 しかし,BigDrive技術を利用するには,コントローラ,BIOS,ドライバ, OS,ソフト等の対応が必要な場合があります.

 現在('02/02/10)のところ,ハードウエアとしては Promise製 FastTRAK Ultra133TX2/TX2000,VIA製サウスブリッジの VT8233A,IAA(後述)適用後の Intel chipset(i845/i850のみ?) が正式対応を謳っています.

 ソフト的な話としては,Intelが Intel Application Acceleratorとして リリースしたものを導入することにより,Intel chipset の i845,i850等でも利用することが可能なようです.また,OS側の対応に関して は,Windows XPに関して,Microsoftの こちらのページで言及されています.

 実際に自分で試したわけでは無いので,何とも歯切れの悪い解説しか できませんが,どのような環境でもこの技術を利用し,137GB以上の ディスクを利用可能であるというわけではないということは確かなようです.

 IAA は i810 でも導入可能となっています. しかし,実際に i810 で IAA を導入した場合,BigDrive が利用可能 になるかは知りません.やはりきちんとBIOSが対応したM/Bを使うに越し たことは無いと思います.

■容量の壁を越える一般的な方法
■BIOS の update
 8GBの壁,32GBの壁等のBIOSが原因の壁に関しては,メーカーの提供する BIOS の update を行うことにより,問題は解決可能です.詳しくは,M/Bの製造 メーカーの Web ページを参照し,BIOS に関する情報や, updater が無いかを 探してみてください.

 しかし,諸々の事情により,メーカーによってはこれらの問題の対策済みのBIOS を提供していない場合もあります.このような場合には,ユーザー側で何らかの 対応策をとらなければなりません.

■SCSI変換器を使用しての接続
 先に述べたように,ディスクのSCSI接続の場合はLBAアドレッシングを行うた め,大容量のディスクを接続した場合に問題が発生しにくくなっています.

 ここ数年,IDEディスクに小型のアダプタを接続することにより,インターフェ イスを SCSI に変換して接続することが可能な装置が販売されはじめていま す.私は BIOS に32GB の壁の存在した(現在は Asus から対応済 BIOS が 公開されています)Asus P5A + Tekram DC390U という構成で,センチュリー製 のCHB35INT を使用して 40GBのディスクを接続しています.CHB35INTの初期の版では 32GB の壁が存在したのですが,ファームウエアのupdateにより,この壁は解決し ます.OS側からは普通のSCSIディスクとして認識され,パフォーマンスその他に関し ても問題なく利用できています.

['03/07/28] 追記
CHB35INTは終息商品です.また,大容量ディスクには対応していない ようです(64GBまで? 未確認).

現在 SCSI 変換器としては, ACARD TechnologySCSI IDE ブリッジ製品ラインナップ がメジャーなようです. 私はAEC-7720U を使用していますが, ファームウエアのダウンロードページからファームウエアを落とし,updateすることにより,BigDrive にも対応します(Asus Terminator TUでの使用例は こちらこちら). パフォーマンスもまずまずな他,変換先のSCSIは UltraSCSI(20MB/sec)〜LVD SCSI (160MB/sec)までの各製品がラインナップされているほか,IDE側も通常のパラレル IDE だけでなく,シリアルIDEに対応した製品もあります.

■拡張カードを使用
 PCIバスに空きのあるマシンで使用する場合は,Promise,I Willのようなメー カーから出ている,Ultra ATA I/F カードを使用するという方法もあります. これらのカードを利用する場合,ディスクの認識に使用される BIOS はカード上 の BIOS となるため,M/B上の BIOS が問題を抱えていたとしても,大容量の ディスクを利用することができるようになります.

 なお,カード上の BIOS が場合によっては容量認識の壁を抱えている場合も ありますが,大抵の場合はカード側のファームウエアのupdateで対応可能です.

 なお,FastTrack 66/100 のような,IDE RAID コントローラカードを使用し, 同様のことを行うことも可能です.このようなカードの場合,RAID 1に設定する ことにより,1台,または複数台の IDE ディスクを1台のディスクとして PC に認識 させることが可能です.

■パーティション情報を別のマシンで編集
 OS起動時に既にディスク上にパーティション情報が書き込まれている場合,OS によってはBIOSから渡されるジオメトリを参照せず,そのパーティション情報 を参照することによって得られるデータを使用します.そのため,容量認識の壁 が無い BIOS を搭載しているマシンにディスクを一時的に接続し,パーティショ ン分けをしてからBIOSに問題のあるマシンに接続することにより,問題なく使 用することができるようになる場合があります.

 ただし,この方法が利用できるのは,ディスクを接続して起動した際に問題な く起動し,かつ BIOS 上で容量のみ誤認識している場合のみです.また,OSに よっては挙動が異なる場合もあり,このような場合は利用できません.

 私が試した範囲では,Libretto50,Let's note mini 等でこの方法が利用で きます.

■ディスクメーカーの提供するソフトを使用しての利用
 旧式のマシンを末永く大事に使用する米国らしく,IBM,Maxtor,Westan Digital,Quantum,Seagate 等の米国のディスクメーカーでは,BIOS上に壁の存 在するマシンで,大容量のディスクを使用するためのソフトウエアが無償で公開 されています.

 これらソフトはマシン起動後読み込まれ(正確には MBR が読み込まれた後で 読み込まれる),M/BのBIOS上のINT13を乗っ取る形で使用されます.そのため, INT13,または拡張INT13を普通に使用するOSや,これらソフトが稼働しているか を確認し,きちんとハンドリングするOS(Linux等)においては,透過的に利用 可能です.

 ただし,Windows2000のような,BIOSを介さずに直接ディスクアクセスを行う OSの場合,この方法は基本的に利用できません.また,一般にこのようなソフト は特殊なことを行っているため,ソフト固有の問題や,環境によって発生する 細かな問題などが存在する可能性があります.

 主要各メーカのソフトダウンロード元や詳しい情報に関しては,以下のURLを参照 して下さい.

ディスクメーカー名 ソフト名,ダウンロード元
Maxtor(Seagateに買収されました) MaxBlast
MaxBlast, MaxBlast Plus
Quantum
(Maxtor に買収されました→MaxtorがSeagateに買収されました)
この辺り
Disk Manager
IBM(ディスク部門はHitachi Global Storage Tech. に移管) Disk Manager に関する欄を参照のこと
Seagate DiscWizard
Western Digital Data Lifeguard Tools

['03/07/28] IBM Disk Manager のリンク先修正

■起動中にマシンがフリーズする場合の対応策
 BIOSに問題が存在している場合でも,大抵の場合はディスクの容量を少なく誤 認識するのみで起動は可能です.しかし,BIOSによっては,ディスクを認識し ようとした時点でフリーズし,OSが起動しようとするブートシーケンスまで進めない 場合があります.

 このような場合は,ディスク側に用意されている『容量制限ジャンパ』 (capacity limitation jumper)を設定し,起動するようにします.このジャン パは,ディスクがBIOS側に通知するジオメトリを,ディスク本来のディスクのCHS値 ではなく,問題が発生しない値を返すようにするものです.

 このジャンパを設定することにより,たとえば Maxtor 製 80GB のディスクでは, BKi810で使用すると,BIOS上では 32GB のディスクとして認識されます.そして そのまま 32GB のディスクとして問題なく使用可能です.また,上記のディスク メーカーから提供されているソフトと併用することにより,BIOSでの容量認識を パスさせ,起動後にはディスク本来の実容量として使用することが可能になります.

 なお,ジャンパピンの設定に関しては,ディスクに添付されているマニュアル, またはメーカーのWebページを参照して下さい.

■Windows2000,XPを使用する場合
 使用したい大容量のディスクを接続した際に起動中にマシンがフリーズする ような状態で,かつWindows 2000を使用したい場合,上記の『容量制限 ジャンパ』とメーカー提供のソフトを使用して,ディスクの実容量で使用することは できません.これは,Windows 2000 が,メーカー提供のソフトが動作していること を認識せず,かつ,BIOS を介さずに直接ディスクアクセスをすることから発生します.

 このような場合は,M/B メーカーが提供する対策済みの BIOS の update を 行うか,それが無い場合,『容量制限ジャンパ』を使用し,実用量よりも少ない 容量のディスクとして使用するしかありません.

[02/06/21] 補足

 上記の事柄は,BIOS で対応していない大容量ディスクを、Windows2000 の ブートディスクとして使用する場合です.ジャンパ設定によりシリンダ制限をし, 増設ディスクとして接続した場合は問題なく利用できるというご指摘を,メール で頂きました.

[03/01/06] 追記

 追記するのをすっかり忘れておりましたが,Windows 2000, Windows XP はサービスパック (それぞれSP3,SP1)を適用することにより,LBA48 に正式対応します.詳しくは以下の Microsoft のページを参照してください.

 既に OS インストール済みの場合,これらサービスパックを適用した後にレジストリを 変更することにより,この機能が利用可能になります.私は試していませんが,BIOS が LBA48 に対応していれば,サービスパック適用済み(かつLBA48を有効にしたもの)の インストールCDを用意すれば,おそらく問題なく137GB以上の大容量ディスクをインストール ディスクとして利用できると思います.

 仮に BIOS LBA48 に対応していない場合でも,Microsoft のドキュメントを読みますと, パーティション分割を行ってブートイメージを137GB以前の領域に持ってくることにより, 全ての領域を利用できるようです.

['03/07/28]補足
PC は起動時に,まずは BIOS を介してディスクをアクセスし,その 後でOSのブートローダーを読み,そしてブートローダーが OS が起動する ようになっています.そのため,OSがブートする直前までは BIOS を介して ディスクにアクセスする必要があります.

LBA48 非対応の BIOS の場合は 137GB 以前の領域までしかアクセスできない ため,仮にディスク上に LBA48 対応の OS がインストールされていたと しても,137GB以降の部分にOS本体が入っている場合は起動できないことに なります(分かりやすく説明するために,『OS本体』という言葉を大雑把に 使っています).

つまり,BIOS が LBA48 に対応していない場合には,137GB 以前の領域に パーティションを切り,そこに LBA48 に対応したOSを入れると良いだろうと いうことです.

 ただし,特定の条件が重なると,データが破壊される 可能性もあるようですので,きちんとドキュメントを読んでから作業を行った方が良いでしょう.

['03/07/28]補足
ディスクにBIOSを介してアクセス場合はBIOSが.OSが直接アクセスする場合は OS側が LBA48 に対応している必要があるということです.対応していない場合, 仮に 137GB 以降の領域まで見えていたとしても, BIOS/OS が 137GB以降の部分 に書き込もうとした際に,137GB以前の関係の無い領域に書き込む場合があり, その結果ディスク上のデータが破壊されます.

[03/04/27] 追記

 BIOSが BigDrive に非対応の BKi810 で 160GB のディスクを接続して実験を 行った所,

    1.Windows 2000 をCD-ROMから起動
    2.137GB以下のパーティションを切る(私は10GBで切りました)
    3.Windows 2000を切ったパーティションにインストール
    4.インストール終了後,サービスパックを適用(SP3を入れました)
    5.上記 Microsoft のサイトを参照し,レジストリを追加,再起動
    6.再起動後,137GB以降の領域も見えるようになるので,パーティションを切って使用
のような流れで,160GBをフルに使えるようになりました.ただし,どのような環境でも この手が問題なく利用できるかどうかは分かりません.

■関連する書籍やソフト
○書籍

○ソフト
 (OSをサインストールすること無く,別のディスクに環境をコピーしたり,パーティション操作等)


PC情報倉庫へ戻る