Использование утилит du и df для анализа использования файловых систем

18 Jan 2010 | Автор: dd |

Упало письмо с хостинга о том, что файловая система моего хостинга близка к переполнению, в связи с чем нужно что то удалить.

Заходим в консоль, и смотрим вообще что у нас там происходит, с помощью утилиты df (сокращение от disk free), предоставляющей информацию о состоянии нашего диска и точек монтирования:

root@server [~]# df -ah
Filesystem Size Used Avail Use% Mounted on
/dev/vzfs 20G 5.0G 1017M 84% /
proc 0 0 0 – /proc
sysfs 0 0 0 – /sys
none 7.9G 4.0K 7.9G 1% /dev
none 0 0 0 – /dev/pts
none 0 0 0 – /proc/sys/fs/binfmt_misc

Если мы хотели бы просмотреть информацию об использовании inode (максимальное число теоретически возможных файлов на данной файловой системе), то это можно проделать с помощью опции -i.
root@server [~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vzfs 20971520 176654 20794866 1% /

если нет надобности выводить информацию по какой то из файловых систем, то её можно исключить используя опцию -x , а опцией -t можно ограничить вывод определенными типами файловых систем.
root@server [~]# df -ah -x sysfs
Filesystem Size Used Avail Use% Mounted on
/dev/vzfs 20G 5.0G 893M 85% /
proc 0 0 0 – /proc
none 7.9G 4.0K 7.9G 1% /dev
none 0 0 0 – /dev/pts
none 0 0 0 – /proc/sys/fs/binfmt_misc

В моем примере видно, что творится какая то чертовщина, поскольку разница общего и использованного объема составляет 15 Гигов, при том, что свободным у меня остается 1Гиг. Явно что какой то глюк, поэтому надо смотреть кто и сколько кушает. Для этого мы воспользуемся утилитой du (сокращение от disk usage), предоставляющей нам информацию об использовании диска файлами и директориями.
root@server [~]# du -hsx /
5.4G /

Это общий размер дискового пространства занимаемого файловой системой / . Чтобы посмотреть разблюдовку по директориям в корневой файловой системе:
root@server [~]# du -shc /*
0 /aquota.group
0 /aquota.user
5.0M /bin
4.0K /boot
4.0K /dev
6.5M /etc
887M /home
24M /lib
4.0K /media
4.0K /mnt
14M /opt
0 /proc
4.8M /root
21M /sbin
7.8M /scripts
4.0K /selinux
4.0K /srv
0 /sys
12K /tmp
4.2G /usr
354M /var
1.5M /yum
1.4M /yum-ce5.tar.gz
5.4G total

Где опция -s выводит итоговый объям для кадого аргумента, опция -h пишет нам в удобочитаемом формате, опция -c заканчивает список общей суммой.
Естественно, что проделывать все операции необходимо из под пользователя имеющего права чтения на директории.

При одновременном использовании этих команд, в большистве случаев мы получим разные результаты вывода для каждой из них. Это вызвано различными алгоритмами работы данных утилит, которые следуют из их названий: утилита df считает общий суммарный объем блоков, помеченных в суперблоке файловых систем как свободные, в то время как утилита du исходит из информации об объеме занятом файлами, отправляясь от  описания в метаданных.
В связи с тем, что операции файловой системы абсолютно во всех случаях, так или иначе, кэшируются, то довольно часто может возникнуть ситуация, когда файл физически удален, т.е. имя файла удалено из записи каталога, а в карте занятости, освобождение соответствующего пространства еще не произошло, и тогда, как раз, блоки данных будут подсчитываться при использовании df, и будут не учтены в результатах du.

Надо отметить, что в моем случае, все траблы были вызваны глюком системы управления хостингом Plesk, который выражается в некорректном отображении информации о занятости файловой системы, но это уже совсем другая история ;)

З.Ы если с опцией -d туговасто, то приходится смотреть полным вариантом
#du -h --max-depth=1 /var/

VN:F [1.9.21_1169]
Rating: 10.0/10 (4 votes cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)
Использование утилит du и df для анализа использования файловых систем, 10.0 out of 10 based on 4 ratings

Теги: ,

Отзывов: 2 на «Использование утилит du и df для анализа использования файловых систем»

  1. Автор: Lesnik на 10 Feb 2011

    >Чтобы посмотреть разблюдовку по директориям в >корневой файловой системе:
    >root@server [~]# du -shc /*

    Хм. Я оказывается тот еще извращенец :) Я смотрю вот так:
    du -hd 1
    (ключик d задает вложенность показа)

    [Reply]

    anchous Reply:

    прикольна… тока перед
    # du -d 1
    для корня надо сделать
    # cd /
    иначе получаешь листинг для pwd ;)

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: +1 (from 1 vote)

Ваш отзыв