Pisahkan unmount dari direktori yang dipasang NFS [ditutup]

163

Saya memiliki direktori yang dipasang NFS di mesin Linux yang telah hang. Saya sudah mencoba untuk memaksa unmount, tetapi sepertinya tidak berhasil:

$ umount -f /mnt/data
$ umount2: Device or resource busy
$ umount: /mnt/data: device is busy

Jika saya mengetik " mount", sepertinya direktori tidak lagi di-mount, tetapi hang jika " ls /mnt/data" saya lakukan , dan jika saya mencoba menghapus mountpoint, saya mendapatkan:

$ rmdir /mnt/data
rmdir: /mnt/data: Device or resource busy

Apakah ada yang bisa saya lakukan selain me-reboot mesin?

Lorin Hochstein
sumber
3
Saya setuju, siapa pun yang memilih untuk menutup ini sangat bingung. Masalah ini telah menjangkiti saya selama bertahun-tahun, dan jawaban di bawah ini, umount -l, untuk Linux, adalah solusi pertama yang saya temukan yang berhasil.
Lizardx
1
ok, tapi Anda bisa menemukannya di Super User. meskipun saya tidak melihat mengapa pertanyaan itu tidak dipindahkan, bukannya ditutup.
deeenes
Untuk umount --forceakan berusaha lebih keras untuk unmount dan -vatau -vvvbahkan akan mengungkapkan lebih apa masalah dengan me-mount. Jadi cobalah:umount -vvv --force /badmount
gaoithe
5
@deeenes Karena pertanyaan ini diajukan pada September 2008, dan Super User tidak diluncurkan hingga Juli 2009 ;-)
Martin Tournoij
@Carpetsmoker tetapi ditandai sebagai di luar topik pada tahun 2013
hintss

Jawaban:

254

Anda dapat mencoba unmount malas:

umount -l
tessein
sumber
3
Ini tidak diterapkan di mana-mana. Saya tidak memilikinya di FreeBSD, misalnya.
Daniel Papasian
28
@Aniel: tentu, tapi itu adalah pertanyaan Linux (ditandai seperti itu), dan Linux memang memilikinya.
Jürgen A. Erhard
5
Saya mencoba perintah ini di Ubuntu dan tidak berhasil.
Kieran Andrews
1
Ini bekerja untuk saya (Slackware 14.0). Saya memiliki mount CIFS, bukan NFS, yang menggantung semuanya (termasuk lsof). Saya menyebabkan masalah dengan memecahkan skrip cadangan yang saya tulis. Script mount dan unmount direktori, tetapi sesuatu tentang keluar dari rsyncme-mount kacau. Saya tidak tahu tentang unmount malas. Mungkin perangkat NAS yang menyebabkan semua masalah. Setelah berhasil melakukan unmount, ternyata saya harus me-reboot perangkat sebelum saya bisa memasangnya lagi.
padi
10
@KieranAndrews dan siapa pun di Ubuntu, coba fusermount -uz /path/to/file. Membuat pesona bagi saya! :)
Matt Fletcher
78

Jika server NFS menghilang dan Anda tidak bisa mendapatkannya kembali online, salah satu trik yang saya gunakan adalah menambahkan alias ke antarmuka dengan IP server NFS (dalam contoh ini, 192.0.2.55).

Linux

Perintah untuk itu kira-kira seperti:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Di mana 192.0.2.55 adalah IP dari server NFS yang hilang. Anda kemudian dapat melakukan ping alamat, dan Anda juga harus dapat meng-unmount sistem file (gunakan unmount -f). Anda kemudian harus menghancurkan antarmuka alias sehingga Anda tidak lagi merutekan lalu lintas ke server NFS lama dengan:

ifconfig eth0:fakenfs down

FreeBSD dan sistem operasi serupa

Perintahnya akan seperti:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

Dan kemudian untuk menghapusnya:

ifconfig em0 delete 192.0.2.55

