Làm cách nào để xuất và nhập đúng cổ phiếu NFS có thư mục con làm điểm gắn kết?


21

Máy chủ Axuất thư mục /srvqua NFS với tùy chọn nohide. Thư mục con bên trong /srv, /srv/foolà điểm gắn kết cho một vị trí khác trên máy chủ NFS bằng --bindtùy chọn, như

server# mount --bind /bar/foo/ /srv/foo/

Khách hàng Bnhập khẩu A:/srvvà gắn kết nó /mnt/srvbằng cách sử dụng NFS. Nội dung của /mnt/srvlà nội dung của A:/srv.

Vấn đề là /mnt/srv/footrống rỗng, trong khi tôi đang mong đợi để xem nội dung A:/bar/foo/ở đó.

Làm cách nào để xuất và nhập đúng cổ phiếu NFS có thư mục con làm điểm gắn kết?


Có lẽ dễ dàng hơn để chỉ sử dụng symlink trên A từ /srv/foo --> /bar/foo?
ckhan

1
Tôi đã thử điều này. Điều này sẽ cố gắng để có được /bar/footrên máy khách B, không phải trên máy chủ A.
mbaitoff

Câu trả lời:



10

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/des1sau đó 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/exportsvà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 -ravmá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/tmpchỉ để 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 exportstrang 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/exportstrô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 -ravlạ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!


8

Có vẻ như mọi điểm phụ gắn kết phải được máy chủ NFS xuất ra để hiển thị cho khách hàng. Trong tình huống trên, /etc/exportstập tin sẽ giống như sau:

/srv        *(rw,fsid=0,nohide,no_subtree_check)
/srv/foo    *(rw,nohide,no_subtree_check)

Sau đó, nhập /srvtrên máy khách với tùy chọn -t nfssẽ cung cấp cả hai /srv/srv/foođúng cách.

chỉnh sửa bởi OP

đường thẳng này

    /srv/foo    *(rw,fsid=0,nohide,no_subtree_check)

đã làm việc trong trường hợp của tôi thay vì

    /srv/foo    *(rw,nohide,no_subtree_check) 

1
crossmnt trên gốc?
meffect

2

Tôi thực sự muốn làm điều này quá, nhưng có vẻ như có vấn đề với ý tưởng này bởi vì các máy khách NFS dự kiến ​​số lượng tệp inode là duy nhất trong chế độ xem của một máy khách .

Các vấn đề được nêu chi tiết trong bài đăng trên blog này (không phải bởi tôi): http://utcc.utoronto.ca/~cks/space/blog/unix/MultiFilesystemNFSIssue

Tôi đã quyết định gắn kết các hệ thống tập tin một cách riêng biệt và liên kết chúng lại với nhau, chúng sẽ hoạt động cho tất cả các máy khách NFS.


1
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
slm

0

LƯU Ý: chỉ kích hoạt một người dùng

Những gì nó thêm là một tập hợp các chỉnh sửa cho phía máy chủ và phía máy khách. Về phía máy chủ, /etc/exports/etc/fstabvề phía khách hàng.

Phía máy chủ

  • Linux Mint 18.3 Sylvia 32-bit
  • Kernel Linux 4.4.0-138-chung i686
  • Eeepc của Asus

    $ cat /etc/exports 
    #insert shares (one for each mounted partition sub-folder):      
    /nfsshare/ /192.168.1.155(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
    /nfsshare/media/ 192.168.1.155(rw,no_root_squash,no_subtree_check)
    /nfsshare/extra/ /192.168.1.155(rw,no_root_squash,no_subtree_check)   
    
    $ cat /etc/fstab  
    #shared media files on /media/ed/
    /media/ed/ /nfsshare/ nfs bind 0 0
    /media/ed/media/ /nfsshare/media/ nfs bind 0 0
    /media/ed//extra /nfsshare/extra/ nfs bind 0 0
    

Phía khách hàng

  • Linux Mint 19 Tara 64-bit
  • Kernel Linux 4.15.0-38-generic x86_64

    $ cat /etc/fstab
    #NFS Shares line added
    192.168.1.158:/nfsshare /mnt/share nfs rw,soft,intr,noatime,x-gvfs-show
    

1
Cái gì thế này? Đây có phải là một tập tin? Nhiều tập tin? Vui lòng sử dụng các công cụ định dạng để định dạng câu trả lời của bạn cho rõ ràng. Bạn có thể chỉnh sửa và giải thích cách trả lời của bạn trả lời câu hỏi không?
terdon

(1) Sử dụng từ ngữ của bạn. (2) Ưu đãi này chưa được trình bày là gì?
G-Man nói 'Phục hồi Monica'

xin lỗi vì điều đó
Ed Iglehart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.