ID причины dk-full · Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД, Команда разработки · Разработка сервера
Когда логи и дампы заполняют диск, запись завершается ошибкой, и если к этому не подготовиться, сервер падает.
Почему Логи, дампы и временные файлы заполняют диск на 100% → Следствие Запись не удаётся. Без обработки ошибок сервер падает, с обработкой не проходят сохранения → На экране Дисконнект, роллбэк прогресса
Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД, Команда разработки · Разработка сервера
Команда разработки: задачи
Обрабатывать ошибки записи: повторять сохранение и поднимать алерт вместо падения сервера, сократить ненужные логи и дампы.
Команда инфраструктуры: задачи
Серверы и ОС: ротация логов, алерты на заполнение, раздельные диски для логов и данных. Серверы БД: следить, чтобы журнал транзакций БД (WAL, binlog) не копился из-за остановки репликации или пропущенного бэкапа журнала.
На графике
Плавный рост · заполненность диска
Где смотреть
Смотреть заполненность в df -h и заполненность inode в df -i, искать ошибки ENOSPC в логах сервера и БД. Для БД смотреть слоты, у которых active равно false, в pg_replication_slots (PostgreSQL), число и размер файлов в SHOW BINARY LOGS (MySQL), log_reuse_wait_desc в sys.databases (SQL Server), FreeStorageSpace (RDS)
Подтверждает
Заполненность несколько дней стабильно растёт, момент достижения 100% совпадает с падением сервера или сбоями сохранения, в логах есть ENOSPC
Опровергает
Если места достаточно, а запись не проходит, причина другая: права доступа, лимит размера файла и т. п.
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Подробнее
Журнал транзакций БД (WAL, binlog и др.) не удаляется и продолжает расти, если реплика остановилась или бэкап журнала не выполнился. Когда этот диск заполняется, в БД останавливаются все записи, и сохранения и обмены разом перестают проходить.
Troubleshoot a full transaction log (SQL Server Error 9002)Microsoft SQL Server Когда журнал заполнен, БД доступна только для чтения, изменять данные нельзя. Частые причины, которые мешают очистке журнала: пропущенный бэкап журнала, отставание репликации, длинные транзакции. Что именно мешает, показывает log_reuse_wait_desc в sys.databases
df(1) — Linux manual pagecoreutils Занятое место по файловым системам, -i показывает использование inode вместо блоков