Oracle hat stabile Versionen des Oracle Linux 9 Distributionspakets sowie des Unbreakable Enterprise Kernel 7 (UEK R7) veröffentlicht. Dieser Kernel dient als Alternative zum Standardkernel von Red Hat Enterprise Linux in der Oracle Linux Distributionsumgebung. Oracle Linux 9 basiert auf der Paketbasis von Red Hat Enterprise Linux 9 und ist vollständig binär kompatibel.
Es stehen unbeschränkte Installations-ISO-Images mit einer Größe von 8,6 GB und 840 MB für die Architekturen x86_64 und ARM64 (aarch64) zum Download bereit. Für Oracle Linux 9 ist der Zugriff auf das yum-Repository für binäre Paketupdates mit Fehlerbehebungen (Errata) und Sicherheitsproblemen unbegrenzt und kostenlos. Zusätzlich wurden separate unterstützte Repositories mit Paketsets für Application Stream und CodeReady Builder vorbereitet.
Neben dem RHEL-Kernel-Paket (basierend auf Kernel 5.14) bietet Oracle Linux einen eigenen Unbreakable Enterprise Kernel 7, der auf dem Linux-Kernel 5.15 basiert und für die Zusammenarbeit mit Oracle-Industrie-Software und -Hardware optimiert ist. Der Quellcode des Kernels, einschließlich einer Aufteilung in einzelne Patches, ist in einem öffentlichen Git-Repository von Oracle verfügbar. Der Unbreakable Enterprise Kernel wird standardmäßig installiert, positioniert sich als Alternative zum RHEL-Kernel-Paket und bietet eine Reihe erweiterter Funktionen, wie die Integration von DTrace und verbesserte Btrfs-Unterstützung. Abgesehen von dem zusätzlichen Kernel sind die Versionen von Oracle Linux 9 und RHEL 9 vollkommen identisch (eine Liste der Änderungen kann in der RHEL9-Ankündigung eingesehen werden).
Die wichtigsten Neuerungen im Unbreakable Enterprise Kernel 7:
- Die Unterstützung der Aarch64-Architektur wurde verbessert. Die Seitengröße im Speicher wird auf 64-Bit-ARM-Systemen standardmäßig von 64 KB auf 4 KB reduziert, was besser mit den Speichermengen und Lastarten harmoniert, die für ARM-Systeme typisch sind.
- Die Bereitstellung des dynamischen Debugging-Systems DTrace 2.0 wurde fortgesetzt, das nun die eBPF-Kernel-Subsysteme nutzt. DTrace 2.0 läuft auf eBPF, ähnlich wie bestehende Tracing-Tools in Linux, die auf eBPF basieren.
- Die Funktionen des Btrfs-Dateisystems wurden erweitert. Btrfs unterstützt jetzt eine asynchrone Implementierung der DISCARD-Operation, um freigegebene Blöcke zu kennzeichnen, die physisch nicht mehr gespeichert werden müssen. Die asynchrone Implementierung ermöglicht es, das Ende des DISCARD-Vorgangs durch das Speichergerät abzuwarten und die Operation im Hintergrund durchzuführen. Neue Montageoptionen wurden hinzugefügt, um die Wiederherstellung von Daten aus einem beschädigten Dateisystem zu erleichtern: „rescue=ignorebadroots“ zum Mounten trotz Schäden an bestimmten Wurzelbäumen (extent, uuid, data reloc, device, csum, freier Speicher), „rescue=ignoredatacsums“ zur Deaktivierung der Überprüfung von Prüfziffern für Daten und „rescue=all“ zur gleichzeitigen Aktivierung der Modi ‚ignorebadroots‘, ‚ignoredatacsums‘ und ‚nologreplay‘. Wesentliche Leistungoptimierungen im Zusammenhang mit fsync()-Operationen wurden vorgenommen. Unterstützung für fs-verity (Überprüfung der Authentizität und Integrität von Dateien) und die Zuordnung von Benutzer-IDs wurde hinzugefügt.
- Im XFS wurde die Unterstützung für DAX-Operationen implementiert, um direkten Zugriff auf das Dateisystem zu ermöglichen und gleichzeitig den Seiten-Cache zu umgehen, um doppelte Caching-Prozesse zu vermeiden. Zudem wurden Änderungen vorgenommen, um Probleme mit dem Überlauf des 32-Bit-Datentyps time_t im Jahr 2038 zu beheben, einschließlich der Einführung neuer Mount-Optionen wie bigtime und inobtcount.
- Verbesserungen wurden im OCFS2-Dateisystem (Oracle Cluster File System) umgesetzt.
- Das ZoneFS-Dateisystem wurde hinzugefügt, das die Arbeit mit zonierten Speichergeräten vereinfacht. Unter zonierten Speichermedien versteht man Geräte wie HDDs oder NVMe SSDs, deren Speicherkapazität in Zonen unterteilt ist, die aus Gruppen von Blöcken oder Sektoren bestehen, in die nur sequentiell Daten hinzugefügt werden können, wobei die gesamte Blockgruppe aktualisiert wird. ZoneFS verknüpft jede Zone im Speicher mit einer separaten Datei, die zur Speicherung von Daten im Rohmodus verwendet werden kann, ohne auf der Ebene von Sektoren und Blöcken zu manipulieren. Dadurch können Anwendungen die Datei-API anstelle direkter Zugriffe auf das Blockgerät via ioctl verwenden.
- Die Unterstützung des Protokolls wurde stabilisiert. VPN WireGuard.
- Die Möglichkeiten des eBPF-Subsystems wurden erweitert. Ein CO-RE-Mechanismus (Compile Once — Run Everywhere) wurde implementiert, der das Problem der Portabilität von kompilierten eBPF-Programmen löst und es ermöglicht, den Code von eBPF-Programmen nur einmal zu erstellen. Mit einem speziellen universellen Loader wird das geladene Programm an den aktuellen Kernel und die BTF-Typen (BPF Type Format) angepasst. Ein Mechanismus namens „BPF trampoline“ wurde hinzugefügt, der die Kosten für den Aufruf zwischen Kernel und BPF-Programmen nahezu auf null reduziert. Außerdem gibt es nun direkte Zugriffsoptionen auf die Funktionalität des Kernels aus BPF-Programmen und die Möglichkeit, den Handler zu pausieren.
- Ein Detektor für geteilte Sperren („split lock“) wurde integriert, der auftritt, wenn auf nicht ausgerichtete Daten im Speicher zugegriffen wird, weil bei der Ausführung einer atomaren Anweisung die Daten über zwei Cache-Zeilen des CPU verteilt sind. Der Kernel kann solche Sperren zur Laufzeit erkennen, die zu einem signifikanten Leistungsabfall führen, und Warnungen ausgeben oder ein SIGBUS-Signal an die Anwendung senden, die die Sperre verursacht hat.
- Unterstützung für Multipath TCP (MPTCP) ist gewährleistet. Dies ist eine Erweiterung des TCP-Protokolls, die es ermöglicht, TCP-Verbindungen über mehrere Routen hinweg gleichzeitig über verschiedene Netzwerkschnittstellen, die an unterschiedliche IP-Adressen.
- Im Task-Planer wurde der SCHED_CORE-Planungsmodus implementiert, der es ermöglicht, zu steuern, welche Prozesse gleichzeitig auf einem CPU-Kern ausgeführt werden können. Jedem Prozess kann eine Cookie-ID zugewiesen werden, die den Vertrauensbereich zwischen Prozessen definiert (z. B. die Zugehörigkeit zu einem Benutzer oder Container). Bei der Ausführung des Codes kann der Planer die Nutzung eines CPU-Kerns nur für Prozesse sicherstellen, die mit dem gleichen Besitzer verbunden sind. Dies kann verwendet werden, um bestimmte Angriffe der Spectre-Klasse zu blockieren, indem die Ausführung vertrauenswürdiger und nicht vertrauenswürdiger Aufgaben in einem SMT-Thread (Hyper-Threading) verhindert wird.
- Für cgroups wurde ein Speicherkontroller für Slab (slab memory controller) implementiert, der bemerkenswert ist, weil er die Zuordnung von Slab von der Seitenschicht auf die Objektebene des Kernels verlagert. Dies ermöglicht die gemeinsame Nutzung von Slab-Seiten in verschiedenen cgroups, anstatt separate Slab-Caches für jede cgroup bereitzustellen. Der vorgeschlagene Ansatz verbessert die Effizienz der Slab-Nutzung, reduziert den verwendeten Slab-Speicher um 30-45%, senkt den gesamten Speicherverbrauch des Kernels erheblich und verringert die Speicherfragmentierung.
- Es erfolgt die Bereitstellung von Debugging-Daten im CTF (Compact Type Format), das eine kompakte Speicherung von Informationen über C-Typen, Beziehungen zwischen Funktionen und Debug-Symbolen ermöglicht.
- Die Bereitstellung des DRBD (Distributed Replicated Block Device) Moduls und des Geräts /dev/raw wurde eingestellt (für den direkten Zugang zu Dateien sollte das O_DIRECT-Flag verwendet werden).
Quelle: opennet.ru
