NFS の管理

NFS コマンド

以下のコマンドは、root 権限で実行しなければ、十分な効果がでません。しかし情報の要求は、すべてのユーザが行えます。

clear_locks

このコマンドを使うと、ある NFS クライアントのファイル、レコード、または共有のロックをすべて削除できます。このコマンドを実行するには、スーパーユーザでなければなりません。NFS サーバから解除できるのは特定のクライアントのロックであり、NFS クライアントから解除できるのは特定のサーバ上のそのクライアントに対するロックです。次の例では、現在のシステム上の tulip という NFS クライアントに対するロックが解除されます。


# clear_locks tulip

-s オプションを指定すると、どの NFS ホストからロックを解除するかを指定できます。これは、そのロックをかけた NFS クライアントから実行しなければなりません。次の場合、クライアントによるロックが bee という名前の NFS サーバから解除されます。


# clear_locks -s bee

注意 - 注意 -

このコマンドは、クライアントがクラッシュしてロックを解除できないとき以外には使用しないでください。データが破壊されるのを避けるため、使用中のクライアントに関するロックは解除しないでください。


mount

このコマンドを使用すると、指定したファイルシステムをローカルかリモートで、指定したマウントポイントに添付できます。詳細については、mount(1M) のマニュアルページを参照してください。引数を指定しないと、現在ユーザのコンピュータにマウントされているファイルシステムのリストが表示されます。

Solaris の標準インストールには、さまざまな種類のファイルシステムが含まれています。すべてのファイルシステムタイプの説明は、『Solaris のシステム管理』を参照してください。ファイルシステムの種類ごとにマニュアルページがあり、その種類に対して mount を実行するときに使用可能なオプションのリストが示されています。たとえば、NFS ファイルシステムのマニュアルページは mount_nfs(1M)、UFS ファイルシステムのマニュアルページは mount_ufs(1M) などです。


注意 - 注意 -

Solaris 2.6、および Solaris 2.6 以後のパッチに含まれる mount コマンドでは、無効なオプションがあっても警告されません。解釈できないオプションがあると無視されるだけです。予想外の結果が生じるのを避けるために、使用するオプションはすべて確認してください。


NFS ファイルシステムにおける mount のオプション

NFS ファイルシステムをマウントするときに -o フラグの後に指定できるオプションの一部を、以下に示します。

bg|fg

この 2 つは、マウントが失敗したときの再試行の方法を選択するオプションです。-bg オプションの場合はバックグラウンドで、-fg オプションの場合はフォアグラウンドでマウントが試みられます。デフォルトは -fg です。常に使用可能にしておく必要のあるファイルシステムに対しては -fg が適しています。この場合、マウントが完了するまで他の処理は実行できません。-bg は、マウント要求が完了しなくてもクライアントは他の処理を実行できるため、必ずしも必要でないファイルシステムに適しています。

largefiles

このオプションを使うと、Solaris 2.6 が実行されているサーバに置かれた 2 ギガバイトを超えるサイズのファイルにアクセスできるようになります。大型ファイルにアクセスできるかどうかは、サーバでしか制御できません。したがって、このオプションは NFS バージョン 3 のマウントでは無視されます。デフォルトでは、2.6 UFS ファイルシステムはすべて -largefiles オプション付きでマウントされます。NFS バージョン 2 プロトコルを使ったマウントでこのオプションを指定すると、エラーが発生してマウントできません。

nolargefiles

UFS マウントでこのオプションを指定すると、ファイルシステム上に大型ファイルが存在せず、この後も作成されないことが保証されます (マニュアルページの mount_ufs(1M) を参照してください)。大型ファイルが存在するかどうかは NFS サーバでしか制御できないため、NFS マウントを使う -nolargefiles にはオプションはありません。このオプションを指定してファイルシステムを NFS マウントしようとすると、エラーが発生して拒否されます。

rw|ro

-rw オプションと -ro オプションは、ファイルシステムが読み書き可能と読み取り専用のどちらでマウントされるかを示します。デフォルトは読み書き可能で、これはリモートホームディレクトリやメールスプールディレクトリなどの、ユーザによる変更が必要なファイルシステムに適しています。読み取り専用オプションは、ユーザが変更してはいけないディレクトリに適しています。具体的には、マニュアルページの共有コピーなどです。

