Почему ресивер ZFS сканирует весь пул?

У меня есть zpool, где я только что заменил неисправный диск и начал перенос на новый диск.

Я не понимаю, почему zpool status говорит, что хочет отсканировать 129TB, когда размер vdev составляет ~30TB. Когда я смотрю на iostat -nx 1 затем я вижу, что 5 дисков в vdev получают тяжелые чтения, а новый диск - тяжелые записи. Таким образом, zfs не сканирует все данные, как говорится.

# zpool status tank3 |head
  pool: tank3
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Thu Apr 30 09:59:15 2015
    61.2T scanned out of 129T at 3.03G/s, 6h23m to go
    946G resilvered, 47.34% done

Вопрос

Я бы сказал, что каждый vdev независим от друг друга, поэтому для восстановления одного из них не требуется сканирование других. Почему zfs сканирует все используемое дисковое пространство при переносе?

2 ответа

Решение

Стабилизация - это операция vdev; поскольку вы подразумевали, что только устройства хранения в этом vdev используются для восстановления нового устройства. Я не уверен, почему он указывает полный размер zpool, но я подозреваю, что разработчики позаимствовали код из функций очистки или что он просто указывает полный размер zpool, так как это будет наихудший сценарий.

Восстановление (и очистка) включает в себя обход всего B-дерева пула и повторное серебрение блоков, которые были бы на недостающем диске.

Без обхода каждого отдельного txg в дереве, он не может знать, какие блоки были бы на отсутствующем диске, поэтому он сканирует всю вселенную метаданных для пула.

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

Другие вопросы по тегам