Saya telah bekerja di server saya, dari mana saya mengekspor satu direktori menggunakan NFS. Tentu saja selama seminggu atau lebih dari server reboot, saya berkali-kali lupa dengan umount
sistem file ekspor di workstation saya (yang akan di-mount dari /etc/fstab
saat boot). Di sela-sela saya bisa umount
setelah fakta dan remount (saya tidak menggunakan autofs
):
umount -fl /data0
mount /data0
Tetapi ini tidak lagi berhasil.
Saya tidak bisa me-mount direktori yang diekspor dari server pada direktori yang berbeda (mount hang), tapi saya bisa nfs me-mount direktori yang diekspor pada mesin virtual yang berjalan di workstation saya.
Apa yang saya coba adalah menghapus ( rmmod
) modul nfs
dan nfsv3
(yang tidak akan berhasil Resource temporarily unavailable
:). lsof
hang. mount
tidak menunjukkan apa pun yang dipasang melalui nfs
. Ini semua mungkin hasil dari menggunakan 'umount-l' beberapa kali, tetapi dua kali pertama ini berhasil tanpa masalah.
Saya telah me-restart server untuk sementara waktu, setelah tidak dapat me-mount tanpa ada bedanya. Saya juga menggunakan service nfs-kernel-server restart
. Saya curiga semuanya akan kembali normal jika saya me-restart workstation klien.
Apakah ada cara untuk memulihkan dari ini dan menginisialisasi ulang sisi klien nfs di workstation saya tanpa reboot?
Jika saya tidak bisa memperbaiki ini tanpa reboot, apakah ini tidak akan terjadi lagi jika saya mulai menggunakan autofs
?
lsof -b
digantung dengan baris terakhir:
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.
di baris sebelumnya, tidak ada /data0
.
Entri di /etc/fstab
:
192.168.0.2:/data0 /data0 nfs defaults,auto,nolock,user 0 2
lsof -b
digantung?upstart
dan semua. Anda mungkin ingin me-restart semua layanan dalamnfs-common
paket, sepertinya ada beberapa. Pesan kemungkinan juga penting, jadi cobalah berhenti kemudian mulai dengan urutan ketergantungan. Anda mungkin juga ingin melakukanrpcbind
sebagai perhentian terakhir / awal pertama Anda. Saya telah melakukan ini sebelumnya di Debian, tetapi hanya memiliki satunfs-common
layanan yang bagus .Jawaban:
Seperti yang disarankan @PaperMonkey dalam komentar, Anda mungkin kacau karena Anda menggunakan opsi pemasangan default, yang termasuk mencoba ulang selamanya.
intr
Dulu cara untuk membuatnya lebih mudah untuk mengganggu hal-hal yang terjebak pada I / O ke mount NFS yang rusak, tapi sekarang itu adalah no-op.SIGKILL
masih bisa mengganggu proses macet di NFS, setidaknya begitunfs(5)
klaim. Lihat halaman manual itu untuk opsi pemasangan.Gunakan
soft
sebagai ganti defaulthard
jika Anda ingin NFS tidak mencoba lagi selamanya.Saya juga merekomendasikan menggunakan automounter. Buat symlink ke / net / host / foo / bar di suatu tempat, jika Anda mau.
Seringkali lebih mudah untuk hanya reboot, tapi saya pikir secara teori Anda harus dapat
kill -9
(yaitukill -KILL
) proses yang macet di NFS. MAKA umount -f mungkin bekerja. Berhati-hatilah untuk tidak membiarkan penyelesaian-tab macet lebih banyak proses pada NFS mount.sumber
D
(Disk-sleep) di ps / top mungkin macet di NFS.Di bawah ini adalah daftar perintah yang harus dijalankan untuk memperbaiki masalah ini pada distro berbasis RPM.
Setelah itu:
sumber
Menggunakan
autofs
akan membantu menghindari masalah ini di masa mendatang. Manfaat terbesarautofs
adalah tidak mencoba me-mount direktori sampai Anda mencoba menggunakannya, ini berarti Anda menghindari titik-titik mount yang rusak dan itu tidak akan mencoba untuk me-mount tanpa batas, Anda dapat mengatur periode batas waktu untuk unmount (yang biasanya pendek). Saya tidak yakin apakah automount mencoba ulang sama sekali selama periode pretimout ini, tapi bagaimanapun saya biasanya mengatur batas waktu automount menjadi hanya beberapa detik.Untuk menyelesaikan masalah tanpa memulai ulang, Anda mungkin dapat bertahan dengan
umount -a
(unmount semua yang disebutkan di / etc / fstab)mount -a
(mount semua di / etc / fstab) tapi saya sudah kecuali direktori yang hilang berisi direktori home you ' lebih baik menyimpan pekerjaan di tempat lain dan hanya me-reboot.sumber
Gunakan hasil dari perintah lsof untuk menemukan proses pada klien yang memegang referensi ke sistem file basi dan membunuh proses-proses tersebut.
umount -f / data0
pastikan Anda dapat melakukan ping ke server kemudian memasang kembali drive. Mulai ulang proses yang diinginkan.
Cluster
Catatan, jika Anda menjalankan pengaturan server cluster Anda akan mendapatkan file basi nfs basi setiap kali server harus gagal. Untuk menghindari itu, Anda harus mengekspor sistem file Anda menggunakan opsi fsid. Jumlah untuk fsid harus sama untuk setiap sistem file masing-masing pada dua server. Terserah Anda untuk memastikan replikasi file terjadi. Lihat cuplikan dari halaman manual di bawah ini:
fsid = num | root | uuid NFS harus dapat mengidentifikasi setiap sistem file yang diekspornya. Biasanya ia akan menggunakan UUID untuk sistem file (jika sistem file memiliki hal seperti itu) atau nomor perangkat perangkat yang memegang sistem file (jika sistem file disimpan pada perangkat). Karena tidak semua sistem file disimpan di perangkat, dan tidak semua sistem file memiliki UUID, terkadang perlu secara eksplisit memberi tahu NFS cara mengidentifikasi sistem file. Ini dilakukan dengan opsi fsid =.
Untuk NFSv4, ada sistem file yang dibedakan yang merupakan akar dari semua sistem file yang diekspor. Ini ditentukan dengan fsid = root atau fsid = 0 yang keduanya berarti hal yang persis sama.
Sistem file lain dapat diidentifikasi dengan integer kecil, atau UUID yang harus berisi 32 digit hex dan tanda baca sewenang-wenang.
Kernel Linux versi 2.6.20 dan sebelumnya tidak memahami pengaturan UUID sehingga integer kecil harus digunakan jika opsi fsid perlu diatur untuk kernel tersebut. Pengaturan sejumlah kecil dan UUID didukung sehingga konfigurasi yang sama dapat dibuat untuk bekerja pada kernel lama dan baru.
sumber