আপনি যদি আপনার স্টোরেজ ডিভাইসগুলিতে ZFS ব্যবহার করার সিদ্ধান্ত নেন, তবে অভিনন্দন! আপনি পৃথিবীর সবচেয়ে জটিল এবং ফিচার-রিচ ফাইলসিস্টেমের একটি ব্যবহার করছেন। এবং আপনি যদি কখনো দীর্ঘমেয়াদী ডেটা সংরক্ষণের সিদ্ধান্ত নেন, যেমন পারিবারিক ছবি এবং ভিডিও, তবে ZFS সিরিয়াসলি বিবেচনা করুন। একটি রিডান্ডান্ট সেটআপে, যেমন চারটি মিররড হার্ড ড্রাইভ, এটি আপনাকে গ্যারান্টি দেয় যে আপনি বিট রট বা সময়ের সাথে স্টোরেজ ডিগ্রেডেশন, কম্পিউটার এরর ইত্যাদির কারণে এক বিট ডেটাও হারাবেন না। ZFS স্বয়ংক্রিয়ভাবে ডেটা স্ব-হিল এবং রিকভার করতে পারে। জটিল অ্যালগরিদম, হ্যাশ এবং মার্কল ট্রি ডেটা ইন্টিগ্রিটি নিশ্চিত করে।
তবে, এই টিউটোরিয়ালে ZFS কেন দীর্ঘমেয়াদী ডেটা আর্কাইভের জন্য সেরা পছন্দ তা আলোচনা করা হয়নি। বরং স্ন্যাপশট এবং ক্লোন আপনার জন্য কী করতে পারে তা আলোচনা করা হচ্ছে।
ZFS স্ন্যাপশট এবং ক্লোন কী?
একটি স্ন্যাপশট হলো একটি নির্দিষ্ট সময়ে আপনার ডেটার অবস্থার একটি সঠিক ছবি। উদাহরণস্বরূপ, ধরুন আপনি একটি জটিল ওয়েবসাইটের ওপর কাজ করছেন। আপনি সকল কোড, ডাটাবেস, এবং ছবিগুলো আপনার ZFS ডেটাসেটে সংরক্ষণ করছেন। আপনি ওয়েবসাইটের ডিজাইন পরিবর্তন করেন, কিছু ছবি মডিফাই করেন, কিছু লেআউট ডাইমেনশন পরিবর্তন করেন এবং সবকিছু ফিট করার জন্য কিছু কোড মডিফাই করেন। আপনি যদি পূর্বের ডিজাইনে ফিরে যেতে চান, তবে আপনাকে সব পরিবর্তনগুলো আলাদা আলাদা রিভার্ট করতে হতো। ZFS-এর সাথে, আপনি সিম্পলি আপনার বর্তমান ডিজাইনের একটি স্ন্যাপশট নিতে পারেন, আপনি যা চান সে সব পরিবর্তন করুন, এবং আপনি যদি নতুন ডিজাইন থেকে খুশি না হন, তবে সিম্পলি পূর্বের স্ন্যাপশটে রোল ব্যাক করুন। এবং হ্যাঁ, এটি সত্য, Git, GitHub এবং এমনকি কিছু কোড এডিটর রয়েছে যেগুলো স্ন্যাপশট নেওয়া এবং রোল ব্যাক করার ক্ষমতা রাখে। কিন্তু ZFS নিচের ফিচারগুলোও অন্তর্ভুক্ত করে:
- স্ন্যাপশটগুলো গ্লোবাল। আপনার প্রজেক্টে অন্তর্ভুক্ত সমস্ত ডেটার স্ন্যাপশট তৈরি করে।
- স্ন্যাপশট এবং রোলব্যাক প্রায় ইনস্ট্যান্টেনিয়াস, আপনার প্রজেক্ট কত বড় হোক না কেন (সetzten গিগাবাইট হোক)।

