ذات مرة كان هناك خادم LAMP على Ubuntu 12.04 يعمل على محرك أقراص واحد. وفقًا لذلك ، نشأت مشكلة ضمان نقل الخادم إلى تكوين أكثر تحملاً للأخطاء - RAID1. قام الرفاق المسؤولون عن هذا الخادم بتثبيت القرص الثاني ، وتم تعيين الباقي لي ، وكان الوصول إلى الخادم فقط عبر ssh ، مما أدى إلى تعقيد المهمة.
بعد البحث ، تم العثور على
دليل وبدأ التدريب في جهاز افتراضي. عندما حققت النتيجة المرجوة عليها ، مع بعض الإثارة ، لكنني نجحت في نقل الخادم المذكور أعلاه إلى RAID1 ووضع الخطوات اللازمة مقدمًا. قررت أن أضع المقالة التي وصفت فيها عملية النقل بمزيد من التفصيل على "Habr".
كان انهيار القرص كما يلي:
/dev/sda1 2048 1574911 786432 swap /dev/sda2 * 1574912 16254975 7340032 / /dev/sda3 16254976 31457279 7601152 /home
نظرًا لأن القرص الثاني كان جديدًا ، فلا يلزم إجراء عمليات لحذف القسم السابق.
تم تعديل أول الأشياء في
/etc/default/grub
:
GRUB_TIMEOUT = 5 (اجعل المهلة أقصر) ؛
GRUB_RECORDFAIL_TIMEOUT = 10 (أضف حتى يتمكن النظام من التمهيد في حالة حدوث خطأ ، دون الحاجة إلى تدخل تفاعلي ؛ مهلة للتذوق) ؛
GRUB_CMDLINE_LINUX_DEFAULT = "bootdegraded" (تأكد من إضافة "bootdegraded" حتى يتمكن النظام من التمهيد من صفيف أدنى) ؛
# GRUB_HIDDEN_TIMEOUT_QUIET = صواب (يجب التعليق عليها حتى يتم عرض قائمة GRUB دائمًا).
قم بتعطيل المبادلة مؤقتًا ، وقم بتعيين fdisk على قسم / dev / sda1 باستخدام fdisk (الكشف التلقائي عن raid Linux) ، ثم قم بتقسيم القرص الثاني بنفس الأول (جميع العمليات يتم تنفيذها باستخدام حقوق المستخدم الخارق):
sfdisk –d /dev/sda | sfdisk –f /dev/sdb
ثم نبدأ في إنشاء RAID خطوة بخطوة:
mdadm --create --verbose /dev/md0 --raid-devices=2 --level=1 --metadata=1.2 /dev/sda1 /dev/sdb1
إنشاء قسم تحت
swap
:
mkswap /dev/md0
نقوم بتصحيح
/etc/fstab
، واستبدال أقسام القرص الأول بأقسام RAID وتغيير الأرقام في العمود السادس (الحاجة إلى فحص fsck) إلى أصفار:
/dev/sda1 → /dev/md0
تنشيط
swap
:
swapon -a
نظرًا لأن خادمنا يعمل حاليًا على القرص الأول ، فإننا نقوم بإنشاء RAID باستخدام القرص الثاني فقط حتى الآن:
mdadm --create --verbose /dev/md1 --raid-devices=2 --level=1 --metadata=1.2 missing /dev/sdb2 mkfs.ext4 /dev/md1 mdadm --create --verbose /dev/md2 --raid-devices=2 --level=1 --metadata=1.2 missing /dev/sdb3 mkfs.ext4 /dev/md2
تحديث التكوين
mdadm.conf
:
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
initramfs
بحيث
initramfs
معلومات حول RAID لدينا:
update-initramfs -u
بعد ذلك ، تبدأ العملية الأطول - مزامنة البيانات. نظرًا لأن خادمنا يقوم ببعض المهام ، فقد يتضح أنه بعد اكتمال المزامنة ، فإن جزءًا من المعلومات الموجودة على أقسام المصفوفة ستختلف عن البيانات الموجودة في الأقسام المقابلة من قرص العمل. هناك عدة خيارات: يمكنك اختيار وقت أقل حمل ، أو يمكنك إيقاف جزء من الخدمات طوال مدة المزامنة ، أو يمكنك إهمال التناقضات. بشكل عام ، نقوم بالتركيب والمزامنة:
mount /dev/md1 /mnt/ && [tmux|screen] rsync -axu / /mnt mount /dev/md2 /mnt/home && [tmux|screen] rsync -axu /home/ /mnt/home
لمنع كسر التزامن بسبب انقطاع غير متوقع في اتصال ssh ، لن يعوق استخدام مُضاعِف الإرسال الطرفي.
بعد انتظار انتهاء التزامن ، قم بتركيب أدلة النظام على جذر جديد:
mount --bind /proc /mnt/proc mount --bind /dev /mnt/dev mount --bind /var /mnt/var mount --bind /run /mnt/run mount --bind /sys /mnt/sys
نحن ننتقل إلى نظام جديد
chroot /mnt
وتثبيت أداة تحميل التشغيل على كلا القرصين
grub-install -–recheck /dev/sda grub-install --recheck /dev/sdb
نقوم بتحديث تكوين التمهيد لتحميل الوحدات الضرورية لـ RAID (
mdraid1x
):
update-grub
نعود إلى النظام الأصلي ، وإذا لزم الأمر ، نعيد تزامن الأقسام:
[tmux|screen] rsync -axu / /mnt [tmux|screen] rsync -axu /home/ /mnt/home
نظرًا لأننا لا نملك وصولًا فعليًا إلى وحدة التحكم أو الخادم ولا يمكننا تحديد القرص الذي سيتم تشغيل RAID منه ، فإننا نستخدم هذه الخدعة: نقوم بنقل تكوين أداة تحميل أداة التمهيد إلى القرص الذي يبدأ منه النظام والذي لا يوجد في RAID الذي يعرف عن RAID. انسخ grub.cfg من القرص الموجود في RAID إلى قرص التمهيد الحالي. سيسمح ذلك للنظام ببدء تشغيل / dev / sda ، ولكن قم بتركيب المصفوفات ومتابعة التمهيد من القسم الموجود بالفعل في RAID. أولاً ، احفظ الملف القديم ، والذي قد يكون مطلوبًا عند استعادة النظام إذا لم يكن بالإمكان التمهيد من RAID ، ثم انسخ ملف التكوين "القتال":
cp -p /boot/grub/grub.cfg /boot/grub/grub.old cp -p /mnt/boot/grub/grub.cfg /boot/grub/grub.cfg
بالإضافة إلى ذلك ، يمكنك مقارنة هذه الملفات والتأكد من إدراج قسم الجذر في ملف تهيئة محمل الإقلاع الجديد على RAID.
ننتقل الآن إلى أهم مرحلة من العمل المنجز وإعادة التشغيل. يمكنك بدء تنفيذ الأمر
ping
على الخادم في وحدة التحكم بحيث يصبح واضحًا متى سيكون الخادم متاحًا مرة أخرى. نقوم بتسجيل الدخول ونرى أن كل شيء تحول بالطريقة التي
lsblk
: يوضح
lsblk
أن
lsblk
/
و
/home
موجودة على أقسام RAID.
تبقى مهمة سهلة وممتعة بالنسبة لفاتح الشهية - أضف قسمين من القرص الأول إلى الصفيف ، بعد
fdisk
باستخدام
fdisk
لكتابة
fd :
mdadm /dev/md1 --add /dev/sda2 mdadm /dev/md2 --add /dev/sda3
ثم انظر بشكل دوري إلى كيفية إجراء المزامنة المتطابقة:
watch -n 5 cat /proc/mdstat
اسمحوا لي أن أنهي هنا ، شكرا لك على اهتمامك!