У меня есть пул, который был создан в 2011 году с использованием lzjb compression, и только через пару лет обновление позволило мне установить сжатие lz4. По моим оценкам, по крайней мере 20% содержимого (по пространству) в массиве было создано до 2013 года, что означает, что он все еще сжат с использованием lzjb.
Я могу придумать пару вариантов, чтобы исправить это и восстановить (некоторое) пространство:
Резервное копирование и восстановление в новый пул. Не очень практично, так как у меня недостаточно избыточного хранилища для хранения временной копии. Восстановление также потребует, чтобы пул был отключен в течение нескольких часов.
Напишите сценарий для повторного копирования любого файла с отметкой времени старше 2013 года. Потенциально рискованно, особенно если он задыхается от пробелов или других специальных символов и в результате искажает оригинальное имя.
Есть ли какой-нибудь способ заставить ZFS повторно сжимать любые устаревшие блоки, используя текущий алгоритм сжатия? Вроде как скраб, но лечит компрессию.
Смежный вопрос: есть ли способ увидеть использование каждого типа алгоритма сжатия? zdb просто показывает общую статистику сжатия, а не разбивает ее на отдельные алгоритмы.
export LC_ALL=Cв начало сценария, и все не-ASCII специальные символы в именах файлов останутся без изменений. Сохранение пробелов и тире нетронутыми сложнее, использовать двойные кавычки и --, например cp -- "$SOURCE" "$TARGET".
--) "хитрее". Это так же важно, как избегать внедрения SQL, например.