ZFS: повторне стиснення існуючих файлів після зміни алгоритму стиснення


14

У мене є пул, який було створено в 2011 році lzjb compression, і, лише через пару років, оновлення дозволило мені встановити компресію lz4. Я вважаю, що принаймні 20% вмісту (за простором) в масиві було створено до 2013 року, а це означає, що він все ще стискається з використанням lzjb.

Я можу придумати кілька варіантів, щоб виправити це та повернути (деякий) простір:

  1. Створіть резервні копії та відновіть новий басейн. Насправді не практично, оскільки у мене немає достатнього резервного місця для зберігання тимчасової копії. Відновлення також вимагатиме відключення пулу протягом декількох годин.

  2. Напишіть сценарій, щоб повторно скопіювати будь-який файл із часовою позначкою, старшою за 2013 рік. Потенційно ризиковано, особливо якщо він задихається пробілами чи іншими спеціальними символами та закінчується керуванням оригінальним іменем.

Чи є спосіб змусити ZFS повторно стискати застарілі блоки за допомогою поточного алгоритму стиснення? Наче схожий на скраб, але загоює стиснення.

Питання, пов'язане з цим: чи є спосіб побачити використання кожного типу алгоритму стиснення? zdb просто показує загальну статистику стиснення, а не розбиває їх на окремі алгоритми.


2
Я впевнений, що ви назвали лише два варіанти. Дивіться також обговорення в номері 3013, чому ця функціональність не існує, і, можливо, ви не хочете цього робити взагалі.
Майкл Хемптон

2
lz4, мабуть, максимум на 10% кращий при стисканні, ніж lzjb. Якщо 20% ваших даних можна стиснути на 10% краще, ви отримаєте щонайменше на 2% більше вільного місця. Чи варто того?
труба

1
Якщо ви пишете скрипт оболонки, щоб зробити копію, додайте export LC_ALL=Cдо початку сценарію, і всі спеціальні символи, що не належать до ASCII, у назви файлів збережуться неушкодженими. Залишаючи пробіл та тире недоторканим, використовуйте подвійні лапки та --, наприклад cp -- "$SOURCE" "$TARGET".
пт

4
@pipe Space - одна (дуже) мала перевага, але мене більше цікавить швидкість декомпресії. З сайту "FreeBSD zpool-особливості": "Зазвичай стиснення lz4 приблизно на 50% швидше для даних, що стискаються, і на 200% швидше для даних, що не стискаються, ніж lzjb. Це також приблизно на 80% швидше при декомпресії, при цьому дає приблизно 10% кращий коефіцієнт стиснення. "
rowan194

@pts Я б не називав дотримання основних правил програмування оболонок (подвійні лапки навколо змінних або використання --) "складнішим". Це так само важливо, як уникати, наприклад, ін'єкції SQL.
glglgl

Відповіді:


14

Вам доведеться повторно копіювати дані (повні або часткові) або zfs надсилати / отримувати дані в новий пул або файлову систему ZFS.

Інших варіантів немає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.