لماذا يؤدي ارتفاع عدد الملفات إلى استنفاد inodes في جهاز NAS المنزلي قبل نفاد مساحة القرص؟

إيفا وونغ هي كاتبة تقنية و ومهندسة هاوية في ZimaSpace. مهووسة بالتكنولوجيا مدى الحياة ولديها شغف بالمختبرات المنزلية والبرمجيات مفتوحة المصدر، تتخصص في تبسيط المفاهيم التقنية المعقدة إلى أدلة عملية وسهلة الفهم. تؤمن إيفا بأن الاستضافة الذاتية يجب أن تكون ممتعة وليست مخيفة. من خلال دروسها، تمكّن المجتمع من تبسيط إعدادات الأجهزة، بدءًا من بناء أول نظام تخزين شبكي NAS وحتى إتقان حاويات Docker.

يمكن لعدد كبير من الملفات أن يستنفد إمداد العقد في جهاز NAS المنزلي قبل استنفاد كتل البيانات. النتيجة تبدو متناقضة: قد تظهر شاشة السعة وجود جيجابايت أو تيرابايتات حرة، ومع ذلك لا يمكن لعملية رفع، نسخ احتياطي، حاوية، أو فهرسة إنشاء ملف آخر.

هذا حد لنظام الملفات، وليس خاصية عامة لكل جهاز NAS. الفشل الكلاسيكي يكون أسهل رؤية على ext4 وأنظمة الملفات المشابهة ذات عدد العقد المحدد، بينما يخصص XFS وBtrfs البيانات الوصفية بشكل مختلف. لذلك يحدد نوع نظام الملفات ما إذا كان "العقد الحرة" هو المقياس الصحيح أو جزءًا واحدًا فقط من التشخيص.

يمكن لجهاز NAS منزلي أن يستنفد فتحات الكائنات قبل كتل البيانات

السبب المباشر هو أن بيانات الملف وهوية الملف يستهلكان موارد مختلفة. في ext4، تسجل العقدة بيانات وصفية مثل الطوابع الزمنية، الملكية، خرائط الكتل، والسمات الموسعة، بينما يربط إدخال الدليل اسمًا بعقدة. توثق توثيقات عقد ext4 في نواة لينكس جدول العقد بوصفه مصفوفة خطية موزعة عبر مجموعات الكتل.

كل ملف عادي جديد يحتاج عادة إلى عقدة، لكن حجم البايت لا يحدد عدد العقد التي يحتاجها. يمكن لفيديو بحجم 100 جيجابايت أن يشغل عقدة واحدة، بينما قد يتطلب مليون ملف ذاكرة تخزين مؤقت صغيرة حوالي مليون عقدة. الأدلة والروابط الرمزية هي أيضًا كائنات نظام ملفات، في حين أن الروابط الصلبة المتعددة لنفس الملف تشترك في عقدة واحدة.

يمكن أن تظل الكتل الحرة متاحة بعد تخصيص آخر عقدة حرة. في تلك النقطة، لا يزال لدى جهاز NAS مساحة لمزيد من محتوى الملفات من حيث المبدأ، لكنه يفتقر إلى هوية البيانات الوصفية المطلوبة لإنشاء كائن آخر. السعة وعدد الكائنات مستقلان بما فيه الكفاية بحيث يجب مراقبتهما معًا.

لماذا تدفع الملفات الصغيرة استخدام العقد (inodes) أسرع من السعة

الملفات الصغيرة تخلق كثافة عالية من الكائنات: هناك حاجة إلى العديد من الهويات مقابل حمولة بيانات صغيرة نسبيًا. لا يزال الملف الذي حجمه صفر بايت يحتاج إلى بيانات وصفية، وتضيف شجرة الدليل عقد الدليل الخاصة بها حتى قبل عد الملفات الموجودة بداخلها. لهذا السبب يمكن أن يستهلك عبء العمل فتحات الملفات بسرعة أكبر من استهلاكه للتيرابايتات المعلنة في جهاز NAS.

في ext4، يمكن لأداة الإنشاء حساب عدد inodes من نسبة البايت لكل inode أو قبول عدد inodes صريح. خيارات تخصيص inodes في mke2fs توضح أن نسبة بايت أكبر لكل inode تخلق عددًا أقل من inodes وأن النسبة لا يمكن تغييرها بعد إنشاء نظام الملفات، رغم أن تغيير الحجم يحافظ على النسبة المكونة بإضافة inodes مع المساحة الجديدة.

