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がそこにあると予想したときに、空のディレクトリを見つけるためだけです。
この段階で、exports
manページのこのオプションに何かが導かれるまで、あらゆることを試しました。
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
ですか?