Rsync प्रदर्शन और थ्रूपुट को अधिकतम करना - सीधे-जुड़े गीगाबिट सर्वर


27

मेरे पास दो डेल R515 सर्वर हैं जो CentOS 6.5 पर चल रहे हैं, जिनमें से प्रत्येक में ब्रॉडकॉम NIC में से एक सीधे दूसरे से जुड़ा हुआ है। मैं ssh पर rsync का उपयोग करके प्रत्येक रात जोड़े में मुख्य सर्वर से बैकअप को पुश करने के लिए डायरेक्ट लिंक का उपयोग करता हूं। ट्रैफ़िक की निगरानी करना, मुझे ~ 2MBps का थ्रूपुट दिखाई देता है, जो कि एक गीगाबिट पोर्ट से अपेक्षा से बहुत कम है। मैंने दोनों ओर MTU से 9000 तक सेट किया है, लेकिन यह कुछ भी बदलने के लिए प्रतीत नहीं हुआ।

क्या सेटिंग्स और अनुकूलन का एक अनुशंसित सेट है जो मुझे अधिकतम उपलब्ध थ्रूपुट पर ले जाएगा? इसके अलावा, चूंकि मैं लाखों फाइलों की नकल करने के लिए ss (या संभवतः सिर्फ NFS) पर rsync का उपयोग कर रहा हूं (~ 6Tb की छोटी फाइलें - एक विशाल जिम्फ्रा मेलस्टोर), मैं जो अनुकूलन देख रहा हूं, वह मेरे विशेष उपयोग के मामले में अधिक विशिष्ट होने की आवश्यकता हो सकती है ।

मैं दोनों पक्षों पर ext4 का उपयोग कर रहा हूं, अगर यह मायने रखता है

धन्यवाद

संपादित करें: मैंने rsyncबहुत अधिक समान परिणामों के साथ निम्नलिखित विकल्पों का उपयोग किया है :

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

वर्तमान में, मैं cpउसी प्रत्यक्ष केबल लिंक पर NFS निर्यात का उपयोग करते समय खराब प्रदर्शन के समान स्तर को देख रहा हूं ।

EDIT2: सिंक खत्म करने के बाद, मैं दौड़ सकता iperfथा और पाया कि प्रदर्शन लगभग 990Mbits / sec था, धीमेपन के कारण उपयोग में वास्तविक डेटासेट था।


1
आपको अपने टैग में rsync जोड़ना चाहिए। क्या आपने rsync के लिस्टिंग भाग के लिए समय की जाँच की? कम थ्रूपुट छोटी फ़ाइलों के कारण हो सकता है। क्या आप विकल्पों की जांच करने के लिए अपना rsync कमांड पोस्ट कर सकते हैं?
kranteg

@ क्रांतेग कृपया देखें
dyasny

2
कृपया कनेक्टिविटी को सत्यापित करें iperf
ewwhite

हाँ, iperf 991mbits / s दिखाता है, मुझे लगता है कि यह बहुत
तेज़ है

आपके पास rsync के साथ अच्छा throuphput और छोटी फ़ाइलों के साथ डेटासेट नहीं हो सकता है। आपको टारगेट जरूर आजमाना चाहिए।
क्रांति

जवाबों:


24

फ़ाइल गणना और SSH एन्क्रिप्शन ओवरहेड सबसे बड़ी बाधाएं हैं। आप इस तरह स्थानांतरण पर वायर-स्पीड नहीं देख सकते हैं।

सुधार के विकल्पों में शामिल हैं:

  • कम महंगी एन्क्रिप्शन एल्गोरिथ्म (जैसे -e "ssh -c arcfour") के साथ rsync + SSH का उपयोग करना
  • एचपीएन-एसएसएच जैसे कुछ के साथ पूरी तरह से एसएसएच परिवहन पर एन्क्रिप्शन को खत्म करना ।
  • ब्लॉक-आधारित स्थानान्तरण। स्नैपशॉट्स, dd, ZFS स्नैपशॉट भेजने / प्राप्त , आदि
  • यदि यह एक-बार या अनिमेष हस्तांतरण, उपयोग tar, netcat ( nc), mbuffer या कुछ संयोजन है।
  • अपनी CentOS tuned-admसेटिंग्स जांचें ।
  • अपने फाइल सिस्टम से atime को हटाना mounts। अन्य फाइल सिस्टम माउंट विकल्पों की जांच करना।
  • एनआईसी बफ़र्स भेज / प्राप्त करता है।
  • अपने rsyncआदेश को ट्यूनिंग । क्या -W, संपूर्ण-फ़ाइल विकल्प यहां समझ में आएगा? संपीड़न सक्षम है?
  • हस्तांतरण के प्रकार (SSDs, धुरी-गिनती, RAID नियंत्रक कैश) के लिए अपने भंडारण उपतंत्र का अनुकूलन करें।

