参考情報
- NFSv4(Stray Penguin)
- NFS mount fails "reason by server: No such file or directory" , but dir exists!(Fedoraforum.org)
- [SOLVED] NFS mount : No such file or directory(LinuxQuestions.org)
- mount of nfs4 export fails shows "reason given by server: No such file or directory" error.(Redhat Customer Portal)
- CentOS 5のNFSv4ファイル共有設定でハマる(M.C.P.C. (Mamesibori Creation Plus Communication))
- NFSサーバー/クライアントの設定方法(CentOS6)(Qiita)
もうね、いろいろ調べましたよ..最終的に
- NFSv4(Stray Penguin)
より抜粋「このようにエクスポーとすると、NFSv4 では、サーバ上の /home/hoge/ が server:/ として開放される。Windowsファイル共有のイメージに近い。」で分かりました。とりあえず3つぐらい関門があったので順次説明していきます。
以下、NFSを通じて旧サーバーから新サーバーへホームディレクトリの移行(rsyncとかで)する目的です。従って、一時的にセキュアでない設定(no_root_squash)をしています。これをしないと、サーバーとクライアント間で UID/GIDが引き継がれないためです。
NFSサーバー側
NFSサーバー側の設定
/etc/exports
/home NFSクライアントIPアドレス(ro,fsid=0,no_root_squash)
roはリードオンリー、fsid=0はNFSv4特有の約束事、no_root_squashは、サーバーとクライアント間で UID/GIDが引き継げるというものです。
NFSサーバー側でNFS起動
/etc/init.d/nfs start
をしておきましょう。ない?それはNFSがインストールされていないということになります。インストールの方法はここでは割愛します。
NFSサーバー側のFIRWEALL設定
ここではiptablesによるOSのFIREWALLが有効だと仮定します。
またRedHat EL 6あたりを使っていると仮定します。
NFS v4はデフォルトで 2049/tcp を使います。
/etc/sysconfig/iptables でFIREWALLの管理をしているなら、
-A RH-Firewall-1-INPUT -s NFSクライアントのIPアドレス/255.255.255.255 -m state --state NEW -m tcp
を一行追加して、 /etc/init.d/iptables condrestart
でもしておけばいいでしょう。
NFSクライアント側
NFSクライアント側でのNFSマウント用のディレクトリ作成
mkdir -p /mnt/nfs/hogehoge
NFSクライアント側よりNFSサーバーへのNFSマウント
mount -t nfs4 -o soft NFSサーバーのIPアドレス:/ /mnt/nfs/hogehoge
ここで一番ハマりました。
NFS v3
mount -t nfs -o soft NFSサーバーのIPアドレス:/home /mnt/nfs/hogehoge
ここで一番ハマりました。
NFS v3
mount -t nfs -o soft NFSサーバーのIPアドレス:/home /mnt/nfs/hogehoge
との違いはおわかりでしょうか。そう、NFS v4は、NFSサーバー側のマウントは、 /etc/exportsのマウントポイントが ルートディレクトリとしてマッピングされるように仕様変更されていたのです!!
なお、 オプション softは、NFSサーバーへアクセスできなくなったときに接続を諦めるというものです。
エラー1 NFSサーバーからの応答がない
NFSサーバー側のFIREWALLでブロックされている可能性があります。
2049/tcpをNFSクライアントからサーバーへアクセスできることを確認してみてください。
エラー2 NFSサーバーへアクセスできない
NFSサーバー側でNFSが正しく起動していることを確認
エラー3 Protocol not supported
mount.nfs: mount(2): Protocol not supported mount.nfs ... のようなエラーが出た場合です。
mount -t nfs4 の場合には出ないはずなので今回は関係ないはずですが、どうしても nfs4が使えない場合には
mount -t nfs -o vers=4,nfsvers=4,soft ...
など、vers(NFSクライアント側のNFSバージョン)、nfsvers(NFSサーバー側のNFSバージョン)を直接指定してマウントしてみてください。
mount -t nfs4 の場合には出ないはずなので今回は関係ないはずですが、どうしても nfs4が使えない場合には
mount -t nfs -o vers=4,nfsvers=4,soft ...
など、vers(NFSクライアント側のNFSバージョン)、nfsvers(NFSサーバー側のNFSバージョン)を直接指定してマウントしてみてください。
エラー4 Operation not permitted
mount.nfs4: Operation not permitted などのエラーがでる場合です。
NFSサーバー側の /etc/exports 設定に 「fsid=0」が入っていないのが原因です。入れましょう。
例
/home NFSクライアントIPアドレス(ro,fsid=0,no_root_squash)
NFSサーバー側の /etc/exports 設定に 「fsid=0」が入っていないのが原因です。入れましょう。
例
/home NFSクライアントIPアドレス(ro,fsid=0,no_root_squash)
エラー5 No such file or directory
mount.nfs4: NFSサーバー:/exports failed, reason given by server: No such file or directory のようなエラーがでた場合です。
NFS v4より、マウントに関する仕様が変更されているようで、
NFSサーバー(/home)
/home NFSクライアントIPアドレス(ro,fsid=0,no_root_squash)
とした場合
mount -t nfs4 -o soft NFSサーバーのIPアドレス:/ /mnt/nfs/hogehoge
とした場合
mount -t nfs4 -o soft NFSサーバーのIPアドレス:/ /mnt/nfs/hogehoge
のように、NFSサーバー側のマウントは 「/」 (従来は /home)にしてみてください。
つまりルートディレクトリの位置が変更されたってことですね。
/home/hogehoge へのマウントなら
mount -t nfs4 -o soft NFSサーバーのIPアドレス:/hogehoge /mnt/nfs/hogehoge
ってことになります。これを解決するのに結構かかっちゃいました。
まぁNFS v4の方がセキュアではあるんですけどね。 v3まではNFSサーバー側のルートディレクトリをダイレクトに指定できていたわけですから...
ってことになります。これを解決するのに結構かかっちゃいました。
まぁNFS v4の方がセキュアではあるんですけどね。 v3まではNFSサーバー側のルートディレクトリをダイレクトに指定できていたわけですから...
2016年3月17日 @kimipooh
0 件のコメント:
コメントを投稿