ファイルシステム
[Wikipedia|▼Menu]









ファイルシステム(: file system、filesystem)は、コンピュータリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。

より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ階層構造データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。
概要

最も身近なファイルシステムは補助記憶装置上のもので、「セクタ」などと呼ばれる通常512バイトの固定サイズの「ブロック」の配列にアクセスするものである。ファイルシステムはこのセクタ群を使用してファイルやディレクトリを構成し、各セクタがどのファイルに使用され、使用されていないセクターはどれなのかを把握する必要がある。

しかし、ファイルシステム自体は記憶装置を利用する必要はない。ファイルシステムはデータへの操作とアクセスを提供するものであり、対象データが記憶装置に格納されているか (例えば、ネットワーク接続経由で) 動的に生成させるかは問題ではない[1]

ファイルシステムがストレージ上にあるかどうかに関わらず、一般的なファイルシステムはファイルのファイル名を束ねるディレクトリを持つ。通常、ファイル名は何らかのファイル・アロケーション・テーブルのインデックスと対応しており、それはMS-DOSのファイルシステムであるFATでも、Unix系ファイルシステムでのinodeでもそのようになっている。ディレクトリ構造は平坦な場合もあるし、ディレクトリの下にサブディレクトリのある階層構造の場合もある。いくつかのファイルシステムではファイル名も構造化されていて、拡張子やバージョン番号の文法が存在する。そうでない場合、ファイル名は単なる文字列であり、ファイル毎のメタデータは適当な場所に格納される。

階層型ファイルシステムはUNIXで有名なデニス・リッチーの初期の研究対象であった。それまでの実装では階層はあまり深くできなかった。例えばIBMの初期に生まれたデータベース管理システムであるIMSなどがそうである。UNIXの成功により、リッチーはその後のOS開発 (Plan 9Inferno) でもファイルシステムのコンセプトを様々な対象に広げていった。

初期のファイルシステムはファイルとディレクトリの生成、移動、削除といった機能を提供していた。ディレクトリへの追加リンクを生成する機能 (UNIXにおけるハードリンク)、親リンク (Unix系OSにおける..) の名称変更、ファイル間の双方向リンクの生成といった機能は当初は存在しなかった。

初期のファイルシステムはファイルの切捨て (内容を一部削除すること)、ファイルとファイルの連結、ファイルの生成、ファイルの移動、ファイルの削除、ファイルの更新などの機能を提供していた。ファイルの先頭へのデータ挿入 (prepend)、ファイルの先頭からの内容切捨て、任意の位置の内容の削除や挿入などといった機能は提供されていなかった。提供された操作は対称性に乏しく、どんな状況でも便利というものではない。例えばUNIXにおけるプロセス間のパイプはファイルシステム上には実装できない。というのもパイプはファイル先頭からの切捨てに対応できないためである。

ファイルシステムの基本操作への安全なアクセスはアクセス制御リストまたはケーパビリティに基づいて行われる。研究によれば、アクセス制御リストは完全なセキュリティを確保するのが困難といわれており、研究中の最新のOSではケーパビリティが使われる傾向にある。商用ファイルシステムはまだアクセス制御リストを使用している (コンピュータセキュリティ参照)。

また、アプリケーションソフトウェアの中にも、独自のファイルシステムを採用しているものがある。(FMRシリーズFM TOWNS用のワープロソフトウェアである「FM-OASYS」など)
分類

ファイルシステムはディスクファイルシステム、分散ファイルシステム、特殊用途のファイルシステムに分類できる。
ディスクファイルシステム

「ディスクファイルシステム」は、直接的か間接的かに関わらずコンピュータシステムに接続された補助記憶装置、特にハードディスク上にファイルを格納するためのものである。ディスクファイルシステムとしては、FATNTFSHFSext2ext3ext4、WAFL(英語版)、ISO 9660、ODS-5(英語版)、UDFHPFSJFSUFSVTOCXFSなどがある。ディスクファイルシステムの一部はジャーナルファイルシステムまたはバージョニングファイルシステムでもある。
データベースファイルシステム

データベースに基づいたファイルシステムである。メインフレームにあったVSAMのように以前からあるものであり、何ら新しいコンセプトではない。通常のファイルシステムでは、設計の時点でその情報構造が決め打ちで決定されている、ファイルの型、内容、作者などといったメタデータの代わりに、各データベース毎に設定されるメタデータに基づいた管理するが、従来のファイルシステムをその上にマップすることもできる。操作はデータベース操作言語 (例えばSQL) で行われる。データベース管理システムが通常のファイルにアクセスしてデータベースを操作するのに比べオーバーヘッドの削減による性能向上などが期待される。BFSGnomeVFSHFS+WinFSなどがある。
トランザクションファイルシステム

ファイル操作により引き起こされる、ディスク上のデータ構造を操作するイベントトランザクションを、それ用に確保してある領域にまず記録してから行うものである。多くの場合データ構造の操作は相互に関連しているため、「どれも全く行われていない」か「全て成功裏に完了した」のどちらかでなければ、壊れた状態ということになってしまう。例として銀行から銀行へ電子送金する場合を考えてみよう。銀行のコンピュータは、もう一方の銀行へ転送命令を「送信」し、自身の記録として転送開始したことを保持しておく。もし、コンピュータが記録を更新する前に何らかの原因でクラッシュしてしまった場合、転送したという記録が残っていないし、お金だけが失われる。トランザクションシステムは、このような間違いを、事前の記録と照合することにより検出して、切り戻すか再実行し、健全な状態を保とうとするシステムである。各トランザクションは記録され、どこで何をしたのかという完全な記録を残す。この種のファイルシステムはフォールトトレラント設計であることを意図して設計されているため、オーバーヘッドが大きくなる。
ネットワークファイル共有とファイルシステム

ネットワークに対応したOSの多くが、ファイル共有のためのプロトコルを備えている。これを分散ファイルシステムと呼ぶ。

Windowsで標準的なSMB/CIFS、あるいはMacintoshAFP、UNIXのNFSなどが有名である。

こういったネットワークファイルシステムは、共有元のファイルシステムを抽象化した、別の一種のファイルシステムとして扱われる。

個々のOSが標準とするNTFS、UFS、HFS+、ext3、HPFS、BFSなどの差異も、Sambaなどを使ったファイル共有では実用上の問題はほとんど無くなる。ただし、ファイル名制限自体は存在し、また拡張属性等が利用できないなどの問題はあり得る。

なお、WindowsやmacOSを対象にしたNAS装置でも、内部のハードディスクドライブ (HDD) ではReiserFSやXFSなどが使われている場合が少なくない。
特殊用途のファイルシステム

特殊用途のファイルシステムとは、ディスクファイルシステムでも分散ファイルシステムでもないものを意味する。ソフトウェアが動的にファイルを用意するようなシステムがこれに当たる。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:116 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef