Skip to content

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

يوفر Vapor آليات مدمجة لحماية صور أقراص الأجهزة الافتراضية وحالتها ضد تلف البيانات أو أعطال الأجهزة أو الأخطاء الإدارية. يدعم النظام هياكل النسخ الاحتياطي الكاملة والتفاضلية والتراكمية، باستخدام تتبع البلوكات المتغيرة (Changed Block Tracking - CBT) ومزامنة وكيل الضيف (Guest Agent) لضمان اتساق التطبيق وكفاءة التخزين.


1. هياكل النسخ الاحتياطي (Backup Topologies)

النسخ الاحتياطي الكامل (Full Backups)

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

النسخ الاحتياطي التراكمي (Incremental Backups - CBT)

تستخدم النسخ الاحتياطية التراكمية تتبع البلوكات المتغيرة (Changed Block Tracking - CBT) لمراقبة قطاعات القرص المعدلة منذ آخر جلسة نسخ احتياطي.

  • الخرائط النقطية المتسخة (Dirty Bitmaps): ينشئ Vapor ويحافظ على "خريطة نقطية متسخة" دائمة تتبع البلوكات المعدلة داخل صورة QCOW2.
  • الكفاءة: أثناء التنفيذ التراكمي، يستعلم Vapor عن الخريطة النقطية المتسخة وينسخ البلوكات المعدلة فقط. هذا يقلل بشكل كبير من نوافذ النسخ الاحتياطي والبصمات التخزينية.
  • متطلبات الاستعادة: تتطلب استعادة النسخة الاحتياطية التراكمية النسخة الاحتياطية الكاملة الأساسية وجميع نقاط التفتيش التراكمية المتوسطة.

2. التكامل المتقدم والاتساق

بالنسبة لتكاملات النسخ الاحتياطي لجهات خارجية (مثل الوكلاء المؤسسيين) أو البرامج النصية للأتمتة المخصصة، يعرض Vapor نقاط نهاية تحكم عميقة لبرمجيات Hypervisor:

تجميد نظام الملفات (FSFreeze & FSThaw)

لضمان اتساق التطبيق ونظام الملفات أثناء المعاملات النشطة لقواعد البيانات أو أحمال العمل الكثيفة الكتابة، يستخدم Vapor وكيل ضيف QEMU (QEMU Guest Agent) داخل VM:

  • FSFreeze: قبل التقاط نقطة تفتيش النسخ الاحتياطي، يستدعي POST /virtualization/computes/{uuid}/guest-agent/fsfreeze لتوجيه نظام تشغيل الضيف لتفريغ مخازن التخزين المؤقتة إلى القرص وتجميد عمليات إدخال/إخراج نظام الملفات مؤقتًا.
  • FSThaw: فور تسجيل نقطة التفتيش بواسطة hypervisor، يقوم استدعاء لـ POST /virtualization/computes/{uuid}/guest-agent/fsthaw بإلغاء تجميد نظام الملفات، مما يسمح للضيف باستئناف الكتابة. تستغرق هذه العملية أقل من ثانية، مما يمنع انتهاء مهلة تطبيقات الضيف.

النسخ الاحتياطي بوضع السحب لـ NBD (Network Block Device)

يعرض Vapor الأقراص الافتراضية الخام عبر الشبكة باستخدام بروتوكول NBD (Network Block Device). يمكّن هذا أنظمة النسخ الاحتياطي الخارجية من قراءة البلوكات مباشرة دون استهلاك حمل للمعالج في المضيف:

  • دورة حياة الجلسة: يتم إعداد جلسة NBD عبر POST /virtualization/computes/{uuid}/backups/nbd/start، الذي يقبل معلمات مثل incremental_from_checkpoint و nbd_port و nbd_listen.
  • التدفق المباشر: يرتبط خادم NBD بالمنفذ المخصص (مثل 10899) على المضيف، معرِضًا التدفق الخام لبلوكات قرص VM.
  • الإغلاق: يتم إغلاق الجلسة بشكل نظيف باستخدام POST /virtualization/computes/{uuid}/backups/nbd/stop.

3. الرفع القابل للاستئناف عبر بروتوكول TUS

لاستيراد أو رفع النسخ الاحتياطية الكبيرة لـ VM (ملفات .qcow2 المتعددة الجيجابايت)، يطبق Vapor بروتوكول TUS (الرفع القابل للاستئناف) الإصدار v1.0.0 للتعامل مع انقطاعات الشبكة بسلاسة.

  • البدء: POST /virtualization/computes/backups/upload مع الترويسات Upload-Length و Upload-Metadata (خصائص ترميز base64: filename و vm_name و backup_type و compression و encryption و description و retention_days).
  • نقل البيانات: PATCH /virtualization/computes/backups/upload/{upload_id} يتدفق الأجزاء الثنائية مع Upload-Offset.
  • الإنهاء: POST /virtualization/computes/backups/upload/{upload_id}/complete يسجل الملف المرفوع كنقطة استعادة مكتملة.

4. عمليات النسخ الاحتياطي عبر واجهة المستخدم و API

إنشاء نسخة احتياطية عبر واجهة الويب

  1. انتقل إلى Virtualization > Virtual Machines وحدد مثيل الحوسبة المستهدف.
  2. افتح تبويب Backups وانقر على Create Backup.
  3. قم بتهيئة الإعدادات:
    • Mode: حدد Full أو Incremental (يتطلب نقطة تفتيش أساسية موجودة لـ CBT).
    • Storage Pool: حدد التجميع المستهدف حيث سيتم تخزين أرشيف النسخ الاحتياطي.
    • FSFreeze: تمكين لفرض اتساق المعاملات على مستوى نظام الملفات.
    • Retention: حدد دورة الحياة (عدد الأيام) قبل حذف النسخة الاحتياطية.
  4. انقر على Submit لإرسال مهمة النسخ الاحتياطي.

مرجع نقاط نهاية API

  • سرد النسخ الاحتياطية: GET /api/v1/virtualization/computes/{id}/backups
  • إنشاء نسخة احتياطية: POST /api/v1/virtualization/computes/{id}/backups
  • حذف نسخة احتياطية: DELETE /api/v1/virtualization/computes/backups/{backup_id}
  • استعادة نسخة احتياطية: POST /api/v1/virtualization/computes/restore (يقبل backup_id و new_vm_name و overwrite)
  • استيراد نسخة احتياطية: POST /api/v1/virtualization/computes/backups/import (يسجل مسار نسخة احتياطية موجودة على المضيف)