Bagaimana Anda memaksa koneksi CIFS untuk dilepas

149

Saya memiliki saham CIFS yang dipasang di mesin Linux. Server CIFS sedang down, atau koneksi internet terputus, dan apa pun yang menyentuh mount CIFS sekarang membutuhkan waktu beberapa menit untuk habis, dan tidak dapat digunakan saat Anda menunggu. Saya bahkan tidak dapat menjalankan ls di direktori home saya karena ada symlink yang menunjuk di dalam mount CIFS dan ls mencoba mengikutinya untuk memutuskan warna apa yang seharusnya. Jika saya mencoba umount (bahkan dengan -fl), proses umount hang seperti yang dilakukan ls. Bahkan sudo kill -9 tidak bisa membunuhnya. Bagaimana saya bisa memaksa kernel untuk meng-unmount?

smoofra
sumber

Jawaban:

186

Saya menggunakan unmount malas: umount -l(itu huruf kecil L)

Malas lepas. Lepaskan filesystem dari hirarki filesystem sekarang, dan bersihkan semua referensi ke filesystem segera setelah tidak lagi sibuk. (Membutuhkan kernel 2.4.11 atau lebih baru.)

Kemal
sumber
42
Ini tidak bekerja untuk saya pada awalnya. Setelah bereksperimen sementara (di terminal virtual baru setiap kali) saya datang dengan ini: sudo umount -a -t cifs -l. Entah ini yang berhasil, atau umount pertama membutuhkan waktu (120-an? 300-an?) Untuk selesai. Saya mendapat banyak peringatan tentang umount yang diblokir selama lebih dari 120 detik.
Peter Jaric
2
Dan kemudian aku harus membunuh semua umount yang menggantung sebelum aku bisa me-mount lagi.
Peter Jaric
13
Saya juga perlu sudo umount -a -t cifs -l membuatnya bekerja.
Joma
4
Ini tidak berhasil untuk saya. Saya mencoba segala sesuatu yang lain di atas dan cifs mount menghilang dari daftar / etc / mtab saya tetapi tidak dapat di-remount, jadi ini tidak berguna. Cifs mount macet ketika komputer saya menangguhkan dirinya sendiri saat cifs di-mount.
DH4
Saya setuju, umount -a -t cifs -l adalah apa yang saya butuhkan juga untuk melewati "Host is Down" yang ditakuti thx.
Pooch
70

umount -a -t cifs -l

bekerja seperti pesona bagi saya di CentOS 6.3. Ini menyelamatkan saya dari reboot server.

ivanlan
sumber
8
Apakah Anda keberatan untuk menguraikan apa -adan -lswitch itu dan bagaimana mereka membantu?
Isaac
10
-a dan -t cif melepaskan semua sistem file cifs. lebih baik untuk menentukan yang ingin Anda
lepas
2
Ini sempurna jika Anda dipasang melalui peramban file dan Anda tidak dapat menemukan titik pemasangan yang menyinggung - asalkan Anda tidak keberatan melonggarkan semuanya!
bijak
1
Terima kasih, ini menghemat banyak waktu hari ini!
agam
13

Pada RHEL 6 ini berfungsi:

umount -f -a -t cifs -l 
Andy Fraley
sumber
Ini berhasil, harus menunggu 30 menit penuh (batas waktu) sebelum saya bisa melakukan remount. Mungkin yang terbaik untuk melakukan soft mount seperti yang ditunjukkan jnice.
XMAN
11

Ini berfungsi untuk saya (Desktop Ubuntu 13.10 ke Server Ubuntu 14.04): -

 sudo umount -f /mnt/my_share

Dipasang dengan

 sudo mount -t cifs -o username=me,password=mine //192.168.0.111/serv_share /mnt/my_share

di mana serv_share diatur dan diarahkan ke file smb.conf.

Phil Johnson
sumber
6

Saya memiliki masalah ini selama sehari sampai saya menemukan resolusi yang sebenarnya. Alih-alih mencoba memaksa unmount share seseorang yang digantung, pasang share dengan opsi "soft". Jika suatu proses mencoba untuk terhubung ke share yang tidak tersedia itu akan berhenti mencoba setelah beberapa waktu.

lembut. Pasang soft mount. Panggilan sistem file gagal setelah beberapa detik.

mount -t smbfs -o soft //username@server/share /users/username/smb/share

stat /users/username/smb/share/file
stat: /users/username/smb/share/file: stat: Operation timed out

Mungkin bukan jawaban nyata untuk pertanyaan Anda tetapi ini adalah solusi untuk masalah tersebut

jnice
sumber
19
Jika Anda melihat man mount.cifsAnda akan melihat bahwa softitu sebenarnya adalah default.
Benj
2

Coba umount -f / mnt / bagikan. Bekerja dengan NFS, tidak pernah mencoba dengan cifs.

Juga, lihat autofs, ia akan me-mount share hanya ketika diakses, dan akan melepasnya setelah akhirat.

Ada tutorial yang bagus di www.howtoforge.net

Sunny Milenov
sumber
5
sayangnya -f tidak bekerja dengan CIFS. umount masih hang.
smoofra
2

Saya punya masalah yang sangat mirip dengan davfs. Di halaman manual umount.davfs, saya menemukan bahwa -f -l -n -r -vopsi diabaikan oleh umount.davfs. Untuk memaksa-unmount mount davfs saya, saya harus menggunakan umount -i -f -l /media/davmount.

Benedikt Köppel
sumber
1

Ada opsi -f untuk umount yang dapat Anda coba:

umount -f /mnt/fileshare

Apakah Anda menentukan opsi '-t cifs' untuk dipasang? Pastikan juga Anda tidak menentukan opsi 'sulit' untuk dipasang.

Anda mungkin juga ingin mempertimbangkan fusesmb , karena sistem file akan berjalan di userspace Anda dapat membunuhnya sama seperti proses lainnya.

Chris AtLee
sumber
4
-f dan -t tidak membantu, umount masih hang.
smoofra
Sudahkah Anda me-reboot sejak menambahkan opsi '-t cifs' untuk melakukan mount? Saya tidak berpikir ada yang bisa Anda lakukan untuk memperbaiki titik macet Anda saat ini, satu-satunya harapan Anda adalah mencoba dan memasangnya dengan cara yang lebih tahan terhadap kegagalan di masa depan.
Chris AtLee
1
umount -f -t cifs -l /mnt &

Hati-hati &, biarkan umountlari di latar belakang. umountakan melepaskan sistem file terlebih dahulu, sehingga Anda tidak akan menemukan apa-apa /mnt. Jika Anda menjalankan dfperintah, maka itu akan umount /mntsecara paksa.

zhjb7
sumber
-2

Pada RHEL 6 ini juga berfungsi untuk saya:

umount -f -a -t cifs -l FOLDER_NAME

chataros
sumber
-8

Unmount malas akan melakukan pekerjaan untuk Anda.

umount -l <mount path>
JimmyPheonix
sumber