Как узнать, идентичны ли два снимка 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
Я мог бы: 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
есть ли способ определить, что снимки идентичны не только по названию, но и по блокам?
Есть собственность конкретно для этого варианта использования.
zfs get guid pool/fs@snap
предоставит вам GUID (глобально уникальный идентификатор) для снимка. Если GUID не совпадает между двумя снимками, один не реплицируется из другого, и они не будут работать в качестве основы для дальнейшей инкрементной репликации.
Это также как синкоид определяет общие моментальные снимки для определения команд репликации.
(Отказ от ответственности: я являюсь первоначальным разработчиком и главным сопровождающим проекта Sanoid, которому принадлежит инструмент репликации Syncoid.)