Назад | Перейти на главную страницу

Запуск однократного сканирования / повторной дедупликации ZFS

У меня есть файловая система ZFS, которая работает некоторое время, и недавно у меня была возможность обновить ее (наконец-то!) До последней версии ZFS. Наши данные не кричат ​​о дедупликации, но я твердо уверен, основываясь на небольших тестах, что мы могли бы получить обратно от 5 до 10% нашего пространства бесплатно, используя их. Я включил дедупликацию в файловой системе, и новые файлы медленно дедуплицируются, но большая часть (95% +) наших данных уже существует в файловой системе.

Есть ли способ запустить сканирование существующих данных, если не считать перемещения данных из пула с последующим повторным копированием обратно? Он не обязательно должен быть асинхронным или живым.

(И, к вашему сведению, в пуле недостаточно места, чтобы скопировать всю файловую систему в другую, а затем просто переключить монтирование.)

Нет, вы не можете вывести существующие данные без их копирования. Помните, вы только выиграете от дедупликации, если вся дедуп-таблица поместится в RAM / L2ARC.

Вы можете оценить преимущества дедупликации с помощью zds -S poolname, даже не включая дедупликацию:

pfexec zdb -S rpool Гистограмма моделирования ДДТ:

bucket              allocated                       referenced          
______   ______________________________   ______________________________
refcnt   blocks   LSIZE   PSIZE   DSIZE   blocks   LSIZE   PSIZE   DSIZE
------   ------   -----   -----   -----   ------   -----   -----   -----
     1     313K   13.4G   13.4G   13.4G     313K   13.4G   13.4G   13.4G
     2     111K   5.27G   5.27G   5.27G     233K   10.7G   10.7G   10.7G
     4    5.15K   96.2M   96.2M   96.2M    22.4K    403M    403M    403M
     8    1.03K   12.2M   12.2M   12.2M    10.3K    111M    111M    111M
    16      384   16.3M   16.3M   16.3M    8.10K    350M    350M    350M
    32      157   6.17M   6.17M   6.17M    6.47K    250M    250M    250M
    64       83   6.52M   6.52M   6.52M    6.37K    511M    511M    511M
   128       17    395K    395K    395K    2.61K   62.5M   62.5M   62.5M
   256        2      5K      5K      5K      802   2.24M   2.24M   2.24M
    2K        1     512     512     512    2.66K   1.33M   1.33M   1.33M
    8K        1    128K    128K    128K    8.21K   1.03G   1.03G   1.03G
 Total     431K   18.8G   18.8G   18.8G     613K   26.8G   26.8G   26.8G

dedup = 1.43, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.43

Помните, что текущая реализация дедупликации (сборка 134) требует оперативной памяти и имеет нерешенную проблему при удалении больших объемов данных, более или менее блокируя пул ZFS на значительный период времени. http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=a24a5761748eedbb50cd39d3530e?bug_id=6924390

Что касается дедупликации существующих данных, копирование / перемещение файлов по одному, оставаясь в одном пуле, должно помочь.

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

Ожидание появления дедупликации в ZFS FreeNAS ... Когда это произойдет, требования к оперативной памяти могут стать более разумными. Надеюсь, это также устранит или устранит проблему с ZFS ARC, которая до сих пор сохраняется за более трех лет!

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6522017

(Это неприятно, так как оно также выйдет за пределы виртуальных машин гипервизора!)