Solaris のシステム管理

第 26 章 ファイルシステムの概要

この章の内容は次のとおりです

ファイルシステムは、ファイルを編成して格納するためのディレクトリ構造です。「ファイルシステム」という用語には、さまざまな使用方法があります。

通常、その意味は状況に応じて判断できます。

Solaris システムソフトウェアは、各種ファイルシステムへの標準インタフェースを提供する「仮想ファイルシステム」 (VFS) アーキテクチャを使用します。VFS アーキテクチャによって、ユーザーやプログラムが基礎となるファイルシステムのタイプを知らなくても、カーネルはファイルの読み取り、書き込み、一覧表示などの基本操作を処理できます。

ファイルシステムの管理コマンドは、各種のファイルシステムを管理できるように共通インタフェースを提供します。これらのコマンドには 2 種類あります。1 つは汎用コマンドで、もう 1 つはファイルシステム専用のコマンドです。汎用コマンドはほとんどのタイプのファイルシステムに適用されますが、専用コマンドは特定のタイプのファイルシステムにのみ適用されます。

ファイルシステムの管理は、最も重要なシステム管理作業の 1 つです。この章を読んで概念と計画方法について理解してください。次の作業については、Part VIII の他の章と他の Part を参照してください。

ファイルシステムにおける新機能

Solaris 2.6 リリースにおけるファイルシステムの新しい機能のいくつかを次に説明します。

大規模ファイル

mount コマンドの新しいオプション -largefiles は、Solaris 2.6 環境のデフォルトのマウントオプションです。このオプションを使用すると、2G バイト以上の大規模ファイルを持つファイルシステムを作成できます。-largefiles オプションは、このオプションでマウントしたファイルシステムに 2G バイト以上の大規模ファイルが存在する可能性があることを意味し、必ずしもそのようなファイルが存在している必要はありません。大規模ファイルを持つファイルシステムをマウントする方法の詳細は、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。

NFS クライアントフェイルオーバー

NFS クライアントフェイルオーバーは、選択した最初のホストに到達できなかった場合に、ファイルシステムをマウントする追加のホストを指定する機能です。/etc/vfstab ファイルに設定することも、コマンド行からホストのリストを指定することもできます。

WebNFS

WebNFSTM 機能 (「パブリック NFS」とも言う) によって、Solaris 2.6 リリースでは、share コマンドに 2 つのオプションが追加されます。

-index 「filename」を指定すると、NFS URL で参照されるディレクトリ内に 「filename」に一致する名前のファイルが見つかった場合に、そのファイルが自動的にロードされます。

-public を指定すると、公開ファイルハンドルをそのディレクトリに再設定します。これによって、通常の方法ではマウントできないファイルシステムでも、NFS URL 経由でアクセスできるようになります。

ファイルシステムのタイプ

Solaris システムソフトウェアでは、次の 3 種類のファイルシステムがサポートされます。

ファイルシステムのタイプを確認するには、「ファイルシステムのタイプを調べる」を参照してください。

ディスクベースのファイルシステム

ディスクベースのファイルシステムは、ハードディスク、CD-ROM、フロッピーディスクなどの物理媒体に格納されます。ディスクベースのファイルシステムは、さまざまな形式で作成できます。利用できる形式は次のとおりです。

ディスクベースの各種ファイルシステムは、次のように特定の媒体のタイプに対応しています。

ただし、上記以外の対応も可能です。たとえば、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 ファイルシステムの作成方法については、第 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 汎用ファイルシステム管理コマンド

コマンド 

機能 

clri(1M)

i ノードをクリアする。 

df(1M)

空きディスクブロック数とファイル数を出力する。 

ff(1M)

ファイルシステムのファイル名と統計情報を表示する。 

fsck(1M)

ファイルシステムの完全性をチェックし、検出された損傷を修復する。 

fsdb(1M)

ファイルシステムをデバッグする。 

fstyp(1M)

ファイルシステムのタイプを調べる。 

labelit(1M)

テープにコピーするときに、ファイルシステムのラベルを表示または作成する (volcopy コマンド専用)。

mkfs(1M)

新しいファイルシステムを作成する。 

mount(1M)

ファイルシステムとリモート資源をマウントする。 

mountall(1M)

ファイルシステムテーブルで指定されたすべてのファイルシステムをマウントする。 

ncheck(1M)

パス名とその i 番号のリストを生成する。 

umount(1M)

ファイルシステムとリモート資源のマウントを解除する。 

