ハードディスクのアクセスやファイル管理は、記録単位のセクタを特定 (位置指定) することで実現する。 セクタの位置に関する情報をアドレスと呼び、その指定方法は次の2つの方式がある。
ハードディスク登場時からの方式で、C/H/S (シリンダ/ヘッド/セクタ) の 3 つのパラメータを用いてディスクへのアクセスや管理を行う。
各パラメータは次のように決められる。
- シリンダ (Cylinder)
ディスク記録面の同一トラックを仮想的にまとめた円筒 (シリンダ) 形をシリンダと呼び、外周側から番号が振られる。 物理的な記録面が一つしかなくてもシリンダは構成される。
- ヘッド (Head)
ディスクの 1 面ごとに配置された磁気ヘッドに、重ねられた順に番号を割り当てる。
複数ディスクで構成されたハードディスクでも、磁気ヘッド番号の指定でディスク面を特定できる。 サイドと呼ぶこともある。
- セクタ (Sector)
トラックを放射状に等分した記録領域をセクタと呼び、ディスクの回転方向に番号を振る。
PC/AT 互換機の場合、1 セクタは 512 バイトである。
UNIX 系の OS ではブロックと呼ぶ。
記録密度の上昇に伴い、シリンダ/ヘッド/セクタ を指定する従来の方式ではディスク上の実記録位置を管理しきれなくなった (外周と内周のセクタ数が異なり、8GB の限界もある) 。
ハードディスクの大容量化に対処するため、一元的な通し番号による LBA (Logical Block Addressing) 方式が考案された。
- LBA 方式はハードディスク内のすべてのセクタに、シリンダ 0, ヘッド 0, セクタ 1 を "0" とした通し番号を割り当て、その番号によってセクタ位置 (アドレス) を管理・指定する。
- LBA への対応は E-IDE (Enhanced IDE) 規格以降から盛り込まれ、BIOS も拡張オプション (下記) を用意することで対応した。
INT 13h AH = 4xh
LBA から実際のセクタ位置を導くのは、IDE コントローラが行う。
- 通し番号の表現サイズ (ビット数) を拡張すればディスク サイズに限界はなくなるが、あまり大きなビット数は現実的でない。
現在の E-IDE と SCSI では 32bit LBA を採用しており、2TB が上限である。 BigDrive という 48bit LBA を採用した規格もあるが、特定のチップセットに限られている。
このままでは、ハードディスク アクセスに際して双方の規格値の小さいほうに制限されるため、
1024 × 16 × 63 × 512 (1セクタ) = 504 MB が限界になってしまう。
そこで BIOS にパラメータ値の変換 (ジオメトリ変換) を行わせる LARGE 方式が考案された。 BIOS はディスクパラメータの内、シリンダとヘッドの値を調整 (セクタは BIOS 仕様に統一) して通信の仲介を行う。
ただし、LARGE 方式を採用しても 8GB (1024 × 255 × 63 × 512) が限界となるため、現在は LBA 方式が主流となっている。
現在の大容量ハードディスクにおいて、8GB を超える位置の C/H/S 情報は殆どがダミーである。