احصل على `df` لإظهار المعلومات المحدثة عن FreeBSD

StackOverflow https://stackoverflow.com/questions/28739

  •  09-06-2019
  •  | 
  •  

سؤال

لقد نفدت مؤخرًا مساحة القرص على محرك الأقراص الموجود على خادم FreeBSD.لقد قمت باقتطاع الملف الذي كان يسبب مشاكل ولكني لا أرى التغيير ينعكس عند التشغيل df.عندما أركض du -d0 على القسم يظهر القيمة الصحيحة.هل هناك أي طريقة لفرض تحديث هذه المعلومات؟ما الذي يجعل الإخراج هنا مختلفًا؟

هل كانت مفيدة؟

المحلول

ربما يركز هذا على كيف قمت باقتطاع الملف. du و df تقرير أشياء مختلفة كما يشرح هذا المنشور على موقع unix.com.عدم استخدام المساحة لا يعني بالضرورة أنها مجانية...

نصائح أخرى

في BSD، يعد إدخال الدليل مجرد أحد المراجع العديدة لبيانات الملف الأساسي (يُسمى inode).عند حذف ملف باستخدام الأمر rm(1) فقط ينخفض ​​عدد المراجع.إذا كان العدد المرجعي لا يزال موجبًا، (على سبيل المثال.يحتوي الملف على إدخالات دليل أخرى بسبب الارتباطات الرمزية) ثم لا تتم إزالة بيانات الملف الأساسي.

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

طريقة سهلة لمراقبة ذلك هي القيام بما يلي

cp /bin/cat /tmp/cat-test
/tmp/cat-test &
rm /tmp/cat-test

حتى يتم إنهاء عملية الخلفية، ستظل مساحة الملف المستخدمة بواسطة /tmp/cat-test مخصصة وغير متاحة كما أبلغ عنه df(1) ولكن الأمر du(1) لن يكون قادرًا على حسابها لأنه لم يعد يحتوي على اسم الملف.

لاحظ أنه إذا تعطل النظام دون إغلاق الملف، فستظل بيانات الملف موجودة ولكن غير مرجعية، وستكون هناك حاجة إلى تشغيل fsck(8) لاستعادة مساحة نظام الملفات.

تعد العمليات التي تبقي الملفات مفتوحة أحد الأسباب التي تجعل الأمر newsyslog(8) يرسل إشارات إلى syslogd أو برامج التسجيل الأخرى لإبلاغهم بضرورة إغلاق ملفات السجل الخاصة بهم وإعادة فتحها بعد تدويرها.

يمكن أن تؤثر التحديثات البرمجية أيضًا على المساحة الحرة لنظام الملفات حيث يمكن تأجيل استرداد مساحة inode الفعلية؛يمكن استخدام أمر المزامنة (8) لتشجيع حدوث ذلك عاجلاً.

هل يعمل df --sync؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top