Як дізнатися, що використовує весь простір на моєму / розділі?


9

Я є великим примірником на серверах Amazon EC2. Я запускаю команду df і отримую:

root@db:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  9.1G  284M  98% /
tmpfs                 3.8G     0  3.8G   0% /lib/init/rw
varrun                3.8G  116K  3.8G   1% /var/run
varlock               3.8G     0  3.8G   0% /var/lock
udev                  3.8G   80K  3.8G   1% /dev
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sdb              414G  957M  392G   1% /mnt
/dev/sdf               50G   12G   35G  26% /byp
/dev/sdk               99G   31G   63G  33% /backups

Потім я запускаю команду du і отримую:

root@db:/# du -s -h /*
31G     /backups
5.5M    /bin
136K    /boot
12G     /byp
80K     /dev
5.8M    /etc
12K     /home
70M     /lib
11M     /lib32
0       /lib64
16K     /lost+found
759M    /mnt
4.0K    /opt
du: cannot access `/proc/6917/task/6917/fd/4': No such file or directory
du: cannot access `/proc/6917/fd/4': No such file or directory
0       /proc
31M     /root
7.7M    /sbin
4.0K    /selinux
4.0K    /srv
0       /sys
11M     /tmp
1.1G    /usr
114M    /var

Якщо ви помітите, коли ви додасте всі розміри на вивід команди du, що не змонтовані каталоги, ви ніде не наблизитесь до 9.1G, як це видно в команді df.

Це означає, що у мене поганий диск? Якщо так, як я можу це виправити?

Відповіді:


20

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

# lsof | grep "deleted"

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

Якщо це не виправити, я б рекомендував fsck.


1
Дивовижно! Це було все. У мене був журнал postgresql, до якого ще входили в систему.
прокладки

Якщо ви хочете звільнити простір, не перезавантажуючи демон, а не видаляючи файл, замість цього використовуйте "echo> file". Це вріже файл, але оскільки ручка все ще відкрита, він стане розрідженим файлом. Це означає, що він все одно буде однакового розміру, але займе набагато менше місця на диску.
Девід Пашлі

lsof +L1може іноді працювати краще, ніж той
греп

5

Існує купа причин, що du не дорівнює df. Дивіться відповіді на це питання .

Деякі - це кріплення накладання, велика кількість невеликих файлів та більший розмір блоку, а також видалені файли, які все ще використовуються. Монтаж накладання - це коли ви встановили файлову систему на точку монтажу, в якій були файли, тому їх не бачите.

Основна відмінність між ними полягає в тому, що df просто перевіряє суперблок і довіряє йому, де du сканує всі файли, які він може бачити, і додає їх. Перегляньте це посилання IBM для отримання інформації про суперблок.


4

Завжди використовуйте параметр -x з du, коли ви переслідуєте подібні проблеми. Це запобігає перетину файлових систем.


Це не мало би значення, оскільки ОП явно просив / *, тому просив інших розділів. Це допомогло б, якби щось було встановлено під, скажімо, "/ mnt / backups"
Девід Пашлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.