Grundlegendes zu Cloud-Speichermodellen

Wer hätte gedacht, dass das Speichern von Bits so unglaublich kompliziert werden könnte? Der Speicher enthielt schon immer eine Vielzahl von Protokollen, von Fibre Channel über iSCSI bis hin zu SMB in all seinen Variationen. Die Ankunft von Flash und das kontinuierliche Wachstum der Virtualisierung haben ein bereits dichtes Thema in einen Dschungel von Akronymen, Protokollen und Abstraktionen verwandelt.

Die Virtualisierung des Rechenzentrums hat auch im Speicher zu einer Virtualisierungswelle geführt, bei der der Speicher schrittweise von den physischen Protokollen weg und zu logischen, abstrahierten Speichermodellen wie Instanzspeicher und Volumenspeicher verschoben wird. Durch die Bereitstellung von Abstraktionen hat das Rechenzentrum virtuelle Maschinen kontinuierlich von Speicherprotokollen entkoppelt.

Der Aufstieg von Cloud-Rechenzentren hat auch eine neue Speicherklasse hervorgebracht, die als Objektspeicher bezeichnet wird und die starke Konsistenz traditioneller Speicherprotokolle opfert, um einzelne Namespaces auf globaler Ebene bereitzustellen.

In diesem Artikel werde ich Klarheit schaffen, indem ich Instanz-, Volumen- und Objektspeicher in die Entwicklung des Rechenzentrums einbaue und zeige, wie diese neuen Abstraktionen über oder neben vorhandenen Speicherprotokollen passen.

Die Geschichte des Cloud-Speichers ist in vielerlei Hinsicht eine Geschichte der Virtualisierung. Ich beginne mit physischen Umgebungen, gehe zur Virtualisierung über, wo virtuelle und physische Modelle zu divergieren beginnen, und ende mit der Cloud, in der die physischen durch virtuelle Modelle fast vollständig abstrahiert werden.

Physische Speicherung

Die Wurzel des gesamten Speichers sind einige physische Speicherprotokolle, daher beginne ich mit einer kurzen Zusammenfassung des physischen Speichers. Derzeit werden drei Hauptklassen von physischen Speichermodellen verwendet: Direct Attached Storage (DAS), Storage Area Network (SAN) und Network Attached Storage (NAS).

DAS.  Direkt angeschlossener Speicher ist das einfachste Speichermodell. Wir alle kennen DAS. Dies ist das Modell, das von den meisten Laptops, Telefonen und Desktop-Computern verwendet wird. Die grundlegende Einheit in DAS ist der Computer selbst; Der Speicher für einen Server ist nicht vom Server selbst trennbar. Im Falle eines Telefons ist es physikalisch unmöglich, den Speicher vom Computer zu entfernen, aber selbst bei Servern, bei denen es theoretisch möglich ist, Festplatten zu ziehen, wird ein Laufwerk, sobald es vom Server getrennt ist, im Allgemeinen vorher gelöscht Wiederverwendung. SCSI und SATA sind Beispiele für DAS-Protokolle.

SAN.  Schließlich erkannte die Speicherindustrie die Nützlichkeit der Trennung von Speicher und Computer. Anstatt Festplatten an jeden einzelnen Computer anzuschließen, haben wir alle Festplatten auf einem einzelnen Servercluster abgelegt und über das Netzwerk auf die Festplatte zugegriffen. Dies vereinfacht Speicherverwaltungsaufgaben wie Sicherung und Fehlerbehebung. Diese Aufteilung von Speicher und Computer wird häufig als gemeinsam genutzter Speicher bezeichnet , da mehrere Computer einen einzigen Speicherpool verwenden.

Es war am einfachsten, zwischen dem Client und dem Server über das Netzwerk mit denselben (oder sehr ähnlichen) Blockprotokollen zu kommunizieren, die für die Kommunikation mit lokal angeschlossenen Festplatten verwendet wurden. Auf diese Weise verfügbarer Speicher wird als Speicherbereichsnetzwerk bezeichnet. Fibre Channel und iSCSI sind Beispiele für SAN-Protokolle.

In einem SAN gruppiert ein Administrator einen Satz von Festplatten (oder einen Teil eines Satzes von Festplatten) in einer LUN (logische Einheit), die sich dann wie ein einzelnes Festplattenlaufwerk für externe Computer verhält. Die LUN ist die grundlegende Einheit zur Verwaltung des SAN-Speichers.

