कुछ दिन पहले मैंने कुछ अजीब देखा (कम से कम मेरे लिए)। मैं उसी डेटा की प्रतिलिपि बनाकर rsync चला गया और बाद में इसे NFS माउंट तक हटा दिया गया, जिसे कहा जाता है /nfs_mount/TEST
। इससे /nfs_mount/TEST
होस्ट / निर्यात किया जाता है nfs_server-eth1
। दोनों नेटवर्क इंटरफेस पर MTU 9000 है, बीच में स्विच जंबो फ्रेम का समर्थन करता है। अगर मुझे rsync -av dir /nfs_mount/TEST/
नेटवर्क ट्रांसफर स्पीड एक्स एमबीपीएस मिलती है। अगर मुझे rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
नेटवर्क ट्रांसफर स्पीड कम से कम 2X एमबीपीएस मिलती है। मेरे एनएफएस माउंट विकल्प हैं nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp
।
नीचे पंक्ति: दोनों स्थानान्तरण एक ही नेटवर्क सबनेट, एक ही तार, एक ही इंटरफेस पर जाते हैं, एक ही डेटा को पढ़ते हैं, एक ही डायरेक्टरी को लिखते हैं, आदि केवल NFSv3 के माध्यम से अंतर है, दूसरा rsync पर।
ग्राहक उबंटू 10.04, सर्वर उबंटू 9.10 है।
कैसे आता है rsync इतना तेज़? NFS को उस गति से कैसे मेल करें?
धन्यवाद
संपादित करें: कृपया ध्यान दें कि मैं NFS शेयर या SSH को NFS सर्वर में लिखने के लिए rsync का उपयोग करता हूं और स्थानीय रूप से वहां लिखता हूं। दोनों बार मैं करता हूं rsync -av
, स्पष्ट गंतव्य निर्देशिका के साथ शुरू। कल मैं सादे कॉपी के साथ कोशिश करूंगा।
Edit2 (अतिरिक्त जानकारी): फ़ाइल का आकार 1KB-15MB से लेकर है। फाइलें पहले से ही संपीड़ित हैं, मैंने उन्हें बिना किसी सफलता के साथ आगे संपीड़ित करने की कोशिश की। मैंने tar.gz
उसी से फाइल बनाई dir
। यहाँ पैटर्न है:
rsync -av dir /nfs_mount/TEST/
= सबसे धीमा स्थानांतरण;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/
= जंबो फ्रेम सक्षम के साथ सबसे तेज rsync; जंबो फ्रेम के बिना थोड़ा धीमा है, लेकिन अभी भी सीधे एनएफएस की तुलना में काफी तेज है;rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/
= इसके गैर- tar.gz समकक्ष के समान;
के साथ टेस्ट cp
और scp
:
cp -r dir /nfs_mount/TEST/
= की तुलना में थोड़ा तेजrsync -av dir /nfs_mount/TEST/
लेकिन फिर भी काफी धीमा हैrsync -av dir nfs_server-eth1:/nfs_mount/TEST/
।scp -r dir /nfs_mount/TEST/
= सबसे तेजी से समग्र, थोड़ा काबूrsync -av dir nfs_server-eth1:/nfs_mount/TEST/
;scp -r dir.tar.gz /nfs_mount/TEST/
= इसके गैर- tar.gz समकक्ष के समान;
निष्कर्ष, इस परिणाम के आधार पर: इस परीक्षण के लिए महत्वपूर्ण अंतर नहीं है अगर टारगेट बड़ी फ़ाइल या कई छोटे का उपयोग किया जाए। जंबो फ्रेम ऑन या ऑफ भी लगभग कोई फर्क नहीं पड़ता। cp
और scp
उनके संबंधित rsync -av
समकक्षों की तुलना में तेज़ हैं । सीधे निर्यात किए गए NFS शेयर पर लिखना SSH के समान निर्देशिका में लिखने की तुलना में काफी कम (कम से कम 2 बार) उपयोग किए गए तरीके की परवाह किए बिना धीमा है।
इस मामले में अंतर cp
और rsync
प्रासंगिक नहीं हैं। मैंने कोशिश की cp
और scp
यह देखने के लिए कि क्या वे एक ही पैटर्न दिखाते हैं और वे करते हैं - 2X अंतर।
जैसा कि मैं उपयोग करता हूं rsync
या cp
दोनों मामलों में, मैं समझ नहीं पा रहा हूं कि एसएसएच पर समान कमांड के हस्तांतरण की गति तक पहुंचने के लिए एनएफएस को क्या रोकता है।
एनएफएस शेयर पर लिखना एसएसएक्स पर एक ही स्थान पर लिखने की तुलना में 2X धीमा है?
Edit3 (NFS सर्वर / आदि / निर्यात विकल्प) rw,no_root_squash,no_subtree_check,sync
:। ग्राहक का / proc / mounts दिखाता है nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp
:।
आप सभी को धन्यवाद!