Использование утилит 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/
Автор:Lesnik на 10 Feb 2011
>Чтобы посмотреть разблюдовку по директориям в >корневой файловой системе:
>root@server [~]# du -shc /*
Хм. Я оказывается тот еще извращенец Я смотрю вот так:
du -hd 1
(ключик d задает вложенность показа)
[Reply]
anchous Reply:
February 12th, 2011 at 1:31 am
прикольна… тока перед
# du -d 1
для корня надо сделать
# cd /
иначе получаешь листинг для pwd
[Reply]