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

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

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

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

На host-a я мог бы:zfs snapshot tank/mydataset@mysnapshot' and then I could 'zfs send tank/mydataset@mysnapshot | ssh host-b zfs receive tank/mydataset

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

С другой стороны, на host-aI could: zfs snapshot tank/mydataset@mysnapshotследует ssh host-b zfs snapshot tank/mydataset@mysnapshot.

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

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

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

решение1

Есть недвижимостьконкретнодля этого варианта использования.

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

Это также каксиноидныйопределяет общие снимки для определения команд репликации.

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

Связанный контент