ZFS मिरर पूल के लिए एक प्रभावी ऑफ़साइट बैकअप रणनीति क्या है?


9

मैं एक ZFS पूल का उपयोग करता हूं जिसमें दो प्रतिबिंबित डिस्क हैं। ऑफसाइट बैकअप जाने के लिए, मैंने दो और डिस्क खरीदे हैं।

मेरी प्रारंभिक योजना आईने में तीसरी डिस्क संलग्न करके ऑफ़सेट बैकअप बनाने की थी, ZFS के फिर से तैयार होने की प्रतीक्षा कर रहा था, फिर ड्राइव को अलग कर दिया और ऑफ़साइट ले गया। यह काफी अच्छी तरह से काम करता है, लेकिन मुझे आश्चर्य है कि यह एक डिस्क संलग्न होने पर हर बार एक पूर्ण रेज़लवर प्रदर्शन करने के लिए प्रकट होता है (मैंने पढ़ा है, और संभवतः गलत समझा, कि प्रत्येक अनुलग्नक एक वृद्धिशील या डेल्टा रेज़लवर में परिणाम होगा)। बैकअप में यह परिणाम स्वीकार्य होने से अधिक समय तक रहता है।

मेरी आवश्यकताओं में मेरी ज़ूलू और उसके सभी स्नैपशॉट की ऑफ़साइट कॉपी होनी चाहिए जिन्हें मैं रोज़ाना घुमा सकता हूं। इसका मतलब यह है कि रिसिल्वेरिंग को अधिकतम 24 घंटे लेने की आवश्यकता है - वर्तमान में यह उसके करीब है, लेकिन हमारे पूल बढ़ने की हमारी योजना इसे उस समय सीमा से परे धकेल देगी।

मैं ऑफसाइट बैकअप कैसे रख सकता हूं जिसके लिए एक पूर्ण पुनर्जीवन संचालन की आवश्यकता नहीं है? क्या मुझे अपने बैकअप ड्राइव पर एक अलग फाइल सिस्टम का उपयोग करना चाहिए (जैसे कि उन्हें ZFS पूल का हिस्सा होने के बजाय एक छवि निर्यात करना)? क्या मुझे एक अलग पूल में बैकअप रखना चाहिए और नए स्नैपशॉट भेजना चाहिए जैसे कि वे बनाए जाते हैं?


मेरी वर्तमान रणनीति कई पूल विधि है, जिसमें स्नैपशॉट भेजने और प्राप्त करने के लिए zfs के साथ समन्वयित है। यह सुनना अच्छा लगेगा कि क्या आपको इसके विरुद्ध या एक बेहतर विकल्प मिला है।
so12311

जवाबों:


3

बहुत छेड़छाड़ और प्रयोग के बाद, मैंने एक समाधान ढूंढ लिया है, भले ही काफी बड़े व्यापार के साथ।

सबसे पहले, जिन विकल्पों को मुझे खारिज करना था:

  • मिरर किए हुए पूल के साथ दूसरा ऑफसाइट 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रिमोट डिस्क (जिसे स्क्रब किया गया है)। चौथी डिस्क को या तो फिर से ऑनलाइन या ऑनलाइन किया जा रहा है, जिसका लाभ यह है कि यदि कोई रनिंग ड्राइव विफल हो जाता है, तो शायद पूल अभी भी दो ऑनलाइन डिस्क के अनुरूप होगा।

यह पिछले कुछ हफ्तों के लिए अच्छी तरह से काम किया है, लेकिन मैं अभी भी इसे हैकिश दृष्टिकोण मानूंगा। अगर मैं किसी बड़े मुद्दे में भागता हूं तो मैं फॉलो करूंगा।


अद्यतन: कुछ महीनों के लिए इस के साथ चलने के बाद, मैंने पाया है कि मेरी वास्तविक दुनिया में रीसाइलवरिंग का उपयोग एक ही समय के लिए अलग हो रहा है / संलग्न और ऑफ़लाइन / ऑनलाइन। मेरे परीक्षण में मुझे नहीं लगता कि मैं एक स्क्रब चला रहा था - मेरा कूबड़ यह है कि अगर कोई ड्राइव स्क्रब के लिए ऑफ़लाइन है, तो उसे एक पूर्ण रेज़लवर की आवश्यकता होती है।


क्या यह निश्चित रूप से चार के बजाय सिर्फ तीन उपकरणों के साथ काम नहीं करेगा? ओरेकल सोलारिस ZFS व्यवस्थापन मार्गदर्शिका कहा गया है कि एक दर्पण पूल गलती है "अगर सभी घटकों को एक दर्पण के निकाल दिए जाते हैं" [जोर मेरा], जो सूचित करते हैं कि एक चौथा ड्राइव सख्ती से आवश्यक नहीं है प्रतीत होता है।
केनी एविट