man ifconfig (8) untuk lebih lanjut!

Daniel Papasian
sumber
5
Kombinasi ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'memecahkan masalah bagi saya.
Poin
1
saya juga, masalah unmount mencegah saya menangguhkan laptop saya, jadi solusi ini sangat berguna. Saya telah membuat skrip saya sendiri untuk diotomatisasi juga.
albfan
Jadi untuk menghapus alias dari Linux, apakah itu ifconfig eth0:fakenfs delete? Atau saya mencari yang lain? Suka ifconfig eth0 delete 192.0.2.55?
Ehtesh Choudhury
2
@ Shurane Di Linux, menghapus alias dengan ifconfig eth0:fakenfs downharus melakukan trik.
Sven
1
terima kasih, kerja yang luar biasa! dalam kasus saya server nfs kembali online dan masih tidak dapat menghitungnya, ini berhasil, cheers
nmirceac
20

Coba jalankan

lsof | grep /mnt/data

Itu harus mendaftar setiap proses yang mengakses / mnt / data yang akan mencegahnya tidak di-mount.

Ryan Ahearn
sumber
1
Sangat membantu, meskipun tidak sepenuhnya menyelamatkan saya. Tapi bermanfaat.
James T Snell
2
Ketika lsof hang selamanya, coba "lsof -b" (ada bug lsof yang direalisasikan ke NFS, lihat mis. Bugzilla.redhat.com/show_bug.cgi?id=962755 ).
dr0i
11

Saya memiliki masalah yang sama, dan tidak umount /path -f, tidak umount.nfs /path -f, tidak fuser -km /path, tidak berfungsi

akhirnya saya menemukan solusi sederhana>. <

sudo /etc/init.d/nfs-common restart, lalu mari kita lakukan yang sederhana umount;-)

Daniel N.
sumber
5
Bekerja untuk saya denganumount -f -l ...
mivk
Pada server ubuntu 14.04 saya harus sudo service nfs-kernel-server restart, tetapi jawaban Anda pasti membuat saya ke jalur yang benar, terima kasih!
Murmel
4

Server NFS Anda menghilang.

Idealnya, taruhan terbaik Anda adalah jika server NFS kembali.

Jika tidak, "umount -f" seharusnya melakukan trik. Itu tidak SELALU bekerja, tetapi seringkali akan berhasil.

Jika Anda mengetahui proses apa yang MENGGUNAKAN sistem file NFS, Anda bisa mencoba mematikan proses tersebut dan kemudian mungkin unmount akan berfungsi.

Akhirnya, saya kira Anda perlu reboot.

Juga, JANGAN lunak-mount drive NFS Anda. Anda menggunakan hard-mount untuk menjamin bahwa itu berfungsi. Itu perlu jika Anda sedang menulis.


sumber
Soft vs hard mounting tampaknya menjadi masalah use case. Ya, soft mount akan menyebabkan file saat ini sedang ditulis menjadi rusak jika server NFS turun karena beberapa alasan, dan mungkin karena itu tidak cocok dengan direktori sistem kritis, tetapi untuk drive dengan file tidak penting seperti musik dan film itu akan berfungsi baik baik saja.
zrajm
4

Tidak dapat menemukan jawaban yang berfungsi di sini; tetapi di linux Anda dapat menjalankan "umount.nfs4 / volume -f" dan itu benar-benar melepasnya.

Dave
sumber
4
Bukankah umount.nfs4 adalah subkomand untuk umount? Dengan kata lain, umount -f /some/mountpointsama dengan umount.nfs4 /some/mountpoint -f.
Ville
1
Menarik. Di sisi saya (setelah NFS-Server lenyap): umountpanggilan umount.nfs, hang selamanya (terlepas dari opsi). umount.nfs4 /mnt -fbutuh waktu cukup lama, tetapi selesai. umount.nfs4 /mnt -lselesai segera (mungkin karena tidak menunggu proses).
Tino