Alt dizinleri olan NFS paylaşımları da bağlama noktaları olarak nasıl düzgün biçimde verilir ve alınır?


21

Sunucu seçeneği ile NFS yoluyla Adizini verir . İçinde bir alt dizin , bir kullanarak NFS sunucusu üzerinde başka bir konuma için bağlama noktası olduğunu gibi seçeneği/srvnohide/srv/srv/foo--bind

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

İstemci NFS kullanarak Biçe aktarır A:/srvve bağlar /mnt/srv. İçeriği /mnt/srviçeriği vardır A:/srv.

Sorun o kadar /mnt/srv/fooboş ki , içeriğini görmeyi bekliyorum A:/bar/foo/.

Alt dizinleri olan NFS paylaşımları da bağlama noktaları olarak nasıl düzgün biçimde verilir ve alınır?


Belki de A üzerindeki sembolik bağlantıyı kullanmak daha kolay olabilir /srv/foo --> /bar/foomi?
ckhan

1
Bunu denedim. Bu , sunucuya değil /bar/fooistemci makineye ulaşmaya çalışır . BA
mbaitoff

Yanıtlar:



10

Diskless Arch rehberini takip ederken bu soruna rastlamıştım ve bu beni gerçekten yavaşlattı. Bulgularımı burada paylaşacağım, çünkü bunun başkaları için işe yarayıp yaramayacağını merak ediyorum.

Disksiz kılavuza göre, üzerine monte edilmiş bir geridönüşüm görüntüsünde disksiz istemcinin kök dosya sistemine (dışa aktarmam gereken gerçek veriye) sahibim /srv/des1:

/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)

Sonra bir mountpoint oluşturdum, /nfs/des1sonra mount'u çalıştırdım ve her şeyi görebildiğimi doğruladım:

# mkdir -p /nfs/des1 
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin  boot  dev  usr  #[SNIP]

Değinen Arch NFS rehber, o zaman aşağıdaki koymak /etc/exportssunucuda:

/nfs/      *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)

Daha sonra exportfs -ravbu değişiklikleri uygulamak için sunucuda bir koştum .

Ancak daha sonra sınama istemcisine paylaşımını yaptım: mount server:/des1 /mnt/tmpdisksiz kök dosya sisteminin olmasını beklediğimde yalnızca boş bir dizin bulmak için.

Bu aşamada, beni exportsman sayfasındaki bir seçeneğe yönlendirene kadar her şeyi denedim :

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. 

Benim bu yüzden başka çalıştı herşey sahip Yani Bunu tersine takas /etc/exportsşuna benziyordu:

/nfs/      *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)

Man page girişini okuduğunuzda, bunun önceki kodla aynı etkiye sahip olacağını düşünebilirsiniz, ancak exportfs -ravdeğişiklikleri kaydetmek için tekrar koştuğumda , istemciden yeniden toplanmaya çalıştım ve çalıştı!


8

Görünüşe göre her alt bağlantı noktasının istemcilerin görebilmesi için NFS sunucusu tarafından dışa aktarılması gerekiyor. Yukarıdaki durumda /etc/exportsdosya aşağıdaki gibi görünmelidir:

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

Sonra, ithal /srvseçeneği ile istemci üzerinde -t nfshem yapacaktır /srvve /srv/foodüzgün kullanılabilir.

düzenleme OP

bu hat

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

benim durumumda yerine çalıştı

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

1
kök üzerinde crossmnt?
meffect

2

Bunu da gerçekten yapmak istedim, ancak NFS istemcileri, istemcinin tek bir bağlama görünümünde benzersiz inode dosyalarının benzersiz olmasını beklemektedir .

Sorunlar bu blog yazısında ayrıntılı olarak açıklanmaktadır (benim tarafımdan değil): http://utcc.utoronto.ca/~cks/space/blog/unix/MultiFilesystemNFSIssue

Tüm NFS istemcileri için çalışması gereken dosya sistemlerini ayrı ayrı monte etmeye ve birbirine bağlamaya karar verdim.


1
Bu soruyu teorik olarak cevaplayabilse de , cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak tercih edilir.
slm

0

NOT: sadece tek kullanıcı etkin

Eklediği şey, sunucu tarafında ve istemci tarafında yapılan bir düzenleme kümesidir. Sunucu tarafında /etc/exportsve /etc/fstabmüşteri tarafında.

Sunucu tarafı

  • Linux Nane 18.3 Sylvia 32 bit
  • Çekirdek Linux 4.4.0-138-jenerik i686
  • Asus eeepc

    $ 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
    

Müşteri tarafı

  • Linux Nane 19 Tara 64-bit
  • Çekirdek Linux 4.15.0-38-jenerik 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
Bu nedir? Bu bir dosya mı? Çok dosya var mı? Cevabınızı netlik için biçimlendirmek için lütfen biçimlendirme araçlarını kullanın. Lütfen cevabınızın soruyu nasıl yanıtladığını düzenleyebilir ve açıklayabilir misiniz?
terdon

(1) Sözlerini kullan. (2) Bu teklif henüz sunulmamış mı?
G-Man

bunun için özür dilerim.
Ed Iglehart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.