Представь, что твоя основная система хранения TrueNAS вышла из строя. Жесткие диски, контроллер, даже целый сервер — всё может сломаться. Восстановление данных из резервной копии на медленных носителях займет дни, а бизнес простаивает. Решение? TrueNAS Replication — встроенный механизм создания почти мгновенных, инкрементальных копий твоих данных на другом TrueNAS сервере, готовых к немедленному запуску. Давай разберем, как это работает и как настроить отказоустойчивую систему за час.
Что такое TrueNAS Replication и как она работает?
В основе технологии лежит мощь файловой системы ZFS. Replication — это не просто копирование файлов. Это передача ZFS снапшотов (снимков состояния) с одного пула (источник) на другой пул (приемник). Процесс инкрементальный: после первой полной синхронизации передаются только изменения с момента последнего снапшота. Это экономит время, место на диске и пропускную способность сети.
- Источник (Source): Основной сервер TrueNAS с данными, которые нужно защитить.
- Приемник (Destination): Вторичный сервер TrueNAS (локальный или удаленный), куда отправляются снапшоты.
- ZFS Snapshot: Моментальный снимок состояния набора данных (Dataset) или целого пула в конкретный момент времени.
- Периодическая задача (Periodic Snapshot Task): Автоматическое создание снапшотов по расписанию.
- Задача репликации (Replication Task): Задача, которая забирает свежие снапшоты с источника и отправляет их на приемник.
Пошаговая настройка TrueNAS Replication
Представь, что у тебя есть два сервера: truenas-primary (источник) и truenas-backup (приемник). Мы настроим репликацию набора данных tank/projects.
Шаг 1: Подготовка и настройка SSH ключей
Для безопасного соединения между серверами используется SSH с ключами. Всё настраивается через веб-интерфейс.
# На источнике (truenas-primary) создаем пару ключей, если их нет.
# В веб-интерфейсе: Система -> Службы SSH -> Ключи -> Создать ключ.
# Или через консоль:
ssh-keygen -t ed25519 -f /root/.ssh/replication_key -N ""
# Копируем ОТКРЫТЫЙ ключ (replication_key.pub) на сервер-приемник.
# На приемнике (truenas-backup) добавляем его в авторизованные ключи.
# В веб-интерфейсе: Система -> Службы SSH -> Ключи -> Добавить ключ из файла.
# Или через консоль:
echo "СОДЕРЖИМОЕ_КЛЮЧА_PUB" >> /root/.ssh/authorized_keys
# На источнике проверяем соединение:
ssh -i /root/.ssh/replication_key root@truenas-backup
Шаг 2: Создание периодических снапшотов на источнике
Репликация работает со снапшотами. Нужно создать задачу, которая будет их автоматически генерировать.
- На источнике перейди: Задачи -> Периодические снапшоты.
- Нажми Добавить.
- Выбери пул/набор данных:
tank/projects. - Настрой расписание (например, каждый день в 22:00).
- Укажи срок жизни снапшотов (например, 2 недели).
- Сохрани задачу. Снапшоты начнут создаваться по расписанию.
Шаг 3: Настройка задачи репликации
Это главный этап. Задача будет находить новые снапшоты и отправлять их на приемник.
# Пример команды, которую генерирует веб-интерфейс (для понимания):
# zfs send -R -I tank/projects@auto-2023-10-01_22-00 tank/projects@auto-2023-10-02_22-00 | \
# ssh -i /root/.ssh/replication_key root@truenas-backup zfs recv -Fduv tank/replicated/projects
- На источнике перейди: Задачи -> Репликация -> Добавить.
- Источник:
- Выбери расположение: Локальный.
- Укажи путь к набору данных:
tank/projects. - Выбери снапшоты от задачи, созданной на шаге 2.
- Назначение:
- Выбери расположение: По SSH.
- Укажи хост приемника:
truenas-backup(или IP). - Порт SSH:
22. - Путь к набору данных на приемнике:
tank/replicated/projects(пул и путь создадутся автоматически). - Укажи путь к закрытому SSH ключу, созданному на шаге 1.
- Расписание: Настрой запуск задачи (например, ежедневно, через час после создания снапшотов).
- Политики репликации:
- Рекурсивно: Включи, чтобы реплицировать все вложенные наборы данных.
- Удалить снапшоты на стороне назначения: Включи, чтобы синхронизировать политики удаления.
- Компрессия: LZ4 (рекомендуется для экономии трафика).
- Сохрани задачу и запусти её вручную для первой полной синхронизации.
Шаг 4: Мониторинг и проверка
После настройки важно убедиться, что всё работает.
- Журнал задач: В разделе Задачи -> Репликация нажми на задачу и посмотри журнал выполнения. Ищи ошибки SSH или ZFS.
- Снапшоты на приемнике: На сервере
truenas-backupперейди в Хранилище -> Снапшоты и убедись, что там появились снапшоты с префиксомtank/replicated/projects. - Команда в консоли приемника:
# Проверяем список полученных снапшотов
zfs list -t snapshot -r tank/replicated/projects
Типы репликации и стратегии
TrueNAS предлагает гибкие сценарии. Выбери подходящий под свои задачи.
| Тип / Сценарий | Источник -> Приемник | Использование | Плюсы |
|---|---|---|---|
| Push-репликация | Локальный -> Удаленный (по SSH) | Основной backup в другой ЦОД или облако. | Простая настройка, контроль с источника. |
| Pull-репликация | Удаленный -> Локальный | Консолидация данных с филиалов в центр. | Безопасность, приемник инициирует соединение. |
| Локальная репликация | Локальный -> Локальный (другой пул) | Быстрое восстановление на том же железе. | Высокая скорость, не нужна сеть. |
| Каскадная репликация | Источник -> Реплика1 -> Реплика2 | Трехуровневая стратегия 3-2-1. | Максимальная отказоустойчивость. |
Восстановление данных из реплики (Disaster Recovery)
Это момент истины. Как поднять данные на приемнике, если источник «умер»?
- Промоутинг набора данных: На приемнике зайди в Хранилище -> Наборы данных, найди реплицированный набор (например,
tank/replicated/projects). - Раскрой меню (три точки) и выбери Промоутировать набор данных. Это отсоединит его от источника и сделает независимым, доступным для записи.
- Настройка общего доступа: Теперь можешь настроить SMB/NFS/AFP шары прямо на этом наборе данных, как на основном.
- Откат к снапшоту: Если нужно восстановить старую версию, в Хранилище -> Снапшоты выбери нужный снапшот и нажми Откатить. Внимание! Это удалит все изменения, сделанные после этого снапшота.
- Клонирование: Более безопасный вариант — создать клон из снапшота и работать с ним.
# Через консоль на приемнике можно создать клон из снапшота для тестирования:
zfs clone tank/replicated/projects@auto-2023-10-01_22-00 tank/test_recovery
Типичные проблемы и их решение
- «Permission denied (publickey)»: Ошибка SSH. Проверь путь к приватному ключу на источнике и наличие публичного ключа в
/root/.ssh/authorized_keysна приемнике. Убедись, что у ключа правильные права (chmod 600). - «dataset does not exist»: Набор данных на приемнике не существует. В настройках задачи репликации включи опцию «Создать родительские наборы данных».
- Репликация «залипает» или работает медленно: Проверь сетевую задержку и пропускную способность. Включи компрессию LZ4. Убедись, что на дисках источника или приемника нет ошибок (SMART).
- Не хватает места на приемнике: ZFS требует свободного места для метаданных. Оставь минимум 20% свободного места в пуле приемника.
Вопросы и ответы (FAQ)
Можно ли реплицировать не весь пул, а только выбранные папки?
Да, именно для этого и существуют ZFS datasets (наборы данных). Создавай отдельные наборы данных для разных типов данных (например, tank/documents, tank/vmware) и настраивай репликацию для каждого независимо.
Как часто нужно создавать снапшоты и запускать репликацию?
Зависит от критичности данных и RPO (целевой точки восстановления). Для офисных файлов — ежедневно. Для баз данных — каждые 15-30 минут. Помни, что частые снапшоты почти не нагружают систему, но увеличивают нагрузку на сеть при репликации.
Чем репликация в TrueNAS лучше rsync или robocopy?
ZFS репликация работает на уровне блоков, а не файлов. Это значит:
1. Атомарность: Передается целостный снимок системы, а не набор измененных файлов.
2. Эффективность: Передаются только измененные блоки, даже внутри больших файлов.
3. Скорость восстановления: На приемнике данные сразу готовы к работе, не требуется долгого процесса «распаковки».
Можно ли использовать репликацию для миграции на новый сервер?
Абсолютно! Это один из лучших способов. Настрой репликацию со старого сервера на новый, дождись полной синхронизации, затем переключи клиентов на новый сервер (изменив IP или имя). Это обеспечит минимальный простой.
Шифруется ли трафик при репликации?
Да, если используется транспорт SSH (рекомендуется). Весь трафик между серверами шифруется по протоколу SSH. При локальной репликации шифрование не применяется.
Заключение
TrueNAS Replication — это не просто функция бэкапа, это готовый инструмент для построения отказоустойчивой ИТ-инфраструктуры. Потратив несколько часов на настройку SSH ключей, периодических снапшотов и задач репликации, ты получаешь систему, которая автоматически и эффективно защищает твои данные от потери.
Главное — начать с малого: выбери один не самый критичный набор данных, протестируй полный цикл от настройки до восстановления. Убедись, что ты понимаешь, как промоутить реплику в случае аварии. После этого масштабируй решение на все важные данные.
Помни, что идеальной защиты не существует. Репликация спасает от сбоя железа или логических ошибок в данных, но не от ransomware, который может зашифровать данные и на источнике, и (с задержкой) на приемнике. Поэтому используй репликацию как часть общей стратегии 3-2-1: три копии данных, на двух разных типах носителей, одна из которых хранится за пределами площадки.