Компания Red Hat опубликовала дистрибутив Red Hat Enterprise Linux 8.4. Установочные сборки подготовлены для архитектур x86_64, s390x (IBM System z), ppc64le и Aarch64, но доступны для загрузки только зарегистрированным пользователям Red Hat Customer Portal. Исходные тексты rpm-пакетов Red Hat Enterprise Linux 8 распространяются через Git-репозиторий CentOS.
Ветка 8.x, которая будет поддерживаться как минимум до 2029 года, развивается в соответствии с новым предсказуемым циклом разработки, подразумевающим формирование релизов раз в полгода в заранее определённое время. Новый цикл разработки продуктов RHEL охватывает несколько уровней, включая Fedora как плацдарм для реализации новых возможностей, CentOS Stream для доступа к пакетам, формируемым для следующего промежуточного выпуска RHEL (rolling-вариант RHEL), минималистичный универсальный базовый образ (UBI, Universal Base Image) для запуска приложений в изолированных контейнерах и RHEL Developer Subscription для бесплатного использования RHEL в процессе разработки.
Ключевые изменения:
- Добавлена экспериментальная поддержка технологии MPLS (Multiprotocol Label Switching) для маршрутизации пакетов с использованием многопротокольной коммутации по меткам. Применение MPLS, например, позволяет определить фильтры через утилиту tc для управления пакетами, приходящими из заданных портов или связанных с определённым видом трафика.
- В пакет iproute2 включены три новых действия утилиты tc – mac_push, push_eth и pop_eth, позволяющие прикреплять MPLS-метки, добавлять или удалять заголовки Ethernet.
- Добавлена экспериментальная поддержка модуля bareudp, позволяющего инкапсулировать в UDP-туннель различные L3-протоколы, такие как MPLS, IP и NSH.
- Предложен пакет kpatch-dnf с плагином к пакетному менеджеру DNF, позволяющему подписаться на получение исправлений к ядру Linux, устанавливаемых без перезагрузки (live patch).
- Добавлена поддержка механизма упреждающей упаковки страниц памяти в фоновом режиме (proactive compaction), позволяющего увеличить число больших страниц памяти (Huge Pages, страницы больше 4KB), доступных ядру. Фоновая автоматическая упаковка (дефрагментация) ценой минимальных накладных расходов позволяет в 70-80 раз снизить задержки при выделении крупных страниц памяти по сравнению с ранее применяемым механизмом упаковки по необходимости, запускаемым непосредственно при выделении крупной страницы. По умолчанию режим proactive compaction пока отключён.
- Задействован новый контроллер распределения памяти slab (slab memory controller), который примечателен переносом учёта slab с уровня страниц памяти на уровень объектов ядра, что даёт возможность совместно использовать slab-страницы в разных cgroup, вместо выделения отдельных кэшей slab для каждой cgroup. Предложенный подход позволяет повысить эффективность использования slab, на 30-45% сократить размер используемой для slab памяти, значительно уменьшить общее потребление памяти ядром и снизить фрагментацию памяти.
- Добавлена поддержка пространства имён для времени (time namespaces), позволяющего привязать к контейнеру состояние системных часов (CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_BOOTTIME), использовать в контейнере своё время и при миграции контейнера на другой хост обеспечить неизменность показаний CLOCK_MONOTONIC и CLOCK_BOOTTIME (учесть время после загрузки с учётом или без учёта нахождения в спящем режиме).
- Обеспечена стабильная поддержка подсистемы XDP (eXpress Data Path), позволяющей манипулировать сетевыми пакетами на стадии до их обработки сетевым стеком ядра Linux. Например, при помощи XDP можно запускать BPF-программы на уровне сетевого драйвера с возможностью прямого доступа к DMA-буферу пакетов и на стадии до выделения буфера skbuff сетевым стеком.
- Добавлена возможность возвращения неиспользуемой виртуальными машинами памяти обратно гипервизору. Для возвращения страниц памяти на стороне виртуальной машины должен использоваться драйвер virtio_balloon.
- Компоненты для работы в режиме реального времени (kernel-rt) синхронизированы с набором патчей для ядра v5.10-rt7 (было 5.6.14-rt7).
- В состав включён фоновый процесс stalld, отслеживающий потоки при запуске приложений, требующих высокой отзывчивости. При выявлении задержанных потоков выполняется временное переключение на политику планирования SCHED_DEADLINE с назначением потоку дополнительного времени CPU.
- Добавлен модуль ядра с поддержкой механизма EDAC (Error Detection and Correction), предоставляемого в 8 и 9 поколении процессоров Intel Core, для выявления и коррекции ошибок в ECC-памяти и шине PCI.
- Добавлен параметр ядра net.naming-scheme=SCHEME_VERSION для выбора версии алгоритма, генерирующего имена сетевых устройств.
- В VPN IPsec, предоставляемый пакетом Libreswan, добавлена поддержка работы поверх TCP (RFC 8229) и меток IKEv2.
- Во фреймворк fapolicyd, позволяющий определить какие программы можно запускать определённому пользователю, а какие нет, добавлена поддержка проверки целостности запускаемых файлов (Integrity Measurement Architecture) и реализована регистрация обновлений RPM-пакетов.
- Обеспечена стабильная поддержка пакета nmstate, предоставляющего библиотеку и утилиту nmstatectl для управления сетевыми настройками через декларативный API (состояние сети описывается в форме предопределённой схемы).
- Продолжена работа по стабилизации подсистем eBPF. Добавлена полная поддержка инструментария и библиотеки BCC (BPF Compiler Collection) для создания BPF-программ трассировки, мониторинга и отладки, поддержка eBPF в tc (Traffic Control) для классификации пакетов и обработки входящих и исходящих очередей, XDP для обработки пакетов до сетевого стека, libbpf для разработки связанных с BPF приложений, xdp-tools с утилитами для XDP. На стадии Technology Preview остаются компоненты bpftrace и реализация сокета AF_XDP для подключения к XDP из пространства пользователя.
- В tcpdump добавлена поддержка захвата трафика RDMA.
- В репозиторий AppStream добавлены модули с новыми ветками Python 3.9, SWIG 4.0, Subversion 1.14, Redis 6, PostgreSQL 13 и MariaDB 10.5.
- Добавлены пакеты с GCC 10, LLVM 11, Rust 1.49.0 и Go 1.15.7.
- Обновлены версии OpenIPMI 2.0.29 (с поддержкой IPMB), freeipmi 1.6.6 (с поддержкой новых устройств Dell, Intel и Gigabyte), postfix 3.5.8, BIND 9.11.26, SpamAssassin 3.4.4, libreswan 4.3, NetworkManager 1.30.0, SystemTap 4.4, CMake 3.18.2, samba 4.13.2
- Стабилизирована поддержка драйвера igc для Intel 2.5G Ethernet.
- Размер допустимого размера раздела подкачки, определяемого при установке, увеличен до 16 TiB (ранее разделы подкачки не могли превышать 128 GB).
- Добавлена возможность неожиданного отключения устройств NVMe, без предварительного уведомления системы.
- Добавлена новая опция монтирования “-o dax=inode” для выборочного включения DAX (Direct Access) для отдельных файлов в ФС XFS и ext4. Привязка к файлам осуществляется при помощи флага FS_XFLAG_DAX.
- В SMB-клиент встроена поддержка режима SMB Direct, который позволяет использовать сетевые адаптеры с функцией удалённого доступа к памяти (RDMA) для увеличения скорости передачи SMB-пакетов.
- В Ansible добавлены модули для автоматизации управления доступом на основе ролей (RBAC) в IdM (Identity Management). Добавлена роль для резервного копирования и восстановления сервисов IdM. Добавлен модуль для управления местоположением.
- Добавлены новые системные роли для перенаправления логов на сервер rsyslog с использованием протокола RELP (Reliable Event Logging Protocol), задания политики использования криптоалгоритмов и для настройки серверов и клиентов SSH.
- Добавлены новые драйверы для Realtek 802.11ac, Regmap SoundWire,
Intel QuickAssist Technology, Intel Data Accelerator Driver, VirtualBox Graphics Card, Elastic Fabric Adapter, Nitro Enclaves. - Добавлена поддержка нового API для монтирования файловых систем.
- Добавлена поддержка системного вызова close_range, позволяющего процессу разом закрыть целый диапазон открытых файловых дескрипторов.
- В пакетном менеджере DNF реализована команда “dnf history store” для сохранения в файле транзакции из истории выполненных операций и команда “dnf history replay” для повторного воспроизведения файла с транзакцией на текущей или другой системе.
- В DNF добавлена настройка protect_running_kernel, управляющая включением защиты от удаления пакетов, связанных с выполняемой в данный момент версией ядра Linux.
- В GNOME предоставлена возможность настройки таймаута для признания приложения не отвечающим на запросы и вывода диалога для завершения или продолжения ожидания. Для отключения определения зависших приложений можно установить в параметр org.gnome.mutter.check-alive-timeout значение 0.
- Добавлена поддержка виртуализации для третьего поколения процессоров AMD EPYC (EPYC Milan).
- Добавлена поддержка GPU процессоров на базе микроархитектуры Intel Tiger Lake и Rocket Lake (11 gen), а также GPU NVIDIA Ampere (GA102, GA104).
- Продолжено предоставление экспериментальной (Technology Preview) поддержки AF_XDP, XDP hardware offloading, Multipath TCP (MPTCP), KTLS, dracut, kexec fast reboot, DAX в ext4 и xfs, systemd-resolved, accel-config, eBPF, igc, OverlayFS, Stratis, Software Guard Extensions (SGX), NVMe/TCP, DNSSEC, GNOME на системах IBM Z, AMD SEV для KVM, Intel vGPU.