تشغيل VPN على ذاكرة RAM لا يقول شيئًا عن السجلات
وقت تشغيل على tmpfs وادعاء انعدام السجلات هما ادعاءان مختلفان. تتبع كل كاتب إلى وجهته وافحص التبديل وإعادة توجيه السجل قبل تصديقه.
خادم VPN يُقلع من صورة للقراءة فقط وتُحفظ حالة تشغيله على tmpfs هو تصميم حقيقي ومفيد. ومن السهل أيضًا وصفه بأنه بلا سجلات، وهو ما لا يثبته التصميم. موقع التخزين يحكم أين تعيش النسخة؛ أما الجمع والاحتفاظ فيحكمان هل يوجد سجل أصلًا، وإعادة التشغيل تؤثر في الأول فقط. الفصل بين الأمرين هو مراجعة الموضوع كله.
ابدأ بسرد كل عملية يمكنها كتابة حالة: الخادم الخفي، وخدمة المصادقة، والسجل، وأي وكيل مراقبة، وأدوات الإدارة.
التخزين والجمع سؤالان مختلفان
لكل كاتب وجهته وسياسته. يكتب خادم VPN ملفات الحالة، ويكتب نظام المصادقة الخلفي أحداث الحساب، ويجمع السجل مخرجات الخدمة، ويشحن وكيل المراقبة المقاييس إلى مكان آخر تمامًا. التصميم الذي يُخفي أحد هذه الأشياء عند إعادة التشغيل لم يقل شيئًا عن الثلاثة الأخرى. تتبع كل كاتب إلى وجهته ولاحظ هل تلك الوجهة موجودة على الجهاز أصلًا.
ملفات التطبيق المحددة والتشخيصات المرفوعة والخدمات الخارجية تحتاج المعالجة نفسها. غياب سجل محلي مألوف لا يثبت أن سجلات الاتصال أو الحساب غير موجودة في أي مكان؛ بل يثبت أنك لم تجد بعد أين تذهب.
tmpfs ليس ضمانًا
Linux tmpfs ليس قرص RAM فيزيائيًا. توثيق النواة صريح في أن الصفحات يمكن كتابتها إلى التبديل عندما يسمح التحميل بذلك، لذا قد يصل ملف tmpfs إلى قرص دون أن ينسخه التطبيق إليه أبدًا. يُظهر mount هل tmpfs مدعوم بالتبديل قيد الاستخدام، وتتصرف أنظمة الملفات الأخرى في الذاكرة بشكل مختلف مرة أخرى. اقرأ خيارات التحميل الفعلية بدلًا من افتراض أن مسارًا تحت /run يعني التطاير.
ثم اجرد الأشياء التي تعيش بعد إعادة التشغيل بطرق ينساها الناس: طبقة علوية دائمة، وتخزين ملحق، وصور سبات، وتفريغات أعطال، ولقطات بنية تحتية للجهاز الافتراضي بأكمله. كل منها وجهة محتملة لحالة ظننتها عابرة. تلك القائمة شيء ينبغي فحصه، وليست ادعاءً بأن كل مضيف يملكها جميعًا.
Journald له وجهتان ومُعيد توجيه
يوضح Journald الانقسام بدقة. يحفظ التخزين المتطاير المدخلات تحت /run/log/journal، والتخزين الدائم تحت /var/log/journal، ويختار الوضع التلقائي بينهما؛ والوضع النافذ يأتي من النظام العامل لا من وصف الصورة. التبديل إلى المتطاير لا يحذف ما كُتب بالفعل بشكل دائم. إعادة التوجيه قناة منفصلة أيضًا: حتى إعداد التخزين الذي لا يحتفظ بشيء محليًا يمكنه تسليم الرسائل إلى هدف آخر.
اقرأ الوضع الفعلي من السجل نفسه أو من ملف تكوينه، ثم افحص أهداف إعادة التوجيه بشكل منفصل، لأن إعدادًا واحدًا لا يتحكم في الآخر.
ما يجب أن ينجو من إعادة التشغيل
وقت تشغيل بلا حالة يدعم الاستبدال المتكرر، ويحتاج إلى مصادر متعمدة للتكوين والتفويض ومواد الاستعادة التي لا تستطيع الخدمة اختراعها. إن فقدان الحالة الوحيدة العاملة للتسجيل أو الإبطال من أجل إخفاء الكتابات المحلية مقايضة سيئة، وشائعة. قرر ما يجب أن ينجو عن قصد، ثم تحقق من أنه ينجو.
المنطق نفسه ينطبق على السجلات التشغيلية. قرر أي الأحداث تحتاجها الأمن وإدارة الخدمة فعليًا، بنطاق واحتفاظ مبررين، وقلل الباقي. التقليل ليس مثل تعطيل كل تشخيص.
قارن تكوين التخزين وإعادة التوجيه الفعلي ببعض الأحداث غير الضارة، ثم أعد تشغيل الجهاز أو استبدله وافحص مجددًا ما بقي وأين استعادت الخدمة حالتها.