दो लिनक्स सर्वरों के बीच लाखों फाइलों को सिंक्रनाइज़ करना


10

मेरे पास एक सर्वर है जो एनएफएस के माध्यम से नेटवर्क क्लाइंट के लिए अपनी स्थानीय डिस्क से ~ 7 मिलियन फाइलें (ज्यादातर छवियां) वाली निर्देशिका का निर्यात करता है ।

मुझे हा के लिए एक दूसरे को जोड़ने की जरूरत है, और इसे पहले वाले के साथ सिंक में रखने के लिए दोनों के बीच कम से कम डेल्टा के रूप में संभव है।

शोध में इसके लिए lsyncd या अन्य inotify -based समाधानों का उपयोग करने का सुझाव दिया गया है, लेकिन inotify घड़ियों को बनाने वाली फाइलों की संख्या को देखते हुए एक अनंत काल लगता है। Rsync के लिए समान बात ।

अन्य संभावित समाधान drdb , या ceph या glusterfs जैसे क्लस्टर फ़ाइल सिस्टम प्रतीत होते हैं , लेकिन मुझे उन लोगों के साथ कोई अनुभव नहीं है और यह नहीं पता है कि कौन सा अधिक उपयुक्त होगा और कई फ़ाइलों के साथ अच्छी तरह से सामना करेगा और अभी भी सभ्य प्रदर्शन प्रदान करेगा।

ध्यान दें कि गतिविधि अधिकतर कम लिखने के साथ होती है।


2
DRDB ठीक काम करता है और 2-मशीन क्लस्टर सेटअप में सेटअप और समझने के लिए सरल है; हालांकि यह निकट भविष्य में पैमाने पर नहीं होगा। विषय के अन्य दृष्टिकोण भी हो सकते हैं। highscalability.com/blog/2012/6/20/…
रुई एफ रिबेरो

क्या आपने rsyncडेमन मोड में चलने की कोशिश की ? यह rsyncकमांड चलाते समय फ़ाइल सूची की प्रारंभिक पीढ़ी को गति देगा , लेकिन फ़ाइलों की मात्रा के आधार पर रैम गहन होगा।
थॉमस

आप कितना विलंब सहन कर सकते हैं? यदि आप कुछ मिनटों (या अधिक) को सहन कर सकते हैं , तो स्नैपशॉट बनाने के लिए क्रोन जॉब और या उन्हें बैकअप सर्वर पर संयुक्त रूप से उपयोग btrfsकर zfsसकते हैं । बहुत तेजी से और एक बहुत हल्का काम का बोझ (प्रेषक और रिसीवर दोनों मशीनों के लिए) rsync की तुलना में क्योंकि स्नैपशॉट + भेजने के लिए फ़ाइल टाइमस्टैम्प या चेकसम की तुलना करने की आवश्यकता नहीं है। zfs sendbtrfs send
कैस

BTW, ceph के साथ आपको एक ऑब्जेक्ट स्टोर के रूप में उपयोग करने का विकल्प भी मिलता है (जैसे amazon s3 या Openstacks का स्विफ्ट) एक फाइलसिस्टम के बजाय। वास्तव में, सेफ की एफएस वास्तव में अपने ऑब्जेक्ट-स्टोर के शीर्ष पर स्तरित है।
कैस

@ थोमस: rsync -aडेमन (स्रोत पर) का उपयोग करने में 200 मिनट लगते हैं, जो स्वीकार्य है से अधिक है। @ कैस: btrfs sendएक शॉट के लायक हो सकता है मैं इसे देखूंगा । मैं ऑब्जेक्ट स्टोर में नहीं जा सकता क्योंकि मैं एप्लिकेशन का डेवलपर नहीं हूं जो फ़ाइलों का उपयोग करता है।
user60039

जवाबों:


1

मैं प्रतिकृति का सुझाव देने के लिए इच्छुक हूं जो डेटा अज्ञेयवादी है, जैसे कि शराबी। बड़ी संख्या में फाइलें "ब्लॉक स्टोरेज" की तुलना में उच्च स्तर पर चलने वाली किसी भी चीज का कारण बनती हैं, ताकि आप पेड़ पर चलने के समय की राशि खर्च कर सकें - जैसा कि आपने rsync का उपयोग करके पाया है या inotify घड़ियों का निर्माण किया है।