نموذج تخطيط بسيط هو عدد inodes التقريبي = حجم نظام الملفات ÷ نسبة البايت لكل inode. مع نسبة افتراضية 16 KiB، يعادل 1 TiB حوالي 67 مليون فتحة inode قبل احتساب الحمل الزائد للتنسيق وحدود نظام الملفات. هذا توضيح وليس افتراضيًا عالميًا لـ NAS: تختار ملفات التنسيق وتنفيذات نظام الملفات سياسات مختلفة.

ما الذي يتغير عند تخصيص آخر inode حر

في حالة النفاد الكلاسيكية، تبدأ العمليات التي تحتاج إلى inode جديد بالفشل. قد يتم رفض التحميلات الجديدة، الأدلة، الملفات المؤقتة، أعضاء الأرشيف المستخرجين، وملفات حالة التطبيق حتى مع إمكانية قراءة الملفات الموجودة. قد يتمكن ملف موجود أيضًا من النمو إذا بقيت كتل بيانات حرة لأنه يمتلك inode بالفعل.

غالبًا ما تترجم التطبيقات فشل التخصيص إلى رسالة عامة "لا توجد مساحة متبقية على الجهاز". تحدد هذه الرسالة فشل تخصيص الموارد، لكنها لا تخبر المستخدم ما إذا كانت الموارد المفقودة هي كتل البيانات، inodes، حصة مخصصة، أو مساحة بيانات وصفية خاصة بنظام الملفات. يجب إقران الخطأ الظاهر بعدادات نظام الملفات.

أي أعباء عمل NAS المنزلية تخلق أعدادًا هائلة من الملفات

العبء الخطير ليس ببساطة "بيانات كبيرة". إنه أي عبء عمل يُنتج العديد من كائنات نظام الملفات المستقلة، خاصة عندما يسمح التنظيف أو الاحتفاظ بتراكم تلك الكائنات لأشهر.

طبقات الحاويات، السجلات، وأشجار الحزم

يمكن لصور الحاويات، حزم البرامج المستخرجة، أشجار التبعيات، سجلات التدوير، وذاكرات التخزين المؤقت للتطبيقات أن تضع أعدادًا كبيرة من الكائنات الصغيرة تحت خدمة مستضافة على NAS واحدة. قد تبدو صورة الحاوية متواضعة بالجيجابايت بينما تستهلك طبقاتها المفككة وحالتها القابلة للكتابة هويات كائنات أكثر بكثير من ملف وسائط بنفس الحجم.

صور مصغرة للصور وفهارس البحث

يمكن لمدير الصور إنشاء صور مصغرة، معاينات، ملفات جانبية، قصات للوجوه، أو أجزاء فهرس لكل أصل مصدر. بعض التطبيقات تجمع هذه السجلات في قواعد بيانات، بينما يخزن البعض الآخر العديد منها كملفات عادية، لذا يعتمد تأثير الـ inode على تصميم تخزين التطبيق بدلاً من حجم مكتبة الصور فقط.

مزامنة السجلات، أشجار النسخ الاحتياطي، ومتاجر البريد

يمكن لأنظمة التحكم في الإصدارات التي تحول المراجعات إلى ملفات، وأشجار النسخ الاحتياطي التي تحتوي على العديد من الكائنات المصدر، ومتاجر البريد التي تحتوي على رسالة واحدة لكل ملف أن تنتج أعدادًا كبيرة من الملفات. قد تمثل اللقطات التي تعتمد على النسخ عند الكتابة والمستودعات المكررة الإصدارات بشكل مختلف، لذا لا ينبغي اعتبار عدد اللقطات كعدد مباشر للعقد دون التحقق من التنفيذ.

لماذا قد تفشل لوحة معلومات السعة في اكتشاف ضغط العقد

تؤكد العديد من لوحات المعلومات على البايتات: السعة الإجمالية، الكتل المستخدمة، والكتل الحرة. يحتفظ واجهة إحصائيات نظام الملفات القياسية بعدادات الكائنات بشكل منفصل كأرقام تسلسلية إجمالية، حرة، ومتاحة للملفات؛ على لينكس تتوافق هذه مع حقول مثل f_files وf_ffree في statvfs إحصائيات نظام الملفات. يمكن لواجهة المستخدم التي تحذف هذه الحقول أن تبدو صحية أثناء نفاد العقد الكلاسيكي.

