Обсудить задачу

Выпуск 02Резервное копированиеСерия «Инфраструктура данных»

Ленточная библиотека для тех, кто её не проектировал

Как устроен этот слой системы резервного копирования, что в нём ломается, почему LTO-10 меняет арифметику планирования и откуда на самом деле берётся число картриджей.

Последний год почти в каждом проекте по резервному копированию повторяется одна и та же сцена. Обсуждаем архитектуру, считаем дисковый уровень, спорим про дедупликацию и глубину хранения — а когда доходим до ленты, разговор сворачивается за две минуты. «Ну там библиотека, поставим сколько надо картриджей». И это ровно тот слой, который потом приходится пересчитывать.

Причин две. Первая — ленту проектируют по инерции, копируя конфигурацию из прошлого проекта, где были другие объёмы и другое поколение носителя. Вторая — в 2025 году вышло поколение LTO-10, и оно поменяло арифметику планирования сильнее, чем любое предыдущее: разорвало обратную совместимость и подняло требования к сети хранения. Спецификации, собранные по памяти, теперь ошибаются не на проценты.

Эта статья — для менеджера проекта и для архитектора, который отвечает за решение целиком и не обязан помнить, сколько приводов влезает в модуль. Устройство привода объяснять не будем. Разберём то, что определяет бюджет и сроки: из чего складывается конфигурация, что в ней ломается, почему новое поколение тянет за собой замену коммутаторов и откуда на самом деле берётся число картриджей.

Место в архитектуре

Зачем этот слой вообще остался

У ленты в системе резервного копирования другая работа, чем у дискового уровня, и требовать от неё скорости — ошибка постановки задачи.

Раз в полгода слышим, что лента умерла. Обычно от людей, которые не подписывали акт после проверки регулятором.

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

Лента держится на четырёх вещах, и ни одна из них не про скорость. Стоимость хранения терабайта на больших объёмах кратно ниже дисковой. Картридж в слоте потребляет ровно ноль ватт — на объёмах в петабайты это уже статья в счёте за электричество, а не абстракция. Заявленный срок хранения — тридцать лет и больше, у диска без питания счёт идёт на годы. И главное: картридж, вынутый из библиотеки, недостижим по сети физически. Не «защищён политикой», а недостижим — между ним и злоумышленником воздух и человек.

Вот это последнее и есть причина, по которой лента живёт в банках. Всё остальное, что называют air gap, — это процедура, настройка или договорённость с вендором. Их можно обойти, скомпрометировав достаточно высокие права. Картридж на полке обойти нельзя.

Три уровня хранения копий: у каждого своя работаДиск отвечает за скорость возврата сервиса. Лента — за то, чтобы копия пережила худшийсценарий.Оперативныйдисковый уровеньЗадачабыстро вернуть сервисВосстановлениеминуты — часыГлубина хранениядни — неделиЗащита от шифровальщиканастройками и правамиСтоимость терабайтавысокаяИммутабельноеобъектноеЗадачасохранить копиюнеизменнойВосстановлениечасыГлубина хранениямесяцы — годыЗащита от шифровальщикаблокировкой ипроцедуройСтоимость терабайтасредняяЛенточный архивЗадачачтобы было чтовосстанавливатьВосстановлениечасы — суткиГлубина хранениягоды — десятилетияЗащита от шифровальщикафизическим разрывомСтоимость терабайтанизкаяОшибка постановки задачи — записать в требования один показатель времени восстановления сразуна все три уровня.Три уровня хранения копий: у каждогосвоя работаДиск отвечает за скорость возврата сервиса. Лента —за то, чтобы копия пережила худший сценарий.ОперативныйдисковыйуровеньИммутабельноеобъектноеЛенточный архивЗадачабыстро вернутьсервиссохранитькопиюнеизменнойчтобы было чтовосстанавливатьВосстановлениеминуты — часычасычасы — суткиГлубина хранениядни — неделимесяцы — годыгоды —десятилетияЗащита от шифровальщиканастройками иправамиблокировкой ипроцедуройфизическимразрывомСтоимость терабайтавысокаясредняянизкаяОшибка постановки задачи — записать в требованияодин показатель времени восстановления сразу навсе три уровня.
Рис. 1. Три уровня хранения копий и зона ответственности каждого

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

