سؤال القرص الكامل ، يقول دو مختلفة. كيف لمواصلة التحقيق؟


لدي قرص SCSI في الخادم (الأجهزة RAID 1) ، 32G ، ملفات ext3 ext3. df يخبرني أن القرص ممتلئ بنسبة 100٪. إذا قمت بحذف 1G هذا يظهر بشكل صحيح.

ومع ذلك ، إذا قمت بتشغيل du -h -x / ثم du يقول لي أن يتم استخدام 12G فقط (أنا استخدم -x بسبب بعض يتصاعد سامبا).

إذن سؤالي ليس حول الاختلافات الطفيفة بين دو و أوامر دي أف ، بل حول كيف يمكنني معرفة الأسباب التي تسبب هذا الفرق الكبير؟

أنا أعيد تشغيل الجهاز ل fsck ذهب ث / خارج الأخطاء. يجب أن أركض badblocks؟ lsof يظهر لي أي ملفات محذوفة مفتوحة ، lost+found فارغ ولا يوجد بيان تحذير / err / fail واضح في ملف الرسائل.

لا تتردد في طلب المزيد من التفاصيل حول الإعداد.


91
2018-05-30 12:29


الأصل


هذا قريب جدا من السؤال: linux - du vs. df difference (serverfault.com/questions/57098/du-vs-df-difference). كان الحل ملفات تحت نقطة تحميل كما أجاب OldTroll. - Chris Ting


الأجوبة:


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


88
2018-05-30 12:35



يمكنك العثور على هذه الملفات المخفية دون الحاجة إلى إلغاء تثبيت الدلائل. نلقي نظرة على الإجابة مارسيل G أدناه والتي توضح كيف. - mhsekhavat
يجب عليك إظهار أوامر CLI للقيام بذلك في إجابتك - Jonathan
تأكد حتى لو كنت تعتقد أنه لا معنى له! - Chris


تعثر في هذه الصفحة عند محاولة تعقب مشكلة على خادم محلي.

في حالتي df -h و du -sh غير متطابقة بنسبة 50٪ تقريبًا من حجم القرص الثابت.

هذا كان بسبب apache (httpd) حفظ ملفات السجل الكبيرة في الذاكرة التي تم حذفها من القرص.

تم تعقب هذا عن طريق الجري lsof | grep "/var" | grep deleted أين /var كان التقسيم كنت بحاجة لتنظيف.

أظهر الإخراج خطوط مثل:
httpd 32617 nobody 106w REG 9,4 1835222944 688166 /var/log/apache/awstats_log (deleted)

ثم تم حل الوضع عن طريق إعادة تشغيل اباتشي (service httpd restart) ، ومسح 2 غيغابايت من مساحة القرص ، من خلال السماح بإلغاء تأمين الملفات المحذوفة.


76
2018-03-12 11:10



بالنسبة لي ، الأقفال التي لم تصدر حتى بعد أن توقفت عن البرنامج (الزومبي؟). اضطررت kill -9 'pid' لتحرير الأقفال. على سبيل المثال: ل httpd الخاص بك كان يمكن أن يكون kill -9 32617. - Micka
ملاحظة بسيطة: قد تضطر إلى الركض lsof مثل sudo أو لا تظهر جميع واصفات الملفات المفتوحة - ChrisWue
أنا واجهت هذا مع H2 ، الذي كان إضافة عدة العربات إلى ملف السجل كل يوم. بدلا من إعادة تشغيل H2 (بطيء) ، اعتدت sudo truncate -s0 /proc/(h2 PID)/(descriptor number obtained from ls /proc/h2pid/fd). - Desty
في حالتي ، حتى عند إعادة التشغيل httpd الفضاء لا يصدر. عندما ركضت /etc/init.d/rsyslog restart عملت: د - Thanh Nguyen Van
يمكنك تخطي greps وفقط lsof -a +L1 /var، أين -a يعني وجميع الشروط (الافتراضي هو OR) ، +L1 تعني قائمة الملفات التي تحتوي على عدد أقل من عدد الروابط أقل من 1 (أي ، الملفات المحذوفة ذات واصفات الملفات المفتوحة) ، و /var يحد من الملفات تحت نقطة التحميل هذه - kbolino


وأنا أتفق مع إجابة OldTroll باعتبارها السبب الأكثر احتمالا لمساحتك "المفقودة".

على لينكس يمكنك بسهولة إعادة تحميل قسم الجذر بأكمله (أو أي قسم آخر لهذه المسألة) إلى مكان آخر في نظام الملفات يقول / mnt على سبيل المثال ، فقط إصدار

mount -o bind / /mnt

ثم يمكنك القيام به

du -h /mnt

وانظر ما الذي يستخدم مساحتك الخاصة.

ملاحظة: نأسف لإضافة إجابة جديدة وليس تعليقًا ولكني احتجت إلى بعض التنسيقات لهذه المشاركة لتكون قابلة للقراءة.


40
2018-05-30 13:54



شكرا جزيلا على هذه النصيحة. سمح لي للعثور وحذف الملفات "المخفية" كبيرة بلا توقف! - choover
شكرا - وهذا أظهر أن عامل ميناء كان يملأ القرص الصلب مع فرق في /var/lib/docker/aufs/diff/ - naught101


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


23
2018-05-30 14:10



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


في حالتي كان هذا يتعلق بالملفات المحذوفة الكبيرة. كان من المؤلم حلها قبل أن أجد هذه الصفحة ، والتي وضعتني على الطريق الصحيح.

