サーバーはオプションを使用してNFSを介してディレクトリをエクスポートしますA
。のサブディレクトリは、次のオプションを使用してNFSサーバー上の他の場所のマウントポイントです。/srv
nohide
/srv
/srv/foo
--bind
server# mount --bind /bar/foo/ /srv/foo/
クライアントはNFSを使用してそれをインポートしてB
マウントします。内容は内容です。A:/srv
/mnt/srv
/mnt/srv
A:/srv
問題はそれが/mnt/srv/foo
空で、そこから何かを見ることを期待していることですA:/bar/foo/
。
マウントポイントにサブディレクトリもあるNFS共有を正しくエクスポートしてインポートするにはどうすればよいですか?
答え1
crossmnt
あなたの友達です。
/srv *(rw,fsid=0,no_subtree_check,crossmnt)
答え2
フォローして、この質問を見つけました。ディスクレスアーチガイドさん、これはスピードが本当に遅くなりました。これが他の人にも効果があるかどうか疑問に思うので、ここで結果を共有します。
ディスクレスガイドによると、次の場所にマウントされたループバックイメージに、ディスクレスクライアントのルートファイルシステム(エクスポートする必要がある実際のデータ)があります/srv/des1
。
/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)
その後、マウントポイントを作成し、/nfs/des1
マウントを実行してすべてを見ることができることを確認しました。
# mkdir -p /nfs/des1
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin boot dev usr #[SNIP]
引用するアーキテクチャNFSガイドを作成したら、/etc/exports
サーバーに次のものを置きます。
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)
exportfs -rav
その後、サーバーで実行してこれらの変更を適用します。
mount server:/des1 /mnt/tmp
ただし、後でディスクレスルートファイルシステムがあると予想したときに、テストクライアントに共有をマウントしました。しかし、空のディレクトリであることがわかりました。
exports
この段階で、マンページに次のオプションが表示されるまで、ほぼすべてを試しました。
crossmnt
This option is similar to nohide but it makes it possible for clients
to move from the filesystem marked with crossmnt to exported filesystems
mounted on it. Thus when a child filesystem "B" is mounted on a parent "A",
setting crossmnt on "A" has the same effect as setting "nohide" on B.
それで、他のすべてを試してから交換して、次のよう/etc/exports
になりました。
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)
マニュアルページの項目を読んだ後、これは前のコードと同じ効果を持つと思うかもしれませんが、exportfs -rav
変更を登録するために再実行してからクライアントから再インストールしようとしたときに動作しました!
答え3
クライアントが表示できるように、NFSサーバーから各マウントサブポイントをエクスポートする必要があるようです。上記の場合、/etc/exports
ファイルは次のようになります。
/srv *(rw,fsid=0,nohide,no_subtree_check)
/srv/foo *(rw,nohide,no_subtree_check)
その後、/srv
クライアントのオプションを使用してインポートを正しく作成-t nfs
して使用できます。/srv
/srv/foo
OPが編集しました
この行
/srv/foo *(rw,fsid=0,nohide,no_subtree_check)
私の場合、代わりに働いた。
/srv/foo *(rw,nohide,no_subtree_check)
答え4
メモ:単一ユーザーのみを有効にする
追加されるのは、サーバー側とクライアント側の両方の一連の編集です。サーバー側/etc/exports
と/etc/fstab
クライアント側で。
サービス端末
- Linux Mint 18.3シルビア32ビット
- カーネル Linux 4.4.0-138-一般 i686
ASUS EEPC
$ cat /etc/exports #insert shares (one for each mounted partition sub-folder): /nfsshare/ /192.168.1.155(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt) /nfsshare/media/ 192.168.1.155(rw,no_root_squash,no_subtree_check) /nfsshare/extra/ /192.168.1.155(rw,no_root_squash,no_subtree_check) $ cat /etc/fstab #shared media files on /media/ed/ /media/ed/ /nfsshare/ nfs bind 0 0 /media/ed/media/ /nfsshare/media/ nfs bind 0 0 /media/ed//extra /nfsshare/extra/ nfs bind 0 0
顧客
- Linux Mint 19タラ64ビット
カーネル Linux 4.15.0-38-typ x86_64
$ cat /etc/fstab #NFS Shares line added 192.168.1.158:/nfsshare /mnt/share nfs rw,soft,intr,noatime,x-gvfs-show