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