أنا في النهاية حل المشكلة عن طريق استخدام lsof | grep deleted، والتي أظهرت لي البرنامج الذي كان يحمل اثنين من ملفات السجل كبيرة جدا (مجموعها 5GB من قسم الجذر 8GB المتاحة).


16
2017-11-14 18:15



هذه الإجابة تجعلني أتساءل لماذا يتم تخزين ملفات السجل على قسم الجذر ، وخاصة تلك الصغيرة ... ولكن لكل منها ، أفترض ... - α CVn
كان لدي مشكلة مماثلة ، لقد قمت بإعادة تشغيل جميع التطبيقات التي كانت تستخدم الملف المحذوف ، أعتقد أنه كان هناك عملية غيبوبة لا تزال تتمسك بملف كبير محذوف - user1965449
كان هذا هو الحال بالنسبة لنا ، التطبيق لينكس معالجة السجل المعروف باسم filebeat أبقى الملفات مفتوحة. - Pykler


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


5
2018-05-30 12:51



قال OP إنه أعاد تشغيل النظام واستمرت المشكلة. - OldTroll
كان لدي الزومبي الذي لن يطلق أقفال على الملفات ، وأنا kill -9 'pid' لهم لتحرير الأقفال والحصول على مساحة القرص مرة أخرى. - Micka


هذه هي أسهل طريقة وجدت حتى الآن للعثور على ملفات كبيرة!

في ما يلي مثال إذا كان جبل الجذر ممتلئًا / (mount / root) مثال:

قرص مضغوط / (لذلك أنت في الجذر)

ls | xargs du -hs

مثال على الناتج:

 9.4M بن
 التمهيد 63M
 4.0 كيلو cgroup
 680K dev
 31 مليونًا
 6.3G المنزل
 313M ليب
 32 ميغابايت lib64
 فقدت 16K +
 61G وسائل الإعلام
 4.0K مليون طن متري
 113M اختيار
 du: لا يمكن الوصول إلى `proc / 6102 / task / 6102 / fd / 4 ': لا يوجد ملف أو دليل
 0 بروك
 19M الجذر
 تشغيل 840K
 19 مليون سوبين
 4.0K selinux
 4.0K srv
 متجر 25G
 26 م tmp

عندها ستلاحظ ذلك متجر كبير يفعل مؤتمر نزع السلاح / مخزن

وتشغيل مرة أخرى

ls | xargs du -hs

مثال على الناتج:
 النسخ الاحتياطي 109M
 358M فنب
 4.0G ايزو
 8.0K ks
 فقدت 16K +
 47M الجذر
 مخطوطات 11M
 79 م تمة
 21G VMS

في هذه الحالة ، يكون دليل vms هو الخائن الفضائي.


4
2018-06-26 13:05



لماذا لا تستخدم أدوات أبسط مثل baobab؟ (نرى marzocca.net/linux/baobab/baobab-getting-started.html) - Yvan
جلالة الملك ls + xargs يبدو وكأنه مبالغة ، du -sh /* يعمل على ما يرام من تلقاء نفسه - ChrisWue
إذا كنت لا تعرف عن ncdu ... فستشكرني لاحقًا: dev.yorhel.nl/ncdu - Troy Folger


جرب هذا لمعرفة ما إذا كانت عملية ميت / معلقة مؤمّنة أثناء الكتابة إلى القرص: lsof | grep "/ mnt"

ثم حاول قتل أي PIDs عالقة (لا سيما بالنظر إلى الخطوط المنتهية في "(حذف"))


3
2018-06-26 10:38



شكر! تمكنت من العثور على عملية خادم SFTP تمسك بالملف المحذوف - lyomi


لذا فقد واجهت هذه المشكلة في Centos 7 أيضًا ووجدت حلًا بعد تجربة مجموعة من الأشياء مثل bleachbit وتنظيف / usr و / var على الرغم من أنها أظهرت فقط 7G لكل منها. لا يزال عرض 50G من 50G المستخدمة في قسم الجذر ولكن أظهر فقط 9G من استخدام الملف. ركض قرص ubuntu حية و unmounted قسم 50G المخالف ، فتح محطة وركض xfs_check و xfs_repair على القسم. أنا ثم أعدت التقسيم وقد توسع دليل بلدي فقدت + إلى 40G. فرز + المفقودات التي تم العثور عليها بالحجم والعثور على ملف سجل النص 38G للبخار الذي حدث فقط تكرار خطأ MP3. إزالة الملف الكبير ولديك الآن مساحة ويتفق استخدامي للأقراص مع حجم القسم الجذر الخاص بي. ما زلت أود أن أعرف كيفية الحصول على سجل البخار لن تنمو كبيرة جدا مرة أخرى.


1
2018-05-04 18:01



هل حدث لك هذا في العمل؟ serverfault.com/help/on-topic - chicks
لا فقط على جهاز الكمبيوتر المنزلي. - Justin Chadwick
xfs_fsr إصلاح هذه القضية بالنسبة لنا - Druska


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


0
2018-06-21 10:33





هناك احتمال آخر للنظر في ذلك - يكاد يكون مضمونًا أن ترى تباينًا كبيرًا إذا كنت تستخدم عامل ميناء ، وتقوم بتشغيل df / du داخل حاوية تستخدم حوامل حجم. في حالة وجود دليل يتم تحميله على وحدة تخزين على مضيف برنامج حوض السفن ، سيبلغ df عن إجمالي Df الإجماليات. هذا واضح إذا كنت تفكر في ذلك ، ولكن عندما تحصل على تقرير عن "حاوية جامدة تملأ القرص!" ، تأكد من التحقق من استهلاك مساحة ملف الحاوية بشيء مثل du -hs <dir>.


0
2017-12-05 23:02