umountall(1M)

ファイルシステムテーブルで指定されたすべてのファイルシステムをマウント解除する。 

volcopy(1M)

ファイルシステムのイメージコピーを作成する。 

上記のほとんどのコマンドには、それに相当するファイルシステム固有のコマンドがあります。


注 -

ファイルシステム上でサポートされない操作を指定すると、汎用コマンドから次のエラーメッセージが表示されます。

コマンド名 : ファイルシステムのタイプ type に操作が適用されません。


汎用コマンドの構文

ほとんどの汎用コマンドには、次の構文を使用します。

コマンド [-F type] [-V] [generic-options] [-o specific-options] [special|mount-point] [operands] 
表 26-2 汎用コマンドのオプションと引数

オプション/引数 

説明 

-F type

ファイルシステムのタイプ。このオプションを使用しなければ、/etc/vfstab ファイル内で special または mount-point と一致するエントリが検索される。それ以外の場合、デフォルトは、ローカルファイルの場合は /etc/default/fs ファイルから取り出され、リモートファイルシステムの場合は /etc/dfs/fstypes ファイルから取り出される。

-V

補完されたコマンド行を表示する。表示される行には、/etc/vfstab から取り込まれた付加情報が含まれていることがある。このオプションを使用し、コマンド行を検査して正しいかどうかを確認する。コマンドは実行されない。

generic-options

各種ファイルシステムに共通するオプション 

-o specific-options

ファイルシステムのタイプに固有のオプションのリスト。このリストは、-o の次に空白を 1 つ付け、その後に一連の keyword [=value] をコンマで区切って空白を入れずに入力しなければならない。

special|mount-point

ファイルシステムの指定。この名前は、ファイルシステムを保持するスライスのマウントポイントまたは特殊デバイスファイルでなければならない。コマンドによって、特殊ファイルは raw (キャラクタ型) デバイスでなければならない場合と、ブロック型デバイスでなければならない場合がある。ディスクデバイス名の詳細は、404 ページの「デバイス名の命名規則」を参照。この引数は、ファイル /etc/vfstab 内で一致するエントリを検索し、他の情報を取得するためのキーとして使用されることがある。ほとんどの場合、この引数は必須であり、specific-options の次に指定しなければならない。ただし、コマンドを /etc/vfstab ファイルに列挙されたすべてのファイルシステム (タイプ別に区切られることもある) に適応させたい場合は不要である。

operands

ファイルシステムのタイプに固有の引数。詳細は、各コマンド (mkfs_ufs(1M) など) のマニュアルページを参照。

ファイルシステムコマンドによるファイルシステムタイプの判断

汎用ファイルシステムコマンドは、次の順序でファイルシステムのタイプを判断します。

  1. -F オプションで指定されているファイルシステムのタイプ

  2. 特殊デバイスを /etc/vfstab 内のエントリと突き合わせて判断します (special が指定されている場合)。たとえば fsck は、まず fsck device フィールドと突き合わせて一致するエントリを検索します。一致するエントリが見つからなければ、特殊デバイスフィールドと突き合わせてチェックします。

  3. ローカルファイルシステムの場合は /etc/default/fs 内で指定されたデフォルトを使用し、リモートファイルシステムの場合は /etc/dfs/fstypes 内で指定されたデフォルトを使用して判断します。

汎用コマンドと専用コマンドのマニュアルページ

汎用コマンドと専用コマンドについては、『SunOS Reference Manual』の Section 1M「Maintenance Commands」を参照してください。専用コマンドのマニュアルページは、汎用コマンドのマニュアルページに続いて入っています。特定のマニュアルページを見つけるには、汎用コマンド名の末尾にアンダースコアとファイルシステムタイプの略称を追加してください。たとえば、HSFS ファイルシステムのマウントに関して専用コマンドのマニュアルページを調べるには、man mount_hsfs(1M) と入力します。

デフォルトの Solaris ファイルシステム

Solaris ファイルシステムは階層形式で、ルートディレクトリ (/) から始まり、下位に多数のディレクトリが入っています。システムソフトウェアは、デフォルトのディレクトリセットをインストールし、一連の規約を使用して類似するタイプのファイルをグループ化します。表 26-3 は、デフォルトの Solaris ファイルシステムの概要と、各ファイルシステムのタイプを示しています。ルートと /usr のファイルシステムのデフォルトディレクトリの詳細は、第 32 章「ファイルシステムの参照情報」を参照してください。

表 26-3 デフォルトの Solaris ファイルシステム

