sshfs की तुलना में दूरस्थ फ़ाइल सिस्टम माउंट करने का तेज़ तरीका?


72

मैं दूरस्थ रूप से काम करने के लिए sshfs का उपयोग कर रहा हूं, लेकिन यह वास्तव में धीमा और कष्टप्रद है, खासकर जब मैं इस पर ग्रहण का उपयोग करता हूं।

क्या स्थानीय फ़ाइल सिस्टम को स्थानीय रूप से माउंट करने का कोई तेज़ तरीका है? मेरी नंबर 1 प्राथमिकता गति है।

रिमोट मशीन फेडोरा 15 है, स्थानीय मशीन उबंटू 10.10 है। यदि आवश्यक हो तो मैं स्थानीय रूप से भी Windows XP का उपयोग कर सकता हूं।

जवाबों:


14

sshfs SSH फ़ाइल स्थानांतरण प्रोटोकॉल का उपयोग कर रहा है, जिसका अर्थ है एन्क्रिप्शन।

यदि आप एनएफएस के माध्यम से बस माउंट करते हैं, तो यह निश्चित रूप से तेज़ है, क्योंकि एन्क्रिप्ट नहीं किया गया है।

क्या आप एक ही नेटवर्क पर वॉल्यूम माउंट करने की कोशिश कर रहे हैं ? तो NFS का उपयोग करें


35
यह एन्क्रिप्शन के कारण धीमा नहीं है, यह धीमा है क्योंकि यह FUSE है और यह फ़ाइल सिस्टम स्थिति की जाँच करता रहता है।
w00t

3
@ w00t मुझे नहीं लगता कि यह FUSE इसे धीमा कर रहा है, और एन्क्रिप्शन नहीं। एन्क्रिप्शन को आर्कफॉर में बदलना मेरे लिए इसे बढ़ा देता है, जबकि उपयोग करना scpउतना ही धीमा था sshfs
स्पार्कवॉक

21
@ श्रावक थ्रूपुट और विलंबता के बीच एक अंतर है। FUSE आपको बहुत अधिक विलंबता देता है, क्योंकि इसमें कुछ अकुशल साधनों का उपयोग करके फाइलसिस्टम स्थिति की जांच करनी होती है। arcfour आपको अच्छा थ्रूपुट देता है क्योंकि एन्क्रिप्शन सरल है। इस मामले में विलंबता सबसे महत्वपूर्ण है क्योंकि यही कारण है कि संपादक को लिस्टिंग और फ़ाइलों को लोड करने में धीमी गति से होता है।
w00t

3
@ w00t। आह ठीक है। अच्छे अंक।
स्परहॉक

41

यदि आपको sshfs कनेक्शन की गति में सुधार करने की आवश्यकता है, तो इन विकल्पों को आज़माएँ:

oauto_cache,reconnect,defer_permissions,noappledouble,nolocalcaches,no_readahead

कमांड होगी:

sshfs remote:/path/to/folder local -oauto_cache,reconnect,defer_permissions

1
धन्यवाद, मेरे लिए काम किया! defer_permissionsहालांकि (अज्ञात विकल्प) को हटाना पड़ा ।
मैथ्यू रोडिक

4
हर ऑपरेशन को देखने के लिए मजबूर करने से प्रदर्शन में nolocalcaches कमी नहीं होगी ? क्या यह विरोधाभास है ? auto_cache
EarthmeLon

2
नोलोकैचेस और डेफेर_स्पर्मिशन डेबियन जेसी पर मान्य (अब और?) नहीं लगते हैं।
किसी ने

4
क्यों no_readahead?
स्टूडियोज

1
"Oauto_cache" से आपका क्या तात्पर्य है?
मैनुएल श्नाइड 3r

18

सांबा / एनएफएस के उपयोग के पहले से ही प्रस्तावित समाधानों के अलावा, जो पूरी तरह से मान्य हैं, आप sshfsतेज एन्क्रिप्शन का उपयोग करके कुछ गति को बढ़ावा देने के साथ चिपके हुए भी प्राप्त कर सकते हैं (प्रमाणीकरण हमेशा की तरह सुरक्षित होगा, लेकिन आपूर्ति किए गए डेटा को स्थानांतरित करके -o Ciphers=arcfourविकल्प की आपूर्ति करना आसान होगा) को sshfs। यह विशेष रूप से उपयोगी है यदि आपकी मशीन में कमजोर सीपीयू है।


