Der übliche Weg, einen Festplatten- oder Serverausfall zu überstehen, besteht darin, mehrere Kopien zu behalten, was bedeutet, dreimal so viel Speicher für konventionell 3-fach replizierte Daten zu bezahlen. Für einen Backup-Anbieter sind dies die dominierenden Kosten.

Reed-Solomon-Erasure-Coding bietet einen günstigeren Kompromiss. Backblaze teilt eine Datei in 17 gleich große Shards auf, berechnet 3 Paritäts-Shards und speichert alle 20 über separate Laufwerke verteilt. Beliebige 17 der 20 Teile stellen das Original wieder her, sodass eine Datei den Verlust von bis zu 3 Shards übersteht.

Das ist der Kern des Designs: Statt drei vollständiger Kopien behält es eine Kopie plus eine kleine Menge Parität und erreicht nahezu dieselbe Haltbarkeit bei einem Bruchteil des Speichers.

Haltbarkeit durch Paritätsmathematik erkaufen, nicht durch doppelte Kopien

Paritäts-Shards kosten weit weniger als vollständige doppelte Kopien.

Beliebige 17 von 20 Teilen rekonstruieren die Datei und tolerieren den Verlust mehrerer Laufwerke.

Geringerer Speicher-Overhead senkt direkt die Stückkosten des Anbieters.

Wenn man Zuverlässigkeit durch das Kopieren von Daten bezahlt, kauft man sie in teuren ganzen Einheiten; die Kodierungsmathematik erlaubt es, stattdessen eine präzise Menge für einen festen Overhead zu kaufen.

Backblaze hat seine Java-Reed-Solomon-Bibliothek als Open Source veröffentlicht, und Erasure-Coding wurde zu einer gängigen Methode, mit der sowohl Cloud-Anbieter als auch Backup-Dienste ein wenig CPU gegen deutlich günstigere Haltbarkeit eintauschen.

DEN BELEGEN FOLGEN

Die Quellen

  1. Backblaze open-sources Reed-Solomon erasure coding source code Backblaze · backblaze.com ·
  2. Erasure coding OpenStack Wiki · wiki.openstack.org