لم يتم العثور على خدمات مطابقة
تثبيت ZFS على الجذر في VPS قيد التشغيل
يشرح هذا الدليل كيفية تثبيت ZFS كنظام ملفات الجذر لـ VPS يحتوي على تثبيت Linux موجود دون التسبب في فقدان البيانات. سيكون لدى VPS قسم تمهيد صغير من نوع EXT4 لـ GRUB2 مع النواة و initrd، وحوض كبير من ZFS مثبت على الجذر مع تمكين الضغط. سيتم إصدار معظم الأوامر من صورة قرص حي وسيتم عرض حل بديل إذا كان VPS لا يدعم تحميل صور ISO.
- الفهرس:
- 1. قم بنسخ البيانات احتياطيًا
- 2. قم بتشغيل صورة نظام تشغيل حي
- 3. قم بتثبيت ZFS على بيئة نظام التشغيل الحي
- 4. قم بتقسيم قرص VPS
- 5. قم بتثبيت ZFS على قرص VPS
- 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
- الخطوة 2: تشغيل صورة نظام تشغيل مباشر
-
سيتم التحويل إلى نظام الملفات ZFS من خلال نظام تشغيل مباشر من قرص CD. اعتمادًا على مدى قدرة لوحة تحكم VPS الخاصة بك، قد تكون لديها بالفعل صورة نظام تشغيل مباشر جاهزة للتشغيل. بدلاً من ذلك، يمكنك تنزيل صورة ISO مباشرة من Debian من مرآة Debian وتحميلها إلى لوحة تحكم VPS الخاصة بك، ثم تشغيل ISO من هناك؛ سيعمل هذا بشكل جيد حتى إذا كان VPS الخاص بك يعمل بتوزيعة مختلفة. كن حذرًا لاستخدام صورة ISO نظام تشغيل مباشر، وليس صورة تثبيت، لأن صور التثبيت تفتقر إلى apt وغير قادرة على تثبيت البرامج اللازمة على بيئة التشغيل المباشر. إذا كانت لوحة تحكم VPS الخاصة بك تدعم التشغيل من صورة ISO مقدمة من المستخدم، انتقل إلى الخطوة 3، وإلا يمكنك تشغيل ISO الذي تم تنزيله عن طريق تحويل قسم swap، إذا كان موجودًا، إلى EXT4 وتخزين ISO في مساحة التخزين المستعادة، ثم يمكن تكوين GRUB2 للتشغيل من تلك ISO. يتم ذلك على النحو التالي:
يحتوي هذا الخادم الافتراضي الخاص (VPS) على قسم تبادل (swap) بحجم 2GB في /dev/vda2 وهو كبير بما يكفي لتخزين ملف ISO. قم بإنشاء نظام الملفات EXT4، ووصله، وقم بتنزيل ملف ISO عليه:
# fdisk --list /dev/vda
القرص /dev/vda: 35 GiB, 37580963840 بايت, 73400320 قطاع
الوحدات: قطاعات من 1 * 512 = 512 بايت
حجم القطاع (منطقي/فيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأمثل): 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: تثبيت ZFS على بيئة نظام التشغيل الحية
-
قم بتمهيد صورة نظام التشغيل الحية وادخل إلى طرفيتها. ثم قم بتثبيت حزم ZFS على بيئة نظام التشغيل الحية:
الآن أصبح لدى نظام التشغيل الحية وحدة نواة 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 .
-
إذا لم يكن بيئة العمل الحية الخاصة بك تعتمد على ملف ISO مخزن على قرص VPS، قم بإعادة تقسيم القرص عن طريق إنشاء قسم تمهيد صغير لـ GRUB2، وقسم كبير لجذر ZFS يمتد على جميع المساحة المتبقية على القرص. نفذ الأمر fdisk لإنشاء القسمين التاليين:
قم بإنشاء قسم أساسي للإقلاع بعرض 100 ميجابايت وحدده كقابل للإقلاع باستخدام علامة النجمة (*)، مع معرف قسم = 83 (لينكس). سيتم تنسيقه كـ EXT4 لتوافقه مع GRUB2، وسيحتوي على بيانات الإقلاع. ثم قم بإنشاء قسم أساسي آخر لـ 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: تثبيت ZFS على قرص VPS
-
قم بتنسيق /dev/vda1 كوحدة تخزين ZFS:
يُوصى بهذه المجموعة من الخيارات في وثائق ZFS لتحقيق أعلى توافق مع أحدث الأقراص والأقراص المستقبلية. الخيار compression=zstd يُفعّل خوارزمية الضغط ZSTD التي تتمتع بنسبة ضغط أعلى من الخوارزمية الافتراضية LZ4، على الرغم من أنه يمكنك استخدام compression=lz4 لتقليل استخدام وحدة المعالجة المركزية إذا كان خادم VPS الخاص بك يعاني من معدل عالٍ من عمليات الإدخال/الإخراج على القرص. يتم تسمية المجمع باسم 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
-
قم بتثبيت خادم OpenSSH على البيئة الحية لاستقبال بيانات النسخة الاحتياطية من خادم VPS الاحتياطي:
للتبسيط، قم بتمكين PermitRootLogin yes في ملف /etc/ssh/sshd_config في البيئة الحية، ثم قم بتعيين كلمة مرور آمنة للمستخدم root وأعد تشغيل OpenSSH:
# apt install openssh-server
وابدأ استعادة بيانات النسخ الاحتياطي من خادوم VPS الاحتياطي، والتي ستقوم بملء تجمع ZFS الجذر المثبت على /mnt:# passwd
# service restart ssh
أو إذا كنت قد استخدمت TAR لإنشاء أرشيف نسخ احتياطي، قم باستعادته باستخدام:## من خادوم VPS الاحتياطي
# rsync -arxz backup.d/* root@target:/mnt/
ومع ذلك، كما كتبت في الخطوة 1، عند الاستخراج، يقوم TAR بتحويل المسار الهدف للروابط الرمزية المطلقة إلى مسارات نسبية؛ يمكن استعادة جميع هذه الروابط الرمزية بشكل صحيح كما يلي. لاحظ أن هذه الاستعادة ليست ضرورية إذا لم تكن قد استخدمت TAR لنسخ نظام الملفات الجذر احتياطيًا. من خادوم VPS الاحتياطي، قم بإدراج جميع الروابط الرمزية الموجودة في الأرشيف:## من خادوم VPS الاحتياطي
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
ثم انسخ القائمة إلى الخادوم الظاهري الهدف في /mnt، والذي يحتوي الآن على نظام الملفات الجذر الذي تم إعادة تعبئته من النسخة الاحتياطية:## من خادوم VPS الاحتياطي
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
من الخادوم الظاهري الهدف، chroot إلى /mnt وقم بتنفيذ سكريبت Bash هذا لاستعادة جميع الروابط الرمزية المطلقة:## من الخادوم الظاهري للنسخة الاحتياطية
# 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، وأدوات مساحة المستخدم الخاصة بـ ZFS المطلوبة لإنشاء initrd:
# 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
قم بتحرير /etc/default/grub لتعيين مجموعة ZFS كجهاز الجذر، عن طريق تعديل المتغير GRUB_CMDLINE_LINUX:# apt install grub-pc
# update-initramfs -u -k all
ثم قم بتطبيق التكوين:## هذا هو /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
وأخيرًا قم بتثبيت GRUB2 على MBR:# update-grub
# grub-install /dev/vda
- الخطوة 8: التمهيد إلى مجموعة الجذر ZFS
-
النظام جاهز، تم استعادته بالكامل من النسخة الاحتياطية، ويمكن التمهيد. قم بالخروج من chroot وفك تركيب جميع أنظمة الملفات الافتراضية، ثم قم بتصدير مجموعة الجذر ZFS:
يمكنك الآن إزالة صورة ISO من لوحة تحكم VPS، إذا كنت قد استخدمت هذا الخيار، أو حذف ISO من القرص الصلب، وإعادة تشغيل النظام في مجموعة ZFS الجذرية:
# exit # الخروج من chroot rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
اكتمل تحويل نظام ملفات الجذر لـ VPS من EXT4 إلى ZFS، وسيتم تشغيل VPS في نظامك المثبت القديم كالمعتاد.# reboot
اقرأ المزيد من المقالات
