المحتويات:
الأمر df (أداة تقرير مساحة القرص الحرة)
المجال (المجالات) التخصصية الأساسية: الحوسبة، أنظمة التشغيل يونكس وشبيهة يونكس
يُعد الأمر df، اختصارًا لعبارة “disk free” (مساحة القرص الحرة)، أحد الأدوات الطرفية الأساسية والأكثر استخدامًا في أنظمة التشغيل القائمة على يونكس (مثل لينكس، FreeBSD، macOS). يتمثل الغرض الجوهري لهذا الأمر في عرض تقرير مفصل حول استخدام مساحة نظام الملفات (Filesystem space utilization)، بما في ذلك إجمالي المساحة المتوفرة، والمساحة المستخدمة، والمساحة المتبقية على جميع نقاط التثبيت (Mount Points) النشطة أو المحددة. لا يقوم الأمر df بفحص حجم الملفات الفردية أو المجلدات بشكل مباشر، بل يعتمد على قراءة معلومات الرأس (Metadata) المخزنة في هيكل نظام الملفات، مثل كتلة فائقة (Superblock)، لتحديد حالة الاستخدام الإجمالية. هذه الخاصية تجعله أداة سريعة وفعالة لتقييم الصحة العامة لسعة التخزين في الخوادم ومحطات العمل.
تكمن أهمية الأمر df في قدرته على تزويد مسؤولي الأنظمة والمهندسين ببيانات حاسمة لاتخاذ قرارات متعلقة بإدارة السعة والتخطيط لها، ومراقبة الموارد، واستكشاف أخطاء التخزين وإصلاحها. إن فهم المخرجات التي يقدمها df، والتي تشمل عادةً نسبة الاستخدام المئوية، أمر حيوي لضمان استمرارية عمل النظام، حيث أن الوصول إلى سعة تخزين قصوى يمكن أن يؤدي إلى فشل التطبيقات أو عدم استقرار نظام التشغيل بالكامل. على الرغم من بساطته الظاهرة، فإن الأمر df يمتلك مجموعة واسعة من الخيارات التي تسمح بالتخصيص الدقيق للتقرير، مثل عرض المعلومات بوحدات قابلة للقراءة البشرية أو إظهار استخدام العقد الداخلية (Inodes).
1. التعريف الأساسي والمبدأ
يقوم الأمر df بتنفيذ وظيفته من خلال التفاعل المباشر مع نواة نظام التشغيل (Kernel) وقراءة المعلومات المتعلقة بأنظمة الملفات المثبتة حاليًا. عندما يتم تنفيذ الأمر، فإنه يطلب من النواة بيانات حول كل نظام ملفات مثبت، بما في ذلك حجم الكتلة (Block Size)، وإجمالي عدد الكتل، وعدد الكتل المستخدمة والمتاحة. والنتيجة هي لقطة إحصائية في الوقت الفعلي لحالة التخزين. من الضروري فهم أن df لا يحسب المساحة عن طريق جمع أحجام جميع الملفات الموجودة على القرص؛ بل يعتمد على المعلومات التي يحتفظ بها نظام الملفات نفسه لتتبع حالته. هذا المبدأ يجعله مختلفًا جوهريًا عن أدوات أخرى مثل الأمر du (disk usage).
تُستخدم البيانات التي يعرضها df في سياقات متعددة. في بيئات الحوسبة السحابية أو مراكز البيانات الكبيرة، يُدمج df غالبًا في نصوص برمجية (Scripts) للمراقبة الآلية التي تقوم بتشغيله على فترات منتظمة لتوليد تنبيهات عندما تتجاوز نسبة استخدام القرص عتبة محددة (مثل 90%). كما يُعد هذا الأمر الأداة الأولى التي يلجأ إليها مسؤول النظام عند مواجهة شكاوى حول “قرص ممتلئ” (Disk Full)، حيث يسمح بتحديد نظام الملفات المحدد الذي يعاني من ضغط السعة بسرعة فائقة دون الحاجة إلى التنقل عبر شجرة الدلائل.
تجدر الإشارة إلى أن مفهوم “المساحة المتاحة” الذي يبلّغ عنه df قد يكون أقل من المساحة الفعلية غير المستخدمة. يعود هذا غالبًا إلى الممارسات القياسية لأنظمة الملفات مثل EXT4، حيث يتم حجز نسبة مئوية صغيرة (عادةً 5%) من إجمالي سعة القرص للاستخدام الجذري (Root User) والنظام. يتم هذا الحجز لضمان أن يتمكن مسؤول النظام من تسجيل الدخول وإجراء الصيانة وتنظيف الملفات الضرورية حتى لو كان القرص ممتلئًا بالنسبة للمستخدمين العاديين. يعرض الأمر df المساحة المتاحة للمستخدمين غير الجذريين، مما يعكس بدقة قيود الاستخدام اليومي.
2. الأصول والتطور التاريخي
يعود تاريخ الأمر df إلى المراحل الأولى لتطوير نظام التشغيل يونكس الأصلي في مختبرات بيل (Bell Labs) خلال أواخر الستينيات وأوائل السبعينيات. كان الهدف الأساسي منه هو توفير طريقة مبسطة وموحدة للمستخدمين لفهم الحالة المادية والمنطقية لمساحات التخزين المتاحة على الأجهزة متعددة المستخدمين. كانت الحاجة إلى هذه الأداة ملحة نظرًا للطبيعة المشتركة والمحدودة لموارد التخزين في تلك الفترة المبكرة من الحوسبة، حيث كان تتبع استخدام القرص أمرًا حيويًا لتوزيع الموارد بشكل عادل.
مع تطور يونكس وظهور النكهات المختلفة (مثل BSD و System V)، تم الحفاظ على الأمر df كوحدة أساسية، على الرغم من أن تطبيق الخيارات وبعض تفاصيل المخرجات قد تغيرت قليلاً بين الإصدارات. كان التطور الأهم هو التوحيد القياسي للأمر بموجب معيار POSIX (Portable Operating System Interface) الذي سعى لضمان أن تعمل الأوامر الأساسية، بما في ذلك df، بنفس الطريقة عبر جميع أنظمة التشغيل المتوافقة مع يونكس. هذا التوحيد القياسي عزز من قابلية نقل النصوص البرمجية وإدارة الأنظمة.
في العصر الحديث، ومع ظهور أنظمة ملفات جديدة ومتقدمة (مثل ZFS و Btrfs و NFS)، استمر الأمر df في التكيف. فقد تم تحديثه لدعم أنواع أنظمة الملفات هذه بشكل صحيح، وعرض معلومات إضافية مثل نوع نظام الملفات (باستخدام الخيار -T). كما تم إدخال التحسينات المتعلقة بسهولة القراءة، وأبرزها الخيار -h (human-readable)، الذي أصبح الآن هو الوضع الافتراضي أو المفضل لمعظم المستخدمين، حيث يحول الكتل الكبيرة إلى وحدات سهلة الفهم مثل جيجابايت (GB) وتيرابايت (TB)، مما يعكس الزيادة الهائلة في سعات التخزين الحديثة.
3. صيغة الأمر الرئيسية
الصيغة الأساسية لتنفيذ الأمر df بسيطة جدًا، ولكنها تسمح بتعدد الاستخدامات. يمكن تشغيله دون أي وسيطات (Arguments) لعرض معلومات حول جميع أنظمة الملفات المثبتة حاليًا على النظام، أو يمكن تمرير مسار ملف أو دليل (Directory) محدد كوسيط، وفي هذه الحالة، سيعرض df فقط معلومات حول نظام الملفات الذي ينتمي إليه هذا المسار.
df [OPTIONS] [FILE]
عند تنفيذ الأمر df بدون خيارات، فإنه غالبًا ما يعرض الأحجام بوحدات الكيلوبايت (1024 بايت)، مما قد يجعل قراءة المخرجات صعبة في الأنظمة الحديثة ذات السعات التخزينية الكبيرة. ولذلك، من النادر أن يتم استخدامه في بيئات العمل الحديثة بدون خيارات إضافية لتنظيم العرض، أبرزها خيار القراءة البشرية -h. يضمن استخدام الخيارات المناسبة أن تكون المعلومات المقدمة دقيقة وموجهة نحو احتياجات المسؤول.
4. أهم الخيارات والمؤشرات
لتحقيق أقصى استفادة من الأمر df، يجب استخدام الخيارات المناسبة التي تتيح تصفية البيانات أو تغيير تنسيق العرض:
-h(Human-readable): هذا هو الخيار الأكثر استخدامًا. يقوم بتحويل الأحجام المعروضة من الكتل إلى وحدات أكثر قابلية للقراءة البشرية (مثل K، M، G، T)، مما يسهل على المستخدمين تقييم السعات الكبيرة على الفور دون الحاجة إلى إجراء عمليات حسابية.-i(Inodes): لا يقتصر الأمر df على تتبع مساحة القرص فحسب، بل يتبع أيضًا استخدام العقد الداخلية (Inodes). العقدة الداخلية هي بنية بيانات تحتوي على معلومات وصفية حول الملف (مثل المالك، الأذونات، وموقع البيانات). في بعض الحالات، قد يمتلئ القرص بعدد كبير من الملفات الصغيرة جدًا قبل نفاد المساحة الفعلية. يعرض هذا الخيار عدد العقد الداخلية المستخدمة والمتاحة.-T(Filesystem Type): يعرض هذا الخيار عمودًا إضافيًا يوضح نوع نظام الملفات لكل نقطة تثبيت (مثل ext4، XFS، tmpfs، NFS). هذا مفيد للغاية في الأنظمة المختلطة أو عند استكشاف الأخطاء وإصلاحها لفهم كيفية تفاعل النواة مع الأجهزة المختلفة.-a(All filesystems): يضمن عرض معلومات حول جميع أنظمة الملفات، بما في ذلك الأنظمة الافتراضية وشبه الزائفة (Pseudo-filesystems) التي يتم إنشاؤها بواسطة النواة (مثل /proc و /sys)، والتي يتم استبعادها عادةً في العرض الافتراضي لتجنب إرباك المستخدم.--total: (ميزة GNU Coreutils) يضيف هذا الخيار سطرًا إجماليًا في نهاية المخرجات يلخص إجمالي المساحة المستخدمة والمتاحة لجميع أنظمة الملفات المدرجة.
يسمح الجمع بين هذه الخيارات للمسؤول بتوليد تقارير مخصصة تلبي احتياجات المراقبة أو التدقيق. على سبيل المثال، قد يستخدم مسؤول النظام الأمر df -hT للحصول على عرض سهل القراءة يتضمن نوع نظام الملفات، مما يوفر أقصى قدر من المعلومات في أمر واحد.
5. تفسير مخرجات الأمر
عند تنفيذ الأمر df، تظهر المخرجات في شكل جدول منظم يحتوي على أعمدة قياسية، يجب فهم دلالة كل منها بشكل دقيق:
- Filesystem (نظام الملفات): يحدد المصدر الذي يتم تزويد المساحة منه. قد يكون جهازًا فعليًا (مثل /dev/sda1) أو نقطة شبكة (مثل server:/home) أو نظام ملفات مؤقت في الذاكرة (tmpfs).
- Size (الحجم): إجمالي السعة المتاحة لنظام الملفات. عند استخدام الخيار -h، يتم عرض هذا الحجم بوحدات (G، M، T).
- Used (المستخدم): مقدار المساحة المستهلكة حاليًا من قبل الملفات والدلائل على نظام الملفات هذا.
- Avail (المتاح): مقدار المساحة المتبقية التي يمكن للمستخدمين العاديين استخدامها. كما ذكرنا سابقًا، لا يشمل هذا الحجم عادةً المساحة المحجوزة للمستخدم الجذري.
- Use% (نسبة الاستخدام): النسبة المئوية للمساحة المستخدمة من إجمالي المساحة المتوفرة (قبل احتساب الحجز). هذه النسبة هي المؤشر الأسرع والأكثر أهمية لتقييم ضغط سعة التخزين.
- Mounted on (نقطة التثبيت): المسار الذي يتم فيه الوصول إلى نظام الملفات في شجرة الدلائل (مثل /، /home، /var).
تفسير عمود “Avail” (المتاح) يتطلب دقة، خاصة عند التعامل مع أنظمة الملفات المحجوزة. إذا أظهر نظام ملفات استخدامًا بنسبة 95%، فهذا يعني أن المساحة المتاحة للمستخدمين العاديين قد نفدت تقريبًا، لكن النظام لا يزال يحتفظ بنسبة الـ 5% المحجوزة للمستخدم الجذري. إذا وصلت نسبة الاستخدام إلى 100%، فهذا يشير إلى نفاد المساحة بالكامل، بما في ذلك المساحة المحجوزة (ما لم يكن الخيار -a قيد الاستخدام ويشمل أنظمة ملفات افتراضية).
6. التطبيقات العملية وأمثلة الاستخدام
يُستخدم الأمر df في مجموعة واسعة من السيناريوهات الإدارية والتشغيلية:
- المراقبة الروتينية: يُشغل df -h يوميًا أو عدة مرات في اليوم كجزء من فحص صحة النظام. يتيح للمسؤولين تحديد اتجاهات النمو في استخدام القرص واتخاذ إجراءات وقائية قبل أن يؤدي الامتلاء إلى توقف الخدمة.
- تحديد موقع مشكلة الامتلاء: عند ظهور رسائل خطأ تفيد بأن القرص ممتلئ، يُستخدم df بسرعة لتحديد نقطة التثبيت المحددة (مثل /var/log أو /tmp) التي تعاني من الامتلاء، مما يوجه المسؤول مباشرة إلى مصدر المشكلة لتنظيف الملفات المؤقتة أو سجلات النظام.
- التحقق من نقاط التثبيت عن بُعد: عند استخدام أنظمة الملفات الشبكية (NFS أو SMB)، يمكن استخدام الأمر
df /mnt/nfs_shareللتحقق من المساحة المتاحة على الخادم البعيد دون الحاجة إلى تسجيل الدخول إليه مباشرة، بشرط أن تكون نقطة التثبيت نشطة. - التخطيط للسعة: من خلال تحليل مخرجات df بمرور الوقت، يمكن لفرق البنية التحتية تقدير معدل استهلاك التخزين والتخطيط لترقيات الأجهزة أو توسيع السعة قبل حدوث أزمة.
مثال على الاستخدام المتقدم هو استخدام df مع أدوات أخرى مثل awk أو grep في نصوص برمجية معقدة. على سبيل المثال، يمكن استخدام الأمر df -h | grep -v 'Filesystem' | awk '$5 > 90 {print "ALERT: Disk usage on "$6" is "$5}' لإنشاء تنبيه آلي يطبع رسالة فقط عندما يتجاوز استخدام أي نظام ملفات 90%.
7. المقارنة مع الأمر du والانتقادات
من الأخطاء الشائعة بين المستخدمين الجدد الخلط بين الأمر df والأمر du (disk usage). ورغم أن كلاهما يتعلق بقياس مساحة القرص، إلا أن الآلية التي يستخدمانها مختلفة جذريًا، مما قد يؤدي إلى تباينات في النتائج:
- df (Disk Free): يقرأ معلومات من نظام الملفات (Superblock). تقريره دقيق حول ما يعتقده نظام الملفات أنه متاح ومستخدم.
- du (Disk Usage): يقوم بفحص شجرة الدلائل بشكل متكرر، ويجمع حجم كل ملف يراه. تقريره دقيق حول المساحة التي تشغلها الملفات التي يمكن الوصول إليها حاليًا.
يحدث التباين الأكبر بين مخرجات df و du عندما يتم حذف ملف كبير بينما لا يزال قيد الاستخدام من قبل عملية (Process) نشطة. في هذه الحالة، يقوم نظام التشغيل بإزالة مدخل الملف من الدليل، ولكن البيانات المادية تبقى على القرص لأن العملية لا تزال تحتفظ بمؤشر إليها. سيعرض df أن المساحة لا تزال قيد الاستخدام (لأن نظام الملفات لم يحرر الكتل)، بينما سيعرض du حجمًا أقل بكثير (لأنه لا يرى الملف المحذوف في أي دليل).
أما بالنسبة للانتقادات الموجهة للأمر df، فهي غالبًا ما تركز على التحديات المتعلقة بالبيئات الموزعة. على سبيل المثال، في أنظمة الملفات الشبكية (NFS)، قد يتأخر df في تحديث بياناته أو قد يفشل في تقديم تقرير دقيق إذا كان هناك انقطاع في الاتصال بالخادم البعيد. كما أن التنسيق الافتراضي القديم الذي يستخدم الكتل بدلاً من وحدات القراءة البشرية لا يزال يمثل تحديًا للمستخدمين غير المعتادين على استخدام الخيارات المناسبة، مما يتطلب دائمًا إضافة الخيار -h لسهولة الفهم.