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


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.