ファイルシステム

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピューティングでは、ファイルシステムまたはファイルシステム(多くの場合、 fsと省略されます)は、オペレーティングシステムがデータの保存方法と取得方法を制御するために使用する方法とデータ構造です[1]ファイルシステムがなければ、記憶媒体に配置されるデータは1つの大きなデータであり、あるデータが停止して次のデータが開始した場所や、データの場所を特定する方法がありません。それを取得します。データを断片に分割し、各断片に名前を付けることで、データを簡単に分離および識別できます。紙ベースのデータ管理システムの命名方法にちなんでその名前が付けられ、データの各グループは「ファイル」と呼ばれます。。 "データのグループとその名前を管理するために使用される構造と論理規則は、「ファイルシステム」と呼ばれます。

ファイルシステムにはさまざまな種類があります。それぞれに異なる構造とロジック、速度、柔軟性、セキュリティ、サイズなどのプロパティがあります。一部のファイルシステムは、特定のアプリケーションで使用するように設計されています。たとえば、ISO9660ファイルシステムは光ディスク専用に設計されています

ファイルシステムは、さまざまな種類のメディアを使用するさまざまな種類のストレージデバイスで使用できます。2019年の時点で、ハードディスクドライブは主要なストレージデバイスであり、当面はその状態が続くと予測されています。[2]使用される他の種類のメディアには、SSD磁気テープ、および光ディスクが含まれます。tmpfsなどの場合、コンピュータのメインメモリ(ランダムアクセスメモリ、RAM)を使用して、短期間の一時ファイルシステムを作成します。

一部のファイルシステムは、ローカルデータストレージデバイスで使用されます。[3]その他は、ネットワークプロトコルを介してファイルアクセスを提供します(たとえば、NFS[4] SMB、または9Pクライアント)。一部のファイルシステムは「仮想」です。つまり、提供された「ファイル」(仮想ファイルと呼ばれます)は要求に応じて計算されるか(procfssysfsなど)、バッキングストアとして使用される別のファイルシステムへのマッピングにすぎません。ファイルシステムは、ファイルのコンテンツとメタデータの両方へのアクセスを管理しますそれらのファイルについて。収納スペースの配置を担当します。物理記憶媒体に関する信頼性、効率、および調整は、設計上の重要な考慮事項です。

用語の由来

コンピュータが登場する前は、ファイルシステムという用語は、紙の文書を保存および取得する方法を説明するために使用されていました。[5] 1961年までに、この用語は元の意味と並んでコンピューター化されたファイリングに適用されていました。[6] 1964年までに、それは一般的に使用されていました。[7]

アーキテクチャ

ファイルシステムは、2つまたは3つの層で構成されています。レイヤーが明示的に分離されている場合もあれば、機能が組み合わされている場合もあります。[8]

論理ファイルシステムは、ユーザーアプリケーションとの対話を担当します。これは、ファイル操作(、、、など)用のアプリケーションプログラムインターフェイス(API)を提供し、要求された操作をその下のレイヤーに渡して処理します。論理ファイルシステムは、「開いているファイルテーブルエントリとプロセスごとのファイル記述子を管理する」。[9]このレイヤーは、「ファイルアクセス、ディレクトリ操作、[および]セキュリティと保護」を提供します。[8]OPENCLOSEREAD

2番目のオプションのレイヤーは仮想ファイルシステムです。「このインターフェースにより、物理ファイルシステムの複数の同時インスタンスをサポートできます。各インスタンスはファイルシステム実装と呼ばれます」。[9]

3番目の層は物理ファイルシステムです。この層は、ストレージデバイス(ディスクなど)の物理的な動作に関係しています。読み取りまたは書き込み中の物理ブロックを処理します。バッファリングメモリ管理を処理し、ストレージメディアの特定の場所にブロックを物理的に配置します。物理ファイルシステムは、デバイスドライバーまたはチャネルと対話して、ストレージデバイスを駆動します。[8]

ファイルシステムの側面

スペース管理

注:これは、ストレージデバイスで使用されるファイルシステムにのみ適用されます。

4,096バイトのNTFSクラスターで示されるスラックスペースの例:100,000ファイル、各ファイルあたり5バイト。これは実際のデータの500,000バイトに相当しますが、格納するには409,600,000バイトのディスクスペースが必要です。

ファイルシステムは、スペースをきめ細かく割り当てます。通常、デバイス上の複数の物理ユニットです。ファイルシステムは、ファイルディレクトリを整理し、メディアのどの領域がどのファイルに属し、どの領域が使用されていないかを追跡する役割を果たします。たとえば、1980年代初頭のApple DOSでは、140キロバイトのフロッピーディスク上の256バイトのセクターがトラック/セクターマップを使用していました。[要出典]

これにより、ファイルがアロケーションユニットの正確な倍数ではない場合に未使用のスペースが発生します。これはスラックスペースと呼ばれることもあります。512バイトの割り当ての場合、平均未使用スペースは256バイトです。64 KBクラスターの場合、平均未使用スペースは32KBです。アロケーションユニットのサイズは、ファイルシステムの作成時に選択されます。ファイルシステム内にあると予想されるファイルの平均サイズに基づいて割り当てサイズを選択すると、使用できないスペースの量を最小限に抑えることができます。多くの場合、デフォルトの割り当てが妥当な使用法を提供する場合があります。ファイルシステムに非常に大きなファイルがほとんど含まれている場合、小さすぎる割り当てサイズを選択すると、オーバーヘッドが過剰になります。

ファイルシステムが断片化する可能性があります

ファイルシステムの断片化未使用のスペースまたは単一のファイルが連続していない場合に発生します。ファイルシステムを使用すると、ファイルが作成、変更、および削除されます。ファイルが作成されると、ファイルシステムはデータ用のスペースを割り当てます。一部のファイルシステムでは、ファイルの拡張に応じて、初期スペース割り当てとその後の増分割り当てを指定することが許可または要求されます。ファイルが削除されると、最終的に割り当てられたスペースは、他のファイルで使用できると見なされます。これにより、さまざまなサイズの使用済み領域と未使用領域が交互に作成されます。これは空き領域の断片化です。ファイルが作成され、最初の割り当てに使用できる連続したスペースの領域がない場合、スペースはフラグメントで割り当てる必要があります。ファイルが大きくなるように変更されると、最初に割り当てられたスペースを超える可能性があります。

一部のオペレーティングシステムでは、システム管理者がディスククォータを使用してディスクスペースの割り当てを制限する場合があります。

ファイル名

ファイル名(またはファイル名)は、ファイルシステム内の保存場所を識別するために使用されます。ほとんどのファイルシステムには、ファイル名の長さに制限があります。一部のファイルシステムでは、ファイル名で大文字と小文字が区別されません(つまり、名前MYFILEmyfileディレクトリ内の同じファイルを参照します)。その他の場合、ファイル名では大文字と小文字が区別されます(つまり、名前、、MYFILE同じディレクトリにある3つの別々のファイルを参照します) MyFilemyfile

最新のファイルシステムのほとんどでは、ファイル名にUnicode文字セットのさまざまな文字を含めることができます。ただし、特定の特殊文字の使用に制限があり、ファイル名内での使用が禁止されている場合があります。これらの文字は、デバイス、デバイスタイプ、ディレクトリプレフィックス、ファイルパス区切り文字、またはファイルタイプを示すために使用される場合があります。

ディレクトリ

ファイルシステムには通常、ユーザーがファイルを個別のコレクションにグループ化できるディレクトリ(フォルダとも呼ばれます)があります。これは、ファイル名を目次のインデックスまたはUnixライクなファイルシステムのiノード関連付けることで実装できます。ディレクトリ構造はフラット(つまり線形)である場合もあれば、ディレクトリにサブディレクトリが含まれる可能性のある階層を許可する場合もあります。ディレクトリの任意の階層をサポートする最初のファイルシステムは、Multicsオペレーティングシステムで使用されました。[10] Unixライクなシステムのネイティブファイルシステムは、たとえばAppleのように、任意のディレクトリ階層もサポートします。階層型ファイルシステム、およびクラシックMacOSの後続のHFS +MS-DOS2.0以降のバージョンのMS-DOSおよびMicrosoftWindowsFATファイルシステム、WindowsNTファミリのオペレーティングシステムNTFSファイルシステムおよびODS -2(オンディスク構造-2)以上のレベルのFiles-11OpenVMSのファイルシステム