NAS.  Während SANs es uns ermöglichen, LUNs zwischen einem Computer und einem anderen zu verschieben, wurden die von ihnen verwendeten Blockprotokolle nicht so konzipiert, dass sie gleichzeitig Daten in derselben LUN zwischen Computern gemeinsam nutzen. Um diese Art der Freigabe zu ermöglichen, benötigen wir eine neue Art von Speicher für den gleichzeitigen Zugriff. Bei dieser neuen Art von Speicher kommunizieren wir mit dem Speicher über Dateisystemprotokolle, die den auf lokalen Computern ausgeführten Dateisystemen sehr ähnlich sind. Diese Art von Speicher wird als Netzwerkspeicher bezeichnet. NFS und SMB sind Beispiele für NAS-Protokolle.

Durch die Dateisystemabstraktion können mehrere Server gleichzeitig auf dieselben Daten zugreifen. Mehrere Server können dieselbe Datei gleichzeitig lesen, und mehrere Server können gleichzeitig neue Dateien im Dateisystem ablegen. Somit ist NAS ein sehr praktisches Modell für gemeinsam genutzte Benutzer- oder Anwendungsdaten.

Mit dem NAS-Speicher können Administratoren Teile des Speichers einzelnen Dateisystemen zuordnen. Jedes Dateisystem ist ein einzelner Namespace, und das Dateisystem ist die primäre Einheit für die Verwaltung des NAS.

Virtueller Speicher

Die Virtualisierung veränderte die Landschaft des modernen Rechenzentrums für die Speicherung ebenso wie für die Berechnung. So wie physische Maschinen in virtuelle Maschinen abstrahiert wurden, wurde physischer Speicher in virtuelle Festplatten abstrahiert.

Bei der Virtualisierung stellt der Hypervisor eine emulierte Hardwareumgebung für jede virtuelle Maschine bereit, einschließlich Computer, Speicher und Speicher. VMware, der ursprüngliche moderne Hypervisor, hat sich für die Emulation lokaler physischer Festplatten entschieden, um Speicher für jede VM bereitzustellen. Anders ausgedrückt, VMware hat das DAS-Modell (Local Disk Drive) ausgewählt, um Speicher für virtuelle Maschinen verfügbar zu machen.

So wie die grundlegende Speichereinheit in DAS die physische Maschine ist, ist die grundlegende Einheit im virtuellen Festplattenspeicher die VM. Virtuelle Festplatten werden nicht als unabhängige Objekte verfügbar gemacht, sondern als Teil einer bestimmten virtuellen Maschine, genau wie lokale Festplatten konzeptionell Teil eines physischen Computers sind. Wie bei DAS lebt und stirbt eine virtuelle Festplatte mit der VM selbst. Wenn die VM gelöscht wird, wird auch die virtuelle Festplatte gelöscht.

Die meisten herkömmlichen Virtualisierungsplattformen verwenden ein Speichermodell für virtuelle Festplatten. Beispielsweise wird der Speicher in VMware vSphere-, Microsoft Hyper-V-, Red Hat Enterprise Virtualization- und Xen-Umgebungen auf ähnliche Weise verwaltet und verbunden.

Virtuelle Festplatten implementieren

Da VMware weiterhin die Vorteile des gemeinsam genutzten Speichers für virtuelle Maschinen bereitstellen wollte, konnte es sich bei der Implementierung virtueller Festplatten nicht auf ein DAS-Protokoll verlassen. Die naheliegende nächste Wahl wäre die Verwendung von SAN, da eine SAN-LUN einem lokalen Festplattenlaufwerk sehr ähnlich ist.

Physische LUNs weisen jedoch Einschränkungen auf, die eine herausfordernde Anpassung für virtuelle Festplatten ermöglichen. In virtualisierten Umgebungen werden mehrere logische Computer auf einem einzigen physischen Server konsolidiert. Dies bedeutet, dass die Anzahl der virtuellen Festplatten auf einem bestimmten Host viel größer ist als die Anzahl der physischen LUNs für einen Host in einer physischen Umgebung. Die maximale Anzahl von LUNs, die an einen bestimmten physischen Server angeschlossen werden konnten, war zu niedrig, um die erforderliche Anzahl virtueller Festplatten zu unterstützen.

Noch wichtiger ist vielleicht, dass virtuelle Festplatten wie virtuelle CPUs logische Objekte sein müssen, die programmgesteuert erstellt, zerstört und verschoben werden können. Dies sind keine Vorgänge, für die der SAN-Speicher entwickelt wurde. Beispielsweise musste VMware VMs dynamisch zwischen physischen Hosts verschieben, was während der Migration Zugriff auf gemeinsam genutzten Speicher erforderte.

