Die Firma Oracle hat stabile Versionen der Distribution Oracle Linux 9 und des Unbreakable Enterprise Kernel 7 (UEK R7) veröffentlicht, die als Alternative zum Standardkernel-Paket von Red Hat Enterprise Linux in der Distribution Oracle Linux positioniert wird. Die Distribution Oracle Linux 9 basiert auf dem Paketfundament von Red Hat Enterprise Linux 9 und ist vollständig binär kompatibel mit diesem.
Für den uneingeschränkten Download stehen Installations-ISO-Abbilder mit einer Größe von 8,6 GB und 840 MB zur Verfügung, die für die Architekturen x86_64 und ARM64 (aarch64) vorbereitet wurden. Für Oracle Linux 9 ist ein uneingeschränkter und kostenloser Zugang zum yum-Repository mit binären Paketupdates zu Fehlerbehebungen (Errata) und Sicherheitsproblemen verfügbar. Außerdem wurden separat unterstützte Repositories mit Paketsets für Application Stream und CodeReady Builder vorbereitet.
Neben dem Kernel-Paket aus RHEL (basierend auf Kernel 5.14) bietet Oracle Linux einen eigenen Unbreakable Enterprise Kernel 7, der auf Kernel 5.15 basiert und für den Einsatz mit industrieller Software und Oracle-Hardware optimiert ist. Der Quellcode des Kernels, einschließlich der Aufteilung in einzelne Patches, ist im öffentlichen Git-Repository von Oracle verfügbar. Der Unbreakable Enterprise Kernel wird standardmäßig installiert, wird als Alternative zum RHEL-Kernel-Paket positioniert und bietet eine Reihe erweiterter Funktionen, wie die Integration von DTrace und verbesserte Btrfs-Unterstützung. Abgesehen vom zusätzlichen Kernel sind die Versionen Oracle Linux 9 und RHEL 9 vollständig identisch (eine Liste der Änderungen finden Sie in der Ankündigung RHEL9).
Wichtige Neuerungen im Unbreakable Enterprise Kernel 7:
- Die Unterstützung der Aarch64-Architektur wurde verbessert. Die Seitengröße im Arbeitsspeicher der 64-Bit-ARM-Systeme wurde standardmäßig von 64 KB auf 4 KB verringert, was besser mit den Speichermengen und Belastungsarten vereinbar ist, die für ARM-Systeme typisch sind.
- Die Bereitstellung des dynamischen Debugging-Systems DTrace 2.0 wurde fortgesetzt, das auf die Verwendung der eBPF-Kernel-Subsystem umgestellt wurde. DTrace 2.0 funktioniert über eBPF, ähnlich wie die bestehenden Tracing-Tools in Linux, die auf eBPF basieren.
- Die Möglichkeiten des Btrfs-Dateisystems wurden erweitert. Btrfs hat eine asynchrone Implementierung der DISCARD-Operation hinzugefügt, um freigegebene Blöcke zu kennzeichnen, die physisch nicht mehr gespeichert werden müssen. Die asynchrone Implementierung ermöglicht es, nicht auf den Abschluss des DISCARD durch das Speichermedium zu warten und diese Operation im Hintergrund auszuführen. Neue Montageoptionen wurden hinzugefügt, um die Datenwiederherstellung bei beschädigten Dateisystemen zu vereinfachen: "rescue=ignorebadroots" zum Einhängen trotz Beschädigungen einiger Wurzelbäume (extent, uuid, data reloc, device, csum, free space), "rescue=ignoredatacsums" zum Deaktivieren der Überprüfung von Prüfziffern der Daten und "rescue=all" zur gleichzeitigen Aktivierung der Modi 'ignorebadroots', 'ignoredatacsums' und 'nologreplay'. Wesentliche Leistungsoptimierungen im Zusammenhang mit der Ausführung von fsync()-Operationen wurden vorgenommen. Unterstützung für fs-verity (Überprüfung der Authentizität und Integrität von Dateien) und Zuordnung von Benutzer-IDs wurde hinzugefügt.
- In XFS wurde die Unterstützung von DAX-Operationen für den direkten Zugriff auf das Dateisystem ohne Seiten-Cache zur Vermeidung einer doppelten Cache-Nutzung implementiert. Änderungen wurden hinzugefügt, um Probleme mit dem Überlauf des 32-Bit-Datentyps time_t im Jahr 2038 zu lösen, einschließlich neuer Montageoptionen bigtime und inobtcount.
- Verbesserungen im OCFS2-Dateisystem (Oracle Cluster File System).
- Es wurde das ZoneFS-Dateisystem hinzugefügt, das die low-level Arbeit mit zonierten Speichergeräten vereinfacht. Mit zonierten Laufwerken sind Geräte auf magnetischen Festplatten oder NVMe SSD gemeint, deren Speicherplatz in Zonen unterteilt ist, die aus Gruppen von Blöcken oder Sektoren bestehen, in die Daten nur sequenziell hinzugefügt werden dürfen, wobei die gesamte Gruppe von Blöcken aktualisiert wird. Das ZoneFS-Dateisystem verknüpft jede Zone im Speicher mit einer separaten Datei, die zur Speicherung von Daten im Rohmodus ohne Manipulation auf Block- und Sektorenebene verwendet werden kann, d.h., es ermöglicht Anwendungen die Nutzung der Datei-API anstelle des direkten Zugriffs auf das Blockgerät über ioctl.
- Die Unterstützung des Protokolls wurde stabilisiert. VPN für WireGuard.
- Die Funktionen des eBPF-Subsystems wurden erweitert. Ein CO-RE (Compile Once — Run Everywhere) Mechanismus wurde implementiert, der das Problem der Portabilität von kompilierten eBPF-Programmen löst und es ermöglicht, eBPF-Programmcodes nur einmal zu kompilieren und einen speziellen universellen Loader zu verwenden, der das zu ladende Programm an den aktuellen Kernel und die BTF-Typen (BPF Type Format) anpasst. Ein „BPF trampoline“-Mechanismus wurde hinzugefügt, der die Overheadkosten beim Aufruf zwischen dem Kernel und BPF-Programmen nahezu auf null reduziert. Es wurden Möglichkeiten zur direkten Ansprache der Kernel-Funktionalität aus BPF-Programmen und zur Unterbrechung des Handlers bereitgestellt.
- Ein Split-Lock-Detektor wurde integriert, der aufgetretene Split-Locks erkennt, die entstehen, wenn auf nicht ausgerichtete Daten im Speicher zugegriffen wird, weil beim Ausführen einer atomaren Anweisung die Daten zwei Cache-Linien des CPU überschreiten. Der Kernel kann solche Lockups in Echtzeit erkennen, die zu erheblichen Leistungseinbußen führen, und Warnungen ausgeben oder ein SIGBUS-Signal an die Anwendung senden, die die Blockierung verursacht hat.
- Die Unterstützung für Multipath TCP (MPTCP) wurde gewährleistet, eine Erweiterung des TCP-Protokolls zur Einrichtung einer TCP-Verbindung, bei der Pakete gleichzeitig über mehrere Routen durch unterschiedliche Netzwerkinterfaces gesendet werden, die an verschiedene. IP-Adressen.
- Im Task-Scheduler wurde der SCHED_CORE-Planungsmodus implementiert, der steuert, welche Prozesse gemeinsam 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. Zugehörigkeit zu demselben Benutzer oder Container). Bei der Ausführung von Code kann der Scheduler sicherstellen, dass ein CPU-Kern nur für Prozesse verwendet wird, die einem einzigen Eigentümer zugeordnet sind, was zur Blockierung bestimmter Spectre-Angriffe verwendet werden kann, indem verhindert wird, dass vertrauenswürdige und nicht vertrauenswürdige Aufgaben in einem SMT-Thread (Hyper-Threading) ausgeführt werden.
- Für cgroups wurde ein Slab-Speichercontroller (slab memory controller) implementiert, der dadurch auffällt, dass die Zählung des Slabs von der Seite der physischen Speicherseiten auf die Objektebene des Kernels verlagert wird. Dies ermöglicht die gemeinsame Nutzung von Slab-Seiten in verschiedenen cgroups, anstatt separate Slab-Caches für jede cgroup bereitzustellen. Der vorgeschlagene Ansatz ermöglicht eine höhere Effizienz bei der Nutzung des Slabs, reduziert den benötigten Slab-Speicher um 30-45% und verringert erheblich den gesamten Speicherverbrauch des Kernels sowie die Speicherfragmentierung.
- Die Bereitstellung von Debugging-Daten im CTF-Format (Compact Type Format) gewährleistet eine kompakte Speicherung von Informationen über C-Typen, Beziehungen zwischen Funktionen und Debug-Symbolen.
- Die Bereitstellung des DRBD-Moduls (Distributed Replicated Block Device) und des Geräts /dev/raw wurde eingestellt (für den direkten Zugriff auf Dateien sollte das Flag O_DIRECT verwendet werden).
Quelle: opennet.ru
