Вышел Linux 7.3: что меняется для разработчиков

Вышел Linux 7.3: что меняется для разработчиков
Содержание статьи

В ночь на 19 октября по Москве вышло ядро Linux 7.3. Линус Торвальдс создал финальный тег версии 18 октября в 23:14 UTC, а на kernel.org выпуск датирован 18 октября. Это завершённый релиз, без суффикса rc, которым обозначают кандидатов на выпуск. В Mentoring.digital разбираем два изменения, которые интересны разработчикам системного ПО: новый механизм ограничения доступа к файлам и развитие обмена данными с файловыми системами FUSE.

Коротко: Linux 7.3 добавляет инструменты для более точного управления файловым доступом и передачи данных с меньшим числом промежуточных копирований. Их наличие в ядре ещё не означает, что любое приложение автоматически станет быстрее или получит дополнительную изоляцию.

Failfs ограничивает привычные способы обращения к файлам

В новой версии есть внутренняя файловая система failfs. Её задача необычна: операции, которые доходят до неё, завершаются ошибкой «операция не поддерживается». Программа может перевести туда свой корневой или рабочий каталог через специальные интерфейсы ядра.

После смены корня на failfs обычные абсолютные пути перестают работать. При этом обращения, привязанные к явно открытым файловым дескрипторам каталогов, остаются возможны. Дескриптор здесь можно понимать как выданную программе ссылку на уже открытый ресурс. Разработчик заранее определяет, с какими каталогами программа сможет работать, вместо того чтобы оставлять ей привычную отправную точку для поиска файлов.

Это низкоуровневый механизм с условиями применения. Документация описывает требования к привилегиям, ограничения для уже изолированных процессов и другие нюансы. Одного обновления ядра недостаточно: приложение или среда запуска должны осознанно использовать новый интерфейс.

Например, при проектировании обработчика загруженных файлов полезно отдельно обсудить, какие каталоги ему нужны после старта. Но такой учебный сценарий не доказывает безопасность конкретной реализации: кроме файлового доступа остаются другие ресурсы и способы взаимодействия процесса с системой.

FUSE получает буферы и передачу без промежуточной копии

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 7.3

  • Выберите отдельное тестовое окружение и запишите текущие версии ядра, драйверов и нужных сервисов.
  • Определите наблюдаемый результат: корректность доступа к файлам, работа файлового сервиса или конкретная операция ввода-вывода.
  • Сравните поведение на одинаковой задаче и сохраните условия проверки. Чужой результат на другом оборудовании не заменяет этого сравнения.
  • До изменения рабочего окружения проверьте доступность предыдущей версии и порядок возврата к ней.

Если вы только осваиваете устройство системы, начать можно с разбора Linux с наставником. А план проверки и обновления серверного окружения удобно обсудить со специалистом по DevOps. Это разбор релиза и документации, собственные замеры производительности Linux 7.3 мы не проводили.

Обложка: редакционная иллюстрация.

Похожие статьи по данной теме