Aus diesen Gründen entschied sich VMware dafür, virtuelle Festplatten als Dateien in einem Dateisystem (NFS) oder in einem verteilten Dateisystem (VMFS) im SAN anstatt als unformatierte LUNs zu implementieren.

Von Speicherprotokollen zu Speichermodellen

Die Entscheidung von VMware für die Implementierung virtueller Festplatten, eines Blockspeichermodells im DAS-Stil, zusätzlich zu NAS oder SAN, zeigt eines der interessanten Merkmale des modernen Speichers in Rechenzentren. Da die E / A von einer virtuellen Maschine an Software im Hypervisor und nicht an Hardware auf einem Gerätebus übergeben werden, muss das von der VM für die Kommunikation mit dem Hypervisor verwendete Protokoll nicht mit dem Protokoll übereinstimmen, das der Hypervisor für die Kommunikation mit dem Hypervisor verwendet Speicher selbst.

Dies führt zu einer Trennung zwischen dem Speichermodell, das der VM und dem Administrator nach oben verfügbar gemacht wird, und dem Speicherprotokoll, das vom Hypervisor zum tatsächlichen Speichern der Daten verwendet wird. Bei virtuellen Laufwerken wurden diese von VMware nach einem DAS-Speichermodell entworfen und anschließend mithilfe eines NAS-Speicherprotokolls implementiert.

Dies ist eine mächtige Indirektionsebene. Es gibt uns die Flexibilität, Speichermodelle und Speicherprotokolle zu mischen und anzupassen und sogar das Speicherprotokoll dynamisch zu ändern, ohne die virtuellen Maschinen zu beeinträchtigen. Beispielsweise werden virtuelle Festplatten mithilfe von Dateien in NFS, Dateien in VMFS, die auf Fibre Channel-LUNs gespeichert sind, oder sogar (in VVols oder virtuellen Volumes) direkt als iSCSI-LUNs implementiert. Die Wahl der Implementierung ist für die Anwendung völlig transparent, da letztendlich alle diese Protokolle für die VM und den Administrator gleich aussehen. Sie sehen aus wie lokale, physische Laufwerke, die an VMs angeschlossen sind.

Daher kann der Anwendungsentwickler in den meisten öffentlichen Cloud-Infrastrukturen nicht wissen, welches Speicherprotokoll verwendet wird. Tatsächlich kann sich das Protokoll sogar dynamisch ändern. Wir wissen weder, welches Speicherprotokoll Amazon für Elastic Block Storage verwendet, noch ist es für uns wichtig zu wissen.

Aufgrund der Trennung zwischen Speichermodell und Speicherprotokoll wird das Speicherprotokoll zu einem infrastrukturbezogenen Problem, das in erster Linie für Kosten und Leistung wichtig ist, und nicht zu einer anwendungsbezogenen Entscheidung, die die Funktionalität vorschreibt.

Cloud-Speicher

Die Landschaft des Rechenzentrums verändert sich erneut, da sich virtualisierte Umgebungen in Cloud-Umgebungen verwandeln. Cloud-Umgebungen umfassen das in der Virtualisierung Pioniermodell für virtuelle Festplatten und bieten zusätzliche Modelle, um einen vollständig virtualisierten Speicherstapel zu ermöglichen. Cloud-Umgebungen versuchen, den gesamten Speicherstapel zu virtualisieren, um Self-Service und eine saubere Trennung zwischen Infrastruktur und Anwendung zu gewährleisten.

Cloud-Umgebungen gibt es in vielen Formen. Sie können von Unternehmen als private Clouds in Umgebungen wie OpenStack, CloudStack und der VMware vRealize-Suite implementiert werden. Sie können auch von Dienstanbietern als öffentliche Clouds wie Amazon Web Services, Microsoft Azure und Rackspace implementiert werden.

Interessanterweise spiegeln die in Cloud-Umgebungen verwendeten Speichermodelle die in physischen Umgebungen verwendeten wider. Wie bei virtuellen Festplatten handelt es sich jedoch um Speichermodelle, die von den mehreren Speicherprotokollen abstrahiert sind, mit denen sie implementiert werden können.

Instanzspeicher: Virtuelle Festplatten in der Cloud

Das Speichermodell für virtuelle Festplatten ist das primäre (oder einzige) Modell für die Speicherung in herkömmlichen virtualisierten Umgebungen. In Cloud-Umgebungen ist dieses Modell jedoch eines von drei. Daher erhält das Modell in Cloud-Umgebungen einen bestimmten Namen: Instanzspeicher, dh Speicher, der wie herkömmliche virtuelle Festplatten belegt wird.

