Релиз ядра Linux 3.19

После двух месяцев разработки Линус Торвальдс анонсировал релиз ядра Linux 3.19. Среди наиболее заметных улучшений: средства защиты от переполнения буфера на основе расширений Intel MPX, проверка целостности и быстрая замена дисков Btrfs RAID 5/6, сжатие LZ4 в squashfs, возможность привязки BPF-программ к сетевым сокетам, протокол TIPC, системный вызов execveat (), драйвер «ipvlan» для связи контейнеров, драйвер «AMD KFD» для GPGPU-вычислений, поддержка архитектуры Altera Nios II. В новую версию принято примерно 11500 исправлений от 1200 разработчиков, размер патча — 38 Мб (изменения затронули 10742 файлов, добавлено 487475 строк кода, удалено 350946 строк). Около 46% всех представленных в 3.19 изменений связаны с драйверами устройств, примерно 19% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% — файловыми системами и 4% c внутренними подсистемами ядра.

Из наиболее интересных новшеств можно отметить:

Дисковая подсистема, ввод/вывод и файловые системы В Btrfs появилась возможность быстрой замены дисков в RAID 5/6 без предварительного добавления нового диска, переноса данных и вывода из массива старого диска, т.е. теперь при помощи утилиты btrfs-replace можно просто поменять на лету один диск на другой, как это делалось для накопителей, не состоящих в RAID. Для RAID 5/6 также добавлена функция проверки целостности данных («Scrubbing», сверка контрольных сумм, сохранённых и вычисленных на основе фактических данных), которая ранее не могла быть применена только к RAID разделам Btrfs; Существенно увеличена производительность модуля Device Mapper, обеспечивающего динамическое выделение места в хранилище (thin provisioning) и позволяющего создать несколько виртуальных дисковых разделов, суммарный размер которых превышает физический размер доступных накопителей, а физическое дисковое пространство выделяется по мере необходимости. Производительность возросла в основном благодаря поддержке агрегирования операций с идентичными блоками до обращения к основному устройству; В файловой системе Ceph добавлена поддержка inline-размещения данных, что привело к увеличению производительности для мелки файлов. Также добавлена поддержка верификации сообщений по цифровой подписи для аутентификации обмена данными между клиентами и серверами; В F2FS, развиваемую компанией Samsung высокопроизводительную файловую систему для Flash-накопителей, добавлена опция «fastboot», которую можно использовать для сокращения числа проверок во время загрузки; В файловую систему squashfs добавлена поддержка сжатия данных с использованием алгоритма LZ4; Виртуализация и безопасность Поддержка расширений MPX (Memory Protection Extensions), которые появятся в следующих поколениях микроархитектур процессоров Intel (Skylake и Goldmont) и дадут возможность организовать проверку ссылок на соблюдение границ, связанных с ними областей памяти. Для использования данной возможности для каждой ссылки на память процессору необходимо сообщить сведения о допустимых границах области памяти, что требует дополнительной адаптации программного обеспечения, т.е. использование для сборки компилятора и runtime-библиотек, поддерживающих MPX. С практической стороны, MPX позволит выявлять ошибки при работе с памятью и блокировать совершение атак, основанных на переполнении буфера. Добавлен драйвер «ipvlan», позволяющий создавать виртуальные сетевые устройства для связи между изолированными контейнерами. Драйвер напоминает macvlan, но рассчитан на эффективную работу с сетевыми пространствами имён (network namespaces) и производит мултиплексирование трафика на более высоком уровне сетевого стека; Для архитектуры ARM64 реализован механизм seccomp, используемый для ограничения доступа приложений к системным вызовам; В связи с устранением возможного вектора атаки (CVE-2014–8989) изменена обработка системного вызова setgroups (), при его использовании в пространствах имён для непривилегированных пользователей (user namespaces), что может потенциально привести к нарушению нормальной работы некоторых приложений, выполняющих маппинг произвольных идентификаторов групп пользователей. Прекращена поддержка использования системы виртуализации KVM на серверах с архитектурой Itanium (ia64), так как данная возможность не использовалась на практике и оставалась без сопровождения; Добавлен интерфейс для доступа из пространства пользователя к функциям блочного шифрования AEAD; Сетевая подсистема В клиент и сервер NFS добавлена поддержка опций ALLOCATE и DEALLOCATE, определённых в стандарте NFS 4.2 и позволяющих заранее зарезервировать место в хранилище для файла, до его фактической записи; В сетевой стек добавлена новая подсистема для задействования аппаратных механизмов ускорения коммутации и маршрутизации на поддерживающем данные возможности оборудовании; Поддержка netlink API для сетевого протокола TIPC (Transparent Inter-process Communication) для организации межпроцессного взаимодействия в кластере. Протокол предоставляет средства для быстрого и надёжного взаимодействия приложений, независимо от того, на каких узлах в кластере они выполняются. В подсистеме InfiniBand обеспечена поддержка подкачки по необходимости (on-demand paging), что позволяет создавать и размещать области RDMA через обработчик обращений к невыделенным страницам памяти (page faults), т.е. тогда, когда память действительно используется; Память и системные сервисы В системный вызов getsockopt () добавлена новая опция SO_INCOMING_CPU, при помощи которой можно определить CPU, используемый для обработки указанного сокета. Используя данную опцию приложение может распределить связанную с сокетами работу по нескольким процессорам, увеличив общую пропускную способность; Возможность привязки расширенных BPF-программ к сетевым сокетам. В настоящее время функциональность ограничена сбором статистики, но в будущем ожидается расширение возможностей; Добавлен системный вызов execveat (), который позволяет запустить исполняемый файл из открытого файлового дескриптора или найти исполняемый файл при передаче файлового дескриптора директории; Из экспериментального staging-дерева в основной состав ядра перемещён механизм межпроцессного взаимодействия Binder, предложенный разработчиками платформы Android; Поддержка оверлеев Device Tree, призванных упростить получение информации о вспомогательном оборудовании на стадии загрузки системы; В подсистеме ftrace добавлена возможность использования в фильтрах выражений с логической операцией НЕТ (»!»); Аппаратные архитектуры Поддержка микропроцессорной архитектуры с программным ядром Altera Nios II (soft-процессор), конкурирующей с архитектурой MicroBlaze; Оборудование Добавлен драйвер «AMD KFD», предоставляющий новый интерфейс для использования вычислительных возможностей графических процессоров в приложениях, не связанных с графикой (GPGPU). Взаимодействие с драйвером на пользовательском уровне осуществляется через библиотеку HSA (Heterogenous System Architecture), которая позволяет использовать OpenCL для организации гибридных вычислений наладить совместную работу CPU, GPU и иных процессоров, в которых подходящее вычислительное устройство выбирается в прозрачном режиме в зависимости от задачи. В HSA CPU и GPU имеют доступ к единым областям памяти, что упрощает организацию работы гибридных приложений; В DRM-драйвере Nouveau добавлена частичная поддержка видеокарт NVIDIA GeForce 900 (GPU GM204), реализована возможность управления напряжением в Tegra K1; В DRM-драйвере Intel реализована начальная поддержка графической подсистемы процессоров нового поколения, построенных в соответствии с микроархитектурой Skylake. По умолчанию включен режим PPGTT (Per-Process Graphics Translation Tables), который может использоваться для изоляции доступа к GPU в гостевых системах; В DRM-драйвер Radeon улучшены средства управления частотой вращения кулера для Radeon HD 7000 и более новых GPU;

© OpenNet