فيديو GIF لرقصة رايتشل من مسلسل "Friends" نما إلى مئات الجيجابايت، مما أدى إلى انهيار نسخ النسخ الاحتياطي في Discourse
ملخص مختصر
ديسكورس – منصة شائعة للمناقشات عبر الإنترنت، حيث يوجد حاليًا أكثر من 22 000 مجتمع.
مؤخرًا أثناء النسخ الاحتياطي للموقع ظهرت مشكلة حرجة: تم نسخ ملف GIF (1.6 ميجابايت) بواسطة المستخدمين 246 173 مرة، مما تجاوز حد الروابط الثابتة في نظام الملفات ext4 وأدى إلى زيادة حجم النسخة الاحتياطية إلى 377 جيجابايت.
فيما يلي تحليل مفصل للحالة والأسباب والحلول.
١. ما الذي حدث؟
عنصر البيانات منصة ديسكورس عدد المجتمعات>22 000 ملف المشكلة GIF “ريتشيل من Friends”، الحجم 1.6 ميجابايت عدد النسخ 246 173 (روابط ثابتة) حد ext4~65 000 رابط ثابت على inode واحد حجم النسخة الاحتياطية النهائي 377 جيجابايت
لماذا حدث ذلك؟
ديسكورس يسمح بإدراج الرموز التعبيرية وملفات GIF في أي رسائل.
عند نقل الملف من سياق إلى آخر (مثلاً، من الدردشة الخاصة إلى منشور عام) ينشئ النظام نسخة جديدة مع SHA‑1 عشوائي. هذا يعني أنه حتى لو كان المحتوى متطابقًا، يعتبر ديسكورسها كائنًا جديدًا.
وبالتالي يمكن أن يظهر نفس GIF في عشرات الآلاف من الرسائل والدردشات الشخصية – يتم إنشاء ملف منفصل كل مرة. وفي النهاية تجاوزت 246 173 نسخة حد ext4، وبدأ النظام بإنشاء ملفات جديدة بدلاً من الروابط الثابتة، مما أدى إلى “فقدان” 181 000 نسخة احتياطية.
٢. الحل الأول – تجميع الهاش
حاول ديسكورس حل المشكلة أولاً عن طريق تجميع التحميلات حسب SHA‑1:
١. أثناء النسخ الاحتياطي تُجمَع جميع الملفات في مجموعات ذات هاش متساوي.
٢. يُحمَّل فقط النسخة الأولى من كل مجموعة.
٣. للنسخ الأخرى تُنشئ روابط ثابتة.
هذا بدا أنيقًا – لكنه لم يأخذ في الاعتبار حد ext4 لعدد الروابط. بمجرد بلوغ الحد، كان النظام ينشئ ملفات جديدة بدلاً من الروابط، مما أدى إلى ارتفاع حجم النسخة الاحتياطية بشكل حاد.
٣. الحل الجديد – “الانتقال” عند خطأ EMLINK
طوّر ديسكورس استراتيجية أكثر مرونة:
١. تُنشئ رابطًا ثابتًا للملف كما هو معتاد.
٢. إذا أعادت نظام الملفات خطأ EMLINK (تجاوز حد الروابط)، تصبح النسخة التالية “أساسية”.
٣. منذ ذلك الحين تُنشئ روابط جديدة مرة أخرى إلى هذه النسخة الأساسية الجديدة.
وبالتالي، عند كل تجاوز للحد يحدث تبديل إلى ملف “الأب” جديد، ويستمر النظام في العمل دون أخطاء. هذا الحل متوافق مع أي نظام ملفات ولا يتطلب إعدادات إضافية.
٤. النتائج والاستنتاجات
- GIF شائع واحد (رقصة ريتشيل من Friends) تسبب في ارتفاع النسخ الاحتياطية إلى 377 جيجابايت.
- حد ext4 على ~65 000 رابط ثابت كان عاملًا حرجًا.
- الحل الأول بتجميع الهاش لم يأخذ قيود الملفات، مما أدى إلى فقدان البيانات.
- الاستراتيجية الجديدة للانتقال عند خطأ EMLINK تسمح بإدارة عدد كبير من النسخ والحفاظ على كفاءة النسخ الاحتياطي.
> “الآن نعلم أن جينيفر إنستون يمكن أن تجري اختبارات الضغط للبنية التحتية”، — ملاحظت ديسكورس بنبرة ساخرة في مدونتها.
التعليقات (0)
شارك أفكارك — يرجى الالتزام بالأدب والبقاء ضمن الموضوع.
سجّل الدخول للتعليق