Es ist wichtig zu beachten, dass der Instanzspeicher ein Speichermodell und kein Speicherprotokoll ist und auf verschiedene Arten implementiert werden kann. Beispielsweise wird der Instanzspeicher manchmal mithilfe von DAS auf den Rechenknoten selbst implementiert. Auf diese Weise implementiert, wird es oft als kurzlebiger Speicher bezeichnet, da der Speicher normalerweise nicht sehr zuverlässig ist.

Instanzspeicher kann auch als zuverlässiger Speicher unter Verwendung von NAS oder Volumenspeicher implementiert werden, einem zweiten Speichermodell, das als nächstes beschrieben wird. Mit OpenStack können Benutzer beispielsweise Instanzspeicher als kurzlebigen Speicher auf den Hosts, als Dateien auf NFS-Mountpunkten oder als Cinder-Volumes mithilfe von Boot-from-Volume implementieren.

Volumenspeicher: SAN ohne physischen Speicher

Der Instanzspeicher hat jedoch seine Grenzen. Entwickler von Cloud-nativen Anwendungen unterscheiden Konfigurationsdaten wie Betriebssystem- und Anwendungsdaten häufig explizit von Benutzerdaten wie Datenbanktabellen oder Datendateien. Durch die Aufteilung der beiden können Entwickler die Konfiguration vorübergehend und wiederherstellbar machen und gleichzeitig die Zuverlässigkeit der Benutzerdaten gewährleisten.

Diese Unterscheidung führt wiederum zu einer anderen Art von Speicher: Volumenspeicher, eine Mischung aus Instanzspeicher und SAN. Ein Volume ist die primäre Einheit des Volume-Speichers und keine VM. Ein Volume kann von einer VM getrennt und an eine andere angeschlossen werden. Wie eine virtuelle Festplatte ähnelt ein Volume jedoch in Größe und Abstraktion eher einer Datei als einer LUN. Im Gegensatz zum Instanzspeicher wird der Volumenspeicher normalerweise als sehr zuverlässig angesehen und häufig für Benutzerdaten verwendet.

OpenStack's Cinder ist ein Beispiel für einen Volume-Speicher, ebenso wie Dockers unabhängige Volume-Abstraktion. Beachten Sie erneut, dass der Volumenspeicher ein Speichermodell und kein Speicherprotokoll ist. Der Volumenspeicher kann über Dateiprotokolle wie NFS oder Blockprotokolle wie iSCSI transparent für die Anwendung implementiert werden.

Objektspeicher: Web-Scale NAS

Native Cloud-Anwendungen benötigen auch ein Zuhause für Daten, die von VMs gemeinsam genutzt werden. Oft benötigen sie jedoch Namespaces, die auf mehrere Rechenzentren in verschiedenen geografischen Regionen skaliert werden können. Die Objektspeicherung bietet genau diese Art der Speicherung. Zum Beispiel bietet Amazon S3 einen einzigen logischen Namespace in einer ganzen Region und wohl auf der ganzen Welt. Um diese Größenordnung zu erreichen, musste S3 die starke Konsistenz und die feinkörnigen Aktualisierungen herkömmlicher NAS opfern.

Die Objektspeicherung bietet eine dateiähnliche Abstraktion, die als Objekt bezeichnet wird, aber letztendlich Konsistenz bietet. Dies bedeutet, dass alle Kunden möglicherweise die gleichen Antworten auf ihre Anfragen erhalten, jedoch vorübergehend unterschiedliche Antworten erhalten. Diese Konsistenz ähnelt der von Dropbox zwischen zwei Computern bereitgestellten Konsistenz. Clients können vorübergehend nicht mehr synchron sein, aber irgendwann wird alles konvergieren.

Herkömmliche Objektspeicher bieten auch einen vereinfachten Satz von Datenoperationen, die für die Verwendung über WAN-Verbindungen mit hoher Latenz optimiert sind: Auflisten der Objekte in einem „Bucket“, Lesen eines Objekts in seiner Gesamtheit und Ersetzen der Daten in einem Objekt durch völlig neue Daten. Dieses Modell bietet eine grundlegendere Reihe von Vorgängen als NAS, mit denen Anwendungen kleine Blöcke in einer Datei lesen und schreiben, Dateien auf neue Größen kürzen, Dateien zwischen Verzeichnissen verschieben usw. können.