জেডএফএস একটি অবিশ্বাস্য ফাইল সিস্টেম এবং আমার অনেক লোকাল এবং শেয়ার্ড ডেটা স্টোরেজ প্রয়োজনীয়তা সমাধান করে।
যদিও, আমি যেখানেই সম্ভব ক্লাস্টার্ড জেডএফএসের ধারণার মতো করি , কখনও কখনও এটি ব্যবহারিক হয় না বা স্টোরেজ নোডগুলির কিছু ভৌগলিক বিচ্ছেদ প্রয়োজন need
আমার কাছে ব্যবহারের একটি ক্ষেত্রে লিনাক্স অ্যাপ্লিকেশন সার্ভারগুলিতে উচ্চ-কার্যকারিতা প্রতিলিপি করা স্টোরেজ। উদাহরণস্বরূপ, আমি এমন একটি লিগ্যাসি সফ্টওয়্যার পণ্য সমর্থন করি যা তার ডেটার জন্য নিম্ন-বিলম্বিত এনভিএম এসএসডি ড্রাইভ থেকে উপকৃত হয়। অ্যাপ্লিকেশনটিতে একটি অ্যাপ্লিকেশন-স্তরের মিররিং বিকল্প রয়েছে যা একটি গৌণ সার্ভারে প্রতিলিপি করতে পারে তবে এটি প্রায়শই ভুল হয় এবং এটি 10 মিনিটের আরপিও হয় ।
আমি স্থানীয়, দূরবর্তী বা উভয় হতে পারে এমন একটি গৌণ সার্ভার (একই রকম বা ভিন্ন ভিন্ন হার্ডওয়্যারে জেডএফএস চালিয়ে) রেখে এই সমস্যাটি সমাধান করেছি। নীচে বিশদ তিনটি ইউটিলিটি সংযুক্ত করে, আমি একটি প্রতিলিপি সমাধান তৈরি করেছি যা আমাকে ক্রমাগত প্রতিলিপি, গভীর স্ন্যাপশট ধারণ এবং নমনীয় ব্যর্থতা বিকল্পগুলি দেয়।
zfs-auto-snapshot - https://github.com/zfsonlinux/zfs-auto-snapshot
পর্যায়ক্রমিক জেডএফএস ফাইল সিস্টেম স্তরের স্ন্যাপশটগুলি সক্ষম করার জন্য কেবল একটি সহজ সরঞ্জাম। আমি সাধারণত উত্পাদন ভলিউমে নিম্নলিখিত সময়সূচী দিয়ে চালিত:
# /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 //
সিঙ্কয়েড (সানয়েড) - https://github.com/jimsalterjrs/sanoid
এই প্রোগ্রামটি কোনও জেডএফএস ফাইল সিস্টেমের একটি দ্বিতীয় লক্ষ্যতে অ্যাড-হক স্ন্যাপ / প্রতিলিপি চালাতে পারে। আমি কেবল পণ্যের সিঙ্কয়েড অংশটি ব্যবহার করি ।
ধরে নেওয়া যাক 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