Я столкнулся с этой проблемой, следуя руководству по 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
only, чтобы найти пустой каталог, когда ожидал, что там будет находиться diskless-root-filesystem.
На этом этапе я попробовал почти все, пока что-то не привело меня к этой опции на 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
снова запустился, чтобы зарегистрировать изменения, затем попытался перемонтировать их с клиента, и это сработало!
/srv/foo --> /bar/foo
?