メタデータ

その他の簿記情報は通常、ファイルシステム内の各ファイルに関連付けられています。ファイルに含まれるデータ長さは、ファイルに割り当てられたブロック数またはバイトカウントとして保存できます。ファイルが最後に変更された時刻は、ファイルのタイムスタンプとして保存される場合がありますファイルシステムは、ファイルの作成時刻、最後にアクセスされた時刻、ファイルのメタデータが変更された時刻、またはファイルが最後にバックアップされた時刻を保存する場合があります。その他の情報には、ファイルのデバイスタイプブロック文字ソケットサブディレクトリなど)、その所有者のユーザーID、およびグループID、そのアクセス許可、およびその他のファイル属性(たとえば、ファイルが読み取り専用か、実行可能かなど)。

ファイルシステムは、ファイル名、ファイルの内容の長さ、フォルダー階層内のファイルの場所など、ファイルに関連付けられているすべてのメタデータをファイルの内容とは別に格納します。

ほとんどのファイルシステムは、すべてのファイルの名前を1つのディレクトリの1つの場所(そのディレクトリのディレクトリテーブル)に保存します。これは、他のファイルと同じように保存されることがよくあります。多くのファイルシステムは、ファイルのメタデータの一部のみをディレクトリテーブルに配置し、そのファイルの残りのメタデータは、 iノードなどの完全に別個の構造に配置します

ほとんどのファイルシステムは、特定のファイルに関連付けられていないメタデータも保存します。このようなメタデータには、未使用の領域に関する情報(空き領域ビットマップブロック可用性マップ)、および不良セクターに関する情報が含まれます多くの場合、割り当てグループに関するこのような情報は、割り当てグループ自体の内部に保存されます。

拡張ファイル属性を使用して、 NTFSXFSext2ext3、一部のバージョンのUFSHFS +などのファイルシステムに追加の属性を関連付けることができます一部のファイルシステムは、ドキュメントの作成者、ドキュメントの文字エンコード、画像のサイズなどのユーザー定義の属性を提供します。

一部のファイルシステムでは、さまざまなデータコレクションを1つのファイル名に関連付けることができます。これらの個別のコレクションは、ストリームまたはフォークと呼ばれる場合がありますAppleはMacintoshでフォークファイルシステムを長い間使用しており、MicrosoftはNTFSでストリームをサポートしています。一部のファイルシステムは、単一のファイル名でファイルの複数の過去のリビジョンを維持します。ファイル名自体が最新バージョンを取得しますが、以前に保存されたバージョンには、「filename; 4」や「filename(-4)」などの特別な命名規則を使用してアクセスし、4回前のバージョンにアクセスできます。

どのファイルシステムがどの種類のメタデータをサポートするかについての詳細は 、ファイルシステム#メタデータの比較を参照してください。

抽象ユーザーインターフェースとしてのファイルシステム

場合によっては、ファイルシステムはストレージデバイスを使用しない場合がありますが、データが保存されているか動的に生成されているかに関係なく、データへのアクセスを整理および表すために使用できます(例:procfs)。

ユーティリティ

ファイルシステムには、ファイルシステムのインスタンスを初期化、パラメータ変更、および削除するためのユーティリティが含まれています。一部には、ファイルシステムに割り当てられたスペースを拡張または切り捨てる機能が含まれています。

