شرح ملف /etc/fstab

ahmed x86
0

كل ما تود معرفته عن ملف fstab في نظام لينكس

ملف fstab، أو جدول نظام الملفات (File System Table)، هو عصب نظام لينكس. هذا الملف الصغير هو المسؤول عن تركيب الأقراص والأقسام تلقائيًا عند تشغيل جهازك.

تجد هذا الملف الحساس في المسار ‎/etc/fstab‎. يقرأ النظام هذا الملف في كل مرة يبدأ فيها العمل. لتفعيل أي تغييرات تجريها عليه، يمكنك إما إعادة تشغيل الجهاز أو تنفيذ الأمر ‎mount -a‎. التغييرات ستظل سارية المفعول إلى أن يتم إيقاف تشغيل الجهاز.

لعرض محتوى الملف، يمكنك استخدام الأمر التالي في سطر الأوامر:

cat /etc/fstab

مثال على محتوى الملف (لتوزيعة تستخدم نظام ملفات Btrfs):

# <file system>                            <dir>      <type>  <options>                                                     <dump>  <pass>
# Root Partition (System)
UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59  /          btrfs   rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@      0       0

# Home Directory
UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59  /home      btrfs   rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@home  0       0

# Var Directory
UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59  /var       btrfs   rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@var   0       0

# Boot/EFI Partition
UUID=A004-9F0A                             /boot      vfat    rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro  0 2

# External Data Partition (NTFS)
UUID=01DC93E1699B43A0                      /mnt/data  ntfs-3g defaults,uid=1000,gid=1000,windows_names,locale=en_US.utf8                    0       0

في هذا المثال، نرى بعض التقسيمات المتقدمة:

  • نظام ملفات Btrfs الذي يعتمد على الـ subvolumes. لاحظ أن نفس الـ UUID يتكرر لكل من /، /home، و /var، لأنها جميعًا موجودة على نفس القرص الفعلي ولكن في subvolumes مختلفة.
  • قسم EFI المسؤول عن الإقلاع.
  • قسم بيانات شخصي بنظام NTFS.

أي سطر يبدأ بـ ‎#‎ هو مجرد تعليق توضيحي ولا يؤثر على عمل النظام.

شرح هيكلية الملف:

يعتمد ملف fstab على 6 أعمدة أساسية تتحكم في طريقة تعامل النظام مع كل قرص:

<file system> <dir> <type> <options> <dump> <pass>

إليك شرح تفصيلي لكل عمود:

  1. نظام الملفات (File System): يحدد هذا العمود ما الذي سيتم تركيبه. يمكنك استخدام اسم القسم (مثل /dev/sda1)، ولكن الأفضل والأكثر شيوعًا هو استخدام المعرف الفريد UUID (مثل UUID=fdd2...) لأنه لا يتغير، حتى إذا قمت بتغيير مكان توصيل القرص الصلب.
  2. نقطة التركيب (Mount Point / Dir): تحدد أين سيظهر محتوى القرص في بنية ملفات النظام. على سبيل المثال: / تعني جذر النظام، /home تعني ملفات المستخدمين، و /mnt/data لقرص تخزين خارجي.
  3. النوع (Type): يحدد نوع نظام الملفات المستخدم في القسم. بعض الأمثلة الشائعة:
    • ext4 (الأكثر استخدامًا في لينكس)
    • btrfs (حديث ومرن)
    • vfat (لقسم الـ Boot/EFI)
    • ntfs-3g (لأقراص الويندوز)
    • swap (للذاكرة الوهمية)
  4. الخيارات (Options): هذا العمود هو الأكثر تفصيلاً، ويحتوي على مجموعة من الخصائص مفصولة بفواصل:
    • defaults: الخيارات الافتراضية (قراءة وكتابة، تشغيل البرامج، إلخ).
    • rw / ro: للقراءة والكتابة (Read-Write) أو للقراءة فقط (Read-Only).
    • noatime: عدم تحديث وقت آخر وصول للملفات (لتحسين الأداء).
    • subvol: (خاص بنظام Btrfs) لتحديد أي مجلد فرعي سيتم استخدامه.
    • uid/gid: (مهم لأقراص NTFS) لتحديد هوية المستخدم (uid) والمجموعة (gid) المالكة للملفات، حتى تتمكن من تعديلها بدون مشاكل في الصلاحيات.
  5. النسخ الاحتياطي (Dump): رقم بسيط (0 أو 1). ‎0‎ تعني تجاهل هذا القرص عند عمل نسخ احتياطي باستخدام أداة dump القديمة. ‎1‎ تعني تضمينه في النسخ الاحتياطي.
  6. الفحص (Pass): يحدد ترتيب فحص القرص بحثًا عن الأخطاء (باستخدام fsck) أثناء الإقلاع:
    • 0: لا تقم بفحص القرص (تستخدم لأقراص NTFS، Btrfs أحيانًا، والـ Swap).
    • 1: افحص القرص أولاً (تستخدم فقط لقسم الجذر /).
    • 2: يتم فحصه بعد الجذر (للأقسام الأخرى مثل /home أو /boot).

