Назад | Перейти на главную страницу

Отправка ZFS и получение наборов данных ZFS без -RI инкрементальной синхронизации репликации

Есть ли способ отправить ТОЛЬКО последние снимки состояния в резервную систему zfs, даже если в ней есть предыдущие снимки? Когда я пытаюсь, я получаю ошибку:

«не может получить поток новой файловой системы: у места назначения есть снимки (например, mirrorpool / ETC / Stuff), необходимо уничтожить их, чтобы перезаписать»

И я уже использовал zfs send receive с -F.

Обычно принимающая система не получала кучу снимков, так как я обнаружил, что на ней закончилось место. Поэтому я удалил кучу ОЧЕНЬ старых снимков в получающей файловой системе zfs и оставил более свежие, но система zfs, которая отправляет zfs, имеет много еще более свежих снимков, которых нет в получателе zfs (резервная копия сервер). Но я НЕ хочу реплицировать ВСЕ отсутствующие снимки обратно в общий снимок. Я хотел бы просто отправить самые последние снимки пары снимков в приемник zfs.

В настоящее время у получателя zfs есть первая пара моментальных снимков, когда-либо созданных, а затем остальные были удалены, и остались только те, которые были последними, которые у него были примерно с октября 2018 года. Поэтому я бы не хотел отправлять каждый ежедневный снимок с октября 2018 года из Zfs Sender системе на приемник zfs и просто отправьте только пару последних снимков.

Или есть что-то вроде "rsync" типа zfs send | zfs получить, где я могу просто синхронизировать два набора данных без отправки снимков?

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

BoxA:pool/dataset@1,2,3,4,5,6,7,8,9,10

BoxB:pool/dataset@1,2,3

Вы хотите получить снимок 10 на BoxB, но не хотите иметь все промежуточные снимки (4,5,6,7,8,9).

Предполагая, что это так, это достаточно просто:

root@BoxA:~# zfs send -Ri pool/dataset@3 pool/dataset@10 | ssh root@BoxB zfs receive pool/dataset

После этого (обратите внимание, мы использовали нижний регистр -iне верхний регистр -I!), вы получите следующую ситуацию:

BoxA:pool/dataset@1,2,3,4,5,6,7,8,9,10

BoxB:pool/dataset@1,2,3,10

Обратите внимание: поскольку мы указываем -R для zfs send, мы на самом деле также будем отправлять (и получать) любые гипотетические дочерние наборы данных или zvols, например pool/dataset/child0, pool/dataset/child1, и так далее. (Также имейте в виду, что все становится немного странно, если у вас нет точно таких же снимков, доступных для всех дочерних наборов данных, когда вы используете -R с участием zfs send.)