ディレクトリユーティリティを使用して、ディレクトリエントリ(単数:dentry[11]としても知られているディレクトリエントリを作成、名前変更、および削除したり、ディレクトリに関連付けられたメタデータを変更したりできます。ディレクトリユーティリティには、ディレクトリへの追加リンク(Unixではハードリンク) 、親リンクの名前変更( Unixライクなオペレーティングシステムでは ".." )、 [説明が必要]、ファイルへの双方向リンクを作成する機能も含まれる場合があります。

ファイルユーティリティは、ファイルの作成、一覧表示、コピー、移動、削除、およびメタデータの変更を行います。データの切り捨て、スペース割り当ての切り捨てまたは拡張、ファイルのインプレースでの追加、移動、および変更が可能な場合があります。ファイルシステムの基本構造に応じて、ファイルの先頭から先頭に追加または切り捨てたり、ファイルの途中にエントリを挿入したり、ファイルからエントリを削除したりするメカニズムを提供する場合があります。ファイルシステムが削除解除機能を提供している場合、削除されたファイルのためにスペースを解放するユーティリティもこのカテゴリに属します。

一部のファイルシステムは、空き領域の再編成、空き領域の安全な消去、最小限のアクティビティ時にこれらの機能を実行するユーティリティを提供することによる階層構造の再構築などの操作を延期します。例として、ファイルシステムの最適化ユーティリティがあります。

ファイルシステムユーティリティの最も重要な機能のいくつかは、所有権のバイパスまたは基盤となるデバイスへの直接アクセスを伴う可能性のある監視アクティビティです。これには、高性能のバックアップとリカバリ、データレプリケーション、およびファイルシステム内のさまざまなデータ構造と割り当てテーブルの再編成が含まれます。

アクセスの制限と許可

データへのアクセスを制御するためにファイルシステムによって使用されるいくつかのメカニズムがあります。通常、目的は、ユーザーまたはユーザーのグループによるファイルの読み取りまたは変更を防ぐことです。もう1つの理由は、アクセスが特定のプログラムに制限される可能性があるように、データが制御された方法で変更されるようにすることです。例としては、ファイルまたは他の場所のメタデータに保存されているパスワードや、アクセス許可ビット、アクセス制御リスト、または機能の形式でのファイルのアクセス許可があります。ファイルシステムユーティリティがメディアレベルでデータにアクセスして構造を再編成し、効率的なバックアップを提供できるようにする必要があるということは、通常、これらは礼儀正しいユーザーにのみ有効であり、侵入者には有効ではないことを意味します。

ファイルデータを暗号化する方法は、ファイルシステムに含まれている場合があります。データを効果的に管理するためにファイルシステムユーティリティが暗号化シードを知る必要がないため、これは非常に効果的です。暗号化に依存するリスクには、攻撃者がデータをコピーし、ブルートフォースを使用してデータを復号化できるという事実が含まれます。さらに、シードを失うことは、データを失うことを意味します。

整合性の維持

ファイルシステムの重要な責任の1つは、ファイルシステムにアクセスするプログラムによるアクションに関係なく、セカンダリストレージ内のファイルシステム構造の一貫性を維持することです。これには、ファイルシステムを変更するプログラムが異常終了した場合、またはファイルシステムにアクティビティが完了したことを通知しなかった場合に実行されるアクションが含まれます。これには、メタデータ、ディレクトリエントリの更新、およびバッファリングされているが物理ストレージメディアでまだ更新されていないデータの処理が含まれる場合があります。

ファイルシステムが対処しなければならない他の障害には、メディア障害またはリモートシステムへの接続の喪失が含まれます。

オペレーティングシステムの障害または「ソフト」電源障害が発生した場合は、個々のプログラムに障害が発生した場合と同様に、ファイルシステム内の特別なルーチンを呼び出す必要があります。

ファイルシステムは、損傷した構造を修正できる必要もあります。これらは、OSがファイルシステムに通知できなかったオペレーティングシステムの障害、電源障害、またはリセットの結果として発生する可能性があります。

ファイルシステムは、特定のファイルまたはディレクトリの問題だけでなく、システムの問題の分析を可能にするために、イベントも記録する必要があります。

ユーザーデータ

ファイルシステムの最も重要な目的は、ユーザーデータを管理することです。これには、データの保存、取得、更新が含まれます。

一部のファイルシステムは、メディアにとって効率的な方法で収集および保存されるバイトのストリームとして、保存用のデータを受け入れます。プログラムがデータを取得するとき、プログラムはメモリバッファのサイズを指定し、ファイルシステムはメディアからバッファにデータを転送します。ランタイムライブラリルーチンを使用すると、ユーザープログラムが長さを指定するライブラリ呼び出しに基づいてレコードを定義できる場合があります。ユーザープログラムがデータを読み取ると、ライブラリはファイルシステムを介してデータを取得し、レコードを返します。

一部のファイルシステムでは、すべての書き込みと読み取りに使用される固定レコード長を指定できます。これにより、n番目のレコードの検索とレコードの更新が容易になります。

キーとも呼ばれる各レコードのIDにより、より高度なファイルシステムが実現します。ユーザープログラムは、場所に関係なく、レコードの読み取り、書き込み、および更新を行うことができます。これには、通常、キーブロックとデータブロックを分離するメディアブロックの複雑な管理が必要です。レコードを見つけるためのピラミッド構造を使用して、非常に効率的なアルゴリズムを開発できます。[12]

ファイルシステムの使用

ユーティリティ、言語固有のランタイムライブラリ、およびユーザープログラムは、ファイルシステムAPIを使用してファイルシステムの要求を行います。これらには、データ転送、配置、メタデータの更新、ディレクトリの管理、アクセス仕様の管理、および削除が含まれます。

1つのシステム内の複数のファイルシステム

多くの場合、小売システムは、ストレージデバイス全体を占める単一のファイルシステムで構成されます。

別のアプローチは、異なる属性を持つ複数のファイルシステムを使用できるようにディスクをパーティション分割することです。ブラウザのキャッシュまたは電子メールストレージとして使用する1つのファイルシステムは、小さな割り当てサイズで構成されている場合があります。これにより、他のファイル割り当てに干渉しないディスクの狭い領域で、ブラウザアクティビティに典型的なファイルを作成および削除するアクティビティが維持されます。比較的大きなブロックサイズのオーディオまたはビデオファイルを保存するために、別のパーティションが作成される場合があります。さらに別のものは、通常、読み取り専用に設定され、定期的にのみ書き込み可能に設定されます。

クラウドシステムで主に使用される3番目のアプローチは、「ディスクイメージ」を使用して、同じ属性を持つかどうかに関係なく、別の(ホスト)ファイルシステム内にファイルとして追加のファイルシステムを格納することです。一般的な例は仮想化です。1人のユーザーが( NTFSを使用して)実稼働Windows環境の仮想マシンで( ext4ファイルシステムを使用して)実験的なLinuxディストリビューションを実行できます。ext4ファイルシステムはディスクイメージに存在し、NTFSホストファイルシステムで はファイル(またはハイパーバイザーと設定によっては複数のファイル)として扱われます。

1つのシステムに複数のファイルシステムがあると、1つのパーティションが破損した場合でも、残りのファイルシステムがそのまま残ることが多いという追加の利点があります。これには、システムパーティション、または起動しないシステムのウイルス破壊が含まれます。専用アクセスを必要とするファイルシステムユーティリティは、効果的に断片的に完成させることができます。さらに、最適化より効果的かもしれません。ウイルススキャンやバックアップなど、いくつかのシステムメンテナンスユーティリティもセグメントで処理できます。たとえば、最後のバックアップ以降に何も追加されていない場合は、ビデオを含むファイルシステムを他のすべてのファイルと一緒にバックアップする必要はありません。画像ファイルに関しては、マスター(元の)画像に書き込まれた「新しい」データのみを含む差分画像を簡単に「スピンオフ」することができます。差分画像は、両方の安全上の懸念に使用できます(「使い捨て」システムとして-ウイルスによって破壊または汚染された場合、古い画像を削除して新しい画像を数秒で作成できるため、ウイルスによって破壊または汚染された場合でも迅速に復元できます。自動化された手順)および迅速な仮想マシンの展開(差分イメージは、スクリプトをバッチで使用して迅速に生成できるため)。

設計上の制限

すべてのファイルシステムには、そのシステム内の最大保存可能データ容量を定義する機能制限があります。これらの機能制限は、現在のストレージシステムの規模と、将来のストレージシステムの規模に基づいて、設計者が推測する最善の方法です。ディスクストレージはほぼ指数関数的に増加し続けているため(ムーアの法則を参照)、数年後、ファイルシステムは設計上の制限に達し続けており、コンピュータユーザーはこれまで以上に容量の大きい新しいシステムに繰り返し移行する必要があります。

ファイルシステムの複雑さは通常、利用可能なストレージ容量に比例して変化します。50KBから512KBのストレージを備えた1980年代初頭の家庭用コンピュータのファイルシステムは、数百ギガバイトの容量を備えた最新のストレージシステムには合理的な選択ではありません。同様に、最新のファイルシステム構造の複雑さは、初期のストレージシステムの非常に限られた容量をすぐに消費するか、それを超えるため、最新のファイルシステムはこれらの初期のシステムにとって合理的な選択ではありません。

ファイルシステムの種類

ファイルシステムの種類は、ディスク/テープファイルシステム、ネットワークファイルシステム、および専用ファイルシステムに分類できます。

ディスクファイルシステム

ディスクファイルシステムは、ディスクストレージメディアの機能を利用して、短時間でデータをランダムにアドレス指定します。追加の考慮事項には、最初に要求された後のデータへのアクセス速度、および次のデータも要求される可能性があるという予想が含まれます。これにより、複数のユーザー(またはプロセス)が、データの順番に関係なく、ディスク上のさまざまなデータにアクセスできるようになります。例としては、FATFAT12FAT16FAT32)、exFATNTFSHFSおよびHFS +HPFSAPFSUFSext2があります。ext3ext4XFSbtrfsFiles-11Veritas File SystemVMFSZFSReiserFS、ScoutFS。一部のディスクファイルシステムは、ジャーナリングファイルシステムまたはバージョン管理ファイルシステムです

光ディスク

ISO 9660ユニバーサルディスクフォーマット(UDF)は、コンパクトディスクDVD、およびBlu-rayディスクを対象とする2つの一般的なフォーマットです。Mount Rainierは、Linuxカーネルの2.6シリーズ以降およびWindows Vista以降でサポートされているUDFの拡張機能であり、DVDへの書き換えを容易にします。

フラッシュファイルシステム

フラッシュファイルシステムは、フラッシュメモリデバイス特殊な機能、パフォーマンス、および制限を考慮します。多くの場合、ディスクファイルシステムは基盤となるストレージメディアとしてフラッシュメモリデバイスを使用できますが、フラッシュデバイス用に特別に設計されたファイルシステムを使用する方がはるかに優れています。

テープファイルシステム

テープファイルシステムは、ファイルをテープに保存するために設計されたファイルシステムおよびテープ形式です。磁気テープは、ディスクよりもランダムデータアクセス時間が大幅に長いシーケンシャルストレージメディアであり、汎用ファイルシステムの作成と効率的な管理に課題をもたらします。

ディスクファイルシステムには、通常、マスターファイルディレクトリと、使用済みおよび空きデータ領域のマップがあります。ファイルの追加、変更、または削除には、ディレクトリと使用済み/空きマップを更新する必要があります。データ領域へのランダムアクセスはミリ秒単位で測定されるため、このシステムはディスクに対して適切に機能します。

テープは、潜在的に非常に長いメディアのリールを巻き上げたり巻き戻したりするために線形運動を必要とします。このテープの動きは、読み取り/書き込みヘッドをテープの一方の端からもう一方の端に移動するのに数秒から数分かかる場合があります。

その結果、マスターファイルディレクトリと使用状況マップは非常に遅くなり、テープでは非効率になる可能性があります。書き込みには通常、ブロック使用状況マップを読み取って書き込み用の空きブロックを見つけ、使用状況マップとディレクトリを更新してデータを追加してから、テープを進めて正しい場所にデータを書き込みます。追加のファイル書き込みごとに、マップとディレクトリを更新してデータを書き込む必要があります。これには、ファイルごとに数秒かかる場合があります。

代わりに、テープファイルシステムでは通常、ファイルディレクトリをデータと混合されたテープ全体に分散させることができます。これはストリーミングと呼ばれるため、新しいデータを書き込むために時間のかかる繰り返しのテープ動作は必要ありません。

