Новости
Linux 7.2: что нового для файловых систем
Обновления Btrfs, Ext4, XFS и EROFS в ядре Linux 7.2 — что изменилось для хранения и доступа к файлам.
9 сентября 2026 года разработчик Усама Ариф добавил патч в ветку Btrfs for-next: устранена двойная запись байтов при декомпрессии Zstd, и последовательное чтение сжатых файлов ускоряется на 3,6–7,8%. Изменение ожидается в ядре Linux 7.4, цикл разработки которого стартует в октябре 2026.

Коротко: 9 сентября 2026 в ветку Btrfs for-next поставлен патч, устраняющий лишнюю запись каждого байта при Zstd-декомпрессии. Раньше данные сначала шли во временный буфер, потом копировались в page cache — два прохода вместо одного. Патч убирает промежуточный буфер: Zstd записывает напрямую в кэш страниц. Результат: последовательное чтение быстрее на 3,6–7,8%, случайное 4K-чтение — на ~3%. Попадёт в Linux 7.4.
Разработчик Усама Ариф обнаружил в пути декомпрессии Zstd в файловой системе Btrfs неэффективность: каждый распакованный байт записывается дважды. Патч с исправлением принят в ветку «for-next» репозитория Btrfs и войдёт в основное ядро Linux с ближайшим циклом разработки — Linux 7.4, слияние (merge window) которого открывается в октябре 2026.
Btrfs поддерживает прозрачное сжатие файловой системы: данные на диске хранятся в сжатом виде, а ядро автоматически распаковывает их при чтении. Пользователь работает с файлами обычным образом — сжатие остаётся невидимым. Поддерживаемые алгоритмы: Zstd, LZO и ZLIB. Zstd сегодня считается оптимальным выбором для большинства современных накопителей — он даёт лучшее соотношение скорости и степени сжатия по сравнению с ZLIB, и превосходит LZO по степени сжатия.
До патча путь декомпрессии работал следующим образом. Функция zstd_decompress_bio() выделяла временный буфер размером с сектор (sectorsize). Zstd распаковывал данные в этот буфер. Затем вступала функция btrfs_decompress_buf2page(), которая копировала перекрывающиеся части буфера в финальные page cache folios — туда, откуда данные читает процесс пользователя.
Итог: каждый байт записывался дважды — один раз в промежуточный буфер, второй раз — в page cache. При больших объёмах последовательного чтения сжатых файлов это становилось заметным накладным расходом.
Патч Усамы Арифа устраняет лишний шаг: вместо записи в промежуточный буфер функция zstd_map_dest() направляет распакованные данные напрямую в нужные страницы page cache. Временный буфер сектора больше не нужен — данные достигают финального назначения за один проход.
Изменение идемпотентно с точки зрения результата: содержимое распакованных файлов остаётся абсолютно идентичным. Меняется только путь данных внутри ядра — убирается лишнее копирование.
Усама Ариф провёл бенчмарки на реальном оборудовании, измеряя время последовательного и случайного чтения файлов с включённым Zstd-сжатием в Btrfs:
| Тип операции | Размер сектора | Ускорение |
|---|---|---|
| Последовательное чтение | 4K | −7,8% времени |
| Последовательное чтение | 16K | −3,6% времени |
| Последовательное чтение | 64K | −6,8% времени |
| Случайное чтение | 4K | ~−3% времени |
Наибольший прирост — при 4K-секторах и последовательном чтении. Это типичный сценарий для чтения множества небольших файлов: исходный код, конфигурационные файлы, текстовые документы. При крупноблочном последовательном чтении (например, видеофайлов) прирост несколько меньше, но по-прежнему измерим.
Улучшение затронет всех, кто использует Btrfs с включённым Zstd-сжатием — это стандартная конфигурация на многих дистрибутивах Linux, в том числе Arch Linux, Fedora и openSUSE. Особенно заметный эффект ощутят:
Если вы работаете с файлами, сжатыми алгоритмом Zstd — например, через утилиты zstd, tar --zstd или приложения на базе библиотеки libzstd — данный патч ускоряет декомпрессию именно на уровне файловой системы, а не пользовательских инструментов. Тем не менее общий интерес к сжатию данных — в том числе в контексте PDF — подтверждает: сжатие Brotli для PDF даёт похожий порядок экономии, так что тренд на оптимизацию работы с компрессией идёт по всему стеку.
Патч находится в ветке «for-next» репозитория Btrfs, что означает: он уже принят мейнтейнером и будет включён в pull request к ядру Linux 7.4. Слияние (merge window) Linux 7.4 откроется в октябре 2026 — после выхода Linux 7.3. Стабильная версия ядра 7.4 появится ориентировочно в конце 2026 года.
В Arch Linux (rolling release) патч войдёт в ядро достаточно быстро после слияния. В Fedora, Ubuntu, openSUSE и других дистрибутивах с фиксированными циклами выпуска — по графику следующего мажорного релиза или через backport. Отдельно обновлять ничего не нужно: патч включается вместе с обновлением ядра в штатном режиме.
Если вы хотите проверить, какой Linux-kernel и какую файловую систему использует ваша система прямо сейчас, воспользуйтесь командами:
uname -r # версия ядра
findmnt -T / # файловая система корневого раздела
btrfs filesystem show # тома Btrfs на системе