Linux 6.9 mit Virtual Data Optimizer erschienen

Der neue Linux-Kernel integriert den Virtual Data Optimizer (VDO) und verspricht Durchsatzsteigerung bei FUSE-Dateisystemen.

In Pocket speichern vorlesen Druckansicht 61 Kommentare lesen

(Bild: heise online)

Lesezeit: 8 Min.
Von
  • Oliver Müller
Inhaltsverzeichnis

In der Nacht von Sonntag auf Montag gab Linus Torvalds Linux 6.9 frei. Die neueste Inkarnation des Kernels verspricht mit VDO das Einsparen von Speicherplatz und mehr Performance bei FUSE-Dateisystemen. Zudem mistet das Kernel-Team alte, überholte und zukünftig nicht mehr verwendbare Dateisysteme konsequent aus.

Der "Virtual Data Optimizer" (VDO) ist ein Device-Mapper. Als solcher schiebt er sich zwischen das eigentliche Speichermedium und das Dateisystem. Er bietet damit in Richtung des Dateisystems ein virtuelles Blockgerät (Block-Device) an, das dieses wie eine Festplatte, SSD oder SAN ansprechen kann. Die virtuellen Geräte von VDO präsentieren sich damit ähnlich wie die virtuellen Volumes des LVM (Logical Volume Manager).

VDO verspricht durch "Deduplication" das Reduzieren von Speicherplatzbedarf. Statt die gleichen Daten mehrfach auf das Speichermedium zu schreiben, erkennt es Duplikate von Blöcken beziehungsweise Datensätzen und fasst diese zusammen. Hierzu schafft es virtuelle Blockadressen, die an die Nutzer der Speicher weitergereicht werden. Intern bündelt es diese auf einen physischen Block (Shared Block) auf dem Speichergerät.

Sobald ein Schreibzugriff auf diesen Shared Block erfolgt, erzeugt VDO einen neuen physischen Block. Die schreibende virtuelle Blockadresse zeigt dann auf den neuen physischen Block. Alle anderen virtuelle Blöcke verbleiben auf dem alten physischen Block. Ein klassischen "Copy on Write", allerdings nicht als Dateisystem-Feature, sondern als Device-Mapper.

Zusätzlich zur Deduplication bietet VDO auch optional das Komprimieren des zugrunde liegenden Speichermediums an. Dabei komprimiert es grundsätzlich Blöcke, die keine Shared Blocks, also nur einmal vorhanden sind. Beim Anlegen eines neuen physischen Blocks komprimiert VDO diesen per Standard. Zur Kompression kommt der LZ4-Algorithmus zum Einsatz.

Die Kompression funktioniert am besten mit Dateiformaten, die keine eigene Redundanz auf Blockebene anbieten. Für Dateisystem-Logs und physische Volumes von Datenbanken ist die VDO-Kompression eher hinderlich bis unnütz. Bei "normalen" Daten auf Dateisystemen hingegen trägt die Kompression neben der Deduplication zum Reduzieren des Speicherbedarfs bei.

Durch die "Zero-Block Elimination" verwaltet VDO außerdem in Blocks nur echte Daten. Alle Blöcke, die nur Nullen (Zeros) enthalten, speichert VDO nicht wirklich. Nullblöcke belegen keinen Speicher.

VDO war bereits außerhalb des Mainline-Kernels auf produktiven Systemen im Einsatz. Ursprünglich entwickelte Permabit Technology den VDO seit 2009. Der war seit 2013 für produktive Systeme freigeben. Als 2013 Red Hat Permabit übernahm, wurde die ursprünglich proprietäre Software Open-Source und fand einen festen Platz in Red Hats Betriebsystemen; allen voran der Enterprise-Distribution RHEL. Mit Linux 6.9 ist der produktiv erprobte VDO nun fester Bestandteil des Mainline-Kernel.

Zugunsten des leistungsfähigeren ntfs3 streicht der neue Kernel den alten ntfs-Treiber. Linux 5.15 führte den von Paragon stammenden Treiber "ntfs3" für das Windows-Dateisystem ein. Dieser unterstützt NTFS 3.1 und ist damit deutlich kompatibler zu Windows als der alte, fast schon vergessene Treiber.

Der alte Treiber ntfs ließ viele Funktionen missen. Zudem konnte sein nur rudimentärer Schreibzugriff für die eine oder andere unangenehme Überraschung sorgen. Die meisten Distributionen wichen daher bereits auf den FUSE-Treiber (Filesystem in Userspace) ntfs-3g aus. Damit Mounts mit nfts als Dateisystem weiterhin funktionieren, ist mit Linux 6.9 ntfs schlicht ein Alias auf ntfs3. Wer NTFS-Dateisystem noch mit nfts einhängt, beispielsweise über einen Eintrag in der /etc/fstab, muss zunächst nichts ändern. Mit dem Kernel-Wechsel bedient automatisch ntfs3 das Dateisystem. Vergleichbar ist dieser Alias mit ext3, welches auch einen Alias auf ext4 darstellt.

