Кратко

  • В апреле 2010 года Debian представил архив snapshot: старые пакеты можно было получать по дате и версии, исследовать регрессии и повторять проверенное обновление.
  • Сбои того года показали две отдельные задачи резервной системы: выдавать сохранённые файлы и продолжать собирать новые состояния репозиториев.

У машины времени Debian сломался дисковый контроллер. Для жанра научной фантастики это обидно мелкая неприятность. Для команды, сохранявшей историю программ, — вполне достаточный повод срочно менять планы.

12 апреля 2010 года проект объявил о snapshot.debian.org. Через обычный по способу использования репозиторий apt можно было получать старые пакеты и исходный код. Администратор получал возможность испытать обновление на наборе определённой даты, а затем вернуться к нему для настоящей процедуры. Разработчик мог искать, когда появилась регрессия. На старте сообщалось примерно о 6,5 терабайта данных и почти всех пакетах основного архива и архива безопасности с марта 2005 года.

До объявления сервис уже успел побывать в ремонте. Запись от 20 февраля описывала второй узел: основной сервер stabile собирал новые снимки, данные копировались на sibelius, оба отвечали на веб-запросы. Через четыре дня контроллер основного сервера отказал, половина его дисков стала недоступна. Уцелевшая машина продолжала выдавать накопленное. Приём новых данных остановился.

Второй сборщик с отдельной базой уже был в планах. Сломанная железка обеспечила ему повышение по службе — из будущих задач в срочные.

Прошлое выдавали, настоящее задерживалось

К 9 марта основной сервер вернулся в строй, а данные, собранные запасным, начали объединять с его архивом. Обнаружилось исключение: обновления backports.org не были должным образом отправлены на вторую систему. 15 марта команда записала, что основной сервер снова делает снимки и объединение данных завершено.

Пришлось проверить и сами запасы. Именем файла служил хеш его содержимого, а база связывала эти имена с пакетами и путями в архиве. Проверки сопоставляли имя с содержимым и выясняли, есть ли на диске файлы, на которые ссылается база. Нашлись правильные файлы с неверно рассчитанными именами, а также повреждённые индексы пакетов. Имена и ссылки исправляли, испорченные файлы удаляли. Включить питание оказалось только первым пунктом уборки.

14 декабря команда рассказала о другой аппаратной неисправности, возникшей примерно 20 ноября. Основная машина перестала импортировать новые данные, а оставшееся зеркало продолжало показывать состояние на 20 ноября. Непубличная резервная система всё это время собирала данные, которые затем удалось добавить. Однако debian-ports в её сбор не входил. Для этого архива за затронутый период остался пробел.

Польза сервиса заключалась в простом действии: старый набор программ можно снова получить и использовать. Чтобы это работало и для следующих дат, кто-то должен был непрерывно принимать новые поступления. Полки со вчерашним оставались открытыми, пока сегодняшняя доставка застревала. У цифровой памяти тоже оказался хозяйственный двор.