MOUNT_NFS(8)

名称
mount_nfs - NFS ファイルシステムをマウントする

書式
mount_nfs [-23KPTUbcCdilqs] [-D deadthresh] [-I readdirsize] [-L leaseterm] [-R retrycnt] [-a maxreadahead] [-g maxgroups] [-m realm] [-o options] [-r readsize] [-t timeout] [-w writesize] [-x retrans] rhost:path node

解説
mount_nfs コマンドは、ファイルシステムツリー上の指定された node にリモートの NFS ファイルシステム (rhost:path) をマウントするために、 mount(2) システムコールを呼び出します。このコマンドは通常、 mount(8) によって実行されます。このプログラムは、RFC 1094 の Appendix A と の Appendix I に記述されているマウントプロトコルを実装しています。

オプション:

-2  NFS バージョン 2 プロトコルを使います。

-3  NFS バージョン 3 プロトコルを使います。デフォルトでは最初にバージョン 3 を 試し、もしそれでマウントに失敗した場合はバージョン 2 に下げます。

-D  NQNFS において “dead server threshold” を、指定した round trip timeout の回数で指定します。 再送タイムアウトが “dead server threshold” に達した後は、応答のないサーバ用のキャッシュデータを有効なものとみなします。 値は 1 から 9 までで、9 は “無限の dead threshold” です (キャッシュデータを有効とみなすことはありません)。 このオプションは一般的に薦められるものではなく実験的なものです。

-I  readdir の読み込みサイズを指定した値にします。 この値は通常は DIRBLKSIZ の倍数で、そのマウントの read サイズ以下にすべきです。

-K  クライアント-サーバ間のユーザ認証用に、Kerberos 認証書をサーバへ渡します。 これを用いる場合には、カーネルを NFSKERB オプションつきで作る必要があります。 (詳細は、タイトルが の INTERNET-DRAFT を参照して下さい。)

-L  NQNFS において、リース期間を、指定した秒数に設定します。 これは、round trip のディレイが大きい場合にだけ使って下さい。 値は通常、10 秒から 30 秒の間です。

-P  標準 (reserved) のソケットポート番号を使います。 これがデフォルトで、下位互換のためだけに用意されています。

-R  マウントする際のリトライ回数を、指定された値にします。

-T  UDP のかわりに TCP を使います。サーバがクライアントと同じ LAN ケーブル上にない場合に使うことを お勧めします。(注意: この機能は大抵の非 BSD サーバではサポートされていません。)

-U  たとえ TCP での NFS マウントであっても、マウントプロトコルには UDP トランスポートを使うようにします。 (古い BSD サーバのなかには、このオプションが必要なものもあります。)

-X  バージョン 3 のマウント用に、ディレクトリクッキーの 32 <-> 64 ビット変換を 行います。これは、サーバが v3 のディレクトリクッキーの上位 32 ビットを 使用している場合や、そのようなファイルシステムをアクセスする エミュレーションバイナリを動かしている場合に必要になるでしょう。 NetBSD ネイティブなバイナリではこのオプションは全く不必要です。 このオプションを使用すると、いくらかオーバヘッドかかかります。

-a  先読みするブロック数を指定した値に設定します。値は 0 から 4 までの範囲で、 サイズの大きなファイルをシーケンシャルに読む場合に 何ブロック先読みするかを決定します。これは、大域幅と遅延の積が大きな 状況でマウントする場合に、1 より大きな値で試してみることをお勧めします。

-b  サーバとの最初の接続に失敗した場合に、子プロセスを fork して、 バックグラウンドでマウントを続けようとします。 マルチユーザモードでの動作の際には重要でないファイルシステムがある場合に、 fstab(5) で使うと有効です。

-c  UDP マウントポイントに対しては、 connect(2) を使いません。このオプションは connectionless の UDP マウントの場合は デフォルトになります。

-C  UDP マウントポイントに対しては、 connect(2) を使います。 このフラグは UDP マウントの場合は効率が良くなりますが、 NFS の標準のポート番号 2049 番からのリクエストに答えないサーバや、 複数のネットワークインタフェースを持つサーバに対しては使うことは出来ません。 socket が接続済みで、サーバが別のポート番号のポートから応答したり 別のネットワークインタフェースから応答したりした場合には、 クライアントは ICMP port unreachable を受けたり、そのマウントがハング したりするでしょう。

-d  再送タイムアウト時間の動的予測を行いません。これは、 UDP マウントが高いリトライレートを示しているような場合に有効です。 なぜなら、動的に予測されたタイムアウト時間が短過ぎる可能性があるからです。

-g  認証用のグループリストの最大サイズを、指定した値に設定します。 RFC 1057 ではグループリストのサイズは 16 と記述されていますが、これを 扱えない古いサーバをマウントするときに使われるべきです。 多くのグループに属しているユーザに対してマウントポイントから 応答がない場合には、8 を指定してみて下さい。

-i  マウントを割り込み可能にします。これは、応答しないサーバがあるために ファイル関連のシステムコールが遅れるような場合に、 プロセスに終了シグナルが送られると EINTR でシステムコールが失敗することを意味します。

