Sshfs माउंट के सर्वर डिस्कनेक्ट से निपटने का एक बेहतर तरीका क्या है?


58

मैं कई निर्देशिका sshfs के माध्यम से मुहिम शुरू की है । मैं कभी-कभी सर्वर से डिस्कनेक्ट हो जाता हूं (मेरे द्वारा कॉन्फ़िगर करने योग्य नहीं)। मैं आमतौर पर इस तरह निर्देशिकाओं को माउंट करता हूं

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

जब सर्वर डिस्कनेक्ट हो जाता है, तो sshfs सबसिस्टम निर्देशिका को umount / free नहीं करता है , बल्कि इसे दुर्गम को लॉक कर देता है। टाइप करने पर भी माउंट दिखाई देता है mount। जब मैं टाइप करता हूँ

ls /mnt/example

प्रक्रिया बंद हो जाती है (यह भी Ctrl+ cमदद नहीं करता है)। इसलिए करता हूं

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

क्या इससे निपटने का एक बेहतर तरीका है? जाहिर है sshfs को umount करना चाहिए और सफाई करनी चाहिए ... आदर्श रूप से यह स्वचालित रूप से पुन: कनेक्ट हो जाएगा।



4
बनाए रखा सॉफ्टवेयर का उपयोग कर किसी भी समाधान ?
सेबस्टियन

जवाबों:


45

आप "पुनः कनेक्ट" विकल्प के साथ sshfs चला सकते हैं। हम अपने नेटवर्क में प्रत्येक कार्य केंद्र के लिए सर्वर फ़ाइलों को साझा करने के लिए PAM / automount के साथ sshfs का उपयोग करते हैं। हम sshfs के पैरामीटर के रूप में पुन: कनेक्ट करते हैं, ज्यादातर क्योंकि हमारे उपयोगकर्ता अपने कंप्यूटर को निलंबित कर देते हैं और वेकेशन पर sshfs पुनः कनेक्ट नहीं होते (या प्रतिक्रिया, या कुछ भी)।

उदाहरण के लिए:

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

बस एक नोट, यदि दूरस्थ कंप्यूटर वास्तव में नीचे है, तो sshfs लंबे समय तक अनुत्तरदायी बन सकते हैं।


11

टाइमआउट को कम करके इसके आसपास काम किया जा सकता है। पर निम्नलिखित को जोड़ $HOME/.ssh/configया /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

इससे 45 सेकंड का समय समाप्त होता है।


3
यह केवल तभी मदद करेगा जब समस्या SSH की गलती हो। एक बड़ा मुद्दा यह sshfsहै कि अंतर्निहित sshप्रक्रिया की मौत के साथ इनायत से निपटना नहीं है ।
bahamat

वास्तव में यह केवल वर्कअराउंड है और इसे sshfs के अंदर तय किया जाना चाहिए।
थोर

लेकिन केवल एक वर्कअराउंड जो कई में से एक कारण से संबंधित है। उसकी समस्या का रख रखाव से कोई लेना-देना नहीं है। प्रश्न की प्रकृति कारण के बारे में कम है और एक सुसंगत स्थिति तक सफाई के बारे में अधिक है।
बहमट

5

मेरे पास एक सर्वर है जो मैं भंडारण के लिए उपयोग करता हूं और कुछ जगह की कमी के लिए जहां मैं रहता हूं, मैं इसे दूसरे स्थान पर रखता हूं। फ़ाइलों को अपने नेटवर्क में लाने के लिए मैं रास्पबेरी पाई का उपयोग करता हूं जो कि sshfs का उपयोग करके सर्वर से फ़ाइलों को माउंट करता है।

हाल ही में मुझे एक बिजली की विफलता के कारण रास्पियन जेसी में अपग्रेड करना पड़ा और महसूस किया कि sshfs गंभीर रूप से अस्थिर हो जाते हैं। फ़ोल्डरों को ठीक से माउंट किया जाएगा, लेकिन कुछ समय बाद मैं उनसे कनेक्ट नहीं कर पाऊंगा और अगर मैं माउंट्स की सामग्री को सूचीबद्ध करना चाहता हूं तो रास्पबेरी पाई फ्रीज हो जाएगी।

मैंने जो कोशिश की वह थी:

  1. उपयोग fstab में फिर से कनेक्ट
  2. ServerAliveInterval और ServerAliveCountMax का उपयोग .ssh / config फाइल में किया जाता है, लेकिन कोई फायदा नहीं हुआ।
  3. अन्य समाधान मैं ज्यादातर मंचों पर पढ़ा।

लेकिन कोई पासा नहीं! जब तक मैंने fstab फाइल को निम्नानुसार संशोधित नहीं किया है:

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

और यह काम करता है! कोई और अधिक डिस्कनेक्ट! मुझे लगता है कि sshfs किसी कारण से ssh config फाइल नहीं पढ़ता है और जीवित संकेतों को कभी नहीं भेजा जाता है।


3

यह ऑटोफोंस के लिए नौकरी जैसा लगता है। यह विभिन्न प्रकारों (nfs, सांबा, sshfs, आप इसे नाम देते हैं) के नेटवर्क माउंट्स को संभालने में निपुण है और जब उन चीजों को फिर से बढ़ते की आवश्यकता होती है, तब ध्यान देने योग्य। फाइल सिस्टम के अनुरोध के बाद, यह डिस्यूज़ करने की अवधि के बाद उन्हें अनमाउंट करने और उन्हें माउंट करने का भी ख्याल रख सकता है।


11
ऑटोफिक्स डिमांड पर कनेक्टिंग करेगा और बेकार होने पर (जो प्रॉब्लम टाइम विंडो को कम करता है) अनमाउंट कर सकता है, लेकिन अगर सर्वर डिस्कनेक्ट हो गया है तो यह मदद नहीं करेगा।
गाइल्स

1

यदि अभी भी इस समस्या का सामना कर रहे लोग हैं, तो मैं अभी भी इसे ठीक नहीं कर सका। मुझे काम करने का तरीका मिला।

निम्नलिखित रूबी स्क्रिप्ट ने चाल चली। यह एक फोल्डर बनाता है जिसे "कीपैलिव" कहा जाता है। अनंत तक बस इसे चलाते रहें।

$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

मुझे नहीं पता कि यह क्यों काम करता है। लेकिन यह मेरी समस्या को हल करने के लिए लगता है जहां मैं एक मिनट के लिए निष्क्रिय हूं और सब कुछ जम जाता है। यह सिर्फ बढ़ते बिंदु पर एक फ़ोल्डर बनाने की कोशिश करता है और जो इसे किसी भी तरह से सब कुछ डिस्कनेक्ट करने और ठंड से रखने के लिए लगता है।


6
ठीक है, अगर यह आपके लिए काम करता है, तो आपको एक स्क्रिप्ट और रूबी दुभाषिया की आवश्यकता नहीं है। एक एकल लाइन बस के रूप में अच्छी तरह से करना होगा:while true; do mkdir -p /x/y; sleep 2; done
एमवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.