কোন মিলে যাওয়া পরিষেবা পাওয়া যায়নি
চালু 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 থেকে বুট করার জন্য। এটি নিম্নরূপ করা হয়:
# 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
# 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
}
update-grub2
- ধাপ 3: লাইভ OS পরিবেশে ZFS ইনস্টল করুন
-
লাইভ OS ইমেজ বুট করুন এবং এর টার্মিনাল অ্যাক্সেস করুন। তারপর লাইভ OS পরিবেশে ZFS প্যাকেজগুলি ইনস্টল করুন:
# 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 চালান:
# 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 ভলিউম হিসাবে ফরম্যাট করুন:
# 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 সার্ভার ইনস্টল করুন:
# apt install openssh-server
# passwd
# service restart ssh
## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## ব্যাকআপ 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-এ বাইন্ড করুন এবং বুট পার্টিশন মাউন্ট করুন:
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# mount /dev/vda2 /mnt/boot
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
# apt install grub-pc
# update-initramfs -u -k all
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
# update-grub
# grub-install /dev/vda
- ধাপ 8: ZFS রুট পুলে বুট করুন
-
সিস্টেমটি প্রস্তুত, সম্পূর্ণরূপে ব্যাকআপ থেকে পুনরুদ্ধার করা হয়েছে, এবং বুট করা যেতে পারে। chroot থেকে প্রস্থান করুন এবং সমস্ত ভার্চুয়াল ফাইলসিস্টেম আনমাউন্ট করুন, তারপর ZFS রুট পুল এক্সপোর্ট করুন:
# exit # rpool chroot থেকে প্রস্থান করুন
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
# reboot
আরও নিবন্ধ পড়ুন