フォークとは
フォーク(英: fork)とは、コンピュータの
ファイルシステム内で特定のオブジェクトに関連付けられる
メタデータの一種です。このフォークは、ファイルがどのようにデータを構造化し、情報を保持するのかを示します。多くの
ファイルシステムでは、ファイルが1つ以上のフォークを持つことが可能です。この機能は、
拡張ファイル属性と似た働きをしますが、フォークの場合はデータサイズに制限がなく、必要に応じて様々な大きさを取ることができるのが特徴です。さらに、フォークのサイズがデータ本体を超える場合もありません。
最初に挙げなければならないのが、
Appleが提供するHFS
ファイルシステムです。このHFSや古いMFSは、各オブジェクトに対してデータフォークや
リソースフォーク、さらには複数の名前付きフォークを持たせることができます。
リソースフォークは特に
メタデータを保存するために設計されており、ファイルのアイコンやアプリケーションのメニューに使用されます。
また、データの内容と体裁を分けて管理できる柔軟性もあります。たとえば、ワードプロセッサの文書では、本質的な内容をデータフォークに、形式設定情報を
リソースフォークに保存することが可能です。
HFS+では、元のデータフォークや
リソースフォークに加え、ユーザーが定義した「名前付きフォーク」を複数持つことができるように設計されていますが、最初はあまり利用されていませんでした。Mac OS 10.4以降は、拡張インライン属性のサポートに伴い、部分的な実装が行われました。
ノベルのNEFSとNSS
1985年に登場したNovell
NetWare File System(NEFS)やその後継のNovell Storage Services(NSS)も、ファイルの
メタデータを保存する点で独自のアプローチを取りました。これらは、Novell Directory Services(NDS)に関連する
メタデータやディレクトリ構造内に保存される情報を持ち、さらに「multiple data streams」という概念を利用して、ファイル内部でのデータストリームの管理を行っていました。
マイクロソフトのNTFS(New Technology File System)では、フォークは代替データストリーム(Alternate Data Streams, ADS)として知られています。1993年に初めてWindows NTがリリースされた際、この
ファイルシステムはすでに複数の名前付きフォークをサポートし、OSとの互換性を保持していました。Windows 2000では、このフォークを通じてファイル属性やサムネイル画像を保存し、Windows XPのサービスパック2ではユーザーを保護するためにAttachment Execution Service(AES)が導入されました。
セキュリティとデータ損失のリスク
フォークが異なる
ファイルシステムでサポートされている場合、特にアプリケーションはそれを十分に意識する必要があります。古いソフトウェアは、フォークにアクセスできない体制で
メタデータを利用しようとするため、結果としてセキュリティリスクが発生することがあります。
異なるシステムユーティリティがフォークを認識しない場合、さまざまな問題が起こります。ユーザーはファイルのサイズの全貌を知らず、
コンピュータウイルスが代替フォークに隠れることがあり、これは適切な対策を施されていないアンチウイルスソフトでは検出できません。また、フォークを認識しない手段でファイルが転送されると、データが失われる可能性もあります。たとえば、
電子メールや圧縮ソフトを利用するとき、このリスクが高まります。
このように、フォークはシステム間でのデータ管理において非常に重要ですが、それに伴うリスクにも注意が必要です。