ブロックサイズとクラスターサイズの違い


20

ブロックサイズとクラスターサイズに関して質問があります。私がそれについて読んだことに関して、私は以下を仮定します:

  • ブロックサイズは、ブロックの物理サイズであり、ほとんどが512バイトです。これを変更する方法はありません。
  • クラスターサイズは、OSが読み取りおよび書き込み可能なブロックの最小サイズです。ext3などの新しいファイルシステムを作成する場合、スイッチ-bでこの最小ブロックサイズを指定できます。dumpe2fs、mke2fsなどのほとんどすべてのプログラムは、クラスターサイズの名前としてブロックサイズを使用します。

次の出力がある場合:

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

サイズはバイト単位の実際のスペースであり、ブロックは物理的に使用されるブロック(各512バイト)であり、IOブロックはFSの作成時に指定されたブロックサイズに関連するのは正しいですか?

回答:


26

混乱していると思います。おそらく、異なる用語を使用しているいくつかのドキュメントを読んだことが原因でしょう。「ブロックサイズ」や「クラスターサイズ」などの用語は、ファイルシステムに関する文献のコンテキスト内であっても、普遍的な意味を持ちません。

ファイルシステム

以下のためのext2ext3の、状況は比較的簡単です:各ファイルには、特定の数の占有ブロックを。特定のファイルシステム上のすべてのブロックは同じサイズで、通常は1024、2048、または4096バイトのいずれかです。サイズがNブロック+ 1バイトとN + 1ブロックの間のファイル¹は、N + 1ブロックを占有します。そのブロックサイズは、で指定するものですmke2fs -b。クラスターの別個の概念はありません。

FATの MS-DOSとWindowsの初期のバージョンで特に使用のファイルシステムは、同様に、単純なスペースの割り当てがあります。ext2がブロックと呼ぶもの、FATはクラスターを呼ぶ; 概念は同じです。

一部のファイルシステムには、より洗練された割り当てスキームがあります。固定サイズのブロックがありますが、同じブロックを使用して複数のファイルの最後の数バイトを保存できます。これはブロックのサブ割り当てとして知られていますReiserfsBtrfsはそれを行いますが、ext3またはext4でもありません。

公益事業

Unixユーティリティでは、「ブロック」という単語を使用して、通常は512バイトまたは1kBの任意のサイズのユニットを意味します。この使用法は、特定のファイルシステムまたはディスクハードウェアとは無関係です。歴史的には、当時のディスクとファイルシステムは512Bのチャンクで動作することが多かったため、512Bブロックが発生しましたが、現代の使用法は任意です。従来のUNIXユーティリティとインターフェイスでは、依然として512Bブロックが使用されることがありますが、現在では1kBブロックが好まれています。各ユーティリティのドキュメントをチェックして、使用しているブロックのサイズを確認する必要があります(たとえば、Linuxのdu -B場合は、スイッチがありdf -Bます)。

GNU / Linux statユーティリティでは、blocks数字はファイルで使用される512Bブロックの数です。このIO Block数値は、ファイル入出力の推奨サイズです。これは原則的には無関係ですが、通常、基礎となるファイルシステムのブロックサイズ(または、それを呼び出したい場合はクラスターサイズ)を示しています。ここでは、13バイトのファイルがあり、これは2048のブロックサイズでext3ファイルシステムの1ブロックを占有しています。そのため、ファイルは4つの512バイト単位を占有します(「ブロック」と呼ばれますstat)。

ディスク

ほとんどのディスクには、ディスクをセクターの束として表示するインターフェースがあります。ディスクは、個々のビットまたはバイトではなく、セクター全体のみを読み書きできます。ほとんどのハードディスクには512バイトのセクターがありますが、4kBセクターのディスクは数年前に登場し始めました。

ディスクのセクターサイズはファイルシステムのブロックサイズに直接関係しませんが、ブロックを整数のセクター数にするとパフォーマンスが向上します。

¹ 例外:スパースファイルはスペースを節約します。


2
ご説明いただきありがとうございます。Windows向けのext2fsdツールが原因でこのような混乱が生じたため、ここに到着しました。コマンドラインオプションの開始: '使用法:mke2fs [-c | -lファイル名] [-bブロックサイズ] [-Cクラスターサイズ] ...'さて、ブロックサイズとクラスターサイズの両方...
ベルンハルトヒラー

また、mke2fsのブロックサイズとクラスターサイズの違いを知りたいと思っています。誰か知っていますか ?
X.LINK

1
@ X.LINKマニュアルページで説明されています。クラスターサイズはbigalloc機能によって使用されます。これは、理解できれば、無駄なストレージを犠牲にして大きなファイルへのアクセスを高速化します。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.