ZFS स्नैपशॉट रोटेशन के साथ बैकअप के रूप में फाइल करने के लिए


14

मेरे पास एक स्थानीय FreeNAS प्रणाली है और बैकअप के लिए ZFS स्नैपशॉट का उपयोग करना चाहते हैं।
FreeNAS में अंतर्निहित प्रतिकृति कार्य हैं जो उपयोग करते हैं

zfs send snapshot_name

एक रिमोट सिस्टम के लिए एक स्नैपशॉट भेजने के लिए। लेकिन इसके लिए दूसरे छोर पर ZFS के साथ एक सिस्टम की जरूरत है।

मैं स्नैपशॉट को एक फ़ाइल में भेजना चाहता हूं और इस संपीड़ित और एन्क्रिप्टेड फ़ाइल को रिमोट मशीन पर भेजना चाहता हूं।

इसके साथ संभव है

zfs send snapshot_name | gzip | openssl enc -aes-256-cbc -a -salt > file.gz.ssl

हर दिन मैं भंडारण पूल का एक स्नैपशॉट बनाता हूं और 30 दिनों के लिए हर स्नैपशॉट रखता हूं।
हर स्नैपशॉट के साथ मैं इस स्नैपशॉट को फ़ाइल में पाइप करूँगा।
- Snapshot_file 1 में हर फ़ाइल है ( मान लें 2GB)
- Snapshot_file 2 में केवल स्नैपशॉट_ file 1 में परिवर्तन होता है (
मान लें 5MB) - Snapshot_file 3 में स्नैपशॉट_फ़ाइल 2 में परिवर्तन होता है; और इसी तरह।

31 दिन स्नैपशॉट_फाइल 1 डिलीट हो रहा है (क्योंकि मैं केवल पिछले 30 दिनों से बदलाव चाहता हूं)

इसलिए स्नैपशॉट_फाइल 2 को हर फाइल को होल्ड करने की जरूरत है (2 जीबी के स्नैपशॉट_फाइल 1 + 5 एमबी बदलाव)

लेकिन इस दृष्टिकोण के साथ हर दिन (31 दिन से) एक नई 2 जीबी फाइल बनानी होगी और रिमोट सिस्टम पर भेजनी होगी। यह बहुत अधिक उपरि है।

X दिनों के इतिहास के साथ बैकअप रणनीति के रूप में एक फ़ाइल में स्नैप किए गए स्नैपशॉट का उपयोग करने के लिए सबसे अच्छा तरीका क्या होगा?

पुनश्च: मुझे पता है कि वहाँ बहुत सारे बैकअप सॉफ़्टवेयर हैं (उदाहरण के लिए rdiff- बैकअप), जिनका मैं उपयोग कर सकता था। लेकिन मैं उत्सुक हूं कि यह कैसे किया जा सकता है।


आप zfs recvदूसरे छोर पर ( zfs set compression=gzip-9उदाहरण के लिए एक पूल पर ) का उपयोग क्यों नहीं करते हैं । स्नैपशॉट फ़ाइलें संग्रहीत करना मेरे लिए बहुत अक्षम लगता है।
स्टीफन चेजलस

1
@StephaneChazelas क्योंकि मेरे पास दूसरे छोर पर ZFS फाइल सिस्टम नहीं है। मेरा रिमोट सिस्टम ext4 के साथ एक जेंटो बॉक्स है (मुझे पता है कि मैं zfsonlinux स्थापित कर सकता हूं, लेकिन मैं नहीं)
मार्टिन

जवाबों:


12

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

प्राप्त पक्ष पर ZFS

यदि आप भेजने पर ZFS का उपयोग करते हैं और प्राप्त होने पर आप पूरे स्नैपशॉट को स्थानांतरित करने से बच सकते हैं और केवल पिछले एक की तुलना में स्नैपशॉट के अंतर को स्थानांतरित कर सकते हैं:

ssh myserver 'zfs send -i pool/dataset@2014-02-04 pool/dataset@2014-02-05' | \
  zfs receive

ZFS स्नैपशॉट के बारे में जानता है और केवल एक बार ही आपसी ब्लॉक को संग्रहीत करता है। फाइल सिस्टम को समझने से स्नैपशॉट आपको समस्याओं के बिना पुराने को हटाने में सक्षम बनाता है।

प्राप्त करने के पक्ष में अन्य फाइल सिस्टम

