Anbieter von Software-Defined Storage

OpenStack-Cinder-Erweiterungen für einen Software-Defined-Storage-Anbieter

Cloudification half einem Unternehmen für Storage-Software dabei, wichtige OpenStack-Änderungen nach mehr als zwei Jahren festgefahrener Review-Prozesse erfolgreich in den Upstream-Code zu integrieren.

Upstream-Änderungen in OpenStack integriert

Auswirkungen auf Cinder, Nova und os-brick

Einige Änderungen waren fast 3 Jahre lang im Review-Prozess

Unternehmen

Bulgarien und USA · 101–500 Mitarbeitende

Der Kunde ist ein Unternehmen mit Niederlassungen in Bulgarien und den USA, das Software-Defined-Storage-Systeme entwickelt. Das Unternehmen beschäftigt zwischen 101 und 500 Mitarbeitende.

Das Produkt des Kunden ist in OpenStack integriert. OpenStack Cinder wird für die Bereitstellung von Blockspeicher verwendet. Ein Storage-Treiber ermöglicht dabei die Kommunikation zwischen Cinder und dem jeweiligen Speichersystem.

Herausforderung

Cloudification war an der Entwicklung und Erweiterung von OpenStack Cinder und Nova für das Speichersystem des Kunden beteiligt. Vor Beginn des Projekts war es dem Kunden über mehr als zwei Jahre hinweg nicht gelungen, die Änderungen in den OpenStack-Upstream-Code aufnehmen zu lassen.

Die Arbeiten umfassten sowohl Änderungen an der kundenspezifischen Integration als auch Änderungen, die für die Aufnahme in die OpenStack-Upstream-Codebasis und die CI/CD-Prozesse vorgesehen waren.

Upstream-Änderungen in OpenStack durchlaufen einen öffentlichen Code-Review-Prozess. Core Reviewer und PTLs (Project Technical Leads) der jeweiligen Komponenten vergeben im OpenStack-Gerrit-Review-System eine Bewertung von „+2“, um Änderungen freizugeben. Sobald alle Tests erfolgreich abgeschlossen sind und zwei „+2“-Bewertungen vorliegen, werden die Änderungen in den Hauptcode übernommen und werden Bestandteil des jeweiligen OpenStack-Projekts im kommenden Release. Dieselben Änderungen werden häufig auch auf frühere, weiterhin unterstützte Releases zurückportiert.

Besonderheit des Projekts

Das Ergebnis ist öffentlich überprüfbar: Die entsprechenden Änderungen sind in OpenDev Gerrit verfügbar, dem von OpenStack verwendeten Code-Review-System.

Besonderheiten des Projekts

The work affected code related to the integration between the client’s storage system and OpenStack.

Die öffentlich zugängliche Änderungsserie umfasst Aktualisierungen in den Repositories openstack/cinder, openstack/nova und openstack/os-brick Dazu gehören beispielsweise:

Verbesserungen an create_cloned_volume()

Fehlerbehebungen bei StorPool-Operationen

Korrektur eines Unit-Tests für die Umbenennung von Volumes

Entfernung der veralteten Funktion backup_volume()

Änderungen beim Anhängen und Trennen von Volumes

Es handelte sich um eine Reihe von Änderungen an der StorPool-Speicherintegration in OpenStack, die in einer bestimmten Reihenfolge in den Hauptcode übernommen werden mussten.

Lösung

Das Cloudification-Team arbeitete an der Weiterentwicklung der Integration des Speichersystems des Kunden in OpenStack und unterstützte die erfolgreiche Aufnahme der vorbereiteten Änderungen in den OpenStack-Upstream-Code.

Die Arbeiten betrafen mehrere Bereiche von OpenStack Cinder, Nova und os-brick. Dazu gehörten Verbesserungen beim Klonen von Volumes, einschließlich des Klonens zwischen verschiedenen Storage-Pools, die Implementierung der Wiederherstellung von Volumes aus Snapshots (Volume Revert to Snapshot), Fehlerbehebungen bei Retype- sowie Attach/Detach-Operationen und die Entfernung veralteter Methoden.

Ein weiterer Teil der Arbeiten konzentrierte sich auf die Integrationsarchitektur selbst. In os-brick wurden die Operationen zum Anhängen und Trennen von Volumes auf die direkte Nutzung der StorPool-API umgestellt. Weitere akzeptierte Änderungen beseitigten die Abhängigkeiten von den separaten Python-Paketen storpool und storpool.spopenstack und integrierten die erforderliche Funktionalität direkt in die OpenStack-Codebasis.

Einige Änderungen befanden sich über einen langen Zeitraum im Upstream-Review-Prozess. Beispielsweise wurde das erste Patchset zur Entfernung der veralteten Methode backup_volume() im August 2021 hochgeladen. Erst im Mai 2024 erhielt diese Änderung den Status Merged im OpenStack-Review-System.

OpenDev Gerrit: Beispiele für akzeptierte Upstream-Änderungen an der StorPool-Integration in OpenStack

Ergebnis

Eine Reihe von Änderungen an der Integration des Speichersystems des Kunden in OpenStack wurde geprüft und in den Upstream-Code übernommen.

Die akzeptierten Änderungen betrafen die Repositories openstack/cinder, openstack/nova und openstack/os-brick Sie umfassten Volume- und Snapshot-Operationen, das Klonen zwischen verschiedenen Storage-Pools, Attach/Detach-Operationen sowie die Weiterentwicklung der StorPool-Integration in OpenStack.

Für den Kunden bestand das Ergebnis in einer Reihe von Verbesserungen an seiner Speicherintegration, die in die offizielle OpenStack-Codebasis aufgenommen wurden und für die Endnutzer der Lösung von entscheidender Bedeutung sind. Die Review- und Commit-Historie ist in OpenDev Gerrit öffentlich zugänglich.

Technologien

Frame 1

OpenStack

Ubuntu

Ansible

Group 10

Python

Bash