DE60032239T2 - Datenintegritätsverwaltung für datenaufzeichnungssysteme - Google Patents

Datenintegritätsverwaltung für datenaufzeichnungssysteme Download PDF

Info

Publication number
DE60032239T2
DE60032239T2 DE60032239T DE60032239T DE60032239T2 DE 60032239 T2 DE60032239 T2 DE 60032239T2 DE 60032239 T DE60032239 T DE 60032239T DE 60032239 T DE60032239 T DE 60032239T DE 60032239 T2 DE60032239 T2 DE 60032239T2
Authority
DE
Germany
Prior art keywords
data
block
blocks
data blocks
host computers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60032239T
Other languages
English (en)
Other versions
DE60032239D1 (de
Inventor
W. Victor Shrewsbury TUNG
Lawrence Stephen Holliston SCARINGELLA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23344027&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60032239(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by EMC Corp filed Critical EMC Corp
Publication of DE60032239D1 publication Critical patent/DE60032239D1/de
Application granted granted Critical
Publication of DE60032239T2 publication Critical patent/DE60032239T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits

Description

  • Allgemeiner Stand der Technik
  • Die Erfindung betrifft das Aufrechterhalten der Integrität von Daten und spezieller das Aufrechterhalten der Integrität von Daten, die in einem Plattenspeichersystem gespeichert werden.
  • In modernen Computersystemen werden zwischen Hostrechner-Prozessoren und dem peripheren Speicher oder Terminals des Systems kontinuierlich Daten transferiert. Während des Lesens, Schreibens oder der eigentlichen Übertragung können Fehler in die Daten eingefügt werden. Folglich wurde Fehlerüberwachung zu einem integralen Bestandteil beim Entwurf moderner Computersysteme. Im Rahmen der gebräuchlichsten Verfahren zur Fehlererkennung werden den Bits, die die eigentlichen Daten repräsentieren, ein oder mehrere sog. Redundanzbits hinzugefügt. Bei diesen Redundanzbits handelt es sich nicht um Daten, sondern um Metadaten, die einzig zur Bestimmung der Korrektheit der Datenbits benutzt werden.
  • Eine beliebte Methode zur Fehlererkennung ist die zyklische Redundanzprüfung (CRC, engl. „Cyclic Redundancy Check"). Bei dieser Methode werden alle Zeichen in einem Nachrichtenblock wie eine serielle Kette aus Bits behandelt, die eine binäre Zahl repräsentieren. Diese Zahl wird dann modulo 2 durch eine vorbestimmte Binärzahl dividiert, und der Rest dieser Division wird als CRC-Zeichen an den Block aus Zeichen angehängt. Das CRC-Zeichen wird am Ende mit dem Prüfzeichen verglichen, das auf gleichartige Weise erhalten wird. Bei Übereinstimmung wird angenommen, dass die Nach richt korrekt ist. Bei Nichtübereinstimmung kann eine Fehlermeldung gesendet werden, oder das empfangende Terminal bzw. der empfangende Hostrechner kann eine Neuübertragung anfordern.
  • Im US-Patent Nr. 5,844,918 werden ein digitales Sende-/Empfangsverfahren, ein digitales Kommunikationsverfahren und eine Datenempfangsvorrichtung offenbart, wobei eine Fehlerkorrektur bezüglich der Gesamtübertragungs-Basisdaten ausgeführt wird. Bezüglich der einzelnen Pakete wird unter Verwendung des Fehlererkennungscodes eine Fehlererkennungsoperation ausgeführt. Wenn festgestellt wird, dass ein Paket Fehler enthält, wird bei der sendenden Seite eine erneute Übertragung dieses Pakets angefordert. Der Fehlerkorrekturcode umfasst Basisdaten und einen daran angehängten, BCH-basierten Paritätscode, der in kleinere Pakete unterteilt ist. An jedes der solchermaßen unterteilten Pakete wird ein Fehlererkennungscode angehängt, und auf diese Weise werden die Übertragungs-Basisdaten ausgebildet. Beim Empfangen der Übertragungs-Basisdaten werden die Basisdaten und ein BCH-basierter Paritätscode aus den Übertragungs-Basisdaten abgeleitet.
  • Es wird auf 1 Bezug genommen. Bei einer herkömmlichen Implementierung nach Stand der Technik, die CRC benutzt, weist ein System 10 einen Enterprise-Plattenspeicher 12 auf, der mit Hostcomputern (nachstehend „Hostrechnern") 14a, 14b, 14c verbunden ist. Der Begriff „Enterprise" bedeutet hier, dass der Plattenspeicher dazu konfiguriert ist, multiple Konnektivität beispielsweise durch von verschiedenen Anbietern bereitgestellte Hostrechner zuzulassen. Das Plattenspeichersystem 12 kann beispielsweise eines aus einer Anzahl verschiedener Symmetrix-Systeme sein, wobei es sich um Produkte der EMC Corporation, Hopkinton, MA, USA handelt. Einzelheiten bezüglich der Architektur und dem Betrieb dieser Systeme finden sich beispielsweise in den Symmetrix Product Manuals für die Modelle 5500, 52XX, 5100, 3500, 32XX und 3100).
  • Es wird auf 2 Bezug genommen. Eine repräsentative Dateneinheit, hier ein 4 KBytes (4096 Bytes) großer Datensektor 30, wird zum Beispiel von dem Hostrechner 14a an den Plattenspeicher 12 übertragen. Jeder Sektor umfasst acht Datenblöcke, die jeweils 512 Bytes lang sind. Mit dem Sektor 30 ist ein von dem Hostrechner 12 mit einem CRC-Algorithmus berechnetes und gespeichertes CRC-Ergebnis 34 assoziiert. Dieses CRC-Ergebnis 34 wird im Allgemeinen von dem Sektor 30 getrennt gespeichert, zum Beispiel auf einem anderen Plattenspeicher. Bei einer normalen Leseoperation wendet der Hostrechner 14a den CRC-Algorithmus erneut an, und das Ergebnis wird mit dem zuvor berechneten und gespeicherten CRC-Ergebnis 34 verglichen. Wenn die Ergebnisse nicht identisch sind, wird, im Allgemeinen in Form einer Fehlermeldung, eine Anzeige darüber, dass ein Fehler aufgetreten ist, bereitgestellt.
  • Die oben beschriebene Anwendung des CRC-Algorithmus durch den Hostrechner 14a ist vergleichsweise unkompliziert, falls der Hostrechner 14a den Lesesektor 30 vollständig anfordert. Wenn der Hostrechner 14a allerdings eine Anforderung sendet, lediglich einen Abschnitt des Sektors 30 auszulesen, zum Beispiel einen 2 KBytes großen Abschnitt, ist der Vorgang nicht annähernd so einfach. In diesem Falle liest der Hostrechner 14a den gesamten Sektor 30 ein und wendet den CRC-Algorithmus sowohl auf den angeforderten Abschnitt als auch auf den restlichen Abschnitt an. Die beiden Ergebnisse werden zusammenaddiert und dann mit dem zuvor berechneten und gespeicherten CRC-Ergebnis 34 verglichen. Somit ist die Rechenzeit, die benötigt wird, um zu bestimmen, ob bei einem Abschnitt des 4-KByte-Sektors 30 ein Fehler aufgetreten ist, in Wirklichkeit länger als die Rechenzeit, die benötigt wird, um zu bestimmen, ob bei dem gesamten 4-KByte-Sektor 30 ein Fehler aufgetreten ist.
  • Kurzdarstellung der Erfindung
  • Merkmal der Erfindung sind ein Verfahren und ein System zum Aufrechterhalten der Integrität von Daten in einem Speichersystem.
  • Gemäß einem allgemeinen Aspekt der Erfindung wird die Integrität von Daten aufrechterhalten, die von einer Mehrzahl von Hostrechnern auf einem Plattenspeichersystem gespeichert werden. Dieses Verfahren umfasst die folgenden Schritte: Eine Größe eines größten Blocks aus der vorbestimmten Anzahl von Blöcken, die von der Mehrzahl von Hostrechnern übertragen werden, wird bestimmt. Es werden Datenblöcke von jedem der Hostrechner empfangen, wobei die einzelnen Datenblöcke jeweils einen vorbestimmten Mehrfachblock-Fehlererkennungscode aufweisen. Die einzelnen Datenblöcke werden gelesen, und es wird für jeden Datenblock ein Informationen enthaltender Abschnitt erzeugt, der einen individuellen Fehlererkennungscode für den jeweiligen Datenblock beinhaltet. An alle Datenblöcke, deren Größe kleiner als die des größten Blocks aus der vorbestimmten Anzahl von Blöcken ist, wird ein Auffüllabschnitt angehängt, der eine Anzahl von Bytes beinhaltet, die ausreicht, um der Größe des größten Blocks aus der vorbestimmten Anzahl von Blöcken zu entsprechen. Dann werden alle Daten blöcke, alle entsprechenden Informationen enthaltenden Abschnitte und, falls notwendig, alle Auffüllabschnitte gespeichert.
  • Diese Anordnung hat besondere Vorteile für die Verwendung mit einem Enterprise-Speichersystem, das benutzt wird, um Daten von verschiedenen Hostrechnern zu speichern, die verschiedene Konventionen zum Speichern von Daten benutzen. Zum Beispiel kann ein Hostrechner einen Block als 512 Bytes lang definieren, wohingegen ein anderer Hostrechner einen Block als 520 Bytes lang definieren kann. In beiden Fällen hängt das Verfahren, wo dies nötig ist, einen Auffüllabschnitt an, so dass alle Blöcke gleich groß sind, wenn sie gespeichert werden.
  • Ausführungsformen dieser Aspekte der Erfindung können eines oder mehrere der folgenden Merkmale aufweisen:
    Jeder Datenblock wird angrenzend an seinen entsprechenden Informationen enthaltenden Abschnitt gespeichert. Somit können anders als bei herkömmlichen Schemata, wo der Fehlererkennungscode auf einer entfernten Speichervorrichtung gespeichert wird, der Datenblock und sein Fehlererkennungscode zusammen gespeichert werden. Somit werden zum Zugreifen auf die Daten und ihren entsprechenden Fehlercode weniger Leseoperationen benötigt. Jeder Informationen enthaltende Abschnitt beinhaltet ferner einen Zeitstempel und/oder eine Anzeige des Autors der Daten. Auf diese Weise kann ein Benutzer bestimmen, ob die Daten „veraltet" (d.h., älter als gewünscht) sind und daher ihre Zuverlässigkeit möglicherweise fragwürdig ist. Die Datenblöcke repräsentieren einen Abschnitt eines Plattenspeichers, beispielsweise einen Sektor einer Platte. Der Sektor des Plattenspeichers ist 4096 Bytes groß, und jeder Block ist 512 Bytes groß.
  • Merkmal eines weiteren Aspekts der Erfindung ist ein Speichersystem zum Speichern von Daten, die von einer Mehrzahl von Hostrechnern verwendet werden, die zum Durchführen der erfinderischen Verfahren eingerichtet sind, wobei jeder Hostrechner zum Übertragen von Datenblöcken fähig ist. Das Speichersystem weist auf: Speicherfeldvorrichtungen zum Speichern von Datenblöcken, die von der Mehrzahl von Hostrechnern übertragen werden, einen Kanaladapter, der mit einem der Hostrechner assoziiert ist und eine erste Datenblockintegritätseinheit zum Anwenden und Speichern von Fehlererkennungsinformationen, die mit den übertragenen Datenblöcken assoziiert sind, beinhaltet und einen Speicherfeldadapter, der mit einer entsprechenden der Speicherfeldvorrichtungen assoziiert ist und eine zweite Datenblockintegritätseinheit zum Beziehen von Datenblöcken von der entsprechenden Speicherfeldvorrichtung und zum Prüfen der Fehlererkennungsinformationen, die mit den gespeicherten Datenblöcken assoziiert sind, beinhaltet.
  • Ausführungsformen dieses Aspekts der Erfindung können eines oder mehrere der folgenden Merkmale aufweisen: Das Plattenspeichersystem weist ferner eine Mehrzahl von Kanaladaptern auf, von denen jeder mit einem entsprechenden der Hostrechner assoziiert ist. Das Plattenspeichersystem weist ferner eine Mehrzahl von Speicherfeldadaptern auf, von denen jeder mit einer entsprechenden der Speicherfeldvorrichtungen assoziiert ist. Das Speichersystem weist einen globalen Speicher auf, der zwischen den Kanaladapter und den Speicherfeldadapter geschaltet ist.
  • Andere Vorteile und Merkmale der Erfindung gehen aus der folgenden Beschreibung und den Ansprüchen hervor.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockdiagrammdarstellung eines herkömmlichen Enterprise-Plattenspeichers, der mit verschiedenen Hosts verbunden ist,
  • 2 ist ein Beispiel für einen Datensektor mit Datenblöcken und einem assoziierten CRC-Ergebnis,
  • 3 ist eine Blockdiagrammdarstellung eines Enterprise-Plattenspeichers, der über eine erfindungsgemäße Datenblockintegritätseinheit mit verschiedenen Hosts verbunden ist,
  • 4 ist eine Blockdiagrammdarstellung einer Datenblockintegritätseinheit für einen Frontend-Steueradapter,
  • 5 ist eine Blockdiagrammdarstellung einer Datenblockintegritätseinheit für einen Backend-Plattenadapter,
  • 6 ist ein Flussdiagramm, das die Arbeitsweise der Integritätseinheit aus 3 während einer Schreiboperation veranschaulicht,
  • 7 ist eine schematische Darstellung eines Datensektors mit Datenblöcken, der von der Integritätseinheit aus 4 empfangen wird, und der resultierenden Daten und dem CRC-Ergebnis, die in dem Enterprise-Plattenspeicher gespeichert werden, und
  • 8 ist ein Flussdiagramm, das die Arbeitsweise der Integritätseinheit aus 5 während einer Leseoperation veranschaulicht.
  • Detaillierte Beschreibung
  • Es wird auf 3 Bezug genommen. Ein Speichersystem 40 weist einen Enterprise-Plattenspeicher 42 auf, der mit hier vier Hostcomputern (nachstehend „Hostrechnern") 14a, 14b, 14c, 14d verbunden ist, die alle von demselben Typ sein können oder, was wahrscheinlicher ist, von verschiedenen Herstellern bereitgestellt sein können. Der Enterprise-Plattenspeicher 42 weist einen Hochgeschwindigkeits-Zwischenspeicher bzw. Cache oder globalen Speicher 44 auf, durch welchen Daten zwischen den Hosts und einer Anzahl von Plattenfeldspeichern 46a, 46b, 46c geleitet werden. Wie nachstehend ausführlicher beschrieben werden wird, weist das Speichersystem Datenintegritätseinheiten auf, die eine Fehlererkennung für individuelle, zwischen den Hostrechnern und den Plattenfeldspeichern laufende Datenblöcke bereitstellen, statt sich auf Mehrblock-Fehlererkennungsschemata zu verlassen, die normalerweise von den Hostrechnern selbst bereitgestellt werden und mit größeren Datenblöcken (z.B. Plattensektoren) assoziiert sind.
  • Die Frontend-Schnittstelle zwischen den Hostrechnern und dem globalen Speicher 44 wird durch Kanaladapter (CA, engl. „channel adapter") 48a, 48b, 48c bereitgestellt, während die Backend-Schnittstelle zwischen dem globalen Speicher und den Plattenfeldspeichern über Plattenadapter (DA, engl. „disk adapter") 50a, 50b, 50c bereitgestellt wird. Diese Kanaladapter und Plattenadapter weisen mehrere eingebettete Prozessoren auf und werden oft als „Direktoren" bzw. „Steuereinheiten" bezeichnet. Globale Speicherbusse (nicht gezeigt) stellen die Konnektivität zwischen dem globalen Speicher 44 und sowohl den Kanaladaptern als auch den Plattenadaptern bereit.
  • Neben anderen Aufgaben empfangen Kanaladapter Daten von einem bestimmten Hostrechner und setzen die Daten in ein Speicherformat zusammen, das mit dem betreffenden Hostrechner kompatibel ist. Jeder Kanaladapter ist dazu konfiguriert, mehrere Hosts zu bedienen. Zum Beispiel ist der Kanaladapter 48b, wie in 3 gezeigt, dazu konfiguriert, mit den Hosts 14b und 14c in Kontakt zu treten. Die einzelnen Kanaladapter 48a, 48b, 48c sind jeweils dazu konfiguriert, einen bestimmten Hosttyp zu bedienen. Zum Beispiel ist der Kanaladapter 48a dazu konfiguriert, mit dem Mainframe-Hostrechner 14a in Kontakt zu treten, der bei dieser Ausführungsform zu der als ESCON (Enterprise System Connection) bekannten Glasfaserkanal-Architektur von IBM konform ist. Der Kanaladapter 48b andererseits ist dazu konfiguriert, mit Hosts in Kontakt zu treten, die konform zu der bekannten SCSI-Schnittstelle (Small Computer Systems Interface) sind. Plattenadapter am Backend empfangen Daten aus dem globalen Speicher 44 und zerlegen die Daten in das mit den Plattenfeldspeichern 46a, 46b, 46c kompatible SCSI-Format.
  • Sowohl die Kanaladapter 48a, 48b, 48c als auch die Plattenadapter 50a, 50b, 50c weisen Datenblockintegritätseinheiten 60 bzw. 62 auf zum Anwenden und Speichern eines Fehlererkennungsalgorithmus auf individuelle Datenblöcke, die zwischen den Hosts und den Plattenfeldspeichern laufen. Zwar können von den Datenblockintegritätseinheiten 60, 62 andere Fehlererkennungsalgorithmen benutzt werden, aber bei dieser Ausführungsform wird eine zyklische Redundanzprüfung (CRC, Cyclic Redundancy Check) benutzt, um die Integrität der Daten aufrechtzuerhalten. Wie nachstehend im Zusammenhang mit 4 und 5 beschrieben werden wird, empfangen die Kanaladapter Daten, die in Plattenfeldspeicher geschrieben werden sollen, und setzen die Daten zu einem Speicherwort zusammen, das ein geeignetes Speicherformat aufweist. Sektionen von vorbestimmter Größe mit Speicherwörtern (z.B. 32 Speicherwörter) werden im Dual-Port-RAM 64 gespeichert, bis dieser voll ist; dann wird der Inhalt des RAMs (im „Burst"-Verfahren) in den globalen Speicher 44 transferiert, wo er von einem geeigneten Plattenadapter gelesen und in einem oder mehreren Plattenfeldspeichern gespeichert werden kann.
  • Es wird auf 4 Bezug genommen, in der eine Ausführungsform einer Datenblockintegritätseinheit 60 eines Kanaladapters (hier: Adapter 48a) gezeigt ist. In diesem Fall ist die Datenblockintegritätseinheit 60 dazu konfiguriert, mit dem ESCON-Mainframe-Hostrechner 14a in Kontakt zu treten. Die Datenblockintegritätseinheit 60 weist einen ESCON-Schnittstellenbus 70 auf, der 32-Bit-Worte (4 Bytes) empfängt, wobei jedes Byte in einem aus vier Empfangspuffern 72 gespeichert wird. Ein Ladepuffer 74 wird benutzt, um die einzelnen Bytes sequentiell aus den Empfangspuffern 72 zu lesen, so dass in jedem Taktzyklus der Inhalt des Ladepuffers in die Zusammensetzbankpuffer 74 einer Zusammensetzstufe 76 gelesen wird.
  • Während die einzelnen Bytes in einen Zusammensetzbankpuffer 74 gelesen werden, berechnet ein CRC-Generator 78 kontinuierlich ein CRC-Ergebnis (in diesem Fall, ein ESCON-CRC-Ergebnis), das in einem „END OF BLK CRC"-Register 80 (dt. „Blockende-CRC-Register") gespeichert wird. Ein BLK-Zähler 82 wird benutzt, um die Anzahl von Bytes zu zählen, die den Ladepuffer 74 durchlaufen. Sobald die Bankpuffer 74 voll sind, werden alle acht Datenbytes parallel in eine erste Pipelinestufe 84 geschoben. Während jedes Taktzyklus werden die acht Datenbytes in eine zweite Pipelinestufe 86 geschoben, die daraufhin die Daten einem Systemdaten-E/A-Bus 88 bereitstellt, der mit dem Dual-Port-RAM 64 verbunden ist. Die zweite Pipelinestufe 86 wird bereitgestellt, um die Wahrscheinlichkeit einer Blockade des ESCON-Schnittstellenbusses 70, der kontinuierlich Daten empfängt, zu minimieren, und um mögliche „Kollisionen" zu vermeiden, wenn andere Steueradapter (möglicherweise auf derselben Platine) um den E/A-Bus 82 konkurrieren.
  • Sobald von dem BLK-Zähler 82 eine vorbestimmte Anzahl von Bytes (z.B. 512 Bytes) gelesen worden ist, werden an die zwischen den Bankpuffern 74 und der ersten Pipelinestufe 84 laufenden Daten FBA-Informationen (8 Bytes) angehängt. Als Teil der angehängten FBA-Informationen in diese aufgenommen sind auch das im Register 80 gespeicherte CRC-Ergebnis sowie ein Formatcode, ein Schreiber-Identifikationscode, ein Softwarestempelcode und eine logische Blockadresse (LBA).
  • Es wird auf 5 Bezug genommen, in der eine Ausführungsform eines Plattenadapters 50a gezeigt wird, die sich zum Beziehen der Daten (d.h. der vom Steueradapter 48a aus 4 zusammengesetzten Daten) und zum Speichern der Daten in einem der Plattenfeldspeicher eignet. Bei dieser Ausführungsform liest die Backend-Datenintegritätseinheit 62 über den SDIO-Bus 91 durch eine Reihe von Puffern 90, 92 und Zerlegebankpuffern 94 Daten aus dem globalen Speicher 44 aus und generiert dann ein CRC-Ergebnis (für den späteren Vergleich), wenn der BLK-Zähler 82 abläuft. Das nächste Speicherwort umfasst die FBA-Informationen, die das CRC-Ergebnis für diesen Block enthalten. Das generierte CRC-Ergebnis wird daraufhin mit dem CRC in den FBA-Informationen vergleichen. Insbesondere weist der Plattenadapter 50a einen Blockgrößenzähler 96 auf, der die Anzahl der gelesenen Bytes nachführt. Sobald die vorbestimmte Anzahl von Bytes, in diesem Falle 512 Bytes, gelesen worden ist, weiß der Zähler 96, dass die FBA-Informationen erwartet werden, welche den Formatcode, die LBA-Startadresse und das Blockende-CRC-Ergebnis beinhalten. All diese Informationen werden geprüft, um zu bestimmen, ob sie das erwartete Ergebnis aufweisen. Falls ja, wird der Speicherblock über den SCSI-Schnittstellenbus 98 in dem passenden Plattenfeldspeicher gespeichert. Falls nicht, wird eine Fehlermeldung generiert. Wenn alle Speicherblöcke aus dem ESCON-Mainframe-Hostrechner 14a in den Plattenfeldspeicher eingelesen worden sind, ist die Schreiboperation abgeschlossen.
  • Bei einer Leseoperation (d.h. ein Hostrechner fordert Daten von einem Plattenfeldspeicher an), führt der Backend-Plattenadapter an den aus dem passenden Plattenfeldspeicher ausgelesenen Speicherblöcken eine CRC-Prüfung durch. Im Speziellen empfängt eine Eingangs-Kippschaltung 100 die einzelnen Speicherworte und übermittelt sie an eine Abfolge aus Schreibpuffern 102, 104 und 106. Während der Zeit, in der Speicherworte von der Kippschaltung 100 an den Schreibpuffer 102 geleitet werden, berechnet ein CRC-Generator 108 für jedes Speicherwort ein CRC-Ergebnis. Es ist wichtig, zu erkennen, dass an einen Block aus Speicherworten FBA-Informationen angehängt worden und zusammen mit diesem in dem Plattenfeldspeicher gespeichert worden sind. Wie dies auch für den Steueradapter 48a der Fall war, zählt ein Blockgrößenzähler 110 die Anzahl der Bytes, die durch die Kippschaltung 100 laufen, und, sobald eine vorbestimmte Anzahl von Bytes (z.B. 512 Bytes) gezählt wurden, bestimmt der Backend-Plattenadapter, dass der nächste Bytesatz die FBA-Informationen beinhaltet, die den Formatcode, die LBA-Startadresse und das Blockende-CRC-Ergebnis umfassen. Falls diese FBA-Informationen mit dem übereinstimmen, was erwartet wurde, wird die Weiterleitung der Speicherworte zum Schreibpuffer 102 zugelassen. Beim Weiterleiten von Speicherworten vom Schreibpuffer 102 an den Schreibpuffer 104 fügt der Plattenadapter 50a einen neuen Schreiber-Identifikationscode ein, der identifiziert, wer die Daten geschrieben hat. Daraufhin werden die Speicherworte über den Schreiberpuffer 106 und den SDIO-Bus 91 an den globalen Speicher 44 weitergeleitet.
  • Es wird erneut auf 4 Bezug genommen. Der Kanaladapter 48a liest Daten aus dem globalen Speicher über den SDIO-Bus 88 in den Dual-Port-RAM 64 und in eine erste Lesepufferstufe 120 ein. Die Daten werden an eine zweite Lesepufferstufe 122 weitergeleitet und in eine Zerlegestufe 124 multiplexiert, die vier Bankpuffer 126 aufweist, welche jeweils acht Bytes Daten aufnehmen. Der Blockzähler 82 wird benutzt, um zu bestimmen, wann für einen Block von Speicherworten die FBA-Informationen erreicht worden sind. An diesem Punkt werden die LBA-Adresse, der Formatcode und das CRC-Ergebnis jeweils in eines der Abtastregister 128, 130 bzw. 132 gespeichert. Diese Informationen werden geprüft, und falls ein Fehler erkannt wird, wird er markiert. Bei bestimmten Ausführungsformen können „CRC ALT"-Puffer aufgenommen werden, die die herkömmliche, vom Hostrechner bereitgestellte CRC-Prüfung unterstützen. Weil die einzelnen Kanaladapter wissen, wann die FBA-Informationen auftreten, prüfen sie das mit jedem Block assoziierte CRC-Ergebnis. Außerdem werden die FBA-Informationen verworfen, nachdem sie geprüft worden sind, weil der Hostrechner sie nicht benötigt. Auf diese Weise setzt sich der Datentransfer fort, bis alle Daten übertragen worden sind.
  • Es ist wichtig, zu erkennen, dass bei dem Ausführungsbeispiel der in 4 gezeigte Steueradapter 48a benutzt wurde, um Daten für einen ESCON-Hostrechner zusammenzusetzen und zu zerlegen. Andere Steueradapter (z.B. 48b und/oder 48c), die mit dem Speichersystem 40 verbunden sind, können dazu konfiguriert werden, Daten von anderen Typen von Hostrechnern zusammenzusetzen bzw. zu zerlegen, z.B. von Hostrechnern, die eine SCSI-Schnittstelle aufweisen.
  • Es wird auf 6 und 7 Bezug genommen. Ein Flussdiagramm (6) fasst die von der Datenblockintegritätseinheit 60 an einem Datensektor 30 (7), der von einem Hostrechner empfangen wurde, ausgeführte Schreiboperation zusammen. Insbesondere werden, wenn ein Hostrechner eine Schreiboperation auf einen der Plattenfeldspeicher anfordert, die Daten zunächst von der Integritätseinheit 60 gelesen. Daten, die von einem Hostrechner übertragen werden, umfassen im Allgemeinen einen Header, der Metadaten (d.h., Informationen, die sich auf die Daten beziehen) beinhaltet. Die Metadaten beinhalten typischerweise zum Beispiel die Größe der Datenblöcke, die übertragen werden, einen Zeit-/Datumsstempel und, wie oben beschrieben wurde, den Autor (Schreiber-Identifikation) der Arbeit. Die Integritätsdateneinheit 60 liest zunächst den Header ein, um die Größe der Blöcke zu bestimmen, die von dem fraglichen Hostrechner übertragen werden (Schritt 140). Der Blockzähler 82 (4) der Integritätseinheit 60 wird initialisiert, und Daten werden gelesen (Schritt 142). Wenn der Zähler 82 anzeigt, dass ein ganzer Block gelesen worden ist (Schritt 144), wird für den betreffenden Block ein CRC-Ergebnis generiert (Schritt 146). Das CRC-Ergebnis wird dann an den Datenblock angehängt und an das passende Plattenspeicherfeld weitergeleitet (Schritt 148), und der Vorgang wird für die nachfolgenden Blöcke wiederholt. Wie sich aus 7 ersehen lässt, hat daher jeder Block (B1, B2, ...) ein assoziiertes CRC-Ergebnis, das mit dem Datenblock gespeichert wird.
  • Es wird auf 8 Bezug genommen. Wenn der Hostrechner das Lesen eines gesamten Sektors oder eines beliebigen Abschnitts eines Sektors aus einem Plattenfeldspeicher anfordert, liest die Integritätseinheit 60 jeden einzelnen Datenblock, sobald er von dem Plattenfeldspeicher bezogen wird (Schritt 150). Dann generiert die Integritätseinheit 60 ein CRC-Ergebnis aus dem Datenblock (Schritt 152). Das neu generierte CRC-Ergebnis wird mit dem zuvor gespeicherten CRC-Ergebnis verglichen (Schritt 154). Falls sich die Ergebnisse unterscheiden, wird eine Fehlermeldung generiert (Schritt 156). Andernfalls wird der Vorgang für nachfolgende Blöcke wiederholt.
  • Weitere Ausführungsformen fallen in den Schutzumfang der Ansprüche. Zum Beispiel muss der Plattenspeicher 40, da es sich bei ihm um eine Enterprise-Speichereinheit handelt, dazu in der Lage sein, Daten von einem beliebigen aus einer Vielfalt unterschiedlicher Hostrechner zu empfangen. Hosts verschiedener Anbieter können jedoch unterschiedliche Blockgrößen benutzen. Zwar ist bei den meisten Architektu ren mit festen Blöcken 512 Bytes eine akzeptierte Blockgröße; dennoch können andere Architekturen eine Blockgröße von zum Beispiel 520 oder 528 Bytes benutzen. In diesem Falle bestimmen die Integritätsdateneinheiten 60 bzw. 62 der Steueradapter bzw. Plattenadapter eine maximale Blockgröße für alle mit dem Plattenspeicher 40 verbundenen Hosts. Sobald dieses Maximum bestimmt worden ist, hängen die Integritätseinheiten 60, 62 bei Schreiboperationen zusätzliche Bytes (ohne Daten) an die Blöcke derjenigen Anbieter an, die die größere Blockgröße nicht unterstützen, so dass alle Blöcke die gleiche Größe haben.

Claims (10)

  1. Verfahren zum Aufrechterhalten der Integrität von Daten, die auf einer Mehrzahl von Hostrechnern (14a–d) auf einem Festplattenspeichersystem (42) gespeichert sind, wobei jeder Hostrechner eine vorbestimmte Anzahl von Datenblöcken überträgt, mit den Schritten: Bestimmen einer Größe eines größten Blocks aus der vorbestimmten Anzahl von Blöcken, die durch die Mehrzahl von Hostrechner (14a–d) übertragen werden; Empfangen einer Mehrzahl von Datenblöcken von jedem der Mehrzahl von Hostrechnern (14a–d), wobei die Mehrzahl der Datenblöcke einen vorbestimmten Mehrfachblock-Fehlererkennungscode aufweisen; Lesen jedes Blocks der Mehrzahl von Datenblöcken; Erzeugen eines Information enthaltenden Abschnitts, der einen individuellen Fehlererkennungscode für den Datenblock beinhaltet, für jeweils jeden Datenblock; Anhängen an jeweils jeden der Mehrzahl von Datenblöcken, der eine Größe aufweist, die geringer als die des größten Blocks der vorbestimmten Anzahl von Blöcken ist, von einem Auffüllabschnitt, der eine Anzahl von Bytes beinhaltet, die ausreicht, um der Größe des größten Blocks aus der vorbestimmten Anzahl von Blöcken zu entsprechen; und Speichern jedes Datenblocks, jedes entsprechenden Information enthaltenden Abschnitts und, falls notwendig, jedes Auffüllabschnitts.
  2. Verfahren nach Anspruch 1, wobei jeder Datenblock kontinuierlich mit jedem entsprechenden Information enthaltenden Abschnitt gespeichert wird.
  3. Verfahren nach Anspruch 1, wobei jeder Information enthaltende Abschnitt ferner einen Zeitstempel beinhaltet.
  4. Verfahren nach Anspruch 1, wobei jeder Information enthaltende Abschnitt ferner einen Autor beinhaltet.
  5. Verfahren nach Anspruch 1, wobei die Mehrzahl von Datenblöcken einen Abschnitt auf einer Festplatte repräsentiert (46a, b, c).
  6. Verfahren nach Anspruch 5, wobei der Abschnitt der Festplatte einen Sektor auf der Festplatte (46a, b, c) repräsentiert.
  7. Festplattenspeichersystem (42) zum Speichern von Daten, die von einer Mehrzahl von Hostrechnern (14a–d) verwendet werden, die zum Durchführen des Verfahrens gemäß einem der Ansprüche 1 bis 6 eingerichtet sind, wobei jeder Hostrechner zum Bereitstellen von Datenblöcken fähig ist, und das Festplattenspeichersystem beinhaltet: eine Mehrzahl von Speicherfeldvorrichtungen (46a–c) zum Speichern von Datenblöcken, die durch die Mehrzahl von Hostrechnern (14a–d) bereitgestellt werden, wobei jeder Block eine vorbestimmte Größe aufweist; einem Kanaladapter (48a–c), der einem der Hostrechner zugeordnet ist (14a–d), wobei der Kanaladapter (48a–c) eine erste Datenblockintegritätseinheit (60) zum Anwenden und Speichern von Fehlererkennungsinformation beinhaltet, die mit den übertragenen Datenblöcken assoziiert ist, unabhängig von der Blockgröße; und einem Speicherfeldadapter (50a–c), der mit einer entsprechender der Speicherfeldvorrichtungen (46a–c) assoziiert ist, wobei der Speicherfeldadapter (50a–c) eine zweite Datenblockin tegritätseinheit (62) zum Beziehen von Datenblöcken von der entsprechenden Speicherfeldvorrichtung (46a–c) beinhaltet und zum Prüfen der Fehlererkennungsinformation, die mit den gespeicherten Datenblöcken assoziiert ist.
  8. Festplattenspeichersystem nach Anspruch 7, das ferner eine Mehrzahl von Kanaladaptern (48a–c) beinhaltet, wobei jeder mit einem entsprechenden der Hostrechner assoziiert ist (14a–d).
  9. Festplattenspeichersystem nach Anspruch 7, das ferner eine Mehrzahl von Speicherfeldadaptern (50a–c) beinhaltet, wobei jeder mit einer entsprechenden der Speicherfeldvorrichtungen (46a–c) assoziiert ist.
  10. Festplattenspeichersystem nach Anspruch 7, das ferner einen globalen Speicher (44) aufweist, der zwischen dem Kanaladapter (48a–c) und dem Speicherfeldadapter (50a–c) verbunden ist.
DE60032239T 1999-06-29 2000-06-29 Datenintegritätsverwaltung für datenaufzeichnungssysteme Expired - Lifetime DE60032239T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US342955 1999-06-29
US09/342,955 US6915475B1 (en) 1999-06-29 1999-06-29 Data integrity management for data storage systems
PCT/US2000/017942 WO2001001581A1 (en) 1999-06-29 2000-06-29 Data integrity management for data storage systems

Publications (2)

Publication Number Publication Date
DE60032239D1 DE60032239D1 (de) 2007-01-18
DE60032239T2 true DE60032239T2 (de) 2007-05-31

Family

ID=23344027

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60032239T Expired - Lifetime DE60032239T2 (de) 1999-06-29 2000-06-29 Datenintegritätsverwaltung für datenaufzeichnungssysteme

Country Status (4)

Country Link
US (1) US6915475B1 (de)
EP (2) EP1758253A1 (de)
DE (1) DE60032239T2 (de)
WO (1) WO2001001581A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111228B1 (en) * 2002-05-07 2006-09-19 Marvell International Ltd. System and method for performing parity checks in disk storage system
US7996731B2 (en) 2005-11-02 2011-08-09 Advanced Micro Devices, Inc. Error detection in high-speed asymmetric interfaces
US20090238365A1 (en) 2008-03-20 2009-09-24 Kinamik Data Integrity, S.L. Method and system to provide fine granular integrity to digital data
WO2016122655A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Validating data in a storage array

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833679A (en) * 1987-08-31 1989-05-23 International Business Machines Corporation Method and apparatus with improved error correction and error information availability
US4849975A (en) * 1987-11-10 1989-07-18 International Business Machines Corporation Error correction method and apparatus
US5148432A (en) 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
WO1991001524A1 (en) 1989-07-19 1991-02-07 Cray Research, Inc. An error recovery method and apparatus for high performance disk drives
US5285456A (en) * 1991-05-15 1994-02-08 International Business Machines Corporation System and method for improving the integrity of control information
US5369758A (en) 1991-11-15 1994-11-29 Fujitsu Limited Checking for proper locations of storage devices in a storage array
US5483641A (en) 1991-12-17 1996-01-09 Dell Usa, L.P. System for scheduling readahead operations if new request is within a proximity of N last read requests wherein N is dependent on independent activities
JP2721099B2 (ja) * 1991-12-18 1998-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション エラーバースト修正のための試行錯誤方法及びマルチバイトエラーの修正方法
JP3264465B2 (ja) * 1993-06-30 2002-03-11 株式会社日立製作所 記憶システム
US5465260A (en) 1993-11-04 1995-11-07 Cirrus Logic, Inc. Dual purpose cyclic redundancy check
US5632012A (en) * 1993-11-24 1997-05-20 Storage Technology Corporation Disk scrubbing system
US6131176A (en) * 1994-06-07 2000-10-10 Unisys Corporation On-the-fly data integrity transfer system handling mixed block sizes
US5778009A (en) 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
US5844918A (en) 1995-11-28 1998-12-01 Sanyo Electric Co., Ltd. Digital transmission/receiving method, digital communications method, and data receiving apparatus
US5884055A (en) * 1996-11-27 1999-03-16 Emc Corporation Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource
US5890219A (en) * 1996-11-27 1999-03-30 Emc Corporation Redundant writing of data to cached storage system
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
US5894485A (en) * 1997-03-31 1999-04-13 Emc Corporation Disk array write protection at the sub-unit level
US6269464B1 (en) * 1997-06-18 2001-07-31 Sutmyn Storage Corporation Error checking technique for use in mass storage systems
US5941998A (en) * 1997-07-25 1999-08-24 Samsung Electronics Co., Ltd. Disk drive incorporating read-verify after write method

Also Published As

Publication number Publication date
WO2001001581A1 (en) 2001-01-04
EP1198891B1 (de) 2006-12-06
DE60032239D1 (de) 2007-01-18
US6915475B1 (en) 2005-07-05
WO2001001581A9 (en) 2002-07-25
EP1758253A1 (de) 2007-02-28
EP1198891A1 (de) 2002-04-24

Similar Documents

Publication Publication Date Title
US4961134A (en) Method for minimizing locking and reading in a segmented storage space
DE69727083T2 (de) Überprüfungssystem um die integrität der parität einer speicherplattenmatrix aufrechtzuerhalten
DE69827949T2 (de) Gerät und verfahren um speicherfehler zu erkennen und zu berichten
CN111104244A (zh) 用于在存储阵列组中重建数据的方法和设备
DE102011085989B4 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE69434381T2 (de) Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
DE69821426T2 (de) Speicheranordung, und Datenverarbeitungssystem und -Verfahren
DE60303895T2 (de) Hybridimplementierung von Fehlerkorrekturkoden eines nichtflüchtigen Speichersystems
DE69432878T2 (de) Informationsverarbeitungssystem mit Flash-Speicher und Cache-Speicher
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112014001305B4 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
DE202008018572U1 (de) Speichersystem
DE102009051862A1 (de) Speichervorrichtung und Speicherverfahren
DE4423949A1 (de) E/A-Hilfssystem und Exklusiv-Steuerverfahren, Datenspeicherverfahren und Speicherinitialisierungsverfahren in einem E/A-Hilfssystem
DE102007010250A1 (de) Hierarchische Zeitstempel
DE69820164T2 (de) Speichervorrichtung sowie Datenlese- und Schreibverfahren
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE112018004637T5 (de) Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE102018124836A1 (de) Neuartiger speicherbaustein
DE60032239T2 (de) Datenintegritätsverwaltung für datenaufzeichnungssysteme
DE102021127814A1 (de) Ablagespeichersteuerung, operationsverfahren dafür

Legal Events

Date Code Title Description
8364 No opposition during term of opposition