ActiveScaleинженерная практика

Холодное хранение и лента

Коротко. Cold Storage — отдельный класс в ActiveScale: объекты уходят на ленту, доступ к ним — через restore (минуты). Экономика ниже, durability — до 19 девяток по данным вендора, 2D erasure coding. Но лента — это своя инфраструктура: библиотека, приводы, коннектор, кассеты, штрихкоды, safety. Здесь ошибки выглядят как «лента не работает», а причина часто в адресе или реестре.


1. Как устроено

S3 (класс Glacier) → постановка в очередь → том → staging → маркер → архив на кассету
                                                                  ↓
                                       restore: кассета → staging → объект доступен
  • RAIL (Redundant Array of Independent Libraries) — параллельный доступ к библиотекам, масштабирование добавлением библиотек.
  • 2D erasure coding — чётность внутри и между кассетами, приводами, библиотеками, площадками.
  • Tape Connector — отдельное устройство/сервис, через который продукт управляет библиотекой.
  • Кассеты — носитель; продукт ведёт их реестр и сверяет с каталогом библиотеки.

2. Что мы делаем

  • Подбор и подключение библиотеки/приводов/коннектора.
  • Настройка модели: адрес библиотеки, коннектор, порты.
  • Регистрация кассет, штрихкоды, группы, safety.
  • Разбор COLD_STORAGE_* событий.
  • Restore и проверка целостности.
  • Регламент обслуживания ленты.
  • Обучение оператора: что можно делать самому, что — только с инженером.

3. Типовые проблемы

Симптом Часто причина Что проверяем
TAPE_CONNECTOR_UNAVAILABLE Адрес коннектора без порта → 443 → 501; коннектор недоступен Адрес/порт в модели, доступность sws
SAFETY = 0 Мало кассет в группах (spread+safety) Число кассет, spread/safety, метрики
«Пропавшие» кассеты Форма штрихкода (продукт режет LTO-суффикс) Реестр vs каталог, barcode[:-2]
INSUFFICIENT_FREE_TAPE_MEDIA Пустой класс genscratch Свободные кассеты в библиотеке
Архивация не стартует Привод не OK; порог батча; том не набран drive list, orchestrate, настройки
Restore «висит» Кассета недоступна/занята; staging заполнен Привод, кассета, дисковый тир

4. Правила, которые сохраняют данные

  1. Каталог кассет — только с железа. Не выдумывать штрихкоды, не дописывать «для красоты».
  2. Сначала вернуть/удалить холодные объекты, потом чистить ленточный слой. Иначе объекты останутся без данных.
  3. Не удалять кассету из библиотеки, если она заведена в продукте — продукт снимет её сам по своим порогам.
  4. Штрихкод в реестр — без LTO-суффикса (продукт сам его отбрасывает).
  5. Перед работами — снимок состояния (кассеты, тома, маркеры, метрики).
  6. Restore-маркеры — отдельная сущность; при удалении объектов они не уходят автоматически.

5. Обслуживание

  • Ежедневно: приводы, свободные кассеты, safety, события.
  • Еженедельно: сверка каталога с железом, «пропавшие», защита кассет.
  • Ежемесячно: ревизия групп/политик, тест restore.
  • Квартально: проверка ёмкости и план ротации кассет.

6. Честные оговорки

  • Часть настроек ленты (QoS, некоторые режимы) — через поддержку вендора.
  • На лабораторных масштабах пороги батча/тома могут не достигаться — это не «поломка».
  • Поведение библиотеки зависит от прошивки/модели; проверять на своём железе.

Частые вопросы

Нужна ли лента, если есть диски? Лента — это холодный класс, а не замена дискам: активные данные остаются на NVMe и HDD, а то, к чему редко обращаются, уходит в архив. Вендор заявляет снижение стоимости холодного хранения до 80%. Если бэкапы, архивы и медиа лежат годами и почти не читаются — экономика обычно сходится; если данные горячие, лента не нужна.

Сколько нужно кассет? Столько, чтобы покрыть spread и safety в группах: при нехватке кассет safety падает в ноль, и архив встаёт. Точное число считается от объёма, политики и количества групп — это проектная задача, а не «пачка на всякий случай». Плюс свободные кассеты в классе genscratch, иначе архивация не стартует.

Как быстро проходит restore? Это минуты, а не секунды: объект возвращается с кассеты через staging. Точное время зависит от привода, загрузки библиотеки и размера объекта, поэтому конкретную цифру не обещаем. В 7.2 restore стал больше чем в пять раз быстрее, в 7.3 добавили ускорение из warm-staging; ranged restore из Glacier появился в 7.1.

Что с ротацией кассет? Ротацию планируем квартально: смотрим ёмкость, износ приводов, число групп и свободные кассеты. С 7.3 есть Tape Space Reclamation — ёмкость кассет переиспользуется после удаления объектов, ретроспективно и автоматически. Кассету, заведённую в продукте, не удаляем из библиотеки вручную: продукт снимет её сам по своим порогам.

Можно ли без ленточной библиотеки? Сценарий — библиотека (или несколько), приводы и Tape Connector: продукт управляет лентой через коннектор, а RAIL даёт параллельный доступ и масштабирование добавлением библиотек. Без ленты холодный тир не включается, и система работает только с активным классом. Настройки вроде QoS — через поддержку вендора.