LBA
読み:エルビーエイ
外語:LBA: Logical Block Address

 PC/AT互換機での、BIOSからのディスクアクセスの方法の一つ。
目次

概要
 ディスクドライブの各セクターに「論理ブロック」と呼ばれる通し番号を振り、その番号でセクターを指定する方式のこと。
 従来のCHSに代わる方法として採用された。CHSは三つのパラメーターがあったが、LBAは通し番号一つだけしかパラメーターがない。

経緯

ATA(IDE)側の仕様変更
 まずIDE(ATA)では、仕様上シリンダー(C)に16ビット、ヘッド(H)に4ビット、セクター(S)に8ビットの計28ビットが用意されている。
 この区分を辞め、この全ビットをLBAとして使えば、理論上は512バイト/セクター×228セクターで、最大約137Gバイト(128Giバイト)のドライブにアクセスできる。
 そこで、実際に、そのようにして使うことにした。

BIOS側の仕様変更
 PC/AT互換機BIOSではINT 13Hの機能が拡張され、AH=42h(Extended READ)とAH=43h(Extended WRITE)が追加された。これを拡張INT13と呼ぶ。
 このBIOSでは、DS:SIでデータアドレスが格納されるポインターを指定する仕様となった。これは絶対ブロック番号8バイトを含む16バイトのデータであり、LBAはオフセット08hからである。最大で64ビットまで対応できる。
 但し、Windows 9xやWindows NT/2000以降のOSの場合、OS起動までのブートローダーでは使われているようだが、OS起動後はデバイスドライバーが直接ディスクを制御するため、このBIOSは用いていない。

28ビットLBA普及まで
 この拡張は、ATA(IDE)とBIOSと、その上で動くソフトウェア(OS)側の三種類が対応して初めて本領発揮となる。
 しかしLBAおよびE-IDE登場当時は、まだ拡張INT13というBIOSが存在しなかった。従って当然拡張INT13に対応するソフトウェアもない。
 このため、過渡期においては、ソフトウェアは従来通りのCHS方式のBIOSを用い、もってE-IDEは最大約8.4Gバイト(7.8Giバイト)まで利用可能、という仕様ができた。
 やがて、拡張INT13が登場したことで、上述のように理論上は最大約137Gバイトまでのディスクが利用可能となった。

48ビットLBA
 ディスクドライブの容量は増加を続け、遂にATAの28ビットでも不足する時代が来た。
 しかしATAの仕様は大きく変更せず大容量に対応させるため、LBAアドレスを二回に分けて送ることとした。これが48ビットLBAである。
 BIOS自体は既に64ビットまで対応しているので、変更はない。
 48ビットでは、512バイト/セクター×248セクターで、約144Pバイト(128Piバイト)までのディスクが利用可能である。

将来
 将来的にはもう一回、ATAの仕様変更で64ビット程度に拡張される可能性がある。ただ、48ビットで不足することは当分は無いと考えられている。
 64ビットまでであれば、BIOSは変更が不要である。

利用方法

28ビットLBA
 しかし、いくらアドレッシングが大容量に対応しても、オペレーティングシステム(OS)の対応や大容量に対応したファイルシステムなどが無ければ大容量を扱うことはできない。
 実際にはWindows 95 OSR2以降で対応したFAT32などが必要になる。
 Windows NTNTFSでも大容量ドライブは扱えるが、最初のパーティションは約8.4Gバイト(7.8Giバイト)以内という別種の制限があるので注意が必要(Windows 2000以降で解消)。
 また他のOSでは、Linuxは古くから対応したが正式には2.0.34以降、FreeBSDは2.2.8以降で、LBAに対応した。

48ビットLBA
 現在では、28ビットでは容量が不足することから、更なる拡張として48ビットLBAが用いられている。
 Windowsでは、Windows XP SP2以降で正式に対応している。但し、Windows 2000 SP3以降、Windows XP SP1でも、一応対応している。
 Windows 2000 SP3以降およびWindows XP SP1で使用するためには、レジストリの変更が必要である。この変更をしなければ、大容量ディスクを購入して来ても、アクセス可能な範囲、つまり最大約137Gバイトまでの範囲にしかアクセスできない。
 具体的には、レジストリ「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters\EnableBigLba」(データ型REG_DWORD)を、「0x1」とし、OSを再起動する。
 なお、Windows XP SP1には重大なバグがあり、EnableBigLbaを有効にするとディスクのデータが破壊される可能性がある。SP1 + hotfix以降でなければならない。

再検索