4    ファイル・システム

この章では,Tru64 UNIX オペレーティング・システムで利用できるさまざまなファイル・システムについて説明しています。 最初に概要を説明した後 (4.1 節),次のファイル・システムについて説明します。

4.1    概要

Tru64 UNIX で利用できるファイル・システムは,すべて仮想ファイル・システム (VFS) 層を通じてアクセスされ,仮想メモリ UBC (Unified Buffer Cache) に統合されます。

ファイル・システムは,ローカルのファイル・システムまたはネットワークに接続されたファイル・システムと対話する,仮想ファイル・システム層によって処理されます。 Tru64 UNIX の標準のファイル・システムは Advanced File System (AdvFS) ですが,従来の UNIX ファイル・システムも利用できます。 ネットワークに接続されたファイル・システムあるいはローカルのファイル・システムは,LSM と結び付き,さらにデバイス・ドライバおよび実際のストレージ・デバイスに作用します。 図 4-1 にファイル・システム,LSM,およびストレージ・デバイスの相互関係を示します。

図 4-1:  ファイル・システム

クラスタ環境でサポートされるファイル・システムについては,『クラスタ概要』を参照してください。

4.2    仮想ファイル・システム

VFS (Virtual File System) は,Berkeley 4.3 Reno 仮想ファイル・システムをベースにしています。 VFS は,ファイル・システム層から抽象化された一貫したインタフェースを,ユーザおよびアプリケーションに対して提供することにより,属しているファイル・システムに関係なく各ファイルに対して共通にアクセスすることを可能にしています。 この結果,異なるファイル・システムにまたがるファイルに対して,透過的なアクセスが可能になります。

vnode と呼ばれる構造体には,マウントされているファイル・システムの各ファイルについての情報が含まれています。 vnode は inode に似た機能を持っており,ファイル・システム固有のノードを包含しています。 たとえば,ファイルに対する読み取り要求あるいは書き込み要求が行われた場合,vnodeはそのファイル・システムに適したシステム・コールをポイントします。 読み取り要求が AdvFS 上のファイルに対して行われた場合は,advfs_read がポイントされ,要求が UFS 上のファイルに対して行われた場合は,ufs_read がポイントされ,要求が NFS マウントされたファイル・システム上のファイルに対して行われた場合は,nfs_read がポイントされます。

Tru64 UNIX の VFS の実装は,拡張ファイル属性 (XFA) をサポートし,任意のアプリケーションがファイルに対して XFA を割り当てることができるようになっています。 AdvFS と UFS の両方で XFA をサポートします。 XFA についての詳細は, setproplist(2) リファレンス・ページを参照してください。

4.3    Advanced File System

Advanced File System (AdvFS) は,柔軟性,互換性,データ可用性,高性能,単純化されたシステム管理機能などを提供する,Tru64 UNIX の標準のルート・ファイル・システムです。 このログ・ベース・ファイル・システムは,16 テラバイトに達する長さのファイルとファイルセットを処理します。

AdvFS の構成は,従来の UNIX ファイル・システムとは異なります。 AdvFS では,ディレクトリ層とは独立して物理ストレージ層が管理されます。 システム管理者は,ファイル・システムのアンマウントやオペレーティング・システムの停止を行わずにストレージの追加,および削除を実行することができます。 このため,構成の計画は,より簡単かつ柔軟になります。

ユーザ側から見た場合,AdvFS は他の UNIX ファイル・システムと同じように動作します。 エンド・ユーザは,mkdir コマンドを使用して新しいディレクトリを作成し,cd コマンドを使用してディレクトリを移動し,ls コマンドを使用してディレクトリの内容を一覧表示することができます。 AdvFS の論理構造,クォータ制御,バックアップ機能は,伝統的なファイル・システムの設計をベースにしています。 AdvFS には,mkfdmnmkfset などのファイル作成コマンド,vdumpvrestore などのファイルセットのバックアップ/リストア・コマンドなど,いくつかの独自のシステム管理ユーティリティが用意されています。 AdvFS のコマンドおよびユーティリティについては,『AdvFS 管理ガイド』を参照してください。

