この章の内容は次のとおりです
Solaris 7 では、ファイルシステムの 2 つの新機能が提供されます。UFS ロギングと、ファイルのアクセス時間更新を無視する新しいマウントオプションです。
UFS ロギングとは、トランザクション (UFS に対する変更操作のすべて) が UFS ファイルシステムに適用される前に、ログに格納するプロセスのことです。一度格納したトランザクションは、その後ファイルシステムに適用できます。
UFS ロギングには 2 つの利点があります。まず UFS ロギングは、ファイルシステムの整合性を保持するため、fsck(1M) を実行する必要がなくなります。また、fsck を省略できるために、システムがクラッシュした場合、あるいは、不完全に停止後、システムリブートの時間が短くなります。
デフォルトでは、UFS ロギングは無効です。UFS ロギングを有効にするには、ファイルシステムをマウントするときに、-o logging オプションを mount コマンドに指定しなければなりません。また、fsdb コマンドも更新され、UFS ロギング用の新しいデバッグコマンドを持つようになりました。
ファイルのアクセス時間の更新を無視するには、UFS ファイルシステムをマウントするときに、-o noatime オプションを指定します。このオプションによって、アクセス時間が重要でないファイルシステム (たとえば、Usenet ニューススプール) でのディスクに対する動作が減ります。詳細は、mount_ufs(1M) のマニュアルページを参照してください。
ファイルシステムは、ファイルを編成して格納するためのディレクトリ構造です。「ファイルシステム」という用語には、さまざまな使用方法があります。
ディスクベース、ネットワークベース、または仮想ファイルシステムなど、特定のタイプのファイルシステムを指す場合
ルートディレクトリから下位へのファイルツリー全体を指す場合
ディスクスライスや他の媒体記憶デバイスのデータ構造を指す場合
ファイル構造のうち、アクセスできるようにメインファイルツリー上のマウントポイントに接続されている部分を指す場合
通常、その意味は状況に応じて判断できます。
Solaris オペレーティング環境は、各種ファイルシステムへの標準インタフェースを提供する「仮想ファイルシステム」 (VFS) アーキテクチャを使用します。VFS アーキテクチャによって、ユーザーやプログラムが基礎となるファイルシステムのタイプを知らなくても、カーネルはファイルの読み取り、書き込み、一覧表示などの基本操作を処理できます。
ファイルシステムの管理は、最も重要なシステム管理作業の 1 つです。この章を読んで概念と計画方法について理解してください。次の作業については、Part VIII の他の章と他の Part を参照してください。
新しい UFS と仮想ファイルシステムを設定する - 詳細は、第 27 章「ファイルシステムの作成手順」と第 29 章「キャッシュファイルシステムの手順」を参照してください。
ローカルファイルとリモートファイルをユーザーが利用できるようにする - 詳細は第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
新しい記憶デバイスを接続して構成する - 詳細は 第 21 章「ディスク管理の概要」を参照してください。
バックアップスケジュールを計画して導入し、必要に応じてファイルとファイルシステムを復元する - バックアップの作成、およびファイルとファイルシステムの復元については、第 33 章「ファイルシステムのバックアップと復元の概要」を参照してください。
ファイルシステムの損傷をチェックして訂正する - 自動 (ブート時) チェックに失敗した場合の処理については、第 31 章「ファイルシステムの整合性チェック」を参照してください。
Solaris システムソフトウェアでは、次の 3 種類のファイルシステムがサポートされます。
ディスクベース
ネットワークベース
仮想
ファイルシステムのタイプを確認するには、「ファイルシステムのタイプを調べる」を参照してください。
ディスクベースのファイルシステムは、ハードディスク、CD-ROM、フロッピーディスクなどの物理媒体に格納されます。ディスクベースのファイルシステムは、さまざまな形式で作成できます。利用できる形式は次のとおりです。
UFS - UNIX ファイルシステム (4.3 Tahoe リリースに組み込まれていた BSD Fast File システム)。UFS は、Solaris オペレーティング環境のデフォルトのディスクベースファイルシステムです。
UFS ファイルシステムをディスク上に作成する前に、そのディスクをフォーマットし、スライスに分割しなければなりません。ディスクスライスとは物理的なディスクのサブセットのことで、連続するブロックからなる 1 つの範囲のことです。スライスはスワップ空間などの raw デバイスとして使用することも、ディスクベースのファイルシステムとして使用することもできます。ディスクのフォーマットとディスクのスライスへの分割についての詳細は、第 21 章「ディスク管理の概要」を参照してください。
HSFS - High Sierra と ISO 9660 のファイルシステム。High Sierra は、初めての CD-ROM ファイルシステムです。ISO 9660 は、High Sierra ファイルシステムの公式の標準バージョンです。HSFS ファイルシステムは CD-ROM 上で使用される読み取り専用ファイルシステムです。Solaris HSFS では、ISO 9660 への Rock Ridge 拡張がサポートされるので、CD-ROM 上でも、すべての UFS ファイルシステムのセマンティクスとファイルタイプを提供します。ただし、書き込み可能ではなく、ハードリンクも提供しません。
PCFS - PC ファイルシステム。DOS ベースのパーソナルコンピュータ用に作成された DOS フォーマットのディスク上のデータとプログラムに読み取り/書き込みのアクセスができます。
ディスクベースの各種ファイルシステムは、次のように特定の媒体のタイプに対応しています。
UFS とハードディスク
HSFS と CD-ROM
PCFS とフロッピーディスク
ただし、上記以外の対応も可能です。たとえば、CD-ROM やフロッピーディスクにも、UFS ファイルシステムを適用できます。
ネットワークベースのファイルシステムは、ネットワーク上でアクセスされるファイルシステムです。一般に、ネットワークベースのファイルシステムは 1 つのシステム上 (通常はサーバー上) にあり、他のシステムからネットワーク経由でアクセスされます。NFS は、ネットワークベースで利用できる唯一のファイルシステムです。
NFS は、Solaris の分散ファイルシステムです。NFS で分散資源 (ファイルやディレクトリ) を管理するには、サーバーから分散資源をエクスポートして個々のクライアントシステムでそれらをマウントします。詳細は、「ネットワークファイルシステム (NFS)」を参照してください。
仮想ファイルシステムは、特殊なカーネル情報と機能へのアクセスを提供するメモリーベースのファイルシステムです。ほとんどの仮想ファイルシステムは、ディスク領域を使用しません。ただし、キャッシュファイルシステム (CacheFS) は、ディスク上のファイルシステムを使用してキャッシュを保持します。また、一時ファイルシステム (TMPFS) などの一部の仮想ファイルシステムは、ディスク上のスワップ空間を使用します。
キャッシュファイルシステム (CacheFS) を使用すると、リモートファイルシステムや、CD-ROM ドライブのような低速デバイスの性能を改善できます。ファイルシステムをキャッシュすると、リモートファイルシステムや CD-ROM から読み込まれたデータは、ローカルシステム上のキャッシュに格納されます。CacheFS ファイルシステムの設定と管理については、第 29 章「キャッシュファイルシステムの手順」を参照してください。
一時ファイルシステム (TMPFS) は、ファイルシステムの読み取りと書き込みにローカルメモリーを使用します。一般に、一時ファイルシステムは、UFS ファイルシステムに比べてアクセス速度が高速です。TMPFS ファイルシステムを使用すると、ローカルディスク上で、あるいはネットワーク経由で一時ファイルの読み書きを行う際のオーバヘッドを軽減でき、システムパフォーマンスを改善できます。たとえば、プログラムをコンパイルすると一時ファイルが作成されます。オペレーティングシステムは、これらのファイルを処理する間に大量のディスク処理やネットワーク処理を行います。TMPFS を使用してこれらの一時ファイルを格納すると、その作成、処理、または削除が大幅に高速になります。
ファイルシステムのマウントが解除されるときと、システムがシャットダウンまたはリブートされるときに、一時ファイルシステム上のファイルは削除されます。
TMPFS は、Solaris オペレーティング環境内の /tmp ディレクトリのデフォルトのファイルシステムです。UFS /tmp ファイルシステムの場合と同様に、/tmp ディレクトリとの間でファイルをコピーまたは移動できます。
TMPFS ファイルシステムは、一時的な退避場所としてスワップ空間を使用します。TMPFS ファイルシステムがマウントされたシステムのスワップ空間が足りないと、次の 2 つの問題が発生する可能性があります。
TMPFS ファイルシステムは、通常のファイルシステムがいっぱいになった場合と同様に容量不足になる可能性がある。
TMPFS はスワップ空間を割り当ててファイルのデータを保存するので (必要な場合)、一部のプログラムはスワップ空間不足のために実行できなくなる。
TMPFS ファイルシステムの作成方法については、第 27 章「ファイルシステムの作成手順」を参照してください。スワップ空間を拡張する方法については、第 30 章「追加スワップ空間の構成の手順」を参照してください。
ループバックファイルシステム (LOFS) を使用すると、代替パス名を使用してファイルにアクセスできるように、新しい仮想ファイルシステムを作成できます。たとえば、/ のループバックマウントを /tmp/newroot 上で作成できます。ファイルシステム階層全体が、NFS サーバーからマウントされるファイルシステムを含め、/tmp/newroot 上に複写されたように見えます。どのファイルにも、/ で始まるパス名または /tmp/newroot で始まるパス名を使用してアクセスできます。
LOFS ファイルシステムの作成方法については、第 27 章「ファイルシステムの作成手順」を参照してください。
プロセスファイルシステム (PROCFS) はメモリー内にあります。PROCFS の /proc ディレクトリには、有効なプロセスのプロセス番号別リストが入っています。/proc ディレクトリ内の内容は、ps などのコマンドに使用されます。デバッガや他の開発ツールも、ファイルシステムコールを使用して、プロセスのアドレス空間にアクセスできます。
/proc ディレクトリ内のファイルは削除しないでください。/proc ディレクトリからプロセスを削除するのは、最善の方法ではありません。/proc ファイルはディスク容量を消費しないため、このディレクトリからファイルを削除してもあまり意味がないので注意してください。
/proc ディレクトリには、システム管理は不要です。
次のタイプの仮想ファイルシステムは、参考のために掲載してあります。管理は不要です。
ほとんどのファイルシステム管理コマンドには、汎用コマンドとファイルシステム専用の 2 種類があります。可能な場合には、常に汎用コマンドを使用してください。汎用コマンドは、ファイルシステム固有のコマンドを呼び出します。表 26-1 に、汎用ファイルシステム管理コマンドを示します。これらのコマンドは、/usr/sbin ディレクトリに入っています。
表 26-1 汎用ファイルシステム管理コマンド
コマンド |
機能 |
---|---|
i ノードをクリアする。 |
|
空きディスクブロック数とファイル数を出力する。 |
|
ファイルシステムのファイル名と統計情報を表示する。 |
|
ファイルシステムの完全性をチェックし、検出された損傷を修復する。 |
|
ファイルシステムをデバッグする。 |
|
ファイルシステムのタイプを調べる。 |
|
テープにコピーするときに、ファイルシステムのラベルを表示または作成する (volcopy コマンド専用)。 |
|
新しいファイルシステムを作成する。 |
|
ローカルおよびリモートのファイルシステムをマウントする。 |
|
仮想ファイルシステムテーブルに指定されているすべてのファイルシステムをマウントする。 (/tec/vfstab) |
|
パス名とその i 番号のリストを生成する。 |
|
ローカルおよびリモートのファイルシステムをマウント解除する。 |
|
仮想ファイルシステムテーブルに指定されているすべてのファイルシステムをマウント解除する。(/etc/vfstab) |
|
ファイルシステムのイメージコピーを作成する。 |
汎用ファイルシステムコマンドは、次の順序でファイルシステムのタイプを判断します。
-F オプションで指定されているファイルシステムのタイプ
特殊デバイスを /etc/vfstab 内のエントリと突き合わせて判断します (special が指定されている場合)。たとえば fsck は、まず fsck device フィールドと突き合わせて一致するエントリを検索します。一致するエントリが見つからなければ、特殊デバイスフィールドと突き合わせてチェックします。
ローカルファイルシステムの場合は /etc/default/fs 内で指定されたデフォルトを使用し、リモートファイルシステムの場合は /etc/dfs/fstypes 内で指定されたデフォルトを使用して判断します。
汎用コマンドと専用コマンドについては、『man Pages(1M): System Administration Commands』を参照してください。専用コマンドのマニュアルページは、汎用コマンドのマニュアルページに続いて入っています。特定のマニュアルページを見つけるには、汎用コマンド名の末尾にアンダースコアとファイルシステムタイプの略称を追加してください。たとえば、UFS ファイルシステムのマウントに関して専用コマンドのマニュアルページを調べるには、man mount_ufs(1M) と入力します。
Solaris ファイルシステムは階層構造になっており、ルートディレクトリ (/) から始まり、下位に多数のディレクトリが形成されています。Solaris のインストールプロセスは、デフォルトのディレクトリセットをインストールし、一連の規則を適用して類似するタイプのファイルをグループ化します。表 26-2 に、デフォルトの Solaris ファイルシステムの概要と、各ファイルシステムのタイプを示します。
システムを動作させるには、ルート (/) と /usr のファイルシステムが必要です。/usr ファイルシステムに置かれている最も基本的なコマンドの一部 (mount など) は、システムのブート時や、システムがシングルユーザーモードで実行しており、/usr ファイルシステムがマウントされていない場合でも使用できるように、ルート (/) ファイルシステムにも置かれています。デフォルトディレクトリのリストについては、第 32 章「ファイルシステムの参照情報」を参照してください。
表 26-2 デフォルトの Solaris ファイルシステム
ファイルシステムまたはディレクトリ |
ファイルシステムのタイプ |
説明 |
---|---|---|
UFS |
階層ファイルツリーの最上位。ルートディレクトリには、カーネル、デバイスドライバ、システムのブートに使用されるプログラムなど、システム処理に欠かせないディレクトリとファイルが入っている。また、ローカルとリモートのファイルシステムをファイルツリーに接続できるマウントポイントディレクトリも入っている。 |
|
UFS |
他のユーザーと共有できるシステムファイルとディレクトリ。特定のタイプのシステム上でのみ実行できるファイルは、/usr ディレクトリに入っている (SPARC 実行可能ファイルなど)。どのタイプのシステム上でも使用できるファイル (マニュアルページなど) は、/usr/share に入っている。 |
|
NFS、UFS |
ユーザーのホームディレクトリのマウントポイント。ホームディレクトリには、そのユーザーの作業ファイルが格納される。デフォルトでは、/home は自動マウントされるファイルシステムである。スタンドアロンシステム上では、/home はローカルディスクスライス上の UFS ファイルシステムの場合がある。 |
|
UFS |
ローカルシステムの使用中に変化または拡大する可能性のあるシステムファイルとディレクトリ。これには、システムログ、vi と ex のバックアップファイル、および uucp ファイルが含まれる。 |
|
NFS、UFS |
オプションの Sun 以外のソフトウェア製品のマウントポイント。システムによっては、/opt がローカルディスクスライス上の UFS ファイルシステムの場合がある。 |
|
TMPFS |
システムがブートされるたびにまたは /tmp ファイルシステムがマウント解除されるたびに消去される一時ファイル |
|
PROCFS |
アクティブなプロセスの番号別リスト |
Solaris オペレーティング環境は、一部のディスクスライスをファイルシステムではなく一時記憶域として使用します。これらのスライスを「スワップスライス」または「スワップ空間」と呼びます。スワップスライスは、現在のプロセスを処理するだけの十分な物理メモリーがシステムにない場合に、仮想メモリー記憶域として使用されます。
多くのアプリケーションは十分なスワップ空間が使用できることを前提に作成されているため、スワップ空間を割り当て、その使われ方を監視して、必要に応じてスワップ空間を追加する方法を知っておくことは大切です。スワップ空間の概要とスワップ空間を追加する手順については、第 30 章「追加スワップ空間の構成の手順」を参照してください。
UFS は、Solaris オペレーティング環境内のデフォルトのディスクベースファイルシステムです。ほとんどの場合、ディスクベースのファイルシステムを管理するときには、UFS を管理していることになります。UFS ファイルシステムの機能は次の通りです。
状態フラグ - ファイルシステムの状態を、クリーン、安定、使用中、ロギング処理、または不明として示します。これらのフラグにより、必要のないチェックをファイルシステム上で行わなくて済みます。ファイルシステムが「クリーン」状態、「安定」状態、または「ロギング処理」状態になっていると、ファイルシステムのチェックは実行されません。
拡張基礎タイプ (EFT) - 32 ビットのユーザー ID (UID)、グループ ID (GID)、およびデバイス番号
大規模ファイルシステム - UFS ファイルシステムの最大サイズは 1T バイト (テラバイト) です。Solaris オペレーティング環境では、論理スライスの大きさを 1T バイトのファイルシステムに対応させるストライプ機能はサポートされていませんが、Sun 提供の Solstice DiskSuiteTM ソフトウェアには、この機能が含まれています。
大規模ファイル - デフォルトでは、UFS ファイルシステムは 2G バイト (ギガバイト) を超える通常ファイルを持つことができます。2G バイトの最大ファイルサイズ制限を有効にするには、nolargefiles マウントオプションを明示的に使用しなければなりません。
UFS ファイルシステムの詳細は、第 32 章「ファイルシステムの参照情報」を参照してください。
UFS ファイルシステムを作成すると、ディスクスライスは、1 つまたは複数の連続するディスクシリンダから構成されるシリンダグループに分割されます。シリンダグループはさらに、位置指定可能なブロックに分割され、このブロックによって、シリンダグループ内のファイルの構造が編成され、制御されます。各種のブロックは、ファイルシステム内で特定の機能を持っています。
UFS ファイルシステムには、次の 4 種類のブロックがあります。
ブートブロック - システムのブート時に使用される情報が格納される。
スーパーブロック - ファイルシステムに関する大部分の情報が格納される。
i ノード - ファイル名を除く、ファイルに関するすべての情報が格納される。
記憶域またはデータブロック - 各ファイルのデータが格納される。
各ブロックタイプの詳細については、「UFS ファイルシステムのシリンダグループの構造」を参照してください。
newfs コマンドまたは mkfs コマンドの引数を使用してファイルシステムをカスタマイズするには、これらのパラメータの変更方法について第 32 章「ファイルシステムの参照情報」を参照してください。
UFS ロギングは、トランザクション (完全な UFS 操作を構成する変更) をログに保存してから、そのトランザクションを UFS ファイルシステムに適用するプロセスです。保存されたトランザクションは、後でファイルシステムに適用できます。
システムはリブート時に、不完全なトランザクションを廃棄しますが、完結している操作のトランザクションは適用します。完結しているトランザクションだけが適用されるために、ファイルシステムの整合性が保たれます。通常であればシステムコールの実行が中断され、UFS ファイルシステムの整合性が確保できないシステムクラッシュ時にも、ファイルシステムの整合性が保たれます。
UFS ロギングには 2 つの長所があります。まず、ファイルシステムの整合性が保持されるため、fsck(1M) を実行する必要がなくなります。また、fsck を省略できるため、システムがクラッシュしたり、異常停止 (クリーンではない停止) した場合でもシステムをリブートするのに要する時間を短縮できます。クリーンではない停止についての詳細は、「fsck でチェックして修復される内容」を参照してください。UFS ロギングを使用すれば、特に、通常であれば fsck による読み込みと確認に時間がかかる大規模ファイルシステムを持つシステムのブート時間を短縮できます。
UFS ロギングが作成するログは、いっぱいになるとフラッシュされます。また、ファイルシステムがマウント解除されたとき、あるいは lockfs -f コマンドを実行したときにも、ログはすべてフラッシュされます。
デフォルトでは、UFS ロギングは無効です。UFS ロギングを有効にするには、ファイルシステムをマウントするときに、-o logging オプションを指定して mount(1M) コマンドを実行しなければなりません。ログはファイルシステムの空きブロックから割り当てられ、1G バイトのファイルシステムごとに約 1M バイトのサイズ (合計で 64M バイトまで) が割り当てられます。ログは、ルート (/) ファイルシステムを含む、任意の UFS で有効にできます。また、fsdb コマンドには、UFS ロギングをサポートするための新しいデバッグオプションが追加されています。
ファイルシステムの配置を決めるときには、要求が競合する可能性があることを考えなければなりません。推奨事項は次の通りです。
作業負荷を異なる入出力システムやディスクドライブ間でできるだけ均等に分散します。/export/home を分散させたり、ディレクトリを入れ替えたりして、異なるディスクに負荷を均等に割り当てます。
プロジェクトの個々の部分やグループのメンバーを同じファイルシステム内に入れます。
1 ディスク当たりのファイルシステム数をできるだけ少なくします。通常、システム (またはブート) ディスク上には、/、/usr、スワップ空間の 3 つのファイルシステムがあります。他のディスク上では、1 つまたは通常は 2 つのスライスを作成します。多数の小型ファイルシステムに分割しすぎるよりもファイルシステム数を少なくして余地を設ける方が、ファイルがフラグメントに分割される可能性が小さくなります。容量の大きいテープドライブを使用し、ufsdump で複数のボリュームを処理できるようにしておけば、大型ファイルシステムでも簡単にバックアップをとることができます。
絶えずきわめて小さいファイルを作成するユーザーがいる場合は、i ノード数を増やして別のファイルシステムを作成することを検討します。ただし、ほとんどのサイトでは、類似するタイプのファイルを同じファイルシステム内で保管するようにする必要はありません。
デフォルトのファイルシステムパラメータや、新しいファイルシステムを作成するときの前提条件と手順については、第 27 章「ファイルシステムの作成手順」を参照してください。
ファイルシステム上のファイルにアクセスするには、ファイルシステムをマウントする必要があります。ファイルシステムのマウントとは、ファイルシステムをディレクトリ (マウントポイント) に接続し、システムで使用可能にすることです。ルート (/) ファイルシステムは、常にマウントされています。他のファイルシステムは、ルート (/) ファイルシステムに接続したり切り離したりすることができます。
ファイルシステムをマウントすると、そのファイルシステムがマウントされている間は、マウントポイントのディレクトリ内に実際に存在しているファイルやディレクトリは使用できなくなります。これらのファイルはマウント処理の影響を永続的に受けるわけではなく、ファイルシステムをマウント解除すると再び使用できるようになります。通常は存在はするがアクセスできないファイルは混乱の原因になるので、マウントディレクトリを空にしておきます。
次の例では、ルート (/) ファイルシステムの下に、サブディレクトリ sbin、etc、および opt を持つローカルのファイルシステムを示します。
ここでは、標準添付されていない製品セットが含まれている /opt ファイルシステムからローカルファイルシステムにアクセスするものとします。
まず、ファイルシステムをマウントするためのマウントポイントとして使用するディレクトリを作成しなければなりません (たとえば、/opt/unbundled)。マウントポイントを作成すると、mount コマンドでファイルシステムをマウントでき、/opt/unbundled 内のすべてのファイルとディレクトリにアクセスできるようになります (図 26-2 を参照)。これらの作業を実行するための詳細な手順については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
ファイルシステムをマウント解除すると、そのファイルシステムはマウントポイントから削除されます。一部のファイルシステム管理作業は、マウントされたファイルシステム上では実行できません。次の場合には、ファイルシステムをマウント解除する必要があります。
不要になった場合や、最新ソフトウェアが入っているファイルシステムに交換した場合。
fsck コマンドを使用して検査し修復する場合。fsck コマンドの詳細は、第 31 章「ファイルシステムの整合性チェック」を参照。
ファイルシステムの完全バックアップを実行する前に、そのファイルシステムをマウント解除しておくとよいでしょう。バックアップの実行方法については、第 33 章「ファイルシステムのバックアップと復元の概要」を参照してください。
ファイルシステムは、システムのシャットダウン手続きの一部として自動的にマウント解除されます。
ファイルシステムをマウントまたはマウント解除すると、現在マウントされているファイルシステムのリストを使用して、/etc/mnttab (マウントテーブルファイル) が変更されます。マウントテーブルの内容は cat または more コマンドを使用して表示できますが、/etc/vfstab ファイルのように編集することはできません。次にマウントテーブルファイル /etc/mnttab の例を示します。
$ more /etc/mnttab /dev/dsk/c0t3d0s0 / ufs rw,suid,dev=800018,largefiles 863804345 /dev/dsk/c0t3d0s6 /usr ufs rw,suid,dev=80001e,largefiles 863804345 /proc /proc proc rw,suid,dev=2900000 863804345 fd /dev/fd fd rw,suid,dev=29c0000 863804345 /dev/dsk/c0t3d0s3 /export ufs suid,rw,largefiles,dev=80001b 863804347 /dev/dsk/c0t3d0s7 /export/home ufs suid,rw,largefiles,dev=80001f 863804348 /dev/dsk/c0t3d0s4 /export/swap ufs suid,rw,largefiles,dev=80001c 863804348 /dev/dsk/c0t3d0s5 /opt ufs suid,rw,largefiles,dev=80001d 863804347 swap /tmp tmpfs dev=2a80000 863804347 $ |
アクセスするたびにファイルシステムを手動でマウントするのは、時間のかかる作業です。この問題を解決するために、仮想ファイルシステムテーブル (/etc/vfstab ファイル) が作成されました。このファイルに、マウントするファイルシステムとそのマウント方法が指定されます。/etc/vfstab ファイルは、2 つの重要な機能を持っています。1 つは、システムブート時に自動的にマウントするファイルシステムを指定できることです。もう 1 つは、マウントポイント名だけでファイルシステムをマウントできることです。これは、/etc/vfstab ファイルにマウントポイントと実際のデバイススライス名とのマッピングを指定することより可能になります。
デフォルトの /etc/vfstab ファイルは、システムをインストールするときに作成され、その内容はシステムソフトウェアをインストールするときに行なった選択によって異なります。ただし、システムの /etc/vfstab ファイルはいつでも編集できます。エントリを追加するときに指定する必要がある主な情報は、ファイルシステムが置かれているデバイス、マウントポイントの名前、ファイルシステムのタイプ、システムブート時に自動的にブートするかどうか (mountall(1M) コマンドを使用する)、およびマウントオプションです。
次の例は、/etc/vfstab ファイルの内容を示しています。コメント行は # で始まります。この例は、2 つのディスク (c0t0d0 と c0t3d0) を持つシステムの /etc/vfstab ファイルです。
$ more /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no - /proc - /proc proc - no - /dev/dsk/c0t0d0s1 - - swap - no - swap - /tmp tmpfs - yes - /dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /usr ufs 2 no - /dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /test ufs 2 yes - $ |
例 26-1 の最後のエントリは、システムブート時に /dev/dsk/c0t2d0s7 スライス上の UFS ファイルシステムを自動的にマウントポイント /test にマウントすることを指定しています。ルート (/) と /usr では、「mount at boot」フィールドの値が no に指定されていることに注意してください。これはこの 2 つのファイルシステムが、mountall コマンドを実行する前にブートシーケンスの一部としてカーネルによってマウントされるからです。
/etc/vfstab の各フィールド、このファイルの編集方法、使用方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
NFS は、1 つのシステム (通常はサーバー) の資源 (ファイルやディレクトリ) をネットワーク経由で他のシステムと共有するための分散型ファイルシステムです。たとえば、Sun 以外のアプリケーションやソースファイルを他のシステム上のユーザーと共有できます。
NFS は、資源の実際の物理的な位置をユーザーが意識しなくてすむようにします。共通に使用されるファイルのコピーをシステムごとに配置しなくても、あるシステムのディスク上にコピーを 1 つ配置することによって NFS は、他のすべてのシステムがそのコピーにネットワーク経由でアクセスできるようにします。NFS の環境では、リモートファイルシステムは、実際にはローカルシステムと区別がつきません。
システムは、ネットワークに対して共有またはエクスポートするファイルシステを持っているときに、NFS サーバーになります。サーバーは、現在エクスポートされている資源とアクセス制限 (読み取り/書き込み、読み取り専用など) のリストを管理します。
資源を共有する場合は、リモートシステムにマウントできるように、その資源を使用可能な状態にします。
資源を共有するには、次の方法があります。
資源を共有する方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。NFS の詳細な説明については、『NFS の管理』を参照してください。
NFS ファイルシステムをマウントするには、自動マウントまたは AutoFS というクライアント側のサービスを使用します。このサービスによってシステムは、ユーザーがアクセスしたときに自動的に NFS ファイルシステムをマウントまたはマウント解除できます。ユーザーがファイルシステム内のファイルを使用している間、ファイルシステムはマウントされたままになります。ファイルシステムが一定の時間アクセスされなかった場合、ファイルシステムは自動的にマウント解除されます。
次に、AutoFS の特徴を示します。
システムブート時に NFS ファイルシステムをマウントする必要がないために、ブート時間が短くなります。
NFS ファイルシステムをマウントまたはマウント解除するために、root のパスワードを知っている必要はありません。
NFS ファイルシステムは使用されるときにだけマウントされるために、ネットワークトラフィックが軽減されます。
AutoFS サービスは automount(1M) によって初期化され、automount はシステムのブート時に自動的に実行されます。自動マウントデーモン automountd(1M) は永続的に動作し、必要に応じて NFS ファイルシステムをマウントまたはマウント解除します。デフォルトでは、Solaris オペレーティング環境は /home を自動マウントします。
AutoFS は、ネームサービスに指定されたファイルシステムに対して動作します。この情報は、NIS、NIS+、またはローカルの /etc 内のファイルで管理されます。AutoFS を使用すると、同じファイルシステムを提供するサーバーを複数指定できます。このような方法では、1 つのサーバーがダウンしても、AutoFS が他のマシンからファイルシステムをマウントすることができます。各サーバーに優先度を示す数値を割り当てることによって、マップ内の各資源ごとにサーバーの優先順位を指定できます。
AutoFS の設定と管理方法については、『NFS の管理』を参照してください。
NFS マウントされたファイルシステムの性能とスケーラビリティを向上させるには、キャッシュファイルシステム (CacheFS) を使用します。CacheFS は、サーバーとネットワークの負荷を軽減することによって、NFS サーバーの性能とスケーラビリティを向上させる汎用ファイルシステムキャッシュ機構です。
CacheFS は、階層化ファイルシステムとして設計されており、あるファイルシステムを別のファイルシステムのキャッシュに書き込む機能を持っています。NFS 環境では、CacheFS はサーバーあたりのクライアント比率を高め、サーバーとネットワークの負荷を軽減し、ポイントツーポイントプロトコル (PPP) などの低速リンク上のクライアントのパフォーマンスを向上させます。また、CacheFS と AutoFS サービスを併用すると、さらにパフォーマンスとスケーラビリティを向上することができます。
CacheFS についての詳細は、第 29 章「キャッシュファイルシステムの手順」を参照してください。
表 26-3 に、ファイルシステムの用途に応じてファイルシステムをマウントするためのガイドラインを示します。
表 26-3 ファイルシステムのマウント方法の決定
ファイルシステムを含む CD-ROM は、単にドライブに挿入するだけでマウントできます (ボリューム管理が自動的にマウントします)。ファイルシステムを含むフロッピーディスクは、ドライブに挿入して volcheck コマンドを実行することによりマウントできます。詳細は、パート IV「取り外し可能な媒体の管理」を参照してください。
ファイルシステムのタイプは、次のいずれかを使用して判断できます。
この手順は、ファイルシステムがマウントされているかどうかに関わらず使用できます。
grep コマンドを使用して、ファイルシステムのタイプを調べます。
$ grep mount-point fs-table |
mount-point |
タイプを調べるファイルシステムのマウントポイント名を指定する。 |
fs-table |
ファイルシステムのタイプを調べるファイルシステムテーブルへの絶対パスを指定する。ファイルシステムがマウントされている場合、fs-table は /etc/mnttab。マウントされていない場合、fs-table は /etc/vfstab。 |
マウントポイントの情報が表示されます。
ディスクスライスの raw デバイス名を知っている場合、fstyp(1M) コマンドで、ファイルシステムのタイプを調べることができます (そのディスクスライスにファイルシステムが含まれている場合)。
次の例は、/etc/vfstab を使用して、/export ファイルシステムのタイプを調べます。
$ grep /export /etc/vfstab /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /export ufs 2 yes - $ |
次の例は、/etc/mnttab ファイルを使用して、現在マウントしている (ボリューム管理でマウントした) フロッピーディスクのファイルシステムのタイプを調べます。
$ grep /floppy /etc/mnttab /vol/dev/diskette0/unnamed_floppy /floppy/unnamed_floppy pcfs rw,nohidden, nofoldcase,dev=16c0009 89103376 $ |