-l  NQNFS と NFSV3 において、ReaddirPlus RPC を使うように指示します。 このオプションは “ls -l” するようなときに RPC のトラフィックを減らしますが、 その反面、attribute と名前のプリフェッチつきキャッシュのエントリが 満杯になりやすくなります。 このオプションを試してみて、パフォーマンスが改善されたか悪くなったかを 見るとよいでしょう。たぶんこれは、クライアントとサーバ間が、 バンド幅とディレイの積が大きなネットワークで接続されている場合に非常に 適しています。

-m  Kerberos の管理領域を文字列で指定します。 他の管理領域にマウントする場合に -K オプションと一緒に使います。

-o  -o フラグの後に、オプションをカンマで区切って並べて指定します。 指定可能なオプションとその意味は mount(8) を参照してください。

-q  キャッシュの一貫性を保つために NFSV3 のプロトコルのリース拡張を使います。 Not Quite Nfs (NQNFS) の protocol version 2 バージョン版は、 この NFS コードの更新リリースでのみサポートされています。 4.4BSD Lite の最初のリリースに含まれていた version 1 の NQNFS プロトコルとは 下位互換ではありません。 4.4BSD Lite の最初のリリースの NFS システムとの間で作業する場合は、全てのシステムが 4.4BSD Lite release 2 の NFS コードにアップグレードする機会がおとずれるまでは 使ってはいけません。

-r  データのリードサイズを指定した値にします。この値は。通常は 1024 以上の 2 のべき乗でなければなりません。 これはマウントポイントを実際に使っている間に、 “タイムアウトで消失したフラグメント” の数が大きな値になったときに、 UDP マウントに対してうべきです。 (“タイムアウトで消失したフラグメント” の値を見る場合には netstat(1) を -s オプション付きで使ってください。) -w オプションも参照してください。

-s  ソフトマウントを行います。これは、 タイムアウトが決められたリトライ回数に達すると、 システムコールが失敗することを意味します。

-t  初期再送タイムアウト時間を、指定した値に設定します。パケットの消失レートの高い 内部ネットワークや負荷の高いサーバで行う UDP マウントをチューニングするときに役立ちます。 ファイルシステムがアクティブなときに nfsstat(1) が高い再送レートを示す場合には、この値を増やしてみてください。 一方、再送レートは低いが、長い応答遅延がある場合はこの値を減らします。 (通常、このオプションを使って手動でタイムアウト時間をチューニングする時は、 -d option も指定するべきです。)

-w  指定した値にライトデータサイズを設定します。解説は -r オプションと同様ですが、 “タイムアウトで消失したフラグメント数” は、クライアントのかわりにサーバの値が使われます。 -r と -w の両方のオプションは、マウントするサーバが TCP マウントをサポートしていない場合に パフォーマンスを向上させる方法としては最後の手段であることに注意してください。

-x  ソフトマウントの再送タイムアウト回数を設定します。

使用例
mount_nfs を起動する最も簡単な方法は:

    mount remotehost:/filesystem /localmountpoint
で、これは:
    mount -t nfs remotehost:/filesystem /localmountpoint
と同じです。

ブート時に自動的にファイルシステムをマウントすることも可能で、 この場合には以下のような 1 行を /etc/fstab に書きます:

    remotehost:/home /home nfs rw 0 0

エラー
mount_nfs を初めて使う人が理解できずに困るよくある問題がいくつかあります。

    mount_nfs: can't access /foo: Permission denied

このメッセージは、リモートホストが、あなたが要求したファイルシステムを エクスポートしていないか、あなたのホストにエクスポートしていないかの どちらかを意味しています。 もしそれでもリモートホストがファイルシステムをエクスポートしていると あなたが信じているのであれば、 exports(5) ファイルが適切なディレクトリをエクスポートしているか確かめてください。 よくある間違いに、 エクスポートしているホストのマウントポイントでないところを マウントしようとしているのにもかかわらず、 mountd がファイルシステムを -alldirs オプションつきでエクスポートしていないというのがあります。 -alldirs オプションつきでエクスポートしていない限り、エクスポートしている マウントのサブディレクトリをリモートからマウントすることはできません。

以下のエラー:

    NFS Portmap: RPC: Program not registered

は、リモートホストで mountd(8) が走っていないことを表しています。 リモートホストで nfsd や mountd が走っているかどうかを調べたい場合、 rpcinfo(8) プログラムを以下のように使えばできます:

    rpcinfo -p remotehostname

リモートホストで nfsd や mountd が走っていれば、以下のように表示されます:

    100005    3   udp    719  mountd
    100005    1   tcp    720  mountd
    100005    3   tcp    720  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs

エラー:

    mount_nfs: can't get net id for host

は、 mount_nfs がリモートホストの名前を解決できなかったことを表します。

関連項目
mount(2), unmount(2), exports(5), fstab(5), mount(8), mountd(8), rpcinfo(8)

バグ
Sun RPC は UDP (信頼性のないデータグラム) トランスポート層の一番上に実装されているため、 マウントの性能をチューニングしても限界があります。 サーバが同じ LAN ケーブル上にない場合や、サーバの負荷が高い場合には、 TCP トランスポートを使うことを強くすすめますが、残念なことに、 大抵の場合 4.4BSD から派生したサーバに限られています。