システム管理者は,システムをオフライン状態にしなくても,バックアップ,ファイル・システムの再構成,ファイル・システムの調整を行うことができます。 エンド・ユーザは,システム管理者の助けを受けなくても,不用意に削除してしまったファイルをあらかじめ定義されたゴミ箱ディレクトリやクローン・ファイルセットから取り出すことができます。

オペレーティング・システムとは別のライセンスが必要な AdvFS Utilities により,その他のファイル管理機能と Web ベースの GUI が使用可能になり,システム管理を単純化できます。 共通デスクトップ環境 (CDE) で実行されるこの GUI によって,メニュー,グラフィカル表示,およびオンライン・ヘルプが使用できるようになり,AdvFS の操作が容易になります。 さらにこの GUI によって,システムの状態情報の表示が可能になります。

AdvFS Utilities は,マルチボリューム・ファイル・システムをサポートしています。 マルチボリューム・ファイル・システムを使用すると,ファイル・レベルのストライピング (データを複数のボリュームに分散させること) が可能で,入出力を多用するアプリケーションのファイル転送速度が改善されます。 ボリューム・レベルのストライピングが可能な Logical Storage Manager (LSM) を,AdvFS 構成の中に組み込むこともできます。

4.4    UNIX ファイル・システム

UNIX File System (UFS) はローカル・ファイル・システムです。 以前は UFS が標準のファイル・システムとして位置付けられていましたが,AdvFS が標準のファイル・システムとなった現在でも,AdvFS の代替ファイル・システムとして提供されています。 システム・ディスクにおいて,あるいは AdvFS の先進の機能を必要としない場合には,UFS に慣れ親しんだ多くの管理者は UFS の方を選択します。

UNIX ファイル・システム (UFS) は,Berkeley 4.3 Tahoe リリースと互換性があります。 UFS では,パス名の構成要素に 255 バイト,絶対パス名に最大 1023 バイトが使用できます。 Tru64 UNIX で提供している UFS では,2 GB を超えるファイル・サイズをサポートします。

UFS は,大規模ストレージ・デバイスで raw デバイスと同じスピードのシーケンシャルな読み取り/書き込みアクセスを可能にする,ファイル・ブロック・クラスタリングをサポートします。 UFS は,STREAMS に対するファイル・オン・ファイル・マウントをサポートします (4.11 節 を参照)。

4.5    クラスタ・ファイル・システム

TruCluster Server クラスタでは,仮想ファイル・システムとしてクラスタ・ファイル・システム (CFS) が物理ファイル・システムの上に存在しており,これにより,クラスタ単位でマウント済みのファイル・システムへのアクセスを可能としています。

CFS により,すべてのファイルがすべてのクラスタ・メンバから見えるようになり,各メンバからそれらのファイルにアクセスできるようになります。 ファイルが格納されているデバイスがすべてのクラスタ・メンバに接続されているデバイス上であるか,あるいは 1 つのメンバ専用のデバイス上かに関わらず,各メンバ・システムからは同じようにファイルが見えます。 CFS は,クラスタ・メンバ間でキャッシュの一貫性を保つことにより,クラスタ内にマウントされているファイル・システムがすべてのメンバから常に同じように見えることを保証しています。

CFS から見ると,各ファイル・システムまたは AdvFS ドメインは,1 つのクラスタ・メンバによりクラスタ全体にサービスされているように見えます。 どのクラスタ・メンバも,クラスタ内の任意のデバイス上のファイル・システムのサービスを行うことができます。 クラスタのブート時にマウントされたファイル・システムは,最初にそのファイル・システムにアクセスしたクラスタ・メンバがサービスを行います。 したがって,あるクラスタ・メンバ専用のバスに接続されたデバイス上のファイル・システムは,そのメンバがサービスを行うことになります。

クラスタ・ファイル・システムについての情報は,『クラスタ概要』を参照してください。

4.6    NFS

ネットワーク・ファイル・システム (NFS) は,異種のプロセッサ,オペレーティング・システム,あるいはネットワークの混在する環境でファイルを共有するための機能です。 NFS を使用すると,リモートのファイル・システムあるいはディレクトリをローカル・システムにマウントし,それらのファイルに対して,ローカル・ファイルと同じように読み取り/書き込みすることができます。

