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

ZFS :: bitrot (в контрольной сумме)

Насколько мне известно, zfs использует контрольные суммы для защиты от потери данных, вызванной bitrot.

Но что будет, если битрота повлияет на данные контрольной суммы. Тогда, думает ли zfs, что данные повреждены или контрольная сумма повреждена?

Спасибо за любой ответ,

тбол

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

Сквозная целостность данных ZFS

Изменить: потому что вы спросили о родителе:

Наблюдение 1: ZFS обнаруживает все повреждения [на диске] из-за использования контрольных сумм. В наших экспериментах по внедрению ошибок для всех метаданных и данных мы обнаружили, что неверные данные никогда не возвращались пользователю, потому что ZFS смогла обнаружить все повреждения из-за использования контрольных сумм в указателях блоков. Родительские контрольные суммы используются в ZFS для проверки целостности всех доступных на диске блоков. Единственное исключение - уберблоки, у которых нет указателей на родительские блоки. Повреждения уберблока обнаруживаются с помощью контрольных сумм внутри самого уберблока.

Сквозная целостность данных для файловых систем: пример использования ZFS

Вы можете проверить это сами. Вставьте случайный блок в середину устройства ZFS и посмотрите, сохраняет ли он целостность.

Обратите внимание, что в следующем разделе этой статьи они показывают, что повреждения памяти остались незамеченными.

Я нашел правильное объяснение:

Пул хранения ZFS на самом деле представляет собой просто дерево блоков. ZFS обеспечивает изоляцию сбоев между данными и контрольной суммой, сохраняя контрольную сумму каждого блока в указателе родительского блока, а не в самом блоке. Каждый блок в дереве содержит контрольные суммы для всех своих дочерних элементов, поэтому весь пул проходит самопроверку. [Уберблок (корень дерева) - особый случай, потому что у него нет родителя; подробнее о том, как мы справимся с этим, в другом посте.]

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

Есть только одна точка отказа: если корневой узел в дереве поврежден, но для этого должно быть решение

Читать @ https://blogs.oracle.com/bonwick/entry/zfs_end_to_end_data