सवाल 15TB छोटी फ़ाइलों को स्थानांतरित करें


मैं डेटा को एक सर्वर से दूसरे में संग्रहीत कर रहा हूं। शुरू में मैंने एक शुरू किया rsync काम। इसमें 5 टीबी डेटा और 1 सप्ताह के डेटा को स्थानांतरित करने के लिए एक और सप्ताह फ़ाइल फ़ाइल बनाने के लिए 2 सप्ताह लग गए।

तब मुझे नौकरी को मारना पड़ा क्योंकि हमें नए सर्वर पर कुछ समय चाहिए।

यह सहमति हुई है कि हम इसे बंद कर देंगे क्योंकि हमें शायद इसे फिर से एक्सेस करने की आवश्यकता नहीं होगी। मैं इसे 500 जीबी भाग में तोड़ने की सोच रहा था। मेरे बाद tar तब मैं इसे भरने के लिए जा रहा था ssh। मैं उपयोग कर रहा था tar तथा pigz लेकिन यह अभी भी बहुत धीमी है।

इसे करने का कोई बेहतर तरीका है? मुझे लगता है कि दोनों सर्वर Redhat पर हैं। पुराना सर्वर Ext4 है और नया एक एक्सएफएस है।

फ़ाइल आकार कुछ केबी से कुछ एमबी तक हैं और 5TB में 24 मिलियन जेपीजी हैं। तो मैं 15TB के लिए लगभग 60-80 मिलियन अनुमान लगा रहा हूं।

संपादित करें: कुछ दिनों के लिए rsync, nc, tar, mbuffer और pigz के साथ खेलने के बाद। बाधा डिस्क आईओ होने जा रही है। चूंकि डेटा 500 एसएएस डिस्क और लगभग 250 मिलियन जेपीईजी में धारीदार है। हालांकि, अब मैंने इन सभी अच्छे उपकरणों के बारे में सीखा है जिनका मैं भविष्य में उपयोग कर सकता हूं।


73
2017-09-09 15:23


मूल


के संभावित डुप्लिकेट लिनक्स लिनक्स, 10 टीबी स्थानांतरण? - D34DM347
एक विकल्प एक बाहरी ड्राइव पर संपीड़ित टैर फ़ाइलों को बना रहा है और इसे नए सिस्टम में ले जा रहा है। अतिरिक्त डिस्क टैर फाइलें बनाने में तेजी लाएगी (सिस्टम में मौजूदा डिस्क पर लिख नहीं पाएगी, संभवतः उनसे 15TB पढ़ने की कोशिश करते समय) और नए सर्वर को टाई नहीं है। - Brian
इसे करने का कोई बेहतर तरीका है? - हाँ, विंडोज सर्वर 2012 आर 2 डीएफएस प्रतिकृति लगभग 10 घंटों में तैयार होगा। और यह परिवर्तनों को सिंक करेगा, और रीबूट के बाद इसे छोड़ दिया गया था। - TessellatingHeckler
@TessellatingHeckler: तो आप सुझाव देते हैं कि ओपी संग्रह से पहले रेडहाट से विंडोज में माइग्रेट करता है? - Thomas Weller
@ थॉमसवेलर ने पूछा, "क्या कोई बेहतर तरीका है?", और वहां है। मैं कोई सिफारिश नहीं करता कि वे बेहतर तरीके का उपयोग करें। वे एक पाइप में कमांड का उपयोग करने के लिए स्वतंत्र हैं जो बाधा से ठीक नहीं हो सकते हैं, फ़ाइल सामग्री को सत्यापित नहीं करेंगे, कॉपी स्थिति की रिपोर्ट नहीं कर सकते हैं, फाइलों के हिस्सों की प्रतिलिपि बनाने से बचने के लिए पहले कॉपी किए गए ब्लॉक का उपयोग नहीं कर सकते हैं, इसमें कोई अंतर्निहित नहीं है कम प्राथमिकता प्रतिलिपि का समर्थन करें, रोका नहीं जा सकता है, एसीएल की प्रतिलिपि बनाने का कोई उल्लेख नहीं है, और इसे चलाने के लिए लॉग इन रहने की आवश्यकता है। हालांकि, किसी और के साथ पीछा करने में रुचि हो सकती है - या "एक्स लिनक्स पर ऐसा करता है" कहने के लिए कहा जाता है। - TessellatingHeckler


जवाब:


मेरे पास बहुत अच्छे परिणाम हैं tar, pigz (समांतर gzip) और nc

स्रोत मशीन:

tar -cf - -C /path/of/small/files . | pigz | nc -l 9876

गंतव्य मशीन:

निकालना:

nc source_machine_ip 9876 | pigz -d | tar -xf - -C /put/stuff/here

संग्रह रखने के लिए:

nc source_machine_ip 9876 > smallstuff.tar.gz

