ZFS पूल के वृद्धिशील / निरंतर बैकअप कैसे करें?


25

Zfs पूल निरंतर / वृद्धिशील रूप से ऑफसाइट कैसे हो सकते हैं?

मैं पहचानता हूं कि send/receivessh एक तरीका है, जिसमें स्नैपशॉट को मैन्युअल रूप से प्रबंधित करना शामिल है।

कुछ उपकरण हैं जो मैंने पाए हैं, लेकिन अधिकांश अब समर्थित नहीं हैं।

एक उपकरण जो आशाजनक दिखता है वह है https://github.com/jimsalterjrs/sanoid हालांकि मुझे चिंता है कि गैर-व्यापक रूप से ज्ञात उपकरण अधिक नुकसान कर सकता है फिर इसमें अच्छा है कि यह भ्रष्ट / डेटा को हटा सकता है।

निरंतर / वृद्धिशील zfs बैकअप कैसे किए जाते हैं?


2
मैं थोड़ी देर बाद जवाब दूंगा, लेकिन मेरे पास एक समाधान है जो प्राथमिक ZFS सर्वर से माध्यमिक तक हर 15 सेकंड में इस प्रकार की प्रतिकृति करता है।
इविविट

जवाबों:


33

ZFS एक अविश्वसनीय फाइल सिस्टम है और मेरे कई स्थानीय और साझा डेटा स्टोरेज जरूरतों को हल करता है।

हालांकि, मुझे जहाँ भी संभव हो, क्लस्टर किए गए ZFS के विचार पसंद हैं, कभी-कभी यह व्यावहारिक नहीं होता है, या मुझे स्टोरेज नोड्स के कुछ भौगोलिक अलगाव की आवश्यकता होती है।

मेरे पास उपयोग के मामलों में से एक लिनक्स एप्लिकेशन सर्वर पर उच्च-प्रदर्शन प्रतिकृति स्टोरेज के लिए है। उदाहरण के लिए, मैं एक विरासत सॉफ्टवेयर उत्पाद का समर्थन करता हूं जो अपने डेटा के लिए कम विलंबता NVMe SSD ड्राइव से लाभ उठाता है। एप्लिकेशन में एक एप्लिकेशन-स्तरीय मिररिंग विकल्प है जो एक द्वितीयक सर्वर को दोहरा सकता है, लेकिन यह अक्सर गलत होता है और 10 मिनट का आरपीओ होता है

मैंने एक सेकेंडरी सर्वर (समान या असमान हार्डवेयर पर ZFS चलाकर) इस समस्या को हल किया है जो स्थानीय, दूरस्थ या दोनों हो सकता है। नीचे दिए गए तीन उपयोगिताओं को मिलाकर, मैंने एक प्रतिकृति समाधान तैयार किया है जो मुझे निरंतर प्रतिकृति, गहरी स्नैपशॉट अवधारण और लचीली विफलता विकल्प देता है।

zfs-auto-snapshot - https://github.com/zfsonlinux/zfs-auto-snapshot

बस समय-समय पर ZFS फाइलसिस्टम स्तर स्नैपशॉट को सक्षम करने के लिए एक आसान उपकरण। मैं आम तौर पर उत्पादन संस्करणों पर निम्नलिखित अनुसूची के साथ चलता हूं:

# /etc/cron.d/zfs-auto-snapshot

PATH="/usr/bin:/bin:/usr/sbin:/sbin"

*/5 * * * * root /sbin/zfs-auto-snapshot -q -g --label=frequent --keep=24 //
00 * * * * root /sbin/zfs-auto-snapshot -q -g --label=hourly --keep=24 //
59 23 * * * root /sbin/zfs-auto-snapshot -q -g --label=daily --keep=14 //
59 23 * * 0 root /sbin/zfs-auto-snapshot -q -g --label=weekly --keep=4 //
00 00 1 * * root /sbin/zfs-auto-snapshot -q -g --label=monthly --keep=4 //

Syncoid (Sanoid) - https://github.com/jimsalterjrs/sanoid

यह प्रोग्राम एक ZFS फाइल सिस्टम के एड-हॉक स्नैप / प्रतिकृति को द्वितीयक लक्ष्य पर चला सकता है। मैं केवल उत्पाद के सिंकोइड भाग का उपयोग करता हूं

मान लिया जाये कि server1 और server2 से, साधारण आदेश रन server2 करने के लिए खींच से डेटा server1 :

#!/bin/bash

/usr/local/bin/syncoid root@server1:vol1/data vol2/data

exit $?

मोनीट - https://mmonit.com/monit/

मोनीत एक बेहद लचीला काम करने वाला और निष्पादन प्रबंधक है। डिफ़ॉल्ट रूप से, यह 30-सेकंड के अंतराल पर काम करता है, लेकिन मैं 15-सेकंड के आधार समय चक्र का उपयोग करने के लिए कॉन्फ़िगर को संशोधित करता हूं।

एक उदाहरण विन्यास जो हर 15 सेकंड (1 चक्र) से ऊपर की प्रतिकृति स्क्रिप्ट को चलाता है।

check program storagesync with path /usr/local/bin/run_storagesync.sh
        every 1 cycles
        if status != 0 then alert