1
तीन उपकरणों से क्या आपका मतलब है कि दो डिस्क जो हमेशा पूल में होती हैं और एक जो कभी-कभार ऑफ़साइट होती है, या एक डिस्क जो हमेशा पूल में होती है और दो जो ऑफ़साइट घुमाती हैं? दूसरे विकल्प के साथ मैं डेटा हानि की उम्मीद करूंगा यदि पूल खराब डेटा का सामना करता है, जबकि केवल एक पूरी तरह से ऑनलाइन डिस्क है (जब दूसरी डिस्क को या तो घुमाया जा रहा है या अभी तक पूरी तरह से फिर से तैयार नहीं किया गया है)। मेरा दो-सेंट हमेशा यह सुनिश्चित करना है कि आपके प्रतिबिंबित पूल में दो पूर्णकालिक ऑनलाइन डिस्क हैं।
STW

मेरा मतलब है कि दूसरा विकल्प जिसका आप उल्लेख करते हैं। उस विकल्प के साथ, केवल एक डिस्क ऑनलाइन होने पर डेटा खराब होने की कितनी संभावना है? आंशिक / वृद्धिशील लचीलापन अपेक्षाकृत जल्दी होना चाहिए, है ना? और यहां तक ​​कि अगर खराब डेटा था, तो क्या आपको दूसरी ड्राइव से उबरने में सक्षम नहीं होना चाहिए? या तीसरी ड्राइव से उबरना, सबसे खराब स्थिति? [जाहिर है कि ऐसे परिदृश्य हैं जहां वसूली संभव नहीं है; लेकिन यह चार ड्राइव के साथ भी सच है; या वास्तव में कोई भी संख्या।]
केनी एविट

मैं हमेशा दो ऑनलाइन मिरर किए डिस्क्स के साथ रहता हूँ, एक तीसरे और चौथे के साथ बैकअप को घुमाने के लिए। किसी भी समय आपके पास दर्पण में सिर्फ एक ऑनलाइन डिस्क है एक समय है कि आप असुरक्षित हैं - और यहां तक ​​कि मेरे दृष्टिकोण के साथ भी जोखिम है कि ऑफ़सेट बैकअप डिस्क अखंडता मुद्दों को विकसित कर सकती है और 100% पुनर्प्राप्त करने योग्य नहीं हो सकती है (आदर्श रूप से वहां हो सकती है) किसी भी समय दो दर्पण डिस्क से हो, ताकि दोनों की अखंडता की तुलना की जा सके)।
STW

इसे योग करने के लिए, ZFS सभी डेटा की एक प्रति से बचने (या कम से कम समता होने, खराब डेटा के पुनर्निर्माण की अनुमति) के बारे में है। जब आपके पास केवल एक ऑनलाइन डिस्क या बैकअप डेटा की एक प्रति होती है, तो यह डेटा हानि का खतरा होता है।
STW

2

Zfs आपके स्नैपशॉट को दूरस्थ ZFS मशीन पर क्यों नहीं भेजते? मैं इसके लिए एक सरल बैश स्क्रिप्ट का उपयोग करता हूं:

#!/usr/local/bin/bash
# ZFS Snapshot BASH script by Shawn Westerhoff
# Updated 1/14/2014

### DATE VARIABLES
# D = Today's date
# D1 = Yesterday's date
# D# = Today less # days date
Y=$(date -v-1d '+%m-%d-%Y')
D=$(date +%m-%d-%Y)
D1=$(date -v-1d '+%m-%d-%Y')
D10=$(date -v-10d '+%m-%d-%Y')
D20=$(date -v-20d '+%m-%d-%Y')

# Step 1: Make the snapshots

for i in $( zfs list -H -o name ); do
    if [ $i == tier1 ]
    then echo "$i found, skipping"
    else
    zfs snapshot $i@$D
    fi
done

# Step 2: Send the snapshots to backup ZFS sever

    for i in $( zfs list -H -o name ); do
        zfs send -i $i@$D1 $i@$D | ssh -c arcfour root@10.10.10.10 zfs recv $i
    done

# Step 3: Destroy snapshots that are 20 days old

for i in $( zfs list -H -o name ); do
        if [ $i == tier1 ]
        then echo "$i found, skipping"
        else
        zfs destroy $i@$D20
        fi
done

0

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

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