ترحيل خادم قيد التشغيل إلى RAID

ذات مرة كان هناك خادم 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 /dev/sda2 → /dev/md1 # / /dev/sda3 → /dev/md2 # /home 

تنشيط 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 

اسمحوا لي أن أنهي هنا ، شكرا لك على اهتمامك!

Source: https://habr.com/ru/post/ar481818/


All Articles