ただし、この設計の副作用として、テープのファイルディレクトリを読み取るには、通常、テープ全体をスキャンして、散在するすべてのディレクトリエントリを読み取る必要があります。テープストレージで動作するほとんどのデータアーカイブソフトウェアは、テープカタログのローカルコピーをディスクファイルシステムに保存するため、テープメディアを再スキャンしなくても、テープにファイルをすばやく追加できます。ローカルテープカタログのコピーは、通常、指定された期間使用されなかった場合は破棄されます。その時点で、将来使用する場合は、テープを再スキャンする必要があります。

IBMは、Linear Tape FileSystemと呼ばれるテープ用のファイルシステムを開発しました。このファイルシステムのIBM実装は、オープンソースのIBMリニアテープファイルシステム—シングルドライブエディション(LTFS-SDE)製品としてリリースされました。リニアテープファイルシステムは、テープ上の個別のパーティションを使用してインデックスメタデータを記録するため、テープ全体にディレクトリエントリが分散することに関連する問題を回避できます。

テープフォーマット

テープへのデータの書き込み、テープの消去、またはフォーマットは、多くの場合、非常に時間のかかるプロセスであり、大きなテープでは数時間かかる場合があります。[a] 多くのデータテープテクノロジーでは、新しいデータをテープに上書きする前にテープをフォーマットする必要はありません。これは、シーケンシャルメディア上のデータを上書きするという本質的に破壊的な性質によるものです。

テープのフォーマットには時間がかかるため、通常、テープは事前にフォーマットされているため、テープユーザーは新しいテープを使用するための準備に時間を費やす必要がありません。通常必要なのは、使用前に識別メディアラベルをテープに書き込むことだけです。これでも、新しいテープを初めて使用するときにソフトウェアによって自動的に書き込むことができます。

データベースファイルシステム

ファイル管理のもう1つの概念は、データベースベースのファイルシステムの概念です。階層構造の管理の代わりに、またはそれに加えて、ファイルは、ファイルのタイプ、トピック、作成者、または同様のリッチメタデータなどの特性によって識別されます。[13]

IBM DB2 for i [14](以前はDB2 / 400およびDB2for i5 / OSと呼ばれていました)は、オブジェクトベースのIBM i [15]オペレーティングシステム(以前はOS / 400およびi5 / OSと呼ばれていました)の一部としてのデータベースファイルシステムです。 )、単一レベルのストアを組み込み、IBM Power Systems(以前はAS / 400およびiSeriesとして知られていました)で実行されます。これは、Frank G. SoltisIBMのIBMiの元チーフサイエンティストによって設計されました。1978年から1988年頃、IBMRochesterのFrankG。Soltisと彼のチームは、Microsoftのような他の人が後で達成できなかったデータベースファイルシステムのようなテクノロジーの設計と適用に成功しました。[16] これらの技術は、非公式に「要出典」として知られています[要出典]また、初期のメインフレームテクノロジーから拡張された基本的な側面はほとんどありませんでしたが、技術的な観点からは多くの点でより高度でした[要出典]

「純粋な」データベースファイルシステムではないが、データベースファイルシステムのいくつかの側面を使用する他のいくつかのプロジェクト:

  • 多くのWebコンテンツ管理システムは、リレーショナルDBMSを使用してファイルを保存および取得します。たとえば、XHTMLファイルはXMLまたはテキストフィールドとして保存されますが、画像ファイルはblobフィールドとして保存されます。SQL SELECT(オプションのXPathを使用)ステートメントはファイルを取得し、「通常のファイルシステム」よりも高度なロジックとより豊富な情報の関連付けを使用できるようにします。多くのCMSには、データベース内にメタデータのみを保存するオプションもあり、ファイルのコンテンツを保存するために標準のファイルシステムが使用されます。
  • Apache HadoopGoogleファイルシステムなどのアプリケーションによって具体化された非常に大きなファイルシステムは、いくつかのデータベースファイルシステムの概念を使用しています。

トランザクションファイルシステム

一部のプログラムでは、複数のファイルシステムを変更するか、何らかの理由で1つ以上の変更が失敗した場合は、何も変更しない必要があります。たとえば、ソフトウェアをインストールまたは更新しているプログラムは、実行可能ファイル、ライブラリ、および/または構成ファイルを書き込む場合があります。書き込みの一部が失敗し、ソフトウェアが部分的にインストールまたは更新されたままになっている場合、ソフトウェアが壊れているか、使用できない可能性があります。コマンドシェルなどの主要なシステムユーティリティの更新が不完全な場合、システム全体が使用できない状態になる可能性があります。

トランザクション処理はアトミック性の保証を導入し、トランザクション内の操作がすべてコミットされるか、トランザクションを中止してシステムがその部分的な結果をすべて破棄することを保証します。これは、クラッシュまたは電源障害が発生した場合、回復後、保存された状態が一貫していることを意味します。ソフトウェアが完全にインストールされるか、失敗したインストールが完全にロールバックされますが、使用できない部分的なインストールがシステムに残ることはありません。トランザクションは、分離の保証も提供します[説明が必要]、つまり、トランザクション内の操作は、トランザクションがコミットされるまでシステム上の他のスレッドから隠され、システム上の干渉操作はトランザクションで適切にシリアル化されます。

Windowsは、Vista以降、トランザクションNTFSと呼ばれる機能でNTFSにトランザクションサポートを追加しましたが、現在はその使用を推奨していません。[17] Valorファイルシステム[18] Amino、[19] LFS、[20]、TxOSカーネル上のトランザクションext3ファイルシステム[21 ]など、UNIXシステム用のトランザクションファイルシステムの研究プロトタイプが多数あります。]だけでなく、TFFSなどの組み込みシステムを対象としたトランザクションファイルシステム。[22]

複数のファイルシステム操作間で一貫性を確保することは、ファイルシステムトランザクションがなければ、不可能ではないにしても困難です。ファイルロックは、個々のファイルの同時実行制御メカニズムとして使用できますが、通常、ディレクトリ構造やファイルメタデータは保護されません。たとえば、ファイルロックでは、シンボリックリンクでのTOCTTOUの競合状態を防ぐことはできません。また、ファイルロックでは、ソフトウェアのアップグレードなど、失敗した操作を自動的にロールバックすることはできません。これには原子性が必要です。

ジャーナリングファイルシステムは、ファイルシステム構造にトランザクションレベルの整合性を導入するために使用される手法の1つです。ジャーナルトランザクションは、OSAPIの一部としてプログラムに公開されません。これらは、単一のシステムコールの粒度で一貫性を確保するために内部でのみ使用されます。

データバックアップシステムは通常、トランザクション方式で保存されたデータの直接バックアップをサポートしていないため、信頼性が高く一貫性のあるデータセットのリカバリが困難になります。ほとんどのバックアップソフトウェアは、データセット全体の複数のファイル間で共有されるトランザクション状態に関係なく、特定の時間以降に変更されたファイルを記録するだけです。回避策として、一部のデータベースシステムは、その時点までのすべてのデータを含むアーカイブ状態ファイルを生成するだけであり、バックアップソフトウェアはそれをバックアップするだけで、アクティブなトランザクションデータベースと直接対話しません。リカバリでは、バックアップソフトウェアによってファイルが復元された後、状態ファイルとは別にデータベースを再作成する必要があります。

ネットワークファイルシステム

ネットワークファイルシステムは、リモートファイルアクセスプロトコルのクライアントとして機能し、サーバー上のファイルへのアクセスを提供するファイルシステムですローカルインターフェイスを使用するプログラムは、ネットワークに接続されたリモートコンピュータの階層ディレクトリとファイルを透過的に作成、管理、およびアクセスできます。ネットワークファイルシステムの例には、NFSAFSSMBプロトコル用のクライアント、FTPおよびWebDAV用のファイルシステムのようなクライアントが含まれます。

共有ディスクファイルシステム

共有ディスクファイルシステムは、多数のマシン(通常はサーバー)がすべて同じ外部ディスクサブシステム(通常はSAN)にアクセスできるシステムです。ファイルシステムはそのサブシステムへのアクセスを調停し、書き込みの衝突を防ぎます。例としてはRed HatGFS2、IBMの現在Spectrum Scaleとして知られているGPFS 、 DataPlowのSFS 、 SGICXFSQuantum CorporationのStorNextVersityのScoutFSなどがあります。

