Solaris のシステム管理

マウントとマウント解除

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

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

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

原則として、ローカルディスクスライスは必ず /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 はそのファイルの実行しかできません。