Есть ли способ определить, являются ли два снимка ZFS с одинаковыми именами на самом деле идентичными?

Как определить, являются ли два моментальных снимка ZFS идентичными или просто имеют одинаковые имена?

Предположим, у меня есть два компьютера с именами host-a и host-b. Также предположим, что host-a имеет набор данных ZFS с именем /tank/mydataset.

На хосте-a я могу: zfs snapshot tank/mydataset@mysnapshot', а затем я могу 'zfs send tank/mydataset@mysnapshot | ssh host-b zfs receive tank/mydataset

Это означает, что @mysnapshot будет идентичным как на host-a, так и на host-b.

С другой стороны, на host-a я могу: zfs snapshot tank/mydataset@mysnapshot, затем ssh host-b zfs snapshot tank/mydataset@mysnapshot.

В этом втором случае два моментальных снимка имеют одинаковые имена, но набор данных может быть совершенно разным.

При просмотре свойств tank/mydataset@mysnapshot не указано никакого очевидного способа определить, идентичны ли снимки - например, GUID или хэш.

Кроме попытки сделать еще один снимок host-a tank/mydataset@mysnapshot2 и попытаться отправить на host-b через zfs send -... i @mysnapshot tank/mydataset@mysnapshot2 | ssh host-b zfs receive tank/mydataset есть ли способ определить, что снимки идентичны не только по имени, но и по блокам?

1
задан 14 January 2020 в 21:52
1 ответ

Для этого варианта использования есть свойство , специально .

zfs get guid pool / fs @ snap предоставит вам GUID (глобально уникальный идентификатор) для снимка. Если GUID не совпадает между двумя снимками, один не реплицируется из другого, и они не будут работать в качестве основы для дальнейшей инкрементной репликации.

Таким же образом синкоид идентифицирует общие моментальные снимки для определения команд репликации.

(Отказ от ответственности: я являюсь первоначальным разработчиком и главным сопровождающим проекта Sanoid, которому принадлежит инструмент репликации Syncoid.)

3
ответ дан 16 January 2020 в 23:34

Теги

Похожие вопросы