{"id":87758,"date":"2020-07-10T01:41:58","date_gmt":"2020-07-09T23:41:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye"},"modified":"2020-07-10T01:41:58","modified_gmt":"2020-07-09T23:41:58","slug":"kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>So sieht Redundanz aus<\/em><\/p>\n<p><\/p>\n<p>Redundanzcodes* werden in Computersystemen h\u00e4ufig eingesetzt, um die Zuverl\u00e4ssigkeit der Datenspeicherung zu erh\u00f6hen. Bei Yandex kommen sie in vielen Projekten zum Einsatz. Zum Beispiel spart der Einsatz von Redundanzcodes anstelle von Replikation in unserem internen Objektspeicher Millionen, ohne die Zuverl\u00e4ssigkeit zu beeintr\u00e4chtigen. Trotz ihrer breiten Anwendung ist eine verst\u00e4ndliche Erkl\u00e4rung, wie Redundanzcodes funktionieren, selten zu finden. Diejenigen, die mehr dar\u00fcber erfahren m\u00f6chten, sto\u00dfen auf folgendes (aus <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%B4_%D0%A0%D0%B8%D0%B4%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0\">Wikis<\/a><\/noindex>):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ich hei\u00dfe Vadim und arbeite bei Yandex an der Entwicklung des internen Objektspeichers MDS. In diesem Artikel werde ich die theoretischen Grundlagen der Redundanzcodes (Reed-Solomon-Codes und LRC) in einfachen Worten erkl\u00e4ren. Ich werde erl\u00e4utern, wie es funktioniert, ohne komplizierte Mathematik oder seltene Begriffe. Am Ende werde ich Beispiele f\u00fcr die Verwendung von Redundanzcodes bei Yandex geben.<\/p>\n<p><\/p>\n<p>Einige mathematische Details werde ich nicht n\u00e4her erl\u00e4utern, aber ich werde Links bereitstellen f\u00fcr diejenigen, die tiefer eintauchen m\u00f6chten. Au\u00dferdem m\u00f6chte ich anmerken, dass einige mathematische Definitionen m\u00f6glicherweise nicht strikt sind, da der Artikel nicht f\u00fcr Mathematiker, sondern f\u00fcr Ingenieure gedacht ist, die die Grundlagen verstehen m\u00f6chten.<\/p>\n<p><\/p>\n<p>* In der englischsprachigen Literatur werden Redundanzcodes oft als Erasure Codes bezeichnet.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. Die Grundlagen der Redundanzcodes<\/h1>\n<p><\/p>\n<p>Die grundlegende Idee aller Redundanzcodes ist \u00e4u\u00dferst einfach: Daten so zu speichern (oder zu \u00fcbertragen), dass sie bei Fehlern (wie Festplattenausf\u00e4llen, \u00dcbertragungsfehlern usw.) nicht verloren gehen. <\/p>\n<p><\/p>\n<p>In den meisten Redundanzcodes werden die Daten in n Datenbl\u00f6cke aufgeteilt, f\u00fcr die m Redundanzcodebl\u00f6cke berechnet werden. Insgesamt ergibt sich also eine Anzahl von n + m Bl\u00f6cken. Die Redundanzcodes werden so konstruiert, dass n Datenbl\u00f6cke wiederhergestellt werden k\u00f6nnen, indem man nur einen Teil der n + m Bl\u00f6cke verwendet. Im Folgenden betrachten wir nur blockbasierte Redundanzcodes, das hei\u00dft, solche, bei denen die Daten in Bl\u00f6cke unterteilt sind.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Um alle n Datenbl\u00f6cke wiederherzustellen, ben\u00f6tigt man mindestens n von n + m Bl\u00f6cken, da man n Bl\u00f6cke nicht mit nur n-1 Block erhalten kann (in diesem Fall m\u00fcsste man 1 Block \"aus der Luft\" nehmen). Reichen n beliebige Bl\u00f6cke aus n + m Bl\u00f6cken zur Wiederherstellung aller Daten? Das h\u00e4ngt vom Typ der Redundanzcodes ab; beispielsweise erm\u00f6glichen Reed-Solomon-Codes die Wiederherstellung aller Daten mit beliebigen n Bl\u00f6cken, w\u00e4hrend LRC-Redundanzcodes das nicht immer tun.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Datenspeicherung<\/h3>\n<p><\/p>\n<p>In Datenspeichersystemen wird in der Regel jeder der Datenbl\u00f6cke und Redundanzcode-Bl\u00f6cke auf einer separaten Festplatte gespeichert. Dadurch k\u00f6nnen die urspr\u00fcnglichen Daten auch bei einem Ausfall einer beliebigen Festplatte wiederhergestellt und gelesen werden. Daten k\u00f6nnen sogar bei gleichzeitigen Ausf\u00e4llen mehrerer Festplatten wiederhergestellt werden.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Daten\u00fcbergabe<\/h3>\n<p><\/p>\n<p>Redundanzcodes k\u00f6nnen zur zuverl\u00e4ssigen Daten\u00fcbertragung in unzuverl\u00e4ssigen Netzwerken eingesetzt werden. Die \u00fcbertragenen Daten werden in Bl\u00f6cke unterteilt, f\u00fcr die Redundanzcodes berechnet werden. Sowohl die Datenbl\u00f6cke als auch die Redundanzcodes werden \u00fcber das Netzwerk \u00fcbertragen. Bei Fehlern in beliebigen Bl\u00f6cken (bis zu einer bestimmten Anzahl von Bl\u00f6cken) k\u00f6nnen die Daten dennoch ohne Fehler \u00fcber das Netzwerk \u00fcbertragen werden. Reed-Solomon-Codes werden beispielsweise zur Daten\u00fcbertragung \u00fcber optische Kommunikationsleitungen und in der Satellitenkommunikation verwendet.<\/p>\n<p><\/p>\n<p>* Es gibt auch Redundanzcodes, bei denen die Daten nicht in Bl\u00f6cke unterteilt werden, wie zum Beispiel Hamming-Codes und CRC-Codes, die weit verbreitet in Ethernet-Netzen genutzt werden. Diese Codes sind f\u00fcr fehlerresistente Kodierung gedacht; sie dienen der Fehlererkennung, nicht der Fehlerkorrektur (der Hamming-Code erm\u00f6glicht zudem teilweise Fehlerkorrekturen).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. Reed-Solomon-Codes<\/h1>\n<p><\/p>\n<p>Die Reed-Solomon-Codes geh\u00f6ren zu den am weitesten verbreiteten Redundanzcodes, die bereits in den 1960er Jahren entwickelt wurden und erstmals in den 1980er Jahren f\u00fcr die Serienproduktion von Compact Discs breite Anwendung fanden.<\/p>\n<p><\/p>\n<p>Zwei wesentliche Fragen zum Verst\u00e4ndnis der Reed-Solomon-Codes sind: 1) Wie erstellt man Redundanzcodes? 2) Wie stellt man Daten mithilfe von Redundanzcodes wieder her? Wir werden Antworten darauf finden.<br \/>\nZur Vereinfachung nehmen wir im Folgenden an, dass n=6 und m=4. Andere Schemen werden analog betrachtet.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">Wie man Redundanzcodes erstellt<\/h3>\n<p><\/p>\n<p>Jeder Redundanzcodeblock wird unabh\u00e4ngig von den anderen betrachtet. F\u00fcr die Berechnung jedes Blocks werden alle n Datenbl\u00f6cke verwendet. In der folgenden Abbildung stehen X1-X6 f\u00fcr die Datenbl\u00f6cke, P1\u2013P4 f\u00fcr die Redundanzcodebl\u00f6cke.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alle Datenbl\u00f6cke m\u00fcssen die gleiche Gr\u00f6\u00dfe haben; zur Ausrichtung k\u00f6nnen Nullbits verwendet werden. Die entstandenen Redundanzcodebl\u00f6cke haben die gleiche Gr\u00f6\u00dfe wie die Datenbl\u00f6cke. Alle Datenbl\u00f6cke werden in W\u00f6rter aufgeteilt (beispielsweise in 16-Bit-W\u00f6rter). Angenommen, wir haben die Datenbl\u00f6cke in k W\u00f6rter unterteilt. Dann werden auch alle Redundanzcodebl\u00f6cke in k W\u00f6rter unterteilt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zur Berechnung des i-ten Wortes jedes Redundanzcodeblocks werden die i-ten W\u00f6rter aller Datenbl\u00f6cke verwendet. Diese werden nach folgender Formel berechnet:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier sind die Werte x \u2013 W\u00f6rter der Datenbl\u00f6cke, p \u2013 W\u00f6rter der Blockcodes zur Redundanz, alle Alpha, Beta, Gamma und Delta \u2013 speziell ausgew\u00e4hlte Zahlen, die f\u00fcr alle i gleich sind. Zun\u00e4chst sei gesagt, dass all diese Werte keine gew\u00f6hnlichen Zahlen sind, sondern Elemente eines Galois-Feldes; die Operationen +, -, *, \/ sind nicht die gewohnten Operationen, sondern spezielle Operationen, die \u00fcber den Elementen des Galois-Feldes definiert wurden.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">Wozu dienen Galois-Felder?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es scheint einfach zu sein: Wir teilen die Daten in Bl\u00f6cke, die Bl\u00f6cke in W\u00f6rter, und unter Verwendung der W\u00f6rter der Datenbl\u00f6cke berechnen wir die W\u00f6rter der Redundanzcodes \u2013 wir erhalten die Redundanzcodes. Im Gro\u00dfen und Ganzen funktioniert das so, aber der Teufel steckt im Detail:<\/p>\n<p><\/p>\n<ol>\n<li>Wie oben erw\u00e4hnt, ist die Wortgr\u00f6\u00dfe fix, in unserem Beispiel 16 Bit. Die oben angegebenen Formeln f\u00fcr die Reed-Solomon-Codes sind so gestaltet, dass bei der Verwendung gew\u00f6hnlicher Ganzzahlen das Ergebnis der Berechnung p m\u00f6glicherweise nicht mit einem Wort von zul\u00e4ssiger Gr\u00f6\u00dfe darstellbar ist.<\/li>\n<li>Beim Datenwiederherstellungsverfahren werden die oben genannten Formeln als Gleichungssystem betrachtet, das gel\u00f6st werden muss, um die Daten wiederherzustellen. W\u00e4hrend des L\u00f6sens kann es erforderlich sein, ganze Zahlen zu dividieren, was zu einer reellen Zahl f\u00fchrt, die nicht exakt im Computer gespeichert werden kann.<\/li>\n<\/ol>\n<p><\/p>\n<p>Diese Herausforderungen machen es unm\u00f6glich, f\u00fcr die Reed-Solomon-Codes ganze Zahlen zu verwenden. Die L\u00f6sung des Problems ist originell und kann wie folgt beschrieben werden: Lassen Sie uns spezielle Zahlen erfinden, die mit Worten der erforderlichen L\u00e4nge (z. B. 16 Bit) dargestellt werden k\u00f6nnen, wobei das Ergebnis aller darauf durchgef\u00fchrten Operationen (Addition, Subtraktion, Multiplikation, Division) ebenfalls in der Computer-Speicher mit W\u00f6rtern der entsprechenden L\u00e4nge dargestellt wird.<\/p>\n<p><\/p>\n<p>Solche \"speziellen\" Zahlen werden seit Langem in der Mathematik untersucht und als Felder bezeichnet. Ein Feld ist eine Menge von Elementen mit bestimmten f\u00fcr sie definierten Operationen wie Addition, Subtraktion, Multiplikation und Division.<\/p>\n<p><\/p>\n<p>Galois-Felder* sind Felder, f\u00fcr die f\u00fcr jede Operation (+, -, *, \/) zwischen beliebigen zwei Elementen ein eindeutiges Ergebnis existiert. Galois-Felder k\u00f6nnen f\u00fcr Zahlen konstruiert werden, die eine Potenz von 2 sind: 2, 4, 8, 16 usw. (tats\u00e4chlich auch f\u00fcr jede Potenz einer Primzahl p, aber in der Praxis interessieren wir uns nur f\u00fcr Potenzen von 2). Zum Beispiel ist f\u00fcr Worte mit einer Gr\u00f6\u00dfe von 16 Bit dieses Feld das, das 65.536 Elemente enth\u00e4lt, f\u00fcr jede Paar, von denen das Ergebnis jeder Operation (+, -, *, \/) bestimmt werden kann. Die Werte x, p, alpha, beta, gamma, delta aus den obigen Gleichungen werden f\u00fcr Berechnungen als Elemente des Galois-Feldes verwendet.<\/p>\n<p><\/p>\n<p>Somit haben wir ein Gleichungssystem, mit dem wir redundant Codebl\u00f6cke erstellen k\u00f6nnen, indem wir das entsprechende Computerprogramm schreiben. Mit diesem Gleichungssystem k\u00f6nnen wir auch Daten wiederherstellen.<\/p>\n<p><\/p>\n<p>* Dies ist keine strikte Definition, sondern eher eine Beschreibung.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">Wie man Daten wiederherstellt<\/h3>\n<p><\/p>\n<p>Wiederherstellung ist erforderlich, wenn von n + m Bl\u00f6cken einige Bl\u00f6cke fehlen. Dies k\u00f6nnen sowohl Datenbl\u00f6cke als auch Bl\u00f6cke von Redundanzcodes sein. Das Fehlen von Datenbl\u00f6cken und\/oder Redundanzcodebl\u00f6cken bedeutet, dass die entsprechenden Variablen x und\/oder p in den obigen Gleichungen unbekannt sind.<\/p>\n<p><\/p>\n<p>Die Gleichungen f\u00fcr Reed-Solomon-Codes k\u00f6nnen als Gleichungssystem betrachtet werden, in dem alle Werte Alpha, Beta, Gamma, Delta - Konstanten sind, und alle x und p, die den verf\u00fcgbaren Bl\u00f6cken entsprechen, - bekannte Variablen sind, w\u00e4hrend andere x und p - unbekannt sind.<\/p>\n<p><\/p>\n<p>Angenommen, die Datenbl\u00f6cke 1, 2, 3 und der Redundanzcodeblock 2 sind nicht verf\u00fcgbar, dann hat die i-te Blockgruppe folgendes Gleichungssystem (unbekannte sind rot markiert):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir haben ein System aus 4 Gleichungen mit 4 Unbekannten, also k\u00f6nnen wir es l\u00f6sen und die Daten wiederherstellen!<\/p>\n<p><\/p>\n<p>Aus diesem Gleichungssystem ergeben sich mehrere Schlussfolgerungen zur Datenwiederherstellung f\u00fcr Reed-Solomon-Codes (n Datenbl\u00f6cke, m Redundanzcodebl\u00f6cke):<\/p>\n<p><\/p>\n<ul>\n<li>Daten k\u00f6nnen wiederhergestellt werden, wenn bis zu m Bl\u00f6cke verloren gehen. Bei einem Verlust von m+1 oder mehr Bl\u00f6cken kann die Datenwiederherstellung nicht durchgef\u00fchrt werden: Es ist unm\u00f6glich, ein System aus m Gleichungen mit m + 1 Unbekannten zu l\u00f6sen. <\/li>\n<li>Um auch nur einen Block Daten wiederherzustellen, m\u00fcssen beliebige n der verbleibenden Bl\u00f6cke verwendet werden, wobei jeder der Redundanzcodes eingesetzt werden kann.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Was sollte man sonst noch wissen?<\/h3>\n<p><\/p>\n<p>In der oben genannten Beschreibung lasse ich einige wichtige Fragen au\u00dfer Acht, die eine tiefere Besch\u00e4ftigung mit der Mathematik erfordern. Insbesondere sage ich nichts \u00fcber Folgendes:<\/p>\n<p><\/p>\n<ul>\n<li>Das Gleichungssystem f\u00fcr Reed-Solomon-Codes muss (eine eindeutige) L\u00f6sung f\u00fcr alle Kombinationen von Unbekannten (nicht mehr als m Unbekannte) haben. Basierend auf dieser Anforderung werden die Werte f\u00fcr Alpha, Beta, Gamma und Delta ausgew\u00e4hlt.<\/li>\n<li>Das Gleichungssystem muss automatisch aufgebaut (abh\u00e4ngig davon, welche Bl\u00f6cke nicht verf\u00fcgbar sind) und gel\u00f6st werden k\u00f6nnen.<\/li>\n<li>Ein Galois-Feld muss aufgebaut werden: f\u00fcr eine gegebene Wortgr\u00f6\u00dfe m\u00fcssen die Ergebnisse beliebiger Operationen (+, -, *, \/) f\u00fcr beliebige zwei Elemente gefunden werden.<\/li>\n<\/ul>\n<p><\/p>\n<p>Am Ende des Artikels finden sich Literaturverweise zu diesen wichtigen Themen.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Die Wahl von n und m<\/h3>\n<p><\/p>\n<p>Wie w\u00e4hlt man in der Praxis n und m aus? In der Praxis werden Redundanzcodes in Datenspeichersystemen verwendet, um Platz zu sparen, weshalb m immer kleiner als n gew\u00e4hlt wird. Ihre konkreten Werte h\u00e4ngen von mehreren Faktoren ab, darunter:<\/p>\n<p><\/p>\n<ul>\n<li>Zuverl\u00e4ssigkeit der Datenspeicherung. Je gr\u00f6\u00dfer m ist, desto mehr Festplattenausf\u00e4lle kann das System \u00fcberstehen, das hei\u00dft, die Zuverl\u00e4ssigkeit ist h\u00f6her.<\/li>\n<li>Redundanz der Speicherung. Je h\u00f6her das Verh\u00e4ltnis m \/ n ist, desto gr\u00f6\u00dfer ist die Redundanz der Speicherung und desto teurer wird das System.<\/li>\n<li>Verarbeitungszeiten von Anfragen. Je gr\u00f6\u00dfer die Summe n + m ist, desto l\u00e4nger wird die Antwortzeit auf Anfragen sein. Da zum Lesen der Daten (w\u00e4hrend der Wiederherstellung) n Bl\u00f6cke gelesen werden m\u00fcssen, die auf n verschiedenen Festplatten gespeichert sind, wird die Lesezeit durch die langsamste Festplatte bestimmt.<\/li>\n<\/ul>\n<p><\/p>\n<p>Au\u00dferdem bringt die Speicherung von Daten in mehreren Rechenzentren zus\u00e4tzliche Einschr\u00e4nkungen bei der Auswahl von n und m mit sich: Wenn ein Rechenzentrum ausf\u00e4llt, m\u00fcssen die Daten weiterhin lesbar sein. Beispielsweise muss bei der Speicherung von Daten in 3 Rechenzentren die Bedingung m &gt;= n\/2 erf\u00fcllt sein, da es ansonsten zu einer Situation kommen kann, in der die Daten bei einem Ausfall eines Rechenzentrums nicht mehr lesbar sind.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 Lokale Rekonstruktionscodes<\/h1>\n<p><\/p>\n<p>Zum Wiederherstellen von Daten mit Reed-Solomon-Codes m\u00fcssen n beliebige Datenbl\u00f6cke verwendet werden. Das ist ein erheblicher Nachteil f\u00fcr verteilte Datenspeichersysteme, da f\u00fcr die Wiederherstellung von Daten auf einer defekten Festplatte die Daten von den meisten anderen gelesen werden m\u00fcssen, was eine gro\u00dfe zus\u00e4tzliche Belastung f\u00fcr die Festplatten und das Netzwerk verursacht.<\/p>\n<p><\/p>\n<p>Die h\u00e4ufigsten Fehler sind die Nichterreichbarkeit eines Datenblocks aufgrund einer Fehlfunktion oder \u00dcberlastung einer Festplatte. Gibt es M\u00f6glichkeiten, die \u00fcberm\u00e4\u00dfige Belastung bei der Wiederherstellung von Daten in solch einem (h\u00e4ufigen) Fall zu reduzieren? Tats\u00e4chlich gibt es einen L\u00f6sungsansatz: Speziell daf\u00fcr wurden LRC-Redundanzcodes entwickelt.<\/p>\n<p><\/p>\n<p>LRC (Local Reconstruction Codes) \u2013 Redundanzcodes, die von Microsoft f\u00fcr die Verwendung in Windows Azure Storage entwickelt wurden. Die Idee hinter LRC ist einfach: Teilen Sie alle Datenbl\u00f6cke in zwei (oder mehr) Gruppen und berechnen Sie einen Teil der Redundanzcodes f\u00fcr jede Gruppe separat. Ein Teil der Redundanzcodes wird unter Verwendung aller Datenbl\u00f6cke (in LRC als globale Redundanzcodes bezeichnet) berechnet, w\u00e4hrend der andere Teil mithilfe einer der beiden Gruppen von Datenbl\u00f6cken berechnet wird (diese werden als lokale Redundanzcodes bezeichnet).<\/p>\n<p><\/p>\n<p>LRC wird durch drei Zahlen dargestellt: n-r-l, wobei n die Anzahl der Datenbl\u00f6cke, r die Anzahl der globalen Redundanzcodes und l die Anzahl der lokalen Redundanzcodes ist. Um Daten zu lesen, wenn ein Datenblock nicht verf\u00fcgbar ist, m\u00fcssen Sie nur n\/l Bl\u00f6cke lesen \u2013 das ist l-mal weniger als bei Reed-Solomon-Codes.<\/p>\n<p><\/p>\n<p>Betrachten wir als Beispiel das LRC-Schema 6-2-2. X1\u2013X6 sind 6 Datenbl\u00f6cke, P1, P2 sind 2 globale Redundanzbl\u00f6cke, P3, P4 sind 2 lokale Redundanzbl\u00f6cke.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Redundanzpr\u00fcfziffern P1 und P2 werden mit allen Datenbl\u00f6cken berechnet. Die Redundanzpr\u00fcfziffer P3 wird mit den Datenbl\u00f6cken X1\u2013X3 berechnet, w\u00e4hrend die Redundanzpr\u00fcfziffer P4 mit den Datenbl\u00f6cken X4\u2013X6 erfolgt.<\/p>\n<p><\/p>\n<p>Der Rest erfolgt im LRC analog zu den Reed-Solomon-Codes. Die Gleichungen zur Berechnung der Pr\u00fcfzahlen f\u00fcr die Redundanz werden wie folgt aussehen:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundanzcodes: Einfach erkl\u00e4rt, wie man Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichert\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Um die Werte f\u00fcr Alpha, Beta, Gamma und Delta zu bestimmen, m\u00fcssen mehrere Bedingungen erf\u00fcllt sein, die die M\u00f6glichkeit der Datenrekonstruktion gew\u00e4hrleisten (d.h. die L\u00f6sung des Gleichungssystems). Weitere Details dazu finden Sie in <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">Artikel<\/a><\/noindex>.<br \/>\nIn der Praxis wird auch f\u00fcr die Berechnung der lokalen Redundanzcodes P3 und P4 die XOR-Operation angewendet. <\/p>\n<p><\/p>\n<p>Aus dem Gleichungssystem f\u00fcr LRC ergeben sich mehrere Schlussfolgerungen:<\/p>\n<p><\/p>\n<ul>\n<li>Um einen beliebigen Datenblock wiederherzustellen, reicht es aus, n\/l Bl\u00f6cke zu lesen (n\/2 in unserem Beispiel).<\/li>\n<li>Wenn r + l Bl\u00f6cke nicht verf\u00fcgbar sind und alle Bl\u00f6cke zu einer Gruppe geh\u00f6ren, k\u00f6nnen die Daten nicht wiederhergestellt werden. Dies l\u00e4sst sich leicht am Beispiel erkl\u00e4ren. Nehmen wir an, die Bl\u00f6cke X1\u2013X3 und P3 sind nicht verf\u00fcgbar: Das sind r + l Bl\u00f6cke aus einer Gruppe, insgesamt 4 in unserem Fall. Dann haben wir ein System aus 3 Gleichungen mit 4 Unbekannten, das sich nicht l\u00f6sen l\u00e4sst.<\/li>\n<li>In allen anderen F\u00e4llen der Unzug\u00e4nglichkeit von r + l Bl\u00f6cken (wenn aus jeder Gruppe mindestens ein Block verf\u00fcgbar ist) k\u00f6nnen die Daten im LRC wiederhergestellt werden.<\/li>\n<\/ul>\n<p><\/p>\n<p>Somit hat LRC Vorteile gegen\u00fcber den Reed-Solomon-Codes bei der Wiederherstellung von Daten nach einzelnen Fehlern. Bei Reed-Solomon-Codes m\u00fcssen zur Wiederherstellung eines einzelnen Datenblocks n Bl\u00f6cke verwendet werden, w\u00e4hrend f\u00fcr die Wiederherstellung eines Datenblocks im LRC nur n\/l Bl\u00f6cke ben\u00f6tigt werden (n\/2 in unserem Beispiel). Auf der anderen Seite hat LRC im Vergleich zu Reed-Solomon-Codes eine Begrenzung bez\u00fcglich der maximal zul\u00e4ssigen Fehleranzahl. In den obigen Beispielen k\u00f6nnen die Reed-Solomon-Codes Daten bei bis zu 4 Fehlern wiederherstellen, w\u00e4hrend es f\u00fcr LRC 2 Kombinationen von 4 Fehlern gibt, bei denen eine Wiederherstellung nicht m\u00f6glich ist.<\/p>\n<p><\/p>\n<p>Was wichtiger ist, h\u00e4ngt von der spezifischen Situation ab, aber oft \u00fcberwiegt die Einsparung an redundanter Last, die LRC bietet, die etwas geringere Zuverl\u00e4ssigkeit der Speicherung.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Weitere Redundanzcodes<\/h1>\n<p><\/p>\n<p>Neben Reed-Solomon-Codes und LRC gibt es viele andere Redundanzcodes. Verschiedene Redundanzcodes verwenden unterschiedliche mathematische Ans\u00e4tze. Hier sind einige weitere Redundanzcodes:<\/p>\n<p><\/p>\n<ul>\n<li>Redundanzcode mittels XOR-Operator. Die XOR-Operation wird \u00fcber n Datenbl\u00f6cke ausgef\u00fchrt, was zu 1 Block von Redundanzcodes f\u00fchrt, also Schema n+1 (n Datenbl\u00f6cke, 1 Redundanzcode). Wird verwendet in <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, wo Daten- und Redundanzcodebl\u00f6cke zyklisch auf alle Festplatten des Arrays geschrieben werden.<\/li>\n<li>Der Even-Odd-Algorithmus, der auf der XOR-Operation basiert. Er erm\u00f6glicht die Erstellung von 2 Redundanzcodebl\u00f6cken, also Schema n+2.<\/li>\n<li>Der STAR-Algorithmus, der auf der XOR-Operation basiert. Er erm\u00f6glicht die Erstellung von 3 Redundanzcodebl\u00f6cken, also Schema n+3.<\/li>\n<li>Pyramide-Codes \u2013 weitere Redundanzcodes von Microsoft.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Verwendung bei Yandex<\/h1>\n<p><\/p>\n<p>Eine Reihe von Infrastrukturprojekten von Yandex nutzt Redundanzcodes f\u00fcr eine zuverl\u00e4ssige Datenspeicherung. Hier sind einige Beispiele:<\/p>\n<p><\/p>\n<ul>\n<li>Das interne objektbasierte Speichersystem MDS, \u00fcber das ich zu Beginn des Artikels geschrieben habe.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2013 das MapReduce-System von Yandex.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FwLvAuOSIOU\">YDB<\/a><\/noindex> (Yandex DataBase) \u2013 eine verteilte NewSQL-Datenbank.<\/li>\n<\/ul>\n<p><\/p>\n<p>Im MDS werden LRC-Redundanzcodes verwendet, Schema 8-2-2. Daten mit Redundanzcodes werden auf 12 verschiedene Festplatten in verschiedenen Servern in 3 verschiedenen Rechenzentren geschrieben: jeweils 4 Server in jedem Rechenzentrum. Weitere Informationen dazu finden Sie in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">Artikel<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>In YT werden sowohl die Reed-Solomon-Codes (Schema 6-3), die zuerst implementiert wurden, als auch die LRC-Redundanzcodes (Schema 12-2-2) verwendet, wobei LRC die bevorzugte Speichermethode ist.<\/p>\n<p><\/p>\n<p>In YDB kommen Redundanzcodes zum Einsatz, die auf dem Even-Odd-Prinzip basieren (Schema 4-2). \u00dcber die Redundanzcodes in YDB wurde bereits <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">beim Highload berichtet.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Die Anwendung verschiedener Redundanzschemas ist durch unterschiedliche Anforderungen an die Systeme bedingt. Beispielsweise werden in MDS die mit LRC gespeicherten Daten sofort in 3 Rechenzentren abgelegt. Es ist wichtig, dass die Daten weiterhin lesbar sind, selbst wenn eines der Rechenzentren ausf\u00e4llt, daher m\u00fcssen die Bl\u00f6cke so auf die Rechenzentren verteilt werden, dass bei Ausfall eines Rechenzentrums die Anzahl der nicht verf\u00fcgbaren Bl\u00f6cke innerhalb der zul\u00e4ssigen Grenzen bleibt. Im Schema 8-2-2 k\u00f6nnen 4 Bl\u00f6cke in jedem Rechenzentrum platziert werden, sodass bei Ausschaltung eines Rechenzentrums 4 Bl\u00f6cke nicht verf\u00fcgbar sind, aber die Daten weiterhin lesbar bleiben. Egal welches Schema wir bei der Verteilung auf 3 Rechenzentren w\u00e4hlen, es muss stets (r + l) \/ n &gt;= 0,5 gelten, was bedeutet, dass die Redundanz der Speicherung mindestens 50 % betr\u00e4gt.<\/p>\n<p><\/p>\n<p>Bei YT verh\u00e4lt es sich anders: Jeder YT-Cluster ist vollst\u00e4ndig in einem Rechenzentrum untergebracht (verschiedene Cluster in verschiedenen Rechenzentren), daher gibt es dort keine solche Einschr\u00e4nkung. Das 12-2-2-Schema bietet eine Redundanz von 33 %, was bedeutet, dass die Speicherung von Daten kosteng\u00fcnstiger ist, w\u00e4hrend diese auch bis zu 4 gleichzeitige Ausf\u00e4lle von Festplatten \u00fcberstehen k\u00f6nnen, \u00e4hnlich wie im MDS-Schema.<\/p>\n<p><\/p>\n<p>Es gibt noch viele weitere Besonderheiten bei der Anwendung von Redundanzcodes in Speicher- und Verarbeitungssystemen: Aspekte der Datenwiederherstellung, die Auswirkungen der Wiederherstellung auf die Ausf\u00fchrungszeiten von Abfragen, Besonderheiten beim Schreiben von Daten usw. Ich plane, separat \u00fcber diese und andere Besonderheiten der praktischen Anwendung von Redundanzcodes zu berichten, wenn das Thema von Interesse ist.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. Links<\/h1>\n<p><\/p>\n<ol>\n<li>Artikelreihe \u00fcber Reed-Solomon-Codes und Galois-Felder: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yadro\/blog\/336286\/\">https:\/\/habr.com\/ru\/company\/yadro\/blog\/336286\/<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yadro\/blog\/341506\/\">https:\/\/habr.com\/ru\/company\/yadro\/blog\/341506\/<\/a><\/noindex><br \/>\nDiese behandeln die Mathematik in verst\u00e4ndlicher Sprache ausf\u00fchrlicher.<\/li>\n<li>Artikel von Microsoft \u00fcber LRC: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf<\/a><\/noindex><br \/>\nIm Abschnitt 2 wird die Theorie kurz erkl\u00e4rt, gefolgt von praktischen Erfahrungen mit LRC.<\/li>\n<li>Even-odd-Schema: <noindex><a rel=\"nofollow\" href=\"https:\/\/people.eecs.berkeley.edu\/~kubitron\/courses\/cs262a-F12\/handouts\/papers\/p245-blaum.pdf\">https:\/\/people.eecs.berkeley.edu\/~kubitron\/courses\/cs262a-F12\/handouts\/papers\/p245-blaum.pdf<\/a><\/noindex><\/li>\n<li>STAR-Schema: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/legacy\/event\/fast05\/tech\/full_papers\/huang\/huang.pdf\">https:\/\/www.usenix.org\/legacy\/event\/fast05\/tech\/full_papers\/huang\/huang.pdf<\/a><\/noindex><\/li>\n<li>Pyramidencodes: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems\/\">https:\/\/www.microsoft.com\/en-us\/research\/publication\/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems\/<\/a><\/noindex><\/li>\n<li>Redundanzcodes im MDS: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\">https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806<\/a><\/noindex> <\/li>\n<li>Redundanzcodes in YT: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/<\/a><\/noindex><\/li>\n<li>Redundanzcodes in YDB: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8<\/a><\/noindex><\/li>\n<\/ol>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/510050\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438* \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0435\u0437 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438* \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0435\u0437 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438* \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0435\u0437 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-09T23:41:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-09T23:41:58+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Redundanzcodes: Einfach erkl\u00e4rt, wie Sie Daten zuverl\u00e4ssig und kosteng\u00fcnstig speichern | ProHoster","description":"So sieht Redundanz aus. Redundanzcodes* werden in Computersystemen h\u00e4ufig eingesetzt, um die Zuverl\u00e4ssigkeit der Datenspeicherung zu erh\u00f6hen. Bei Yandex werden sie in vielen Projekten verwendet. Zum Beispiel spart der Einsatz von Redundanzcodes anstelle von Replikation in unserem internen Object Storage Millionen, ohne die Zuverl\u00e4ssigkeit zu beeintr\u00e4chtigen. Trotz ihrer weiten Verbreitung ist eine verst\u00e4ndliche Beschreibung, wie Redundanzcodes funktionieren, jedoch sehr selten. Interessierte","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 | ProHoster","og:description":"\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438* \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0435\u0437 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-09T23:41:58+00:00","article:modified_time":"2020-07-09T23:41:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87758","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:44:06","updated":"2022-09-29 13:02:43"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/87758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}