0

نظام الملفات Filesystem: ماهيته وكيف يتعامل معه نظام التشغيل

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

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

  • البنية الكاملة للمجلدات في لينكس، والتي تبدأ من الجذر /.
  • نوع محدّد من صيغ تخزين البيانات؛ مثل EXT3، EXT4، XFS، BTRFS وما شابهها. يدعم لينكس، بهذا المعنى، ما يقارب 100 نظام ملفات؛ بعضها قديم جدا وبعض آخر من أحدث النظم الموجودة. يستخدم كل نوع من هذه النظم هيكلة خاصة به تعرّف كيف تُخزَّن البيانات في القرص الصّلب وكيف يمكن الوصول إليها. يمكن القول إن هذا هو المعنى المعياري للمصطلح.
  • قرص صلب أو تجزئة منه مهيّأة (Formatted) بنظام ملفات معيَّن.

الوظائف الأساسية لنظام الملفات

يُصمّم نظام الملفات لتوفير مساحة للتخزين غير المتطاير Non-volatile للبيانات؛ أي تلك الموجودة على وسائط لا تفقد البيانات بمجرد فصلها من التيار (الأقراص الصلبة Hard drives، مثلا). هذا هو سبب وجود نظام الملفات أصلا؛ إلا أنها ليست وظيفته الوحيدة. يؤدي نظام الملفات مهامّ أخرى مرتبطة بوظيفته الرئيسية.

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

الخطوة الثانية بعد تعريف فضاء الأسماء هي تعريف هيكلة للبيانات الوصفية Metadata من أجل أساس منطقي لفضاء الأسماء. تشمل البياناتُ الوصفية:

  • البياناتِ اللازمة لدعم البنية الشجرية للمجلدات؛
  • تحديد المقاطع المستغلَّة من القرص وتلك المتاحة للاستخدام؛
  • البيانات اللازمة للحفاظ على أسماء المجلدات والملفات؛
  • بيانات متعلقة بالملفات مثل حجمها، أوقات إنشائها، الوصول إليها أو التعديل عليها؛
  • مكان – أو أماكن – تواجد البيانات الخاصة بالملفات (محتوى الملفات).

تستخدَم بيانات وصفية أخرى لتخزين معلومات عامة عن التقسيمات الفرعية للقرص، مثل التجزئات المنطقية. تتضمن البيانات الوصفية العامّة والهياكل التي تمثّلها معلومات تصف نظام الملفات الموجود على القرص أو التجزئة، وهي مستقلة عن البيانات الوصفية السابقة التي يستخدمها نظام الملفات.

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

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

يستخدم لينكس مكونيْن برمجيّيْن للتعامل مع نظام الملفات، وذلك من أجل الرفع من فاعلية نظام التشغيل وإنتاجية المطورين:

كيف يتعامل لينكس مع نظام الملفات

  • المكوِّن الأول هو نظام الملفات الافتراضي في لينكس Linux virtual filesystem الذي يوفّر لنواة نظام التشغيل والمطورين مجموعة موّحدة من الأوامر تتيح الوصول إلى جميع أنواع نظم الملفات. يؤدّي نظام الملفات الافتراضي هذا المهام المطلوبة منه بالاعتماد على مجموعة من التعريفات البرمجية Drivers.
  • المكوّن الثاني هو مجموعة تعريفات برمجية يختص كل واحد منها بنوع معيَّن من أنظمة الملفات. يتلقى التعريف الطلبات من نظام الملفات الافتراضي ويحولها إلى مجموعة أوامر خاصّة بنظام الملفات الموجود على القرص.

أنواع أنظمة الملفات

يدعم لينكس القراءة من تجزئات مهيّأة بواحد من حوالي 100 نوع من أنظمة الملفات؛ إلا أن عدد نظم الملفات التي يمكن له إنشاء التجزئات بها أقل من ذلك بكثير. من الشائع تركيب Mounting نظم ملفات مختلفة على نفس نظام الملفات الجذر (نظام الملفات الذي هُيئت به تجزئة القرص التي تحوي المجلد الجذر /). نتحدّث عن نظام الملفات هنا بمعنى البُنَى والبيانات الوصفية المطلوبة لتخزين بيانات مستخدم وإدارتها على قرص صلب أو تجزئة منه. الهدف الأساسي من دعم إمكانية القراءة من كل هذا العدد من أنظمة الملفات هو الإبقاء على الحد الأدنى من التوافق مع أنظمة الملفات المستخدمة في أنظمة تشغيل أخرى. في ما يلي لائحة بأكثر أنظمة الملفات شيوعا في لينكس:

  • btrfs
  • cramfs
  • ext2
  • ext3
  • ext4
  • fat
  • gfs2
  • hfsplus
  • minix
  • msdos
  • ntfs
  • reiserfs
  • vfat
  • xfs

تركيب نظام الملفات

بدأ استخدام مصطلح التركيب Mounting في البدايات الأولى للحواسيب. كان الشخص يأخذ شريط أو قرص التخزين ثم يركّبه في قارئ الأقراص المناسب؛ قبل أن يطلب من نظام التشغيل اعتماده وبالتالي توفير محتواه لخدمات نظام التشغيل، التطبيقات والمستخدمين. نقطة التركيب Mount point عبارة عن مجلّد يُنشأ في نظام الملفات الجذر(أو نظام ملفات آخر، إلا أن هذا ليس شائعا). نستطيع مثلا استخدام قرص منفصل لمجلدات المستخدمين الشخصية ثم تركيبه على المجلد home/. يمكن بهذه الطريقة الانتقال بين توزيعات مختلفة (للتجربة مثلا) مع الإبقاء على ملفات المستخدم كما هي.

يُركَّب نظام الملفات الجذر / مبكّرا في متتالية إقلاع نظام التشغيل؛ بينما يركّب نظام التمهيد – systemd في معظم التوزيعات الحديثة – بقية أنظمة الملفات بعد ذلك بالاعتماد على ملف الإعداد etc/fstab/. يأتي اسم الملف اختصارا لوظيفته (جدول نظام الملفات Filesystem table)؛ ويسرُد لائحة بأنظمة الملفات المطلوب تركيبها ونقاط التركيب المخصّصة لها، علاوة على خيارات تحدّد طريقة التركيب (للقراءة فقط أو للقراءة والكتابة، مثلا) وأمورا قد تكون خاصة بنوع نظام الملفات المحدّد.

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

ترجمة – بتصرّف – للمقال https://opensource.com/life/16/10/introduction-linux-filesystems.

مصدر الصورة البارزة: Rikki Endsley عن طريق opensource.com.

فضلًا.. شارك هذا المقال 🙂

Email this to someoneTweet about this on TwitterShare on FacebookShare on Google+Share on StumbleUpon

zeine77

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

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *