На главную
- Инструкции для UNIX-систем
- Обзор
- Подключение к серверу по SSH
- Подключение к серверу по SFTP
- Авторизация по SSH-ключу
- Смена или сброс пароля root
- Смена пароля root для MySQL
- Добавление пользователей
- Управление правами доступа
- Защита SSH от подбора пароля. Fail2ban
- Создание дампа базы и восстановление данных
- Установка LAMP на Ubuntu
- Установка phpMyAdmin на Ubuntu с LAMP
- Установка SSL-сертификата на Nginx
- Установка модулей PHP (CentOS)
- Установка модулей PHP (Debian / Ubuntu)
- Настройка параметров PHP (CentOS)
- Настройка параметров PHP (Debian / Ubuntu)
- Настройка перенаправлений
- Настройка перенаправлений (Nginx)
- Настройка FTP в Ubuntu 20.04
- Оптимизация MySQL с помощью MySQLTuner
- Сканирование с помощью ClamAV
- Управление службами в systemd
- Логирование в systemd
- Аудит системных событий
- Добавление дополнительного IP
- Настройка статического IP
- Добавление и удаление диска
- Изменение размера диска
- Монтирование резервных копий
- Создание swap, изменение его размера
- Установка и удаление программ. Менеджеры пакетов
- Установка графической оболочки XFCE на Ubuntu
- Настройка iptables
- Настройка OpenVPN
- Установка произвольной ОС на сервер
- Удаленный доступ к MySQL
- Установка QEMU-агента
- Установка Zabbix-агента
- Установка и работа с PostgreSQL
- Установка почтового сервера iRedMail
- Настройка почтового сервера iRedMail
- Установка SSL на сервер с Keitaro
- Запуск Wordpress на сервере c Ubuntu
- Запуск бота в фоновом режиме
- Установка сертификатов Минцифры
- Подготовка образа для создания облачного сервера
- Создание и развертывание образа с помощью утилиты dd
- Установка Minecraft на CentOS 7
- Запуск сервера Minecraft
- Запуск сервера с CS 1.6 и EngineGP
- Запуск сервера RageMP
- Настройка Outline VPN
- Диагностика и решение проблем
- Обзор
- Базовая диагностика при проблемах в работе сайта
- Проблемы с базой данных
- Анализ дискового пространства: ncdu, du
- Данные о дисках: df, lsblk, parted, fdisk
- Контроль нагрузки и процессов: top, htop, atop
- Завершение процессов OOM Killer
- Переполнение inodes
- Проверка файловой системы
- Ускорение работы сайта: перенос MySQL в tmpfs
- Устранение ошибки «Could not get lock /var/lib/dpkg/lock»
- Другие возможные проблемы
- Инструкции для Windows
- Панели управления
Анализ дискового пространства: ncdu, du
При работе с сервером важно контролировать занятый объем на диске. Если дисковое пространство окажется занято полностью, в работе VDS начнут возникать ошибки (ошибка 502, удаление файлов при их редактировании, повреждение базы данных). Чтобы этого избежать, необходимо своевременно увеличивать доступный объем, удаляя ненужные файлы или расширяя сам диск.
Для того, чтобы проверить, чем занято дисковое пространство на сервере, можно воспользоваться такими утилитами, как ncdu
и du
. Работать с ними достаточно просто. При анализе также может потребоваться проверить данные о файловой системе и inodes (подробнее об этом в последнем разделе этой статьи).
ncdu
Утилита ncdu
— один из самых удобных инструментов для анализа дискового пространства. Она имеет псевдографический интерфейс, что значительно упрощает работу с ней.
ncdu
не предустановлена в дистрибутивах Unix по умолчанию, но ее легко можно установить командой:
# Для Debian / Ubuntu:
apt install ncdu
# Для CentOS:
yum install ncdu
Если дисковое пространство уже переполнено и установить
ncdu
невозможно, можно сначала воспользоваться утилитойdu
(см. ниже), удалить несколько файлов, чтобы освободить немного места, после чего поставитьncdu
и дальше продолжить работать с ней.
Для того, чтобы просканировать и вывести данные о конкретной директории, воспользуйтесь командой:
ncdu имя_каталога
Например, чтобы вывести информацию о корневом каталоге, выполните:
ncdu /

Формат вывода
Количество символов #
помогает определить, какие файлы и каталоги занимают больше всего места.
Крайний левый столбец может содержать дополнительные обозначения (например, на скриншоте выше — пометки e
):
!
— ошибка при чтении каталога;.
— ошибка при чтении подкаталога, т.е. указанный размер может быть некорректным;<
— объект исключен из подсчета (с помощью опции--exclude
);>
— объект из другой файловой системы;@
— объект не является файлом или каталогом (символическая ссылка, сокет);H
— объект уже был учтен (жесткая ссылка);e
— пустой каталог.
Навигация
Для перемещения по директориям используются клавиши со стрелками (вверх и вниз).
Стрелка вправо или Enter — войти в выбранную директорию.
Стрелка влево — вернуться в предыдущую директорию.
Доступные функции интерфейса
С помощью следующих клавиш можно управлять полученным выводом:
n
— упорядочить элементы по имени (в прямом и обратном порядке);
s
— упорядочить элементы по размеру (в прямом и обратном порядке);
g
— переключение между отображением «графика» (####) и объёма в процентах:
a
— переключение между отображением реального размера файлов и объемом занимаемого пространства на диске;
e
— скрыть/показать скрытые файлы и папки;
?
— вызвать краткую справку;
d
— удалить выбранный элемент (перед удалением будет запрошено подтверждение действия);
i
— вывести информацию о выбранном элементе:
q
— выйти.
Ключи ncdu
Также при запуске утилиты можно использовать дополнительные ключи для 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 путь/к/файлу.tx
du
Утилита du
(от англ. disk usage) присутствует во всех UNIX-дистрибутивах по умолчанию и позволяет получить общую информацию о занятом месте.
При выполнении команды она выводит объем пространства, занимаемого каждым файлом и каталогом в текущем каталоге:
Ключи du
Для вывода занятого объема в читаемом виде (в килобайтах, мегабайтах и т.д.) требуется ключ -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="*.html*"
- Еще одна полезная опция — вывод времени последнего изменения файла. Для этого используется
--time
:
du -ah --time /путь/к/директории
Нюансы
Несоответствие данных du, ncdu и ПО
- Иногда можно столкнуться с ситуацией, когда утилиты
du
иncdu
показывают меньший объем, чем выводится в панели управления; либо же вы удаляете файлы, но ваше ПО сообщает, что свободного пространства по-прежнему недостаточно.
В этом случае для проверки стоит воспользоваться командойdf
, которая позволит получить данные именно о файловой системе (в то время какdu
иncdu
показывают именно физический объем на диске):
df -h
Вероятнее всего, в выводе будет информация о занятости 100% пространства.
Это связано с тем, что иногда при удалении файла он остается доступен какому-либо запущенному процессу, из-за чего файловая система по-прежнему учитывает его в общем объеме занятого пространства.
Чтобы решить проблему, нужно определить, какими процессами все еще используются удаленные файлы:
lsof | grep '(deleted)'
После чего перезапустить эти процессы:
service имя_процесса restart
Например, в выводе ниже этот процесс — httpd, и именно его нужно перезапустить:
- Если по данным панели управления и утилит
du
иdf
свободное место в наличии, однако ваше ПО или CMS по-прежнему сообщают о недостаточном объеме пространства, необходимо проверить наличие свободных inodes.