У меня есть файловая система 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
(Это неприятно, так как оно также выйдет за пределы виртуальных машин гипервизора!)