ฉันสะดุดกับปัญหานี้ในขณะที่ทำตามคู่มือDiskless Archและทำให้ฉันช้าลงอย่างมาก ฉันจะแบ่งปันสิ่งที่ค้นพบของฉันที่นี่เพราะฉันอยากรู้ว่าสิ่งนี้จะได้ผลกับคนอื่นหรือไม่
ตาม Diskless Guide ฉันมีระบบไฟล์รูทของไคลเอ็นต์แบบ 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
เพียงเพื่อจะพบว่าเป็นไดเรกทอรีว่างเปล่าเมื่อฉันคาดหวังว่าระบบ diskless-root-files จะอยู่ที่นั่น
ในขั้นตอนนี้ฉันพยายามทำทุกอย่างจนบางสิ่งบางอย่างนำฉันไปสู่ตัวเลือกนี้ในexports
man page:
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)
เมื่ออ่านรายการ man page คุณจะคิดว่านี่จะมีผลเช่นเดียวกับรหัสก่อนหน้า แต่เมื่อฉันรันexportfs -rav
อีกครั้งเพื่อลงทะเบียนการเปลี่ยนแปลงจากนั้นลองส่งเมานท์ใหม่จากไคลเอนต์และใช้งานได้!
/srv/foo --> /bar/foo
?