Windows NT ブート処理とハード ディスクの制限

文書翻訳 文書翻訳
文書番号: 114841 - 対象製品
この記事は、以前は次の ID で公開されていました: JP114841
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Windows NT および Windows NT Advanced Server でのハード ディスク サイズの制限について説明します。これらの制限を理解するには、ディスク パーティションを定義するデータ構造を知っておくことと、Windows NT とハードウェアおよび OS のブートプロセス中に使用されるシステム BIOS インタフェースの間のやりとりについて理解しておく必要があります。

詳細

パーティション テーブル

ハード ディスクのパーティションを記述するデータ構造をパーティション テーブルと言います。パーティション テーブルは最大 4 つの 16 バイト エントリで構成されます。各エントリには、パーティションの次の属性を記述する 10 個のフィールドが含まれます。
   
   フィールド              サイズ
   -----------------    --------
   ブート フラグ           1  バイト
   開始サイド              1  バイト
   開始シリンダ            10 ビット
   開始セクタ              6  ビット
   システム インジケータ   1  バイト
   終了サイド              1  バイト
   終了シリンダ            10 ビット
   終了セクタ              6  ビット
   相対セクタ              4  バイト
   セクタ数                4  バイト

システム インジケータ

システム インジケータは、パーティションに含まれるファイル システムのタイプ指定に使用されます。共通の値には次のようなものがあります。
   値       ファイル システム
   -----   ---------
   0x0B    プライマリ Fat32 パーティション、最大 2047 GB
   0x0C    0x0B と同様。LBA Int 0x13 拡張を使用する。
   0x0E    0x06 と同様。LBA Int 0x13 拡張を使用する。
   0x0F    0x05 と同様。LBA Int 0x13 拡張を使用する。
   0x05    拡張パーティション
   0x06    BIGDOS ファイル アロケーション テーブル (FAT) 形式
   0x07    インストール可能なファイル システム (IFS)。HPFS、NTFS など。
パーティションがフォールト トレラント (FT) セットの一部分である場合、FT 以外の同じタイプのパーティションを識別するために、システム インジケータの上位ビットが設定されます。たとえば、FT FAT パーティションのシステム インジケータ値は 0x86 で、FT NTFS パーティションのシステム インジケータ値は 0x87 になります。

FT セットのメンバが無効になると、上位 2 ビットが設定されます。たとえば、無効になった FAT パーティションのシステム インジケータ値は 0xC6 で、無効になった FT NTFS パーティションのシステム インジケータ値は 0xC7 になります。

ブート フラグ

ブート フラグは、アクティブまたはブート可能なパーティションを示します。ディスク上でアクティブにできるパーティションは 1 つだけです。アクティブ パーティションのブート フラグ値は、0x80 に設定されます。ディスク上のその他のパーティションは 0x00 に設定されます。マスタ ブート レコード (詳細は後述) はアクティブなブート セクタを探すためにこのフラグを検索します。

開始および終了サイド、シリンダ、セクタ

開始および終了のサイド、シリンダ、セクタの各フィールドは、Windows NT とディスクとの対話方法の点で非常に重要です。

1 バイトで表されるサイド (読み込み/書き込みヘッド) の最大数は 256 です。10 ビットで表されるシリンダの最大数は 1,024 です。また、6 ビットで表現できるセクタの最大 数は 63 です。これは、セクタがカウントを 1 から開始するためです (シリンダとサイドでは 0 から開始します)。

シリンダ値は 10 ビットで表されるので 1 バイトに納まりません。10 ビットを格納するために、2 ビットは 6 ビットのセクタ値を格納するバイトから借用します。

512 バイトの標準セクタ サイズでは、開始および終了のセクタ アドレスの記録に使用される 24 ビットが、これらのフィールドを用いて示すことができる最大可能パーティショ ン サイズ 7.8GB (8,455,716,864 バイト) に変換されます。これは、システム BIOS とハード ディスクの対話方法を定義する INT 13 BIOS インタフェースでも同じフィールド サイズが用いられているため特に重要です。

相対セクタ

相対セクタは、パーティション テーブルの先頭からそのパーティションまでのオフセットをセクタ単位で表します。

セクタ数

