Linuxには、サポートするファイルシステムのすべての機能にアクセスするためのシステムコールがありますか?


12

Linuxは多くのファイルシステムをサポートしています(例:ext3、NTFS、FAT32など)。

次の図は、Linuxがプロセスがファイルにアクセスする方法を示しています。

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

そのため、プロセスread()がファイルを読み取るためのシステムコールを呼び出し、VFSレイヤーにアクセスし、VFSレイヤーがファイルのパーティションのファイルシステムに基づいてアクセスするファイルシステムドライバーを決定すると仮定します。読み取りが常駐します。

Linuxは(例:アクセスファイルには多くのシステムコールを提供しread()write()rename()、など)。

read()write()rename()、Linuxのサポートされているすべてのファイルシステムに関する作業。

ただし、一部のファイルシステムにのみ存在し、他のファイルシステムには存在しない特定の機能があります。たとえば、NTFSファイルシステムでは、ファイルのアーカイブビットを設定できますが、ext3ファイルシステムでは設定できません。

さて、私の質問は、Linuxがサポートするファイルシステムのすべての機能にアクセスするためのシステムコールはありますか?たとえば、Linux にはNTFSファイルシステム上のファイルにアーカイブビットを設定するシステムコールがありますか?

回答:


10

Linuxには、NTFSファイルシステム上のファイルにアーカイブビットを設定するシステムコールがありますか?

この特定のケースでは、ntfs-3gドライバーは拡張属性を介してファイル属性をエクスポートします。Linux上のNTFSのファイルに「アーカイブ」ビットを設定できますか?を参照してください

(V)FATファイルシステムにも同様のファイル属性がありますが、ioctl()関数を使用してそれらにアクセスしますioctl_fat(2)。(ioctl()一種の多目的システムコールで、実際のシステムコールを保証しないあらゆる種類のデバイス固有のものに使用されます。)

さて、私の質問は、Linuxがサポートするファイルシステムのすべての機能にアクセスするためのシステムコールがありますか?

確かに答えるのは難しいですが、反対の例が少なくとも1つありました。ext4は、ファイルの「誕生時刻」タイムスタンプを内部的にサポートします(ctimeiノード変更時の変更とは異なり、実際の作成時刻など)。しかし、ext4は「標準」ファイルシステムですが、長い間、誕生時間にアクセスするためのシステムコールはありませんでした。

2017年4月にLinux 4.11statx()システムコールが追加され、現在サポートされているはずです。

関連:


3
ntfs!=脂肪。少なくともカーネルバージョンのntfsには、アーカイブフラグを設定または取得する方法がありませんが、ヘッダーで定義されています。ヒューズベースのntfs-3gのみが(特別なioctlではなく、拡張属性を介して)サポートしているようです。
おじさんビリー

これは質問に直接関連するものではありませんが、の言及を補完するものとしてstatx、Cライブラリおよび数日前にリリースされたcoreutilsの最新バージョンでサポートされるようになりました。
スティーブンキット

@ UncleBilly、d'oh、どうやら私は読むことができませんが、自動的に(v)fatを考えました。それに気づいてくれてありがとう、私はもっと適切な参照を見つけることができるかどうかを確認します。
イルッカチュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.