DE112018004637B4 - Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten - Google Patents

Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten Download PDF

Info

Publication number
DE112018004637B4
DE112018004637B4 DE112018004637.0T DE112018004637T DE112018004637B4 DE 112018004637 B4 DE112018004637 B4 DE 112018004637B4 DE 112018004637 T DE112018004637 T DE 112018004637T DE 112018004637 B4 DE112018004637 B4 DE 112018004637B4
Authority
DE
Germany
Prior art keywords
data
priority
block
data blocks
assigning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE112018004637.0T
Other languages
English (en)
Other versions
DE112018004637T5 (de
Inventor
Shaun Harrington
Emmanuel Barajas Gonzalez
Franklin Duane Watkins
Gary Anna
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018004637T5 publication Critical patent/DE112018004637T5/de
Application granted granted Critical
Publication of DE112018004637B4 publication Critical patent/DE112018004637B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Computer-implementiertes Verfahren, aufweisend:Speichern einer Mehrzahl von Datenblöcken in einem einheitenübergreifenden RAID-Speichersystem, das eine Mehrzahl von Speichereinheiten enthält;Speichern von Paritätsdaten für die Mehrzahl von Datenblöcken;Aktualisieren, durch eine Maschinenlogik, eines Prioritätszuweisungsalgorithmus zum Zuweisen der Prioritätsdatenwerte, zumindest teilweise beruhend auf einem Überprüfen von relativen Gewichtungen, die einem Satz von Faktoren zugewiesen sind, die beim Zuweisen von Prioritätsdatenwerten berücksichtigt werden, und welche Prioritätsdatenwerte jedem Datenblock der Mehrzahl von Datenblöcken zugewiesen wurden;für jeden gegebenen Datenblock der Mehrzahl von Datenblöcken, Zuweisen eines Prioritätsdatenwertes zu dem gegebenen Datenblock auf der Grundlage des Prioritätszuweisungsalgorithmus; undals Reaktion auf ein Ausfallen einer ersten Speichereinheit der Mehrzahl von Speichereinheiten, Wiederherstellen von Datenblöcken, die auf der ersten Speichereinheit gespeichert waren, in einer Reihenfolge, die durch Prioritätswerte der Datenblöcke bestimmt ist, die auf der ersten Speichereinheit gespeichert waren, unter Verwendung der Paritätsdaten und von Daten der Datenblöcke, die auf der Mehrzahl von Speichereinheiten außer der ersten Speichereinheit gespeichert sind.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein eine redundante Anordnung von unabhängigen Plattendatenspeichern (RAID, redundant array of independent disks) und insbesondere Verfahren zum Wiederherstellen von RAID-Implementierungen.
  • Speichertechnologie mit einer redundanten Anordnung von unabhängigen Festplatten (RAID-Array) wird zum Speichern von Computerdaten, üblicherweise in großen Mengen, verwendet. Für Datenredundanz besteht die übliche Methodik darin, Daten über mehrere Laufwerke hinweg übergreifend zu lesen und zu schreiben (stripe) und dann im Falle eines Ausfalls das gesamte Laufwerk zurück zu kopieren. Wenn im Falle eines Ausfalls die Kopie vollständig erstellt wird, ist die Datenredundanz erfolgreich. In einem RAID-Array ist ein Paritätslaufwerk ein Festplattenlaufwerk (oder eine andere Speichereinheit, die wie ein Festplattenlaufwerk funktioniert), um Fehlertoleranz bereitzustellen. Zum Beispiel verwendet RAID 3 ein Paritätslaufwerk, um ein System zu erschaffen, das sowohl fehlertolerant als auch schnell ist (aufgrund des Daten-Stripings von RAID 3). Am Ende eines Datenblocks wird ein einzelnes Datenbit hinzugefügt, um sicherzustellen, dass die Anzahl von Bits in der Nachricht entweder ungerade oder gerade ist. Eine Möglichkeit zum Umsetzen eines Paritätslaufwerks in einem RAID-Array besteht darin, eine von verschiedenen Formen von Paritätsdaten zu speichern.
  • Bei Paritätsdaten handelt es sich um aus einem großen Satz von Quelldaten abgeleitete Daten, die deutlich weniger umfangreich sind als der große Satz von Quelldaten. Paritätsdaten werden auf verschiedene bekannte Arten abgeleitet (wie zum Beispiel unter Verwendung der XOR-Funktion über ausgewählte Bit-Paare von Quelldaten hinweg), so dass bei Verlust eines Teils der Quelldaten (zum Beispiel, wenn ein Laufwerk in einem RAID-Array ausfällt) die verlorenen Daten abgeleitet werden können, und zwar unter Verwendung: (i) der Paritätsdaten auf dem Paritätslaufwerk; und (ii) der verbleibenden, intakten Quelldaten (in diesem Beispiel die Quelldaten auf den Laufwerken des RAID-Arrays, die nicht ausgefallen sind).
  • Die US 2014 / 0 365 819 A1 betrifft Konzepte zur Wiederherstellung von Daten in einem Datenspeichersystem. Ausführungsformen bauen Daten in der durch Wiederherstellungsrichtlinien festgelegten Reihenfolge wieder auf. Die Wiederherstellung von Daten kann daher so erfolgen, dass wichtige Daten vor weniger wichtigen Daten wiederhergestellt werden. Ein Verfahren zur Widerherstellung von Daten in einem Datenspeichersystem umfasst: Ermitteln von Daten, die wiederhergestellt werden sollen; Ermitteln einer Vielzahl von Datenblöcken, die jeweils zu wiederherstellenden Daten umfasst, die eine gemeinsame Eigenschaft aufweisen; Zuweisen einer Priorität zu jedem der Vielzahl von Datenblöcken in Übereinstimmung mit Wiederherstellungsrichtlinien, die eine einem Datenblock zuzuweisende Priorität auf Grundlage der gemeinsamen Eigenschaft seiner Daten darstellt; und Wiederherstellen der Daten jedes der Vielzahl von Datenblöcken in der Reihenfolge ihrer zugewiesenen Priorität.
  • Die US 6 961 924 B2 betrifft ein Verfahren, eine Vorrichtung und einen Herstellungsgegenstand zum Debuggen von Code. Eine Ausführungsform stellt ein Verfahren zum Debuggen von Code bereit, das umfasst: die Darstellung eines Benutzerschnittstellenbildschirms eines Debugging-Programms; und in Reaktion auf ein Ereignis die Darstellung des Wertes der Variablen und eines mit der Variablen verknüpften Kommentars auf dem Benutzerschnittstellenbildschirm an einer anderen Stelle als an einer ursprünglichen Stelle des Kommentars. In einer Ausführungsform umfasst der mit der Variablen verknüpfte Kommentar mindestens einen vom Benutzer erstellten Kommentar, der in den zu debuggenden Code eingebettet ist, einen externen Kommentar, der von einer Datenquelle außerhalb des zu debuggenden Codes abgerufen wird, und einen maschinell erzeugten Kommentar, der angibt, auf welche Weise die Variable verwendet wird. In einer Ausführungsform werden der Wert und der Kommentar als Fly-Over-Text dargestellt.
  • KURZDARSTELLUNG
  • Der Erfindung liegt die Aufgabe zugrunde ein Verfahren, ein Computersystem und ein Computerprogrammprodukt zur verbesserten Wiederherstellung von redundanten Anordnungen von unabhängigen Festplatten. Die der Erfindung zugrunde liegende Aufgabe wird durch die Merkmale der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
  • In einem Beispiel gibt es ein Verfahren, ein Computerprogrammprodukt und/oder ein System, das die folgenden Arbeitsschritte durchführt (nicht unbedingt in der folgenden Reihenfolge): (i) Speichern einer Mehrzahl von Datenblöcken in einem einheitenübergreifenden RAID-Speichersystem (striped redundant array of independent devices), das eine Mehrzahl von Speichereinheiten enthält; (ii) Speichern von Paritätsdaten für die Mehrzahl von Datenblöcken; (iii) für jeden gegebenen Datenblock der Mehrzahl von Datenblöcken, Zuweisen eines Prioritätsdatenwertes zu dem gegebenen Datenblock; und (iv), als Reaktion auf ein Ausfallen einer ersten Speichereinheit der Mehrzahl von Speichereinheiten, Wiederherstellen von Datenblöcken, die auf der ersten Speichereinheit gespeichert waren, in einer Reihenfolge, die durch Prioritätswerte der Datenblöcke bestimmt ist, die auf der ersten Speichereinheit gespeichert waren, unter Verwendung der Paritätsdaten und von Daten der Datenblöcke, die auf der Mehrzahl von Speichereinheiten außer der ersten Speichereinheit gespeichert waren.
  • Figurenliste
  • Ausführungsformen der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
    • 1 eine Blockschaubildansicht einer ersten Ausführungsform eines Systems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung ist;
    • 2 ein Ablaufplan ist, der eine erste Ausführungsform eines Verfahrens zeigt, das zumindest teilweise von dem System der ersten Ausführungsform durchgeführt wird;
    • 3A ein Blockschaubild ist, das einen Teil einer Maschinenlogik (zum Beispiel Software) des Systems der ersten Ausführungsform zeigt;
    • 3B ein Blockschaubild ist, das Datenblockzuweisungen zu Speicherplatz auf drei Plattenlaufwerken eines RAID-Arrays des Systems der ersten Ausführung zeigt; und
    • die 4A bis 4E Blockschaubilder sind, die ein Wiederherstellen eines ausgefallenen Plattenlaufwerks in einem RAID-System gemäß einer Ausführungsform der vorliegenden Erfindung zeigen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Einige Ausführungsformen der vorliegenden Erfindung sind auf Maschinenlogik (zum Beispiel Software) zum Speichern ausgerichtet: (i) eine Mehrzahl von Dateien über mehrere Plattenlaufwerke eines RAID-Arrays hinweg und (ii) Prüfsummendaten für die Dateien. In einigen Ausführungsformen werden dann jeder Datei auf der Grundlage von einem oder mehreren Attributen der Dateien Prioritätswerte zugewiesen. In einigen Ausführungsformen werden diese Prioritätswerte verwendet, um die Reihenfolge zu bestimmen, in der Dateien wiederhergestellt werden, und zwar unter Verwendung der Prüfsummendaten, so dass die wichtigsten Dateien zuerst wiederhergestellt werden. Dieser Abschnitt „Ausführliche Beschreibung“ ist in die folgenden Unterabschnitte unterteilt: (i) Die Hardware- und Software-Umgebung; (ii) Ausführungsbeispiel; (iii) Weitere Anmerkungen und/oder Ausführungsformen; und (iv) Definitionen.
  • Die Hardware- und Software-Umgebung
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Eine Ausführungsform einer möglichen Hardware- und Software-Umgebung für Software und/oder Verfahren wird nun unter Bezugnahme auf die Figuren ausführlich beschrieben. 1 ist ein funktionales Blockschaubild, das verschiedene Teile eines Systems 100 aus vernetzten Computern veranschaulicht, das Folgendes umfasst: ein RAID-Teilsystem 102; Client-Teilsysteme 104, 106, 108, 110, 112; ein Datenübertragungsnetzwerk 114; einen RAID-Computer 200; eine Datenübertragungseinheit 202; einen Satz 204 von Prozessoren; einen Satz 206 von Eingabe/Ausgabe- (E/A-) Schnittstellen; eine Hauptspeichereinheit 208; eine dauerhafte Speichereinheit 210; eine Anzeigeeinheit 212; einen Satz 214 von RAID-Plattenlaufwerken; Direktzugriffsspeicher- (RAM-) Einheiten 216; eine Cache-Speichereinheit 218; und ein Steuerprogramm 300.
  • Das Teilsystem 102 steht in einer bevorzugten Ausführungsform der vorliegenden Erfindung in vielerlei Hinsicht stellvertretend für das/die verschiedenen Computer-Teilsystem(e). Dementsprechend werden nun in den folgenden Abschnitten mehrere Teile des Teilsystems 102 erörtert.
  • Bei dem Teilsystem 102 kann es sich um einen Laptop-Computer, einen Tablet-Computer, einen Netbook-Computer, einen Personal Computer (PC), einen Desktop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Smartphone oder eine beliebige programmierbare elektronische Einheit handeln, die in der Lage ist, über das Netzwerk 114 mit dem Client-Teilsystem Daten auszutauschen. Bei dem Programm 300 handelt es sich um eine Sammlung von durch eine Maschine lesbaren Anweisungen und/oder Daten, die zum Erstellen, Verwalten und Steuern bestimmter Softwarefunktionen verwendet werden, die in dem Unterabschnitt „Ausführungsbeispiel“ dieses Abschnitts „Ausführliche Beschreibung“ im Detail erörtert werden.
  • Das Teilsystem 102 ist in der Lage, über das Netzwerk 114 mit anderen Computer-Teilsystemen Daten auszutauschen. Bei dem Netzwerk 114 kann es sich zum Beispiel um ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), wie zum Beispiel das Internet, oder eine Kombination aus diesen beiden handeln, und dazu können drahtgebundene, drahtlose oder faseroptische Verbindungen gehören. Im Allgemeinen kann es sich bei dem Netzwerk 114 um eine beliebige Kombination von Verbindungen und Protokollen handeln, welche Datenübertragungen zwischen Server- und Client-Teilsystemen unterstützen.
  • Das Teilsystem 102 ist als Blockschaubild mit vielen Doppelpfeilen gezeigt. Diese Doppelpfeile (keine separaten Bezugszahlen) stellen ein Datenübertragungsnetz dar, das Datenübertragungen zwischen verschiedenen Komponenten des Teilsystems 102 bereitstellt. Dieses Datenübertragungsnetz kann mit jeder beliebigen Architektur umgesetzt werden, die zum Weiterleiten von Daten und/oder Steuern von Informationen zwischen Prozessoren (wie zum Beispiel Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), Systemspeicher, Peripherieeinheiten und beliebigen anderen Hardware-Komponenten innerhalb eines Systems ausgelegt ist. Zum Beispiel kann das Datenübertragungsnetz zumindest teilweise mit einem oder mehreren Bussen umgesetzt werden.
  • Bei dem Hauptspeicher 208 und dem dauerhaften Speicher 210 handelt es sich um durch einen Computer lesbare Speichermedien. Im Allgemeinen kann der Hauptspeicher 208 jedes beliebige flüchtige oder nichtflüchtige, durch einen Computer lesbare Speichermedium beinhalten. Es wird darüber hinaus darauf hingewiesen, dass jetzt und/oder in naher Zukunft: (i) die externe(n) Einheit(en) 214 in der Lage sein kann/können, einen Teil oder den gesamten Hauptspeicher für das Teilsystem 102 bereitzustellen; und/oder (ii) Einheiten außerhalb des Teilsystems 102 in der Lage sein können, einen Hauptspeicher für das Teilsystem 102 bereitzustellen.
  • Das Steuerprogramm 300 ist in dem dauerhaften Speicher 210 zum Zugriff und/oder zur Ausführung durch einen oder mehrere der jeweiligen Computerprozessoren 204 normalerweise über einen oder mehrere Speicher des Hauptspeichers 208 gespeichert. Der dauerhafte Speicher 210: (i) ist zumindest dauerhafter als ein Signal, das unterwegs ist; (ii) speichert das Programm (einschließlich dessen Soft-Logik und/oder Daten) auf einem physischen Medium (wie zum Beispiel magnetische oder optische Domänen); und (iii) ist wesentlich weniger dauerhaft als ein permanenter Speicher. Alternativ kann ein Datenspeicher dauerhafter und/oder permanenter sein als der Typ von Speicher, der durch den dauerhaften Speicher 210 bereitgestellt wird.
  • Das Steuerprogramm 300 kann durch eine Maschine sowohl lesbare als auch ausführbare Anweisungen und/oder wesentliche Daten (das heißt die Art von in einer Datenbank gespeicherten Daten) enthalten. In dieser bestimmten Ausführungsform beinhaltet der dauerhafte Speicher 210 ein magnetisches Festplattenlaufwerk. Um einige mögliche Abwandlungen zu nennen, kann der dauerhafte Speicher 210 ein Solid-State-Festplattenlaufwerk, eine Halbleiterspeichereinheit, einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), Flash-Speicher oder jedes beliebige andere durch einen Computer lesbare Speichermedium umfassen, das in der Lage ist, Programmanweisungen oder digitale Informationen zu speichern.
  • Die von dem dauerhaften Speicher 210 verwendeten Medien können auch auswechselbar sein. Es kann zum Beispiel ein Wechselplattenlaufwerk für den dauerhaften Speicher 210 verwendet werden. Zu anderen Beispielen gehören optische und magnetische Platten, Thumb-Drives und Smartcards, die in ein Laufwerk zum Übertragen auf ein anderes durch einen Computer lesbares Speichermedium, das auch ein Teil des dauerhaften Speichers 210 ist, eingeführt werden.
  • Die Datenübertragungseinheit 202 sorgt in diesen Beispielen für Datenübertragungen zu anderen Datenverarbeitungssystemen oder -einheiten, die sich außerhalb des Teilsystems 102 befinden. In diesen Beispielen beinhaltet die Datenübertragungseinheit 202 eine oder mehrere Netzwerkschnittstellenkarten. Die Datenübertragungseinheit 202 kann Datenübertragungen durch die Verwendung von physischen und/oder drahtlosen Datenübertragungsverbindungen bereitstellen. Alle hierin erörterten Software-Module können über eine Datenübertragungseinheit (wie zum Beispiel die Datenübertragungseinheit 202) auf eine dauerhafte Speichereinheit (wie zum Beispiel die dauerhafte Speichereinheit 210) heruntergeladen werden.
  • Der Satz 206 von E/A-Schnittstellen ermöglicht eine Eingabe und Ausgabe von Daten von/zu anderen Einheiten, die für einen Datenaustausch mit dem Server-Computer 200 lokal miteinander verbunden sein können. Zum Beispiel stellt der Satz 206 von E/A-Schnittstellen eine Verbindung zu dem Satz 214 von externen Einheiten bereit. Der Satz 214 von externen Einheiten umfasst üblicherweise Einheiten wie zum Beispiel eine Tastatur, einen Ziffernblock, einen berührungsempfindlichen Bildschirm und/oder eine andere geeignete Eingabeeinheit. Der Satz 214 von externen Einheiten kann auch tragbare, durch einen Computer lesbare Speichermedien wie zum Beispiel Thumb-Drives, tragbare optische oder magnetische Platten und Speicherkarten umfassen. Software und Daten, die zum Praktizieren von Ausführungsformen der vorliegenden Erfindung verwendet werden, zum Beispiel das Programm 300, können auf derartigen tragbaren, durch einen Computer lesbaren Speichermedien gespeichert sein. In diesen Ausführungsformen kann die relevante Software ganz oder teilweise über den Satz 206 von E/A-Schnittstellen auf die dauerhafte Speichereinheit 210 geladen werden (oder auch nicht). Der Satz 206 von E/A-Schnittstellen ist für einen Datenaustausch auch mit der Anzeigeeinheit 212 verbunden.
  • Die Anzeigeeinheit 212 stellt einen Mechanismus zum Anzeigen von Daten für einen Benutzer bereit, und es kann sich dabei zum Beispiel um einen Computerbildschirm oder einen Bildschirm eines Smartphones handeln.
  • Die hierin beschriebenen Programme werden beruhend auf der Anwendung bestimmt, für die sie in einer spezifischen Ausführungsform der Erfindung umgesetzt werden. Man sollte sich jedoch bewusst sein, dass jede bestimmte Programm-Nomenklatur hierin lediglich der Bequemlichkeit halber verwendet wird, und folglich darf die Erfindung nicht auf die ausschließliche Verwendung in einer beliebigen spezifischen Anwendung, die durch eine derartige Nomenklatur identifiziert und/oder impliziert wird, beschränkt werden.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für Fachleute werden viele Abänderungen und Abwandlungen ersichtlich sein, ohne von dem Umfang und dem Sinngehalt der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
  • Ausführungsbeispiel
  • 2 zeigt einen Ablaufplan 250, der ein Verfahren gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung darstellt. 3A zeigt das Programm 300 zum Durchführen von zumindest einigen der Arbeitsschritte des Verfahrens aus dem Ablaufplan 250. Dieses Verfahren und dazugehörige Software werden nun im Laufe der folgenden Absätze unter ausführlicher Bezugnahme auf 2 (für die Blöcke der Arbeitsschritte des Verfahrens), 3A (für die Software-Blöcke) und 3B (für die Datenblöcke) erörtert.
  • Die Verarbeitung beginnt bei Arbeitsschritt S255, in dem das Steuerprogramm 300 Sätze von Datenblöcken über einen Satz von RAID-Plattenlaufwerken 214 hinweg in Stripes speichert (siehe 1). In dieser Ausführungsform gibt es drei Daten-Stripes über drei Plattenlaufwerke hinweg, die einen Satz von RAID-Plattenlaufwerken aufweisen (siehe 3B). Jeder Daten-Stripe jedes Plattenlaufwerks enthält sechs Adressen von Blöcken zum Speichern von Daten, wobei jede Adresse einen Datenblock für eine Datei enthalten kann. Das heißt, dass ein Datenblock nur Daten enthält, die mit einer einzelnen Datei verbunden sind - aber eine einzelne Datei weist normalerweise mehr als einen Datenblock auf. Zum Beispiel enthält in 3B eine erste Datei (F1) drei Datenblöcke wie folgt: (i) F1B1; (ii) F1B2; und (iii) F1B3. 3B enthält: (i) einen Satz von RAID-Plattenlaufwerken 214; (ii) ein Plattenlaufwerk A 352(a); (iii) einen ersten Stripe 354a mit: (a) F1B1, (b) F1B2, (c) F2B1, (d) F2B2, (e) F2B3 und (f) F2B4; (iv) einen zweiten Stripe 356a ohne Dateiblöcke; (v) einen dritten Stripe 358a mit: (a) F1B3, (b) F4B2 und (c) F4B1; (vi) ein Plattenlaufwerk B 352b; (vii) einen ersten Stripe 354b mit: (a) F2B5, (b) F3B1 und (c) F4B4; (viii) einen zweiten Stripe 356b mit: (a) F8B1, (b) F3B2, (c) F7B1, (d) F7B2 und (e) F7B3; (ix) einen dritten Stripe 358b mit: (a) F5B1, (b) F6B2, (c) F5B3, (d) F6B3, (e) F6B2 und (f) F6B1; (x) ein Plattenlaufwerk C 352c; (xi) einen ersten Stripe 354c mit: (a) F2B6, (b) F4B3 und (c) F8B3; (xii) einen zweiten Stripe 356c mit: (a) F3B3 und (b) F2B7; und (xiii) einen dritten Stripe 358c mit F7B4.
  • In dieser Ausführungsform enthält ein Block ein Byte an Speicher, wobei ein Byte als acht Bit definiert ist. Jede Datei weist eine Mehrzahl von Blöcken auf, die über die Blöcke der drei Stripes der drei Plattenlaufwerke hinweg geschrieben werden können. Zum Beispiel weist in dieser in 3B gezeigten Ausführungsform die Datei 2 Folgendes auf: (i) vier Blöcke, die in den ersten Stripe 354a von Plattenlaufwerk A 352a geschrieben sind (F2B1, F2B2, F2B3, F2B4); (ii) einen Block, der in den ersten Stripe 354b von Plattenlaufwerk B 352b geschrieben ist (F2B5); (iii) einen Block, der in den ersten Stripe 354c von Plattenlaufwerk C 352c geschrieben ist (F2B6); und (iv) einen Block, der in den zweiten Stripe 356c von Plattenlaufwerk C geschrieben ist (F2B7). Alternativ kann ein Satz von RAID-Plattenlaufwerken auch nur zwei Plattenlaufwerke umfassen, wobei die Höchstanzahl von in einem RAID-Array enthaltenen Plattenlaufwerken nicht begrenzt ist. Als weitere Alternative kann die Anzahl von Stripes in einem Plattenlaufwerk eines Satzes von RAID-Plattenlaufwerken auch nur eins betragen, wobei die Höchstanzahl von Stripes durch Stripe-Byte-Zuordnung und die Speicherkapazität der Plattenlaufwerke bestimmt ist. Wenn zum Beispiel die Plattenlaufwerke A, B und C alle über eine Speicherkapazität von 1 Megabyte (eine Million Bytes) verfügen und jedem Stripe 1 Kilobyte (tausend Bytes) an Speicher zugeordnet wird, kann jedes Plattenlaufwerk maximal tausend Stripes beherbergen. Zur Veranschaulichung weisen die in 3B gezeigten Plattenlaufwerke jeweils eine Speicherkapazität von 18 Byte und eine Stripe-Zuordnung von 6 Byte auf, wobei aber andere Speicherkapazitäten und Stripe-Zuordnungen möglich sind. Als weitere Alternative kann ein Block so definiert sein, dass er mehr als ein Byte umfasst, oder er kann verschiedene Einheiten und Bezeichnungen zum Kennzeichnen von durch einen Computer lesbarer Speicherkapazität verwenden.
  • Die Verarbeitung geht zu Arbeitsschritt S260 über, in dem ein Prioritätswert-Zuweisungsmodul („mod“) 302 aus 3A jedem Block eines Satzes von Blöcken relative Prioritätswerte zuweist, indem ein Satz von Maschinenlogikregeln 304 angewendet wird, um eine relative Prioritätsbewertung jedes Blocks in dem Satz von Blöcken zu bestimmen. In dieser Ausführungsform gibt es fünf verschiedene relative Prioritätsbewertungen, nämlich die ganzen Zahlen 1 bis 5, wobei 1 die wichtigste und 5 die am wenigsten wichtige ist, die jedem Block des Satzes von Blöcken zugewiesen werden können.
  • In dieser Ausführungsform weist der Satz von Maschinenlogikregeln 304 eine Prioritätsbewertung auf der Grundlage der folgenden Faktoren zu: (i) Blockgröße; (ii) jüngste Lesehäufigkeit des einzelnen Blocks auf Blockebene; (iii) jüngste Lesehäufigkeit der Datei, zu welcher der Block gehört; (iv) Lesehäufigkeit einer Gruppe von Dateien, zu denen die Datei, zu welcher der Block gehört; (v) Gesamtzahl der historischen Lesevorgänge des einzelnen Blocks auf Blockebene; (vi) Änderungsrate der Lesehäufigkeit (auch Lesetrend genannt); (vii) Datenschutzniveau des Blocks; (viii) Anzahl von Verweisen eines deduplizierten Blocks; (ix) manuelles Bestimmen (zum Beispiel durch einen menschlichen Systemadministrator) von Prioritätsstufen von Dateien, Gruppen von Dateien oder Blöcken; (x) Zeitpunkte verschiedener Zugriffe auf Blöcke (zum Beispiel Zugriffe, die während hochsicherer Arbeitsschritte erfolgen; (xi) Verschlüsselungsstatus von Blöcken; (xii) Identität von Personen mit Zugriffsberechtigungen auf verschiedene Blöcke, Dateien und/oder Gruppen von Dateien; (xiii) Identität von Eigentümern verschiedener Blöcke, Dateien und/oder Gruppen von Dateien; (xiv) Dateityp der Datei, zu der ein Block gehört; (xv) Alter eines Blocks (das heißt Zeit seit der ersten Erstellung des Blocks); und (xvi) Dateiname einer Datei, zu der ein Block gehört.
  • Wie im folgenden Unterabschnitt näher erläutert wird, kann beim Durchführen des Arbeitsschritts S260 ein euklidischer Abstand eines K-Means-Clustering-Algorithmus verwendet werden. Im folgenden Unterabschnitt werden auch andere Techniken erörtert, die beim Zuweisen von Prioritätswerten verwendet werden können, wie zum Beispiel eine Analyse der Attribute der geometrischen Schwerpunkte und eine Einstufung der relativen Priorität des jeweiligen geometrischen Schwerpunkts.
  • Die Verarbeitung geht zu Arbeitsschritt S265 über, in dem ein Ausfallzustandsmodul 312 aus 3A einen Laufwerksausfallzustand für ein Plattenlaufwerk aus dem Satz von RAID-Plattenlaufwerken 214 aus 3B ermittelt. Laufwerksausfallzustände können entweder physisch oder logisch sein. Zu physischen Laufwerksausfallzuständen gehören mechanisches Versagen von beweglichen Teilen wie zum Beispiel Motoren, welche die Platten drehen und einen Laufwerkkopf bewegen, Fehlausrichtung des Laufwerkkopfes oder der Platten und Beschädigung oder Verschlechterung der magnetischen Eigenschaften der Platten oder des Laufwerkkopfes. Zu logischen Laufwerksausfallzuständen gehört eine Integritätsverletzung des Dateisystems durch fehlende oder unsachgemäß geänderte Laufwerksregistrierdatenbanken. Das Ausfallzustandsmodul 312 erkennt eine oder mehrere dieser Ausfallzustände durch Überwachen von Protokollen von jedem Plattenlaufwerk in dem Satz von RAID-Festplattenlaufwerken 214 aus 1. In diesem Ausführungsbeispiel liest das Ausfallzustandsmodul 312 einen physischen Fehler eines ausgefallenen Motors innerhalb der Protokolle von Plattenlaufwerk A 352a des Satzes von RAID-Plattenlaufwerken 214 aus 3B. Als Alternative überwacht das Ausfallzustandsmodul 312 das S.M.A.R.T.- (Self-Monitoring, Analysis and Reporting Technology-)Überwachungssystem und erkennt einen Laufwerksausfall, wenn ein S.M.A.R.T.-Attribut über einem vordefinierten Schwellenwert erkannt wird. Als weitere Alternative wird ein Ausfallzustand zu einem vordefinierten Datum vor einem geschätzten Ausfalldatum erkannt, das in einem Bericht darüber, dass ein Schwellenwert eine Bedingung überschreitet, von dem S.M.A.R.T.-Überwachungssystem gemeldet wird. Als weitere Alternative initiiert das Fehlerbedingungsmodul 312 ein periodisches Selbsttesten in jedem Plattenlaufwerk des Satzes von RAID-Plattenlaufwerken und bestimmt einen Laufwerksausfallzustand auf der Grundlage der Ergebnisse des Selbsttests.
  • Die meisten RAID-Ausfälle treten auf der Grundlage einzelner Laufwerke auf. Als alternatives Beispiel zu dem in dem vorherigen Absatz erörterten Beispielausfall nehme man an, dass das Plattenlaufwerk B 352b einen Stromstoß erfährt und plötzlich und katastrophal ausfällt. Wie in 3B gezeigt, weist dieses Laufwerk Daten aus den Dateien F2, F3, F4, F5, F6, F7 und F8 in den Teilen der drei Stripes 354, 356, 358 auf, die vor dem Ausfall einheitenübergreifend darauf gespeichert wurden. Wenn in diesem Beispiel das Wiederherstellen der Daten auf der Grundlage von Paritätsdaten des Prüfsummen-Datenspeichers 308 abgeschlossen ist, bevor ein anderes Plattenlaufwerk ausfällt, können alle Daten des Plattenlaufwerks B 352b auf einem frischen, neuen Plattenlaufwerk (nicht gezeigt) wiederhergestellt werden, und die Daten von allen Dateien F2, F3, F4, F5, F6, F7 und F8 können vollständig wiederhergestellt werden. Wie jedoch im weiteren Verlauf von Verfahren 250 verstanden werden wird, sind die Prioritätswerte dieser Ausführungsform möglicherweise wichtig für den Fall, dass ein anderes Laufwerk ausfällt, während die Daten von Plattenlaufwerk B 352b wiederhergestellt werden, und bevor alle diese Dateien vollständig wiederhergestellt sind. Insbesondere helfen die Prioritätswerte dabei, eine zeitliche Reihenfolge festzulegen, in der Blöcke, Dateien und/oder Gruppen von Dateien wiederhergestellt werden. Wenn ein anderes Laufwerk während des Wiederherstellens „abstürzt“, erhöht sich auf diese Weise die Wahrscheinlichkeit, dass die relativ wichtigeren Blöcke / Dateien / Gruppen von Dateien wiederhergestellt werden, bevor zusätzliche Laufwerksausfälle auftreten und die verlorenen Daten von Plattenlaufwerk 352b durch Verwendung von: (i) Daten der verbleibenden funktionsfähigen Laufwerke; und (ii) Paritätsdaten des Prüfsummen-Datenspeichers 308 nicht wiederherstellbar werden.
  • Die Verarbeitung geht zu Arbeitsschritt S270 über, in dem ein Wiederaufbaumodul 314 aus 3A die Prioritätswerte für alle der Dateien auf dem ausgefallenen Plattenlaufwerk A 352a des Satzes von RAID-Festplattenlaufwerken 214 aus 3B aus einem Prioritätswert-Datenspeicher 310 abruft. In diesem Ausführungsbeispiel sind acht Dateien in dem Speicher der drei Stripes (354a/b/c bis 358a/b/c) der drei Plattenlaufwerke (Plattenlaufwerk A 352a, Plattenlaufwerk B 352b und Plattenlaufwerk C 352c) des Satzes von RAID-Plattenlaufwerken 214 aus 3B gespeichert. Jeder der acht Dateien wurde durch das Prioritätswert-Zuweisungsmodul 302 aus 3A ein Prioritätswert zugewiesen. Beim Feststellen, dass das Laufwerk A einen Ausfallzustand aufweist, untersucht das Wiederaufbaumodul den Prüfsummen-Datenspeicher 308 aus 3A, um festzustellen, für welche Dateien Datenblöcke in Stripes auf das Laufwerk A geschrieben wurden. In diesem Ausführungsbeispiel ermittelt das Wiederaufbaumodul aus dem Prüfsummen-Datenspeicher, dass das Laufwerk A Blöcke aus Datei 1 (F1), Datei 2 (F2) und Datei 4 (F4) enthielt, und ruft dann Prioritätswerte für Datei 1, Datei 2 & Datei 4 aus dem Prioritätswerte-Datenspeicher 310 aus 3A ab, wobei die Prioritätswerte in diesem Beispiel 2, 1 bzw. 3 lauten.
  • Die Verarbeitung geht zu Arbeitsschritt S275 über, in dem ein Anordnungsuntermodul 316 des Wiederaufbaumoduls 314 aus 3A die Daten des ausgefallenen Plattenlaufwerks in der Reihenfolge der Datenpriorität auf der Grundlage der Prioritätswerte der Daten auf dem ausgefallenen Plattenlaufwerk wiederherstellt. In diesem Ausführungsbeispiel stellt das Anordnungsuntermodul 316, nachdem festgestellt wurde, dass Datei 2 einen höheren relativen Prioritätswert als jede andere auf dem ausgefallenen Plattenlaufwerk A vorhandene Datei aufweist, unter Verwendung von in dem Prüfsummen-Datenspeicher 308 gespeicherten Prüfsummendaten die auf dem ausgefallenen Plattenlaufwerk A vorhandenen Blöcke von Datei 2 zuerst auf einem Reserveplattenlaufwerk wieder her, die in diesem Beispiel die Blöcke 1 bis 4 auf dem ersten Stripe 354a des ausgefallenen Plattenlaufwerks A umfassen. Nachdem das Anordnungsuntermodul 316 das Wiederherstellen der auf dem ausgefallenen Plattenlaufwerk A vorhandenen Blöcke von Datei 2 auf dem Reserveplattenlaufwerk abgeschlossen hat, bestimmt das Anordnungsuntermodul 316, dass von den beiden verbleibenden Dateien (Datei 1 und Datei 4) Datei 1 einen höheren relativen Prioritätswert hat als jede andere verbleibende Datei, die auf dem ausgefallenen Plattenlaufwerk A vorhanden sind, und stellt die Blöcke 1 und 2 aus dem ersten Stripe 354a und Block 3 aus dem dritten Stripe 358a wieder her. Als nächstes stellt das Anordnungsuntermodul, da nur noch Datei 4 verbleibt, alle der Blöcke von Datei 4 wieder her, die auf dem ausgefallenen Plattenlaufwerk A vorhanden waren, was auch die Blöcke 1 und 2 des dritten Stripes 358a (F4B1 und F4B2) einschließt. Als Alternative können andere Typen von Sicherungsdaten verwendet werden, um die Daten eines ausgefallenen Plattenlaufwerks wiederherzustellen, wie zum Beispiel vollständige Datensicherungen, aus der Ferne oder lokal, oder andere Quellen von Sicherungsdaten für die Wiederherstellung.
  • Die Verarbeitung geht zu Arbeitsschritt S280 über, in dem ein Untermodul 306 für maschinelles Lernen des Prioritätswert-Zuweisungsmoduls 302 die Maschinenlogik zum Bestimmen von Prioritätswerten überarbeitet. In diesem Ausführungsbeispiel analysiert das Teilmodul 306 für maschinelles Lernen des Prioritätswert-Zuweisungsmoduls 302 des Steuerprogramms 300 aus 3A, ob die den acht Dateien durch den Satz von Maschinenlogikregeln 304 zugewiesenen Prioritätswerte Spielraum für eine verbesserte Genauigkeit bieten. In dem vorliegenden Ausführungsbeispiel bestimmt das Untermodul für maschinelles Lernen, dass dem Wert der Kategorie Lesevorgänge pro Minute eine zusätzliche Gewichtung beigemessen werden sollte, da Datei 3 eine Prioritätswert-Klassifizierung von 3 gemeinsam mit Datei 4 aufgewiesen hat, was zu einem suboptimalen Ergebnis dahingehend geführt hätte, dass Datei 3 einen niedrigeren Prioritätswert als Datei 1 zugewiesen bekommen hätte, obwohl sie 600 % häufiger gelesen wurde als Datei 1. Das Untermodul für maschinelles Lernen erstellt auch eine Regel, dass Dateien mit dem Wert 0 für den Datenschutz keinen gemeinsamen Prioritätswert mit Dateien aufweisen können, die den Wert 1 für Datenschutz aufweisen. Dadurch wird das Zuweisen von Prioritätswerten im Falle von zukünftigen Plattenlaufwerksausfällen weiter optimiert.
  • Weitere Anmerkungen und/oder Ausführungsformen
  • Einige Ausführungsformen der vorliegenden Erfindung erkennen die folgenden Tatsachen, möglichen Probleme und/oder möglichen Bereiche für Verbesserungen gegenüber dem aktuellen Stand der Technik an: (i) dass, wenn der Rückkopiervorgang es nicht schafft, das Kopieren des Laufwerks vor einem Auftreten eines weiteren Ausfalls abzuschließen, und wenn dem RAID-Array die Reserveplatten ausgehen, die technologische Ausgestaltung möglicherweise Datenverluste und/oder zugehörige wirtschaftliche Verluste verursacht; (ii) da die Daten einheitenübergreifend gespeichert sind, gibt es, selbst wenn der Wiederaufbauprozess es schafft, 30 % eines Laufwerks vor einem Ausfall wiederherzustellen, keine Garantie, dass die Kopie wiederhergestellte Dateien aufweist, sondern nur, dass es wiederhergestellte Dateiteile gibt, während andere Teile der Originaldateien möglicherweise noch fehlen; (iii) zusätzlich kann der Rückkopiervorgang zwar die Benutzerdaten kopiert haben, aber nicht die Metadaten, die beschreiben, wie die verschiedenen Teile der verschiedenen Dateien zusammenpassen; und/oder (iv) selbst wenn der Rückkopiervorgang jedes Teil einer Teilwiederherstellung (zum Beispiel die oben erwähnte 30%ige Wiederherstellung) zusammen mit den Metadaten erkennt, mit denen sie zusammengefügt werden soll, könnte es sich um zufällige Batch-Dateien des Betriebssystems (OS) handeln, während kritische Datendateien durch die Teilwiederherstellung dauerhaft verloren gehen.
  • Einige Ausführungsformen der vorliegenden Erfindung können eine(s) oder mehrere der folgenden Merkmale, Eigenschaften und/oder Vorteile aufweisen: (i) ein Verfahren zum Nutzen von maschinellem Lernen in Verbindung mit RAID-Array-Technologie, um das Zuweisen von Gewichtungswerten zu in dem RAID-Array gespeicherten Daten während eines Wiederaufbauens zu ermöglichen; (ii) Kategorisieren der in dem RAID-Array gespeicherten Daten auf der Grundlage von jeweiligen Prioritätswerten der Daten über das Array hinweg; (iii) während eines Wiederaufbauens konkretes Anweisen des Arrays dahingehend, welche Daten sowohl für das Array als auch bzw. oder für den Benutzer im Allgemeinen relevanter sind, und Sicherstellen, dass Daten mit einer den relevanten Daten entsprechenden Prioritätskategorie früher in dem Kopiervorgang kopiert werden (zum Beispiel zuerst kopiert werden); (iv) im Falle von weiteren Plattenausfällen über das Array hinweg eine erhöhte Wahrscheinlichkeit, dass die wichtigsten Daten noch erhalten bleiben; (v) Verfolgen von Nutzungsmustern des RAID-Arrays; und (vi) das Verfolgen von Nutzungsmustern hängt nicht nur von dem Zeitpunkt des letzten Lese- oder Schreibvorgangs ab, sondern auch von der Kontinuität der Verwendung (zum Beispiel können Daten, die nur etwa einmal pro Jahr verwendet werden, eine Verwendungskontinuitätskategorie darstellen).
  • Einige Ausführungsformen der vorliegenden Erfindung können eine(s) oder mehrere der folgenden Merkmale, Eigenschaften und/oder Vorteile aufweisen: (i) Array-Metadaten, soweit sie sich auf die Benutzerdaten beziehen, werden verfolgt, um eine direkte Zugehörigkeit zwischen den Datentypen zu ermöglichen; (ii) ständiges Überwachen des Array-Zustands, soweit er sich auf ein Laufwerk und auf laufende Wiederherstellungen bezieht; (iii) Festlegen eines „Werts“ von Benutzerdaten auf einem numerisch bezifferten Gewichtungssystem (zum Beispiel mögliche vorher festgelegte Gewichtungen von 1 bis 5, wobei 1 der wertvollste und 5 der am wenigsten wertvolle ist); (iv) ein Erkennen von Datentypen ermöglicht eine Zuweisung des Prioritätswertes ganz oder teilweise auf den Datentypen beruhend (zum Beispiel sind Bilder üblicherweise kleiner und können einen erheblichen Wert aufweisen, so dass, obwohl eine Berücksichtigung ihrer Nutzungshäufigkeit nur einen Prioritätswert von 3 für deren entsprechende Daten, wie sie in dem RAID-Array gespeichert sind, rechtfertigt, diese Daten in einigen Ausführungsformen auf einen Prioritätswert von 1 angehoben werden); (v) es wird ständig eine Dateninventarisierung über das Array hinweg stattfinden, wobei Prioritätswerte entsprechend angepasst werden; (vi) kleine Datenmengen werden gegen große Datenmengen abgewogen (zum Beispiel um beim Ermitteln zu helfen, ob es im Interesse des Benutzers besser ist, schnell eintausend kleine Dateien im Vergleich zu drei großen Dateien zu kopieren); (vii) im Falle eines Laufwerksausfalls erfolgt ein Wiederherstellen einer Reserve der auf dem ausgefallenen Laufwerk gespeicherten Daten, wozu das RAID üblicherweise in derzeit herkömmlichen RAID-Systemen ausgestaltet ist; (viii) auf der Grundlage der Systemzuweisung von „Wert“ beginnt diese Wiederherstellung mit dem Schreiben lediglich von Daten, die mit einem relativ hohen Prioritätswert gekennzeichnet sind (zum Beispiel zu Beginn ein Wiederherstellen lediglich von Daten mit einem Prioritätswert von 1); (ix) Übertragen sowohl der Benutzerdaten als auch der Metadaten von Daten mit relativ hoher Priorität zu Beginn des Wiederherstellungsprozesses, um die Verwendbarkeit der Daten im Falle eines Ausfalls vor dem Abschließen der Wiederherstellung zu ermöglichen; und/oder (x) der Wiederherstellungsprozess arbeitet die Werte solange durch, bis die Wiederherstellung abgeschlossen wurde und alle Daten zurück auf die Reserveplatte kopiert wurden und das Array wieder in Ordnung ist.
  • Ein Beispiel für ein Zuweisen von Prioritätswerten wird nun erörtert. In diesem Beispiel: (i) ist ein Algorithmus K-Means (dies ist ein Algorithmus zum Bilden von Clustern, der Gruppen von Elementen auf der Grundlage einer Kombination ihrer Eigenschaften erzeugt, indem jedem Element Bezeichnungen zugewiesen werden, die einem Cluster oder einer Gruppe entsprechen); (ii) ist der Abstand euklidisch (eine weitere beliebte Abstandsfunktion ist Manhattan), wobei verschiedene Abstandsfunktionen die Art und Weise, wie sich die Cluster bilden, sowie ihre Größe beeinflussen, was für bestimmte Typen von Datenmustern von Vorteil sein kann, während es für andere Typen von Nachteil sein kann; und (iii) sind Beobachtungsvariablen X(n) = (x(1), x(2), x(3), x(4), x(5)), wobei x(1) die Blockgröße ist, x(2) die Lesehäufigkeit, ausgedrückt in Lesevorgängen pro Zeiteinheit, ist, x(3) der Lesetrend mit geschätzten Zeiteinheiten bis zum nächsten Lesevorgang ist, x(4) ein Einschluss von Datenschutz ist, und x(5) für einen deduplizierten Block verwendet wird, Anzahl von Verweisen. Das ist die Anzahl von Verweisen auf einen Block in einer deduplizierten Umgebung. In diesem Beispiel wird ein deduplizierter Block verwendet, um doppelte Informationen zu beseitigen, indem ein Block lediglich einmal gespeichert wird und bei einem Versuch, dasselbe Datenmuster erneut zu speichern, einfach ein Zeiger auf diesen ursprünglichen Block um eins erhöht wird. In diesem Beispiel sind x(1), x(2), x(3), x(4), x(5) numerische Größen, die nach Regeln der Maschinenlogik kombiniert werden, um den Prioritätswert X(n) für den Datenblock (oder den Satz von Datenblöcken) namens n zu bestimmen. Es können viel mehr Faktoren berücksichtigt werden (und sogar Kombinationen der bereits erwähnten). Einige Ausführungsformen der vorliegenden Erfindung berücksichtigen diese Faktoren (aber der K-Means-Algorithmus ist nicht auf diese beschränkt), um dem Algorithmus des maschinellen Lernens Flexibilität beim Anpassen und Ändern des Bestimmens von Prioritätswerten bereitzustellen. Zusätzlich ist der Dateiname ein wichtiger Faktor zum Verhindern, dass eine Datei in verschiedenen Clustern landet.
  • Einige Ausführungsformen der vorliegenden Erfindung können eine größere Liste von Faktoren in Betracht ziehen, die beim Zuweisen von Prioritätswerten berücksichtigt werden können, darunter: (i) Blockgröße; (ii) jüngste Lesehäufigkeit des einzelnen Blocks auf Blockebene; (iii) jüngste Lesehäufigkeit der Datei, zu welcher der Block gehört; (iv) Lesehäufigkeit einer Gruppe von Dateien, zu denen die Datei, zu welcher der Block gehört; (v) Gesamtzahl der historischen Lesevorgänge des einzelnen Blocks auf Blockebene; (vi) Änderungsrate der Lesehäufigkeit (auch Lesetrend genannt); (vii) Datenschutzniveau des Blocks; (viii) Anzahl von Verweisen eines deduplizierten Blocks; (ix) manuelle Bestimmung (zum Beispiel durch einen menschlichen Systemadministrator) von Prioritätsstufen von Dateien, Gruppen von Dateien oder Blöcken; (x) Zeitpunkte verschiedener Zugriffe auf Blöcke (zum Beispiel Zugriffe, die während hochsicherer Arbeitsschritte erfolgen; (xi) Verschlüsselungsstatus von Blöcken; (xii) Identität von Personen mit Zugriffsberechtigungen auf verschiedene Blöcke, Dateien und/oder Gruppen von Dateien; (xiii) Identität von Eigentümern verschiedener Blöcke, Dateien und/oder Gruppen von Dateien; (xiv) Dateityp der Datei, zu der ein Block gehört; (xv) Alter eines Blocks (das heißt Zeit seit der ersten Erstellung des Blocks); und (xvi) Dateiname einer Datei, zu der ein Block gehört.
  • Einige Ausführungsformen stellen ein ausgefallenes Festplattenlaufwerk in einem RAID-Array auf einem Reserve-Festplattenlaufwerk wieder her, wie zum Beispiel jeweils in den Schaubildern 400a bis 400e in den 4A bis 4E veranschaulicht ist. Bei den 4A bis 4E handelt es sich um Schaubilder, die eine Wiederherstellung eines ausgefallenen Festplattenlaufwerks in einem RAID-Array auf einem Reserveplattenlaufwerk 400 zu fünf aufeinanderfolgenden Zeitpunkten zeigen (T0 in 4A bis T4 in 4E). Die Schaubilder 400a bis 400e umfassen: ein Festplattenlaufwerk 0 (HDD0) 402a bis 402e (mit Verweiszeichen, die verschiedene aufeinanderfolgende Zeitpunkte angeben); ein Festplattenlaufwerk 1 (HDD1) 404a bis 404e; ein Festplattenlaufwerk (HDD2) 406a bis 406e; ein Paritätslaufwerk 408a bis 408e; und ein Reservelaufwerk 410a bis 410e.
  • Bei T0 speichern HDD0 402a, HDD1 404a und HDD2 406a jeweils Cluster von Datenblöcken, die nach dem relativen Gewichtungswert (alternativ als relative Prioritätsstufe bezeichnet) von 1 bis 5 eingestuft sind. In diesem Beispiel können Cluster von unterschiedlicher Größe sein. Bei T1 fällt HDD1404b aus, und es steht ein Reservelaufwerk 410b zur Verfügung, um wiederhergestellte Daten von HDD1 404b zu empfangen. Bei T2 wird ein an erster Stelle eingestufter Cluster von der HDD1 404c auf dem Reservelaufwerk 410c wiederhergestellt. Bei T3 wird ein an zweiter Stelle eingestufter Cluster von der HDD1 404d auf dem Reservelaufwerk 410d wiederhergestellt. Bei T4 werden verbleibende Daten-Cluster von der HDD1 404e auf dem Reservelaufwerk 410e wiederhergestellt (wobei die einzelnen Schritte des Wiederherstellens der dritt- bis fünftplatzierten Cluster nicht gezeigt sind), wodurch der Wiederherstellungsvorgang abgeschlossen ist. Ein einzelner Cluster kann Blöcke enthalten, die sich auf verschiedenen Festplatten befinden. Benutzer können dies durch Auswählen des RAID-Typs (sequenziell im Gegensatz zu gestrippt) oder durch Verwendung anderer Techniken steuern. Bestimmte Ausführungsformen der vorliegenden Erfindung vermeiden ein Zuweisen von verschiedenen Fragmenten einer gegebenen Datei zu unterschiedlichen Clustern durch Hinzufügen des Dateinamens zu dem Satz von Faktoren, die beim Bilden der Cluster zu berücksichtigen sind.
  • In der Ausführungsform der vorliegenden Erfindung, die den Screenshot 400a erzeugt, sind fünf Daten-Cluster der Einstufung 1 bis 5 in der Reihenfolge ihrer Priorität über drei Festplattenlaufwerke (HDD0 402a, HDD1404a, HDD2 406a) hinweg fragmentiert, wobei Cluster in unterschiedlichen Konfigurationen auf jedem Festplattenlaufwerk gespeichert sind. In diesen Ausführungsformen ist die Position eines Daten-Clusters auf einem Festplattenlaufwerk im Falle eines Laufwerksausfalls irrelevant, da ein Wiederherstellen ein Wiederherstellen von wichtigen Daten vor weniger wichtigen Daten priorisiert, wie in Screenshot 400d aus 4D veranschaulicht ist. In diesen Ausführungsformen ist der Daten-Cluster 2 von HDD1 der zweite Daten-Cluster, der auf dem Reservelaufwerk wiederhergestellt wird, obwohl er sich nach den Daten-Clustern 1, 5 und 4 auf der HDD1 befindet.
  • Einige Ausführungsformen der vorliegenden Erfindung werden in RAID-Array-Architektur-Technologie verwendet, wobei ein Wiederherstellen auf Dateiebene verwaltet und priorisiert wird, indem maschinelles Lernen in Verbindung mit RAID-Arrays genutzt wird, um ein Zuweisen eines Prioritätswertes während eines Wiederherstellens (zu einem Cluster von Blöcken) zu ermöglichen, und zwar durch Kategorisieren auf der Grundlage eines zugewiesenen Wertes der Daten über das Array hinweg. In diesen Ausführungsformen werden die Prioritätswerte während des Wiederherstellens verwendet, um zu bestimmen, welche Daten sowohl für das RAID-Array als auch bzw. oder für einen Benutzer relevanter sind, um sicherzustellen, dass Daten, die einem oder mehreren höheren Prioritätswerten entsprechen, zuerst kopiert werden, bevor Daten kopiert werden, die relativ niedrigeren Prioritätswerten entsprechen.
  • Einige Ausführungsformen der vorliegenden Erfindung können eine(s) oder mehrere der folgenden Merkmale, Eigenschaften und/oder Vorteile aufweisen: (i) Erstellen einer Klassifizierung zum Unterstützen und Priorisieren des Wiederherstellungsprozesses eines beschädigten RAID-Arrays; (ii) Gruppieren von einem oder mehreren Datenblöcken (zum Beispiel eines oder mehrerer Blöcke, die einer einzelnen Datei entsprechen) zum Zweck der Prioritätszuweisung, anstatt Prioritätswerte auf einer volumenbezogenen Grundlage zuzuweisen; (iii) es kann Daten mit unterschiedlichen Prioritätswerten in demselben Volumen geben (aber die vorliegende Erfindung ermöglicht es vorzugsweise, dass Teile des Volumens mit höherer Priorität vor Teilen mit niedrigerer Priorität kopiert werden können); (iv) Zuweisen von Prioritätswerten zu Blöcken (oder Sätzen von Blöcken) unter Verwendung von Clustering-Algorithmen, die sich an die verschiedenen Typen von Daten anpassen, die möglicherweise vorhanden sind; (v) Analysieren der Datenblöcke und Bilden von Gruppen (Clustern) auf der Grundlage verschiedener Merkmale, die ständig überwacht werden; (vi) Verwenden dieser Bezeichnungen (Gruppen), um zu bewirken, dass die wichtigsten Daten zuerst wiederhergestellt werden, um einen möglichen anschließenden Ausfall zu verhindern, der das RAID-Array irreparabel beschädigen würde; (vii) dynamisches Verwenden der Lese/Schreib-Aktivität der Daten selbst sowie der Häufigkeit des Datenzugriffs und anschließendes automatisches Klassifizieren der Daten, um die kritischen Daten zuerst wiederherzustellen; (viii) ein komplexerer Algorithmus zum Bestimmen der Priorisierung der Wiederherstellungen; (ix) Verwenden von Schreibaktivität und/oder Zugriffshäufigkeit zum Bestimmen der Kritikalität der Daten zum Zweck des Zuweisens von Prioritätswerten zu Sätzen von einem oder mehreren Blöcken; (x) Kategorisieren der Daten unter Verwendung eines anpassbaren Algorithmus zum Klassifizieren und Priorisieren der Daten auf der Grundlage von historischer Verwendung; (xi) Wiederherstellen der meisten Daten mit relativ hoher Priorität zuerst, um sie im Falle eines anschließenden Ausfalls zu bewahren; (xii) Konzentrieren auf das, was zuerst wiederhergestellt werden soll, im Gegensatz zu irgendetwas, das ein Host durchführt; und/oder (xiii) Nehmen eines bereits ausgefallenen Laufwerks und Ermitteln, was in welcher Reihenfolge wiederhergestellt werden soll.
  • Definitionen
  • Vorliegende Erfindung: sollte nicht als absoluter Hinweis darauf verstanden werden, dass der durch den Begriff „vorliegende Erfindung“ beschriebene Gegenstand entweder durch die Ansprüche, wie sie eingereicht werden, oder durch die Ansprüche, die letztendlich nach dem Patenterteilungsverfahren erteilt werden, abgedeckt ist; während der Begriff „vorliegende Erfindung“ verwendet wird, um dem Leser zu helfen, ein allgemeines Gefühl dafür zu bekommen, welche Offenbarungen hierin für möglicherweise neu gehalten werden, wobei dieses Verständnis, wie durch Verwendung des Begriffs „vorliegende Erfindung“ angedeutet wird, vorläufig und provisorisch ist und sich im Laufe des Patenterteilungsverfahren ändern kann, wenn relevante Informationen entwickelt werden und die Ansprüche möglicherweise geändert werden.
  • Ausführungsform: siehe Definition von „vorliegende Erfindung“ oben - ähnliche Belehrungen gelten für den Begriff „Ausführungsform“.
  • und/oder: einschließlich oder; zum Beispiel A, B „und/oder“ C bedeutet, dass entweder A und/oder B und/oder C wahr und anwendbar ist.
  • Darunter / einschließlich / einschließen: wenn nicht ausdrücklich anders angegeben, bedeutet dies „einschließlich, aber nicht notwendigerweise beschränkt auf“.
  • Modul / Untermodul: jeder beliebige Satz von Hardware, Firmware und/oder Software, der funktionsfähig ist, um eine gewisse Funktion zu erfüllen, unabhängig davon, ob das Modul: (i) sich einzeln in lokaler Nähe befindet; (ii) über ein weites Gebiet verteilt ist; (iii) sich einzeln in der Nähe innerhalb eines größeren Teils von Softwarecode befindet; (iv) sich innerhalb eines einzelnen Teils von Softwarecode befindet; (v) sich in einer einzelnen Speichereinheit, einem einzelnen Hauptspeicher oder auf einem einzelnen Medium befindet; (vi) mechanisch verbunden ist; (vii) elektrisch verbunden ist; und/oder (viii) für einen Datenaustausch verbunden ist.
  • Computer: jede beliebige Einheit mit bedeutenden Fähigkeiten zur Datenverarbeitung und/oder zum Lesen von durch eine Maschine lesbaren Anweisungen, darunter, aber nicht beschränkt auf: Desktop-Computer, Mainframe-Computer, Laptop-Computer, auf im Feld programmierbaren Gatter-Anordnungen (FPGA, field-programmable gate array) beruhende Einheiten, Smartphones, persönliche digitale Assistenten (PDAs, personal digital assistants), am Körper befestigte oder in den Körper eingesetzte Computer, Computer mit eingebetteten Einheiten, auf einer anwendungsspezifischen integrierten Schaltung (ASIC, application-specific integrated circuit) beruhende Einheiten.

Claims (17)

  1. Computer-implementiertes Verfahren, aufweisend: Speichern einer Mehrzahl von Datenblöcken in einem einheitenübergreifenden RAID-Speichersystem, das eine Mehrzahl von Speichereinheiten enthält; Speichern von Paritätsdaten für die Mehrzahl von Datenblöcken; Aktualisieren, durch eine Maschinenlogik, eines Prioritätszuweisungsalgorithmus zum Zuweisen der Prioritätsdatenwerte, zumindest teilweise beruhend auf einem Überprüfen von relativen Gewichtungen, die einem Satz von Faktoren zugewiesen sind, die beim Zuweisen von Prioritätsdatenwerten berücksichtigt werden, und welche Prioritätsdatenwerte jedem Datenblock der Mehrzahl von Datenblöcken zugewiesen wurden; für jeden gegebenen Datenblock der Mehrzahl von Datenblöcken, Zuweisen eines Prioritätsdatenwertes zu dem gegebenen Datenblock auf der Grundlage des Prioritätszuweisungsalgorithmus; und als Reaktion auf ein Ausfallen einer ersten Speichereinheit der Mehrzahl von Speichereinheiten, Wiederherstellen von Datenblöcken, die auf der ersten Speichereinheit gespeichert waren, in einer Reihenfolge, die durch Prioritätswerte der Datenblöcke bestimmt ist, die auf der ersten Speichereinheit gespeichert waren, unter Verwendung der Paritätsdaten und von Daten der Datenblöcke, die auf der Mehrzahl von Speichereinheiten außer der ersten Speichereinheit gespeichert sind.
  2. Verfahren nach Anspruch 1, wobei das Zuweisen eines Prioritätsdatenwertes zumindest teilweise auf mindestens einem der folgenden Faktoren beruht: Blockgröße, Lesehäufigkeit, Lesetrend, Einschluss von Datenschutz und Anzahl von Verweisen auf einen deduplizierten Block.
  3. Verfahren nach Anspruch 1, wobei das Zuweisen eines Prioritätsdatenwertes ein Bilden von Clustern für jeden Datenblock der Mehrzahl von Datenblöcken mit einem K-Means-Clustering-Algorithmus umfasst.
  4. Verfahren nach Anspruch 1, wobei durch das Wiederherstellen die Datenblöcke auf einer zweiten Speichereinheit wiederhergestellt werden.
  5. Verfahren nach Anspruch 4, darüber hinaus aufweisend: erneutes Zuordnen der Paritätsdaten, die den Datenblöcken der ersten Speichereinheit zugehörig sind, zu den Datenblöcken der zweiten Speichereinheit.
  6. Verfahren nach Anspruch 1, wobei das Zuweisen eines Prioritätsdatenwertes für den gegebenen Block auch Datenblöcken einen identischen Prioritätswert zuweist, die dem gegebenen Block zugehörige Metadaten enthalten.
  7. Computerprogrammprodukt, aufweisend: ein nichtflüchtiges computerlesbares Speichermedium; und Computercode, der auf dem nichtflüchtigen computerlesbaren Speichermedium gespeichert ist, wobei der Computercode Anweisungen enthält, um einen oder mehrere Prozessoren dazu zu veranlassen, Arbeitsschritte durchzuführen, einschließlich der folgenden: Speichern einer Mehrzahl von Datenblöcken in einem einheitenübergreifenden RAID-Speichersystem, das eine Mehrzahl von Speichereinheiten enthält, Speichern von Paritätsdaten für die Mehrzahl von Datenblöcken, Aktualisieren, durch eine Maschinenlogik, eines Prioritätszuweisungsalgorithmus zum Zuweisen der Prioritätsdatenwerte, zumindest teilweise beruhend auf einem Überprüfen von relativen Gewichtungen, die einem Satz von Faktoren zugewiesen sind, die beim Zuweisen von Prioritätsdatenwerten berücksichtigt werden, und welche Prioritätsdatenwerte jedem Datenblock der Mehrzahl von Datenblöcken zugewiesen wurden; für jeden gegebenen Datenblock der Mehrzahl von Datenblöcken, Zuweisen eines Prioritätsdatenwertes zu dem gegebenen Datenblock auf der Grundlage des Prioritätszuweisungsalgorithmus, und als Reaktion auf ein Ausfallen einer ersten Speichereinheit der Mehrzahl von Speichereinheiten, Wiederherstellen von Datenblöcken, die auf der ersten Speichereinheit gespeichert waren, in einer Reihenfolge, die durch Prioritätswerte der Datenblöcke bestimmt ist, die auf der ersten Speichereinheit gespeichert waren, unter Verwendung der Paritätsdaten und von Daten der Datenblöcke, die auf der Mehrzahl von Speichereinheiten außer der ersten Speichereinheit gespeichert sind.
  8. Produkt nach Anspruch 7, wobei das Zuweisen eines Prioritätsdatenwertes zumindest teilweise auf mindestens einem der folgenden Faktoren beruht: Blockgröße, Lesehäufigkeit, Lesetrend, Einschluss von Datenschutz und Anzahl von Verweisen auf einen deduplizierten Block.
  9. Produkt nach Anspruch 7, wobei das Zuweisen eines Prioritätsdatenwertes ein Bilden von Clustern für jeden Datenblock der Mehrzahl von Datenblöcken mit einem K-Means-Clustering-Algorithmus umfasst.
  10. Produkt nach Anspruch 7, wobei durch das Wiederherstellen die Datenblöcke auf einer zweiten Speichereinheit wiederhergestellt werden.
  11. Produkt nach Anspruch 10, wobei der Computercode darüber hinaus Anweisungen enthält, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, den folgenden Arbeitsschritt durchzuführen: erneutes Zuordnen der Paritätsdaten, die den Datenblöcken der ersten Speichereinheit zugehörig sind, zu den Datenblöcken der zweiten Speichereinheit.
  12. Produkt nach Anspruch 7, wobei das Zuweisen eines Prioritätsdatenwertes für den gegebenen Block auch Datenblöcken einen identischen Prioritätswert zuweist, die dem gegebenen Block zugehörige Metadaten enthalten.
  13. Computersystem, aufweisend: einen Satz aus einem oder mehreren Prozessoren; eine durch eine Maschine lesbare Speichereinheit; und Computercode, der auf der durch eine Maschine lesbaren Speichereinheit gespeichert ist, wobei der Computercode Anweisungen enthält, um den/die Prozessor(en) dazu zu veranlassen, Arbeitsschritte durchzuführen, einschließlich der folgenden: Speichern einer Mehrzahl von Datenblöcken in einem einheitenübergreifenden RAID-Speichersystem, das eine Mehrzahl von Speichereinheiten enthält; Speichern von Paritätsdaten für die Mehrzahl von Datenblöcken; Aktualisieren, durch eine Maschinenlogik, eines Prioritätszuweisungsalgorithmus zum Zuweisen der Prioritätsdatenwerte, zumindest teilweise beruhend auf einem Überprüfen von relativen Gewichtungen, die einem Satz von Faktoren zugewiesen sind, die beim Zuweisen von Prioritätsdatenwerten berücksichtigt werden, und welche Prioritätsdatenwerte jedem Datenblock der Mehrzahl von Datenblöcken zugewiesen wurden; für jeden gegebenen Datenblock der Mehrzahl von Datenblöcken, Zuweisen eines Prioritätsdatenwertes zu dem gegebenen Datenblock auf der Grundlage des Prioritätszuweisungsalgorithmus; und als Reaktion auf ein Ausfallen einer ersten Speichereinheit der Mehrzahl von Speichereinheiten, Wiederherstellen von Datenblöcken, die auf der ersten Speichereinheit gespeichert waren, in einer Reihenfolge, die durch Prioritätswerte der Datenblöcke bestimmt ist, die auf der ersten Speichereinheit gespeichert waren, unter Verwendung der Paritätsdaten und von Daten der Datenblöcke, die auf der Mehrzahl von Speichereinheiten außer der ersten Speichereinheit gespeichert sind.
  14. System nach Anspruch 13, wobei das Zuweisen eines Prioritätsdatenwertes zumindest teilweise auf mindestens einem der folgenden Faktoren beruht: Blockgröße, Lesehäufigkeit, Lesetrend, Einschluss von Datenschutz und Anzahl von Verweisen auf einen deduplizierten Block.
  15. System nach Anspruch 13, wobei das Zuweisen eines Prioritätsdatenwertes ein Bilden von Clustern für jeden Datenblock der Mehrzahl von Datenblöcken mit einem K-Means-Clustering-Algorithmus umfasst.
  16. System nach Anspruch 13, wobei durch das Wiederherstellen die Datenblöcke auf einer zweiten Speichereinheit wiederhergestellt werden.
  17. System nach Anspruch 13, wobei das Zuweisen eines Prioritätsdatenwertes für den gegebenen Block auch Datenblöcken einen identischen Prioritätswert zuweist, die dem gegebenen Block zugehörige Metadaten enthalten.
DE112018004637.0T 2017-11-14 2018-11-07 Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten Active DE112018004637B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/811,822 US10691543B2 (en) 2017-11-14 2017-11-14 Machine learning to enhance redundant array of independent disks rebuilds
US15/811,822 2017-11-14
PCT/IB2018/058741 WO2019097360A1 (en) 2017-11-14 2018-11-07 Machine learning to enhance redundant array of independent disks rebuilds

Publications (2)

Publication Number Publication Date
DE112018004637T5 DE112018004637T5 (de) 2020-06-04
DE112018004637B4 true DE112018004637B4 (de) 2021-06-10

Family

ID=66432224

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004637.0T Active DE112018004637B4 (de) 2017-11-14 2018-11-07 Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten

Country Status (6)

Country Link
US (1) US10691543B2 (de)
JP (1) JP7233804B2 (de)
CN (1) CN111344679B (de)
DE (1) DE112018004637B4 (de)
GB (1) GB2582505B (de)
WO (1) WO2019097360A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691543B2 (en) 2017-11-14 2020-06-23 International Business Machines Corporation Machine learning to enhance redundant array of independent disks rebuilds
JP7405608B2 (ja) * 2019-12-26 2023-12-26 株式会社日立製作所 ストレージシステム
US11734121B2 (en) * 2020-03-10 2023-08-22 EMC IP Holding Company LLC Systems and methods to achieve effective streaming of data blocks in data backups
US11372543B2 (en) * 2020-04-10 2022-06-28 Western Digital Technologies, Inc. Zone-append command scheduling based on zone state
US11604698B2 (en) * 2020-12-02 2023-03-14 Code42 Software, Inc. Method and process for automatic determination of file/object value using meta-information
CN114721585A (zh) * 2021-01-06 2022-07-08 伊姆西Ip控股有限责任公司 存储管理方法、设备和计算机程序产品
US11762782B2 (en) * 2021-03-19 2023-09-19 Dell Products, L.P. Caching system and method for a workspace environment
CN113535086B (zh) * 2021-07-12 2023-07-25 中飞赛维智能科技股份有限公司 一种固态硬盘中重建的加速方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140006369A1 (en) * 2012-06-28 2014-01-02 Sean Blanchflower Processing structured and unstructured data
US20140365819A1 (en) * 2013-06-05 2014-12-11 International Business Machines Corporation Rebuilding data of a storage system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301297A (en) 1991-07-03 1994-04-05 Ibm Corp. (International Business Machines Corp.) Method and means for managing RAID 5 DASD arrays having RAID DASD arrays as logical devices thereof
US7620843B2 (en) * 2005-03-02 2009-11-17 International Business Machines Corporation Rebuilding a storage system
US7305579B2 (en) * 2005-03-22 2007-12-04 Xiotech Corporation Method, apparatus and program storage device for providing intelligent rebuild order selection
US20090271659A1 (en) 2008-04-24 2009-10-29 Ulf Troppens Raid rebuild using file system and block list
US8006128B2 (en) * 2008-07-31 2011-08-23 Datadirect Networks, Inc. Prioritized rebuilding of a storage device
US7904749B2 (en) 2008-10-24 2011-03-08 Hitachi, Ltd. Fast data recovery from HDD failure
US8285952B2 (en) * 2009-09-17 2012-10-09 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
US8726070B2 (en) 2010-09-27 2014-05-13 Dell Products L.P. System and method for information handling system redundant storage rebuild
JP5640618B2 (ja) * 2010-10-04 2014-12-17 富士通株式会社 管理プログラム、管理装置、および管理方法
US8751861B2 (en) 2012-02-08 2014-06-10 Lsi Corporation System and method for improved rebuild in RAID
US9135096B2 (en) 2012-12-06 2015-09-15 Compellent Technologies RAID surveyor
US20140215147A1 (en) 2013-01-25 2014-07-31 Hewlett-Packard Development Company, L.P. Raid storage rebuild processing
US20140281689A1 (en) 2013-03-15 2014-09-18 Teradata Corporation Method and system for rebuilding data following a disk failure within a raid storage system
US9292389B2 (en) * 2014-01-31 2016-03-22 Google Inc. Prioritizing data reconstruction in distributed storage systems
CN103823728B (zh) 2014-03-13 2015-11-18 深圳市迪菲特科技股份有限公司 一种独立冗余磁盘阵列智能重建的方法
WO2016048314A1 (en) * 2014-09-24 2016-03-31 Hewlett Packard Enterprise Development Lp Block priority information
JP6059314B1 (ja) * 2015-09-17 2017-01-11 ヤフー株式会社 推定装置、推定方法及び推定プログラム
US10691543B2 (en) 2017-11-14 2020-06-23 International Business Machines Corporation Machine learning to enhance redundant array of independent disks rebuilds

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140006369A1 (en) * 2012-06-28 2014-01-02 Sean Blanchflower Processing structured and unstructured data
US20140365819A1 (en) * 2013-06-05 2014-12-11 International Business Machines Corporation Rebuilding data of a storage system

Also Published As

Publication number Publication date
GB2582505B (en) 2022-08-10
US20190146875A1 (en) 2019-05-16
CN111344679A (zh) 2020-06-26
WO2019097360A1 (en) 2019-05-23
CN111344679B (zh) 2023-07-11
JP7233804B2 (ja) 2023-03-07
GB202008683D0 (en) 2020-07-22
DE112018004637T5 (de) 2020-06-04
US10691543B2 (en) 2020-06-23
GB2582505A (en) 2020-09-23
JP2021503115A (ja) 2021-02-04

Similar Documents

Publication Publication Date Title
DE112018004637B4 (de) Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE112011100534B4 (de) Mehrstufiger Sicherungsprozess
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112010003662B4 (de) Ausgleich nachlassender Funktionsfähigkeit von Halbleiterdatenträgern auf der Grundlage der von einer RAID-Steuereinheit empfangenen Daten- und Paritätsnutzungsinformationen
DE112019002609T5 (de) Wechseln zwischen Fehlerreaktionsmodellen für ein Speichersystem
DE112018003081T5 (de) Optimieren von benutzerzufriedenheit beim schulen eines kognitiven hierarchischen speicherverwaltungssystems
DE112020000305B4 (de) Verringern der wiederherstellungszeit in einer computerspeicherumgebung
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE102016108733B4 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE112019003288T5 (de) Verwenden eines moduls mit maschinellem lernen, um zu ermitteln, wann eine fehlerprüfung eines speicherelements durchzuführen ist
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102016100773A1 (de) Erfassen von Komprimierungsleistungsmesswerten für die Verarbeitung von Daten
DE112021003747T5 (de) Erkennen von anomalien in einer netzwerktopologie
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung
DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE112020005227T5 (de) Speicherzustandsüberwachung für differenziertedatenwiederherstellungskonfigurationen
DE112010004264T5 (de) Selektiver Schreibschutz für das Austesten der Wiederherstellung nach einem Absturz
DE112017002144T5 (de) Manipulieren eines verteilten Vereinbarungsprotokolls zum Identifizieren einer gewünschten Gruppe von Speichereinheiten
DE102017126911A1 (de) Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode
DE112021003615T5 (de) Schutz vor logischer beschädigung für daten
DE102021124256A1 (de) Mobile ki
DE112020003062T5 (de) Dynamische anpassung einer logischen speicherkapazität für speicherlaufwerke
DE112016003465T5 (de) Autonomer Paritätsaustausch in Datenspeichersystemen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final