Что хранится на диске

Стандартный k3s-instance использует /var/lib/colloq/data и /var/lib/colloq/workspace. Рядом находятся приватная конфигурация, постоянные секреты и сведения о выпусках. Local PV переживают замену Pod, но не потерю диска или удаление VM.

Переносимый архив включает SQLite, workspace, конфигурацию, ключи приложения и runtime, release/catalog и контрольные суммы. Он содержит секреты: храните его приватно и вне исходной машины. Слои контейнерных образов в архив не входят, поэтому registry должен сохранять нужные digest.

Выберите режим копии

РежимПоведениеЦена
consistentОстанавливает приложение, брокер и все ядра до копирования.Перерыв в работе; память Python теряется.
liveСнимок SQLite и независимое копирование изменяющихся файлов.Не атомарный снимок базы и workspace; меняющиеся файлы могут сорвать копирование.
sudo env MODE=consistent scripts/backup.sh
# После проверки копии возобновите работу явно:
sudo scripts/cluster.sh start

# Либо копирование во время работы:
sudo env MODE=live scripts/backup.sh

Consistent-копия по умолчанию оставляет запись остановленной. При ошибке копирования сначала выясните причину; не запускайте работу автоматически. Для удалённой Vast VM используйте vast-sync.

Восстановление на Linux

Используйте доверенный архив, соответствующее имя окружения и явно совместимый выпуск. На подготовленном целевом сервере выполните из каталога его инструментов:

sudo scripts/cluster.sh prepare --release /path/release.json
sudo bash scripts/restore.sh \
  --archive /path/colloq-consistent.tar.gz \
  --release /path/release.json --replace
sudo scripts/cluster.sh prepare --release /path/release.json
sudo scripts/cluster.sh start

Пример выше соответствует копии без заданного NAME. Для именованной копии добавьте такое же имя при восстановлении, например sudo env NAME=hse bash scripts/restore.sh …. Имя должно совпадать с архивом. --replace явно разрешает замену существующих деревьев; даже начальный prepare создаёт секреты и конфигурацию. Инструменты сначала проверяют архив и совместимость, останавливают всех писателей, затем устанавливают целые деревья. Предыдущие деревья сохраняются приватно в replaced-…; не удаляйте их до проверки восстановления.

Повторный prepare согласует восстановленные runtime-секреты и старые ревизии каталога. На этом шаге не передавайте новый --env-file, если не собираетесь сознательно заменить восстановленную конфигурацию.

Проверьте результат

  • Открываются ожидаемые комнаты и старые ссылки преподавателей и студентов.
  • Тетради, публикации, данные и файлы соответствуют выбранной копии.
  • Две комнаты исполняются независимо, а ядра используют нужные ревизии.
  • В GPU-окружении проходит реальная CUDA-операция.
  • С исходной машины можно восстановиться даже после потери её диска.

Проверка контрольных сумм и SQLite quick_check обязательна для целостности, но не заменяет проверку материалов и рабочего сценария.

Если восстановление прервалось

Незавершённая операция оставляет .restore-in-progress. Пока она не завершена, запуск и изменение deployment блокируются. Повторите восстановление тем же проверенным архивом с --recover --replace, либо, при работе из полного checkout, через make с RECOVER=1 REPLACE=1. Не удаляйте маркер вручную, чтобы обойти защиту.

Явное восстановление может вернуть удалённые комнаты: оно согласует файлы с постоянными runtime-резервациями удалённых ID. Обычные start/stop/update эти резервации не сбрасывают.

Старые форматы и k3s

make restore-legacy DB=old.db FILES=old-files.tar.gz предназначен для старого локального формата и отвергается поверх установленного кластера. Миграция старого сервиса требует отдельной проверки схемы и каталога.

Backup Colloq не является backup datastore k3s. Перед изменением версии k3s сохраните его datastore и server token отдельно по документации k3s.