سير عمل ترحيل وحدات Docker المسماة بين خادمين منزليين

إيفا وونغ هي كاتبة تقنية و ومهندسة هاوية في ZimaSpace. مهووسة بالتكنولوجيا مدى الحياة ولديها شغف بالمختبرات المنزلية والبرمجيات مفتوحة المصدر، تتخصص في تبسيط المفاهيم التقنية المعقدة إلى أدلة عملية وسهلة الفهم. تؤمن إيفا بأن الاستضافة الذاتية يجب أن تكون ممتعة وليست مخيفة. من خلال دروسها، تمكّن المجتمع من تبسيط إعدادات الأجهزة، بدءًا من بناء أول نظام تخزين شبكي NAS وحتى إتقان حاويات Docker.

النهج الآمن هو التعامل مع أرشيف متوقف مؤقتًا أو نسخة متزامنة إلى وحدة تخزين مستهدفة محددة بوضوح، يتبعها التحقق من المجموع الاختباري والتحقق من التطبيق، باعتباره سلسلة من نقاط تحقق قابلة للملاحظة، وليس أمرًا واحدًا.

على خادمين منزليين يعملان بنظام Linux وDocker Compose، يتمثل الخطر العملي في ضرورة نقل حاوية ذات حالة إلى مضيف آخر دون نسخ وحدة تخزين قيد الاستخدام أو تحمل اسم غير صحيح. سجّل الهوية الحالية ونقطة الاسترداد، وابدأ بأقل الاختبارات تدخّلًا، وفسّر نتائج النجاح والفشل قبل تغيير أي متغير آخر، وتوقّف عندما تصبح وحدة التخزين غير مستقرة أو عندما تكون النسخة الوحيدة القابلة للاسترداد معرضة للخطر. لا ينتهي سير العمل أدناه إلا بعد نجاح حمل العمل الأصلي أو وصول الأدلة إلى حد التصعيد.

حدّد عقود وحدتي التخزين المصدر والمستهدفة

سجّل بصمة صورة الحاوية المصدر، واسم مشروع Compose، والخدمة، ومفتاح وحدة التخزين، واسم وحدة تخزين Docker الفعلي، ووجهة التحميل، وبرنامج تشغيل وحدة التخزين، وإصدار التطبيق. استخدم docker inspect وdocker volume inspect؛ ولا تستنتج المسار الفعلي من تسمية YAML وحدها.

عادةً ما يضيف Compose اسم المشروع إلى بادئة وحدات التخزين المسماة، ما لم يُستخدم اسم صريح أو وحدة تخزين خارجية. على الهدف، اعرض إعداد Compose وأنشئ وحدة التخزين الفارغة المقصودة صراحةً حتى لا تتم الهجرة إلى وحدة تخزين بينما تبدأ الخدمة باستخدام وحدة أخرى.

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

أوقف عمليات الكتابة مؤقتًا وأنشئ نسخة تحافظ على البيانات الوصفية

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

يوضح دليل مستقل حول ترحيل وحدات تخزين Docker باستخدام rsync نقل بيانات وحدات تخزين Docker باستخدام rsync. والحد المهم هو أن يكون المصدر متوقفًا مؤقتًا، وأن يعمل أمر النسخ على محتويات وحدة التخزين المحددة، لا أن يتعامل عشوائيًا مع الدليل الداخلي لـDocker أثناء استخدام البرنامج الخفي له.

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

استعد البيانات إلى وحدة التخزين المستهدفة المحددة صراحةً

تحقق من سعة نظام ملفات الهدف، وتوفر أرقام inode، ومتطلبات UID وGID، واستخدام الإصدار نفسه من صورة التطبيق. استعد الأرشيف إلى وحدة التخزين الهدف الفارغة دون تسطيح بنية الدليل من المستوى الأعلى، ثم قارن الملكية، والأعداد، والأحجام، وهاشات مختارة.

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

أرفق نسخة مؤقتة فقط من الخدمة أولًا، باستخدام منافذ بديلة ودون وصول إلى نظراء الإنتاج. إذا أبلغ التطبيق عن ترقيات للمخطط أو حالة تالفة، فتوقّف واستعد وحدة التخزين مرة أخرى من الأداة غير المتغيرة بعد حل توافق الإصدارات.

حوّل التشغيل واحتفظ بمضيف للرجوع إليه

شغّل التبعيات قبل التطبيق، وتحقق من السجلات، وتسجيل الدخول، والسجلات الحديثة، والمرفقات، والمهام المجدولة، وعملية كتابة مؤقتة. أعد تشغيل المكدس على الهدف وتأكد من أنه يعيد إرفاق وحدة التخزين المسماة نفسها. لا تحدّث الوكيل العكسي أو DNS إلا بعد نجاح هذه الفحوصات.

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

أبقِ تطبيق المصدر متوقفًا ووحدة التخزين القديمة للقراءة فقط حتى تنجح نسخة احتياطية جديدة واختبار استعادة على الهدف. تراجع بإعادة توجيه حركة المرور إلى المصدر غير المتغير فقط إذا لم تُقبل أي عمليات كتابة جديدة على الهدف؛ وإلا فتوقّف وسوِّ البيانات عمدًا.

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.