マウントポイント/export/example/mount
でNFSサーバーにマウントする自己記述型のFuseファイルシステムを持っています。次に、NFS経由でFuseの親ディレクトリをエクスポートします。 /etc/exports
にはオプションnohide,crossmnt,subtree_check,ro,no_root_squash
が含まれており、全員に無料でアクセスできます。
/export/example *(nohide,crossmnt,subtree_check,ro,no_root_squash)
このエクスポートをNFSクライアントにマウントしてアクセスできます。 NFS内のFuseにアクセスするとすぐに、NFSがumount
になるまでクライアントがハングします(これを行うには、オプション-f
を使用する必要があります)。
Fuseを作業ユーザーとして、またrootとしてマウントしてみました。結果は同じです。
サーバーはUbuntu 12.04、クライアントはSuSE 9.3を実行しています。 FuseはPython=で記述されており、ローカルで問題なく動作します。NFSを介したエクスポートのみが失敗します。信頼できるユーザーのみのプライベートネットワーク上にあるため、セキュリティ上の制限はありません。
誰かが私の問題を引き起こす可能性のあるアイデア、または問題を解決する方法を知っていますか?
NFSをSSHFSで置き換えて問題を回避することを考えましたが、クライアントシステムが古すぎてSSHFSをサポートできないため(Fuseに基づいており、Fuseはサポートされていないため)、それは機能しません。
ほとんどのLinuxディストリビューションには、NFSv2またはNFSv3を使用してFuseマウントされたファイルシステムをエクスポートできないカーネルが同梱されています。選択肢は次のとおりです。1.ファイルシステムをカーネル空間に実装します。 2. NFSv4にエクスポートします。これには、fsid =が必要です。
私は自分自身を使用しています。2。下の図では、#
で始まるコマンドはサーバーで実行され、$
で始まるコマンドはクライアントで実行されます。
これは私のサーバー構成です。Fuseマウントポイントをエクスポートしています。
# mount | tail -n1
convmvfs on /mnt/gb2312 type Fuse.convmvfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
# grep gb2312 /etc/exports
/mnt/gb2312 192.168.0.0/16(no_subtree_check,fsid=0)
これが私のクライアントでしたことです:
$ Sudo mount -t nfs4 server:/ /mnt/
$ ls /mnt
Downloads IMAGES Library lost+found
NFS v2/v3でFuseをエクスポートしたことが原因で失敗したことを確認するには、NFS v4(fsid)を使用せずにそのマウントポイントをエクスポートし、エラーが発生するかどうかを確認します。
# exportfs -a
exportfs: /mnt/gb2312 requires fsid= for NFS export
サーバーでマウントポイントをマウント解除してマウントし、後でFuseでマウントすると、nfsクライアントを使用しようとした場合にログに表示されます。
# tail /var/log/syslog
Aug 18 03:54:31 server rpc.mountd[17183]: Cannot export /mnt/gb2312, possibly unsupported filesystem or fsid= required
Aug 18 04:00:52 server rpc.mountd[17183]: Caught signal 15, un-registering and exiting.
デフォルトでは、nfsを介したサブマウントのエクスポートはオフになっています。推奨される一連のアクションは、サブマウントもエクスポートし、クライアントにもマウントすることです。