Btrfs. +40% бесплатно. Сравнение с Ext4. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Btrfs. +40% бесплатно. Сравнение с Ext4

9

btrfs ext4

Материал написан пользователем сайта.

В последнее время мне часто попадались новости о Btrfs. Какая файловая система классная и какая функциональная. Решил загуглить информацию о практическом опыте пользования. К сожалению, всё, что в сети смог найти - субъективная вкусовщина без цифр и без сравнений. Никакой прагматической пользы я не нашёл, поэтому решил провести собственные опыты, сравнить btrfs с ext4.

4 теста: 
1. Скорость загрузки системы.
2. Чтение множества маленьких файлов.
3. Чтение одного большого файла.
4. Внезапное отключение электропитания.

Тесты проводились на идентичных виртуальных машинах virtualbox.

Хост:
Debian: 13.4
DE: GNOME 48
CPU: AMD Athlon 2 280  3.4GHz (частота занижена на 0.2 потому что барахлит БП)
RAM: 16GB (2x8)
GPU: AMD Radeon HD 7770
Накопитель HDD SATA2

Виртуалки:
- 2 ядра (100% загрузки)
- 10 ГБ ОЗУ
- 5 ГБ диск (root)

Подготовка:
Было создано 2 виртуальные машины с дисками по 5ГБ каждая. На каждой была установлена базовая система Debian 13 (без DE). На одной машине была ФС ext4 со стандартными параметрами монтирования, а на другой btrfs с параметром compress (при установке ставится алгоритм lzo).

На машине с btrfs я сразу поменял параметры монтирования в fstab с compress на compress=zstd:1 и выполнил дефрагментацию чтобы пережать с новым алгоритмом.
После этого я начал одновременно устанавливать типичный набор программ (DE, браузер, офис, просмотрщики файлов). Делал это параллельно, чтобы системы были идентичны друг другу.

Занимаемое пространство привлекает внимание. На ext4 это 3.71ГБ, а брат близнец на btrfs всего 2.08ГБ, что составляет 56% от первоначального объёма. Даже если взять информацию от btrfs filesystem usage, где указывается 3.55ГБ, всё равно получается солидно 58%.

Следующим этапом была дефрагментация .vdi файлов. Как оказалось, не зря. Один из файлов дисков был разбит на 400+ частей, что существеннно замедляло работу дисковой подсистемы хоста. После его дефрагментации, машина начала включаться в полтора раза быстрее.

Завершающим этапом стала дефрагментация внутри самих машин.

Тест 1: Boot

Я не просто так выше написал про дефрагментацию. Из-за фрагментации файлов, машина с ext4 грузилась примерно за 1:30. Ниже прикладываю выборку тестов уже после дефрагментации vdi. Время замера от момента выбора ОС в grub до появления ярлыков рабочего стола.

ext4
1. 0:57
2. 0:58
3. 0:58

btrfs
1. 0:54
2. 0:56
3. 0:55

Изменения мизерные. Без секундомера незаметно.

Тест 2: Чтение множества мелких файлов

(Верхняя горизонтальная строка на скриншоте)

Для этого я выделил по 10ГБ ОЗУ на каждую виртуалку и организовал RAM диски, чтобы исключить влияние медленной записи. В качестве кучи мелких файлов я использовал всё, что было в системе (копировал её в оперативу).

Тестовый bash скрипт:

