ZFS:: bitrot (в контрольной сумме)
Насколько я знаю, zfs использует контрольные суммы для защиты от потери данных, вызванной битротом.
Но что произойдет, если битрот влияет на данные контрольной суммы. Тогда zfs считает, что данные повреждены или контрольная сумма повреждена?
Thx 4 любой ответ,
tbol
2 ответа
Я нашел правильное объяснение:
Пул хранения ZFS - это просто дерево блоков. ZFS обеспечивает изоляцию ошибок между данными и контрольной суммой, сохраняя контрольную сумму каждого блока в указателе своего родительского блока, а не в самом блоке. Каждый блок в дереве содержит контрольные суммы для всех его дочерних элементов, поэтому весь пул самопроверка. [Uberblock (корень дерева) является особым случаем, потому что у него нет родителя; больше о том, как мы справляемся с этим в другом посте.]
Когда данные и контрольная сумма расходятся, ZFS знает, что контрольной сумме можно доверять, поскольку сама контрольная сумма является частью какого-то другого блока, который на один уровень выше в дереве, и этот блок уже был проверен.
Есть только одна точка отказа: если корневой узел дерева испорчен, но для этого должно быть решение
Прочитайте @ https://blogs.oracle.com/bonwick/entry/zfs_end_to_end_data
ZFS обеспечивает изоляцию ошибок между данными и контрольной суммой, сохраняя контрольную сумму каждого блока в указателе своего родительского блока, а не в самом блоке. Каждый блок в дереве содержит контрольные суммы для всех его дочерних элементов, поэтому весь пул самопроверка.
Сквозная целостность данных ZFS
Изменить: потому что вы спросили о родителе:
Замечание 1: ZFS обнаруживает все [на диске] повреждения из-за использования контрольных сумм. В наших экспериментах по внедрению сбоев для всех метаданных и данных мы обнаружили, что неверные данные никогда не возвращались пользователю, потому что ZFS была в состоянии обнаружить все повреждения из-за использования контрольных сумм в указателях блоков. Родительские контрольные суммы используются в ZFS для проверки целостности всех блоков на диске, к которым осуществляется доступ. Единственным исключением являются uberblocks, которые не имеют указателей родительских блоков. Повреждения в uberblock обнаруживаются с помощью контрольных сумм внутри самого uberblock.
Сквозная целостность данных для файловых систем: пример ZFS
Вы можете проверить это сами. Вставьте случайный блок в середину устройства ZFS и посмотрите, поддерживает ли он целостность.
Обратите внимание, что в следующем разделе этой статьи они показывают, что повреждения памяти остались незамеченными.