छोटी फ़ाइलों के लिए rsync को कैसे गति दें


15

मैं निम्नलिखित कमांड का उपयोग करके हजारों छोटी फ़ाइलों को एक सर्वर से दूसरे सर्वर में स्थानांतरित करने की कोशिश कर रहा हूं:

rsync -zr --delete /home/user/ user@10.1.1.1::backup

वर्तमान में स्थानांतरण में लंबा समय लगता है (मैंने इसे समयबद्ध नहीं किया है)। क्या इसे तेज़ बनाने का कोई तरीका है? क्या मुझे एक और उपकरण का उपयोग करना चाहिए? क्या मुझे rsync प्रोटोकॉल का उपयोग करने के बजाय ss पर rsync का उपयोग करना चाहिए?


क्या यह वास्तव में केवल सैकड़ों है? जैसा कि कम है तो एक हजार में?
जॉरेडैच

इससे कुछ अधिक ... 475,576 कुल 9.3GB
नूडल्स

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

क्यों नहीं -a, लेकिन -r?
कामे

जवाबों:


13

आपको अड़चन निर्धारित करने की आवश्यकता है। यह rsync नहीं है। यह शायद आपका नेटवर्क बैंडविड्थ नहीं है। जैसा कि @Zoredache ने सुझाव दिया है कि यह सभी stat()कॉलों द्वारा उत्पन्न सबसे बड़ी संख्या में iops है । फ़ाइलों को स्टैटिक करने के लिए किसी भी सिंकिंग टूल की आवश्यकता होती है। iostatसत्यापित करने के लिए सिंक्रनाइज़ करते समय ।

तो सवाल बन जाता है; मैं स्टेट को कैसे ऑप्टिमाइज़ कर सकता हूँ? दो आसान जवाब:

  1. एक तेज़ डिस्क सबसिस्टम प्राप्त करें (यदि आवश्यकता हो तो दोनों मेजबानों पर) और
  2. अपने फाइलसिस्टम को ट्यून करें (उदाहरण के लिए ext3 माउंट के साथ noatimeऔर जोड़ें dir_index)।

अगर किसी तरह से यह आपकी डिस्क आईपीएस नहीं है, तो यह सीमा है तो आप डायर के पेड़ को कई अलग-अलग पेड़ों में विभाजित कर सकते हैं और कई rsyncs चला सकते हैं।


1
धन्यवाद, मैं dir_index में देखूंगा और देखता हूं कि मैं कैसे प्राप्त करता हूं (हम पहले से ही noatime का उपयोग करते हैं)। ऐसा लगता है कि डिस्क io अड़चन है, लेकिन हम पहले से ही RAID 5 में 15k SAS ड्राइव चला रहे हैं। अगला कदम SSD होगा, लेकिन हमारी होस्टिंग कंपनी हमें वह विकल्प अभी तक नहीं देती है।
नूडल्स

5

छोटी फ़ाइलों के लिए संपीड़न बहुत उपयोगी नहीं है (कहते हैं, 100 बाइट्स से कम)। छोटी फ़ाइलों के लिए, कभी-कभी संकुचित संस्करण मूल से भी बड़ा हो सकता है। ध्वज के rsyncबिना कमांड का प्रयास करें -z

sshसुरक्षा के लिए अच्छा है, लेकिन यह तेजी से स्थानांतरण नहीं करेगा। वास्तव में, यह एन्क्रिप्शन / डिक्रिप्शन की आवश्यकता के कारण स्थानांतरण धीमा कर देगा।

rsyncयह पहली बार चलने पर तेज़ नहीं लग सकता क्योंकि स्थानांतरण के लिए बहुत अधिक डेटा है। हालाँकि, यदि आप समय-समय पर इस कमांड को चलाने की योजना बनाते हैं, तो बाद के रन बहुत तेज़ हो सकते हैं क्योंकि उन rsyncफ़ाइलों को स्थानांतरित न करने के बारे में स्मार्ट हैं जो बदल नहीं गए हैं।


यदि आप rsyncक्लाइंट का उपयोग करते हैं, तो यह पर्दे के पीछे SSH का उपयोग करेगा। आपको rsync का उपयोग करते समय एन्क्रिप्शन को अक्षम करने के लिए अपने रास्ते से बाहर जाना होगा। देखें: stackoverflow.com/a/1821574/64911
mlissner

1

आप किस rsync का उपयोग कर रहे हैं? कुछ भी पुराने 3.0.0 (दोनों सिरों पर) में वृद्धिशील फाइलिस्ट सुविधा नहीं है, जो बड़े स्थानान्तरण को गति देती है।


दोनों सर्वरों पर rsync 3.0.5 का उपयोग करना।
नूडल्स

1

-v --progressअपनी rsync कमांड लाइन में जोड़ें

rsync 2 चरणों में किया जाता है:

  1. अपने आकार और mdate की तुलना करने के लिए दोनों प्लेटफार्मों पर सभी फ़ाइलों को गहराई से ब्राउज़ करें
  2. वास्तविक हस्तांतरण करें

यदि आप नेस्टेड निर्देशिकाओं में हजारों छोटी फाइलें rsync हैं, तो बस यह हो सकता है कि rsync इस समय का अधिकांश हिस्सा उप-विभाजनों में जा रहा है और सभी फ़ाइलों को ढूंढ रहा है

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


1

यदि ext3 या ext4 फाइल सिस्टम शामिल हैं, तो जांच लें कि दोनों में dir_index फीचर सक्षम है! मेरे मामले में यह तीन गुना rsync-throughput है।

मेरे उत्तर में विवरण देखें: /server//a/759421/80414

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