Bozuk NFS bağlarının bir dizini kilitlemesini engeller misiniz?


17

Biraz ilginç bir kurulum var: Bir klasöre birden çok uzak NFS sunucusu monte edilmiş bir sunucu, o klasör Samba üzerinden yeniden ihraç ediliyor. Tüm paylaşılan klasörleri tek bir yerde tutarak bir paylaşım proxy'si olarak düşünün.

Benim sorunum olsa bağlar biri aşağı gittiğinde (sunucu yeniden başlatıldı, hizmet yeniden başlatıldı, sunucunun dış sabit sürücü kaldırıldı, vb) her zaman bağlama blokları sonsuza kadar okuma girişimi olmasıdır. Bu aynı zamanda lsbu dizinde çalışmanın donması ve Samba üzerinden bağlanan kullanıcıların da donması anlamına gelir . Bu aynı zamanda birkaç kez cron işlerimden birinin yüzlerce engellenmiş işlemi olduğu için sunucuyu neredeyse çökmesine neden oldu. Genellikle lsbitirmek (iptal edemez), koşmak for i in *; do sudo umount -l -f $i; done;, işe yaramasını ummak, sorunu düzeltmek ve sonra her şeyi yeniden takmak için bekleyen bir terminal getirmek zorunda olduğum için çok can sıkıcı oluyor .

Bir NFS paylaşımını, bağlantı herhangi bir nedenle başarısız olursa (tercihen yeniden deneme süresi ile), bağlantının montajsız montajının kendisinin veya en azından engellememesinin şart olduğu bir NFS paylaşımını monte etmenin bir yolu var mı?


Gönderebilir misin /etc/fstab?
Karlson

Yanıtlar:


19

Normalde NFS monte edilirken, bayrakların buna benzer şekilde ayarlanması iyi bir fikirdir:

bg,intr,soft
   bg      If  the  first  NFS  mount  attempt times out, retry the mount in the 
           background.  After a mount operation is backgrounded, all subsequent mounts
           on the same NFS  server  will  be  backgrounded immediately, without first
           attempting the mount.  A missing mount point is treated as a timeout, to
           allow for nested NFS mounts.
   soft    If  an  NFS  file operation has a major timeout then report an I/O error
           to the calling program.  The default is to continue retrying NFS file
           operations indefinitely.
   intr    If  an  NFS  file  operation  has  a major timeout and it is hard mounted,
           then allow signals to interupt the file operation and cause it to return
           EINTR to the calling program.  The default is to not allow file operations
           to be interrupted.

Ek olarak şunları yapabilirsiniz:

timeo=5,retrans=5,actimeo=10,retry=5

NFS sunucusu yeniden denemelerde beklemek yerine bağlantıyı bırakırsa, NFS bağlantının zaman aşımına uğramasına ve dizine erişilemez hale gelmesine izin vermelidir.

NFS montaj seçenekleri hakkında daha fazla bilgi için bu bağlantıya göz atın


sadece bg, intr, soft kullanarak Fedora 20'de 120 saniye bekletilir. Teşekkürler!
Greg Sheremeta

4
"Intr / nointr bağlama seçeneği, 2.6.25 çekirdeğinden sonra kullanımdan kaldırıldı. Bu çekirdeklerde yalnızca SIGKILL bekleyen bir NFS işlemini kesebilir ve belirtilirse, eski çekirdeklerle geriye dönük uyumluluk sağlamak için bu bağlama seçeneği yok sayılır." "Bu seçenek geriye dönük uyumluluk için sağlanmıştır. 2.6.25 çekirdeğinden sonra yok sayılır."
David

1
@ DavidC.Bishop Bu alıntı nereden? Bir bağlantı verebilir misiniz? Teşekkürler.
becko

2
@becko: SIGKILL alıntısı nfs man sayfasından (sadece 'nointr' için arama yapın). Sistemimdeki gibi daha yeni sürümler artık sadece "Bu seçenek geriye dönük uyumluluk için sağlanmıştır. 2.6.25 çekirdeğinden sonra yok sayılır." linky .
David
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.