
Я ZFS счищаю раз в месяц, что занимает ~24 часа для 72 ТБ. Вот что я могу найти о том, как часто мне следует чистить:
- очень загруженные бассейны, раз в неделю
- не очень загруженные бассейны, раз в месяц
или запустите очистку, измерьте время и отрегулируйте его соответствующим образом.
А как насчет онлайн-дефрагментации?
Вопрос
Является ли онлайн-дефрагментация хорошей практикой, как и очистка? И если да, то как часто следует проводить дефрагментацию?
решение1
Это не то, что вам нужно делать так часто. В основном потому, что в ZFS нет понятия онлайн-дефрагментации. Это возможно только путем копирования данных пула в другой пул или перезаписи на новое хранилище. Вместо этого старайтесь поддерживать загрузку zpools ниже 70%.
решение2
Я знаю, что это старый вопрос, но я подумал, что мог бы добавить немного больше, если вы столкнетесь с этим сегодня, как и я.
ZFS не имеет встроенной опции для дефрагментации. Из-за того, как выделяются блоки, как ZFS копирует при записи, и моментальные снимки блокируют блоки, вы не можете по-настоящему дефрагментировать данные. Единственное решение, которое я знаю, — это создать пул эквивалентного размера, и ZFS будет отправлять/получать данные, уничтожать старый пул, создавать его и создавать заново.
Также стоит упомянуть, что вы используете скрабы наоборот. Данные, которые вы часто используете, постоянно проходят проверку контрольных сумм, в то время как данные в состоянии покоя гниют без проверки контрольных сумм блоков/указателей.
Обычно большинство людей используют не менее 1 месяца для интенсивно используемых наборов данных (даже меньше, если вы знаете, что 90%+ ваших данных будут использоваться, например, на веб-сервере).
Для данных, которые используются нечасто, хорошей практикой будет очистка дважды в месяц или раз в неделю (в зависимости от количества дисков, объема данных, возраста дисков и т. д.) YMMV