30 January 2010

WindowsでのHDD容量による認識の壁

この記事は、2010年現在では古い情報になっています。

HDD認識の壁

HDD総容量別

容量 理由  
504 MBytes
(528 MBytes)
IDEがCHS (シリンダ=10bit、ヘッド=8bit、セクタ=6bit)で管理されていた時の上限 1998年以降のマザーボードはLBA対応(EIDE規格)になったため問題なし
2 GBytes FAT16 FAT32, NTFS で回避
Windows 95 OSR2以降は問題なし(FAT32の利用)
7.9 GBytes
(8.4 GBytes)
EIDE(BIOS割り込み 拡張INT13H)がCHS(シリンダ=16bit、ヘッド=8bit、セクタ=4bit)で管理されていた時の上限。1024シリンダの壁とも言われた。 28bit LBA で回避
MS-DOSが抱える問題で、Windows95以降は問題なし。INT13Hを使うMBRでは、7.9GBytes以降の領域からは起動できない(MS-DOS, LILO 21.1以前)
64 GBytes
(68 GBytes)
Windows 98以前のFDISKが、16bitでディスク容量を管理しているため。Microsoft KB263044 Windows ME, Windows 2000 以降は問題なし。Windows 98以前でも、Microsoftのパッチを適用するか、別ソフトでフォーマットすれば問題なし
128 GBytes
(137 GBytes)
LBAが28bitの場合の上限サイズ 48bit LBAで回避
2003年以降のマザーボードは対応している。
Windows 2000 SR-3以降、 Windows XP SP-1以降は対応しているので問題なし

ファイルシステム別パーティション認識

ファイルシステム 容量の壁  
FAT16 2 GBytes (Windows 95,98)
4 GBytes (Windows 2000,XP~)
(ファイル1個のサイズは最大2 GBytes)
Windows95,98ではクラスタサイズ32kBytesまで、2000,XP以降は64kBytesまでをサポートするため、管理限界が違う。
FAT32 2 TBytes
(ファイル1個のサイズは最大4 GBytes)
Windows 2000,XPのディスクの管理では32 GBytesまでのフォーマットのみ可能。別ソフトでフォーマットすれば、利用することは出来る。 Microsoft KB314463
NTFS 2 TBytes  

Windowsのバージョンごとの起動パーティションの制限

オペレーティングシステム 起動パーティションのフォーマット形式 制限
DOS, Windows3.1, Windows95 FAT16 起動パーティションは8GBytes以下の物理領域にあること
プライマリ・パーティションのみ起動可
※ データ用パーティションも8GBytes以下の物理領域にあること
Windows95 OSR2, 98 FAT16, FAT32 起動パーティションは8GBytes以下の物理領域にあること
プライマリ・パーティションのみ起動可
※ データ用パーティションは128GBytes以下の物理領域内まで可
WindowsNT 4 FAT16, NTFS 起動パーティションは8GBytes以下の物理領域にあり、FAT16でフォーマット後にNTFSにコンバートする必要がある。
Windows 2000, XP FAT32, NTFS 2000 SP-3以前、XP SP-1以前のバージョンでは48bit LBAをサポートしていないため、起動パーティションは128GBytes以下の物理領域にあること。
インストール後にSP適用した場合は、それ以降128GBytes以上のディスク容量を認識出来るようになる。

参考リンク

Windows 2000/XP セットアップCD-ROMの制限

48bit LBAに対応していないバージョンのセットアップCD-ROMを使う場合、128GBytesを超える場所にパーティションが存在するとエラーになる。

Windows XPの場合はnLiteなどでSP-1以降を統合したセットアップCD-ROMを用いれば良い。 Windows 2000の場合は、128GBytesを超える領域に何も入っていないHDDに一旦インストールした「ディスクイメージ」を書き戻す方法しか無いと思われる。

Windows 2000 の 48bit LBA 対応化

Windows 2000 SP-3 を適用後、次のレジストリ キーを作成することで48bit LBAを有効化出来る。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters

値 DWORD EnableBigLba =0x01 を追加する。

Microsoft KB305098 : Windows 2000 における ATAPI ディスク ドライブへの 48 ビット LBA サポート

Windows XP の 48bit LBA 対応化

Windows XP SP-1 を適用するか、SP無しの場合は次のレジストリ キーを作成することで強制的に48bit LBAを有効化出来る。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters

値 DWORD EnableBigLba =0x01 を追加する。

Microsoft KB303013 : Windows XP で ATAPI ディスク ドライブに対して 48 ビット論理ブロック アドレス サポートを有効にする方法