Tru64 UNIX は,NFS Version 3 および NFS Version 2 をサポートします。 NFS Version 2 のコードは,Sun Microsystems 社からラインスを受けている ONC Version 4.2 をベースにしています。 NFS Version 3 は Sun Microsystems 社のプロトタイプ・コードをベースにしています。

Tru64 UNIX は NFS Version 3 および Version 2 の両方をサポートするため,NFS クライアントおよびサーバの両方でサポートしている高い方のバージョンの NFS を使用してファイル・システムがマウントされます。 たとえば,NFS Version 3 をサポートする NFS サーバによってファイルがサービスされている場合,Tru64 UNIX クライアントは NFS Version 3 を使用します。 しかし,NFS Version 2 をサポートする NFS サーバによってファイルがサービスされている場合,NFS クライアントは NFS Version 2 を使用します。 NFS Version 3 の詳細については,『NFS Version 3: Design and Implementation』(USENIX, 1994) を参照してください。

NFS の基本サービスに加えて,Tru64 UNIX は以下の拡張機能をサポートします。

4.6.1    NFS Version 3 の機能

NFS Version 3 は,NFS Version 2 で提供するすべての機能に加えて,次の機能をサポートします。

4.6.2    NFS に対する拡張

NFS Version 3 の機能に加えて,Tru64 UNIX は次の NFS 機能を拡張しています。

4.7    CD-ROM ファイル・システム (CDFS)

CD-ROM ファイル・システム (CDFS) はローカル・ファイル・システムです。 初期の CD-ROM フォーマットと互換性のある High Sierra Group 標準 あるいは Rock Ridge Interchange Protocol (RRIP) バージョン 1.0 リビジョン 1.09 を 使用した CD-ROM フォーマットなど,複数のベンタ間のデータ交換ができるように,Tru64 UNIX は ISO-9660 CDFS 標準をサポートします。

RRIP は,ISO-9660 によって定義されているシステム使用領域を使用して,複数セッション,ファイル名における大文字/小文字の区別,長いファイル名の使用,シンボリック・リンク,デバイス・ノード,深いディレクトリ構造,ファイルの UID/GID と許可コード,POSIX タイムスタンプなどの機能を提供できるよう,ISO-9660 を拡張しています。

加えて,Tru64 UNIX は,X/Open Preliminary Specification (1991) CD-ROM サポート・コンポーネント (XCDR) をサポートします。 XCDR を使用すると,定義されたユーティリティおよびシェアード・ライブラリを通して,選択した ISO-9660 属性をユーザが調べることができ,システム管理者が,省略時の CD-ROM ファイルのファイル・プロテクション,ファイル所有者,ファイル名を別の値に置換することもできます。 詳細については, cdfs(4)リファレンス・ページを参照してください。

4.8    DVD ファイル・システム

DVD (Digital Versatile Disk) ファイル・システムを使用すると,Optical Storage Technology Association (OSTA) Universal Disk Format (UDF) 仕様でフォーマットされたディスクを読み取ることができます。 これらのインタフェースは,ISO/ITEC 13346:1995 標準および ISO 9660:1988 標準に準拠しています。

DVD-ROM のユーザ・データ・セクタには,任意のフォーマットの任意のタイプのデータを記録することができます。 ただし,Tru64 UNIX の DVDFS システムでは,OSTA UDF ファイル・フォーマット標準に準拠していなければなりません。 さらに,DVD-ROM 標準では,論理セクタ・サイズと論理ブロック (ユーザ・データ・ブロック) サイズが 2048 バイトでなければなりません。

詳細は, dvdfs(4) のリファレンス・ページを参照してください。

4.9    メモリ・ファイル・システム(MFS)

メモリ・ファイル・システム (MFS) は,メモリ上で機能する UNIX ファイル・システムと言えます。 ファイル構造あるいはデータのディスクヘの書き込みは行わないため,MFS の内容は,リブート時,アンマウント時,電源オフ時に消失します。 ディスクへのデータ書き込みを行わないため MFS は非常に処理の速いファイル・システムで,一時ファイルの保管,既存ファイルの読み取り専用ファイルとしてのロードには,極めて効果的です。

