ファイルシステム
A system for organizing and storing data on a storage medium.
ファイルシステム(FS)は、オペレーティングシステム(OS)がデータの保存と取得方法を制御するために使用するメソッドとデータ構造です。これはデータ管理のバックボーンであり、ハードドライブ、SSD、またはUSBドライブなどのストレージデバイス上のファイルを階層的または他の構造化された方法で整理します。ファイルシステムの主な機能には、ファイルの作成、削除、読み取り、書き込み、および整理が含まれます。ファイル名、サイズ、作成日、変更日、権限、所有権などのファイルメタデータを管理します。さまざまなファイルシステムは、連続割り当て、リンク割り当て、またはインデックス割り当てなどのさまざまなデータ割り当て技術を採用しており、それぞれにパフォーマンスと断片化の特性があります。ディレクトリ構造は、フラット、階層的、またはその組み合わせにすることができます。ファイルシステムの設計における主な考慮事項には、パフォーマンス(スループットとレイテンシ)、信頼性(データの整合性、耐障害性)、スケーラビリティ(多数のファイルと大きなファイルサイズの処理)、セキュリティ(アクセス制御)、およびさまざまなオペレーティングシステムとの互換性が含まれます。例は、リムーバブルメディア用の単純なFATバリアントから、NTFS、ext4、APFSなどの複雑なジャーナリングファイルシステム、およびHDFSまたはCephなどの分散ファイルシステムまで多岐にわたります。
graph LR
Center["ファイルシステム"]:::main
Rel_database["database"]:::related -.-> Center
click Rel_database "/terms/database"
Rel_caching["caching"]:::related -.-> Center
click Rel_caching "/terms/caching"
Rel_arweave["arweave"]:::related -.-> Center
click Rel_arweave "/terms/arweave"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5歳でもわかるように説明
ファイルシステムをコンピューターのストレージの図書館員のようなものだと考えてください。どの本(ファイル)がどこにあるかを正確に把握し、誰がそれを読むことができるかを記録し、正しい場所に返却されるようにします。
🤓 Expert Deep Dive
ファイルシステムは物理ストレージメディアを抽象化し、名前空間(ディレクトリ)内に編成された名前付きデータコレクション(ファイル)の論理ビューを提示します。コアコンポーネントには、メタデータとデータブロックへのポインタを格納するinode(または同等の構造)と、名前をinodeにマッピングするディレクトリエントリが含まれます。割り当て戦略は、パフォーマンスと断片化に大きく影響します。連続割り当ては高いシーケンシャル読み取りパフォーマンスを提供しますが、外部断片化に悩まされます。リンク割り当ては外部断片化を回避しますが、ランダムアクセスパフォーマンスが悪く、ポインタ破損に対して脆弱です。インデックス割り当て(例:Unixファイルブロック)はバランスを提供しますが、直接/間接ブロック方式はファイルサイズを制限する可能性があります。ジャーナリング(例:ext4、NTFS)は、コミット前に意図されたメタデータ変更をログに記録することにより、クラッシュ後のファイルシステムの一貫性を保証することで信頼性を向上させます。コピーオンライト(CoW)ファイルシステム(例:ZFS、Btrfs)は、データをその場で上書きせず、代わりに新しいコピーを作成することで、効率的なスナップショットとデータスクラビングを可能にし、データ整合性をさらに向上させます。分散ファイルシステム(例:HDFS、GlusterFS)は、複数のノードにデータをストライピングすることでスケーラビリティと耐障害性に対処し、洗練された一貫性モデルとネットワークプロトコルを必要とします。