Как часто следует дефрагментировать пулы ZFS?

Как часто следует дефрагментировать пулы ZFS?

Я ZFS счищаю раз в месяц, что занимает ~24 часа для 72 ТБ. Вот что я могу найти о том, как часто мне следует чистить:

  • очень загруженные бассейны, раз в неделю
  • не очень загруженные бассейны, раз в месяц

или запустите очистку, измерьте время и отрегулируйте его соответствующим образом.

А как насчет онлайн-дефрагментации?

Вопрос

Является ли онлайн-дефрагментация хорошей практикой, как и очистка? И если да, то как часто следует проводить дефрагментацию?

решение1

Это не то, что вам нужно делать так часто. В основном потому, что в ZFS нет понятия онлайн-дефрагментации. Это возможно только путем копирования данных пула в другой пул или перезаписи на новое хранилище. Вместо этого старайтесь поддерживать загрузку zpools ниже 70%.

решение2

Я знаю, что это старый вопрос, но я подумал, что мог бы добавить немного больше, если вы столкнетесь с этим сегодня, как и я.

ZFS не имеет встроенной опции для дефрагментации. Из-за того, как выделяются блоки, как ZFS копирует при записи, и моментальные снимки блокируют блоки, вы не можете по-настоящему дефрагментировать данные. Единственное решение, которое я знаю, — это создать пул эквивалентного размера, и ZFS будет отправлять/получать данные, уничтожать старый пул, создавать его и создавать заново.

Также стоит упомянуть, что вы используете скрабы наоборот. Данные, которые вы часто используете, постоянно проходят проверку контрольных сумм, в то время как данные в состоянии покоя гниют без проверки контрольных сумм блоков/указателей.

Обычно большинство людей используют не менее 1 месяца для интенсивно используемых наборов данных (даже меньше, если вы знаете, что 90%+ ваших данных будут использоваться, например, на веб-сервере).

Для данных, которые используются нечасто, хорошей практикой будет очистка дважды в месяц или раз в неделю (в зависимости от количества дисков, объема данных, возраста дисков и т. д.) YMMV

Связанный контент