ブロックサイズとクラスタサイズについて質問があります。私が読んだ内容に基づいて、次のように仮定します。
- ブロックサイズはブロックの物理サイズで、ほとんど512バイトです。これを変える方法はありません。
- クラスタサイズは、オペレーティングシステムが読み書きできる最小ブロックサイズです。 ext3などの新しいファイルシステムを作成する場合は、-bスイッチを使用してこの最小ブロックサイズを指定できます。ほとんどすべてのプログラム(例:dumpe2fs、mke2fs)は、ブロックサイズをクラスタサイズの名前として使用します。
次の結果が出た場合:
$ stat test
File: `test'
Size: 13 Blocks: 4 IO Block: 2048 regular file
Device: 700h/1792d Inode: 15 Links: 1
size はバイト単位の実空間であり、block は物理的に使用されるブロック (それぞれ 512 バイト) であり、IO ブロックは FS の生成時に指定したブロックサイズに関連付けられています。これは正しいですか?
ベストアンサー1
おそらく、異なる用語を使用する複数の文書を読んだので、混乱しているようです。ファイルシステム文献の文脈内でも、「ブロックサイズ」及び「クラスタサイズ」のような用語は普遍的な意味を持たない。
ファイルシステム
~のため外部2または外部3状況は比較的簡単です。各ファイルは一定量のスペースを占めています。彫刻。特定のファイルシステムのすべてのブロックは同じサイズで、通常1024、2048、または4096バイトのいずれかです。 Nブロックに1バイトを加えたサイズとN + 1ブロックの間のサイズを持つファイル1は、N + 1ブロックを占めます。ブロックサイズはで指定することですmke2fs -b
。別個のクラスタという概念はありません。
これ脂肪特に、MS-DOS と以前のバージョンの Windows では、同様の単純空間割り当てを使用するファイルシステムを使用していました。 ext2はブロック、FATはブロックと呼ばれます。群れ;概念は同じです。
一部のファイルシステムでは、より複雑な割り当て方式があります。固定サイズのブロックがありますが、同じブロックを使用して複数のファイルの最後の数バイトを保存できます。これは…ブロック再割り当て;ライトプスそしてBTRFSしかし、ext3やext4はそうではありません。
便利
Unixユーティリティでは、通常、512バイトや1kBなどのすべてのサイズの単位を表すために「ブロック」という単語を使用します。この使用法は、特定のファイルシステムやディスクハードウェアとは無関係です。当時のディスクとファイルシステムはしばしば512Bブロックで動作していたため、歴史的に512Bブロックが現れました。しかし、現代の使用法は任意です。ただし、既存のUNIXユーティリティとインタフェースでは、まだ512Bブロックを使用することがあります。今、1kBチャンクが一般的に好ましい。。各ユーティリティが使用するブロックサイズを確認するには、各ユーティリティのマニュアルを確認する必要があります(一部はLinuxなどのスイッチがありますdu -B
)df -B
。
GNU / Linuxstat
ユーティリティでは、このblocks
数字はファイルが使用する512Bブロックの数です。このIO Block
数字はファイルの入出力に適したサイズであり、原則としては関係ありませんが、通常は基本ファイルシステムのブロックサイズ(またはクラスタサイズと呼ばれる場合はクラスタサイズ)を表します。これには、ブロックサイズが2048のext3ファイルシステムで1ブロックを占める13バイトのファイルがあります。したがって、ファイルは4,512バイト単位(「ブロック」と呼ばれるstat
)を占めます。
ディスク
ほとんどのディスクは、ディスクを複数のディスクとして表示するインターフェイスを提供します。部門。ディスクは、個々のビットやバイトではなく、セクタ全体のみを書き込みまたは読み取りできます。ほとんどのハードドライブには512バイトのセクターがありますが、4kBのセクターディスクは数年前に登場し始めました。
ディスクセクタサイズはファイルシステムのブロックサイズと直接関係がありませんが、ブロックを整数のセクタとして構成するとパフォーマンスが向上します。
¹例外 :スパースファイルスペースを節約します。