-
HINTERGRUND
-
Container sind eine Art der Virtualisierung. Ein Container kann eine Anwendung zusammen mit Abhängigkeiten und Bibliotheken paketiert enthalten. Eine containerisierte Anwendung kann persistente Daten verwenden oder erzeugen.
-
Figurenliste
-
Im Folgenden werden verschiedene Beispiele anhand der folgenden Abbildungen beschrieben.
- BILD 1 stellt ein Beispielsystem dar, das ein virtuelles persistentes Volume erstellt, das eine Vielzahl verschiedener zugrunde liegender Speicher aggregiert und einer containerisierten Anwendung präsentiert wird.
- BILD 2 zeigt eine Beispielmethode, die die Erstellung eines virtuellen persistenten Volumens beinhaltet.
- BILD 3 zeigt eine Beispielmethode, die die Ausführung eines Datendienstes mit einem virtuellen persistenten Volumen beinhaltet.
- BILD 4. zeigt ein Beispielsystem mit einem maschinenlesbaren Medium, das Anweisungen zur Erstellung eines virtuellen persistenten Datenträgers enthält.
-
DETAILLIERTE BESCHREIBUNG
-
Die Containertechnologie ist ein Paradigma der Computervirtualisierung, bei dem eine Anwendung zusammen mit Abhängigkeiten und Bibliotheken in einen Container gepackt wird, um eine isolierte Umgebung für die Ausführung der Anwendung bereitzustellen. Eine solche Anwendung kann als containerisierte Anwendung bezeichnet werden. Viele Container können auf einem einzigen Betriebssystem laufen, aber jeder Container ist inhärent von anderen Containern isoliert. Auf diese Weise kann das Container-Paradigma als Virtualisierung des Betriebssystems verstanden werden. Container können leichter sein als andere Formen der Virtualisierung, wie z.B. virtuelle Maschinen, die Hardware virtualisieren. Beispielsweise kann jede virtuelle Maschine ihre eigene Kopie eines Betriebssystemkerns haben, während sich im Gegensatz dazu mehrere Container einen Betriebssystemkern teilen können.
-
Containerisierte Anwendungen benötigen möglicherweise Speicherplatz, um persistente Daten zu erhalten. Container-Orchestratoren können die Möglichkeit bieten, einen Teil des Speichers für einen Container bereitzustellen. Es gibt jedoch viele Arten von Speicher, einschließlich, aber nicht beschränkt auf Speicher, der lokal zum Container, entfernt zum Container, Hardware (z.B. ein lokal angeschlossenes Laufwerk), softwaredefiniert (z.B. ein Dateisystem, virtualisierter oder containerisierter Speicher, über eine API dargestellter Speicher usw.) oder Speicher mit einer Kombination der oben genannten Aspekte ist. Frühere Bemühungen um die Bereitstellung von Container-Speicherplatz bieten möglicherweise nicht den Grad an Flexibilität bei der Speicherkonfiguration und den Datendiensten, den Benutzer und Administratoren von Container-Umgebungen wünschen. Beispielsweise kann ein Container-Orchestrator auf die Bereitstellung eines einzigen Speichertyps für eine Anwendung beschränkt sein. Andere Systemtypen können versuchen, mehrere Datenträger zu einem einzigen Datenträger zu verketten, aber eine solche Verkettung bietet möglicherweise nicht die Flexibilität, bestimmte Datendienste ohne Unterbrechung des Benutzerzugriffs auf die Daten bereitzustellen.
-
Im Gegensatz dazu kann die Fähigkeit, eine beliebige Mischung beliebiger Speichertypen in einem virtuellen persistenten Volume in einer Containerumgebung bereitzustellen und dieses virtuelle persistente Volume in einer hochgradig virtualisierten Weise zu verwalten, Konfigurationsflexibilität und robuste, konsistente Datendienste ermöglichen, die Effizienzen und Vorteile für einen Containernutzer (einschließlich Administratoren) erschließen. Das virtuelle persistente Volume kann die zugrundeliegende Speichermischung von der Art und Weise entkoppeln, wie die Daten abstrahiert und einem Datenkonsumenten, z. B. einer containerisierten Anwendung, präsentiert werden. Infolgedessen können Datendienste wie Tiering, Migration, Snapshot-basierte Sicherung, Datensicherung usw. auf dem virtuellen persistenten Volume auf eine Art und Weise durchgeführt werden, die für eine containerisierte Anwendung, die das virtuelle persistente Volume verwendet, transparent und nicht störend ist, und sie können auch auf eine konsistente und vorhersehbare Art und Weise durchgeführt werden, unabhängig von der zugrunde liegenden Speichermischung, aus der das virtuelle persistente Volume besteht.
-
Um die oben genannten technischen Vorteile zu bieten, können sich die hier beschriebenen Beispiele auf ein containerisiertes Speichervirtualisierungssystem beziehen, das eine Speicheranforderung von einer containerisierten Anwendung empfängt, entsprechend der Anforderung eine Vielzahl unterschiedlicher Speicher-Mounts von lokalen und entfernten Speichertypen erwirbt, ein virtuelles persistentes Volume erstellt, das die Vielzahl unterschiedlicher Speicher-Mounts aggregiert (und somit die entsprechenden lokalen und entfernten Speicherzuweisungen aggregiert) und der containerisierten Anwendung einen Mount-Punkt des virtuellen persistenten Volumes zur Verfügung stellt. Das virtuelle persistente Volume kann in Form einer hierarchischen Struktur, wie z.B. einem Merkle-Baum, vorliegen, der Datenobjekte der containerisierten Anwendung durch ihre inhaltsbasierten Signaturen mit einem Wurzelobjekt verbindet. Das Wurzelobjekt kann das gesamte virtuelle persistente Volume repräsentieren. Außerdem kann der Mount-Punkt des virtuellen persistenten Volumes eine beliebige Art der Speicherzugriffsabstraktion sein, die vom containerisierten Speichervirtualisierungssystem verstanden wird, wie z. B. Datei-, Block- oder Schlüssel/Wertspeicher. Auf diese Weise kann aufgrund des Vorstehenden ein virtuelles persistentes Volume erstellt werden, das den zugrunde liegenden Speicher von der containerisierten Anwendung entkoppelt.
-
Unter Bezugnahme auf die Zahlen stellt BILD 1 ein Beispiel für ein Computersystem 100 dar, das eine Containerumgebung 120 unterstützt und daran teilnimmt. Das Rechensystem 100 umfasst eine Verarbeitungsressource 102, die einen Mikrocontroller, einen Mikroprozessor, Zentraleinheit(en), eine anwendungsspezifische integrierte Schaltung (ASIC), ein FPGA (Field Programmable Gate Array) usw. umfassen kann. Das Computersystem 100 enthält ein maschinenlesbares Medium 104, das nicht vorübergehend sein kann und einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), einen Flash-Speicher, ein Festplattenlaufwerk usw. enthalten kann.
-
Die Verarbeitungsressource 102 kann Anweisungen 105 (d.h. Programmier- oder Softwarecode) ausführen, die auf einem maschinenlesbaren Medium 104 gespeichert sind, um Funktionen des Computersystems 100 auszuführen, wie z.B. die Bereitstellung eines Container-Orchestrators 122 und eines containerisierten Speichersystems 130, wie weiter unten beschrieben wird. Insbesondere kann jede der Komponenten des containerisierten Speichervirtualisierungssystems 130 als ausführbare Anweisungen 105 implementiert werden, einschließlich des Datendienstanbieters 134, des Speichervirtualisierers 136, des Datenträgermanagers 138, der Adapter 139, der Policy Engine 142 und der Container-Speicherschnittstelle API 144. Containerisierte Anwendungen 124, 126 und Container-Speicherschnittstellen-Plug-ins 128 können auch als Anweisungen implementiert werden, die in den ausführbaren Anweisungen 105 enthalten sind. Zusätzlich oder alternativ kann die Verarbeitungsressource 102 elektronische Schaltungen zur Ausführung der hier beschriebenen Funktionalität enthalten.
-
Das Computersystem 100 kann auch andere Hardwarekomponenten enthalten, wie z.B. den physischen Speicher 106. Der physische Speicher 106 kann jedes physische Speichergerät, wie z.B. ein Festplattenlaufwerk, ein Festkörperlaufwerk oder ähnliches, oder eine Vielzahl solcher Speichergeräte (z.B. eine Anordnung von Platten) umfassen und kann lokal im Computersystem 100 angeschlossen (d.h. installiert) sein. In einigen Implementierungen kann auf den physischen Speicher 106 als Blockspeichergerät zugegriffen werden.
-
In einigen Fällen kann das Computersystem 100 auch ein lokales Dateisystem 108 enthalten, das als Schicht über dem physischen Speicher 106 implementiert werden kann. Beispielsweise kann ein Betriebssystem 107 auf dem Computersystem 100 ausgeführt werden (aufgrund der Verarbeitungsressource 102, die bestimmte Anweisungen 105 in Bezug auf das Betriebssystem ausführt), und das Betriebssystem 107 kann ein Dateisystem 108 bereitstellen, um Daten auf dem physischen Speicher 106 zu speichern.
-
Das Computersystem 100 kann mit anderen Computersystemen, wie z.B. dem Computersystem 110, über ein drahtgebundenes und/oder drahtloses Netzwerk kommunizieren. Die anderen Computersysteme können ähnlich wie das Computersystem 100 sein und können jeweils mindestens eine Verarbeitungsressource und ein maschinenlesbares Medium enthalten. Die Computersysteme 100 und 110 können jeweils Software ausführen (d.h. die Verarbeitungsressource 102 führt bestimmte Anweisungen 105 aus), um Knoten eines Container-Orchestrators 122 bereitzustellen. Mit anderen Worten, der Container-Orchestrator 122 kann eine Cluster-Architektur haben, die die Container-Orchestrator-Knoten von in einem Cluster zusammengeschlossenen Computersystemen umfasst. Der Container-Orchestrator 122 fungiert als Plattform für die Bereitstellung und Verwaltung containerisierter Anwendungen im gesamten Cluster von Computersystemen. Der Container-Orchestrator 122, davon entfaltete containerisierte Anwendungen und andere Container-Ressourcen (wie z.B. Container-Speicher) gelten als innerhalb einer Container-Umgebung 120. Im Gegensatz dazu können andere Elemente außerhalb der Container-Umgebung 120 funktionieren, wie z.B. das lokale Dateisystem 108 und ein Betriebssystem 107 des Computersystems 100.
-
Zur Veranschaulichung werden in BILD 1 die containerisierten Anwendungen 124 und 126 über den Container-Orchestrator 122 lokal auf dem Rechnersystem 100 eingesetzt. Man kann also sagen, dass die Anwendungen 124, 126 von anderen Knoten, wie z.B. dem Rechnersystem 110, entfernt sind. Die containerisierten Anwendungen 124, 126 können Mikrodienste, Benutzeranwendungen oder ähnliches darstellen. Die Containerumgebung 120 kann auch containerisierte Anwendungen (nicht abgebildet) lokal auf anderen Rechnersystemen im Cluster hosten.
-
Der Container-Orchestrator 122 setzt auch ein containerisiertes Speichervirtualisierungssystem 130 ein, das im Folgenden ausführlicher beschrieben wird. Im Beispiel von BILD 1 wird das containerisierte Speichervirtualisierungssystem 130 auch lokal auf dem Computersystem 100 und dessen Verarbeitungsressource 102 ausgeführt. In einigen Implementierungen sind auch andere containerisierte Speichervirtualisierungssysteme anderer Rechnersysteme im Cluster in der Containerumgebung 120 enthalten, obwohl sie in BILD 1 nicht dargestellt sind. Beispielsweise kann das containerisierte Speichervirtualisierungssystem 130 als Knoten in einer Speichervirtualisierungsplattform mit einer Cluster-Architektur dienen, bei der mehrere containerisierte Speichervirtualisierungssysteme (von denen zumindest einige auf verschiedenen und getrennten physischen Computersystemen ausgeführt werden können) zusammenarbeiten, um Daten in einer Speichervirtualisierungsschicht zu speichern und zu verwalten.
-
Der Container-Orchestrator 122 kann auch eine standardisierte Container-Speicherschnittstelle 123 enthalten. Die Container-Speicherschnittstelle 123 hat eine Plug-In-Architektur und kann Speicher in Form eines persistenten Volumes aus einer Speicherquelle unter Verwendung eines entsprechenden von mehreren verfügbaren Container-Speicherschnittstellen-Plug-Ins 128 bereitstellen. Die „Bereitstellung“ von Speicher kann sich auf den Prozess der Zuweisung einer bestimmten Menge an Speicherkapazität und die Bereitstellung dieser Zuweisung für einen Verbraucher beziehen. Plug-ins 128 können von verschiedenen Anbietern bereitgestellt werden und können ein zugeordnetes Speichersystem der Container-Speicherschnittstelle 123 aussetzen. Zu den nicht einschränkenden Beispielen für Plug-ins gehören ein Blockprotokoll-Plug-in (z.B. auf der Grundlage des Internet Small Computer Systems Interface oder des iSCSI-Protokolls), ein Dateiprotokoll-Plug-in (z.B. auf der Grundlage des Network File System oder des NFS-Protokolls, des Common Internet File System oder des CIFS-Protokolls, des Server Message Block oder des SMB-Protokolls), ein Public Cloud Persistent Volume Plug-in und andere Plug-ins, die auf einem anderen Speichertyp basieren (z.B. kundenspezifische Treiber). Der Einfachheit halber können einzelne der Plug-ins 128 hier als Plug-in 128 bezeichnet werden (z.B. ein Blockprotokoll-Plug-in 128 oder ein Dateiprotokoll-Plug-in 128). Ein Plug-in 128 kann einen Installations- und Einrichtungsprozess in der Container-Umgebung 120 durchlaufen, wie es für dieses Plug-in erforderlich ist (z.B. das Ausfüllen von Zugangsdaten oder andere Konfigurationsdetails). In einigen Fällen kann eines oder mehrere der Plug-Ins 128 als containerisierte Anwendung ausgeführt werden. Ein persistenter Datenträger, der über das Plug-in 128 bereitgestellt wird, kann jedoch auf einen einzigen Speichertyp beschränkt sein, der diesem Plug-in entspricht. Im Gegensatz dazu kann das hierin vorteilhaft offen gelegte containerisierte Speichervirtualisierungssystem 130 für die Erstellung persistenter Volumes nützlich sein, die mehrere zugrunde liegende Speichertypen vermischen.
-
Das containerisierte Speichervirtualisierungssystem 130 (auch als Speichervirtualisierungssystem 130 bezeichnet) läuft innerhalb eines oder mehrerer Container und kann in ausführbaren Anweisungen 105 implementiert werden. Wie sich zeigen wird, bietet das Speichervirtualisierungssystem 130 eine zusätzliche Speichervirtualisierungsschicht zwischen einer anfordernden Anwendung und einer oder mehreren Zuweisungen von Speicher, der über die Container-Speicherschnittstelle 123 bereitgestellt wird. Das Speichervirtualisierungssystem 130 umfasst einen Datenpfad 132 und eine Steuerungsebene 140. Der Datenpfad 132 umfasst den Datendienstanbieter 134, den Speichervirtualisierer 136 und einen Volume-Manager 138. Der Datenpfad 132 kann auch Speicheradapter 139 für den Zugriff auf lokalen Speicher (d.h. Speicher auf demselben Computersystem 100, auf dem das Speichervirtualisierungssystem 130 gehostet wird) enthalten, wie z.B. einen Blockadapter für die Montage des lokalen physischen Speichers 106, gestapelte Datei- und Blockadapter für den Zugriff auf das lokale Dateisystem 108 als Blockgerät oder andere Speicheradapter.
-
Die Steuerungsebene 140 umfasst eine Policy-Engine 142 und eine Container-Speicherschnittstelle API (Application Programming Interface) 144. Während einer Initialisierungsphase des Speichervirtualisierungssystems 130 kann die Steuerungsebene 140 von einem Administrator oder dem Container-Orchestrator 122 eine Liste der verfügbaren Container-Speicherschnittstellen-Plug-ins 128 in der Containerumgebung 120 erhalten. Die Steuerungsebene 140 kann auch die Speicheradapter 139 bestätigen, die für den Datenpfad 132 zur Montage des lokalen Speichers verfügbar sind. Die Steuerungsebene 140 kann auch eine Liste von Merkmalen des Speichers führen, die mit jedem dieser verfügbaren Plug-Ins 128 verknüpft sind, wie z.B. Leistungsmerkmale (z.B. Latenz, IOPS oder Input/Output-Operationen pro Sekunde usw.), Sicherheitsmerkmale (z.B. Verschlüsselung, Isolierung usw.), Datenschutzmerkmale (z.B. verfügbares RAID oder redundante Anordnung unabhängiger Platten, Ebenen), Kostenmerkmale (z.B. Dollar pro GB) oder andere Merkmale.
-
Die Funktionalität der Datenpfadfunktionen 132 und der Steuerungsebenenfunktionen 140 wird nun im Zusammenhang mit der Bereitstellung von Speicherplatz für containerisierte Anwendungen 124, 126 beschrieben. Eine containerisierte Anwendung, wie z.B. Anwendung 124, kann Speicher vom Container-Orchestrator 122 anfordern. Beispielsweise kann die Anwendung 124 ein persistentes Volume zur Speicherung von Daten benötigen. In einigen Implementierungen kann die Anwendung 124 eine oder mehrere Anforderungen mit der Anforderung übergeben, z. B. eine Kapazitätsanforderung, eine Leistungsanforderung (z. B. Latenz, IOPS usw.), eine Datenschutzanforderung (z. B. RAID-Level), eine Kostenanforderung (z. B. , Dollar pro GB), eine Sicherheitsanforderung, eine Tiering-Anforderung (z. B. bestimmte Mengen an Warm- und Kältespeicher) oder eine andere Anforderung. In einigen Implementierungen kann der Container-Orchestrator 122 als Reaktion auf die Anforderung eine Speicherabstraktion beibehalten, die als „Orchestrator Persistent Volume“ bezeichnet wird.
-
Der Container-Orchestrator 122 kann die Container-Speicherschnittstelle 123 verwenden, um die Anforderung über die Container-Speicherschnittstelle API 144 der Steuerungsebene 140 (wobei die Schnittstelle 144 als Server fungiert) an das Speichervirtualisierungssystem 130 zu senden. Auf diese Weise kann das containerisierte Speichervirtualisierungssystem 130 so verstanden werden, dass es als Speicheranbieter für den Container-Orchestrator 122 fungiert. In einigen Implementierungen kann die Steuerungsebene 140 der Anforderung eine Kennung zuweisen, so dass jede Anforderung einzeln identifiziert werden kann, insbesondere im Hinblick auf den Speicher, der für jede Anforderung in der hier beschriebenen Weise bereitgestellt wird.
-
Die Richtlinien-Engine 142 des Container-Orchestrators 122 analysiert die Anforderung, um festzustellen, welche Arten der Speicherung die Anforderungen der Anforderung erfüllen. Beispielsweise kann die Steuerungsebene 140 einen oder mehrere der folgenden Typen für die Speicherbereitstellung zur Verfügung haben: den physischen Speicher 106, das lokale Dateisystem 108, ein Remote-Speichersystem 160, einen virtualisierten Speicher 162 oder einen Public-Cloud-Speicher 164. Darüber hinaus kann mehr als einer der dargestellten Speichertypen vorhanden sein, werden aber aus Gründen der Übersichtlichkeit nicht dargestellt. Beispielsweise können mehrere Remote-Speicher 160 verfügbar sein, von denen aus Speicherzuweisungen bereitgestellt werden können.
-
Das entfernte Speichersystem 160, wie in dargestellt, kann entweder ein Dateisystem (z.B. ein an das Netzwerk angeschlossener Speicher oder NAS, Dateiserver), ein Blockspeichersystem (z.B. ein Speicherbereichsnetzwerk oder SAN, Speichergerät) oder jede andere Art von Speichersystem darstellen, das vom Computersystem 100 und damit vom containerisierten Speichervirtualisierungssystem 130 entfernt ist. Entfernt zu sein, kann zum Beispiel bedeuten, dass das Computersystem 100 mit dem entfernten Speichersystem 160 über eine Netzwerkverbindung oder ähnliches kommuniziert.
-
Der virtualisierte Speicher 162 kann ein beliebiges vorhandenes persistentes Volumen in einer virtuellen Umgebung darstellen, z. B. ein persistentes Volumen in der Containerumgebung 120 einschließlich des Container-Speichers, der über die Container-Speicherschnittstelle 123 unabhängig von dem Container-Speichervirtualisierungssystem 130 bereitgestellt wird. In einigen Beispielen kann der virtualisierte Speicher 162 einen Container-Speicher darstellen, der von einem anderen Container-Speichervirtualisierungssystem als System 130 bereitgestellt wird (z.B. gehostet auf einem anderen Knoten als das Computersystem 100). In einigen Beispielen kann der virtualisierte Speicher 162 Speicher darstellen, der von einer virtuellen Maschine oder einer Hypervisor-basierten, softwaredefinierten Speicherplattform bereitgestellt wird.
-
Das Policy-Engine 142 kann eine Mischung aus den oben genannten Speichertypen bestimmen. Beispielsweise kann das Richtlinien-Engine 142 die Anforderung mit den verfügbaren Speichertypen vergleichen, um eine möglichst große Übereinstimmung zu ermitteln. Zur Veranschaulichung: Die Anforderung kann eine bestimmte Menge an Hochgeschwindigkeitsspeicher und eine bestimmte Menge an kostengünstigem Archivierungsklassenspeicher erfordern. Die Richtlinien-Engine kann feststellen, dass der physische Speicher 106 die Hochgeschwindigkeits-Speicheranforderung erfüllt (z. B. zum Teil aufgrund der örtlichen Gegebenheiten und weil es sich in diesem Beispiel um ein Hochgeschwindigkeitsmedium handelt) und ein Blockspeichergerät 160 die Anforderungen der kostengünstigen Archivierungsklasse erfüllt.
-
Anschließend verwendet die Steuerungsebene 140 die Adapter 139 und/oder Container-Speicherschnittstellen-Plug-ins 128, um jeden Speichertyp in der festgelegten Mischung bereitzustellen und einen Montagepunkt für jeden bereitgestellten Speicher zu erfassen. Ein Mount-Punkt ermöglicht den Zugriff auf den bereitgestellten Speicher durch einen Verbraucher, z.B. den Datenpfad 132, wie im Folgenden beschrieben wird.
-
Als Beispiel für die lokale Bereitstellung kann die Steuerungsebene 140 einen Blockadapter von den Adaptern 139 verwenden, um eine Zuweisung aus dem physischen Speicher 106 bereitzustellen, und einen lokalen Block-Mountpunkt 170 (z. B. einen lokalen Host-Gerät-Mountpunkt) erwerben, um auf diese Zuweisung zuzugreifen. Als weiteres Beispiel kann die Steuerungsebene 140 gestapelte Datei- und Blockadapter verwenden, um eine Zuweisung aus dem lokalen Dateisystem 108 bereitzustellen und einen lokalen Dateisystem-Mountpunkt 172 zu erwerben, um auf diese Zuweisung als Blockgerät (d.h. „Datei als Blockgerät“) zuzugreifen.
-
Um Speicher über die Plug-Ins 128 bereitzustellen, kommuniziert die Steuerungsebene 140 über die Container-Speicherschnittstelle API 144 mit der Speicherschnittstelle 123, um anzufordern, dass ein Plug-In 128 eine Zuweisung aus seinem zugehörigen Speicher bereitstellt und einen Montagepunkt zurück zur Steuerungsebene 140 bereitstellt. Beispiel: Angenommen, das entfernte Speichersystem 160 stellt ein entferntes Blockgerät dar (z.B. ein SAN-Speicherarray außerhalb des Rechnersystems 100), so kann die Steuerungsebene 140 (über 144 und 123) anfordern, dass ein Blockprotokoll-Plug-in 128 (z.B. basierend auf dem iSCSI-Protokoll) eine Zuweisung von dem blockartigen entfernten Speichersystem 160 bereitstellt und einen entfernten Volume-Mountpunkt 174 (z.B. iSCSI-Ziel und LUN oder Logical Unit Number) bereitstellt, um auf diese Zuweisung zuzugreifen. Ein weiteres Beispiel: Das entfernte Speichersystem 160 kann ein entferntes Dateigerät (z.B. ein NAS-Dateiserver) darstellen, und die Steuerungsebene 140 kann (über 144 und 123) anfordern, dass ein Dateiprotokoll-Plug-in 128 (z.B. auf dem NFS-Protokoll basierend) eine Zuweisung vom entfernten Dateispeichersystem 160 bereitstellt und einen entfernten Volume-Mountpunkt 174 (z.B. eine IP-Adresse und einen Exportnamen unter NFS) für den Zugriff auf diese Zuweisung bereitstellt. In einigen Implementierungen kann die Steuerungsebene 140 anstelle eines Adapters 139 ein Blockprotokoll-Plug-in 128 für die Bereitstellung aus dem physischen Speicher 106 oder ein Dateiprotokoll-Plug-in 128 für die Bereitstellung aus dem lokalen Dateisystem 108 verwenden.
-
Ein weiteres Beispiel für die Bereitstellung über ein Plug-In: Die Steuerungsebene 140 kann (über 144 und 123) verlangen, dass ein Plug-In 128, das mit dem virtualisierten Speicher 162 übereinstimmt, eine Zuweisung aus dem virtualisierten Speicher 162 bereitstellt und einen virtualisierten Speicher-Mountpunkt 176 für den Zugriff auf diese Zuweisung bereitstellt. Als weiteres Beispiel kann die Steuerungsebene 140 (über 144 und 123) anfordern, dass ein Public-Cloud-Plug-in 128 eine Zuweisung aus dem Public-Cloud-Speicher 164 bereitstellt. Im Gegenzug kann das Public Cloud-Plug-in 128 einen Public Cloud Persistent Volume Mount Point 178 für den Zugriff auf diese Zuweisung bereitstellen.
-
Obwohl BILD 1 einen lokalen Block-Mountpunkt 170, einen lokalen Dateisystem-Mountpunkt 172, einen entfernten Volume-Mountpunkt 174, einen virtualisierten Speicher-Mountpunkt 176 und einen Public Cloud Persistent Volume-Mountpunkt 178 darstellt, können mehr oder weniger Mountpunkte und Mountpunkte jeder Kombination von der Steuerungsebene 140 angefordert und über die Adapter 139 oder Plug-ins 128 erworben werden. In verschiedenen Fällen können mehrere lokale Block-Mountpunkte 170, mehrere lokale Dateisystem-Mountpunkte 172, mehrere entfernte Volume-Mountpunkte 174, mehrere virtualisierte Speicher-Mountpunkte 176 und/oder mehrere persistente Public-Cloud-Volume-Mountpunkte 178 angefordert und von der Steuerungsebene 140 erfasst werden. Darüber hinaus können das Speichersystem 160 und der entfernte Mount-Punkt 174 jeweils eine oder mehrere der gleichen oder verschiedenen Arten von entferntem Speicher und einen Mount-Punkt davon darstellen, einschließlich Block-, Datei- oder anderer Arten von fernzugänglichem Speicher. Die bestimmte Kombination von Speichermontagepunkten, die von der Steuerebene 140 angefordert und erfasst werden, kann von der Speicheranforderung aus der containerisierten Anwendung 124 und insbesondere von der Handhabung dieser Speicheranforderung durch die Policy Engine 142 abhängen.
-
Sobald ein oder mehrere Speichermontagepunkte (z.B. 170, 172, 174, 176 oder 178) von der Steuerebene 140 in Übereinstimmung mit dem Policy-Engine 142 erfasst wurden, übergibt die Steuerebene 140 die erfassten Montagepunkte an den Datenpfad 132. Die Steuerebene 140 kann die Befestigungspunkte als einer bestimmten Anforderung zugeordnet identifizieren, indem sie die Befestigungspunkte z.B. der Anforderungskennung zuordnet. Wie im Folgenden beschrieben wird, konsumiert und mischt der Datenpfad 132 die Mount-Punkte, um ein virtuelles persistentes Volume 156 zu erzeugen, das von einem Mount-Punkt 180 an die anfordernde containerisierte Anwendung 124 übergeben wird. Auf diese Weise kann der zugewiesene Speicher, der den erworbenen Mount-Punkten (z.B. 170, 172, 174, 176 oder 178) entspricht, als der zugrunde liegende Speicher des virtuellen persistenten Volumes 156 bezeichnet werden. Die containerisierte Anwendung 124 liest und schreibt also Daten auf das virtuelle persistente Volume 156. Bevor die Erstellung des virtuellen persistenten Volumes 156 beschrieben wird, werden zunächst betriebliche Aspekte des Datenpfades 132 beschrieben.
-
Der Datenpfad 132 enthält Speichervirtualisierer 136, der eine objektbasierte Speichervirtualisierungsschicht 150 unterhält. Ein Zweck der Speichervirtualisierungsschicht 150 besteht darin, den Speicherort der Daten (d.h. die Speicherzuweisungen, auf die über die Mount-Punkte 170, 172, 174, 176 und/oder 178 zugegriffen wird) von der Art und Weise zu entkoppeln, wie die Daten einem Datenkonsumenten (z.B. einer containerisierten Anwendung 124) präsentiert werden. Auf diese Weise können Datendienste wie Migration, Backup, Snapshoting, Replikation, Deduplizierung, Komprimierung und andere auf jeder beliebigen Mischung des zugrundeliegenden Speichers und mit verringerter, minimaler oder gar keiner Unterbrechung für einen Verbraucher der Daten durchgeführt werden.
-
Ein Aspekt der Speichervirtualisierungsschicht 150 ist, dass der Speichervirtualisierer 136 Daten als „Objekte“ in einem Objektspeicher 152 speichert. Insbesondere kann der Objektspeicher 152 verschiedene Arten von Objekten speichern, darunter Datenobjekte und Metadatenobjekte. Daten, die sich auf die containerisierte Anwendung 124 beziehen, einschließlich Dateien und/oder Verzeichnisse, bestehen aus einem oder mehreren Datenobjekten. Metadatenobjekte können unter anderem nützlich sein, um die Datenobjekte in einer nützlichen und geordneten Weise zu organisieren, wie im Folgenden beschrieben wird. In einigen Implementierungen kann jedes Datenobjekt im Objektspeicher eine feste Datenmenge sein, z.B. 4 oder 8 Kibbyte Daten, und Metadatenobjekte können auch eine feste Datenmenge sein, z.B. 1 Kibbyte.
-
Eine objektbasierte Speichervirtualisierungsschicht 150 kann sich von Block-Level-Storage (z. B. implementiert in einem SAN und dargestellt über ein Speicherprotokoll wie iSCSI oder Fibre Channel) und File-Level-Storage (z. B. ein Dateisystem, das Daten in einer Dateihierarchie verwaltet und über ein File-Level-Protokoll wie NFS oder SMB/CIFS dargestellt wird) unterscheiden, obwohl die objektbasierte Speichervirtualisierungsschicht 150 Block- oder File-Level-Storage-Protokollen unterliegen kann (z. B. durch Abstraktion über Mount-Punkte 180, 182, wie beschrieben wird).
-
Der Speichervirtualisierer 136 verwaltet einen Objektindex 154, der für jedes Objekt (Datenobjekt und Metadatenobjekt) im Objektspeicher 152 eine Signatur, eine physische Adresse und einen Referenzzähler verfolgt. Die Signatur eines Objekts kann ein kryptografischer Digest des Inhalts dieses Objekts unter Verwendung einer Hash-Funktion wie SHA-1, SHA-256, MD5 usw. sein. Daher kann die Signatur auch als inhaltsbasierte Signatur bezeichnet werden. Der Referenzzähler im Objektindex 154 bezieht sich auf die Anzahl der Verweise auf das zugehörige Objekt über alle virtuellen persistenten Datenträger (einschließlich 156, 158) in der Speichervirtualisierungsschicht 150.
-
Die physische Adresse im Objektindex 154 bezieht sich auf den tatsächlichen physischen Standort des Objekts. In einigen Beispielen kann der Objektspeicher 152 zwar als ein Speicherkonstrukt zur Beschreibung der Speicherung von Objekten innerhalb der Speichervirtualisierungsschicht 150 verstanden werden, es kann aber auch so verstanden werden, dass die Objekte physisch auf dem darunter liegenden Speicher an der physischen Adresse gespeichert werden. Da der Datenpfad 132 mehrere Speicher-Mountpunkte beanspruchen kann, kann der jeweilige Mountpunkt ein Teil der physischen Adresse sein. Zusätzlich kann die physische Adresse einen Ort innerhalb der Speicherzuordnung eines bestimmten Mountpoints enthalten. Wenn sich der Mountpoint beispielsweise auf den physischen Speicher 106 bezieht, kann die physische Adresse eine logische Blocknummer enthalten. Wenn sich der Mount-Punkt auf den öffentlichen Cloud-Speicher 164 bezieht, kann die physische Adresse einen Verweis auf ein Cloud-Objekt in der Syntax des entsprechenden Hosting-Providers enthalten. Der Volume-Manager 138 ist so konfiguriert, dass er Daten an angegebenen physischen Adressen liest und schreibt, z. B. an die physischen Adressen, die im Objektindex 154 gespeichert sind.
-
In einigen Implementierungen kann das containerisierte Speichervirtualisierungssystem 130 eine zusätzliche Schicht der Indirektion zwischen dem Objektindex 154 und dem tatsächlichen physischen Standort von Objekten nutzen. In solchen Implementierungen kann der Volume-Manager 138 die zugrundeliegenden Speicherzuweisungen an jedem von der Steuerungsebene 140 bereitgestellten Einhängepunkt zuweisen und/oder in Ausdehnungen (oder auch als Mini-Volumes bezeichnet) unterteilen. Die zusätzliche Ebene der Indirektion kann implementiert werden, indem im Objektindex 154 in Verbindung mit einer Objektsignatur statt einer physischen Adresse eine virtuelle Adresse gespeichert wird und eine Extent-Tabelle gepflegt wird, die eine gegebene virtuelle Adresse einem Extent und damit dem entsprechenden zugrunde liegenden Speicher zuordnet. Um also auf ein Objekt auf der Grundlage einer virtuellen Adresse zuzugreifen, kann der Datenträgerverwalter 138 zunächst das von der virtuellen Adresse anvisierte Extent unter Verwendung der Extent-Tabelle und eines ersten Teils der virtuellen Adresse identifizieren und dann das Objekt innerhalb des Extents unter Verwendung eines zweiten Teils der virtuellen Adresse lokalisieren. Auf diese Weise können bestimmte Datendienste wie Migration und Tiering zwischen Extents auf effiziente Weise durchgeführt werden, indem nur die Extent-Identifikatoren in der Extent-Tabelle aktualisiert werden, anstatt eine große Menge an speicherinternen oder persistenten Verweisen auf die Datenobjekte (d.h. jede betroffene Adresse im Objektindex 154) zu aktualisieren und verschiedene logische Adressen, Indizes und andere Datenstrukturen, die bei der Verwaltung des Speichersystems verwendet werden, neu zu generieren.
-
Innerhalb der Speichervirtualisierungsschicht 150 unterhält der Speichervirtualisierer 136 ein oder mehrere virtuelle persistente Volumes (hier auch als virtuelle PVs bezeichnet), die durch den Objektspeicher 152 gesichert werden. In einigen Implementierungen wird eine containerisierte Anwendung mit einem virtuellen PV in einer Eins-zu-Eins-Beziehung verknüpft. In der Beispieldarstellung von ist z.B. die containerisierte Anwendung 124 mit dem virtuellen PV 156 und die containerisierte Anwendung 126 mit dem virtuellen PV 158 assoziiert. In einigen Implementierungen wird jedes virtuelle PV vom Container-Orchestrator 122 auf ein entsprechendes persistentes Orchestrator-Volume abgebildet, das vom Container-Orchestrator 122 verwaltet wird, und die anfordernde containerisierte Anwendung 124 greift über das persistente Orchestrator-Volume auf den Speicher des virtuellen PV 156 zu.
-
In anderen Fällen können containerisierte Anwendungen und virtuelle PVs in Eins-zu-Viele-, Mann-zu-Eins- oder Many-zu-Viele-Beziehungen verknüpft werden. Nur zur Veranschaulichung werden virtuelle PVs jetzt mit Bezug auf das virtuelle PV 156 beschrieben, obwohl es verstanden werden sollte, dass eine ähnliche Beschreibung auch für andere virtuelle PVs wie das virtuelle PV 158 und andere nicht gezeigte virtuelle PVs gelten kann.
-
In einer Implementierung kann der virtuelle persistente Datenträger 156 eine Organisation von Metadatenobjekten und Datenobjekten sein, die im Objektspeicher 152 gespeichert sind, wobei die Organisation die Datenobjekte durch zugehörige inhaltsbasierte Signaturen bis zu einem Wurzelobjekt hierarchisch in Beziehung setzt. In einem Beispiel kann das virtuelle PV 156 ein Merkle-Baum (auch als Hash-Baum bezeichnet) oder jede andere hierarchische Anordnung (z.B. gerichtete azyklische Graphen usw.) sein. Im Falle eines hierarchischen Merkle-Baums können sich Datenobjekte auf der untersten Baumebene eines jeden Zweiges befinden (auch als Blattebene bezeichnet, die am weitesten vom Wurzelobjekt entfernt ist), und solche Datenobjekte können als Blattdatenobjekte bezeichnet werden. Wie oben beschrieben, bilden Datenobjekte die Daten der containerisierten Anwendung 124, wie z.B. Dateien und Verzeichnisse.
-
Innerhalb der hierarchischen Anordnung bezieht sich ein übergeordnetes Objekt auf ein Objekt, das als Inhalt die Signaturen von untergeordneten Objekten enthält. Beispielsweise ist ein übergeordnetes Objekt von Datenobjekten auf Blattebene ein Metadatenobjekt, das als seinen Inhalt die Signaturen seiner untergeordneten Datenobjekte auf Blattebene speichert. Auf diese Weise werden die Signaturen von Objekten auf jeder Ebene in übergeordneten Objekten auf einer in der hierarchischen Anordnung nächsthöheren Ebene gesammelt, bis das Wurzelobjekt erreicht ist. Das Wurzelobjekt ist also ebenfalls ein Metadatenobjekt, das als Inhalt die Signaturen der jeweiligen untergeordneten Objekte speichert. Aus einer anderen Perspektive erweitert sich die hierarchische Anordnung in einer Richtung vom Wurzelobjekt zur Blattebene - ein Metadatenobjekt auf einer beliebigen Ebene kann sich auf eine Anzahl von Unterknoten ausdehnen, die durch einen vordefinierten Verzweigungsfaktor vorgegeben ist. Ein Metadatenobjekt kann unter Umständen eine Anzahl von Signaturen speichern, die mindestens einem Verzweigungsfaktor der hierarchischen Anordnung entspricht, so dass es die Signaturen aller untergeordneten Objekte enthalten kann.
-
Jede Änderung der Daten des virtuellen PV (d.h. neue Daten, geänderte Daten, gelöschte Daten) führt zu einer Änderung des Inhalts eines oder mehrerer Datenobjekte auf Blattebene, was eine Änderung der inhaltsbasierten Signaturen dieser geänderten Datenobjekte bewirkt, wodurch sich die Inhalts- und Signaturänderungen durch die übergeordneten Knoten nach oben zum Wurzelobjekt ausbreiten. Auf diese Weise kann ein virtuelles PV 156 zu einem bestimmten Zeitpunkt (auch als zeitliche Momentaufnahme bezeichnet) durch sein Wurzelobjekt und insbesondere durch seine Signatur des Wurzelobjekts eindeutig identifiziert werden.
-
Ein weiterer Aspekt des virtuellen PV 156 ist, dass in einigen Implementierungen eine bestimmte Datei oder ein Verzeichnis aus der containerisierten Anwendung 124 in einer entsprechenden Unterbaumanordnung innerhalb des virtuellen PV 156 gespeichert werden kann. Mit anderen Worten, das virtuelle PV 156 kann in Unterbäume unterteilt werden, von denen jeder einer entsprechenden Datei oder einem entsprechenden Verzeichnis der containerisierten Anwendung 124 entspricht.
-
Da Dateien und Verzeichnisse aus einem oder mehreren Datenobjekten bestehen und diese Datenobjekte im virtuellen PV 156 und dessen Unterbäumen durch Verweis auf zugehörige Datenobjektsignaturen angeordnet sind, kann in einigen Implementierungen jedes der Datenobjekte physikalisch nur einmal im Objektspeicher 152 gespeichert sein und durch ihre jeweiligen Signaturen in mehreren Metadatenobjekten im virtuellen PV 156 oder in jedem anderen virtuellen PV (z.B. 158) in der Speichervirtualisierungsschicht 150 referenziert werden. Somit können Daten auf diese Weise durch den Speichervirtualisierer 136 dedupliziert werden. Ebenso können Metadatenobjekte einmal gespeichert und durch entsprechende Signaturen mehrfach referenziert werden. Die Anzahl der Verweise auf ein Daten- oder Metadatenobjekt in der Speichervirtualisierungsschicht 150 kann in den entsprechenden Referenzzählern des Objektindex 154 aufgezeichnet werden. In einigen Implementierungen kann die Deduplizierung von Daten inline während eines Schreibvorgangs durchgeführt werden, im Gegensatz zur nachbearbeiteten oder Nearline-Deduplizierung, und auf diese Weise kann die Speicherung von Daten in der Speichervirtualisierungsschicht 150 und unter den virtuellen PVs 156, 158 als nativ dedupliziert bezeichnet werden.
-
In Anwendungsfällen, in denen Sicherheit eine Überlegung ist, einschließlich Multi-Tenancy-Szenarien, können für jede sensible Sicherheitsdomäne separate Objektspeicher verwendet werden. So können sensible Daten in einen gesicherten Objektspeicher isoliert werden, ohne an der Deduplizierung anderer virtueller PVs außerhalb der Sicherheitsdomäne teilzunehmen.
-
Damit die containerisierte Anwendung 124 auf das virtuelle PV 156 zugreifen kann, kann der Datenpfad 132 einen Mount-Point 180 bereitstellen. Der Datenpfad 132 kann jede Art von Mount-Punkt aus einer Vielzahl von Typen von Mount-Punkten bereitstellen, einschließlich, ohne Einschränkung, eines Mount-Punktes vom Blocktyp (z.B. iSCSI-kompatibel), eines Mount-Punktes vom Dateityp (z.B. ein Filesystem im Userspace oder eine FUSE-Schnittstelle oder NFS-, SMB- oder CIFS-kompatibel), eines Schlüssel/Wert-Freigabe-Mountpunktes (z.B. ein noSQL-Volume oder eine Amazon S3-kompatible API) und anderer Typen von Mount-Punkten. Auf diese Weise kann der Mount-Punkt so verstanden werden, dass er zur vollständigen Abstraktion des Speicherzugriffs beiträgt, da die containerisierte Anwendung 124 mit jeder Art von Speicherzugriff ausgestattet ist, die von der containerisierten Anwendung 124 benötigt wird (z.B. Dateiprotokoll oder Blockprotokoll usw.), unabhängig von der zugrunde liegenden Speicherart, aus der das virtuelle PV 156 besteht (z.B. unabhängig von software- oder hardwarebasiert, Block oder Datei, lokal oder remote usw.).
-
Der Typ des Mount-Punktes, d.h. die Art der Abstraktion, kann vom Benutzer ausgewählt oder entsprechend der die Speicherung anfordernden containerisierten Anwendung 124 vordefiniert werden (d.h. basierend auf einer Klasse von containerisierten Anwendungen, diktiert durch den Container-Orchestrator 122 usw.). Die Art der Abstraktion kann dem containerisierten Speichervirtualisierungssystem 130 über die an der Steuerungsebene 140 empfangene Speicheranforderung angezeigt werden.
-
Im Beispiel von BILD 1 kann das containerisierte Speichervirtualisierungssystem 130 auch einen Mount-Punkt 182 für die containerisierte Anwendung 126 bereitstellen, um auf ein virtuelles persistentes Volumen 158 zuzugreifen, das als Antwort auf eine Speicheranforderung von der containerisierten Anwendung 126 an den Container-Orchestrator 122 erstellt wurde, und zwar in ähnlicher Weise wie oben für den Mount-Punkt 180 des virtuellen PV 156 für die containerisierte Anwendung 124 beschrieben. Die virtuellen PVs 156 und 158 können beide entsprechende Merkle-Bäume zum Organisieren entsprechender Datensätze enthalten, während der Objektspeicher 152 die Daten der beiden virtuellen PVs 156 und 158 in einer deduplizierten Weise speichert.
-
Im Betrieb (d.h. nach der Erstellung des virtuellen PV 156 und der Bereitstellung des Mount-Punktes 180 für die Anwendung 124) kann das Speichervirtualisierungssystem 130 Input/Output (I/O)-Anforderungen von der containerisierten Anwendung 124 bedienen, die über den Mount-Punkt 180 an ein virtuelles PV 156 gerichtet sind. Um beispielsweise eine Leseanforderung zu bedienen, die über den Mount-Punkt 180 empfangen wird, kann der Speichervirtualisierungssystem 136 die Signaturen von Datenobjekten in dem virtuellen PV, das durch die Leseanforderung adressiert wird, identifizieren (d.h., was das Durchlaufen der Merkle-Baumstruktur des virtuellen PV auf der Grundlage einer Adresse der Leseanforderung einschließen kann) und die physischen Adressen dieser Datenobjektsignaturen aus dem Objektindex 154 ermitteln. In einigen Implementierungen kann die physische Adresse eines Datenobjekts den Mount-Point der zugrunde liegenden Speicherzuordnung angeben, in der das Datenobjekt gespeichert ist (z.B. einer oder mehrere der Mount-Punkte 170, 172, 174, 176 oder 178). Das Speichervirtualisierungssystem kann dann über den Volume-Manager 138 die Datenobjekte unter Verwendung der physischen Adressen (oder unter Verwendung einer virtuellen Adresse und einer Extend-Map wie oben beschrieben) lesen und die gelesenen Daten über den Mount-Punkt 180 an die containerisierte Anwendung 124 zurückgeben.
-
Um eine Schreibanforderung zu bedienen, kann der Speichervirtualisierer 136 in Beispielimplementierungen die in das virtuelle PV 156 zu schreibenden Daten von der containerisierten Anwendung 124 empfangen, prüfen, ob die Daten irgendwelche Datenobjekte enthalten, die aufgrund inhaltsbasierter Signaturen neu in den Objektspeicher 152 aufgenommen wurden, und die neuen Datenobjekte (d.h. Datenobjekte, die nicht bereits im Datenspeicher existieren) in den Objektspeicher schreiben. In einigen Implementierungen kann der Speichervirtualisierer 136 die neuen Datenobjekte vor dem Schreiben in den Objektspeicher 152 komprimieren. Der Prozess des Schreibens in den Objektspeicher 152 kann insbesondere die Kontrolle darüber beinhalten, in welche zugrunde liegende Speicherzuweisung (z. B. 106, 108, 160, 162 oder 164) die neuen Datenobjekte geschrieben werden. In einigen Implementierungen kann die containerisierte Anwendung in der Schreibanforderung angeben, in welche zugrundeliegende Speicherzuordnung die Daten geschrieben werden sollen. In einigen Implementierungen können neue Daten standardmäßig in einen lokalen Speicherabschnitt des virtuellen PV 156 geschrieben werden, wie z.B. in den lokal angeschlossenen physischen Speicher 106, der möglicherweise „heißen“ Tier-Speicher bietet, der für häufigen Zugriff optimiert ist. In einigen Implementierungen kann die containerisierte Anwendung eine bestimmte Richtlinie oder ein Service-Level-Agreement für das Schreiben der Daten angeben, und das Speichervirtualisierungssystem kann bestimmen, welche zugrunde liegende Speicherzuweisung dieser Richtlinie oder diesem SLA entspricht. Das Speichervirtualisierungssystem verwendet dann den Mount-Point (z.B. 170, 172, 174, 176 oder 178), der der zugrunde liegenden Speicherzuweisung entspricht, um die Datenobjekte zu schreiben. Das Speichervirtualisierungssystem fügt den Metadatenobjekten des virtuellen PV 156 auch die Signatur der Datenobjekte hinzu.
-
Die Darstellung von Daten in einem virtuellen PV 156, das nativ dedupliziert und durch eine Signatur des Stammobjekts eindeutig identifiziert ist, kann effiziente Datendienste ermöglichen, einschließlich derer, die vom Datendienstanbieter 134 bereitgestellt werden. Beispielsweise kann der Datendienstanbieter 134 ohne Einschränkung Snapshot-basierte Sicherung, Replikation, Migration, Tiering, redundanzbasierte Datensicherung (z. B. redundantes Array unabhängiger Knoten, auch als RAIN; oder RAID bezeichnet) oder andere Funktionen durchführen. Der Datendienstanbieter 134 kann die Datendienste mit dem virtuellen PV 156 auf eine Weise durchführen, die für die containerisierte Anwendung 124 transparent oder nicht störend ist. Beispielsweise können die Datendienste ohne Änderung des Mount-Punktes 180 und im Fall einiger Datendienste ohne Eingabe oder Anweisung (z.B. Konfigurationsdetails, Einrichtungsbefehle usw.) durch einen Benutzer, die containerisierte Anwendung 124 oder den Container-Orchestrator 122 durchgeführt werden. Darüber hinaus kann in einigen Beispielen der Datendienstanbieter 134 Daten primär auf der Speichervirtualisierungsschicht 150 manipulieren, so dass die Datendienste unabhängig von den verschiedenen zugrunde liegenden Speicher-Mounts und der besonderen Zusammensetzung des virtuellen PV 156 durchgeführt werden. Mit anderen Worten: Der Datendienstanbieter 134 kann einen gemeinsamen Satz von Datendiensten unabhängig von der Art des zugrunde liegenden Speichers, aus dem das virtuelle PV 156 besteht, unterbrechungsfrei und konsistent ausführen. Die oben genannten technischen Vorteile können z.B. dadurch ermöglicht werden, dass das virtuelle PV 156 den zugrunde liegenden Speicher von der containerisierten Anwendung 124 entkoppelt.
-
Beispielsweise kann der Datendienstanbieter 134 einen effizienten, auf Momentaufnahmen basierenden Sicherungsdatendienst durchführen. In einigen Implementierungen kann der Zeitunterschied zwischen Momentaufnahmen eines hierarchisch angeordneten virtuellen PV 156 effizient durch den Vergleich von Objektsignaturen in einer von oben nach unten iterativen Art und Weise, beginnend mit dem Wurzelobjekt, erreicht werden, um Metadaten und Datenobjekte zu finden, die sich unterscheiden. Bei einer Operation zur Sicherung eines aktuellen Zustands des virtuellen PV 156 (d.h. einer aktuellen Momentaufnahme) kann sich beispielsweise die aktuelle Momentaufnahme auf einem Primärsystem (z.B. Computersystem 100) befinden und eine ältere, zuvor gesicherte Momentaufnahme kann bereits auf einem Backup-System (z.B. Computersystem 110) vorhanden sein. In diesem Beispiel kann der Unterschied zwischen dem aktuellen Snapshot und dem älteren Snapshot ermittelt werden, indem die Signaturen der Snapshots in der zuvor beschriebenen Weise verglichen werden, und das Backup-System kann durchsucht werden, um festzustellen, ob die Metadaten oder Datenobjekte, die sich unterscheiden, bereits auf dem Backup-System (d.h. in einem Objektspeicher des Backup-Systems) vorhanden sind. Nur die Metadaten oder Datenobjekte, die nicht existieren, werden vom Primärsystem auf das Sicherungssystem kopiert, wodurch der Datenverkehr reduziert und die Sicherungszeiten verbessert werden. In anderen Implementierungen können Snapshot-basierte Backups auf demselben Primärsystem anstelle oder zusätzlich zum Backup-System auf ähnliche Weise durchgeführt werden.
-
Das Snapshot-basierte Backup kann z.B. planmäßig durchgeführt werden, ohne die containerisierte Anwendung 124 zu unterbrechen. Darüber hinaus kann das Snapshot-basierte Backup in erster Linie auf der Software-Virtualisierungsebene 150 durchgeführt werden, wodurch die Komplexität der direkten Verwaltung jedes einzelnen zugrunde liegenden Speichers vermieden wird. Ähnlich wie der Backup-Prozess kann auch ein Wiederherstellungsprozess mit einem Vergleich der wiederherzustellenden Metadaten oder Datenobjekte mit den bereits auf dem Wiederherstellungsziel vorhandenen Objekten und einer Übertragung nur der Daten, die auf dem Wiederherstellungsziel nicht vorhanden sind, ablaufen.
-
Der Datendienstanbieter 134 kann auch einen Migrationsvorgang durchführen. Die Migration kann Datenobjekte zwischen verschiedenen des zugrunde liegenden Speichers innerhalb eines virtuellen PV 156 verschieben, einschließlich zwischen verschiedenen lokalen Speichern, zwischen lokalen und entfernten Speichern, zwischen verschiedenen entfernten Speichern, zwischen verschiedenen öffentlichen Cloud-Speichern, zwischen öffentlichen Cloud-Speichern und nicht-öffentlichen Cloud-Speichern (entweder lokal oder entfernt) oder zwischen anderen Kombinationen von zugrunde liegenden Speichern. Die Migration wird auf der Speichervirtualisierungsschicht 150 abgewickelt, indem die neue physische Adresse eines verschobenen Datenobjekts mit der unveränderten inhaltsbasierten Signatur im Objektindex 154 verknüpft wird, wodurch die Migration für die containerisierte Anwendung 124 transparent gemacht wird.
-
Als weiteres Beispiel kann der Datendienstanbieter 134 das virtuelle PV 156 auf ein anderes Computersystem migrieren. In einigen Fällen kann es zum Beispiel sinnvoll sein, ein virtuelles PV 156 zu migrieren, um nahe an einer Arbeitslast zu sein, die das virtuelle PV 156 verwendet. In einem Beispielszenario kann der Container-Orchestrator 122 die containerisierte Anwendung 124 aus Gründen des Lastausgleichs oder aus einem anderen Grund auf ein anderes Computersystem verschieben (z.B. vom Quell-Computersystem 100 auf das Ziel-Computersystem 110), und das virtuelle PV 156 muss möglicherweise migriert werden, um nahe an der containerisierten Anwendung 124 zu sein. In einigen Implementierungen kann das Speichervirtualisierungssystem 130 die Verwaltung des virtuellen PV 156 auf ein anderes Speichervirtualisierungssystem auf dem Zielrechnersystem 110 migrieren, auf das die containerisierte Anwendung 124 migriert wurde. Der Datendienstanbieter 134 kann auch einige der Daten im virtuellen PV 156 migrieren, wie z.B. die Migration von Datenobjekten, die sich lokal auf dem Rechensystem 100 befanden (z.B. auf dem darunter liegenden physischen Speicher 106), auf den physischen Speicher des anderen Rechensystems 110, was für die Aufrechterhaltung der Speicherlokalität und anderer Leistungsmerkmale des virtuellen PV 156 nützlich sein kann. Bei einer solchen Migration kann es erforderlich sein, festzustellen, ob das Zielrechnersystem 110 bereits über eine Kopie der zu migrierenden Metadaten oder Datenobjekte verfügt, und nur Datenobjekte zu übertragen, die auf dem Zielrechnersystem 110 nicht vorhanden sind. Gleichzeitig kann derselbe Mount-Punkt 180 für die containerisierte Anwendung 124 beibehalten und nicht unterbrochen werden.
-
Der Datendienstanbieter 134 kann auch Daten-Tiering innerhalb eines virtuellen PV 156 durchführen, d. h. Daten zwischen verschiedenen Arten von zugrunde liegenden Speichern verschieben, die unterschiedliche Merkmale aufweisen und unterschiedlichen Speicherrichtlinien entsprechen können. Zum Beispiel kann ein Tiering durch Zuweisung und/oder Aufteilung der einzelnen Speicherzuweisungen des virtuellen PV 156 in unterschiedlichem Umfang implementiert werden, wie zuvor beschrieben. Unter bestimmten auslösenden Bedingungen kann der Datendienstanbieter 134 (in einigen Implementierungen in Verbindung mit dem Datenträgerverwalter 138) Datenobjekte von einem Extent in einen anderen Extent verschieben und die Extent-Tabelle entsprechend aktualisieren. Auslösende Bedingungen können z.B. ein erhöhter Sicherheitsstatus von Daten sein, der den Datendienstanbieter 134 veranlassen kann, diese Daten von einem öffentlichen Cloud-Speicher 164 in einen Nicht-Cloud-Speicher 106, 108, 160 oder 162 zu verschieben; Alterung von Daten, die den Datendienstanbieter 134 veranlassen kann, diese Daten in eine Archivierungsklasse von Speicher (z.B. Remote-Speicher 160) zu verschieben; häufiger Zugriff auf Daten in jüngster Zeit, der den Datendienstanbieter 134 veranlassen kann, diese Daten in einen Hochleistungsspeicher (z.B. einen lokalen physischen Speicher 106) zu verschieben; oder andere Arten von Bedingungen. Durch das Verschieben und Verwalten von Daten auf der Speichervirtualisierungsschicht 150 kann das Daten-Tiering über jede Art von zugrunde liegendem Speicher und ohne Unterbrechung des Mount-Punktes 180 oder der containerisierten Anwendung 124 durchgeführt werden.
-
Der Datendienstanbieter 134 kann auch redundanzbasierte Datensicherung unterstützen. Beispielsweise kann der Datendienstanbieter 134 RAID-Datenschutz bereitstellen. Beispielsweise kann der Datendienstanbieter 134 (in einigen Implementierungen in Verbindung mit dem Volume-Manager 138) einen RAID-Satz über zugrunde liegende Speicherzuweisungen oder innerhalb einer zugrunde liegenden Speicherzuweisung erstellen (z. B. in Fällen, in denen der lokale physische Speicher 106 einen Satz Laufwerke umfasst). Der Datendienstanbieter 134 kann über einen Software-RAID-Controller verfügen oder mit einem Hardware-RAID-Controller zusammenarbeiten, um Objekte des virtuellen PV 156 gemäß einem RAID-Schema wie RAID 1, RAID 5 oder RAID 6 in den RAID-Satz zu schreiben.
-
Der Datendienstanbieter 134 kann auch RAIN-Datenschutz durch Replikation oder Spiegelung von Daten eines virtuellen PV 156 (der Einfachheit halber auch als primäres virtuelles PV bezeichnet) für Datensicherungs- und Hochverfügbarkeitszwecke in Übereinstimmung mit den RAIN-Architekturprinzipien bereitstellen. In einigen Implementierungen kann der Datendienstanbieter 134 Daten zu Beginn replizieren oder spiegeln, wenn die Daten als Schreibanforderung von der containerisierten Anwendung 124 in die Speichervirtualisierungsschicht 150 kommen. In einigen Implementierungen können die replizierten Daten ein virtuelles PV-Replikat bilden, das eine ähnliche Form wie ein virtuelles PV haben kann (z.B. einschließlich eines Merkle-Baums) und von einem anderen Speichervirtualisierungssystem auf einem anderen Computersystem 110 verwaltet und lokal auf diesem verwaltet werden kann, relativ zu dem primären virtuellen PV, das lokal auf dem Computersystem 100 liegt. Zusätzlich oder alternativ kann das virtuelle PV-Replikat aus einem zugrundeliegenden Speicher bestehen, der von dem zugrundeliegenden Speicher, der das primäre virtuelle PV 156 bildet, verschieden und/oder getrennt ist. Wenn also Daten auf dem primären virtuellen PV nicht wiederhergestellt werden können, können die Daten mit Hilfe eines Failover-Verfahrens aus der virtuellen PV-Reproduktion wiederhergestellt werden.
-
Zusammenfassend lässt sich sagen, dass durch ein containerisiertes Speichervirtualisierungssystem, das verschiedene Speichertypen zu einem virtuellen persistenten Volume aggregiert, das als eine beliebige Anzahl verfügbarer Speicherabstraktionen dargestellt werden kann, der Datenpfad des Container-Speichers von Ende zu Ende hochgradig virtualisiert werden kann. Auf diese Weise kann den Anwendern containerisierter Anwendungen ein hohes Maß an Flexibilität geboten werden, indem sie eine beliebige Zusammensetzung des zugrundeliegenden Speichers anfordern können, um den Leistungsanforderungen (oder anderen Bedürfnissen) einer Anwendung gerecht zu werden, während sie gleichzeitig in der Lage sind, den Speicher mit jeder Art von für die Anwendung geeigneter Abstraktion zu nutzen. Darüber hinaus kann ein konsistenter Satz von Speicherdiensten unabhängig von der Zusammensetzung des zugrundeliegenden Speichers und unabhängig von der Art der Speicherzugriffsabstraktion, die zur Darstellung des virtuellen PV verwendet wird, bereitgestellt werden.
-
2 und 3 sind Flussdiagramme, die verschiedene Beispielmethoden darstellen. In einigen Implementierungen können ein oder mehrere Blöcke der Methoden im Wesentlichen gleichzeitig oder in einer anderen Reihenfolge als gezeigt ausgeführt werden. In einigen Implementierungen kann eine Methode mehr oder weniger Blöcke enthalten, als gezeigt sind. In einigen Implementierungen können einer oder mehrere der Blöcke einer Methode zu bestimmten Zeiten fortlaufend und/oder wiederholt ausgeführt werden. In einigen Implementierungen können Blöcke der Methoden kombiniert werden.
-
Die in 2 und 3 dargestellten Methoden können in Form von ausführbaren Befehlen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind (z.B. wie die Befehle 105, die auf dem maschinenlesbaren Medium 104 gespeichert sind) und von einer Verarbeitungsressource (z.B. wie die Verarbeitungsressource 102) und/oder in Form von elektronischen Schaltungen ausgeführt werden. Zum Beispiel können Aspekte der Methoden im folgenden als von einem Speichervirtualisierungssystem auf einem Computersystem ausgeführt beschrieben werden, ein Beispiel dafür kann das oben beschriebene containerisierte Speichervirtualisierungssystem 130 auf dem Computersystem 100 sein. Mit anderen Worten, in einigen Implementierungen können zumindest Teile des Speichervirtualisierungssystems, das in Verbindung mit den Methoden 200 und 300 beschrieben wird, in einem Container implementiert werden, der auf einer hardwarebasierten Verarbeitungsressource ausgeführt wird. Zusätzlich können andere Aspekte der unten beschriebenen Methoden unter Bezugnahme auf andere Elemente beschrieben werden, die zur Veranschaulichung in 1 dargestellt sind.
-
BILD 2 ist ein Flussdiagramm, das eine Beispielmethode 200 darstellt. Methode 200 kann nützlich sein, um einer containerisierten Anwendung Speicher in Form eines virtuellen persistenten Volumens zur Verfügung zu stellen, das andere Arten von persistentem Speicher virtualisiert. Methode 200 beginnt bei Block 202 und setzt sich fort bis Block 204, wo ein Speichervirtualisierungssystem (z.B. 130) eine Speicheranforderung von einer containerisierten Anwendung (z.B. 124) erhält. In einigen Implementierungen kann die Anforderung von einem Aspekt der Steuerungsebene (z.B. 140) des Speichervirtualisierungssystems empfangen werden. Darüber hinaus kann in einigen Implementierungen die Anforderung von der containerisierten Anwendung an einen Container-Orchestrator (z.B. 122) übermittelt werden, der wiederum die Anforderung über eine Container-Speicherschnittstelle (z.B. 123) an das Speichervirtualisierungssystem übermittelt.
-
In Block 206 erwirbt das Speichervirtualisierungssystem (oder insbesondere dessen Steuerungsebene) je nach Anforderung eine Vielzahl verschiedener Speicher-Mounts aus verschiedenen verfügbaren Speichertypen. Die verschiedenen Speichertypen können als lokaler oder entfernter Speicher, Hardware/physikalischer Speicher oder softwaredefinierter Speicher, dateibasierter Speicher, blockbasierter Speicher, objektbasierter Speicher, Cloud-Speicher, beliebige andere Speichertypen oder eine Kombination der vorgenannten Typen charakterisiert werden.
-
Zu den lokalen Speichertypen kann beispielsweise Speicher gehören, der sich lokal zum Speichervirtualisierungssystem befindet (d. h. in demselben Computersystem wie die Verarbeitungsressource, auf der das Speichervirtualisierungssystem ausgeführt wird), z. B. ein lokal angeschlossener physischer Speicher (z. B. 106), der als Blockspeichergerät erscheinen kann, ein lokales Dateisystem (z. B. 108) oder ein lokal virtualisiertes Speichervolumen (z. B. 162). Zu einem Remote-Speicher kann beispielsweise ein Speichersystem gehören, das sich außerhalb des Speichervirtualisierungssystems befindet und vom Speichervirtualisierungssystem über ein Kommunikationsmedium wie Ethernet, Fibre Channel usw. erreicht wird. Remote-Speicherung kann ein entferntes Dateisystem (z.B. 160), ein entferntes Blockspeichersystem (z.B. 160), Cloud-Speicherung (z.B. 164) wie Public-Cloud-Speicherung oder ein entferntes virtualisiertes Speichervolumen umfassen. Hardware oder physischer Speicher kann sich z.B. auf lokal angeschlossenen Speicher beziehen (z.B. 106). Software-definierter Speicher kann sich auf Speicher beziehen, der z.B. nicht an eine bestimmte Hardware-Implementierung gebunden ist, als Software in verschiedenen Infrastrukturtypen, einschließlich virtualisierter Infrastruktur, oder ähnlichem, eingesetzt werden kann. Zusammenfassend lässt sich also sagen, dass das Speichervirtualisierungssystem bei der Erfüllung der Anforderung nicht auf einen einzigen Speichertyp beschränkt ist.
-
Um die Speicher-Mounts in Block 206 zu erwerben, kann das Speichervirtualisierungssystem eine standardisierte Container-Speicherschnittstelle verwenden (z.B. 144 und 123 zusammen mit einem Plug-in 128), um zumindest einen Teil des Speichers, der mit der Vielzahl der verschiedenen Speicher-Mounts verbunden ist, aus den lokalen und entfernten Speichertypen bereitzustellen. Beispielsweise kann das Speichervirtualisierungssystem die standardisierte Container-Speicherschnittstelle mit einem Plug-in nutzen, um eine Speicherzuweisung von einem bestimmten Speichersystem bereitzustellen und den resultierenden Mount-Punkt von diesem Speichersystem zu erhalten. Bei einigen Speichertypen, wie z.B. lokal angeschlossenem physischen Speicher, kann das Speichervirtualisierungssystem einen Adapter (z.B. 139) verwenden, um direkt eine Speicherzuweisung und einen daraus resultierenden Speicher-Mountpunkt bereitzustellen, ohne die Container-Speicherschnittstelle zu verwenden. In einigen Implementierungen kann die Steuerungsebene des Speichervirtualisierungssystems die erfassten Mount-Punkte an einen Datenpfadteil (z.B. 132) des Speichervirtualisierungssystems übergeben.
-
In Block 208 erstellt das Speichervirtualisierungssystem (oder insbesondere dessen Datenpfad) ein virtuelles persistentes Volume (z. B. 156), das die Vielzahl der verschiedenen Speicher-Mounts, die in Block 206 erworben wurden, aggregiert. Das virtuelle persistente Volume enthält eine hierarchische Struktur, die Datenobjekte der containerisierten Anwendung durch inhaltsbasierte Signaturen mit einem Wurzelobjekt in Beziehung setzt. Die hierarchische Struktur des virtuellen persistenten Datenträgers kann die Form eines Merkle-Baums (auch als Hash-Baum bezeichnet) haben. Die Datenobjekte können virtuell in einem gemeinsamen deduplizierten Objektspeicher (z.B. 152) gespeichert werden, der auch andere virtuelle PVs bedient, die vom Speichervirtualisierungssystem erstellt wurden. Der Objektspeicher kann die Datenobjekte über einen Objektindex mit einem tatsächlichen Speicherort auf dem zugrunde liegenden Speicher verbinden.
-
In Block 210 stellt das Speichervirtualisierungssystem der containerisierten Anwendung, die den Speicher angefordert hat, einen Mount-Punkt des virtuellen persistenten Volumes zur Verfügung (z. B. über eine in Block 204 empfangene Anforderung). Das Speichervirtualisierungssystem kann in der Lage sein, einen beliebigen aus einer Vielzahl von Mount-Punkten bereitzustellen, die sich auf verschiedene Arten von Speicherzugriffsabstraktionen beziehen. Beispielsweise kann das Speichervirtualisierungssystem das virtuelle PV als einen Dateisystemtyp der Speicherabstraktion darstellen und dementsprechend einen Dateisystem-Mountpunkt exportieren. Als weiteres Beispiel kann das Speichervirtualisierungssystem das virtuelle PV als Blockspeichersystem darstellen und dementsprechend einen Blockgeräte-Mountpunkt exportieren. Ein weiteres Beispiel: Das Speichervirtualisierungssystem kann das virtuelle PV als Schlüssel/Wert-Paar-Speicher darstellen und dementsprechend einen Schlüssel/Wert-Paar-Speicher-Mountpunkt exportieren. Methode 200 kann bei Block 212 enden.
-
BILD 3 ist ein Flussdiagramm, das eine Beispielmethode 300 darstellt, die nützlich sein kann, um verschiedene Lebenszyklus-Aktionen für ein virtuell persistentes Volumen durchzuführen, das mit der Methode 200 erstellt wurde. Zum Beispiel kann in einigen Implementierungen Methode 300 nach Methode 200 durchgeführt werden. Methode 300 beginnt bei Block 302 und setzt sich fort bis Block 304, wo das Speichervirtualisierungssystem Ein-/Ausgabeanforderungen (E/A-Anforderungen) bedient, die über einen Mount-Punkt an ein virtuelles PV gerichtet sind (z. B. ein virtuelles PV, das in Block 208 erstellt wurde, und ein Mount-Punkt, der über Block 210 oben bereitgestellt wird). Zum Beispiel kann die containerisierte Anwendung (z.B. 124) Daten aus dem virtuellen PV lesen (z.B. 156) oder Daten in das virtuelle PV schreiben (z.B. 156) unter Verwendung des Mount-Punktes (z.B. 180), in der zuvor in Bezug auf BILD 1 beschriebenen Weise.
-
In Block 306 kann das Speichervirtualisierungssystem einen Datendienst ausführen. Die Datendienste können mit dem virtuellen PV durchgeführt werden, unabhängig von den verschiedenen zugrunde liegenden Speicher-Mounts. Mit anderen Worten, die Datendienste können auf virtuellen PVs konsistent ausgeführt werden, unabhängig davon, welche Art von zugrunde liegendem Speicher ein virtuelles PV darstellt. Darüber hinaus können die Datendienste ohne Änderung des Mount-Punktes des virtuellen PV durchgeführt werden, so dass die Datendienste transparent oder unterbrechungsfrei in Bezug auf die containerisierte Anwendung bereitgestellt werden können. Beispiele für Datendienste sind Migration, Tiering, Snapshot-basierte Backups, Replikation und redundanzbasierte Datensicherung (z.B. RAIN und/oder RAID). Solche Datendienste können wie zuvor in Bezug auf 1 beschrieben durchgeführt werden. Methode 300 kann bei Block 308 enden.
-
BILD 4 stellt ein Beispielsystem 400 dar, das ein nicht-transitorisches, maschinenlesbares Medium 404 enthält, das mit den Beispielanweisungen 406, 408, 410, 412, 414, 416 (zusammen als Anweisungen 406-416 bezeichnet) kodiert ist, die von einer Verarbeitungsressource 402 ausgeführt werden können. In einigen Implementierungen ist das System 400 für die Implementierung des containerisierten Speichervirtualisierungssystems 130 von 1, für die Durchführung der Methode 200 von 2 und für die Durchführung der Methode 300 von 3 nützlich. Zum Beispiel können die Anweisungen 406-416 in den Anweisungen 105 von 1 enthalten sein. In einigen Implementierungen kann die in Bezug auf 1-3 beschriebene Funktionalität in den Anweisungen 406-416 enthalten sein.
-
Die Verarbeitungsressource 402 kann einen Mikrocontroller, einen Mikroprozessor, einen oder mehrere Kerne einer Zentraleinheit, einen ASIC, einen FPGA und/oder ein anderes Hardwaregerät umfassen, das zum Abrufen und/oder Ausführen von Befehlen von dem maschinenlesbaren Medium 404 geeignet ist, um Funktionen im Zusammenhang mit verschiedenen Beispielen auszuführen. Zusätzlich oder alternativ kann die Verarbeitungsressource 402 eine elektronische Schaltung oder eine dedizierte Logik enthalten oder mit einer solchen gekoppelt sein, um einige oder alle Funktionen der hier beschriebenen Befehle auszuführen.
-
Das maschinenlesbare Medium 404 kann jedes Medium sein, das zur Speicherung ausführbarer Befehle geeignet ist, wie RAM, ROM, EEPROM, Flash-Speicher, ein Festplattenlaufwerk, eine optische Platte oder ähnliches. In einigen Beispielimplementierungen kann das maschinenlesbare Medium 404 ein greifbares, nicht vorübergehendes Medium sein. Das maschinenlesbare Medium 404 kann innerhalb des Systems 400 angeordnet sein. In diesem Fall können die ausführbaren Anweisungen als auf dem System 400 installiert oder eingebettet betrachtet werden. Alternativ kann das maschinenlesbare Medium 404 ein portables (z.B. externes) Speichermedium sein und Teil eines Installationspakets sein.
-
Wie weiter unten beschrieben, kann das maschinenlesbare Medium 404 mit einem Satz ausführbarer Anweisungen 406-416 kodiert werden. Es ist davon auszugehen, dass ein Teil oder alle ausführbaren Befehle und/oder elektronischen Schaltungen, die in einem Feld enthalten sind, in alternativen Implementierungen in einem anderen, in den Abbildungen gezeigten Feld oder in einem anderen, nicht gezeigten Feld enthalten sein können. Einige Implementierungen des Systems 400 können mehr oder weniger Anweisungen enthalten, als in 4 dargestellt sind.
-
Wenn die Anweisung 406 ausgeführt wird, veranlasst sie die Verarbeitungsressource 402, ein containerisiertes Speichervirtualisierungssystem zu instanziieren, das Daten in hierarchischen Strukturen, wie z. B. Hash-Bäumen, verwaltet. Insbesondere unterhält das containerisierte Speichervirtualisierungssystem einen deduplizierten Objektspeicher, der die Datenobjekte und Metadatenobjekte speichert, die von virtuellen persistenten Volumes referenziert werden, die durch die unten beschriebenen Anweisungen 412 erstellt werden. In einigen Implementierungen kann die Anweisung 406 mit einem Container-Orchestrator koordiniert werden, um das Speichervirtualisierungssystem als containerisierte Anwendung bereitzustellen. Zum Beispiel kann das containerisierte Speichervirtualisierungssystem 130 aus BILD 1 ein Beispiel für das durch die Instruktion 406 instanziierte containerisierte Speichervirtualisierungssystem sein. In einigen Implementierungen können eine oder mehrere der zu beschreibenden Anweisungen 408, 410, 412, 414, 416 Teil der Funktionalität des Speichervirtualisierungssystems selbst sein.
-
Die Instruktion 408 bewirkt bei ihrer Ausführung, dass die Verarbeitungsressource 402 eine Speicheranforderung von einer containerisierten Anwendung erhält. Instruktionen 410, wenn sie ausgeführt wird, veranlassen die Verarbeitungsressource 402, eine Vielzahl verschiedener Speicherhalterungen aus einer Mischung von Speichertypen in Übereinstimmung mit der über Instruktion 408 empfangenen Anforderung zu erwerben. Die Mischung von Speichertypen kann z.B. verschiedene (d.h. verschiedene Speichergeräte) lokale Speichertypen, verschiedene (d.h. verschiedene Speichergeräte) entfernte Speichertypen oder eine Kombination von mindestens einem der lokalen Speichertypen und mindestens einem der entfernten Speichertypen umfassen. Beispiele für lokale Speichertypen sind insbesondere Speicher, der sich lokal auf dem System 400 befindet (z.B. in oder auf dem System 400 installiert ist), wie z.B. ein lokal angeschlossener physischer Speicher, ein lokales Dateisystem oder ein lokaler virtualisierter Speicher. Beispiele für entfernte Speichertypen sind ein entferntes Dateisystem, ein entferntes Blockspeichersystem, Cloud-Storage oder ein entfernter virtualisierter Speicher.
-
In einigen Implementierungen kann die Verarbeitungsressource 402 durch die Instruktionen 408 veranlasst werden, eine standardisierte Container-Speicherschnittstelle zu verwenden, um zumindest einen Teil der Mischung von Speichertypen bereitzustellen und zumindest einen Teil der Vielzahl verschiedener Speicherhalterungen zu empfangen. Die standardisierte Container-Speicherschnittstelle kann in Verbindung mit einem Container-Orchestrator und Plug-Ins zur Bereitstellung von Zuweisungen aus den Speichertypen arbeiten. Die Anweisung 408 kann die Verarbeitungsressource 402 auch veranlassen, Adapter (d.h. einen Blockadapter oder einen Dateiadapter) zur Bereitstellung von Speicher, insbesondere von lokalen Speichertypen, zu verwenden.
-
Wenn die Anweisung 412 ausgeführt wird, veranlasst sie die Verarbeitungsressource 402, ein virtuelles persistentes Volume zu erstellen, das vom containerisierten Speichervirtualisierungssystem verwaltet wird und das die Vielzahl der verschiedenen Speicher-Mounts aggregiert. In einer Implementierung enthält das virtuelle persistente Volume einen Hash-Baum (z. B. einen Merkle-Baum), der Datenobjekte auf Blattebene durch inhaltsbasierte Signaturen mit einem Wurzelobjekt verbindet. Bei den Datenobjekten kann es sich um Daten aus der containerisierten Anwendung 124 handeln, z. B. Dateien oder Verzeichnisse.
-
Wenn die Anweisung 414 ausgeführt wird, veranlasst sie die Verarbeitungsressource 402, der containerisierten Anwendung einen Mount-Punkt des virtuellen persistenten Volumes zur Verfügung zu stellen. Die Anweisung 414 kann mehrere Arten von Speicherzugriffsabstraktionen und entsprechende Mount-Punkte zur Auswahl enthalten. Beispielsweise kann Anweisung 414 einen Dateisystem-Mountpunkt bereitstellen, um das virtuelle PV als Dateisystem zu präsentieren, kann einen Blockgerät-Mountpunkt bereitstellen, um das virtuelle PV als Blockspeichergerät zu präsentieren, und kann einen Schlüssel/Wertspeicher-Mountpunkt bereitstellen, um das virtuelle PV als Schlüssel/Wertspeicherpaar zu präsentieren.
-
Wenn die Anweisung 416 ausgeführt wird, veranlasst sie die Verarbeitungsressource 402, einen Datendienst mit dem virtuellen persistenten Volume auszuführen. In einigen Implementierungen können die Instruktionen 416 jederzeit ausgeführt werden, nachdem das virtuelle PV durch die Instruktionen 412 erzeugt wurde. Da der Datendienst in erster Linie mit dem virtuellen persistenten Volume und auf einer Speichervirtualisierungsschicht ausgeführt werden kann, kann der Datendienst unabhängig von der Art des zugrunde liegenden Speichers bereitgestellt werden, in dem die Daten des virtuellen persistenten Volumes physisch gespeichert sind. Der Datendienst kann ohne Rücksicht darauf, wie das virtuelle PV präsentiert wird (d.h. Abstraktion des Speicherzugriffs des virtuellen PV), bereitgestellt werden. Darüber hinaus muss der Mount-Punkt des virtuellen persistenten Volumes nicht geändert werden, und der Zugriff auf das virtuelle PV durch die containerisierte Anwendung muss nicht unterbrochen werden. Der Datendienst kann Migration, Tiering, Snapshot-basierte Sicherung, Replikation oder redundanzbasierte Datensicherung (z.B. RAID oder RAIN) umfassen, und die Instruktionen 416 können diese Datendienste in ähnlicher Weise durchführen wie oben in Bezug auf BILD 1 beschrieben.
-
In der vorstehenden Beschreibung werden zahlreiche Einzelheiten dargelegt, um ein Verständnis des hier offengelegten Gegenstands zu ermöglichen. Die Umsetzung kann jedoch auch ohne einige oder alle dieser Details praktiziert werden. Andere Implementierungen können Modifikationen, Kombinationen und Abweichungen von den oben besprochenen Details beinhalten. Es ist beabsichtigt, dass die folgenden Ansprüche solche Modifikationen und Variationen abdecken.