यह कॉन्फ़िगरेशन प्रबंधन के माध्यम से स्वचालित करने और जोड़ने के लिए सरल है। मोनेट में स्नैपशॉट / प्रतिकृति के निष्पादन को लपेटकर, आपको केंद्रीकृत स्थिति, नौकरी नियंत्रण और चेतावनी (ईमेल, एसएनएमपी, कस्टम स्क्रिप्ट) मिलती है।


इसका परिणाम यह है कि मेरे पास ऐसे सर्वर हैं जिनमें कई महीनों के मासिक स्नैपशॉट और रोलबैक और रिटेंशन के कई बिंदु हैं: https://pastebin.com/zuNzgi0G - प्लस, एक सतत रोलिंग 15-सेकंड परमाणु प्रतिकृति:

# monit status

Program 'storagesync'
  status                            Status ok
  monitoring status                 Monitored
  last started                      Wed, 05 Apr 2017 05:37:59
  last exit value                   0
  data collected                    Wed, 05 Apr 2017 05:37:59
.
.
.
Program 'storagesync'
  status                            Status ok
  monitoring status                 Monitored
  last started                      Wed, 05 Apr 2017 05:38:59
  last exit value                   0
  data collected                    Wed, 05 Apr 2017 05:38:59

4
पोस्ट करने के लिए धन्यवाद, आपका जवाब अभूतपूर्व है और वास्तव में मैं क्या देख रहा था (प्रक्रिया की निगरानी करने के लिए विलंबता से)। इसके अलावा github.com/ewwhite/zfs-ha/wiki और मैं पूरी तरह से प्रभावित हूं। धन्यवाद एक बार फिर से :)
ग्रेग

6

आपके पास दो अलग-अलग तरीके हैं जिनसे आप यह कर सकते हैं:

  1. पारंपरिक, फाइल सिस्टम-अज्ञेयवाद तरीका है कि /, पिछले दशकों के लिए इस्तेमाल किया गया था उपकरण की तरह साथ rsyncया Bacula। वहां आपने परीक्षण किया है और (उम्मीद है) स्थिर, बड़े सॉफ़्टवेयर को बड़ी तैनाती के लिए अनुकूलित किया जा सकता है और इसका उपयोग तब भी किया जा सकता है जब आप एफएफएस से स्विच करते हैं
  2. ZFS का लाभ उठाने वाले उपकरणों में से एक send/recv। यह या तो आपका अपना समाधान हो सकता है, गितुब एट अल पर विभिन्न लोगों से एक स्क्रिप्ट या विस्तारित स्क्रिप्ट। या अधिक फीचर युक्त उपकरण जैसे कि सनोइड या ज़नाज़ेंडेंड (mbuffer समर्थन और अवधारण योजनाओं के साथ भेजें / पुनः भेजें)। इस मामले में आपको सबसे अधिक संभावना है कि कोई भी बड़ा, "एंटरप्राइस" (नकारात्मक अर्थ में) समाधान नहीं मिलेगा, लेकिन ऐसे उपकरण जो केवल एक ही काम करते हैं और आपके विशिष्ट सेटअप को पूरा करने के लिए अन्य उपकरणों के साथ जोड़ा जा सकता है।

सामान्य तौर पर, मैं केवल एक उपकरण पर भरोसा करूंगा जिसका स्रोत कोड उपलब्ध है, और मैं इसे यथासंभव सरल रखूंगा। यदि उपयोग करना है send/recv, तो आपको बहुत अधिक प्रबंधन नहीं करना है, बस आपको स्नैपशॉट n-1 को स्थानीय तरफ हटाना होगा जब रिमोट साइड पर स्नैपशॉट n का प्रसारण और स्थापना सफल रही।

आप अपने परिवहन को किसी भी तरह से विभाजित कर सकते हैं, यह async भी हो सकता है (स्नैपशॉट को तुरंत प्राप्त करने की आवश्यकता नहीं है), यदि आप सिर्फ लोहे का नियम रखते हैं जिसे आप केवल स्थानीय वर्तमान / नए और स्थानीय पिछले स्नैपशॉट के बीच एक अंतर भेज सकते हैं , और यह कि स्थानीय पिछला स्नैपशॉट दूरस्थ पक्ष पर सबसे हाल का है (जब तक बैकअप समाप्त नहीं हो जाता है और सब कुछ रीसेट हो जाता है)।

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


मैं यह नहीं देखता कि rsyncएक बड़े स्तर के फाइल-सिस्टम की लगातार नकल करने के लिए एक- आधारित समाधान कैसे स्केल होगा। परिवर्तन तेजी से rsyncहो सकता है की तुलना में उन्हें खोज सकता है।
एंड्रयू हेनले

2
@AndrewHenle मैं इसके लिए कोई वकालत नहीं करूंगा, मैं सिर्फ इसे प्रस्तुत करना चाहता था, क्योंकि प्रश्न में डेटा का दायरा / आकार या समय-सीमा निर्दिष्ट नहीं की गई थी। अतः अनैतिक कार्रवाई के मामले में यह एक संभावना हो सकती है अगर यह फाइलसिस्टम-अज्ञेयवादी होनी चाहिए। बेशक, आप अच्छा ब्लॉक-स्तरीय डेल्टा खो देंगे ...
user121391

@ user121391 खुलने के तरीके के बारे में आपसे पूरी तरह सहमत है। आपकी विस्तृत प्रतिक्रिया के लिए धन्यवाद।
ग्रेग

@ जैसे ही मैं टाइप कर रहा हूं ...
evhite

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