بعد امتلاء وحدة تخزين قاعدة بيانات Jellyfin، أوقف عمليات الكتابة الجديدة، وحافظ على قاعدة البيانات وملفات WAL، وحرّر المساحة بأمان، وتحقق من قاعدة البيانات قبل إعادة تشغيل المهام المعتادة.
هل يفشل Jellyfin في البدء، أو يعرض أخطاء SQLite، أو يفتح مع فقدان المستخدمين بعد وصول المساحة الحرة في وحدة التخزين إلى الصفر؟ لا تحذف ملفات قاعدة البيانات فورًا ولا تشغّل مهام التنظيف. سجّل أولًا وحدة التخزين، وعدد البايتات الحرة، وأسماء ملفات قاعدة البيانات، وحالة الحاوية، وآخر نسخة احتياطية معروفة بأنها سليمة.
أوقف تحول العطل إلى عاصفة من عمليات الكتابة
أوقف Jellyfin وأي أداة استيراد أو فحص أو خدمة جانبية تكتب إلى وحدة التخزين نفسها. تأكد من نقطة التحميل الممتلئة، بما في ذلك مؤشرات الملفات، وحافظ على قاعدة البيانات الرئيسية وأي ملفات مرافقة لها بامتدادي -wal أو -shm. قد يؤدي امتلاء القرص إلى ترك ملفات الإعداد فارغة أو مكتوبة جزئيًا؛ وتوضح حالة عطل مرتبطة بإصدار معيّن أن تحرير المساحة وحده قد لا يعيد التشغيل (حالة استرداد بعد امتلاء وحدة التخزين).
حرّر المساحة من السجلات القابلة للحذف، وملفات التحويل المكتملة، أو ذاكرة التخزين المؤقت المعروفة بإمكانية إعادة إنشائها، ولكن بعد نسخ الحالة الدائمة. لا تحذف قاعدة البيانات أبدًا كخطوة أولى.
سجّل حجم قاعدة البيانات، وملفات WAL، والسجلات، وذاكرة التخزين المؤقت، والمساحة الحرة المتبقية قبل التنظيف. يحدد ذلك ما إذا كان امتلاء وحدة التخزين ناتجًا عن نمو قاعدة البيانات أو مخرجات التحويل أو السجلات أو حاوية أخرى.
تحقق من سلامة قاعدة البيانات قبل محاولة إصلاحها
اعمل على نسخة من قاعدة البيانات مع إبقاء Jellyfin متوقفًا. شغّل فحصًا للسلامة باستخدام أدوات SQLite المتاحة في بيئتك، وافحص السجلات بحثًا عن أخطاء مثل «القرص ممتلئ» أو «صورة غير سليمة» أو «تعذر الفتح». إذا نجح الفحص، استعد المساحة الحرة، وأعد التشغيل مرة واحدة، وتحقق من المستخدمين والمكتبات والتشغيل.
إذا كانت قاعدة البيانات غير سليمة، فاستعد أحدث نسخة احتياطية معروفة بأنها سليمة أولًا. قد يستخدم مسار استرداد منضبط أدوات استرداد SQLite على نسخة، لكنه لا يحل محل نسخة احتياطية تم التحقق منها، ولا ينبغي تنفيذه على قاعدة بيانات قيد التشغيل (إجراء استرداد قائم على نسخة).
بعد تحرير البيانات القابلة لإعادة الإنشاء فقط، تأكد من بقاء ملفات قاعدة البيانات معًا وإمكانية قراءتها. قد يحوّل إعادة التشغيل قبل هذا الفحص عملية كتابة غير مكتملة إلى عطل ثانٍ.
امنع وحدة التخزين من الوصول إلى الحد نفسه
انقل ذاكرة التخزين المؤقت ومخرجات التحويل إلى مسار تتم مراقبته، واضبط تنبيهات تتجاوز الحد الأدنى للمساحة الحرة، وراجع مدة الاحتفاظ بالسجلات وجداول الفحص. افصل حالة التطبيق عن الوسائط الكبيرة حتى لا تتمكن مكتبة آخذة في النمو من استهلاك وحدة تخزين قاعدة البيانات.
أعد التشغيل مرتين، وشغّل الفحص أو التشغيل الأصلي، وتأكد من اكتمال النسخة الاحتياطية التالية. صعّد الحالة عندما تفشل فحوصات السلامة، أو يتعذر استعادة قاعدة البيانات، أو تمتلئ وحدة التخزين مجددًا من دون كاتب ظاهر.
إذا نجح فحص السلامة، فأعد التشغيل مرة واحدة وشغّل عبء العمل الأصلي للمستخدمين والمكتبات. وإذا فشل، فاعمل انطلاقًا من نسخة أو استعد النسخة الاحتياطية بدلًا من فتح قاعدة البيانات التالفة مرارًا.
أثبت نجاح الاسترداد وامنع امتلاء وحدة التخزين مجددًا
نفّذ إعادة تشغيل باردة، وفحصًا واحدًا، وجلسة تشغيل واحدة، ونسخة احتياطية بعد الإصلاح. تأكد من وجود هامش مُراقَب من المساحة الحرة في وحدة تخزين قاعدة البيانات أثناء نشاط عبء العمل.
احتفظ بالإصلاح عندما يعود المستخدمون والمكتبات والمهام المجدولة والتشغيل جميعًا. أضف تنبيهات للمساحة ومؤشرات الملفات، وانقل ذاكرة التخزين المؤقت أو السجلات إلى دور لا يمكنه استهلاك وحدة تخزين قاعدة البيانات.
صعّد الحالة عندما تمتلئ وحدة التخزين مجددًا من دون كاتب ظاهر، أو تفشل فحوصات السلامة، أو تفقد قاعدة البيانات المستعادة المستخدمين أو الحالة.
الدعم والنصائح
المزيد للقراءة

كيفية تحسين اتصالات قاعدة بيانات Jellyfin للحاويات المتزامنة
ابدأ بمالك واحد لقاعدة البيانات، وقِس سلوك القفل في SQLite؛ ولا تُضف واجهة خلفية مختلفة إلا عندما يبرّر التزامن والاسترداد هذا التعقيد.

كيفية منع تكرار المهام أو عمليات الاستيراد في Jellyfin
ينشأ العمل المكرر عادةً بسبب تداخل أدوات الجدولة أو وجود أكثر من جهة كتابة؛ عيّن مسؤولًا واحدًا، ومسارًا واحدًا، وفحصًا واحدًا لاكتمال العمل.

لماذا يعيد Jellyfin إنشاء الملفات المفقودة بمالكٍ غير صحيح؟
عادةً ما ينشأ خطأ الملكية من عدم تطابق الهوية أو استخدام مسار استيراد مختلف؛ تحقّق من مستخدم الحاوية النشط قبل تغيير الأذونات.