मेरी व्यक्तिगत कहानी का संक्षिप्त संस्करण जो इस बात का समर्थन करता है: मैंने सिफ का उपयोग नहीं किया है, लेकिन मुझे पूरा यकीन है कि यह उनके प्राइम मार्केट टारगेट में चमक के समान समानता के आधार पर नहीं है। हालांकि, मैं पिछले कई वर्षों से ग्लस्टर के साथ इस तरह के समाधान को लागू करने की कोशिश कर रहा हूं। यह उस समय के सबसे ऊपर और चल रहा है, हालांकि कई प्रमुख संस्करण अपडेट हैं, लेकिन मुझे समस्याओं का कोई अंत नहीं है। यदि आपका लक्ष्य प्रदर्शन से अधिक अतिरेक है, तो ग्लस्टर एक अच्छा समाधान नहीं हो सकता है। विशेष रूप से यदि आपके उपयोग पैटर्न में बहुत सी स्टेट () कॉल हैं, तो ग्लस्टर प्रतिकृति के साथ वास्तविक रूप से अच्छा नहीं करता है। ऐसा इसलिए है क्योंकि प्रतिरूपित वॉल्यूम के लिए स्टेटस कॉल सभी प्रतिकृति नोड्स (वास्तव में "ईंटें" पर जाते हैं, लेकिन आप शायद प्रति मेजबान एक ईंट के लिए जा रहे हैं)। यदि आपके पास 2-तरफ़ा प्रतिकृति है, उदाहरण के लिए, क्लाइंट से प्रत्येक स्टेट () दोनों ईंटों की प्रतिक्रिया की प्रतीक्षा करता है ताकि यह सुनिश्चित हो सके कि यह वर्तमान डेटा का उपयोग कर रहा है। फिर आपके पास FUSE ओवरहेड और कैशिंग की कमी है अगर आप मूल चमक प्रणाली का उपयोग अतिरेक के लिए कर रहे हैं (बजाय चमक को NFS के साथ बैकेंड के रूप में उपयोग करने के लिए प्रोटोकॉल और अतिरेक के लिए अतिरेक के रूप में, जो अभी भी स्टेट के लिए बेकार है) () कारण । चमक वास्तव में बड़ी फ़ाइलों के साथ अच्छी तरह से करती है जहां आप कई सर्वरों में डेटा फैला सकते हैं, हालांकि; डेटा स्ट्रिपिंग और वितरण अच्छी तरह से काम करता है, क्योंकि यह वास्तव में इसके लिए क्या है। और नए RAID10-प्रकार की प्रतिकृति पुराने सीधे प्रतिकृति वाले संस्करणों की तुलना में बेहतर प्रदर्शन करती है। लेकिन, जो मैं अनुमान लगा रहा हूं, उसके आधार पर आपका उपयोग मॉडल है, मैं इसके खिलाफ सलाह दूंगा। फिर आपके पास FUSE ओवरहेड और कैशिंग की कमी है अगर आप मूल चमक प्रणाली का उपयोग अतिरेक के लिए कर रहे हैं (बजाय चमक को NFS के साथ बैकेंड के रूप में उपयोग करने के लिए प्रोटोकॉल और अतिरेक के लिए अतिरेक के रूप में, जो अभी भी स्टेट के लिए बेकार है) () कारण । चमक वास्तव में बड़ी फ़ाइलों के साथ अच्छी तरह से करती है जहां आप कई सर्वरों में डेटा फैला सकते हैं, हालांकि; डेटा स्ट्रिपिंग और वितरण अच्छी तरह से काम करता है, क्योंकि यह वास्तव में इसके लिए क्या है। और नए RAID10-प्रकार की प्रतिकृति पुराने सीधे प्रतिकृति वाले संस्करणों की तुलना में बेहतर प्रदर्शन करती है। लेकिन, जो मैं अनुमान लगा रहा हूं, उसके आधार पर आपका उपयोग मॉडल है, मैं इसके खिलाफ सलाह दूंगा। फिर आपके पास FUSE ओवरहेड और कैशिंग की कमी है अगर आप मूल चमक प्रणाली का उपयोग अतिरेक के लिए कर रहे हैं (बजाय चमक को NFS के साथ बैकेंड के रूप में उपयोग करने के लिए प्रोटोकॉल और अतिरेक के लिए अतिरेक के रूप में, जो अभी भी स्टेट के लिए बेकार है) () कारण । चमक वास्तव में बड़ी फ़ाइलों के साथ अच्छी तरह से करती है जहां आप कई सर्वरों में डेटा फैला सकते हैं, हालांकि; डेटा स्ट्रिपिंग और वितरण अच्छी तरह से काम करता है, क्योंकि यह वास्तव में इसके लिए क्या है। और नए RAID10-प्रकार की प्रतिकृति पुराने सीधे प्रतिकृति वाले संस्करणों की तुलना में बेहतर प्रदर्शन करती है। लेकिन, जो मैं अनुमान लगा रहा हूं, उसके आधार पर आपका उपयोग मॉडल है, मैं इसके खिलाफ सलाह दूंगा। जो अभी भी स्टेट () कारण के लिए बेकार है। चमक वास्तव में बड़ी फ़ाइलों के साथ अच्छी तरह से करती है जहां आप कई सर्वरों में डेटा फैला सकते हैं, हालांकि; डेटा स्ट्रिपिंग और वितरण अच्छी तरह से काम करता है, क्योंकि यह वास्तव में इसके लिए क्या है। और नए RAID10-प्रकार की प्रतिकृति पुराने सीधे प्रतिकृति वाले संस्करणों की तुलना में बेहतर प्रदर्शन करती है। लेकिन, जो मैं अनुमान लगा रहा हूं, उसके आधार पर आपका उपयोग मॉडल है, मैं इसके खिलाफ सलाह दूंगा। जो अभी भी स्टेट () कारण के लिए बेकार है। चमक वास्तव में बड़ी फ़ाइलों के साथ अच्छी तरह से करती है जहां आप कई सर्वरों में डेटा फैला सकते हैं, हालांकि; डेटा स्ट्रिपिंग और वितरण अच्छी तरह से काम करता है, क्योंकि यह वास्तव में इसके लिए क्या है। और नए RAID10-प्रकार की प्रतिकृति पुराने सीधे प्रतिकृति वाले संस्करणों की तुलना में बेहतर प्रदर्शन करती है। लेकिन, जो मैं अनुमान लगा रहा हूं, उसके आधार पर आपका उपयोग मॉडल है, मैं इसके खिलाफ सलाह दूंगा।

