पहले सुनिश्चित करें कि लॉजिकल वॉल्यूम माउंट नहीं है। यदि यह है और आप "हॉट कॉपी" बनाना चाहते हैं, तो पहले एक स्नैपशॉट बनाएं और इसके बजाय इसका उपयोग करें:
lvcreate --snapshot --name transfer_snap --size 1G
मुझे दो 1Gbit से जुड़े सर्वर के बीच बहुत सारे डेटा (7TB) को स्थानांतरित करना है, इसलिए मुझे ऐसा करने के लिए उपवास के संभावित तरीके की आवश्यकता थी।
क्या आपको SSH का उपयोग करना चाहिए?
Ssh का उपयोग करना प्रश्न से बाहर है, इसके एन्क्रिप्शन के कारण नहीं (यदि आपके पास एईएस-एनआई समर्थन वाला सीपीयू है, तो यह इतना नुकसान नहीं पहुंचाता है) लेकिन इसके नेटवर्क बफ़र्स के कारण। वे अच्छी तरह से स्केलिंग नहीं कर रहे हैं। एक पैच एसश संस्करण है जो इस समस्या को संबोधित करता है, लेकिन जैसा कि कोई पूर्व-निर्धारित पैकेज नहीं हैं, यह बहुत सुविधाजनक नहीं है।
संपीड़न का उपयोग करना
कच्ची डिस्क छवियों को स्थानांतरित करते समय, संपीड़न का उपयोग करना हमेशा उचित होता है। लेकिन आप नहीं चाहते कि संपीड़न एक अड़चन बन जाए। गज़िप जैसे अधिकांश यूनिक्स संपीड़न उपकरण एकल-थ्रेडेड हैं, इसलिए यदि संपीड़न एक सीपीयू को संतृप्त करता है, तो यह एक अड़चन होगी। उस कारण से, मैं हमेशा पिगज़ का उपयोग करता हूं, एक गज़िप संस्करण जो संपीड़न के लिए सभी सीपीयू कोर का उपयोग करता है। और यह आवश्यक है कि आप GBit गति से ऊपर और ऊपर जाना चाहते हैं।
एन्क्रिप्शन का उपयोग करना
जैसा कि पहले कहा गया था, ssh धीमा है। यदि आपके पास एईएस-एनआई सीपीयू है, तो यह अड़चन नहीं होनी चाहिए। इसलिए ssh का उपयोग करने के बजाय, हम सीधे Opensl का उपयोग कर सकते हैं।
गति
आपको घटकों के गति प्रभाव का एक विचार देने के लिए, यहाँ मेरे परिणाम हैं। वे दो उत्पादन प्रणालियों के बीच गति को पढ़ने और लिखने के लिए स्मृति में स्थानांतरित कर रहे हैं। आप वास्तविक परिणाम नेटवर्क गति, HDD गति और स्रोत CPU गति पर निर्भर करते हैं! Im यह दिखाने के लिए कि कम से कम कोई बड़ा प्रदर्शन ड्रॉप नहीं है।
Simple nc dd:
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 47.3576 s, 106 MB/s
+pigz compression level 1 (speed gain depends on actual data):
network traffic: 2.52GiB
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 38.8045 s, 130 MB/s
+pigz compression level 5:
network traffic: 2.43GiB
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 44.4623 s, 113 MB/s
+compression level 1 + openssl encryption:
network traffic: 2.52GiB
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 43.1163 s, 117 MB/s
निष्कर्ष: कंप्रेसिंग का उपयोग एक ध्यान देने योग्य स्पीडअप देता है, क्योंकि यह डेटा के आकार को बहुत कम कर देता है। यह और भी महत्वपूर्ण है यदि आपके पास धीमी नेटवर्क गति है। संपीड़न का उपयोग करते समय, अपने सीपीयू उपयोग को देखें। यदि उपयोग अधिकतम हो जाता है, तो आप इसके बिना प्रयास कर सकते हैं। एईएस-एनआई सिस्टम पर केवल एक छोटे प्रभाव के रूप में संपीड़न का उपयोग करना, केवल इसलिए कि यह संपीड़न से कुछ 30-40% सीपीयू चुराता है।
स्क्रीन का उपयोग करना
यदि आप मेरे जैसे बहुत से डेटा को स्थानांतरित कर रहे हैं, तो आप इसे अपने ssh क्लाइंट के नेटवर्क डिस्कनेक्ट द्वारा बाधित नहीं करना चाहते हैं, इसलिए आप इसे दोनों तरफ स्क्रीन के साथ शुरू करना बेहतर समझते हैं। यह सिर्फ एक नोट है, मैं यहां स्क्रीन ट्यूटोरियल नहीं लिखूंगा।
की नकल करते हैं
कुछ निर्भरताएँ स्थापित करें (स्रोत और गंतव्य पर):
apt install pigz pv netcat-openbsd
फिर स्रोत के समान आकार के साथ गंतव्य पर एक वॉल्यूम बनाएं। यदि अनिश्चित है, तो आकार पाने और लक्ष्य बनाने के लिए स्रोत पर lvdisplay का उपयोग करें:
lvcreate -n lvname vgname -L 50G
अगला, डेटा प्राप्त करने के लिए गंतव्य तैयार करें:
nc -l -p 444 | openssl aes-256-cbc -d -salt -pass pass:asdkjn2hb | pigz -d | dd bs=16M of=/dev/vgname/lvname
और तैयार होने पर, स्रोत पर स्थानांतरण शुरू करें:
pv -r -t -b -p -e /dev/vgname/lvname | pigz -1 | openssl aes-256-cbc -salt -pass pass:asdkjn2hb | nc <destip/host> 444 -q 1
नोट: यदि आप स्थानीय स्तर पर डेटा ट्रांसफर कर रहे हैं या एन्क्रिप्शन की परवाह नहीं कर रहे हैं, तो बस ओपन्सल पार्ट को दोनों तरफ से हटा दें। यदि आप परवाह करते हैं, तो asdkjn2hb एन्क्रिप्शन कुंजी है, आपको इसे बदलना चाहिए।