बहुत छेड़छाड़ और प्रयोग के बाद, मैंने एक समाधान ढूंढ लिया है, भले ही काफी बड़े व्यापार के साथ।
सबसे पहले, जिन विकल्पों को मुझे खारिज करना था:
मिरर किए हुए पूल के साथ दूसरा ऑफसाइट ZFS सर्वर होने के कारण लागत का कोई विकल्प नहीं था। अगर यह एक विकल्प होता तो यह अब तक का सबसे अच्छा तरीका होता, ZFS सेंड / रिसीव करने के लिए रिमोट पूल में शिप स्नैपशॉट का उपयोग करना।
दूसरा ऑनसाइट ZFS मिरर पूल है, जिसे मैं घर ले जाने के लिए डिस्क निकाल सकता था। यह पहले विकल्प की तुलना में अधिक संभव है, लेकिन मुझे दूसरे पूल को हमेशा दो डिस्क ऑनसाइट (या एक एकल डिस्क पर दो डेटा-प्रतियों का उपयोग करने के लिए) की आवश्यकता होगी। वर्तमान में मेरे पास चार डिस्क हैं, और सर्वर में पांचवें के लिए अधिक जगह नहीं है। यह एक उचित दृष्टिकोण होगा लेकिन फिर भी आदर्श नहीं होगा।
ZFS अटैचमेंट और डिटैच किए गए पूल के अंदर और बाहर बैकअप डिस्क को घुमाने के लिए अलग करें। यह अच्छी तरह से काम करता है, लेकिन हर बार डिस्क को जोड़ने पर एक पूर्ण पुनर्विक्रेता करना पड़ता है। यह अस्वीकार्य रूप से लंबा है, और इसलिए मैं इस पर भरोसा नहीं कर सकता।
मेरा समाधान उपयोग करने के लिए समान है attachऔर detach, हालांकि यह उपयोग करता है onlineऔर offline। यह एक पूर्ण resilvering बनाम एक डेल्टा resilvering प्रदर्शन करने का लाभ है, लेकिन दोष यह है कि पूल हमेशा एक DEGRADEDराज्य की रिपोर्ट करता है (पूल में हमेशा दो डिस्क होते हैं; घूर्णन ऑफसाइट डिस्क offlineतब चिह्नित होते हैं जब वे दूरस्थ भंडारण और फिर से तैयार करने वाले में होते हैं और फिर ऑनलाइन आते हैं; जब वे ऑनसाइट हों)।
इसलिए, मेरे सेटअप का एक त्वरित पुनर्कथन और अवलोकन:
मेरे पास एक ZFS सर्वर और चार समान डिस्क हैं। ZFS एक मिरर पूल का उपयोग करने के लिए सेटअप है। चार डिस्क में से दो इस पूल के स्थायी सदस्य हैं। अन्य दो डिस्क घूमती हैं; एक हमेशा ऑफसाइट स्टोरेज में रहता है, दूसरा रेडी-टू-गो बैकअप के रूप में कार्य करने के लिए पूल का हिस्सा है।
जब बैकअप को घुमाने का समय आता है:
मैं प्रतीक्षा zfs scrubकरने के लिए पर्याप्त रूप से आश्वस्त करने के लिए बैकअप डिस्क त्रुटि मुक्त होने का इंतजार करता हूं
मैं zfs offlineडिस्क जो रिमोट से ली जाएगी। इसके ऑफ़लाइन होने के बाद मैं hdparm -Y /dev/idइसे नीचे स्पिन करना चाहूंगा । एक मिनट के बाद मैं आंशिक रूप से डिस्क स्लेज को हटा देता हूं (बस अपनी खोई हुई शक्ति को सुनिश्चित करने के लिए पर्याप्त है) और फिर ड्राइव को पूरी तरह से खींचने से पहले एक और मिनट दे यह गारंटी देने के लिए कि उसने कताई बंद कर दी है। डिस्क एक स्थिर बैग में जाती है और फिर एक सुरक्षात्मक केस और ऑफसाइट जाती है।
मैं अन्य ऑफसाइट डिस्क में लाता हूं। यह हॉटस्वाप ट्रे में स्थापित हो जाता है और ऊपर घूमता है। मैं zfs onlineपूल को डिस्क को पुनर्स्थापित करने के लिए उपयोग करता हूं और इसे समवर्ती बनाने के लिए आंशिक रेज़िवरिंग को किक करता हूं।
यह प्रणाली इस बात की गारंटी देती है कि किसी भी समय मेरे पास दो ONLINEदर्पण डिस्क और एक OFFLINEरिमोट डिस्क (जिसे स्क्रब किया गया है)। चौथी डिस्क को या तो फिर से ऑनलाइन या ऑनलाइन किया जा रहा है, जिसका लाभ यह है कि यदि कोई रनिंग ड्राइव विफल हो जाता है, तो शायद पूल अभी भी दो ऑनलाइन डिस्क के अनुरूप होगा।
यह पिछले कुछ हफ्तों के लिए अच्छी तरह से काम किया है, लेकिन मैं अभी भी इसे हैकिश दृष्टिकोण मानूंगा। अगर मैं किसी बड़े मुद्दे में भागता हूं तो मैं फॉलो करूंगा।
अद्यतन: कुछ महीनों के लिए इस के साथ चलने के बाद, मैंने पाया है कि मेरी वास्तविक दुनिया में रीसाइलवरिंग का उपयोग एक ही समय के लिए अलग हो रहा है / संलग्न और ऑफ़लाइन / ऑनलाइन। मेरे परीक्षण में मुझे नहीं लगता कि मैं एक स्क्रब चला रहा था - मेरा कूबड़ यह है कि अगर कोई ड्राइव स्क्रब के लिए ऑफ़लाइन है, तो उसे एक पूर्ण रेज़लवर की आवश्यकता होती है।