ZoL (ZFS в Linux) Resilvering Priority

ИЗМЕНЕНО :После того, как вы сообщили нам, что имеете дело с ~300 файлами, ответы необходимо изменить. В отредактированном ответе ниже замените число 300 точным числом верхней границы -для существующих до -файлов.

for file in mmm.{300..1} ; do mv "${file}" "${file%.*}.$((30+${file#*.}))" ; done

Этот ответ очень эффективен, потому что он делает все внутри bash, используя bashсобственные возможности, и не требует внешних программ или запуска подпроцессов -.

  1. ${file%.*}возвращает префикс имени файла перед точкой.

  2. `$ ((... ))— идиома математических операций bash.

  3. ${file#*.}возвращает суффикс имени файла после точки. Если вы обеспокоены тем, что у вас могут быть имена файлов с более чем одной встроенной точкой, замените #на ##.

См. man bashдля получения дополнительной информации и многих других очень интересных встроенных функций.

1
07.02.2020, 14:40
1 ответ

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

Бьюсь об заклад, в вашем случае все проще, так как в половине случаев данные вообще отсутствуют (или, по крайней мере, не обнаружены)

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

0
28.04.2021, 23:24

Теги

Похожие вопросы