Как создать репликацию пула ZFS-On-Linux (основная -> резервная копия)

  • В настоящее время я использую два одинаковых сервера с одинаковыми жесткими дисками.
  • Оба имеют пул zfs на sda и sdb (raidz) с именем /pool
  • оба работают на сервере Ubuntu Linux
  • Оба должны работать с набором инструментов vanilla (никаких необычных сторонних пакетов резервного копирования).

Сейчас я изо всех сил пытаюсь найти четкое пошаговое руководство по созданию автоматической резервной копии из основной в резервную копию.

Все, что я нашел, было либо старым (2010-2016), поэтому я не уверен, что они все еще актуальны и / или просто объясняют определенные детали, а не весь процесс, или они обсуждают дополнительные инструменты, оболочки, сценарии, а не сам процесс, использующий набор инструментов zfs по умолчанию.

  • Какова лучшая практика здесь?
  • Запускаю ли я для этого задание cron или zfs может выполнять резервное копирование автоматически?
  • Передача через SSH или Rsync?
  • ZFS отправить по трубопроводу в SSH / Rsync?
  • Я хочу запустить его в локальной сети, но на случай, если я подумаю об увеличении масштаба до удаленного местоположения, могу ли я сделать ту же самую лучшую практику по Интернету от одного выделенного поставщика серверного жилья к другому, или это нужен совершенно другой подход?

  • Скажем, я бы отключился и подключил оба сервера локально напрямую через выделенный интерфейс, не переходя по локальной сети, я был бы в порядке с использованием незашифрованной передачи данных без ssh, чтобы уменьшить накладные расходы на шифрование. Какова будет лучшая утилита для этого?

2 ответа

Простой способ: просто используйте syncoid и назовите выполненную работу

Сложнее / длиннее: вам нужно подключиться к пошаговой zfs send / recv. Поскольку он имеет несколько режимов работы, я не думаю, что он может быть широко освещен в кратком ответе. Скажем, вам нужен первый, полный zfs send | zfs recv затем следуют регулярные пошаговые. Я хотел бы указать вам документы Oracle для более подробной информации.

В обоих случаях обязательно поместите набор данных для синхронизации в правильный набор данных, а не используйте корневой набор данных (т. Е. Поместите ваши данные в pool/data а не прямо в pool).

Вот служба opensvc, выполняющая узел kvm с именем mywin, и она реплицирует (zfs send|zfs receive) каждый час данные набора данных zfs /mywin с основного узла srv1 на набор данных zfs /mywin на вторичном узле srv2:

root@srv1:~# om mywin print config
[DEFAULT]
env = PRD
nodes = srv1.acme.com srv2.acme.com
id = cd6e0bfa-4096-4249-899a-c8cd90a8979b

[sync#1]
src = data/{svcname}
dst = data/{svcname}
type = zfs
target = nodes
recursive = true
schedule = @60

[fs#1]
mnt_opt = rw,xattr,acl
mnt = /srv/{svcname}
dev = data/{svcname}
type = zfs

[container#0]
type = kvm
name = {svcname}
shared = true

адаптируйтесь к вашей среде и удалите определенное имя набора данных, и тогда репликация должна быть в порядке для всего пула.

Вы можете вручную запустить репликацию с помощью команды om mywin sync nodes

PS: убедитесь, что у вас есть взаимное корневое доверие ssh между двумя узлами

Другие вопросы по тегам