sec=mode

このオプションは、マウント時に使われる認証機構を指定します。mode の値は、表 3-2 に示したもののいずれかでなければなりません。モードは、/etc/nfssec.conf ファイルにも定義されます。

表 3-2 NFS セキュリティモード

モード 

選択される認証サービス 

krb4 

Kerberos バージョン 4 

none 

認証なし 

dh 

Diffie-Hellman (DH) 認証 

sys 

UNIX の標準認証 

soft|hard

soft オプションを指定してマウントされた NFS ファイルシステムは、サーバが応答しなくなるとエラーを返します。hard オプションが指定されていると、サーバが応答するまで再試行が続けられます。デフォルトは hard です。ほとんどのファイルシステムには hard を使用します。ソフトマウントされたファイルシステムからの値を検査しないアプリケーションが多いので、アプリケーションでエラーが発生してファイルが破壊されるおそれがあるためです。検査するアプリケーションの場合でも、ルーティングの問題などによってアプリケーションが正しい判断をできずに、ファイルが破壊されることがあります。原則として、soft は使用しないでください。hard オプションを指定した場合にファイルシステムが使えなくなると、そのファイルシステムを使うアプリケーションはファイルシステムが復旧するまでハングする可能性があります。

mount コマンドの使用

以下のコマンドのどちらも、bee サーバから NFS ファイルシステムを読み出し専用としてマウントします。


# mount -F nfs -r bee:/export/share/man /usr/man

# mount -F nfs -o ro bee:/export/share/man /usr/man

このコマンドでは -O オプションによって、/usr/man がすでにマウントされていても bee サーバのマニュアルページがローカルシステムにマウントされます。


# mount -F nfs -O bee:/export/share/man /usr/man

このコマンドでは、クライアント側障害時回避機能が使われています。


# mount -F nfs -r bee,wasp:/export/share/man /usr/man

注 -

コマンド行から使用する場合、リスト内のサーバがサポートしている NFS プロトコルは同じバージョンでなければなりません。コマンド行から mount を実行するときは、バージョン 2 とバージョン 3 のサーバを混在させないでください。autofs では混在が可能なので、バージョン 2 サーバとバージョン 3 サーバの最適な組み合わせを使用できます。


mount コマンドに引数を指定しないと、クライアントにマウントされたファイルシステムが表示されます。

% mount
/ on /dev/dsk/c0t3d0s0 read/write/setuid on Tues Jan 24 13:20:47 1995
/usr on /dev/dsk/c0t3d0s6 read/write/setuid on Tues Jan 24 13:20:47 1995
/proc on /proc read/write/setuid on Tues Jan 24 13:20:47 1995
/dev/fd on fd read/write/setuid on Tues Jan 24 13:20:47 1995
/tmp on swap read/write on Tues Jan 24 13:20:51 1995
/opt on /dev/dsk/c0t3d0s5 setuid/read/write on Tues Jan 24 13:20:51 1995
/home/kathys on bee:/export/home/bee7/kathys
  intr/noquota/nosuid/remote on Tues Jan 24 13:22:13 1995

umount

このコマンドにより、現在マウントされているリモートファイルシステムが削除されます。umount コマンドは、テストのために -V オプションをサポートしています。また、-a オプションを使うことによって 1 度に複数のファイルシステムをアンマウントできます。-a オプションに mount_points を指定すると、そのファイルシステムがアンマウントされます。マウントポイントを指定しないと、/etc/mnttab のリストにあるファイルシステムのうち "required" でないものすべてのアンマウントが試みられます。"required" のファイルシステムとは、//usr/var/proc/dev/fd/tmp などです。

ファイルシステムがすでにマウントされていて、/etc/mnttab に項目が指定されている場合、ファイルシステムのタイプのフラグを指定する必要はありません。

ファイルシステムが使用中だと、このコマンドは実行できません。たとえば、あるユーザが cd コマンドによってファイルシステムにアクセスしていると、作業ディレクトリが他に変更されるまでそのファイルシステムは使用中となります。umount コマンドは、NFS サーバに接続できないと一時的にハングすることがあります。

umount コマンドの使用

以下の例では、/usr/man にマウントしたファイルシステムのマウントが解除されます。


# umount /usr/man

