Я натрапив на цю проблему, дотримуючись керівництва Diskless Arch , і це дійсно сповільнило мене. Я збираюся поділитися своїми висновками тут, оскільки мені цікаво, чи вдасться це комусь іншому.
Відповідно до керівництва Diskless, я маю кореневу файлову систему клієнта без диску (фактичні дані, які мені потрібно експортувати) у зображенні з циклічним зворотним зв'язком, яке було встановлено на /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
лише щоб знайти це порожній каталог, коли я очікував, що там буде розміщена файлова система без диску (root).
На цьому етапі я намагався майже все, поки щось не призвело мене до цього варіанту на 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
?