ファイルシステムは、文字デバイスではなくブロックデバイスでのみ作成できますか?

ファイルシステムは、文字デバイスではなくブロックデバイスでのみ作成できますか?

ファイルシステムは、文字デバイスではなくブロックデバイスでのみ作成できますか?

ファイルシステム自体をブロックデバイスと見なすことができます(たとえば、ファイルシステムをプログラムで使用している場合)。

私の推測は「はい」ですが、次のことに基づいて確信することはできません。

  • Linuxの図があります。オペレーティングシステムの概念:

    ここに画像の説明を入力してください。

  • そうだLinuxカーネルについて学ぶキャラクタ・デバイス・ファイルに対するIO操作とは異なり、通常のファイルおよびブロック・デバイス・ファイルに対するIO操作は、上述したデバイス・ドライバの実装とほぼ同様である。

ありがとうございます。

一部のファイルシステムは物理デバイス(例:/proc

答え1

ファイルシステムは、カーネルへのインタフェースとして使用されるか、ネットワークを介してファイルにアクセスするか、ユーザ空間で実装されない限り、通常はブロックデバイス上に構築されます。ファイルをハードドライブまたはSSDに保存するには、ブロックデバイスとしてアクセスするのが最も簡単な方法です。ブロック境界にデータをソートしないSquashFSなどのファイルシステムがありますが、まだブロックデバイスで動作するデフォルトのバッファキャッシュを使用します。一部のUnixシステムでは、バッファキャッシュを使用せずにディスクにアクセスできる文字デバイスを提供しています。 Linuxでは、この目的にopenこのフラグを使用します。O_DIRECT

ファイルをブロックデバイスとして使用できますlosetup。を参照してください。

ファイルシステムはブロックデバイスではありません。

編集する

ブロックデバイスにないファイルシステムに関するコメントの質問に答える

  • 「カーネルへのインタフェース」:これはほとんどですが、/proc通常は下にマウントされているファイルシステムの/sys束です。cgroup/sys/fs/cgroup
  • 「ネットワーク経由でファイルにアクセスする」:NFS(通常はUnix / Linux)、SMB / CIFS(Windows)など
  • 「ユーザ空間に実装される」:「FUSE」は、「ユーザ空間のファイルシステム」を意味する。カーネルの観点から見ると、これはユーザー空間プログラムでサポートされています。このプログラムはブロックデバイス(fuseblk)を使用することもでき、NTFSはヒューズblkを使用して実装されます。また、ネットワークなどを使用してファイルシステムをレンダリングすることもできます。

関連情報