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

zfs: scrub vs resilver (эквивалентны ли они?)

Резильвер так же хорош, как скраб? Если нет, то почему?

Пример использования: во время проверки контрольной суммы возникают ошибки. Вместо того, чтобы продолжать чистку, остановите ее, замените диск и восстановитель. Выполнил ли резильвер часть / всю проверку, которую мог бы сделать скраб?

Скраб считывает все данные в zpool и сверяет его с информацией о четности.

Resilver повторно копирует все данные на одном устройстве из данных и информации о четности на других устройствах в vdev: для зеркала он просто копирует данные с другого устройства в зеркале, с raidz устройство считывает данные и четность с оставшихся дисков для восстановления недостающих данных.

Это не одно и то же, и в моей интерпретации они не эквивалентны. Если resilver обнаруживает ошибку при попытке восстановить копию данных, это вполне может быть постоянной ошибкой (поскольку данные больше не могут быть правильно реконструированы). И наоборот, если очистка обнаруживает повреждение, его обычно можно исправить на основе оставшихся данных и четности (и это иногда происходит тихо и при нормальном использовании).

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

Операция resilver считывает минимальный объем данных, необходимый для восстановления избыточности, на заменяющий диск. Операция очистки будет читать ВСЕ данные, как первичные, так и данные четности.

Таким образом, если вы повторно обновляете зеркало или raidz1, они эквивалентны, поскольку resilver должен прочитать все сохранившиеся данные. Если вы повторно обновляете 3-стороннее зеркало, raidz2 или raidz3, resilver не будет читать все оставшиеся данные, поэтому в этих случаях scrub и resilver не эквивалентны.