فهم أحجام الدليل في Azure NetApp Files

عند إنشاء ملف في دليل، تتم إضافة إدخال إلى ملف فهرس مخفي داخل وحدة تخزين Azure NetApp Files. يساعد ملف الفهرس هذا في تعقب inodes الموجودة في دليل ويساعد على تسريع طلبات البحث عن الدلائل التي بها عدد كبير من الملفات. عند إضافة الإدخالات إلى هذا الملف، يزيد حجم الملف (ولكن لا يقل أبدا) بمعدل 512 بايت تقريبا لكل إدخال اعتمادا على طول اسم الملف. تضيف أسماء الملفات الأطول حجما أكبر إلى الملف. تضيف الارتباطات الرمزية أيضا إدخالات إلى هذا الملف. يعرف هذا المفهوم باسم حجم الدليل، وهو عنصر شائع في جميع أنظمة الملفات المستندة إلى Linux. حجم الدليل ليس الحد الأقصى لإجمالي عدد الملفات في وحدة تخزين Azure NetApp Files واحدة. يتم تحديد ذلك من خلال maxfiles القيمة.

بشكل افتراضي، عند إنشاء دليل جديد، فإنه يستهلك 4 KiB (4096 بايت) أو ثمانية كتل 512 بايت. يمكنك عرض حجم دليل تم إنشاؤه حديثا من عميل Linux باستخدام الأمر stat.

# mkdir dirsize 
# stat dirsize 
File: ‘dirsize’ 
Size: 4096            Blocks: 8          IO Block: 32768  directory 

أحجام الدليل خاصة بدليل واحد ولا تدمج في الأحجام. على سبيل المثال، إذا كان هناك 10 أدلة في وحدة تخزين، يمكن لكل منها الاقتراب من حد حجم الدليل 320-MiB في وحدة تخزين واحدة.

تحديد ما إذا كان الدليل يقترب من حجم الحد

بالنسبة إلى دليل 320-MiB، يكون عدد الكتل هو 655360، مع كل حجم كتلة هو 512 بايت. (أي 320x1024x1024/512.) يترجم هذا الرقم إلى ما يقرب من 4-5 ملايين ملف كحد أقصى لدليل 320-MiB. ومع ذلك، قد يكون العدد الفعلي للملفات القصوى أقل، اعتمادا على عوامل مثل عدد الملفات ذات الأحرف غير ASCII في الدليل.

يمكنك استخدام stat الأمر من عميل لمعرفة ما إذا كان الدليل يقترب من الحد الأقصى لحجم بيانات تعريف الدليل (320 ميغابايت). إذا وصلت إلى الحد الأقصى لحجم دليل واحد لملفات Azure NetApp، يحدث الخطأ No space left on device .

بالنسبة إلى دليل 320 ميغابايت، يكون عدد الكتل 655360، مع كل حجم كتلة هو 512 بايت. (أي 320x1024x1024/512.) يترجم هذا الرقم إلى ما يقرب من 4 ملايين ملف كحد أقصى لدليل 320 ميغابايت. ومع ذلك، قد يكون العدد الفعلي للملفات القصوى أقل، اعتمادا على عوامل مثل عدد الملفات ذات الأحرف غير ASCII في الدليل. للحصول على معلومات حول كيفية مراقبة maxdirsize، راجع مراقبة maxdirsize.

اعتبارات حجم الدليل

عند التعامل مع بيئة عدد الملفات العالية، ضع في اعتبارك التوصيات التالية:

  • تدعم وحدات تخزين Azure NetApp Files ما يصل إلى 320 ميجابايت لأحجام الدليل. لا يمكن زيادة هذه القيمة.
  • بمجرد تجاوز حجم دليل وحدة التخزين، يعرض العملاء خطأ نفاد المساحة حتى إذا كانت هناك مساحة حرة متوفرة في وحدة التخزين.
  • بالنسبة إلى وحدات التخزين العادية، يساوي حجم دليل MiB 320 ما يقرب من 4-5 ملايين ملف في دليل واحد. تعتمد هذه القيمة على أطوال اسم الملف.
  • وحدات التخزين الكبيرة لها بنية مختلفة عن وحدات التخزين العادية.
  • يمكن أن يؤدي ارتفاع عدد الملفات في دليل واحد إلى حدوث مشاكل في الأداء عند البحث. عندما يكون ذلك ممكنا، حدد الحجم الإجمالي لدليل واحد إلى 2 ميجابايت (حوالي 27000 ملف) عند الحاجة إلى عمليات بحث متكررة.
    • إذا كانت هناك حاجة إلى المزيد من الملفات في دليل واحد، فعدل توقعات أداء البحث وفقا لذلك. بينما تقوم Azure NetApp Files بفهرسة قوائم ملفات الدليل للأداء، يمكن أن تستغرق عمليات البحث بعض الوقت مع عدد الملفات العالي.
  • عند تصميم نظام الملفات، تجنب تخطيطات الدليل المسطحة. للحصول على معلومات حول الأساليب المختلفة لتخطيطات الدليل، راجع حول تخطيطات الدليل.
  • لحل المشكلات التي تم فيها تجاوز حجم الدليل ولا يمكن إنشاء ملفات جديدة، احذف الملفات أو انقلها من الدليل ذي الصلة.

