মিলছে না এমন কোন সেবা পাওয়া যায়নি
চালু VPS-এ রুটে ZFS ইনস্টল করা
এই গাইডে ব্যাখ্যা করা হয়েছে কিভাবে একটি VPS-এ ZFS কে রুট ফাইলসিস্টেম হিসাবে ইনস্টল করা যায় যাতে বিদ্যমান লিনাক্স ইনস্টলেশন থাকা সত্ত্বেও ডেটা ক্ষতি না হয়। VPS-এ GRUB2 এর জন্য একটি ছোট EXT4 বুট পার্টিশন থাকবে যাতে কার্নেল এবং initrd থাকবে, এবং একটি বড় ZFS পুল রুটে মাউন্ট করা থাকবে যাতে কম্প্রেশন সক্ষম করা থাকবে। বেশিরভাগ কমান্ড একটি লাইভ CD ইমেজ থেকে ইস্যু করা হবে এবং যদি VPS ISO ইমেজ মাউন্ট করতে সমর্থন না করে তবে একটি ওয়ার্কআরাউন্ড দেখানো হবে।
- সূচিপত্র:
- 1. ডেটা ব্যাকআপ করুন
- 2. একটি লাইভ OS ইমেজ বুট করুন
- 3. লাইভ OS পরিবেশে ZFS ইনস্টল করুন
- 4. VPS ডিস্ক পার্টিশন করুন
- 5. VPS ডিস্কে ZFS ইনস্টল করুন
- 6. নতুন ZFS রুট ফাইলসিস্টেমে ব্যাকআপ পুনরুদ্ধার করুন
- 7. GRUB2 ইনস্টল করুন
- 8. ZFS রুট পুলে বুট করুন
- ধাপ 1: ডেটা ব্যাকআপ করুন
-
যদি আপনার কাছে দ্বিতীয় একটি VPS বা হোম কম্পিউটার থাকে যেখানে ব্যাকআপ ডেটা সংরক্ষণের জন্য পর্যাপ্ত স্থান আছে, তাহলে সেই কম্পিউটার থেকে নিম্নলিখিত কমান্ডটি চালান:
যেখানে target হল যে VPS কে রূপান্তর করা হচ্ছে তার হোস্টনেম। এটি SSH এর মাধ্যমে রুট ফাইলসিস্টেমের সম্পূর্ণ অংশ ব্যাকআপ মেশিনে কপি করবে, এবং পরে এই ব্যাকআপটি টার্গেট VPS এ পুনরুদ্ধার করা সহজ হবে। যদি স্থানের অভাবে ব্যাকআপটি সংকুচিত করার প্রয়োজন হয়, তাহলে আপনি একটি সংকুচিত TGZ আর্কাইভ তৈরি করতে পারেন:
# rsync -aqrxz root@target:/ backup.d
তবে, যখন একটি TAR আর্কাইভ থেকে রুট ফাইলসিস্টেম পুনরুদ্ধার করা হবে, তখন সমস্ত সিমলিংক যাদের টার্গেটে পরম পাথনেম আছে তাদের পুনরায় তৈরি করা প্রয়োজন হবে, কারণ TAR তাদের টার্গেটকে আপেক্ষিক পাথনেমে রূপান্তর করে, তাই rsync ব্যবহার করা সহজ বিকল্প। TAR আর্কাইভটি সঠিকভাবে কীভাবে পুনরুদ্ধার করা হবে তা পরে দেখানো হবে।# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- ধাপ ২: একটি লাইভ OS ইমেজ বুট করুন
-
ZFS-এ রূপান্তর একটি লাইভ CD অপারেটিং সিস্টেম থেকে করা হবে। আপনার VPS কন্ট্রোল প্যানেল কতটা সক্ষম তার উপর নির্ভর করে, এটি ইতিমধ্যেই একটি লাইভ OS ইমেজ বুট করার জন্য প্রস্তুত থাকতে পারে। বিকল্পভাবে, আপনি Debian মিরর থেকে একটি Debian লাইভ ISO ডাউনলোড করে আপনার VPS কন্ট্রোল প্যানেলে আপলোড করতে পারেন, তারপর সেখান থেকে ISO বুট করুন; এটি ঠিকঠাক কাজ করবে এমনকি যদি আপনার VPS একটি ভিন্ন ডিস্ট্রিবিউশন চালায়। সতর্ক থাকুন একটি লাইভ OS ISO ইমেজ ব্যবহার করতে, ইনস্টলেশন ISO নয়, কারণ ইনস্টলেশন ইমেজগুলিতে apt থাকে না এবং লাইভ পরিবেশে প্রয়োজনীয় সফটওয়্যার ইনস্টল করতে অক্ষম। যদি আপনার VPS কন্ট্রোল প্যানেল ব্যবহারকারী-প্রদত্ত ISO ইমেজ থেকে বুট করতে সমর্থ হয়, তাহলে ধাপ ৩-এ যান, অন্যথায় আপনি ডাউনলোড করা ISO বুট করতে পারেন একটি swap পার্টিশনকে, যদি থাকে, EXT4-এ রূপান্তর করে এবং ISO-টি সেই পুনরুদ্ধার করা স্টোরেজ স্পেসে সংরক্ষণ করে, তারপর GRUB2 কনফিগার করা যেতে পারে সেই ISO থেকে বুট করার জন্য। এটি নিম্নরূপ করা হয়:
এই VPS-এ /dev/vda2-এ একটি 2GB সোয়াপ পার্টিশন রয়েছে যা ISO সংরক্ষণের জন্য যথেষ্ট বড়। EXT4 ফাইলসিস্টেম তৈরি করুন, এটি মাউন্ট করুন এবং এর উপর ISO ডাউনলোড করুন:
# fdisk --list /dev/vda
ডিস্ক /dev/vda: 35 GiB, 37580963840 বাইট, 73400320 সেক্টর
ইউনিট: 1 * 512 = 512 বাইটের সেক্টর
সেক্টর সাইজ (লজিক্যাল/ফিজিক্যাল): 512 বাইট / 512 বাইট
I/O সাইজ (ন্যূনতম/অপটিমাল): 512 বাইট / 512 বাইট
ডিস্কলেবেল টাইপ: dos
ডিস্ক আইডেন্টিফায়ার: 0x495b5ce4
ডিভাইস বুট শুরু শেষ সেক্টর সাইজ আইডি টাইপ
/dev/vda1 * 2048 69203583 69201536 33G 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
তারপর GRUB2-কে এই ISO থেকে বুট করতে নির্দেশ দিন; /etc/grub.d/40_custom নিম্নলিখিতভাবে সম্পাদনা করুন:# swapoff /dev/vda2 # সোয়াপ পার্টিশন নিষ্ক্রিয় করুন
# mkfs.ext4 /dev/vda2 # EXT4 ফাইলসিস্টেম তৈরি করুন
# mount /dev/vda2 /mnt # পুনরুদ্ধারকৃত স্থান মাউন্ট করুন
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
এবং কনফিগারেশন প্রয়োগ করুন#!/bin/sh
exec tail -n +3 $0
# এই ফাইলটি কাস্টম মেনু এন্ট্রি যোগ করার একটি সহজ উপায় প্রদান করে। কেবল এই মন্তব্যের পরে আপনি যে মেনু এন্ট্রি যোগ করতে চান তা টাইপ করুন। উপরের 'exec tail' লাইনটি পরিবর্তন না করার বিষয়ে সতর্ক থাকুন।
menuentry "Live ISO" {
set ISOFile="/images/image_file.iso"
loopback loop (hd0,2)$ISOFile
linux (loop)/live/vmlinuz boot=live findiso=$ISOFile
initrd (loop)/live/initrd.img
}
যখন আপনি VPS রিবুট করবেন, GRUB2 মেনু লাইভ ইমেজ থেকে বুট করার অপশন প্রদান করবে। প্রদানকারীর কন্ট্রোল প্যানেল দ্বারা প্রদত্ত VNC রেস্কিউ কনসোল ব্যবহার করে সেখান থেকে এগিয়ে যান।update-grub2
- ধাপ 3: লাইভ OS পরিবেশে ZFS ইনস্টল করুন
-
লাইভ OS ইমেজ বুট করুন এবং এর টার্মিনাল অ্যাক্সেস করুন। তারপর লাইভ OS পরিবেশে ZFS প্যাকেজগুলি ইনস্টল করুন:
এখন লাইভ OS-এ ZFS কার্নেল মডিউল এবং ZFS ইউটিলিটিজ রয়েছে যা আপনার VPS রুট ফাইলসিস্টেম ফরম্যাট করার জন্য প্রয়োজনীয়।
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
- ধাপ 4: VPS ডিস্ক পার্টিশন করুন
-
VPS ডিস্ক পার্টিশন করার জন্য দুটি বিকল্প পরিস্থিতি রয়েছে:
- যদি আপনি লাইভ ISO /dev/vda2-এ সংরক্ষণ করে থাকেন, তাহলে আপনি এখন সেই পার্টিশনটি পরিবর্তন করতে পারবেন না কারণ লাইভ সিস্টেমটি এর উপর নির্ভর করে, এবং VPS ডিস্কে কোন পার্টিশনিং করা হবে না। ZFS বিদ্যমান /dev/vda2 পার্টিশনে ফরম্যাট করা হবে, এবং /dev/vda1 যেমন থাকবে এবং পরে আপনার স্থায়ী বুট পার্টিশন হিসাবে কার্নেল এবং initrd সংরক্ষণের জন্য পুনরায় ব্যবহার করা হবে। ধাপ 5-এ যান।
-
যদি আপনার লাইভ পরিবেশটি VPS ডিস্কে সংরক্ষিত একটি ISO ফাইলের উপর নির্ভরশীল না হয়, তাহলে ডিস্কটি পুনরায় পার্টিশন করুন GRUB2 এর জন্য একটি ছোট বুট পার্টিশন তৈরি করে এবং ZFS রুটের জন্য একটি বড় পার্টিশন তৈরি করুন যা অবশিষ্ট ডিস্ক স্পেস জুড়ে প্রসারিত। নিম্নলিখিত দুটি পার্টিশন তৈরি করতে fdisk চালান:
একটি প্রাইমারি বুট পার্টিশন তৈরি করুন যা 100MB প্রশস্ত এবং এটিকে বুটযোগ্য হিসাবে চিহ্নিত করুন একটি তারকাচিহ্ন (*) দিয়ে, পার্টিশন আইডি = 83 (লিনাক্স) সহ। এটি GRUB2 এর সাথে সামঞ্জস্যতার জন্য EXT4 হিসাবে ফরম্যাট করা হবে, এবং এটি বুট ডেটা ধারণ করবে। তারপর ZFS এর জন্য আরেকটি প্রাইমারি পার্টিশন তৈরি করুন, আইডি = bf (সোলারিস) সহ। ডিস্কে পরিবর্তনগুলি লিখুন এবং fdisk বন্ধ করুন। এখন যেহেতু ডিস্কটি সঠিকভাবে পার্টিশন করা হয়েছে, আপনি বুট পার্টিশনটি ফরম্যাট করতে পারেন:
# fdisk /dev/vda
Command (m for help): p
Disk /dev/vda: 35 GiB, 37580963840 bytes, 73400320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x495b5ce4
Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 69203583 69201536 33G bf Solaris
/dev/vda2 * 69203584 73397887 4194304 2G 83 Linux
# mkfs.ext4 /dev/vda2
- ধাপ 5: VPS ডিস্কে ZFS ইনস্টল করুন
-
/dev/vda1 কে একটি ZFS ভলিউম হিসাবে ফরম্যাট করুন:
এই সেটটি ZFS ডকুমেন্টেশন দ্বারা সর্বোচ্চ সামঞ্জস্যের জন্য সুপারিশ করা হয়েছে, যা নতুন এবং ভবিষ্যতের ডিস্কের সাথে সর্বোচ্চ সামঞ্জস্যতা প্রদান করে। compression=zstd অপশনটি ZSTD কম্প্রেশন অ্যালগরিদম সক্রিয় করে, যা ডিফল্ট LZ4 এর চেয়ে উচ্চতর কম্প্রেশন অনুপাত প্রদান করে, যদিও আপনি compression=lz4 ব্যবহার করতে পারেন যদি আপনার VPS এ উচ্চ ডিস্ক I/O থাকে এবং CPU ব্যবহার কমানোর প্রয়োজন হয়। পুলটির নাম rpool যা রুট পুলের জন্য সর্বাধিক ব্যবহৃত নাম। যখন এই কমান্ডটি সম্পন্ন হবে, rpool লাইভ এনভায়রনমেন্টের /mnt ডিরেক্টরিতে মাউন্ট করা হবে, যেমন উপরে -R /mnt অপশন দ্বারা নির্দিষ্ট করা হয়েছে, কিন্তু এটি প্রতিটি পরবর্তী বুটে স্বয়ংক্রিয়ভাবে / এ মাউন্ট করা হবে। লাইভ এনভায়রনমেন্ট থেকে আপনার ব্যাকআপ পুনরুদ্ধার করার জন্য এটি /mnt এ মাউন্ট করা প্রয়োজন।
# zpool create -o ashift=12 \
-O acltype=posixacl -O canmount=on -O compression=zstd \
-O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \
-O mountpoint=/ -R /mnt \
rpool /dev/vda1
- ধাপ 6: নতুন ZFS রুট ফাইলসিস্টেমে ব্যাকআপ পুনরুদ্ধার করুন
-
ব্যাকআপ VPS থেকে ব্যাকআপ ডেটা গ্রহণের জন্য লাইভ এনভায়রনমেন্টে OpenSSH সার্ভার ইনস্টল করুন:
সরলতার জন্য, লাইভ পরিবেশের /etc/ssh/sshd_config এ PermitRootLogin yes সক্ষম করুন, তারপর একটি নিরাপদ root পাসওয়ার্ড সেট করুন এবং OpenSSH পুনরায় শুরু করুন:
# apt install openssh-server
এবং ব্যাকআপ VPS থেকে ব্যাকআপ ডেটার পুনরুদ্ধার শুরু করুন, যা /mnt এ মাউন্ট করা ZFS root pool পপুলেট করবে:# passwd
# service restart ssh
অথবা যদি আপনি TAR ব্যবহার করে একটি ব্যাকআপ আর্কাইভ তৈরি করে থাকেন, তাহলে এটি পুনরুদ্ধার করুন:## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
তবে যেমন আমি ধাপ 1 এ লিখেছি, এক্সট্রাকশনের সময়, TAR absolute symlink এর টার্গেট পাথকে relative পাথে রূপান্তর করে; এই symlink গুলি নিম্নলিখিতভাবে সঠিকভাবে পুনরুদ্ধার করা যেতে পারে। মনে রাখবেন যে যদি আপনি root ফাইল সিস্টেম ব্যাকআপ করতে TAR ব্যবহার না করে থাকেন, তাহলে এই পুনরুদ্ধার প্রয়োজন নেই। ব্যাকআপ VPS থেকে, আর্কাইভে থাকা সমস্ত symlink তালিকাভুক্ত করুন:## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
তারপর লিস্টটি টার্গেট VPS-এ /mnt-এ কপি করুন, যা এখন ব্যাকআপ থেকে পুনরায় পপুলেট করা রুট ফাইলসিস্টেম ধারণ করে:## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
টার্গেট VPS থেকে, chroot ব্যবহার করে /mnt-এ প্রবেশ করুন এবং সমস্ত পরম সিমলিংক পুনরুদ্ধার করতে এই Bash স্ক্রিপ্টটি এক্সিকিউট করুন:## ব্যাকআপ VPS থেকে
# scp list_of_symlinks.txt root@target:/mnt/root/
আপনার রুট ফাইলসিস্টেম এখন সম্পূর্ণরূপে ব্যাকআপ থেকে পুনরুদ্ধার করা হয়েছে এবং বুট করা যেতে পারে, কিন্তু প্রথমে আপনাকে একটি কার্যকরী বুটলোডার প্রয়োজন।## chroot পরিবেশ থেকে
while read -r row; do
src=$(echo "$row" | grep -Po '(?<=[0-9]{2}:[0-9]{2} )[^ ]+')
tgt=$(echo "$row" | grep -Po '(?<= -> ).+')
echo "linking: $src -> $tgt"
ln -fs "$tgt" "$src"
done </root/list_of_symlinks.txt
- ধাপ 7: GRUB2 ইনস্টল করুন
-
যদি আপনি chroot-এর মধ্যে থাকেন, তবে এটি থেকে বের হয়ে লাইভ পরিবেশে ফিরে যান। তারপর ভার্চুয়াল ফাইলসিস্টেমগুলি /mnt-এ বাইন্ড করুন এবং বুট পার্টিশন মাউন্ট করুন:
আপনি /mnt/boot/ থেকে পূর্বে বিদ্যমান কোনও কন্টেন্ট নতুন বুট পার্টিশনে কপি করতে পারেন। রুট পুলে chroot করুন এবং এর মধ্যে থেকে, ZFS initramfs হুক, ZFS কার্নেল মডিউল, এবং initrd জেনারেট করার জন্য প্রয়োজনীয় ZFS ইউজারস্পেস টুলস ইনস্টল করুন:
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# mount /dev/vda2 /mnt/boot
তারপর GRUB2 প্যাকেজ ইনস্টল করুন:# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
ZFS পুলকে রুট ডিভাইস হিসাবে সেট করতে /etc/default/grub এডিট করুন, GRUB_CMDLINE_LINUX ভেরিয়েবলটি পরিবর্তন করে:# apt install grub-pc
# update-initramfs -u -k all
তারপর কনফিগারেশন প্রয়োগ করুন:## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
এবং শেষে MBR এ GRUB2 ইনস্টল করুন:# update-grub
# grub-install /dev/vda
- ধাপ 8: ZFS রুট পুলে বুট করুন
-
সিস্টেমটি প্রস্তুত, সম্পূর্ণরূপে ব্যাকআপ থেকে পুনরুদ্ধার করা হয়েছে, এবং বুট করা যেতে পারে। chroot থেকে প্রস্থান করুন এবং সমস্ত ভার্চুয়াল ফাইলসিস্টেম আনমাউন্ট করুন, তারপর ZFS রুট পুল এক্সপোর্ট করুন:
আপনি এখন VPS কন্ট্রোল প্যানেল থেকে ISO ইমেজ সরাতে পারেন, যদি আপনি এই অপশনটি ব্যবহার করে থাকেন, অথবা হার্ড ড্রাইভ থেকে ISO মুছে ফেলতে পারেন, এবং সিস্টেমটি ZFS রুট পুলে রিবুট করতে পারেন:
# exit # rpool chroot থেকে প্রস্থান করুন
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
VPS রুট ফাইলসিস্টেম EXT4 থেকে ZFS-এ রূপান্তর সম্পূর্ণ হয়েছে, এবং VPS আপনার পুরানো ইনস্টল করা সিস্টেমে স্বাভাবিকভাবে বুট হবে।# reboot
আরও নিবন্ধ পড়ুন
