Компания Oracle опубликовала ядро Unbreakable Enterprise Kernel 6
3 апреля 2020 года
Компания Oracle представила первый стабильной выпуск Unbreakable Enterprise Kernel 6 (UEK R6), расширенной сборки ядра Linux, позиционируемой для использования в дистрибутиве Oracle Linux в качестве альтернативы штатному пакету с ядром из Red Hat Enterprise Linux. Ядро доступно только для архитектур x86_64 и ARM64 (aarch64). Исходные тексты ядра, включая разбивку на отдельные патчи, опубликованы (Архивная копия от 21 ноября 2020 на Wayback Machine) в публичном Git-репозитории Oracle.
Пакет Unbreakable Enterprise Kernel 6 основан на ядре Linux 5.4 (UEK R5 базировался на ядре 4.14), которое дополнено новыми возможностями, оптимизациями и исправлениями, а также проверено на совместимость с большинством приложений, работающих в RHEL, и специально оптимизировано для работы с промышленным программным обеспечением и оборудованием Oracle. Установочные и src-пакеты с ядром UEK R6 подготовлены для Oracle Linux 7.x и 8.x. Поддержка ветки 6.x прекращена, для применения UEK R6 следует обновить систему до Oracle Linux 7 (нет никаких препятствий по использованию данного ядра в аналогичных версиях RHEL, CentOS и Scientific Linux).
Ключевые новшества (Архивная копия от 23 мая 2020 на Wayback Machine) Unbreakable Enterprise Kernel 6:
- Расширенная поддержка систем на базе 64-разрядной архитектуры ARM (aarch64).
- Реализована поддержка всех возможностей Cgroup v2.
- Реализован фреймворк ktask для распараллеливания задач в ядре, потребляющих значительные ресурсы CPU. Например, при помощи ktask может быть организовано распараллеливание операций по очистке диапазонов страниц памяти или обработке списка inode;
- Включена распараллеленная версия kswapd для обработки операций замены страниц памяти в асинхронном режиме, позволяя сократить число прямых (синхронных) операций замены. При уменьшении числа свободных страниц памяти kswapd выполняет сканирование для выявления неиспользуемых страниц, которые могут быть высвобождены.
- Поддержка верификации целостности образа ядра и прошивок по цифровой подписи, при загрузке ядра при помощи механизма Kexec (загрузка ядра из уже загруженной системы).
- Проведена оптимизация производительности системы управления виртуальной памятью, улучшена эффективность очистки станиц памяти и кэша, улучшена обработка обращений к не выделенным страницам памяти (page faults).
- Расширена поддержка NVDIMM, указанная постоянная память теперь может использоваться в качестве традиционного ОЗУ.
- Осуществлён переход на систему динамической отладки DTrace 2.0, которая переведена на использование подсистемы ядра eBPF. DTrace теперь работает поверх eBPF, по аналогии с тем, как поверх eBPF работают существующие в Linux инструменты трассировки.
- Внесены улучшения в файловую систему OCFS2 (Oracle Cluster File System).
- Улучшена поддержка файловой системы Btrfs. Добавлена возможность применения Btrfs на корневых разделах. В инсталлятор добавлена опция для выбора Btrfs при форматировании устройств. Добавлена возможность размещения файлов подкачки на разделах с Btrfs. В Btrfs добавлена поддержка сжатия с использованием алгоритма ZStandard.
- Добавлена поддержка интерфейса для асинхронного ввода/вывода - io_uring, который примечателен поддержкой поллинга ввода/вывода и возможностью работы как с буферизацией, так и без буферизации. По производительности io_uring очень близок к SPDK и существенно опережает libaio при работе с включённым поллингом. Для использования io_uring в конечных приложениях, работающих в пространстве пользователя, подготовлена библиотека liburing, предоставляющая высокоуровневую обвязку над интерфейсом ядра;
- Добавлена поддержка режима Adiantum для быстрого шифрования накопителей.
- Добавлена поддержка сжатия с использованием алгоритма Zstandard (zstd).
- В файловой системе ext4 задействованы 64-разрядные метки времени в полях суперблока.
- В XFS включены средства для информирования о состоянии целостности ФС во время работы и получения статуса о выполнении fsck на лету.
- TCP-стек по умолчанию переведён на модель "Early Departure Time" вместо "As Fast As Possible" при отправке пакетов. Для UDP включена поддержка GRO (Generic Receive Offload). Добавлена поддержка приёма и отправки TCP-пакетов в режиме zero-copy.
- Задействована реализация протокола TLS на уровне ядра (KTLS), которая теперь может применяться не только для отправляемых, но и для принимаемых данных.
- В качестве бэкенда для межсетевого экрана по умолчанию задействован
nftables. Опционально добавлена поддержка bpfilter.
- Добавлена поддержка подсистемы XDP (eXpress Data Path), позволяющей в Linux запускать BPF-программы на уровне сетевого драйвера с возможностью прямого доступа к DMA-буферу пакетов и на стадии до выделения буфера skbuff сетевым стеком.
- Улучшен и включён при использовании UEFI Secure Boot режим Lockdown, который ограничивает доступ пользователя root к ядру и блокирует пути обхода UEFI Secure Boot. Например, в режиме lockdown ограничивается доступ к /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, отладочному режиму kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), некоторым интерфейсам ACPI и MSR-регистрам CPU, блокируются вызовы kexec_file и kexec_load, запрещается переход в спящий режим, лимитируется использование DMA для PCI-устройств, запрещается импорт кода ACPI из переменных EFI, не допускаются манипуляции с портами ввода/вывода, в том числе изменение номера прерывания и порта ввода/вывода для последовательного порта.
- Добавлена поддержка расширенных инструкций IBRS (Enhanced Indirect Branch Restricted Speculation), которые позволяют адаптивно разрешать и запрещать спекулятивное выполнение инструкций во время обработки прерываний, системных вызовов и переключений контекста. При наличии поддержки Enhanced IBRS данный метод применяется для защиты от атак класса Spectre V2 вместо Retpoline, так как позволяет добиться более высокой производительности.
- Улучшена защита в каталогах, доступных всем на запись. В подобных каталогах запрещено создания FIFO-файлов и файлов, принадлежащих пользователям, не совпадающим с владельцем каталога с флагом sticky.
- По умолчанию на системах ARM включена рандомизация адресного пространства ядра на системах (KASLR). Для Aarch64 включена аутентификация указателей.
- Добавлена поддержка "NVMe over Fabrics TCP".
- Добавлен драйвер virtio-pmem, представляющий доступ к устройствам хранения, отражённым в физическое адресное пространство, таким как NVDIMM.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.