以下の例では、umount -a -V の実行結果が表示されます。

# umount -a -V
umount /home/kathys
umount /opt
umount /home
umount /net

このコマンドでは、ファイルシステムのアンマウント自体は実行されないことに注意してください。

mountall

このコマンドを使用すると、ファイルシステムテーブルに指定したすべてのファイルシステム、または特定グループのファイルシステムをマウントできます。アクセスするファイルシステムタイプを選択するための -F FSType オプション、ファイルシステムテーブル内のリモートファイルシステムをすべて選択する -r オプション、ローカルファイルシステムをすべて選択する -l オプションがあります。 NFS ファイルシステムタイプと指定されているファイルシステムはすべてリモートファイルシステムなので、これらのオプションは余分な指定になることがあります。詳細については、マニュアルページの mountall(1M) を参照してください。

mountall コマンドの使用

以下の2つの例を実行すると、同じ結果になります。


# mountall -F nfs

# mountall -F nfs -r

umountall

このコマンドを使用すると、ファイルシステムのグループをアンマウントできます。-k オプションは、mount_point に結び付けられているプロセスを終了させるには fuser -k mount_point コマンドを使う必要があることを表します。-s オプションは、アンマウントを並行処理しないことを示します。-l は、ローカルファイルシステムだけを使用することを、-r はリモートファイルシステムだけを使用することを示します。-h host オプションは、指定されたホストのファイルシステムをすべてアンマウントすることを指定します。-h オプションは、-l または -r とは同時に指定できません。

umountall コマンドの使用

以下のコマンドでは、リモートホストからマウントしたすべてのファイルシステムが切り離されます。


# umountall -r

以下のコマンドでは、bee サーバからマウントしたすべてのファイルシステムが切り離されます。


# umountall -h bee

share

このコマンドを使用すると、NFS サーバのローカルファイルシステムをマウントできるようになります。また、システム上のファイルシステムのうち、現在共有しているもののリストを表示します。NFS サーバが動作していないと、share コマンドは使用できません。NFS サーバソフトウェアは、/etc/dfs/dfstab に項目がある場合、ブートの途中で自動的に起動されます。NFS サーバソフトウェアが動作していないくても、このコマンドはエラーを表示しません。NFS サーバソフトウェアが動作していることを確認してからこのコマンドを使用するようにしてください。

ディレクトリツリーはすべて共有できるオブジェクトですが、各ファイルシステムの階層構造は、そのファイルシステムが位置するディスクスライスやパーティションで制限されます。たとえばルート (/) ファイルシステムを共有しても、/usr が同じディスクパーティションかスライスに存在しなければ、/usr を共有することはできません。通常、ルートはスライス 0 に、/usr はスライス 6 にインストールされます。また /usr を共有しても、/usr のサブディレクトリにマウントされているローカルディスクパーティションは共有できません。

すでに共有している大きいファイルシステムの一部であるファイルシステムを共有することはできません。たとえば /usr/usr/local が同じディスクスライスにある場合、/usr/usr/local も共有することができますが、両方を別々の共有オプションで共有する場合、/usr/local は別のディスクスライスに移動しなければなりません。


警告 - 警告 -

2 つのファイルシステムが同じディスクスライスにある場合、読み出し専用で共有しているファイルシステムに、読み出しと書き込みが可能な状態で共有しているファイルシステムのファイルハンドルでアクセスすることができます。読み出しと書き込みの両方を行うファイルシステムは、読み出し専用で共有する必要があるファイルシステムとは別のパーティションかディスクスライスに保存するほうが安全です。


share オプション

-o フラグに指定できるオプションの一部を示します。

rw|ro

pathname に指定したファイルシステムを、読み出しと書き込みの両方が可能な状態で共有するか、読み出し専用で共有するかを指定します。

rw=accesslist

ファイルシステムは、リスト上のクライアントに対してだけ読み書き可能で共有されます。それ以外の要求は拒否されます。accesslist に定義されるクライアントのリストは、Solaris 2.6 で拡張されています。詳細については、share コマンドを使ってアクセスリストを設定する」 を参照してください。このオプションは -ro オプションよりも優先されます。

NFSファイルシステムで指定できるオプションは、以下のとおりです。

aclok

