Hentikan mount NFS yang rusak dari mengunci suatu direktori?

17

Saya memiliki pengaturan yang agak menarik: Server dengan beberapa server NFS jarak jauh yang dipasang di folder, dengan folder itu kemudian diekspor kembali melalui Samba. Anggap saja sebagai proxy berbagi, simpan semua folder bersama di satu tempat.

Masalah saya adalah bahwa setiap kali salah satu mount turun (server restart, service restart, hard drive eksternal yang diekspor oleh server dihapus, dll) setiap upaya untuk membaca blok mount selamanya. Ini juga berarti bahwa menjalankan lsdirektori itu membeku dan pengguna yang terhubung melalui Samba juga membeku. Ini juga menyebabkan beberapa kali salah satu tugas cron saya memblokir yang hampir membuat server crash karena memiliki ratusan proses yang diblokir. Ini menjadi sangat menjengkelkan karena saya biasanya harus membuka terminal yang tidak menunggu untuk lsselesai (tidak dapat membatalkannya), jalankan for i in *; do sudo umount -l -f $i; done;, berharap itu berfungsi, perbaiki masalah, kemudian pasang kembali semuanya.

Apakah ada cara untuk me-mount berbagi NFS dengan ketentuan bahwa jika koneksi gagal karena alasan apa pun (lebih disukai dengan periode coba lagi) maka mount un-mount sendiri atau setidaknya tidak menghalangi?

TheLQ
sumber
Bisakah kamu memposting /etc/fstab?
Karlson

Jawaban:

19

Biasanya ketika memasang NFS itu adalah ide yang baik untuk mengatur flag yang serupa dengan ini:

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.

Anda juga dapat mengatur:

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

yang akan membuat NFS mount ke batas waktu dan membuat direktori tidak dapat diakses jika server NFS menjatuhkan koneksi daripada menunggu di coba lagi.

Lihatlah tautan ini untuk informasi lebih lanjut tentang opsi pemasangan NFS

Karlson
sumber
hanya menggunakan bg, intr, soft masih menyisakan 120 detik di Fedora 20. Tetapi menambahkan timeo = 5, retrans = 5, actimeo = 10, retry = 5 membuatnya bagus dan cepat. Terima kasih!
Greg Sheremeta
4
"Opsi pemasangan intr / nointr dihentikan setelah kernel 2.6.25. Hanya SIGKILL yang dapat menghentikan operasi NFS yang tertunda pada kernel ini, dan jika ditentukan, opsi pemasangan ini diabaikan untuk memberikan kompatibilitas mundur dengan kernel yang lebih tua." "Opsi ini disediakan untuk kompatibilitas ke belakang. Ini diabaikan setelah kernel 2.6.25."
David C. Bishop
1
@ DavidC.Bishop dari mana kutipan itu? Bisakah Anda memberikan tautan? Terima kasih.
becko
2
@becko: Kutipan SIGKILL berasal dari halaman manual nfs (cukup cari 'nointr'). Versi yang lebih baru, seperti yang ada di sistem saya sekarang cukup membaca "Opsi ini disediakan untuk kompatibilitas. Ini diabaikan setelah kernel 2.6.25." linky .
David C. Bishop