たとえば,ソフトウェアのビルドなど,失敗した場合には再実行が必要となるような処理を行っている場合,処理中に作成される一時ファイルを保管するには処理速度の点で MFS が非常に適しています。

Tru64 UNIX のファイル・システムは仮想ファイル・システムなので,MFS のサイズは物理的な空きメモリのサイズには制限されません。 アクティブにアクセスされていない MFS 上のデータはスワップ領域に移され,システム全体の性能が改善されます。 MFS は TruCluster Server 構成ではサポートされません,

詳細については, newfs(8)を参照してください。

4.10    /proc ファイル・システム

/procファイル・システムは,システム・コール openclosereadwritelseek,および ioctl によって,プロセスをファイルとしてアクセスあるいは処理できる,ローカル・ファイル・システムです。

/proc ファイル・システムは,VFS の下層に位置付けられる擬似ファイル・システムで,ディスク領域は占有しません。 このファイル・システムは,mount および unmount コマンドでマウント/アンマウントすることも,/etc/fstab ファイルにエントリを定義することもできます。

クラスタ・システムでは,各クラスタ・メンバが専用の /proc ファイル・システムを持っています。

/proc ファイル・システムは,他の実行プロセスを制御するのに適切な許可コードになるよう各プロセスを設定できるため,デバッガで使用するのに最も適しています。 デバッガとデバッグされるプロセスの間には,親子の関係が存在する必要はありません。 詳細については, proc(4) を参照してください。

4.11    File-on-File マウント・ファイル・システム

File-on-File マウント(FFM) ファイル・システムは,通常ファイル,キャラクタ・ファイル,ブロック特殊ファイルを 通常ファイルにマウントします。

主に STREAMS ベースのパイプ (あるいは FIFO) のシステム・コール fattach および fdetach で使用されます。 これらのシステム・コールは SVR4 互換です。 FFM を使用することにより,通常は対応するファイル・オブジェクトを持たない FIFO に,ファイル・システム領域で名前が与えられます。 この結果,FIFO を作成したプロセスには関係のないプロセスから FIFO をアクセスすることができるようになります。

fattachシステム・コールを通じて FFM を使用する プログラムの他に,ユーザが mount コマンドを使用して,1 つの通常ファイルを他のファイルの先頭にマウントすることができます。 他のファイルの先頭にファイルをマウントしても,それによってカバーされたファイルの内容は破壊されません。 単にカバーされたファイルの名前とマウントしたファイルが関連づけられ,カバーされたファイルの内容は一時的に使用できなくなります。 カバーされたファイルへのアクセスは,そのファイルにマウントしたファイルが リブート,fdetach 呼び出し,あるいは umount コマンドによってアンマウントされれば再び可能となります。

ただし,カバーされたファイルの内容は,fattach 呼び出しでそのファイルをオープンするプロセスに対しては,あるいはユーザがそのファイルに対して mount コマンドを発行した場合には有効です。

クラスタ・システムでは,FFM をマウントしているクラスタ・メンバは FFM を認識しますが,それ以外のクラスタ・メンバは認識しません。

FFM についての詳細は, ffm(4) リファレンス・ページを参照してください。

4.12    ファイル記述子ファイル・システム(FDFS)

ファイル記述子ファイル・システム (FDFS) を使用すると,アプリケーションは UNIX ファイル・システム上のファイルと同じようにプロセスのオープン・ファイル記述子を参照することができます。 FDFS は,プロセスのオープン・ファイル記述子をファイル・オブジェクトに割り当てます。 FDFSがマウントされている場合,ファイル記述子ファイルのオープンあるいは作成は dup システム・コールの呼び出しと同じ効果があります。

FDFS によって,UNIX スタイルの入出力をサポートするようには作成されていないアプリケーションが,パイプ,名前付きパイプ,および入出力のリダイレクトを使用できます。 FDFS は,Tru64 UNIX システムには構成されません。 FDFS は,コマンドによってマウントするか,システムの /etc/fstab ファイルにエントリとして配置しなければなりません。 FDFS の詳しい説明は, fd(4) リファレンス・ページを参照してください。