ファイルシステムは、文字デバイスではなくブロックデバイスでのみ作成できますか?
ファイルシステム自体をブロックデバイスと見なすことができます(たとえば、ファイルシステムをプログラムで使用している場合)。
私の推測は「はい」ですが、次のことに基づいて確信することはできません。
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を使用して実装されます。また、ネットワークなどを使用してファイルシステムをレンダリングすることもできます。