স্ন্যাপশটের সংখ্যার কোনো লিমিট নেই। আপনি "Design 1", "Design 2", এবং "Design 3" রাখতে পারেন এবং তাদের মধ্যে বিনামূল্যে স্যুইচ করতে পারেন, পরিবর্তন করতে পারেন, এবং একটি নতুন স্ন্যাপশট তৈরি করতে পারেন: "Design 2 - Improved"।
ক্লোন
স্ন্যাপশটগুলো মূলত ফ্রোজেন ডেটা স্টেট যা আপনি ফিরে যেতে পারেন, ক্লোনগুলো একটি কমন পয়েন্ট থেকে শুরুর ব্র্যাঞ্চের মতো। ভালোভাবে বুঝতে এই সিনেরিও कल্পনা করুন: আপনি একটি বিজ্ঞাপন ক্যাম্পেইনের জন্য একটি ভিডিও তৈরি করেন। তারপর, আপনি এই ভিডিওর একটি স্ন্যাপশট নেন (আসলে সেটি ZFS ডেটাসেটের যেখানে আপনি আপনার ভিডিও সংরক্ষণ করেন)। এখন, আপনি এই স্ন্যাপশটটি তিনবার ক্লোন করেন। আপনি "Clone 1"-কে এক কর্মীকে, "Clone 2"-কে অন্য কর্মীকে এবং "Clone 3"-কে তৃতীয় কর্মীকে দেন। এখন তারা প্রত্যেক তার নিজস্ব স্বতন্ত্র স্পেসে কাজ করতে পারে এবং তার ইচ্ছামতো পরিবর্তন আনতে পারে।
এটি কেন উপযোগী? ভিডিওগুলো ডিস্ক স্পেসের বিশাল পরিমাণ দখল করে। হাই-রেজোলিউশন র Film সেটকো হাজার গিগাবাইট স্টোরেজ দরকার করতে পারে। যদি মূল ভিডিও ৫০০GB স্টোরেজ নেয় এবং তিনজন লোক ডাইভার্জেন্ট পরিবর্তন করতে ক্লোন করে কাজ করতে চায়, তবে এতে ১৫০০GB-এর বেশি স্টোরেজ লাগবে।
ZFS-এর সাথে, স্ন্যাপশট এবং তিনটি (বা বেশি) ক্লোন ৫০১GB-এর বেশি স্টোরেজ নেবে না। যে ডেটা ব্লকগুলো পরিবর্তন হয় না (সকল ক্লোনে সেটি কমন থাকে) সেগুলো শুধু একবার সংরক্ষিত হয়। এইভাবে, প্রতিটি এডিটর যা যোগ করে শুধু পার্থক্যগুলো অতিরিক্ত ডেটা হিসেবে সংরক্ষিত হয়। একটি রিয়েল ওয়ার্ল্ড সিনেরিওতে, আপনাকে তিনটি ক্লোনের জন্য ৬৫০GB-এর মতো কিছু প্রয়োজন হতে পারে। এটি স্টোরেজ এবং রিসোর্সের দক্ষ ব্যবহার, এবং ডেটা যথাযথভাবে আইসোলেটেড থাকে যাতে প্রতিটি এডিটর তার ইচ্ছামতো কাজ করতে পারে।
অবশ্য, এটি আরও অনেক সিনেরিওর জন্য উপযোগী যেখানে আপনাকে একই কন্টেন্টকে একাধিক ভিন্ন দিকে ব্র্যাঞ্চ করতে হয়, ডিস্ক স্পেসের চিন্তা না করলেও।
ZFS স্ন্যাপশট নিয়ে কাজ করার কমান্ডগুলো
অন্য লিনাক্স ডিস্ট্রিবিউশনও এই ফাইলসিস্টেম/ভলিউম ম্যানেজার ব্যবহার করতে পারে, তবে উবুন্টু আজ পর্যন্ত ZFS-এর জন্য সেরা সাপোর্ট দেয়।
যেহেতু সব ইউজারের কাছে ZFS-এর জন্য পুরো ডিস্ক নেই, তাই জানা উপযোগী হতে পারে যে আপনি একটি খালি পার্টিশনে একটি পুল তৈরি করতে পারেন একটি কমান্ড দিয়ে যেমন sudo zpool create pool_name /dev/sda3, যেখানে /dev/sda3 আপনার প্রথম ডিস্কের তৃতীয় পার্টিশনের ডিভাইস নাম।
যখন আপনি উপযুক্ত প্যাকেজ ইনস্টল করে আপনার প্রথম ZFS ডেটাসেট তৈরি করেন, তখন স্ন্যাপশট তৈরি করার পদ্ধতি নিচে:
প্রথমে, আপনার স্ন্যাপশট নেওয়ার জন্য যে ZFS ডেটাসেটটি চান তার নাম জানুন।
zfs list

এই উদাহরণে, ডেটাসেটের নাম হলো data এবং স্ন্যাপশটের নাম হবে snap1। পরবর্তী কমান্ডে এই মানগুলো আপনার ক্ষেত্রে যেটি প্রযোজ্য সেটি দিয়ে প্রতিস্থাপন করুন। একটি স্ন্যাপশট তৈরি করতে, লিখুন:
sudo zfs snapshot data@snap1
আপনার ক্ষেত্রে ডেটাসেটের নাম videos হলে, এবং আপনি আপনার স্ন্যাপশটকে first নামে ডাকা চান, তবে কমান্ডটি হবে:
sudo zfs snapshot videos@first
পরিবর্তনগুলো রোল ব্যাক করে এবং আপনার ডেটাসেটকে স্ন্যাপশট নেওয়ার সময় সেটির সঠিক কন্টেন্টে রিস্টোর করতে, ব্যবহার করুন:
sudo zfs rollback data@snap1
যখন আপনার একটি স্ন্যাপশট আর দরকার নেই, তবে এটি ডিলিট করুন:
sudo zfs destroy data@snap1
ZFS ক্লোন নিয়ে কাজ করার কমান্ডগুলো
ধরে নিচ্ছি আপনার একটি স্ন্যাপশট আছে যেটি "data@snap1" নামে ডাকা হয়েছে, সেটি ক্লোন করুন:
sudo zfs clone data@snap1 data/clone1

একটি ক্লোন ডিলিট করতে:
sudo zfs destroy data/clone3
আপনি ক্লোনগুলোর স্ন্যাপশটও নিতে পারেন।
sudo zfs snapshot data/clone2@snap_of_clone
ভবিষ্যতে, আপনি যে সকল স্ন্যাপশট এবং ক্লোন তৈরি করেছেন সেগুলো মনে রাখতে, ব্যবহার করুন:
zfs list -t all

উপসংহার
এটি ZFS স্ন্যাপশট এবং ক্লোন নিয়ে করা যেতে পারে সকল বেসিক অপারেশন কভার করে। জানা ভালো হতে পারে যে প্রতিটি ডেটাসেটের ভিতরে ".zfs" নামে একটি হিডেন ডিরেক্টরি থাকে। ls /data/.zfs/snapshot/snap1/ এর মতো একটি কমান্ড দিয়ে আপনি স্ন্যাপশটে ফাইলগুলোর অবস্থা দেখতে পারেন। যেহেতু এটি একটি সাধারণ (রিড-অনলি) ডিরেক্টরি বলে কাজ করে, আপনি একটি স্ন্যাপশট থেকে ইন্ডিভিজুয়াল ফাইলও কপি করতে পারেন যদি আপনাকে পুরো স্ন্যাপশট রিভার্ট করার দরকার না হয়।