Я недавно изменил checksum
свойство одной из моих файловых систем zfs без дубликатов в sha256
из on
(fletcher4), чтобы лучше поддерживать отправку дублированных пар репликации, как в этой команде zfs send -DR -I _starting-snaphot_ _ending-snapshot_
.
Однако в man-странице zfs есть что сказать о send -D
:
Этот флаг можно использовать независимо от свойства дедупликации набора данных, но производительность будет намного лучше, если файловая система будет использовать контрольную сумму с возможностью дедупликации (например, sha256).
На странице руководства zfs также говорится об этом checksum
свойство:
Изменение этого свойства влияет только на вновь записанные данные.
У меня нет желания доверять fletcher4. Компромисс заключается в том, что, в отличие от SHA256, fletcher4 не является псевдослучайной хэш-функцией, и поэтому нельзя доверять предотвращению конфликтов. Поэтому он подходит для дедупликации только в сочетании с опцией «verify», которая обнаруживает и разрешает конфликты хешей.
Как я могу обновить контрольные суммы файловой системы, желательно без отключения системы?
Чтобы изменить свойства (будь то сжатие, дедупликация или контрольная сумма) уже записанных данных, подход zfs заключается в том, чтобы пропустить данные через zfs send | zfs receive
последовательность. Очевидно, что для этого не нужно отключать систему, но вы воля необходимость
Поскольку вы уже используете дедупликацию для zpool, запустите zfs send | zfs receive
с местом назначения в том же пуле, что и источник, будет использовать только пространство, необходимое для вновь записанных блоков метаданных. Но будьте готовы к тому, что копирование займет некоторое время - дедупликация может быть ужасно медленной, особенно если у вас недостаточно оперативной памяти для хранения всей таблицы дедупликации в ОЗУ.
Очевидно, вам нужно будет прекратить все операции записи, чтобы создать окончательную, авторитетную копию набора данных, но вы можете минимизировать время простоя, сначала скопировав моментальный снимок, остановив все записи и выполнив добавочные zfs send -i | zfs receive
как последний шаг.