#!/bin/bash
rm -R -f /home/user/RAM/*  #Очистка рам диска
sudo sync  #Принудительный слив буфера записи
sudo echo 3 | sudo tee /proc/sys/vm/drop_caches  #Очистка кешированных данных
time cp -a -x / /home/user/RAM/ #Замер времени копирования
exit 0

Перед каждой выборкой, на хостовой машине выполнялась команда очистки кеша sudo echo 3 | sudo tee /proc/sys/vm/drop_caches.

Результаты из 5 выборок:

ext4:
1. 3m18s
2. 3m10s
3. 3m4s
4. 3m9s
5. 3m6s

btrfs:
1. 2m40s
2. 2m20s
3. 2m21s
4. 2m19s
5. 2m20s

В условиях данного теста, btrfs даёт выигрыш примерно 25%.

Тест 3: Чтение одного большого файла

(Нижняя горизонтальная строка на скриншоте)

Для этого теста я создал дополнительный диск .vdi на 5ГБ и примонтировал его /home/user/TST/. Порядок действий был следующий.

Так как tar прерывает свою работу из-за недоступных файлов и ссылок, я решил скопировать всё возможное в RAM, а уже оттуда сжимать на тестовый раздел.

В итоге я получил файлы root.tar с максимально похожим содержимым. Размеры файлов 3.62ГБ на ext4 и 2.12ГБ на btrfs что составляет 59%.

Тестовый скрипт:

#!/bin/bash
rm -R -f /home/user/RAM/*  #Очистка рам диска
sudo sync  #Принудительный слив буфера записи
sudo echo 3 | sudo tee /proc/sys/vm/drop_caches  #Очистка кешированных данных
time cp -a -x /home/user/TST/root.tar /home/user/RAM/root.tar #Замер времени копирования
exit 0

Как и в предыдущем тесте, перед каждой выборкой выполнялась команда очистки кеша sudo echo 3 | sudo tee /proc/sys/vm/drop_caches.

Результаты из 5 выборок:

ext4
1. 1m1s
2. 1m4s
3. 1m3s
4. 1m3s
5. 1m42s (предположительно какой-то процесс на хосте занял время)

btrfs
1. 0m48s
2. 0m49s
3. 0m48s
4. 0m44s
5. 0m46s

Здесь выигрыш от btrfs ещё солиднее, примерно 30-35%.

Тест 4: Внезапное отключение электропитания

(Данный тест для галочки и не моделирует реальную нагрузку)

Чтобы не засорять подопытных мусором, этот тест проводил завершающим. Хочу предупредить, что я не знаю, как можно провести его максимально приближённо к реальности, а потом сделал следующее.

Попытался скачать старую версию ядра и на разных этапах отключал машину. Отключения были во время распаковки, initramfs, updategrub, а также initramfs и updategrub при удалении ядра.

Обе системы успешно пережили это и продолжили работать как ни в чём не бывало.

Вывод

Сжатие данных минимизирует воздействие бутылочного горлышка системы ввода-вывода. Бонусом +40% памяти накопителя почти бесплатно.

Что касается снапшотов и откатов, я таким не пользуюсь и не знаю, как провести тестирование. Да и не нужно оно мне.

Для моих нужд btrfs превосходит ext4.

Как бы я хотел провести этот эксперимент на реальной машине с AMD K8 и накопителями PATA (обзор на это железо я выкладывал ещё в 2020), но, к сожалению, у меня сейчас нет доступа к тому компьютеру.

Лайков: +4
войдите, чтобы ставить лайки
9
  • Опубликовано: 11.04.2026
  • Singular

Комментарии

origin
Активный пользователь
Активный
11.04.2026
10:21
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Singular

Главному Метрологу Спасибо за инфо !

1-По простому...BTRFS...для жадных ! ))
2-ЕХТ4...для Юзеров и чтобы система работала надежно... !

3-А эти опыты и драка за СЕКУНДУ с зависимостями...а портить SSD...
не желательно...для Опытов и Тестов Можно ! ))
Singular
Активный пользователь
Активный
11.04.2026
12:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийoriginРодительский комментарий
+1
войдите, чтобы ставить лайки
Метролог на виртуалках))
Ну спасибо)

Старался как мог. Сам пока не готов переходить на btrfs на рабочих машинах (их у меня 4). Там слишком много важной информации. Но уже присматриваюсь. Возможно первой реальной машиной станет мой нетбук с атомом и ssd с алиэкспресс (обзор про этот нетбук уже был на сайте и твердотельник кстати 7 лет исправно работает).
Интересно, как атом будет пережёвывать сжатие.
Вангую просадку пропускной способности, но при 32ГБ выбор у меня не сильно большой.
Hozy
11.04.2026
11:04
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Интересно узнать разницу с F2FS.
Singular
Активный пользователь
Активный
11.04.2026
12:49
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийHozyРодительский комментарий
0
войдите, чтобы ставить лайки
Может быть, когда нибудь. Сейчас этого даже в мыслях нет.
Я скорее open-zfs попробую.
UlyssesJJ
Активный пользователь
Активный
11.04.2026
11:52
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Тоже пересел на btrfs из-за нативного сжатия и снапшотов. Только у меня корень монтируется с compress=zstd:3, а /home compress=zstd:9. Также для меня было открытием, что снапшоты btrfs не настолько "бесплатные", насколько я себе их представлял. Для меня "бесплатные" — это, не знаю, возможность тысячу снапшотов держать одновременно. В случае снапшотов btrfs это не так. Но если сравнивать со снапшотами timeshift+rsync, то да, снапшоты btrfs будут довольно-таки бесплатными. Я избегу конкретных цифр, потому что они могут сильно варьироваться в различных кейсах. В моем случае на Linux Mint с ext4 я мог держать одновременно 1-3 снапшота timeshift+rsync для корня, чтобы они занимали при этом какое-то вразумительное место на диске. Сейчас на Fedora 43 я могу держать 20 - 30 снапшотов btrfs для корня и они занимают примерно такое же пространство. То есть разница на порядок, но "бесплатными" я все же их не назвал бы.
Singular
Активный пользователь
Активный
11.04.2026
12:45
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийUlyssesJJРодительский комментарий
+1
войдите, чтобы ставить лайки
Я пока не пересаживался. Просто решил потыкать палкой дивные компьютерные новшества. И мне понравилось)
zstd:9 имхо это слишком. Ниже на странице, я оставил комментарий с замерами разрядности системы и степени сжатия. Выигрыш в сжатии мизерный, а потеря скорости существенная даже на декомпрессии.
choice
Активный пользователь
Активный
11.04.2026
11:53
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Хороший материал и подход!
А тем временем Ext4 продолжают шлифовать и вносят правки в ядро.
"В 6.19 файловая система ext4 получила поддержку размеров блоков, превышающих размер страницы системной памяти (4 КБ). Это нововведение повышает эффективность операций с большими файлами, архивами и при сохранении данных. Производительность буферизированной записи может возрасти до 50% в зависимости от сценария использования.

Другие улучшения ext4:

Кэширование ACL: Ядро теперь запоминает отсутствие списков контроля доступа (POSIX ACL) у файлов и папок, исключая повторные проверки и ускоряя загрузку директорий с большим количеством файлов.

Кэширование на уровне CPU: Для дисковых запросов внедрено кэширование, привязанное к конкретным ядрам процессора, что снижает нагрузку на CPU за счет устранения очередей ожидания.

Онлайн-дефрагментация: Механизм переведен на использование фолио (folios) вместо буферных голов, что улучшает управление памятью и повышает пропускную способность при реорганизации файлов."
Singular
Активный пользователь
Активный
11.04.2026
12:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
+1
войдите, чтобы ставить лайки
Я пока не ушёл с EXT4. Решил потыкать палкой новинку опенсорсной технологии. Новинка понравилась, буду ещё тыкать)
Singular
Активный пользователь
Активный
11.04.2026
12:31
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Тест, который не вошёл в статью (делал уже после публикации).

Влияние разрядности системы на производительность. 32 и 64 бит.
Тест проводился командой
zstd -b1 -e22 --long=17
-b1 - бенчмарк и начальная степень сжатия 1
-e22 - завершающая степень сжатия бенчмарка (в btrfs максимум 15, но мне было интересно продлить)
--long=17 - принудительно установленный параметр указывающий на размер окна выборки. В данном случае 17 что равняется 128 килобайт. Как раз такое окно используется в btrfs

Разница, как видите, существенная
Первая степень сжатия
32bit comp: 34.6MB/s decomp: 131.6MB/s
32bit comp: 63.7MB/s decomp: 315.9MB/s

Полный отчёт на скрине в гуглдрайве.
https://drive.google.com/file/d/1EsVvEo11bUwymc9Lqfc_byK5fODeW6gv/view?usp=sharing

Написать комментарий

Ник:
Текст комментария:
  • Уважать других.
  • Без оскорблений и грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
  • Оффтоп запрещен.
  • Любой комментарий может быть удален без объяснения причин.
Правилаправила (наведите курсор)