Насколько заполнен раздел?


Чтобы узнать объем свободного пространства на каждом разделе, можно воспользоваться командой df(1). Эта команда выведет список смонтированных разделов, объем использованного пространства на каждом из них и точки монтирования. Один из неприятных моментов, связанных с командой df(1), заключается в том, что информация об объеме выводится в виде количества блоков, размером 1 Кбайт. Если раньше, когда диски были достаточно маленькими, это было вполне удобно, то сейчас числа получаются слишком большими, чтобы их можно было достаточно легко воспринимать одним взглядом. К счастью, команда df(1) имеет флаги -h и , которые вынуждают команду выводить информацию в удобочитаемом для человека виде. При использовании ключа -h один мегабайт вычисляется как степень 2 и составляет 1024 Кбайт, или 1 048 576 байт, а при использовании ключа мегабайт вычисляется как степень 10 и составляет 1000 Кбайт, или 1 000 000 байт. Сетевые администраторы и производители жестких дисков обычно используют степень 10, тогда как системные администраторы предпочитают использовать степень 2.* Если вы обладаете достаточно богатым опытом работы, вы уже знаете, какой ключ выбрать. Я — сетевой администратор, поэтому вам придется следовать моим предпочтениям при исследовании примеров, независимо от того, что думает по этому поводу мой технический редактор.

# df -H
Filesystem   Size  Used  Avail  Capacity  Mounted on
/dev/ad4s2a  520M  301M  177M      63%    /
devfs        1.0k  1.0k    OB     100%    /dev
/dev/ad4s1e  520M  2.4M  476M       0%    /tmp
/dev/ad4s2e  11G   4.1G  5.9G      41%    /usr
/dev/ad4s2d  1.0G  322M  632M      34%    /var
/dev/ad4s3d  49G   43G   2.0G      96%    /usr/home

Здесь видны имена разделов, размер каждого раздела, объем использованного пространства, объем свободного пространства, процент использованного пространства и точки монтирования. Например, каталог /home в данной системе заполнен на 96% и имеет еще 2 Гбайт свободного пространства. Корневой раздел заполнен всего на 63% , но свободным осталось только 177 Мбайт.

Файловая система FFS занимает порядка 8% дискового пространства для нужд оптимизации. Это пространство используется при перемещении файлов и для уменьшения степени фрагментирования. При переполнении диска вы можете даже увидеть отрицательный объем свободного дискового пространства. Когда это происходит, производительность диска падает катастрофически. Поэтому лучше всегда оставлять на разделах немного свободного пространства, чтобы FFS могла постоянно дефрагментировать себя. Хотя существует возможность уменьшить размер пространства, резервируемого файловой системой, но это отрицательно сказывается на производительности, и поступать так будет неразумно. Если вы действительно хотите попробовать уменьшить объем резервируемого пространства, обращайтесь к команде tunefs(8).

Очевидный вопрос: «Что такого хранится на диске, что заняло столько места?» Если ваша система напоминает мою, использованное пространство на диске продолжает расти без каких-либо видимых причин. С помощью команды ls -l можно отыскать отдельные крупные файлы, но рекурсивно выполнять эту команду в каждом каталоге как минимум непрактично.

Объем использованного пространства в отдельном каталоге можно получить с помощью команды du(1). Сначала результаты, которые дает эта команда, кажутся непонятными и могут отпугивать неопытных пользователей. Ниже приводится пример использования du(1) для поиска чего-то, что занимает почти все место в моем домашнем каталоге:

# cd $HOME
# du
    ./bin/RCS
21459  ./bin/wp/shbin10
53202  ./bin/wp
53336  ./bin
5      ./.kde/share/applnk/staroffice_52
6      ./.kde/share/applnk
...

Команда продолжает и продолжает выводить информацию, перечисляя каталоги и их размеры в блоках. В данном случае каталог $НОМЕ/bin занимает 53 336 блоков, или порядка 53 Мбайт. Я мог бы устроиться поудобнее и позволить команде du(1) перечислить все каталоги и подкаталоги, но тогда мне придется переварить информации гораздо больше, чем мне требуется в действительности. Кроме того, блоки — это не совсем удобная единица измерения, особенно, когда числовые значения выравниваются по левому краю.

Попробуем вывести результаты в удобочитаемом виде. Во-первых, команда du(1) поддерживает флаг -h, как и команда df. Кроме того, мне совсем не требуется рекурсивное перечисление всех вложенных подкаталогов. Управлять глубиной вложенности можно с помощью ключа -d. Этот ключ принимает один аргумент — глубину вложенности подкаталогов, которые требуется перечислить в выводе. Например, при использовании ключа -d0 не будет перечислен ни один из вложенных подкаталогов, и команда просто выведет общий размер всех файлов в указанном каталоге.

# du -h -d0 $HOME
37G /home/mwlucas

В моем домашнем каталоге накопилось файлов на 37 Гбайт? Попробуем копнуть поглубже и найти наиболее объемный подкаталог.

# du -h -d1
38К ./bin
56M ./mibs
...
34G ./mp3
...

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

Если вам флаг -h чем-то не нравится, для поиска наиболее объемного подкаталога можно использовать команду sort(1), например так: du -kxd 1 | sort -n.

$BLOCKSIZE

Многие утилиты, предназначенные для работы с дисками, отображают размеры в блоках размером по 512 байт, или полкилобайта. Если в переменную окружения $ВLOCKSIZE записать значение k, команда df(1) и многие другие программы будут отображать размеры в блоках по 1 Кбайту, что намного удобнее. Можно использовать значение , тогда размеры будут выводиться в мегабайтах.

Комментарии запрещены.