このオプションを指定すると、NFS バージョン 2 プロトコルをサポートしている NFS サーバが NFS バージョン 2 クライアントのアクセス制御を行うように設定できます。このオプションを指定しないと、すべてのクライアントは最低限のアクセスしかできません。指定すると、最大限のアクセスができるようになります。たとえば -aclok オプションを指定して共有したファイルシステムでは、1 人のユーザが読み取り権を持っていれば全員が読み取りを許可されます。このオプションを指定しないと、アクセス権を持つべきクライアントからのアクセスが拒否される可能性があります。アクセス権の与えすぎと制限しすぎのどちらを選ぶかは、現在のセキュリティシステムによって決定します。アクセス制御リスト (ACL) について詳細は、『Solaris のシステム管理』を参照してください。


注 -

ACL を活用するためには、クライアントでもサーバでも NFS バージョン 3 と NFS_ACL プロトコルをサポートしているソフトウェアを実行します。NFS バージョン 3 プロトコルしかサポートしていないソフトウェアの場合、クライアントは正しいアクセス権を取得できますが、ACL を操作することはできません。NFS_ACL プロトコルをサポートしていれば、正しいアクセス権を取得した上で ACL の操作も可能です。この両方をサポートしているのは、Solaris 2.5 以降です。


anon=uid

uid は、認証されていないユーザのユーザ ID を選択するために使用します。uid-1 に設定すると、認証されていないユーザからのアクセスは拒否されます。anon=0 とするとルートアクセス権を与えることができますが、これは認証されていないユーザにルートアクセス権を与えることになるため、代わりに root オプションを使ってください。

index=filename

-index=filename オプションを使うと、ユーザが NFS URL にアクセスするとディレクトリのリストが表示されるのではなく、HTML (HyperText Markup Language) ファイルが強制的に読み込まれます。これは、HTTP URL がアクセスしているディレクトリに index.html ファイルが見つかるとブラウザのような動作をするというものです。このオプションを設定することは、httpd に対して DirectoryIndex オプションを指定するのと同じ意味があります。たとえば、dfstab ファイルのエントリが次のとおりであるとします。


share -F nfs -o ro,public,index=index.html /export/web

このとき、以下の URL によって表示される情報はすべて同じです。


nfs://<server>/<dir>
nfs://<server>/<dir>/index.html
nfs://<server>//export/web/<dir>
nfs://<server>//export/web/<dir>/index.html
http://<server>/<dir>
http://<server>/<dir>/index.html
nosuid

このオプションを使うと、setuid モードまたは setgid モードを有効にしようとしても無視されます。NFS クライアントは、setuidsetgid のビットがオンの状態ではファイルを作成できません。

public

-public オプションは、WebNFS ブラウズのために追加されました。このオプションで共有できるのは、1 台のサーバにつき 1 つのファイルシステムだけです。

root=accesslist

サーバが、リスト上のホストに対してルートアクセス権を与えます。デフォルトでは、サーバはどのリモートホストにもルートアクセス権は与えません。選択されているセキュリティモードが -sec=sys 以外だと、accesslist に指定できるホストはクライアントだけです。accesslist に定義されたクライアントのリストは、Solaris 2.6 で拡張されました。詳細については、share コマンドを使ってアクセスリストを設定する」 を参照してください。


注意 - 注意 -

他のホストにルートアクセス権を与えるには、広い範囲でセキュリティが保証されていることが前提です。root= option は十分慎重に使用してください。


sec=mode[:mode]

mode は、ファイルシステムへのアクセス権を取得するために必要なセキュリティモードです。デフォルトのセキュリティモードは、UNIX の認証です。モードは複数指定できますが、コマンド行に指定するときは 1 行につき 1 つのセキュリティモードだけにしてください。-mode の各オプションは、次に -mode が出現するまでその後の -rw-ro-rw=-ro=-root=-window= オプションに適用されます。-sec=none とすると、すべてのユーザがユーザ nobody にマップされます。

window=value

value は、NFS サーバで資格が有効な時間の上限です。デフォルトは 30000 秒 (8.3 時間) です。

share コマンドを使ってアクセスリストを設定する

