Skip to content

ترحيل الأجهزة الافتراضية والتخزين

يسهل Cockpit ترحيل الأجهزة الافتراضية (VMs) الشغالة وأقراصها الافتراضية بين خوادم Vapor الفيزيائية المضيفة ومجمعات التخزين دون التسبب في انقطاع بيئات العمل أو وقت توقف النظام الضيف.


1. الترحيل المباشر للحوسبة (Compute Live Migration)

ينقل الترحيل المباشر للحوسبة حالة تنفيذ وقت التشغيل النشطة (vCPUs و RAM) لجهاز افتراضي يعمل من مضيف فيزيائي مصدر إلى مضيف فيزيائي وجهة.

اعتمادًا على بنية التخزين، ينفذ Cockpit ترحيل الحوسبة بإحدى طريقتين:

أ. الترحيل عبر التخزين المشترك

  • البنية التحتية: توجد الأقراص الافتراضية للجهاز الافتراضي على مجمع تخزين شبكي (مثل NFS، OCFS2، أو SAN) يمكن لكل من المضيفين المصدر والوجهة الوصول إليه.
  • سير العمل: يتم نسخ حالة المعالج وصفحات الذاكرة فقط عبر الشبكة إلى المضيف المستهدف. نظرًا لأن الأقراص الافتراضية لا تحتاج إلى تكرار أو نقل، تكتمل عملية التبديل في غضون ثوانٍ.

ب. الترحيل بدون مشاركة (الترحيل الكتلي - Shared-Nothing Migration)

  • البنية التحتية: تُخزن الأقراص الافتراضية للجهاز الافتراضي على الأقراص المحلية (مثل أقراص SSD المحلية) للمضيف المصدر.
  • سير العمل: يبدأ Cockpit نسخًا على مستوى الكتل لملفات القرص الافتراضي عبر الشبكة أثناء تشغيل الجهاز الافتراضي. وفي الوقت نفسه، تتزامن صفحات الذاكرة وحالات تنفيذ المعالج. بمجرد مزامنة كتل القرص والذاكرة بالكامل، ينفذ Cockpit التبديل النهائي. يعتمد وقت الترحيل على حجم القرص ونطاق الشبكة.

تتم الحفاظ على الهوية. عندما يكتمل ترحيل الحوسبة، يحافظ الجهاز الافتراضي على هويته في Cockpit: موقعه في شجرة المخزون وأي أذونات ذات نطاق مخصص تعود للكائن تنتقل معه إلى المضيف الوجهة. يتم إعادة تموضع الجهاز الافتراضي في مكانه بدلاً من إزالته وإعادة استيراده، لذلك لا تحتاج إلى إعادة تطبيق الأذونات أو إعادة تصنيفه في مجلد بعد الترحيل.


2. الترحيل المقتصر على التخزين (Storage-Only Migration)

ينقل ترحيل التخزين ملفات القرص الافتراضي للجهاز الافتراضي بين مستودعات تخزين (مجمعات تخزين) مختلفة على المضيف الفيزيائي نفسه أثناء بقاء الجهاز الافتراضي نشطًا.

  • وضع نسخ التخزين: ينسخ صورة القرص الأساسية (عادة بتنسيق qcow2 أو raw) كتلًا تلو الأخرى إلى مجمع التخزين المستهدف.
  • الدوران التلقائي (Auto-Pivot): بمجرد اكتمال تكرار القرص، ينفذ Cockpit دورانًا تلقائيًا في وقت التشغيل. يوجه hypervisor عمليات كتابة القرص الجديدة إلى ملف القرص المستهدف الجديد ويفرغ الكتابات المتبقية.
  • إزالة الملف المصدر (اختياري): استعادة صورة القرص الأصلية تكون معطلة افتراضيًا. عند تمكين خيار "Remove source file after migration completes"، يحذف Cockpit صورة القرص المصدر فقط بعد نجاح الدوران. اتركه معطلاً للتقاط الأصل كخط دفاع بديل.
  • التحقق من الوجهة: قبل بدء أي نسخ، يتم التحقق من مسار الوجهة على المضيف — يجب أن ينتهي داخل مجمع تخزين معروف (يتم رفض المسارات التي تخرج من المجمع) ويجب ألا يكتب فوق ملف حالي. اختر اسم ملف وجهة مميزًا إذا كان هناك ملف موجود بالفعل.

3. إعدادات الترحيل المتقدمة

