web-dev-qa-db-ja.com

理解IOブロックサイズ

hdparm -I /dev/sda出力:

Logical  Sector size:                   512 bytes
Physical Sector size:                   512 bytes

stat somefile出力:

Size: 509           Blocks: 8          IO Block: 4096   regular file

IOブロックが4096である理由512バイトの物理セクターサイズと同じではありませんか?

3
EdiD

いいえ。ディスクのブロックサイズは、ディスク上で処理されるデータのバイトチャンクの大きさを示しています。ファイルに何かを書き込む場合、CPU /マザーボードはドライブコントローラに、ディスクのどのセクターにどのバイトを書き込む必要があるかを伝えなければなりません。これは、512バイトのチャンクでのみ発生する可能性があります。

論理セクターサイズと物理セクターサイズの違いは次のとおりです。物理セクターサイズは、ディスク内でデータが物理的に編成されるサイズです。論理セクターサイズとは、CPU /マザーボードのチャンクがドライバーコントローラーカードと通信できることを意味します(多くの場合、これはマザーボードの一部でもありますが、OSはディスクの読み取りを実行するときに生成するブロックサイズを知る必要があります) /書き込み操作)。

数十年以来、物理セクターサイズも偽物であり、その正確な詳細はハードディスクメーカーの企業秘密です。ただし、OSはこの偽造データを知る必要があります。これは、ディスク標準(SCSI、PATA、SATAなど)の一部であるためです。したがって、物理セクターサイズはほとんどの場合、実際的な意味はありません。

いくつかの新しいディスクでは、512の代わりに4096の論理セクターを使用するという新しい開発があります。古いATAプロトコルのセクター番号は32ビットサイズであるため、40億セクター(= 2テラバイト)のディスクはこれよりも大きいため、これが必要です。それらに対処する必要があります。

Statコマンドは、ファイルシステムのブロックサイズを示します。また、ほとんどのファイルシステムは、システム上のブロックにデータを編成します。シングルバイトファイルを作成する場合、ディスクに4096バイトを割り当てる必要があります。 Reiserfsなどの非ブロック指向のファイルシステムはめったにありませんが、それでもブロックで編成されていますが、割り当て可能な最小ディスクサイズは32バイトです。したがって、1バイトのファイルはreiserfsファイルシステムで32バイトのみを割り当てます。