TapeRotation: своя система учёта и ротации ленточных накопителей
Тема лент, казалось бы, давно должна была умереть, но нет — у многих заказчиков ленточные библиотеки и офсайт-хранение картриджей живы и прекрасно себя чувствуют. Особенно сегодня, в эру массовых взломов offsite хранения получило глоток воздуха и стало чуть ли не единственным надёжным средством восстановления инфраструктуры после взлома. А там, где есть ленты, рано или поздно появляется отдельная головная боль: где физически лежит конкретный сет, когда у него заканчивается срок хранения, и кто за это вообще отвечает. Excel-таблица решает это ровно до того момента, как в компании появляется больше одного человека, который её редактирует.
Под эту задачу написан мой небольшой open-source проект — TapeRotation.
Зачем это нужно
Задачи у системы максимально приземлённые:
- знать, где физически лежат картриджи, отправленные на офсайт-хранение;
- следить за сроками хранения тейп-сетов и не пропустить момент возврата в библиотеку;
- хранить состав каждого сета — какие серверы, какой тип бэкапа, за какой период;
- предупреждать по почте о приближающемся окончании срока хранения;
- разграничивать доступ для разных категорий сотрудников.
То есть это не замена backup-софту, а прослойка над ним — учётная система специально под жизненный цикл ленты вне дата-центра.
Что внутри
Дашборд — сводка с количеством сетов в хранении, просроченных, возвращённых и тех, что скоро истекают. Ниже — таблицы сетов, готовых к возврату, и сетов с истечением в ближайшие 7 дней.

Тейп-сеты — полный список с фильтрацией по статусу и локации, поиском по метке и содержимому, сортировкой по дате отправки и истечения. Статусов три: «В хранении», «Просрочен», «Возвращён». У каждого сета — локация, дата записи, дата отправки, срок хранения в днях (или флаг Forever, то есть бессрочно), содержимое в свободной форме и список лент с указанием версии LTO.

Карточка сета — вся информация плюс контакты ответственного на площадке, список лент с возможностью добавления/редактирования/удаления, кнопка печати готовой версии страницы и кнопка «Отметить как возвращённый». Отдельно — журнал изменений: кто, что и когда сделал с сетом и лентами, включая перемещения между локациями.

Поиск — глобальный, по метке ленты (или её части) и по содержимому сета, сразу по всей базе.

Локации — справочник площадок хранения: название, адрес, контактное лицо, телефон, заметки.

Пользователи (только для админа) — создание учёток, смена роли/пароля/статуса/языка интерфейса. Интерфейс поддерживает русский и английский, причём язык настраивается отдельно для каждого пользователя.

Уровни доступа простые и понятные: readonly только смотрит, user может работать с данными, admin плюс ко всему управляет пользователями.
Импорт из бэкап-софта — самое интересное
Отдельного внимания заслуживает раздел импорта. Загрузка лент возможна из CSV или Excel, и список поддерживаемого софта внушительный: Acronis Cyber Backup, Bareos/Bacula, Commvault, Dell EMC NetWorker, IBM Spectrum Protect (TSM), OpenText Data Protector, Veeam Backup & Replication, Veritas Backup Exec, Veritas NetBackup, Vinchin Backup & Recovery и Кибербэкап.

Для каждой системы в README расписано, откуда именно выгружать список носителей — будь то mminfo у NetWorker, bconsole у Bareos, PowerShell-скрипт для Veeam или экспорт через консоль управления. Это, пожалуй, самая ценная часть документации — обычно именно вопрос «а как мне вообще вытащить список лент из моей системы» отнимает больше времени, чем сам импорт.
Версия LTO определяется автоматически по суффиксу в метке (L7, LTO-8, ULTRIUM6 и так далее). Перед подтверждением импорта можно отредактировать каждое поле, а сами сеты не обязаны быть уникальными по имени — один и тот же сет можно завести повторно. Есть и режим автоматического слияния: если 30% и более лент в файле совпадают с уже существующим сетом, импорт подцепится к нему, а не создаст дубликат.
Уведомления
Каждый день в 08:00 система проверяет просроченные и скоро истекающие сеты и отправляет HTML-письмо со ссылками на нужные страницы. Параметры SMTP, адрес получателя и количество дней до истечения, за которое предупреждать, настраиваются в .env. Там же доступны ручные эндпоинты для прогона проверки и отправки тестового письма — удобно для отладки на старте.
Итого
TapeRotation закрывает узкую, но знакомую многим админам задачу — не дать ленте потеряться между офсайт-хранилищем и библиотекой. Это не претендует на замену тяжёлым системам управления носителями уровня Commvault или NetBackup, но как самостоятельная учётная прослойка над любым бэкап-софтом — вполне рабочий и легковесный вариант, особенно если своих лент не одна сотня и нужен простой способ держать всё под контролем.
Исходники, инструкция по развёртыванию и подробности по импорту из конкретных систем — в репозитории: github.com/ElizarovEugene/TapeRotation.