مثال عملي: شرح تفصيلي لتركيب الـ volumes

لنلقِ نظرة على كيفية كتابة تركيب volumes في ملف fstab.

السطر الأول:

UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59 / btrfs rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@ 0 0

هذا السطر يوضح كيفية تطبيق الأعمدة التي شرحناها سابقًا، مع خيارات مخصصة للأقراص الحديثة (SSD) ونظام Btrfs:

  1. العمود الأول (UUID): نحدد هنا ما الذي سنقوم بتركيبه. استخدام الـ UUID يضمن أن النظام سيتعرف على القرص الصحيح.
  2. العمود الثاني (نقطة التركيب): / تعني أن هذا هو الـ Root (جذر النظام).
  3. العمود الثالث (النوع): btrfs تخبر النواة بالتعامل مع البيانات بنظام Btrfs.
  4. العمود الرابع (الخيارات):
    • rw: السماح بالقراءة والكتابة.
    • relatime: تحديث وقت الوصول عند التعديل فقط.
    • compress=zstd:3: ضغط الملفات لتوفير المساحة وتسريع القراءة.
    • ssd: تحسين الكتابة لأقراص الحالة الصلبة.
    • discard=async: تفعيل TRIM في الخلفية للحفاظ على الـ SSD.
    • space_cache=v2: تسريع حفظ الملفات الجديدة.
    • subvol=/@: نركب مجلدًا فرعيًا اسمه @ ليكون هو الجذر.
  5. العمود الخامس والسادس (0 0): لا نسخ احتياطي (dump) ولا فحص تلقائي (fsck).

السطر الثاني:

UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59 /home btrfs rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@home 0 0

هنا يتكرر نفس الـ UUID ونفس الخيارات، ولكن نغير نقطة التركيب لـ /home والمجلد الفرعي لـ subvol=/@home لفصل ملفات المستخدمين.

السطر الثالث:

UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59 /var btrfs rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=/@var 0 0

نكرر العملية لمجلد /var لفصل السجلات والبيانات المتغيرة عن لقطات النظام.

السطر الرابع (EFI):

UUID=A004-9F0A /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2

نستخدم نظام vfat لأنه المتوافق مع UEFI، ونضع خيارات mask لضبط الصلاحيات.

السطر الأخير (NTFS):

UUID=01DC93E1699B43A0 /mnt/data ntfs-3g defaults,uid=1000,gid=1000,windows_names,locale=en_US.utf8 0 0

نستخدم ntfs-3g ونحدد uid=1000 لضمان أن المستخدم الحالي يمتلك صلاحية التعديل على الملفات القادمة من ويندوز.

ماذا لو كان الـ volume بنظام ext4؟

UUID=fdd2e0dc-2814-4202-8fc4-f7d237d4de59 / ext4 defaults 0 0

الأمر أبسط بكثير، نستخدم defaults فقط، ولكن نفقد مزايا الـ Snapshots المنفصلة.

مثال آخر: قرص بيانات بنظام Btrfs بسيط

UUID=01DC93E1699B43A0 /mnt/data btrfs defaults 0 0

نصيحة: في الأقراص الثانوية، يفضل إضافة defaults,nofail لمنع توقف النظام إذا لم يكن القرص موصولاً.

كيفية التعديل والاختبار (هام جدًا):

لتعديل الملف استخدم:

sudo nano /etc/fstab

لحظة الحقيقة (الاختبار): بعد الحفظ، لا تقم بإعادة تشغيل الجهاز فورًا! نفذ الأمر التالي:

sudo mount -a

إذا لم تظهر رسالة خطأ، فالملف سليم.

إرسال تعليق

0 تعليقات

إرسال تعليق (0)

#buttons=(اوافق) #days=(20)

موقعنا يستخدم ملفات تعريف الارتباط (Cookies) لتحسين تجربتك. تحقق الآن
Ok, Go it!