セクタ数は、パーティション内のセクタの総数を表します。

注 : 相対セクタ フィールドとセクタ数フィールドの大きさはそれぞれ 32 ビットです。ほとんどの場合、これらのフィールドには共に、開始の 24 ビット、終了の 24 ビットの合計で表される開始および終了のサイド、シリンダ、セクタの値と同じ情報がはいります。

Windows NT ブート処理

Intel ベースのコンピュータでは、システム BIOS が最初の OS ブート処理を制御します。最初の Power On Self Test (POST) の後、ハードウェア コンポーネントが初期化されると、システム BIOS はブート デバイスを識別します。通常はフロッピー ディスクかハード ディスクです。ハード ディスクの場合、BIOS はディスク上の最初の物理セクタ (マスタ ブート セクタと呼ばれる) を読み取り、そのイメージをメモリにロードします。その後、BIOS はそのマスタ ブート セクタのイメージに対して処理を渡します。

マスタ ブート レコードには、パーティション テーブルと小さな実行可能コードが含まれます。実行可能コードはパーティション テーブルを調べて、アクティブ (またはブート可能) パーティションを識別します。次に、マスタ ブート レコードはアクティブなパーティションのディスク上での開始位置を見つけて、その最初のセクタのイメージ (ブート セクタと呼ばれる) をメモリにロードします。その後、マスタ ブート レコードはそのブート セクタ イメージに対して処理を渡します。

通常マスタ ブート レコードが OS に依存しないのに対し、アクティブ パーティションのブート セクタは OS とファイル システムの両方に依存します。Windows NT および Windows NT Advanced Server の場合、ブート セクタは実行可能ファイル NTLDR を検索し、ブート処理を継続します。この段階のシステム ブート アップでブート セクタが利用できるディスク サービスは、BIOS INT 13 インタフェースによりのみ供給されます。ブート セクタのコードは NTLDR とルート ディレクトリ、ファイル アロケーション テーブル (FAT) (MS-DOS FAT ボリュームの場合)、マスタ ファイル テーブル (NTFS ボリュームの場合) などのファイル システム データ構造を見つけることができなければなりません。これらは BIOS INT 13 インタフェースおよびパーティション テーブルにより使用される 24 ビットのサイド、シリンダ、セクタ構造で指定可能なディスク領域内に存在する必要があります。これにより、使用するファイル システムに関係なく、システム パーティションのサイズが 7.8 GB に制限されています。

: コンピュータのハードウェアやファイル システムによっては、その他の制限が適用されることがあります。このような制限の一部については以下で説明します。

7.8 GB を超えるパーティションを収容するために、Windows NT はパーティション テーブルの開始および終了セクタ アドレス フィールドの値を無視して、相対オフセット フィールドとセクタ数フィールドの値を参照します。これにより、セクタを表すために 8 ビットが追加されます。この追加ビットを使用すると、最大 2^32 セクタを利用してパーティションを記述できるようになります。

512 バイトの標準セクタ サイズの場合、相対オフセットとセクタ数の表現に使用される 32 ビットは、2 TB (すなわち 2,199,023,255,552 バイト) の最大可能パーティション サイズに換算されます。

ディスク分割の際、可能な場合には必ず正しい値がパーティション テーブルのフィールドに書き込まれます。パーティション内のセクタの総数がサイド、シリンダ、セクタの表記法で示すことができる数を超えると、パーティション テーブルのこれらのフィールドには最大許容値が書き込まれます。これにより、システム BIOS が誤ったデータに基づいて開始アドレスや終了アドレスを計算することを避けます。

たとえば、Adaptec 154 シリーズの SCSI コントローラに 3.5GB SCSI ドライブを接続しているとします。アダプタで拡張セクタの変換機能が使用できない場合、次のディスク特性がシステム BIOS に通知されることがあります。
   シリンダ: 1023、サイド: 64、セクタ: 32
これは約 1 GB に変換されます。拡張変換機能が使用可能な場合は、デバイスの特性が次のように通知されることがあります。
   シリンダ: 435、サイド: 255、セクタ: 63
これは約 3.5 GB に変換されます。

