ファイルシステム
特殊用途のファイルシステムとは、ディスクファイルシステムでも分散ファイルシステムでもないものを意味する。ソフトウェアが動的にファイルを用意するようなシステムがこれに当たる。用途としてはプロセス間の通信のためだったり、一時的なファイル空間のためだったりする。
特殊用途のファイルシステムはUNIXのようなファイル中心のOSで主に使用されている。例えば一部のUNIX系システムで使用されている procfs (/proc) ファイルシステムは、プロセスや他のOS機能の情報へのアクセスを提供している。
ボイジャー計画などの深宇宙探査機ではデジタルテープに基づいた特殊なファイルシステムが使われた。最近の探査機カッシーニはリアルタイムオペレーティングシステム (RTOS) のファイルシステム (あるいはRTOSに影響されたファイルシステム) を使用している。マーズ・パスファインダーのローバーもそのようなRTOSファイルシステムを使用しているが、これらはフラッシュメモリに実装されている点が重要である。
macOSのファイルシステムはClassic Mac OSから継承したHFSX (HFS+) である。HFSXはメタデータが豊富で大文字/小文字保護をするファイルシステムである。macOSはPOSIXに準拠しているが、HFSXにもPOSIX ACL準拠のパーミッション情報が追加されている。HFSXにはジャーナルが追加されてファイルシステム構造の破損を防ぐようになり、自動的にフラグメント化したファイルを正規ブロックにするなどのアロケーション機能の最適化もいくつか導入されている。
ファイル名は最大255文字である。HFS+はファイル名の格納に独自のルールで正規分解したUnicodeを使用している。macOSではファイルフォーマットはファイル名のタイプコードや拡張子等から総合的に判断している。Mac OS X v10.5からはUTIを用いてより柔軟にフォーマットを判断する。
POSIX系のファイルシステムとは異なり、ファイルをディレクトリの相対位置でアクセスするため、理論上パス長に制限がない。ただ、基盤となるDarwinがUNIX互換を保つため、システムの多くの部分で1024文字を限界としている。Carbonを経由し、HFSXを直接アクセスする場合はこの限りではない。
HFSXには3種類のリンクがある。ハードリンクとシンボリックリンクとエイリアス(英語版)である。エイリアスはリンク先のファイルが移動されたり改名されたりしてもリンクし続けるようになっている。
IBM PC/ATやPC-9800シリーズ等ではHDDのパーティションごとの利用目的を判別しやすくするため、パーティションごとに番号を与えている。
この番号により、OSの起動時の、利用すべきパーティションの自動判別が速やかに行なわれる。
ただし、正常な設定が行なわれていない場合も考えて、実際のファイルシステム状況を分析して認識する処理が一般的。 具体的には、HPFSと同じパーティション番号を引き継いで開発されたNTFSのような計画上の問題もあった。
また、開発組織がまったく違うために、Linux用のスワップファイルシステムとサン・マイクロシステムズのSolarisのファイルシステムが同じ番号を持ってしまったような例もある。
こういった状況では、誤った認識でデータ破壊が起きる可能性がある。
平坦なファイルシステムでは、ディレクトリが存在せず、ハードディスクドライブ (HDD) であれフロッピーディスクであれ、全てが唯一の階層に格納される。単純なシステムだが、ファイルの数が増えるにつれてユーザーがデータを分類して管理することが非常に困難となり、非能率的になった。
他の初期の小規模システムと同様、Mac OSは当初、平坦なファイルシステム、Macintosh File System(英語版) (MFS) を採用していた。そのバージョンのMac OSでは、Finderがあたかも階層があるかのようにファイルシステムを見せかけていた。MFSは即座に本当のディレクトリをサポートしたHierarchical File Systemに置き換えられた。
ほとんどのオペレーティングシステム (OS) はファイルシステムを提供しており、ファイルシステムは最近のOSの重要な部分となっている。初期のマイクロコンピュータのOSではファイル管理がほとんど唯一の仕事であり、「DOS」というその名前にも現われている。初期のOSにはディスクオペレーティングシステムと呼ばれるファイルシステム相当の部分が存在していた。マイクロコンピュータによっては、その部分だけをロードして使用することができた。初期のOSでは、唯一の名前のないファイルシステムがサポートされていた。例えば、CP/Mにも独自のファイルシステムがあるが、改めて名前を付けるほどの機能は持っていない。
一般に、OSはファイルシステムに関する次の2種類のインタフェースを提供する。