ハードディスクアクセス方式「CHS」と「LBA」の違い

昨日購入。「1.2ディスクとファイルにまつわるあれこれ」から、以下まとめ。

コンピュータがハードディスク上の読み書きしたいデータへアクセスする方式にCHS方式とLBA方式がある。
現在のハードディスクへのアクセス方式はLBA(Logical Block Addressing:論理ブロックアドレス)方式が一般的。

  • CHS方式
    • CHS方式のCHSはシリンダ(Cylinder)、ヘッド(Head)、セクタ(Sector)の頭文字が語源。
    • データを読み書きする1つのセクタ(物理的なディスクアクセスの最小単位)はCHS値(何番目のシリンダ、何番目のヘッド、何番目のセクタにアクセスするか:「ジオメトリ情報」とも呼ぶ)を指定して決定する。
    • CHS方式では、物理的なハードディスクの構造を意識して指定する必要がある。実際にはLinuxのデバイス・ドライバがCHS値を計算して、ディスク装置とデータのやりとりをするので、ユーザがこの値を意識することはない。ただしディスクパーティションの作成時にはユーザが意識する必要がある。
    • 昔のMS-DOSの仕様では、ディスクパーティションをシリンダ単位で分ける必要があった。シリンダはディスクの外側から番号付けされており、ディスクの外側から順に第1パーティション、第2、第3...とパーティションが作られる。
    • fdisk -lコマンドで何番目のシリンダから何番目のシリンダまでが第何パーティションかというパーティションの区切り情報(パーティションテーブルのリスト)が得られる。
  • LBA方式
    • ハードディスク内のすべてのセクタに0からの通し番号(セクタ番号)を降っておき、この番号でアクセスするセクタを指定する方式。
    • (論理的な)セクタ番号と物理的なセクタの位置の対応は、ハードディスクのコントローラに内臓されたファームウェアが計算する。
    • 通常、セクタ番号が小さいほどディスクの外側の領域を使用する。
    • fdiskコマンドに-uオプションを付けて実行することによって、セクタ番号によるパーティションの区切りを表示することができる。

Ubuntu 2.6.32-41-generic でのfdiskコマンドhelp

>uname -a
Linux MyUbuntu 2.6.32-41-generic #90-Ubuntu SMP Tue May 22 11:31:25 UTC 2012 i686 GNU/Linux
>fdisk --help
Usage:
 fdisk [options]     change partition table
 fdisk [options] -l  list partition table(s)
 fdisk -s       give partition size(s) in blocks

Options:
 -b                  sector size (512, 1024, 2048 or 4096)
 -c                        switch off DOS-compatible mode
 -h                        print help
 -u                  give sizes in sectors instead of cylinders
 -v                        print version
 -C                specify the number of cylinders
 -H                specify the number of heads
 -S                specify the number of sectors per track