सवाल एसएसएचएफएस माउंट जो डिस्कनेक्ट से बचता है


मैं उपयोग कर रहा हूँ sshfs मेरे लैपटॉप से ​​केंद्रीय सर्वर पर माउंट करता है।

जाहिर है, एसएसएचएफएस माउंट एक लंबे डिस्कनेक्ट (उदाहरण के लिए निलंबन के दौरान) के बाद टूटा हुआ है, जिसके कारण अंतर्निहित एसएसएच कनेक्शन का समय समाप्त हो गया है।

एसएसएचएफएस माउंट्स लंबे समय तक स्थायी डिस्कनेक्शन (> 5 मिनट) या यहां तक ​​कि एक अलग आईपी के साथ एक पुनः डायलिन जीवित रहने का कोई तरीका है?


43
2018-05-09 22:27


मूल




जवाब:


Autossh और autofs की युक्तियों के लिए धन्यवाद।

हालांकि, मेरे प्रत्यक्ष उद्देश्य के लिए मुझे एक बहुत ही सरल समाधान मिला जो बहुत अच्छी तरह से प्रलेखित नहीं किया गया था:

sshfs पुनः कनेक्ट करें server:/path/to/mount

46
2018-05-10 21:04



मिठाई! यह मुझे सचमुच प्रमाणीकरण पर लिखना चाहता है: serverfault.com/q/379728/96905 - Jeff Burdges


उपयोग -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

मेल ServerAliveInterval=15,ServerAliveCountMax=3 नेटवर्क आउटेज के एक मिनट के बाद I / O त्रुटियों को पॉप आउट करने का कारण बनता है। यह महत्वपूर्ण है लेकिन काफी हद तक अनियंत्रित है। अगर ServerAliveInterval विकल्प डिफ़ॉल्ट रूप से छोड़ा जाता है (इसलिए जिंदा जांच के बिना), एसएसएफएस के बाद भी, I / O लटकने का अनुभव अनिश्चित काल तक सो जाता है reconnect'ईडी। मैं इसे एक बेकार व्यवहार मानता हूं।

दूसरे शब्दों में क्या होता है -o reconnect असाइन किए बिना ServerAliveInterval यह है कि कोई भी I / O या तो सफल होगा, या एसएसएच फिर से कनेक्ट होने पर एप्लिकेशन को अनिश्चित काल तक लटका देगा। परिणामस्वरूप एक सामान्य आवेदन पूरी तरह से लटका दिया जाता है। यदि आप I / O को एक त्रुटि वापस करने और एप्लिकेशन को फिर से शुरू करने की अनुमति देना चाहते हैं, तो आपको इसकी आवश्यकता है ServerAliveInterval=1 और अधिक से अधिक।

ServerAliveCountMax=3 वैसे भी डिफ़ॉल्ट है, लेकिन मैं इसे पठनीयता के लिए निर्दिष्ट करना चाहता हूं।


43
2017-10-26 14:11



यह मेरे लिए बना दिया। इसके अलावा आप एक छोटे अंतराल का उपयोग कर सकते हैं, afaik यह बहुत अधिक परेशानी का कारण नहीं बनना चाहिए और पूरी चीज को और अधिक उत्तरदायी बनाता है। - Manux
मैंने दस्तावेज़ों को नहीं पढ़ा, लेकिन मैंने एक और समाधान देखा "ServerAliveCountMax = 0" का अर्थ है कि यह अनिश्चित काल तक प्रयास करेगा। मुझे लगता है कि आपका समाधान प्रत्येक विफलता के बाद 3 रिट्री देता है? - PJ Brunet
@PJBrunet man 5 ssh_config अधिक जानकारी के लिए, लेकिन यह बात यह है कि प्रत्येक 15 सेकंड एसएसएच प्रत्येक 15 सेकंड में 'रख-रखाव' पिंग की तरह कुछ भेज देगा ताकि यह सुनिश्चित किया जा सके कि कंप्यूटर अभी भी एक-दूसरे का जवाब दे रहे हैं। यदि लगातार तीन पिंग विफल हो जाते हैं (45 सेकंड), पुनः कनेक्ट करें। - Wyatt8740
@ Wyatt8740 मैंने इस पर अध्ययन किया और दस्तावेज पढ़ा, मुझे विश्वास है ServerAliveCountMax=3 एक अलग अर्थ है। यदि कोई विफलता है, तो यह 3 बार फिर से कनेक्ट करने का प्रयास करेगा और फिर छोड़ देगा। कुछ बिंदु पर पुनः प्रयास करना व्यर्थ है, लेकिन यह एप्लिकेशन पर निर्भर करता है। फिर फिर, मुझे लगता है कि मैन पेज अधिक विशिष्ट हो सकता है, आईएमओ शब्द के तरीके की व्याख्या करने के विभिन्न तरीके हैं। एफडब्ल्यूआईडब्ल्यू प्रोटॉन वीपीएन पर स्विच करने के बाद मेरी विशिष्ट समस्या चली गई। मुझे लगता है कि क्लाइंट और सर्वर पर एसएसएच कॉन्फ़िगरेशन की जांच करने के लायक भी है, उनके पास अलग-अलग विकल्प हैं, इसलिए आपको वास्तव में आवश्यकता है -o reconnect - PJ Brunet
@PJBrunet उत्तर में वास्तविक कारण बताया गया है लेकिन बड़े पैमाने पर अनियंत्रित: "इन विकल्पों के बिना [सर्वरअलीवइंटरवाल], एसएसएफएस पुनः कनेक्ट होने के बाद भी, I / O लटका अनुभव करने वाली प्रक्रियाएं अनिश्चित काल तक सोती हैं। मैं इसे और भी स्पष्ट करने के लिए थोड़ा सा जवाब दे रहा हूं। आप सही हैं - ServerAliveCountMax = 3 डिफ़ॉल्ट इसलिए अनावश्यक है। - kubanczyk


