Start typing to search across invoices, services, domains, tickets, and more...
Сайт не открывается, база данных не может записать данные, в логах «No space left on device» — чаще всего закончилось место на диске. В статье собраны практичные способы проверить и очистить диск в Linux: найти, что занимает место, с помощью df -h и du, проанализировать диск в ncdu, отыскать большие файлы через find и безопасно очистить системные журналы, кеш пакетов и данные Docker. Команды подходят для Debian/Ubuntu и CentOS/Rocky/AlmaLinux и выполняются от root.
df -hT показывает размер, занятое место и процент заполнения каждой файловой системы — найдите точку монтирования, близкую к 100%. Также проверьте inode через df -i: если миллионы мелких файлов (кеш, сессии) исчерпали inode, система сообщит о нехватке места даже при свободном объёме.
df -hT # space usage per filesystem
df -i # inode usage (100% also means "No space left on device")
Посчитайте размер каждого каталога верхнего уровня, отсортируйте и спускайтесь в самый большой. Ключ -x ограничивает подсчёт текущей файловой системой, чтобы не учитывать смонтированные диски. Обычно больше всего места занимают /var/log, /var/lib/docker, /var/lib/mysql, каталоги сайтов и резервных копий.
# Size of each top-level directory on the root filesystem, largest last
du -xh --max-depth=1 / 2>/dev/null | sort -h
# Drill down, e.g. into /var
du -xh --max-depth=1 /var 2>/dev/null | sort -h
ncdu — консольный анализатор диска. После сканирования можно перемещаться по каталогам стрелками и удалять файлы клавишей d — это гораздо удобнее, чем многократно запускать du.
# Debian / Ubuntu
apt install -y ncdu
# CentOS / Rocky / AlmaLinux (ncdu is in EPEL)
dnf install -y epel-release && dnf install -y ncdu
ncdu -x /
Выведите все файлы больше 500 МБ — так быстро находятся забытые архивы, дампы баз данных и разросшиеся логи. Перед удалением убедитесь, что файл не нужен; в сомнительных случаях сначала перенесите его на другой диск.
# Files larger than 500 MB on the root filesystem
find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null | sort -k5 -h
Журнал systemd со временем может занять несколько гигабайт — сократите его по размеру или сроку через journalctl. Большой лог, в который ещё пишет программа, не удаляйте через rm, а очистите командой truncate, иначе место не освободится. Кеш пакетов можно очищать без опасений.
journalctl --disk-usage
journalctl --vacuum-size=200M
journalctl --vacuum-time=7d
# Empty a large log file that a running program still writes to (do not rm it)
truncate -s 0 /var/log/nginx/access.log
# Package manager caches
apt clean # Debian / Ubuntu
dnf clean all # CentOS / Rocky / AlmaLinux
Чтобы журнал больше не разрастался, задайте лимит:
# Permanently cap the journal size
mkdir -p /etc/systemd/journald.conf.d
printf '[Journal]\nSystemMaxUse=500M\n' > /etc/systemd/journald.conf.d/size.conf
systemctl restart systemd-journald
На серверах с Docker в /var/lib/docker накапливаются остановленные контейнеры, неиспользуемые образы и кеш сборки. Проверьте объём командой docker system df и удалите лишнее.
docker system df
docker container prune -f
docker image prune -a -f
docker builder prune -f
# Removes everything unused, including volumes - check first!
docker system prune -a --volumes
--volumes удаляет все тома, не используемые контейнерами, в том числе с данными баз данных. Убедитесь, что они не нужны.Если большой файл удалён, а df не изменился, его всё ещё держит открытым какой-то процесс. Найдите его через lsof и перезапустите соответствующую службу.
# Deleted files still held open by a process
lsof +L1 2>/dev/null | head -n 20
# Restart the process that holds them, e.g.
systemctl restart nginx
Обычно причин две: удалённые файлы, которые ещё открыты процессом (см. шаг 7), или файлы, скрытые под точкой монтирования другого диска. В первом случае перезапустите процесс, во втором — отмонтируйте диск и проверьте каталог.
Старые ротированные логи с датой или расширением .gz, как правило, можно удалить. Активные логи очищайте через truncate. Долгосрочное решение — настроить logrotate для регулярной ротации и сжатия.
Перенесите сайты, базы данных или резервные копии на дополнительный диск либо увеличьте диск и расширьте раздел по нашей инструкции по LVM и growpart.
Если проблема не решилась, создайте тикет — техническая поддержка IMIDC работает круглосуточно 24/7. Укажите IP-адрес сервера, операционную систему, выполненные команды и приложите скриншот ошибки: так инженер разберётся быстрее.