Практическое следствие: если в требованиях к проекту написан один показатель времени восстановления на всё подряд — это ошибка постановки, и её надо чинить до расчёта спецификации, а не после.

Устройство и сервис

Как устроена библиотека и что в ней ломается

Вся арифметика держится на трёх числах. А единственная подвижная часть останавливает весь обмен с лентой целиком.

Современная библиотека среднего класса собирается вертикально из модулей по 3U, и вся её арифметика держится на трёх числах.

Один модуль даёт до сорока слотов под картриджи. Если в нём настраивается станция ввода-вывода — а она нужна, чтобы вынимать и добавлять картриджи, не останавливая работу, — под данные остаётся тридцать пять. Приводов в модуль помещается либо три половинной высоты, либо один полноразмерный и один половинной высоты. Третьего варианта нет: полноразмерный привод занимает два посадочных места из трёх, и ставится только в две нижние позиции.

Робот в стеке один и обслуживает все модули сразу. Из этого следуют два вывода противоположного знака.

Хороший: расширять библиотеку почти всегда выгоднее, чем покупать вторую. Модуль расширения — это по сути умная полка, вы не платите второй раз за робота, контроллер и управляющую электронику, а в системе резервного копирования библиотека остаётся одним устройством с общим пулом слотов. Две отдельные библиотеки — это две сущности в софте, раздельные пулы и ручная балансировка заданий.

Плохой: робот — единственная точка отказа для всей ёмкости сразу.

Из чего складывается конфигурация библиотекиТри числа определяют всё: слоты в модуле, комбинации приводов и потолок исполнения.Модуль расширения40 слотов · 5 слотов ввода-вывода3 привода половинной высоты3UМодуль расширения40 слотов · 5 слотов ввода-вывода1 полноразмерный + 1 привод половинной высоты3UМодуль расширения40 слотов · 5 слотов ввода-вывода3 привода половинной высоты3UБазовый модуль40 слотов · 5 слотов ввода-вывода1 полноразмерный + 1 привод половинной высоты3UРоботодин на весь стек: иэкономия, и точка отказаПриводы в модуле3 половинной высотылибо 1полноразмерный + 1половиннойПолноразмерный занимаетдва места из трёх и ставитсятолько в две нижние позиции.Расширение против второйбиблиотекимодуль расширениядешевлеНе платим второй раз заробота и контроллер,библиотека остаётся однимустройством с общим пуломслотов.Потолок исполнения7 модулей либо 16модулейЭто разные изделия.Исполнение на 7 модулейнельзя переконвертировать в16: выбор делается один раз,при покупке.Стек растёт вверх модулями по 3U. Робот обслуживает все модули сразу.Из чего складывается конфигурациябиблиотекиТри числа определяют всё: слоты в модуле,комбинации приводов и потолок исполнения.Модуль расширения40 слотов · 5 слотов ввода-вывода3 привода половинной высоты3UМодуль расширения40 слотов · 5 слотов ввода-вывода1 полноразмерный + 1 привод половиннойвысоты3UМодуль расширения40 слотов · 5 слотов ввода-вывода3 привода половинной высоты3UБазовый модуль40 слотов · 5 слотов ввода-вывода1 полноразмерный + 1 привод половиннойвысоты3UРоботодин на весь стек: и экономия, и точка отказаПриводы в модуле3 половинной высоты либо 1полноразмерный + 1 половиннойПолноразмерный занимает два места из трёх иставится только в две нижние позиции.Расширение против второй библиотекимодуль расширения дешевлеНе платим второй раз за робота и контроллер,библиотека остаётся одним устройством с общимпулом слотов.Потолок исполнения7 модулей либо 16 модулейЭто разные изделия. Исполнение на 7 модулейнельзя переконвертировать в 16: выбор делаетсяодин раз, при покупке.Стек растёт вверх модулями по 3U. Робот обслуживает всемодули сразу.
Рис. 2. Модульное устройство библиотеки: слоты, приводы, робот и потолок исполнения

