Диск повільно заповнюється, але не помітні видимі розміри файлів


16

df

 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user

Ці 77% були лише 60% вчора, і це заповнить до 100% за кілька днів.

Я деякий час спостерігаю за філософією:

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total

Це дає мені (більш-менш) однакові номери щодня. Загальна кількість 14G менше половини розміру диска. Куди йде решта?

Мої знання Linux не заглиблюються набагато глибше.

Чи можливо, щоб файли тут не з’являлися? Чи можливо виділити простір будь-яким іншим способом?


1
7,4 Г для ваших /varвражає мене як незвично великі. Я підозрюю, що файл журналу швидко заповнюється.
Джос

4
Будь-які видалені файли? Що означає lsof -b 2>/dev//null | grep deleted(вихід може бути досить великим, ітераційно
відкидайте

@muru так, купа файлів відображається саме так. Що це означає? Де вони? Як я його почищую?
nizzle

2
Перезавантаження повинна очистити їх багато. Вони просто файли, відкриті різними процесами, які потім були видалені. Це звичайно, щоб їх було, але якби одна з них зросла занадто великою, ви не мали б простого способу помітити її за допомогою du.
муру

1
Зауважте, що ви, можливо, захочете поставити друге запитання, пов’язане з тим, що сталося з вашим logrotate.conf, оскільки apache має бути налаштовано на закриття файлів, коли відбувається логратація тощо. проблема повинна періодично повторюватися, і необхідність перезавантажувати будь-який тиждень - це сумно. [Я б запропонував, якщо вона повторюється, побачивши, чи служба httpd перезапустить (або перезавантажить) знову тимчасово усуває проблему
Foon

Відповіді:


28

Якщо в дисковому просторі спостерігається невидиме зростання, ймовірним винуватцем будуть видалені файли. У Windows, якщо ви намагаєтесь видалити файл, відкритий чимось, ви отримуєте помилку. У Linux файл буде позначений як видалений, але дані зберігатимуться, поки програма не відпустить. У деяких випадках це може бути використаний як акуратний спосіб очищення після себе - збої програми не завадять очищенню тимчасових файлів.

Щоб переглянути видалені, все ще використовувані файли:

lsof -b 2>/dev/null | grep deleted

У вас може бути велика кількість видалених файлів - що саме по собі не є проблемою. Отримати великий розмір одного видаленого файлу - це проблема.

Перезавантаження має виправити це, але якщо ви не хочете перезавантажувати, перевірте залучені програми (перший стовпець у lsofвипуску) та перезапустіть або закрийте потрібні.

Якщо ви коли-небудь бачите щось на кшталт:

zsh   1724   muru   txt   REG   8,17   771448   1591515  /usr/bin/zsh (deleted)

Якщо програма та видалені файли однакові, це, ймовірно, означає, що додаток було оновлено. Ви можете ігнорувати їх як джерело великого використання диска (але все ж слід перезапустити програму, щоб застосувати виправлення помилок).

Файли в /dev/shmоб'єктах спільної пам’яті і не займають багато місця на диску (думаю, щонайбільше число inode). Їх також можна сміливо ігнорувати. Імена файлів - vteXXXXXXце файли журналу з емулятора терміналів на базі VTE (наприклад, термінал GNOME, термінатор тощо). Вони можуть бути великими, якщо у вас відкрите вікно терміналу з великою кількістю (і я маю на увазі багато ) матеріалів.


1
В системі OP весь / dev є точкою монтажу udev, тому нічого під цим основним файловою системою не займає місця. Більше того, / dev / shm, як правило, реалізується як tmpfs у будь-якому випадку, що також є лише точкою монтування, тому окремі файли під ним навіть не займають місця для входу в каталог.
Кевін

3

Щоб додати відмінну відповідь Муру:

  • df показує розмір на диску,
  • і du показує загальний розмір вмісту файлів.

Можливо, те, що ви не бачите з du, - це поява багатьох, безлічі невеликих файлів ... (подивіться на останній стовпчик df -iі побачите, чи збільшується кількість вкладень (тобто файлів) значно понаднормово)

Якщо у вас, скажімо, 1'000'000 (1 мільйон) крихітних 1-байтових файлів, duвважатиметься, що загалом 1'000'000 байт, скажімо, 1 Мбіт (... пуристів, не пишіть)

Але на диску кожен файл складається з 2 речей:

  • 1 inode (вказує на дані файлу), і цей inode може сам по собі бути 16kb (!),
  • І дані кожного файлу (= вміст файлу) розміщуються на блоках дисків, і ці блоки не можуть містити декілька даних файлу (як правило ...), тому ваш 1 байт даних буде займати щонайменше 1 блок

Таким чином, мільйон файлів в 1-байтових файлах займе 1'000'000'000 * size_of_a_blockзагальний простір для даних, плюс 1'000'000'000 * size_of_an_inodeрозмір inode ... Це може становити кілька Gb використання диска для 1 мільйона "1-байтових" файлів.

Якщо у вас є 1024-байтові блоки та ще 256 байт розміру inode, ваші файли 1'000'000 будуть повідомлятися приблизно як 1 Мбіт du, але на диску буде нараховуватися приблизно 1,25 Гбіт (як видно з df)! (або навіть 2Gb, якщо кожна індея також має бути на одному виділеному блоці диска ... я не знаю, чи так це)


1
Якщо ви явно не скористаєтеся опцією ( -bабо --apparent-size), яка вказує duна показ видимого розміру файлу, duнасправді завжди буде показаний розмір на диску файлу (загальна кількість блоків, що використовуються разів розмір блоку). Насправді це може бути або більшим (звичайний випадок), або меншим (у випадку розріджених файлів), ніж розмір файлу.
Джонатан Каллен

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.