العقدة

العقدة الفهرسية (عقدة الفهرس) هي بنية بيانات في نظام ملفات على غرار يونكس تصف كائن نظام ملفات مثل ملف أو دليل . يخزن كل عقدة فهرسية السمات ومواقع كتلة القرص لبيانات الكائن. [1] قد تتضمن سمات كائن نظام الملفات بيانات وصفية (أوقات التغيير الأخير، [2] الوصول، التعديل)، بالإضافة إلى بيانات المالك والأذونات . [ 3]

الدليل عبارة عن قائمة من العقد مع الأسماء المخصصة لها. تتضمن القائمة إدخالاً لنفسها، ولأصلها، ولكل من أبنائها.

علم أصل الكلمة

كانت هناك حالة من عدم اليقين في قائمة بريد نواة لينكس حول سبب وجود الحرف "i" في "inode". في عام 2002، تم طرح السؤال على رائد يونكس دينيس ريتشي ، الذي أجاب: [4]

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

تدعم ورقة بحثية نُشرت عام 1978 بواسطة ريتشي وكين تومسون فكرة أن "الفهرس" هو الأصل اللغوي لـ inodes. كتبا: [5]

[…] يحتوي إدخال الدليل على اسم الملف المرتبط ومؤشر إلى الملف نفسه فقط. هذا المؤشر هو عدد صحيح يسمى رقم i (لرقم الفهرس) للملف. عند الوصول إلى الملف، يتم استخدام رقم i الخاص به كمؤشر لجدول النظام (قائمة i ) المخزنة في جزء معروف من الجهاز الذي يوجد عليه الدليل. يحتوي الإدخال الموجود بهذه الطريقة ( عقدة i الخاصة بالملف ) على وصف الملف.

بالإضافة إلى ذلك، كتب موريس جيه باخ أن كلمة inode "هي اختصار لمصطلح index node وهي مستخدمة بشكل شائع في الأدبيات حول نظام UNIX". [6]

تفاصيل

مُوصِفات الملفات وجدول الملفات وجدول العقد في يونكس [7]

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

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

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

في العديد من أنظمة الملفات القديمة، يتم تخزين العقد في منطقة واحدة أو أكثر ذات حجم ثابت يتم إعدادها في وقت إنشاء نظام الملفات، وبالتالي يتم تثبيت الحد الأقصى لعدد العقد عند إنشاء نظام الملفات، مما يحد من الحد الأقصى لعدد الملفات التي يمكن لنظام الملفات الاحتفاظ بها. تتمثل الطريقة النموذجية لتخصيص العقد في نظام الملفات في عقدة واحدة لكل 2 كيلو بايت موجودة في نظام الملفات. [8]

تحذف بعض أنظمة الملفات على غرار يونكس مثل JFS و XFS و ZFS و OpenZFS و ReiserFS و btrfs و APFS جدول عقدة ثابت الحجم، ولكن يجب تخزين بيانات مكافئة من أجل توفير إمكانيات مكافئة. تتضمن البدائل الشائعة للجدول ذي الحجم الثابت أشجار B وأشجار B+ المشتقة .

أسماء الملفات وتأثيرات الدليل:

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

struct inodeيُطلق على التمثيل الموجود في الذاكرة في نواة نظام التشغيل لهذه البيانات اسم Linux . تستخدم الأنظمة المشتقة من BSD هذا المصطلح (يشير "v" إلى طبقة نظام الملفات الافتراضيvnode في نواة النظام ).

وصف عقدة POSIX

يفرض معيار POSIX سلوك نظام الملفات الذي يتأثر بشدة بأنظمة الملفات التقليدية UNIX . يتم الإشارة إلى العقدة بواسطة عبارة "الرقم التسلسلي للملف"، والذي يتم تعريفه كمعرف فريد لكل نظام ملفات . [9] يحدد هذا الرقم التسلسلي للملف، إلى جانب معرف الجهاز الذي يحتوي على الملف، الملف بشكل فريد داخل النظام بأكمله. [10]

