Sshfs mount'ların sunucu bağlantılarının kesilmesi ile başa çıkmanın daha iyi bir yolu nedir?


58

Sshfs aracılığıyla monte edilmiş birkaç rehberim var . Bazen sunucuyla bağlantıyı keserim (benim tarafımdan yapılandırılamaz). Genelde böyle dizinleri bağlarım

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

Bir sunucu bağlantısı kesildiğinde, sshfs alt sistemi dizini bırakmaz / serbest bırakmaz , bunun yerine erişilemez duruma getirir. Yazarken dağı hala görünür mount. Yazdığımda

ls /mnt/example

işlem kilitlenir (ayrıca Ctrl+ cda yardımcı olmaz). Bu yüzden yapıyorum

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

Bununla baş etmenin daha iyi bir yolu var mı? Açıkçası sshfs yapmalıdır umount İdeal otomatik yeniden istiyoruz ... ve temizlemek.



4
bakımı yapılan yazılımı kullanan herhangi bir çözüm ?
Sebastian,

Yanıtlar:


45

Sshfs'i "reconnect" seçeneğiyle çalıştırabilirsiniz. Ağımızdaki her iş istasyonu için sunucu dosyalarını paylaşmak için sshfs ile PAM / automount kullanıyoruz. Sshfs parametresi olarak -o reconnect parametresini kullanırız, çünkü kullanıcılarımızın bilgisayarlarını askıya alması ve sshfs'nin yeniden bağlanmaması (veya yanıt vermemesi veya herhangi bir şey) nedeniyle.

Örneğin:

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

Sadece bir not, eğer uzaktaki bilgisayar gerçekten kapalıysa, sshfs uzun süre tepkisizleşebilir.


11

Bu, zaman aşımını azaltarak giderilebilir. Aşağıdakileri $HOME/.ssh/configveya altına ekleyin /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Bu 45 saniye zaman aşımı ile sonuçlanır.


3
Bu sadece sorun SSH'nin hatası ise yardımcı olacaktır. sshfsTemel sshsürecin ölümü ile incelikle ilgilenmeyen daha büyük bir sorun var .
bahamat

Aslında bu sadece bir geçici çözümdür ve sshfs içinde düzeltilmesi gerekir.
Thor

Ancak yalnızca bir tanesiyle ilgilenen bir geçici çözüm, çoğu kişiden kaynaklanmaktadır. Onun sorunu, idare ile ilgisi olmayabilir. Sorunun niteliği, neden hakkında daha az ve tutarlı bir duruma kadar temizlik hakkında daha fazladır.
bahamat

5

Depolama için kullandığım bir sunucum var ve yaşadığım yer yetersizliğinden dolayı başka bir yerde saklıyorum. Dosyaları ağıma getirmek için, dosyaları sunucudan sshfs kullanarak bağlayan bir ahududu pi kullanıyorum.

Geçenlerde elektrik kesintisi nedeniyle raspbian jessie'ye geçmek zorunda kaldım ve sshfs'nin ciddi derecede dengesiz hale geldiğini anladım. Klasörler düzgün bir şekilde monte edilecek, ancak bir süre sonra bağlantıların içeriğini listelemek istesem onlara bağlanamadım ve ahududu pi donacaktı.

Denedim ki:

  1. fstab’da yeniden bağlanma
  2. ServerAliveInterval ve ServerAliveCountMax'ı .ssh / config dosyasında kullandı, ancak boşuna.
  3. çoğu forumda okuduğum diğer çözümler.

ama zar yok! Fstab dosyasını şu şekilde değiştirinceye kadar:

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

Ve çalışıyor! Artık kopukluk yok! Görünüşe göre sshfs ssh config dosyasını herhangi bir sebepten okumuyor ve canlı tutma sinyalleri hiç gönderilmemiştir.


3

Bu autofs için bir iş gibi geliyor. Farklı türlerdeki ağ bağlantılarını (nfs, samba, sshfs, siz adlandırırsınız) kullanmada ve bu şeylerin ne zaman tekrar monte edilmeleri gerektiğine dikkat etmekte oldukça ustalık kazanır. Ayrıca, kullanım sürelerinin bitiminde sökülüp çıkarılması ve bir dosya sistemi talebi yapıldığında montajı da yapılabilir.


11
autofs isteğe bağlı olarak bağlanır ve boştayken (bu sorunlu zaman penceresini azaltır) bağlantıyı kesebilir, ancak sunucu bağlantısı kesildiği için sshfs kilitlendiğinde yardımcı olmaz.
Gilles 'SO- kötülük' dur

1

Bu sorunla hala karşılaşan insanlar varsa, hala çözemedim. Çalışan bir geçici çözüm buldum.

Aşağıdaki yakut senaryo hile yaptı. Bu defalarca "keepalive" adlı bir klasör oluşturur. Bunu sonsuza kadar sürdürmeye devam et.

$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

Bunun neden işe yaradığını bilmiyorum. Fakat bir dakikalığına hareketsiz kaldığım ve her şeyin dontuğu problemimi çözüyor gibi görünüyor. Sadece montaj noktasında bir klasör oluşturmaya çalışıyor ve bu da bir şekilde her şeyin bağlantısını kesmesine ve donmasına engel oluyor gibi görünüyor.


6
Peki, bu sizin için işe yararsa, o zaman bir senaryo ve yakut tercümana ihtiyacınız yoktur. Tek bir çizgi de while true; do mkdir -p /x/y; sleep 2; done
aynısını yapardı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.