特別なファイルシステム

特別なファイルシステム、オペレーティングシステムの非ファイル要素をファイルとして表示するため、ファイルシステムAPIを使用して操作できます。これは、 Unixライクなオペレーティングシステムで最も一般的に行われますが、一部の非Unixライクなオペレーティングシステムでもデバイスにファイル名が付けられます。

デバイスファイルシステム

デバイスファイルシステムは、I / Oデバイスと疑似デバイスをデバイスファイルと呼ばれるファイルとして表しますUnixライクなシステムの例にはdevfsが含まれ、Linux2.6システムではudevが含まれます。TOPS-10やそれに影響される他のオペレーティングシステムなどの非Unixライクなシステムでは、ファイルの完全なファイル名またはパス名にデバイスプレフィックスを含めることができ、ファイルシステムを含むデバイス以外のデバイスはデバイスプレフィックスによって参照されます。それに続くものなしで、デバイスを指定します。

その他の特殊ファイルシステム

  • Linuxカーネルでは、configfssysfsは、カーネルに情報を照会し、カーネル内のエンティティを構成するために使用できるファイルを提供します。
  • procfsは、プロセスと、Linuxでは他のオペレーティングシステム構造をファイルスペースにマップします。

最小限のファイルシステム/オーディオカセットストレージ

1970年代には、ディスクおよびデジタルテープデバイスは、初期のマイクロコンピュータユーザーにとっては高すぎるものでした。一般的なオーディオカセットテープ を使用した安価な基本データストレージシステムが考案されました。

システムがデータを書き込む必要がある場合、ユーザーはカセットレコーダーの「RECORD」を押してからキーボードの「RETURN」を押してカセットレコーダーが録音中であることをシステムに通知するように通知されました。システムは、時間同期を提供するサウンドを作成し、次にプレフィックス、データ、チェックサム、およびサフィックスをエンコードする変調サウンドを作成しました。システムがデータを読み取る必要がある場合、ユーザーはカセットレコーダーの「再生」を押すように指示されました。システムはリッスンしますサウンドのバーストが同期として認識されるまで待機しているテープ上のサウンドに。その後、システムは後続のサウンドをデータとして解釈します。データの読み取りが完了すると、システムはカセットレコーダーの「STOP」を押すようにユーザーに通知します。それは原始的でしたが、(ほとんど)機能しました。一部のシステム( Commodore PETなど)ではありますが、データは通常は名前のない形式で順番に保存されていました。一連のコンピューター)は、ファイルに名前を付けることを許可しました。テープを早送りし、テープカウンターで観察して、テープ上の次のデータ領域のおおよその開始点を見つけることにより、複数のデータセットを書き込んで特定することができます。ユーザーは、次のデータ領域の再生を開始するための適切な場所を見つけるために、サウンドを聞く必要がある場合があります。一部の実装には、データに散在する可聴音も含まれていました。

フラットファイルシステム

フラットファイルシステムには、サブディレクトリはありません。すべてのファイルのディレクトリエントリは、単一のディレクトリに保存されます。

フロッピーディスクメディアが最初に利用可能になったとき、利用可能なデータスペースが比較的少ないため、このタイプのファイルシステムで十分でした。CP / Mマシンはフラットファイルシステムを特徴としており、ファイルを16のユーザー領域の1つに割り当てることができ、一般的なファイル操作は、デフォルトですべてのユーザー領域で機能するのではなく、1つで機能するように絞り込まれました。これらのユーザー領域は、ファイルに関連付けられた特別な属性にすぎませんでした。つまり、これらの領域ごとに特定のクォータを定義する必要はなく、ディスクに空きストレージスペースがある限り、ファイルをグループに追加できます。初期のAppleMacintoshには、フラットファイルシステムであるMacintoshファイルシステムも搭載されていました。ファイル管理プログラム(Macintosh Finder)がEMFSの上に部分的に階層化されたファイリングシステムのような錯覚を作り出すという点で珍しいことでした。この構造では、別のフォルダーにあるように見えても、すべてのファイルに一意の名前を付ける必要がありました。IBM DOS / 360およびOS / 360は、ディスクパック(ボリューム)上のすべてのファイルのエントリを、ボリューム目次(VTOC) と呼ばれるパック上のディレクトリに保存します。

シンプルですが、フラットなファイルシステムは、ファイルの数が増えるにつれて扱いにくくなり、データを関連するファイルのグループに整理することが困難になります。

フラットファイルシステムファミリーに最近追加されたのは、リモートストレージサービスであるAmazonS3です。これは、ユーザーがデータの保存方法をカスタマイズできるように意図的に単純化したものです。唯一の構成要素は、バケット(無制限のサイズのディスクドライブを想像してください)とオブジェクト(ファイルの標準的な概念と類似していますが、同一ではありません)です。高度なファイル管理は、オブジェクトの名前にほぼすべての文字( '/'を含む)を使用できること、および同一のプレフィックスに基づいてバケットのコンテンツのサブセットを選択できることによって可能になります。

ファイルシステムとオペレーティングシステム

多くのオペレーティングシステムには、複数のファイルシステムのサポートが含まれています。OSとファイルシステムが緊密に絡み合っているため、ファイルシステムの機能を分離することが難しい場合があります。

ユーザーとファイルシステムの間には、オペレーティングシステムソフトウェアによって提供されるインターフェイスが必要です。このインターフェイスは、テキスト(UnixシェルOpenVMS DCLなどのコマンドラインインターフェイスによって提供されるものなど)またはグラフィカル(ファイルブラウザなどのグラフィカルユーザーインターフェイスによって提供されるものなど)にすることができます。グラフィカルな場合、ドキュメント、その他のファイル、およびネストされたフォルダーを含むフォルダーのメタファーがよく使用されます(ディレクトリとフォルダーも参照

UnixおよびUnixライクなオペレーティングシステム

Unixライクなオペレーティングシステムは仮想ファイルシステムを作成します。これにより、すべてのデバイス上のすべてのファイルが単一の階層に存在するように見えます。つまり、これらのシステムには1つのルートディレクトリがあり、システムに存在するすべてのファイルはその下のどこかにあります。Unixライクなシステムは、RAMディスクまたはネットワーク共有リソースをルートディレクトリとして使用できます。

Unixライクなシステムは、各デバイスにデバイス名を割り当てますが、これはそのデバイス上のファイルにアクセスする方法ではありません。代わりに、別のデバイス上のファイルにアクセスするには、最初に、それらのファイルがディレクトリツリーのどこに表示されるかをオペレーティングシステムに通知する必要があります。このプロセスは、ファイルシステムのマウントと呼ばれます。たとえば、CD-ROM上のファイルにアクセスするには、オペレーティングシステムに「このCD-ROMからファイルシステムを取り出して、そのようなディレクトリの下に表示させる」ように指示する必要があります。オペレーティングシステムに指定されたディレクトリはマウントポイントと呼ばれます。 たとえば、/ mediaのようになります。/ mediaディレクトリは多くのUnixシステムに存在します(ファイルシステム階層標準で指定されているように))、特にCD、DVD、USBドライブ、フロッピーディスクなどのリムーバブルメディアのマウントポイントとして使用することを目的としています。空の場合もあれば、個々のデバイスをマウントするためのサブディレクトリが含まれている場合もあります。通常、ファイルシステムのマウントを許可できる のは管理者(つまりrootユーザー)だけです。

