Cisco stellt das PuzzleFS-Dateisystem für den Linux-Kernel vor

Cisco hat ein neues Dateisystem, PuzzleFS, vorgeschlagen, das als Modul für den in Rust geschriebenen Linux-Kernel implementiert ist. Der FS ist für die Aufnahme isolierter Container konzipiert und setzt die Entwicklung der im Atomfs FS vorgeschlagenen Ideen fort. Die Implementierung befindet sich noch im Prototypenstadium, unterstützt die Erstellung mit dem Rust-Next-Linux-Kernelzweig und ist unter den Apache 2.0- und MIT-Lizenzen geöffnet.

Ziel des Projekts ist es, die Einschränkungen zu umgehen, die bei der Verwendung von Container-Images im OCI-Format (Open Container Initiative) entstehen. PuzzleFS befasst sich mit Problemen wie der effizienten Speicherung doppelter Daten, der Fähigkeit zur direkten Bereitstellung, der wiederholbaren Image-Erstellung und der Speichersicherheit.

Für die Deduplizierung von Daten, die in verschiedenen Containern wiederholt werden, wird der FastCDC-Algorithmus (Fast Content-Defined Chunking) verwendet, der Daten in Fragmente beliebiger Größe aufteilt und einen Index mit Hashes der verarbeiteten Fragmente verwaltet. Sich wiederholende Fragmente werden einmal gespeichert und für alle FS-Schichten gemeinsam indiziert, d. h. Die Deduplizierung kann verschiedene Mount-Punkte abdecken (eine neue FS-Schicht kann basierend auf der bestehenden gestartet werden und die darin enthaltenen Datenfragmente während der Deduplizierung verwenden).

Die wiederholbare Zusammenstellung von Containerbildern wird durch die Definition einer kanonischen Darstellung des Containerbildformats erreicht. Durch die direkte Bereitstellung (Direct-Mount) können Sie ein OCI-Container-Image aus dem globalen gemeinsam genutzten Speicher bereitstellen, ohne es zuerst zu entpacken, indem Sie den Inhalts-Hash aus dem Container-Manifest als Kennung verwenden. Um die Integrität von Daten unter den Bedingungen der Nutzung eines Shared Storage zu überprüfen, kann der fs-verity-Mechanismus verwendet werden, der beim Zugriff auf Dateien prüft, ob die im Binärindex angegebenen Hashes dem tatsächlichen Inhalt entsprechen.

Die Sprache Rust wurde ausgewählt, da sie eine hohe Leistung des resultierenden Codes mit speichersicheren Funktionen kombiniert, was das Risiko von Schwachstellen verringert, die durch Probleme wie Speicherzugriff nach der Freigabe und Pufferüberläufe verursacht werden. Die Verwendung von Rust für das Kernelmodul ermöglichte es außerdem, Code in den Kernel- und User-Space-Komponenten gemeinsam zu nutzen, um eine einzige sichere Implementierung zu erstellen.

Weitere Ziele des Projekts sind eine sehr schnelle Erstellung und Bereitstellung von Bildern, die Möglichkeit, eine optionale Zwischenstufe zur Kanonisierung von Bildern zu verwenden, die optionalen FS-Baumdurchläufe im mtree-Stil bei Verwendung einer Schichtstruktur, Änderungen im Casync-Stil und eine einfache zu implementierende Architektur.

Source: opennet.ru

Kommentar hinzufügen