ファイルシステムまたはディレクトリ 

ファイルシステムのタイプ 

説明 

ルート (/)

UFS 

階層ファイルツリーの最上位。ルートディレクトリには、カーネル、デバイスドライバ、システムのブートに使用されるプログラムなど、システム処理に欠かせないディレクトリとファイルが入っている。また、ローカルとリモートのファイルシステムをファイルツリーに接続できるマウントポイントディレクトリも入っている。 

/usr

UFS 

他のユーザーと共有できるシステムファイルとディレクトリ。特定のタイプのシステム上でのみ実行できるファイルは、/usr ディレクトリに入っている (SPARC 実行可能ファイルなど)。どのタイプのシステム上でも使用できるファイル (マニュアルページなど) は、/usr/share に入っている。

/export/home または /home

NFS、UFS 

ユーザーのホームディレクトリのマウントポイント。ホームディレクトリには、そのユーザーの作業ファイルが格納される。デフォルトでは、/home は自動マウントされるファイルシステムである。スタンドアロンシステム上では、/home はローカルディスクスライス上の UFS ファイルシステムの場合がある。

/var

UFS 

ローカルシステムの使用中に変化または拡大する可能性のあるシステムファイルとディレクトリ。これには、システムログ、viex のバックアップファイル、および uucp ファイルが含まれる。

/opt

NFS、UFS 

オプションの Sun 以外のソフトウェア製品のマウントポイント。システムによっては、/opt がローカルディスクスライス上の UFS ファイルシステムの場合がある。

/tmp

TMPFS 

システムがブートまたはマウント解除されるたびに消去される一時ファイル 

/proc

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 ファイルシステム

UFS は、Solaris システムソフトウェア内のデフォルトのディスクベースファイルシステムです。ほとんどの場合、ディスクベースのファイルシステムを管理するときには、UFS を管理していることになります。UFS の機能は次の通りです。


注 -

Solaris デバイス名は、スライスという用語 (およびデバイス名に含まれる文字「s」) を使用してスライス番号を指します。SunOS 4.x ではスライスのことを「パーティション」と呼んでいました。


図 26-1 は、ディスクスライスをどのようにフォーマットして UFS ファイルシステムを格納できるかを示しています。

図 26-1 UFS ファイルシステム用にフォーマットされたディスクスライス

Graphic

この後の各節では、ディスクがどのようにスライスとシリンダグループに分割され、UFS ファイルシステムとして作成されるかについて説明します。

ディスクスライス

スライスは、ブロックの集合体です。これは、ディスクの物理的なサブセットです (ただし、スライス 2 は通常はディスク全体を表します)。ディスク上でファイルシステムを作成する前に、まずフォーマットしてスライスに分割しなければなりません。ディスクをインストールしてフォーマットし、ディスクをスライスに分割する方法の詳細は、パート VIIを参照してください。

スライスをスワップ空間用の raw デバイスとして使用するか、1 つの UFS ファイルシステムを格納できます。1 つのディスクを最高で 8 つのスライスに分割できます。一般的なディスクスライス割り当てのリストについては、パート VIIを参照してください。

次の例は、/dev/dsk/c0t3d0 のディスク情報を示しています。format コマンドでは、利用可能なディスクセクションの一部としてスライス情報が表示されないので注意してください。ディスクごとにコントローラ、ターゲット、およびディスクの番号が表示されます。


例 26-1 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 つのブロックタイプは、次の通りです。

各ブロックタイプの詳細は、第 32 章「ファイルシステムの参照情報」を参照してください。

newfs コマンドの引数または mkfs コマンドを使用してファイルシステムをカスタマイズするには、これらのパラメタの変更方法について第 32 章「ファイルシステムの参照情報」を参照してください。

UFS ファイルシステムのサイズ制限

合計サイズ

ファイルシステムの合計サイズの上限は 1T バイトです。UFS ファイルシステムは、それを保持するスライスと同じ大きさにできます。

最大ファイルサイズ

UFS ファイルシステム内の 1 つのファイルの最大サイズは、そのファイルシステムの構成方法によって異なります。

最大ファイル数

UFS ファイルシステム 1 つ当たりの最大ファイル数は、そのファイルシステムに割り当てられた i ノード数によって決まります。i ノード数は、各 i ノードに割り当てられたディスク容量とファイルシステムの合計サイズによって決まります。デフォルトでは、2K バイトのデータ容量ごとに 1 つずつ i ノードが割り当てられます。newfs コマンドの -i オプションを使用すると、デフォルトの割り当てを変更できます。