मैं NFS के लिए SSH को डंप कर चुका हूं, बहुत अधिक समान परिणाम देख रहा हूं। ब्लॉक आधारित स्थानान्तरण मैं जो योजना बना रहा हूं, LVM स्नैपशॉट आधारित बैकअप पर स्विच करें और बैकअप को दूसरे सर्वर पर भेजें, जहां मैं ZFS को डिडअप के लिए चला रहा हूं। atime को दोनों तरफ से निष्क्रिय कर दिया गया है। कोई संपीड़न उपयोग नहीं किया जाता है। इस प्रकार के हस्तांतरण के लिए मैं भंडारण उपसमूह को कैसे अनुकूलित करूं? स्रोत 12x 10k SAS ड्राइव पर दो RAID10 है, एक स्थानीय ड्राइव पर, दूसरा एक MD1220। बैकअप सर्वर में एक ही डिस्क गणना है, लेकिन बड़े SATA ड्राइव के साथ, और RAID5 का उपयोग करता है। दोनों तरफ पूर्ण कैश H800 और H700 नियंत्रक। 2MBps (iftop से) ~
dyasny

~ मुझे लगता है कि नेटवर्किंग यहाँ फिर भी अड़चन है।
dyasny

@dyasny iperfसुनिश्चित करने के लिए अपने नेटवर्क का परीक्षण करें।
इविविट


1
सुनिश्चित करें कि गंतव्य निर्देशिका संरचना द्वारा बनाई गई थी rsyncया नहीं cp। मैंने देखा है rsyncकि एक दूरस्थ निर्देशिका ट्री को मूल रूप से अपडेट करने में अधिक समय लगता है cp: 88GB को 3h के बजाय 1h26m में चेकसमिंग के साथ अपडेट किया गया! आप प्रारंभिक डिस्क लेआउट कैसे बनाते हैं, यह अच्छा अपडेट प्रदर्शन करने के लिए महत्वपूर्ण है। सीपीयू समय समान है; वास्तविक समय दोगुना हो सकता है। (बिना अपडेट की जाँच के एक ही अपडेट SSD से 200GB Seagate तक 13 मिनट में चलता है)।
इयान डी। एलन

3

जैसा कि आप शायद बहुत सारी छोटी फ़ाइलों की नकल करना जानते हैं (उदाहरण के लिए MailDir प्रारूप या समान का उपयोग करने वाले मेलबॉक्स) निश्चित रूप से उच्च बैंडवाइट इंटरफेस का लाभ उठाने के लिए सबसे अच्छा विकल्प नहीं है। SSH शायद उस के लिए सबसे अच्छा परिवहन प्रोटोकॉल नहीं है। मैं स्रोत होस्ट पर एक टारबॉल बनाने के लिए टार का उपयोग करने की कोशिश करूँगा ताकि आप इसे द्वितीयक होस्ट में भेज सकें।

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

यदि आपको वृद्धिशील बैकअप की आवश्यकता है तो आप -gटार के विकल्पों को आज़माना चाहते हैं । यदि आपको अभी भी थ्रिपुट को अधिकतम करने की आवश्यकता है, तो ssh के बजाय netcat का उपयोग करने का प्रयास करें।


मैंने SSH के बजाय NFS में स्विच किया है, एन्क्रिप्शन ओवरहेड को हटाने के लिए, कोई खुशी नहीं
dyasny

क्या आपने टार का उपयोग करने की कोशिश की है? हो सकता है कि पहले चरण के रूप में प्राथमिक सर्वर पर एक स्थानीय टार्बल बनाने की कोशिश करें और फिर इसे तार पर स्थानांतरित करें। (या ipewf के साथ अपने नेटवर्क को टेस्ट करें जैसे @ewwhite suggeted)
alxgomz

मैं, अगर मेरे पास खाली करने के लिए स्थानीय स्थान होता। यह बहुत बड़ा है, यहां तक ​​कि एक पूरी तरह से आबादी वाले डीएएस बॉक्स
डायसनी

तो इसे netcat या ssh पर पाइप करने की कोशिश करें (हालांकि यह उतना कुशल नहीं है)
alxgomz

मैं बाद में के आधार पर बैकअप ब्लॉक का उपयोग करने जा रहे होंगे, और मैं पाइप का इरादा ddके माध्यम से ncतो। लेकिन अभी, मैं दो विशाल बैकअप के साथ फंस गया हूं, फिर मुख्य मेजबान से
हटने की

1

योगदान करने वाले कारकों के अलावा छेड़ने की कोशिश करें:

  • CPU (उदाहरण के लिए / dev / शून्य लूपबैक के माध्यम से पाइप)
  • डिस्क I / O (उदाहरण के लिए बिल्ली को पाइप की गई बड़ी फाइल का dd > / dev / null [शॉर्ट-सर्कुलेशन को रोकने के लिए पाइप किया गया)]
  • भौतिक नेटवर्क I / O (जैसे अन्य मशीन में dd पाई गई)
  • आदि।

और उन्हें स्वतंत्र रूप से परीक्षण कर रहा है।

मुझे ब्रॉडकॉम के ड्राइवरों के साथ कुछ बुरे अनुभव हुए हैं, इसलिए मेरा पहला सुझाव है कि आप इसके साथ प्रयोग करने योग्य नेटवर्क बैंडविड्थ का परीक्षण करें: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


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