リリース 2.6 より前の Solaris で、share コマンドの -ro=-rw=-root= オプションに指定する accesslist の内容は、ホスト名がネットグループ名に限定されていました。Solaris 2.6 では、このアクセス制御リストにドメイン名、サブネット番号、およびアクセス権を与えないエントリも指定できます。この拡張により、名前空間を変更したり多数のクライアントを定義したリストを使うことなく、サーバでのファイルアクセス制御を今までより簡単に管理できます。

以下のコマンドでは、roselilac では読み出しと書き込みの両方のアクセスが認められますが、その他では、読み出しのみが許可されます。


# share -F nfs -o ro,rw=rose:lilac /usr/src

以下の例では、eng ネットグループのすべてのホストで読み出しのみができるようになります。rose クライアントでは、読み出しと書き込みの両方ができます。


# share -F nfs -o ro=eng,rw=rose /usr/src

注 -

rwro には必ず引数が必要です。読み書き可能オプションを指定しないと、デフォルトによってすべてのクライアントが読み書き可能になります。


1 つのファイルシステムを複数クライアントで共有するには、すべてのオプションを同じ行に指定しなければなりません。同じオブジェクトに share コマンドを複数回実行しても、最後のコマンドしか有効になりません。以下のコマンドでは、3 つのクライアントシステムで読み出しと書き込みができますが、rosetulip では、ファイルシステムに root でアクセスできます。


# share -F nfs -o rw=rose:lilac:tulip,root=rose:tulip /usr/src

複数の認証機構を使ってファイルシステムを共有するときには、セキュリティモードの後に必ず -ro-ro=-rw-rw=-root-window の各オプションを指定してください。この例では、eng というネットグループ内のすべてのホストに対して UNIX 認証が選択されています。これらのホストは、ファイルシステムを読み取り専用モードでしかマウントできません。ホスト tuliplilac は、Diffie-Hellman (DH) 認証を使えば読み書き可能でファイル・システムをマウントできます。tuliplilac は、そのホスト名が eng ネットグループのリストに含まれていれば、DH 認証を使っていなくても読み取り専用でマウントすることは可能です。


# share -F nfs -o sec=dh,rw=tulip:lilac,sec=sys,ro=eng /usr/src

UNIX 認証はデフォルトのセキュリティモードですが、-sec を指定するとデフォルトは無効になります。他の認証機構とともに UNIX 認証も使う場合には、必ず -sec=sys オプションを指定してください。

実際のドメイン名の名前にドットを付けると、アクセスリストの中で DNS ドメイン名が使えます。ドットは、その後の文字列が完全に修飾されたホスト名ではなくドメイン名であることを表します。次のエントリは、マウントから eng.sun.com ドメイン内のすべてのホストへのアクセスを許可するためのものです。


# share -F nfs -o ro=.:.eng.sun.com /export/share/man

この例で、"." はそれぞれ NIS または NIS+ 名前空間を通じて一致するすべてのホストに対応します。ネームサービスから返される結果にはドメイン名は含まれません。".eng.sun.com" というエントリは、名前空間の解決に DNS を使用するすべてのホストに一致します。DNS が返すホスト名は必ず完全に修飾されるので、DNS と他の名前空間を組み合わせると長いエントリが必要です。

実際のネットワーク番号かネットワーク名の前に "@" を指定すると、アクセスリストの中でサブネット番号が使えます。これは、ネットワーク名をネットグループ名や完全に修飾されたホスト名と区別するためです。サブネットは、/etc/networks の中か NIS または NIS+ 名前空間の中で識別できなければなりません。以下のエントリは、サブネット 129.144eng ネットワークと識別されるならばすべて同じ意味を持ちます。


# share -F nfs -o ro=@eng /export/share/man
# share -F nfs -o ro=@129.144 /export/share/man
# share -F nfs -o ro=@129.144.0.0 /export/share/man

2 番めと 3 番めのエントリは、ネットワークアドレス全体を指定する必要がないことを表しています。

ネットワークアドレスの先頭部分がバイトによる区切りでなく、CIDR (Classless Inter-Domain Routing) のようになっている場合には、マスクの長さをコマンド行で具体的に指定できます。この長さは、ネットワーク名かネットワーク番号の後ろにスラッシュで区切ってアドレスの接頭辞に有効ビット数として指定します。たとえば、次のようにします。


