-
Hintergrund
-
Die vorliegende Erfindung bezieht sich auf Datenspeicher und im Besonderen auf das Lesen von Daten von Band mit Hilfe einer rekonstruierenden Fehlerbehebungsprozedur (ERP bzw. Error Recovery Procedure), um Backhitching (schnelles Rückspulen eines Bandes) während des Lesens von Daten zu reduzieren.
-
Band- und optische Speichergeräte verwenden sehr leistungsstarke Fehlerkorrekturcodes, wie Produkt-Codes oder verkettete Codes zusammen mit Interleaving, um einen sehr hohen Grad an Datenintegrität bereitzustellen. Diese Fehlerkorrekturschemas verwenden in der Regel zwei Fehlerkorrekturcodes (ECCs, Error Correction Codes) als Komponenten-Codes. Zwei wichtige Maße der Fehlerhäufungs(Burst Error)-Performance für mit diesen Schemas geschützte Bandspeichersysteme sind: 1) Breite eines fehlerhaften Streifens, der noch korrigiert werden kann (dies wird auch als „Broken Track Correction”-Fähigkeit bezeichnet), und 2) Länge eines fehlerhaften Streifens, der noch korrigiert werden kann. Ein Broken Track bezieht sich im Allgemeinen auf eine Spur (Track), die aufgrund eines Medienproblems und/oder eines Problems mit dem Readback-Kanal nicht korrekt gelesen werden kann, zum Beispiel da der Kanal Daten aufgrund eines Ausrichtungsproblems oder eines systematischen Problems mit dem Kopf nicht korrekt erfasst.
-
Wenn ein Bandlaufwerk Daten von einem Band liest, oder wenn ein Bandlaufwerk Daten auf ein Band schreibt, wird eine Dateneinheit gelesen oder geschrieben, die als ein „Datensatz” bezeichnet wird. Der Datensatz wird mit verschachtelten Gruppen von Codewörtern kodiert, die in einer ECC-kodierten Matrix der Größe M Byte × N Byte (M × N) angeordnet sind, und wird dann gemäß dem Stand der Technik wie in 1 dargestellt auf Band geschrieben. In dieser Matrix 150 gibt es zwei Kodierungslevel. Der erste Kodierungslevel verwendet die Matrixzeilen 102. Jede Zeile 102 der Matrix enthält die C1-ECC-Zeilenparität 106, die p Bytes von C1-ECC zu den n Bytes der Benutzerdaten hinzufügt (z. B. N = n + p Bytes). Der zweite Kodierungslevel, die C2-ECC-Spaltenparität 108, fügt q Bytes von C2-ECC zu jeder Matrixspalte 104 hinzu. Wenn zum Beispiel q = 12, dann werden durch das Hinzufügen von 12 Bytes von C2-ECC zur Matrix 150 12 Zeilen hinzugefügt (zum Beispiel M = m + q Bytes).
-
Wenn der Datensatz vom Band mit einer hohen Fehlerratenbedingung gelesen wird, ist C1/C-ECC nicht dazu geeignet, die gelesenen Daten zu korrigieren. Zum Beispiel ist in einigen Ansätzen die C1-Kodierung dazu geeignet, 10 fehlerhafte Bytes zu korrigieren, und die C2-Kodierung ist dazu geeignet, 20 fehlerhafte Bytes zu korrigieren. Wenn die fehlerhaften Bytes nicht durch diese Korrekturleistung korrigiert werden können, dann können die Daten nicht von dem Band gelesen werden. In diesem Szenario versucht das Bandlaufwerk dann eine ERP, um den Datensatz mit einer anderen Hardware-Einstellung erneut von Band zu lesen (zum Beispiel mit einer geänderten Bandgeschwindigkeit). ERP wird wiederholt, bis die C1/C2-Kodierung in der Lage ist, die Daten zu korrigieren, oder bis der Zähler der ERP-Wiederholungsversuche einen Grenzwert überschreitet. Wenn der Zähler der Wiederholungsversuche den Grenzwert überschreitet, dann berichtet das Bandlaufwerk für den Lesevorgang einen dauerhaften Fehler.
-
Bei diesem herkömmlichen Ansatz treten verschiedene Probleme auf. Als Erstes, wenn die Fehlerrate durchgängig hoch ist, können C1 und C2 die Daten nicht korrigieren und das Bandlaufwerk kann den Datensatz nicht lesen, was in keinster Weise wünschenswert ist. Zweitens, kann in Bandbereichen, in denen die Fehlerrate aufgrund einer Medienbeschädigung, eines unvollständigen Schreibvorgangs, von Daten, die in älteren Formaten geschriebenen wurden usw. hoch ist, das Laufwerk keine Lesevorgänge mehr durchführen. Drittens können in diesen Fällen viele Datensätze in der Umgebung ERP erfordern. Wenn ein Datensatzfehler mit vielen erneuten Versuchen (vielen Iterationen von ERP) wieder herstellbar ist, kann der nächste Datensatz wahrscheinlich ähnliche wiederholte Versuche zum erfolgreichen Lesen der Daten erfordern. Durch diese Wiederherstellungsvorgänge benötigt das Bandlaufwerk eine lange Zeit zum Lesen der Daten aufgrund der mehrfachen Backhitches, die zum erneuten Lesen der Daten von Band erforderlich sind, was die Host-Performance verschlechtert und die Medien auch weiterhin beschädigen kann.
-
Dementsprechend wäre es vorteilhaft, eine Datenwiederherstellungsprozedur zu haben, die die Effizienz des Lesens gespeicherter Daten vom Band erhöht.
-
Verwandte Technologien sind in folgenden Dokumenten beschrieben:
Das Dokument
DE 10 2007 046 789 A1 beschreibt ein n-dimensionales interaktives ECC-Verfahren und eine Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen. Die Daten, die von dem Speichermedium gelesen werden, werden als mehrdimensionale Datenstrukturen dargestellt, und die Fehlerbehebungsprozedur wird für jede Dimension der Datenstruktur vorgenommen.
-
Das Dokument
EP 1 758 023 B1 beschreibt eine Datenfehlererkennung während eines Schreibens auf ein Medium. Die Datenfehlerkennung weist ein Speichern von Daten in einem ersten Datenpuffer auf, die auf ein Medium geschrieben werden sollen und eine erste digitale Signatur der Daten. Wenn die erste digitale Signatur einer zweiten digitalen Signatur von Daten entspricht, die von dem ersten Puffer gelesen werden, wird eine komprimierte Form der Daten, die aus dem ersten Puffer gelesen werden, in ein FIFO gespeichert.
-
Das Dokument
CN 101 101 790 A beschreibt ein Verfahren zur Korrektur eines ECC-Wertes und vergleicht diesen Wert mit dem ECC-Wert der entsprechenden Seite. Wenn der Vergleich einen 1-Bit-Fehler auf der entsprechenden Seite findet, korrigiert das vorgeschlagene Verfahren diesen Fehler und erneuert eine entsprechende Fehler-Seitenliste.
-
Das Dokument
US 2008/0222490 A1 beschreibt ein Verfahren und ein System für eine dynamische Anpassung einer ECC-Code-Rate. In einem Ausführungsbeispiel wird die Code-Rate von einer ersten Code-Rate zu einer zweitern Code-Rate in Antwort auf eine Änderung in einer Bit-Fehler-Rate geändert.
-
Das Dokument
EP 2 199 911 B1 beschreibt einen Flash-Memory-Controller und ein entsprechendes Verfahren. Das Verfahren nutzt den ECC-Controller, der einen ECC-Codierer, einen ECC-Konstruktor und einen ECC-Decoder aufweist.
-
Kurzzusammenfassung
-
Die oben angesprochene wünschenswerte Datenwiederherstellungsprozedur samt entsprechendem System und Bandlaufwerk wird von den unabhängigen Ansprüchen 1, 7, 13 und 20 beschrieben. Vorteilhafte Ausführungsformen werden von den jeweils abhängigen Ansprüchen beschrieben.
-
Andere Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung ersichtlich, die in Verbindung mit den Zeichnungen beispielhaft die Prinzipien der Erfindung veranschaulicht.
-
Kurzbeschreibung der verschiedenen Ansichten der Zeichnungen
-
1 zeigt eine Matrix oder einen Array eines Datensatzes gemäß dem Stand der Technik.
-
2A veranschaulicht ein Netzwerkspeichersystem gemäß einer Ausführungsform.
-
2B veranschaulicht ein vereinfachtes Bandlaufwerk eines bandbasierten Datenspeichersystems gemäß einer Ausführungsform.
-
3A–3B zeigen ein Verfahren zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden Fehlerbehebungsprozedur (ERP) für mehrere Datensätze gemäß einer Ausführungsform.
-
4 zeigt ein Verfahren zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform.
-
5 zeigt ein Verfahren zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform.
-
6 zeigt ein Verfahren gemäß einer Ausführungsform.
-
Detaillierte Beschreibung
-
Die folgende Beschreibung erfolgt nur zum Zwecke der Veranschaulichung der allgemeinen Prinzipien der vorliegenden Erfindung und ist nicht dazu gedacht, die in diesem Dokument beanspruchten Konzepte der Erfindung einzuschränken. Weiterhin können bestimmte in diesem Dokument beschriebene Merkmale in Kombination mit anderen beschriebenen Merkmalen in jeder der verschiedene möglichen Kombinationen und Vertauschungen verwendet werden.
-
Sofern in diesem Dokument nicht anders angegeben, haben alle Begriffe die breitest mögliche Interpretation einschließlich von Bedeutungen, die aus der Beschreibung impliziert ist, wie auch Bedeutungen, die von Fachleuten verstanden werden und/oder wie sie in Wörterbüchern, Verträgen usw. definiert sind.
-
Es muss auch hervorgehoben werden, dass wie in der Beschreibung und den Ansprüchen im Anhang verwendet, die Singularformen „ein”, „eine”, „einer” und „der/die das“ auch die Pluralbezeichnungen enthalten, sofern nicht anders angegeben. Es versteht sich, dass der Begriff „aufweist“ oder „aufweisend“ bei der Verwendung in dieser Beschreibung zur Angabe des Vorhandenseins angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten verwendet wird, dies aber nicht das Vorhandensein oder das Hinzufügen eines oder mehrerer Merkmale, einer oder mehrerer Ganzzahlen, eines oder mehrerer Schritte, einer oder mehrerer Operationen, eines oder mehrerer Elemente, einer oder mehrerer Komponenten und/oder Gruppen hiervon ausschließt.
-
In einer allgemeinen Ausführungsform weist ein System zum Lesen von Daten von einem Medium Logik auf, die dazu ausgebildet ist, eine Mehrzahl von Datensätzen von einem Medium einmal oder mehrere Male zu lesen, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen einen Datensatz bilden, wobei während jedem Lesevorgang von wenigstens einem der Mehrzahl der Datensätze Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze besser von dem Medium zu lesen; Logik, die dazu ausgebildet ist, einen oder mehrere der Bereiche von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer zu speichern, wenn der eine oder die mehreren Bereiche mit dem C1-Fehlerkorrekturcode (ECC) korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden; Logik, die dazu ausgebildet ist, für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon zu aggregieren, um eine oder mehrere zusammengesetzte Datensätze zu bilden; Logik, die dazu ausgebildet ist, zu bestimmen, ob C2-ECC dazu in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; Logik, die dazu ausgebildet ist, beliebige noch vorhandene Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC zu korrigieren, um einen korrigierten oder mehrere korrigierte Datensätze zu bilden, und den einen oder die mehreren korrigierten Datensätze an einen Host zu senden, wenn C2-ECC in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; und Logik, die dazu ausgebildet ist, wenigstens einen ersten nicht korrigierten Datensatz von dem Medium unter Verwendung einer anderen Einstellung in einer Fehlerbehebungsprozedur (ERP) erneut zu lesen, wenn ein Fehler im ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist, oder ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist, wobei der erste nicht korrigierte Datensatz vor einem beliebigen anderen nicht korrigierten Datensatz auf dem Medium in einer Leserichtung angeordnet ist.
-
In einer anderen allgemeinen Ausführungsform weist ein Bandlaufwerk einen Datenpuffer mit einem reservierten Datenpuffer auf; Logik, die dazu ausgebildet ist, einen anfänglichen Fehlerdatensatz gefolgt von einer Mehrzahl von Datensätzen nach dem anfänglichen Fehlerdatensatz einmal oder mehrere Male mit verschiedenen Einstellungen von einem Medium zu lesen, bis: alle Zeilen des anfänglichen Fehlerdatensatzes in einem reservierten Datenpuffer zusammengesetzt sind und keine nicht korrigierbaren Fehler übrig bleiben, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von zusammengesetzten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde; Logik, die dazu ausgebildet ist, nach jedem erneutem Lesen des anfänglichen Fehlerdatensatzes und von einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen Fehlerdatensatz in der gleichen Vorwärtsbewegung Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder mit C1-ECC korrigierbar sind, in den jeweiligen reservierten Datenpufferbereichen zu speichern, sofern eine passende Zeile nicht bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist; Logik, die dazu ausgebildet ist, den anfänglichen Fehlerdatensatz aus den für den anfänglichen Fehlerdatensatz im reservierten Datenpuffer gespeicherten Zeilen zusammenzusetzen, um einen anfänglichen zusammengesetzten Datensatz zu bilden; Logik, die dazu ausgebildet ist, beliebige noch vorhandene Fehler in dem anfänglichen zusammengesetzten Datensatz mit C2-ECC zu korrigieren, um einen anfänglichen rekonstruierten Datensatz zu bilden; und Logik, die dazu ausgebildet ist, den anfänglichen rekonstruierten Datensatz an einen Host zu senden und/oder den anfänglichen rekonstruierten Datensatz in einem Speicher zu speichern.
-
Gemäß einer weiteren allgemeinen Ausführungsform weist ein Verfahren zum Lesen von Daten von einem Medium das Lesen einer Mehrzahl von Datensätzen von einem Medium einmal oder mehrere Male auf, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen den Datensatz bilden, wobei während jedes Lesevorgangs von wenigstens einem der Mehrzahl der Datensätze Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze von dem Medium besser zu lesen; das Speichern von einem oder mehreren Bereichen von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer, wenn der eine oder die mehreren Bereiche mit dem C1-ECC korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden; Aggregieren für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, aller gespeicherten Bereiche davon, um einen oder mehrere zusammengesetzte Datensätze zu bilden; das Bestimmen, ob C2-ECC dazu in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; Korrigieren jeglicher noch vorhandener Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC, um einen oder mehrere korrigierte Datensätze zu bilden, und Senden des einen oder der mehreren korrigierten Datensätze an einen Host, wenn C2-ECC in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; und erneutes Lesen von wenigstens einem ersten nicht korrigierten Datensatz von dem Medium unter Verwendung einer anderen Einstellung in einer ERP, wenn ein Fehler im ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist oder ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist, wobei der erste nicht korrigierte Datensatz vor einem beliebigen anderen nicht korrigierten Datensatz auf dem Medium in einer Leserichtung angeordnet ist.
-
In wiederum einer anderen allgemeinen Ausführungsform weist ein Verfahren zum Lesen von Daten von einem Medium ein Lesen eines anfänglichen Fehlerdatensatzes gefolgt von einer Mehrzahl von Datensätzen nach dem anfänglichen Fehlerdatensatz von einem Medium einmal oder mehrere Male mit verschiedenen Einstellungen auf bis: alle Zeilen des anfänglichen Fehlerdatensatzes in einem reservierten Datenpuffer zusammengesetzt sind und keine nicht korrigierbaren Fehler übrig bleiben, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von zusammengesetzten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde; Speichern nach jedem erneutem Lesen des anfänglichen Fehlerdatensatzes und einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen Fehlerdatensatz in der gleichen Vorwärtsbewegung von Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder mit C1-ECC korrigierbar sind, in den jeweiligen reservierten Datenpufferbereichen, sofern eine passende Zeile nicht bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist; Zusammensetzen des anfänglichen Fehlerdatensatzes aus den für den anfänglichen Fehlerdatensatz im reservierten Datenpuffer gespeicherten Zeilen, um einen anfänglichen zusammengesetzten Datensatz zu bilden; Korrigieren jeglicher verbleibender Fehler in dem anfänglichen zusammengesetzten Datensatz mit C2-ECC, um einen anfänglichen rekonstruierten Datensatz zu bilden; und Senden des anfänglichen rekonstruierten Datensatzes an einen Host und/oder Speichern des anfänglichen rekonstruierten Datensatzes in einem Speicher.
-
Wie Fachleute verstehen werden, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer reinen Hardwareausführungsform annehmen, einer reinen Softwareausführungsform (einschließlich Firmware, speicherresidenter Software, Microcode usw.) oder einer Ausführungsform, die Software- und Hardwareaspekte vereint, die im Allgemeinen hier alle als „Logik“, „Schaltkreis“, „Modul“ oder „System“ bezeichnet werden können. Weiterhin können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem computerlesbaren Medium oder mehreren computerlesbaren Medien, die computerlesbaren Programmcode enthalten, ausgeführt ist.
-
Es kann jede Kombination aus einem computerlesbaren Medium oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne jedoch darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung, -einrichtung oder jede geeignete Kombination der Vorherigen sein. Zu den weiteren speziellen Beispielen (eine nicht erschöpfende Liste) von computerlesbaren Speichermedien gehören folgende: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, Direktzugriffsspeicher (RAM bzw. Random Access Memory), Festspeicher (ROM bzw. Read-only Memory), ein löschbarer programmierbarer Festspeicher (EPROM- oder Flash-Speicher), eine Glasfaser, ein tragbarer Compact Disc-Festspeicher (CD-ROM bzw. Compact Disc Read-only Memory), eine optische Speichereinrichtung, eine magnetische Speichereinrichtung oder jede geeignete Kombination der Vorherigen. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einem Anweisungsausführungseinrichtung enthalten oder speichern kann.
-
Zu den computerlesbaren Signalmedien kann ein weitergeleitetes Datensignal mit computerlesbarem Programmcode darin gehören, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Solch ein weitergeleitetes Signal kann eine beliebige einer Mehrzahl an Formen annehmen, einschließlich, ohne jedoch darauf beschränkt zu sein, eine elektromagnetische Form, eine optische Form oder jede geeignete Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einer Anweisungsausführungseinrichtung kommunizieren, weiterleiten oder transportieren kann.
-
Auf einem computerlesbaren Medium enthaltener Programmcode kann mit jedem geeigneten Medium übertragen werden, darunter, ohne darauf beschränkt zu sein, Funk, Kabel, Glasfaser, HF usw. oder jede geeignete Kombination aus den Vorherigen.
-
Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination einer oder mehreren Programmiersprachen geschrieben sein, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen, wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann ganz auf dem Computer des Benutzers ausgeführt werden, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder ganz auf dem entfernten Computer oder Server. In dem letzteren Szenario kann der entfernte Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN bzw. Local Area Network) oder ein Weitverkehrsnetzwerk (WAN bzw. Wide Area Network) oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet mit einem Internetdienstanbieter).
-
Aspekte der vorliegenden Erfindung werden im Folgenden mit Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammabbildungen und/oder der Blockdiagramme und Kombinationen der Blöcke in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines allgemeinen Standardcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der im Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegebenen Funktionen/Vorgänge erstellen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die auf dem computerlesbaren Medium gespeicherten Anweisungen ein Produkt erzeugen, das Anweisungen aufweist, die die Funktion/den Vorgang implementieren, der/die im Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegeben sind.
-
Die Computerprogrammanweisungen können auch auf einem Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einrichtungen geladen werden, um die Durchführung einer Reihe operativer Schritte auf dem Computer, anderen programmierbaren Vorrichtungen oder anderen Einrichtungen zu veranlassen, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder der programmierbaren Vorrichtung ausgeführten Anweisungen die Prozesse zum Implementieren der Funktionen/Vorgänge bereitstellen, die in dem Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegeben sind.
-
Das Flussdiagramm und die Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Vorgang möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder in den Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. Es ist ebenso hervorzuheben, dass in einigen alternativen Implementierungen die im Block angegebenen Funktionen nicht in der in den FIG. angegeben Reihenfolge auftreten können. Zum Beispiel können in Abhängigkeit von der beinhalteten Funktionalität zwei aufeinanderfolgende Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist auch hervorzuheben, dass jeder Block in den Blockdiagramm- und/oder Flussdiagrammabbildungen und die Kombinationen der Blöcke in den Blockdiagramm- und/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert werden können.
-
Es wird nun auf 2A Bezug genommen. Ein Schema eines Netzwerkspeichersystems 10 wird gemäß einer Ausführungsform dargestellt. Das Netzwerkspeichersystem 10 ist nur ein Beispiel eines geeigneten Speichersystems und soll keine Einschränkung des Verwendungsbereichs oder der Funktionalität der Ausführungsformen der in dem vorliegenden Dokument beschriebenen Erfindung darstellen. Unabhängig davon ist das Netzwerkspeichersystem 10 dazu geeignet, implementiert zu werden und/oder eine beliebige der oben beschriebenen Funktionalitäten auszuführen.
-
Im Netzwerkspeichersystem 10 gibt es ein Computersystem/einen Server 12, das/der mit vielen anderen allgemeinen oder speziellen Computingsystem-Umgebungen oder -konfigurationen betriebsfähig ist. Beispiele bekannter Computing-Systeme, -Umgebungen und/oder -Konfigurationen, die für die Verwendung mit dem Computersystem/Server 12 geeignet sein können, umfassen, ohne darauf beschränkt zu sein, Personalcomputersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Hand-held- oder Laptop-Geräte, Multiprozessor-systeme, Mikroprozessor-basierte Systeme, Settop-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computingumgebungen, die beliebige der obigen Systeme oder Geräte enthalten, und Ähnliches.
-
Das Computersystem/der Server 12 kann im allgemeinen Kontext von vom Computer ausführbaren Anweisungen beschrieben werden, wie Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können die Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakten Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, in denen Aufgaben durch Verarbeitungsgeräte an Fernstandorten ausgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Cloud-Computingumgebung können sich die Programmmodule auf Speichermedien von sowohl lokalen wie entfernten Computersystemen, einschließlich Arbeitsspeicher-Speichergeräten, befinden.
-
Wie in 2A dargestellt, wird ein Computersystem/ein Server 12 im Netzwerkspeichersystem 10 als eine allgemeine Computingeinrichtung dargestellt. Die Komponenten des Computersystems/Servers 12 können aufweisen, ohne jedoch darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18, der verschiedene Systemkomponenten einschließlich des Systemspeichers 28 mit dem Prozessor 16 verbindet.
-
Der Bus 18 stellt einen oder mehrere eines beliebigen von verschiedenen Typen von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen Peripheriebus, einen beschleunigten Grafikport (AGP bzw. Accelerated Graphics Port) und einen Prozessor oder lokalen Bus, unter Verwendung beliebiger von verschiedenen Busarchitekturen. Zu diesen Architekturen gehören zum Beispiel, ohne darauf beschränkt zu sein, der Industry Standard Architecture(ISA)-Bus, der Micro-Kanal-Architecture(MCA)-Bus, der Enhanced-ISA(EISA)-Bus, der lokale Video-Electronics-Standards-Association(VESA)-Bus und der Peripheral-Component-Interconnects(PCI)-Bus.
-
Das Computersystem/der Server 12 enthält üblicherweise eine Mehrzahl von computerlesbaren Medien. Solche Medien können beliebige verfügbare Medien sein, auf die ein Computersystem/Server 12 zugreifen kann, und dies umfasst sowohl flüchtige wie auch nicht-flüchtige Medien, entfernbare und nicht-entfernbare Medien.
-
Der Systemspeicher 28 kann von einem Computersystem lesbare Medien in der Form von flüchtigem Speicher, wie Direktzugriffsspeicher (RAM) 30 und/oder Cachespeicher 32 aufweisen. Das Computersystem/der Server 12 kann weiterhin andere entfernbare/nicht-entfernbare, flüchtige/nicht-flüchtige Computersystem-Speichermedien beinhalten. Nur als Beispiel kann das Speichersystem 34 zum Lesen von und zum Schreiben auf nicht-entfernbare, nicht-flüchtige Magnetmedien – nicht dargestellt und in der Regel als „Festplatte” bezeichnet – vorgesehen werden, die in einem HDD betrieben werden können. Wenngleich nicht dargestellt, kann ein magnetisches Plattenlaufwerk zum Lesen von und zum Schreiben auf ein entfernbares, nicht-flüchtiges magnetisches Plattenmedium (wie z. B. einer „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf ein entfernbares, nicht-flüchtiges optisches Plattenmedium, wie eine CD-ROM, DVD-ROM oder ein anderes optisches Medium vorgesehen sein. In solchen Fällen kann ein jedes mit dem Bus 18 über eine oder mehrere Datenmedienschnittstellen verbunden sein. Wie im Folgenden weiter dargestellt und beschrieben, kann ein Speicher 28 wenigstens ein Programmprodukt mit einer Gruppe von (z. B. wenigstens einem) Programmmodulen enthalten, die dazu ausgebildet sind, die in diesem Dokument beschriebenen Funktionen der Ausführungsformen der Erfindung auszuführen.
-
Ein Programm/Dienstprogramm (bzw. Utility) 40 mit einer Gruppe von (wenigstens einem) Programmmodulen 42 kann beispielsweise im Arbeitsspeicher 28 gespeichert werden, ohne darauf beschränkt zu sein, wie auch ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Ein jedes von dem Betriebssystem, einem Anwendungsprogramm oder mehreren Anwendungsprogrammen, weiteren Programmmodulen und Programmdaten oder einer bestimmten Kombination daraus kann eine Implementierung einer Netzwerkumgebung beinhalten. Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodologien der Ausführungsformen der Erfindung, wie in diesem Dokument beschrieben, aus.
-
Das Computersystem/der Server 12 kann auch mit einem oder mehreren externen Geräten 14 kommunizieren, wie einer Tastatur, einem Zeigegerät, einem Bildschirm 24 usw.; einem oder mehreren Geräten, die einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder beliebigen Geräten (z. B. Netzwerkkarte, Modem usw.), die einem Computersystem/Server 12 ermöglichen, mit einem oder mehreren weiteren Computinggeräten zu kommunizieren. Eine solche Kommunikation kann über Input/Output(I/O bzw. Eingabe/Ausgabe)-Schnittstellen 22 erfolgen. Ferner kann ein Computersystem/Server 12 mit einem oder mehreren Netzwerken über einen Netzwerkadapter 20 kommunizieren, wie einem lokalen Netzwerk (LAN), einem allgemeinen Weitbereichsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z. B. das Internet). Wie dargestellt, kommuniziert der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18. Es versteht sich, dass obwohl nicht dargestellt, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden können. Zu den Beispielen gehören, ohne jedoch darauf beschränkt zu sein: Microcode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
-
2B veranschaulicht ein vereinfachtes Bandlaufwerk 100 eines bandbasierten Datenspeichersystems, das gemäß verschiedener Ausführungsformen eingesetzt werden kann. Wenngleich in 2B eine bestimmte Implementierung eines Bandlaufwerks dargestellt wird, ist hervorzuheben, dass die in dem vorliegenden Dokument beschriebenen Ausführungsformen im Kontext eines jeden beliebigen Typs von Bandlaufwerkssystem implementiert werden können.
-
Wie dargestellt, sind eine Bandzuführungs-Cartridge 120 und ein Aufwickelrad 121 vorgesehen, um ein Band 122 zu halten. Eine oder mehrere der Räder können einen Bestandteil einer entfernbaren Kassette bilden und sind nicht notwendigerweise Bestandteil des Systems 100. Das Bandlaufwerk, wie in 2B dargestellt, kann weiterhin Antriebsmotor(en) aufweisen, um die Bandzuführungs-Cartridge 120 und das Aufnahmerad 121 anzutreiben, um das Band 122 über einen Bandkopf 126 eines beliebigen Typs zu führen.
-
Führungen 125 führen das Band 122 über den Bandkopf 126. Ein solcher Bandkopf 126 ist wiederum mit einer Steuereinheit-Baugruppe 128 über ein Kabel 130 verbunden. Die Steuereinheit 128 weist in der Regel einen Servo-Kanal 134 und einen Datenkanal 136 auf, der die Verarbeitung des Datenflusses beinhaltet. Sie steuert die Räderbewegung (in 2B nicht dargestellt) und die Kopffunktionen, wie das Folgen der Spur, das Schreiben, Lesen usw. Das Kabel 130 kann Lese/Schreib-Schaltkreise aufweisen, um auf dem Band 122 aufzunehmende Daten an den Kopf 126 zu übertragen und um Daten zu empfangen, die von dem Kopf 126 von Band 122 gelesen wurden. Ein Aktuator 132 versetzt den Kopf 126 auf eine Gruppe von Spuren auf dem Band 122, um einen Lese- oder einen Schreibvorgang durchzuführen.
-
In einer Ausführungsform kann das Bandlaufwerk 100 einen Datenpuffer 136 aufweisen, auf den über das Bandlaufwerk 100 und die Steuereinheit 128 zugegriffen werden kann. Dieser Datenpuffer 136 kann in einen oder mehrere Abschnitte aufgeteilt werden, wobei ein Abschnitt ein reservierter Datenpuffer 138 ist, der zum Speichern von speziellen Datensätzen während Lesevorgängen vom Band 122 verwendet wird.
-
Eine Schnittstelle kann auch zur Kommunikation zwischen den Bandlaufwerk 100 und einem Host (integriert oder extern) vorgesehen werden, um die Daten zu senden und zu empfangen und den Betrieb des Bandlaufwerks 100 zu steuern und den Status des Bandlaufwerks 100 an den Host zu kommunizieren, wie für Fachleute verständlich ist.
-
Verschiedene Arten von Fehlerkorrekturcode(ECC)-Schemas werden im Datenspeicher verwendet, um sehr geringe Bit-Fehlerraten zu erzielen, zum Beispiel sind Magnetband- und optische Speicherprodukte dazu ausgelegt, unter normalen Betriebsbedingungen Bit-Fehlerraten im Bereich von 1 × 10–17 bis 1 × 10–19 sicherzustellen. Lineare Blockcodes, wie Reed-Solomon(RS)-Codes und Paritätsprüfungscodes mit geringer Dichte (LDPC bzw. Low-Density Parity-Check) sind im Allgemeinen die bevorzugten in Datenspeicherprodukten verwendeten ECC-Schemas.
-
Gemäß einer Ausführungsform verwendet ein rekonstruierendes Datenwiederherstellungsverfahren einen reservierten Datenpufferbereich des Datenpuffers eines Bandlaufwerks, um Daten aus wiederholten Leseversuchen zur Wiederherstellung von Datensätzen zu speichern. Die kodierten Daten werden iterativ rekonstruiert, da die Fehlerbehebungsprozedur (ERP) das erneute Lesen von Datensätzen von einem Band in den reservierten Datenpuffer wiederholt.
-
Nach jedem Lesevorgang der Daten von Band kann bestimmt werden, welche Zeilen – wobei jede Zeile C1-kodierte Daten enthält – zufriedenstellend sind (als gute C1-Zeilen bezeichnet) und welche nicht. Diese Bestimmung kann darauf basieren, ob die C1-Zeile keine Fehler aufweist oder ob die Fehler mit C1-ECC korrigierbar sind. Im ersten Lesevorgang werden alle Zeilen im reservierten Datenpuffer unabhängig von der Qualität des Lesevorgangs gespeichert. In jedem nachfolgendem Lesevorgang der Daten von Band werden jedoch nur diejenigen C1-Zeilen, die besser sind als eine bereits im reservierten Datenpuffer gespeicherte C1-Zeile, in den reservierten Datenpuffer geschrieben, um die aktuell darin gespeicherte C1-Zeile zu ersetzen. In einer Ausführungsform können die C1-Zeilen in dem reservierten Datenpuffer gespeichert werden, nachdem ein ERP-Wiederholungsversuchsschritt abgeschlossen wurde (zum Beispiel ein erneuter Lesevorgang von Daten vom Band).
-
Gemäß einem Szenario, wenn der Fehler zufällig zwischen jedem der ERP-Wiederholungsversuchsschritte auftritt, dann werden verschiedene C1-Zeilen in jedem erneuten ERP-Lesevorgang nicht korrigierbar sein. Demgemäß wird durch Aggregation von guten C1-Zeilen im reservierten Datenpuffer ein kompletter Datenlesevorgang mit guten C1-Zeilen im reservierten Datenpuffer durch wiederholte ERP-Wiederholungsversuchsschritte zusammengestellt. Demgegenüber wird bei herkömmlichen Verfahren ein jeder erneute Lesevorgang separat analysiert und der gesamte Datensatz wird unabhängig von den bereits vorhandenen guten C1-Zeilen als nicht korrigierbar erachtet, wenn eine ausreichende Anzahl von schlechten C1-Zeilen gelesen wurden, und ein anderer ERP-Wiederholungsversuchsschritt wird durchgeführt. Bei dem aktuellen Verfahren kann jeder erneute Lesevorgang gute C1-Zeilen im reservierten Datenpuffer ansammeln, und wenn C2-ECC nachfolgend in der Lage ist, sie zu korrigieren, dann wird der Fehler behoben, die ERP-Wiederholungsversuchsschritte werden beendet und der gesamte rekonstruierte Datensatz wird aus dem reservierten Datenpuffer kopiert und an den Host gesendet.
-
Durch Nutzung dieser hier beschriebenen Verfahren gemäß verschiedener Ausführungsformen zum Lesen von Daten von einem Band ist es möglich, Fehler zu beheben, selbst wenn keine Hardware-Einstellung verfügbar ist, die dazu geeignet ist, die Daten vom Band in einem wiederherstellbaren Zustand in einem einzelnen Wiederholungsversuch zu lesen. Dieses darin begründet, dass die hierin beschriebenen Verfahren mehrere Wiederholungsversuchsschritte verwenden und wiederherstellbare Daten aus jedem erneutem Lesevorgang im reservierten Datenpuffer speichern, um einen gesamten Datensatz zusammenzustellen, der dann wiederherstellbar ist. Wenn zum Beispiel eine erste Hardware-Einstellung wirksam ist, um die Daten für eine erste Hälfte des Datensatzes zu lesen, und eine zweite Hardware-Einstellung wirksam ist, um die Daten für eine zweite Hälfte des Datensatzes zu lesen, sind die hier beschriebenen Verfahren dazu geeignet, den Fehler mit zwei Wiederholungsversuchen zu beheben, die diese beiden verschiedenen Hardware-Einstellungen anwenden, wohingegen ein herkömmliches Verfahren nicht dazu in der Lage wäre, die Daten in den beiden Wiederholungsversuchen zu lesen. Das liegt darin begründet, dass gemäß dem aktuellen Verfahren wenigstens eine dritte Hardware-Einstellungen oder sogar mehrere Hardware-Einstellungen in manchen Fällen erforderlich sein würden, um die Daten für den gesamten Datensatz zu lesen. Wenn keine einzelne Hardware-Einstellung vorhanden ist, die dazu geeignet ist, den gesamten Datensatz mit herkömmlichen Verfahren zu lesen, sind die Daten nicht zum Lesen geeignet.
-
Daher wird durch Verwendung der hier beschriebenen Verfahren gemäß verschiedener Ausführungsformen die für ERP aufgewendete Zeit verkürzt, da gute C1-Zeilen nach jedem erneuten Lesevorgang mit verschiedenen Hardware-Einstellungen (ein erneuter ERP-Wiederholungsversuch) im reservierten Datenpuffer angesammelt werden, und dann zusammengefügt werden, um den gesamten Datensatz zu rekonstruieren. Auf diese Weise kann die Anzahl der wiederholten ERP-Wiederholungsversuche insgesamt zur Behebung des Fehlers beitragen und zu einer schnelleren Wiederherstellung der gelesenen Daten führen. Bei Verwendung aktueller Verfahren kann der Datensatz nicht wiederhergestellt werden, außer die vom Band in einem einzelnen ERP-Wiederholungsversuch gelesenen Daten weisen weniger Fehler-Bytes auf als der zulässige C1/C2-Grenzwert. Demgemäß werden unter Verwendung herkömmlicher Verfahren ERP-Wiederholungsversuche mehrere Male wiederholt, bis das Laufwerk ein geeignete Hardware-Einstellung findet, um den fehlerhaften Datensatz vollständig in einem einzelnem erneuten Leseversuch zu lesen. Wenn zum Beispiel in dem oben beschriebenen Szenario eine erste Hardware-Einstellung wirksam ist, um die Daten für eine erste Hälfte des Datensatzes zu lesen, und eine zweite Hardware-Einstellung wirksam ist, um die Daten für eine zweite Hälfte des Datensatzes zu lesen, sind herkömmliche Verfahren nicht dazu geeignet, den Fehler mit diesen zwei Wiederholungen zu behandeln, die die zwei verschiedenen Hardware-Einstellungen anwenden, und müssen stattdessen wenigstens eine dritte Hardware-Einstellung versuchen. Wenn diese Einstellung nicht dazu geeignet ist, den Fehler für den gesamten Datensatz zu beheben, dann muss eine vierte Hardware-Einstellung oder weitere Hardware-Einstellungen müssen versucht werden. Durch diesen Prozess kann gezeigt werden, dass herkömmliche Verfahren nicht in der Lage sind, trotz einer Reihe von modifizierten Hardware-Einstellungen, einen solchen Datensatz erfolgreich in einem einzelnen erneuten Lesevorgang zu lesen. Dies erhöht die Zeit zur Behebung des Fehlers für den gesamten Datensatz im Vergleich zu dem, was mit dem hier beschriebenen Verfahren möglich ist.
-
Datensätze werden auf Band geschrieben, und jeder Datensatz besitzt eine Nummer (Datensatznummer), die Datensätzen sequenziell ab dem Beginn des Bandes zugewiesen wird. Wenn zum Beispiel das Bandlaufwerk versucht, den Datensatz #N (DS#N) zu lesen, kann DS#N entweder ohne Fehler gelesen werden, mit Fehler gelesen werden, die mit C1/C2-ECC korrigierbar sind, oder kann aufgrund einer hohen Fehlerzahl nicht gelesen werden (zum Beispiel kann C1/C2-ECC die Fehler nicht korrigieren). Selbst wenn nicht alle Daten durch C1/C2-ECC wiederhergestellt werden können, können einige gute C1-Zeilen immer noch von Band gelesen werden, und diese guten C1-Zeilen können vom Band im reservierten Datenpuffer auf dem Bandlaufwerk gespeichert werden. Auf den ersten Lesewiederholungsversuch vom Band folgend, können in einem Ansatz alle C1-Zeilen im reservierten Datenpuffer gespeichert werden.
-
Jede C1-Zeile verfügt über Informationen, die die Datensatznummer angibt, aus dem die C1-Zeile gelesen wurde (zu welchem Datensatz die C1-Zeile gehört), und das Bandlaufwerk kann dies zur Prüfung der Gültigkeit der C1-Zeile verwenden (DS#N oder nicht). Wenn die C1-Zeile zu DS#N gehört, dann kann in einem anderen Ansatz das Syndrom der C1-Zeile geprüft werden, und das Syndrom kann angeben, ob der Fehler über die C1-ECC-Korrekturleistung korrigierbar ist. Nach der Verifizierung kopiert das Bandlaufwerk die C1-Zeile in den reservierten Datenpufferbereich. Wenn die nächste ERP ebenso versucht, DS#N von Band zu lesen, sind die Validitätsprüfungen der C1-Zeile und der Datensatznummer bereits abgeschlossen, was Zeit spart. Wenn neue gute C1-Zeilen vorhanden sind, werden diese neuen guten C1-Zeilen ebenso in den reservierten Datenpuffer kopiert (aggregiert). Wenn eine ausreichende Anzahl von C1-Zeilen so aggregiert sind, versucht das Laufwerk dann die Daten über C2-ECC zu korrigieren. Wenn mit C2-ECC alle Fehler in den aggregierten C1-Zeilen korrigiert werden können, gibt dies an, dass das Bandlaufwerk einen gesamten Datensatz erfolgreich rekonstruiert hat, und das Bandlaufwerk kann dann diesen Datensatz an den Host übertragen.
-
In Bandbereichen, in denen die Fehlerrate aufgrund einer Medienbeschädigung, eines unvollständigen Schreibvorgangs, von Daten, die in älteren Formaten geschriebenen wurden usw. hoch ist, kann das Laufwerk möglicherweise viele Datensätze in der Umgebung dieses Bandbereichs nicht mehr erfolgreich lesen. Dies wird als Fehlerhäufung (Error Burst) bezeichnet. In diesen Fällen sind die gleichen Wiederherstellungsprozeduren oftmals für jeden der problematischen Datensätze erfolgreich; mit dem aktuellen Verfahren wird jedoch jeder problematische Datensatz einzelnen in der numerischen Folge wiederhergestellt, ohne eine erfolgreiche Wiederherstellung der vorhergehenden Datensätze zu berücksichtigen. Wenn daher jede Fehlerbehebungssitzung viele Wiederholungsversuche (viele Iterationen von ERP) für jeden Datensatz erfordert, dann benötigt das Bandlaufwerk aufgrund der mehreren Backhitches, die zum erneuten Lesen eines einzelnen Datensatzes von Band erforderlich sind, lange Zeit, um Daten in diesem Bandbereich erfolgreich zu lesen. Dies verschlechtert die Host-Performance und kann auch die Medien weiter beschädigen.
-
Wenn gemäß einer Ausführungsform bestimmte Kriterien erfüllt wurden (zum Beispiel Erfassung einer Fehlerhäufung oder eines bestimmten Cartridge-Typs), dann kann ein rekonstruierendes Datenwiederherstellungsverfahren auf mehrere Datensätze in einem einzelnen Lesevorgang angewendet werden (zum Beispiel wird alles gleichzeitig in einer ERP-Sitzung, in einer einzelnen Aktion, in der gleichen Vorwärtsbewegung usw. gelesen). Das ERP-Verfahren kann für mehrere Datensätze durchgeführt werden, die direkt auf den anfänglichen Fehlerdatensatz während des gleichen ERP-Wiederholungsversuches folgen und in wirksamer Weise mehrere Datensätze wiederherstellen, ohne dass jeder Datensatz in einer anderen ERP-Sitzungen gelesen oder erneut gelesen werden muss. In der Regel versucht ein Laufwerk nicht, mehrere Datensätze in der gleichen Vorwärtsbewegung wiederherzustellen; stattdessen ist es üblich, Beschädigungen in einem Datensatz zu beheben, bevor zum nächsten Datensatz weitergegangen wird. Dies liegt darin begründet, dass wenn ein Datensatz nicht durch die ERP wiederhergestellt werden kann (er hat zum Beispiel zu viele nicht korrigierbare Fehler), dann wird davon ausgegangen, dass der nächste Datensatz bzw. die nächsten Datensätze ebenso nicht wieder herstellbar sein können. Aus diesem Grund wird in der Regel gemäß herkömmlichen Verfahren angenommen, dass kein Grund besteht, den Lesevorgang über einen beschädigten Datensatz hinaus in der gleichen Vorwärtsbewegung fortzusetzen.
-
In Situationen jedoch, in denen eine rekonstruierende Wiederherstellung von Daten als wirksam erachtet wird, ist gemäß einer Ausführungsform eine rekonstruierende Datenwiederherstellungs-ERP in der Lage, „gute” C1-Zeilen für mehrere Datensätze gleichzeitig (zum Beispiel während des gleichen ERP-Schritts) zu speichern und anzusammeln. Nachdem der anfängliche Fehlerdatensatz mit dem angesammelten Daten wiederhergestellt werden konnte, kann der rekonstruierte Datensatz dann an den Host übertragen werden. Zu diesem Zeitpunkt werden die Gruppen von Datensätzen analysiert, die gute C1-Zeilen in ihren jeweiligen reservierten Datenpuffer bei jedem Wiederholungsversuch des anfänglichen Fehlerdatensatzes angesammelt haben. Das Laufwerk kann dann erfassen, ob der nächste Datensatz, ein Datensatz irgendwo in der Mitte der Gruppe von Datensätzen oder der letzte Datensatz der mehreren Datensätze ebenso eine Beschädigung oder einen Fehler aufweist. Wenn ja, dann werden die guten C1-Zeilen, die bereits in den jeweiligen reservierten Datenpufferbereichen davon angesammelt wurden, sofort geprüft, um festzustellen, ob ausreichend gute verwendbare C1-Zeilen vorliegen, um die nachfolgenden Datensätze ohne weitere ERP (und Backhitches) zu korrigieren.
-
Der erste Datensatz in der Gruppe der mehreren Datensätze, der nicht erfolgreich gelesen wurde oder der nicht aus den angesammelten Daten rekonstruiert werden kann, führt dazu, dass eine zweite ERP-Sitzung beginnt. Die zweite ERP-Sitzung markiert diesen neuen Fehlerdatensatz als den anfänglichen Fehlerdatensatz und nachfolgende Backhitches und Lesewiederholungsversuche können auch dazu führen, dass mehrere nachfolgende Datensätze in der gleichen Vorwärtsbewegung gelesen werden. Dieses Verfahren ist aus zwei Gründen besonders wirksam bei der Reduzierung von Backhitches. Wenn als Erstes alle der mehreren Datensätze erfolgreich gelesen werden können, dann kann das Laufwerk die Bewegung nach dem letzten Datensatz neu starten. Zweitens, wenn eine zweite ERP-Sitzung für einen Datensatz an einer beliebigen Stelle zwischen den mehreren Datensätzen durchgeführt werden muss, dann muss das Laufwerk nur den bestimmten Datensatz und nicht den anfänglichen Fehlerdatensatz neu positionieren. Dieses Verfahren ist im Vergleich zu herkömmlichen Verfahren in der Lage, die erforderliche Zeit, die für die Wiederherstellung von Daten in einem Bandbereich mit hohen Fehlerraten benötigt wird, erheblich zu reduzieren.
-
Wenn eine Wiederherstellung für den anfänglichen Fehlerdatensatz durchgeführt wird, dann wird das hier gemäß verschiedenen Ausführungsformen beschriebene rekonstruierende ERP-Verfahren für mehrere Datensätze während des gleichen ERP-Wiederholungsversuches versucht. Die insgesamt zum Lesen der mehreren Datensätze verstrichene Zeit wird geringer sein als die bei einem herkömmlichen Verfahren benötigte Gesamtzeit, bei dem das Medium für jeden ERP-Leseversuch eines einzelnen Datensatzes zurückgespielt wird, bis er gelesen wird, und dann das Medium erneut für jeden erneuten ERP-Leseversuch für den nächsten Datensatz zurückgespult wird usw. Wenn zum Beispiel ein ERP-Wiederholungsversuch 3 Sekunden dauert und das vorgeschlagene rekonstruierende ERP-Verfahren zwei erneute Versuche verwendet (Backhitch und dann erneutes Lesen der Datensätze), um den Fehler zu beheben, dann beträgt die für diese Wiederherstellung aufgewendete Zeit 3·2 = 6 Sekunden. In einem Fall, in dem zehn Datensätze ebenso eine Fehlerbehebung erfordern (für den gleichen Fehler oder für verschiedene Fehler), vergehen dann 10·3·2 = 60 Sekunden, um die Fehler zu beheben, wenn für einen jeden der zehn Datensätze bei einem herkömmlichen ERP-Verfahren ERP versucht wird. Wenn die Verwendung der vorgeschlagenen rekonstruierenden ERP versucht, mehrere Datensätze gleichzeitig zu lesen (10 Datensätze werden gleichzeitig gelesen), beträgt die verstrichene Zeit zum Wiederherstellen der 10 Datensätze immer noch 3·2 = 6 Sekunden, da kein zeitlicher Unterschied beim Lesen eines Datensatzes und der zehn Datensätze gleichzeitig von Band besteht. Die meiste Zeit, die bei einem Lesevorgang verstreicht, ist auf das Backhitching des Mediums zurückzuführen. Bei einem Bandmedium ist das Zurückspulen (Backhitching) der Zustand, indem die Bandbewegung umgekehrt wird, um die gleiche Bandposition noch einmal zu lesen, was etwa 3 Sekunden dauert, wobei aber die zum Lesen der Daten benötigte Zeit etwa 0,0 x Sekunden beträgt (wobei x eine Zahl zwischen 1 bis 9 ist). Aufgrund dieses rekonstruierenden ERP-Verfahrens wird die in einer Fehleranhäufungssituation verstrichene Zeit auf etwa 1/10 eines herkömmlichen Verfahrens reduziert, zum Beispiel gleicht die beim rekonstruierenden ERP-Verfahren verstrichene Zeit in etwa dem Kehrwert der Anzahl der zu lesenden mehreren Datensätze (1/10 in diesem Beispiel).
-
Es wird nun auf 3A–3B Bezug genommen. Ein Verfahren 300 von einer mehrere Datensätze rekonstruierenden ERP wird gemäß einer Ausführungsform dargestellt. Das Verfahren 300 kann in verschiedenen Ausführungsformen gemäß der vorliegenden Erfindung unter anderem in einer beliebigen der in 1 bis 2B dargestellten Umgebungen ausgeführt werden. Es können natürlich mehr oder weniger Vorgänge als die im Besonderen in 3A bis 3B beschriebenen im Verfahren 300 enthalten sein, wie für Fachleute bei Lektüre der vorliegenden Beschreibungen verständlich ist.
-
Es wird nun auf 3A Bezug genommen. In Vorgang 302 wird ein erster Zähler (dargestellt durch y) auf null gesetzt (y = 0). Der erste Zähler kann zum Zählen einer Anzahl von erneuten Leseversuchen des anfänglichen Fehlerdatensatzes zusammen mit einem oder mehreren einer Mehrzahl von nachfolgenden Datensätzen von dem Medium zur gleichen Zeit verwendet werden.
-
In Vorgang 304 wird der anfängliche Fehlerdatensatz (DS#N) vom Medium gelesen, gefolgt vom Lesen einer Mehrzahl von nachfolgenden Datensätzen. Für jeden nachfolgenden erneuten Lesevorgang wird der gleiche Datensatz (DS#N) von dem Medium gelesen, aber er wird unter Verwendung anderer Einstellungen gelesen, die auch für die Mehrzahl der Datensätze gelten, die in der gleichen Vorwärtsbewegung gelesen werden. DS#N kann an einem Beginn des Mediums, an einer Position in der Mitte oder am Ende des Mediums liegen. Die anfängliche fehlerhafte DS#N wird erneut gelesen, bis eine maximal zulässige Anzahl von Datensatzlesevorgängen (ERPmax) erreicht wird, oder bis DS#N korrekt rekonstruiert werden kann, je nachdem, was als Erstes eintritt.
-
In Vorgang 306 wird bestimmt, ob der anfängliche Fehlerdatensatz DS#N vom Medium gelesen werden kann, was angibt, dass keine Fehler im Datensatz vorliegen. Ist dies der Fall, dann geht das Verfahren 300 zu Vorgang 312 weiter und endet. In Vorgang 312 endet das Verfahren 300, wobei der Datensatz wiederhergestellt ist. In einem Ansatz kann der Datensatz an den Host gesendet werden. Andernfalls, wenn der Datensatz nicht fehlerfrei gelesen werden kann, geht das Verfahren 300 zu Vorgang 308 weiter.
-
In Vorgang 308 wird bestimmt, ob der erste Zähler kleiner ist als die maximal zulässige Anzahl von Datensatz-Lesevorgängen (ERP-Zyklen), zum Beispiel y < ERPmax. Wenn der erste Zähler gleich der maximal zulässigen Anzahl von Datensatz-Lesevorgängen ist, wie in Vorgang 310 dargestellt, wird der Datensatz DS#N nicht wiederhergestellt, ist nicht lesbar, und das Verfahren endet. In einem Ansatz kann der Host über den misslungenen Lesevorgang des Datensatzes informiert werden.
-
Wenn in Vorgang 314 der erste Zähler kleiner ist als die maximal zulässige Anzahl von Datensatz-Lesevorgängen (ERPmax), wird ein dritter Zähler auf 0 (z = 0) festgelegt, mit dem die maximale Anzahl der Datensätze gezählt wird, die in den Lesewiederholungsversuchen in der Vorwärtsbewegung gelesen werden sollen. Das Verfahren 300 setzt mit dem Vorgang 316 fort, und wobei ein zweiter Zähler auf 0 (x = 0) festgelegt wird, mit dem die Gesamtzeilen des Datensatz-Arrays gezählt werden können. Dann geht das Verfahren 300 zu Vorgang 318 weiter.
-
In Vorgang 318 wird bestimmt, ob der zweite Zähler kleiner ist als die gesamten Zeilen in dem Datensatz-Array, zum Beispiel x < Rowstotal für DS#N. Ist dies der Fall, geht das Verfahren 300 zu Vorgang 320 weiter; andernfalls geht das Verfahren zu Vorgang 328 weiter.
-
In einem optionalen Vorgang 320 wird mit einer Validitätsprüfung bestimmt, ob die aktuelle Zeile, die Zeile(x), zum anfänglichen Fehlerdatensatz (DS#N) gehört. Wenn die Zeile zum anfänglichen Fehlerdatensatz gehört, geht das Verfahren 300 zu Vorgang 322 weiter; andernfalls geht das Verfahren zu Vorgang 326 weiter.
-
In Vorgang 322 wird bestimmt, ob Fehler in der aktuellen Zeile mit C1-ECC für die Zeile in einem Prozess behoben werden können, der als Syndrom-Prüfung bezeichnet wird, was ausführlicher mit Bezugnahme auf 6 beschrieben wird. Es wird weiterhin 3A Bezug genommen. Wenn Fehler in der aktuellen Zeile behoben werden können, geht das Verfahren 300 zu Vorgang 324 weiter; andernfalls geht das Verfahren zu Vorgang 326 weiter.
-
In Vorgang 324 wird die aktuelle Zeile kopiert und im reservierten Datenpuffer gespeichert, um in den gesamten Datensatz zusammengestellt zu werden, nachdem alle Zeilen darin gespeichert wurden und nur behebbare Fehler darin enthalten sind.
-
In Vorgang 326 wird der zweite Zähler um 1 erhöht, zum Beispiel x = x + 1. Dies führt dazu, dass die nächste Instanz der Vorgänge 316 bis 324 für die nächste Zeile des Datensatzes durchzuführen ist.
-
In Vorgang 328 wird bestimmt, ob der dritte Zähler kleiner als eine Gesamtzahl der Datensätze ist, die nachfolgend auf den anfänglichen Fehlerdatensatz (M) gelesen werden, zum Beispiel z < M. Wenn der dritte Zähler kleiner ist als die Gesamtzahl der in der gleichen Vorwärtsbewegung gelesenen Datensätze, die auf den anfänglichen Fehlerdatensatz folgen, dann müssen mehr Datensätze geprüft werden, und der dritte Zähler wird in Vorgang 330 um 1 erhöht, z. B. z = z + 1. Dann geht das Verfahren 300 zu Vorgang 332 weiter, wo der nächste Datensatz DS#N + z von dem Medium gelesen wird, und das Verfahren 300 geht zu Vorgang 316, um den zweiten Zähler zurückzusetzen.
-
Wenn der dritte Zähler gleich (oder größer) als die Gesamtzahl der in der gleichen Vorwärtsbewegung gelesenen Datensätze ist, die auf den anfänglichen Fehlerdatensatz (M) folgen, geht das Verfahren 300 zu Zeiger A weiter, was in 3B beschrieben wird.
-
Es wird auf 3B Bezug genommen. Von Zeiger A aus geht das Verfahren 300 zu Vorgang 334 weiter, wo ein vierte Zähler auf 0 gesetzt wird, zum Beispiel i = 0, was zum Zählen vom ersten Fehlerdatensatz zum ersten nicht wiederherstellbaren Datensatz in der Mehrzahl der Datensätze verwendet werden kann, die in der gleichen Vorwärtsbewegung gelesen werden, oder zum letzten Datensatz in der Mehrzahl, wenn alle Lesevorgänge erfolgreich waren. Dann wird in Vorgang 336 mit C2-ECC versucht, alle Fehler in dem aggregierten Datensatz DS#N+i zu korrigieren, da alle Zeilen im Datensatz nun im reservierten Datenpuffer gespeichert wurden. In der ersten Iteration, wobei i = 0, wird der Datensatz DS#N, der anfängliche Fehlerdatensatz, geprüft.
-
In Vorgang 338 wird bestimmt, ob alle Fehler im Datensatz DS#N + i mit C2-ECC behoben werden können. Ist dies der Fall, geht das Verfahren 300 zu Vorgang 340 weiter; andernfalls geht das Verfahren zu Vorgang 344 weiter.
-
In Vorgang 340 wird der vierte Zähler um 1 erhöht, zum Beispiel i = i + 1. Dann wird in Vorgang 342 bestimmt, ob der vierte Zähler kleiner oder gleich der Gesamtzahl der gelesenen Datensätze (M) ist, zum Beispiel i ≤ M. Wenn der vierte Zähler kleiner oder gleich der Gesamtzahl der gelesenen Datensätze ist, geht das Verfahren 300 in einer Schleife zurück zu Vorgang 336, um den nächsten Datensatz zu prüfen.
-
Wenn die Gesamtanzahl der Datensätze geprüft wurde, geht das Verfahren 300 zu Vorgang 344 weiter, wo bestimmt wird, ob der vierte Zähler größer als 0 ist, zum Beispiel i ≥ 0. Ist dies der Fall, dann wird, wie in Vorgang 346 gezeigt, der anfängliche Fehlerdatensatz wie auch wenigstens ein weiterer in der Mehrzahl der in der gleichen Vorwärtsbewegung gelesenen Datensätze wiederhergestellt (hat Fehler darin korrigiert) oder wurde korrekt gelesen, und das Verfahren 300 endet.
-
Andernfalls, wie in Vorgang 348 gezeigt, wird der erste Zähler um 1 erhöht, z. B. y = y+1, und das Verfahren 300 geht zu Vorgang 350 weiter, wo die Laufwerkeinstellungen geändert werden, um einen erneuten Lesevorgang des anfänglichen Fehlerdatensatzes und der Mehrzahl von einem nachfolgenden Datensatz bzw. der nachfolgenden Datensätze mit weniger Fehlern zu versuchen (oder wenigstens einige Zeilen von einem oder mehreren der Datensätze, die zuvor nicht mit einem korrigierbaren Fehler gelesen wurden).
-
Nach der Vorgang 350 geht das Verfahren 300 zu Zeiger B weiter und kehrt zu 3A zurück, um wieder bei Vorgang 304 weiterzumachen.
-
Gemäß dem Verfahren 300 können weniger erneute Lesevorgänge über die Mehrzahl der Datensätze erforderlich sein, um korrigierbare Daten vom Band in den reservierten Datenpuffer zu verschieben, da es nicht erforderlich ist, eine herkömmliche ERP-Wiederherstellung für jeden Datensatz in Folge durchzuführen. Eine erfolgreiche ERP-Wiederherstellung für den anfänglichen Fehlerdatensatz kann gleichzeitig die reservierten Datenpufferbereiche einer Mehrzahl von nachfolgenden Datensätzen mit ausreichend guten C1-Zeilen füllen, um eine erfolgreiche C2-Verifizierung ohne weitere Bandbewegung zu ermöglichen, die auf die Rekonstruktion des Datensatzes erfolgt.
-
Es wird auf 4 Bezug genommen, wo ein Verfahren 400 zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform dargestellt ist. Das Verfahren 400 kann gemäß der vorliegenden Erfindung unter anderem in einer beliebigen der in 1 bis 3 dargestellten Umgebungen in verschiedenen Ausführungsformen durchgeführt werden. Es können natürlich mehr oder weniger Vorgänge als die im Besonderen in 4 beschriebenen im Verfahren 400 enthalten sein, wie für Fachleute bei Lektüre der vorliegenden Beschreibungen verständlich ist.
-
Ein jeder der Schritte des Verfahrens 400 kann von jeder geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann in verschiedenen nicht einschränkenden Ausführungsformen das Verfahren 400 teilweise oder ganz durch ein C1/C2-Dekodierungssystem, ein Bandlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk, einen Controller, einen Prozessor (wie eine CPU, ein ASIC, ein FPGA usw.) durchgeführt werden, die eingebettet sein können und/oder in einem System arbeiten usw.
-
Wie in 4 dargestellt, kann das Verfahren 400 bei Vorgang 402 beginnen, wo ein anfänglicher Fehlerdatensatz gefolgt von einer Mehrzahl von Datensätzen von einem Medium in einem Schritt und möglicherweise mehrere Male unter Verwendung verschiedener Einstellungen gelesen wird, bis entweder: alle Zeilen des anfänglichen Fehlerdatensatzes in einem reservierten Datenpuffer angesammelt sind und keine nicht korrigierbaren Fehler übrig sind, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von angesammelten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde (ERP wird beendet).
-
Die verschiedenen Einstellungen können eine Veränderung an jeder geeigneten Einstellung umfassen, wie eine beliebige der folgenden: einer Mediumgeschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern, Servo-Tracking usw.
-
Die maximale Anzahl der erneuten Lesevorgänge kann eine Hardware-Einstellung eines Laufwerks sein, eine bestimmte Anzahl basierend auf vergangenen Versuchen, eine Benutzereinstellung oder eine Zahl, die von jedem anderen in der Technik bekannten Verfahren abgeleitet ist. In einer anderen Ausführungsform kann die Zahl ein dynamischer Parameter sein, der den erneuten Lesevorgängen zugeordnet ist oder auf einem Aspekt davon basiert, wie eine kleine Verbesserung beim Lesen der Daten, eine Länge der für die erneuten Lesevorgänge aufgewendeten Zeit, die Bedeutung eines Datensatzes usw.
-
In einer Ausführungsform kann das Medium ein Magnetband sein, und das Verfahren 400 kann von einem Bandlaufwerk durchgeführt werden.
-
In einer Ausführungsform kann das mehrmalige Lesen der Mehrzahl der Datensätze weiterhin das Lesen aller nachfolgenden Datensätze bis und einschließlich eines anfänglichen nicht korrigierten Datensatzes von dem Medium aufweisen. Der anfängliche nicht korrigierte Datensatz weist gemäß einer Ausführungsform einen Fehler auf, der nicht mit C2-ECC korrigierbar ist, oder einen Fehler in einer beliebigen Zeile, der nicht mit C1-ECC korrigierbar ist.
-
In Vorgang 404 sind nach jedem erneuten Lesevorgang des anfänglichen Fehlerdatensatzes und einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen Fehlerdatensatz in der gleichen Vorwärtsbewegung Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder Fehler in jeder Zeile aufweisen, die mit C1-ECC korrigierbar sind, in ihren jeweiligen reservierten Datenpufferbereichen gespeichert, sofern nicht eine passende Zeile bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist. Eine passende Zeile ist eine Zeile, die an der gleichen Position im Datensatz-Array positioniert ist. Wenn zum Beispiel Zeile 1 des Datensatzes (die drei korrigierte Fehler darin enthält) bereits im reservierten Datenpuffer gespeichert ist, und Zeile 1 erneut mit anderen Einstellungen gelesen wird und nur zwei korrigierte Fehler darin enthält, dann wird die gespeicherte Zeile 1 durch die erneut gelesene Zeile 1 überschrieben.
-
In einem Ansatz können alle Zeilen der Mehrzahl der Datensätze an ihre jeweiligen reservierten Datenpufferbereiche nach einem ersten Lesen der Mehrzahl von Datensätzen von dem Medium kopiert werden, sodass die Gesamtheit von jedem der Datensätze im reservierten Datenpuffer (in deren entsprechenden Bereiche) gespeichert wird, dann kann in nachfolgenden Lesevorgängen jede Zeile eines beliebigen Datensatzes verbessert werden (zum Beispiel weniger korrigierte Fehler in jeder Zeile).
-
Gemäß einer Ausführungsform kann jede Zeile eine C1-kodierte Zeile in einem Array, der einen Datensatz darstellt, aufweisen.
-
In Vorgang 406 wird der anfängliche Fehlerdatensatz aus den für den anfänglichen Fehlerdatensatz im reservierten Datenpuffer gespeicherten Zeilen zusammengesetzt, um einen anfänglichen zusammengesetzten Datensatz zu bilden. Weiterhin, bei Bedarf oder optional, kann ein jeder der Mehrzahl der Datensätze nachfolgend auf den anfänglichen Fehlerdatensatz aus den für jeden Datensatz im reservierten Datenpuffer gespeicherten Zeilen zusammengesetzt werden, um eine Mehrzahl von zusammengesetzten Datensätzen zu bilden, solange ausreichend Zeilen für die nachfolgenden Datensätze verfügbar sind. Jeder zusammengesetzte Datensatz weist nur Zeilen auf, die mit C1-ECC korrigierbar sind, wodurch komplette Datensätze mit Zeilen bereitgestellt werden, bei denen alle Fehler in jeder Zeile korrigierbar sind.
-
In Vorgang 408 werden alle verbleibenden Fehler im anfänglichen zusammengesetzten Datensatz mit C2-ECC korrigiert, um einen anfänglichen rekonstruierten Datensatz zu bilden. Weiterhin werden, wenn möglich, alle verbleibenden Fehler in der Mehrzahl der zusammengesetzten Datensätze mit C2-ECC korrigiert, um eine Mehrzahl von rekonstruierten Datensätzen zu bilden. Auf diese Weise sind keine Fehler mehr in den rekonstruierten Datensätzen vorhanden oder die Fehler, die in der Mehrzahl der rekonstruierten Datensätze zum Zeitpunkt der Wiederherstellung (Rekonstruktion) des anfänglichen Fehlerdatensatzes übrig bleiben, können nicht korrigiert werden.
-
In Vorgang 410 wird der anfängliche rekonstruierte Datensatz an einen Host und/oder an einen Speicher gesendet, wie ein Bandlaufwerk, einen Server usw. Darüber hinaus, wenn verfügbar, wird die Mehrzahl der rekonstruierten Datensätze ebenso an den Host gesendet und/oder im Speicher gespeichert. Der erste Datensatz in der Mehrzahl der Datensätze, der nicht korrekt gelesen werden kann, wird der Ausgangspunkt für die nächste Wiederherstellungssitzung.
-
Es wird nun auf 5 Bezug genommen, wo ein Verfahren 500 zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform dargestellt ist. Gemäß einer weiteren Ausführungsform, wenn bestimmte Kriterien erfüllt wurden (zum Beispiel Erfassung einer Fehlerhäufung oder eines bestimmten Cartridge-Typs), dann kann ein rekonstruierendes Datenwiederherstellungsverfahren auf mehrere Datensätze in einem einzelnen Lesevorgang angewendet werden (zum Beispiel werden alle gleichzeitig in einer ERP-Sitzung, in einer einzelnen Aktion, in der gleichen Vorwärtsbewegung usw. gelesen). Das Verfahren 500 kann gemäß der vorliegenden Erfindung unter anderem in einer der in 1 bis 3 dargestellten Umgebungen in verschiedenen Ausführungsformen ausgeführt werden. Es können natürlich mehr oder weniger Vorgänge als die im Besonderen in 5 beschriebenen, im Verfahren 500 enthalten sein, wie für Fachleute bei Lektüre der vorliegenden Beschreibungen verständlich ist.
-
Ein jeder der Schritte des Verfahrens 500 kann von jeder geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann in verschiedenen nicht einschränkenden Ausführungsformen das Verfahren 500 teilweise oder ganz durch ein C1/C2-Dekodierungssystem, ein Bandlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk, einen Controller, einen Prozessor (wie eine CPU, ein ASIC, ein FPGA usw.) durchgeführt werden, die eingebettet sein können und/oder in einem System arbeiten usw.
-
Wie in 5 dargestellt, kann ein Verfahren 500 mit dem Vorgang 502 beginnen, wo eine Mehrzahl von Datensätzen von einem Medium einmal oder mehrere Male gelesen wird, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die zusammen kombiniert im Ganzen den Datensatz bilden. Ebenso werden während eines jeden Lesevorgangs von wenigstens einem der Mehrzahl der Datensätze Einstellungen in einem Versuch geändert, den wenigstens einen der Mehrzahl der Datensätze besser vom Medium zu lesen. Jeder Bereich kann ein beliebiger Teil des Datensatzes sein, und der Datensatz kann durch eine beliebige Struktur dargestellt sein. Mit besser lesbar wird bezeichnet, das weniger Fehler in dem gelesenen Datensatz vorliegen, indem die Einstellungen angepasst werden, mit denen der Datensatz von dem Medium gelesen wird.
-
Die verschiedenen Einstellungen können eine Änderung in jeder geeigneten Einstellung umfassen, wie eine beliebige der folgenden: eine Mediumgeschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern, Servo-Tracking usw.
-
In einer Ausführungsform kann ein jeder Bereich eine Zeile in einem Array sein, der einen Datensatz darstellt, wie im vorliegenden Dokument ausführlicher beschrieben. Im Besonderen kann jeder Bereich eine C1-kodierte Zeile in einem Array sein, der einen Datensatz darstellt. Darüber hinaus kann jede Zeile des Arrays einen Header zusammen mit kodierten Daten und darin verschachtelten C1-Codewörtern aufweisen. In einer anderen Ausführungsform kann jeder Bereich eine Spalte im Array sein, in dem die C1- mit den C2-Schritten vertauscht werden.
-
In einem optionalen Vorgang 504 werden ein oder mehrere Bereiche von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer gespeichert, wenn die einen oder mehreren Bereiche mit C1-ECC korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden; Auf diese Weise werden die korrigierbaren Bereiche der Datensätze ganz im reservierten Datenpuffer gespeichert, und Bereiche können überschrieben werden, wenn sie besser sind als ein bereits im reservierten Datenpuffer gespeicherter Bereich.
-
Der reservierte Datenpuffer kann Teil eines größeren Datenpuffer eines Mediumlaufwerks sein, wie eines Bandlaufwerks, wenn das Medium ein Band ist, oder kann ein getrennter Speicher zum Speichern darauf sein, entweder im Laufwerk oder für das zum Lesen des Datensatzes verwendete Laufwerk zugreifbar.
-
In Vorgang 506 werden für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon aggregiert, um einen oder mehrere zusammengesetzte Datensätze zu bilden. Dies bedeutet, dass etwaige in dem Bereich vorhandene Fehler mit der C1-Kodierung des Bereichs korrigiert werden können, ohne sich auf eine beliebige C2-Kodierung des Datensatzes zu verlassen. Sollte der Bereich nicht mit der C1-Kodierung korrigierbar sein, wird der Bereich nicht im reservierten Datenpuffer gespeichert.
-
In einer Ausführungsform wird, wenn ein Bereich bereits im reservierten Datenpuffer vorhanden ist, der einem gelesenen Bereich entspricht, der einen korrigierbaren Fehler darin aufweist, der vorhandene Bereich überschrieben, wenn der zugehörige Bereich aus dem einen oder mehreren Bereichen (dem gelesenen Bereich mit dem korrigierbaren Fehler) weniger korrigierte Fehler darin enthält als der vorhandene Bereich. Wenn zum Beispiel ein gespeicherter Bereich drei korrigierte Fehler aufweist, und ein gelesener Bereich nur zwei korrigierte Fehler aufweist, wird der gespeicherte Bereich im reservierten Datenpuffer mit dem gelesenen Bereich überschrieben.
-
Anders ausgedrückt, ein oder mehrere gespeicherte Bereiche können überschrieben werden, wenn wenigstens ein entsprechender Bereich von dem einen oder den mehreren Bereichen, die mit C1-ECC korrigierbar sind, weniger korrigierte Fehler darin aufweisen als der eine oder die mehreren gespeicherten Bereiche.
-
In Vorgang 508 wird bestimmt, ob C2-ECC dazu ausgestaltet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren. Auf diese Weise kann der gesamte Datensatz aus „guten” Bereichen rekonstruiert werden, die eine korrigierbare Anzahl von Fehlern darin haben, nachdem alle Bereiche des einen oder den mehreren zusammengesetzten Datensätzen im reservierten Datenpuffer gespeichert wurden und mit C1-ECC korrigierbar sind.
-
In Vorgang 510 werden alle noch vorhandenen Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC korrigiert, um einen oder mehrere korrigierte Datensätze zu bilden, und die einen oder mehreren korrigierten Datensätze werden an einen Host gesendet, wenn C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren. Auf diese Weise können sie unter Verwendung der C2-Kodierung über Bereiche korrigiert werden, wenn einige Fehler in dem Datensatz nach dem Zusammensetzen der Bereiche zur Bildung des gesamten Datensatzes übrig bleiben. Wenn die Bereiche zum Beispiel Zeilen sind, dann erfolgt die C2-Kodierung über die Spalten und kann zum Korrigieren jeglicher verbleibender Fehler verwendet werden.
-
Das erneute Lesen des ersten nicht korrigierten Datensatzes von dem Medium kann gemäß einer Ausführungsform weiterhin aufweisen das erneute Lesen einer Anzahl von Datensätzen nachfolgend auf den ersten nicht korrigierten Datensatz von dem Medium.
-
In Vorgang 512 wird wenigstens ein erster nicht korrigierter Datensatz erneut von dem Medium mit einer anderen Einstellung in einer ERP gelesen, wenn ein Fehler in dem ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist, oder wenn ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist. Der erste nicht korrigierte Datensatz wird vor einem beliebigen anderen nicht korrigierten Datensatz auf dem Medium in einer Leserichtung positioniert. Eine Leserichtung bezieht sich auf eine logische Richtung, in der sich das Medium normalerweise während eines Lesevorgangs bewegt, wie zum Beispiel einer Vorwärtsrichtung für ein Band. Wenn ein Band zurückgespült wird, wird die Richtung, in die sich das Band während des Rückspulenvorgangs bewegt, nicht als Leserichtung des Bands betrachtet. Ebenso wird für eine Festplatte die Richtung, in die sich der Kopf während eines Lesevorgangs bewegt, während die Festplatte rotiert, als eine Leserichtung bezeichnet, während jede andere Richtung, in die sich der Kopf bewegt, während er den nächsten Datensatz sucht, nicht als eine Leserichtung betrachtet wird.
-
In einem Ansatz werden alle Bereiche der Mehrzahl von Datensätzen in dem reservierten Datenpuffer nach einem ersten Lesen der Mehrzahl von Datensätzen von dem Medium gespeichert.
-
Gemäß einer Ausführungsform kann das Verfahren 500 wiederholt werden, bis alle korrigierten Datensätze an den Host gesendet wurden, oder eine Anzahl von zulässigen erneuten Leseversuchen eines anfänglichen Fehlerdatensatzes erreicht wird und dies dem Host als nicht lesbar berichtet wird. Die Anzahl der zulässigen erneuten Versuche kann eine Hardware-Einstellung eines Laufwerks sein, eine bestimmte Anzahl basierend auf vergangenen Versuchen, eine Benutzereinstellung oder eine von jedem anderen in der Technik bekannten Verfahren abgeleitete Zahl.
-
Anders ausgedrückt, wird wenigstens ein Bereich der Mehrzahl der Datensätze von dem Medium neu gelesen, und der eine Bereich oder die mehreren gespeicherten Bereiche im reservierten Datenpuffer werden mit Bereichen überschrieben, die weniger korrigierte Fehler darin enthalten, und es wird bestimmt, ob C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren, bis entweder alle korrigierten Datensätze an den Host gesendet wurden, oder bis eine Anzahl von zulässigen erneuten Wiederholungsversuchen erreicht wird, und eine oder mehrere der Mehrzahl der Datensätze dem Host als nicht lesbar berichtet wird bzw. werden.
-
In einem Ansatz kann das Medium ein Magnetband sein und das Verfahren 500 kann von einem Bandlaufwerk durchgeführt werden.
-
Es wird nun auf 6 Bezug genommen, wo eine Syndrom-Prüfung ausführlicher erläutert wird. Wenn die Daten von dem Medium in Form eines Datensatzes gelesen werden, wird der Datensatz an den Laufwerkpuffer übertragen. Eine jede Zeile des Datensatzes weist wenigstens die folgenden Informationen auf: Header-Informationen, Schreibdurchgangsnummer, Datensatznummer, Indikator des nicht korrigierten oder korrigierten Status und korrigierte Bytes der C1-Kodierung. Mithilfe der obigen Informationen ist in einer Ausführungsform das Laufwerk dazu in der Lage, zu verifizieren, dass eine aktuell gelesene Zeile besser als eine zuvor im reservierten Datenpuffer gespeicherte Zeile ist. Dieser Prozess kann wie in 6 dargestellt sein, oder in jeder anderen in der Technik bekannten Weise durchgeführt werden.
-
In 6 beginnt das Verfahren 600 mit Vorgang 602, wo bestimmt wird, ob die C1-Zeile (die aktuelle aus dem Datensatz gelesene Zeile für die restliche Beschreibung des Verfahrens 600) nach dem Lesen des Datensatzes von Band aktualisiert wurde. D.h., während einiger Lesevorgänge von Datensätzen kann eine bestimmte Zeile nicht lesbar sein, und falls sie dies nicht ist, endet das Verfahren 600 bei Vorgang 612, da keine Zeile für einen Vergleich vorhanden ist.
-
In Vorgang 604 wird bestimmt, ob der Header für die C1-Zeile akzeptiert werden kann. Jede Zeile weist Header-Informationen auf, und diese Header-Informationen erleichtern die Bestimmung, ob die korrekte Zeile im Puffer gespeichert ist. Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
-
In Vorgang 606 wird bestimmt, ob die Datensatznummer für die C1-Zeile akzeptiert werden kann. Die Datensatznummer wird ab Beginn des Mediums zugewiesen, wie von 0 bis N. Das Laufwerk weiß, welcher Datensatz im Puffer bearbeitet wird, und es wird bestimmt, ob die Datensatznummer der C1-Zeile mit der im Puffer übereinstimmt. Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
-
In Vorgang 608 wird bestimmt, ob der Schreibdurchgang der C1-Zeile akzeptiert werden kann. Der Schreibdurchgang bezieht sich auf Informationen, die die Generierung des Datensatzes auf dem Medium angeben. Wenn die Datensatznummer die gleiche ist, ist der Datensatz mit einem höheren Schreibdurchgang neuer, wodurch er zum künftigen Datensatz wird. Da das Laufwerk den Schreibdurchgang des Zieldatensatzes kennt, wenn die Schreibdurchgangsnummer der C1-Zeile kleiner ist als der gespeicherte Datensatz, wird die C1-Zeile als älter verworfen und das Verfahren endet bei Vorgang 612.
-
In Vorgang 610 wird bestimmt, ob die Anzahl der Fehler in der C1-Zeile kleiner ist als eine maximale Anzahl der korrigierbaren Fehler, was durch die C1-Kodierung der Zeile im Datensatz bestimmt wird. Dies wird oftmals als Syndrom-Prüfung bezeichnet. Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
-
Bei Vorgang 612 wird die C1-Zeile nicht im Puffer gespeichert und das Verfahren 600 endet, da die C1-Zeile schlechter ist als die aktuell im Puffer gespeicherte Zeile.
-
In Vorgang 614 werden das C1-korrigierte Byte bzw. Bytes basierend auf der C1-Kodierung zur Fehlerkorrektur in der C1-Zeile erhalten.
-
In Vorgang 616 wird bestimmt, ob die Anzahl der korrigierten Byte(s) für die C1-Zeile kleiner ist als die Anzahl der korrigierten Byte(s) für die gespeicherte Zeile. Ist dies der Fall, so geht das Verfahren 600 zu Verfahren 618 weiter, wo die C1-Zeile im Puffer gespeichert ist (und überschreibt möglicherweise eine aktuelle Zeile im Puffer, die der C1-Zeile entspricht). Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
-
Das Flussdiagramm und die Blockdiagramme in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. Es ist ebenso hervorzuheben, dass in einigen alternativen Implementierungen die im Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können in Abhängigkeit von der beinhalteten Funktionalität zwei aufeinanderfolgende Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist auch hervorzuheben, dass jeder Block in den Blockdiagramm- und/oder Flussdiagrammabbildungen und die Kombinationen der Blöcke in den Blockdiagrammund/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert werden können.
-
Es ist offensichtlich, dass die verschiedenen Merkmale der obigen Systeme und/oder Methodologien in beliebiger Weise kombiniert werden können, wodurch eine Mehrzahl von Kombinationen aus den oben dargestellten Beschreibungen erstellt wird.
-
Es ist weiterhin hervorzuheben, dass Ausführungsformen der vorliegenden Erfindung in der Form eines für einen Kunden erbrachten Service bereitgestellt werden können, um einen Service-on-Demand anzubieten.
-
Wenngleich verschiedene Ausführungsformen oben beschrieben wurden, versteht es sich, dass sie nur in beispielhafter Form und nicht als Einschränkung dargestellt wurden. Somit sind die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine beliebige der oben beschriebenen beispielhaften Ausführungsformen beschränkt, sondern sie sollen nur gemäß der folgenden Ansprüche und deren Entsprechungen definiert werden.