Der Veteran unter den Dateisystemen, ext2, markiert der neue Kernel als "deprecated" (überholt, veraltet). Notwendig ist dieser Schritt, da ext2 nicht mit Daten jenseits des 19. Januar 2038 umgehen kann. Die auf 32 Bit basierende Unix-Zeit wird dann überlaufen und ohne Maßnahmen wieder mit dem 1. Januar 1970 beginnen. Der ext2-Treiber lässt sich zwar weiterhin nutzen. Seinen Einsatz quittiert der Kernel allerdings mit einer Warnung, die auf das Datumsproblem hinweist. Alternativ können ext2-Dateisystem auch mit dem ext4-Treiber hingehängt werden.

Idealerweise sollte der Einsatz von ext2-Dateisystemen jedoch grundsätzlich vermieden werden. So zumindest die Empfehlung, die bei konsequent über Jahre aktualisierten Systemen Mehraufwand generieren dürfte. ext2 wurde gerne als letztes Überbleibsel für /boot verwendet. Immerhin haben Systemadministratoren solcher Systeme bis 2038 noch ausreichend Zeit. Eine Ausnahme bilden ARM64-Systeme. Dort streicht das Kernel-Team ext2 und das redundante ext3 komplett. Wer auf solchen Systemen ext2 im Einsatz haben sollte, muss diese zukünftig gleich mit dem ext4-Treiber mounten. ext3 macht dank des oben bereits erwähnten Alias auf ext4 keine manuellen Eingriffe nötig.

FUSE (Filesystem in Userspace) erlaubt es, Dateisysteme im Userspace statt als Kernel-Modul zu implementieren. Ein im Userspace angesiedelter Server bildet das eigentliche Dateisystem mit seinen Dateisystemstrukturen und Metadaten ab. Für die notwendigen privilegierten Hardware-Zugriffe verwendet dieser Server das von Linux bereitgestellte FUSE-Framework.

Bislang wanderten alle FUSE-Zugriffe auf dem Weg zum und vom Kernel durch den entsprechenden Server. Das drückt prinzipiell die Performance und mag in dem einen oder anderen Anwendungsfall störend wirken. Linux 6.9 hat hierfür nun den ersten Wurf des "FUSE-Passthrough" im Gepäck. Damit können I/O-Zugriffe – sobald die entsprechende Datei geöffnet ist – direkt auf den Kernel erfolgen. Der Server fungiert dabei nicht mehr als "Durchlauferhitzer".

Das jeweilige FUSE-Dateisystem respektive dessen Server muss dabei das neue Feature unterstützen. Außerdem funktioniert das nur bei privilegierten Servern, sprich solchen, die die Capability CAP_SYS_ADMIN gesetzt haben. Spätere Versionen von FUSE-Passthrough sollen auch ohne dieses Privileg auskommen.

Bei NFSv4 erhalten Systemadministratoren die Möglichkeit, den Open- und Lock-Status von Dateien zurückzusetzen. Die Arbeiten am Journaling-Dateisystem XFS schreiten voran, um einen Dateisystem-Check und die Reparatur bei eingehängtem Dateisystem (Online-Check und -Repair) zu ermöglichen. Aber auch in Linux 6.9 ist dies noch nicht produktiv möglich.

Rust lässt sich nun auch auf 64-Bit-ARM-System zum Schreiben von Kernel-Modulen nutzen. Auch ist der LPA2-Modus zum Setzen von 52 Bit für virtuelle Adressen im Kernel angekommen.

Auf der chinesischen LoongArch-Architektur lässt sich ein Kernel nun auch live patchen. Zudem ist der "ORC Stack Unwinder" auf LoongArch verfügbar.

Auf der Großrechnerarchitektur S/390 von IBM hatte der Kernel lange Zeit virtuelle Adresse mit der physikalischen Adresse gleichgesetzt. In der Tat waren die Werte identisch. Für das Mainframe-Umfeld eher ungewöhnlich, führte das zu ziemlicher Ungenauigkeit. Ob nun der Wert der virtuellen oder der physischen Adresse zum Einsatz kam, es funktionierte selbst beim Verwechseln derselben. Es gibt nun Bestebungen, den Kernelspace vom Userspace auf S/390 zu separieren. Das kann nur durch sauberes Auseinanderhalten von virtuellen und physischen Adressen funktionieren. Der neue Kernel führt daher einige neue Typen ein, um physische Adressen zu markieren. Damit sollen mithilfe von Tools die falsch verwendeten Adressen und der entsprechende Code identifiziert werden.

Linux 6.9 ist ein konsequentes Wartungsrelease, das primär Aufräumarbeiten durchführt. Neu ist VDO, jedoch hauptsächlich außerhalb der Red-Hat-Welt. Das FUSE-Passthrough lässt auf mehr Leistung und Durchsatz bei den Userspace-Dateisystemen hoffen.

Der neue Linux-Kernel steht auf kernel.org zum Download bereit. Sämtliche Änderungen finden sich im ausführlichen Kernel-Changelog.

(dmk)