نعم. اربط الإعدادات للقراءة فقط، وامنح حالة التطبيق وحدة تخزين منفصلة قابلة للكتابة باستخدام UID وGID وسياسة النسخ الاحتياطي الدقيقة التي تحتاج إليها.
يهم هذا القرار عندما يجب ألا يعيد تطبيق مستضاف ذاتيًا كتابة الإعدادات، لكنه يحتاج إلى الاحتفاظ بقواعد البيانات أو التحميلات أو ذاكرة التخزين المؤقت. الحالتان المتنافستان هما مسار إعدادات للقراءة فقط، وحالة ومسارات مؤقتة منفصلة قابلة للكتابة. ابدأ بإعدادات محفوظة وبيانات يمكن التخلص منها، وراقب فرعًا واحدًا في كل مرة، وتوقف إذا أدى الاختبار إلى زيادة مخاطر فقدان البيانات أو الصلاحيات أو التوافر.
حدّد الشروط الكامنة وراء قرار ربط الإعدادات المختلطة للقراءة فقط والبيانات القابلة للكتابة
سجّل البيئة قبل تغيير أي شيء: إصدارات البرامج والبرامج الثابتة، وهويات الأجهزة، ومسار الربط أو الشبكة، والمساحة الحرة، والصلاحيات، والعَرَض القابل للملاحظة. يجب أن يحافظ خط الأساس على تفاصيل كافية لإعادة إنتاج حالة تطبيق مستضاف ذاتيًا يجب ألا يعيد كتابة الإعدادات لكنه يجب أن يحتفظ بقواعد البيانات أو التحميلات أو ذاكرة التخزين المؤقت.
المرشح الأول هو مسار إعدادات للقراءة فقط. والثاني هو حالة ومسارات مؤقتة منفصلة قابلة للكتابة. يحدّد سلوك وحدات تخزين Docker الحالي الآلية أو حدّ الأوامر المستخدم في الاختبار؛ لكنه لا يستبدل المراقبة من هذا الخادم المنزلي المحدد.
اكتب شرط القبول وشرط التوقف قبل تشغيل الاختبار الفاصل. يجب أن يغيّر النجاح الدليل الذي يتنبأ به أحد الفرعين، مع إبقاء الخدمات غير المرتبطة دون تغيير؛ ويجب أن يعيد الفشل النظام إلى الحالة المحفوظة بدلًا من إطلاق سلسلة من الإصلاحات التخمينية.
اختبر الادعاء من دون تخفيض المتطلب الأصلي
استخدم هذا الاختبار الفاصل: افحص مسارات الصورة، واربط الإعدادات بالوضع ro والبيانات بالوضع rw، ثم حاول كتابة إعداد وتنفيذ سير عمل البيانات المعتاد قبل إعادة الإنشاء. أبقِ عبء العمل والعميل والمسار ومجموعة الملفات والتوقيت ثابتة حتى تُنسب النتيجة إلى المتغير الذي تغيّر.
استخدم أنظمة ملفات الحاويات للقراءة فقط لاختيار الحقل الذي يمكنه فعلًا الفصل بين الفرعين، ثم التقط طابعه الزمني، وحالة الخروج، ونص الخطأ، وهوية الجهاز أو اللقطة، وزمن الاستجابة، والبايتات المنقولة، والصلاحيات، وحالة الاسترداد. لا تكفي نهاية الأمر بنجاح عندما تكون الهوية أو المتانة أو حالة التطبيق هي الادعاء قيد الاختبار.
كرّر الاختبار مرة واحدة بعد إعادة التشغيل أو إعادة الاتصال أو إعادة الربط أو استخدام ذاكرة تخزين مؤقت باردة عندما يكون ذلك الحدث جزءًا من الشرط الأصلي. إذا كان التشغيل الأول إتلافيًا أو تعذرت استعادة البيئة، فتوقف وأعد الإنتاج على نسخة يمكن التخلص منها بدلًا من ذلك.
volumes:
- ./config.yml:/etc/app/config.yml:ro
- app-data:/var/lib/app:rw
فسّر نتائج النجاح والفشل والاستثناء
نجاح: تفشل عمليات كتابة الإعدادات، وتستمر بيانات التطبيق بعد إعادة الإنشاء، وتظل المسارات المؤقتة ضمن حدودها. سجّل الإصدار والهوية وعبء العمل الدقيق الذي نجح حتى يظل الاستنتاج مشروطًا بدل أن يتحول إلى ادعاء عام.
فشل: يتوقع التطبيق إعادة كتابة الإعدادات، أو تهبط البيانات في طبقة الحاوية، أو تمنع الملكية بدء التشغيل. لا يثبت الفشل تلقائيًا الفرع المقابل عندما يمكن للشبكة أو الذاكرة أو الصلاحيات أو اتساق المصدر أن تؤثر في كليهما؛ اعزل تلك التبعيات المشتركة قبل التصعيد.
نتيجة استثنائية أو ملتبسة: استعد عمليات الربط السابقة وافصل الإعدادات المُنشأة عن الإعدادات التي يملكها المشغّل. احتفظ بالسجلات، ولا تشغّل أوامر الإصلاح أو التنظيف أو الإتلاف أو إعادة التقسيم أو تغيير الملكية بشكل تكراري حتى تتوفر نسخة قابلة للاسترداد.
أكّد القرار تحت عبء العمل الأصلي
طبّق الإجراء المطابق للفرع المرصود، ثم كرّر الشرط الأصلي بدلًا من بديل مختزل. لا يصح القرار إلا عندما تفشل عمليات كتابة الإعدادات، وتستمر بيانات التطبيق بعد إعادة الإنشاء، وتظل المسارات المؤقتة ضمن حدودها عبر دورتين أو عبر إعادة التشغيل أو السكون أو الانقطاع أو انتقال الحمل ذي الصلة.
استخدم جذور التطبيقات للقراءة فقط للتحقق من أقرب سير عمل تابع، لكن أبقِ المحفز الأصلي دون تغيير. يجب أن تحتفظ مجموعات البيانات والمشاركات والحاويات والمستخدمون ونقاط الاسترداد غير المرتبطة بوصولها وتوقيتها السابقين.
حد التوقف صريح: إذا كان التطبيق يتوقع إعادة كتابة الإعدادات، أو تهبط البيانات في طبقة الحاوية، أو تمنع الملكية بدء التشغيل، فارجع إلى آخر إعداد تم التحقق منه، واحتفظ بالأدلة، ولا تصعّد إلى اختبار أعمق للمنصة أو العتاد إلا عندما يكون الفرع قابلًا للتكرار.
بعد ثبات النتيجة المستهدفة، قارنها مع ملكية بيانات الحاوية حتى لا ينقل الإصلاح المخاطر إلى خدمة مجاورة. يظل اختبار الهدف الناجح تغييرًا فاشلًا إذا نتج عنه عطل جديد في النسخ الاحتياطي أو الهوية أو المهلة أو التوافر.
الأسئلة الشائعة
في حالة ربط الإعدادات المختلطة للقراءة فقط والبيانات القابلة للكتابة، تتعلق عمليات البحث المتبقية عادةً بما إذا كان يمكن أيضًا جعل نظام الملفات الجذر بأكمله للقراءة فقط، وما الذي يحدث إذا أعاد التطبيق كتابة إعداداته عند بدء التشغيل، وما إذا كان ينبغي أن تشترك البيانات القابلة للكتابة وذاكرة التخزين المؤقت في وحدة تخزين. تُبقي الإجابات أدناه هذه الحالات الحدّية منفصلة عن القرار الأساسي.
لا يتغير حد القبول: تفشل عمليات كتابة الإعدادات، وتستمر بيانات التطبيق بعد إعادة الإنشاء، وتظل المسارات المؤقتة ضمن حدودها. إذا غيّر شرط لاحق نظام الملفات أو الهوية أو مسار الشبكة أو إصدار التطبيق، فأعد فقط الاختبار الفاصل المتأثر بذلك التغيير.
توقف عن توسيع التجربة عندما يتوقع التطبيق إعادة كتابة الإعدادات، أو تهبط البيانات في طبقة الحاوية، أو تمنع الملكية بدء التشغيل. عندها استعد عمليات الربط السابقة وافصل الإعدادات المُنشأة عن الإعدادات التي يملكها المشغّل؛ واحتفظ بالأدلة قبل التصعيد إلى مسؤول المنصة أو التخزين أو العتاد.
هل يمكن أيضًا جعل نظام الملفات الجذر بأكمله للقراءة فقط؟
نعم، عندما يُوفَّر كل مسار قابل للكتابة مطلوب بشكل منفصل، بما في ذلك الأدلة المؤقتة وأدلة وقت التشغيل.
ماذا لو أعاد التطبيق كتابة إعداداته عند بدء التشغيل؟
استخدم نسخة قابلة للكتابة مُنشأة أو خطوة بناء للصورة؛ ولا تجعل الإعدادات المعتمدة قابلة للكتابة دون تصريح.
هل ينبغي أن تشترك البيانات القابلة للكتابة وذاكرة التخزين المؤقت في وحدة تخزين؟
فقط إذا اشتركتا في قواعد الاحتفاظ والاسترداد نفسها. عادةً ما يكون فصل ذاكرة التخزين المؤقت القابلة لإعادة الإنشاء أفضل.
في حالة ربط الإعدادات المختلطة للقراءة فقط والبيانات القابلة للكتابة، تظل الإجابة العملية مشروطة: تفشل عمليات كتابة الإعدادات، وتستمر بيانات التطبيق بعد إعادة الإنشاء، وتظل المسارات المؤقتة ضمن حدودها. عندما يتوقع التطبيق إعادة كتابة الإعدادات، أو تهبط البيانات في طبقة الحاوية، أو تمنع الملكية بدء التشغيل، استعد عمليات الربط السابقة وافصل الإعدادات المُنشأة عن الإعدادات التي يملكها المشغّل؛ فالنجاح الجزئي الذي لا يصمد أمام عبء العمل الأصلي لا يُعد توافقًا.
الدعم والنصائح
المزيد للقراءة

هل يمكنك استبدال مروحة حاسوب صغير صاخبة من دون تغيير التحكم الحراري؟
نعم - إذا كان البديل متوافقًا مع الواجهة الكهربائية وتدفق الهواء وإشارات التغذية الراجعة؛ فتوافق الموصل وحده لا يحافظ على التحكم الحراري.

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

هل يمكنك استخدام ميزة التنبيه عبر الشبكة المحلية (Wake-on-LAN) بعد انقطاع كامل للطاقة؟
أحيانًا - يحتاج WOL إلى طاقة الاستعداد وحالة البرنامج الثابت/بطاقة الشبكة لاستعادة التشغيل بعد عودة التيار المتردد؛ ولا يمكنه إيقاظ الجهاز أثناء انقطاع الطاقة.

