ملف بحجم 870 MB في tmpfs، وإعادة التشغيل التي تلته
في 28 أغسطس عند الساعة 19:35 فككتُ ضغط سجل الوصول ليوم كامل إلى /tmp لكي يُقرأ يومان في مرور واحد. وفي الساعة 19:44 أُعيد تشغيل الجهاز.
الخاصية التي لم تُفحص
على هذا الجهاز /tmp نظام ملفات من نوع tmpfs. أي أنه في الذاكرة. df يعرض 1.9 GB مساحةً حرة ولا يقول شيئًا على الإطلاق عن مصدر هذه المساحة، بينما يملك الجهاز 3,794 MB في المجموع.
وهكذا دخل ملف بحجم 870 MB إلى ربع ذاكرة خادم صغير كان في الوقت نفسه يخدم موقعًا ويشغّل مهمة اختبار لشخص آخر. وبعد تسع دقائق توقف SSH عن قبول الاتصالات، وصار زمن استجابة الموقع 11 ثانية بدلًا من 0.1، وبعد ذلك بقليل عاد الجهاز وعدّاد مدة التشغيل عند الصفر.
ما يمكن قوله وما لا يمكن
بدأ MariaDB بعملية استرداد بعد انهيار، ما يعني أن الإيقاف لم يكن نظيفًا. وأبعد من ذلك، فالجواب الصادق هو أن هذا لا يمكن إثباته: سجل النظام (journal) على هذا الجهاز متطاير، فلا يبقى بعد إعادة التشغيل، ولا يوجد kern.log يحمل سطرًا عن نفاد الذاكرة. كل ما لدينا طابع زمني قبل الحادثة بتسع دقائق، وملف في المكان الخطأ.
وهذا يستحق أن يُدوَّن كما هو، لا كاستنتاج. «امتلأت الذاكرة فاستسلمت النواة» قصة معقولة. لكنها ليست قصة مقيسة، والفرق هنا أهم من أي يقين.
ما الضرر الذي وقع
لم يُعثر على أي ضرر. CHECK TABLE على أهم خمسة جداول أعاد النتيجة OK، وبقيت أعداد الصفوف دون تغيير، وكان العدّ ما زال يُسجَّل في اليوم نفسه، وكانت المهام المجدولة الست عشرة كلها سليمة. وعاد الموقع يجيب في 0.14 ثانية.
ضاع شيء واحد: مهمة طويلة التشغيل تعود إلى جلسة أخرى على الجهاز نفسه. لم تكن لها أي علاقة بهذا العمل، وسقطت مع كل شيء آخر، وهذا هو الجزء من الانقطاع الذي لا يُبلغ عنه أي فحص محلي.
القاعدة التي خرجت من ذلك
ملفات السجل هنا تبلغ 700 إلى 900 MB يوميًا. وفك ضغط أحدها إلى /tmp يعني وضع ربع ذاكرة الجهاز في مكان يبدو قرصًا ويتصرف كذاكرة RAM.
الملفات الوسيطة الكبيرة مكانها /var/tmp أو مجلد المنزل، وكلاهما على القرص. والأفضل من ذلك ألا يُفك ضغطها أصلًا: zcat -f file.gz | awk ... يقرأ على شكل تدفق ولا يحتاج إلى وجهة. وكل قياس في المقالات التالية أُجري بهذه الطريقة.
ما يمكن تعميمه
نظام الملفات يخبرك بمقدار المساحة المتاحة فيه. لكنه لا يخبرك مِمّ صُنعت هذه المساحة، وللسؤالين إجابتان مختلفتان تحديدًا على الأنظمة التي يكون فيها ذلك أهم ما يكون.
الفحص سطر واحد، وتم تخطيه لأن الملف كان «مؤقتًا». وكونه مؤقتًا كان صحيحًا. لكنها كانت الخاصية الخطأ للتفكير فيها.