اللقطات والقوالب
يوفر Vapor آليات لالتقاط حالات آنية للآلات الافتراضية لأغراض الاختبار أو النسخ الاحتياطي أو النسخ السريع للمثيلات.
لقطات الآلة الافتراضية
تُسجّل اللقطة حالة صور أقراص الآلة الافتراضية، وبشكل اختياري ذاكرتها النشطة (RAM)، في لحظة زمنية محددة.
قدرات اللقطات وحالة الذاكرة
تدعم وحدات تخزين الخلفية والإعدادات المختلفة للمضيف ميزات مختلفة للقطات:
- فحص القدرات: قبل أخذ اللقطة، يستعلم Vapor عبر
GET /api/v1/virtualization/computes/{id}/snapshots/capabilitiesلتحديد ما إذا كانت اللقطات الشاملة للذاكرة (supports_memory) مدعومة. - تضمين الذاكرة: إذا كان ذلك مدعوماً، يمكنك تحديد تضمين الذاكرة أثناء الإنشاء لحفظ حالة RAM النشطة. يتيح ذلك استئناف الآلة الافتراضية تنفيذها من النقطة التي التُقطت عندها اللقطة بالضبط، مع الحفاظ على العمليات الجارية. إذا لم تُحفظ الذاكرة، فستعمل الآلة الافتراضية بعد الرجوع إلى اللقطة في حالة إيقاف التشغيل.
- إسكات نظام الملفات: عند تفعيل الإسكات (
quiesce: true)، يستخدم Vapor وكيل QEMU Guest Agent لإيقاف عمليات إدخال/إخراج نظام الملفات داخل المضيف مؤقتاً وتفريغ كتل ذاكرة التخزين المؤقت غير المكتوبة إلى القرص قبل التقاط اللقطة. - اللقطات الخارجية: في بعض تخطيطات التخزين، يمكن إجبار اللقطات الخارجية (
force_external: true) لإنشاء ملفات تراكب بدلاً من تعديل هياكل QCOW2 الداخلية.
عمليات الإدارة (API والواجهة)
- عرض اللقطات:
GET /api/v1/virtualization/computes/{id}/snapshots - إنشاء لقطة:
POST /api/v1/virtualization/computes/{id}/snapshotsمع المعاملات:name،description،include_memory(bool)،quiesce(bool)،force_external(bool). - عرض تفاصيل اللقطة:
GET /api/v1/virtualization/computes/{id}/snapshots/{snapshot_name} - الرجوع إلى لقطة:
POST /api/v1/virtualization/computes/{id}/snapshots/{snapshot_name}/revert - حذف لقطة:
DELETE /api/v1/virtualization/computes/{id}/snapshots/{snapshot_name}
WARNING
تعتمد اللقطات على سلسلة ملفات القرص الافتراضي الأساسية. في حال حذف صورة القرص الافتراضي الأساسية أو تلفها، لن يمكن استرداد اللقطات. لا ينبغي التعامل مع اللقطات باعتبارها نسخاً احتياطية مستقلة.
قوالب الآلة الافتراضية
تتيح القوالب للمديرين تجميد إعدادات الآلة الافتراضية كصورة رئيسية للقراءة فقط (الصورة الذهبية) لنشر آلات افتراضية جديدة بالإعدادات والبرامج نفسها. يمكن أن تحصل كل آلة منشورة على هوية ضيف خاصة بها (machine ID ومفاتيح SSH للمضيف واسم المضيف وربط الشبكة)؛ راجع النشر وهوية الضيف.
دورة حياة القالب والتحويل
- تحويل الآلة الافتراضية إلى قالب:
POST /api/v1/virtualization/computes/{id}/convert-to-templateمعdescription. يجب أن تكون الآلة الافتراضية في وضع إيقاف التشغيل. بعد التحويل، تُزال الآلة الافتراضية من قائمة الحوسبة النشطة (GET /virtualization/computes) وتُعزل في سجل القوالب (GET /virtualization/computes/templates). - حظر التشغيل: لا يمكن تشغيل القوالب أو تنفيذها مباشرةً. ستُعيد أي محاولة لتشغيل قالب خطأ
HTTP 409 Conflict. - إنشاء قالب من نسخة لآلة افتراضية:
POST /api/v1/virtualization/computes/{id}/clone-to-templateينسخ أقراص الآلة الافتراضية ويسجّل النسخة كقالب، مع بقاء الآلة المصدر كما هي. - النشر من قالب:
POST /api/v1/virtualization/computes/from-templateمعtemplate_id، وname، وstorage_poolكوجهة، وguest_identityاختياريًا. يُنشئ Vapor نسخة كاملة من كل أقراص القالب لتوفير آلة افتراضية جديدة، لذا يطول النشر كلما كبرت الأقراص، ولا تعتمد الآلة الجديدة على القالب بعد إنشائها. الاستنساخ المرتبط (linked/copy-on-write) غير متاح. - تحويل القالب إلى آلة افتراضية:
POST /api/v1/virtualization/computes/templates/{template_id}/convert-to-vm. يُعيد هذا الأمر تسجيل القالب كآلة افتراضية قياسية قابلة للإقلاع. - حذف القالب:
DELETE /api/v1/virtualization/computes/templates/{template_id}?remove_disks=trueيحذف القالب ويُزيل بشكل اختياري أقراص التخزين الخلفية المرتبطة به.
النشر وهوية الضيف
- القوالب نسخ مطابقة. تحويل آلة افتراضية إلى قالب، وإنشاء قالب من نسخة لآلة افتراضية، ونسخ قالب إلى قالب آخر، كلها لا تغيّر هوية الضيف أبدًا. يسجّل Vapor عناوين MAC لشبكة مصدر القالب حتى تتمكن عمليات النشر اللاحقة من تحديث تهيئة شبكة الضيف.
- يعرض النشر خيار Guest identity. كما في الاستنساخ، يمكن للنشر من قالب إعادة تعيين هوية الضيف (Reset guest identity (recommended)) أو الاحتفاظ بنسخة مطابقة (Keep an exact copy). في واجهة الويب، يعرض معالج النشر حقل Guest identity نفسه الموجود في نافذة Clone. عند حذف
guest_identityيُطبَّق الإعداد الافتراضي للمضيف. تتضمن الاستجابة201قيمةguest_identityالمطبقة ونتيجةidentity_reset. ما تغيّره إعادة التعيين، ومتى لا تكون ممكنة، وما يحتاجه المضيف موضح في هوية الضيف في الاستنساخ. - القوالب التي أُنشئت بنسخ آلة افتراضية في إصدار أقدم من Vapor لا تسجّل عناوين MAC الخاصة بالمصدر. عندما يملك القالب واجهة شبكة واحدة، يظل Vapor قادرًا على تحديث تهيئة الشبكة. أما مع عدة واجهات، فقد تفشل إعادة التعيين (أو تكتمل مع تحذير عند استخدام
auto) لأن تهيئة الشبكة تذكر عناوين MAC لا يعرفها Vapor؛ أعد إنشاء القالب من الآلة الأصلية لحل ذلك. القوالب المحوّلة في مكانها من آلة افتراضية غير متأثرة.