NFS istemcisini yeniden başlatmadan yeniden başlat


10

NFS kullanarak bir dizini dışa aktardığım sunucum üzerinde çalışıyorum. Tabii ki hafta boyunca sunucu yeniden başlatılırken, umountiş istasyonumdaki dışa aktarma dosya sistemine ( /etc/fstabaçılışta bağlanır) birden çok kez unuttum . Arada ben başardı umountaslında ve remount (ı am sonra değil kullanarak autofs):

umount -fl /data0
mount /data0

Ama bu artık işe yaramıyor.

Ben edemez farklı bir dizine (kilitlenir monte) üzerinde sunucudan bağlamaya izin verilen dizinin, ama olabilir nfs benim iş istasyonu üzerinde çalışan bir sanal makine üzerinde bu ihraç dir monte.

Ne denedim ( rmmod) nfsve nfsv3((işe yaramaz:) modül kaldırmaktır Resource temporarily unavailable. lsoftakılıyor. mountüzerinden monte edilmiş hiçbir şey göstermez nfs. Bu muhtemelen 'umount -l' nin birçok kez kullanılmasının bir sonucudur, ancak ilk iki kez bu sorunsuz bir şekilde çalıştı.

Herhangi bir fark yaratmadan bağlanamadıktan sonra sunucuyu bu süre içinde yeniden başlattım. Ben de kullandım service nfs-kernel-server restart. İstemci iş istasyonunu yeniden başlatırsam her şeyin normale döneceğinden şüpheleniyorum.

Bundan kurtulmanın ve yeniden başlatma olmadan iş istasyonumdaki nfs istemci tarafını yeniden başlatmanın bir yolu var mı?
Yeniden başlatmadan bunu düzeltemezsem, kullanmaya başlarsam bu yeniden olmaz autofsmı?

lsof -b son satır olarak takılıyor:

lsof: avoiding readlink(/run/user/1001/gvfs): -b was specified.
lsof: avoiding stat(/run/user/1001/gvfs): -b was specified.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
      Output information may be incomplete.

ondan önceki satırlarda, yok /data0.

Giriş yeri /etc/fstab:

192.168.0.2:/data0 /data0  nfs  defaults,auto,nolock,user 0 2

"ama ilk iki kez sorunsuz çalıştı" ... bana Rus ruleti hatırlatıyor. Asar mı lsof -b?
muru

@muru Evet kilitleniyor, Q'yu çıktı ile güncelledim. BTW, hiç kimsenin Rus ruleti ile kaybetmekten şikayet ettiğini duymadım, bu yüzden kazan-kazan oyunu olmalı. Genellikle bir şeylerin bir kez, bir kez veya her zaman, bazılarının X kez sayılmamasını beklerim, ama belki de koşullar farklıydı.
Anthon

Hangi dağıtımı kullanıyorsunuz? Süreç çok değişir.
Graeme

@Graeme Bu Linix Nane 17.1 (Rebecca)
Anthon

Ubuntu ile nasıl çalıştığından emin değilim upstart. Muhtemelen nfs-commonpaketteki tüm hizmetleri yeniden başlatmak istiyorsunuz , birkaç tane var gibi görünüyor. Sipariş de önemli olabilir, bu yüzden durdurma ve bağımlılık sırasına göre başlamayı deneyin. Muhtemelen rpcbindson durağınız / ilk başlamanız olarak da yapmak istersiniz . Bu Debian daha önce yaptım, ama sadece bir güzel nfs-commonhizmet var.
Graeme

Yanıtlar:


5

@PaperMonkey'nin yorumlarda önerdiği gibi, sonsuza kadar yeniden denemeyi içeren varsayılan bağlama seçeneklerini kullandığınız için vidalanabilir.

intrEskiden kırık bir NFS montaj parçasına G / Ç üzerinde sıkışan şeyleri kesmeyi kolaylaştıracak bir yöntemdi, ama şimdi bu bir op-op değil. SIGKILLen azından nfs(5)iddia NFS üzerinde sıkışmış süreçleri hala kesebilir . Montaj seçenekleri için bu kılavuz sayfasına bakınız.

NFS'nin sonsuza dek yeniden denememesini istiyorsanız softvarsayılan yerine kullanın hard.

Ayrıca otomatik sayacı kullanmanızı öneririm. İsterseniz, bir yere / net / host / foo / bar'a sembolik bağlantılar yapın.

Genellikle bu sadece yeniden başlatma daha kolay, ama teoride mümkün olmalıdır düşünüyorum kill -9(yani kill -KILLNFS üzerinde sıkışmış) Herhangi süreçler. O zaman umount -f işe yarayabilir. Sekme tamamlamanın NFS montajında ​​daha fazla işlemin sıkışmasına izin vermemeye dikkat edin.


Teorik olarak, ama bu işlemleri asmak zaman bu süreçleri bulmak zor.
kmarsh

@kmarsh: Dps / top durumundaki herhangi bir işlem (Disk-sleep) muhtemelen NFS'de takılı kalır.
Peter Cordes

1
"Sabit" yerine "yumuşak" kullanılırken, NFS sunucusu geçici olarak kullanılamadığında veri kaybı olasılığı bulunduğunu lütfen unutmayın.
Marki555

4

RPM tabanlı dağıtımda bu sorunu gidermek için çalıştırılacak komutların listesi aşağıdadır.

service rpcbind stop
service nfslock stop
rm -rf /var/lib/nfs/statd/sm/*
rm -rf /var/lib/nfs/statd/sm.bak/*

Daha sonra:

umount -f /share

1

Kullanmak autofsgelecekte bu sorunun önlenmesine yardımcı olacaktır. En büyük yararı autofs, dizini kullanmaya çalışana kadar monte etmeye çalışmadığıdır, bu da kırık montaj noktalarından kaçınacağınız ve süresiz olarak monte etmeye çalışmadığı anlamına gelir, sökme için bir zaman aşımı süresi ayarlayabilirsiniz (normalde kısa). Automount'un bu taklit dönemi boyunca hiç denemediğinden emin değilim, ancak her iki şekilde de otomatik olarak zaman aşımı süresini yalnızca birkaç saniyeye ayarladım.

Eğer yeniden başlatmadan sorunu çözmek için olabilir ile elde etmek mümkün umount -a(bağlantısını kesmesine tüm / etc / fstab içinde belirtilen) mount -akaybettiğiniz rehberi ana dizini size' içermediği sürece (in / etc / fstab tüm montaj) ama ettik Başka bir yerde iş tasarrufu ve sadece yeniden önyükleme iyi.


0

Istemci üzerinde eski dosya sistemine başvuruları tutan işlemleri bulmak ve bu işlemleri öldürmek için lsof komutunun sonuçlarını kullanın.

umount -f / veri0

Sunucuya ping atabildiğinizden emin olun ve sürücüyü yeniden takın. İstediğiniz işlemleri yeniden başlatın.

Kümeler

Bir küme sunucusu kurulumu çalıştırırsanız, sunucunun her başarısız olması durumunda eski bir nfs dosya tanıtıcısı alırsınız. Bundan kaçınmak için fsid seçeneğini kullanarak dosya sistemlerinizi dışa aktarmalısınız. Fsid sayısı, iki sunucudaki ilgili her dosya sistemi için aynı olmalıdır. Dosyaların çoğaltılmasını sağlamak size kalmıştır. Aşağıdaki kılavuz sayfasından snippet'e bakın:

fsid = num | root | uuid NFS'nin dışa aktardığı her dosya sistemini tanımlayabilmesi gerekir. Normalde dosya sistemi için bir UUID (dosya sisteminde böyle bir şey varsa) veya dosya sistemini tutan cihazın aygıt numarası (dosya sistemi cihazda depolanmışsa) kullanılır. Tüm dosya sistemleri cihazlarda depolanmadığından ve tüm dosya sistemlerinde UUID bulunmadığından, bazen NFS'ye bir dosya sistemini nasıl tanımlayacağını açıkça söylemek gerekir. Bu fsid = seçeneğiyle yapılır.

NFSv4 için, dışa aktarılan tüm dosya sisteminin kökü olan seçkin bir dosya sistemi vardır. Bu fsid = root veya fsid = 0 ile belirtilir, her ikisi de tamamen aynı anlama gelir.

Diğer dosya sistemleri, küçük bir tamsayı veya 32 onaltılık basamak ve rastgele noktalama işareti içermesi gereken bir UUID ile tanımlanabilir.

Linux çekirdek sürüm 2.6.20 ve önceki sürümleri UUID ayarını anlamıyor, bu nedenle bu tür çekirdekler için bir fsid seçeneğinin ayarlanması gerekiyorsa küçük bir tamsayı kullanılmalıdır. Hem küçük hem de UUID ayarı desteklenir, böylece eski ve yeni çekirdekler üzerinde aynı yapılandırma yapılabilir.


Zaten asılı olduğunu söyledi.
kmarsh
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.