ドライブ内の場所にアクセスするには、CHSスキームとLBAスキームの2つの方法があります。
CHSはCylinder、Head、Sectorの略で、ドライブからの読み取りまたは書き込みの場所を決定する最も低レベルの方法です。シリンダーx、ヘッドy、およびセクターzを使用し、その場所の内容をメモリ(バッファー)のアドレスとの間で読み書きするように指示します。これは、物理的なシリンダーと読み取りヘッドを備えた(従来の回転する錆)ハードドライブの実際の物理的なコンポーネントから派生しています。セクターは、アドレス可能な最小単位であり、従来は512バイトに固定されていました。
LBAは論理バイトアドレス指定で、ドライブはそのオフセットによってセクターアドレスを読み書きします。たとえば、ディスクの123837番目のセクターを読み取るか、ディスクの123734番目のセクターに書き込みます(ゼロから開始)。
問題?これらの値はそれぞれ範囲が制限されています。実際、CHSが非常に厳しく制限されていたため、LBAを導入する必要がありました。CHSの場合、C(シリンダー)の有効な値は1023で、H(ヘッド)は最大255、S(セクター)は最大63までです。つまり、最大1024シリンダーx 255ヘッドx 64になります。従来のCHS形式でマッピングされたセクターx 512バイト。合計で8 GiB未満です。CHSを使用すると、8 GiBを超えるディスクにアクセスすることは不可能です。
したがって、LBAには32ビット制限が導入され、2 ^ 32 x 512バイトまたはディスクサイズの2 TiB制限が与えられます-これは、MBRディスクがCHSとLBAを使用してパーティションサイズを指定するため、2TiBを超えることができない理由です2TiB上のすべてをサポートします。
LBAを64ビットに拡張し、2 ^ 64 x 512バイトでは必要以上に多くの機能を提供するGPTパーティショニングスキームのような新しい、より良いオプションが導入されました- しかし、キャッチ:多くのレガシーハードウェアとレガシオペレーティングシステム、レガシBIOSの実装とレガシドライバはUEFIまたはGPTをサポートしていません。多くの人は、スタック全体を書き換えることなく、より簡単にアップグレードして2TiBの制限を超えることができるものを求めています。ゼロから。そして、ついに、4096セクターサイズに達しました。
上記で説明したすべての制限を通じて、1つの事柄は固定された仮定でした:セクターサイズをご覧ください。初日から512バイトでしたが、それ以降はそのままです。しかし最近、ハードディスクメーカーは、いくつかの魔法を働かせる機会があることに気付きました。従来のCHSまたは32ビットLBAを使用して、セクターサイズを512バイトではなく4096(4k)に置き換えるだけです。OSがLBA 1を要求して「ディスクの2番目のセクターをくれ」と言ったとき(LBA 0が最初なので)、512〜1023バイトではなく、4096〜8191バイトを与えます。
突然、2TiBの制限が2 ^ 32 x 4096バイト、または16 TiBにアップグレードされ、MBRを捨てたり、UEFIやGPTなどに切り替えたりする必要がなくなりました。
唯一の問題は、512バイトセクターではなく4096セクターを使用するマジックディスクであることをOSが認識しない場合、不一致が発生することです。OSが「ねえ、あなた、ディスク、これらの512バイトをオフセットxxxに書き込みます」と言うたびに、ディスクはこれらの512バイトを格納するために最大4096バイトを使用します(残りはゼロまたはジャンクデータです。メモリアンダーフロー)はバイト単位では通信せず、セクター単位で通信するためです。
そのため、BIOSには(時々)新しいディスクが使用しているネイティブの4096バイトセクターサイズの代わりに512バイトセクターサイズを使用するように手動で指定できるオプションが含まれています-それ以上のアクセスには使用できません「古き良き時代」のように、MBRシステム上のディスクの2TiB。しかし、4k対応の最新のOSは、このすべてを利用して、このマジックを使用して4096バイトのチャンクで読み書きし、無駄にできます!
(追加の利点は、一度に4096バイトの読み取りと書き込みを行うと、4GiBのデータの読み取りまたは書き込み操作が少なくなるため、処理がはるかに高速になることです。)