Windows NT が起動して動作すると、SCSI ドライバを使用してディスクと直接対話が行われます。BIOS INT 13 インタフェースは使用されません。したがって、通常の操作中は、BIOS パラメータはあまり重要ではありません。しかし、ディスクがシングル パーティションでフォーマットされ、ブート ドライブとして使用される場合は、その違いが重要になります。

拡張変換機能がない場合は、Windows NT はディスクのサイズが BIOS パラメータで示されるよりも大きいことを認識します。最初のインストール中のドライブの分割の際、開始および終了セクタ アドレスには最大可能値が設定されます。これにより、ドライブが 7.8 GB 未満の場合でもマスタ ブート レコードのコードが正しく機能できなくなります。

拡張変換機能がある場合は、開始アドレスと終了アドレスの有効値がパーティション テーブルに書き込まれるので、パーティションはブート可能なままになります。

拡張変換機能が使用できない場合や、マスタ ブート レコードがアクティブ パーティションのブート セクタを見つけられない場合、以下のエラー メッセージが表示されることがあります。
Error loading operating system.
または
Missing operating system.

ファイル システム

FAT と HPFS はどちらも、ファイル サイズを格納するために 32 ビットのフィールドを使用するので 4 GB の内部制限があります。NTFS はすべてのサイズに 64 ビットのフィールドを使用するため、そのデータ構造は、最大 2^64 バイト (16 Exabytes すなわち 18,446,744,073,709,551,616 バイト) のボリューム サイズを可能にします。

この値は NTFS ファイル システムの理論上の制限です。上記の最大許容パーティションサイズに関係する実際の制限では、NTFS パーティションのサイズは約 2 TB に制限されています。パーティション テーブルの 32 ビットのフィールドがそのパーティションのセクタ数を参照するので、より大きなディスクのセクタ サイズは、より大きなサイズの許容パーティションに変換されます。現在、Windows NT では最大 4 KB のセクタ サイズがサポートされています。4 KB セクタを利用すると、16 TB のパーティションをサポートできます。新しいハードウェアやソフトウェアの構造が利用可能になれば、NTFS はさらに大きなボリューム サイズを扱えるようになります。

ドライブとコントローラのタイプ

IDE ドライブでは、シリンダ数、ヘッド数、トラックあたりのセクタ数を表す際に、パーティション テーブルや BIOS INT 13 インタフェースとは異なるデータ構造を使用します。IDE の仕様では、シリンダの最大数は 65536、ヘッドの最大数は 16、1 トラックあたりのセクタの最大数は 255 です。これは最大 136.9 GB という計算結果になりますが、BIOS/IDE インタフェースは最小の共通分母を使用することになっているので、Intel ベースの ISA バス コンピュータ上の IDE ドライブは約 528 MB に制限されます。新しいドライブやドライバには、"拡張ドライブ パラメータ テーブル" を使用して IDE ドライブ内部の論理セクタ レイアウトと、BIOS INT 13 インタフェースによって指定可能な論理セクタ レイアウト間の変換を行うものがあります。このようなドライバやデバイスではさらに大容量のディスクをサポートできます。 SCSI II コマンド セットは、現在約 7 GB のディスクをサポートする独自のセクタ アドレッシング形式を使用しています。

Windows NT のフォールト トレラント ボリューム

Windows NT および Windows NT Advanced Server では、ボリューム セットとストライプ セットを使用することにより、複数の物理ディスク パーティションから論理ボリュームを構築できます。このテクニックにより、Windows NT ではさまざまなディスク コントローラによって課される物理的なハードウェア制限を超えることができ、単一のディスクがそれ自体でサポートできる以上に大きな論理ボリュームを構築できます。

: 注意: 論理ボリュームは物理ディスク パーティションとまったく同じに見えるように構築されているため、前述のパーティション テーブルのレイアウトに従う必要があります。つまり、ボリューム セットなどのフォールト トレラントの構成では、セクタ数の合計は最大 2^32 セクタ (すなわちセクタあたり 512 バイトで 2 TB) になります。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 114841 (最終更新日 2002-01-12) をもとに作成したものです。

プロパティ

文書番号: 114841 - 最終更新日: 2004年9月6日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Advanced Server 3.1
キーワード:?
kbhowto kbother KB114841
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com