على NAS قائم على لينكس مع وصول إلى الصدفة، يمكن مقارنة استخدام الكتل واستخدام العقد لنفس المسار المركب:

df -h /path/on/nas
df -i /path/on/nas

تعرف دليل GNU df الخيار -i على أنه استخدام العقد بدلاً من استخدام الكتل ويعرض الحقول الإجمالية والمستخدمة والمتاحة والنسبة المئوية. تدعم الكتل الحرة بجانب صفر العقد المتاحة بشكل قوي نفاد العقد الكلاسيكي؛ أما وجود هامش في كلا العمودين فيشير إلى حد مختلف.

تفشل أنظمة الملفات ذات العقد الثابتة والديناميكية بطرق مختلفة

عبارة "نفدت العقد في NAS" دقيقة فقط عندما يدعم نموذج تخصيص نظام الملفات والعدادات المبلغ عنها ذلك. يمكن أن تأتي نفس رسالة عدم وجود مساحة من حد بيانات تعريف مختلف في نظام ملفات آخر.

نموذج نظام الملفات كيفية توفير بيانات تعريف الكائن أكثر مقياس مفيد أولاً حد التفسير
ext4 تحتوي جداول العقد على توزيع مهيأ عبر مجموعات الكتل df -i بجانب استخدام الكتل صفر عقد inode الحرة مع كتل حرة هو نمط نفاد العقد الكلاسيكي
XFS يمكن تخصيص المساحة لكتل العقد ضمن سياسة نسبة مساحة العقد عدادات العقد inode بالإضافة إلى بيانات تخصيص XFS والمساحة الحرة لا تفترض جدول عقدة inode بنمط ext4 في وقت التنسيق
Btrfs تشغل البيانات وبيانات التعريف أنواعًا منفصلة من مجموعات الكتل تقرير بيانات Btrfs وبيانات التعريف والمساحة غير المخصصة يمكن أن يشبه نفاد بيانات التعريف سعة ENOSPC الحرة دون استنفاد العقد الثابتة الكلاسيكي

يمكن أن تحدد سياسة مساحة inode في XFS نسبة مئوية من نظام الملفات مخصصة لـ inodes، بينما يفصل تقرير نظام ملفات Btrfs الرسمي بين البيانات، والنظام، والبيانات الوصفية، والاحتياطي العالمي. يمكن أن تنتج تلك النماذج حدودًا متعلقة بالبيانات الوصفية، لكنها لا يجب أن تُفسر كما لو أن كل NAS يحتوي على نفس جدول inode الثابت.

تحذر واجهة الإحصائيات العامة أيضًا من أن ليس كل حقل معاد له معنى في كل نظام ملفات. حدد نظام الملفات المركب أولاً، ثم فسّر df -i من خلال ذلك التنفيذ بدلاً من اعتبار أمر واحد دليلًا عالميًا.

ماذا يعني وجود مساحة إضافية من inodes لتخطيط سعة NAS

تتطلب توقعات السعة لعمل عبء عمل عالي الكائنات كلًا من البايتات المتوقعة وعدد الكائنات المتوقع. عادةً ما تكون أرشيفات الوسائط كثيفة البايتات، بينما يمكن أن تكون أشجار التبعيات، والصور المصغرة، ومتاجر البريد، وأشجار النسخ الاحتياطي المادية كثيفة الكائنات. لذلك، يمكن أن يحتاج عبئان عمل لهما نفس الحجم المنطقي إلى مساحة بيانات وصفية مختلفة تمامًا.

بالنسبة لحجم ext4، نسبة البايت لكل inode هي اختيار تصميم وقت التنسيق بدلاً من مفتاح ضبط مباشر أثناء التشغيل. يمكن أن يضيف تغيير الحجم inodes بما يتماشى مع النسبة المحددة، لكنه لا يختار بأثر رجعي ملف تعريف أكثر كثافة. إعادة التنسيق فقط لتغيير تلك النسبة هو قرار ترحيل مع عواقب النسخ الاحتياطي والاستعادة، وليس تعديل أداء عابر.

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