Unixライクなオペレーティングシステムには、マウントプロセスを支援し、新しい機能を提供するソフトウェアとツールが含まれていることがよくあります。これらの戦略のいくつかは、その目的を反映して「自動マウント」と呼ばれています。

  • 多くの場合、オペレーティングシステムが起動するとすぐに、ルート以外のファイルシステムが使用可能になる必要がありますしたがって、すべてのUnixライクなシステムは、起動時にファイルシステムをマウントするための機能を提供します。システム管理者は、これらのファイルシステムを構成ファイルfstabSolarisではvfstab )で定義します。これは、オプションとマウントポイントも示します。
  • 状況によっては、起動時に特定のファイルシステムをマウントする必要はありませんが、その後の使用が望まれる場合があります。必要に応じて事前定義されたファイルシステムをマウントできるUnixライクなシステム用のユーティリティがいくつかあります。
  • リムーバブルメディアを使用すると、物理的に接続しなくても、プログラムやデータをマシン間で転送できます。一般的な例としては、USBフラッシュドライブCD-ROMDVDなどがあります。したがって、ユーティリティは、メディアの存在と可用性を検出し、ユーザーの介入なしにそのメディアをマウントするために開発されました。
  • プログレッシブUnixライクなシステムでは、スーパーマウントと呼ばれる概念も導入されています。たとえば、Linuxsupermount-ngプロジェクトを参照してください。たとえば、スーパーマウントされたフロッピーディスクをシステムから物理的に取り外すことができます。通常の状況では、ディスクを取り外す前に、ディスクを同期してからアンマウントする必要があります。同期が行われていれば、別のディスクをドライブに挿入できます。システムはディスクが変更されたことを自動的に認識し、新しいメディアを反映するようにマウントポイントの内容を更新します。
  • オートマウンタは、マウントする必要のあるディレクトリが参照されると、ファイルシステムを自動的にマウントします。これは通常、リムーバブルメディアに適しているように、メディアの挿入などのイベントに依存するのではなく、ネットワークサーバー上のファイルシステムに使用されます。

Linux

Linuxは多数のファイルシステムをサポートしていますが、ブロックデバイス上のシステムディスクの一般的な選択肢には、ext *ファミリー(ext2ext3ext4)、XFSJFSbtrfsなどがあります。フラッシュ変換レイヤー(FTL)またはメモリテクノロジーデバイス(MTD)のないrawフラッシュには、 UBIFSJFFS2YAFFSなどがあります。SquashFSは、一般的な圧縮された読み取り専用ファイルシステムです。

Solaris

以前のリリースのSolarisは、起動可能および補足ファイルシステム用にデフォルトで(ジャーナリングまたはログなし)UFSに設定されていました。Solarisは、デフォルトでサポートされ、拡張されたUFSになっています。

他のファイルシステムのサポートと、Veritas Software Corp.(ジャーナリング)VxFS、Sun Microsystems(クラスタリング)QFS、Sun Microsystems(ジャーナリング)UFS、Sun Microsystems(オープンソース、プール可能、128ビット圧縮可能、およびエラー修正)ZFS

カーネル拡張機能がSolarisに追加され、起動可能なVeritasVxFS操作が可能になりました。ロギングまたはジャーナリングがSunのSolaris7のUFSに追加されましたSolaris 10、Solaris Express、OpenSolaris、およびSolarisオペレーティングシステムの他のオープンソースバリアントのリリースは、後で起動可能なZFSをサポートしました。

論理ボリューム管理では、冗長性、容量、スループットを追加する目的で、ファイルシステムを複数のデバイスにまたがることができます。Solarisのレガシー環境では、Solaris Volume Manager(旧称Solstice DiskSuite)を使用できます。複数のオペレーティングシステム(Solarisを含む)がVeritas VolumeManagerを使用する場合があります。最新のSolarisベースのオペレーティングシステムは、 ZFSの仮想ストレージプールを活用することでボリューム管理の必要性を排除しています

macOS

macOS(以前のMac OS X)Apple File System (APFS)を使用しており、2017年にHFS Plus(HFS +)と呼ばれる従来のMacOSから継承されたファイルシステムに取って代わりました。Appleは、HFS +に「MacOSExtended」という用語も使用しています。[23] HFS Plusは、メタデータが豊富で大文字と小文字を区別しますが、(通常は)大文字と小文字を区別しないファイルシステムです。macOSのUnixルートにより、UnixパーミッションがHFSPlusに追加されました。HFS Plusの新しいバージョンでは、ファイルシステム構造の破損を防ぐためにジャーナリングが追加され、外部のデフラグツールを必要とせずにファイルを自動的にデフラグするために、割り当てアルゴリズムにいくつかの最適化が導入されました。

ファイル名は最大255文字です。HFS Plusは、Unicodeを使用してファイル名を保存します。macOSでは、ファイルタイプは、ファイルのメタデータに保存されているタイプコード、またはファイル名拡張子から取得できます

HFS Plusには、Unixスタイルのハードリンク、Unixスタイルのシンボリックリンク、およびエイリアスの3種類のリンクがありますエイリアスは、移動または名前変更された場合でも、元のファイルへのリンクを維持するように設計されています。これらはファイルシステム自体ではなく、ユーザーランドのファイルマネージャーコードによって解釈されます。

2017年6月5日にAppleのWWDCイベントで発表されたmacOS10.13 High Sierraは、ソリッドステートドライブでApple FileSystemを使用します

macOSは、NeXTSTEPを介してBSD Unix Fast FileSystemから派生したUFSファイルシステムもサポートしていました。ただし、Mac OS X Leopard以降、macOSをUFSボリュームにインストールすることはできません。また、UFSボリュームにインストールされているLeopard以前のシステムをLeopardにアップグレードすることもできません。[24] Mac OS Xの時点で、LionUFSのサポートは完全に廃止されました。

新しいバージョンのmacOSは、Windowsで一般的なレガシーFATファイルシステム(16および32)の読み取りと書き込みが可能です。また、Windows用の新しいNTFSファイルシステムを読み取ることもできます。Mac OS Xより前のバージョンのmacOSでNTFSファイルシステムに書き込むには、SnowLeopardのサードパーティソフトウェアが必要です。Mac OS X 10.6(Snow Leopard)以降では、NTFSファイルシステムへの書き込みが可能ですが、重要なシステム設定の変更後のみです(これを自動化するサードパーティソフトウェアが存在します)。[25]

最後に、macOSは、バージョン10.6.5以降のMac OS X Snow Leopard以降、 exFATファイルシステムの読み取りと書き込みをサポートしています。[26]

OS / 2

OS / 2 1.2は、高性能ファイルシステム(HPFS)を導入しました。HPFSは、さまざまなコードページの大文字と小文字が混在するファイル名、長いファイル名(255文字)、ディスクスペースのより効率的な使用、ディスクボリューム上で関連するアイテムを互いに近くに保つアーキテクチャ、データの断片化の減少、エクステントベースのスペースをサポートします割り当て、ディレクトリのB +ツリー構造、およびディスクの中間点にあるルートディレクトリにより、平均的なアクセスが高速化されます。ジャーナルファイルシステム(JFS)は1999年に出荷されました

PC-BSD

PC-BSDはFreeBSDのデスクトップバージョンであり、FreeNASと同様にFreeBSDZFSサポートを継承しています。PC-BSDの新しいグラフィカルインストーラーは、ZFSおよびRAID-Zプールインストールでの/(root )と、 Geliを使用したディスク暗号化を最初から簡単で便利な(GUI)方法で処理できます。現在のPC-BSD9.0 +の「IsotopeEdition」には、ZFSファイルシステムバージョン5とZFSストレージプールバージョン28があります。

プラン9

BellLabsのPlan9は、すべてをファイルとして扱い、ファイルがアクセスされるのと同じようにすべてのオブジェクトにアクセスします(つまり、ioctlまたはmmapはありません)。ネットワーキング、グラフィックス、デバッグ、認証、機能、暗号化、およびその他のサービスは、Iを介してアクセスされます。ファイル記述子に対する/ O操作9Pプロトコルは、ローカルファイルとリモートファイルの違いを取り除きます。Plan 9のファイルシステムは、プライベートなプロセスごとの名前空間を使用して編成されているため、各プロセスは、分散システムでリソースを提供する多くのファイルシステムの異なるビューを持つことができます。

Infernoオペレーティングシステムは、これらの概念をPlan9と共有しています。

Microsoft Windows

Windowsコマンドシェルでのディレクトリリスト

Windowsは、FATNTFSexFATライブファイルシステム、およびReFSファイルシステムを使用します(これらの最後のものは、 Windows Server 2012Windows Server 2016Windows 8Windows 8.1、およびWindows 10でのみサポートされ、使用可能です。Windowsは起動できません。それから)。

