web-dev-qa-db-ja.com

ファイルシステムとディスクを指す場合、「ディスクセクター」、「ディスクブロック」、「チャンクサイズ」、「ディスクレコード」は同じものですか?

セクターは基本的にブロックであると確信していますが、チャンクサイズ、特にレコードについてはさらに混乱していました。一部のシステムコールでは、ディスクからのデータをバッファリングするメモリ内の領域がディスクレコードサイズの倍数である必要があります。これは何を意味するのでしょうか?

3

私は何年も前にファイルシステムの開発を行っていました。以下は、プロジェクトで使用した用語です。

ディスクセクターは、メディア上でアドレス可能な最小のバイトセットです。通常、これはほとんどのデバイスで512バイトでしたが、4096バイトのセクターサイズがより一般的になっています。

ファイルシステムは、物理ブロックの観点からデバイスにアクセスしました。物理ブロックは、1つ以上の連続したセクター(通常は2の累乗)になります。

ファイルシステム内のファイルは、論理ブロックの観点からデータにアクセスしました。論理ブロックは、1つ以上の連続した物理ブロックでした。

2
Sparky

セクターはディスクドライブ上の物理領域であり、セクターサイズはハードウェアによって設定されます。ディスクプラッタの読み取りと書き込みは、セクターで実行されます。 HDDとの間のデータはセクターサイズの転送です。

(私がこれまでにプログラムした最初のディスクコントローラー(14 "ディスクドライブ用)はセクターを使用せず、むしろ(ディスク)レコードを使用しました。各トラックはレコードレイアウトでフォーマットする必要がありました。一意の長さを持つこともできますが、通常、ディスクボリューム全体の各トラックのすべてのレコードは同じレコード長でフォーマットされています。最近のディスクドライブにはそのようなフォーマット機能はなく、代わりにsectorsそれ以来、「ディスクレコード」というフレーズを聞いたことはありません。注:8インチフロッピーは、レコードが常に一貫しているため、「ソフトセクター化」として知られるようになった、類似しているが簡略化されたフォーマットスキームを備えていました。固定されていない、長さ。)

(デバイスレベルでは、レコードという用語は、物理ブロック(磁気テープレコードやディスクレコードなど)にも使用されていました。テープトランスポートまたはディスクドライブの技術文書で参照される場合があります。 I/Oの最小の物理ブロックとしてrecordに追加します。ただし、実際にテープを使用しているか、ディスクコントローラレベルで作業している場合を除き、recordユーザーランド/ファイル/ファイルシステムエンティティと見なすことができます。)

レコードは(最も一般的には)ファイルシステム(または論理)の概念であり、(その後)下位(ディスク)I/Oレベル(つまり、読み取りまたは書き込み)では無関係です。レコードは、ユーザーとシステムのインターフェイスでのみ発生します)。レコードの内容とサイズは、ユーザーが定義することも、ファイルによって指定することもできます。 record固定長であり、データ構造に対応するか、record可変長にすることができます(たとえば、改行区切り文字を含むテキスト行)。

レコードの長さに関係なく、ファイルシステムは中間バッファーを利用して、ユーザー/アプリケーションがレコードの読み取り/書き込みを実行し、セクターで実際のデバイスI/Oを実行できるようにします。デバイスから「システムバッファ」にセクターまたは物理ブロックを読み取り、「論理」レコードを抽出することは、「非ブロック化」と呼ばれることがよくあります。

レコードのサイズは任意です。理想的には、レコードサイズは、その倍数がセクター(または物理ブロック)サイズと等しくなるように選択されます。その後、-の代わりにブロックI/O(ユーザーバッファーとの間で直接)を実行できます。 バッファI/O。ブロックI/Oは、コピーが1つ少なく、バッファーの使用量が1つ少ないため高速ですが、ユーザープログラムは独自にレコードのブロックと非ブロックを実行する必要があります。

2
sawdust