# share -f nfs -o ro=@eng/17 /export/share/man
# share -F nfs -o ro=@129.144.132/17 /export/share/man
この例で、"/17" はアドレスの先頭から 17 ビットがマスクとして使われることを表します。CIDR について詳細は、RFC 1519 を参照してください。

また、エントリの前に "-" を指定することでアクセスの拒否を示すこともできます。エントリは左から右に読み込まれるため、アクセス拒否のエントリはそれを適用するエントリの前に置く必要があることに注意してください。


# share -F nfs -o ro=-rose:.eng.sun.com /export/share/man

この例では、eng.sun.com ドメイン内のホストのうち、rose を除いたすべてに対してアクセス権が許可されます。

unshare

このコマンドを使用すると、以前に使用可能な状態になっていたファイルシステムを、クライアントがマウントできないようにします。unshare コマンドを使用すると、share コマンドで共有したファイルシステムや、/etc/dfs/dfstab で自動的に共有しているファイルシステムが共有できないようになります。unshare コマンドを使用し、dfstab ファイルで共有しているファイルシステムの共有を解除する場合は、実行レベル 3 を終了して再度実行レベル 3 に戻ると、そのファイルシステムがまた共有されることに注意してください。実行レベル 3 を終了しても変更内容を継続させるには、そのファイルシステムを dfstab ファイルから削除しなければなりません。

NFSファイルシステムの共有を解除している場合、クライアントから既存マウントへのアクセスは禁止されます。クライアントにはファイルシステムがまだマウントされている可能性がありますが、ファイルにはアクセスできません。

unshare コマンドの使用

以下のコマンドでは、指定したファイルシステムの共有が解除されます。


# unshare /usr/src

shareall

このコマンドを使用すると、複数のファイルシステムを共有することができます。オプションなしで使用すると、/etc/dfs/dfstab 内のすべてのエントリが共有されます。share コマンドを並べたファイルの名前を指定することができます。ファイル名を指定しないと、/etc/dfs/dfstab の内容が検査されます。"-" を使ってファイル名を置き換えれば、標準入力から share コマンドを入力できます。

shareall コマンドの使用

以下のコマンドでは、ローカルファイルに羅列されているすべてのファイルシステムが共有されます。


# shareall /etc/dfs/special_dfstab

unshareall

このコマンドを使用すると、現在共有されているリソースがすべて使用できなくなります。-F FSType オプションによって、/etc/dfs/fstypes に定義されているファイルシステムタイプのリストを選択します。このフラグによって、特定のタイプのファイルシステムだけを共有解除できます。デフォルトのファイルシステムタイプは、/etc/dfs/fstypes に定義されています。特定のファイルシステムを選択するには、unshare コマンドを使います。

unshareall コマンドの使用

次の例では、NFS タイプのすべてのファイルシステムの共有が解除されます。


# unshareall -F nfs

showmount

このコマンドを使用すると、NFS サーバから共有したファイルシステムをリモートにマウントしたすべてのクライアントや、クライアントがマウントしたファイルシステム、または共有しているファイルシステムとクライアントのアクセス情報が表示されます。構文は以下のとおりです。

showmount [ -ade ] [ hostname ]

-a を指定すると、すべてのリモートマウント (クライアント名とディレクトリ) のリストが表示されます。-d を指定すると、クライアントがリモートにマウントしたディレクトリのリストが表示されます。-e では、共有 (またはエクスポート) しているファイルのリストが表示されます。hostname には、表示する情報が保存されているNFSサーバを指定します。hostname を指定しないと、ローカルホストを入力するように要求されます。

showmount コマンドの使用

以下のコマンドでは、すべてのクライアント、およびマウントしたディレクトリが表示されます。


# showmount -a bee
lilac:/export/share/man
lilac:/usr/src
rose:/usr/src
tulip:/export/share/man

以下のコマンドでは、マウントしたディレクトリが表示されます。


# showmount -d bee
/export/share/man
/usr/src

以下のコマンドでは、共有しているファイルシステムが表示されます。


# showmount -e bee
/usr/src								(everyone)
/export/share/man					eng

setmnt

このコマンドを使用すると、/etc/mnttab テーブルが作成されます。このテーブルは、mount コマンドと umount コマンドで参照されます。通常、このコマンドを使用することはありません。システムがブートされるときに自動的に使用されます。