Раздел помощи SpaceWeb

Анализ дискового пространства

24 июл, 2023

При работе с сервером важно контролировать занятый объем на диске. Когда дисковая квота заканчивается, в работе VDS возникают ошибки: ошибка 502, удаление файлов при их редактировании, повреждение базы данных. Исправить ошибки можно удалением ненужных файлов или переходом на следующий тариф — то есть увеличением доступной квоты.

Утилиты ncdu и du помогут проверить, чем занято дисковое пространство на сервере.

Ncdu

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

Ncdu не предустановлена в дистрибутивах Unix по умолчанию, но ее можно установить командой:

apt install ncdu

Для того, чтобы просканировать и вывести данные о конкретной директории, используется команда:

ncdu имя_каталога

Например, чтобы вывести информацию о корневом каталоге, выполняется:

ncdu /

Формат вывода

Количество символов "#" помогает определить, какие файлы и каталоги занимают больше всего места.

Крайний левый столбец может содержать дополнительные обозначения (например, на скриншоте выше - пометки e):

  • ! - ошибка при чтении каталога
  • . - ошибка при чтении подкаталога, т.е. указанный размер может быть некорректным;
  • < - объект исключен из подсчета (с помощью опции --exclude);
  • > - объект из другой файловой системы;
  • @ - объект не является файлом или каталогом (символическая ссылка, сокет);
  • H - объект уже был учтен (жесткая ссылка);
  • e - пустой каталог.

Навигация

Для перемещения по директориям используются клавиши со стрелками (вверх и вниз).

  • Стрелка вправо или Enter - войти в выбранную директорию.
  • Стрелка влево - вернуться в предыдущую директорию.

Доступные функции интерфейса

С помощью клавиш можно управлять полученным выводом:

  • n - упорядочить элементы по имени (в прямом и обратном порядке);
  • s - упорядочить элементы по размеру (в прямом и обратном порядке);
  • g - переключение между отображением "графика" (####) и объёма в процентах:

  • a - переключение между отображением реального размера файлов и объемом занимаемого пространства на диске;
  • e - скрыть/показать скрытые файлы и папки;
  • ? - вызвать краткую справку;
  • d - удалить выбранный элемент (перед удалением будет запрошено подтверждение действия);
  • i - вывести информацию о выбранном элементе:

  • q - выйти.

Используемые ключи

При запуске утилиты можно использовать дополнительные ключи для ncdu:

  • -h (т.е. команда вида ncdu -h) - вывод краткой справки;
  • -q - "тихий режим", с обновлением данных каждые 2 секунды. По умолчанию обновление выполняется 10 раз в течение секунды. Тихий режим позволяет снизить объем передачи данных при удаленных подключениях;
  • -x - учет при сканировании только файлов и директорий одной и той же файловой системы. Например, если есть директория /home/user/site.com, и пространство с файлами и директориями внутри нее примонтировано из директории на другом диске (/mnt/disk2/site.com), то по умолчанию ncdu посчитает, что директория /home/user/site.com занимает пространство на основном диске, хотя на самом деле - на диске disk2. Использование ключа -x позволит отразить действительное положение дел на основном диске.
  • -r - режим "только для чтения", в данном режиме невозможно удаление файлов;
  • --exclude - исключение файла или типа файлов. Ncdu отобразит эти файлы в общем списке, но не будет учитывать их при подсчете занятого пространства:

ncdu --exclude=/путь/к/каталогу/*что_исключаем*

#Например:
ncdu --exclude=/home/user/*.html*

  • - сохранить результаты в файл:

ncdu / -o путь/к/файлу.txt

Du

Утилита du (от англ. disk usage) присутствует во всех UNIX-дистрибутивах по умолчанию и позволяет получить общую информацию о занятом месте.

Команда выводит объем пространства, занимаемого каждым файлом и каталогом в текущем каталоге:

Используемые ключи

Для вывода занятого объема в читаемом виде (в килобайтах, мегабайтах и т.д.) требуется ключ -h, он будет использоваться во всех командах ниже.

  • Например, можно начать с оценки размера всех директорий в корневой файловой системе. Для этого добавляются ключи -s (для вывода итогового размера указанной директории) и -c (для вывода "итого"):

du -shc /*

  • Способ подсчета и сортировки:

du -sch ./*|sort -hr

  • Чтобы узнать размер конкретной директории, используется ключ -s и указывается путь к нужной директории:

du -sh /путь/к/директории

  • Для вывода размера всех файлов и подкаталогов в каталоге используется ключ -a.

du -ah /путь/к/директории

  • Для вывода суммарного объема всех показанных в выводе элементов используется ключ -c:

du -ch /путь/к/директории

  • Можно использовать опцию --exclude, чтобы исключить из вывода конкретный тип файлов.

du -ah --exclude="*что_исключаем*"

# Например:
du -ah --exclude="*.php*"

  • Еще одна полезная опция - вывод времени последнего изменения файла. Для этого используется --time:

du -ah --time /путь/к/директории