私の理解によると、読み取り/書き込みなどはLinuxのファイルシステム作業です。ファイルシステムは、カーネル(VFS)にコールバックを登録し、読み取り/書き込み操作中に特定のFSが検出されるとカーネルによって呼び出されます。
たとえば、
EXT4_書き込み:
VFS write request -> ext4_writepages()
F2FS_書き込み:
VFS write request -> f2fs_write_data_page()
しかし、保存メディアがフォーマットされていない場合はどうなりますか?ファイルシステムはありません。読み取り/書き込み操作を実行するときにデフォルトで選択されるファイルシステム操作は何ですか?
答え1
VFS層がファイルに対して読み取り/書き込み操作を実行できるようにするには、ファイルを任意の方法で開く必要があります。メディアにファイルシステムがないとマウントできません。マウントできないとパスを取得できませんopen()
。ファイルを開くことができない場合、読み書きはできません。したがって、ファイルシステムがないメディアでは読み取り/書き込み操作を実行できません。
必要なすべてのドライバが利用可能であると仮定すると、ブロックデバイスがあります。これにより、デバイス自体に対してI / O操作を実行してデバイスをフォーマットできます。
答え2
読み書きにブロックデバイスにフォーマットされたファイルシステムは必要ありません。ブロックデバイスまたはパーティション(/dev/sda1など)を開き、ブロックを直接読み書きできます。これは、mke2fsやe2fsckなどのツールがデバイス自体のブロックを読み書きして、デバイス内のファイルシステムをフォーマットまたは回復する方法です。
さまざまな種類のデバイス(HDD、CDROM、NVMe、さまざまなファイルシステム、ファイル、ディレクトリなど)に類似したアクセス方法を持つことは、Unixシリーズシステムの利点の1つです。