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

Имеет ли ZFS «общую контрольную сумму», аналогичную идентификаторам коммитов Git?

Git создает идентификатор фиксации путем хеширования различных компонентов таким образом, что мы, по сути, получаем идентификатор для всей истории проекта.

Насколько я понимаю, ZFS хеширует все (данные / метаданные / структуру файловой системы), что предположительно приводит к единственному "высший уровень"хэш в корне файловой системы.

Мне было интересно, есть ли способ получить такой хэш или идентификатор из файловой системы ZFS или снимка.

Это потенциально может быть использовано для быстрого и надежного подтверждения с достаточной уверенностью того, что "все данные в наборе данных-x соответствуют всем данным в наборе данных-y".

У меня нет полного представления о внутреннем устройстве zfs send и zfs recv, но я предполагаю, что они имеют дело с такими концепциями, гарантируя, что и отправляющая, и получающая файловые системы имеют общую отправную точку.


Изменить: у меня есть резервные копии за пределами сайта, которые автоматизированы с использованием синкоид... Если бы я посмотрел на соответствующий снимок каждой из соответствующих файловых систем в n-пулах, я бы ожидал увидеть тот же самый идентификатор.

Также может быть полезно увидеть, есть ли какие-либо изменения между снимками набора данных, хотя я подозреваю, что атрибуты снимка (имя, дата и т. Д.) Могут повлиять на этот идентификатор, поэтому было бы неплохо посмотреть "на один уровень ниже"для этого.

Насколько я понимаю, все ссылки на другие блоки в ZFS содержат контрольную сумму, которую должен иметь другой блок, а эти блоки, в свою очередь, содержат указатели с контрольными суммами (в конечном итоге указывающие на блоки данных и их контрольные суммы). В основе всего этого лежит контрольная сумма уберблока, которая затем неявно покрывает все данные в пуле.

Но эта контрольная сумма включает в себя фактические указатели блоков и вещи, которые связаны с компоновкой физической файловой системы, поэтому вы не можете использовать ее для проверки только данных - если вы, например, zfs отправляет / возвращает файловые системы, в результате вы получите совершенно другую контрольную сумму.

Вы можете посмотреть zfs diff для этого случая.

Не могли бы вы подробнее рассказать о сценарии использования. Будут ли это файловые системы в одном пуле данных?