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)