Коротко. 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. Правила, которые сохраняют данные
- Каталог кассет — только с железа. Не выдумывать штрихкоды, не дописывать «для красоты».
- Сначала вернуть/удалить холодные объекты, потом чистить ленточный слой. Иначе объекты останутся без данных.
- Не удалять кассету из библиотеки, если она заведена в продукте — продукт снимет её сам по своим порогам.
- Штрихкод в реестр — без LTO-суффикса (продукт сам его отбрасывает).
- Перед работами — снимок состояния (кассеты, тома, маркеры, метрики).
- 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 — через поддержку вендора.