CottonСнимки
Снимки

Восстановление должно быть обычным действием, а не последним шансом после пожара.

Cotton разделяет метаданные раскладки и хранилище содержимого, поэтому снимки, версии, корзина, восстановление и сборка мусора работают по ссылкам вместо копирования каждого байта заново.

СнимкиВерсии файловОткатКорзинаБезопасная сборка мусора

Снимки на основе ссылок

Снимки записывают состояние раскладки по ссылке. Большие деревья не надо физически дублировать только ради точки отката.

Модель восстановления всей раскладки

Граф раскладки — первоклассная абстракция. Поэтому восстановление можно обсуждать на уровне дерева, а не лечить каждый путь к файлу как отдельную аварию.

Версии файлов

Когда содержимое меняется, Cotton может держать родословную версий, которую пользователь может смотреть, скачивать, восстанавливать или подчищать по политике удержания.

Пруф ссылочной модели

Снимки и версии опираются на ссылки раскладки, родословную версий файлов, удержание корзины, ссылки манифестов, учёт удержания превью/шар и осторожную сборку мусора до освобождения чанков.

Восстановление становится повседневным UX

Восстановление — продуктовая фича, когда оно видимое, дешёвое и понятное. Cotton относится к снимкам, версиям файлов, корзине и восстановлению как к нормальным сценариям файлового облака, а не как к аварийной бэкенд-рутине.

Корзина как жизненный цикл

Корзина, версии, шары, снимки, манифесты и превью — поверхности удержания. Очистка должна знать о них всех до освобождения чанков.

Безопасная для освобождения сборка мусора

Неиспользуемые чанки сначала ставятся в очередь, потом перепроверяются, и только после этого освобождаются. Если содержимое снова получило ссылку до удаления, очистка отменяет путь освобождения.

Видимая пользователю уверенность

Фичи восстановления важны потому, что пользователи безопаснее экспериментируют, когда откат дешёвый и очевидный. Это продуктовая ценность, а не только теория хранилища.

Бэкапы всё равно нужны

Восстановление на основе ссылок не заменяет бэкапы вне сервера. Оно закрывает повседневные ошибки и сценарии удержания; полная потеря сервера всё равно требует протестированных бэкапов и плана восстановления.

Доказательство восстановления

Откат дешёвый только когда модель под него построена.

Cotton разделяет видимое дерево и сохранённый контент. Поэтому снимки, версии, корзина, восстановление и очистка — части одного жизненного цикла, а не отдельные задачи, которые дерутся за те же байты.

Ссылочная модель

Восстанавливай дерево. Не копируй архив заново.

Смысл не в том, что снимки звучат умно. Смысл в том, что пользователи восстанавливаются после ошибок без превращения большой библиотеки в медленную фоновую операцию копирования.

Раскладка

Состояние дерева — это метаданные.

Папки и узлы видимых файлов проходят сценарии восстановления без переписывания каждого сохранённого чанка.

Манифест

Идентичность контента остаётся стабильной.

Видимый файл указывает на манифест, а манифест — на упорядоченные контентно-адресуемые чанки.

Версия

Старый контент может оставаться доступным.

Обновлённые файлы могут хранить родословную версий, которую пользователи осматривают, скачивают, восстанавливают или подрезают.

Освобождение

GC удаляет последним, а не первым.

Неиспользуемые чанки планируются, перепроверяются и освобождаются только после того, как Cotton подтвердил: ничего живое в них не нуждается.

Снимки по ссылкам

Большие раскладки не превращаются в большие задачи копирования только потому, что пользователь хочет точку отката.

Восстановление с учётом версий

Плохая перезапись становится решением по версии, а не событием безвозвратной потери.

Корзина — состояние хранения

Удалённые видимые файлы всё ещё требуют ясной семантики хранения до исчезновения чанков.

Очистка уважает живые ссылки

Шары, превью, версии, снимки, манифесты, бэкапы и живые файлы важны для безопасности освобождения.

Контракт очистки

Освобождение должно быть скучным, отложенным и правильным.

Контентно-адресуемое облако остаётся безопасным только если очистка знает, что ещё живо. Cotton относится к GC как к скоординированному сценарию хранения: сначала запланировать, потом проверить ещё раз, и только затем удалить, когда ссылки правда исчезли.

  1. Пометить контент без ссылок как освобождаемый
  2. Отложить удаление, а не гнаться наперегонки с восстановлением
  3. Перепроверить ссылки до того, как трогать хранилище
  4. Отменить освобождение, если чанк снова стал живым
Бытовое восстановление

Бэкапы всё ещё обязательны, но бытовое восстановление не обязано ощущаться как аварийное восстановление. Cotton делает восстановление частью сценария файлового облака, а не аварийным путём только для оператора.

Граница бэкапов

Восстановление на ссылках зависит от корректных метаданных и учёта хранения. Если развёртыванию нужна защита от полной потери сервера, ему всё ещё нужны протестированные бэкапы и хранилище вне сервера.

Вопросы

Прямые ответы

Снимки — это полные копии?

Нет. Модель построена на ссылках. Цель — избежать восстановления с тяжёлым копированием для больших раскладок.

Снимки заменяют бэкапы?

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

Почему сборка мусора должна быть осторожной?

Чанк может быть нужен версии файла, снимку, шаре, превью, артефакту бэкапа или живому манифесту. Очистка обязана уважать все пути удержания.