في نظام POSIX، يحتوي الملف على السمات التالية [10] والتي يمكن استردادها بواسطة statنداء النظام:

  • معرف الجهاز (يحدد هذا الجهاز الذي يحتوي على الملف؛ أي نطاق تفرد الرقم التسلسلي).
  • أرقام التسلسل للملفات.
  • وضع الملف الذي يحدد نوع الملف وكيفية وصول مالك الملف ومجموعته والآخرين إلى الملف.
  • عدد الروابط التي تخبرك بعدد الروابط الثابتة التي تشير إلى العقدة.
  • معرف المستخدم لمالك الملف.
  • معرف المجموعة للملف.
  • معرف الجهاز للملف إذا كان ملف جهاز .
  • حجم الملف بالبايت .
  • طوابع زمنية تخبرك متى تم تعديل العقدة نفسها آخر مرة ( ctime ، وقت تغيير العقدة )، ومحتوى الملف الذي تم تعديله آخر مرة ( mtime ، وقت التعديل )، وآخر وصول ( atime ، وقت الوصول ).
  • حجم كتلة الإدخال/الإخراج المفضل .
  • عدد الكتل المخصصة لهذا الملف.

تداعيات

ستحتوي أنظمة الملفات المصممة باستخدام العقد على الخصائص الإدارية التالية:

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

استمرارية العقدة والملفات غير المرتبطة

قد لا يحتوي العقدة على أي روابط. العقدة التي لا تحتوي على روابط تمثل ملفًا لا يحتوي على أي إدخالات دليل متبقية أو مسارات تؤدي إليه في نظام الملفات. يُطلق على الملف الذي تم حذفه أو الذي يفتقر إلى إدخالات دليل تشير إليه اسم ملف "غير مرتبط".

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

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

تحويل رقم العقدة واسترجاع مسار دليل الملف

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

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

تحتفظ بعض أنظمة التشغيل بمعلومات إضافية لجعل هذه العملية تعمل بشكل أسرع. على سبيل المثال، في Linux VFS، [11] ذاكرة التخزين المؤقت لإدخالات الدليل، [12] والمعروفة أيضًا باسم dentry أو dcache، هي إدخالات ذاكرة التخزين المؤقت التي يستخدمها kernel لتسريع عمليات نظام الملفات من خلال تخزين المعلومات حول روابط الدليل في RAM .

الإمكانية التاريخية للربط الثابت بين الأدلة

تاريخيًا، كان من الممكن إنشاء روابط صلبة بين الدلائل. وهذا جعل بنية الدليل عبارة عن رسم بياني موجه عشوائيًا على عكس الرسم البياني غير الدوري الموجه . بل كان من الممكن أن يكون الدليل هو أصله. تحظر الأنظمة الحديثة عمومًا هذه الحالة المربكة، باستثناء أن أصل الجذر لا يزال يُعرَّف بأنه الجذر. الاستثناء الأكثر بروزًا لهذا الحظر موجود في نظام التشغيل Mac OS X (الإصدارات 10.5 والإصدارات الأحدث) الذي يسمح بإنشاء روابط صلبة للدلائل بواسطة المستخدم الفائق. [13]

استقرار رقم العقدة وأنظمة الملفات غير التابعة لـUnix

عندما يتم نقل ملف إلى دليل مختلف على نفس نظام الملفات، أو عندما يؤدي إلغاء تجزئة القرص إلى تغيير موقعه الفعلي، يظل رقم العقدة الخاص بالملف دون تغيير.

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

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

تثبيت مكتبة مبسطة مع أنظمة ملفات inode

تسمح أنظمة ملفات inode لعملية قيد التشغيل بمواصلة الوصول إلى ملف مكتبة حتى مع قيام عملية أخرى باستبدال نفس الملف.

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

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

عندما يقوم نظام التشغيل باستبدال الملف (وإنشاء عقدة جديدة)، فإنه يضع قفلًا [14] على العقدة [15] وربما الدليل المحتوي. [16] وهذا يمنع العمليات الأخرى من القراءة أو الكتابة إلى الملف (العقدة) [17] أثناء عملية التحديث، وبالتالي تجنب عدم تناسق البيانات أو تلفها. [18]