Autossh एसएसएच सत्रों को स्वचालित रूप से फिर से जोड़ता है जब यह नोटिस करता है कि एसएसएच की मृत्यु हो गई है या यातायात गुजरना बंद कर दिया गया है। चूंकि यह केवल स्वचालित एसएसएच है, यह विभिन्न आईपी से और निलंबन से काम करेगा (भले ही लैपटॉप एक अलग लैन पर उठता हो)।


11
2018-05-09 23:30



शायद mosh एक इंटरैक्टिव एसएसएच सत्र के लिए भी बेहतर है। - Martin Ueding
@MartinUeding मैंने मोश को देखा लेकिन ए) sshfs b के साथ काम नहीं करता है) ऐसा प्रतीत होता है कि आपको इसे सर्वर पर भी स्थापित करने की आवश्यकता है, जो इसे कम आकर्षक बनाता है, आईएमओ। - PJ Brunet


एक चीज जो आप कर सकते हैं वह आपके फाइल सिस्टम को माउंट कर रहा है autofs। ऑटॉफ एक ऐसा टूल है जो फाइल सिस्टम को माउंट करेगा जब आप उस निर्देशिका में कुछ उपयोग करने के लिए करेंगे जिसे फाइल सिस्टम पर रखा जाएगा। जब यह गतिविधि का पता लगाता है तो फाइल सिस्टम को घुमाया जाता है। जब फाइल सिस्टम पर कुछ भी नहीं हो रहा है तो यह अनमाउंट किया जाता है।

यहां है कैसे मैंने इसे पूरा करने के लिए Google पर पाया, वहां कई अन्य लोग हैं।


8
2018-05-10 00:24





मुझे संदेह है कि ऐसा नहीं है, क्योंकि यदि आप अपने एसएसएच क्लाइंट को कनेक्शन ड्रॉप न करने के लिए कॉन्फ़िगर कर सकते हैं, तो सर्वर को निष्क्रियता की निर्दिष्ट अवधि के बाद ऐसा करने के लिए कॉन्फ़िगर किया जा सकता है, और आप इसे ओवरराइड करने में सक्षम नहीं होंगे। यहां तक ​​कि यदि आप कर सकते हैं, यदि आप कभी भी कनेक्शन को फिर से शुरू नहीं करते हैं, तो सर्वर को लटका दिया जाएगा, और समय के साथ जो सर्वर संसाधनों का एक महत्वपूर्ण अपशिष्ट हो सकता है।

मुझे लगता है कि एक बेहतर तकनीक, आपके कंप्यूटर को निलंबित करने से पहले फाइल सिस्टम को अनमाउंट करना है और जब कंप्यूटर फिर से उठता है तो इसे पुन: प्राप्त करें। ऐसा करने के लिए तंत्र इस बात पर निर्भर हो सकता है कि आप अपने कंप्यूटर को कैसे निलंबित करते हैं - मैं टक्सोनिस कर्नेल का उपयोग करता हूं और ऐसा कुछ करने के लिए मेरे पास निर्देश है

Unmount /mnt/sshfs

में /etc/hibernate/common.conf


2
2018-05-09 23:16