И здесь же ловушка, которую в спецификациях не видно. У платформы бывает два исполнения — на семь модулей и на шестнадцать. Это разные изделия с разными партномерами, и исполнение на семь модулей нельзя переконвертировать в исполнение на шестнадцать. Выбор делается один раз, при покупке базового модуля. Совет «не покупайте вторую библиотеку, расширьте текущую» работает ровно до потолка вашего конкретного исполнения — и проверять этот потолок надо до того, как вы пообещали заказчику дешёвое расширение.

Теперь про то, что ломается. У нас однажды встал робот в модульной библиотеке корпоративного класса — та самая карбоновая рука, которая ездит по рельсам и с ювелирной точностью вставляет картриджи в слоты. Библиотека выдала ошибку, рука перестала отвечать на команды, и весь обмен с лентой остановился.

Замена такого узла — не «поменять диск». Отключить шлейфы, снять робота с направляющих, поставить новый, откалибровать позиционирование по каждой стене слотов, прогнать полную инвентаризацию, проверить захват и отпускание картриджей. Только после этого в продакшн. Ошибка в калибровке — и робот начинает промахиваться мимо слотов или ронять картриджи.

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

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

Смена поколения

LTO-10: что изменилось на самом деле

Что выросло, что осталось прежним и что сломалось окончательно — по пунктам, без маркетингового шума.

Тут много маркетингового шума, поэтому разберём по пунктам — что выросло, что не выросло и что сломалось.

Ёмкость выросла существенно. Носитель LTO-9 — 18 ТБ native. У LTO-10 два типа носителя: стандартный на 30 ТБ и премиальный на 40 ТБ, оба работают в одном приводе. Это плюс 67 или плюс 122 процента на картридж. Все красивые сравнения вида «в 2,2 раза меньше кассет» считаются от премиального носителя, и это надо оговаривать явно, иначе на закупке выяснится, что цифры не сходятся.

Скорость записи не выросла. Полноразмерный привод LTO-9 выдаёт 400 МБ/с native, полноразмерный LTO-10 — те же 400 МБ/с. Весь выигрыш поколения вложен в плотность записи, а не в темп. Если вам обещают сокращение окна резервного копирования при переходе на новое поколение — спросите, откуда оно берётся. Обычно там сравнивают привод половинной высоты старого поколения (300 МБ/с) с полноразмерным новым, то есть выигрыш даёт форм-фактор, а не поколение.

Зато выросла шина. Приводы LTO-9 в библиотеках этого класса подключались по Fibre Channel 8 Gb. Полноразмерный LTO-10 заявлен на 32 Gb, а на сжимаемых данных способен отдавать до 1200 МБ/с. Вот это изменение и есть самое дорогое по последствиям — про него следующий раздел.

Ёмкость картриджа выросла на две трети. Темп записи — ни на процент. Выросла шина, по которой этот темп едет.

Исчезла процедура первичной оптимизации носителя. На LTO-9 новый картридж перед первым использованием проходил калибровку, которая могла занять до двух часов и роняла задания по таймауту. У LTO-10 её нет — мелочь, но при массовой загрузке нового пула экономит рабочий день.

И сломалась обратная совместимость. Полностью. Привод LTO-10 не читает и не пишет LTO-9. До LTO-7 приводы работали с двумя предыдущими поколениями, с LTO-8 по LTO-9 — с одним, у LTO-10 не осталось ничего.

Что изменилось в поколении LTO-10Ёмкость выросла заметно, темп записи остался прежним, шина стала втрое шире, асовместимость исчезла.LTO-7LTO-8LTO-9LTO-10Ёмкость картриджа, native6 ТБ12 ТБ18 ТБ30 и 40 ТБСкорость записи, native(полноразмерный привод)300 МБ/с360 МБ/с400 МБ/с400 МБ/сСкорость записи, native(привод половинной высоты)300 МБ/с300 МБ/с300 МБ/с—Интерфейс подключения8 Gb FC8 Gb FC8 Gb FC32 Gb FCПоток на сжимаемых данныхдо 700 МБ/сдо 750 МБ/сдо 1000 МБ/сдо 1200 МБ/сЧитает предыдущие поколениядва назадодно назадодно назадне читаетКалибровка нового носителяне нужнане нужнадо 2 часовне нужнаЗначения по документации производителей приводов и библиотек.Что изменилось в поколении LTO-10Ёмкость выросла заметно, темп записи осталсяпрежним, шина стала втрое шире, а совместимостьисчезла.LTO-7LTO-8LTO-9LTO-10Ёмкость картриджа, native6 ТБ12 ТБ18 ТБ30 и 40 ТБСкорость записи, native (полноразмерный привод)300 МБ/с360 МБ/с400 МБ/с400 МБ/сСкорость записи, native (привод половиннойвысоты)300 МБ/с300 МБ/с300 МБ/с—Интерфейс подключения8 Gb FC8 Gb FC8 Gb FC32 Gb FCПоток на сжимаемых данныхдо 700 МБ/сдо 750 МБ/сдо 1000МБ/сдо 1200МБ/сЧитает предыдущие поколениядва назадодно назадодно назадне читаетКалибровка нового носителяне нужнане нужнадо 2 часовне нужнаЗначения по документации производителей приводов ибиблиотек.
Рис. 3. Поколения LTO-7 — LTO-10: ёмкость, скорость, интерфейс, совместимость

