Löschcode - Mehr Speicherplatz auf Nutanix



    Dieser Blogeintrag ist bereits vor einigen Monaten erschienen. Leider wurden wir von jenseits des Ozeans ernsthaft bedroht, sodass wir nicht über Funktionen sprechen wollten, die noch nicht veröffentlicht wurden, sodass der Text entfernt werden musste. In NOS 4.1.3 ist der Löschcode jetzt für die Verwendung im öffentlichen Betastatus verfügbar (experimentieren Sie, aber warten Sie eine Weile mit der Produktion, wir optimieren den Code noch). Das bedeutet, dass Sie bereits in der Öffentlichkeit sprechen können.

    Wenn Sie bereits meine Geschichte darüber gelesen haben , wie NDFS (Nutanix Distributed File System) strukturiert ist und wie es in Nutanix erstellt wird, ist Ihnen wahrscheinlich aufgefallen, dass der Speicherplatzverbrauch in NDFS im Allgemeinen „großzügig“ ist.

    Lassen Sie mich daran erinnern, dass wir kein RAID im klassischen Sinne verwenden, wenn beispielsweise eine Spiegelkopie für eine Festplatte (RAID-1) aufbewahrt wird oder wenn ein zusätzlicher Redundanzcode (RAID-5 oder 6) für eine Gruppe von Festplatten berechnet wird. Stattdessen speichern wir einen Datenblock, der auf Datenträgern aufgezeichnet ist, an zwei (oder sogar drei) Stellen auf verschiedenen Datenträgern und sogar auf verschiedenen Knoten. Diese Schaltung heißt RAIN ( Redundant Array of Independent Nodes , bis zur Spitze von RAID, die gleich ist, aber ... Disks ). Im Hinblick auf die Kapazität der Festplatten des Systems (RF = 2), dh wenn für jeden Block eine Kopie gespeichert wird, entspricht der Speicherplatzverbrauch RAID-1, dh 50% der Rohkapazität stehen für die Daten zur Verfügung (abzüglich einiger anderer, Variable, Prozentsatz der Servicestrukturen und Informationen, aber lassen Sie dies hier weg).

    Ja, Fehlertoleranz, Zuverlässigkeit, schnelle (Minuten-) Wiederherstellung nach Ausfällen , all dies ist so. Trotzdem ist der Aufwand ziemlich groß. Besonders für Leute, die noch immer an Festplatten mit Raw- oder RAID-5-Kapazität denken. Und Sie können so viel sagen, wie Sie möchten: RAID-5 ist schlecht und unzuverlässig , es ist langsam zu schreiben, und schließlich ist bei den aktuellen Preisen für Festplatten die Gebühr für höhere Zuverlässigkeit und Leistung mit Gigabyte für Fehlertoleranz im Vergleich zu niedrig was uns als Gegenleistung für sie gegeben wird. Egal. „Wir haben vier Terabyte-Festplatten in unserem System. Warum haben wir weniger als zwei Terabyte für unsere Daten? “

    Aus diesem Grund hat Nutanix eine Idee entwickelt, die aktiv umgesetzt wird. Mit Nutanix beschäftigt sich übrigens „unser“ russischsprachiger Programmierer.
    Dies ist der so genannte „Löschcode“ (wir haben ihn als EC-X , Erasure Code-X bezeichnet). Wie so oft bei Ingenieuren, ist der Name „nicht selbsterklärend“ und keiner weiß warum. Auf Russisch wird es am zutreffendsten sein - ein "Redundanzcode".
    So funktioniert es.

    Wenn wir Daten haben, auf die die Kröte drückt, um uns auf „RAID-1“ zu halten, dh im Replikationsfaktor (RF) = 2-Modus, können wir den Speichermodus für diese Daten von RF = 2 (oder = 3) auf Löschen umschalten Code. Gleichzeitig beginnt ein spezieller Hintergrundprozess mit uns zu arbeiten, ähnlich wie wir ihn in einem Cluster deduplizieren, und nach einiger Zeit stattDer Block-and-Copy -Vorgang auf unseren Datenträgern beginnt auf den Datenträgern des Knotenclusters block-block-block- ... und_Überschussinformationen_für_ diese zu speichern. Auf diese Weise können Sie den Inhalt des Blocks in dieser Kette eindeutig wiederherstellen, wenn er beispielsweise aufgrund eines Datenträgerfehlers eines der Knoten verloren geht.
    Wenn dieser Vorgang im Hintergrund abgeschlossen ist, werden anstelle des Blocks und seiner Kopie im Cluster viele Blöcke in einer Gruppe gespeichert, sowie ein separater Block und ein Redundanzcode. Und in dem Datencontainer, in dem wir den Löschcode anstelle von RF eingefügt haben, erhalten wir die gleiche Menge gespeicherter Informationen, und gleichzeitig ist mehr Speicherplatz für den neuen verfügbar.
    Auch dies ist ein bisschen wie eine verschobene Deduplizierung.

    Sicherlich sind Sie bereit, hier zu sagen: „Nun, Sie haben gerade ein Fahrrad „ erfunden “RAID-5! ”, Nicht genau auf mathematischer Ebene, aber das Prinzip ist ähnlich, ja.

    Die "Abrechnung" hier (nichts passiert ohne Abrechnung, wie wir uns erinnern) ist, dass wir für mehr Speicherplatz für Daten eine höhere CPU-Auslastung zahlen, wenn nötig, Datenwiederherstellung. Es ist klar, dass hier nicht nur kopiert, sondern der Inhalt des Blocks aus dem Inhalt anderer Datenblöcke und redundanten Codes wiederhergestellt werden muss. Dies ist ein erheblich ressourcenintensiveres Verfahren.

    Es ist auch wichtig, dass bei Verwendung des Löschcodes die Redundanz für die Wiederherstellung ausreicht, wenn zwei Festplatten, Knoten oder andere Clusterkomponenten ausfallen, d. H. Aus Gründen der Fehlertoleranz das RF = 3-Äquivalent, für das das auf den Festplatten verwendbare Volumen gilt ungefähr 33% von rohem.
    Was ist mit Löschcode?
    Dies hängt von der Größe des Clusters ab. Je mehr Knoten es gibt - je profitabler, desto größer ist der Unterschied.



    Für einen 4-Knoten-80-TB-Rohcluster werden mit RF = 2 ungefähr 40 TB nutzbar. Wenn Sie den Container auf Löschcodierung umstellen, beträgt der nutzbare Speicherplatz - 53 TB.
    Auf 5 Knoten - 100 - 50 - 75, auf 6 Knoten - 120 - 60 - 96, auf 7 - 140 - 70 - 116. Wie Sie sehen, wächst mit zunehmender Clustergröße auch die "Speichereffizienz" für den Löschcode und kann diese erreichen 80% der Rohkapazität.

    Welche Art von Codierung wird verwendet? Nein, dies ist kein Reed-Solomon-Code, der in der Branche gut bekannt ist und häufig für solche Aufgaben verwendet wird. Wir mussten einen eigenen Algorithmus entwickeln, der eine höhere Verarbeitungs- und Berechnungsgeschwindigkeit bietet. Und natürlich nutzen wir die verteilten Funktionen des Nutanix-Clusters. Der Algorithmus wird wie Map Reduce verteilt und auf allen Knoten des Clusters ausgeführt, wodurch die Zuverlässigkeit und Leistung seines Betriebs sichergestellt wird. Es ist auch wichtig zu beachten, dass die Verwendung von EC-X nicht gegen unser Prinzip der Datenlokalität verstößt. Befindet sich die virtuelle Maschine auf diesem Virtualisierungshost (Clusterknoten), so liegen deren Daten auf der SSD (Performance Tier unseres Speichers) ebenfalls lokal auf diesem Knoten, sowohl mit den RF- als auch mit den EC-X-Speicheroptionen, welche Bietet niedrige Latenz und hohe Festplattenleistung.

    Warum und wo kann das angewendet werden?

    Erstens können Sie so die Speicherkosten ($ / GB) senken, was insbesondere für Cold-Storage- und Kapazitätsknoten gilt, insbesondere bei großen Clustern, wenn Sie Informationen auf Nutanix speichern, auch wenn diese wertvoll sind, jedoch nicht "Hot", aktiv. Und sie sind bereit, mehr freien Speicherplatz mit erhöhter CPU-Auslastung und längerer Wiederherstellungszeit zu bezahlen.
    Beachten Sie gleichzeitig, dass im normalen Modus während der normalen Arbeit mit Daten unter dem Löschcode die CPU-Last beim Zugriff auf Daten nur während der Wiederherstellung nicht wesentlich ansteigt.
    Sie können auch frei entscheiden, wie Ihre Daten durch Redundanz geschützt werden sollen. Sie können verschiedene Container für Daten in einem Cluster speichern, einige mit RF = 2, andere mit RF = 3 und einige mit Löschcode. Bei Daten, die aktuell und kritisch genug sind, können Sie eine der Funkfrequenzen auswählen. Bei Daten, die nicht so aktuell sind, liegt sie jedoch auf den Knoten, auf denen die erhöhte CPU-Auslastung während der Wiederherstellung für uns nicht kritisch ist - Löschcode.
    Nochmals: Die Wahl des Speichermodus liegt bei Ihnen und hängt von Ihrer Wahl und Ihren Prioritäten ab.

    Der Löschcode wurde in der nächsten Version von Nutanix OS veröffentlicht, die regelmäßig auf Ihren Nutanix-Systemen aktualisiert wird. Das Aktualisieren von Nutanix stoppt übrigens nicht die Unzugänglichkeit von virtuellen Maschinen und Daten, und das System wird drahtlos "wie ein iPhone" aktualisiert, aber mehr dazu im nächsten Beitrag.

    Jetzt auch beliebt: