Диск заполнен: экстренное восстановление
Экстренные действия при заполнении диска: поиск больших файлов с du и ncdu, очистка логов, проверка inode и настройка автоматической очистки.
Содержание
Введение
Заполнение дискового пространства может привести к сбоям сервисов, ошибкам базы данных и нестабильности системы. В этом руководстве мы рассмотрим экстренные действия и постоянные решения при заполнении диска.
Экстренная диагностика
Проверка использования диска
# Общее использование диска
df -h
# Использование inode
df -i
# С типами файловых систем
df -Th
Когда использование диска превышает 95%, требуется немедленное действие. При 100% сервисы начинают падать.
Поиск больших файлов и каталогов
Анализ командой du
# Самые большие каталоги в корне
sudo du -sh /* 2>/dev/null | sort -rh | head -20
# Анализ каталога /var
sudo du -sh /var/* 2>/dev/null | sort -rh | head -10
# Анализ /var/log
sudo du -sh /var/log/* 2>/dev/null | sort -rh | head -10
# Поиск файлов больше 100МБ
sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -20
Интерактивный анализ с ncdu
# Установка ncdu
sudo apt install ncdu -y
# Анализ корневого каталога
sudo ncdu /
Экстренные шаги очистки
1. Очистка лог-файлов
# Проверка размера журнала systemd
journalctl --disk-usage
# Ограничение журнала до 100МБ
sudo journalctl --vacuum-size=100M
# Удаление логов старше 7 дней
sudo journalctl --vacuum-time=7d
# Обрезка больших лог-файлов
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
# Удаление старых ротированных логов
sudo find /var/log -name '*.gz' -delete
sudo find /var/log -name '*.1' -delete
Команда truncate сбрасывает размер файла до нуля без его удаления. Перезапуск сервисов не требуется.
2. Очистка кеша APT
# Проверка размера кеша APT
sudo du -sh /var/cache/apt/archives/
# Очистка загруженных пакетов
sudo apt clean
# Очистка старых версий пакетов
sudo apt autoclean
# Удаление неиспользуемых зависимостей
sudo apt autoremove -y
3. Очистка старых ядер
# Текущая версия ядра
uname -r
# Список установленных ядер
dpkg --list | grep linux-image
# Удаление старых ядер
sudo apt autoremove --purge -y
4. Очистка каталога tmp
# Проверка размера /tmp
sudo du -sh /tmp
# Удаление tmp-файлов старше 7 дней
sudo find /tmp -type f -atime +7 -delete
5. Поиск удалённых, но открытых файлов
# Поиск удалённых, но открытых файлов
sudo lsof +L1 | grep deleted
# Перезапуск связанного процесса
sudo systemctl restart ИМЯ_СЕРВИСА
Особенно при удалении лог-файлов дисковое пространство не освободится без перезапуска связанного сервиса.
Исчерпание inode
# Проверка использования inode
df -i
# Поиск каталогов с наибольшим количеством файлов
sudo find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -20
Настройка автоматической ротации логов
# /etc/logrotate.d/custom-logs
/var/log/myapp/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
}
Ограничение размера журнала
# /etc/systemd/journald.conf
[Journal]
SystemMaxUse=200M
SystemMaxFileSize=50M
MaxRetentionSec=7day
Скрипт мониторинга диска
#!/bin/bash
THRESHOLD=90
PARTITION="/"
USAGE=$(df -h $PARTITION | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "ВНИМАНИЕ: Использование диска $USAGE% ($PARTITION)"
du -sh $PARTITION* 2>/dev/null | sort -rh | head -10
fi
Заключение
Заполнение диска — критическая проблема, требующая немедленных действий. Лог-файлы, кеш APT и старые ядра — наиболее частые потребители пространства. Настроив регулярную ротацию логов и мониторинг диска, вы можете предотвратить повторение этой проблемы.
Связанные статьи
Проблема SSH-подключения: не могу подключиться к серверу
Руководство по решению проблем SSH-подключения: правила файрвола Path.net, Default Block, создание правила фильтрации для SSH-порта и шаги по устранению неполадок.
Проблема RDP-подключения: не могу подключиться к Windows Server
Руководство по решению проблем RDP-подключения: правила файрвола Path.net, Default Block, создание правила фильтрации для порта RDP и шаги по устранению неполадок.
Как провести MTR-тест и отправить результаты в поддержку
Руководство по сетевому тестированию с помощью WinMTR и Linux MTR, создание правила фильтрации ICMP и отправка результатов в службу поддержки. Диагностика потери пакетов.