DE60310530T2 - Eine Speicherplattenanordnung basierend auf Festplatten mit Zugriffseinheiten fester Länge - Google Patents

Eine Speicherplattenanordnung basierend auf Festplatten mit Zugriffseinheiten fester Länge Download PDF

Info

Publication number
DE60310530T2
DE60310530T2 DE60310530T DE60310530T DE60310530T2 DE 60310530 T2 DE60310530 T2 DE 60310530T2 DE 60310530 T DE60310530 T DE 60310530T DE 60310530 T DE60310530 T DE 60310530T DE 60310530 T2 DE60310530 T2 DE 60310530T2
Authority
DE
Germany
Prior art keywords
disk
data
data block
lrc
group
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
DE60310530T
Other languages
English (en)
Other versions
DE60310530D1 (de
Inventor
Akihiro Chiyoda-ku Mannen
Naoto Chiyoda-ku Matsunami
Ikuya Chiyoda-ku Yagisawa
Masahiko Chiyoda-ku Sato
Masahiro Chiyoda-ku Arai
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE60310530D1 publication Critical patent/DE60310530D1/de
Application granted granted Critical
Publication of DE60310530T2 publication Critical patent/DE60310530T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf ein Plattenarraysystem, das für die Datenspeicherung in einem Computersystem verwendet wird, und insbesondere auf die Optimierung der Zuverlässigkeit eines Plattenarraysystems, das als Speichermedien eine Gruppe von Plattenvorrichtungen mit Zugriffseinheiten fester Länge verwendet.
  • Beschreibung des Stands der Technik
  • Ein Plattenarraysystem, auch als RAID (Redundant Array of Inexpensive Disks) bezeichnet, besteht im Wesentlichen aus einer Reihe von Plattenvorrichtungen, die als eine Array oder Anordnung organisiert sind. In einem Plattenarraysystem wird eine Anforderung von einem Hostcomputer zum Lesen oder Schreiben von Daten auf mehr als einer Plattenvorrichtung parallel ausgeführt, was zu einer schnelleren Ein-/Ausgabeverarbeitung führt. Darüber hinaus ist es üblich, redundante Daten an die auf den Platten gespeicherten Daten anzuhängen, wodurch die Zuverlässigkeit in sich erhöht wird. Plattenarraysysteme werden je nach ihrer Systemkonfiguration (das heißt wie die Platten organisiert sind) und der Art der angehängten redundanten Daten in fünf Stufen eingeteilt. Die Technologien für Plattenarraysysteme sind in „A Case for Redundant Arrays of Inexpensive Disks (RAID)" von David A. Patterson et al. in Proceedings of the 1988 ACM SIGMOD International Conference on Management of Data, S. 109 bis 116, beschrieben.
  • Zwei Merkmale sind wesentlich in Plattenarraysystemen:
    das Zerhacken von Daten und das Assemblieren von Daten. Beim Schreiben in ein Plattenarraysystem muss die Schreib anforderung vom Host in mehrere Anforderungen für mehrere Plattenvorrichtungen übersetzt werden, und die Daten sollten in mehrere Stücke unterteilt werden, die dann in mehreren Plattenvorrichtungen gespeichert werden (Zerhacken von Daten), während beim Lesen von einem Plattenarraysystem die Leseanforderung vom Host in mehrere Anforderungen an mehrere Plattenvorrichtungen übersetzt werden muss, und die kleinen Stücke von Daten, die aus den mehreren Plattenvorrichtungen gelesen werden, sollten zu einem bedeutungsvolleren Block von Daten zusammengestellt werden (Assemblieren von Daten). Das Zerhacken und das Assemblieren von Daten werden hier allgemein als Plattenarraysteuerung bezeichnet.
  • In den meisten Plattenarraysystemen wird aus Gründen der Zuverlässigkeit ein redundantes Stück Daten an die Originaldaten angehängt und in den Plattenvorrichtungen gespeichert, so dass im Falle eines Ausfalls einer der Plattenvorrichtungen die Originaldaten wiederhergestellt werden können. Zur weiteren Verbesserung der Zuverlässigkeit eines gesamten Plattenarraysystems besteht ein anderes bekanntes Merkmal darin, an jeden logischen Datenblock einen Validierungscode anzuhängen. Wie zum Beispiel in den Patent-Offenlegungsschriften 2001-202295 und 2000-347815 beschrieben, kann ein Validierungscode aus der logischen Adresse (LA) des logischen Blocks und dem Längs- oder Blockprüfzeichen (LRC) bestehen, das das Ergebnis einer Reihe von exklusiven ODER-Operationen ist, die horizontal (in Längsrichtung) an allen Bytes oder Bytegruppen in dem logischen Block ausgeführt werden. Bei einer Schreiboperation wird ein solcher Validierungscode für jeden logischen Datenblock erzeugt und auf den Platten zusammen mit den Daten gespeichert; bei einer Leseoperation wird ein Validierungscode aus dem gelesenen logischen Datenblock erzeugt und dann mit dem ursprünglich mit den betreffenden Daten gespeicherten Validierungscode verglichen. Eine Nichtübereinstimmung würde bedeuten, dass die Adresse oder die Daten beschädigt sind.
  • US-5.588.012 beschreibt ein Plattenarraysystem mit mehreren Plattenvorrichtungen mit einer festen Blockgröße von zum Beispiel 512 Byte zum Speichern von Daten. An jeden Block angehängt ist ein CRC-Code. In dem Dokument wird vorgeschlagen, die Adresse des Blocks als Ausgangswert für den CRC-Code zu verwenden.
  • Weitere Plattenarraysysteme sind in EP-A-0.601.699 und EP-A-0.569.313 beschrieben.
  • Zusammenfassung der Erfindung
  • Eine übliche herkömmliche Plattenvorrichtung weist eine feste Sektorgröße von 512 Byte auf, und der Zugriff erfolgt in Einheiten eines Sektors, der die kleinste Zugriffseinheit ist.
  • Andererseits verwenden typische Plattenarraysysteme nach dem Stand der Technik Plattenvorrichtungen mit variablen Sektorgrößen, zum Beispiel SCSI-Platten (Small Computer System Interface) und FC-Platten (Fiber Channel). Bei einer solchen Konfiguration stellt es kein Problem dar, die Größe des logischen Datenblocks auf 512 Byte einzustellen, der üblichen Sektorgröße von herkömmlichen Plattenvorrichtungen. Selbst wenn 512 Byte als die Länge des logischen Datenblocks verwendet werden und ein 8-Byte-Validierungscode, bestehend aus einer LA (4 Byte) und einem LRC (4 Byte) angehängt wird, wodurch die Zugriffseinheit effektiv auf 520 Byte vergrößert wird, ist der Zugriff auf die Plattenvorrichtungen mit 520 Byte als Sektorgröße möglich.
  • Wenn jedoch ein Plattenarraysystem aus herkömmlichen Plattenvorrichtungen mit einer festen Sektorgröße von 512 Byte aufgebaut werden soll, würde die vorstehend genannte Kombination von Datenblockgröße und Validierungscode ein Problem verursachen, weil 520 Byte nicht als Sektorgröße verwendet werden können.
  • Ein Ziel der Erfindung ist die Bereitstellung eines Plattenarraysystems und eines Verfahrens zum Speichern von Daten in einem Plattenarraysystem mit verbesserter Zuver lässigkeit unter Verwendung von Plattenvorrichtungen mit einer Zugriffseinheit fester Länge. Dieses Ziel wird mit dem Plattenarraysystem nach Anspruch 1 und dem Verfahren nach Anspruch 8 erreicht. Die abhängigen Ansprüche beziehen sich auf bevorzugte Ausführungsformen der Erfindung. Die vorliegende Erfindung stellt eine Einrichtung zum Anhängen eines Validierungscodes in einem Plattenarraysystem mit einer Anordnung oder Array von Plattenvorrichtungen mit einer Zugriffseinheit fester Länge bereit. Ausführungsformen der vorliegenden Erfindung stellen ein Plattenarraysystem auf der Grundlage einer Anordnung oder Array von Plattenvorrichtungen mit einer Zugriffseinheit fester Länge mit einem Zuverlässigkeitsniveau bereit, das mindestens so hoch wie das von herkömmlichen Plattenarraysystemen auf der Grundlage einer Anordnung oder Array von Plattenvorrichtungen mit einer Zugriffseinheit variabler Länge ist.
  • Zu diesem Zweck ist das Plattenarraysystem auf der Grundlage einer Array von Plattenvorrichtungen mit einer Zugriffseinheit fester Länge mit einer Einrichtung zum Erzeugen eines Validierungscodes für jede Zugriffseinheit und einer Einrichtung zum Speicher des Validierungscodes und der Originaldaten in verschiedenen Teilen des Speichers in den Plattenvorrichtungen versehen.
  • Kurzbeschreibung der Zeichnungen
  • 1 zeigt die Konfiguration eines Computersystems nach der bevorzugten Ausführungsform der vorliegenden Erfindung.
  • 2 zeigt ein Beispiel für einen erweiterten Datenblock.
  • 3 zeigt ein Beispiel für eine LA/LRC-Gruppe.
  • 4 zeigt ein Beispiel für die Anordnung der logischen Datenblöcke und LA/LRC-Gruppen in einer Plattenvorrichtungsgruppe.
  • 5 zeigt ein Ablaufdiagramm für den Vorgang der Datenübertragung vom Plattencache an die Plattenvorrichtungsgruppe.
  • 6 zeigt ein Ablaufdiagramm für den Vorgang der Datenübertragung von der Plattenvorrichtungsgruppe an den Plattencache.
  • Beschreibung der bevorzugten Ausführungsform
  • Die bevorzugte Ausführungsform wird nachstehend anhand von 1 bis 6 beschrieben.
  • Die Art, Ziele und Vorteile der vorliegenden Erfindung werden für den Fachmann nach Lektüre der nachstehenden ausführlichen Beschreibung der bevorzugten Ausführungsform in Verbindung mit den anliegenden Zeichnungen besser verständlich. Dabei ist zu beachten, dass die Erfindung nicht durch die gezeigte bestimmte Ausführungsform eingeschränkt ist, sondern lediglich durch den Umfang der anliegenden Ansprüche.
  • Zuerst wird die Systemkonfiguration nach der bevorzugten Ausführungsform der vorliegenden Erfindung unter Bezugnahme auf 1 beschrieben.
  • Ein Hostcomputer (nachstehend einfach als Host bezeichnet) A 100, ein Host B 110 und ein Host C 120 sind Vorrichtungen, die Lese-/Schreibanforderungen an ein Plattenarraysystem 200 ausgeben und die damit verbundenen Ein-/Ausgabeoperationen ausführen. Diese Hosts sind über eine Busweiche 130 mit dem Plattenarraysystem 200 verbunden.
  • Das Plattenarraysystem 200 umfasst Host-Eingangs-/Ausgangsinterfaces 210 und 211, einen Plattencache 230, Platten-Eingangs-/Ausgangsinterfaces 250 und 251, Plattenvorrichtungsgruppen 270 und 271, einen Prozessor (MPU) 280 für die Steuerung des gesamten Betriebs des Plattenarraysystems, eine Busbrücke 285, einen Speicher 290 und eine Cache-Steuerung 300. Jede der Plattenvorrichtungsgruppen 270 und 271 umfasst mehr als eine Plattenvorrichtung. In dem in 1 gezeigten Beispiel umfasst die Plattenvorrichtungs gruppe 270 die Plattenvorrichtungen 277 bis 279. Während in 1 jeweils zwei Einheiten oder Gruppen von Host-Eingangs-/Ausgangsinterfaces, Platten-Eingangs-/Ausgangsinterfaces und Plattenvorrichtungsgruppen gezeigt sind, könnte es alternativ als eine Variante der bevorzugten Ausführungsform auch nur eine oder eine beliebige Anzahl dieser Einheiten oder Gruppen geben.
  • Host-Eingangs-/Ausgangsinterfaces, Cache-Steuerung, MPU, Busbrücke, Speicher, Plattencache und Platten-Eingangs-/Ausgangsinterfaces werden zusammenfassend als Plattensteuerung bezeichnet.
  • Der Host A 100, der Host B 110 und der Host C 120 sind über einen Host-Bus A 140 und einen Host-Bus B 141 mit den Host-Eingangs-/Ausgangsinterfaces 210 bzw. 211 im Plattenarraysystem 200 verbunden. Während in 1 drei Hosts gezeigt sind, kann eine beliebige Anzahl von Hosts (außer null) mit dem Plattenarraysystem 200 verbunden sein.
  • Nach Empfang einer Eingabe-/Ausgabeanforderung (Lese-/Schreibanforderung) vom Host A 100, Host B 110 oder Host C 120 wird entweder das Host-Eingangs-/Ausgangsinterface 210 oder das Host-Eingangs-/Ausgangsinterface 211, das die Datenübertragung zwischen dem Host und der Cache-Steuerung 300 ausführt, über einen hostseitigen internen Bus 220 mit der Cache-Steuerung 300 verbunden.
  • Die Platten-Eingangs-/Ausgangsinterfaces 250 und 251, die die Datenübertragung zwischen den Plattenvorrichtungsgruppen 270 und 271 und der Cache-Steuerung 300 ausführen, werden über einen Plattenbus A 260 bzw. einen Plattenbus B 261 mit den Plattenvorrichtungsgruppen 270 und 271 und über einen plattenseitigen internen Bus 240 auch mit der Cache-Steuerung 300 verbunden. Das Platten-Eingangs-/Ausgangsinterface 250 enthält einen (weiter unten beschriebenen) LA/LRC-Splitter/Joiner 255, der eine LA und ein LRC von dem zwischen der Cache-Steuerung 300 und der Plattenvorrichtungsgruppe 270 übertragenen logischen Datenblock abtrennt bzw. an diesen anhängt. Das Platten-Eingangs-/Aus gangsinterface 251 weist denselben Aufbau und dieselbe Funktion im Hinblick auf die Plattenvorrichtungsgruppe 271 auf wie das Platten-Eingangs-/Ausgangsinterface 250 für die Plattenvorrichtungsgruppe 270.
  • Bei der hier beschriebenen bevorzugten Ausführungsform der vorliegenden Erfindung sind die Plattenvorrichtungen 277 bis 279 jene mit einer festen Sektorlänge von 512 Byte, zum Beispiel ATA-Platten (AT Attachment) oder SATA-Platten (Serial ATA). Diese Plattenvorrichtungen haben den Vorteil, dass sie preiswert sind, denn sie sind für etwa ein Drittel des Preises von SCSI- oder FC-Platten erhältlich, die variable Sektorlängen aufweisen. Daher ist es mit diesen Plattenvorrichtungen möglich, preiswerte Plattenarraysysteme aufzubauen. ATA- und SATA-Platten unterliegen jedoch Einschränkungen hinsichtlich der Anzahl von Plattenvorrichtungen, die an einen Bus angeschlossen werden können. An einen einzelnen Bus können bis zu zwei ATA-Platten bzw. nur eine SATA-Platte angeschlossen werden. Daher sollten die Plat- ten-Eingangs-/Ausgangsinterfaces 250 und 251 mit einer ausreichenden Anzahl von Ports zum Anschluss einer geeigneten Anzahl von Plattenbussen A 260 bzw. B 261 versehen sein, um alle Plattenvorrichtungen im System zu berücksichtigen.
  • Während für die Beschreibung der bevorzugten Ausführungsform davon ausgegangen wird, dass die Plattenvorrichtungen in dem Plattenarraysystem 200 eine feste Sektorlänge von 512 Byte aufweisen, kann alternativ eine beliebige Anzahl zum Beispiel 2048 Byte als feste Sektorlänge gewählt werden.
  • Der Plattencache 230 ist über einen Cache-Bus 231 mit der Cache-Steuerung 300 verbunden.
  • Die Cache-Steuerung 300 umfasst einen hostseitigen internen Buspuffer 310, der die zwischen den Host-Eingangs-/Ausgangsinterfaces 210 und 211 und dem Plattencache 230 übertragenen Daten zwischenspeichert, eine Cache-Steuereinheit 320, die die Datenübertragung zwischen dem Plattencache 230 und der Cache-Steuerung 300 steuert, und einen plattenseitigen internen Buspuffer 330, der die zwischen den Platten-Eingangs-/Ausgangsinterfaces 250 und 251 und dem Plattencache 230 übertragenen Daten zwischenspeichert. Die Cache-Steuerung 300 umfasst weiter eine LA/LRC-Anhäng-, Prüf- und Löscheinheit 340, die eine LA und ein LRC (weiter unten beschrieben) an die von den Host-Eingangs-/Ausgangsinterfaces 210 und 211 an den Plattencache 230 übertragenen Daten anhängt, die LA und das LRC prüft und löscht, die an die vom Plattencache 230 an die Host-Eingangs-/Ausgangsinterfaces 210 und 211 übertragenen Daten angehängt worden sind, und die LA und das LRC prüft, die an die zwischen dem Plattencache 230 und den Eingangs-/Augangsinterfaces 250 und 251 übertragenen Daten angehängt worden sind.
  • Die MPU 280 ist über die Busbrücke 285 mit dem Speicher 290 und der Cache-Steuerung 300 verbunden.
  • Der Speicher 290 enthält ein Plattenarray-Steuerprogramm 291, das die MPU 280 zur Durchführung der Plattenarraysteuerung verwendet, und ein internes Datenübertragungs-Steuerprogramm 292, das die Cache-Steuerung 300 anweist, eine LA anzuhängen, und außerdem Datenübertragungsbefehle an die Host-Eingangs-/Ausgangsinterfaces 210 und 211 oder die Platten-Eingangs-/Ausgangsinterfaces 250 und 251 ausgibt.
  • LA, und LRC werden nachstehend erläutert, gefolgt von einer Beschreibung, wie die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 diese Elemente an die übertragenen Daten anhängt, sie darin prüft bzw. sie daraus löscht.
  • Das Plattenarraysystem 200 nach der bevorzugten Ausführungsform teilt die von einem Hostcomputer empfangenen Daten zur Verwaltung und Verarbeitung in eine Reihe von logischen Blöcken auf. Die kleinste Verwaltungs- und Verarbeitungseinheit wird als logischer Datenblock bezeichnet. Bei der bevorzugten Ausführungsform wird angenommen, dass die Größe des logischen Datenblocks 512 Byte beträgt, was der kleinsten Lese- und Schreibeinheit (das heißt Sektorgröße) entspricht.
  • Die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 hängt an jeden logischen Datenblock einen als LA bezeichneten Validierungscode an, der eine Länge von 4 Byte aufweist und einen Teil der Quelladresse enthält, so dass jeder Versuch, aus einer nicht richtig mit dem logischen Datenblock verbundenen Adresse zu lesen bzw. in eine solche zu schreiben, erkannt werden kann. Für eine zusammenhängende Gruppe von logischen Datenblöcken sind die entsprechenden LA zusammenhängend. Die MPU 280 liefert der LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 einen entsprechenden Wert, indem sie das im Speicher 290 gespeicherte interne Datenübertragungs-Steuerprogramm 292 ausführt. Die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 hängt als LA den von der MPU 280 angegebenen Wert an den ersten der aus den von der Cache-Steuerung 300 eingegebenen Daten erzeugten logischen Datenblöcke an sowie an jeden folgenden logischen Datenblock den von der MPU 280 angegebenen Wert plus der Anzahl der logischen Datenblöcke vor diesem.
  • Das LRC, das eine Länge von 4 Byte aufweist, ist das Ergebnis von exklusiven ODER-Operationen, die in Längsrichtung an allen 129 Einheiten von 4 Byte ausgeführt werden, die zusammen das 516-Byte-Composite aus den ursprünglichen 512 Byte des logischen Datenblocks und der LA (4 Byte) bilden. Die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 berechnet ein LRC für das Composite jedes ursprünglichen Datenblocks und dessen zugehöriger LA und hängt es an dieses Composite an, um einen erweiterten Datenblock von 520 Byte zu erhalten. Jedes Mal, wenn ein Datenblock gelesen, geschrieben oder übertragen wird, kann die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 einen Datenbitfehler feststellen, der in der Plattenvorrichtung oder während der Datenübertragung aufgetreten ist, indem sie ein LRC für das Composite aus dem Datenblock und dessen zugehöriger LA berechnet und es mit dem LRC vergleicht, das an den Datenblock angehängt ist.
  • Ausführliche Beschreibungen, wie LA und LRC angehängt, geprüft und gelöscht werden, finden sich in den Patent-Offenlegungsschriften 2001-202295 und 2000-347815.
  • 2 zeigt, wie die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 eine LA und ein LRC an die Daten anhängt. Ein logischer Datenblock 401, ein logischer Datenblock 411 und ein logischer Datenblock 421 sind eine Folge von Datenblöcken, die von der Cache-Steuerung 300 durch Zerhacken einer zusammenhängenden Gruppe von drei logischen Datenblöcken erhalten wird, die ein Stück der vom Host A 100 an das Plattenarraysystem 200 übertragenen Hostdaten bilden. Die LA 402 mit einer Länge von 4 Byte ist die LA für den logischen Datenblock 401 und wird an dessen Ende angehängt. Das Ergebnis von exklusiven ODER-Operationen mit einer Breite von 4 Byte, die in Längsrichtung an dem Composite des logischen Datenblocks 401 und der LA 402 von Byte-Position 1 bis Byte-Position 516 ausgeführt werden, wird als ein LRC 403 mit einer Länge von ebenfalls 4 Byte rechts neben der LA 402 angefügt. LA 412 und LRC 413 sowie LA 422 und LRC 423 sind die LA- und LRC-Werte entsprechend den logischen Datenblöcken 411 bzw. 421 und werden in gleicher Weise wie LA 402 und LRC 403 an diese angehängt. Der logische Datenblock 401, die LA 402 und das LRC 403 werden zusammenfassend als erweiterter Datenblock 400 mit einer Länge von 520 Byte bezeichnet. Entsprechend den logischen Datenblöcken 411 und 421 gibt es auch erweiterte Datenblöcke 410 bzw. 420.
  • Die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 hängt eine LA und ein LRC bei einer Datenübertragung vom Host-Interface 210 oder 211 an den Plattencache 230 an. Bei einer Datenübertragung vom Plattencache 230 an das Host-Interface 210 oder 211 prüft die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340, ob ein Fehler in der LA oder dem LRC in dem aus dem Plattencache ausgelesenen erweiterten Datenblock vorliegt; liegt kein Fehler vor, löscht sie die LA und das LRC (insgesamt 8 Byte) aus dem erweiterten Daten block. Danach sendet die Cache-Steuerung 300 nur den Datenteil, das heißt den ursprünglichen logischen Datenblock mit 512 Byte, an das Host-Interface 210 oder 211. Dadurch führt der hostseitige interne Bus 220 logische Datenblöcke, während der Cache-Bus 231 und der plattenseitige interne Bus 240 erweiterte Datenblöcke führen.
  • Die zwischen dem Plattencache 230 und den Platten-Eingangs-/Ausgangsinterfaces 250 und 251 übertragenen Daten weisen ein erweitertes Format auf. Bei einer Datenübertragung zwischen dem Plattencache 230 und dem Platten-Eingangs-/Ausgangsinterface 250 oder 251 prüft die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340, ob ein Fehler in der LA oder dem LRC vorliegt; liegt kein Fehler vor, erlaubt sie die Fortsetzung der Datenübertragung. Liegt ein Fehler vor, führt die LA/LRC-Anhäng-, Prüf- und Löscheinheit 340 kein Löschen durch, sondern informiert einfach die MPU 280, die dies mit einer Fehlerhandhabungsroutine erledigt.
  • Der LA/LRC-Splitter/Joiner 255, der in jedem der Platten-Eingangs-/Ausgangsinterfaces 250 und 251 enthalten ist, wird nachstehend beschrieben, gefolgt von einer Erläuterung, wie Datenblöcke, LA und LRC in einer Plattenvorrichtung mit einer festen Sektorlänge von 512 Byte gespeichert werden. Da die bei der bevorzugten Ausführungsform verwendeten Plattenvorrichtungen eine feste Sektorlänge von 512 Byte aufweisen, entspricht die kleinste Einheit für eine Lese- oder Schreiboperation aus oder zu diesen 512 Byte. Daher passt ein erweiterter Datenblock mit einer Länge von 520 Byte nicht in einen Block auf der Platte. Der Validierungscode, der aus der LA und dem LRC besteht, hat eine Länge von 8 Byte und ist zu klein, um einen Block auf der Platte zu belegen. Wenn bei jedem Speichern eines logischen Datenblocks der Validierungscode auf der Platte gespeichert werden soll, wären 504 Byte, das heißt 512 Byte minus 8 Byte, nutzlose Daten für jeden zusätzlichen Block des Validierungscodes, was zu einer erheblichen Verschwendung von Plattenplatz führt.
  • Die bevorzugte Ausführungsform der vorliegenden Erfindung löst dieses Problem des verschwendeten Plattenplatzes durch gemeinsame Verwaltung der Validierungscodes für mehrere logische Datenblöcke, wie in 3 gezeigt. Weil 64 mal 8 den Wert 512 ergibt, stellt der LA/LRC-Splitter/Joiner 255 insgesamt 64 Validierungscodes entsprechend 64 logischen Datenblöcken zusammen, um eine LA/LRC-Gruppe von 512 Byte zu bilden, die sauber in einen Sektor passt.
  • Im Einzelnen ordnet jedes der Platten-Eingangs-/Ausgangsinterfaces 250 und 251 Daten und Validierungscodes in Einheiten von 1 Megabyte (= 1.024 × 1.024 Byte) an, wie in 4 gezeigt, so dass 2.016 logische Datenblöcke in den ersten 2.016 Sektoren und deren entsprechende Validierungscodes (LA und LRC) in den restlichen 32 Sektoren gespeichert werden. Die LA/LRC-Gruppe 1 ist eine Sammlung von 64 Validierungscodes entsprechend den 64 logischen Datenblöcken von DATA1 bis DATA64; in gleicher Weise ist die LA/LRC-Gruppe 2 eine Sammlung von 64 Validierungscodes, entsprechend den 64 logischen Datenblöcken von DATA65 bis DATA128. Von den 2.048 Sektoren, die 1 Megabyte bilden, sind 2.016 Datenblöcke, die 31,5 (= 2.016 dividiert durch 64) LA/LRC-Gruppen entsprechen. Daher ist die LA/LRC-Gruppe 32 nur halb voll: 256 Byte sind reale LA- und LRC-Werte, während die übrigen 256 Byte leer sind.
  • Bei der in 4 gezeigten Anordnung kann die Position des Validierungscodes auf der Platte entsprechend einem gegebenen logischen Datenblock ohne weiteres anhand eines mathematischen Verfahrens bestimmt werden. Wenn der ganzzahlige Teil des Ausdrucks (X/64) + 1 mit Y angesetzt wird, ergibt sich der 8-Byte-Validierungscode für einen bestimmten logischen Datenblock DATAX mit 8 × {(X mod 64) – 1} in der LA/LRC-Gruppe Y. Ist das Ergebnis der letztgenannten Formel negativ (das heißt X ist ein ganzzahliges Vielfaches von 64), bedeutet dies, dass der entsprechende Validierungscode an der letzten 8-Byte-Position in der LA/LRC-Gruppe (Y–1) zu finden ist.
  • Der Validierungscode für DATA127 ist zum Beispiel an der Byte-Position 496 (= 8 × {(127 mod 64) – 1 = 62}) in der LA/LRC-Gruppe 2 (= ganzzahliger Teil von (127/64)+1) zu finden. Daher kann innerhalb einer ganzzahligen Grenze von 1 Megabyte die Position des Validierungscodes für einen bestimmten logischen Datenblock mathematisch berechnet werden.
  • Der LA/LRC-Splitter/Joiner 255 enthält einen Puffer von 512 Byte, der eine LA/LRC-Gruppe aufnehmen kann. Wie vorstehend erläutert, enthält eine LA/LRC-Gruppe die Validierungscodes für 64 logische Datenblöcke. Der LA/LRC-Splitter/Joiner 255 verwaltet daher 64 logische Datenblöcke und deren entsprechende Validierungscodes als eine Gruppe, der eine eindeutige Gruppennummer zugeordnet ist.
  • Es gibt verschiedene Möglichkeiten zum Zuordnen von Gruppennummern. Der LA/LRC-Splitter/Joiner 255 kann zum Beispiel einer Kombination aus einer Gruppe von logischen Datenblöcken und ihrer zugehörigen LA/LRC-Gruppe eine beliebige Zahl Z zuweisen.
  • Alternativ kann die Gruppennummer durch die LA bestimmt werden, die die logische Adresse enthält. Weil zusammenhängende logische Datenblöcke zusammenhängende LA-Werte auf weisen, werden auch die LA-Werte, die den zur selben Gruppe gehörenden logischen Datenblöcken entsprechend, als zusammenhängend angesehen. Wenn daher ein logischer Datenblock denselben Wert für Z', das der ganzzahlige Teil des Quotienten von (LA dividiert durch 64) ist, wie ein anderer logischer Datenblock aufweist, wird angenommen, dass die beiden logischen Datenblöcke derselben LA/LRC-Gruppe entsprechen, das heißt sie werden als zur selben logischen Datenblockgruppe gehörig angesehen. Daher kann der Wert von Z' als die Gruppennummer verwendet werden, die dem logischen Datenblock und seiner entsprechenden LA/LRC-Gruppe zugewiesen wird.
  • Eine weitere Möglichkeit zur Bestimmung der Gruppennummer wäre die Verwendung der Adresse, die bei der Datenüber tragung zur Identifizierung des logischen Datenblocks verwendet wird, zu dem die Übertragung erfolgt. Logische Datenblöcke, die zur selben Gruppe gehören, werden in einem zusammenhängenden Bereich von 32 Kilobyte, was 64 mal 512 Byte entspricht, auf einer Platte gespeichert. Daher bedeutet eine Datenübertragung an eine Adresse, die 32 Kilobyte oder mehr entfernt ist, eine Übertragung an einen logischen Datenblock, der zu einer anderen logischen Datenblockgruppe gehört. Damit ist es möglich, als Ursprung die Position des ersten logischen Datenblocks in einer logischen Datenblockgruppe in einer Plattenvorrichtung zu verwenden und als Gruppennummer den ganzzahligen Teil des Quotienten (Z'') [der Differenz in Byte zwischen dem Ursprung und der durch die logische Datenblockadresse angegebenen Position der Plattenvorrichtung] dividiert durch 32 Kilobyte zu verwenden.
  • Der Verfahrensablauf bei einer Datenübertragung vom Plattencache 230 an die Plattenvorrichtungsgruppe 270 im Platten-Eingangs-/Ausgangsinterface 250 wird nachstehend anhand von 5 beschrieben.
  • Das Platten-Eingangs-/Ausgangsinterface 250 enthält einen internen Puffer zur Aufnahme eines erweiterten Datenblocks von 520 Byte. Nach Empfang eines Befehls von der MPU 280 für eine Datenübertragung vom Plattencache 230 an die Plattenvorrichtungsgruppe 270 liest das Platten-Eingangs-/Ausgangsinterface 250 den erweiterten Datenblock mit 520 Byte, der aus dem logischen Datenblock und dessen Validierungscode (LA und LRC) besteht, aus dem Plattencache 230 in seinen internen Puffer (Schritt 1000). Der LA/LRC-Splitter/ Joiner 255 teilt den erweiterten Datenblock in einen logischen Datenblock von 512 Byte und einen 8-Byte-Validierungscode (LA und LRC) auf und speichert nur den logischen Datenblock in der Plattenvorrichtungsgruppe 270 (Schritt 1010).
  • Danach vergleicht der LA/LRC-Splitter/Joiner 255 die Gruppennummer, die dem in Schritt 1010 in der Plattenvor richtungsgruppe gespeicherten logischen Datenblock entspricht, mit der Gruppennummer, die dem bei der vorherigen Übertragung eines erweiterten Datenblocks in seinem internen Puffer gespeicherten Validierungscode (LA und LRC) entspricht (Schritt 1020). Stimmen sie nicht überein, was bedeutet, dass die Validierungscodes (LA und LRC) im internen Puffer zu der Gruppe für die unmittelbar vorherige Datenübertragung gehören, aber nicht zur selben Gruppe wie der gegenwärtig übertragene Datenblock, speichert das Platten-Eingangs-/Ausgangsinterface 250 die im internen Puffer enthaltenen Validierungscodes in der Plattenvorrichtungsgruppe 270 und löscht den internen Puffer (Schritt 1030). Danach kopiert der LA/LRC-Splitter/Joiner 255 den Validierungscode für den soeben in Schritt 1010 in der Plattenvorrichtungsgruppe 270 gespeicherten logischen Datenblock aus dem internen Puffer des Platten-Eingangs-/Ausgangsinterfaces 250 in seinen eigenen internen Puffer (Schritt 1040) und kehrt zu Schritt 1000 zurück, um die Datenübertragung fortzusetzen.
  • Stimmen die beiden Gruppennummern in Schritt 1020 überein, was bedeutet, dass die Validierungscodes (LA und LRC) im internen Puffer zur selben Gruppe gehören wie die soeben in Schritt 1010 in der Plattenvorrichtungsgruppe 270 gespeicherten Daten, kopiert der LA/LRC-Splitter/Joiner 255 den Validierungscode für den logischen Datenblock, der soeben in Schritt 1010 in der Plattenvorrichtungsgruppe 270 gespeichert worden ist, aus dem internen Puffer des Platten-Eingangs-/Ausgangsinterface 250 in seinen eigenen internen Puffer (Schritt 1040) und kehrt zu Schritt 1000 zurück, um die Datenübertragung fortzusetzen. In gleicher Weise kopiert er beim eigentlichen Start einer Datenübertragung, wenn der interne Puffer des LA/LRC-Splitters/Joiners 255 leer ist, den Validierungscode für den soeben in der Plattenvorrichtungsgruppe 270 gespeicherten logischen Datenblock aus dem internen Puffer des Platten-Eingangs-/Ausgangsinterface 250 in seinen eigenen internen Puffer (Schritt 1040) und kehrt zu Schritt 1000 zurück, um die Datenübertragung fortzusetzen.
  • Der vorstehende Vorgang wird wiederholt, bis alle Daten, deren Übertragung von der MPU 280 angefordert worden ist, verarbeitet sind. Nach Abschluss der Datenübertragung ist der Inhalt des internen Puffers in der Plattenvorrichtungsgruppe 270 gespeichert, und der interne Puffer ist gelöscht.
  • Das Speichern der Validierungscodes (LA und LRC) für Daten in einer neuen Übertragungsoperation in der Plattenvorrichtungsgruppe 270, die bereits zur selben Datenblockgruppe gehörende Daten enthält, würde zur Zerstörung dieser LA und der entsprechenden LRC führen. Um dieses Problem zu verhindern, muss sichergestellt werden, dass, wenn die Plattenvorrichtungsgruppe 270 bereits zur selben Datenblockgruppe gehörende Daten wie die mit einem neuen Befehl zu übertragenden Daten enthält, die den alten Daten entsprechenden Validierungscodes (LA und LRC) zuerst in den internen Puffer geholt und dann mit denen für die neuen Daten zusammengeführt werden.
  • Eine weitere Lösung für dieses Problem bestünde darin, die Datenverarbeitungseinheit im Plattencache als ein Vielfaches der Größe einer logischen Datenblockgruppe festzulegen, zum Beispiel 32 Kilobyte oder 64 Kilobyte, wenn die Größe einer logischen Datenblockgruppe 32 Kilobyte beträgt. Wenn die vom Host angeforderte Schreiboperation Daten betrifft, die kürzer als diese Einheit sind, zum Beispiel 512 Byte, wird zunächst der gesamte 32-Kilobyte-Block mit dem 512-Byte-Bereich (das Ziel der Schreiboperation) aus der Plattenvorrichtungsgruppe in den Plattencache geholt, wo dann neue Daten gespeichert werden. Bei einer derartigen Anordnung ist die Einheit für das Schreiben (Speichern) von Daten in der Plattenvorrichtungsgruppe auch die Datenverarbeitungseinheit im Plattencache. Wenn daher die Datenverarbeitungseinheit im Plattencache 32 Kilobyte ist, erfolgt die Schreiboperation (Speichern) in die Plattenvorrich tungsgruppe immer in Einheiten von einer logischen Datenblockgruppe, wodurch die Notwendigkeit der vorstehend beschriebenen Zusammenführungsoperation entfällt.
  • Der Verfahrensablauf, wie das Platten-Eingangs-/Ausgangsinterface 250 Daten von der Plattenvorrichtungsgruppe 270 an den Plattencache 230 überträgt, wird nachstehend anhand von 6 beschrieben.
  • Nach Empfang eines Befehls von der MPU 280 für eine Datenübertragung von der Plattenvorrichtungsgruppe 270 an den Plattencache 230 liest das Platten-Eingangs-/Ausgangsinterface 250 den logischen Datenblock von 512 Byte aus dem Plattencache 230 in seinen internen Puffer (Schritt 1100). Danach vergleicht das Platten-Eingangs-/Ausgangsinterface 250 die Gruppennummer, die dem gerade geholten logischen Datenblock entspricht, mit der Gruppennummer, die den im internen Puffer des LA/LRC-Splitters/Joiners 255 gespeicherten Validierungscodes (LA und LRC) entspricht (Schritt 1110).
  • Stimmen diese Gruppennummern nicht überein oder ist der interne Puffer des LA/LRC-Splitters/Joiners 255 leer, weil die Leseoperation gerade erst anfängt, holt das Platten-Eingangs-/Ausgangsinterface 250 die 512 Byte große LA/LRC-Gruppe, die dem in Schritt 1100 in den eigenen internen Puffer gelesenen logischen Datenblock entspricht, aus der Plattenvorrichtung in den internen Puffer des LA/LRC-Splitters/Joiners 255 (Schritt 1120).
  • Eine Übereinstimmung zwischen den beiden Gruppennummern in Schritt 1110 bedeutet, dass die Validierungscodes (LA und LRC) für den in Schritt 1100 geholten logischen Datenblock bereits im internen Puffer enthalten sind. Der LA/LRC-Splitter/Joiner 255 kombiniert den in Schritt 1100 geholten logischen Datenblock und dessen Validierungscode (LA und LRC) (im internen Puffer enthalten) zu einem erweiterten Datenblock mit 520 Byte und speichert ihn im Plattencache 230 (Schritt 1130); danach kehrt er zu Schritt 1100 zurück, um die Datenübertragung fortzusetzen.
  • Der vorstehende Vorgang wird wiederholt, bis alle Daten, deren Übertragung von der MPU 280 angefordert worden ist, verarbeitet sind.
  • Die vorstehenden Beschreibungen der bevorzugten Ausführungsform der vorliegenden Erfindung haben gezeigt, dass es auch in einem Plattenarraysystem 200 auf der Grundlage von Plattenvorrichtungen mit einer festen Sektorlänge von 512 Byte möglich ist, einen Validierungscode (LA und LRC) von 8 Byte an einen logischen Datenblock von 512 Byte anzuhängen, wie bei den meisten herkömmlichen Plattenarraysystemen. Eine Reihe von Validierungscodes wird zusammengestellt, um in einen Sektor zu passen, und auf der Platte getrennt von den ihnen entsprechenden logischen Datenblöcken gespeichert, im Gegensatz zu herkömmlichen Plattenarraysystemen. Diese Situation wird durch Bereitstellung einer Gruppe von Einrichtungen und Funktionen zur Verwaltung der Entsprechung zwischen logischen Datenblöcken und Validierungscodes, Berechnung der Speicherposition des Validierungscodes, Aufteilen und Zusammenfügen von logischem Datenblock und Validierungscode und Speichern und Holen von Validierungscodes in und aus den Plattenvorrichtungen gehandhabt. Alle diese Einrichtungen und Funktionen werden durch Hardware (den LA/LRC-Splitter/Joiner) realisiert, wodurch die Wahrscheinlichkeit von Störungen aufgrund von Software-Fehlern entfällt, so dass dasselbe Qualitätsniveau bei der Feststellung und Handhabung von Beeinträchtigungen der Adresse und Daten in den Plattenvorrichtungen wie bei herkömmlichen Plattenarraysystemen sichergestellt ist.
  • Während bei der bevorzugten Ausführungsform davon ausgegangen wird, dass der LA/LRC-Splitter/Joiner durch Hardware realisiert ist, wäre es alternativ auch möglich, das Platten-Eingangs-/Ausgangsinterface mit einem Mikroprozessor und einem Speicher zu versehen und in dem Speicher ein Programm zu speichern, das die Funktionen des LA/LRC-Splitters/Joiners ausführt.
  • Als Schnittstelle zwischen dem Host A100, dem Host B 110 oder dem Host C120 und dem Host-Eingangs-/Ausgangsinterface 210 oder dem Host-Eingangs-/Ausgangsinterface 211 wird typischerweise der sog. Fiber Channel oder SCSI verwendet, aber andere Schnittstellen können ebenfalls verwendet werden. Der hostseitige interne Bus 220 und der plattenseitige interne Bus 240 können jeweils ein 64-Bit-PCI-Bus, ein 32-Bit-PCI-Bus oder ein anderer geeigneter Bus sein.
  • Obwohl bei der bevorzugten Ausführungsform angenommen wird, dass die Sektorlänge der Plattenvorrichtungen in dem Plattenarraysystem 200 und die Größe des logischen Datenblocks beide jeweils 512 Byte betragen und dass die Länge des Validierungscodes 8 Byte beträgt, können auch andere Werte für diese Parameter verwendet werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen.
  • Es ist auch möglich, den Validierungscode (LA und LRC) in dem übertragenen erweiterten Datenblock vom Platten-Eingangs-/Ausgangsinterface prüfen zu lassen und auf diese Weise eine Fehladressierung und Datenstörungen zu erkennen, die in den Plattenvorrichtungen, auf dem Plattenbus, auf dem plattenseitigen internen Bus oder anderswo aufgetreten sind.
  • Während bei der hier diskutierten bevorzugten Ausführungsform der LA/LRC-Splitter/Joiner im Platten-Eingangs-/Ausgangsinterface angeordnet ist, können auch andere alternative Möglichkeiten verwendet werden. In einem Plattenarraysystem zum Beispiel, in dem der Fiber Channel als Platten-Eingangs-/Ausgangsinterface verwendet wird, externe JBOD-Einheiten, die über Fiber Channel verbunden sind, als Plattenvorrichtungen verwendet werden und diese externen JBOD-Einheiten einen Protokollwandler vom Fiber Channel- auf das SATA-Protokoll aufweisen, um SATA-Platten zu unterstützen, ist es möglich, die hier beschriebenen Funktionen durch Integration des LA/LRC-Splitters/Joiners in den Fiber Channel-/SATA-Protokollwandler zu realisieren.
  • Während bei der hier diskutierten bevorzugten Ausführungsform die vorstehend beschriebenen Funktionen überwiegend vom LA/LRC-Splitter/Joiner im Platten-Eingangs-/Ausgangsinterface ausgeführt werden, sind auch alternative Implementierungen vorstellbar. So lassen sich zum Beispiel durch Anordnen der logischen Datenblöcke und ihrer entsprechenden Validierungscodes in dem Plattencache wie in 4 gezeigt, durch Suchen der Position des dem logischen Datenblock entsprechenden Validierungscodes (LA und LRC) durch ein internes Datenübertragungs-Steuerprogramm und Anweisen des Platten-Eingangs-/Ausgangsinterface, die Validierungscodes zusammen mit ihren entsprechenden logischen Datenblöcken zu übertragen, dieselben Merkmale wie vorstehend beschrieben realisieren.
  • Wenn 504 Byte als Größe des logischen Datenblocks gewählt werden, so dass der erweiterte Datenblock, der den logischen Datenblock mit einer LA von 4 Byte und einem LRC von 4 Byte kombiniert, eine Länge von 512 Byte aufweist (die feste Sektorlänge), können dieselben Merkmale realisiert werden, ohne dass der LA/LRC-Splitter/Joiner nötig ist.
  • Daher stellt die vorliegende Erfindung eine Einrichtung zum Anhängen von Validierungscodes an logische Datenblöcke und zu deren gemeinsamer Speicherung in Plattenvorrichtungen auch in einem Plattenarraysystem mit einer Anordnung oder Array von Plattenvorrichtungen mit einer Zugriffseinheit fester Länge bereit. Folglich ist es möglich, ein sehr zuverlässiges Plattenarraysystem auf der Grundlage relativ preiswerter Plattenvorrichtungen mit einer Zugriffseinheit fester Länge aufzubauen.

Claims (13)

  1. Plattenarraysystem zur Verbindung mit einem Computer, aufweisend: mehrere Plattenvorrichtungen (277 bis 279) mit einer Zugriffeinheit fester Länge zum Speichern von Daten für den Zugriff durch den Computer, gekennzeichnet durch eine Steuerung (210, 211, 250, 251, 300) zum Teilen von vom Computer her empfangenen Daten in Datenblöcke, die jeweils die Größe der Zugriffseinheit fester Länge aufweisen, zum Erzeugen eines Validierungscodes für jeden Datenblock und Anhängen des erzeugten Validierungscodes an den jeweiligen Datenblock, zum Sammeln der Validierungscodes der Datenblöcke und zum Speichern der Datenblöcke in Zugriffseinheiten in einen Speicherbereich der Plattenvorrichtungen (277 bis 279) und gemeinsamen Speichern der Validierungscodes in einen anderen Speicherbereich der Plattenvorrichtungen (277 bis 279).
  2. Plattenarraysystem nach Anspruch 1, aufweisend: ein Host-Eingangs-/Ausgangsinterface (210, 211) zur Verbindung mit dem Computer, ein Platten-Eingangs-/Ausgangsinterface (250, 251) zur Verbindung mit den Plattenvorrichtungen (277, 278, 279), einen Cache (230) zum vorübergehenden Aufnehmen von Daten, die zwischen dem Computer und den Plattenvorrichtungen übertragen werden sollen, und eine Cache-Steuerung (300) zum Steuern des Eingangs bzw. Ausgangs von Daten in den und aus dem Cache, während die Datenblöcke zusammen mit ihren entsprechenden Validierungscodes in den Cache gespeichert werden.
  3. Plattenarraysystem nach Anspruch 2, wobei die Zugriffseinheit einen Sektor der Plattenvorrichtungen darstellt.
  4. Plattenarraysystem nach Anspruch 3, wobei das Platten-Eingangs-/Ausgangsinterface (250, 251) eingerichtet ist, mehrere Validierungscodes, die in verschiedenen Sektoren gespeicherten Datenblöcken entsprechen, gemeinsam in einen einzigen Sektor zu speichern.
  5. Plattenarraysystem nach Anspruch 4, wobei das Platten-Eingangs-/Ausgangsinterface (250, 251) zur Verwaltung mehrerer in einen einzigen Sektor passender Validierungscodes und der entsprechenden Datenblöcke als Gruppe eingerichtet ist, der eine eindeutige Gruppennummer zugeordnet ist, die sich auf die logische Adresse der Datenblöcke der Gruppe bezieht.
  6. Plattenarraysystem nach Anspruch 5, wobei das Platten-Eingangs-/Ausgangsinterface (250, 251) einen Puffer aufweist und zum Lesen eines Datenblocks und einer entsprechenden Validierungscodegruppe aus den Plattenvorrichtungen in den Puffer und zur Übertragung des Datenblocks und eines entsprechenden Validierungscodes an den Cache (230) auf Grundlage der Gruppennummer eingerichtet ist.
  7. Plattenarraysystem nach einem der vorhergehenden Ansprüche, wobei die Plattenvorrichtungen ATA-Platten oder SATA-Platten sind.
  8. Datenspeicherverfahren in einem Plattenarraysystem, das mit einem Computer verbunden ist und mehrere Plattenvorrichtungen (277 bis 279) mit einer Zugriffseinheit fester Länge zum Speichern von Daten für den Zugriff durch den Computer aufweist, mit folgenden Schritten: Teilen von vom Computer her empfangenen Daten in Datenblöcke, die jeweils die Größe der Zugriffseinheit fester Länge aufweisen, gekennzeichnet durch Erzeugen eines Validierungscodes für jeden Datenblock und Anhängen des erzeugten Validierungscodes an den jeweiligen Datenblock, Sammeln der Validierungscodes der Datenblöcke, und Speichern der Datenblöcke in Zugriffseinheiten in einen Speicherbereich der Plattenvorrichtungen (277 bis 279) und gemeinsames Speichern der Validierungscodes in einen anderen Speicherbereich der Plattenvorrichtungen (277 bis 279).
  9. Verfahren nach Anspruch 8, wobei die Zugriffseinheit einen Sektor der Plattenvorrichtungen darstellt.
  10. Verfahren nach Anspruch 9, wobei der Speicherschritt mehrere Validierungscodes, die in verschiedenen Sektoren gespeicherten Datenblöcken entsprechen, gemeinsam in einen einzigen Sektor speichert.
  11. Verfahren nach Anspruch 10, wobei mehrere in einen einzigen Sektor passende Validierungscodes und die entsprechenden Datenblöcke als Gruppe verwaltet werden, denen eine eindeutige Gruppennummer zugeordnet wird, die sich auf die logische Adresse der Datenblöcke der Gruppe bezieht.
  12. Verfahren nach Anspruch 11, wobei aufgrund der Gruppennummer ein Datenblock und eine entsprechende Validierungscodegruppe aus den Plattenvorrichtungen in einen Puffer gelesen und der Datenblock und ein entsprechender Validierungscode an einen Cache (230) übertragen werden.
  13. Verfahren nach einem der Ansprüche 8 bis 12, wobei die Plattenvorrichtungen ATA-Platten oder SATA-Platten sind.
DE60310530T 2003-03-25 2003-05-15 Eine Speicherplattenanordnung basierend auf Festplatten mit Zugriffseinheiten fester Länge Expired - Lifetime DE60310530T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003081717A JP2004288078A (ja) 2003-03-25 2003-03-25 固定長ディスクを利用したディスクアレイシステム
JP2003081717 2003-03-25

Publications (2)

Publication Number Publication Date
DE60310530D1 DE60310530D1 (de) 2007-02-01
DE60310530T2 true DE60310530T2 (de) 2007-11-22

Family

ID=33028102

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60310530T Expired - Lifetime DE60310530T2 (de) 2003-03-25 2003-05-15 Eine Speicherplattenanordnung basierend auf Festplatten mit Zugriffseinheiten fester Länge

Country Status (4)

Country Link
US (1) US7039758B2 (de)
EP (1) EP1477898B1 (de)
JP (1) JP2004288078A (de)
DE (1) DE60310530T2 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197617B2 (en) * 2003-05-29 2007-03-27 International Business Machines Corporation Process, apparatus, and system for storing data check information using standard sector data field sizes
US7441229B2 (en) * 2004-02-10 2008-10-21 International Business Machines Corporations Model driven portlet development method, system and program product
US20050240584A1 (en) * 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Data protection using data distributed into snapshots
JP2006107311A (ja) * 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
JP4634157B2 (ja) 2005-01-17 2011-02-16 株式会社日立製作所 ストレージシステム
JP2008269363A (ja) * 2007-04-20 2008-11-06 Hitachi Ltd 記憶制御装置および記憶制御方法
JP2009104420A (ja) 2007-10-23 2009-05-14 Hitachi Ltd 記憶制御装置及び記憶装置の障害検出方法
US8041919B2 (en) * 2007-10-26 2011-10-18 International Business Machines Corporation Storing data blocks to maximize the amount of storage space used in a storage device
JP4693893B2 (ja) * 2008-11-25 2011-06-01 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
WO2010095173A1 (en) * 2009-02-19 2010-08-26 Hitachi, Ltd. Storage apparatus and data integrity assurance method
JP5386593B2 (ja) * 2009-04-06 2014-01-15 株式会社日立製作所 ストレージ装置及びデータ転送方法
US9095275B2 (en) * 2009-06-03 2015-08-04 Andrew C. Clark Contact sensors and methods for making same
US8352676B2 (en) * 2010-10-26 2013-01-08 Hitachi, Ltd. Apparatus and method to store a plurality of data having a common pattern and guarantee codes associated therewith in a single page
JP5962140B2 (ja) * 2012-03-30 2016-08-03 富士通株式会社 プログラム、制御方法、制御装置およびシステム
US10760983B2 (en) 2015-09-15 2020-09-01 Sencorables Llc Floor contact sensor system and methods for using same
US10142195B1 (en) * 2015-09-30 2018-11-27 EMC IP Holding Company LLC Partitioned performance tracking core resource consumption independently
JP6451769B2 (ja) 2017-04-20 2019-01-16 富士通株式会社 ストレージ制御装置、及びストレージ制御プログラム
WO2023162465A1 (ja) * 2022-02-24 2023-08-31 ソニーセミコンダクタソリューションズ株式会社 ライトバッファ制御回路

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2855019B2 (ja) * 1992-02-10 1999-02-10 富士通株式会社 外部記憶装置のデータ保証方法及び外部記憶装置
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5418925A (en) * 1992-10-23 1995-05-23 At&T Global Information Solutions Company Fast write I/O handling in a disk array using spare drive for buffering
US6269464B1 (en) * 1997-06-18 2001-07-31 Sutmyn Storage Corporation Error checking technique for use in mass storage systems
US6324604B1 (en) * 1998-07-07 2001-11-27 Emc Corporation Magnetic disk storage for storing data in disk block size from fixed length of host block in non-integer multiple of the disk block size
JP2000347815A (ja) 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
JP2001202295A (ja) 2000-01-17 2001-07-27 Hitachi Ltd サブシステム
US6754773B2 (en) * 2001-01-29 2004-06-22 Snap Appliance, Inc. Data engine with metadata processor
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
US7047358B2 (en) * 2001-12-26 2006-05-16 Boon Storage Technologies, Inc. High-performance log-structured RAID

Also Published As

Publication number Publication date
JP2004288078A (ja) 2004-10-14
US7039758B2 (en) 2006-05-02
US20050071553A1 (en) 2005-03-31
DE60310530D1 (de) 2007-02-01
EP1477898A1 (de) 2004-11-17
EP1477898B1 (de) 2006-12-20

Similar Documents

Publication Publication Date Title
DE60310530T2 (de) Eine Speicherplattenanordnung basierend auf Festplatten mit Zugriffseinheiten fester Länge
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE69632219T2 (de) Speicherplattenanordnungssystem
DE602005004120T2 (de) System und verfahren zur übernahme von partnerbetriebsmitteln in verbindung mit coredump
DE68929229T2 (de) Steuergerät mit einem Cache-Speicher und Verfahren zur Steuerung des Cache-Speichers
DE69223287T2 (de) Steuerungsverfahren für eine Computerspeichereinrichtung
DE69807101T2 (de) Segmentiertes dma mit xor-puffer für speicheruntersysteme
DE69430599T2 (de) Dynamisch ausbaubares Speichereinheitsmatrixsystem
DE69831944T2 (de) Vorrichtung und verfahren zur sicherung eines plattenspeichersystem
DE60318687T2 (de) Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz
DE69331615T2 (de) Datenkompression/-dekompression und Speicherung von komprimierten und nicht komprimierten Daten in einem einzigen Datenspeichervolumen
DE69034227T2 (de) EEprom-System mit Blocklöschung
DE69727083T2 (de) Überprüfungssystem um die integrität der parität einer speicherplattenmatrix aufrechtzuerhalten
DE3851730T2 (de) Cachespeicherverwaltung für ein peripheres Ratenspeichersubsystem.
DE69227896T2 (de) Paritätsberechnung in einer effizienten matrix von massenspeichergeräten
DE69224589T2 (de) Speicherplattenanordnung und Verfahren zur Bestimmung des Vorhandenseins korrekter Speichervorrichtungen
DE19982999B4 (de) Computersystem und Verfahren zum Transferieren von Daten
DE69030024T2 (de) Verfahren zur Herstellung einer Duplikation von einer Datenbank
DE69021143T2 (de) Verfahren zur wirksamen Verwendung von auswechselbaren Aufzeichnungsmedien für Daten.
DE69131551T2 (de) Logische Aufteilung eines Speichersystems mit redundanter Matrix
DE69512459T2 (de) RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken
DE69321901T2 (de) Redundante Speicherplattenmatrix mit verbesserter Schreib- und Lesegeschwindigkeit
DE69700574T2 (de) Verfahren zum Cache-Speichern von Netzwerk- und CD-ROM-Zugriffen unter Verwendung einer lokalen Festplatte
DE69116065T2 (de) Datenrückgewinnung in massenspeicherdatenbanksystemen
DE60303895T2 (de) Hybridimplementierung von Fehlerkorrekturkoden eines nichtflüchtigen Speichersystems

Legal Events

Date Code Title Description
8364 No opposition during term of opposition