-oCipher=arcfourयादृच्छिक डेटा से निर्मित 141 एमबी फ़ाइल के साथ मेरे परीक्षणों में कोई अंतर नहीं आया।
स्पर्हॉक

6
ऐसा इसलिए है क्योंकि कमांड में कई टाइपो थे। मैंने इसे संपादित किया है। मैंने अपने रास्पबेरी पाई सर्वर से 15% स्पीडअप देखा। (+1)
स्पार्कवॉक

4
Chacha20-poly1305@openssh.com सिफर भी विचार करने लायक एक विकल्प है जो अब आर्कफोर अप्रचलित है। चाचा20 एआरएस की तुलना में एआरएम प्रोसेसर पर तेज है लेकिन एईएस निर्देशों के साथ x86 प्रोसेसर पर बहुत खराब है (जो कि सभी आधुनिक डेस्कटॉप सीपीयू इन दिनों मानक के रूप में हैं)। klingt.net/blog/ssh-cipher-performance-comparision आप "ssh
q

11

मेरे पास सिफारिश करने के लिए कोई विकल्प नहीं है, लेकिन मैं कैसे sshfs को तेज करने के लिए सुझाव प्रदान कर सकता हूं:

sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...

जब आप पहले से ही अपने सत्र में पुनर्प्राप्त की गई फ़ाइलों के लिए सामग्री या अनुमतियों को पढ़ने का प्रयास कर रहे हैं, तो आपको कुछ दौर की यात्रा अनुरोधों से बचना चाहिए।

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

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

यहां कुछ और विकल्प दिए गए हैं, जिनके साथ मैंने प्रयोग किया है, हालांकि मुझे यकीन नहीं है कि उनमें से किसी ने मतभेद किया है:

sshfs_opts="-o auto_cache -o cache_timeout=115200 -o attr_timeout=115200   \
-o entry_timeout=1200 -o max_readahead=90000 -o large_read -o big_writes   \
-o no_remote_lock"

आपको उसके जवाब में मीताई द्वारा सुझाए गए विकल्पों की भी जांच करनी चाहिए ।

प्रत्यावर्तन

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

समानांतर में कई फ़ोल्डरों के लिए अनुरोध करने से इसके साथ मदद मिल सकती है, लेकिन अधिकांश ऐप ऐसा नहीं करते हैं: वे कम-विलंबता वाले फाइल सिस्टम के लिए डिज़ाइन किए गए थे, जो आगे की कैशिंग के साथ थे, इसलिए वे अगले पर जाने से पहले एक फ़ाइल स्टेट को पूरा करने की प्रतीक्षा करते हैं। ।

Precaching

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

हम sshfs को आपके कार्य को शुरू करने से पहले, या पृष्ठभूमि में भी, जब आपका कार्य पहले से ही चल रहा हो, तब इसे चलाकर, कुछ रीड-फॉरवर्ड कैशिंग करने के लिए बाध्य कर सकते हैं:

find project/folder/on/mounted/fs > /dev/null &

यह सभी निर्देशिका प्रविष्टियों को प्री-कैश करना चाहिए, बाद में दौरों से कुछ ओवरहेड को कम करना। (निश्चित रूप से, आपको बड़े टाइमआउट का उपयोग करने की आवश्यकता है, जैसे कि मैंने पहले प्रदान किया था, या यह कैश्ड डेटा आपके ऐप तक पहुँचने से पहले ही साफ़ हो जाएगा।)

लेकिन findइसमें काफी समय लगेगा। अन्य ऐप्स की तरह, यह अगले एक का अनुरोध करने से पहले एक फ़ोल्डर से परिणामों की प्रतीक्षा करता है।

विभिन्न फ़ोल्डरों में कई खोज प्रक्रियाओं को पूछकर समग्र समय को कम करना संभव हो सकता है। मैंने यह देखने के लिए परीक्षण नहीं किया है कि क्या यह वास्तव में अधिक कुशल है। यह निर्भर करता है कि sshfs समानांतर में अनुरोधों की अनुमति देता है या नहीं। (मुझे लगता है कि यह करता है)

find project/folder/on/mounted/fs/A > /dev/null &
find project/folder/on/mounted/fs/B > /dev/null &
find project/folder/on/mounted/fs/C > /dev/null &

यदि आप फ़ाइल सामग्री को प्री-कैश करना चाहते हैं, तो आप यह कोशिश कर सकते हैं:

tar c project/folder/on/mounted/fs > /dev/null &

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


4

