


В ночь на 19 октября по Москве вышло ядро Linux 7.3. Линус Торвальдс создал финальный тег версии 18 октября в 23:14 UTC, а на kernel.org выпуск датирован 18 октября. Это завершённый релиз, без суффикса rc, которым обозначают кандидатов на выпуск. В Mentoring.digital разбираем два изменения, которые интересны разработчикам системного ПО: новый механизм ограничения доступа к файлам и развитие обмена данными с файловыми системами FUSE.
Коротко: Linux 7.3 добавляет инструменты для более точного управления файловым доступом и передачи данных с меньшим числом промежуточных копирований. Их наличие в ядре ещё не означает, что любое приложение автоматически станет быстрее или получит дополнительную изоляцию.
В новой версии есть внутренняя файловая система failfs. Её задача необычна: операции, которые доходят до неё, завершаются ошибкой «операция не поддерживается». Программа может перевести туда свой корневой или рабочий каталог через специальные интерфейсы ядра.
После смены корня на failfs обычные абсолютные пути перестают работать. При этом обращения, привязанные к явно открытым файловым дескрипторам каталогов, остаются возможны. Дескриптор здесь можно понимать как выданную программе ссылку на уже открытый ресурс. Разработчик заранее определяет, с какими каталогами программа сможет работать, вместо того чтобы оставлять ей привычную отправную точку для поиска файлов.
Это низкоуровневый механизм с условиями применения. Документация описывает требования к привилегиям, ограничения для уже изолированных процессов и другие нюансы. Одного обновления ядра недостаточно: приложение или среда запуска должны осознанно использовать новый интерфейс.
Например, при проектировании обработчика загруженных файлов полезно отдельно обсудить, какие каталоги ему нужны после старта. Но такой учебный сценарий не доказывает безопасность конкретной реализации: кроме файлового доступа остаются другие ресурсы и способы взаимодействия процесса с системой.
FUSE позволяет создавать файловые системы, значительная часть логики которых работает как обычная программа вне ядра. В документации Linux 7.3 для FUSE поверх io_uring описаны пулы буферов и режим zero-copy. Io_uring представляет собой интерфейс для организации операций ввода-вывода, а zero-copy в данном случае убирает промежуточное копирование полезных данных.
Пул даёт ядру общую область памяти вместо отдельного максимального буфера для каждого запроса. При zero-copy сервер файловой системы получает доступ к соответствующим страницам памяти клиента. Для этого режима нужны привилегии CAP_SYS_ADMIN. Документация также предупреждает, что интерфейс продолжает развиваться и не все виды запросов обслуживаются через io_uring.
Практический интерес здесь есть у авторов файловых сервисов и хранилищ. Разработчику обычного веб-приложения сначала стоит выяснить, использует ли его окружение этот механизм. Сам номер ядра ничего не говорит о выигрыше на его запросах.
Выпуск 7.3 завершает цикл разработки этой версии. На момент проверки kernel.org относит её к mainline, основной линии ядра, а поддерживаемые ветки stable и longterm перечисляет отдельно. Поэтому слово «финальный» не стоит понимать как рекомендацию немедленно заменить ядро на всех серверах.
Наша рекомендация: сначала сформулировать причину перехода. Нужен новый интерфейс для своего ПО, поддержка оборудования или исправление конкретной проблемы? Если такой причины нет, полезнее следовать принятому в проекте порядку обновлений дистрибутива, чем менять рабочую систему ради номера версии.
Если вы только осваиваете устройство системы, начать можно с разбора Linux с наставником. А план проверки и обновления серверного окружения удобно обсудить со специалистом по DevOps. Это разбор релиза и документации, собственные замеры производительности Linux 7.3 мы не проводили.
Обложка: редакционная иллюстрация.