आपके मामले में आप अलग-अलग फ़ाइलों में स्नैपशॉट संग्रहीत करते हैं, और आपकी फ़ाइल प्रणाली स्नैपशॉट से अनजान है। जैसा कि आपने पहले ही देखा है, यह रोटेशन को तोड़ता है। आपको या तो पूरे स्नैपशॉट को प्रसारित करना होगा, जो बैंडविड्थ और स्टोरेज स्पेस को बर्बाद करेगा, लेकिन आपको व्यक्तिगत स्नैपशॉट को हटाने में सक्षम बनाता है। वे एक दूसरे पर निर्भर नहीं हैं। आप वृद्धिशील स्नैपशॉट इस तरह कर सकते हैं:

ssh myserver 'zfs send -i pool/dataset@2014-02-04 pool/dataset@2014-02-05' \
  > incremental-2014-02-04:05

वृद्धिशील स्नैपशॉट को पुनर्स्थापित करने के लिए आपको पिछले स्नैपशॉट की भी आवश्यकता है। इसका मतलब है कि आप पुराने वेतन वृद्धि को नहीं हटा सकते।

संभव समाधान

आप वृद्धिशीलता कर सकते हैं जैसा कि मेरे पिछले उदाहरण में दिखाया गया है और हर महीने एक नया गैर-वृद्धिशील कार्य करता है। नए वेतन वृद्धि इस गैर-वृद्धिशील पर निर्भर करते हैं और आप पुराने स्नैपशॉट को हटाने के लिए स्वतंत्र हैं।

या आप अन्य बैकअप समाधानों में देख सकते हैं। नहीं है rsnapshot है, जो का उपयोग करता है rsyncऔर हार्ड लिंक। यह रोटेशन पर बहुत अच्छा काम करता है और बहुत बैंडविड्थ कुशल है, क्योंकि इसे केवल एक बार पूर्ण बैकअप की आवश्यकता होती है।

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

हालाँकि, सबसे अच्छा समाधान, ZFS को प्राप्त करने के पक्ष में उपयोग करना है। यह बैंडविड्थ कुशल, भंडारण कुशल और अन्य समाधानों की तुलना में बहुत तेज होगा। मैं वास्तव में केवल यह सोच सकता हूं कि आपके पास उस बॉक्स पर न्यूनतम 8 GiB ECC मेमोरी होनी चाहिए (यदि आप कोई सेवा नहीं चलाते हैं और केवल इसका उपयोग करते हैं तो आप 4 GiB के साथ ठीक हो सकते हैं zfs receive)।


हाँ, मुझे पता है। लेकिन क्या होगा अगर मैं हटा दूं (क्योंकि मैं केवल 30 दिनों का इतिहास रखना चाहता हूं) फ़ाइल डाटासेट @ 2014-02-04? फिर मेरे पास केवल फ़रवरी, 4, लेकिन हर फ़ाइल के बाद किए गए परिवर्तन नहीं हैं।
मार्टिन Grohmann

2
@MartinGrohmann मैं देख रहा हूं कि अब आपका क्या मतलब है। खैर यह ZFS की सुंदरता है, आप समस्याओं के बिना ZFS पर पुराने स्नैपशॉट को हटा सकते हैं। अन्य फाइल सिस्टम पर आपको पुराने को रखना होगा। हो सकता है कि आप rsnapshotतब से कुछ बेहतर कर रहे हों । या आप एक महीने के बाद एक नया गैर-वेतन वृद्धि शुरू कर सकते हैं और फिर पिछले वेतन वृद्धि को हटा सकते हैं।
मार्को

आपके सहयोग के लिए धन्यवाद; मुझे सिर्फ डुप्लिकेट मिला, यह शायद एन्क्रिप्शन की क्षमता के साथ जाने का तरीका है।
मार्टिन ग्रोहमैन

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

यदि आपके स्रोत से बैंडविड्थ समस्या है, तो एक संभावित समाधान (जो मैं अपने घर जेडएफएस एनएएस के लिए अभी लागू कर रहा हूं) हमेशा अपने रिमोट स्टोरेज में इंक्रीमेंट भेजना है, लेकिन महीने में एक बार रिमोट फ्रीबीएसडी वीपीएस (जैसे, पर) स्पिन करें डिजिटल महासागर) जो तब अंतिम पूर्ण स्नैपशॉट खोल सकता है, zfs इसमें कुछ # वृद्धिशील की पुनरावृत्ति करते हैं, फिर परिणाम को एक नए स्नैपशॉट के रूप में संग्रहीत करते हैं। नया आधार बैकअप बनाने के लिए वीपीएस को केवल लंबे समय तक चलने की आवश्यकता है। डिजिटल महासागर में एक एपीआई है जो उनके वीपीएस के आसान निर्माण / विनाश की अनुमति देता है। और आपके स्थानीय सिस्टम को केवल वृद्धिशील बैकअप भेजने की आवश्यकता है।
अटक गया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.