論理ブロックとフラグメントのサイズ

フラグメントは、論理ブロックの未使用部分を減らして容量を節約するために作成される小型の論理ブロックです。論理ブロックとフラグメントの最大サイズは 8192 バイトですが、一般に、フラグメントは論理ブロックと同じか、それより小さいサイズです。

UFS ファイルシステムの計画

ディスクをフォーマットしてスライスに分割し終わったら、UFS ファイルを入れる各スライス上でファイルシステムを作成する必要があります。ディスクをフォーマットしてスライスに分割する方法の詳細は、 第 22 章「ディスク管理の手順」を参照してください。

ファイルシステムの配置を決めるときには、要求が競合する可能性があることを考えなければなりません。推奨事項は次の通りです。

デフォルトのファイルシステムパラメタや、新しいファイルシステムを作成するときの前提条件と手順については、第 27 章「ファイルシステムの作成手順」を参照してください。

マウントとマウント解除

ファイルシステムを、システム上で利用できるディレクトリ階層に接続できます。このプロセスをマウントと呼びます。マウントしたファイルシステムは、指定したマウントポイント (マウントされたファイルシステムの接続先ディレクトリ) で、システムのディレクトリツリーに接続され、システムに利用できるようになります。他のファイルシステムをルート (/) ファイルシステムに接続したり切り離したりできます。

ファイルシステムについて、次の事柄を決める必要があります。

ファイルシステムをマウントするための必要事項は次の通りです

原則として、ローカルディスクスライスは必ず /etc/vfstab ファイルに入れる必要があります。OpenWindows ソフトウェアやマニュアルページのようなサーバーからのソフトウェアと、サーバーからのホームディレクトリは、サイトの方針に応じて /etc/vfstab ファイルに組み込んでも、automount コマンドを使用して自動的にマウントしてもかまいません。

ファイルシステムをマウントすると、そのファイルシステムがマウントされている間は、マウントポイントのディレクトリにあるファイルやディレクトリは使用できなくなります。これらのファイルはマウント処理の影響を永続的に受けるわけではなく、ファイルシステムをマウント解除すると再び使用できるようになります。ただし、通常は既存のファイルを使用不可にしたくないので、マウントディレクトリを空にしておきます。

図 26-2 に、サブディレクトリ sbinetchome を持つルート (/) ファイルシステムを示します。

図 26-2 ファイルシステム

Graphic

あるユーザーのホームディレクトリを空の /export/home ディレクトリのマウントポイントに接続するには、まず新規ユーザー用のディレクトリを作成します。ignatz というユーザーであれば、/export/home 内に ignatz というディレクトリを作成し、適切なアクセス権と所有権を与えます。次に、ファイルシステムをマウントします。ignatz ファイルシステムがマウントされると、図 26-3 のように /export/home/ignatz 内のすべてのファイルとディレクトリが使用可能になります。また、/export/home ディレクトリ内で他のユーザーのディレクトリを作成し、そのディレクトリを別のユーザーのファイルシステムのマウントポイントとして使用できます。これらの作業を行う方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。

図 26-3 ホームディレクトリにファイルシステムをマウントする

Graphic


注 -

この例は、マウント処理の概念を示しています。/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 ファイルからエントリが削除されます。一部のファイルシステム管理作業は、マウントされたファイルシステム上では実行できません。次の場合には、ファイルシステムをマウント解除する必要があります。

ファイルシステムの完全バックアップを実行する前に、マウント解除しておくとよいでしょう。バックアップの実行方法については、第 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 

共有する資源の完全パス名。パス名はルート (/) から始まる

rwro を引数なしで指定できません。また、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

マウントポイントに関する情報が表示されます。

または次の手順を実行します。

  1. devnm コマンドを使用して、マウントされているファイルシステムの raw デバイス名を表示します。

    $ devnm /filesystem
    

    /filesystem

    調べたい raw デバイス名の、マウント済みファイルシステム 

  2. スーパーユーザーになります。

  3. 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 を指定してディスク全体の情報を表示できます。

  1. スーパーユーザーになります。

  2. ディスクとスライスの情報を表示します。

    # prtvtoc /dev/rdsk/device-name
    

    /dev/rdsk/device-name

    調べたいファイルシステムのある raw デバイス名 

例 - どのファイルシステムがどのディスクスライスにマウントされているかを調べる

次の例では、ディスク 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