שאלה דיסק מלא, דו אומר אחרת. כיצד להמשיך לחקור?


יש לי דיסק SCSI בשרת (RAID חומרה 1), 32G, ext3 filesytem. df אומר לי כי הדיסק הוא 100% מלא. אם אני מוחק 1G זה מוצג כראוי.

עם זאת, אם אני מפעיל du -h -x / לאחר מכן du אומר לי כי רק 12G משמשים (אני משתמש -x בגלל כמה סמבה mounts).

אז השאלה שלי היא לא על הבדלים מתוחכמים בין פקודות du ו df אבל על איך אני יכול לגלות מה גורם הבדל עצום?

אני מחדש את המכונה עבור fsck כי הלך w / החוצה שגיאות. אני צריך לרוץ badblocks? lsof מראה לי לא קבצים שנמחקו פתוח, lost+found הוא ריק ואין שום אזהרה ברורה / שגיאה / להיכשל בקובץ ההודעות.

אל תהסס לבקש פרטים נוספים על ההתקנה.


91
2018-05-30 12:29




זה קרוב מאוד לשאלה: לינוקס - du לעומת df ההבדל (serverfault.com/questions/57098/du-vs-df-difference). הפתרון היה קבצים תחת נקודת הר כפי ענה OldTroll. - Chris Ting


תשובות:


בדוק אם קיימים קבצים הממוקמים מתחת לנקודות הרמה. לעתים קרובות, אם אתה מעלה ספרייה (אומר sambafs) על מערכת קבצים שכבר היה קובץ או ספריות תחת זה, אתה מאבד את היכולת לראות את הקבצים האלה, אבל הם עדיין שטח רב על הדיסק הבסיסי. היו לי עותקים של קבצים במצב משתמש יחיד dump קבצים לתוך ספריות כי אני לא יכול לראות למעט אחד usermode (בשל מערכות ספריות אחרות להיות מותקן על גבי אותם).


88
2018-05-30 12:35



אתה יכול למצוא קבצים אלה מוסתרים ללא צורך unmount ספריות. תסתכל על התשובה של מרסל 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), ונקה 2GB של שטח דיסק, בכך שהוא מאפשר לנעול את הקבצים שנמחקו כדי להימחק.


76
2018-03-12 11:10



בשבילי, המנעולים שם לא שוחרר גם אחרי הפסקתי את התוכנית (זומבים?). היית צריך ל kill -9 'pid' לשחרר את המנעולים. למשל: עבור httpd שלך זה היה kill -9 32617. - Micka
הערה קטנה: ייתכן שיהיה עליך לפעול lsof כפי ש sudo או לא כל מתארי הקבצים הפתוחים יופיעו - ChrisWue
אני רץ לתוך זה עם H2, אשר הוסיפה כמה gigs כדי logfile כל יום. במקום להפעיל מחדש את H2 (איטי), השתמשתי sudo truncate -s0 /proc/(h2 PID)/(descriptor number obtained from ls /proc/h2pid/fd). - Desty
במקרה שלי, גם כאשר מחדש httpd שטח לא משוחרר. כשרצתי /etc/init.d/rsyslog restart זה עבד: D - Thanh Nguyen Van
אתה יכול לדלג על grips ופשוט לעשות lsof -a +L1 /var, איפה -a אמצעי וכל התנאים (ברירת המחדל היא OR), +L1 פירושו רק קבצים ברשימה עם ספירת קישורים פחות מ -1 (כלומר, קבצים שנמחקו עם מתארי קבצים פתוחים) /var אילוצים לקבצים תחת נקודת ההר - kbolino


אני מסכים עם התשובה של OldTroll כמו הגורם הסביר ביותר שלך "חסר" שטח.

על לינוקס אתה יכול בקלות remount את כל המחיצה השורש (או כל מחיצה אחרת לצורך העניין) למקום אחר בתוכנה אתה אומר / mnt למשל, רק בעיה

mount -o bind / /mnt

אז אתה יכול לעשות

du -h /mnt

ולראות מה עושה את השטח שלך.

Ps: מצטער על הוספת תשובה חדשה ולא תגובה אבל אני צריך קצת עיצוב להודעה זו להיות קריא.


40
2018-05-30 13:54



תודה רבה על טיפ זה. מותר לי למצוא ולמחוק קבצים גדולים שלי "מוסתר" ללא השבתה! - choover
תודה - זה הראה כי המעגן היה ממלא את הכונן הקשיח שלי עם diffs ב /var/lib/docker/aufs/diff/ - naught101