यदि आप स्थानांतरण दर को केवल पाइप देखना चाहते हैं pv बाद pigz -d!


62
2017-09-09 16:29



एफवाईआई, आप प्रतिस्थापित कर सकते हैं pigz साथ में gzip या इसे पूरी तरह से हटा दें, लेकिन गति काफी धीमी होगी। - h0tw1r3
यदि ओपी पहले ही कोशिश कर चुका है तो यह कैसे स्वीकार किया जा सकता है tar तथा pigz? मुझे समझ में नहीं आता ... - Thomas Weller
@ थॉमसवेलर आपको यह कहां मिला कि उसने कोशिश की है pigz? सवाल से ऐसा लगता है कि उसने केवल कोशिश की है rsync अब तक, और था मानते हुए का उपयोग करते हुए tar डेटा विभाजित और बंडल करने के लिए। विशेष रूप से अगर उसने इसका उपयोग नहीं किया है -z/--compress rsync पर विकल्प, pigz सैद्धांतिक रूप से महत्वपूर्ण मदद कर सकता है। - Doktor J
@ थॉमसवेलर हां वास्तव में मैंने पहले ही टैर और पिगज़ की कोशिश की लेकिन एनसी नहीं। मैं एसएसएच का उपयोग कर रहा था इसलिए इसमें बहुत अधिक ओवरहेड जोड़ा गया। - lbanz
@lbanz कि बस इसका मतलब है tar डेटा के लिए पर्याप्त तेज़ी से उत्पादन नहीं कर रहा है pigz संपीड़न के लिए बहुत सीपीयू का उपयोग करने के लिए। बहुत सी छोटी फाइलों को पढ़ना बहुत अधिक सिस्कोल, कई डिस्क की तलाश करता है, और बड़ी फाइलों के बाइट्स की संख्या को पढ़ने की तुलना में बहुत अधिक कर्नेल ओवरहेड शामिल है, और ऐसा लगता है कि आप केवल मौलिक स्तर पर बाधा डाल रहे हैं। - hobbs


मैं rsync समाधान से चिपके रहूंगा। आधुनिक (3.0.0+) rsync incremental फ़ाइल सूची का उपयोग करता है, इसलिए इसे स्थानांतरण से पहले पूरी सूची बनाना नहीं है। तो इसे पुनरारंभ करने के लिए आपको परेशानी के मामले में फिर से पूर्ण हस्तांतरण करने की आवश्यकता नहीं होगी। हस्तांतरण प्रति शीर्ष या दूसरी स्तर की निर्देशिका को विभाजित करना इसे और भी अनुकूलित करेगा। (मैं उपयोग करता हूँ rsync -a -P और जोड़ --compress यदि आपका नेटवर्क आपके ड्राइव से धीमा है।)


20
2017-09-09 18:44



मैं पुराने सर्वर पर rsync 2.6.8 का उपयोग कर रहा हूँ। चूंकि यह उन बक्से में से एक है जहां हमें विक्रेता द्वारा बताए गए कुछ भी इंस्टॉल / अपडेट करने की अनुमति नहीं है या यह वारंटी को व्यक्त करता है। मैं इसे अपडेट कर सकता हूं और देख सकता हूं कि यह कोई तेज है या नहीं। - lbanz
एक स्थैतिक रूप से जुड़े rsync बाइनरी ढूंढें (या बनाएं) और इसे अपने घर से चलाएं। उम्मीद है कि कोई वारंटी बर्बाद नहीं करेगा। - Fox


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

दो कारण:

  1. कोई फाइल सिस्टम ओवरहेड नहीं है, जो मुख्य प्रदर्शन अपराधी है
  2. कोई मांग नहीं, आप दोनों तरफ अनुक्रमिक पढ़ने / लिखने पर विचार कर रहे हैं

15
2017-09-09 16:17



फाइल सिस्टम को बाईपास करना अच्छा है। रीड-राइट माउंटेड फाइल सिस्टम के ब्लॉक-स्तर की प्रतिलिपि बनाना वास्तव में एक बुरा विचार है। पहले केवल पढ़ने या माउंट माउंट करें। - JB.
एक 15 टीबी प्रतिलिपि होने के साथ भी बेकार है। इसका मतलब है कि नए सर्वर को न्यूनतम 30 की आवश्यकता है। - Arthur Kay
यदि सर्वर LVM का उपयोग कर रहा है, तो कोई भी फाइल सिस्टम का केवल-पढ़ने वाला स्नैपशॉट कर सकता है और इसके बजाय इसकी प्रतिलिपि बना सकता है। स्नैपशॉट पढ़ने के दौरान होने वाली फाइल सिस्टम में परिवर्तन के लिए केवल स्पेस ओवरहेड। - liori


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


9
2017-09-10 03:14



यह 2TB ड्राइव के लगभग 1 पीबी है इसलिए यह बहुत अधिक है। - lbanz


