अमेज़न ग्लेशियर
संक्षेप में - अमेज़न ग्लेशियर अभिलेखागार / बैकअप को स्टोर करने के लिए डिज़ाइन की गई एक बहुत ही आकर्षक स्टोर प्राइस सेवा है। लेकिन अभिलेखागार को बहाल करने की प्रक्रिया जटिल और / या महंगी है। हालांकि, सेवा माध्यमिक बैकअप के लिए काफी उपयुक्त है।
ग्लेशियर के बारे में अधिक पहले से ही एक geek पत्रिका पर
लिखा थापोस्ट किस बारे में है
मैं ग्लेशियर सेवा के साथ स्थानीय निर्देशिका को सिंक्रनाइज़ करने के लिए पर्ल में ओपन सोर्स क्लाइंट को साझा करना चाहता हूं, ग्लेशियर के साथ काम करने की कुछ बारीकियों के बारे में भी बताता हूं और इसके काम के वर्कफ़्लो का वर्णन करता हूं।
कार्यात्मक
तो mtglacier। गिटहब
लिंककार्यक्रम की विशेषताएं:
- AWS प्रोटोकॉल को स्वतंत्र रूप से लागू किया गया है, तीसरे पक्ष के पुस्तकालयों का उपयोग नहीं किया जाता है। क्या यह अपने आप अमेज़न हस्ताक्षर संस्करण 4 हस्ताक्षर प्रक्रिया और पेड़ हैश गणना
- कार्यान्वित मल्टीपार्ट अपलोड
- अभिलेखों को अपलोड / डाउनलोड / हटाएं
- मल्टीथ्रेडिंग और मल्टीपार्ट अपलोड का संयोजन। यानी तीन धाराएं फाइल ए के कुछ हिस्सों को अपलोड कर सकती हैं, दो और - फाइल बी के कुछ हिस्सों, फाइल सी के अन्य आरंभ अपलोड आदि।
- स्थानीय लॉग फ़ाइल (केवल एपेंड मोड में लिखने के लिए खोला गया)। आखिरकार, ग्लेशियर के साथ फाइलों की एक सूची प्राप्त करने के लिए आपको 4 घंटे इंतजार करना होगा
- लॉग के साथ स्थानीय फ़ाइल चेकसम की तुलना करने की क्षमता
- अभिलेखागार को डाउनलोड करते समय, एक बार में डाउनलोड की जाने वाली फ़ाइलों की संख्या को सीमित करने की क्षमता (डाउनलोडिंग अभिलेखों की विशेष बिलिंग के कारण आवश्यक है)
परियोजना का लक्ष्य
एक कार्यक्रम में चार चीजों को लागू करें (यह सब अलग है, लेकिन एक साथ नहीं)
- पर्ल कार्यान्वयन - मेरा मानना है कि जिस भाषा / तकनीक में प्रोग्राम बनाया गया है, वह अंतिम उपयोगकर्ता / व्यवस्थापक के लिए भी महत्वपूर्ण है। इसलिए विभिन्न भाषाओं में कार्यान्वयन का विकल्प रखना बेहतर है
- अमेज़न S3 के समर्थन के लिए योजना बनाना सुनिश्चित करें
- मल्टीपार्ट ऑपरेशन + मल्टीथ्रेड ऑपरेशन -
मल्टीपार्ट एक स्थिति से बचने में मदद करेगा जब आप कई गीगाबाइट किसी दूरस्थ सर्वर पर अपलोड करते हैं और अचानक कनेक्शन टूट जाता है। डाउनलोडिंग की गति बढ़ रही है, और छोटी फ़ाइलों के एक समूह को लोड करने या बड़ी संख्या में फ़ाइलों को हटाने में महत्वपूर्ण रूप से गति है
- प्रोटोकॉल के स्वयं के कार्यान्वयन - यह कोड को पुन: प्रयोज्य बनाने और CPAN पर अलग-अलग मॉड्यूल के रूप में प्रकाशित करने की योजना है
यह कैसे काम करता है
सेवा में फ़ाइलों को सिंक्रनाइज़ करते समय,
mtglacier एक लॉग (पाठ फ़ाइल) बनाता है जिसमें सभी अपलोड फ़ाइल संचालन दर्ज किए जाते हैं: प्रत्येक ऑपरेशन के लिए, स्थानीय फ़ाइल का नाम, अपलोड समय, ट्री हैश फ़ाइल, संग्रह_आईडी फ़ाइल प्राप्त की।
ग्लेशियर से स्थानीय डिस्क पर फ़ाइलों को पुनर्स्थापित करते समय, रिकवरी के लिए डेटा इस लॉग से लिया जाता है (जैसा कि ग्लेशियर पर फ़ाइलों को सूचीबद्ध करना केवल चार घंटे या उससे अधिक की देरी से संभव है)।
ग्लेशियर से फाइलें हटाना लॉग में विलोपन प्रविष्टियां जोड़ता है। ग्लेशियर में फिर से सिंक्रनाइज़ होने पर, केवल उन फाइलों को संसाधित नहीं किया जाता है, जो लॉग द्वारा देखते हैं।
दो-पास फ़ाइल पुनर्प्राप्ति प्रक्रिया:
- लॉग में मौजूद फ़ाइलों को डाउनलोड करने के लिए एक कार्य बनाया जाता है, लेकिन स्थानीय ड्राइव पर नहीं
- चार घंटे इंतजार करने के बाद, आप इन फ़ाइलों को डाउनलोड करने के लिए दूसरी कमांड चला सकते हैं
चेतावनी
- उपयोग करने से पहले अमेज़न वेबसाइट पर कीमतों की जाँच करें।
- अमेज़ॅन FAQ का अन्वेषण करें
- नहीं, वास्तव में, कीमतों की जांच करना सुनिश्चित करें
- ग्लेशियर के साथ "खेलने" से पहले, सुनिश्चित करें कि आप अंत में सभी अभिलेखागार को हटा सकते हैं। तथ्य यह है कि आप अमेज़ॅन कंसोल के माध्यम से अभिलेखागार को नहीं हटा सकते हैं और खाली वॉल्ट नहीं कर सकते हैं
- ग्लेशियर के साथ बहुपरत काम के लिए, आपको थ्रेड्स की इष्टतम संख्या का चयन करने की आवश्यकता है। अमेज़ॅन एक HTTP 408 टाइमआउट लौटाता है यदि यह प्रत्येक विशेष स्ट्रीम में बहुत धीरे-धीरे डाउनलोड करता है (उसके बाद mtglacier स्ट्रीम एक सेकंड के लिए रुकता है और फिर से प्रयास करता है, लेकिन पांच बार से अधिक नहीं)। तो बहु-थ्रेडेड डाउनलोड एकल-थ्रेडेड की तुलना में धीमा हो सकता है
- अभी के लिए - यह बीटा संस्करण है। उत्पादन में उपयोग के लिए अनुशंसित नहीं है
कैसे उपयोग करें
- अमेज़न कंसोल में वॉल्ट बनाएं
- Glacier.cfg बनाएं (उसी क्षेत्र को निर्दिष्ट करें जहां तिजोरी बनाई गई थी)
कुंजी = तुम्हारा
गुप्त = YourSECRET
क्षेत्र = हमें-पूर्व -1
- ग्लेशियर में अपनी स्थानीय निर्देशिका को सिंक्रनाइज़ करें। थ्रेड्स की संख्या को इंगित करने के लिए कंसीलर पैरामीटर का उपयोग करें
./mtglacier.pl sync --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log --concurrency=3
- आप फ़ाइलों को जोड़ सकते हैं और फिर से सिंक कर सकते हैं
- फ़ाइल अखंडता की जाँच करें (केवल लॉग के साथ जाँच की गई)
./mtglacier.pl check-local-hash --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log
- आप / डेटा / बैकअप से कुछ फ़ाइलों को हटा सकते हैं
- डेटा रिकवरी का काम बनाएँ। आप संग्रहित करना चाहते हैं की संख्या को निर्दिष्ट करने के लिए अधिकतम-संख्या-की-फ़ाइल पैरामीटर का उपयोग करें। फिलहाल, यह कई टन से अधिक मूल्य निर्दिष्ट करने के लिए अनुशंसित नहीं है (जब तक कि वर्तमान नौकरियों की सूची के साथ एक से अधिक पृष्ठ लोड नहीं किया गया है)
./mtglacier.pl restore --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log --max-number-of-files=10
- 4 घंटे या अधिक प्रतीक्षा करें
- हटाए गए फ़ाइलों को पुनर्प्राप्त करें
./mtglacier.pl restore-completed --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log
- यदि बैकअप की आवश्यकता नहीं है, तो ग्लेशियर की सभी फ़ाइलों को हटा दें
./mtglacier.pl purge-vault --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log
कार्यान्वयन
- HTTP / HTTPS संचालन LWP :: UserAgent के माध्यम से कार्यान्वित किया जाता है
- अमेज़ॅन एपीआई के साथ बातचीत खरोंच से लिखी जाती है, एकमात्र डाइजेस्ट :: SHA मॉड्यूल का उपयोग किया जाता है (कोर मॉड्यूल)
- अमेज़ॅन ट्री हैश का स्वतंत्र कार्यान्वयन (यह उनकी स्वयं की चेकसम गणना एल्गोरिथ्म है, TTH एल्गोरिदम के बीच समान नहीं मिला, सही नहीं है)
- कांटा प्रक्रियाओं का उपयोग करके बहुपरत कार्यान्वयन
- संकेतों के साथ असामान्य प्रसंस्करण की प्रक्रिया करें
- अंतर-प्रक्रिया संचार - अनाम पाइपों के माध्यम से
- FSM के समान ही नौकरी की कतार इसकी OOP ऑब्जेक्ट्स है
अब तक क्या गायब है
पहले बीटा के लिए मुख्य बात एक कठिन काम था (यह अल्फा नहीं है) संस्करण, सप्ताह के अंत तक तैयार है, इसलिए बहुत सारी चीजें अभी भी गायब हैं।
यह अनिवार्य होगा:
- समायोज्य चंक आकार
- गैर-मल्टीपार्ट अपलोड
- config में SNS सूचनाओं के लिए विषय
- SNS सूचनाओं के माध्यम से संकेत प्राप्त करने के लिए बाहरी दुनिया के साथ एकीकरण
- आंतरिक अपवर्तन
- जब मैंने उन्हें क्रम में रखा तो यूनिट परीक्षण प्रकाशित किए जाएंगे।
- एक अन्य टेस्टसुइट होगा, संभवतः एक ग्लेशियर सर्वर एमुलेटर
- बेशक वहाँ एक उत्पादन-तैयार संस्करण होगा (बीटा नहीं)