حول تخطيطات الدليل

maxdirsize يمكن أن تخلق القيمة مخاوف عند استخدام بنيات الدليل المسطح، حيث يحتوي مجلد واحد على ملايين الملفات على مستوى واحد. بنيات المجلدات حيث يتم تداخل الملفات والمجلدات والمجلدات الفرعية لها تأثير منخفض على maxdirsize. هناك العديد من منهجيات هيكل الدليل.

بنية الدليل المسطح هي دليل واحد مع العديد من الملفات أسفل نفس الدليل.

رسم تخطيطي لبنية دليل مسطح.

تحتوي بنية الدليل الواسعة على العديد من الدلائل ذات المستوى الأعلى مع ملفات منتشرة عبر جميع الدلائل.

رسم تخطيطي لبنية دليل واسعة.

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

رسم تخطيطي لبنية دليل عميق.

تأثير بنيات الدليل المسطحة في Azure NetApp Files

بنيات الدليل المسطحة (العديد من الملفات في دليل واحد أو عدد قليل من الدلائل) لها تأثير سلبي على مجموعة واسعة من أنظمة الملفات أو وحدات تخزين Azure NetApp File أو غيرها. تتضمن المشكلات المحتملة ما يلي:

  • ضغط الذاكرة
  • استخدام CPU
  • أداء الشبكة/زمن الانتقال (خاصة أثناء الاستعلامات الجماعية للملفات GETATTR والعمليات READDIR والعمليات)

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

على سبيل المثال، إذا كان الدليل الواحد يحتوي على ملايين الملفات وينشئ ما يقرب من 85٪ من الارتباطات الثابتة البعيدة لنظام الملفات، يمكنك أن تتوقع maxdirsize أن يتم استنفادها بضعف المبلغ تقريبا كما تفعل وحدة التخزين العادية.

للحصول على أفضل النتائج مع أحجام الدليل في Azure NetApp Files:

  • تجنب بنيات الدليل المسطحة في Azure NetApp Files. تعمل بنيات الدليل العريضة أو العميقة على أفضل نحو، شريطة ألا يتجاوز طول مسار الملف أو المجلد معايير بروتوكول NAS.
  • إذا كانت بنيات الدليل المسطحة لا يمكن تجنبها، فراقب maxdirsize للدلائل.

مراقب maxdirsize

للحصول على دليل واحد، استخدم stat الأمر للعثور على حجم الدليل.

# stat /mnt/dir_11/c5 

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

# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn 

إشعار

حجم الدليل الذي تم الإبلاغ عنه بواسطة أمر الإحصائيات بالبايت. الحجم الذي تم الإبلاغ عنه في أمر البحث موجود في KiB.

مثال

# stat /mnt/dir_11/c5 

  File: ‘/mnt/dir_11/c5’ 

  Size: 322396160       Blocks: 632168     IO Block: 32768  directory 
 
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn 
316084 /mnt/dir_11/c5 

3792 /mnt/dir_19 

3792 /mnt/dir_16 

في السابق، حجم الدليل هو 316,084 KiB (308.6 MiB)، والذي يقترب من /mnt/dir_11/c5 الحد 320-MiB. وهذا يعادل حوالي 4.1 مليون ملف.

# ls /mnt/dir_11/c5 | wc -l
4171624

في هذه الحالة، ضع في اعتبارك الإجراءات التصحيحية مثل نقل الملفات أو حذفها.

مزيد من المعلومات