بمجرد اكتمال عملية التحديث، يتم تحرير القفل. أي وصول لاحق إلى الملف (عبر العقدة) بواسطة أي عمليات سيشير الآن إلى الإصدار الجديد من المكتبة. وبالتالي، يصبح من الممكن إجراء التحديثات حتى عندما تكون المكتبة قيد الاستخدام بواسطة عملية أخرى.

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

احتمالية استنفاد العقدة والحلول

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

تتجنب أنظمة الملفات الأخرى هذا القيد باستخدام تخصيص العقد الديناميكي. [20] يسمح تخصيص العقد الديناميكي لنظام الملفات بإنشاء المزيد من العقد حسب الحاجة بدلاً من الاعتماد على عدد ثابت تم إنشاؤه في وقت إنشاء نظام الملفات. [21] يمكن أن يؤدي هذا إلى "نمو" نظام الملفات عن طريق زيادة عدد العقد المتاحة للملفات والدلائل الجديدة، وبالتالي تجنب مشكلة نفاد العقد. [22]

التضمين

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

إذا كانت بيانات ملف ما تتناسب مع المساحة المخصصة للمؤشرات إلى البيانات، فيمكن استخدام هذه المساحة بسهولة. على سبيل المثال، يقوم ext2 وخلفاؤه بتخزين بيانات الروابط الرمزية (عادةً أسماء الملفات) بهذه الطريقة إذا لم يتجاوز حجم البيانات 60 بايت ("روابط رمزية سريعة"). [23]

يحتوي نظام الملفات Ext4 على خيار نظام ملفات يسمى " inline_datainline" والذي يسمح لـ ext4 بإجراء التضمين إذا تم تمكينه أثناء إنشاء نظام الملفات. نظرًا لأن حجم العقدة محدود، فإن هذا يعمل فقط مع الملفات الصغيرة جدًا. [24]

في الأنظمة غير يونكس

  • يحتوي نظام الملفات NTFS على جدول ملفات رئيسي (MFT) يخزن الملفات في شجرة B. يحتوي كل مدخل على "معرف ملف"، مشابه لرقم العقدة، والذي يشير بشكل فريد إلى هذا المدخل. [25] توجد الطوابع الزمنية الثلاثة ومعرف الجهاز والسمات وعدد المراجع وأحجام الملفات في المدخل، ولكن على عكس POSIX، يتم التعبير عن الأذونات من خلال واجهة برمجة تطبيقات مختلفة. [26] يكون تخطيط القرص أكثر تعقيدًا. [27] لم يكن لدى أنظمة الملفات FAT السابقة مثل هذا الجدول وكانت غير قادرة على إنشاء روابط ثابتة.
    • يحتوي نظام الملفات NTFS أيضًا على مفهوم تضمين الملفات الصغيرة في إدخال MFT. [28]
    • يحتوي نظام الملفات ReFS المشتق على MFT متماثل. يحتوي نظام الملفات ReFS على معرف ملف 128 بت؛ تم نقل هذا الامتداد أيضًا إلى نظام الملفات NTFS، الذي كان يحتوي في الأصل على معرف ملف 64 بت. [26]
  • يمكن استخدام نفس واجهة برمجة التطبيقات GetFileInformationByHandle المشابهة للإحصائيات على وحدات تخزين المجموعة المشتركة و SMB 3.0 ، لذا من المفترض أن هذه الأنظمة لديها مفهوم مماثل لمعرف الملف. [26]

انظر أيضا