ध्यान रखें कि आपको मशीनों के बीच मास्टर चुनाव कराने या वितरित लॉकिंग को लागू करने का एक तरीका खोजना होगा। साझा ब्लॉक डिवाइस के समाधान के लिए एक फाइल सिस्टम की आवश्यकता होती है जो मल्टी-मास्टर अवगत होता है (जैसे जीएफएस), या इसके लिए केवल एक नोड फाइल सिस्टम को रीड-राइट माउंट करना होता है। जब फाइल उनके नीचे ब्लॉक डिवाइस के स्तर पर बदली जाती है तो सामान्य रूप से फाइलसिस्टम। इसका मतलब है कि आपके ग्राहकों को यह बताने में सक्षम होना होगा कि कौन सा मास्टर है, और वहां सीधे लेखन अनुरोध। यह एक बड़ा उपद्रव हो सकता है। यदि GFS और इसके सभी सहायक बुनियादी ढाँचे एक विकल्प हैं, तो मल्टी-मास्टर मोड में drbd (वे इसे "दोहरी प्राथमिक" कहते हैं) अच्छी तरह से काम कर सकते हैं। उस पर अधिक जानकारी के लिए https://www.drbd.org/en/doc/users-guide-83/s-dual-primary-mode

चाहे आप किसी भी दिशा में जाएं, आप यह जान सकते हैं कि यह अभी भी एक बहुत बड़ा दर्द है कि बिना रियलिटी के सिर्फ एक SAN कंपनी को पैसे का एक ट्रक-लोड दे दिया जाए।


मैं वितरित फाइल सिस्टम का उपयोग करने के लिए क्रॉन में rsync कमांड से माइग्रेट करने के प्रारंभिक चरणों में हूं। यदि ग्लस्टर सभी ईंटों पर स्टेट () चलाता है, तो मुझे समाधान के रूप में इस पर पुनर्विचार करने की आवश्यकता हो सकती है।
यीशुौर

1
यह केवल एक दोहराया फाइल सिस्टम में मामला है; यह stat()उन सभी ईंटों पर चलता है जिनमें आपके द्वारा देखे जा रहे विशिष्ट ब्लॉक की प्रतिकृतियां हैं। उदाहरण के लिए, यदि आपके पास 2x2 धारीदार प्रतिकृति है, statतो दो ईंटों पर प्रतिकृति ब्लॉक के साथ चलेगी, लेकिन अन्य दो पर नहीं। मेरे आवेदन में बहुत सारी छोटी फाइलों के साथ (प्रत्येक के 4K के तहत एक मिलियन फ़ाइलों के आदेश पर), न तो एनएफएस और न ही FUSE ने प्रतिकृति संस्करणों पर अच्छा प्रदर्शन प्रदान किया। और ~ 20 मशीनों के लिए georeplication कई विन्यासों में बहुत अविश्वसनीय था।
dannysauer

1
आपका माइलेज अलग-अलग हो सकता है, लेकिन मैं हर जगह ग्लस्टर से स्थानांतरित हो गया (जो मैं विशेष रूप से प्रतिकृति के लिए उपयोग कर रहा था, अन्य सभी बहुत अच्छी चीजों के लिए नहीं, ग्लस्टर वास्तव में अच्छा करता है) देशी फाइल सिस्टम पर rsync करने के लिए। :) मैं क्रोन के बजाय अब lsyncd ( github.com/axkibe/lsyncd ) की ओर देख रहा हूँ , इसलिए मैं ग्लस्टर ओवरहेड के बिना वास्तविक समय के पास पहुँच सकता हूँ।
dannysauer

0

मैं Proxmox VE सेटअप की मदद से rsync से ceph में स्थानांतरित हो गया हूं।

अब मैं लाइव प्रतिकृति के साथ एक क्लस्टर में 14TB का प्रबंधन कर रहा हूं। करीब 4 साल से।

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