SSHFS वास्तव में धीमा है क्योंकि यह फ़ाइल सामग्री को स्थानांतरित करता है, भले ही इसके लिए (cp करते समय) न हो। मैंने इस अपस्ट्रीम और डेबियन को रिपोर्ट किया, लेकिन कोई प्रतिक्रिया नहीं: /


2
इसके साथ कुशल है mv। दुर्भाग्य से जब आप cpस्थानीय रूप से चलाते हैं , तो FUSE केवल पढ़ने और लिखने के लिए फाइलें खोलने के लिए अनुरोध देखता है। यह नहीं पता है कि आप किसी फ़ाइल की प्रतिलिपि बना रहे हैं। FUSE के लिए यह सामान्य फ़ाइल लिखने से अलग नहीं है। इसलिए मुझे डर है कि यह तय नहीं किया जा सकता है जब तक कि स्थानीय cpको अधिक FUSE- जागरूक / FUSE के अनुकूल न बनाया जाए। (या FUSE पूरे ब्लॉक के बजाय ब्लॉक हैश भेजने में सक्षम हो सकता है जब उसे संदेह हो cp, जैसे कि rsync करता है, लेकिन वह जटिल होगा और अन्य ऑपरेशन को धीमा कर सकता है।)
joeytwiddle

3

खोज और परीक्षण के बाद। मैंने अभी ऐड -o Compression=noस्पीड को बहुत कम पाया है । देरी संपीड़न और अनप्रेशन प्रक्रिया के कारण हो सकती है। इसके अलावा, 'सिपहर्स = aes128-ctr' का उपयोग दूसरों की तुलना में तेज़ लगता है जबकि कुछ पोस्ट ने इस पर कुछ प्रयोग किए हैं। फिर, मेरी आज्ञा कुछ इस तरह है:

sshfs -o allow_other, transform_symlinks, follow_symlinks, IdentityFile = / Users / maple / .ssh / id_rsa -o auto_cache, फिर से कनेक्ट करें, defer_permissions -o Ciphers = aes128-ctr -o Compression = no maple@123.123.123.123.123.123.123.123 / mntpoint


2

एनएफएस तेज होना चाहिए। फाइलसिस्टम कितना सुदूर है? यदि यह WAN से अधिक है, तो आप सीधे दूरस्थ पहुँच के विपरीत फ़ाइलों को आगे और पीछे सिंक करना बेहतर समझ सकते हैं।


1

यदि आपके पास बड़ी फाइलें हैं तो या तो एनएफएस या सांबा। 720p मूवी और बकवास जैसे कुछ के साथ NFS का उपयोग करना वास्तव में एक PITA है। सांबा बेहतर काम करेगा, मैं सांबा को कई अन्य कारणों से नापसंद करता हूं और मैं आमतौर पर इसकी सिफारिश नहीं करता।

छोटी फ़ाइलों के लिए, एनएफएस ठीक होना चाहिए।


1

मैंने अपनी zsh थीम को बंद कर दिया, जो कि git फ़ाइल स्थिति की जाँच कर रही थी, उसने उत्साहपूर्वक मदद की - बस निर्देशिका में प्रवेश करने में 10+ मिनट लग रहे थे। इसी तरह विम में चेक स्टेटस चेकर्स को बंद करना।


वाह, यह एक बहुत अच्छा टिप है!
दिमित्री

-2

रूट के रूप में लॉगिन करें।

"Cd /" का उपयोग करके, अपने शीर्ष स्तर की निर्देशिका तक पहुँचें।

फिर सुनिश्चित करें कि आपके पास "mkdir folder_name" का उपयोग करके एक माउंट फ़ोल्डर बनाया गया है या बनाया गया है।

उसके बाद, बस "माउंट xxxx: / Remote_mount_directory / local_mount_directory का उपयोग करें।

यदि सब कुछ आपके अंत पर काम करता है, तो इससे पहले कि आपके पास एक सफल माउंट होना चाहिए। आप जाँच कर सकते हैं और सुनिश्चित कर सकते हैं कि गंतव्य निर्देशिका "एक्सपोर्टफैस" कमांड का उपयोग करके साझा की जा सकती है ताकि वे मिल सकें।

उम्मीद है की यह मदद करेगा। यह एक lvie वातावरण से नहीं है, इसे VMware और Fedora 16 का उपयोग करते हुए LAN पर परीक्षण किया गया है।


5
इस सवाल का जवाब नहीं है ...
लेओ लैम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.