Windowsは、ユーザーレベルでドライブ文字の抽象化を使用して、あるディスクまたはパーティションを別のディスクまたはパーティションと区別します。たとえば、パス C:\ WINDOWSは、文字Cで表されるパーティション上のディレクトリWINDOWSを表します。ドライブC:は、Windowsが通常インストールされて起動するプライマリハードディスクドライブパーティションに最も一般的に使用されます。この「伝統」は非常に根付いているため、オペレーティングシステムがインストールされているドライブがCであると想定する多くのアプリケーションにバグが存在します。ドライブ文字の使用、およびドライブ文字として「C」を使用する伝統プライマリハードディスクドライブパーティションは、MS-DOSにトレースできます、文字AとBは、最大2台のフロッピーディスクドライブ用に予約されています。これは、1970年代のCP / Mから派生し、最終的には1967年 のIBMのCP / CMSから派生しました。

FAT

FATファイルシステムのファミリは、すべてのバージョンのWindowsおよびMS-DOS / PC DOSOS / 2、およびDR-DOSを含む、パーソナルコンピュータ用のほぼすべてのオペレーティングシステムでサポートされています(PC DOSはMS-DOSのOEMバージョンであり、MS-DOSは元々SCP86- DOSに基づいていました。DR-DOSはCP / M-86の後継であるDigitalResearchConcurrentDOSに基づいていました。)したがって、FATファイルシステムは、ほとんどすべてのタイプと年齢のコンピュータとデバイス間のユニバーサル交換フォーマットとして最適です。

FATファイルシステムは、そのルーツをスタンドアロンディスクBASICおよび短命のMDOS / MIDASプロジェクトの(互換性のない)8ビットFATプリカーサーにまでさかのぼります。[要出典]

何年にもわたって、ファイルシステムはFAT12からFAT16およびFAT32に拡張されてきました。サブディレクトリコードページのサポート、拡張属性長いファイル名など、さまざまな機能がファイルシステムに追加されていますDigital Researchなどのサードパーティは、削除追跡のオプションのサポート、およびファイルとディレクトリのパスワードと読み取り/書き込み/実行/削除アクセス権などのアクセス許可をサポートするボリューム/ディレクトリ/ファイルベースのマルチユーザーセキュリティスキームを組み込んでいます。これらの拡張機能のほとんどは、Windowsではサポートされていません。

FAT12およびFAT16ファイルシステムには、ファイルシステムのルートディレクトリ内のエントリ数に制限があり、FAT形式のディスクまたはパーティションの最大サイズに制限がありました。

FAT32は、4 GBに近いファイルサイズ制限を除いて、FAT12およびFAT16の制限に対処しますが、NTFSと比較すると制限されたままです。

FAT12、FAT16、およびFAT32にも、ファイル名に8文字、拡張子(.exeなど)に3文字の制限があります。これは一般に8.3ファイル名制限と呼ばれます。Windows95およびWindowsNT 3.5で導入されたFAT12、FAT16、およびFAT32のオプションの拡張機能であるVFATにより、長いファイル名(LFN)を下位互換性のある方法でFATファイルシステムに格納できました。

NTFS

1993年にWindowsNTオペレーティングシステムで導入されたNTFSは、 ACLベースのアクセス許可制御を許可しました。NTFSでサポートされているその他の機能には、ハードリンク、複数のファイルストリーム、属性のインデックス作成、クォータトラッキング、スパースファイル、暗号化、圧縮、および再解析ポイント(他のファイルシステムのマウントポイントとして機能するディレクトリ、シンボリックリンク、ジャンクション、リモートストレージリンク)があります。 。

exFAT

exFATには、ファイルシステムのオーバーヘッドに関してNTFSに比べて特定の利点があります[要出典]

exFATは、FAT12、FAT16、FAT32などのFATファイルシステムとの下位互換性がありません。ファイルシステムは、Windows XP、Windows Server 2003、Windows Vista、Windows 2008、Windows 7、Windows 8、Windows10などの新しいWindowsシステムでサポートされています。

exFATは、バージョン10.6.5(Snow Leopard)以降のmacOSでサポートされています。[26] exFATのサポートを実装するにはライセンスが必要なため、他のオペレーティングシステムでのサポートはまばらです。exFATは、macOSとWindowsの両方で完全にサポートされている唯一のファイルシステムであり、4GBを超えるファイルを保持できます。[27] [28]

ActiveX

MVS

VSAMが導入される前はOS / 360システムはハイブリッドファイルシステムを実装していました。このシステムは、リムーバブルディスクパックを簡単にサポートするように設計されているため、1つのディスク( IBM用語ではボリューム)上のすべてのファイルに関連する情報は、ボリュームテーブルオブコンテンツ(VTOC)と呼ばれるフラットシステムファイルでそのディスクに保存されます。VTOCは、ファイルのすべてのメタデータを保存します。その後、システムカタログの導入により、階層的なディレクトリ構造が課されました。、オプションで、常駐ボリュームとリムーバブルボリューム上のファイル(データセット)をカタログ化できます。カタログには、データセットを特定のボリュームに関連付けるための情報のみが含まれています。ユーザーがオフラインボリューム上のデータセットへのアクセスを要求し、適切な権限を持っている場合、システムは必要なボリュームのマウントを試みます。必要なボリュームIDがOPEN要求に提供されている場合、カタログ化されたデータセットとカタログ化されていないデータセットは、カタログをバイパスしてVTOCの情報を使用して引き続きアクセスできます。さらに後で、アクセスを高速化するためにVTOCにインデックスが付けられました。

会話型モニターシステム

VM / 370のIBMConversational Monitor System(CMS)コンポーネントは、仮想ディスクミニディスク)ごとに個別のフラットファイルシステムを使用しますファイルデータと制御情報は散在し、混ざり合っています。アンカーはマスターファイルディレクトリ(MFD)と呼ばれるレコードであり、常にディスクの4番目のブロックにあります。元々、CMSは固定長の800バイトのブロックを使用していましたが、後のバージョンでは最大4Kのより大きなサイズのブロックを使用していました。データレコードへのアクセスには、2つのレベルの間接参照が必要です。ファイルのディレクトリエントリ(ファイルステータステーブル(FST)エントリと呼ばれます)は、個々のレコードのアドレスのリストを含むブロックを指します。

AS / 400ファイルシステム

AS / 400およびその後継のデータは、単一レベルストアのシステム仮想アドレス空間にマップされたシステムオブジェクトで構成されます。他のファイルシステムにあるディレクトリやファイルなど、多くの種類のオブジェクトが定義されています。ファイル・オブジェクトは、他のタイプのオブジェクトとともに、統合リレーショナル・データベースに対するAS / 400のサポートの基礎を形成します。

その他のファイルシステム

  • Prosperoファイルシステムは、仮想システムモデルに基づくファイルシステムです。[29]このシステムは、南カリフォルニア大学の情報科学研究所のB. CliffordNeuman博士によって作成されました。
  • RSREFLEXファイルシステム-ALGOL68記述
  • ミシガンターミナルシステム(MTS)のファイルシステムは、次の点で興味深いものです。(i)レコード長と行番号がファイル内の各レコードにメタデータとして関連付けられている「行ファイル」を提供し、行を追加、置換、更新できます。同じ長さまたは異なる長さのレコードであり、ファイル全体を読み書きする必要なしにファイル内の任意の場所で削除されます。(ii)プログラムキーの使用ファイルは、ユーザーおよびグループに加えて、コマンドおよびプログラムと共有または許可される場合があります。(iii)ファイルのデータとそのメタデータの両方を保護する包括的なファイルロックメカニズムがあります。[30] [31]

制限事項

ファイルシステムの種類の変換

現在存在するものとは異なるファイルシステムにファイルを配置することが有利または必要な場合があります。理由には、現在のファイルシステムの制限を超えて必要なスペースを増やす必要があることが含まれます。パスの深さは、ファイルシステムの制限を超えて増やす必要がある場合があります。パフォーマンスまたは信頼性に関する考慮事項がある場合があります。既存のファイルシステムをサポートしていない別のオペレーティングシステムへのアクセスを提供することも別の理由です。

インプレース変換

