-
HINTERGRUND
-
Die vorliegende Erfindung bezieht sich auf Datenspeichersysteme, und im Besonderen bezieht sich diese Erfindung auf ein Konfigurieren eines Datenspeichersystems, so dass es eine erhöhte Zahl von Speicherelementausfällen toleriert.
-
Das Aufrechterhalten eines Datenzugriffs ist, ebenso wie das Minimieren von Anschaffungs- und Betriebskosten, eine wichtige Anforderung an Cloud-Systeme. Um den Datenzugriff sicherzustellen, kann ein Cloud-System einen Speicher unter Verwendung eines zweidimensionalen Arrays realisieren, bei dem jede Spalte ein Satz oder JBOD (Just a Bunch of Disks) mit einem gemeinsamen Ausfallmechanismus ist. Des Weiteren können die Sätze unter Verwendung einer RAID-Architektur (Redundant Array of Independent Disks) wie z.B. RAID-5 oder RAID-6 geschützt werden. Wann immer eine einzelne Festplatte in dem Array ausfällt, kann die ausgefallene Festplatte durch eine Ersatzfestplatte ersetzt werden. Dabei kann allerdings ein Dienstaufruf notwendig werden, wenn die Anzahl an verfügbaren Ersatzfestplatten klein wird.
-
Ergänzend hierzu ist ein autonomer Paritätsaustausch ein Konzept zum Erhöhen der Ausfalltoleranz in einem Speichersystem, indem eine Paritätsfestplatte in eine Datenfestplatte umgewandelt wird. In Systemen der Cloud-Klasse ist es jedoch ebenfalls wichtig, einen Schutz gegen Ausfälle vorzusehen, die zum Ausfall eines gesamten Satzes von Speicherelementen (Satzausfall) wie z.B. eines gesamten JBOD führen. Obwohl manche Systeme nach dem Stand der Technik den Ausfall von einzelnen Festplatten oder ganzen JBODs und sogar eine Kombination aus beiden korrigieren können, verfügen diese System hinsichtlich einer Kombination von Satz- und Elementausfall über eine verringerte Wiederherstellungsfähigkeit. Insbesondere kann jeder Satz eines Arrays eine Ausfallgrenze darstellen, wobei ein Satz von Elementen auf Grundlage eines einzigen Ereignisses nicht mehr verfügbar sein oder ausfallen kann. So kann zum Beispiel die Netzwerkverbindung oder Stromversorgung eines Satzes ausfallen, oder der Satz kann versehentlich entfernt oder falsch konfiguriert werden usw. In einem solchen Fall wird eine erhebliche Anzahl von Elementen offline genommen oder fällt aus, wobei dies jedoch in einer spezifischen physischen Konfiguration geschieht. Wenn allerdings ein Paritätsaustausch verwendet wird, weicht die logische Konfiguration des Arrays im Laufe der Zeit von der anfänglichen physischen Konfiguration des Arrays ab. Entsprechend unterscheiden sich die physischen Ausfallgrenzen des Arrays von den logischen Ausfallgrenzen des Arrays.
-
KURZDARSTELLUNG
-
Bei einer allgemeinen Ausführungsform wird ein computerrealisiertes Verfahren zum Erhöhen der Ausfalltoleranz eines Arrays von Speicherelementen in einem Speichersystem bereitgestellt. Das computerrealisierte Verfahren beinhaltet ein Konfigurieren eines Arrays, so dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. Das computerrealisierte Verfahren beinhaltet auch ein Konfigurieren eines Löschkorrektur-Codes, der gegen einen Ausfall von mindestens einem der Speicherelemente des Arrays und einen Ausfall von einem der Sätze von Speicherelementen des Arrays schützt. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert und mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Des Weiteren beinhaltet das computerrealisierte Verfahren nach einem Ausfall eines der Daten speichernden Speicherelemente ein Auswählen eines Empfänger-Speicherelements aus dem Array. Zusätzlich beinhaltet das computerrealisierte Verfahren ein Wiederherstellen von mindestens einem Teil der Daten in dem Empfänger-Speicherelement, indem eine Paritätsaustausch-Operation durchgeführt wird, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält.
-
Bei einer weiteren allgemeinen Ausführungsform wird ein Computerprogrammprodukt zum Erhöhen der Ausfalltoleranz eines Arrays von Speicherelementen in einem Speichersystem bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium mit darin enthaltenen Programmbefehlen auf. Die Programmbefehle sind durch einen Prozessor ausführbar, um den Prozessor zu veranlassen, einen Array so zu konfigurieren, dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. Darüber hinaus sind die Programmbefehle durch den Prozessor ausführbar, um den Prozessor zu veranlassen, einen Löschkorrektur-Code zu konfigurieren, der gegen einen Ausfall von mindestens einem der Speicherelemente des Arrays und einen Ausfall von einem der Sätze von Speicherelementen des Arrays schützt. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert und mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Außerdem sind die Programmbefehle durch den Prozessor ausführbar, um den Prozessor zu veranlassen, nach einem Ausfall eines der Daten speichernden Speicherelemente ein Empfänger-Speicherelement aus dem Array auszuwählen. Zusätzlich sind die Programmbefehle durch den Prozessor ausführbar, um den Prozessor zu veranlassen, mindestens einen Teil der Daten in dem Empfänger-Speicherelement wiederherzustellen, indem er eine Paritätsaustausch-Operation durchführt, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält.
-
Bei einer weiteren allgemeinen Ausführungsform wird ein System bereitgestellt, das einen Prozessor und Logik enthält, die mit dem Prozessor integriert und/oder durch diesen ausführbar sind. Die Logik wird dergestalt konfiguriert, dass sie einen Array so konfiguriert, dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. Zudem wird die Logik so konfiguriert, dass sie einen Löschkorrektur-Code konfiguriert, der gegen einen Ausfall von mindestens einem der Speicherelemente des Arrays und gegen einen Ausfall von einem der Sätze von Speicherelementen des Arrays schützt. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert und mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Zusätzlich wird die Logik so konfiguriert, dass sie nach einem Ausfall eines der Daten speichernden Speicherelemente ein Empfänger-Speicherelement aus dem Array auswählt und mindestens einen Teil der Daten in dem Empfänger-Speicherelement wiederherstellt, indem sie eine Paritätsaustausch-Operation durchführt, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält.
-
Andere Aspekte und Ausführungsformen der vorliegenden Erfindung ergeben sich aus der folgenden ausführlichen Beschreibung, die in Zusammenhang mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulicht.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Im Folgenden werden mit Blick auf die beigefügten Zeichnungen lediglich als Beispiel zu verstehende Ausführungsformen der vorliegenden Erfindung beschrieben, wobei:
-
1 ein allgemeines physisches Layout für einen Speicher-Array gemäß einer Ausführungsform veranschaulicht;
-
2 ein Verfahren zum Erhöhen der Ausfalltoleranz eines Speicher-Arrays gemäß einer Ausführungsform veranschaulicht;
-
3 eine logische Anordnung eines Speicher-Arrays gemäß einer Ausführungsform veranschaulicht;
-
die 4A bis 7B den Ausfall und das Wiederherstellen von Speicherelementen des Arrays aus 3 gemäß verschiedenen Ausführungsformen veranschaulichen;
-
8 ein Diagramm eines voraussichtlichen Abstands zwischen zwei Wartungsmaßnahmen für ein Cloud-System gemäß einer Ausführungsform ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgende Beschreibung dient zur Veranschaulichung der allgemeinen Grundgedanken der vorliegenden Erfindung und ist nicht als Einschränkung der hier beanspruchten erfindungsgemäßen Konzepte gedacht. Darüber hinaus können bestimmte hier beschriebene Merkmale in Kombination mit anderen beschriebenen Merkmalen in jeder der verschiedenen möglichen Kombinationen und Umsetzungen verwendet werden.
-
Sofern hierin nicht anderweitig konkret festgelegt, sind sämtliche Begriffe in ihrer größtmöglichen Auslegung zu verstehen, einschließlich aus der Beschreibung hervorgehende Bedeutungen sowie durch einen Fachmann verstandene und/oder in Wörterbüchern, Abhandlungen usw. festgelegte Bedeutungen.
-
Darüber hinaus ist zu beachten, dass die in der Beschreibung und den beigefügten Ansprüchen verwendeten Singularformen „ein/eine/eines“ und „der/die/das“ auch die Pluralformen einschließt, soweit dies nicht anderweitig angegeben wird. Ebenso offensichtlich dürfte sein, dass die Verben „weist auf“ und/oder „aufweisend“ in dieser Patentschrift das Vorhandensein der genannten Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, ohne jedoch das Vorhandensein oder die Hinzufügung ein oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente, Komponente und/oder Gruppen derselben auszuschließen.
-
Die folgende Beschreibung offenbart mehrere bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten für einen autonomen Paritätsaustausch in Cloud-Systemen.
-
Die im Folgenden beschriebenen Ausführungsformen stellen Verfahren für die Array-Konfiguration und -Ausfalltoleranz bereit, die auf Systeme mit vielen unterschiedlichen physischen Konfigurationen von Speicherelementen angewendet werden können. Bei jeder der Ausführungsformen kann ein Speichersystem wie z.B. ein Cloud-System so konfiguriert werden, dass es eine hohe Verfügbarkeit mit hoher Dateneffizienz sowie niedrige Anschaffungskosten und Fähigkeiten für eine aufgeschobene Wartung bereitstellt.
-
Bei einer allgemeinen Ausführungsform wird ein computerrealisiertes Verfahren zum Erhöhen der Ausfalltoleranz eines Arrays von Speicherelementen in einem Speichersystem bereitgestellt. Das computerrealisierte Verfahren beinhaltet ein Konfigurieren eines Arrays, so dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. Das computerrealisierte Verfahren beinhaltet auch ein Konfigurieren eines Löschkorrektur-Codes, der gegen einen Ausfall von mindestens einem der Speicherelemente des Arrays und einen Ausfall von einem der Sätze von Speicherelementen des Arrays schützt. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert und mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Des Weiteren beinhaltet das computerrealisierte Verfahren nach einem Ausfall eines der Daten speichernden Speicherelemente ein Auswählen eines Empfänger-Speicherelements aus dem Array. Zusätzlich beinhaltet das computerrealisierte Verfahren ein Wiederherstellen von mindestens einem Teil der Daten in dem Empfänger-Speicherelement, indem eine Paritätsaustausch-Operation durchgeführt wird, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält.
-
Bei einer weiteren allgemeinen Ausführungsform wird ein Computerprogrammprodukt zum Erhöhen der Ausfalltoleranz eines Arrays von Speicherelementen in einem Speichersystem bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium mit darin enthaltenen Programmbefehlen auf. Die Programmbefehle sind durch einen Prozessor ausführbar, um den Prozessor zu veranlassen, einen Array so zu konfigurieren, dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. Darüber hinaus sind die Programmbefehle durch den Prozessor ausführbar, um den Prozessor zu veranlassen, einen Löschkorrektur-Code zu konfigurieren, der gegen einen Ausfall von mindestens einem der Speicherelemente des Arrays und einen Ausfall von einem der Sätze von Speicherelementen des Arrays schützt. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert und mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Außerdem sind die Programmbefehle durch den Prozessor ausführbar, um den Prozessor zu veranlassen, nach einem Ausfall eines der Daten speichernden Speicherelemente ein Empfänger-Speicherelement aus dem Array auszuwählen. Zusätzlich sind die Programmbefehle durch den Prozessor ausführbar, um den Prozessor zu veranlassen, mindestens einen Teil der Daten in dem Empfänger-Speicherelement wiederherzustellen, indem er eine Paritätsaustausch-Operation durchführt, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält.
-
Bei einer weiteren allgemeinen Ausführungsform wird ein System bereitgestellt, das einen Prozessor und Logik enthält, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist. Die Logik wird dergestalt konfiguriert, dass sie einen Array so konfiguriert, dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. Zudem wird die Logik so konfiguriert, dass sie einen Löschkorrektur-Code konfiguriert, der gegen einen Ausfall von mindestens einem der Speicherelemente des Arrays und gegen einen Ausfall von einem der Sätze von Speicherelementen des Arrays schützt. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert und mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Zusätzlich wird die Logik so konfiguriert, dass sie nach einem Ausfall eines der Daten speichernden Speicherelemente ein Empfänger-Speicherelement aus dem Array auswählt und mindestens einen Teil der Daten in dem Empfänger-Speicherelement wiederherstellt, indem sie eine Paritätsaustausch-Operation durchführt, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält.
-
1 veranschaulicht ein allgemeines physisches Layout für einen Speicher-Array 100. Bei verschiedenen Ausführungsformen kann der Speicher-Array 100 über ein Netzwerk wie z.B. das Internet einen Speicher der Cloud-Klasse bereitstellen. Wie in 1 veranschaulicht, beinhaltet der Speicher-Array 100 eine Mehrzahl von JBODs 104, von denen jeder ein Speichersatz ist. Im Besonderen veranschaulicht 1 den Speicher-Array 100 mit vier Sätzen 104 (104a, 104b, 104c und 104d). Des Weiteren kann jeder Satz 104 zwei oder mehr Speicherelemente 106 (z.B. SATA-Laufwerke (Serial AT Attachment) usw.) mit einem oder mehreren Ethernet-Ports verbinden. Zusätzlich kann jeder Ethernet-Port mit einem Ethernet-Switch verbunden sein, und jeder Ethernet-Switch kann mit einem oder mehreren Controllern 102 verbunden sein. Die Controller 102 können in Software und/oder Hardware ausgeführt sein. Als eine Option können die Sätze 104 benachbart sein. In einigen Ausführungsformen sind die Sätze 104 jedoch nicht benachbart. So kann sich jeder der Sätze 104a, 104b, 104c und 104d zum Beispiel in einem getrennten Rechenzentrum befinden.
-
Aus Vereinfachungsgründen wird der Speicher-Array 100 aus 1 so gezeigt, dass er vier Sätze 104 aufweist. Darüber hinaus werden die vier Sätze 104 so gezeigt, dass sie mit zwei Switches verbunden sind, die wiederum jeweils mit einem Controller 102a und einem Controller 102b verbunden sind. Allerdings ist vorgesehen, dass hier offenbarte Ausführungsformen in einem Speicher-Array realisiert werden können, der jede geeignete Anzahl von Sätzen 104 aufweist. Ein solcher Speicher-Array kann mit jeder beliebigen Anzahl von Switches und Controllern verbunden sein.
-
Des Weiteren wird jeder Satz 104 so gezeigt, dass er eine Mehrzahl von Speicherelementen 106 (D0, D1 ... Dn) enthält. Im Besonderen wird der Satz 104a so gezeigt, dass er Speicherelemente 106a enthält, der Satz 104b wird so gezeigt, dass er Speicherelemente 106b enthält, der Satz 104c wird so gezeigt, dass er Speicherelemente 106c enthält, und der Satz 104d wird so gezeigt, dass er Speicherelemente 106d enthält. Jedes Speicherelement kann mindestens einen Teil eines Festplattenlaufwerks (Hard Disk Drive, HDD), eines Halbleiterlaufwerks (Solid State Drive, SSD), einer flüchtigen Direktzugriffsspeichereinheit (Random Access Memory, RAM), einer optischen Speichereinheit (z.B. CD-ROM, DVD-ROM usw.) oder einer Bandspeichereinheit aufweisen. In jedem der Sätze 104 können Dutzende, Hunderte oder Tausende von Speicherelementen vorhanden sein.
-
Daten können verloren gehen, indem ein Speicherelement 106 wie z.B. eine Festplatte oder ein Teil einer Festplatte ausfällt oder indem ein gesamter Satz der Sätze 104 ausfällt. Jeder der Sätze 104 kann eine Ausfallgrenze darstellen, so dass die Speicherelemente 106 eines gegebenen Satzes 104 auf Grundlage eines einzigen Ereignisses nicht mehr verfügbar sein oder ausfallen können. In den meisten Fällen fällt ein gesamter Satz 104 aufgrund eines Zugriffsverlusts aus. So kann ein Satz 104 zum Beispiel aufgrund eines Stromausfalls oder aufgrund einer Unterbrechung der Netzwerkverbindung ausfallen, z.B. wenn eine Netzwerkverkabelung oder eine Stromversorgung ausfällt oder wenn der Satz 104 versehentlich entfernt oder falsch konfiguriert wurde usw. Wenn ein Satz 104 aufgrund eines Zugriffverlusts ausfällt, bleiben die Daten in den Speicherelementen 106 des Satzes 104 hiervon üblicherweise unberührt. Nach Abschluss der Reparatur können die Daten in den Speicherelementen 106 erneut zugänglich sein, auch wenn sie unter Umständen etwas veraltet sind.
-
Allerdings kann ein Ausfall eines Satzes 104 zum Ausfall eines oder mehrerer Speicherelemente 106 innerhalb des Satzes 104 führen. So kann eine Spannungsschwankung zum Beispiel zu einer Beschädigung des Satzes 104 oder zu einer nicht ordnungsgemäßen Entfernung des JBODs 104 führen. Die hier offenbarten Ausführungsformen sind in der Lage, unter den oben beschriebenen Bedingungen einen Schutz bereitzustellen.
-
Jeder Controller 102 (z.B. der Controller 102a und/oder der Controller 102b) kann eine Kombination aus einer Zentraleinheit (Central Processing Unit, CPU) wie z.B. einem Mikroprozessor und einer Anzahl von anderen verbundenen Einheiten beinhalten. Zum Beispiel kann jeder in 1 gezeigte Controller 102 einen RAM, einen Festwertspeicher (Read-Only Memory, ROM), einen E/A-Adapter zum Verbinden von Peripherieeinheiten, einen Benutzerschnittstellenadapter, einen Datenübertragungsadapter usw. beinhalten. Zudem kann eine Ausführungsform des Controllers unter Verwendung der Sprache XML, C und/oder C++ oder anderer Programmiersprachen nebst einer objektorientierten Programmiermethodik geschrieben werden.
-
Wie weiter unten ausführlicher beschrieben, kann darüber hinaus eines oder mehrere der Speicherelemente, die sich physisch in einem ersten Satz befinden, logisch einem zweiten, sich hiervon unterscheidenden Satz zugewiesen werden, der andere Speicherelemente physisch enthält. Entsprechend kann das Übergeben eines Speicherelements von einem Gebersatz an einen Empfängersatz erfordern, dass ein Controller 102 in der Lage ist, Speicherelemente in dem ersten Satz logisch dem zweiten Satz zuzuweisen und umgekehrt. Wenn Geber- und Empfängersätze durch getrennte Controller 102 verwaltet werden, können die Controller 102 Daten zur logischen Zuweisung von Speicherelementen untereinander austauschen.
-
Mit Blick auf 2 wird ein Ablaufplan eines Verfahrens 200 gemäß einer Ausführungsform gezeigt. Das Verfahren 200 kann gemäß der vorliegenden Erfindung in jeder der Umgebungen durchgeführt werden, die u.a. in 1 in verschiedenen Ausführungsformen dargestellt werden. Selbstverständlich können in dem Verfahren 200 mehr oder weniger Operationen als in 2 konkret beschrieben enthalten sein, wie dem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
-
Jeder der Schritte des Verfahrens 200 kann durch jede geeignete Komponente der Betriebsumgebung durchgeführt werden. So kann das Verfahren 200 in verschiedenen Ausführungsformen zum Beispiel teilweise oder vollständig durch einen Controller oder durch eine andere Einheit mit einem oder mehreren darin enthaltenen Prozessoren durchgeführt werden. Der Prozessor, z.B. Verarbeitungsschaltung/en, Chip/s und/oder Modul/e, die in Hardware und/oder in Software realisierte werden und vorzugsweise mindestens eine Hardwarekomponente enthalten, kann in jeder Einheit genutzt werden, um einen oder mehrere Schritte des Verfahrens 200 durchzuführen. Veranschaulichende Prozessoren beinhalten, ohne darauf beschränkt zu sein, eine anwendungsspezifische integrierte Schaltung (Application-Specific Integrated Circuit, ASIC), ein Field-Pogrammable Gate Array (FPGA) usw., Kombinationen hiervon oder jede andere geeignete Datenverarbeitungseinheit nach dem Stand der Technik.
-
Wie in 2 gezeigt, beginnt das Verfahren 200 mit Operation 202, in der ein Array so konfiguriert wird, dass er eine Mehrzahl von Speicherelementen in n > 1 Sätzen von Speicherelementen enthält. So kann der Array zum Beispiel so konfiguriert werden, dass er 3, 5, 8, 12 usw. Sätze von Speicherelementen enthält. Darüber hinaus kann sich jeder Satz von Speicherelementen eine Ausfallgrenze teilen. Bei einer Ausführungsform kann jeder Satz von Speicherelementen einen JBOD aufweisen. Entsprechend kann der Array so konfiguriert werden, dass er eine Mehrzahl von JBODs enthält, und jedes JBOD des Arrays enthält zwei oder mehr Speicherelemente.
-
Zusätzlich wird während einer Operation 204 ein Löschkorrektur-Code für den Array konfiguriert. Wie weiter unten ausführlicher beschrieben, schützt der Löschkorrektur-Code gegen den Ausfall von mindestens einem der Speicherelemente des Arrays sowie zusätzlich gegen einen Ausfall von einem der Sätze von Speicherelementen des Arrays. Der Löschkorrektur-Code wird so konfiguriert, dass mindestens eine Spalte der Speicherelemente des Arrays Zeilenparitätsinformationen speichert. Zusätzlich wird der Löschkorrektur-Code so konfiguriert, dass mindestens eine Zeile der Speicherelemente des Arrays Spaltenparitätsinformationen speichert. Bei manchen Ausführungsformen kann der Löschkorrektur-Code so konfiguriert werden, dass mindestens eines der Speicherelemente globale Paritätsinformationen speichert.
-
So zeigt 3 zum Beispiel eine logische Anordnung eines Arrays 300, wobei der Array 300 so veranschaulicht ist, dass er eine Mehrzahl von Speicherelementen enthält. Im Besonderen ist der Array so veranschaulicht, dass er acht Spalten 322 bis 336 (d.h. die Spalten 322, 324, 326, 328, 330, 332, 334 und 336) von Speicherelementen und zehn Zeilen 302 bis 320 (d.h. die Zeilen 302, 304, 306, 308, 310, 312, 314, 316, 318 und 320) von Speicherelementen enthält. Bei der zuvor bereits erwähnten Option kann jedes der Speicherelemente mindestens einen Teil einer Festplatte aufweisen, es kann jedoch auch eine beliebige Datenspeichereinheit und Kapazität aufweisen. Wie in 3 veranschaulicht, kann der in jedem der Speicherelemente gezeigte Wert für eine logische Speicherstelle des Speicherelements als (Satz-Index; Festplatten-Nr. in dem Satz) stehen. Des Weiteren steht jede der nicht schattiert dargestellten Zellen (Speicherelemente) aus 3 für ein Speicherelement, das Daten wie z.B. Benutzerdaten speichert, und jede der schattiert dargestellten Zellen (Speicherelemente) steht für ein Speicherelement, das Paritätsinformationen speichert, wie weiter unten ausführlicher beschrieben wird.
-
Zu erwähnen ist, dass im anfänglichen Zustand oder in der anfänglichen Anordnung des Arrays 300, wie er in 3 dargestellt wird, die logische Zuordnung des Arrays 300 an dem physischen Layout des Arrays 300 ausgerichtet ist. Anders ausgedrückt befinden sich alle Speicherelemente 0;x (Satz 0) in der Spalte 322. Wie in 3 dargestellt, wurde der Array 300 zusätzlich so konfiguriert, dass der Array 300 keine Ersatzspeicherelemente enthält.
-
Des Weiteren wird ein Löschkorrektur-Code für den Array 300 so konfiguriert, dass mindestens eine Spalte von Speicherelementen Zeilenparitätsinformationen speichert. So wurden die Speicherelemente der Spalte 336 zum Beispiel so konfiguriert, dass jedes Speicherelement eine Zeilenparität für seine jeweilige Zeile bereitstellt. Im Besonderen stellt ein Speicherelement in Zeile 0, Spalte 7 eine Zeilenparität für die Zeile 302 bereit, ein Speicherelement in Zeile 1, Spalte 7 stellt eine Zeilenparität für die Zeile 304 bereit, und ein Speicherelement in Zeile 2, Spalte 7 stellt eine Zeilenparität für die Zeile 306 bereit usw.
-
Darüber hinaus wird der Löschkorrektur-Code für den Array 300 so konfiguriert, dass mindestens eine Zeile von Speicherelementen Spaltenparitätsinformationen speichert. So wurden die Speicherelemente der Zeile 320 zum Beispiel so konfiguriert, dass jedes Speicherelement eine Spaltenparität für seine jeweilige Spalte bereitstellt. Im Besonderen stellt ein Speicherelement in Zeile 9, Spalte 0 eine Spaltenparität für die Spalte 322 bereit, ein Speicherelement in Zeile 9, Spalte 1 stellt eine Spaltenparität für die Spalte 324 bereit, und ein Spaltenelement in Zeile 9, Spalte 2 stellt eine Spaltenparität für die Spalte 326 bereit usw. Zusätzlich speichert ein Speicherelement in Zeile 9, Spalte 7 Spaltenparitätsinformationen für die Spalte von Zeilenparitäts-Speicherelementen in Spalte 7 (Spalte 336).
-
Darüber hinaus wird der Löschkorrektur-Code für den Array 300 so konfiguriert, dass mindestens ein Speicherelement globale Paritätsinformationen speichert. So wird der Array 300 zum Beispiel so gezeigt, dass er ein Speicherelement 340 in Zeile 8, Spalte 5 und ein Speicherelement 342 in Zeile 8, Spalte 6 enthält, von denen jedes globale Paritätsinformationen für den Array 300 speichert. Wie in 3 gezeigt, hat der für den Array 300 konfigurierte Löschkorrektur-Code aufgrund der Speicherung von globalen Paritätsinformationen sowohl in Speicherelement 340 als auch in Speicherelement 342 einen Hamming-Abstand von 8 und kann somit beliebige sieben Löschvorgänge korrigieren. Des Weiteren hat er einen Hamming-Abstand von 2 zur Spaltenlöschung und kann somit den Verlust einer einzigen Spalte korrigieren. Bei einer weiteren Ausführungsform, bei der nur ein einziges Speicherelement so konfiguriert wird, dass es globale Paritätsinformationen speichert, kann ein Hamming-Abstand von 6 erreicht werden, der somit die Korrektur von beliebigen fünf Löschvorgängen gestattet.
-
Bei einer Ausführungsform kann jeder Satz von Speicherelementen in einem einzigen JBOD oder einer anderen physischen Speichereinheit (z.B. einem Schrank usw.) untergebracht werden. Anders ausgedrückt können die Elemente mit einem Satzindex 0 einen ersten Satz von Speicherelementen oder einen erste JBOD aufweisen, die Elemente mit einem Satzindex 1 können einen zweiten Satz von Speicherelementen oder einen zweiten JBOD aufweisen, und die Elemente mit einem Satzindex 2 können einen dritten Satz von Speicherelementen oder einen dritten JBOD aufweisen usw. Auf diese Weise kann der Array 300 ein Cloud-System aufweisen, das acht JBODs enthält, von denen jedes zehn Speicherelemente aufweist (ein Speicherelement in jeder der Zeilen 302 bis 320). Entsprechend können sich die Speicherelemente eines beliebigen gegebenen Satzes eine gemeinsame Ausfallgrenze teilen. In einem solchen Cloud-System ist üblicherweise davon auszugehen, dass die Speicherelemente hinsichtlich der Sätze, in denen die Speicherelemente untergebracht sind, unter hohen Ausfallraten leiden.
-
Indem für den Array 300 ein Löschkorrektur-Code so konfiguriert wird, dass mindestens eine Spalte von Speicherelementen Zeilenparitätsinformationen speichert, mindestens eine Zeile von Speicherelementen Spaltenparitätsinformationen speichert und mindestens ein Speicherelement globale Paritätsinformationen speichert, kann der Array 300 eine erhebliche Anzahl von Speicherelementausfällen tolerieren, wodurch ein Festplatten-Wartungsintervall des Arrays 300 verlängert wird. Das Festplatten-Wartungsintervall kann zum Beispiel verlängert werden, indem den Speicherelementen ermöglicht wird, an ihrem Platz auszufallen. Als eine Option kann ein Wartungsereignis nur dann ausgelöst werden, nachdem eine vorbestimmte Anzahl von Speicherelementen an ihrem Platz ausgefallen sind.
-
Mit erneutem Blick auf 2 wird nach einem Ausfall eines der Daten speichernden Speicherelemente in Operation 206 ein Empfänger-Speicherelement aus dem Array ausgewählt. Des Weiteren wird in Operation 208 mindestens ein Teil der Daten in dem Empfänger-Speicherelement wiederhergestellt, indem eine Paritätsaustausch-Operation durchgeführt wird, die eine Ausfalltoleranz des Satzes von Speicherelementen aufrechterhält, der das ausgefallene Speicherelement enthält. Die Daten können in jeder praktisch anwendbaren Weise in dem Empfänger-Speicherelement wiederhergestellt werden, zum Beispiel durch ein Verwenden von Zeilenparitätsinformationen, Spaltenparitätsinformationen oder globalen Paritätsinformationen, die in einem oder mehreren der Speicherelemente des Arrays gespeichert werden.
-
Bei einer Ausführungsform wird das Empfänger-Speicherelement aus demselben Satz ausgewählt wie das ausgefallene Speicherelement. Wenn das Empfänger-Speicherelement ausgewählt wird, kann es darüber hinaus Spaltenparitätsinformationen speichern. Anders ausgedrückt ist das Empfänger-Speicherelement vor dem Wiederherstellen des mindestens einen Teils der Daten in dem Empfänger-Speicherelement eines der Speicherelemente der mindestens einen Zeile von Speicherelementen, die Spaltenparitätsinformationen speichert.
-
So veranschaulicht mit Blick auf 4A ein Array 400 zum Beispiel eine Anordnung des Arrays 300 aus 3, nachdem ein physisches Speicherelement 2;1 ausgefallen ist. Entsprechend veranschaulicht ein Array 450 aus 4B eine Anordnung des Arrays 400, nachdem der Ausfall des Speicherelements 2;1 behoben wird, indem innerhalb der Spalte 326 Daten, die zuvor in dem ausgefallenen Speicherelement gespeichert wurden, in einem Empfänger-Speicherelement wiederhergestellt werden. Anders ausgedrückt kann ein einzelner physischer Speichersatz das Empfänger-Speicherelement und das ausgefallene Speicherelement aufnehmen. Bei einer Ausführungsform können Daten eines ausgefallenen Speicherelements in dem Empfänger-Speicherelement wiederhergestellt werden, indem ausschließlich aus anderen Speicherelementen in dem Satz des ausgefallenen Speicherelements gelesen wird. Somit können die Daten des ausgefallenen Speicherelements wiederhergestellt werden, ohne dass horizontale Paritätsinformationen oder globale Paritätsinformationen verwendet werden.
-
Wie durch den Array 450 gezeigt, wurden im Besonderen die zuvor in dem Speicherelement 2;1 gespeicherten Daten in dem Speicherelement 2;9 wiederhergestellt, das zuvor Spaltenparitätsinformationen für die Spalte 326 gespeichert hat. Wie in 4B veranschaulicht, können die physischen Speicherelement 2;1 und 2;9 entsprechend einen Paritätsaustausch durchlaufen, indem die zuvor in dem ausgefallenen Speicherelement 2;1 gespeicherten Daten in dem physischen Speicherelement 2;9 wiederhergestellt werden. Wie in den 5 bis 7 veranschaulicht, bewahrt diese Paritätsaustausch-Operation die Ausfalltoleranz des dritten Satzes von Speicherelementen (d.h. des Satzes von Speicherelementen mit einem Satzindex 2, den Speicherelementen 2;x). Anders ausgedrückt kann durch ein Durchführen der in Zusammenhang mit den 4A und 4B veranschaulichten Paritätsaustausch-Operation der Satz mit den ausgefallenen Speicherelementen zusätzliche Ausfälle von Speicherelementen innerhalb des Satzes tolerieren, ohne dass Daten verloren gehen.
-
Um die Auswirkungen auf das Netzwerk möglichst gering zu halten, kann das Empfänger-Speicherelement 2;9 aus demselben Satz wie das ausgefallene Speicherelement ausgewählt werden. Da sich die Speicherelemente 2;1 und 2;9 innerhalb desselben Satzes oder JBODs befinden, kann das Wiederherstellen des logischen Speicherelements 2;1 in dem physischen Speicherelement 2;9 ohne die Übertragung von Daten über Netzwerk- oder Datenkanäle auskommen, die sich außerhalb des JBODs befinden. Das logische Speicherelement in Zeile 1, Spalte 2 kann unter Verwendung einer Spaltenparität wiederhergestellt werden. Als eine Option kann das Wiederherstellen des logischen Speicherelements in Zeile 1, Spalte 2 in dem physischen Speicherelement 2;9 jedoch über eine Anzahl von Pfaden in dem Löschkorrektur-Code durchgeführt werden.
-
Zu erwähnen ist, dass der für den Array 300 konfigurierte Löschkorrektur-Code zwar den Ausfall von beliebigen sieben Speicherelementen tolerieren kann, die Leseleistung jedoch leiden kann, wenn der Array 300 mit einem ausgefallenen Speicherelement weiterbetrieben wird. Entsprechend kann zum Wiederherstellen der Systemleistung ein Paritätsaustausch verwendet werden, indem die zuvor in dem Speicherelement 2;1 gespeicherten Daten in einem der Speicherelemente wiederhergestellt werden, die Spaltenparitätsinformationen speichern (z.B. das physische Spaltenelement 2;9 usw., wie oben beschrieben). Danach kann die Leseleistung wiederhergestellt sein. Des Weiteren kann aufgrund der Verringerung der Systemressourcen, die für eine Verwaltung von Paritätsinformationen benötigt werden, die Schreibleistung geringfügig höher sein.
-
Als eine Option kann bei einem Ausfall eines Speicherelements, das Spaltenparitätsinformationen speichert, wie z.B. die Speicherelemente in Zeile 320 aus 3 (Zeile 9, Spalte 0; Zeile 9, Spalte 1; Zeile 9, Spalte 2; ... Zeile 9, Spalte 7), keine Wiederherstellungsoperation notwendig sein. Zudem können bei einem Ausfall eines Speicherelements, das Zeilenparitätsinformationen speichert, wie z.B. die Speicherelemente 336 aus 3 (Zeile 0, Spalte 7; Zeile 1, Spalte 7; Zeile 2, Spalte 7; ... Zeile 8, Spalte 7), die Zeilenparitätsinformationen, die zuvor in dem ausgefallenen Speicherelement gespeichert wurden, wiederhergestellt werden. Anders ausgedrückt können die Speicherelemente, die Zeilenparitätsinformationen speichern, ebenso einem Paritätsaustausch unterzogen werden wie die Speicherelemente, die Daten speichern. Im Besonderen können die Daten (Zeilenparitätsinformationen) des ausgefallenen Zeilenparitäts-Speicherelements in einem Speicherelement wiederhergestellt werden, das zuvor zum Speichern von Spaltenparitätsinformationen verwendet wurde.
-
Zusätzlich kann es möglich sein auszuwählen, ob eine Wiederherstellungsoperation durchgeführt werden soll, wenn das ausgefallene Speicherelement globale Paritätsinformationen gespeichert hat. Wenn nach einem Ausfall eines Speicherelements, das zuvor globale Paritätsinformationen gespeichert hat, die Spaltenparität intakt bleibt, kann der Ausfall als eine Option auch unverändert bleiben. Auf diese Weise kann sich das ausgefallene Speicherelement so verhalten, als wäre es ein Paritätsaustauschgeber. Das Aufrechterhalten der Toleranz gegenüber einer Kombination aus Satz- und Elementausfällen beschränkt die Anzahl von Geberparitäten in einer Spalte auf die Anzahl von Spaltenparitäten in der Spalte.
-
Als eine weitere Option kann jedes Speicherelement, das globale Paritätsinformationen speichert, als ein Benutzerdaten speicherndes Speicherelement behandelt und bei einem Ausfall des Speicherelements, das globale Paritätsinformationen speichert, durch ein Spaltenparitäts-Speicherelement ersetzt werden. Aus Leistungssicht kann dies vorteilhafter sein als den Ausfall unverändert zu belassen, da bei nur einem Ausfall in der Spalte globale Paritätsinformationen anhand einer lokalen Spaltenparität erstellt werden können, wodurch Bandbreite eingespart wird. Wenn nach einem Ausfall eines Speicherelements, das zuvor globale Paritätsinformationen gespeichert hat, die globalen Paritätsinformationen nicht wiederhergestellt werden und weitere Speicherelemente innerhalb des Arrays ausfallen, kann zudem eine nachfolgende Wiederherstellung der globalen Paritätsinformationen zu einer Reparatur mit höherem Rechenaufwand werden.
-
Ein oder mehrere zusätzliche Speicherelemente können ausfallen. So veranschaulicht mit Blick auf 5A zum Beispiel der Array 500 eine logische Anordnung des Arrays 450 nach dem Ausfall eines zusätzlichen Speicherelements. Wie oben erwähnt, wurde das physische Speicherelement 2;9 zuvor mit den Daten wiederhergestellt, die zuvor in dem ausgefallenen physischen Speicherelement 2;1 gespeichert wurden, so dass das physische Speicherelement 2;9 dem Speicherelement in Zeile 1, Spalte 2 logisch zugeordnet wird. Wie in 5A gezeigt, ist ein Speicherelement 2;0 ausgefallen.
-
Das Speicherelement in Zeile 0, Spalte 2 kann wiederhergestellt werden, indem ein Empfänger-Speicherelement aus dem Array ausgewählt und anschließend mindestens ein Teil der zuvor in dem Speicherelement 2;0 gespeicherten Daten in dem Empfänger-Speicherelement wiederhergestellt wird. Bei einer Ausführungsform kann das Empfänger-Speicherelement vor der Wiederherstellungsoperation ein weiteres der Speicherelemente sein, die Spaltenparitätsinformationen speichern. Als eine Option kann das Empfänger-Speicherelement aus einem anderen Satz oder JBOD des Arrays als das ausgefallene Speicherelement ausgewählt werden.
-
Bei einer Ausführungsform, bei welcher der Array so konfiguriert wurde, dass er n > 1 Sätze von Speicherelementen enthält, können dann bis zu n ausgefallene Speicherelemente auf die oben beschriebene Weise wiederhergestellt werden. So kann zum Beispiel in Zusammenhang mit den 3 bis 5, bei denen der Array 300 so konfiguriert wurde, dass er acht Sätze von Speicherelementen (d.h. acht JBODs) enthielt, bis zu acht ausgefallene Speicherelemente auf die oben beschriebene Weise wiederhergestellt werden. Im Besonderen kann jedes von bis zu acht ausgefallenen Speicherelementen in einem der acht Speicherelemente wiederhergestellt werden, die ursprünglich Spaltenparitätsinformationen in der Zeile 320 des Arrays 300 speichern. Bei verschiedenen Ausführungsformen kann bei dem oder als Reaktion auf den Ausfall von ≤ n Speicherelementen ein Wartungsereignis ausgelöst werden. So kann zum Beispiel in Zusammenhang mit den 3 bis 5 das Wartungsereignis beim achten Ausfall eines Speicherelements, beim sechsten Ausfall eines Speicherelements, beim vierten Ausfall eines Speicherelements usw. ausgelöst werden.
-
Die Tatsache, dass sich die ausgefallenen Speicherelemente 2;0 und 2;1 in demselben Satz befinden, kann auf ein Worst-Case-Szenario für einen Speicherelementausfall hindeuten, bei dem in einem einzelnen Satz mehrere Speicherelemente ausfallen. Da in Satz 2 kein Speicherelement mehr vorhanden ist, das Spaltenparitätsinformationen speichert, kann aus einem weiteren der Sätze des Arrays 500 ein Speicherelement ausgewählt werden, das Paritätsinformationen speichert. Anders ausgedrückt ist in Satz 2 kein Setzen mit lokaler Parität mehr verfügbar, so dass das Empfänger-Speicherelement für ein Wiederherstellen der Daten des Speicherelements 2;0 aus einem der Paritätsinformationen speichernden Speicherelemente in einem der anderen Sätze des Arrays 500 ausgewählt werden kann.
-
So veranschaulicht mit Blick auf 5B ein Array 550 zum Beispiel eine Anordnung des Arrays 500, nachdem der Ausfall des Speicherelements 2;0 behoben wird, indem Daten, die zuvor in dem Speicherelement 2;0 gespeichert wurden, in einem Empfänger-Speicherelement eines weiteren Satzes wiederhergestellt werden. Somit wurden die zuvor in dem physischen Speicherelement 2;0 von Satz 2 gespeicherten Daten in dem physischen Speicherelement 0;9 eines anderen Satzes (Satz 0) wiederhergestellt. Die Daten des Speicherelements in Zeile 0, Spalte 2 können unter Verwendung der Zeilenparitätsinformationen für Zeile 0 wiederhergestellt werden, da die Spaltenparitätsinformationen für Spalte 2 zuvor überschrieben wurden.
-
Auf diese Weise kann das physische Speicherelement 0;9 dem Speicherelement in Zeile 0, Spalte 2 logisch zugeordnet werden. Nach Abschluss des Paritätsaustauschs befinden sich entsprechend Daten aus einem ersten Satz nun physisch in einem anderen Satz. Insbesondere befinden sich Daten aus der logischen Spalte 326 nun in einem Speicherelement in Satz 0. Als Folge des Durchführens einer Paritätsaustausch-Operation zwischen Speicherelementen der Spalten 322 und 326 ist eine logische Zuordnung des Arrays 550 nicht mehr an den Ausfallgrenzen der Sätze oder JBODs ausgerichtet.
-
Indem die Auswahl von Empfänger-Speicherelementen zugelassen wird, welche die Ausfallgrenzen von Sätzen oder JBODs verletzen, können zusätzliche Paritätsaustausch-Operationen durchgeführt werden, wenn zusätzliche Speicherelemente innerhalb des Arrays 550 ausfallen. Mit Blick auf 6A veranschaulicht der Array 600 zum Beispiel eine logische Anordnung des Arrays 550 nach dem Ausfall von sechs zusätzlichen Speicherelementen sowie die darauffolgenden Paritätsaustausch-Operationen.
-
Im Besonderen sind, wie in 6A veranschaulicht, mit Ausnahme von Speicherelement 2;7 alle Speicherelemente innerhalb von Satz 2 ausgefallen. Des Weiteren wurde für jedes der Speicherelemente von Satz 2 ein Paritätsaustausch durchgeführt, so dass jedes Speicherelement von Satz 2 in einem Empfänger-Speicherelement der Zeile 320 wiederhergestellt wurde. Anders ausgedrückt speichert jedes der Speicherelemente der Zeile 320, die zuvor durch den Löschkorrektur-Code für ein Speichern von Spaltenparitätsinformationen konfiguriert wurden, nun Daten. Im Besonderen wird in 6A ein physisches Speicherelement 0;9 dem logischen Speicherelement in Zeile 0, Spalte 2 zugeordnet, ein physisches Speicherelement 1;9 wird dem logischen Speicherelement in Zeile 2, Spalte 2 zugeordnet, ein physisches Speicherelement in Zeile 9, Spalte 3 wird dem logischen Speicherelement in Zeile 5, Spalte 2 zugeordnet, ein physisches Speicherelement 4;9 wird dem logischen Speicherelement in Zeile 4, Spalte 2 zugeordnet usw.
-
Als Ergebnis kann auf alle Daten des ursprünglichen Arrays 300 weiterhin direkt zugegriffen werden, während sämtliche Spaltenparitätsinformationen nun fehlen. Darüber hinaus befinden sich ursprünglich in Satz 2 gespeicherte Daten nun innerhalb von allen Sätzen 0;x ... 7;x (d.h. in acht verschiedenen Sätzen) des ursprünglichen Arrays 300. Als Ergebnis kann der Array 600 zusätzlich zum Ausfall eines Satzes womöglich nur einen einzigen zusätzlichen Speicherelementausfall tolerieren. Wenn der Array eines Cloud-Systems nur den zusätzlichen Ausfall eines einzigen Speicherelements tolerieren kann, kann das System als eine Option eine Wartung anfordern. Ein Wartungsereignis kann zum Beispiel die Installation von Ersatz- oder Austauschspeicherelementen beinhalten, um die ausgefallenen Speicherelemente zu ersetzen.
-
Um die Gefahr eines Ausfalls während der Wartung zu minimieren, kann das Cloud-System so konfiguriert werden, dass es einen weiteren Speicherelementausfall während der Wartung toleriert. Somit kann eine beliebige Wartung mit einem Hamming-Abstand von 2 zu Speicherelementen durchgeführt werden.
-
Wie erwähnt, ist der Array 600 aus 6A in der Lage, den Ausfall eines zusätzlichen Speicherelements und eines Satzes zu tolerieren. Dieses Szenario wird durch den Array 650 aus 6B veranschaulicht. Im Besonderen wurde, wie in 6B gezeigt, ein vollständiger Satz (d.h. der Satz 0) aus dem Array 650 entfernt. Folglich sind alle Speicherelemente, welche die Spalte 322 bilden, ausgefallen oder nicht mehr vorhanden. Als Ergebnis sind die Daten des physischen Speicherelements 0;9 verloren gegangen. Dieses physische Speicherelement enthält Daten aus dem logischen Speicherelement in Zeile 0, Spalte 2. Zu beachten ist, dass nach dem Paritätsaustausch das logische Speicherelement nicht mehr an den physischen Ausfallgrenzen eines Satzes ausgerichtet ist. Somit kann der Ausfall eines Satzes mehrere Spalten in der logischen Zuordnung betreffen.
-
Auch das physische Speicherelement 1;1 ist ausgefallen oder nicht mehr vorhanden. Die Folgen einer nicht mehr gegebenen Ausrichtung der Ausfallgrenze zeigen sich in den Speicherelementausfällen und in dem Satzausfall des Arrays 650. Im Besonderen hat die Spalte 326 zwei Speicherelemente eingebüßt, von denen eines logisch der Spalte 322 zugeordnet war.
-
Als Ergebnis sind 19 Speicherelemente des Arrays 650 zum gegenwärtigen Zeitpunkt ausgefallen oder nicht verfügbar. Allerdings kann ein Löschkorrektur-Code, der zuvor für den Array 650 konfiguriert wurde, diese Ausfälle unter Umständen korrigieren, da frühere Paritätsaustausch-Operationen die Ausfälle in ein bestimmtes Muster gebracht haben.
-
Bei einer Ausführungsform können Zeilenparitätsinformationen verwendet werden, um die Speicherelementausfälle des Arrays 650 zu korrigieren. Im Besonderen können die Zeilenparitätsinformationen der Speicherelemente der Spalte 336 verwendet werden, um die Speicherelementausfälle des Arrays 650 zu korrigieren.
-
So veranschaulicht mit Blick auf 7A ein Array 700 eine logische Anordnung des Arrays 650 nach dem Wiederherstellen der physischen Speicherelemente 0;2, 0;3, 0;4, 0;5, 0;6, 0;7 und 0;8 der Spalte 322, wobei die entsprechenden Zeilenparitätsinformationen in den physischen Speicherelementen aus jeder der Zeilen 2, 3, 4, 5, 6, 7 bzw. 8 sowie eine Zeilenparitätsgleichung verwendet werden. Anhand der Zeilenparitätsgleichung kann jede gegebene Zeile, die einen einzelnen Löschvorgang aufweist, repariert werden. Als Ergebnis verbleiben 12 Ausfälle.
-
Anhand von Spaltenparitätsinformationen können die Speicherelementausfälle des Arrays 700 korrigiert werden. So veranschaulicht ein Array 750 zum Beispiel eine logische Anordnung des Arrays 700 nach dem Wiederherstellen der logischen Speicherelemente in Zeile 9, Spalte 3; Zeile 9, Spalte 4; Zeile 9, Spalte 5; Zeile 9, Spalte 6; und Zeile 9, Spalte 7 der Zeile 320 unter Verwendung von Spaltenparitätsinformationen und einer Spaltenparitätsgleichung. Anhand der Spaltenparitätsgleichung kann jede gegebene Spalte, die einen einzelnen Löschvorgang aufweist, repariert werden. Als Ergebnis verbleiben sieben Ausfälle.
-
Bei manchen Szenarien können Zeilenparitätsinformationen und Spaltenparitätsinformationen rekursiv verwendet werden, um die fehlenden oder ausgefallenen Speicherelemente des Arrays wiederherzustellen. So können bei manchen Szenarien zum Beispiel nach dem Anwenden der Zeilenparitätsgleichungen und der Spaltenparitätsgleichungen ein oder mehrere Speicherelement-Löschvorgänge oder -ausfälle durch nachfolgende Anwendungen der Zeilenparitätsgleichungen und der Spaltenparitätsgleichungen korrigiert werden.
-
Außerdem sind nach der Verwendung der globalen Paritätsinformationen, die in den Speicherelementen 340 (5;8) und 342 (6;8) gespeichert werden, alle Daten vollständig verfügbar, und die verbleibenden sieben Ausfälle können behoben werden. Es ist davon auszugehen, dass die Korrektur der sieben verbleibenden Löschvorgänge Auswirkungen auf die Leistung hat.
-
Bei einer Ausführungsform können nach Abschluss der Wartung Satzausfallgrenzen für die ausgetauschten Speicherelemente wiederhergestellt werden. Dies kann ein Austauschen von Datenparitäten verschiedener JBODs beinhalten, wobei es sich meist um einfache Operationen handelt. Mit erneutem Blick auf 7B sollte das Speicherelement 2;0 zum Beispiel die aus dem Speicherelement 0;9 kopierten Daten enthalten. Dasselbe gilt für die anderen Speicherelemente. Wo innerhalb eines Satzes ein Paritätsaustausch durchgeführt wurde (d.h. zwischen Speicherelementen eines einzigen Satzes) bleiben die Ausfallgrenzen unter Umständen unberührt. Entsprechend benötigen solche Paritätsaustausch-Operationen womöglich keine darauffolgende Wiederherstellung von Ausfallgrenzen.
-
Nach dem Wiederherstellen der Satzausfallgrenzen können anhand von lokalen Paritätsgleichungen, die nur die Speicherelemente in dem jeweiligen Satz verwenden, in jedem Satz in einem Speicherelement Spaltenparitätsinformationen wiederhergestellt werden.
-
In Zusammenhang mit den 3 bis 7 kann der Löschkorrektur-Code einen größeren Abstand bereitstellen als ein Produktcode. Indem wie oben beschrieben Paritätsaustausch-Operationen durchgeführt werden, kann zudem ein Abstand von 2 zu einem weiteren Satzausfall und Speicherelementausfall bereitgestellt werden. Wenn der Löschkorrektur-Code mit zwei globalen Paritäten (z.B. den Speicherelementen 340 und 342) verwendet wird, kann der Aufschiebungsgrenzwert der Satzzählwert sein, und jede der Paritätsaustausch-Operationen kann vorzugsweise unter Verwendung von Satzparitäten (d.h. Spaltenparitäten) durchgeführt werden.
-
Auf diese Weise kann das Cloud-System in einem Cloud-System, das n Sätze von m Speicherelementen aufweist, vor der Wartung n Paritätsaustausch-Operationen durchführen und nach einem weiteren Ausfall eines der Sätze und eines der Speicherelemente womöglich keinen Datenverlust erleiden.
-
Obwohl die obige Beschreibung erwähnt, dass eine Wartung angefordert werden kann, wenn das System nur den zusätzlichen Ausfall von einem einzigen Speicherelement tolerieren kann, sollte klar sein, dass eine Wartung auch vor oder nach diesem Zeitpunkt angefordert werden kann. Als eine Option kann das System so konfiguriert werden, dass es zu jedem Zeitpunkt eine Wartung anfordert. Obwohl der Löschkorrektur-Code beliebige sieben Ausfälle korrigieren kann, kann das System zum Beispiel so konfiguriert werden, dass es einen Wartungsaufruf ausgibt, wenn ein Cluster von weniger als sieben Fehlern auftritt. So kann zum Beispiel ein Cluster von sechs Fehlern als ein Schwellenwert für einen Wartungsaufruf ausgewählt werden. Eine solche Konfiguration kann gewählt werden, um die Integrität und Robustheit des Systems sicherzustellen.
-
Des Weiteren stellen die obigen Ausführungsformen Verfahren und Systeme zum Erhöhen der Ausfalltoleranz eines Cloud-Systems sowohl gegenüber einem Speicherelementausfall als auch gegenüber einem Satzausfall bereit. Insbesondere toleriert der oben beschriebene Löschkorrektur-Code acht Speicherelementausfälle am Platz und ist gleichzeitig robust gegenüber dem weiteren Ausfall eines gesamten Satzes und Speicherelements während der Wartung.
-
Der oben beschriebene Löschkorrektur-Code kann dieselbe Leistung wie ein MDS-Code (Maximum-Distanz-Code) mit 19 Paritäten bereitstellen. Allerdings erfordert ein solcher MDS-Code 19 globale Paritäten. Außerdem verfolgt ein MDS-Code keinen Ersthelfer-Ansatz bei Ausfällen eines einzelnen Speicherelements.
-
Dazu kommt, dass der oben in Zusammenhang mit den 3 bis 7 beschriebene Löschkorrektur-Code hochgradig effizient ist. Wie in Zusammenhang mit den 3 bis 7 beschrieben, ermöglicht der Löschkorrektur-Code im Besonderen, dass der Array so konfiguriert werden kann, dass 76,25 % der Speicherelemente anfänglich Daten speichern, ohne dass Ersatzkomponenten benötigt werden. Zusätzlich toleriert der Löschkorrektur-Code einen Verlust von 23,75 % der Array-Kapazität nach dem Paritätsaustausch und ermöglicht die Aufschiebung der Wartung bis zu einem Verlust von 10 % der Kapazität. Entsprechend können die oben offenbarten Ausführungsformen den Abstand zwischen zwei Wartungsmaßnahmen von Speicher-Arrays in einem Cloud-System verlängern.
-
Mit Blick auf 8 wird der voraussichtliche Abstand zwischen zwei Wartungsmaßnahmen für ein Cloud-System dargestellt, das den in den 2 bis 7 beschriebenen Löschkorrektur-Code verwendet. Wie in 8 gezeigt, kann das Erhöhen der Toleranz eines Cloud-Systems für ausgefallene Speicherelemente das Wartungsintervall des Cloud-Systems erheblich verlängern.
-
Ein System mit acht Sätzen zu je 15 Speicherelementen enthält insgesamt 120 Speicherelemente. Unter Verwendung des oben beschriebenen Löschkorrektur-Codes kann das System bis zu acht Speicherelemente aufschieben. 8 zeigt, dass selbst bei einer jährlichen Ausfallquote (Annual Failure Rate, AFR) der Speicherelemente von 6 % nur eine Wahrscheinlichkeit von 5 % besteht, dass die acht Speicherelemente in weniger als 6,5 Monaten ausfallen. Somit stellt die Verwendung des Löschkorrektur-Codes die Fähigkeit bereit, die Wartungsintervalle gegenüber Systemen nach dem Stand der Technik erheblich zu verlängern.
-
Das oben beschriebene Verfahren wurde unter Verwendung einer einzigen logischen Zuordnung für den Löschkorrektur-Code veranschaulicht. Dabei hätte das Verfahren auch problemlos um eine Unterstützung einer Paritätsrotation oder einer Entclusterung erweitert werden können, um die Arbeitslast für die Wiederherstellung zu verringern. In derartigen Fällen ist ein Satz von Zuordnungen mit verschiedenen Paritätsstellen für verschiedene Bereich des Speicherplatzes in den Speichereinheiten vorhanden. So können zum Beispiel zehn verschiedene Versionen des Arrays 300 vorhanden sein, wobei die Paritätszeile in dem ersten Array die Zeile 0 ist, in dem zweiten Array die Zeile 1 usw. Dies wirkt sich auf eine Rotation der Spaltenparitäten aus. Dabei wird jede Zuordnung für einen Teil des Speicherbereichs in jeder Einheit verwendet. Die ersten 10 % können zum Beispiel die erste Rotation verwenden, die zweiten 10 % die zweite Rotation usw. Wenn eine erste Speichereinheit ausfällt, enthält sie somit 90 % Daten und 10 % Paritätsinformationen. Beim Paritätsaustausch wird somit die Arbeitslast für Schreibvorgänge auf alle Speichereinheiten in dem Satz verteilt, wodurch die Dauer des Paritätsaustauschs verringert wird.
-
Während die verschiedenen hier offenbarten Ausführungsformen so beschrieben wurden, dass sie n Sätze (z.B. JBODs usw.) von m Speicherelementen enthalten, sollte offensichtlich sein, dass die einzelnen Sätze nicht zwingend m Speicherelemente enthalten müssen. So kann m als die maximale Anzahl von Elementen in einem Satz definiert werden, und jedem Satz mit < m Speicherelementen können virtuelle Speicherelemente zugewiesen werden. Des Weiteren sollte klar sein, dass die hier offenbarten Verfahren auf Speichersysteme ausgedehnt werden können, die nicht nur ein einziges Paritätsspeicherelement pro Zeile oder ein einziges Paritätsspeicherelement pro Spalte enthalten (z.B. zwei Spaltenparitäts-Speicherelemente in einer Spalte usw.).
-
Außerdem können die oben beschriebenen Verfahren für die Array-Konfiguration und -Ausfalltoleranz auf Systeme mit vielen unterschiedlichen physischen Konfigurationen von Speicherelementen angewendet werden. Wie oben erwähnt, können die Speicherelemente zum Beispiel Speicherstellen auf Festplatten sein, und jeder Satz von Speicherelementen kann einen JBOD aufweisen. In einem weiteren Beispiel kann in Ausführungsformen mit SSDs jedes Speicherelement eine Seite aufweisen, und jeder Satz von Speicherelementen kann einen Löschblock aufweisen. In einem weiteren Beispiel kann in Ausführungsformen mit SSDs jedes Speicherelement eine Seite aufweisen, und jeder Satz von Speicherelementen kann einen Flash-Chip aufweisen. Des Weiteren kann jedes der Speicherelemente einen Festplatten-Array oder -JBOD aufweisen, und jeder der Sätze kann eine größere Gruppierung von Arrays wie beispielsweise Racks aufweisen. Des Weiteren können die Racks gegen Stromausfälle isoliert sein, z.B. durch Installation der Racks in getrennten räumlichen Standorten und/oder Rechenzentren.
-
Bei jeder der oben beschriebenen Ausführungsform kann ein Speichersystem wie z.B. ein Cloud-System so konfiguriert werden, dass es eine hohe Verfügbarkeit mit hoher Dateneffizienz sowie niedrige Anschaffungskosten und Fähigkeiten für eine aufgeschobene Wartung bereitstellt. Ein Aufschieben der Wartung eines Cloud-Systems kann als ein praktikabler Ansatz betrachtet werden, wenn die Systemleistung durch das Aufschieben nicht beeinträchtigt wird.
-
Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit darauf enthaltenen computerlesbaren Programmbefehlen beinhalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung durchzuführen.
-
Das computerlesbare Speichermedium kann eine gegenständliche Einheit sein, die Befehle zur Verwendung durch eine Befehlsausführungseinheit beibehalten und speichern kann. Das computerlesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination der vorgenannten Einheiten sein, ohne jedoch darauf beschränkt zu sein. Eine nicht vollständige Liste konkreterer Beispiele des computerlesbaren Speichermediums beinhaltet Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen RAM, einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren CD-ROM, eine DVD, einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie z.B. Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Befehlen sowie eine beliebige geeignete Kombination der vorgenannten Elemente. Bei einem computerlesbaren Speichermedium, wie es hier verwendet wird, ist nicht davon auszugehen, dass es sich per se um flüchtige Signale wie z.B. Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder ein anderes Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen), oder elektrische Signale, die über eine Leitung übertragen werden, handelt.
-
Hier beschriebene computerlesbare Programmbefehle können über ein Netzwerk wie beispielsweise das Internet, ein LAN, ein WAN und/oder ein drahtloses Netzwerk von einem computerlesbaren Speichermedium auf entsprechende Datenverarbeitungs-/Verarbeitungs-Einheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zur Speicherung auf einem computerlesbaren Speichermedium innerhalb der betreffenden Datenverarbeitungs-/Verarbeitungs-Einheit weiter.
-
Bei computerlesbaren Programmbefehlen zum Durchführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, ISA-Befehle (Instruction-Set-Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, einen Zustand festlegende Daten oder aber entweder um Quellcode oder um Objektcode handeln, der in einer beliebigen Kombination von einer oder mehreren Programmiersprachen wie z.B. einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie z.B. der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben ist. Die computerlesbaren Programmbefehle können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, unter anderem ein LAN oder ein WAN, mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei manchen Ausführungsformen kann ein elektronischer Schaltkreis wie z.B. ein programmierbarer Logikschaltkreis, Field-Programmable-Gate-Arrays (FPGAs) oder Programmable-Logic-Arrays (PLAs) die computerlesbaren Programmbefehle ausführen, indem er Zustandsdaten der computerlesbaren Programmbefehle verwendet, um die elektronische Schaltung zu personalisieren und Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch computerlesbare Programmbefehle realisiert werden kann/können.
-
Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben werden. Diese computerlesbaren Programmbefehle können auch auf einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darauf gespeicherten Befehlen einen Herstellungsartikel aufweist, der Befehle enthält, welche Aspekte der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktion/Handlung realisieren.
-
Die computerlesbaren Programmbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um zu veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder der anderen Einheit ausgeführt wird, so dass die Befehle, die auf dem Computer, der anderweitigen Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen realisieren.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Teil von Befehlen darstellen, das/der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die eine oder mehreren angegebenen logischen Funktionen realisieren lassen. Bei manchen alternativen Ausführungsformen können die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Zu erwähnen ist ebenfalls, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplan-Darstellungen durch Spezialsysteme auf Hardwaregrundlage, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert bzw. durchgeführt werden kann/können.
-
Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und Logik enthalten, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so konfiguriert werden kann, dass sie einen oder mehrere der hier genannten Prozessschritte ausführt. Dabei bedeutet „integriert“, dass der Prozessor über Logik verfügt, die in Form von Hardwarelogik in ihn eingebettet ist, wie z.B. eine ASIC, ein FPGA usw. „Durch den Prozessor ausführbar“ bedeutet, dass es sich bei der Logik um Hardwarelogik; Softwarelogik wie z.B. Firmware, ein Teil eines Betriebssystems, ein Teil eines Anwendungsprogramms; usw. oder um eine Kombination von Hardware- und Softwarelogik handelt, auf die der Prozessor zugreifen kann und die so konfiguriert wird, dass sie den Prozessor veranlasst, bei Ausführung durch den Prozessor eine Funktionalität durchzuführen. Softwarelogik kann in einem lokalen und/oder entfernt angeordneten Arbeitsspeicher eines beliebigen Arbeitsspeichertyps nach dem Stand der Technik gespeichert werden. Jeder Prozessor nach dem Stand der Technik kann verwendet werden, z.B. ein Softwareprozessormodul und/oder eine Hardwareprozessormodul wie beispielsweise eine ASIC, ein FPGA, eine CPU, eine integrierte Schaltung (Integrated Circuit), ein Grafikprozessor (Graphics Processing Unit, GPU) usw.
-
Es dürfte offensichtlich sein, dass die verschiedenen Merkmale der vorgenannten Systeme und/oder Methodiken auf jede beliebige Weise kombiniert werden können, so dass sich aus den oben dargelegten Beschreibungen eine Vielfalt von Kombinationen ergibt.
-
Des Weiteren dürfte klar sein, dass Ausführungsformen der vorliegenden Erfindung in der Form eines Dienstes bereitgestellt werden können, der im Namen eines Kunden implementiert wird, um Dienste auf Abruf (service on demand) anzubieten.
-
Obwohl oben verschiedene Ausführungsformen beschrieben wurden, sollte deutlich sein, dass diese lediglich als Beispiel und nicht als Einschränkung dargelegt wurden. Umfang und inhaltliche Reichweite einer bevorzugten Ausführungsform werden daher durch keine der oben beschriebenen beispielhaften Ausführungsformen beschränkt, sondern lediglich durch die folgenden Ansprüche und deren Entsprechungen definiert.