לראות מה df -i אומר. זה יכול להיות שאתה מתוך inodes, אשר עשוי לקרות אם יש מספר רב של קבצים קטנים במערכת הקבצים, אשר משתמשת את כל inodes זמין ללא צורך כל שטח זמין.


23
2018-05-30 14:10



הגודל של קובץ ואת כמות המרחב שנדרש על מערכת הקבצים הם שני דברים נפרדים. ככל שהתיקים קטנים יותר, כך גדלה הפער ביניהם. אם אתה כותב סקריפט זה מסכם את הגדלים של קבצים ולהשוות אותו du -s של אותה סדרה, אתה הולך לקבל מושג טוב אם זה המקרה כאן. - Marcin


במקרה שלי זה היה קשור קבצים גדולים שנמחקו. זה היה כואב למדי לפתור לפני שמצאתי את הדף, אשר העמיד אותי על הנתיב הנכון.

אני סוף סוף לפתור את הבעיה באמצעות lsof | grep deleted, אשר הראה לי איזו תוכנית היה מחזיק שני קבצי יומן גדול מאוד (בהיקף של 5GB של המחיצה השורש שלי 8GB זמין).


16
2017-11-14 18:15



תשובה זו גורמת לי לתהות מדוע אתה אחסון קבצי יומן על מחיצת השורש, במיוחד אחד קטן ... אבל לכל משלהם, אני מניח ... - α CVn
היה לי בעיה דומה, אני מחדש את כל היישומים שהיו באמצעות הקובץ נמחק, אני מניח היה תהליך זומבי עדיין מחזיק על קובץ גדול שנמחק - user1965449
זה היה המקרה עבורנו, לינוקס עיבוד לינוקס App הידוע בשם filebeat שמרו קבצים פתוחים. - Pykler


קבצים פתוחים על ידי תוכנית לא באמת ללכת (להפסיק לצרוך שטח דיסק) כאשר אתה מוחק אותם, הם הולכים משם כאשר התוכנית סוגרת אותם. לתוכנית יכול להיות קובץ זמני ענק שאתה (ו du) לא יכול לראות. אם זה תוכנית זומבי, ייתכן שיהיה עליך לאתחל לנקות קבצים אלה.


5
2018-05-30 12:51



אופ אמר שהוא איתן את המערכת והבעיה נמשכה. - OldTroll
היו לי זומבים שלא היו משחררים את המנעולים על הקבצים, אני kill -9 'pid' אותם לשחרר את המנעולים ולקבל את שטח הדיסק בחזרה. - Micka


זוהי השיטה הקלה ביותר שמצאתי עד כה כדי למצוא קבצים גדולים!

הנה דוגמה אם השורש שלך הר מלא (/ הר / שורש) דוגמא:

cd / (כך אתה השורש)

ls | xargs du-h

פלט לדוגמה:

 9.4M סל
 63M אתחול
 4.0K cgroup
 680K התפתחות
 31M וכו '
 6.3G הביתה
 ליב
 32M lib64
 16K איבד + נמצא
 מדיה 61G
 4.0K mnt
 113M להצטרף
 דו: אין אפשרות לגשת 'proc / 6102 / task / 6102 / fd / 4': אין קובץ או ספריה כאלה
 0 proc
 שורש 19M
 840K לרוץ
 19M Sbin
 4.0K selinux
 4.0K srv
 חנות 25G
 26M tmp

אז היית מבחין בכך 🏼 הוא גדול לעשות cd / חנות

ולרוץ שוב

ls | xargs du-h

פלט לדוגמה:
 109M גיבוי
 358M fnb
 4.0G ISO
 8.0K KS
 16K איבד + נמצא
 47M שורש
 11M סקריפטים
 79M tmp
 21G VMS

במקרה זה ספריית ה- VMS היא חזיר החלל.


4
2018-06-26 13:05



למה לא להשתמש בכלים פשוטים יותר baobab? (ראה marzocca.net/linux/baobab/baobab-getting-started.html) - Yvan
המממ ls + xargs נראה כמו overkill, du -sh /* עובד בסדר גמור בפני עצמו - ChrisWue
אם אתה לא יודע על ncdu ... תוכל להודות לי מאוחר יותר: dev.yorhel.nl / ncdu - Troy Folger