Mbuffer का उपयोग करें और यदि यह एक सुरक्षित नेटवर्क पर है तो आप एन्क्रिप्शन चरण से बच सकते हैं।


3
2017-09-09 15:39





(कई अलग-अलग उत्तर काम कर सकते हैं। यहां एक और है।)

फ़ाइल सूची जेनरेट करें find -type f (यह कुछ घंटों में खत्म होना चाहिए), इसे छोटे टुकड़ों में विभाजित करें, और प्रत्येक खंड का उपयोग करके स्थानांतरित करें rsync --files-from=...


3
2017-09-10 23:34





क्या आपने स्नीकरनेट माना है? इसके साथ, मेरा मतलब है कि सब कुछ एक ही ड्राइव पर स्थानांतरित करना, फिर भौतिक रूप से उस ड्राइव को आगे बढ़ाना।

लगभग एक महीने पहले, सैमसंग ने 16 टीबी ड्राइव का अनावरण किया (तकनीकी रूप से, यह 15.36 टीबी है), जो एक एसएसडी भी है: http://www.theverge.com/2015/8/14/9153083/samsung-worlds-largest-hard-drive-16tb

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


3
2017-09-12 17:56





यदि समर्पण के दौरान उच्च सफलता अनुपात प्राप्त करने का कोई मौका है, तो मैं कुछ ऐसा उपयोग करूंगा borgbackup या अटिक।

यदि नहीं, तो नेटकैट + टैर + देखेंpbzip2 समाधान, अपने हार्डवेयर के अनुसार संपीड़न विकल्पों को अनुकूलित करें - जांचें कि बाधा क्या है (सीपीयू? नेटवर्क? आईओ?)। बेहतर प्रदर्शन देने के साथ, pbzip2 सभी CPUs में अच्छी तरह से फैल जाएगा।


2
2017-09-09 20:38



lzma (xz) bzip2 से तेज़ डिकंप्रेस करता है, और अधिकांश इनपुट पर अच्छा करता है। दुर्भाग्य से, xzमल्टीथ्रेड विकल्प अभी तक लागू नहीं किया गया है। - Peter Cordes
आम तौर पर संपीड़न चरण को डिकंप्रेशन की तुलना में अधिक अश्वशक्ति की आवश्यकता होती है, इसलिए यदि सीपीयू सीमित कारक है, तो pbzip2 बेहतर समग्र प्रदर्शन के परिणामस्वरूप होगा। अगर दोनों मशीनें समान हैं, तो डिकंप्रेशन प्रक्रिया को प्रभावित नहीं करना चाहिए। - neutrinus
हां, मेरा मुद्दा यह एक शर्म की बात है कि एक एकल धारा बहु-धागा lzma नहीं है। हालांकि इस उपयोग के मामले में, डेटा के पूरे फाइल सिस्टम को स्थानांतरित करने के लिए, pigz जांच होगी सबसे धीमा कंप्रेसर बनें जिसका आप उपयोग करना चाहते हैं। या और भी lz4। (वहां एक lz4mt बहु-थ्रेडेड-फॉर-ए-सिंगल-स्ट्रीम उपलब्ध है। यह थ्रेड बहुत कुशलता से नहीं होता है (अक्सर नए धागे पैदा करता है), लेकिन यह एक ठोस गति प्राप्त करता है) - Peter Cordes


आप रेडहाट लिनक्स का उपयोग कर रहे हैं, इसलिए यह लागू नहीं होगा, लेकिन एक और विकल्प के रूप में:

मुझे जेडएफएस का उपयोग लाखों फाइलों को पकड़ने के लिए बहुत सफलता मिली है क्योंकि इनोड्स कोई समस्या नहीं है।

यदि यह आपके लिए एक विकल्प था, तो आप स्नैपशॉट्स ले सकते हैं और वृद्धिशील अपडेट भेजने के लिए zfs का उपयोग कर सकते हैं। हस्तांतरण के साथ-साथ संग्रह डेटा के लिए इस विधि का उपयोग करके मुझे बहुत सफलता मिली है।

जेएफएस मुख्य रूप से एक सोलारिस फाइल सिस्टम है, लेकिन यह illumos (सूर्य के OpenSolaris के खुले स्रोत कांटा) में पाया जा सकता है। मुझे पता है कि बीएसडी और लिनक्स (एफयूएसई का उपयोग कर) के तहत जेएफएस का उपयोग करने में कुछ भाग्य भी रहा है - लेकिन मुझे इसका प्रयास करने का कोई अनुभव नहीं है।


2
2017-09-10 18:49



काफी समय से जेएफएस का गैर-एफयूएसई देशी लिनक्स पोर्ट रहा है: zfsonlinux.org - EEAA


एक शुरू करो rsync लक्ष्य मशीन पर डेमॉन। यह स्थानांतरण प्रक्रिया को बहुत तेज करेगा।


1
2017-09-11 15:50