LBA
読み:エルビーエイ
外語:LBA: Logical Block Address
PC/AT互換機
での、
BIOS
からのディスクアクセスの方法の一つ。
目次
概要
経緯
ATA(IDE)側の仕様変更
BIOS側の仕様変更
28ビットLBA普及まで
48ビットLBA
将来
利用方法
28ビットLBA
48ビットLBA
概要
ディスクドライブ
の各
セクター
に「論理ブロック」と呼ばれる通し番号を振り、その番号でセクターを指定する方式のこと。
従来の
CHS
に代わる方法として採用された。CHSは三つの
パラメーター
があったが、LBAは通し番号一つだけしかパラメーターがない。
経緯
ATA(IDE)側の仕様変更
まず
IDE
(
ATA
)では、仕様上
シリンダー
(C)に16ビット、ヘッド(H)に4ビット、
セクター
(S)に8ビットの計28ビットが用意されている。
この区分を辞め、この全ビットをLBAとして使えば、理論上は512バイト/セクター×2
28
セクターで、最大約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バイト/セクター×2
48
セクターで、約144Pバイト(128Piバイト)までのディスクが利用可能である。
将来
将来的にはもう一回、ATAの
仕様変更
で64ビット程度に拡張される可能性がある。ただ、48ビットで不足することは当分は無いと考えられている。
64ビットまでであれば、BIOSは変更が不要である。
利用方法
28ビットLBA
しかし、いくらアドレッシングが大容量に対応しても、
オペレーティングシステム
(OS)の対応や大容量に対応した
ファイルシステム
などが無ければ大容量を扱うことはできない。
実際には
Windows 95 OSR2
以降で対応した
FAT32
などが必要になる。
Windows NT
の
NTFS
でも大容量ドライブは扱えるが、最初のパーティションは約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以降でなければならない。
再検索