Apa cara yang lebih baik untuk menangani pemutusan server sshfs mounts?


58

Saya memiliki beberapa direktori yang diinstal melalui sshfs . Saya kadang-kadang mendapatkan terputus dari server (tidak dapat dikonfigurasi oleh saya). Saya biasanya memasang direktori seperti ini

sshfs user@server.example.com:/home/user /mnt/example

Ketika server terputus, subsistem sshfs tidak umount / membebaskan direktori tetapi justru menguncinya tidak dapat diakses. Mount masih terlihat saat mengetik mount. Saat saya mengetik

ls /mnt/example

proses terkunci (juga Ctrl+ ctidak membantu). Karena itu saya lakukan

sudo umount -l /mnt/example
# find pid of corresponding process:
ps aux | grep example.com
kill -9 <pid of locked sshfs process>

Apakah ada cara yang lebih baik untuk menghadapinya? Jelas sshfs harus melakukan umount dan membersihkan ... Idealnya itu akan terhubung kembali secara otomatis.



4
ada solusi menggunakan perangkat lunak terpelihara ?
Sebastian

Jawaban:


45

Anda dapat menjalankan sshfs dengan opsi "sambung kembali". Kami menggunakan sshfs dengan PAM / automount untuk berbagi file server untuk setiap workstation di jaringan kami. Kami menggunakan -o menyambung kembali sebagai parameter untuk sshfs, sebagian besar karena pengguna kami menangguhkan komputer mereka dan saat bangun sshfs tidak akan menyambung kembali (atau merespons, atau apa pun).

Sebagai contoh:

sshfs mvaldez@192.168.128.1:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

Sekadar catatan, jika komputer jarak jauh benar-benar mati, sshf mungkin menjadi tidak responsif untuk waktu yang lama.


11

Ini bisa diselesaikan dengan mengurangi batas waktu. Tambahkan yang berikut ke $HOME/.ssh/configatau /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Ini menghasilkan batas waktu 45 detik.


3
Ini hanya akan membantu jika masalahnya adalah kesalahan SSH. Ada masalah yang lebih besar yang sshfstidak menangani kematian sshproses yang mendasarinya dengan anggun.
bahamat

Memang ini hanya solusi dan harus diperbaiki di sshfs.
Thor

Tetapi hanya solusi yang berurusan dengan satu penyebab dari banyak. Masalahnya mungkin tidak ada hubungannya dengan keepalives. Sifat pertanyaannya kurang tentang penyebabnya dan lebih banyak tentang membersihkan hingga ke kondisi yang konsisten.
bahamat

5

Saya memiliki server yang saya gunakan untuk penyimpanan dan untuk beberapa kekurangan tempat tinggal saya, saya menyimpannya di lokasi lain. Untuk membawa file ke jaringan saya, saya menggunakan raspberry pi yang me-mount file dari server menggunakan sshfs.

Baru-baru ini saya harus meningkatkan ke jessie raspbian karena kegagalan daya dan menyadari bahwa sshf menjadi sangat tidak stabil. Folder akan dipasang dengan benar tetapi setelah beberapa waktu saya tidak akan dapat terhubung ke mereka dan pi raspberry akan membeku jika saya ingin membuat daftar isi mount.

Apa yang saya coba adalah:

  1. digunakan kembali di fstab
  2. menggunakan ServerAliveInterval dan ServerAliveCountMax dalam file .ssh / config tetapi tidak berhasil.
  3. solusi lain yang saya baca di sebagian besar forum.

tapi tidak ada dadu! Sampai saya memodifikasi file fstab sebagai berikut:

sshfs#user@server:/remote/folder /local/mount/dir fuse IdentityFile=sshkeyfile,Port=XXX,uid=1000,gid=1000,allow_other,_netdev,ServerAliveInterval=45,ServerAliveCountMax=2,reconnect,noatime,auto 0 0

Dan itu berhasil! Tidak ada lagi terputus! Saya sepertinya sshfs tidak membaca file konfigurasi ssh untuk beberapa alasan dan sinyal tetap hidup tidak pernah dikirim.


3

Ini terdengar seperti pekerjaan untuk autofs. Agak mahir dalam menangani pemasangan berbagai jenis jaringan (nfs, samba, sshfs, sebut saja) dan memperhatikan kapan hal-hal itu perlu dipasang kembali. Itu juga dapat mengatasi unmount mereka setelah periode tidak digunakan dan pemasangan mereka ketika permintaan sistem file dibuat.


11
autofs akan melakukan penghubungan saat diminta dan dapat melepas saat idle (yang mengurangi jendela waktu bermasalah), tetapi tidak akan membantu jika sshfs hang karena server telah terputus.
Gilles 'SANGAT berhenti menjadi jahat'

1

Jika masih ada orang yang menghadapi masalah ini, saya masih tidak bisa memperbaikinya. Saya memang menemukan solusi yang berhasil.

Script ruby ​​berikut melakukan trik. Itu membuat folder yang disebut "keepalive" berulang-ulang. Terus jalankan ini hingga tak terbatas.

$i =1 
$num =0
begin
    puts("Inside the loop i = #$i" )
    $i +=1
    puts 'creating obj'
    system 'mkdir  /{yourmountpoint}/keepalive'
    sleep 5
    puts 'we did it, it should be still alive'
end while $i > $num

Saya tidak tahu mengapa ini berhasil. Tapi sepertinya itu menyelesaikan masalah saya di mana saya tidak aktif selama satu menit dan semuanya membeku. Itu hanya mencoba untuk membuat folder pada titik pemasangan dan yang tampaknya membuatnya tidak memutuskan dan membekukan segalanya.


6
Nah, jika itu cocok untuk Anda, maka Anda tidak perlu skrip dan juru ruby. Satu baris akan bekerja dengan baik:while true; do mkdir -p /x/y; sleep 2; done
mivk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.