Ich bin auf dieses Problem gestoßen, als ich dem Diskless Arch- Handbuch gefolgt bin , und es hat mich wirklich verlangsamt. Ich werde meine Erkenntnisse hier mitteilen, da ich neugierig bin, ob dies für irgendjemanden anderen funktioniert.
Gemäß dem Diskless-Handbuch habe ich das Root-Dateisystem des Diskless-Clients (die eigentlichen Daten, die ich exportieren muss) in einem Loopback-Image, auf dem Folgendes bereitgestellt wurde /srv/des1
:
/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)
Ich habe dann einen /nfs/des1
Mountpunkt erstellt und dann den Mount ausgeführt und bestätigt, dass ich alles sehen kann:
# mkdir -p /nfs/des1
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin boot dev usr #[SNIP]
In Bezug auf das Arch NFS- Handbuch habe ich dann Folgendes /etc/exports
auf dem Server eingefügt:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)
Ich habe dann eine exportfs -rav
auf dem Server ausgeführt, um diese Änderungen zu übernehmen.
Allerdings habe ich dann die Freigabe auf dem Testclient gemountet mit: mount server:/des1 /mnt/tmp
nur um festzustellen, dass es ein leeres Verzeichnis ist, als ich erwartet hatte, dass das plattenlose Root-Dateisystem da ist.
Zu diesem Zeitpunkt habe ich so gut wie alles versucht, bis mich etwas zu dieser Option in der exports
Manpage geführt hat:
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.
Nachdem ich alles andere ausprobiert hatte, tauschte ich es so /etc/exports
aus, dass es so aussah:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)
Nachdem Sie den Manpage-Eintrag gelesen haben, würden Sie denken, dass dies den gleichen Effekt wie der vorherige Code haben würde, aber als ich exportfs -rav
erneut ausgeführt habe, um die Änderungen zu registrieren, habe ich versucht, vom Client erneut zu mounten, und es hat funktioniert!
/srv/foo --> /bar/foo
?