-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich auf ein Computerprogrammprodukt, System und Verfahren zum Verwenden eines Moduls mit maschinellem Lernen (ML-Modul), um zu ermitteln, wann eine Fehlerprüfung eines Speicherelements durchzuführen ist.
-
Beschreibung der verwandten Technik
-
Zur Aufrechterhaltung der Datenintegrität in einem Speichersystem können Fehlerprüf- und Fehlerkorrekturoperationen für die Daten durchgeführt werden, wenn Fehler erkannt werden. In Speicheranordnungen wie einer redundanten Anordnung von unabhängigen Festplatten (Redundant Array of Independent Disks, RAID) können Paritätsdaten verwaltet werden, die dazu dienen können, zu prüfen, ob es Datenfehler gibt, und die Daten zu korrigieren. In RAID-Anordnungen kann in regelmäßigen Abständen eine Paritätsbereinigungsoperation durchgeführt werden, um die Integrität von Daten und Paritätsblöcken zu verifizieren, indem alle Blöcke in einem RAID-Stripe, die über die Speichereinheiten in einer RAID-Anordnung hinweg gespeichert werden, zu lesen und die gelesenen Daten mit den Paritätsdaten zu vergleichen, um zu ermitteln, ob Inkonsistenzen vorhanden sind. Paritätsbereinigungsoptionen sind rechenaufwändig und benötigen System-Rechenressourcen sowie einen kontinuierlichen Zugriff, um Daten und Paritätsdaten aus der Speicheranordnung zu lesen. Mit zunehmender Laufwerkskapazität ist auch das Ausmaß der Fehlerprüfoperationen für eine Paritätsbereinigung entsprechend angestiegen, was zu Latenzverzögerungen für andere Operationen und Anwendungen führen kann, die auf die Daten in der RAID-Anordnung zugreifen möchten.
-
Eine Methode zur Fehlerprüfung besteht darin, nach einer festen Anzahl von Schreiboperationen in regelmäßigen Abständen eine Paritätsbereinigung durchzuführen. Für kritische Daten können Systemadministratoren die feste Anzahl niedrig ansetzen, um fortlaufende Fehlerkorrekturoperationen sicherzustellen und zu verhindern, dass sich Datenfehler in den kritischen Daten ausbreiten. Allerdings können diese fortlaufenden Fehlerprüfoperationen zu Latenzverzögerungen beim Zugriff auf die kritischen Daten führen.
-
In der Technik besteht ein Bedarf an verbesserten Methoden zum Ermitteln, wann eine Fehlerkorrekturprüfung und Fehlerkorrekturoperationen in einem Speicherelement durchzuführen sind.
-
KURZDARSTELLUNG
-
Eine erste Ausführungsform weist ein Computerprogrammprodukt, System und Verfahren zum Verwenden eines ML-Moduls auf, um zu ermitteln, wann eine Fehlerprüfung eines Speicherelements durchzuführen ist. Eine Eingabe zu Attributen von mindestens einer Speichereinheit, aus der sich das Speicherelement zusammensetzt, wird einem ML-Modul bereitgestellt, um einen Ausgabewert zu erzeugen. Aus dem Ausgabewert wird eine Fehlerprüfhäufigkeit ermittelt. Es wird ermittelt, ob die Fehlerprüfhäufigkeit angibt, dass in Bezug auf das Speicherelement eine Fehlerprüfoperation durchzuführen ist. Die Fehlerprüfoperation wird als Reaktion auf ein Ermitteln durchgeführt, dass die Fehlerprüfhäufigkeit angibt, dass die Fehlerprüfoperation durchzuführen ist.
-
Unter einem ersten Aspekt betrachtet, stellt die vorliegende Erfindung Verbesserungen einer Computertechnologie zum Ermitteln bereit, wann eine Fehlerprüfung und -behandlung durchzuführen ist, indem ein ML-Modul und ein ML-Algorithmus verwendet werden, um auf Grundlage von aktuellen Betriebsparametern, die für eine Speichereinheit aufgezeichnet werden, die Wahrscheinlichkeit für einen Fehler in einem Speicherelement dynamisch zu ermitteln. Auf diese Weise optimieren die beschriebenen Ausführungsformen die Zuweisung von Rechen- und Speicherressourcen zu Fehlerprüfoperationen, indem eine Häufigkeit dynamisch ermittelt wird, mit der Fehlerprüfoperationen durchzuführen sind, die auf einer Vorhersage der Wahrscheinlichkeit für einen Datenfehler angesichts aktueller Betriebsbedingungen in einer Speichereinheit beruhen. Diese dynamische Ermittlung trifft eine Entscheidung über die Durchführung einer Fehlerprüfung auf Grundlage einer Vorhersage, ob angesichts aktueller Betriebsbedingungen in einer Speichereinheit ein Datenfehler wahrscheinlich ist.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei das Speicherelement entweder eine Anordnung von Speichereinheiten oder eine einzige Speichereinheit einbezieht.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Erweitern der Optimierungsmethode bereit, um Fehlerprüfoperationen für Speicheranordnungen von Speichereinheiten wie z.B. RAID-Anordnungen sowie für Speicherelemente mit einer einzigen Speichereinheit zu optimieren.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Bereitstellen der Eingabe zu Attributen des Speicherelements bereit, das ein regelmäßiges Bereitstellen der Eingabe an das ML-Modul aufweist, um in regelmäßigen Abständen den Ausgabewert zu erzeugen, wobei die Operationen Ermitteln der Fehlerprüfhäufigkeit und das Ermitteln, ob die Fehlerprüfhäufigkeit angibt, dass die Fehlerprüfoperation durchzuführen ist.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Ermitteln bereit, wann eine Fehlerprüfung durchzuführen ist, wobei ein ML-Algorithmus verwendet wird, um eine Fehlerprüfung auf diejenigen Fälle zu begrenzen, in denen in regelmäßigen Abständen eine Vorhersage einer Wahrscheinlichkeit für einen Fehler durchgeführt wird, um fortlaufend zu ermitteln, ob eine Fehlerprüfung notwendig ist, um die Fehlerprüfung zu optimieren. Dies stellt sicher, dass etwaige Perioden mit erhöhten Fehlervorkommen einer Fehlerprüfung und -behandlung unterzogen werden und dass Perioden mit niedrigeren Fehlerraten nicht zu einer Fehlerprüfung führen, da die Prüfung nicht durchgeführt wird, wenn die Wahrscheinlichkeit für einen Fehler gering ist.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei ein Ermitteln der Fehlerprüfhäufigkeit aus dem Ausgabewert ein Ermitteln einer Anzahl von Schreibvorgängen als eine Funktion des Ausgabewerts aufweist. Das Ermitteln, ob die Fehlerprüfhäufigkeit angibt, dass die Fehlerprüfoperation durchzuführen ist, weist ein Ermitteln auf, ob ein Schreibzähler die Fehlerprüfhäufigkeit übersteigt. Die Fehlerprüfoperation wird als Reaktion darauf durchgeführt, dass der Schreibzähler die Fehlerprüfhäufigkeit übersteigt.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt für Fehlerprüfoperationen bereit, die optimiert werden, indem auf Fehler geprüft wird, wenn der Schreibzähler die Fehlerprüfhäufigkeit übersteigt, die auf Grundlage einer Ermittlung einer Wahrscheinlichkeit, dass ein Fehler in Bezug auf die Speichereinheit auftritt, angepasst wird. Somit wird auch in diesem Fall eine Fehlerprüfung auf Grundlage einer ermittelten Wahrscheinlichkeit für einen Fehler durchgeführt, um eine optimierte Zuweisung von Rechenressourcen zu Fehlerprüf- und anderen Prozessen sicherzustellen.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Zurücksetzen des Schreibzählers auf null als Reaktion auf ein Ermitteln bereit, dass die Fehlerprüfoperation durchzuführen ist.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei der Schreibzähler zurückgesetzt wird, damit eine nächste Ermittlung, dass eine Fehlerprüfung durchzuführen ist, mit der Rate der Fehlerprüfhäufigkeit erfolgen kann, die auf Grundlage der aktuellen Betriebsbedingungen trainiert wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei der Ausgabewert eine Zahl zwischen null und 1 aufweist, die eine Wahrscheinlichkeit angibt, dass in dem Speicherelement ein Fehler vorliegt. Das Ermitteln, ob die Fehlerprüfhäufigkeit angibt, dass die Fehlerprüfoperation durchzuführen ist, weist auf: die Fehlerprüfoperation als Reaktion darauf nicht durchzuführen, dass der Ausgabewert kleiner als ein unterer Grenzwert ist; die Fehlerprüfoperation als Reaktion darauf durchzuführen, dass der Ausgabewert größer als ein oberer Grenzwert ist; und die Fehlerprüfhäufigkeit auf Grundlage des Ausgabewerts als Reaktion darauf anzupassen, dass der Ausgabewert zwischen dem unteren Grenzwert und dem oberen Grenzwert liegt.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Fehlerprüfoperation nicht durchgeführt wird, um eine Ressourcenzuweisung zu anderen Operationen zu optimieren, wenn der Ausgabewert angibt, dass die Wahrscheinlichkeit für einen Fehler unter einem unteren Schwellenwert liegt, und wobei die Fehlerprüfoperation durchgeführt wird, wenn es eine höhere Wahrscheinlichkeit für einen Fehler gibt, was sicherstellt, dass die Verwendung von Ressourcen während einer Phase von wahrscheinlich erhöhten Fehlerraten auf eine Fehlerprüfung umverteilt wird. Des Weiteren kann die Fehlerprüfhäufigkeit auf Grundlage des Ausgabewerts angepasst werden, um eine Ressourcenzuweisung für künftige Fehlerprüfressourcen weiter zu optimieren.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Fehlerprüfoperation eine feste Anzahl von letzten Schreibvorgängen prüft und wobei das Anpassen der Fehlerprüfhäufigkeit die Fehlerprüfhäufigkeit auf die feste Anzahl von letzten Schreibvorgängen dividiert durch den Ausgabewert setzt.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei nur eine begrenzte Anzahl von Schreibvorgängen einer Fehlerprüfung unterzogen werden, um die Verwendung von Rechenressourcen als Teil einer Fehlerprüfung weiter zu begrenzen.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Attribute des mindestens einen Speichers, die als die Eingabe in das ML-Modul verwendet werden, mindestens eines enthalten von: einem Fehlertyp, wenn die Fehlerprüfoperation während einer letzten Ausführung der Fehlerprüfoperation einen Fehler erkannt hat, oder einer Angabe, dass kein Fehler vorliegt, wenn die Fehlerprüfoperation während der letzten Ausführung keinen Fehler erkannt hat; einen Typ von mindestens einer Speichereinheit, aus der sich das Speicherelement zusammensetzt; ein Alter der mindestens einen Speichereinheit ab einer ersten Verwendung; eine Firmware-Version der mindestens einen Speichereinheit; Leseoperationen pro Sekunde in der mindestens einen Speichereinheit; und Schreiboperationen pro Sekunde in der mindestens einen Speichereinheit.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Attribute, mit denen die Wahrscheinlichkeit für einen Fehler ermittelt wird, diejenigen Attribute enthalten, die mit der größten Wahrscheinlichkeit das Auftreten eines Fehlers vorhersagen, um die Operation zu optimieren und zu ermitteln, wann eine Fehlerprüfung durchzuführen ist. Zum Beispiel hat der Fehlertyp eines letzten Fehlers einen erheblichen Vorhersagewert, wenn es sich bei dem Fehlertyp um einen Fehlertyp handelt, der wahrscheinlich oder nicht wahrscheinlich erneut auftritt. Ein Nutzungsniveau oder Alter kann insofern eine Vorhersagekraft aufweisen, als ältere oder stärker genutzte Speichereinheiten anfälliger für Fehler sein können. Die Firmware-Version kann eine Vorhersagekraft aufweisen, wenn eine spezifische Firmware-Version mit höheren Fehlerraten verbunden ist. Darüber hinaus kann auch die Anzahl von Lese- und Schreiboperationen eine hohe Vorhersagekraft aufweisen, da Fehler bei hohen Nutzungsraten häufiger auftreten können.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei als Reaktion auf ein Durchführen einer Schreiboperation für das Speicherelement ein Schreibzähler inkrementiert wird; wobei ermittelt wird, ob der Schreibzähler eine Bedingung in Bezug auf die Fehlerprüfhäufigkeit erfüllt; wobei die Fehlerprüfoperation durchgeführt und wobei als Reaktion auf ein Ermitteln, dass der Schreibzähler die Bedingung in Bezug auf die Fehlerprüfhäufigkeit erfüllt, der Schreibzähler zurückgesetzt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei eine Durchführung der Fehlerprüfoperation eingeplant wird, wenn die Anzahl von in dem Schreibzähler angegebenen Schreibvorgängen eine Bedingung der Fehlerhäufigkeit erfüllt, z.B. wenn sie gleich der Fehlerhäufigkeit ist. Wenn dies der Fall ist, sollte eine Fehlerprüfung durchgeführt werden, um zu ermitteln, ob Fehler vorliegen, die korrigiert werden müssen.
-
Unter einem weiteren Gesichtspunkt betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, das ein Computerprogrammprodukt, Verfahren und System zum Prüfen von Daten in einem Speicherelement auf Fehler aufweist. Es wird ermittelt, dass ein ML-Modul zu trainieren ist. Als Reaktion auf ein Ermitteln, dass das ML-Modul zu trainieren ist, werden Eingaben ermittelt, die Attribute von mindestens einer Speichereinheit des Speicherelements aufweisen. Das ML-Modul wird trainiert, um als Reaktion auf ein Erkennen des Fehlers einen gewünschten Ausgabewert aus den ermittelten Eingaben zu erzeugen, der angibt, dass eine Fehlerprüfoperation des Speicherelements durchzuführen ist. Das ML-Modul wird ausgeführt, um einen Ausgabewert zu erzeugen, mit dem ermittelt wird, ob in Bezug auf das Speicherelement eine Fehlerprüfoperation durchzuführen ist.
-
Vorteilhafterweise stellt die vorliegende Erfindung Computertechnologie für eine Fehlerprüfung bereit, indem ein ML-Modul neu trainiert wird, um einen gewünschten Ausgabewert zu erzeugen, der die aktuelle Wahrscheinlichkeit für einen Fehler auf Grundlage von aktuellen Attributen der Speichereinheit(en) widerspiegelt, so dass das ML-Modul eine Wahrscheinlichkeit für einen Fehler in dem Speicherelement, z.B. einer einzigen Speichereinheit oder einer Anordnung von Speichereinheiten, exakter vorhersagen kann. Somit wird durch eine Verbesserung der Genauigkeit des ML-Moduls eine Wahrscheinlichkeit für einen Fehler auf Grundlage von aktuellen Betriebsbedingungen und Attributen ermittelt.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Erkennen eines Fehlers während eines Durchführens der Fehlerprüfoperation bereit, wobei das Ermitteln, dass das ML-Modul zu trainieren ist, als Reaktion auf ein Erkennen des Fehlers erfolgt. Der gewünschte Ausgabewert wird auf einen Ausgabewert gesetzt, der angibt, dass eine Fehlerprüfung durchzuführen ist, und der verwendet wird, um das ML-Modul als Reaktion auf ein Erkennen des Fehlers zu trainieren.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Vorhersagefähigkeit des ML-Moduls verbessert wird, indem das Modul neu trainiert wird, um eine Wahrscheinlichkeit für einen Fehler auf Grundlage von aktuellen Betriebsbedingungen zu ermitteln, die vorliegen, wenn ein Fehler tatsächlich erkannt wurde. Auf diese Weise wird das ML-Modul während einer Echtzeit-Fehlererkennung trainiert, um einen Fehler anzugeben und die Wahrscheinlichkeit zu verbessern, dass ein Fehler während tatsächlicher Fehlerbetriebsbedingungen vorhergesagt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Erkennen bereit, dass ein Fehler innerhalb einer festen Anzahl von Fehlerprüfoperationen nicht erkannt wurde. Das Ermitteln, dass das ML-Modul zu trainieren ist, erfolgt als Reaktion auf ein Erkennen, dass der Fehler innerhalb der festen Anzahl von Fehlerprüfoperationen nicht erkannt wurde. Der gewünschte Ausgabewert wird auf einen Ausgabewert gesetzt, der angibt, dass keine Fehlerprüfung durchzuführen ist, und der verwendet wird, um das ML-Modul als Reaktion auf ein Erkennen, dass ein Fehler nicht innerhalb der festen Anzahl von Fehlerprüfoperationen erkannt wurde, zu trainieren.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Vorhersagefähigkeit des ML-Moduls verbessert wird, indem das Modul neu trainiert wird, um eine Wahrscheinlichkeit, dass kein Fehler auftritt, auf Grundlage von aktuellen Betriebsbedingungen zu ermitteln, die vorliegen, wenn während einer Fehlerprüfung kein Fehler erkannt wurde. Auf diese Weise wird das ML-Modul während einer Echtzeit-Fehlererkennung trainiert, um eine geringe Wahrscheinlichkeit für einen Fehler anzugeben und die Wahrscheinlichkeit zu verbessern, dass ein Fehler während tatsächlicher Betriebsbedingungen, bei denen kein Fehler erkannt wurde, vorhergesagt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei ein Trainieren des ML-Moduls ein Ermitteln einer Fehlerspanne des Ausgabewerts des ML-Moduls und des gewünschten Ausgabewerts aufweist. Die Fehlerspanne und die Eingaben dienen zum Trainieren von Gewichtungen und Bias-Werten von Knoten in dem ML-Modul, um den gewünschten Ausgabewert zu erzeugen.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei das ML-Modul aus Eingaben von Speicheranordnungen von Speichereinheiten, die durch Speicher-Controller verwaltet werden, Ausgaben erzeugt, um den Speicher-Controllern Ausgabewerte auf Grundlage der Eingaben von den Speichereinheiten bereitzustellen, die angeben, ob die Speicher-Controller in Bezug auf die Speichereinheiten in den Speicheranordnungen, die durch die Speicher-Controller verwaltet werden, Fehlerprüfoperationen durchführen sollten.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Netzwerk-Fehlervorhersage verbessert wird, indem die Vorhersage mit einem ML-Modul konsolidiert wird, das auf Grundlage von Fehlern, die in allen Speicher-Controllern auftreten, neu trainiert werden kann. Somit verbessert ein Neutrainieren auf Grundlage einer Fehlererkennung in einem beliebigen Speicher-Controller in dem Netzwerk die Vorhersagbarkeit eines Ermittelns der Wahrscheinlichkeit für einen Fehler, wenn es für einen beliebigen Speicher-Controller in dem Netzwerk verwendet wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, das des Weiteren ein Erkennen eines Feldfehlers unabhängig von der Fehlerprüfoperation aufweist, wobei das Ermitteln, dass das ML-Modul zu trainieren ist, als Reaktion auf ein Erkennen des Feldfehlers erfolgt. Der gewünschte Ausgabewert wird auf einen Ausgabewert gesetzt, der angibt, dass eine Fehlerprüfung durchzuführen ist, und der verwendet wird, um das ML-Modul als Reaktion auf ein Erkennen des Fehlers zu trainieren.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Vorhersagefähigkeit des ML-Moduls verbessert wird, indem das Modul neu trainiert wird, um eine Wahrscheinlichkeit für einen Fehler auf Grundlage eines Erkennens eines Feldfehlers wie z.B. eines verworfenen Schreibvorgangs zu ermitteln, der unabhängig von dem Ausführen der Fehlerprüfung erkannt wurde. Auf diese Weise wird das ML-Modul während einer Echtzeit-unabhängigen Fehlererkennung trainiert, um einen Fehler anzugeben und die Wahrscheinlichkeit zu verbessern, dass ein Fehler während tatsächlicher Fehlerbetriebsbedingungen vorhergesagt wird.
-
Unter einem weiteren Gesichtspunkt betrachtet, stellt die vorliegende Erfindung ein Verfahren zum Prüfen von Daten in einem Speicherelement auf Fehler bereit, aufweisend: Bereitstellen einer Eingabe zu Attributen von mindestens einer Speichereinheit, aus der sich das Speicherelement zusammensetzt, an ein ML-Modul, um einen Ausgabewert zu erzeugen; Ermitteln einer Fehlerprüfhäufigkeit aus dem Ausgabewert; Ermitteln, ob die Fehlerprüfhäufigkeit angibt, dass in Bezug auf das Speicherelement eine Fehlerprüfoperation durchzuführen ist; und Durchführen der Fehlerprüfoperation als Reaktion auf ein Ermitteln, dass die Fehlerprüfhäufigkeit angibt, dass die Fehlerprüfoperation durchzuführen ist.
-
Unter einem weiteren Gesichtspunkt betrachtet, stellt die vorliegende Erfindung einen Systemcomputer zum Prüfen von Daten in einem Speicherelement auf Fehler bereit, aufweisend: einen Prozessor; und ein durch einen Computer lesbares Speichermedium, das durch einen Computer lesbaren Programmcode speichert, der bei Ausführung Operationen durchführt, wobei die Operationen aufweisen: Bereitstellen einer Eingabe zu Attributen von mindestens einer Speichereinheit, aus der sich das Speicherelement zusammensetzt, an ein ML-Modul, um einen Ausgabewert zu erzeugen; Ermitteln einer Fehlerprüfhäufigkeit aus dem Ausgabewert; Ermitteln, ob die Fehlerprüfhäufigkeit angibt, dass in Bezug auf das Speicherelement eine Fehlerprüfoperation durchzuführen ist; und Durchführen der Fehlerprüfoperation als Reaktion auf ein Ermitteln, dass die Fehlerprüfhäufigkeit angibt, dass die Fehlerprüfoperation durchzuführen ist.
-
Figurenliste
-
- 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
- 2 veranschaulicht eine Ausführungsform von Speichereinheitsinformationen.
- 3 veranschaulicht eine Ausführungsform von Fehlerprüfinformationen.
- 4 veranschaulicht eine Ausführungsform von Operationen, um in regelmäßigen Abständen ein ML-Modul für Fehlerprüfoperationen auszuführen.
- 5 veranschaulicht eine Ausführungsform von Operationen zum Verarbeiten einer Schreibanforderung.
- 6 veranschaulicht eine Ausführungsform von Operationen zum Durchführen einer Fehlerprüfoperation.
- 7 veranschaulicht eine Ausführungsform von Operationen, um das ML-Modul zu trainieren, um eine Wahrscheinlichkeit für einen Fehler in einem Speicherelement zu ermitteln.
- 8 veranschaulicht eine Ausführungsform von Operationen, um eine Feldfehlerbehandlung durchzuführen.
- 9 veranschaulicht eine zusätzliche Ausführungsform einer Datenverarbeitungsumgebung mit einer Mehrzahl von Speicher-Controllern und Speicheranordnungen.
- 10 veranschaulicht eine Datenverarbeitungsumgebung, in der die Komponenten aus den 1 und 8 realisiert werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Systeme nach dem Stand der Technik, die in regelmäßigen Abständen Fehlerprüfoperationen in einer Speicheranordnung wie z.B. einer RAID-Anordnung durchführen, leiten Ressourcen und Speicherzugriffe von Anwendungen weg, um eine Fehlerprüfung und -behandlung durchzuführen. Diese Umleitung von Rechen- und Speicherressourcen kann zu Latenzverzögerungen für Anwendungen führen, die versuchen, auf Daten in der Speicheranordnung zuzugreifen. Systeme nach dem Stand der Technik, die in festen Abständen regelmäßig Fehlerprüfoperationen durchführen, können eine Fehlerprüfung häufiger als notwendig durchführen, wenn es vergleichsweise wenige Fehler in der Speicheranordnung gibt, und somit unnötigerweise Latenzverzögerungen hervorrufen. Des Weiteren kann ein regelmäßiges Durchführen von Fehlerprüfoperationen in festen Abständen eine Fehlerprüfung weniger häufig als notwendig durchführen, wenn es eine größere Anzahl von Fehlern gibt, die in der Speicheranordnung auftreten, was zu Datenintegrationsfehlern in dem System führen kann.
-
Beschriebene Ausführungsformen stellen eine verbesserte Computertechnologie zum Ermitteln bereit, wann Fehlerprüf- und -behandlungsoperationen durchzuführen sind, die ein ML-Modul und einen ML-Algorithmus verwenden, um auf Grundlage von aktuellen Betriebsparametern, die für eine Speichereinheit aufgezeichnet werden, die Wahrscheinlichkeit für einen Fehler in einem Speicherelement dynamisch zu ermitteln. Das ML-Modul kann fortlaufend neu trainiert werden, um die Vorhersagegenauigkeit eines Ermittelns, ob in der Speichereinheit Fehler auftreten, unter Verwendung eines aktuellen Zustands von Betriebsparametern und einer Rückmeldung zu tatsächlich festgestellten Fehlern oder einer Abwesenheit von Fehlern zu verbessern. Auf diese Weise optimieren die beschriebenen Ausführungsformen die Zuweisung von Rechen- und Speicherressourcen zu Fehlerprüfoperationen, indem eine Häufigkeit dynamisch ermittelt wird, mit der Fehlerprüfoperationen durchzuführen sind, die auf einer Vorhersage der Wahrscheinlichkeit für einen Datenfehler angesichts aktueller Betriebsbedingungen in einer Speichereinheit beruhen.
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung. Ein Datenverarbeitungssystem 100 greift auf Daten in Speichereinheiten 102 in einer Speicheranordnung 104 zu. Das Datenverarbeitungssystem 100 enthält einen Prozessor 106 und einen Arbeitsspeicher 108 einschließlich eines Caches 110, um Daten für die Datenanordnung 104 zwischenzuspeichern. Der Prozessor 106 kann eine oder mehrere Zentraleinheiten (Central Processing Units, CPUs) oder eine Gruppe von mehreren Kernen in einer einzigen CPU aufweisen. Der Cache 110 puffert Daten, die durch Prozesse innerhalb des Datenverarbeitungssystems angefordert werden. Alternativ kann das Datenverarbeitungssystem 100 einen Speicher-Controller aufweisen, der Eingabe/Ausgabe(E/A)-Zugriffsanforderungen für Spuren in der Speicheranordnung 104 von Hosts 105 verarbeitet, die über ein Netzwerk 107 mit dem Datenverarbeitungssystem 100 (Speicher-Controller) verbunden werden.
-
Der Arbeitsspeicher 108 enthält des Weiteren einen Speicherverwalter 112, um Zugriffsanforderungen von internen Prozessen in dem Datenverarbeitungssystem 100 und/oder von Hosts 105 für Spuren in der Speicheranordnung 104 zu verwalten. Ein Cacheverwalter 114 verwaltet Spuren, auf die zugegriffen wird, in dem Cache 110 für künftige Lesezugriffe auf die Spuren, so dass Spuren, auf die zugegriffen wird, von dem schnelleren Zugriffscache 110 zurückgegeben werden können, anstatt von der Speicheranordnung 104 abgerufen werden zu müssen. Eine Spur kann jede Einheit von Daten aufweisen, die in der Speicheranordnung 104 konfiguriert wird, z.B. eine Spur, eine logische Blockadresse (Logical Block Address, LBA) usw., die ein Teil einer größeren Zusammenfassung von Spuren ist, wie z.B. ein Datenträger, eine logische Einheit usw.
-
Der Arbeitsspeicher 108 enthält des Weiteren ein Fehlerprüfmodul 116, um Fehlerprüfoperationen durchzuführen, z.B. eine Paritätsprüfoperation oder eine Paritätsbereinigung, um zu ermitteln, ob Daten gemäß Paritäts- oder Fehlerprüfcodes (Error Checking Codes, ECCs) gültig sind. Wenn es erkannte Fehler gibt, kann das Fehlerprüfmodul 116 Fehlerkorrekturoperationen durchführen, z.B. ein Korrigieren der Daten unter Verwendung der Paritätsinformationen, ein Korrigieren der Paritätsinformationen, ein Abschirmen der Daten oder ein Bereitstellen einer Benachrichtigung, dass eine Speichereinheit ausgetauscht werden muss. Das Fehlerprüfmodul 116 verwaltet Speichereinheitsinformationen 200, die Informationen zu den Speichereinheiten 102 in der Speicheranordnung 104 aufweisen, sowie Fehlerprüfinformationen 300, mit denen ermittelt wird, ob eine Fehlerprüfoperation und eine Fehlerbehandlung durchzuführen sind. Das Fehlerprüfmodul 116 kann Speichereinheitsinformationen 200 als eine Eingabe 118 für ein ML-Modul 120 bereitstellen, um einen Ausgabewert 122 zu erzeugen, der eine Wahrscheinlichkeit angibt, dass in der geprüften Speichereinheit 102 ein Fehler aufgetreten ist, die erfordert, dass eine Fehlerprüfoperation durchgeführt wird, um zu ermitteln, ob in der Speichereinheit 102 ein Fehler wie beispielsweise ein Paritätsfehler vorliegt.
-
Das ML-Modul 120 kann eine ML-Methode wie z.B. Entscheidungsbaum-Lernen, Assoziationsregel-Lernen, neuronales Netzwerk, induktive logische Programmierung, Support Vector Machines, Modelle nach Bayes usw. realisieren, um als Eingabe 118 bestimmte Informationen der Speichereinheitsinformationen 200 zu empfangen und einen Ausgabewert 122 oder ein Konfidenzniveau zu erzeugen, z.B. einen Wert zwischen 0 und 1, der eine Wahrscheinlichkeit angibt, dass ein Fehler in einem Speicherelement vorliegt, das eine einzige Speichereinheit oder eine Anordnung 104 von Speichereinheiten 102 aufweist.
-
Bei einer Ausführungsform kann das ML-Modul 120 Programme eines künstlichen neuronalen Netzwerks aufweisen, die unter Verwendung von Rückwärtspropagierung trainiert werden, um Gewichtungen und Bias-Werte in Knoten in einer verborgenen Ebene des ersten Programms eines künstlichen neuronalen Netzwerks anzupassen und auf Grundlage der Eingabe 118, die Speichereinheitsinformationen 200 aufweist, einen Ausgabewert 122 zu erzeugen. Rückwärtspropagierung kann einen Algorithmus für überwachtes Lernen von künstlichen neuronalen Netzwerken unter Verwendung eines Gradientenabstiegs aufweisen. Bei Vorhandensein eines künstlichen neuronalen Netzwerks und einer Fehlerfunktion kann das Verfahren den Gradienten der Fehlerfunktion in Bezug auf die Gewichtungen und Bias-Werte des neuronalen Netzwerks berechnen.
-
Der Speicherverwalter 112, der Cacheverwalter 114, das Fehlerprüfmodul 116 und das ML-Modul 120 werden in 1 als Programmcode gezeigt, der in den Arbeitsspeicher 108 geladen und durch den Prozessor 106 ausgeführt wird. Alternativ können einige oder alle Funktionen in Hardware-Einheiten in dem System 100 wie z.B. in anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits, ASICs) realisiert oder durch separate zweckbestimmte Prozessoren ausgeführt werden.
-
Die Speicheranordnung 104 kann eine oder mehrere nach dem Stand der Technik bekannte Speichereinheiten 102 aufweisen, z.B. eine Halbleiter-Speichereinheit (Solid State Storage Device, SSD), die Halbleiterelektronik, einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), einen Flash-Arbeitsspeicher, eine Flash-Platte, ein Direktzugriffsspeicher-Laufwerk (Random Access Memory, RAM), einen Speicherklassen-Arbeitsspeicher(Storage-Class Memory, SCM), einen Phasenwechsel-Arbeitsspeicher (Phase Change Memory, PCM), einen resistiven Direktzugriffsspeicher (Resistive Random Access Memory, RRAM), einen STM-RAM (Spin Transfer Torque Memory, STM-RAM), einen CBRAM (Conductive Bridging RAM, CBRAM), ein magnetisches Festplattenlaufwerk, eine optische Platte, ein Band usw. aufweist. Die Speichereinheiten 102 können des Weiteren in einer Anordnung von Einheiten konfiguriert werden, z.B. einer JBOD-Anordnung (Just a Bunch of Disks), einer DASD-Anordnung (Direct Access Storage Device), einer RAID-Anordnung, einer Virtualisierungseinheit usw. Des Weiteren können die Speichereinheiten heterogene Speichereinheiten verschiedener Anbieter oder desselben Anbieters aufweisen.
-
Der Arbeitsspeicher 108 kann geeignete flüchtige oder nicht flüchtige Arbeitsspeichereinheiten aufweisen, darunter die oben beschriebenen.
-
Das Netzwerk 107 kann ein Speicherbereichsnetzwerk (Storage Area Network, SAN), ein lokales Netzwerk (Local Area Network, LAN), ein Weitverkehrsnetzwerk (Wide Area Network, WAN), das Internet und ein Intranet usw. aufweisen.
-
Bei RAID-Ausführungsformen kann die Fehlerprüfoperation eine Paritätsbereinigung aufweisen, wobei das Fehlerprüfmodul 116 Blöcke innerhalb eines RAID-Stripes einer RAID-Anordnung liest, der innerhalb der Speichereinheiten 102 konfiguriert ist, und unter Verwendung der Paritätsdaten in Paritätsblöcken Fehler wie z.B. verworfene Schreibvorgänge, Medienfehler, Prüfsummenfehler, Paritätsinkonsistenzen usw. identifiziert.
-
In 1 wird das ML-Modul 120 getrennt von dem Fehlerprüfmodul 116 gezeigt. Bei weiteren Ausführungsformen können einige oder alle Komponenten des ML-Moduls 120 ein Teil des Fehlerprüfmoduls 116 sein.
-
2 veranschaulicht eine Ausführungsform einer Instanz von Speichereinheitsinformationen 200i für eine Speichereinheit 102i und enthält eine Speichereinheitskennung (ID) 202 einer Speichereinheit 102i; ein Ergebnis 204 der letzten Fehlerprüfung wie z.B. das Ergebnis der letzten Durchführung einer Fehlerprüfoperation durch das Fehlerprüfmodul 116, das keinen Fehler oder aber einen Typ von Fehler wie z.B. einen Verbindungsfehler, einen Hardware-Fehler, Erweiterungsfehler, die verworfene Verbindungen anzeigen, verworfene Schreibvorgänge, Stromversorgungsfehler usw.; einen Hersteller 206 der Speichereinheit 202; ein Alter 208, das als ein Zeitraum seit der ersten Verwendung oder als eine Anzahl von durchgeführten Schreibvorgängen gemessen werden kann, z.B. ein Verschleiß; eine Firmware-Version 210 der Speichereinheit 202; eine Rate von Leseoperationen 212 („OPS“) pro Sekunde, die für eine letzte Anzahl von Schreibvorgängen (N) gemessen wird, die in der Speichereinheit 202 erfasst werden; und eine Rate von Schreiboperationen 214 pro Sekunde, die für die letzte Anzahl von Schreibvorgängen (N) gemessen wird, die in der Speichereinheit 202 erfasst werden angeben kann. Die Speichereinheitsinformationen 200i enthalten statische Informationen wie z.B. 202, 206, 210 und dynamische Informationen, die fortlaufend aktualisiert werden können, z.B. in den Blöcken 204, 208, 212 und 214. So kann das Ergebnis 204 der letzten Fehlerprüfung zum Beispiel immer dann aktualisiert werden, wenn eine Fehlerprüfoperation in der Speichereinheit 102i durchgeführt wird, und die Leseoperationen 212 und Schreiboperationen 214 pro Sekunde sowie das Alter 208 können nach einer oder mehreren Lese-/Schreiboperationen aktualisiert werden.
-
3 veranschaulicht eine Instanz von Fehlerprüfinformationen 300i, die für ein Speicherelement wie z.B. eine RAID-Speicherbank von Speichereinheiten 102 oder eine einzige Speichereinheit 102i verwaltet wird und enthält: eine Speicherelement-ID 302 wie z.B. eine RAID-Speicherbank-ID oder eine Speichereinheit-ID 102i; einen Schreibzähler 304, der eine Anzahl von Schreibvorgängen angibt, die seit der letzten Fehlerprüfoperation in Bezug auf das Speicherelement 302 durchgeführt wurden; eine Fehlerprüfhäufigkeit 306, die eine Anzahl von Schreibvorgängen angibt, die stattfinden müssen, bevor eine Fehlerprüfoperation in dem Speicherelement 302 durchzuführen ist; einen letzten Ausgabewert 308, der durch das ML-Modul 120 für das Speicherelement 302 berechnet wird; und einen Fehlerprüfzähler 310, der eine Anzahl von Fehlerprüfoperationen angibt, die in dem Speicherelement 302 stattgefunden haben, ohne dass ein Fehler erkannt wurde.
-
Mit der Ausführungsform aus 3 kann eine Instanz der Fehlerprüfinformationen 300i für jede der Speichereinheiten 102i verwaltet werden, d.h. für die Speichereinheit spezifische Fehlerprüfinformationen, oder sie kann für alle Speichereinheiten in einem Speicherelement verwaltet werden, z.B. eine RAID-Speicherbank, bei der ein Schreibvorgang Daten auf mehrere der Speichereinheiten verteilt.
-
4 veranschaulicht eine Ausführungsform von Operationen, die in dem Fehlerprüfmodul 116 und/oder dem ML-Modul 120 durchgeführt werden, um das ML-Modul 120 in regelmäßigen Abständen auszuführen und zu ermitteln, ob eine Fehlerprüfoperation durchzuführen oder die Fehlerprüfhäufigkeit 306 anzupassen ist. Das ML-Modul 120 kann regelmäßig in bestimmten Abständen oder als Reaktion auf Ereignisse ausgeführt werden. Das ML-Modul 120 kann separat für jede der Speichereinheiten 102 oder für eine RAID-Speicherbank aufgerufen werden, um für alle Speichereinheiten 102 in einer RAID-Speicherbank (oder eine andere Art von Speicheranordnung) trainiert zu werden. Wenn (in Block 400) das ML-Modul 120 für ein Speicherelement aufgerufen wird, das eine einzige Speichereinheit 102i oder eine RAID-Speicherbank oder eine Speicheranordnung aus einer Mehrzahl von Speichereinheiten 102 aufweisen kann, werden (in Block 402) aus den Speichereinheitsinformationen 200i Eingaben 118 für eine oder mehrere Speichereinheiten 102i ermittelt, aus denen sich das Speicherelement zusammensetzt. Bei einer Ausführungsform, bei der die Fehlerprüfinformationen 300i für eine einzelne Speichereinheit 102i bereitgestellt werden, kann das ML-Modul 120 als Eingabe 118 die Speichereinheitsinformationen 200i für nur eine Speichereinheit 102i empfangen. Bei einer Ausführungsform, bei der die Fehlerprüfinformationen 300i für eine RAID-Anordnung von Speichereinheiten bereitgestellt werden, kann das ML-Modul 120 als Eingabe 118 die Speichereinheitsinformationen 200i für alle Speichereinheiten 102i in der RAID-Anordnung empfangen.
-
Das ML-Modul 120 wird (in Block 404) mit den ermittelten Eingaben 118 aufgerufen, um einen Ausgabewert 122 zu erzeugen, der eine Wahrscheinlichkeit angibt, dass in dem Speicherelement (d.h. Speichereinheit oder Speicher-/RAID-Anordnung) ein Fehler auftritt. Bei einer Ausführungsform kann der Ausgabewert 122 zwischen 0 und 1 liegen, wobei ein näher bei 0 liegender Wert eine geringere Wahrscheinlichkeit angibt, dass in dem Speicherelement ein Fehler auftritt, und wobei ein näher bei 1 liegender Wert eine höhere Wahrscheinlichkeit angibt, dass in dem Speicherelement ein Fehler auftritt.
-
Wenn (in Block 406) der Ausgabewert kleiner als ein unterer Grenzwert ist, was eine geringe Wahrscheinlichkeit eines Datenfehlers angeben kann, endet die Steuerung. Wenn (aufgrund der Nein-Verzweigung in Block 406) der Ausgabewert größer als der untere Grenzwert, aber (aufgrund der Nein-Verzweigung in Block 408) kleiner als ein oberer Grenzwert ist, kann die Fehlerprüfhäufigkeit 306 für das Speicherelement auf Grundlage des Ausgabewerts (in Block 410) angepasst werden. Bei einer Ausführungsform kann die Fehlerprüfhäufigkeit 306 angepasst werden, indem die Fehlerprüfhäufigkeit 306 auf eine feste Anzahl (N) von letzten Schreibvorgängen für die Fehlerprüfung dividiert durch den Ausgabewert gesetzt wird. Bei alternativen Ausführungsformen können andere Berechnungen und Variablen in Zusammenhang mit dem Ausgabewert in Betracht gezogen werden, um die Fehlerprüfhäufigkeit 306 anzupassen. Wenn (in Block 408) der Ausgabewert größer als ein oberer Grenzwert ist, was auf eine größere Wahrscheinlichkeit für einen Fehler in dem Speicherelement hinweist, fährt die Steuerung (in Block 412) mit 6 fort, um in Bezug auf die letzten N Schreibvorgänge in dem Speicherelement, z.B. einer einzigen Speichereinheit oder einer Speicherbank von Speichereinheiten 102, eine Fehlerprüfoperation wie z.B. eine Paritätsprüfung durchzuführen.
-
Mit der Ausführungsform aus 4 wird das ML-Modul 120 ausgeführt, um eine Wahrscheinlichkeit, dass ein Fehler in einem Speicherelement vorliegt, auf Grundlage von aktuellen Betriebsbedingungen der einen oder der mehreren Speichereinheiten in dem Speicherelement zu ermitteln. Diese Wahrscheinlichkeit beruht auf einem ML-Algorithmus, der die Wahrscheinlichkeit für einen Fehler auf Grundlage von aktuellen Bedingungen in den Speichereinheiten 102 sowie von statistischen und probabilistischen Modellen ermittelt, die solche Betriebsbedingungen der Speichereinheiten 102 zu einer Wahrscheinlichkeit für einen Fehler in Beziehung setzen. Somit wird eine Ermittlung einer Fehlerprüfhäufigkeit auf Grundlage der Wahrscheinlichkeit für einen Fehler angepasst, so dass die Fehlerprüfhäufigkeit 306 erhöht wird, d.h. die Häufigkeit von Schreibvorgängen verringert wird, wenn es eine größere Wahrscheinlichkeit für einen Fehler gibt, und die Fehlerprüfhäufigkeit 306 verringert wird, d.h. die Häufigkeit der Schreibvorgänge erhöht wird, wenn es eine geringere Wahrscheinlichkeit für einen Fehler in dem Speicherelement gibt. Da die Fehlerprüfoperationen wie z.B. eine Paritätsbereinigung für aus einer RAID-Anordnung bestehende Speicherelemente erhebliche Verarbeitungsressourcen verbrauchen, was zu einer Latenz bei anderen Operationen führen kann, verbessert ein Anpassen der Fehlerprüfhäufigkeit auf Grundlage von tatsächlichen Fehlerbedingungen die Zuweisung von Systemressourcen. Wenn es eine geringe Wahrscheinlichkeit für einen Fehler gibt, kann die Fehlerprüfhäufigkeit verringert werden, um die Anzahl von Fehlerprüfoperationen zu verringern und auf diese Weise Ressourcen freizugeben, um die Latenz für andere Operationen zu reduzieren. Wenn es jedoch eine höhere Wahrscheinlichkeit für einen Fehler gibt, kann die Fehlerprüfhäufigkeit erhöht werden, da die Wichtigkeit des Nutzens einer Korrektur von Datenfehlern die Nachteile der negativen Auswirkung einer erhöhten Latenz für andere Operationen ausgleicht. Somit optimiert die Verwendung des ML-Moduls 120 zum Anpassen der Fehlerprüfhäufigkeit die Zuweisung von Ressourcen zu Fehlerprüf- und anderen Operationen.
-
5 veranschaulicht eine Ausführungsform einer durch den Speicherverwalter 112 durchgeführten Operation, um eine Schreibanforderung an ein Speicherelement (Speichereinheit oder RAID-Speicherbank von Speichereinheiten) zu verarbeiten. Wenn (in Block 502) eine Schreibanforderung empfangen wird, wird die Schreibanforderung (in Block 504) verarbeitet, indem sie z.B. in eine Speichereinheit 102i geschrieben oder über eine Speicherbank von Speichereinheiten 102 hinweg gespeichert wird. Der Schreibzähler 304 für das Speicherelement wird (in Block 506) inkrementiert, und die Speichereinheitsinformationen 200i für die eine oder die mehreren Speichereinheiten in dem Speicherelement werden (in Block 508) aktualisiert, z.B. in den Feldern 208, 212, 214. Wenn (in Block 510) der Schreibzähler 304 größer als die oder gleich der Fehlerprüfhäufigkeit 306 ist, wird der Schreibzähler 304 (in Block 512) zurückgesetzt, und die Steuerung fährt (in Block 514) mit 6 fort, um in Bezug auf die letzten N Schreibvorgänge in dem Speicherelement, z.B. einer einzigen Speichereinheit oder einer Speicherbank von Speichereinheiten 102, eine Fehlerprüfoperation wie z.B. eine Paritätsprüfung durchzuführen. Wenn (in Block 510) der Schreibzähler kleiner als die Fehlerprüfhäufigkeit 306 ist, endet die Steuerung.
-
In 5 beruht die Ermittlung, ob eine Fehlerprüfung durchzuführen ist, darauf, ob der Schreibzähler 304 größer oder kleiner als die Fehlerprüfhäufigkeit 306 ist. Bei alternativen Ausführungsformen können andere Bedingungen oder Beziehungen zwischen dem Schreibzähler 304 und der Fehlerprüfhäufigkeit 306 verwendet werden, um zu ermitteln, ob eine Fehlerprüfung durchzuführen ist.
-
Mit der Ausführungsform aus 5 werden Fehlerprüfoperationen optimiert, indem auf Fehler geprüft wird, wenn der Schreibzähler die Fehlerprüfhäufigkeit 306 übersteigt, die auf Grundlage einer Ermittlung einer Wahrscheinlichkeit, dass ein Fehler in Bezug auf die Speichereinheit auftritt, angepasst wird.
-
6 veranschaulicht eine Ausführungsform von Fehlerprüfoperationen, die durch das Fehlerprüfmodul 116 durchgeführt werden, das in Block 412 aus 4 aufgerufen werden kann, wenn das ML-Modul 120 einen hohen Ausgabewert 122 erzeugt, und in Block 514 aus 5 aufgerufen werden kann, wenn der Schreibzähler 304 die Fehlerprüfhäufigkeit 306 übersteigt. Wenn (in Block 600) Fehlerprüfoperationen gestartet werden, wird der Fehlerprüfzähler 310 (in Block 602) inkrementiert, und es werden (in Block 604) Fehlerprüfoperationen für die feste Anzahl von letzten Schreibvorgängen (N) in dem Speicherelement (eine oder mehrere Speichereinheiten 102) durchgeführt. Die Fehlerprüfoperation kann eine Paritätsprüfung oder eine Operation zur Prüfung von Fehlerkorrekturcode aufweisen. Wenn (in Block 606) ein Fehler erkannt wird, wird der Fehlerprüfzähler 310, der eine Anzahl von aufeinanderfolgenden Fehlerprüfoperationen ohne Fehler angibt, (in Block 608) zurückgesetzt. Das Fehlerprüfmodul 116 führt (in Block 610) eine Fehlerbehandlungsoperation durch, um Fehler in Daten und/oder in Paritätsinformationen für die letzten geprüften N Schreibvorgänge zu korrigieren. Die Fehlerbehandlung kann Daten in den letzten N Schreibvorgängen aus den Paritätsinformationen korrigieren oder die Paritätsinformationen aus den Daten korrigieren. Nach Durchführung der Fehlerbehandlung fährt die Steuerung (in Block 612) mit 7 fort, um das ML-Modul 120 für das Speicherelement (Einheit oder Speicherbank von Speichereinheiten mit einem Fehler) mit einem gewünschten Ausgabewert zu trainieren, der einen höchsten Ausgabewert aufweist, welcher angibt, dass die Fehlerprüfoperation durchzuführen ist, z.B. einem gewünschten Ausgabewert von eins.
-
Wenn (in Block 606) kein Fehler erkannt wird, wird der Fehlerprüfzähler 310, der eine Anzahl von aufeinanderfolgenden Fehlerprüfoperationen ohne Fehler angibt, (in Block 614) inkrementiert. (In Block 616) wird ermittelt, ob der Fehlerprüfzähler 310 größer als ein oder gleich einem Fehlerfreiheits-Schwellenwert von Fehlerprüfoperationen ist. Wenn (in Block 616) der Fehlerprüfzähler den Fehlerfreiheits-Schwellenwert übersteigt, d.h. es gab einen Schwellenwert von Fehlerprüfoperationen ohne Fehler, wird der Fehlerprüfzähler 318 (in Block 618) zurückgesetzt, und die Steuerung fährt (in Block 620) mit 7 fort, um das ML-Modul 120 für ein Speicherelement (Einheit oder Speicherbank von Speichereinheiten mit einem Fehler) mit dem gewünschten Ausgabewert zu trainieren, der einen unteren Schwellenwert aufweist, welcher angibt, dass die Fehlerprüfoperation nicht durchzuführen ist, z.B. 0,001. Wenn (in Block 616) der Fehlerprüfzähler 310 den Fehlerfreiheits-Schwellenwert nicht übersteigt, endet die Steuerung, ohne das ML-Modul 120 neu zu trainieren, um den Ausgabewert zu senken, da es keine ausreichende Anzahl von fehlerfreien Fehlerprüfoperationen gab, um ein Anpassen des Ausgabewerts nach unten zu rechtfertigen.
-
Mit der Ausführungsform aus 6 wird das ML-Modul 120 nach Durchführung der Fehlerprüfung trainiert, um einen Ausgabewert zu erzeugen, der eine hohe Wahrscheinlichkeit für einen Fehler aus den aktuellen Betriebsbedingungen in dem Speicherelement angibt, die zu dem Fehler geführt haben, um die Wahrscheinlichkeit zu erhöhen, dass das ML-Modul 120 einen Fehler exakt vorhersagen kann, wenn in der Zukunft ähnliche Betriebsbedingungen vorliegen. Wenn nach einer vordefinierten Anzahl von Fehlerprüfoperationen kein Fehler aufgetreten ist, wird das ML-Modul 120 entsprechend neu trainiert, um einen Ausgabewert zu erzeugen, der eine geringe Wahrscheinlichkeit für einen Fehler aus den aktuellen Betriebsbedingungen in dem Speicherelement angibt, die dazu geführt haben, dass während mehrerer Fehlerprüfoperationen kein Fehler aufgetreten ist, um die Wahrscheinlichkeit zu erhöhen, dass das ML-Modul 120 exakt vorhersagen kann, dass kein Fehler auftritt, wenn in der Zukunft ähnliche Betriebsbedingungen vorliegen.
-
7 veranschaulicht eine Ausführungsform von Operationen, die durch das Fehlerprüfmodul 116 und/oder das ML-Modul 120 durchgeführt werden, um das ML-Modul 120 neu zu trainieren und einen gewünschten Ausgabewert zu erzeugen, z.B. einen höheren oder niedrigeren Ausgabewert, abhängig davon, ob mit einer Häufigkeit, die einem Schwellenwert entspricht, ein Fehler erkannt wurde (Block 610 aus 6) oder (in Block 620 aus 6) nicht erkannt wurde. Wenn (in Block 700) eine Operation zum Trainieren des ML-Moduls 120 gestartet wird, um einen gewünschten Ausgabewert für ein Speicherelement (Speichereinheit oder Speicherbank von Speichereinheiten) zu erzeugen, werden (in Block 702) die Eingaben aus den aktuellen Speichereinheitsinformationen 200i für die eine oder die mehreren Speichereinheiten in dem Speicherelement ermittelt, für die das ML-Modul 120 gerade trainiert wird. Das ML-Modul 120 wird (in Block 704) mit den ermittelten Eingaben ausgeführt, um einen aktuellen Ausgabewert 122 zu erzeugen. Eine Fehlerspanne des gewünschten Ausgabewerts und des aktuellen Ausgabewerts 122 wird (in Block 706) ermittelt. Das ML-Modul 120 wird (in Block 708) unter Verwendung der ermittelten Eingaben 118 und der Fehlerspanne sowie anderer Informationen trainiert, um den gewünschten Ausgabewert zu erzeugen. Das ML-Modul 120 kann unter Verwendung einer Rückwärtspropagierung trainiert werden, um die Fehlerspanne zu verringern und den gewünschten Ausgabewert zu erzeugen. Bei Ausführungsformen, in denen der Algorithmus des ML-Moduls 120 ein künstliches neuronales Netzwerk aufweist, kann eine Routine für die Rückwärtspropagierung verwendet werden, um das ML-Modul 120 neu zu trainieren und den gewünschten Ausgabewert 122 zu erzeugen. Bei anderen Arten von ML-Algorithmen wie z.B. Modellen nach Bayes können andere Methoden verwendet werden, um das ML-Modul 120 neu zu trainieren und den gewünschten Ausgabewert zu erzeugen. Die Einstellungen wie z.B. angepasste Gewichtungen und Bias-Werte der verborgenen Ebene des ML-Moduls 120 werden (in Block 710) dann für eine spätere Verwendung gespeichert.
-
Mit der Ausführungsform aus 7 wird das ML-Modul 120 neu trainiert, um einen gewünschten Ausgabewert zu erzeugen, der die aktuelle Wahrscheinlichkeit für einen Fehler auf Grundlage von aktuellen Attributen der Speichereinheit(en) widerspiegelt, so dass das ML-Modul eine Wahrscheinlichkeit für einen Fehler in dem Speicherelement, z.B. einer einzigen Speichereinheit oder einer Anordnung von Speichereinheiten, exakter vorhersagen kann.
-
In den Ausführungsformen aus den 1 bis 7 ermittelt das ML-Modul 120 eine Wahrscheinlichkeit für einen Fehler in einer oder mehreren Speichereinheiten für ein einziges Computersystem und eine Speicheranordnung 104 mit einer oder mehreren RAID-Speicherbänken.
-
8 veranschaulicht eine Ausführungsform von Operationen, die durch das Fehlerprüfmodul 116 und/oder das ML-Modul 120 durchgeführt werden, um einen erkannten Feldfehler wie z.B. einen Fehler aufgrund eines verworfenen Schreibvorgangs oder einen anderen unabhängig davon angetroffenen Fehler zu behandeln. Wenn eine Fehlerbehandlung (in Block 802) gestartet wird, wird ein Feldfehler wie z.B. ein verworfener Schreibvorgang (in Block 806) erkannt, und der Fehlerprüfzähler 310 wird (in Block 806) zurückgesetzt. Fehlerbehandlungsoperationen werden durchgeführt (in Block 808), um einen Fehler in Daten und/oder Paritätsinformationen für die letzten N Schreibvorgänge zu korrigieren oder die Speichereinheit 102 mit dem Fehler abzuschirmen und Daten in einer neuen Speichereinheit neu zu erstellen. Danach fährt die Steuerung (in Block 810) mit 7 fort, um das ML-Modul 120 für das Speicherelement (Einheit oder Speicherbank von Speichereinheiten mit dem Fehler) mit dem gewünschten Ausgabewert zu trainieren, der einen höchsten Ausgabewert aufweist, welcher angibt, dass die Fehlerprüfoperation aufgrund der Erkennung des Feldfehlers durchzuführen ist.
-
Mit der Ausführungsform aus 8 wird das ML-Modul trainiert, wenn ein Feldfehler außerhalb der Fehlerprüfoperation aus 6 erkannt wird, wodurch das ML-Modul 120 neu trainiert wird, um einen Wert auszugeben, der angibt, dass eine Fehlerprüfung durchzuführen ist, wenn die Eingaben 118 zum Zeitpunkt des erkannten Feldfehlers auftreten.
-
9 veranschaulicht eine zusätzliche Ausführungsform, wobei das in Bezug auf die 1 bis 8 beschriebene Datenverarbeitungssystem mit einer Mehrzahl von Speicher-Controllern 9001, 9002 ... 900m, die über ein Netzwerk 904 jeweils den Zugriff auf eine Speicheranordnung 9021, 9022 ... 902m verwalten, Daten austauscht. Das ML-Modul 120 empfängt Eingaben von einer oder mehreren Speichereinheiten in einer Speicheranordnung 9021, 9022 ... 902m, um einen Ausgabewert für den Speicher-Controller 9001, 9002 ... 900m zu berechnen, der die Speicheranordnung 9021, 9022 ... 902m verwaltet, und der verwendet wird, um zu ermitteln, ob eine Fehlerprüf- und Fehlerkorrekturoperation gestartet werden muss. Auf diese Weise kann das ML-Modul 120 häufiger und daher genauer sein, da es anhand von Speichereinheiten in mehreren Speicheranordnungen 9021, 9022 ... 902m trainiert wird. Obwohl das ML-Modul 120, die Speichereinheitsinformationen 200 und die Fehlerprüfinformationen 300 in dem Datenverarbeitungssystem 100 verwaltet werden können, kann das Fehlerprüfmodul 116 auch lokal in jedem der Speicher-Controller 9001, 9002 ... 900m verwaltet werden.
-
In der beschriebenen Ausführungsform können die Variablen „i, m, n“ usw. bei Verwendung mit verschiedenen Elementen dasselbe oder ein anderes Vorkommen dieses Elements bezeichnen.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit darauf durch einen Computer lesbaren Programmanweisungen enthalten, 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 eine Anweisungsausführungseinheit enthalten 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 RAM, ein ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer 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 Lichtwellenleiterkabel 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 Weitverkehrsnetzwerk 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 Java, 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 Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten 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 Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA) 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 Blockschaubilder 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 Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern 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 des Ablaufplans und/oder des Blockschaubilds 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 der Ablaufpläne und/oder Blockschaubilder 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 durch einen Computer umgesetzten 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 Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaubilder 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 Blockschaubildern 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 Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern 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.
-
Die Rechenkomponenten aus den 1 und 8 mit den Hosts 105, dem Datenverarbeitungssystem 100 und den Speicher-Controllern 9001, 9002...900m können in einem oder mehreren Computersystemen wie z.B. dem in 10 gezeigten Computersystem realisiert werden. Das Computersystem/der Server 1002 lässt sich im allgemeinen Zusammenhang von Anweisungen beschreiben, die durch ein Computersystem ausführbar sind, wie z.B. Programmmodule, die durch ein Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und dergleichen enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 1002 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden werden. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien wie beispielsweise Arbeitsspeichereinheiten befinden.
-
10 zeigt das Computersystem/den Server 1002 in Gestalt einer Universal-Datenverarbeitungseinheit. Die Komponenten des Computersystems/Servers 1002 können eine(n) oder mehrere Prozessoren oder Verarbeitungseinheiten 1004, einen Systemarbeitsspeicher 1006 und einen Bus 1008 enthalten, der verschiedene Systemkomponenten wie z.B. den Systemarbeitsspeicher 1006 mit dem Prozessor 1004 verbindet, ohne jedoch darauf beschränkt zu sein. Der Bus 1008 steht für mindestens eine von beliebigen mehreren Arten von Busstrukturen, z.B. ein Arbeitsspeicherbus oder ein Arbeitsspeicher-Controller, ein Peripheriebus, ein Accelerated Graphics Port (AGP) und ein Prozessor- oder lokaler Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet werden kann. Beispielhaft und nicht als Beschränkung zu verstehen, enthalten derartige Architekturen einen ISA-Bus (Industry Standard Architecture), einen MCA-Bus (Micro Channel Architecture), einen EISA-Bus (Enhanced ISA), einen lokalen VESA-Bus (Video Electronics Standards Association) und einen PCI-Bus (Peripheral Component Interconnect).
-
Das Computersystem/der Server 1002 enthält üblicherweise eine Vielfalt von Medien, die durch ein Computersystem lesbar sind. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 1002 zugreifen kann, und sowohl flüchtige als auch nicht flüchtige, entfernbare als auch nicht entfernbare Medien enthalten.
-
Der Systemarbeitsspeicher 1006 kann ein durch ein Computersystem lesbares Medium in Form eines flüchtigen Arbeitsspeichers wie z.B. eines Direktzugriffsspeichers 1010 (RAM) und/oder eines Cache-Arbeitsspeichers 1012 enthalten. Das Computersystem/der Server 1002 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten. Nur um ein Beispiel zu geben, kann ein Speichersystem 1013 zum Lesen von und Schreiben auf ein nicht entfernbares, nicht flüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise als eine „Festplatte“ bezeichnet wird). Obwohl hier nicht abgebildet, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine entfernbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine entfernbare, nicht flüchtige optische Platte, z.B. ein CD-ROM, ein DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In diesen Fällen kann jedes Laufwerk über eine oder mehrere Datenmedienschnittstellen mit dem Bus 1008 verbunden werden. Wie weiter unten ausführlicher dargestellt und beschrieben, kann der Arbeitsspeicher 1006 mindestens ein Programmprodukt mit einem Satz von (z.B. mindestens einem) Programmmodulen enthalten, die konfiguriert werden, um die Funktionen von Ausführungsformen der Erfindung durchzuführen.
-
Ein Programm/Dienstprogramm 1014 mit einem Satz von (mindestens einem) Programmmodulen 1016 kann beispielsweise und ohne als Beschränkung verstanden zu werden, im Arbeitsspeicher 1006 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten oder eine Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung enthalten. Die Komponenten des Computers 1002 können als Programmmodule 1016 realisiert werden, die im Allgemeinen die Funktionen und/oder Verfahrensweisen von Ausführungsformen der hier beschriebenen Erfindung ausführen. Die Systeme aus 1 können in einem oder mehreren Computersystemen 1002 realisiert werden, wobei die Computersysteme über ein Netzwerk Daten austauschen können, wenn sie in mehreren Computersystemen 1002 realisiert werden.
-
Das Computersystem/der Server 1002 kann zudem mit einer oder mehreren externen Einheiten 1018 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 1020 usw.; mit einer oder mehreren Einheiten, die einem Benutzer gestatten, mit dem Computersystem/Server 1002 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 1002 ermöglichen, mit einer oder mehreren anderen Datenübertragungseinheiten Daten auszutauschen. Eine derartige Datenübertragung kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 1022 erfolgen. Des Weiteren kann das Computersystem/der Server 1002 über einen Netzwerkadapter 1024 mit einem oder mehreren Netzwerken Daten austauschen, z.B. mit einem lokalen Netzwerk (LAN), einem Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet). Wie dargestellt, tauscht der Netzwerkadapter 1024 über den Bus 1008 Daten mit den anderen Komponenten des Computersystems/Servers 1002 aus. Dabei sollte klar sein, dass - obwohl sie hier nicht abgebildet sind - auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 1002 verwendet werden könnten. Beispiele hierfür sind, ohne darauf beschränkt zu sein, Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerksstapel, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
-
Sofern nicht ausdrücklich anderweitig angegeben, bedeuten die Begriffe „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, „eine oder mehrere Ausführungsformen“, „manche Ausführungsformen“ und „eine einzige Ausführungsform“ „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)“.
-
Sofern nicht ausdrücklich anderweitig angegeben, bedeuten die Begriffe „enthaltend“, „aufweisend“, „mit“ und Abwandlungen hiervon „enthaltend, ohne jedoch darauf beschränkt zu sein“.
-
Sofern nicht ausdrücklich anderweitig angegeben, bedeutet die nummerierte Auflistung von Elementen nicht, dass sich eines oder alle dieser Elemente wechselseitig ausschließen.
-
Sofern nicht ausdrücklich anderweitig angegeben, bedeuten die Begriffe „ein/eine/eines“ und „der/die/das“ „ein oder mehrere“.
-
Sofern nicht ausdrücklich anderweitig angegeben, müssen Einheiten, die untereinander Daten austauschen, nicht in ununterbrochenem Datenaustausch stehen. Zudem können Einheiten, die untereinander Daten austauschen, direkt oder indirekt über ein oder mehrere zwischengeschaltete Elemente Daten austauschen.
-
Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die untereinander Daten austauschen, bedeutet nicht, dass alle derartigen Komponenten notwendig sind. Vielmehr wird eine Vielzahl von optionalen Komponenten beschrieben, um die breite Palette von möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Wenn hier eine einzige Einheit oder ein einziger Gegenstand beschrieben werden, sollte offensichtlich sein, dass anstelle einer einzigen Einheit/eines einzigen Gegenstands auch mehrere Einheiten/Gegenstände verwendet werden können (unabhängig davon, ob diese zusammenwirken). Wenn hier mehrere Einheiten oder Gegenstände beschrieben werden (unabhängig davon, ob sie zusammenwirken), sollte des Weiteren offensichtlich sein, dass anstelle der mehreren Einheiten oder Gegenstände eine einzige Einheit/ein einziger Gegenstand verwendet werden kann bzw. dass anstelle der gezeigten Anzahl von Einheiten oder Programmen eine andere Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten realisiert werden, die nicht ausdrücklich als mit einer solchen Funktionalität/solchen Merkmalen ausgestattet beschrieben werden. Somit müssen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht beinhalten.
-
Die obige Beschreibung der verschiedenen Ausführungsformen der Erfindung dient zur Veranschaulichung und Beschreibung. Sie erhebt nicht den Anspruch, vollständig zu sein oder die Erfindung auf die präzise Form, wie sie hier offenbart wird, zu beschränken. In Zusammenhang mit der obigen Lehre sind zahlreiche Änderungen und Abwandlungen möglich. Der inhaltliche Umfang der Erfindung soll nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die hier beigefügten Ansprüche beschränkt werden. Die obige Beschreibung sowie die obigen Beispiele und Daten stellen eine umfassende Erläuterung der Herstellung und Verwendung der Gesamtheit der Erfindung bereit. Da viele Ausführungsformen der Erfindung möglich sind, ohne vom inhaltlichen Umfang der Erfindung abzuweichen, wird die Erfindung durch die nachfolgend angehängten Ansprüche definiert.