Linux NFSサーバにOpenSolaris/Solaris10をNFSクライアントとして接続する方法(NFS v3)

NFSv4でのNFS運用は今のところ行っていないので、、、

LinuxNFSサーバからエクスポートされたディレクトリをOpenSolaris/Solaris10 NFSクライアントでマウントしようとすると、マウントできない。原因詳細は不明だが、Linux NFSサーバとSolaris NFSクライアントでの、NFSバージョン確認処理がうまく動作しないらしい。

まず、NFSv4は利用していないので、NFSv3を使用することにする。
Linux NFSサーバでは、/etc/exportsファイルに、

/export_dir solaris_client(rw,no_subtree_check)

のように記述する。そして、exportfs -aを実行する。設定変更後の反映時には、exportfs -raを実行する。

OpenSolaris NFSクライアントは、上記でエクスポートされたファイルを、NFSv3でマウントしてやればよい。
コマンドラインからだと、

OpenSolaris# mount -F nfs -o vers=3 linux_nfs_server:/export_dir /mount_point

また、デフォルトでNFSv3を使用するようにするには、/etc/default/nfsファイルでNFSクライアントのマウント要求バージョンでNFSv3以下にすればよい。以下の行はインストール直後はバージョンが4、かつ'#'でコメントアウトされているので、これを以下の記述に変更する。

NFS_CLIENT_VERSION=3

そして、svcadm enable nfs/clientすると、以下のように、versオプション指定なしでマウントできるようになる。既にnfs/clientが動作している時の設定反映はsvcadm restart nfs/clientで行える。

OpenSolaris# mount -F nfs linux_nfs_server:/export_dir /mount_point

Solaris10の場合は、上記設定だけではうまく行かない。LinuxNFSサーバは、デフォルトではポート番号1024より小さなinternetポートから発したマウント要求しか受け付けない。ところが、Solaris10は、これより大きな値のポートからマウント要求を発行する、というのが原因のようだ。なので、Linux NFSサーバの/etc/exportsファイルにinsecureオプションを追加する。

/export_dir solaris10_client(rw,insecure,no_subtree_check)

Solaris10 NFSクライアントのマウント方法は、OpenSolarisと同様で良い。

なお、OpenSolarisSolaris10の動作の違いを、Linuxならtcpdump/Solarisならsnoopで調べると、OpenSolarisTCPプロトコルNFSサーバにマウント要求を発行するが、Solaris10UDPプロトコルで、ポートマッパを利用してマウント要求をする、ということがわかる。恐らく、このポートマッパ関連の動作の影響で、Solaris10は1024より大きなポートからマウント要求を発行していると思われる。