لماذا قد لا يؤدي حذف ملف كبير واحد إلى استرداد عدد كافٍ من inodes

حذف فيلم كبير واحد يمكن أن يحرر العديد من كتل البيانات ولكنه عادةً ما يحرر inode واحد فقط. إزالة شجرة دليل تحتوي على مئات الآلاف من كائنات التخزين المؤقت القابلة للإزالة يمكن أن يحرر العديد من inodes حتى عندما تكون سعة البايتات المستردة صغيرة نسبيًا. يجب أن تتطابق عملية التنظيف مع المورد الذي تم استنفاده.

الكائن غير المرتبط لا يتم استعادته دائمًا فورًا. سلوك unlink في لينكس يحتفظ بالملف موجودًا عندما يكون لدى عملية ما آخر رابط مفتوح له، ويحرره بعد إغلاق آخر واصف ملف يشير إليه. لذلك قد يتأخر استرداد العقدة عن حذف مسار الملف للملفات النشطة أو سجلات الخدمة.

الأسئلة الشائعة

هل يستخدم كل ملف عقدة واحدة بالضبط؟

عادةً ما يحتوي الملف العادي على عقدة واحدة، وللدلائل والروابط الرمزية هويات نظام ملفات خاصة بها أيضًا. يمكن لأسماء الروابط الصلبة المتعددة الإشارة إلى نفس العقدة، بينما قد تخزن ميزات نظام الملفات الخاصة بيانات تعريف إضافية في كائنات منفصلة، لذا فإن عدد المسارات وعدد العقد مرتبطان لكنهما ليسا متطابقين دائمًا.

هل يمكن لذاكرة التخزين المؤقت SSD أو الشبكة الأسرع منع استنفاد العقد؟

لا. يمكن للوسائط والشبكات الأسرع تقليل الكمون أو زيادة معدل النقل، لكنها لا تخلق فتحات عقد إضافية في تعداد عقد ثابت. يمكنها جعل عبء العمل ذو العدد الكبير من الملفات يكتمل أسرع ويصل إلى نفس حد بيانات التعريف بشكل أسرع.

هل df -i هل يعمل على كل أنظمة ملفات NAS المنزلية؟

يعرض عدادات نمط العقدة المقدمة عبر واجهة نظام الملفات المركب، لكن هذه العدادات قد لا تحمل نفس المعنى في كل نظام ملفات. استخدمه مباشرة لتشخيص نمط ext4 وادمجه مع أدوات بيانات التعريف الخاصة بنظام الملفات لـ XFS وBtrfs وZFS أو جهاز يختصر الحجم الأساسي.

هل يمكن لتوسيع نظام ملفات ext4 إضافة المزيد من العقد؟

نعم، يمكن لتغيير حجم ext4 إضافة عقد جديدة مع دمج مساحة جديدة مع الحفاظ على نسبة البايت لكل عقدة الموجودة. وهذا يختلف عن تغيير النسبة على نظام الملفات الحالي، والذي تقول وثائق أداة الإنشاء إنه غير مدعوم بعد التهيئة.

هل كل خطأ "لا توجد مساحة متبقية على الجهاز" ناتج عن العقد؟

لا. يمكن أن تنتج كتل البيانات الممتلئة، والحصص، والمساحة المحجوزة، وتخصيص بيانات Btrfs، وحدود المساحة المؤقتة، وبعض حدود الموارد غير التخزينية رسائل مماثلة. استنفاد العقدة مدعوم عندما تتعلق الفشل بإنشاء كائنات نظام الملفات ولا يوجد مدخلات متاحة في عداد العقدة المعني.

عدد الملفات هو بُعد سعة مستقل بذاته

يمكن لجهاز NAS المنزلي الاحتفاظ بمساحة قرص حرة ومع ذلك يتوقف عن قبول كائنات جديدة لأن البايتات وبيانات نظام الملفات هي أبعاد سعة منفصلة. اعتبر العدد الكبير للملفات كخاصية عبء عمل، وتأكد من نظام الملفات الفعلي، وقارن بين هامش الكتل وهامش العقد أو بيانات التعريف قبل الاستنتاج بأن الأقراص ممتلئة.

مركز التكنولوجيا والذكاء الاصطناعي

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.