Mi ero imbattuto in questo problema mentre seguivo la guida di Diskless Arch e mi ha davvero rallentato. Condividerò qui i miei risultati, poiché sono curioso di sapere se funzionerà per chiunque altro.
Secondo la guida Diskless ho il filesystem di root del client diskless (i dati effettivi che devo esportare) in un'immagine di loopback, che è stata montata su /srv/des1
:
/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)
Ho quindi creato un mountpoint, /nfs/des1
quindi eseguo il mount e confermo che posso vedere tutto:
# mkdir -p /nfs/des1
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin boot dev usr #[SNIP]
Facendo riferimento alla guida di Arch NFS , ho quindi inserito /etc/exports
sul server quanto segue :
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)
Ho quindi eseguito un exportfs -rav
server sul server per applicare queste modifiche.
Tuttavia ho quindi montato la condivisione sul client di test con: mount server:/des1 /mnt/tmp
solo per scoprire che è una directory vuota, quando mi aspettavo che il filesystem rootless diskless fosse lì.
A questo punto ho provato praticamente tutto fino a quando qualcosa non mi ha portato a questa opzione nella exports
pagina 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.
Quindi dopo aver provato tutto il resto ho scambiato questo in modo che il mio /etc/exports
assomigliasse a questo:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)
Dopo aver letto la voce della pagina man, penseresti che ciò avrebbe lo stesso effetto del codice precedente, ma quando sono corso di exportfs -rav
nuovo per registrare le modifiche, ho provato a rimontare dal client e ha funzionato!
/srv/foo --> /bar/foo
?