Это не мелкая деталь спецификации, это разворот стратегии закупки. Встречали в чужих обоснованиях для заказчика фразу «новое поколение читает старые картриджи, ваши инвестиции защищены». Она неверна, и цена ошибки — весь ранее записанный архив.

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

И одна деталь из практики разбора спецификаций: цифры «36 ТБ native» и «90 ТБ compressed» относятся к дорожной карте консорциума, а не к выпущенному продукту, и в расчёты их переносить нельзя.

Сеть хранения

Почему новое поколение тянет за собой сеть хранения

Строка «замена коммутаторов» в смете на резервное копирование — не раздувание бюджета, а прямое следствие смены поколения.

Это тот раздел, ради которого стоило всё остальное. Строка «замена SAN-коммутаторов» в смете на резервное копирование выглядит как раздувание бюджета — а на самом деле это прямое следствие смены поколения ленты.

Считать надо две вещи по отдельности, и их постоянно смешивают. Первая — хватает ли полосы одного порта на один привод. Вторая — хватает ли самих портов на всю библиотеку.

По полосе. Порт Fibre Channel 8 Gb даёт примерно 800 МБ/с. Привод предыдущего поколения на 400 МБ/с native в него укладывается свободно — но на сжимаемых данных тот же привод отдаёт до тысячи мегабайт в секунду и в порт уже не помещается. Новое поколение рассчитано на 32 Gb и на поток до 1200 МБ/с: в старой фабрике оно просто согласуется вниз. Заказчик заплатил за поколение и не получил его.

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

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

И третье, о чём вспоминают в последнюю очередь: настоящий потолок обычно стоит выше по тракту. Разбирали конфигурацию, где двадцать четыре привода давали паспортных почти десять гигабайт в секунду — а данные к ним приходили через пару адаптеров в медиа-серверах, и это была совсем другая цифра. Все споры про «добавить приводов, чтобы уложиться в окно» там не имели смысла: узким местом была не библиотека и даже не фабрика.

Почему смена поколения ленты трогает сеть храненияСчитать надо две вещи: полосу одного порта под один привод и число свободных портов навсю библиотеку.порт 8 Gbпорт 16 Gbпорт 32 GbПривод LTO-9, native400 МБ/сПривод LTO-9, сжимаемыеданные1000 МБ/сПривод LTO-10, native400 МБ/сПривод LTO-10, сжимаемыеданные1200 МБ/спривод на сжимаемых данных уже не помещается впорт 8 Gb08001 6002 4003 200 МБ/сПорт на каждый привод24 привода — 24портаПриводы линк не делят. Кэтому добавьте порты вмедиа-серверах и запас нафабрике.Новый привод в старойфабрикесогласуется внизЗаплатили за поколение 32Gb, получили полосу 8 Gb.Прироста нет.Потолок стоит выше по трактуадаптерымедиа-сервераСуммарная потребностьприводов упирается в портыHBA и в путь до дисковогопула, а не в библиотеку.Почему смена поколения ленты трогаетсеть храненияСчитать надо две вещи: полосу одного порта под одинпривод и число свободных портов на всю библиотеку.порт 8 Gbпорт 16 Gbпорт 32 GbПривод LTO-9, native400 МБ/сПривод LTO-9, сжимаемые данные1000 МБ/сПривод LTO-10, native400 МБ/сПривод LTO-10, сжимаемые данные1200 МБ/спривод на сжимаемых данных уже непомещается в порт 8 Gb08001 6002 4003 200 МБ/сПорт на каждый привод24 привода — 24 портаПриводы линк не делят. К этому добавьте порты вмедиа-серверах и запас на фабрике.Новый привод в старой фабрикесогласуется внизЗаплатили за поколение 32 Gb, получили полосу 8Gb. Прироста нет.Потолок стоит выше по трактуадаптеры медиа-сервераСуммарная потребность приводов упирается в портыHBA и в путь до дискового пула, а не в библиотеку.
Рис. 4. Полоса портов сети хранения против потребности приводов

