この章の内容は次のとおりです
ファイルシステムは、ファイルを編成して格納するためのディレクトリ構造です。「ファイルシステム」という用語には、さまざまな使用方法があります。
ディスクベース、ネットワークベース、または仮想ファイルシステムなど、特定のタイプのファイルシステムを指す場合
ルートディレクトリから下位へのファイルツリー全体を指す場合
ディスクスライスや他の媒体記憶デバイスのデータ構造を指す場合
ファイル構造のうち、アクセスできるようにメインファイルツリー上のマウントポイントに接続されている部分を指す場合
通常、その意味は状況に応じて判断できます。
Solaris システムソフトウェアは、各種ファイルシステムへの標準インタフェースを提供する「仮想ファイルシステム」 (VFS) アーキテクチャを使用します。VFS アーキテクチャによって、ユーザーやプログラムが基礎となるファイルシステムのタイプを知らなくても、カーネルはファイルの読み取り、書き込み、一覧表示などの基本操作を処理できます。
ファイルシステムの管理コマンドは、各種のファイルシステムを管理できるように共通インタフェースを提供します。これらのコマンドには 2 種類あります。1 つは汎用コマンドで、もう 1 つはファイルシステム専用のコマンドです。汎用コマンドはほとんどのタイプのファイルシステムに適用されますが、専用コマンドは特定のタイプのファイルシステムにのみ適用されます。
ファイルシステムの管理は、最も重要なシステム管理作業の 1 つです。この章を読んで概念と計画方法について理解してください。次の作業については、Part VIII の他の章と他の Part を参照してください。
新しい UFS と仮想ファイルシステムを設定する - 詳細は、第 27 章「ファイルシステムの作成手順」と第 29 章「キャッシュファイルシステムの手順」を参照してください。各種の仮想ファイルシステムについては、後で説明します。
ローカルファイルとリモートファイルをユーザーが利用できるようにする - 詳細は第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
新しい記憶デバイスを接続して構成する - 詳細は 第 21 章「ディスク管理の概要」を参照してください。
バックアップスケジュールを計画して、導入し、必要に応じてファイルとファイルシステムを復元する - バックアップの作成、およびファイルとファイルシステムの復元については、第 33 章「ファイルシステムのバックアップと復元の概要」を参照してください。
ファイルシステムの損傷をチェックして訂正する - 自動 (ブート時) チェックに失敗した場合の処理については、第 31 章「ファイルシステムの完全性チェック」を参照してください。
Solaris 2.6 リリースにおけるファイルシステムの新しい機能のいくつかを次に説明します。
mount コマンドの新しいオプション -largefiles は、Solaris 2.6 環境のデフォルトのマウントオプションです。このオプションを使用すると、2G バイト以上の大規模ファイルを持つファイルシステムを作成できます。-largefiles オプションは、このオプションでマウントしたファイルシステムに 2G バイト以上の大規模ファイルが存在する可能性があることを意味し、必ずしもそのようなファイルが存在している必要はありません。大規模ファイルを持つファイルシステムをマウントする方法の詳細は、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
NFS クライアントフェイルオーバーは、選択した最初のホストに到達できなかった場合に、ファイルシステムをマウントする追加のホストを指定する機能です。/etc/vfstab ファイルに設定することも、コマンド行からホストのリストを指定することもできます。
WebNFSTM 機能 (「パブリック NFS」とも言う) によって、Solaris 2.6 リリースでは、share コマンドに 2 つのオプションが追加されます。
-index 「filename」を指定すると、NFS URL で参照されるディレクトリ内に 「filename」に一致する名前のファイルが見つかった場合に、そのファイルが自動的にロードされます。
-public を指定すると、公開ファイルハンドルをそのディレクトリに再設定します。これによって、通常の方法ではマウントできないファイルシステムでも、NFS URL 経由でアクセスできるようになります。
Solaris システムソフトウェアでは、次の 3 種類のファイルシステムがサポートされます。
ディスクベース
ネットワークベース
仮想
ファイルシステムのタイプを確認するには、「ファイルシステムのタイプを調べる」を参照してください。
ディスクベースのファイルシステムは、ハードディスク、CD-ROM、フロッピーディスクなどの物理媒体に格納されます。ディスクベースのファイルシステムは、さまざまな形式で作成できます。利用できる形式は次のとおりです。
UFS - UNIX ファイルシステム (4.3 Tahoe リリースに組み込まれていた BSD Fat Fast File システム)。UFS は、Solaris システムソフトウェアのデフォルトのディスクベースファイルシステムです。
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 ファイルシステムのセマンティクスとファイルタイプを提供します。ただし、書き込み可能ではなく、ハードリンクも提供しません。
ディスクベースの各種ファイルシステムは、次のように特定の媒体のタイプに対応しています。
UFS とハードディスク
HSFS と CD-ROM
PCFS とフロッピーディスク
ただし、上記以外の対応も可能です。たとえば、CD-ROM とフロッピーディスクにも、UFS ファイルシステムを作成できます。
ネットワークベースのファイルシステムは、ネットワーク上でアクセスされるファイルシステムです。一般に、ネットワークベースのファイルシステムは 1 つのシステム上にあり、他のシステムからネットワーク経由でアクセスされます。NFS は、ネットワークベースで利用できる唯一のファイルシステムです。
NFS は、Solaris のデフォルトの分散ファイルシステムです。分散ファイルシステムを管理するには、サーバーからエクスポートして個々のシステムにマウントします。詳細は、「マウントとマウント解除」を参照してください。
仮想ファイルシステムは、特殊なカーネル情報と機能へのアクセスを提供するメモリーベースのファイルシステムです。ほとんどの仮想ファイルシステムは、ディスク領域を使用しません。ただし、キャッシュファイルシステムは、ディスク上のファイルシステムを使用してキャッシュに入れ、一時ファイルシステムなどの仮想ファイルシステムは、ディスク上のスワップ空間を使用します。
キャッシュファイルシステム (CacheFS) を使用すると、リモートファイルシステムや、CD-ROM ドライブのような低速デバイスの性能を改善できます。ファイルシステムをキャッシュすると、リモートファイルシステムや CD-ROM から読み込まれたデータは、ローカルシステム上のキャッシュに格納されます。キャッシュファイルシステムの設定と管理については、第 29 章「キャッシュファイルシステムの手順」を参照してください。
一時ファイルシステム (TMPFS) は、ファイルシステムの読み取りと書き込みにローカルメモリーを使用します。一般に、UFS ファイルシステム内のファイルよりも、TMPFS ファイルシステム内のファイルにアクセスする方が高速です。ファイルシステムのマウントが解除されるときと、システムがシャットダウンまたはリブートされるときに、一時ファイルシステムが削除されます。
TMPFS は、Solaris システムソフトウェア内の /tmp ディレクトリのデフォルトのファイルシステムです。UFS /tmp ファイルシステムの場合と同様に、/tmp ディレクトリとの間でファイルをコピーまたは移動できます。
TMPFS ファイルシステムを使用すると、一時ファイルをローカルディスクに読み書きしたり、ネットワーク上で読み書きしたりする際のコストを節約でき、システム性能を改善できます。たとえば、プログラムをコンパイルすると一時ファイルが作成されます。オペレーティングシステムは、これらのファイルを処理する間に大量のディスク処理やネットワーク処理を行います。TMPFS を使用してこれらの一時ファイルを格納すると、その作成、処理、または削除が大幅に高速になります。
TMPFS ファイルシステムは、一時的な格納場所としてスワップ空間を使用します。TMPFS ファイルシステムがマウントされたシステムのスワップ空間が足りないと、次の 2 つの問題が発生する可能性があります。
TMPFS ファイルシステムは、通常のファイルシステムがいっぱいになった場合と同様に容量不足になる可能性がある。
TMPFS はスワップ空間を割り当ててファイルのデータを保存するので (必要な場合)、一部のプログラムはスワップ空間不足のために実行できなくなる。
TMPFS ファイルシステムの作成方法については、第 27 章「ファイルシステムの作成手順」を参照してください。スワップ空間を拡張する方法については、第 30 章「スワップ空間の追加構成の手順」を参照してください。
ループバックファイルシステム (LOFS) を使用すると、代替パス名を使用してファイルにアクセスできるように、新しい仮想ファイルシステムを作成できます。たとえば、/ のループバックマウントを /tmp/newroot 上で作成できます。ファイルシステム階層全体が、NFS サーバーからマウントされるファイルシステムを含め、/tmp/newroot 上に複写されたように見えます。どのファイルにも、/ で始まるパス名または /tmp/newroot で始まるパス名を使用してアクセスできます。
LOFS ファイルシステムの作成方法については、第 27 章「ファイルシステムの作成手順」を参照してください。
プロセスファイルシステム (PROCFS) はメモリー内にあります。PROCFS の /proc ディレクトリには、有効なプロセスのプロセス番号別リストが入っています。/proc ディレクトリ内の内容は、ps などのコマンドに使用されます。デバッガや他の開発ツールも、ファイルシステムコールを使用して、プロセスのアドレス空間にアクセスできます。次の例は、/proc ディレクトリの内容の一部を表示したものです。
$ ls -l /proc total 144944 -rw------- 1 root root 0 Dec 19 15:45 00000 -rw------- 1 root root 196608 Dec 19 15:45 00001 -rw------- 1 root root 0 Dec 19 15:45 00002 -rw------- 1 root root 1028096 Dec 19 15:46 00073 -rw------- 1 root root 1445888 Dec 19 15:46 00091 -rw------- 1 root root 1142784 Dec 19 15:46 00093 -rw------- 1 root root 1142784 Dec 19 15:46 00095 -rw------- 1 ignatz staff 1576960 Dec 19 15:50 00226 -rw------- 1 ignatz staff 192512 Dec 19 15:51 00236 -rw------- 1 ignatz staff 1269760 Dec 19 15:52 00240 -rw------- 1 ignatz staff 6090752 Dec 19 15:52 00241 -rw------- 1 ignatz staff 188416 Dec 19 15:52 00247 -rw------- 1 ignatz staff 2744320 Dec 19 15:52 00256
/proc ディレクトリ内のファイルは削除しないでください。/proc ディレクトリからプロセスを削除するのは、最善の方法ではありません。/proc ファイルはディスク容量を消費しないため、このディレクトリからファイルを削除してもあまり意味がないので注意してください。
/proc ディレクトリには、システム管理は不要です。
次のタイプの仮想ファイルシステムは、参考のために掲載してあります。管理は不要です。
ほとんどのファイルシステム管理コマンドには、汎用コマンドとファイルシステム専用の 2 種類があります。ファイルシステム専用のコマンドを呼び出す汎用コマンドを使用してください。表 26-1 は、汎用ファイルシステム管理コマンドを示しています。この種のコマンドは、/usr/sbin ディレクトリに入っています。
表 26-1 汎用ファイルシステム管理コマンド
コマンド |
機能 |
---|---|
i ノードをクリアする。 |
|
空きディスクブロック数とファイル数を出力する。 |
|
ファイルシステムのファイル名と統計情報を表示する。 |
|
ファイルシステムの完全性をチェックし、検出された損傷を修復する。 |
|
ファイルシステムをデバッグする。 |
|
ファイルシステムのタイプを調べる。 |
|
テープにコピーするときに、ファイルシステムのラベルを表示または作成する (volcopy コマンド専用)。 |
|
新しいファイルシステムを作成する。 |
|
ファイルシステムとリモート資源をマウントする。 |
|
ファイルシステムテーブルで指定されたすべてのファイルシステムをマウントする。 |
|
パス名とその i 番号のリストを生成する。 |
|
ファイルシステムとリモート資源のマウントを解除する。 |
|
ファイルシステムテーブルで指定されたすべてのファイルシステムをマウント解除する。 |
|
ファイルシステムのイメージコピーを作成する。 |
上記のほとんどのコマンドには、それに相当するファイルシステム固有のコマンドがあります。
ファイルシステム上でサポートされない操作を指定すると、汎用コマンドから次のエラーメッセージが表示されます。
コマンド名 : ファイルシステムのタイプ type に操作が適用されません。
ほとんどの汎用コマンドには、次の構文を使用します。
コマンド [-F type] [-V] [generic-options] [-o specific-options] [special|mount-point] [operands]表 26-2 汎用コマンドのオプションと引数
汎用ファイルシステムコマンドは、次の順序でファイルシステムのタイプを判断します。
-F オプションで指定されているファイルシステムのタイプ
特殊デバイスを /etc/vfstab 内のエントリと突き合わせて判断します (special が指定されている場合)。たとえば fsck は、まず fsck device フィールドと突き合わせて一致するエントリを検索します。一致するエントリが見つからなければ、特殊デバイスフィールドと突き合わせてチェックします。
ローカルファイルシステムの場合は /etc/default/fs 内で指定されたデフォルトを使用し、リモートファイルシステムの場合は /etc/dfs/fstypes 内で指定されたデフォルトを使用して判断します。
汎用コマンドと専用コマンドについては、『SunOS Reference Manual』の Section 1M「Maintenance Commands」を参照してください。専用コマンドのマニュアルページは、汎用コマンドのマニュアルページに続いて入っています。特定のマニュアルページを見つけるには、汎用コマンド名の末尾にアンダースコアとファイルシステムタイプの略称を追加してください。たとえば、HSFS ファイルシステムのマウントに関して専用コマンドのマニュアルページを調べるには、man mount_hsfs(1M) と入力します。
Solaris ファイルシステムは階層形式で、ルートディレクトリ (/) から始まり、下位に多数のディレクトリが入っています。システムソフトウェアは、デフォルトのディレクトリセットをインストールし、一連の規約を使用して類似するタイプのファイルをグループ化します。表 26-3 は、デフォルトの Solaris ファイルシステムの概要と、各ファイルシステムのタイプを示しています。ルートと /usr のファイルシステムのデフォルトディレクトリの詳細は、第 32 章「ファイルシステムの参照情報」を参照してください。
表 26-3 デフォルトの Solaris ファイルシステム
ファイルシステムまたはディレクトリ |
ファイルシステムのタイプ |
説明 |
---|---|---|
UFS |
階層ファイルツリーの最上位。ルートディレクトリには、カーネル、デバイスドライバ、システムのブートに使用されるプログラムなど、システム処理に欠かせないディレクトリとファイルが入っている。また、ローカルとリモートのファイルシステムをファイルツリーに接続できるマウントポイントディレクトリも入っている。 |
|
UFS |
他のユーザーと共有できるシステムファイルとディレクトリ。特定のタイプのシステム上でのみ実行できるファイルは、/usr ディレクトリに入っている (SPARC 実行可能ファイルなど)。どのタイプのシステム上でも使用できるファイル (マニュアルページなど) は、/usr/share に入っている。 |
|
NFS、UFS |
ユーザーのホームディレクトリのマウントポイント。ホームディレクトリには、そのユーザーの作業ファイルが格納される。デフォルトでは、/home は自動マウントされるファイルシステムである。スタンドアロンシステム上では、/home はローカルディスクスライス上の UFS ファイルシステムの場合がある。 |
|
UFS |
ローカルシステムの使用中に変化または拡大する可能性のあるシステムファイルとディレクトリ。これには、システムログ、vi と ex のバックアップファイル、および uucp ファイルが含まれる。 |
|
NFS、UFS |
オプションの Sun 以外のソフトウェア製品のマウントポイント。システムによっては、/opt がローカルディスクスライス上の UFS ファイルシステムの場合がある。 |
|
TMPFS |
システムがブートまたはマウント解除されるたびに消去される一時ファイル |
|
PROCFS |
アクティブなプロセスの番号別リスト |
システムを実行するには、ルート (/) と /usr のファイルシステムが必要です。/usr ファイルシステムからの最も基本的なコマンドの一部 (mount など) は、システムのブート時やシングルユーザーモードで /usr がマウントされていないときに使用できるように、ルート (/) ファイルシステムに組み込まれています。デフォルトディレクトリのリストについては、第 32 章「ファイルシステムの参照情報」を参照してください。
Solaris システムソフトウェアは、一部のディスクスライスをファイルシステムではなく一時記憶域に使用します。これらのスライスを「スワップスライス」と呼びます。スワップスライスは、システムが物理メモリー不足で現在のプロセスを処理できない場合に、仮想メモリー記憶域として使用されます。
Solaris 2.x の仮想メモリーシステムは、ディスク上の物理コピーをメモリー内の仮想アドレスに対応付けます。これらのマッピングに関するデータが入った物理メモリーページのバックアップを、ファイルシステム内の通常ファイルまたはスワップ空間に作成できます。メモリーのバックアップがスワップ空間に作成されると、ユーザーにはメモリーのバックアップファイル名が分からないため、これを「anonymous メモリー」と呼びます。
スワップ空間の詳細な概念、スワップ空間を増やす手順、Solaris 1.x (SunOS 4.x) と Solaris 2.x (SunOS 5.X) のスワップ要件の違いについては、第 30 章「スワップ空間の追加構成の手順」を参照してください。
UFS は、Solaris システムソフトウェア内のデフォルトのディスクベースファイルシステムです。ほとんどの場合、ディスクベースのファイルシステムを管理するときには、UFS を管理していることになります。UFS の機能は次の通りです。
状態フラグ - ファイルシステムの状態として、クリーン、安定、有効、または不明を示します。これらのフラグがあれば、ファイルシステムをチェックする必要がなくなります。ファイルシステムが「クリーン」状態または「安定」状態になっていると、ファイルシステムのチェックは実行されません。
大規模ファイルシステム - UFS ファイルシステムの最大サイズは 1T バイト (テラバイト) 以内で、通常ファイルは 2G バイト (ギガバイト) です。Solaris システムソフトウェアにはストライプ機能がないので、論理スライスを 1T バイトのファイルシステムに合わせて大きくする必要があります。ただし、SunSoft 発売の Solstice DiskSuiteTM ソフトウェアには、この機能が含まれています。
Solaris デバイス名は、スライスという用語 (およびデバイス名に含まれる文字「s」) を使用してスライス番号を指します。SunOS 4.x ではスライスのことを「パーティション」と呼んでいました。
図 26-1 は、ディスクスライスをどのようにフォーマットして UFS ファイルシステムを格納できるかを示しています。
この後の各節では、ディスクがどのようにスライスとシリンダグループに分割され、UFS ファイルシステムとして作成されるかについて説明します。
スライスは、ブロックの集合体です。これは、ディスクの物理的なサブセットです (ただし、スライス 2 は通常はディスク全体を表します)。ディスク上でファイルシステムを作成する前に、まずフォーマットしてスライスに分割しなければなりません。ディスクをインストールしてフォーマットし、ディスクをスライスに分割する方法の詳細は、パート VIIを参照してください。
スライスをスワップ空間用の raw デバイスとして使用するか、1 つの UFS ファイルシステムを格納できます。1 つのディスクを最高で 8 つのスライスに分割できます。一般的なディスクスライス割り当てのリストについては、パート VIIを参照してください。
次の例は、/dev/dsk/c0t3d0 のディスク情報を示しています。format コマンドでは、利用可能なディスクセクションの一部としてスライス情報が表示されないので注意してください。ディスクごとにコントローラ、ターゲット、およびディスクの番号が表示されます。
$ su Password: # format AVAILABLE DISK SELECTIONS: 0. c0t0d0 at scsibus0 slave 24 sd0: <SUN0207 cyl 1254 alt 2 hd 9 sec 36> 1. c0t3d0 at scsibus0 slave 0: veryloud sd3: <SUN0207 cyl 1254 alt 2 hd 9 sec 36> Specify disk (enter its number): 1 FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions inquiry - show vendor, product and revision volname - set 8-character volume name quit format> partition PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' partition 7 - change `7' partition select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk quit partition> print Volume: veryloud Current partition table (original sd3): Part Tag Flag Cylinders Size Blocks 0 root wm 0 - 39 14.06MB (40/0/0) 1 swap wu 40 - 199 56.25MB (160/0/0) 2 backup wm 0 - 1150 404.65MB (1151/0/0) 3 unassigned wm 0 0 (0/0/0) 4 unassigned wm 0 0 (0/0/0) 5 - wm 0 10.20MB (29/0/0) 6 usr wm 200 - 228 121.29MB (345/0/0) 7 home wm 574 - 1150 202.85MB (577/0/0 partition> quit format> quit #
ディスク番号とスライス番号がわかっている場合は、prtvtoc (ボリュームの内容一覧を表示) コマンドを使用してディスク情報を表示できます。ディスク上で定義されているゼロ以外のサイズのスライスを指定すると、ボリュームを指定できます (たとえば、ディスク 3 のすべてのスライスの場合は /dev/rdsk/c0t3d0s2、ディスク 3 の 8 番目のスライスの場合は /dev/rdsk/c0t3d0s7)。ディスクのターゲット番号はわかっているが、どのようにスライスに分割されているかがわからない場合は、スライス 2 またはスライス 0 を指定してディスク全体の情報を表示できます。
UFS ファイルシステムを、シリンダグループと呼ばれる 1 つまたは複数の領域に分割されたディスクスライス上で作成します。シリンダグループは、1 つまたは複数の連続するディスクシリンダ (プラッタの中心から同じ半径を持つ、プラッタグループ上のトラックの集合) からなっています。ディスクのジオメトリの詳細は、第 21 章「ディスク管理の概要」を参照してください。
シリンダグループマップは、シリンダグループごとに作成されます。シリンダグループマップには、ブロックの使用状況と使用可能なブロックが記録されます。
シリンダグループは、シリンダグループ内のファイルの構造を制御して編成するブロックに分かれています。各ブロックタイプが、システム内で固有の機能を持っています。UFS ファイルには、4 種類のアドレス可能ブロックと付加的な情報管理ディスク領域があります。4 つのブロックタイプは、次の通りです。
ブートブロック - システムのブート時に使用される情報が格納される。
スーパーブロック - ファイルシステムに関する大部分の情報が格納される。
i ノード - ファイル名を除き、ファイルに関するすべての情報が格納される。
記憶域またはデータブロック - 各ファイルのデータが格納される。
各ブロックタイプの詳細は、第 32 章「ファイルシステムの参照情報」を参照してください。
newfs コマンドの引数または mkfs コマンドを使用してファイルシステムをカスタマイズするには、これらのパラメタの変更方法について第 32 章「ファイルシステムの参照情報」を参照してください。
ファイルシステムの合計サイズの上限は 1T バイトです。UFS ファイルシステムは、それを保持するスライスと同じ大きさにできます。
UFS ファイルシステム内の 1 つのファイルの最大サイズは、そのファイルシステムの構成方法によって異なります。
UFS ファイルシステム 1 つ当たりの最大ファイル数は、そのファイルシステムに割り当てられた i ノード数によって決まります。i ノード数は、各 i ノードに割り当てられたディスク容量とファイルシステムの合計サイズによって決まります。デフォルトでは、2K バイトのデータ容量ごとに 1 つずつ i ノードが割り当てられます。newfs コマンドの -i オプションを使用すると、デフォルトの割り当てを変更できます。
フラグメントは、論理ブロックの未使用部分を減らして容量を節約するために作成される小型の論理ブロックです。論理ブロックとフラグメントの最大サイズは 8192 バイトですが、一般に、フラグメントは論理ブロックと同じか、それより小さいサイズです。
ディスクをフォーマットしてスライスに分割し終わったら、UFS ファイルを入れる各スライス上でファイルシステムを作成する必要があります。ディスクをフォーマットしてスライスに分割する方法の詳細は、 第 22 章「ディスク管理の手順」を参照してください。
ファイルシステムの配置を決めるときには、要求が競合する可能性があることを考えなければなりません。推奨事項は次の通りです。
作業負荷を異なる I/O システムやディスクドライブ間でできるだけ均等に分散します。/export/home を分散させたり、ディレクトリを入れ替えたりして、異なるディスクに負荷を均等に割り当てます。
プロジェクトの個々の部分やグループのメンバーを同じファイルシステム内に入れます。
1 ディスク当たりのファイルシステム数をできるだけ少なくします。通常、システム (またはブート) ディスク上には、/、/usr、スワップ空間の 3 つのスライスがあります。他のディスク上では、1 つまたは通常は 2 つのスライスを作成します。多数の小型スライスに分割しすぎるよりもスライス数を少なくして余地を設ける方が、ファイルがフラグメントに分割される可能性が小さくなります。容量の大きいテープドライブを使用し、ufsdump で複数のボリュームを処理できるようにしておけば、大型ファイルシステムでも簡単にバックアップをとることができます。
絶えずきわめて小さいファイルを作成するユーザーがいる場合は、i ノード数を増やして別のファイルシステムを作成することを検討します。ただし、ほとんどのサイトでは、類似するタイプのファイルを同じファイルシステム内で保管するようにする必要はありません。
デフォルトのファイルシステムパラメタや、新しいファイルシステムを作成するときの前提条件と手順については、第 27 章「ファイルシステムの作成手順」を参照してください。
ファイルシステムを、システム上で利用できるディレクトリ階層に接続できます。このプロセスをマウントと呼びます。マウントしたファイルシステムは、指定したマウントポイント (マウントされたファイルシステムの接続先ディレクトリ) で、システムのディレクトリツリーに接続され、システムに利用できるようになります。他のファイルシステムをルート (/) ファイルシステムに接続したり切り離したりできます。
ファイルシステムについて、次の事柄を決める必要があります。
AutoFS を使用してファイルシステムを適切にマウントするかどうか
ファイルシステムを一時的にのみ使用するかどうか
ファイルシステムをコマンド行からマウントするかどうか
スーパーユーザーであること
ローカルシステム上のマウントポイント
マウントするファイルシステムの資源名 (/usr など)
原則として、ローカルディスクスライスは必ず /etc/vfstab ファイルに入れる必要があります。OpenWindows ソフトウェアやマニュアルページのようなサーバーからのソフトウェアと、サーバーからのホームディレクトリは、サイトの方針に応じて /etc/vfstab ファイルに組み込んでも、automount コマンドを使用して自動的にマウントしてもかまいません。
ファイルシステムをマウントすると、そのファイルシステムがマウントされている間は、マウントポイントのディレクトリにあるファイルやディレクトリは使用できなくなります。これらのファイルはマウント処理の影響を永続的に受けるわけではなく、ファイルシステムをマウント解除すると再び使用できるようになります。ただし、通常は既存のファイルを使用不可にしたくないので、マウントディレクトリを空にしておきます。
図 26-2 に、サブディレクトリ sbin、etc、home を持つルート (/) ファイルシステムを示します。
あるユーザーのホームディレクトリを空の /export/home ディレクトリのマウントポイントに接続するには、まず新規ユーザー用のディレクトリを作成します。ignatz というユーザーであれば、/export/home 内に ignatz というディレクトリを作成し、適切なアクセス権と所有権を与えます。次に、ファイルシステムをマウントします。ignatz ファイルシステムがマウントされると、図 26-3 のように /export/home/ignatz 内のすべてのファイルとディレクトリが使用可能になります。また、/export/home ディレクトリ内で他のユーザーのディレクトリを作成し、そのディレクトリを別のユーザーのファイルシステムのマウントポイントとして使用できます。これらの作業を行う方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
この例は、マウント処理の概念を示しています。/home はデフォルトでは AutoFS のマウントポイントディレクトリなので、ホームディレクトリファイルは mount コマンドではなく AutoFS によってマウントされます。
ファイルシステムをマウントまたはマウント解除すると、現在マウントされているファイルシステムのリストを使用して、/etc/mnttab (マウントテーブルファイル) が変更されます。マウントテーブルの内容は cat または more コマンドを使用して表示できますが、/etc/vfstab ファイルのように編集できません。次にマウントテーブルファイルの例を示します。
$ 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/mnttab ファイルからエントリが削除されます。一部のファイルシステム管理作業は、マウントされたファイルシステム上では実行できません。次の場合には、ファイルシステムをマウント解除する必要があります。
不要になった場合や、最新ソフトウェアが入っているファイルシステムに交換した場合
fsck コマンドを使用してチェックして修復する場合。fsck コマンドの詳細は、第 31 章「ファイルシステムの完全性チェック」を参照
ファイルシステムの完全バックアップを実行する前に、マウント解除しておくとよいでしょう。バックアップの実行方法については、第 33 章「ファイルシステムのバックアップと復元の概要」を参照してください。
ファイルシステムは、システムのシャットダウン手続きの一部として自動的にマウント解除されます。
デフォルトのファイルシステム構成テーブル (/etc/vfstab ファイル) は、システムソフトウェアのインストール時に選択する内容に応じて異なります。ローカルの UFS ファイルシステム、重要な NFS ファイルシステム、その他の該当するファイルシステムを自動的にマウントするには、システムごとに /etc/vfstab ファイルを編集する必要があります。
次の例は、/etc/vfstab ファイルの内容を示しています。このファイルシステムテーブルは ASCII ファイルです。コメント行は # で始まります。この例は、2 つのディスクと 2 つの NFS ファイルシステムがマウントされたシステムの /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 /files7 ufs 2 no - cheers:/export/svr4/man.ja5 - /usr/man nfs - yes hard cheers:/export/svr4/openwinV3.ja4 - /usr/openwin nfs - yes hard $
ルート (/) と /usr の場合は、「mount at boot」フィールドの値が no として指定されているので注意してください。この 2 つのファイルシステムが、mountall コマンドを実行する前にブートシーケンスの一部としてマウントされるからです。automount フィールドの値を yes として指定すると、mountall プログラムはこれらのすでにマウント済みのファイルシステムを重複して (不要に) マウントしようとします。ブート手順については、第 5 章「システムのシャットダウンとブートの概要」を参照してください。
/etc/vfstab の各フィールド、このファイルの編集方法、使用方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。
自動マウントと呼ばれる方法を使用すると、NFS を通じて共有されるファイルシステムをマウントできます。AutoFS はバックグラウンドで実行され、リモートディレクトリを必要に応じてマウントまたはマウントを解除します。AutoFS を実行中のクライアントシステム上のユーザーが、AutoFS を通じて使用できるリモートファイルやディレクトリにアクセスすると、AutoFS はそのユーザーのシステムにファイルシステムをマウントします。ユーザーがそのディレクトリの中にいてファイルを使用している限り、リモートファイルシステムはマウントされたままになっています。一定の時間内にリモートファイルシステムへのアクセスがなければ、自動的にマウントが解除されます。ユーザー側でディレクトリ変更以外の操作を実行しなくても、AutoFS は必要に応じて、ファイルシステムをマウントしたりマウントを解除したりします。
ファイル階層には、AutoFS を使用してマウントできるものと、/etc/vfstab ファイルと mount コマンドを使用してマウントするものがあります。ディスクレスマシンには、/etc/vfstab ファイル内にルート (/)、/usr、/usr/kvm のエントリがなければなりません。共有ファイルシステムは絶えず使用可能になっているので、AutoFS を使用して /usr/share をマウントしないでください。
AutoFS は、「maps」で指定したファイルシステムと連動します。これらのマップは、NIS、NIS+、またはローカルの /etc 内のファイルにより管理できます。
AutoFS マップでは、特定のファイルに複数のリモート位置を指定できます。これにより、いずれかのサーバーが停止しても、AutoFS は別のマシンからマウントできます。各サーバーに重み係数を割り当てると、マップ内で各資源のための優先サーバーを指定できます。
AutoFS は、システムが実行レベル 3 になると自動的に起動されます。また、コマンド行からも起動できます。AutoFS を設定して管理する方法の詳細は、『NFS の管理』を参照してください。
デフォルトでは、SunOS システムソフトウェアは /home を自動マウントします。
NFS は、さまざまなオペレーティングシステムを実行するコンピュータを「連結」して使用できる分散ファイルシステムです。たとえば、DOS を実行するシステムは、UNIX を実行するシステムとファイルを共有できます。
NFS は、ファイルシステムの実際の物理的な位置についてユーザーが意識しなくてすむようにします。NFS を使用すると、位置に関係なくすべての関連ファイルの位置をユーザーに表示させることができます。共通に使用されるファイルのコピーをシステムごとに配置しなくても、NFS により、あるシステムのディスク上にコピーを 1 つ配置し、他のすべてのシステムをそのコピーにネットワーク経由でアクセスさせることができます。NFS では、リモートファイルシステムは、実際にはローカルシステムと区別がつきません。
システムは、ネットワーク上に共有またはエクスポートするファイルシステムがあると、NFS サーバーになります。サーバーは、現在エクスポートされているファイルシステムとアクセス制限 (読み取り/書き込みや読み取り専用など) のリストを管理します。
あるシステムのファイル、ディレクトリ、またはデバイスなどの資源を、ネットワーク上で他のシステム (通常はサーバー) と共有できます。 たとえば、Sun 以外のアプリケーションやソースファイルを他のシステム上のユーザーと共有できます。
資源を共有する場合は、リモートシステムにマウントできるように、その資源を使用可能にします。
資源を共有するには、次の方法があります。
次のデフォルトの /etc/dfs/dfstab ファイルには、エントリの構文と例が入っています。
$ more /etc/dfs/dfstab # Place share(1M) commands here for automatic execution # on entering init state 3. # # Issue the command '/etc/init.d/nfs.server start' to run the NFS # daemon processes and the share commands, after adding the very # first entry to this file. # # share [-F fstype] [ -o options] [-d ""] [resource] # .e.g, # share -F nfs -o rw=engineering -d "home dirs" /export/home2 share -F nfs /var/mail $
自動的に共有させたい資源ごとに 1 つずつ、エントリを /etc/dfs/dfstab に追加します。各エントリは、次の構文を使用して別の行に入力しなければなりません。
share [-F nfs] [-o specific-options] [-d "description"] pathname
表 26-4 にこれらの変数を示します。
表 26-4 /etc/dfstab エントリの変数
オプション |
説明 |
---|---|
-F nfs |
ファイルシステムのタイプが NFS であることを示す。分散ファイルシステムのパッケージを 1 つしかインストールしていない場合は nfs がデフォルトであり、-F オプションは省略可能 |
-o specific-options |
資源の共有方法を指定する。-o フラグに続けて、次のいずれかのオプションをコンマで区切って指定できる。 rw - ro= で指定したものを除き、すべてのクライアントに pathname で指定する資源の読み取り/書き込み権を共有させる (デフォルト)。 ro - rw= で指定したものを除き、すべてのクライアントに pathname で指定する資源の読み取り専用権を共有させる。 ro=client[:client] - 列挙したクライアントマシンまたはネットグループ名に pathname で指定する資源の読み取り専用権を共有させる (rw を無効にする)。 rw=client[:client] - 列挙したクライアントマシンまたはネットグループ名に pathname で指定する資源の読み取り/書き込み権を共有させる (ro を無効にする)。 anon=uid - pathname で指定する資源にアクセスするときに「anonymous」ユーザー、つまり uid が 0 ( Solaris システム上のルートの UID ) であるユーザー用に別の uid を指定できる。デフォルトでは、anonymous ユーザーは UID_NOBODY を持つユーザー nobody に対応付けられる。ユーザー nobody は、root 特権ではなく通常のユーザー特権を持つ。 root=host[:host] - ホスト host から、uid が 0 のユーザーがルートとして pathname で指定する資源にアクセスできるようにする。他のすべてのホストからのユーザーは anon になる。このオプションを指定しなければ、どのホストからのユーザーにも、pathname で指定する資源への root アクセス権は与えられない。 secure - ユーザー認証を追加要求して資源を共有させる。(詳細は『NFS の管理』を参照) kerberos - Kerberos 認証を使用して資源を共有させる。(詳細は、「Kerberos Version 4 認証の管理」を参照) |
-d description |
共有する資源を説明するコメント。-d オプションを使用すると、説明は sharetab ファイルに格納される。ただし、クライアントが dfshares コマンドを使用して、そのシステム上で共有される資源を表示しても、この説明は表示されない |
pathname |
共有する資源の完全パス名。パス名はルート (/) から始まる |
rw と ro を引数なしで指定できません。また、rw= リストと ro= リストで同じクライアントを指定することもできません。読み取り/書き込みオプションを指定しなければ、デフォルトではすべてのクライアントの読み取り/書き込みとなります。
他のホストに root アクセスを与えると、セキュリティが低下します。root= オプションを指定する際は注意してください。
ファイルとファイルシステムを共有する方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。NFS の詳細は、『NFS の管理』を参照してください。
クライアントまたはホストのリストを指定できる引数 (ro=、rw=、root=) は、UDP 上では確実に機能しますが、他のトランスポートプロトコル上では機能しないことがあります。
NFS 上では、サーバーはそれ自体が所有する資源を共有するので、クライアントはその資源をマウントできます。ただし、クライアント側でスーパーユーザーになったユーザーは、マウントされているリモート資源にスーパーユーザーとしてアクセスしようとしても拒否されます。あるホスト上でスーパーユーザーとしてログインしたユーザーが NFS を通じて共有されるリモートファイルへのアクセスを要求すると、そのユーザー ID は 0 からユーザー名 nobody のユーザー ID に変更されます。ユーザー nobody のアクセス権は、特定のファイルに関して公共に与えられるものと同じです。たとえば、公共がファイルの実行権しか持っていなければ、ユーザー nobody はそのファイルの実行しかできません。
ファイルシステムのタイプは、次のいずれかを使用して判断できます。
grep コマンドを使用して、/etc/vfstab ファイル内でファイルシステムのタイプを検索します。
$ grep /tmp /etc/vfstab swap - /tmp tmpfs - yes - $
マウントポイントに関する情報が表示されます。
vfstab にファイルシステムのエントリが入っていない場合は、次のいずれかの手順を使用してファイルシステムのタイプを判断してください。
mount-point ディレクトリが /etc/mnttab にないかを調べます。
$ grep /home /etc/mnttab mars:(pid129) /home nfs ro,ignore,map=/etc/auto_home,indirect, dev=21c0004 693606637 neptune:/export/home/neptune /tmp_mnt/home/neptune nfs rw, dev=21c0005 695409833
マウントポイントに関する情報が表示されます。
または次の手順を実行します。
devnm コマンドを使用して、マウントされているファイルシステムの raw デバイス名を表示します。
$ devnm /filesystem
/filesystem |
調べたい raw デバイス名の、マウント済みファイルシステム |
スーパーユーザーになります。
fstyp コマンドを使用してファイルシステムのタイプを表示します。
# fstyp dev/rdsk/device-name
/dev/rdsk/device-name |
調べたいファイルシステムのある raw デバイス名 |
次の例では、devnm コマンドを使用して、マウント済みファイルシステム /usr のあるデバイス名を調べます。次に、fstyp コマンドを使用して、ファイルシステム /usr のタイプを調べます。
$ devnm /usr /dev/dsk/cot3d0s6 /usr $ su # fstyp /dev/rdsk/c0t3d0s6 ufs
ディスク番号とスライス番号がわかっている場合は、prtvtoc (ボリューム内容一覧の表示) コマンドを使用してディスク情報を表示できます。ボリュームを指定するには、ディスク上で定義されているサイズが 0 でないスライスを指定します (ディスク 3 のすべてのスライスの場合は /dev/rdsk/c0t3d0s2、ディスク 3 の 8 番目のスライスの場合は /dev/rdsk/c0t3d0s7 など)。ディスクのターゲット番号は分かっているが、どのようにスライスに分割されているかがわからない場合は、スライス 2 またはスライス 0 を指定してディスク全体の情報を表示できます。
次の例では、ディスク 3 のすべてのスライスに関する情報が表示されます。
$ su Password: # prtvtoc /dev/rdsk/c0t3d0s2 * /dev/rdsk/c0t3d0s2 (volume "") partition map * * Dimensions: * 512 bytes/sector * 36 sectors/track * 9 tracks/cylinder * 324 sectors/cylinder * 1272 cylinders * 1254 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 2 5 01 0 406296 406295 6 4 00 0 242352 242351 7 0 00 242352 163944 406295 /files7