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