Практический порядок действий, который советуем закладывать в план работ:

Сначала фиксируем интерфейс приводов. Они бывают в исполнении Fibre Channel и в исполнении SAS, и это разные адаптеры в медиа-сервере. Видели спецификацию, где приводы заказаны с FC, а в рекомендациях по серверу стоял внешний SAS-адаптер. Подключить такую библиотеку физически невозможно, и выясняется это на приёмке.

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

Для менеджера вывод простой: если проект предполагает переход на новое поколение ленты, вопрос «а что у нас с сетью хранения» задаётся на старте, а не после подписания. Иначе он всплывёт на этапе внедрения, когда бюджет уже утверждён.

Расчёт ёмкости

Ёмкость: откуда берётся число картриджей

Три места, где ошибаются, и все три — в одну сторону: картриджей заказывают меньше, чем нужно.

Здесь ошибаются чаще всего, и ошибка всегда в одну сторону — картриджей заказывают меньше, чем нужно.

Первое. Считаем только native. Лента традиционно продаётся в «сжатых» терабайтах: 18 ТБ превращаются в 45, 40 — в 100. Аппаратная компрессия привода действительно работает — но только на данных, которые до неё дошли несжатыми. Современная система резервного копирования отдаёт на носитель уже дедуплицированный и сжатый поток. Сжимать там нечего, коэффициент будет околоединичным.

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

Аппаратная компрессия работает только на данных, которые дошли до неё несжатыми.

Второе. Слоты — это не картриджи с данными. Видели спецификацию, где на три петабайта архива посчитали сто шестьдесят семь картриджей и заказали библиотеку на двести слотов — «с запасом». Запаса там нет: в эти двести слотов должны поместиться архив, пул свободных картриджей под текущую запись, чистящие картриджи, слоты станции ввода-вывода и рост на весь срок жизни решения.

Третье, и самое дорогое. Число копий определяет регулятор, а не архитектор. В одном из проектов расчёт числа картриджей дал вилку: около 364 штук при оптимизированной схеме поколений копий против примерно 936 при строгом прочтении требования «хранить 36 месяцев». Разница — почти шестьсот картриджей, и она не зависит ни от модели библиотеки, ни от вендора, ни от качества расчёта дедупликации.

Откуда берётся число слотов в библиотекеЧисла условные и показывают порядок шагов, а не расчёт конкретного проекта.библиотека на 200 слотов, заказанная «с запасом»Картриджи под самиданные3000 ТБ / 18 ТБ на картриджБерём только native-ёмкость.Паспортную «сжатую» в расчёт неподставляем167Копии по схеме хранениячисло копий задаёт регуляторСамая большаянеопределённость в расчёте:вилка от трактовки требованиябывает кратной+60Пул свободныхкартриджейпод текущую записьБез него задания встают, когдазакончится место насмонтированном носителе+22Чистящие картриджирасходникРесурс одного — около 50 циклов+6Станция ввода-выводаслоты под приём и выдачуЧтобы вносить и выноситькартриджи, не останавливаяработу библиотеки+10Рост на срок жизнирешениязапасНа весь срок эксплуатации, а нена первый год+45Итого слотовнужно 310 → восемь модулей по40 слотов3200100200300 слотовТипичная ошибка — остановиться на первом шаге и добавить запас на глаз. Водном разобранном проекте на 167 картриджей архива заказали 200 слотов:на всё остальное осталось тридцать три.Откуда берётся число слотов вбиблиотекеЧисла условные и показывают порядок шагов, а нерасчёт конкретного проекта.библиотека на 200слотов, заказанная «сзапасом»Картриджи под сами данные3000 ТБ / 18 ТБ на картриджБерём только native-ёмкость. Паспортную «сжатую» врасчёт не подставляем167Копии по схеме хранениячисло копий задаёт регуляторСамая большая неопределённость в расчёте: вилка оттрактовки требования бывает кратной+60Пул свободных картриджейпод текущую записьБез него задания встают, когда закончится место насмонтированном носителе+22Чистящие картриджирасходникРесурс одного — около 50 циклов+6Станция ввода-выводаслоты под приём и выдачуЧтобы вносить и выносить картриджи, не останавливаяработу библиотеки+10Рост на срок жизни решениязапасНа весь срок эксплуатации, а не на первый год+45Итого слотовнужно 310 → восемь модулей по 40 слотов3200100200300 слотовТипичная ошибка — остановиться на первом шагеи добавить запас на глаз. В одном разобранномпроекте на 167 картриджей архива заказали 200слотов: на всё остальное осталось тридцать три.
Рис. 5. Пошаговый расчёт числа слотов: от объёма данных до конфигурации

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

