Diskless Archガイドに従っている間、私はこの問題に出くわしました。これが他の人に役立つかどうか興味がありますので、ここで私の発見を共有します。
ディスクレスガイドによると、ディスクレスクライアントのルートファイルシステム(エクスポートする必要のある実際のデータ)は、次の場所にマウントされたループバックイメージにあります/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]
Arch 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た。diskless-root-filesystemがそこにあると予想したときに、空のディレクトリを見つけるためだけです。
この段階で、exportsmanページのこのオプションに何かが導かれるまで、あらゆることを試しました。
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、変更を登録するためにもう一度走ったとき、クライアントから再マウントを試みましたが、うまくいきました!
/srv/foo --> /bar/fooですか?