Tôi đã vấp phải vấn đề này trong khi làm theo hướng dẫn của Diskless Arch , và nó thực sự làm tôi chậm lại. Tôi sẽ chia sẻ những phát hiện của tôi ở đây, vì tôi tò mò liệu điều này sẽ làm việc cho bất cứ ai khác.
Theo hướng dẫn về Diskless, tôi có hệ thống tập tin gốc của máy khách không đĩa (dữ liệu thực tế tôi cần xuất) trong một hình ảnh loopback, được gắn vào /srv/des1
:
/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)
Sau đó tôi đã tạo một mountpoint /nfs/des1
sau đó chạy mount và xác nhận rằng tôi có thể thấy mọi thứ:
# mkdir -p /nfs/des1
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin boot dev usr #[SNIP]
Tham khảo hướng dẫn Arch NFS , sau đó tôi đưa phần sau /etc/exports
vào máy chủ:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)
Sau đó tôi chạy một exportfs -rav
máy chủ để áp dụng những thay đổi này.
Tuy nhiên, sau đó tôi đã gắn chia sẻ trên máy khách thử nghiệm với: mount server:/des1 /mnt/tmp
chỉ để tìm thấy nó là một thư mục trống, khi tôi mong đợi hệ thống tập tin đĩa không đĩa gốc sẽ ở đó.
Ở giai đoạn này, tôi đã thử mọi thứ cho đến khi một cái gì đó dẫn tôi đến tùy chọn này trong exports
trang người đàn ông:
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.
Vì vậy, đã thử mọi thứ khác, tôi đổi chỗ này để /etc/exports
trông giống như thế này:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)
Đọc xong mục nhập trang người đàn ông, bạn sẽ nghĩ rằng điều này sẽ có tác dụng tương tự như mã trước đó, nhưng khi tôi chạy exportfs -rav
lại để đăng ký các thay đổi, sau đó cố gắng truy cập lại từ máy khách và nó đã hoạt động!
/srv/foo --> /bar/foo
?