Пределы решения

Когда лента перестаёт быть ответом

Обратная сторона: где лента действительно не подходит и что при замене всплывает поздно и дорого.

Честный разбор требует и обратной стороны. Лента не универсальна, и есть сценарии, где её надо заменять.

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

Но здесь важно не впасть в противоположную ошибку. Уход с ленты на диск сам по себе быстрого восстановления не гарантирует. Был кейс, где виртуальная машина на 1,1 терабайта восстанавливалась девять часов — около 34 мегабайт в секунду. Ленты в схеме не было вообще: читали с дискового пула на обычных шпиндельных дисках 7200 оборотов.

Разбор оказался поучительнее самой цифры. У машины было два диска — небольшой системный и второй, на котором лежало всё остальное. В логах видно, что системный прошёл со скоростью около ста мегабайт в секунду и занял считаные минуты, а большой шёл на тридцати двух и съел почти всё окно. Агент восстанавливает машину последовательно, диск за диском — но даже умей он иначе, это ничего бы не дало: распараллеливать было нечего, почти все данные лежали на одном томе. И этот единственный поток тянул за собой всю цепочку — произвольное чтение с дедуплицированного пула на шпинделях, обратную сборку из дедупликации, распаковку и запись. Вот она целиком и упиралась в тридцать с небольшим мегабайт в секунду.

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

Вывод, который после этого повторяем на каждом проекте: время восстановления проверяется восстановлением, а не расчётом. Скорость бэкапа не говорит о скорости restore ничего — это разные цепочки. А если все данные машины лежат на одном большом томе, её не спасёт никакой параллелизм.

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

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

Чек-лист

Что спросить до того, как считать спецификацию

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

  1. Сколько данных реально лежит на ленте сейчас — по отчёту системы резервного копирования, а не по числу картриджей. И native это или compressed: путают постоянно, разница в разы.
  2. Какое поколение приводов и носителей стоит. Не «LTO», а конкретное поколение и форм-фактор: от этого зависит и ёмкость картриджа, и скорость, и совместимость.
  3. Какое исполнение библиотеки и сколько модулей уже занято. Если потолок исчерпан, дешёвого расширения не будет.
  4. Сколько портов сети хранения подведено к приводам и на какой они скорости. Это ваш реальный потолок производительности.
  5. В каком интерфейсном исполнении заказываются приводы и есть ли под них адаптер и свободный слот в медиа-сервере.
  6. Какую схему хранения требует регулятор и как её трактует служба комплаенса. От формулировки число картриджей меняется кратно.
  7. Есть ли сервисный контракт на механику и какой у него срок реакции. Робот — единственная точка отказа для всей ёмкости.
  8. Когда в последний раз проверяли восстановление на реальном объёме и сколько оно заняло. Расчётное время восстановления и измеренное — разные величины, и разница обычно не в вашу пользу.
  9. Когда планируется смена поколения носителя и заложена ли миграция архива в бюджет и в график.

Итог

Вместо вывода

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

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

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

Обсудить задачу

Разберём вашу задачу

Опишите платформу или проект — инженер ответит в Telegram или по почте.

Написать в Telegram

Или напишите в Telegram — бот передаст вопрос инженеру.