場合によっては、変換をインプレースで実行できますが、データのコピーを作成する必要があるため、ファイルシステムの移行はより保守的であり、推奨されます。[32] Windowsでは、FATおよびFAT32ファイルシステムはconvert.exeユーティリティを介してNTFSに変換できますが、その逆はできません。[32] Linuxでは、ext2をext3に変換(および元に戻す)、ext3をext4に変換する(ただし元に戻すことはできません)[33]、ext3とext4の両方をbtrfsに変換し、元に戻す情報が削除されます。[34]これらの変換は、ファイルデータ自体に同じ形式を使用し、場合によってはスパースファイルサポートを使用してメタデータを空のスペースに再配置するために可能です。[34]

別のファイルシステムへの移行

移行には、より高速な場合もありますが、追加のスペースが必要になるという欠点があります。最良のケースは、最終的なファイルシステムを含むメディアに未使用のスペースがある場合です。

たとえば、FAT32ファイルシステムをext2ファイルシステムに移行します。最初に新しいext2ファイルシステムを作成し、次にデータをファイルシステムにコピーしてから、FAT32ファイルシステムを削除します。

別の方法として、新しいファイルシステムが作成されるまで元のファイルシステムを保持するのに十分なスペースがない場合は、作業領域(リムーバブルメディアなど)を使用することです。これには時間がかかりますが、データのバックアップは良い副作用です。

長いファイルパスと長いファイル名

階層型ファイルシステムでは、ファイルは、ファイルを含むディレクトリの分岐リストであるパスを使用してアクセスされます。ファイルシステムが異なれば、パスの深さに関する制限も異なります。ファイルシステムには、個々のファイル名の長さにも制限があります。

長い名前のファイルや、あるファイルシステムから別のファイルシステムへのかなりの深さのパスにあるファイルをコピーすると、望ましくない結果が生じる可能性があります。これは、コピーを実行するユーティリティが不一致をどのように処理するかによって異なります。

も参照してください

メモ

  1. ^ LTO-6 2.5 TBテープは、160MB /秒で書き込むのに4時間以上かかります

参考文献

  1. ^ 「5.10。ファイルシステム」Linux DocumentProject 2021年12月11日取得ファイルシステムは、オペレーティングシステムがディスクまたはパーティション上のファイルを追跡するために使用するメソッドとデータ構造です。つまり、ファイルがディスク上で編成される方法です。
  2. ^ 「ストレージ、ITテクノロジーと市場、ステータスと進化」(PDF)2018年9月20日。HDDは当面の間依然として重要なストレージであり、SSDは容量に対して費用効果が高くありません
  3. ^ Arpaci-Dusseau、Remzi H。; Arpaci-Dusseau、Andrea C.(2014)、ファイルシステムの実装(PDF)、Arpaci-Dusseau Books
  4. ^ Arpaci-Dusseau、Remzi H。; Arpaci-Dusseau、Andrea C.(2014)、Sunのネットワークファイルシステム(PDF)、Arpaci-Dusseau Books
  5. ^ McGill、Florence E.(1922)。オフィス慣行とビジネス手順グレッグ出版社。p。 197 2016年8月1日取得
  6. ^ Waring、RL(1961)。機械化されたライブラリシステムの要素へのハードコピー出力の追加に関する技術的調査:最終報告書、1961年9月20日オハイオ州シンシナティ:SvcoCorporation。OCLC310795767_ 
  7. ^ ディスクファイルアプリケーション:国の最初のディスクファイルシンポジウムで発表されたレポートアメリカのデータ処理。1964年2016年8月1日取得
  8. ^ a b c アミール、ヤイール。「オペレーティングシステム600.418ファイルシステム」ジョンズホプキンス大学コンピュータサイエンス学部2016年7月31日取得
  9. ^ a bIBMCorporation 「論理ファイルシステムのコンポーネント構造」IBMナレッジセンター2016年7月31日取得
  10. ^ RCデイリー; PGノイマン(1965)。セカンダリストレージ用の汎用ファイルシステム秋の合同コンピュータ会議。AFIPSpp。213–229。土井10.1145 /1463891.1463915 2011年7月30日取得
  11. ^ Mohan、I。Chandra(2013)。オペレーティングシステムデリー:PHI LearningPvt。株式会社p。166. ISBN 97881203472672014年7月27日取得dentryという単語は「ディレクトリエントリ」の略です。dentryは、ルートからのパス内の特定のコンポーネントに他なりません。それら(ディレクトリ名またはファイル名)は、ファイルまたはディレクトリにアクセスするために提供されます[。]
  12. ^ 「KSAM:AB +ツリーベースのキー付きシーケンシャルアクセス方式」ResearchGate 2016年4月29日取得
  13. ^ 「データベース上のWindows– BeOS獣医によってスライスされ、さいの目に切られました」theregister.co.uk。2002-03-29 2014年2月7日取得
  14. ^ 「IBMDB2for i:概要」03.ibm.com 2014年2月7日取得
  15. ^ 「IBMdeveloperWorks:IBMiの新機能」Ibm.com。2011-03-08 2014年2月7日取得
  16. ^ 「XPの後継者であるLonghornがSQL、P2Pに移行–Microsoftがリーク」theregister.co.uk。2002-01-28 2014年2月7日取得
  17. ^ 「トランザクションNTFS(Windows)を使用する代わりの方法」Msdn.microsoft.com。2013-12-05 2014年2月7日取得
  18. ^ Spillane、Richard; Gaikwad、Sachin; Chinni、Manjunath; Zadok、ErezおよびWright、Charles P。; 2009; "軽量カーネル拡張を介したトランザクションファイルアクセスの有効化" ; ファイルおよびストレージテクノロジーに関する第7回USENIX会議(FAST 2009)
  19. ^ ライト、チャールズP。; スピラン、リチャード; Sivathanu、Gopalan; Zadok、Erez; 2007; "ACIDセマンティクスをファイルシステムに拡張する;ストレージでのACMトランザクション
  20. ^ セルツァー、マーゴI。; 1993; "ログ構造化ファイルシステムでのトランザクションサポート" ; データ工学に関する第9回国際会議の議事録
  21. ^ ポーター、ドナルドE。; ホフマン、オーウェンS。; ロスバッハ、クリストファーJ。; ベン、アレクサンダーとウィッチェル、エメット; 2009; "オペレーティングシステムのトランザクション" ; オペレーティングシステムの原則に関する第22回ACMシンポジウム(SOSP '09)の議事録、モンタナ州ビッグスカイ、2009年10月。
  22. ^ ギャル、エラン; トレド、シヴァン; 「マイクロコントローラ用のトランザクションフラッシュファイルシステム」
  23. ^ 「MacOSX:ファイルシステムジャーナリングについて」アップル2014年2月8日取得
  24. ^ 「MacOSX 10.5 Leopard:UFSフォーマットのボリュームへのインストール」apple.com2007年10月19日。2008年3月16日のオリジナルからアーカイブ2016年4月29日取得
  25. ^ OSXDaily(2013-10-02)。「MacOSXでNTFS書き込みサポートを有効にする方法」2014年2月6日取得
  26. ^ a b スティーブ・バンティング(2012-08-14)。EnCaseコンピュータフォレンジック-公式EnCE:EnCase認定試験官ISBN 97811182194092014年2月7日取得
  27. ^ 「Macのディスクユーティリティで利用可能なファイルシステムフォーマット」Appleサポート
  28. ^ 「exFATファイルシステム仕様」MicrosoftDocs
  29. ^ Prosperoファイルシステム:仮想システムモデルに基づくグローバルファイルシステム1992年。
  30. ^ 「汎用タイムシェアリング環境用のファイルシステム」、GC Pirkola、 Proceedings of the IEEE、1975年6月、第63巻。6、pp。918–924、ISSN 0018-9219
  31. ^ 「汎用タイムシェアリング環境における情報の保護」、Gary C.PirkolaおよびJohnSanguinetti、 Proceedings of the IEEE Symposium on Trends and Applications 1977:Computer Security and Integrity、vol。10番 4、pp.106-114
  32. ^ a b FATディスクをNTFSに変換する方法、Microsoft、2001年10月25日
  33. ^ 「Ext4ハウツー」kernel.org 2016年4月29日取得
  34. ^ a b Ext3からの変換、Btrfs wiki

ソース

さらに読む

書籍

オンライン

外部リンク