يمكن للمسؤولين إعداد المعلمات المتقدمة التالية عند بدء الترحيل:

  • Live: يغير وضع الترحيل المباشر. تعطيل هذا ينفذ ترحيلاً غير متصل/باردًا (توقيف الجهاز الافتراضي مؤقتًا قبل نقله).
  • Undefine Source (مفعل افتراضيًا، موصى به): يزيل تعريف XML للجهاز الافتراضي من المضيف المصدر بمجرد نجاح الترحيل — وهو السلوك القياسي لـ "النقل". لا يُوصى بترك هذا معطلاً: حيث يبقي الجهاز الافتراضي معرفًا على كلا المضيفين المصدر والوجهة، مما ينتج عنه مدخلات مخزون مكررة، وعلى التخزين المشترك، يهدد بتلف القرص إذا تم تشغيل النسخة القديمة المصدر في أي وقت. قم بتعطيله فقط عندما تنوي عمدًا الاحتفاظ بنسخة على المصدر.
  • Storage Copy Mode: يحدد كيفية التعامل مع الأقراص. None يفترض أن الأقراص قابلة للوصول بالفعل على الوجهة (التخزين المشترك). Copy all ينفذ نسخًا كاملاً للقرص (بدون مشاركة). Incremental ينسخ الفروقات فقط مقابل أساس حالي على الوجهة.
  • Compressed: يضغط بيانات الترحيل أثناء النقل لتقليل الحجم المنقول عبر الشبكة، على حساب معالج المضيف المصدر.
  • Auto Converge: يخفف من السيناريوهات التي يكتب فيها نظام التشغيل الضيف في الذاكرة (توسيخ صفحات الذاكرة) بسرعة أكبر من قدرة الشبكة على نسخها إلى المضيف المستهدف. عند تفعيله، يقلل هذا الإعداد ديناميكيًا من معدل تنفيذ معالج الجهاز الافتراضي الضيف لتمكين مزامنة الذاكرة من التقارب وإكمال الترحيل.
  • Remove Source Disks (مدمر): متاح لترحيلات الحوسبة والتخزين. عند تفعيله، تُحذف ملفات صور القرص المصدر نهائيًا من المضيف المصدر بعد ترحيل ناجح (تُستثنى أجهزة CDROM/الفلوبي). لا يمكن التراجع عن هذا.
  • Network / Disk Mappings: اختياريًا إعادة تعيين شبكات المصدر ومسارات الأقراص للجهاز الافتراضي إلى مكافئاتها على المضيف الوجهة. يتم التحقق من التعيينات المقدمة مقابل الوجهة قبل بدء الترحيل.

تُعرض العلامات إضافية منخفضة المستوى — Persistent، Tunnelled، Allow-Unsafe، Verbose، Max Bandwidth، و Max Downtime — في نافذة ترحيل Vapor الخاصة بكل مضيف بدلاً من معالج Cockpit. العلامات المدمرة (Remove Source Disks، Allow-Unsafe) هناك تتطلب إقرارًا صريحًا قبل بدء الترحيل.


4. التحقق الأولي والثقة (Pre-Flight Validation and Trust)

قبل تنفيذ الترحيل، يجري Cockpit التحقق التالي. تعكس القائمة أدناه ما يتم فرضه فعليًا اليوم — راجع الملاحظات التشغيلية للفحوصات التي يجريها libvirt عند التبديل بدلاً من البداية.

  • ثقة TLS للمضيف (Host TLS Trust): يبث ترحيل الحوسبة عبر qemu+tls://، والذي يتطلب علاقة ثقة TLS متبادلة بين مضيفي Vapor المصدر والوجهة. في معالج الترحيل، تعد هذه خطوة صريحة: بعد اختيار مضيف الوجهة، انقر على Establish host trust. يتبادل Cockpit ويُثبّت شهادة CA لكل مضيف (مع إعادة تشغيل libvirtd على مضيف فقط عندما يتغير متجر الثقة الخاص به فعليًا). يظل زر Start Migration معطلاً حتى تنشأ الثقة.
  • فحص نطاق التخزين المشترك: لترحيل الحوسبة فقط (بدون نسخ التخزين)، يتحقق Cockpit من أن كل قرص يقع على مستودع تخزين مُعلم كـ shared. يتم رفض ترحيل الحوسبة فقط لجهاز افتراضي يحتوي على أقراص على تخزين محلي (غير مشترك) قبل أن يبدأ.
  • فحص وجهة التخزين (الترحيل المقتصر على التخزين): يتم التحقق من المسار المستهدف على المضيف — يجب أن ينتهي داخل مجمع تخزين معروف ويجب ألا يكتب فوق ملف حالي. يجري المعالج أيضًا حماية المجمع نفسه وفحص المساحة المتاحة مقابل مستودع التخزين المستهدف.
  • التحقق من التعيين (Mapping Validation): عند تقديم تعيينات شبكة أو أقراص صريحة، يتم التحقق منها مقابل المضيف الوجهة المباشر قبل بدء الترحيل؛ وأي تعيين لا ينتهي على الوجهة يفشل في الفحص الأولي.

ملاحظات تشغيلية. لا يجري Cockpit حاليًا فحصًا استباقيًا لـ توافق المعالج (CPU-compatibility) للوجهة أو فحصًا عامًا لـ جسر الشبكة (network-bridge) لكل واجهة. لا يزال libvirt يفرض هذه الفحوصات عند التبديل — سيفشل الترحيل إذا كان معالج الوجهة لا يمكنه تشغيل طراز معالج الضيف، أو إذا كانت الشبكة التي يستخدمها الجهاز الافتراضي (والتي لم تقم بإعادة تعيينها) غير موجودة على الوجهة. لتجنب المفاجآت، تأكد من أن المضيف الوجهة يكشف الشبكات/الجسور الافتراضية نفسها التي يستخدمها الجهاز الافتراضي، وأن معالجه متوافق، قبل الترحيل. من المخطط إجراء فحوصات أولية آلية أوسع.