مراجع

  1. ^ تانينباوم، أندرو س. أنظمة التشغيل الحديثة (الطبعة الثالثة). ص 279.
  2. ^ JVSANTEN. "الفرق بين mtime وctime وatime - Linux Howtos and FAQs". Linux Howtos and FAQs . مؤرشف من الأصل في 2016-11-20.{{cite web}}:CS1 maint: عنوان URL غير مناسب ( الرابط )
  3. ^ "تشريح مفتاح نظام الملفات الافتراضي في لينكس". ibm.com .
  4. ^ Landley, Rob (20 يوليو 2002). "إعادة توجيه: إعادة توجيه: ماذا تعني كلمة "i" في inode؟ Dennis Ritchie لا يعرف أيضًا". linux-kernel (قائمة بريدية) . تم الاسترجاع في 2011-01-12 .
  5. ^ ريتشي، دينيس م.؛ تومسون، كين (1978). "نظام تقاسم الوقت يونكس". مجلة بيل التقنية . 57 (6): 1913–1914 . تم الاسترجاع في 19 ديسمبر 2015 .
  6. ^ موريس ج. باخ (1986). تصميم نظام التشغيل يونكس . برنتيس هول. ISBN 978-0132017992.
  7. ^ باخ، موريس ج. (1986). تصميم نظام التشغيل يونكس . برنتيس هول. ص 94. رمز المكتبة : 1986duos.book.....B.
  8. ^ "linfo". مشروع معلومات لينكس . تم الاسترجاع في 11 مارس 2020 .
  9. ^ "تعريفات - الرقم التسلسلي للملف 3.176". المجموعة المفتوحة . تم الاسترجاع في 10 يناير 2018 .
  10. ^ ab "<sys/stat.h>". The Open Group . تم الاسترجاع في 15 يناير 2018 .
  11. ^ Gooch, Richard. Enberg, Pekka (ed.). "نظرة عامة على نظام الملفات الافتراضي Linux". kernel.org . تم الاسترجاع في 20 مايو 2023 .
  12. ^ Richard Gooch. Enberg, Pekka (ed.). "Directory Entry Cache (dcache)". kernel.org . تم الاسترجاع في 20 مايو 2023 .
  13. ^ "ما هو الأمر المستخدم في يونكس لإنشاء رابط ثابت إلى دليل في نظام التشغيل OS X؟". Stack Overflow . 16 يناير 2011. مؤرشف من الأصل في 5 يناير 2020 . تم الاسترجاع 5 يناير 2020 .
  14. ^ مجتمع تطوير النواة. "القفل". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  15. ^ Gooch, Richard. Enberg, Pekka (ed.). "struct inode_operations". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  16. ^ مجتمع تطوير النواة. "قفل الدليل". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  17. ^ مجتمع تطوير النواة. "أنواع الأقفال وقواعدها". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  18. ^ van de Ven, A., Molnar, I. "Runtime locking correctness validator". kernel.org . تم الاسترجاع في 21 مايو 2023 .{{cite web}}:CS1 maint: أسماء متعددة: قائمة المؤلفين ( الرابط )
  19. ^ مجتمع تطوير النواة. "2. التصميم عالي المستوى". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  20. ^ مجتمع تطوير النواة. "بيانات التعريف الذاتي لـ XFS". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  21. ^ مجتمع تطوير النواة. "2.7. سياسة تخصيص الكتل والعقد". kernel.org . تم الاسترجاع في 21 مايو 2023 .
  22. ^ Vadala, Derek (2002). "6. Filesystems". إدارة RAID على Linux . O'Reilly Media, Inc. ISBN 9781565927308.
  23. ^ "نواة لينكس: أنظمة الملفات". tue.nl .
  24. ^ "Ext4 Disk Layout". kernel.org . تم الاسترجاع في 18 أغسطس 2013 .
  25. ^ "هل يحتوي نظام Windows على أرقام Inode مثل Linux؟". Stack Overflow .
  26. ^ abc "دالة GetFileInformationByHandle (fileapi.h) - تطبيقات Win32". docs.microsoft.com .
  27. ^ "[MS-FSCC]: أنواع سمات NTFS". docs.microsoft.com .
  28. ^ "Windows - الحد الأقصى لحجم الملف الذي يمكن تخزينه بالكامل في جدول الملفات الرئيسي NTFS (MFT)".
  • تشريح نظام الملفات في لينكس
  • تعريف العقدة
  • شرح العقد والروابط الرمزية والروابط الصلبة
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Inode&oldid=1177251423"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate