
Как определить, идентичны ли два снимка 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-a
I could: zfs snapshot tank/mydataset@mysnapshot
следует ssh host-b zfs snapshot tank/mydataset@mysnapshot
.
Во втором случае два снимка имеют одинаковые имена, но набор данных может существенно отличаться.
При просмотре свойств tank/mydataset@mysnapshot
не указано ни одного очевидного способа определения идентичности снимков, например GUID или хэша.
Помимо попытки сделать еще один снимок host-a
tank/mydataset@mysnapshot2
и отправить его на host-b
via, 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.)