ファイル‐システム【file system】
ファイルシステム
ハードディスクなどの外部記憶媒体のデータを管理するための仕組み。データを「ファイル」と呼ばれる単位で管理し、多くの場合、ツリー型のディレクトリ構造を持つ。また、Linuxのように、カーネルで管理するメモリや各種デバイス類もファイルのようにアクセスできるようになっているシステムもあり、疑似ファイルシステムと呼ばれる。
ファイルシステムの種類によって、ファイルサイズや1つの媒体で管理できるファイルの個数、ジャーナリングシステムの有無などが異なる。オープンソースで開発が進められてきたファイルシステムとしてはLinux標準で使われているext2およびext3、また、ジャーナリングシステムをサポートしているRaiserFSなどが有名。また、IBM社のJFSやSilicon Graphics社(現SGI社)XFSもLinux用に移植され、オープンソースとなった。
関連見出し
ポーティング
Filesystem Hierarchy Standard
関連URL
Filesystem Hierarchy Standard(http://www.pathname.com/fhs/)
Linux Kernel HOW-TO―ファイルシステム(日本語訳)(http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-10.html)
NAMESYS(http://www.namesys.com/)
JFS for Linux(http://jfs.sourceforge.net/)
XFS(http://oss.sgi.com/projects/xfs/download.html)
ファイルシステム
ファイルシステムとは、OSが提供するリソース管理機能の一つで、補助記憶装置に対する低レベルのアクセスをラップし、よりアプリケーションに近いアクセスインターフェースを提供する仕組みのことである。
ファイルシステムは、アプリケーションから見て、データをより容易に扱えるようなインターフェースを提供する。ファイルシステムを用いることによって、デバイスレベルでは1と0の並びでしかないデジタルデータの並びを、ファイルとディレクトリのような論理的な構造としてアプリケーション側に見せることができる。また、このような論理的な構造に対して、統一的なアクセス方法を提供する。例えば、階層的なディレクトリの中で、特定位置を示す方法、データをファイルという固まりとして扱う方法、ファイルをオープン(open)、リード(read)、ライト(write)、クローズ(close)といった標準的な手順で扱う方法を物理的な装置とは独立したレベルで提供するものである。
記憶装置は、それぞれ固有の仕組みを持ち、デバイスドライバのレベルでは、個々の装置固有の制御をしなければならない。一方、アプリケーションから見ると、それぞれの記憶装置がどんなものであるかを気にせずに、単に論理的なデータを透過的に保存したり、読み込んだりしたい。ここでファイルシステムを用いれば、どのような記憶装置に対しても、全く同じ作法でやり取りすることができるようになる。こういう意味で、ファイルシステムは、データの入出力手段を抽象化しているといえる。ファイルシステムが存在することで、アプリケーションの側は、個々の装置の物理的な特性を気にせずに、より汎用的な構造で、仕組みを実現することができるようになる。
Windows系OSでは、FAT、FAT32、NTFSといったファイルシステムが用いられてきた。Macintosh系OSでは、HFSが、Linux系OSでは、ext2、ext3などが用いられてきた。これらは、いずれも、記憶装置としては、磁気ディスク装置(HDD)を想定しており、セクタとよばれる物理レベルのデータの固まりを、如何に効率よく、かつ、使いやすくするかという工夫をしている。なお、CD-ROMやDVD-ROMなどの光ディスク系のメディアでは、ISO 9660などの規格で規定されたCD-ROMファイルシステムが利用されている。磁気ディスクが、書き込みが可能なメディアであるのに対して、光ディスクは、書き込みが不能で、読み出しのみができるため、ディレクトリ構造の表現は、書き換わることが無い前提で、高速に利用できる仕組みになっている。また、OS内のデータの基本単位をデータベースと考えるデータベースファイルシステムや、ネットワーク上でファイルの共有などができる分散ファイルシステムなどもある。
FileSystem クラス
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)
構文
解説
詳細については、Visual Basic のトピック「My.Computer.FileSystem オブジェクト」を参照してください。
My.Computer.FileSystem オブジェクトを使ったタスクの例を次の表に示します。
方法 : Visual Basic で固定幅のテキスト ファイルを読み取る | |
方法 : Visual Basic でテキストをファイルに書き込む | |
方法 : Visual Basic でテキスト ファイルに追記する | |
方法 : Visual Basic でファイルを作成する | |
方法 : Visual Basic でファイルを削除する | |
方法 : Visual Basic でファイルを移動する | |
方法 : Visual Basic でファイルのコレクションを移動する | |
方法 : Visual Basic でファイルの名前を変更する | |
方法 : Visual Basic でディレクトリの名前を変更する | |
方法 : Visual Basic でディレクトリを作成する | |
方法 : Visual Basic でディレクトリを削除する | |
方法 : Visual Basic でディレクトリを移動する | |
方法 : Visual Basic でディレクトリの内容を移動する | |
Microsoft.VisualBasic.FileIO.FileSystem
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
FileSystem クラス
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)
構文
解説
詳細については、Visual Basic のトピック「FileSystem モジュール (Visual Basic)」を参照してください。
このモジュールは、ファイルとフォルダにアクセスする Visual Basic 言語キーワードおよびランタイム ライブラリ メンバをサポートします。
この例では、GetAttr 関数を使用してファイルおよびフォルダまたはディレクトリの属性を決定します。
Dim MyAttr As FileAttribute ' Assume file TESTFILE is normal and readonly. MyAttr = GetAttr("C:\TESTFILE.txt") ' Returns vbNormal. ' Test for normal. If (MyAttr And FileAttribute.Normal) = FileAttribute.Normal Then MsgBox("This file is normal.") End If ' Test for normal and readonly. Dim normalReadonly As FileAttribute normalReadonly = FileAttribute.Normal Or FileAttribute.ReadOnly If (MyAttr And normalReadonly) = normalReadonly Then MsgBox("This file is normal and readonly.") End If ' Assume MYDIR is a directory or folder. MyAttr = GetAttr("C:\MYDIR") If (MyAttr And FileAttribute.Directory) = FileAttribute.Directory Then MsgBox("MYDIR is a directory") End If
Microsoft.VisualBasic.FileSystem
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
FileSystem メンバ
Microsoft.VisualBasic 名前空間
その他の技術情報
FileSystem モジュール (Visual Basic)
ディレクトリとファイルの概要
入出力の概要
キーワードとメンバ (タスク別)
Visual Basic 言語のキーワード
Visual Basic ランタイム ライブラリのメンバ
各言語のキーワードの比較
FileSystem コンストラクタ
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)
構文
解説
詳細については、Visual Basic のトピック「My.Computer.FileSystem オブジェクト」を参照してください。
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
FileSystem プロパティ
FileSystem メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
FileSystem メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
関連項目
FileSystem クラスMicrosoft.VisualBasic 名前空間
その他の技術情報
FileSystem モジュール (Visual Basic)ディレクトリとファイルの概要
入出力の概要
キーワードとメンバ (タスク別)
Visual Basic 言語のキーワード
Visual Basic ランタイム ライブラリのメンバ
各言語のキーワードの比較
FileSystem メンバ
ドライブ、ファイル、およびディレクトリを操作するためのプロパティおよびメソッドを提供します。
FileSystem データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック プロパティ
パブリック メソッド
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
FileSystem メンバ
FileSystem モジュールに含まれるプロシージャを使って、ファイル、ディレクトリ、またはフォルダ、およびシステムの操作を実行します。My 機能を使用すると、FileSystem モジュールを使用した場合よりファイル I/O 操作の生産性およびパフォーマンスが向上します。詳細については、「My.Computer.FileSystem オブジェクト」を参照してください。
FileSystem データ型で公開されるメンバを以下の表に示します。
パブリック メソッド
名前 | 説明 | |
---|---|---|
Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) | |
MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
関連項目
FileSystem クラスMicrosoft.VisualBasic 名前空間
その他の技術情報
FileSystem モジュール (Visual Basic)ディレクトリとファイルの概要
入出力の概要
キーワードとメンバ (タスク別)
Visual Basic 言語のキーワード
Visual Basic ランタイム ライブラリのメンバ
各言語のキーワードの比較
ファイルシステム
(file system から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/01/10 14:36 UTC 版)
ファイルシステム(英: file system、filesystem)は、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。
注釈
- ^ IBMは1990年にAIX 3.1 リリース時に JFS を導入。これは現在 JFS1 と呼ばれている。新たなJFS (JFS2などと呼ばれる) はLinux移植版がベースで、1999年にOS/2 Warp Server for e-Business で最初に出荷された。
- ^ マイクロソフトはWindows 95 OSR2で最初に FAT32 を導入し、Windows 98で本格的に採用した。
- ^ ディスク上のディレクトリ構造自体に制限がある。特にInstallable File Systemのドライバはファイル名とディレクトリ名に制限がある。また、OSがファイルシステムの種類に寄らず全体に制限を加えていることもある。MS-DOS, Microsoft Windows, OS/2は全ファイルシステムについて \ / : ? * " > < | NUL といった文字をファイル名やディレクトリ名に使えない。UNIXおよびLinuxは全ファイルシステムについて / NUL という文字をファイル名やディレクトリ名に使えない。
- ^ a b c ブロックサイズやクラスタサイズが可変なファイルシステムについては、ブロックサイズの最大と最小のときのボリュームサイズの範囲を示す。例えば、FATではディスク上のクラスタサイズが512 B – 128 KBである。しかし、Installable File Systemの一部のドライバやOSによっては32 KBより大きいクラスタサイズをサポートしていない。
- ^ a b c d e f g h i j k l m n o p これらのファイルシステムでは、
.
と..
というディレクトリエントリ名は特別な意味を持つ。そのような名前のディレクトリエントリは禁じられておらず、むしろ普通のディレクトリエントリ名として存在している。しかし、これらはある意味で固定のエントリで固定の値を持ち、ディレクトリ生成時に自動的に生成される。これらのエントリがないディレクトリは壊れていると見なされる。 - ^ a b c d e f g h i j k l m n o p q r ディスク上の構造としては制限はないが、一部のInstallable File SystemのドライバやOSによっては制限している場合がある。MS-DOSはFAT12やFAT16に関して260バイト以上のパス名をサポートしていない。Windows NTはNTFSに関して32767文字 (UTF-16) 以上のパス名をサポートしていない。POSIXの規定では「NULL終端で1024バイトを保証すること」とされているが、上限についての記述はない。
- ^ a b c d e f FAT12、FAT16、FAT32の実装が、長いファイル名 (LFN) をサポートしているかどうかに依存する。OS/2, MS-DOS, Windows 95, Windows 98 のDOSモードやLinuxの msdosドライバではLFNをサポートしていないので、ファイル名は8.3形式に制限される (制限を越えるとベース名も拡張子も空白で埋められる)。また、NUL (ディレクトリ終端マーカー) を含むこともできず、文字5 (削除済みファイルマーカーとして使われる文字229の代用) も含むことができない。短い名前では小文字も含まれない。
- ^ FAT32のパーティションをこのサイズで作成して使用することは可能だが、ソフトウェアによっては 32 GiB以上のFAT32用パーティションを作成できない。有名なのは、Windows XPのインストールプログラムである (これはNTFSの利用を促すための意図的な制限であると思われる)。これを回避するには Windows Meの緊急用ブートディスクのFDISKを使う必要がある。
- ^ Mac OSはHFS+のボリューム上のファイル名を扱う関数群を2種類用意している。ひとつは完全なUnicodeの名前を返し、もうひとつは従来互換を保つために31バイトまでの名前を返すものである。
- ^ HFS+は任意のUnicode文字を許すためにエスケープシーケンスをサポートしている。古いソフトウェアからはそのエスケープシーケンスがそのまま見える。
- ^ HFS+のボリュームサイズはほぼ無制限であるが、Mac OSには以下のような制限がある。Mac OS 8, 9:2 TiB。Mac OS X 10、10.1:2 TiB。Mac OS X 10.2:8 TiB。Mac OS X 10.3、10.4:16 TiB。ファイルサイズの最大はこれより若干小さい (Mac OS 8では2 GB)。フォルダ内の最大ファイル数 (フォルダ数) は以下の通り。 Mac OS 8, 9:2^15 (32767)。macOS:2^31。しかし、通常最大ボリュームサイズをブロックサイズで割った値で制限される。
- ^ a b これはディスク上の構造による制限である。Windows NT用NTFSドライバはボリュームサイズを256 TiB、ファイルサイズを16 TiB に制限している。
- ^ ReiserFSの理論上の最大ファイルサイズは1 EiBだが、[1]によれば、「ページキャッシュの制限により、32ビット int のアーキテクチャでは 8 TiB に制限される」
- ^ この制限は新しい版では大きくなるかもしれない。
- ^ a b Linux 2.4 では XFS の最大ファイルサイズは 64 TiB だが、Linux 2.4 自体が最大 2 TiB までしかサポートしていない。IRIXにはこの制限はない。
- ^ a b 一部のInstallable File SystemドライバやOSによってはFAT12やFAT16で拡張ファイル属性をサポートしていない。OS/2とWindows NTはFAT12/FAT16向けに拡張ファイル属性をサポートしている ("EA DATA. SF"擬似ファイルを使ってそのためにアロケートされたクラスタを予約している)。他のOSのファイルシステムドライバではサポートしていない。
- ^ f-nodeにはユーザー識別子用フィールドがあるが、OS/2 Warp Server 以外では使われていない。
- ^ NTFSのアクセス制御リストは単純なPOSIX式ファイルパーミッションで表せることは表現できるが、Services for UNIX や Cygwin を使わないとPOSIXのインターフェイスがサポートされない。
- ^ a b c d アクセス制御リストとMACラベルは拡張属性として実装される。
- ^ FreeBSD 4.XなどのOSでは拡張属性をparallel backing fileを使って実装している。
- ^ a b c d e f g h 一部のInstallable File SystemドライバやOSによっては、これらのファイルシステムについて拡張属性、ACL、セキュリティラベルをサポートしていない。2.6.x以前のLinuxはこれらをサポートしていないか、パッチが必要である。
- ^ NTFS 5.0 以降では、junctions を生成でき、(個々のファイルではなく) ディレクトリ全体をローカルに管理するドライブのいずれかのディレクトリツリーにマップすることができる。これは reparse points と呼ばれる機能で実現されており、ファイル名解析部分を柔軟に拡張可能となっている。
- ^ NTFS自体は大文字/小文字を区別するが、Windowsサブシステムは互換性を維持するため大文字/小文字の差異しかないファイル名を生成できないようになっている。新しいファイルを書き込みのためにオープンしたとき、大文字/小文字の差異を無視したときに同じ名前となるファイルが既に存在すると、その既存のファイルの内容が消されて書き込みに使われてしまう。Services for UNIXを使うと、完全な大文字/小文字の区別が行われる。
- ^ メタデータのみのジャーナリングは、Max OS X v10.2.2 の HFS+ドライバから導入された。デフォルト値でジャーナリングが有効となったのはMac OS X v10.3以降である。
- ^ 一般に大文字/小文字を区別していると思われがちであるが、HFS+は基本的には区別していない。単に大文字/小文字の違いを保護しているだけである。Mac OS X v10.3のコマンド newfs_hfs -s で大文字/小文字を区別するファイルシステムを作成できる。HFSXという別のファイルシステムは、HFS+を改良したもので、こちらは大文字/小文字を区別する。Technical Note TN1150: HFS Plus Volume FormatではHFS+とHFSXについて技術的詳細を論じている。
- ^ Mac OS X v10.4とMac OS X v10.3はファイル変更ログを提供している (ファイルシステムソフトウェアの機能であり、ボリューム形式自体がサポートしているわけではない)。fsloggerを参照されたい。
- ^ NetBSDの"Soft dependencies" (softdep) およびFreeBSDの"soft updates"はジャーナリングせずにメタデータの一貫性を常に保つ機能がある。
- ^ Linux 2.6.12 以降。
- ^ デフォルトでは無効になっている。
- ^ デフォルトでは無効になっている。
- ^ ログ構造化ファイルシステムであり,メタデータだけでなく全てのファイルデータの更新がインクリメンタルに記録される。
- ^ ReiserFSの完全なブロック・ジャーナリングは Linux 2.6.8 で追加された。
- ^ 一部のInstall File SystemドライバやOSによってはJFSでの大文字/小文字区別をサポートしていない。OS/2はサポートしておらず、Linux はマウント時のオプションで指定できる。
- ^ "aliases"と呼ばれている。
- ^ a b UDFはログ構造ファイルシステムであり、ファイルシステム全体がジャーナルであるかのように振舞う。
- ^ VxFSはオプションとして「ストレージ・チェックポイント」と呼ばれる機能を提供している。これは高機能のファイルシステム・スナップショット機能である。
- ^ a b ZFSはトランザクション・ファイルシステムであり、コピー・オン・ライト方式であるため、ジャーナルを使わなくてもディスク上の状態は常に正常である。しかし、同期書き込みを指定されたときなどの性能向上のため、ログを実装している。
- ^ ここで言う可変ブロックサイズとは、ファイル毎にブロックサイズを変更できるシステムである。エクステントと似ているが実装方針が微妙に異なる。UFS2の現状の実装はリードオンリーのみである。
- ^ a b c DOS 6 の DoubleSpace や Windows 95およびWindows 98の DriveSpace は FAT におけるデータ圧縮機能だが、マイクロソフトが既にサポートしていない。
- ^ a b c 8:1以外の「ブロック:フラグメント」のサイズ比もサポートしているが、8:1が最も一般的で多くの実装で推奨されている。
- ^ 1997年から利用可能なe2comprというパッチのセットでext2でのブロック単位のデータ圧縮が可能となる。しかし、これがLinuxカーネルのメインラインにマージされたことはない。
- ^ a b フラグメントは計画されていたが、ext2とext3に実装されたことはない。
- ^ Reiser4はデータ圧縮を実装しているが、そのためのVFS APIが提供されていない。
- ^ "extents"モードで実現。
- ^ UDFの実装に依存する。
- ^ ZFSの論理ブロックベースの圧縮を有効にすると、ファイルの最後尾ブロックに対してTail-Packingのように働く。
- ^ コピーオンライトであるため、ZFSは全ての書き込みについて遅延アロケーションを行う。
出典
「file system」に関係したコラム
FXのチャート分析ソフトMT4で10分足や2時間足などを表示するには
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、次の時間足の表示ができます。ティック1分足5分足15分足30分足1時間足4時間足日足週足MT4では、10分足や1...
- file systemのページへのリンク