Btrfs і ZSTD: практичний гід із прозорого стиснення у Fedora Linux

Btrfs підтримує прозоре стиснення: файлова система стискає дані перед записом на диск і розпаковує їх під час читання. На сучасних CPU це часто вигідніше, ніж записувати більший обсяг нестиснутих даних на SSD.

Цей гайд базується на практичному налаштуванні Dell Latitude 5520 з Intel Core i7-1185G7 і Samsung 980 під Fedora Linux. У конкретному сценарії вдалося звільнити близько 52 ГБ, але результат залежить від типу файлів і стану диска.

Як працює прозоре стиснення

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

1. Налаштуйте автоматичне монтування

Відкрийте /etc/fstab:

sudo nano /etc/fstab

Додайте compress=zstd:1 і, за потреби, noatime до Btrfs-монтувань root та home:

# /
UUID=your-uuid / btrfs subvol=root,compress=zstd:1,noatime 0 0

# /home
UUID=your-uuid /home btrfs subvol=home,compress=zstd:1,noatime 0 0
  • zstd:1 — швидкий рівень стиснення з невеликим навантаженням на CPU.
  • noatime вимикає оновлення часу останнього доступу та може зменшити зайві записи. Переконайтеся, що це не суперечить вимогам ваших програм.
  • Перед редагуванням перевірте фактичні UUID і назви subvolume командою findmnt.

2. Застосуйте зміни

sudo systemctl daemon-reload
sudo mount -o remount /
sudo mount -o remount /home

Перевірте параметри:

findmnt -no TARGET,FSTYPE,OPTIONS / /home

3. Стисніть уже наявні дані

Параметр монтування впливає переважно на нові записи. Для переписування вже наявних файлів зі стисненням використайте дефрагментацію:

sudo btrfs filesystem defragment -r -v -czstd /
sudo btrfs filesystem defragment -r -v -czstd /home

Операція може тривати довго, створювати додаткове навантаження на SSD і впливати на snapshots. Перед великим запуском зробіть резервну копію та перевірте вільне місце.

Плюси та мінуси

ХарактеристикаЩо очікувати
Економія місцяТекст, код і логи часто стискаються значно краще за медіа та вже стиснуті архіви.
ШвидкістьНа швидкому CPU і повільнішому сховищі читання та запис іноді прискорюються.
Записи на SSDМенший фізичний обсяг даних може зменшити write amplification, але ефект залежить від SSD і навантаження.
CPU overheadСтиснення споживає CPU; для більшості сучасних систем рівень 1 є хорошим компромісом.
НагрівМасова дефрагментація може нагріти SSD і процесор — контролюйте температури.

Профілі для різного обладнання

Старі системи

Для Intel Skylake, старіших AMD або систем із SATA SSD доцільно почати із zstd:1 і перевірити реальний ефект.

Сучасні ноутбуки

Intel Tiger Lake+, Ryzen 5000+ та подібні CPU добре справляються зі стисненням. Під час обробки десятків або сотень гігабайтів стежте за температурою SSD через smartctl.

Потужні десктопи

Можна протестувати zstd:3, якщо важливіше заощадити місце. Не робіть висновок лише з теорії — порівняйте час запуску, копіювання та реальне співвідношення стиснення.

Перевірка результату через compsize

sudo dnf install compsize
sudo compsize -x /home
  • Disk Usage — скільки місця реально зайнято на диску.
  • Uncompressed — орієнтовний обсяг без стиснення.
  • Ratio — співвідношення стиснення. Наприклад, 60% означає, що на диску використовується близько 60% від нестиснутого обсягу.

Висновок

compress=zstd:1 — безпечна стартова точка для багатьох Btrfs-систем. Спочатку перевірте конфігурацію, збережіть резервну копію, застосуйте параметри, а потім виміряйте результат на власних даних.

Коментарі (0)

Залишити коментар

Від 25 до 1000 символів. HTML не підтримується.
Оцінка
Погано Добре