perangkat sshfs sedang sibuk

30

Saya memasang sistem file jarak jauh menggunakan sshfs (versi 2.8.4)

sshfs -o allow_root [email protected]: ./example

tapi melepasnya gagal

> fusermount -u example
umount: /home/joeuser/example: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

Adakah gagasan tentang apa yang mungkin menyebabkan kesalahan ini dan bagaimana seseorang memperbaikinya?

ctuffli
sumber

Jawaban:

14

Beberapa program menggunakan file di sistem file yang ingin Anda lepas. Ini bisa berupa file yang dibuka untuk membaca atau menulis, direktori saat ini, atau beberapa kasus yang tidak jelas. Bahkan bisa jadi karena direktori pada sistem file menjadi titik mount.

Untuk menyelidiki, jalankan lsof +f -- example. Ini akan memberi tahu proses apa yang menggunakan sistem file. Buat penilaian Anda sendiri apakah akan menutup file, membunuh mereka, atau menunda operasi unmount.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Anehnya, lsof tidak menunjukkan proses arsip gvfsd, yang tersisa karena membuka (dan menutup?) File arsip dari GUI pengelola file. Jadi, periksa juga ps aux | grep gvfsd-archive.
alexei
Memberi peringatan yang tidak dapat dieksekusi oleh lstat dan informasinya mungkin tidak lengkap, dan tidak mencantumkan pelakunya. Dalam kasus saya, saya memiliki terminal terbuka dengan direktori kerja di dalam yang terpasang.
Jānis Elmeris
36

Saya pikir Anda menginginkan unmount malas:

sudo umount -l example
Chris
sumber
1
Saya pikir saran Anda salah. Menurut umount halaman manual malas Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem *as soon as it is not busy* anymore. Jadi itu tidak akan menyelesaikan masalah aslinya. Setuju dengan @Gilles, lsofharus membantu di sini.
2
Sebenarnya, ini berhasil untuk saya. lsof tidak dapat menemukan file yang terbuka tetapi umount -lberfungsi.
gerrit
1
Solusi ini juga berhasil untuk saya!
Dan
1
Mengalami masalah yang sama dengan sshfs, ini bekerja untuk saya juga.
Orun
4

Saya baru saja mengalami masalah ini dan tidak dapat kill -9membaca dari sistem file yang dipasang. kill -9tidak bekerja bahkan setelah fusermount -zu /mount/pointatau umount -l /mount/point(yang berhasil). Satu-satunya hal yang berhasil adalah pkill -9 sshfs.

ctn
sumber
1
fusermount -zu /mount/pointbekerja untukku. Terima kasih!
ostrokach
3

Menjalankan Ubuntu, man fusermountmenceritakan tentang -zopsi, yang didokumentasikan sebagai "lazy unmount". Tampaknya terkait, tetapi perlu konfirmasi, yang diberikan oleh halaman manual ini: fusermount (man.he.net) , yang mengatakan "lazy unmount (berfungsi meskipun sumber daya masih sibuk)". Satu harus menggunakannya dengan yang -u, yang -zpilihan saja, akan menghasilkan kesalahan. Saya mencoba -zopsi, dan dapat mengonfirmasi itu melakukan trik, tetapi ini terlalu banyak terlihat seperti trik: apa fungsinya sebenarnya? Buat itu dilepas secara otomatis segera setelah direktori tidak lagi sibuk? Saya tidak tahu, tidak didokumentasikan, sangat tidak aman.

Jadi di sini ada pilihan lain, lebih bertele-tele, tetapi lebih aman: mencoba meng-unmount sampai berhasil, sebanyak waktu yang diperlukan, dalam satu lingkaran.

echo -n "Unmounting...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";

while [ "$OK" != "0" ]
do
   sleep 1;
   echo -n ".";
   fusermount -u -q "$MOUNT_POINT";
   OK="$?";
done

echo;

Ada umpan balik kemajuan minimal, sehingga orang tahu apa yang terjadi dan tidak percaya itu digantung.

Opsi ini dapat diterima dari skrip shell; untuk interaksi baris perintah, penggunaan -zopsi lebih praktis, tetapi orang mungkin harus menyadari halaman manual tidak mendokumentasikannya dan mungkin ada keraguan tentang apa yang sebenarnya dilakukannya.

Hibou57
sumber
2

Saya sering melihat "perangkat sibuk" dengan sshfs ketika saya memiliki jendela terminal terbuka ke direktori di bagian sshfs. Keluar dari terminal atau mengubah direktori ke share lokal kemudian menjalankan fusermount -u memecahkan masalah saya.

CJ Travis
sumber
1

Pada OS X coba:

diskutil unmount force /mount/point
ReaperSoon
sumber
1

Jika Anda sudah memastikan tidak ada proses masih menggunakan sistem file sebelum mencoba umounting "biasa":

  • fuser -vm /mount/point dan / atau
  • lsof /mount/point untuk menemukan mereka,
  • keluar / bunuh / do_something_with_them sehingga mereka tidak digunakan /mount/pointlagi,

Mencoba:

  • pkill -KILL sshfs lalu
  • fusermount -u /mount/point.

Ini membantu saya ketika saya kehilangan koneksi jaringan dan tidak bisa menghitung mount point sshfs yang tidak responsif.

Juga, jika Anda ingin sshfs secara otomatis melakukan umount ketika koneksi jaringan terputus, memberi tahu aplikasi menggunakan sshfs dari kesalahan I / O (sehingga mereka tidak terhenti tanpa batas), pasang dengan:

  • sshfs -o ServerAliveInterval=15 remote-srv:/remote/dir /local/mountpoint

Ketika tidak ada data yang dipertukarkan, sshklien Anda akan memeriksa setiap 15 detik jika bisa mendapatkan respons dari server. Jika 3 pemeriksaan gagal, itu akan memutuskan dan umount.

Totor
sumber