Действия по приведению дисков в рабочее состояние (2026-02-15)

Дата: 2026-02-15
Цель: Проверить состояние дисков, принять меры, исправить ошибки, привести к штатной работе.


1. Исходное состояние

Раздел Свободно Норма Статус
/ 96 ГБ ≥ 2 ГБ, ≥15% ✅ Норма
/storage 0–7 ГБ ≥ 80 ГБ ⚠️ EMERGENCY
/D 296 ГБ ≥ 20% ✅ Норма
  • /storage был заполнен до 100% (0 байт свободно), затем после частичной очистки — около 7 ГБ.
  • Основной потребитель: LXD containers-snapshots (~502 ГБ из 558 ГБ на /storage).

2. Выполненные действия

2.1 Срочное освобождение места

  • При 0 байт LXD не отвечал на запросы. Выполнено обнуление логов контейнеров Docker на /storage:
    bash sudo find /storage/docker/containers -name "*-json.log" -exec truncate -s 0 {} \;
  • Результат: освобождено ~32 ГБ (с 0 до ~7 ГБ по df, фактически занято уменьшилось с ~567 ГБ до ~535 ГБ).

2.2 Исправление мониторинга и аварийной очистки

Проблема: При запуске из systemd (таймер) скрипт cleanup-lxd-snapshots.sh выполнялся от root; контейнеры LXD созданы пользователем cdto, поэтому в логе появлялось «Контейнер … не найден».

Исправления:

  1. disk-space-monitor.sh (в трёх местах: preventive, aggressive, emergency cleanup для /storage): вызов очистки снимков LXD заменён на запуск от пользователя cdto:
    bash LXD_USER="${LXD_USER:-cdto}" LXD_HOME=$(getent passwd "$LXD_USER" 2>/dev/null | cut -d: -f6) [ -z "$LXD_HOME" ] && LXD_HOME="/home/$LXD_USER" sudo -u "$LXD_USER" env HOME="$LXD_HOME" USER="$LXD_USER" /home/cdto/DENKART/scripts/cleanup-lxd-snapshots.sh ...

  2. disk-space-emergency-cleanup.sh (функция cleanup_storage):

  3. В начале добавлено обнуление логов контейнеров Docker на /storage (чтобы при 100% диска быстро освободить место и дать LXD возможность работать).
  4. Вызов cleanup-lxd-snapshots.sh переведён на выполнение от пользователя cdto (аналогично монитору).

  5. Обновлённые скрипты установлены в систему:
    sudo cp .../disk-space-monitor.sh /usr/local/bin/ и то же для disk-space-emergency-cleanup.sh.

2.3 Документация

  • STORAGE-BRING-TO-NORMAL.md: добавлен п. 1.2a «Если диск 100% (0 байт свободно)» — первая помощь: обнуление логов Docker, затем очистка снимков LXD.
  • Уточнено, что мониторинг вызывает очистку снимков от пользователя cdto.

3. Текущее состояние

  • / — в норме (96 ГБ свободно).
  • /storage — свободно ~7 ГБ (целевые 80 ГБ не достигнуты). Очистка снимков LXD от пользователя cdto была запущена; при большом числе снимков выполнение может быть длительным.
  • /D — в норме (296 ГБ свободно).
  • disk-space-monitor.timer — active, enabled; следующий запуск использует обновлённый скрипт с вызовом очистки LXD от cdto.

4. Рекомендации для выхода на 80 ГБ на /storage

  1. Дождаться следующего срабатывания таймера монитора (каждые 5 мин) или вручную запустить:
    bash sudo -u cdto env HOME=/home/cdto USER=cdto /home/cdto/DENKART/scripts/cleanup-lxd-snapshots.sh
  2. Проверять прогресс: df -h /storage, tail -50 /tmp/cleanup-lxd-snapshots.log (или /var/log/cleanup-lxd-snapshots.log при запуске от root с записью в /var/log).
  3. При необходимости временно снизить лимиты снимков в cleanup-lxd-snapshots.sh (например, некритичные до 5), выполнить очистку, затем вернуть лимиты.
  4. Еженедельно: df -h /storage, при свободном < 100 ГБ — плановая очистка по STORAGE-BRING-TO-NORMAL.md.

Документ подготовлен: AI Denkart, технический директор.