Назад | Перейти на главную страницу

Как определить, что занимало дисковое пространство

Мой внешний диск установлен в /log и я больше не могу писать в него, потому что он заполнен. Когда я проверяю с df -h:

Filesystem      Size  Used Avail Use% Mounted on
udev            3.7G   12K  3.7G   1% /dev
tmpfs           748M  384K  748M   1% /run
/dev/xvda1      7.8G  7.4G     0 100% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            3.7G     0  3.7G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdb        40G   49M   38G   1% /mnt
/dev/xvdc        40G   38G  4.0K 100% /log

Но с df -i это всего 1%:

Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev            956199    394  955805    1% /dev
tmpfs           957438    328  957110    1% /run
/dev/xvda1      524288 165951  358337   32% /
none            957438      2  957436    1% /sys/fs/cgroup
none            957438      1  957437    1% /run/lock
none            957438      1  957437    1% /run/shm
none            957438      2  957436    1% /run/user
/dev/xvdb      2621440     11 2621429    1% /mnt
/dev/xvdc      2621440  23593 2597847    1% /log

Использование sudo du -s /log/* |sort -n:

4   /log/production.log
16  /log/lost+found
32  /log/redis
240024  /log/linsight
5008628 /log/mongodb

и, наконец, я не смог найти то, что занимало так много места на диске, используя ncdu /log:

    4.8GiB [##########] /mongodb                                                                                                                                                         
  234.4MiB [          ] /linsight
   32.0KiB [          ] /redis
!  16.0KiB [          ] /lost+found
    4.0KiB [          ]  production.log

P / s: Думаю, тут действительно что-то не так, уверен на 100%, что production.log это ГБ, но здесь отображается только 4,0 КБ.

du -s /log/* /log/.??*|sort -n покажет вам, что занимает больше всего места, и вы можете повторно использовать тот же подход для подкаталогов, которые вы считаете большими, чтобы детализировать свое расследование.

Когда есть использование диска, которое не учтено в списке файлов, это означает, что какая-то программа все еще выполняет запись в файл, который был удален. Единственный способ освободить это пространство - остановить программу, что можно сделать, перезагрузив компьютер, если вы не знаете, что это такое. Поскольку вы упомянули, что production.log должен быть больше, процесс, который его сгенерировал, будет первым, который попытается перезапустить.

Обратите внимание, что df -i покажет использование inode, которое не отражает использование дискового пространства, а количество файлов относительно ограничения файловой системы.

В Ubuntu вы можете просто сделать ls -lh и он предоставит вам удобочитаемый результат.

Также как это ls /path/to/tmp -lh