DE69631106T2 - On-line-Rekonfiguration einer Speicherplattenanordnung - Google Patents

On-line-Rekonfiguration einer Speicherplattenanordnung Download PDF

Info

Publication number
DE69631106T2
DE69631106T2 DE69631106T DE69631106T DE69631106T2 DE 69631106 T2 DE69631106 T2 DE 69631106T2 DE 69631106 T DE69631106 T DE 69631106T DE 69631106 T DE69631106 T DE 69631106T DE 69631106 T2 DE69631106 T2 DE 69631106T2
Authority
DE
Germany
Prior art keywords
logical
disk
volume
reconfiguration
target
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
DE69631106T
Other languages
English (en)
Other versions
DE69631106D1 (de
Inventor
Stephen M. Schultz
Mark J. Spring Thompson
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.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Application granted granted Critical
Publication of DE69631106D1 publication Critical patent/DE69631106D1/de
Publication of DE69631106T2 publication Critical patent/DE69631106T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies

Description

  • Die Erfindung betrift Plattenanordnungs-Steuereinrtchtungen und insbesondere Plattenanordnungs-Steuereinrichtungen, die eine Online-Rekonfiguration einer Plattenanordnung durchführen.
  • Mit der Verbreitung von preiswerten Personal Computern sind lokale Netzwerke (LANs) als Kommunikationsnetze, die relativ große Zahlen von Personal Computern oder Workstations verbinden, sehr beliebt geworden. Ein LAN umfasst typischerweise einen oder mehr Datei-Server, die als Speichermittelpunkte für Daten wirken, wobei Kopien der Daten auf Verlangen an die Workstations übermittelt und aktualisierte Daten zur Speicherung zurückgegeben werden. In vielen Anwendungen müssen die Daten auf den Datei-Servern ständig zugänglich sein. Wenn ein Datei-Server aus irgendeinem Grund "offline" genommen wird, wären die Daten auf dem Datei-Server vorübergehend unverfügbar, was Geschäftsvorgänge stören kann.
  • Um das optimale Preis/Leistungs-Verhältnis zu erreichen, werden Datei-Server mit einer Sammlung von relativ keinen und billigen Festplattenlaufwerken implementiert. Mit der erhöhten Zahl verwendeter Plattenlaufwerke nimmt jedoch die Fehlerrate dramatisch zu. Verschiedene Lösungen für das Datenfehlerproblem sind verfügbar. Die einfachste Lösung besteht dann, vollständig redundante Plattenlaufwerke bereitzustellen, was als Spiegelung bezeichnet wird. Ein Problem bei dem Spiegeln ist die Speicherungs-Effizienz, da eine Hälfte der verfügbaren Kapazität für Redundanz benutzt wird. Andere, effizientere Lösungen sind vorgeschlagen worden, z.B. die in David E. Peterson et al., "A Case for Redundant Arrays of Inexpensive Disks (RAID)", Report Nr. UCB/CSD 87/391 (Dez. 1987). Verschiedene RAID-Schutzschemas werden beschrieben. Die Architektur von RAID 1 betrifft den traditionellen Weg der gespiegelten Platten. In der Architektur von RAID 4 werden Pantätsplatten verwendet, die Päritätsinformation speichern, die benutzt wird, um Daten, auf die zugegriffen wird, auf Fehler zu prüfen. Die Architektur von RAID 5 ist eine Verbesserung an der Architektur von RAID 4, wobei die Päritätsinfonnation über alle Platten verteilt wird, um eine größere Parallelität zu erzielen.
  • Wenn die Datenspeicheranforderungen eines Benutzers zunehmen, muss die Gesamtspeicherkapazität auf dem LAN erhöht werden. Ein Verfahren, die Speicherkapazität auf dem LAN zu erhöhen, besteht dann, einen neuen Datei-Server an das LAN anzuschließen. Dies ist jedoch eine relativ teure Lösung, das ein ganzer Datei-Server gekauft werden muss. Ein alternatives Verfahren, die Speicherkapazität zu erhöhen, besteht dann, einem bestehenden Datei-Serversystem Festplattenlaufwerke hinzufügen. Normalerweise werden die Festplattenlaufwerke eines Datei-Serversystems in logischen Datenträgem angeordnet. Um zu verhindern, dass ein Datei-Server in einem LAN offline genommen wird, wird gegenwärtig ein neu hinzugefügtes Festplattenlaufwerk als ein neuer, getrennter Datenträger konfiguriert, weil er nicht einfach der Anordnungskonfiguration in einer RAID4- oder RAID5-Konfiguration hinzugefügt werden kann, weil das Netzwerkbetriebssystem Änderungen der Größe von logischen Datenträgern online nicht handhaben kann. Neue Laufwerke können daher der bestehenden Anordnung nicht hinzugefügt werden, und wenn ein Fehlertoleranzschema für das oder die neuen Laufwerke verwendet werden soll, wird ein neuer logischer Datenträger definiert, und einige der neuen logischen Laufwerke in dem neuen Datenträger müssten für Redundanzzwecke benutzt werden. Die neu hinzugefügten redundanten Laufwerke tragen nicht zu der Gesamtspeicherkapazität des Datei-Servers bei, was die Effizienz verringert.
  • Ein alternatives Verfahren, ein Laufwerk einer als eine RAID4- oder RAID5-Anordnung konfigurierten Anordnung hinzufügen, besteht darin, einen Sichern-Rekonfigurieren-Wedefierstellen-Prozess zu verwenden. Dies erlaubt neu hinzugefügten Festplatten, einen größeren logischen Datenträger zu bilden. Der Prozess verlangt das Nehmen des Datei-Servers offline, Sichern der auf den bestehenden Fetsplattenlaufwerken gespeicherten Daten auf Band, Rekonfigurieren der physikalischen Plattenlaufwerke, einschließlich der neuen Plattenlaufwerke, in einen neuen logischen Datenträger, Wiederherstellen der Daten von der Bandsicherung zurück auf die rekonfigurierten logischen Datenträger und Bringen des Datei-Servers zurück online. Ein Hauptnachteil des Sichern-Rekonfigurieren-Wiedefierstellen-Prozesses ist, dass der Datei-Server offline genommen werden muss, wodurch die Daten auf dem Datei-Server unverfügbar gemacht werden. Ein anderer Nachteil ist, dass der Sichern-Rekonfigurieren-Wederherstellen-Prozess zu seiner Durchführung eine große Menge an Zeit benötigt.
  • Es ist somit erwünscht, dass eine Lösung entwickelt wird, um die beim Hinzufügen eines Plattenlaufwerks oder -laufwerken zu einer bestehenden RAID4- oder RAID5-Anordnung angetroffenen Probleme zu überwinden, sodass die Laufwerke hinzugefügt werden konnten, während der Datei-Server online ist.
  • US 5,615,352 offenbart ein Verfahren zum Vergrößern der Speicherkapazität eines hierarchischen Plattenanordnungs-Datenspeichersystems, das Daten entprechend verschiedener Redundanzstufen oder RAID-Stufen speichert.
  • In der folgenden Beschreibung der bevorzugten Ausführung der vorliegenden Erfindung ist die gebrauchte Terminologie wie folgt definiert. Wenn eine Plattenanordnung entweder durch Hinzufügen oder Entfernen eines Plattenlaufwerks rekonfiguriert wird, werden Daten in der Plattenanordnung umgeordnet. Ein logischer Quellen-Datenträger wird in einen logischen ZielDatenträger rekonfiguriert, d. h., Daten in dem logischen Quellen-Datenträger werden in den logischen Ziel-Datenträger übertragen. Der logische Quellen-Datenträger betrifft daher den auf dem ursprünglichen Satz von Laufwerken definierten logischen Datenträger. Der logische Ziel-Datenträger betrifft den auf dem neuen Satz von Plattenlaufwerken definierten logischen Datenträger. Plattenanordnungs-Rekonfiguration betrifft den Prozess des Änderns der Zahl von Laufwerken, die einem bestehenden logischen Datenträger zugewiesen ist, während die Größe des logischen Datenträgers unverändert bleibt. Plattenanordnungs-Erweiterung ist eine Untermenge der Platenanordnungs-Rekonfiguration und betrifft den Prozess des Hinzufügens eines neuen Laufwerks oder Laufwerken zu einer bestehenden Plattenanordnung. Ein neuer logischer Datenträger betrifft den logischen Datenträger, der in dem überschüssigen Raum erzeugt wird, der aus dem Hinzufügen von Laufwerken zu der bestehenden Laufwerksanordnung resultiert. Es wird auch angemerkt, dass in einer gegebenen Plattenanordnung mehr als ein logischer Datenträger vorhanden sein kann.
  • Eine Plattensteuereinheit nach der vorliegenden Erfindung führt eine Online-Rekonfiguration von RAID1-, RAID4- oder RAIDS- Plattenanordnungen in einem Festplattenlaufwerkssystem durch. Die Erweiterung der Plattenanordnung kann erforderlich sein, wenn dem System ein neues physikalisches Laufwerk hinzugefügt wird. In einer Abkehr von Systemen des Stands der Technik führt die Plattensteuereinheit nach der vorliegenden Erfindung die Plattenanordnungs-Erweiterung durch, während das System online ist, d. h., gespeicherte Daten bleiben für Host-Lese- oder Schreibzyklen von den Festplattenlaufwerken verfügbar. Im Grunde wird die neue Plattenanordnung neu definiert, um den früheren logischen Datenträger und den neuen logischen Datenträger zu bilden, wobei der neue logische Datenträger in dem überschüssigen Raum gebildet wird, der aus dem Hinzufügen der neuen Plattenlaufwerke resultiert. Aber beide dieser logischen Datenträger werden über die vergrößerte Plattenanordnung verstreut. In dem Erweiterungsprozess, bei dem Daten in dem früheren logischen Datenträger über den neuen Satz von Plattenlaufwerken verstreut werden, beginnt der frühere logische Datenträger als ein logischer Quellen-Datenträger und wird in einen logischen Ziel-Datenträger rekonfiguriert, d. h., Daten in dem logischen Quellen-Datenträger werden zu Daten in dem logischen Ziel-Datenträger bewegt. Die Konfigurationsparameter des logischen Quellen-Datenträgers unterscheiden sich auch von den Parametern des logischen Ziel-Datenträgers, einschließlich der Parameter, die die Zahl von Plattenlaufwerken in dem Datenträger, die Streifengröße, den Fehlertoleranzmodus und andere Parameter darstellen.
  • Des Weiteren ist, wenn ein Platenlaufwerk aus einer Plattenanordnung zu entfernen ist, die Plattenanordnungs-Rekonfiguration möglich, wenn freier Platz vorhanden ist, um den logischen Datenträger unter den übrigen Plattenlaufwerken einzuordnen. Die Menge an verfügbarem freien Platz muss mindestens gleich der Menge an Daten in dem logischen Datenträger sein, die auf dem zu entfernenden Plattenlaufwerk gespeichert sind.
  • Die Plattensteuereinheit der bevorzugten Ausführung enthält einen Eintragunsspeicher. Ein Bereich des Eintragungsspeichers wird zugeordnet, um die Rekonfiguration durchzuführen. Die Rekonfiguration erfolgt vorzugsweise ein Streifen zu einer Zeit, wobei die Streifengröße diejenige des Ziel-Datenträgers ist. Unter Verwendung der Konfigurationsinformation des logischen Quellen-Datenträgers wird ein Streifen von Daten in den zugeteilten Bereich in dem Eintragungsspeicher übertragen. Dann wird unter Verwendung der Konfigurationsinformation des logischen Ziel-Datenträgers der Streifen von Daten von dem Eintragungsspeicher in die neue Plattenanordnung übertragen. Der Prozess wird wiederholt, bis alle vorhandenen Daten in dem logischen Quellen-Datenträger in den logischen Ziel-Datenträger übertragen worden sind. Während der Rekonfigurationsprozess abläuft, werden Lese- und Schreib-Anforderungen von dem Host-Computersystem durch die Plattensteuereinheit gehandhabt, die eine Prüfung durchführt, um festzustellen, ob die Anforderung Blöcken gilt, die bereits rekonfiguriert wurden. Wenn ja, wird die Lese- oder Schreib-Anforderung mittels der Konfigurationsinformation des logischen Ziel-Datenträgers durchgeführt. Wenn die Blöcke, auf die zugegriffen wird, noch nicht rekonfiguriert worden sind, wird die Konfigurationsinformation des logischen Quellen-Datenträgers benutzt, um die Anforderung auszuführen. Eine Anforderung kann auch Blöcke überspannen, die noch nicht rekonfiguriert wurden, und solche, die rekonfiguriert wurden. In diesen Fällen wird die Host-Anforderung suspendiert, bis der Plattenanordnungs-Rekonfigurationsprozess in der Lage ist, nachzukommen.
  • Wenn eine Erweiterung vollendet ist, wird ein neuer logischer Datenträger aus dem Endteil jedes Laufwerks in der Laufwerksanordnung erzeugt, um einen neuen logischen Datenträger zu bilden, der in dem überschüssigen Raum definiert wird, der aus dem Hinzufügen des neuen Plattenlaufwerks entsteht. Dieser neue logische Datenträger wird dem Netzwerkbetriebssystem mitgeteilt und als neuer Datenträger montiert.
  • Ein besseres Verständnis der vorliegenden Erfindung kann erreicht werden, wenn die folgende ausführliche Beschreibung der bevorzugten Ausführung in Verbindung mit den folgenden Zeichnungen betrachtet wird. Inhalt der Zeichnungen:
  • 1 ist ein Blockschaltbild einer Plattensteuereinheitsplatine nach der vorliegenden Erfin dung.
  • 2A-2H veranschaulichen Plattenanordnungs-Rekonfigurationsoperationen, die von der Plattensteuereinheitsplatine von 1 nach der bevorzugten Ausführung der vorliegenden Erfindung durchgeführt werden.
  • 3A-3C sind ein Flussdiagramm einer festgelegten Konfigurationsroutine, die die Rekonfigurationsoperation nach der vorliegenden Erfindung anfordert.
  • 4 ist ein Flussdiagramm einer Routine zum Einreihen von Plattenrekonfigurationsanforderungen in eine Queue.
  • 5 ist ein Flussdiagramm einer Hintergrund-Planungstask, die bestimmt, ob eine Rekonfigurierungstask benötigt wird.
  • 6A-6D sind ein Flussdiagramm der Rekonfigurierungstask nach der vorliegenden Erfindung.
  • 7A-7B sind ein Flussdiagramm einer Routine zum Behandeln von logischen Anforderungen.
  • 8 ist ein Flussdiagramm einer Routine zum Bestimmen, an welchen logischen Datenträger ein logische Anforderung gerichtet ist.
  • 9 ist ein Flussdiagramm einer Routine zum Wiederaufnehmen einer durch Stromausfall unterbrochenen Rekonfigurierungsoperation.
  • Nun auf 1 verweisend wird ein Blockschaltbild der endungsgemäßen Plattensteuereinheit 10 gezeigt. Die Plattensteuerplatine 10 ist entweder mit einem EISA-Bus oder einem PCI-Bus 100 verbunden, der enthalten ist und den Übertragungskanal zu den anderen Komponenten eines Host-Computersystems 101 bereitstellt. Zu Zwecken der verbleibenden Erörterung wird ein EISA-Bus 100 benutzt werden. Die Plattensteuerplatine 10 umfasst einen PCI-Lokalbus 102, der einen Steuerteil und einen gemultiplexten Adress- und Datenteil enthält. Zu einer Beschreibung des PCI-Bus-Standards siehe PCI Specification, Revision 2.0, Intel Corporation (April 1993), die hiermit durch Verweis eingeschlossen wird.
  • Eine PCI-EISA-Brücke 104 ist zwischen den EISA-Bus 100 und den PCI-Lokalbus 102 geschaltet. Wenn aber stattdessen ein PCI-Bus 100 benutzt wird, würde eine PCI-PCI-Brücke 104 verwendet werden. Die PCI-EISA-Brücke 104 ist sowohl eine Master- als auch Slave- Einrichtung auf sowohl dem PCI-Bus 102 als auch dem EISA-Bus 100 und fungiert als ein Puffer, eine Übersetzungseinheit und ein PCI-Arbiter. Die Brücke 104 enthält eine Anzahl FIFOs zur Optimierung der Datenübertragungen von EISA-Slaves an PCI-Busmaster. Auf der EISA-Seite werden Datenübertragungen von dem Brücken-EISA-Busmaster gesteuert. Auf der PCI-Seite werden Datenübertragungen durch die PCI-Slave-Logik gehandhabt. Jedem PCI-Busmaster, der mit der Brücke 104 kommuniziert, ist ein FIFO zugeordnet. Ein PCI-Master könnte daher grade aus einem FIFO lesen, während ein FIFO für einen anderen PCI-Master grade von dem Brücken-EISA-Busmaster beschrieben wird. Während eines Plattenlesevorgangs wird ein PCI-Master Daten in den Brücken-FIFO zur nachfolgenden Rückgewinnung durch den Brücken-EISA-Busmaster schreiben. Während eines Plattenschreibvorgangs wird ein PCI-Master Daten vom Hostspeicher lesen, und die Brücken-EISA-Busmastersteuerung wird vorauslesen, um die FIFOs gefüllt zu halten, um so lange Stoß-Lesungen zu ermöglichen. Weitere Einzelheiten der Operation der FIFOs werden in US Patentnummer US 5,809,280 bereitgestellt. Die Brücke 104 enthält auch Logik, um Unterbrechungen vom PCI-Bus an den EISA-Bus zu übersetzen und die Unterbrechungen zu maskieren, bis Daten die FIFOs löschen.
  • Die Plattensteuerplatine 10 umfasst auch einen lokalen Prozessor 106, bevorzugt einen AMD 29030 Prozessor, der die Funktionen der Plattensteuerplatine 10 steuert. Der lokale Prozessor 106 ist mit einem lokalen Speicher 108 verbunden, und sowohl der lokale Prozessor 106 als auch der lokale Speicher 108 sind über eine Prozessor-PCI-Brücke 110 mit dem PCI-Lokalbus 102 verbunden. Der lokale Prozessor 106 führt im lokalen Speicher 108 gespeicherte Firmware aus, um verschiedene Plattensteuerfunktionen durchzuführen.
  • Die Prozessor-PCI-Brücke 110 wird vorzugsweise mit einem ASIC implementiert. Die Prozessor-PCI-Brücke 110 enthält Logik zum Umwandeln von Prozessorspeicher- oder E/A-Zyklen in PCI-Zyklen sowie Prozessor-an-PCI-Schreib-Eintragungsspeicher. Die Brücke 110 umfasst auch eine DRAM-Steuereinheit zum Steuern von Operationen an den lokalen Speicher 108. Außerdem sind Intervall-Zeitgeber und eine Unterbrechungs-Steuereinheit in der Brücke 110 enthalten.
  • Ebenfalls mit dem PCI-Lokalbus 102 verbunden ist eine Mehrzahl von SCSI-Steurunungen 112A-E zum Anschließen eines Plattenanordnungs-Untersystems 142, das eine Mehrzahl von Festplattenlaufwerken umfasst. Die bevorzugte Ausführung kann so konfiguriert werden, dass sie bis zu 5 SCSI-Steuerungen 112A-E umfasst, die vorzugsweise 53C825 PCI-SCSI-E/A-Prozessoren von NCR Corporation sind. Zu einer vollen Beschreibung des 53C-825-Prozessors siehe NCR 53C825 PCI-SCSI I/O Processor With Local ROM Interface, Da to Manual, NCR Corp. (1993).
  • Jede der SCSI-Steuerungen 112A-E ist mit einem von fünf Sätzen von Plattenlaufwerken 114A-E über Stecker 113A-E verbunden. Jede SCSI-Steuerung 112 ist vorzugsweise in der Lage, mit fünf internen SCSI-Festplattenlaufwerken oder sieben externen SCSI-Festplattenlaufwerken verbunden zu werden. Jeder Satz von Laufwerken 114A-E ist mit einem Mikrocontroller 140A, B, C, D oder E verbunden. Die Mikrocontroller 140A-E werden vorzugsweise mit dem 8051 Prozessor von Intel Corp. implementiert. Die Mikrocontroller 140A-E stellen bestimmte verschiedene Steuerfunktionen für jeden Satz von Laufwerken bereit, z.B. Treiben von Status-LEDs und Durchführen einer Temperaturüberwachung. Zu einem exemplarischen Mikrocontroller siehe Patentanmeldung Nr. 07/955,669 betitelt "Method of Communicating with a SCSI Bus Device That Does Not Have an Assigned SCSI Address", eingereicht am 2. Oktober 1992 und hiermit durch Verweis eingeschlossen. Übertragungen zwischen den SCSI-Steuerungen 112A-E und den physikalischen Laufwerken 114A-E werden über SCSI-Busse bewerkstelligt.
  • Anforderungen, die von dem Host-Computersystem ausgegeben werden, werden an die Prozessor-PCI-Brücke 110 gesendet. Zeiger werden in die Prozessor-PCI-Brücke 110 geschrieben, die durch Rückgewinnen der Befehle von der durch die Zeiger spezifizierten Stelle im Hostspeicher antwortet. Die Prozessor-PCI-Brücke 110 unterbricht dann den lokalen Prozessor, um anzuzeigen, dass Host-Anforderungen vorhanden sind. Als Reaktion erstellt der lokale Prozessor 106 eine Befehlsliste, um die verlangten Befehle auszuführen. Abhängig von der Art der Operation sendet der lokale Prozessor 106 Befehlsbeschreibungsblöcke (CDBs) an die DRAM-Schnittstelle 118 oder eine der SCSI-Steuerungen 110A-E. Als Reaktion erlangt die DRAM-Schnittstelle 118 oder die SCSI-Steuerung 110 die Kontrolle des PCI-Busses 102, um die verlangte Operation auszuführen.
  • Ein Eintragungsspeicher 116, vorzugsweise mit DRAM-Chips implementiert, wird als Puffer für eingetragene Schreibungen sowohl für das Host-Computersyseen als auch einen Vorauslese-Puffer benutzt. Das DRAM 116 ist über einen Speicherdatenbus MD, einen Speichersteuerbus MC und einen Speicheradressbus MA mit einer DRAM-Schnittstelle 118 verbunden, die wiederum mit dem PCI-Lokalbus 102 verbunden ist. Das DRAM 116 ist vor ugsweise konfigurierbar, um bis zu 64 MB Daten zu speichern. Durch Eintragen von Schreibungen in dem DRAM 116 werden mit dem Schreiben von Daten auf das Festplatten-Untersystem 142 verbundene Wartezeiten vermieden, was den Datenübertragungsdurchsatz verbessert. Um bei einem Stromausfall den Verlust von Daten zu verhindern, werden Teile des DRAM 116 batteriegestützt. Die Batteriestützung ist erforderlich, da das Host-Computersystem bereits davon ausging, dass die Daten permanent in den Festplattenlaufwerken 114A-E gespeichert worden sind. Durch Batteriestützen des DRAM 116 können Daten aus dem DRAM 116 wiedergewonnen werden, nachdem die Stromversorgung für das Computersystem wiederhergestellt ist. Stützstrom wird von einer mit Lithium-Batterien 144 verbundenen Stromsteuerschaltung 146 bereitgestellt.
  • Wenn der Strom vom Host-Computersystem verlorengeht, schaltet die Stromsteuerschaltung 146 die Stromversorgungsspannungseingänge des DRAM 116 auf die Batterien 144. Das Vorauslese-Puffem erlaubt eine verbesserte Leistung, wenn sequentielle Operationen vorkommen. Weitere Einzelheiten über die Vorauslesespeicherung werden in US Patentnummer 5,809,560 bereitgestellt.
  • Die DRAM-Schnittstelle 118 unterstützt verschiedene Konfigurationen des DRAM 116. Vorzugsweise hat das DRAM 116 eine maximale Kapazität von 64 MB, wobei der DRAM-Schnittstelle 118 128 MB zugeordnet werden, von denen eine Hälfte der normale Adressbereich ist, und die andere Hälfte der XOR-Adressbereich ist. Die Breite des Speicherdatenbusses MD zwischen der DRAM-Schnittstelle 188 und dem DRAM 116 kann entweder als 32 Bit oder 64 Bit gewählt werden. Zusätzlich können bis zu vier Speicherbänke verwendet werden. Bevorzugt werden drei Arten von Speicherchips benutzt: 256 K × 18 DRAM-Chips zum Unterstützen von bis zu 512 KB Speicherkapazität; 512 K × 8 oder × 9 DRAM-Chips zum Unterstützen einer Gesamt-DRAM-Kapazität von 1, 2, 4, 8, 16 oder 32 MB und 2 M × 8 DRAM-Chips zum Unterstützen einer Gesamt-Speicherkapazität von 16, 32, 48 oder 64 MB. Die DRAM-Schnittstelle 118 ist konfigurierbar, um entweder eine 8-Bit Fehlererkennung und -Korrektur (ECC) oder einen Paritätsschutz von DRAM-Daten durchzuführen.
  • Für die DRAM-Konfigurationen, die die 256 K × 18 DRAM-Chips oder 512 K × 8 oder × 9 verwenden, unterscheidet das Adressbit 24 zwischen dem normalen Adressbereich und dem XOR-Adressbereich. Der XOR-Adressbereich wird gewählt, wenn das Adressbit 24 hoch gesetzt ist. Bei den DRAM-Konfigurationen, die 2 M × 8 DRAM-Chips verwenden, unterscheidet das Adressbit 26 zwischen der Lesen-Modifizieren-Schreiben-XOR-Operation und der normalen Schreiboperation.
  • Das DRAM 116 kann in eine Mehrzahl von 10 Abschnitten unterteilt werden, einschließlich eines Schreib-Eintragungs-Puffers 136, eines Vorauslese-Puffers 135 und eines XOR-Puffers 134 zum Speichern von Daten zum kumulativen Entwrickeln von Pantätsinformation und für andere Aufgaben. Der Schreib-Eintragungs-Puffer 136 empfängt Schreib-Eintra gungsdaten, während das Host-Computersystem in das Festplatten-Untersystem 142 schreibt. Der Schreib-Eintragungs-Puffer 136 kann auch zugewiesen werden, um Daten zu speichern, die mit bestimmten Hintergrundaufgaben verbunden sind, wie z.B. ein Wiederherstellungsprozess und ein Rekonfigurierungsprozess. Der Wiederherstellungsprozess wird aufgerufen, um verlorene Daten auf einem Ersatzlaufwerk wiederherzustellen. Der Wiederherstellungsprozess wird ausführlicher in Patenantmeldung Nr. 08/543.011, betitelt "Read Checking for Drive Rebuild", beschrieben.
  • In der bevorzugten Ausführung werden dem Schreib-Eintragungs-Speicher 136 ein Übertragungspufferbereich zum Durchführen des Plattenanordnungs-Rekonfigurationsprozesses sowie ein Konfigurationsbereich zum Speichern der Fortschrittsinformation des Rekonfigurationsprozesses. Da der Schreib-Eintragungs-Puffer 136 batteriegestützt ist, erlaubt das Speichern der Fortschrittsinformation, dass der Rekonfigurationsprozess nach einem Stromausfall ohne Datenverlust wieder aufgenommen werden kann.
  • Statusinformation bezüglich der in dem Schreib-Eintragungs-Puffer 136 gespeicherten Daten wird im lokalen Speicher 108 gespeichert. Die Statusinformation umfasst ein Label, das die oberen Adressbits der Daten in jeder Pufferspeicherzeile sowie Information speichert, die angibt, ob die gepufferten Daten rein oder schmutzig und gültig oder ungültig sind. Die Statusinformation umfasst weiter Information dahin gehend, ob die Zeile gesperrt ist und was der Grund für die Sperrung ist. Eine Zeile wird gesperrt, wenn sie momentan in die Plattenanordnung 142 gespült wird oder wartet, um Daten vom Host zu empfangen. Eine Zeile kann auch von anderen Tasks gesperrt werden.
  • Andere Arten von Statusinformation im lokalen Speicher 108 umfassen das Ziel der gepufferten Datenzeile, einschließlich des logischen Datenträgers, des Laufwerks und der Stelle in dem betreffenden Laufwerk. Eine Software-Task niedriger Priorität tastet fortwährend die Statusinformation im lokalen Speicher 108 ab, um festzustellen, ob eine Datenzeile schmutzige Daten enthält, und um Daten in das Plattenlaufwerks-Untersystem 142 zu spülen.
  • Die DRAM-Schnittstelle 118 umfasst einen PCI-Busmaster 126 und einen PCI-Busslave 128. Außerdem umfasst die DRAM-Schnittstelle 118 eine DMA-Steuerung 124 zum Steuern von Zugriffen auf das DRAM 116, sowie eine Auffrischungssteuenmg 122 zur Durchführung von Auffrischungszyklen. In der bevorzugten Ausführung lässt die Auffrischungssteuerung 122 CAS-vor-RAS- (CBR) Auffrischungszyklen ablaufen. Ein DRAM-Arbiter 120 ist ebenfalls enthalten, der Anforderungen für das DRAM 116 von den verschiedenen möglichen Anforderern in der DRAM-Schnittstelle 118 schlichtet.
  • Der PCI-Busslave 128 erlaubt jedem PCI-Master, anders als der 20 PCI-Busmaster 126 in der DRAM-Schnittstelle 118, Daten direkt in das DRAM 116 zu legen. Um die Leistung zu verbessern, ist ein Satz von 5 internen Vorauslese-FIFOs 130 mit dem PCI-Busslave 128 verbunden, wobei jeder FIFO eine Tiefe von 8 Doppelworten hat, was die maximale Länge eines durch einen PCI-Busmaster auf dem PCI-Lokalbus 102 ausgeführten Stoßzyklusses ist. Die FIFO-Auswahl wird durch einen "am wenigsten jüngst benutzt"- (LRU) Algorithmus gesteuert, der den jüngst am wenigsten benutzten FIFO auswählt. Dieser Algorihmus wird ausführlicher in US-Patent Nummer 5,809,280 beschrieben. Logik zur Bewahrung der Kohärenz der Daten in den FIFOs 130 ist ebenfalls enthalten. Wenn es einen Treffer auf in einem einzelnen FIFO gelegene Daten gibt, wird der FIFO ausgewählt, der die verlangten Daten enthält. Der PCI-Busslavekanal 128 ist auch mit einem Schreib-FIFO 132 verbunden, der das Eintragen von Schreibungen auf den Bus-Slave von bis zu 8 Doppelworten erlaubt. Der Gebrauch des Schreib-FIFO 132 überwindet die Wartezeiten, die mit dem direkten Schreiben von Daten in das DRAM 116 verbunden sind.
  • Der DRAM-Arbiter 120 steuert alle Anforderungen an das DRAM 116. In der bevorzugten Ausführung werden Auffrischungsanforderungen in einer Tiefe von zwei gestapelt. Wenn zwei Anforderungen anhängig sind, hat die CBR-Auffrischungsanforderung erste Priorität vor jeder anderen Anforderung nach dem DRAM 116. Eine Anforderung von dem Busslave-Schreib-FIFO 132 hat die zweithöchste Priorität, gefolgt von einer Anforderung von der Lese-FIFO-Bank 130.
  • Der PCI-Busmaster 126 unterstützt drei für die Plattenlaufwerksoperationen wichtige Hardwarebefehle. Der erste ist eine Speicher-zu-Speicher-Verschiebung, die Daten vom Hauptcomputer-Systemspeicher (nicht gezeigt) an den Schreib-Eintragungs-Puffer 136 während Schreib-Eintragen-Operationen überträgt. Außerdem ist bei Pufferspeichertreffem auf vorher eingetragene oder vorausgelesene Daten, die sich noch im Schreib-Eintragungs-Puffer-136 oder im Vorauslese-Pufferspeicher 135 befinden, der PCI-Busmaster 126 programmiert, um die Daten im Schreib-Eintragungs-Puffer 136 in den Systemspeicher zu schieben. Des Werteren ist der PCI-Busmaster 126 auch in der Lage, Daten, die sich ganz im DRAM 116 befinden, zu bewegen. Das interne Verschieben kann z.B. eine Übertragung von Daten zwischen dem Schreib-Eintragungs-Puffer 136 und dem XOR-Puffer 134 sein:
  • Die zweite durch den PCI-Busmaster 126 unterstützte Operation ist eine Null-Füllen-Funktion, die benutzt wird, um spezifizierte Teile des XOR-Puffers 134 mit nur Nullen zu initialisieren. Die Null-Füllen-Operation wird durch einen Null-Füllen-Block 136 gesteuert. Außerdem unterstützt der PCI-Busmaster 126 eine Null-Erkennen-Operation, die benutzt wird, um die Plattendaten-Integrität von redundanten Laufwerken zu prüfen. Dazu wird in der DRAM-Schnittstelle 118 ein Null-Prüfen-Block 138 bereitgestellt.
  • Die Operationen des PCI-Busmasters 126 in der DRAM-Schnittstelle 118 werden durch Befehlsbeschreibungsblöcke (CDB) gesteuert. Software, die durch den lokalen Prozessor 106 ausgeführt wird, legt einen CDB an eine Speicherstelle, die für den PCI-Busmaster 126 zugänglich ist. Zeiger auf die CDBs werden in einen in der DRAM-Schnittstelle 118 gelegenen Befehlszeiger-FIFO gelegt, um den Betrieb des Busmasters 126 einzuleiten. Der Busmaster 126 gewinnt die CDB-Zeiger aus dem Befehlszeiger-FIFO in ihrer gespeicherten Reihenfolge zurück, holt den CDB aus der spezifizierten Speicherstelle und führt den in dem CDB enthaltenen Befehl aus. Nach Vollendung des Befehls übergibt der Busmaster 126 den CDB-Zeiger für den vollendeten Befehl vom Befehlszeiger-FIFO an einen Vollendungsstatus-FIFO. Der lokale Prozessor 106 kann durch Unterbrechung oder durch Abfragen, dass entweder eine Vollendung anhängig ist oder dass der Busmaster 126 wertere CDB-Zeiger annehmen kann, benachrichtigt werden. Um die rückgewonnenen CDBs zu parsen, wird in der DRAM-Schnittstelle 118 ein Befehls-Parserblock 140 bereitgestellt. Da die Befehls-Parse-Operation Zugriff auf das DRAM 116 erfordern kann, ist der Befehls-Parserblock 140 ein möglicher Anforderer, dem von dem DRAM-Arbiter 120 Zugriff gewährt werden muss, bevor er zu arbeiten beginnen kann.
  • Wie oben beschrieben, gehören die drei höchsten Prioritäten für Zugriffe auf das DRAM 116 der CBR-Auffrischungsanforderung, einer Anforderung von dem Schreib-Eintragen-Busslave-FIFO 132 und einer Anforderung von der Lese-FIFO-Bank 130. Die Prioritäten der übrigen Anforderungen sind wie folgt in absteigender Ordnung: die Null-Prüfen-Operation, eine Extern-nach-Intern-Speicherschreiboperation, eine Intern-nach-Intern-Speicherleseoperation, eine Intern-nach-Intern-Speicherschreiboperation, eine Null-Füllen-Operation, eine Befehls-Parse-Operation und eine Intern-nach-Intern-Speicherieseoperation.
  • Die erfindungsgemäße Plattensteuerplatine 10 ist in der Lage, eine Plattenanordnungs-Rekonfiguration durchzuführen, d. h., ein auf einer gegebenen Plattenanordnungs-Konfiguration (logischer Quellen-Datenträger) entwickelter logischer Datenträger kann in einen logischen Datenträger auf einer unterschiedlichen Zahl von Plattenlaufwerken, die die Anordnung (logischer Ziel-Datenträger) bilden, rekonfiguriert werden, während Daten für Host-Anforderungen, z.B. Lese- und Schreib-Anforderungen nach Daten in dem Plattenuntersystem 142, verfügbar bleiben. Um die von einer EXPAND-Task zum Erweitern der Plattenanordnung durch Hinzufügen eines Plattenlaufwerks durchgeführten Übertragungen am besten zu veranschaulichen, wird nun auf 2A2E verwiesen, die den Datenfluss von dem logischen Quellen-Datenträger zu dem logischen Ziel-Datenträger veranschaulichen. 2A veranschaulicht den logischen Quellen-Datenträger F. Jede Reihe stellt einen Streifen dar, und jede Spalte stellt ein physikalisches Laufwerk dar. Jeder Kasten in einer Reihe stellt eine Streifeneinheit dar, die aus einer vorbestimmten Zahl von Sektoren besteht. Der Einfachheit halber wird keine Paritätsinformation gezeigt. 2B-2F zeigen die Zwischenschritte eines Plattenanordnungs-Erweiterungsprozesses, wobei 2F den logischen Ziel-Datenträger F und einen neuen logischen Datenträger G veranschaulicht. Für dieses Beispiel wird angenommen, dass die Streifengröße des logischen Ziel-Datenträgers größer ist als die Streifengröße des logischen Quellen-Datenträgers. Der Einfachheit halber wird auch angenommen, dass die Datenträgergröße des logischen Datenträgers F klein ist, und es wird angenommen, dass die Streifeneinheitsgröße des logischen Ziel-Datenträgers gleich der Streifeneinheitsgröße des logischen Quellen-Datenträgers ist. Die EXPAND-Task wird ein voller Streifen (des Ziel-Datenträgers) zu einer Zeit durchgeführt.
  • 2B veranschaulicht ein neues Plattenlaufwerk, das der Anordnung hinzugefügt wird. 2C zeigt, dass ein ganzer Streifen, der aus den Streifeneinheiten 0A, 1A, 2A und 3A besteht, von dem logischen Quellen-Datenträger F zu dem logischen Ziel-Datenträger F übertragen wird. Der Streifen wird zuerst aus dem logischen Quellen-Datenträger F gelesen und in den zugeteilten Erweiterungspuffer in dem Schreib-Eintragungs-Speicher 136 gelegt. Die Daten werden dann aus den Schreib-Eintragungs-Speicher 136 zurück in den logischen Ziel-Datenträger F geschrieben. 2D veranschaulicht die Übertragung des nächsten Streifens, der aus den Einheiten 0B, 1B, 2B und 3B besteht, von dem logischen Quellen-Datenträger an den logischen Ziel-Datenträger. Als Nächstes veranschaulicht 2E die Übertragung des dritten Streifens, der aus den Streifeneinheiten 0C, 1C, 2C und 3C besteht. Schließlich veranschaulicht 2F die Übertragung der restlichen Streifeneinheiten in dem logischen Quellen-Datenträger, die aus den Einheiten 0D, 1D und 2D bestehen. Die letzte Übertragung durch die EXPAND-Task ist somit eine Teilstreifenverschiebung von dem logischen Quellen-Datenträger zu dem Schreib-Eintragungs-Puffer 136 und zurück zu dem Ziel-Datenträger. Die Rekonfiguration der Plattenanordnung resultierte auch in von dem logischen Datenträger F nicht benutzten überschüssigen Platz, wie durch die leeren Streifeneinheiten auf der unteren Reihe veranschaulicht. Der überschüssige Platz ist als ein neuer logischer Datenträger G konfigurierbar.
  • Es können seltene Fälle vorkommen, wo die Streifengröße des Ziel-Datenträgers als kleiner als die Streifengröße des Quellen-Datenträgers spezifiziert wird. Ein Beispiel davon wird in
  • 2G und 2H gezeigt, wobei 2G den logischen Datenträger N und 2H den logischen Ziel-Datenträger H veranschaulichen. In diesem Szenario hat der Ziel-Datenträger H ein physikalisches Laufwerk weniger als der logische Quellen-Datenträger N. Eine solche Plattenanordnungs-Rekonfiguration ist nur möglich, wenn die Laufwerke 1, 2 und 3 überschüssigen, unbenutzten Platz haben. Die Menge an benötigtem überschüssigem Platz muss wenigstens gleich der auf dem Plattenlaufwerk 4 gespeicherten Datenmenge im logischen Quellen-Datenträger sein. Die EXPAND-Task beginnt bei dem letzten Streifen und geht zurück zu dem ersten Streifen. Die erste Übertragung umfasst nur die Streifeneinheit OA, da die Zahl von Streifeneinheiten im Ziel-Datenträger sich von der des Quellen-Datenträgers unterscheidet. Die Streifeneinheit OA wird in den Eintragungspuffer 136 gelesen und dann in den ersten Streifen des logischen Ziel-Datenträgers N geschoben. Die übrigen Übertragungen umfassen Übertragungen ganzer Streifen, beginnend mit dem Streifen, der aus den Einheiten OB, 1 B und 2B besteht, und endend mit dem Streifen, der aus den Einheiten 0F, 1F und 2F besteht.
  • Die auf der Steuerplatine 10 laufende Firmware beginnt nicht automatisch immer einen Rekonfigurationsprozess, wann immer ein neues Laufwerk eingefügt oder ein Laufwerk entfernt wurde. Es obliegt dem Benutzer, einen Plattenanordnungs-Rekonfigurationsprozess durch Software, die auf dem Host-Computer läuft, anzufordern. Außerdem kann der Benutzer wünschen, eine Plattenanordnung zu rekonfigurieren, selbst wenn das physikalische Laufwerksystem unverändert ist, z.B. einem logischen Datenträger ein Laufwerk weniger zuweisen. In der bevorzugten Ausführung wird Software mit einer graphischen Benutzerschnittstelle benutzt, um in einer Windows-Umgebung Information über die Plattensteuerplatine 10 anzuzeigen. Auf der Basis der angezeigten Information kann der Benutzer die Software programmieren, um Befehle zum Rekonfigurieren der Plattensteuerplatine auszugeben. Einige der Befehle, die von der Host-Software ausgegeben werden können, werden unten beschrieben.
  • Ein Befehl zum Rückgewinnen von Information über die Plattensteuerplatine ist der Befehl SENSE BUS PARAMETERS. Der Befehl SENSE BUS PARAMETERS wird an eine bestimmte SCSI-Steuerung 112 gerichtet, um Information über diese SCSI-Steuerung zu erlangen. Ein Parameter, der über den Befehl SENSE BUS PARAMETERS rückgewonnen werden kann, ist der Parameter HOT_PLUG_COUNT. Jedes Wort des Parameters HOT_ PLUG_COUNT stellt ein physikalisches Festplattenlaufwerk dar, das mit einem Fach verbunden ist, das einer SCSI-Steuerung 112 entspricht. Der Parameter HOT_PLUG_COUNT wird jedes Mal inkrementiert, wenn dem einzelnen Fach ein physikalisches Laufwerk hinzugefügt (hot-plugged) wird. Der Parameter HOT_PLUG_COUNT wird inkrementiert, wenn dem Fach ein neues Laufwerk hinzugefügt wurde, ein Laufwerk ausgefallen war und ersetzt wurde oder das gleiche Laufwerk entfernt und wieder installiert wurde. Beim Einschalten wird der Parameter HOT_PLUG_COUNT auf null gesetzt.
  • Ein anderer Parameter, der durch den Befehl SENSE BUS PARAMETERS rückgewonnen werden kann, ist der Parameter CONNECTION_INFO, der Bits enthält, die angeben, ob externe oder interne Laufwerke an der Plattensteuerplatine 10 angeschlossen sind.
  • Die Host-Software enthält auch einen Befehl SET CONTROLLER PARAMETERS zum Modifizieren von mit der Plattensteuerplatine 10 verbundenen Parametern. Zwei Steuerungsparameter sind die Parameter REBUILD_PRIORITY und EXPAND_PRIORITY zum Bestimmen der Hintergrund-Wedefierstellen- und Rekonfigurations-Tasks, die in der bevorzugten Ausführung beide zwischen den Werten 0 und 255 wählbar sind.
  • Ein anderer Befehl, der von der Host-Software ausgegeben werden kann, ist der Befehl SENSE LOGICAL DRIVE STATUS. Dieser Befehl stellt fest, ob ein logisches Laufwerk, d.h. ein logischer Datenträger, in einem der folgenden Zustände ist: LOG_VOL_OK, anzeigend, dass der Datenträgerin Ordnung ist; LOG_VOL_FAILED, anzeigend, dass der Datenträger ausgefallen ist; LOG_VOL_NOT_CONFIGURED, anzeigend, dass der Datenträger noch nicht konfiguriert wurde; LOG VOL NEEDS REBUILD, anzeigend, dass ein Fehler aufgetreten ist, der erfordert, dass Daten wiederhergestellt werden; LOG VOL REBUILDING, anzeigend, dass der Datenträger gegenwärtig wiederhergestellt wird; LOG_VOL_OVER-HEATING, anzeigend, dass die Hardware überhitzt ist; LOG_VOL_EXPANDING, anzeigend, dass eine Rekonfigurierungs-Task momentan im Gange ist; LOG_VOL_NEEDS_ EXPAND, anzeigend, dass ein Rekonfigurierungsanforderung anhängig ist, und LOG_VOL_ NOT_AVAILABLE, anzeigend, dass ein logischer Datenträger nicht verfügbar ist, z. B., wenn während der Datenträger-Konfigurationsoperation überlappende logische Datenträger entdeckt werden. Der Befehl SENSE LOGICAL DRIVE STATUS gewinnt auch einen Plan von ausgefallenen physikalischen Plattenlaufwerken zurück, die mit einem bestimmten logischen Datenträger verbunden sind.
  • Die Host-Software kann auch Befehle SET CONFIGURATION und CHANGE CONFIGURA-TION ausgeben. Der Befehl CHANGE CONFIGURATION wird benutzt, um die Konfiguration einer bestehenden Plattenanordnung zu ändern. Um eine Plattenanordnung zu rekonfigurieren, wird daher der Befehl CHANGE CONFIGURATION ausgegeben, um dem logischen Datenträger die unterschiedliche Zahl von Plattenlaufwerken zuzuteilen. Der Befehl SET CONFIGURATION kann auch benutzt wirden, um die Plattenanordnungs-Rekonfiguration durchzuführen. Der Unterschied zwischen den Befehlen SET CONFIGURATION und CHANGE CONFIGURATION ist, dass in dem logischen Datenträger gespeicherte Daten verlorengehen, wenn der Befehl SET CONFIGURATION ausgegeben wird, während es der Befehl CHANGE CONFIGURATION erlaubt, dass Daten bewahrt werden.
  • Das Folgende beschreibt einige der Konfigurationsparameter, die mit den Befehlen SET CONFIGURATION und CHANGE CONFIGURATION ausgegeben werden. Ein Parameter CONFIGURATION_SIGNATURE stellt eine Signatur dar, die für jeden logischen Datenträger einmalig ist. Ein Parameter DATA_DISTRIBUTION_MODE bestimmt das Abbildungsschema, das zwischen einer logischen Anforderung und einer physikalischen Anforderung benutzt wird, wobei der Parameter auf den Wert 1 gesetzt wird, um direktes Abbilden anzugeben, und auf den Wert 2, um Mehrfachblock-Verschachtelungsabbildung zu spezzieren, die mit RAID 0 und 1 Fehlertoleranzschemas benutzt wird. Das Direktabbildungsschema benutzt nur ein physikalisches Laufwerk, wenn keine Fehlertoleranz gewählt wird, und zwei physikalische Laufwerke, wenn Spiegelungs-Fehlertoleranz gewählt wird. Das mit RAID 0 und 1 Konfigurationen benutzte Mehrtachblock-Verschachtelungsabbildungsschema zerlegt eine logische Anforderung in physikalische Anforderungen, die an passende physikalische Laufwerke gerichtet werden. Wenn RAID 4 oder 5 Fehlertoleranz benutzt wird, wird ein Paritätsabbilder verwendet, um die Daten und Paritätsinformation an die geeigneten physikalischen Laufwerke zu leiten. Das gewählte Abbildungsschema wandelt logische Host-Anforderungen in physikalische Anforderungen um, die von der geeigneten der SCSI-Steuerungen 112A-E ausgeführt werden.
  • Ein Parameter CONTROLLER_PHYSICAL_DRIVE_COUNT spezifiziert die Gesamtzahl von physikalischen Laufwerken, die mit der einzelnen SCSI-Steuerung 122 verbunden ist, einschließlich solcher, die in einem externen Speicherkasten installiert sind. Ein Parameter LOGICAL_UNIT_PHYSICAL_DRIVE_COUNT spezifiziert die Gesamtzahl von physikalischen Laufwerken, die dem logischen Datenträger zugewiesen ist. Wenn der Parameter auf den Wert null gesetzt wird, wird der ganze logische Datenträger gestrichen.
  • Der Fehlertoleranzmodus des spezifizierten logischen Datenträgers wird durch einen Parameter FAULT_TOLERANCE_MODE festgelegt, wobei der Wert 0 anzeigt, dass keine Fehlertoleranz benutzt wird, und die Werte 1, 2 und 3 anzeigen, dass die RAID 4, RAID 1 bzw. RAID 5 Schutzschemas benutzt werden. Ein Parameter DISTRIBUTION_FACTOR stellt die Zahl von physikalischen Sektoren in einer Streifeneinheit dar. Ein Streifen kann mehrere physikalische Laufwerke überspannen, und eine Streifeneinheit ist der Teil des Streifens, der sich auf einem physikalischen Laufwerk befindet. Ein Parameter SPARE ASSIGN-MENT MAP bezeichnet physikalische Laufwerke, die als Online-Reserven zu verwenden sind. Ein Parameter OFFSET_TO_DATA spezifiziert den Versatz in jedes physikalische Laufwerk in der Laufwerksanordnung, die die Anfangsstelle eines logischen Datenträgers ist. Für die Rekonfigurationsoperation muss der Wert von OFFSET TO DATA für den logischen Ziel-Datenträger nicht unbedingt in dem logischen Quellen-Datenträger liegen, solange der Wert OFFSET_TO_DATA nicht bewirkt, dass der Ziel-Datenträger einen anderen logischen Datenträger überschneidet. Ein Parameter BLOCKS_ON_VOLUME spezifiziert die Gesamtzahl verwendbarer Sektoren in einem bestimmten Datenträger. Ein Parameter BLOCKS_PER_DRIVE spezifiziert die Zahl von Sektoren, die auf jedem physikalischen Laufwerk benutzt wird.
  • Wenn eine Plattenanordnung rekonfiguriert wird, können die oben aufgeführten Parameter auf verschiedene Werte für den logischen Quellen-Datenträger und den logischen Ziel-Datenträger spezifiziert werden. Zum Beispiel wird der Parameter LOGICAL_UNIT_PHYSICAL_DRIVE_COUNT in einer Erweiterungsoperation in einen anderen Wert geändert, wobei der Wert für den logischen Ziel-Datenträger größer ist als der des logischen Quellen-Datenträgers. Der Fehlertoleranzmodus des logischen Datenträgers kann durch Ändern des Parameters FAULT_TOLERANCE_MODE geändert werden, wobei der Quellen-Datenträger einen Modus und der Ziel-Datenträger einen anderen hat. Die anderen Datenträgerparameter können, wie vom Benutzer gewünscht, ebenfalls eingestellt werden.
  • Die Host-Software informiert den lokalen Prozessor 106, dass eine Befehlsliste im Host-Speicher gebildet wurde, indem sie die Adresse der Befehlsliste in einen in der Prozessor-PCI-Brücke 110 gelegenen Befehlszeiger-FIFO schreibt. Der Befehls-FIFO ist vorzugsweise 16 Wörter tief und 32 Bit breit, um bis zu 16 Befehlslistenzeiger zu halten. Als Reaktion erlangt die Prozessor-PCI-Brücke 110 die Kontrolle des PCI-Lokalbusses 102, um 8 Doppelwörter aus dem Host-Speicher beginnend an der durch den Befehlslistenzeiger spezzierten Stelle zurückzugewinnen. Die 8 Doppelwörter der Befehlsliste werden in einem Befehlslisten-FIFO gespeichert. Die Prozessor-PCI-Brücke 110 unterbricht dann den lokalen Prozessor 106, um anzuzeigen, dass ein Befehl lokal vorhanden ist. Der lokale Prozessor 106 ruft dann die passende Unterbrechungs-Serviceroutine auf, um den Befehl in den lokalen Speicher 8 zu schieben. Die Unterbrechungs-Sericeroutine ruft eine Routine EXECUTE_LOGICAL_REQUEST (gezeigt in 7A und 7B) auf, um zu bestimmen, welche Tasks als Reaktion auf den Host-Befehl aufzurufen sind.
  • Die Routine EXECUTE_LOGICAL_REQUEST wird mit einem Zeiger REQUEST, der die Anfangsadresse einer Datenstruktur ist, die ein Feld UNIT enthält, um den logischen Datenträger, auf den zuzugreifen ist, zu spezifizieren, einem Feld COMMAND, um die Art des auszuführenden Befehls zu spezifizieren, einem Feld STATUS, um anzuzeigen, ob der Host- Befehl erfolgreich gelaufen ist, und Feldern übennittelt, die die Anfangssektomummer und die Zahl von Sektoren angeben, die in dem momentanen Befehl enthalten sind. Die Routine EXECUTE_LOGICAL_REQUEST prüft, um festzustellen, ob der Parameter EXPAND_RUN-NING wahr gesetzt ist, was anzeigt, dass ein Rekonfigurationsprozess im Gange ist. Wenn ja, ruft die Routine EXECUTE_LOGICAL_REQUEST eine Routine PROCESS_EXPAND_ REQUEST ( gezeigt in 8) auf, die prüft, um festzustellen, ob die verlangten Sektoren durch die EXPAND-Task schon verarbeitet wurden, und die Datenträger-Konfigurationsparameter entsprechend zu setzen. Außerdem ruft, wenn die Befehle SETCONFIGURATION oder CHANGE CONFIGURATION geltend gemacht werden, die Routine EXECUTE_LOGICAL_REQUEST eine Routine SET_CONFIGURATION auf, um die Rekonfigurations-Task zu handhaben.
  • Nun auf 3A-3C verweisend wird ein Flussdiagramm der SET CONFIGURATION-Task gezeigt. Zuerst wird in Schritt 301 festgestellt, ob ein Parameter GLOBAL RIS einen Nicht-Null-Wert hat. Der Parameter GLOBAL-RIS ist ein Zeiger auf eine Stelle im Speicher, die die globale RIS-Struktur speichert. Jeder logische Datenträger ist mit spezifischen Konfigurationsparametern verbunden, und jede der Steuerungen 112A-E ist mit bestimmten Steuerungsparametern verbunden. Die Konfigurations- und Steuerungs-Parameter sind in reservierten Infonnationssektoren (RIS) in jedem logischen Datenträger gespeichert. Die globale RIS-Datenstruktur liegt im lokalen Speicher 108, um die RIS-Information der logischen Datenträger im Platten-Untersystem 142 zum schnelleren Zugriff auf die Konfigurations- und Steuerungs-Information zu speichern. Die RIS-Datenstruktur speichert auch Parameter, die mit der Rekonfigurationsoperation verbunden sind.
  • Wenn der Parameter GLOBAL RIS einen Wert null hat, der anzeigt, dass die Steuerungsplatine 10 gerade zu arbeiten begonnen hat, und dass noch kein logischer Datenträger konfiguriert wurde. Wenn der Parameter GLOBAL RIS einen Wert null hat, geht der Ablauf zu Schritt 304; andernfalls, wenn der Parameter GLOBAL RIS einen Nicht-Null-Wert hat, geht die Steuerung zu Schritt 302, wo ein Parameter LOGICAL gesetzt wird, um auf die Anfangsstelle des Bereichs in der RIS-Datenstruktur zu zeigen, die die Konfigurations- und Steuerungsparameter des spezifizierten logischen Datenträgers enthält, der zu Zwecken des Rekonfigurationsprozesses der logische Ziel-Datenträger ist. Der Ablauf geht dann von Schritt 302 zu Schritt 304.
  • In Schritt 304 wird festgestellt, ob der spezifizierte Anforderungsbefehl ein Plattenanordnungs-Rekonfigurierbefehl ist. Wenn eine Plattenanordnungs-Rekonfigurieranforderung angegeben wird, geht der Ablauf zu Schritt 306; andernfalls geht der Ablauf zu Schritt 314.
  • In Schritt 306 wird festgestellt, ob irgendeeine der unten aufgeführten Bedingungen wahr ist: Der Parameter LOGICAL_UNIT_PHYSICAL_DRIVE_COUNT ist auf null gesetzt, was einen Befehl zum Streichen des spezzierten logischen Datenträgers anzeigt; der Parameter GLOBAL RIS enthält einen Null-Wert, d. h. der angegebene logische Datenträger existiert nicht; der Status des logischen Datenträgers ist LOG_VOL_UNUSED, was anzeigt, dass der logische Datenträger momentan unbenutzt ist; die Speicherplatine, die die DRAM-Schnittstelle 118 und das DRAM 116 enthält, ist nicht vorhanden; die Batterien 144 zum Stützen von Teilen des DRAM 116 sind nicht geladen, oder für den spezifizierten logischen Datenträger ist momentan eine Rekonfigurieranforderunng anhängig. Wenn eine der obigen Bedingungen wahr ist, kann die Plattenanordnungs-Rekonfigurieranforderung nicht fortschreiten. Der Ablauf geht dann zu Schritt 308, wo das Feld STATUS der momentanen Anforderung auf den Status BAD_REQUEST gesetzt wird, um anzuzeigen, dass die Rekonfigurieranforderung nicht in der Lage ist, voranzuschreiten. Von Schritt 308 kehrt die Steuerung zurück zu der aufrufenden Task.
  • Wenn keine der in Schritt 306 geprüften Bedingungen wahr ist, geht der Ablauf zu Schritt 309, wo die Richtung der Rekonfigurieroperation und die Iterationsgröße festgelegt werden. Die Richtung des Rekonfigurierprozesses wird in der Vorwärtsrichtung festgelegt, d. h., Beginnen beim ersten Streifen und Vorangehen zum letzten Streifen oder in der umgekehrten Richtung, d. h., Beginnen beim letzten Streifen und Anhalten beim ersten Streifen. Die Richtung wird durch einen Parameter DIRECTION_UP angegeben, der, wenn wahr gesetzt, angibt, dass der Rekonfigurierprozess in der Vorwärtsrichtung vorangeht. Der Wert des Parameters DIRECTION_UP wird wahr gesetzt, wenn die Zahl von Laufwerken in dem logischen Ziel-Datenträger größer oder gleich der Zahl von Laufwerken in dem logischen Quellen-Datenträger ist.
  • Die Iterationsgröße, dargestellt durch einen Parameter ITERATION_BLOCK_COUNT, wird festgelegt, indem die Werte des Parameters DISTRIBUTION_FACTOR in dem logischen Ziel-Datenträger und des Parameters DISTRIBUTION_FACTOR in dem logischen Quellen-Datenträger verglichen werden. Der Parameter DISTRIBUTION_FACTOR stellt die Zahl von Sektoren in einer Streifeneinheit dar. Wenn die Parameter in dem logischen Quellen- und Ziel-Datenträger gleich sind, wird die Iterationsgröße ITERATION_BLOCK_COUNT auf die Streifengröße des logischen Ziel-Datenträgers gesetzt. Andernfalls, wenn die Parameter nicht gleich sind, ist die Iterationsgröße gleich dem kleinsten gemeinsamen Nenner der Streifengröße des Quellen-Datenträgers und der Streifengröße des Ziel-Datenträgers. Wenn z. B. die Quellen-Datenträger-Streifengröße 12 Sektoren ist und die Ziel-Datenträger Streifengröße 18 Sektoren ist, wird die Iterationsgröße auf 36 Sektoren gesetzt. Wenn die Iterationsgrö ße ITERATION_BLOCK_COUNT größer als 8,000 ist, was die Größe des Puffer-RAM 116 in Sektoren darstellt, kehrt die Steuerung zu dem aufrufenden Programm zurück, wobei das Flag STATUS auf den Status BAD_REQUEST gesetzt wird. Die Iterationsgröße ist die Übertragungsgröße für jeden Rekonfigurierschritt, um Überschneiden zu verhindern, wenn die Verteilungsfaktoren für den logischen Quellen- und Ziel-Datenträger verschieden sind.
  • Als Nächstes geht der Ablauf zu Schritt 310, wo festgestellt wird, ob sich der Quellen-Datenträger und der Ziel-Datenträger in der Rekonfigurationsoperation überschneiden. Ebenfalls wird festgestellt, ob der Parameter DIRECTION_UP wahr gesetzt ist und ob der Parameter OFFSET_TO_DATA des Ziel-Datenträgers größer als der Parameter OFFSET_TO_DATA des Quellen-Datenträgers ist. Wenn ja, wird in Schritt 312 das Feld STATUS der Anforderung auf den Zustand BAD_REQUEST gesetzt. Aftemativ wird, wenn festgestellt wird, dass sich der Ziel-Datenträger mit dem Quellen-Datenträger überschneidet, der Parameter DI-RECTION_UP unwahr gesetzt, und wenn der Parameter OFFSET_TO_DATA des Ziel-Datenträgers kleiner als der Parameter OFFSET_TO_DATA des Quellen-Parameters ist, wird das Feld_STATUS der momentanen Anforderung ebenfalls in Schritt 312 auf den Zustand BAD_REQUEST gesetzt. Jede der zwei obigen Bedingungen würde bewirken, dass Teile des logischen Quellen-Datenträgers überschrieben werden, bevor Daten in diesen Teilen in den logischen Ziel-Datenträger übertragen wurden. Von Schritt 312 kehrt die Steuerung zurück zu der aufrufenden Task.
  • Wenn keine der in Schritt 310 geprüften Bedingungen wahr ist, geht der Ablauf von Schritt 310 zu Schritt 314. In Schritt 314 wird eine Prüfung durchgeführt, um festzustellen, ob sich der Ziel-Datenträger mit irgendeinem anderen logischen Datenträger überschneiden würde. Der Platz in der für den Ziel-Datenträger benutzten Plattenanordnung darf nicht schon von einem anderen logischen Datenträger benutzt oder als Reservelaufwerk für einen anderen logischen Datenträger zugeteilt sein. Der ganze in dem Ziel-Datenträger benutzte Platz muss entweder Platz sein, der von dem Quellen-Datenträger benutzt wird, Reservelaufwerksplatz für den Quellen-Datenträger oder unbenutzter Laufwerksplatz sein. In Schritt 316 wird festgestellt, ob eine Überschneidung vorkommt. Wenn ja, geht der Ablauf zu Schritt 318, wo das Feld STATUS der Anforderung auf den Status BAD REQUEST gesetzt wird. Von Schritt 318 kehrt die Steuerung zurück zu der aufrufenden Task.
  • Wenn in Schritt 316 keine Überschneidung festgestellt wird, geht der Ablauf zu Schritt 320, wo die Task SET_CONFIGURATION pausiert, während andere anstehende logische Host-Anforderungen, wenn vorhanden, verarbeitet werden. Wenn allen anderen logischen Anforderungen erledigt sind, geht der Ablauf zu Schritt 322. In Schritt 322 wird festgestellt, ob die schmutzigen Zeilen in dem Schreib-Eintragungs-Puffer 136 in das Platten-Untersystem 142 gespült worden sind. Wenn nicht, wird die Task SET_CONFIGURATION erneut angehalten, während die schmutzigen Zeilen im Puffer 136 gespült werden. Dann wird in Schritt 324 jede laufende Hintergrund-Task suspendiert. Dies ist erforderlich, um Wiederherstellungs-, Oberflächenanalysen- und andere Hintergrund-Tasks während des Rekonfigunerens pausieren zu lassen.
  • Von Schritt 324 geht der Ablauf zu Schritt 326, wo festgestellt wird, ob der Datenträger bereits in der Erweiterungs-Queue ist. Wenn ja, geht der Ablauf zu Schritt 328, wo die Rekonfigurationsanforderung, die in der Queue anhängig ist, durch Aufrufen einer Task EXPAND_ ABORT abgebrochen wird. Dies erlaubt, dass ein Befehl SET CONFIGURATION ausgegeben wird, um einen Rekonfigurationsbefehl CHANGE CONFIGURATION abzubrechen. Wenn eine Rekonfigurationsanfordenrng abgebrochen wird, wird ein Parameter EXPAND_ UNIT_COUNT dekrementiert, um anzuzeigen, dass eine Rekonfigurationsanforderung weniger anhängig ist. Außerdem wird von dem lokalen Prozessor 106 eine Unterbrechung zurück an den Host erzeugt, um anzuzeigen, dass die Rekonfigurationsanforderung abgebrochen wurde. Von Schritt 328 geht der Ablauf zu Schritt 330. Außerdem geht der Ablauf von Schritt 326 zu Schritt 330, wenn festgestellt wird, dass der angegebene Datenträger nicht in der Erweiterungs-Queue ist.
  • In Schritt 330 wird festgestellt, ob der Parameter GLOBAL RIS einen Null-Wert hat. Wenn der Parameter GLOBAL RIS einen Null-Wert enthält, zeigt dies an, dass es das erste Vorkommen des Befehls SET CONFIGURATION ist, um den ersten logischen Datenträger zu konfigurieren. Wenn der Parameter GLOBAL_RIS einen Null-Wert enthält, geht der Ablauf zu Schritt 332, wo die globale RIS-Datenstruktur in dem lokalen Speicher 108 zugeteilt wird. Außerdem werden die Inhalte der globalen RIS-Datenstruktur initialisiert. Als Nächstes wird in Schritt 334 ein Parameter LOGICAL DRIVE COUNT auf den Wert 1 gesetzt, um anzuzeigen, dass ein Datenträger konfiguriert wurde. Von Schritt 334 geht der Ablauf zu Schritt 336.
  • Wenn die globale RIS-Datenstruktur bereits existiert, wie durch einen den Nicht-Null-Wert in Schritt 330 enthaltenden Parameter GLOBAL RIS angezeigt, geht der Ablauf zu Schritt 338, wo festgestel wird, ob der angegebene logische Datenträger im unbenutzten oder LOG_VOL_UNUSED Status ist. Wenn dies wahr ist, wird der logische Laufwerkszählparameter LOGICAL_DRIVE_COUNT um den Wert 1 erhöht, um die Verfügbarkeit eines anderen logischen Datenträgers anzuzeigen. Von Schritt 338 geht der Ablauf zu Schritt 336.
  • In Schritt 336 wird der Parameter LOGICAL auf einen Versatzwert gesetzt, der die Anfangsstelle eines Bereichs in der RIS-Datenstruktur darstellt, die die Konfigurations- und Steuerungsparameter der spezifizierten Datenträgereinheit speichert. Man beachte, dass dies bereits in Schritt 302 gemacht wurde, wenn der Parameter GLOBAL_RIS ein Nicht-NuII-Wert war. In Schritt 336 besteht die Möglichkeit, dass in Schrit 332 eine neue RIS-Datenstruktur zugeteilt wurde, was es nötig macht, dass der Parameter LOGICAL nachträglich definiert wird.
  • Zu Schritt 340 gehend wird festgestellt, ob der übermittelte Anforderungsbefehl ein Plattenanordnungs-Rekonfigurationsbefehl ist. Wenn ja, geht der Ablauf zu Schritt 342, wo die Parameter des logischen Quellen-Datenträgers in einen anderen Teil der globalen RIS-Datenstruktur kopiert werden. Die Quellen-Konfigurationsparameter werden zum späteren Zugriff in einem getrennten Bereich der RIS-Datenstruktur gespeichert.
  • Von Schritt 342 oder von Schritt 340 geht, wenn festgestellt wird, dass der übermittelte Anforderungsbefehl kein Rekonfigurationsbefehl ist, der Ablauf zu Schritt 344. In Schritt 344 werden die durch den Host-Befehl SET CONFIGURATION oder CHANGE CONFIGURA-TION spezifizerten Ziel-Datenträger-Konfigurationsparameter in der globalen RIS-Datenstruktur beginnend an einer Stelle gespeichert, die dem logischen Ziel-Datenträger entsprtcht, d. h., der früheren Stelle des logischen Quellen-Datenträgers.
  • Als Nächstes zu Schritt 356 gehend wird wiederum festgestellt, ob der übermittelte Anforderungsbefehl ein Rekonfigurationsbefehl ist. Wenn ja, geht der Ablauf zu Schritt 358, wo eine Task EXPAND_QUEUE aufgerufen wird, um die Rekonfigurationsanforderung in die Erweiterungsanforderungs-Queue EXPAND_UNIT_QUEUE[I] einzureihen. Die Task EXPAND_ QUEUE wird mit 5 unten beschrieben. Von Schritt 358 geht der Ablauf zu Schritt 360.
  • Wenn in Schritt 356 festgestellt wird, dass die übermittelte Anforderung keine Rekonfigurationsanforderung ist, geht der Ablauf zu Schritt 360, wo der Datenträgerstatus des angegebenen logischen Datenträgers durch Aufrufen einer Task UPDATE_LOGICAL_UNIT_STATE aktualisiert wird. Die Routine modziert den Datenträgerstatus des angegebenen logischen Laufwerks aufder Basis des Status aller physikalischen Laufwerke in dem Datenfräger und des Fehlertoleranzmodus des Datenträgers. Wenn z. B. keine Fehlertoleranz gewählt wird, würde ein ausgefallenes physikalisches Laufwerk bewirken, dass der Datenträgerstatus auf den ausgefallenen Status gesetzt wird. Wenn jedoch der RAID 1, 4 oder 5 Fehlertoleranzmodus gewählt wird, können Daten auf einem ausgefallenen Plattenlaufwerk abhängig davon wiederherstellbar sein, ob Ersatz- und Reserve-Laufwerke momentan benutzt werden.
  • Die Routine UPDATE_LOGICAL_UNIT_STATE sendet auch eine Unterbrechung an das Host-Computersystem 100, wenn der Datenträgerstatus aktualisiert worden ist. In Schritt 362 zeigt dies dem Host-Betriebssystem an, dass ein neuer logischer Datenträger konfiguriert wurde. Von Schritt 362 geht der Ablauf zu Schritt 360.
  • In Schritt 360 werden mit dem Puffer verbundene Parameter, die von dem spezzierten logischen Datenträger abhängen, initialisiert. Diese Pufferparameter umfassen eine Bitmap, die angibt, ob eingetragene Schreibungen für einen logischen Datenträger freigegeben sind. Diese Pufferparameter werden auch in der globalen RIS-Datenstruktur gespeichert. Dann wird zu Schritt 362 gehend die mit dem logischen Ziel-Datenträger verbundene Konfigurationssignatur in einem reservierten Bereich in dem Schreib-Eintragungs-Puffer 136 gespeichert. Diese Signatur wird während der Stromwiedefierstellungs-Operation benutzt, um festzustellen, ob eine unterbrochene Rekonfigurationsoperation wieder aufzunehmen ist. Dann zu Schritt 364 gehend werden die Parameter, die in der globalen RIS-Datenstruktur im lokalen Speicher 108 gespeichert sind, in reservierte Informationssektoren des spezifizierten Datenträgers zurückgeschrieben. Von Schritt 364 geht der Ablauf zu Schritt 366, wo in Schritt 324 suspendierte Hintergrund-Tasks wiederaufgenommen werden. Von Schritt 366 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Nun auf 4 verweisend wird ein Flussdiagramm der Task EXPAND_QUEUE gezeigt. Wie früher angemerkt, gibt die Task EXPAND_QUEUE eine Rekonfigurationsanforderung in die Erweiterungsanforderungs-Queue EXPAND_UNIT_QUEUE[I] ein. Beginnend in Schnitt 402 wird der Parameter EXPAND UNIT COUNT, der die Zahl ausstehender Rekonfigurationsanforderungen darstellt, um den Wert 1 erhöht. Der erhöhte Wert des Parameters EXPAND_ UNIT_COUNT wird benutzt, um auf den momentanen Index in die Queue EXPAND_UNIT QUEUE zu zeigen. Die Datenträgereinheitsnummer UNIT der Rekonfigurationsanforderung wird in die Queue geschrieben. Außerdem wird in Schritt 402 der Parameter EXPAND NEE-DED auf den WAHR-Status gesetzt.
  • Dann wird in Schritt 404 ein Teil des DRAM 116 für die Rekonfigurations-Task zugeteilt. Der zugeteilte Teil ist gleich der maximalen Iterationsblockzahl aller Rekonfigurationsanforderungen in der Queue. Der zugeteilte Teil des DRAM 116 ist batteriegestützt. Der Ablauf geht dann zu Schritt 408, wo eine Unterbrechung an den Host-Computer geltend gemacht wird, um anzuzeigen, dass die Plattenanordnungs-Rekonfigurationsanforderung erfolgreich eingereiht wurde. Von Schritt 408 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Nun auf 5 verweisend wird ein Flussdiagramm von Teilen der Hintergrundplaner- Task gezeigt. Die Hintergrund-Task stellt fest, ob eine der folgenden Hintergrundoperationen benötigt wird: Eine Plattenanordnungs-Rekonfigurationsoperation, eine Wiedefierstellungsoperation, eine Überwachungs- und Leistungsoperation oder eine Plattenoberflächen-Analyseoperation. Die Plattenanordnungs-Rekonfigurationsoperation wird durchgeführt, um eine unterschiedliche Zahl von Plattenlaufwerken einem logischen Datenträger zuzuteilen. Der Wiederherstellungsprozess wird durchgeführt, um Daten wiederherzustellen, wenn ein ausgefallenes Laufwerk entdeckt wird und eine Reserve benutzt wird, um es zu ersetzen, oder wenn ein vorher ausgefallenes Laufwerk ersetzt (hot plugged) wurde. Die Überwachungs- und Leistungs-Task stellt fest, ob die physikalischen Laufwerke bestimmte Leistungsschwellen verletzt haben, z. B. die maximale zulässige Zahl von Lese- oder Schreibfehlern, die maximal annehmbare Zahl von Suchfehlern, der maximal annehmbare Wert für die Hochlaufzeit und viele andere Leistungsparameter. Die Überwachungs- und Leistungs-Schwellendaten können durch einen Benutzer auf einen gewünschten Wert gesetzt werden, indem der geeignete Befehl von dem Host-Computer übermittelt wird. Die Plattenoberflächen-Analyse-Task prüft auf Medienfehler und führt Konsistenzprüfungen der Festplattenlaufwerke durch.
  • In Schritt 202 wird festgestellt, ob eine Hot-Plug-Unterbrechung erkannt wurde. Wie oben angemerkt, wird eine Hot-Plug-Unterbrechung durch einen der mit den fünf Sätzen von physikalischen Laufwerken 114A-E verbundenen Mikrocontroller 140A-E geltend gemacht. Eine Hot-Plug-Unterbrechung wird wird erzeugt, wenn ein physikalisches Plattenlaufwerk eingefügt oder entfernt wird. In der bevorzugten Ausführung macht jeder Mikrocontroller 140A-E die Hot-Plug-Unterbrechung über einen reservierten Pin der entsprechenden 53C825 SCSI-Steuerung 112A-E geltend. Firmware, die auf jeder SCSI-Steuerung 112A-E läuft, setzt dann das geeignete der Unterbrechungsbits HOT_PLUG_BUS[I], 1 = 5, die den fünf SCSI-Steuerungen 112A-E entsprechen.
  • Wenn irgendein Bit der Variablen HOT-PLUG_BUS[I] gesetzt ist, geht der Ablauf zu Schritt 204. In Schritt 204 wird eine Routine HOT PLUG durch die Hintergrund-Task aufgerufen, um festzustellen, was die Hot-Plug-Unterbrechung verursacht hat. Die Routine HOT PLUG bildet eine Liste von Befehlen im lokalen Speicher 108, um den Fragezyklus durchzuführen. Als Nächstes übermittelt die Routine HOT PLUG einen Befehlsblock an die geeignete der SCSI-Steuerungen 112A-E. Der Befehlsblock gibt die Anfangsadresse der Befehlsliste im lokalen Speicher 108 an. Als Reaktion erlangt die ausgewählte SCSI-Steuerung 112 die Kontrolle des PCI-Busses 102, um Befehle aus dem lokalen Speicher 108 zu holen. Die Befehlsliste veranlasst die SCSI-Steuerung 112, einen Lesebefehl über den SCSI-Bus an den Mikrocontroller 140 durchzuführen, um die Art des Ereignisses zu bestimmen, die das Hot-Plug-Ereignis verursachte. Solche Ereignisse umfassen das Installiertwerden eines physikalischen Laufwerks, das Entferntwerden eines physikalischen Laufwerks oder das Entferntwerden und Wiedereingesetztwerden eines physikalischen Laufwerks. Der Mikrocontroller speichert verschiedene Statusbits, die angeben, welche Laufwerke angeschlossen sind, und ob in den Anschlüssen eine Änderung stattgefunden hat. Befehlszyklen zwischen den SCSI-Steuerungen 112A-E und den Mikrocontrollern 140A-E werden mittels SCSI-Befehlszyklen durchgeführt.
  • In Schritt 206 wird dann eine Prüfung durchgeführt, um den Status des Parameters EX-PAND_NEEDED festzustellen, der, wenn hoch gesetzt, anzeigt, dass eine Plattenanordnungs-Rekonfigurationsanforderung anhängig ist, oder eines Parameters EXPAND_RUN-NING, der, wenn hoch gesetzt, anzeigt, dass ein Rekonfigurationsprozess im Gange ist. Wenn einer der Parameter hoch gesetzt ist und ein Parameter REBUILD_RUNNING tief ist, um anzuzeigen, dass momentan kein Wiederherstellungsprozess im Gange ist, geht der Ablauf zu Schritt 208.
  • In Schritt 208 wird die Priorität der Hintergrund-Task, die in diesem Fall die Rekonfigurations-Task ist, festgelegt. Ein Parameter BACKGROUND_PRIORITY wird gleich einem Wert gesetzt, der an der Stelle EXPAND_PRIORITY in der globalen RIS-Datenstruktur gespeichert ist. Die Priorität der Rekonfigurations-Task ist vom Benutzer wählbar. Zu einer ausführlicheren Beschreibung, wie die Hintergrund-Prtorttät die Operationen von Vordergrund-Tasks beeinflusst, siehe US Patent Nummer 5,822,584.
  • Der Ablauf geht dann zu Schritt 210, wo die Task EXPAND aufgerufen wird, um die Rekonfigurationsoperation durchzuführen. Von Schritt 210 geht der Ablauf zu Schritt 212. Wenn in Schritt 206 keiner der Parameter EXPAND_NEEDED oder EXPAND_RUNNING hoch gesetzt ist, oder wenn der Parameter REBUILD_RUNNING hoch gesetzt ist, geht der Ablauf zu Schritt 214, wo der Hintergrund-Prtoritätsparameter BACKGROUND_PRIORITY auf null gesetzt wird, um anzuzeigen, dass die Hintergrund-Task die niedrtgste Prtorttät hat. Dann geht der Ablauf zu Schritt 216, wo festgestellt wird, ob bestimmte Hintergrundfunktionen durchzuführen sind. In der bevorzugten Ausführung umfassen diese bestimmten, anderen Funktionen die Überwachungs- und Leistungs-Task und die Plattenoberflächen-Analyse-Task.
  • Von Schritt 216 geht der Ablauf zu Schritt 212. In Schritt 212 wird die Pausendauer- und Pausenintervallzeit für die Vordergrund-Tasks entsprechend dem Wert des Parameters BACKGROUND_PRIORITY gesetzt. Abhängig von der für die Hintergrund-Taks gesetzten Prorität werden der Vordergrund-Task Verzögerungen hinzugefügt. Wenn z. B. der Para meter BACKGROUND_PRIORITY auf null gesetzt wird, wird einer Anforderung von dem Host-Computer keine Verzögerung hinzugefügt. Wenn der Parameter BACKGROUND_ PRIORITY auf 127 gesetzt wird, wird jeder Host-Anforderung eine Verzögerung von 0.1 s hinzugefügt. Wenn der Parameter BACKGROUND_PRIORITY auf 255 gesetzt wird, wird jeder Host-Anforderung eine Verzögerung von 1.6 s hinzugefügt. Zu werteren Einzelheiten des Prtorttäts-Einstellschemas siehe die oben genannte Patentanmeldung betitelt "User Selectable Prtority for Disk Array Background Operations". Von Schritt 212 kehrt die Steuerung zurück zu Schritt 202. Die Hintergrundplaner-Task wird daher fortlaufend von dem lokalen Prozessor 106 ausgeführt.
  • Nun auf 6A6D verweisend wird ein Flussdiagramm der Task EXPAND gezeigt. Die Task EXPAND wird von der Hintergrundplaner-Task wiederholt aufgerufen, bis die Rekonfigurationsoperation vollendet ist. Zuerst wird in Schritt 504 festgestellt, ob der Parameter EXPAND RUNNING tief ist und der Parameter EXPAND NEEDED hoch ist. Wenn beide obigen Bedingungen wahr sind, geht der Ablauf zu Schritt 506, wo verschiedene Rekonfigurationsparameter gesetzt werden. Diese Rekonfigurationsparameter werden in der XP-Datenstruktur gespeichert. Die Parameter umfassen die logische Datenträgereinheitsnummer LOGICAL UNIT, die gleich der in der Erweiterungsanforderungs-Queue-Stelle EX-PAND_UNIT_QUEUE[0] gespeicherten Datenträgereinheitsnummer gesetzt wird. Der Zeiger auf die Konfigurationsinformation des logischen Quellen-Datenträgers wird ebenfalls zurückgewonnen und in den Parameter X_OLD_LOGICAL gelegt. Die volle Streifengröße des logischen Ziel-Datenträgers wird in den Parameter FULL_STRIPE_SIZE gestellt und wird berechnet, indem der Parameter DISTRIBUTION_FACTOR mit der Zahl von physikalischen Datenlaufwerken multipliziert wird. Ein Parameter BLOCKS_LEFT TO EX-PAND wird gleich dem Wert des Parameters BLOCKS_ON_VOLUME des logischen Quellen-Datenträgers gesetzt. Der Parameter BLOCKS_LEFT_TO_EXPAND wird daher zu Anfang gleich der Gesamtzahl von nutzbaren Sektoren in dem Quellen-Datenträger gesetzt. In Schritt 506 wird auch eine Prüfung durchgeführt, um festzustellen, ob die Zahl von Sektoren im Quellen-Datenträger größer als die Zahl von Sektoren im Ziel-Datenträger ist. Wenn ja, wird der Parameter BLOCKS LEFT TO EXPAND gleich dem Parameter BLOCKS ON_ VOLUME des Ziel-Datenträgers gesetzt. In diesem Fall gehen alle übrigen Blöcke im Quellen-Datenträger einfach verloren. Wenn gewünscht, kann die Host-Software programmiert werden, die Rekonfiguration zu verhindern, wenn die Zahl von Sektoren im logischen Quellen-Datenträger größer ist als die Zahl von Sektoren im logischen Ziel-Datenträger.
  • Ein Parameter TOTAL BLOCKS wird gleich dem Anfangswert des Parameters BLOCKS_ LEFT_TO_EXPAND gesetzt. Wenn der Parameter TOTAL_BLOCKS kleiner als oder gleich dem Parameter ITERATION_BLOCK_COUNT ist, kann die Rekonfigurationsoperation in einer Iteration durchgeführt werden. In diesem Fall wird der Parameter DIRECTION_ UP wahr gesetzt, ein Parameter STARTING_BLOCK wird auf den Wert null gesetzt, und ein Parameter COUNT wird auf den Wert von TOTAL BLOCKS gesetzt. Der Parameter COUNT spezziert die Zahl von Blöcken, die in der momentanen Rekonfigurations-Verschiebeoperation enthalten ist, und der Parameter STARTING_BLOCKS spezziert die Anfangsposition der Rekonfigurationsoperation. Wenn die obige Bedingung nicht wahr ist, werden die folgenden Vergleiche durchgeführt. Wenn der Parameter DIRECTION_UP wahr gegesetzt ist, wird der Parameter STARTING BLOCK auf den Wert null gesetzt, und der Parameter COUNT wird auf den Wert des Parameters ITERATION_BLOCK_COUNT gesetzt. Andernfalls wird, wenn der Parameter DIRECTION_UP unwahr gesetzt ist, der Wert von COUNT gleich dem MOD der Parameter TOTAL BLOCKS und FULL STRIPE SIZE gesetzt, der die Zahl von Sektoren im letzten Streifen erlangt. Wenn die Rekonfigurationsoperation in der umgekehrten Richtung abläuft, gibt es eine Möglichkeit, dass die Größe des ersten Streifens, auf den zugegriffen wird, nicht die volle Streifengröße ist. In diesem Fall muss der Wert des Parameters COUNT justiert werden, um die abweichende Größe zu akkomodieren. Wenn in Schritt 506 festgestellt wird, dass der Parameter DIRECTION UP tief gesetzt ist, wird die tatsächliche Zahl von Sektoren, auf der die Task EXPAND zu arbeiten hat, in den Parameter COUNT gestellt, indem die obige MOD-Operation durchgeführt wird. Wenn das Ergebnis null ist, was anzeigt, dass der letzte Streifen ein voller Streifen ist, wird der Wert von COUNT gleich dem Parameter ITERATION_BLOCK_COUNT gesetzt. Der Parameter STARTING_BLOCK wird auf den Wert (TOTAL_BLOCKS_COUNT) gesetzt, der die Adresse des ersten Sektors im letzten Streifen des Ziel-Datenträger ist.
  • Schließlich wird ein Parameter CURRENT_BLOCK, der den Sektor verfolgt, auf den die Task EXPAND momentan zugreift, zu Anfang gleich dem Wert des Parameters STARTING_ BLOCK gesetzt. Ein Parameter CURRENT_ENDING_BLOCK, der den letzten laufenden Block darstellt, wird gleich dem Wert (CURRENT BLOCK + COUNT – 1) gesetzt. Der Parameter EXPAND_RUNNING wird auf den Wahr-Status gesetzt, um anzuzeigen, dass die Task EXPAND im Gange ist.
  • Die oben beschriebenen Rekonfigurationsparameterwerden in der XP = (Erweiterungsfortgang) Datenstruktur gespeichert, die im lokalen Speicher 108 gelegen ist. Im Folgenden wird das Symbol "XP" benutzt, um auf einen Parameter in der XP-Struktur zu zeigen. Nachdem die Parameter im lokalen Speicher 108 gesetzt sind, wird die XP-Datenstruktur in den Konfigurationsbereich in dem Schreib-Eintragungs-Puffer 136 kopiert, um den Fortgang der Task EXPAND zu aktualisieren. Die momentanen Werte der RIS-Parameter werden eben falls in die reservierten Infonnationssektoren des logischen Ziel-Datenträgers zurückgeschrieben.
  • Von Schritt 506 geht der Ablauf zu Schritt 508. Außerdem geht, wenn eine der in Schritt 504 geprüften Bedingungen nicht wahr ist, der Ablauf von Schritt 504 zu Schritt 508. In Schritt 508 wird eine Prüfung durchgeführt, um festzustellen, ob der Parameter EXPAND_RUN-NING hoch gesetzt ist. Wenn ja, geht der Ablauf zu Schritt 510, wo festgestellt wird, ob der Status des logischen Ziel-Datenträgers LOG_VOL_FAILED ist. Wenn ja, geht der Ablauf zu Schritt 512, wo das Flag STATUS der Anforderung auf den Status FATAL_ERROR gesetzt wird. Von Schritt 512 geht der Ablauf zu Schritt 556. Wenn in Schritt 510 der logische Ziel-Datenträger nicht im Status LOG_VOL_FAILED ist, geht der Ablauf zu Schritt 524. Von Schritt 508 kehrt, wenn der Parameter EXPAND_RUNNING nicht wahr ist, die Steuerung zurück zu dem aufrufenden Programm.
  • Während die Task EXPAND auf einem bestimmten Streifen arbeitet, müssen die Sektoren in diesem Streifen gesperrt werden, sodass keine andere Host-Anforderung auf die gleichen Sektoren zugreifen kann. Im lokalen Speicher 108 wird eine Tabelle gehalten, die alle Sektoren verfolgt, auf die momentan zugegriffen wird. In Schritt 524 wird festgestellt, ob irgendwelche der Sektoren in dem laufenden Streifen Gegenstand einer momentanen Host-Anforderung sind. Wenn ja, können diese Sektoren von der Task EXPAND nicht gesperrt werden. Als Folge geht der Ablauf zu Schritt 526, wo die Task EXPAND vorübergehend, vorzugsweise etwa 0.1 s, angehalten wird, um der Host-Anforderung zu gestatten, die Ausführung zu vollenden. Der Ablauf kehrt zu Schritt 524 zurück, um festzustellen, ob die Sektoren, auf die zugegriffen wird, noch belegt sind. Wenn nicht, geht der Ablauf zu Schritt 528, wo der Streifen in dem Ziel-Datenträger, auf den die Task EXPAND zugreift, gesperrt ist. Wenn der gewünschte Streifen geeignet gesperrt ist, geht der Ablauf zu Schritt 530.
  • In Schritt 530 werden die momentanen Werte der Rekonfigurationsparameter in der XP-Datenstruktur im Konfigurationsbereich des Schreib-Eintragungs-Puffers 136 gespeichert. Die nächsten von der Task EXPAND auszuführenden Schritte sind die Lese- und Schreibschritte, in denen Daten aus dem Quellen-Datenträgerin den Schreib-Eintragungs-Puffer 136 übertragen werden, die dann in den logischen Ziel-Datenträger zurückgeschrieben werden. Mehrere Parameter werden zusammen mit den Lese- und Schreibanfordentngen übergeben. Dann werden in Schritt 531 mit den Lese- und Schreibanforderungen verbundene Parameter gesetzt. Die logische Rekonfigurationsanforderungsinformation wird in einem Breich des lokalen Speichers 108 beginnend bei der Stelle EXPAND_LOGICAL gespeichert. Ein Parameter EXPAND_LOGICAL.UNIT wird gleich dem Wert von XP.LOGICAL_UNIT gesetzt. Ein Statusparameter EXPAND_LOGICAL.STATUS wird auf den Status NO_ERROR gesetzt. Parameter EXPAND_LOGICAL.BLOCK und EXPAND_LOGICAL.BLOCK COUNT werden gleich den Werten von Parametern XP.CURRENT_BLOCK bzw. XP.COUNT gesetzt. Ein Parameter EXPAND_LOGICAL.REQUEST_TYPE wird auf einen Status gleich dem bitweisem ODER von Statussen EXPAND_REQUEST, INTERNAL_LOGICAL_REQ und LOCKED_BY_ORIGINATOR gesetzt. Der Parameter REQUEST_TYPE zeigt daher an, dass die momentane Anforderung eine Plattenanordnungs-Rekonfigurationsanforderung ist, eine Anforderung ist, die ganz innerhalb der Plattensteuerplatine 10 durchgeführt wird, und eine Anforderung ist, die vom Anforderer gesperrt ist. Des Weiteren wird ein Parameter EXPAND_LOGICAL.COMMAND auf den Status READ gesetzt, um anzuzeigen, dass ein Lesebefehl durchzuführen ist.
  • Als Nächstes wird in Schritt 532 eine Routine EXECUTE_LOGICAL_REQUEST aufgerufen, wobei die Information übergeben wird, auf die von EXPAND LOGICAL gezeigt wird. Die logische Leseanforderung bewegt Daten aus dem Quellen-Datenträger in den Transferteil des Schreib-Eintragungs-Puffers 136. Die Menge an bewegten Daten ist vorzugsweise gleich einem Streifen des Ziel-Datenträgers. Als Nächstes wird in Schritt 534 die Operation der Task EXPAND ausgesetzt, bis die Leseoperation in Schritt 532 vollendet ist. Sobald die Routine EXECUTE_LOGICAL_REQUEST anzeigt, dass die Leseoperation vollendet ist, geht der Ablauf zu Schritt 536, wo das von der Routine EXECUTE_LOGICAL_RE-QUEST zurückgegebene Flag STATUS geprüft wird. Wenn festgestellt wird, das ein fataler Fehler aufgetreten ist, geht der Ablauf zu Schritt 556, um die fatale Fehlerbedingung zu behandeln. Wenn kein fataler Fehler angezeigt wird, geht der Ablauf zu Schritt 538, wo die momentanen Werte der Rekonfigurationsparameter in der XP-Datenstruktur wieder im Konfigurationsbereich des Schreib-Eintragungs-Puffers 136 gespeichert werden, um die Fortgangs-Information der Task EXPAND zu akualisieren.
  • Von Schritt 538 geht der Ablauf zu Schritt 539, wo Parameter für die nächste logische Anforderung gesetzt werden. Die Parameter werden auf die gleichen Werte wie die logische Leseanforderung gesetzt, außer dass der Parameter EXPAND_LOGICAL.COMMAND auf den Status WRITE_TO_MEDIA gesetzt wird. Als Nächstes wird in Schritt 540 die Routine EXE-CUTE_LOGICAL_REQUEST aufgerufen, um eine Schreiben-auf-Medien-Operation durchzuführen. Dieser Befehl bewirkt, dass Daten aus dem logischen Quellen-Datenträger, die gerade in den Schreib-Eintragungs-Puffer 136 übertragen wurden, in den entsprechenden Streifen des logischen Ziel-Datenträgers zurückgeschrteben werden. Dann geht der Ablauf zu Schritt 542, wo die Operation der Task EXPAND ausgesetzt wird, bis die Routine EXE-CUTE_LOGICAL_REQUEST anzeigt, dass sie fertig ist. Als Nächstes wird in Schritt 544 das Flag STATUS der Schreiboperation geprüft. Wenn ein fataler Fehler erkannt wird, geht der Ablauf zu Schritt 556. Andernfalls geht der Ablauf zu Schntt 546, wo der in Schritt 528 gesperrte Streifen entsperrt wird, um Zugriff durch andere logische Anforderungen zu erlauben.
  • Dann wird in Schritt 548 festgestellt, ob der Parameter XP.DIRECTION_UP hoch gesetzt ist. Wenn ja, geht der Ablauf zu Schritt 550, wo der Parameter XP.CURRENT_BLOCK, der den momenten Sektor, auf den die Task EXPAND zugreift, verfolgt, um den Wert XP. COUNT erhöht wird. Wenn der Parameter XP.DIRECTION_UP in Schritt 548 tief gesetzt ist, geht der Ablauf zu Schntt 552, wo der Parameter XP.CURRENT_BLOCK um den Wert XP.COUNT dekrementiert wird. Von entweder Schritt 550 oder 522 geht der Ablauf zu Schntt 554, wo der Parameter XP.BLOCKS_LEFT_TO-EXPAND um den Wert XP.COUNT dekrementiert wird. In Schritt 554 wird dann der Parameter XP.COUNT auf den Wert des Parameters ITERATION_BLOCK_COUNT gesetzt, falls nicht der Wert von ITERATION_BLOCK COUNT größer als der Wert des Parameters BLOCKS_LEFT_TO_EXPAND ist, in welchem Fall der Wert von COUNT gleich BLOCKS_LEFT_TO_EXPAND gesetzt wird. Der Wert des Parameters CURRENT_ENDING_BLOCK wird dann auf den Wert (CURRENT_BLOCK + COUNT – 1) gesetzt.
  • Von Schritt 554 geht der Ablauf zu Schritt 556, wo das Flag STATUS geprüft wird, um festzustellen, ob es auf Status FATAL_ERROR gesetzt ist. Wenn ja, geht der Ablauf zu Schritt 558. Wenn nicht, geht der Ablauf zu Schntt 560. In Schritt 558 wird ein Erwerterungsfehlerplan aktualisiert, wobei der Ziel-Datenträger als Status LOG_VOL_FAILED markiert wird. Von Status 558 geht der Ablauf zu Status 564.
  • In Schntt 560 wird festgestellt, ob der Parameter XP.BLOCKS_LEFT_TO_EXPAND ungleich null ist, was anzeigt, dass der Rekonfigurationsprozess weitergehen sollte. Wenn der Parameter XP.BLOCKS_LEFT_TO_EXPAND null ist, geht der Ablauf zu Schntt 562, ansonsten geht der Ablauf zu Schritt 561, wo Rekonfigurationsfortgangsinformation in den Konfigurationsbereich des Schreib-Eintragungs-Puffers 136 geschrieben wird. Von Schritt 561 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • In Schritt 562 wird die Routine UPDATE_LOGICAL_UNIT_STATE aufgerufen, um den Datenträgerstatus des logischen Ziel-Datenträgers zu modifizieren. Wie früher erwähnt, aktualisiert die Routine UPDATE_LOGICAL_UNIT_STATE den Datenträgerzustand auf der Basis des Status der physikalischen Laufwerke und des Fehlertoleranzmodus. Außerdem ruft die UPDATE_LOGICAL_UNIT_STATE eine Unterbrechung an das Host-Betriebssystem auf, um die Vollendung des Rekonfigurationsprozesses in Schritt 562 anzuzeigen.
  • Von Schritt 562 oder Schritt 558 geht der Ablauf zu Schritt 563, wo eine Zuwachsvariable 1 auf den Wert 1 gesetzt wird. Dann wird in Schritt 564 festgestellt, ob der Wert des Parameters 1 kleiner als der Parameter EXPAND_UNIT_COUNT ist. Wenn ja, geht der Ablauf zu Schritt 566, wo die Erweiterungsanforderungs-Queue akualisiert wird, wenn der verlangte logische Datenträger einem logischen Datenträger in der Queue entsprtcht. Wenn der verlangte logische Datenträger in der Queue ist, werden die Einträge in der Erweiterungsanforderungs-Queue EXPAND_UNIT_QUEUE nach unten geschoben, d. h., der Eintrag EXPAND-UNIT QUEUE[I] wird in den Eintrag EXPAND_UNIT QUEUE[I-1] geschoben. Für jede Übereinstimmung wird der Parameter EXPAND_UNIT_COUNT wird auch um den Wert 1 dekrementiert. Diese Operation hat eine von zwei Wirkungen. Wenn ein Befehl SET_CONFIGURA-TION übermittelt wird, der kein Rekonfigurationsbefehl ist, wird der verlangte logische Datenträger aus der Erweiterungsanforderungs-Queue enffernt. Dies erlaubt dem Befehl SET CONFIGURATION, eine anhängige Rekonfigurationsanforderung abzubrechen. Die zweite Wirkung ist, dass eine vollendete Rekonfigurationsanforderung aus der Queue entfernt wird. Als Nächstes wird in Schritt 568 der Wert der Vartablen I um eins dekrementiert. Von Schritt 568 kehrt der Ablauf zu Schritt 564 zurück.
  • Wenn der Wert der Vartablen 1 größer oder gleich dem Parameter EXPAND UNIT COUNT ist, geht der Ablauf zu Schritt 572, wo festgestellt wird, ob der Wert des Parameters EX-PAND_UNIT_COUNT größer als null ist, Wenn ja, geht der Ablauf zu Schritt 574, wo der Parameter EXPAND_NEEDED auf den Status Wahr gesetzt wird. Wenn nicht, geht der Ablauf zu Schritt 576, wo der Paramenter EXPAND_NEEDED auf den Status Unwahr gesetzt wird. Von entweder Schritt 574 oder 576 geht der Ablauf zu Schritt 578, wo festgestellt wird, ob wenigstens eine Übereinstimmung aufgetreten ist (d. h. ein Eintrag wurde aus der Erweiterungsanforderungs-Queue enffernt) und ob der Parameter EXPAND_NEEDED unwahr ist. Wenn ja, geht der Ablauf zu Schritt 580, wo der dem Rekonfigurationsprozess zugeteilte Teil des Schreib-Eintragungs-Puffers 136 zur Benutzung durch andere logische Anforderungen freigesetzt wird. Von Schritt 580 oder von Schritt 578 geht, wenn die Bedingung von Schritt 578 nicht wahr ist, der Ablauf zu Schritt 581, wo festgestellt wird, ob der erste Eintrag der Queue entfernt wurde oder ob der Parameter EXPAND_NEEDED unwahr ist. Wenn eines wahr ist, geht der Ablauf zu Schritt 582, wo der Parameter EXPAND RUNNING unwahr gesetzt wird. Wenn die Bedingung in Schritt 581 nicht wahr ist, geht der Ablauf zu Schritt 585.
  • Von Schritt 582 geht der Ablauf zu Schritt 583, wo die RIS-Parameter in die reservierten In formationssektoren des logischen Ziel-Datenträgers zurückgespeichert werden. Von Schritt 583 geht der Ablauf zu Schritt 584, wo die momentanen Werte der XP-Parameter in den Konfigurationsbereich des Schreib-Eintragungs-Puffers 136 geschrieben werden. Von Schritt 584 geht der Ablauf zu Schritt 585, wo eine Unterbrechung zurück an den Host gesendet wird, um die Vollendung der Host-Anforderung anzuzeigen. Von Schritt 585 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Nun auf 7A7B verweisend wird ein Flussdiagramm der Routine EXECUTE_LOGICAL_ REQUEST gezeigt. Die logische Anforderungsinformation ist in einer Datenstruktur enthalten, auf die der Parameter REQUEST zeigt. Zu Zwecken der Task EXPAND wird die logische Anforderungsinformation durch den Zeigerparameter EXPAND_LOGICAL, d. h. RE-QUEST = EXPAND LOGICAL, übergeben. Lese- und Schreibanforderungen werden ebenfalls von der Routine EXECUTE_LOGICAL_REQUEST behandelt, während die Task EX-PAND eine Online-Plattenanordnungs-Rekonfiguration durchführt. Abhängig davon, wo die Task EXPAND vorangeschritten ist, werden die geeigneten Konfigurationsparameter ausgewählt, um auf die gewünschten Stellen in dem passenden logischen Datenträger zuzugreifen.
  • Beginnend in Schritt 602 wird der Zeiger auf die Konfigurationsinformation des logischen Datenträgers, auf die zuzugreifen ist, in den Parameter LOGICAL gestellt. Wie erörtert, wird die Konfigurationsinformation in der globalen RIS-Datenstruktur im lokalen Speicher 108 gespeichert. Dann, wenn in Schritt 604 festgestellt wird, dass das Feld COMMAND der Anforderung ein Wert ist, der einen Lese-, Schreib- oder Schreiben-auf-Medien-Operation darstellt, geht der Ablauf zu Schritt 606. Andernfalls geht der Ablauf zu Schritt 642, um die Art des verlangten Befehls festzustellen.
  • In Schritt 606 wird festgestellt, ob der Parameter EXPAND_RUNNING hoch gesetzt ist, was anzeigt, das die Task EXPAND momentan läuft. Wenn ja, geht der Ablauf zu Schritt 698, wo der Parameter LOGICAL gleich einem von einer Routine PROCESS_EXPAND_REQUEST zurückgegebenen Parameter gesetzt wird. Die Routine PROCESS_EXPAND_REQUEST stellt zuerst fest, ob die anfordernde Routine die Task EXPAND ist. Wenn ja, prüft sie, ob eine Leseanforderung oder eine Schreibanforderung von der Task EXPAND geltend gemacht wird. Wenn eine Leseanforderung erkannt wird, wird der Parameter LOGICAL gesetzt, um auf die Konfigurationsinformation des logischen Quellen-Datenträgers zu zeigen. Dies erlaubt, dass die geeigneten Daten aus dem logischen Datenträger gelesen und in den zugeteilten Bereich des Schreib-Eintragungs-Puffers 135 übertragen werden. Wenn eine Schreibanforderung von der Routine PROCESS_EXPAND_REQUEST erkannt wird, wird der Para meter LOGICAL gesetzt, um auf die Konfigurationsinformation des logischen Ziel-Datenträgers zu zeigen.
  • Wenn die Anforderung eine Host-Schreib- oder Leseanforderung ist, führt die Routine PROCESS_EXPAND_REQUEST einen Vergleich der Sektoren, auf die zugegriffen wird, mit den bereits von der Task EXPAND verarbeiteten Sektoren durch. Auf der Basis dieses Vergleichs werden die Parameter des logischen Quellen- oder Ziel-Datenträgers benutzt, um die richtigen Daten zu erlangen.
  • Von Schritt 608 oder von Schritt 606 geht, wenn der Parameter EXPAND_RUNNING tief ist, der Ablauf zu Schritt 610. In Schritt 610 wird festgestellt, ob der Sektor, auf den die Task EXPAND momentan zugreift, und die Gesamtsektorzahl im Bereich sind. Zuerst wird festgestellt, ob ein Parameter REQUEST.BLOCK-COUNT gleich dem Wert null ist. Der Parameter REQUEST.BLOCK COUNT stellt die Zahl von Sektoren dar, auf der in dem laufenden Streifen zu arbeiten ist. In Schritt 610 wird auch festgestellt, ob ein Parameter REQUEST. BLOCK, der den Sektor, auf den momentan zugegriffen wird, darstellt, größer oder gleich dem Parameter BLOCKS ON VOLUME des spezifizierten logischen Datenträgers ist. Der Parameter BLOCKS ON VOLUME stellt die Gesamtzahl von Sektoren in dem logischen Datenträger dar. Außerdem wird in Schritt 610 festgestellt, ob die Summe der Parameter REQUEST.BLOCK und REQUEST.BLOCK COUNT größer als der Parameter BLOCKS_ ON VOLUME ist. Dies zeigt an, dass der endende Sektor, auf den die momentane logische Anforderung zuzugreifen hat, die letzte dem spezifizierten logischen Datenträger zugeteilte Sektorposition überschreiten würde. Wenn eine der obigen Bedingungen wahr ist, geht der Ablauf zu Schritt 612, wo das Flag STATUS der Anforderung auf den Status BAD_ REQUEST gesetzt wird. Von Schritt 612 geht der Ablauf zu Schritt 642. Wenn keine der Bdingungen in Schritt 610 wahr ist, geht der Ablauf von Schritt 610 direkt zu Schritt 614.
  • In Schritt 610 wird festgestellt, ob ein Parameter GLOBAL RIS ungleich null ist, und ob der Datenträgerstatus des spezifizierten logischen Datenträgers auf einem der folgenden aktiven Zustände ist: LOG_VOL_OK, anzeigend, dass das logische Laufwerk betrtebsfähig ist; LOG_ VOL_REBUILDIG, anzeigend, dass das logische Laufwerk grade wiederhergestellt wird; LOG_VOL_NEEDS_REBUILD, anzeigend; dass das momentane logische Laufwerk wiederhergestellt werden muss; LOG VOL REGENING, anzeigend, dass ein ausgefallenes logisches Laufwerk existiert, aber dass der gewählte Fehlertoleranzmodus ermöglicht, dass die Daten des ausgefallenen Laufwerks regeneriert werden, und LOG_VOL_OVERHEATING, anzeigend, dass Hardware in dem System sich überhitzt. Wenn der Parameter GLOBAL RIS ein Nicht-Null-Wert ist und der Datenträgerstatus auf einem der obigen Zustände ist, geht der Ablauf zu Schritt 616; andernfalls geht der Ablauf zu Schritt 640.
  • In Schritt 616 wird festgestellt, ob eingetragene Schreibungen in dem Schreib-Eintragungs-Puffer 135 freigegeben sind, und ob das Feld REQUEST_TYPE der logischen Anforderung eine Host-Anforderung ist. Für die Plattenanordnungs-Rekonfigurationsoperation wird das Feld REQUEST_TYPE auf einen Status gesetzt, der das ODER der Statusse EXPAND_RE-QUEST, INTERNAL_LOGICAL_REQ und LOCKED_BY_ORIGINATR ist. Die in Schritt 616 geprüfte Bedingung wird daher für von der Task EXPAND aufgerufene Lese- und Schreibanforderungen nicht erfüllt werden. Für von der Task EXPAND angeforderte Operationen wird das Schreib-Eintragen in den Puffer 136 nicht durchgeführt werden, da die Datenübertragungen direkt zwischen dem Puffer 136 und den SCSI-Steuerungen 112A-E sind. Wenn eingetragene Schreibungen nicht freigegeben sind, oder wenn die logische Anforderung keine Host-Anforderung ist, geht der Ablauf vn Schritt 616 zu Schritt 628.
  • Wenn das Schreib-Eintragen freigegeben ist und die logische Anforderung eine Host-Anforderung ist, geht der Ablauf von Schritt 616 zu Schritt 618, wo die Schreib-Eintragung in den Puffer 136 durchgeführt wird. Von Schritt 618 geht der Ablauf zu Schritt 620, wo festgestellt wird, ob ein Statusparameter CACHE_OP_STATUS gleich null ist. Wenn der Status CACHEOP_STATUS null ist, zeigt dies an, dass das Schreib-Eintragen aus irgendeinem Grund nicht erfolgte, in welchem Fall der Ablauf zu Schritt 628 geht. Wenn der Statusparameter CACHE_ OP_STATUS ein Nicht-Null-Wert ist, geht der Ablauf zu Schritt 622, wo das Feld STATUS der logischen Anforderung auf den geeigneten Status gesetzt wird und eine Vollendungsnachricht zurück an die Host-Software geschickt wird, die ihr sagt, dass die logische Anforderung geendet hat. Wie früher erwähnt, erlaubt daher, wenn der Host eine Schreibung in das Plattenanordnungs-Untersystem 142 durchführt, das Schreiben von Daten in den Schreib-Eintragungs-Puffer 136, dass ein Vollendungssignal viel früher zurück an den Host gesendet wird als wenn die Schreibung in das Festplatten-Untersystem 142 stattgefunden hätte. Von Schritt 622 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Wenn in Schritt 628 festgestellt wird, dass das Feld COMMAND der logischen Anforderung ein Schreiben-auf-Medien-Befehl ist, geht der Ablauf zu Schritt 630, wo der Parameter REQUEST.COMMAND in den Status WRITE modifiziert wird. Der Ablauf geht dann zu Schritt 632. Wenn die Anforderung kein Schreiben-auf-Medien-Befehl ist, geht der Ablauf von Schritt 628 zu Schritt 632. In Schritt 632 wird die logische Anforderung in eine physikalische Anforderung abgebildet, um Daten zu und von den physikalischen Plattenlaufwerken in dem Plattenuntersystem 142 zu übertragen. Das Abbilden hängt von dem gewählten Datenverteilungsmodus und dem gewählten Fehlertoleranzmodus ab. In der bevorzugten Ausführung variiert das Abbildungsschema zwischen direktem Abbilden, Mehrfachblock-Verschachtelungs-Abbilden und Pantäts-Abbilden. Der Fehlertoleranzmodus kann entweder auf keine Fehlertoleranz, Spiegel- oder RAID 1 Fehlertoleranz, RAID 4 Fehlertoleranz oder RAID 5 Fehlertoleranz gesetzt werden. Es wird angemerkt, dass für eine Rekonfigurationsoperation verschiedene Toleranzmodi für den logischen Ziel- und Quellendatenträger spezifiziert werden können. Die logischen Anforderungen werden in Physikale Anforderungen abgebildet, wobei der lokale Prozessor 106 eine Befehlsliste in dem lokalen Speicher 108 erstellt. Zu einem künftigen Zeitpunkt schreibt der lokale Prozessor 106 einen Zeiger auf die Befehlsliste in die geeigneten CDBs, die in die geeignete der SCSI-Steuerungen 112A-E geschrieben werden, die als Reaktion die Kontrolle des PCI-Busses 102 erlangt, um die physikalischen Befehle aus dem lokalen Speicher 108 zu holen. Von Schritt 632 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Wenn in Schritt 614 der Parameter GLOBAL-RIS ein Nicht-Null-Wert ist oder der Datenträgerstatus des spezifizierten logischen Laufwerks nicht in einem der aufgeführten Statusse ist, geht der Ablauf zu Schritt 640. In Schritt 640 wird das Flag STATUS der logischen Anforderung auf den Status FATAL ERROR gesetzt. Der Ablauf geht dann von Schritt 640 zu Schritt 642, wo logische Anforderungen anders als Lese-, Schreib- oder Schreiben-auf-Medien-Anforderungen behandelt werden. Von Schritt 642 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Nun auf 8 verweisend wird ein Flussdiagramm der Routine PROCESS_EXPAND_REQUEST gezeigt. Beginnend in Schritt 700 wird festgestellt, ob der angeforderte logische Datenträger in der Rekonfigurations-Queue ansteht. Außerdem wird festgestellt, ob der Parameter EXPAND_RUNNING auf dem Status unwahr ist, oder ob der angeforderte logische Datenträger in der Queue ansteht, aber von der laufenden Rekonfigurationsoperation noch nicht verarbeitet wird. Wenn eine der obigen Bedingungen wahr ist, geht der Ablauf zu Schritt 701, wo der Parameter LOGICAL gesetzt wird, um auf die alte Konfiguarationsinformation des angeforderten Datenträgers zu zeigen. Von Schritt 701 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Wenn die Bedingungen in Schritt 700 nicht wahr sind, geht der Ablauf zu Schritt 702. Wenn in Schritt 702 festgestellt wird, dass der Parameter EXPAND_RUNNING hoch gesetzt ist und die Datenträgereinheit REQUEST UNIT gleich der logischen Erweiterungs-Datenträgereinheit XP.LOGICAL_UNIT ist, geht der Ablauf zu Schritt 704. Andernfalls wird der angeforderte logische Datenträger von der Task EXPAND momentan nicht verarbeitet, und die Steuerung kehrt zu dem aufrufenden Programm zurück, wobei der Status des Parameters LOGICAL unverändert bleibt. In Schritt 704 wird festgestellt, ob der Parameter REQUEST.REQUEST TYPE eine Rekonfigurationsanforderung anzeigt. Wenn ja, geht der Ablauf zu Schritt 705, wo festgestellt wird, ob der angeforderte Befehl eine Lesebefehl ist. Wenn ja, geht der Ablauf zu Schritt 706, wo der Parameter LOGICAL auf den Wert des Parameters X.OLD_LOGICAL gesetzt wird, um auf die Konfigurationsparameter des logischen Quellen-Datenträgers zu zeigen. Wenn der angeforderte Befehl kein Lesebefehl ist, kehrt der Ablauf von Schritt 705 mit dem Parameter LOGICAL unverändert zurück. Von Schritt 706 kehrt die Steuerung zu dem aufrufenden Programm zurück.
  • Wenn in Schritt 704 die Anforderung keine Rekonfigurationsanforderung ist, d. h., sie ist eine Schreib- oder Leseanforderung vom Host, geht der Ablauf zu Schritt 708, wo festgestellt wird, ob die Task EXPAND den angeforderten Sektor erreicht hat. Während der Rekonfigurationsprozess im Gange ist, sind vom Host übermittelte Lese- und Schreibanforderungen an entweder den alten logischen Datenträger oder den neuen logischen Datenträger erlaubt. Ebenfalls erlaubt sind Puffer-Spülen-Anforderungen, wo die schmutzigen Zeilen im Schreib-Eintragungs-Puffer 136 zurück in das Plattenuntersystem 142 gespült werden. Um sicherzustellen, dass die Übertragung von Daten an die richtigen Stellen im Plattenuntersystem 142 erfolgt, muss festgestellt werden, ob die Sektoren, auf die von der logischen Anforderung zugegriffen wird, einen Bereich betreffen, der bereits von der Task EXPAND rekonfiguriert wurde. Wenn die angeforderten Blöcke bereits von der Task EXPAND verarbeitet wurden, wird daher die Konfiguration des logischen Ziel-Datenträgers benutzt. Wenn andererseits auf die angeforderten Blöcke von der Task EXPAND noch nicht zugegriffen wurde, wird die Konfiguration des logischen Quellen-Datenträgers benutzt. Es besteht auch die Möglichkeit, dass die logische Anforderung Blöcke anfordern kann, die sowohl den logischen Ziel- als auch den Quellen-Datenträger überspannen. In diesem Fall wird die logische Anforderung ausgesetzt, bis die Task EXPAND in der Lage ist, die angeforderten Blöcke einzuholen.
  • Wenn in Schritt 708 der Parameter XP.DIRECTION_UP hoch gesetzt ist, um anzuzeigen, dass die Task EXPAND sich in der Vorwärtsrichtung bewegt, wird daher festgestellt, ob der Parameter REQUEST.BLOCK größer als oder gleich der Summe der Parameter XP.CUR-RENT_BLOCK und XP.COUNT ist. Dies zeigt an, dass der Anfangssektor der logischen Anforderung vor den Sektoren liegt, die von der Task EXPAND verarbeitet wurden, d. h., auf die Sektoren wurde von der Task EXPAND noch nicht zugegriffen. Wenn aber der Parameter XP.DIRECTION_UP tief gesetzt ist, wird festgestellt, ob die Summe der Parameter RE-QUEST.BLOCK und REQUEST.BLOCK_COUNT kleiner oder gleich dem Parameter XP. CURRENT BLOCK ist. Dies zeigt an, dass der Endungssektor der logischen Anforderung vor der Task EXPAND liegt. Wenn eine der obigen Bedingungen wahr ist, geht der Ablauf zu Schritt 710, wo der Parameter LOGICAL gesetzt wird, um auf die Konfigurationsinformation des logischen Quellen-Datenträgers zu zeigen. Von Schritt 710 kehrt die Steuerung zurück zu dem aufrufenden Programm.
  • Wenn die Bedingungen in 708 nicht wahr sind, geht der Ablauf zu Schritt 712, wo festgestellt wird, ob die Task EXPAND die von der logischen Anforderung angeforderten Sektoren bereits behandelt hat. Wenn der Parameter XP.DIRECTION UP hoch gesetzt ist, wird zuerst festgestellt, ob die Summe der Parameter REQUEST.BLOCK und REQUEST.BLOCK COUNT kleiner als oder gleich dem Wert des Parameters XP.CURRENT_BLOCK ist. Dies zeigt an, dass der Endungssektor der logischen Anforderung bereits von der Task EXPAND verarbeitet wurde. Alternativ wird, wenn der Parameter XP.DIRECTION UP tief gesetzt ist, was anzeigt, dass die Task EXPAND in der umgekehrten Richtung vorangeht, festgestellt, ob der Parameter REQUEST.BLOCK größer als oder gleich der Summe der Parameter XP.CURRENT_BLOCK und XP.COUNT ist. Dies zeigt an, dass der Anfangssektor der logischen Anforderung bereits von der Task EXPAND verarbeitet wurde. Wenn eine der obigen Bedingungen wahr ist, kehrt die Steuerung zu dem aufrufenden Programm zurück, wobei der Parameter LOGICAL unverändert gelassen wird. Es wird angemerkt, dass der Status des Parameters LOGICAL unverändert ist, da er bereits auf den logischen Quellen-Datenträger zeigt.
  • Wenn keine der Bedingungen in Schritt 712 wahr ist, geht der Ablauf zu Schritt 714, um anzuzeigen, dass die von der logischen Anforderung angeforderten Blöcke sowohl logische Quellen- als auch Ziel-Datenträger überspannen. In Schritt 714 wird die vom Host übermittelte Anforderung für eine vorbestimmte Dauer, vorzugsweise 0.1 s, suspendiert, um der Task EXPAND zu gestatten, nachzukommen. Von Schritt 714 kehrt der Ablauf zu Schritt 702 zurück.
  • Nun auf 9 verweisend wird ein Flussdiagramm einer Routine FINISH_EXPAND gezeigt. Die Routine FINISH_EXPAND wird beim Einschalten aufgerufen. Wie früher erwähnt, sind Teile des Schreib-Eintragungs-Puffers 136 im Fall eines Stromausfalls batteriegestützt. Wie oben angemerkt, wird ein Konfigurationsbereich zum Speichern der mit der Datenträgererweiterungs-Task verbundenen Parameter in dem Schreib-Eintragungs-Puffer 136 zugewiesen, wobei die Erweiterungsparameter von Zeit zu Zeit aktualisiert werden, um zu verfolgen, wo die Task EXPAND sich befindet. Wenn ein Stromausfall vorkommt, geht daher die Plattenanordnungs-Rekonfigurations-Fortgangsinformation nicht verloren und kann wiedergewonnen werden, um den Erweiterungsprozess fortzusetzen.
  • Beginnend in Schritt 902 wird ein Zeiger EXPAND PTR gleich dem Parameter EXPAND in der globalen RIS-Datenstruktur gesetzt. Dann wird in Schritt 904 der Erweiterungsfehlerplan EXPAND_FAILURE_MAP auf den Wert 0 gelöscht. Dann geht, wenn der Paramater EX-PAND_RUNNUNG, auf den der Zeiger EXPAND PTR zeigt, wahr ist, der Ablauf zu Schritt 908, um den Rekonfigurationsprozess fortzusetzen. Andertalls geht der Ablauf zu Schritt 910. In Schritt 908 wird der Parameter UNIT gleich dem Eintrag in der Erweiterungs-Queue EXPAND_UNIT_QUEUE[O] gesetzt. Dann wird in Schritt 914 ein Fehlerflag ERROR auf 0 gesetzt.
  • Wenn in Schritt 916 festgestellt wird, dass die Pufferplatine, die die DRAM-Schnittstelle 118 und das DRAM 116 enthält, vorhanden ist, geht der Ablauf zu Schritt 918. Andernfalls geht der Ablauf zu Schritt 920. Wenn die Pufferplatine vorhanden ist, werden verschiedene mit der Task EXPAND verbundene Fortgangsdaten aus dem Konfigurationsbereich des Schreib-Eintragungs-Puffers 136 zurückgewonnen. Wie oben erörtert, werden die mit der Task EX-PAND verbundenen Fortgangsdaten in der Datenstruktur gespeichert, auf die der Parameter XP zeigt. Dann wird in Schritt 922 festgestellt, ob die Fortgangsdaten gültig sind. Wenn nicht, geht der Ablauf zu Schritt 924, wo die Task EXPAND abgebrochen wird. Von Schritt 924 geht der Ablauf zu Schritt 926, wo festgestellt wird, ob der Parameter EXPAND UNIT COUNT gleich 0 ist. Wenn ja, geht der Ablauf zu Schritt 928, wo der Parameter EXPAND_ RUNNING auf den Status FALSE gesetzt wird. Der Ablauf geht dann zu Schritt 930. Wenn der Parameter EXPAND_UNIT_COUNT nicht gleich 0 ist, geht der Ablauf von Schritt 926 zu Schritt 930. In Schritt 930 wird der logische Datenträger auf den Ausfallstatus LOG_ VOL_FAILED gesetzt. Von Schritt 930 geht der Ablauf zu Schritt 910.
  • Wenn in Schritt 922 festgestellt wird, dass die im Konfigurationsbereich des Schreib-Eintragungs-Puffers 136 gespeicherten Rekonfigurations-Fortgangsdaten gültig sind, geht der Ablauf zu Schritt 932, wo der Parameter X OLD LOGICAL gesetzt wird, um auf die Konfigurationsinformation des logischen Quellen-Datenträgers zu zeigen. Ebenfalls wird in Schritt 932 der Parameter EXPAND_NEEDED auf den Status TRUE gesetzt, und der Parameter EXPAND_RUNNING wird auf den Status des Parameters XP.RUNNING gesetzt. Von Schritt 932 geht der Ablauf zu Schritt 910.
  • Wenn in Schritt 916 festgestellt wird, dass die Pufferplatine nicht vorhanden ist, geht der Ablauf zu Schritt 920, wo der Rekonfigurationsprozess abgebrochen wird. Wenn zu Schritt 934 gehend festgestellt wird, dass der Parameter EXPAND_UNIT_COUNT gleich 0 ist, was anzeigt, dass keine Rekonfigurationsanforderungen in der Erweiterungs-Queue sind, geht der Ablauf zu Schritt 936. In Schritt 936 wird der Parameter EXPAND_RUNNING auf den Zu stand FALSE gesetzt. Von Schritt 936 oder von Schritt 934 geht, wenn der Parameter EX-PAND_UNIT_COUNT ein Nicht-Null-Wert ist, der Ablauf zu Schritt 938, wo der Status des logischen Datenträgers auf den Fehlerstatus LOG VOL FAILED gesetzt wird. Von Schritt 938 geht der Ablauf zu Schrittt 910.
  • Wenn eine EXPAND-Task nicht durch einen Stromausfall unterbrochen wurde, muss trotzdem festgestellt werden, ob beim Einschalten eine Plattenanordnungs-Rekonfiguration erforderlich ist. Wenn in Schritt 910 festgestellt wird, dass die Pufferplatine vorhanden ist und der Parameter EXPAND_UNIT_COUNT ein Nicht-Null-Wert ist, geht daher der Ablauf zu Schritt 912, wo der Parameter EXPAND_NEEDED auf den Status wahr gesetzt wird. Von Schritt 912 oder von Schritt 910 kehrt, wenn die Bedingungen nicht erfüllt sind, die Steuerung zurück zu dem aufrufenden Programm.
  • Wenn die Rekonfigurationsoperation eine Plattenanordnungs-Erweiterungsoperation ist, bei der der Plattenanordnung ein physikalisches Laufwerk hinzugefügt wird, wird überschüssiger Platz für einen neuen logischen Datenträger verfügbar sein, nachdem die ursprünglichen Daten über die Plattenlaufwerke verstreut worden sind. Der neue logische Datenträger kann konfigurert werden, indem der Befehl SET_CONFIGURATION mit seinen zugehörigen Parametern ausgegeben wird. Der Parameter OFFSET_TO_DATA wird gesetzt, um den Versatz in jedes Laufwerk in der Plattennanordnung zu dem neuen logischen Datenträger zu spezzieren, der nach dem Anfangsversatz des Ziel-Datenträgers sein wird. Zu einigen der anderen betroffenen Parametern siehe die obige Erörterung des Befehls SET CONFIGURATION.
  • Wie oben erklärt, empfängt das Host-Betriebssystem einen Hinweis durch eine Unterbrechung, wenn eine Plattenanordnung rekonfiguriert wurde, und wenn ein neuer logischer Datenträger konfiguriert wurde. Die Task EXPAND ruft in Schritt 562 (6C) eine Unterbrechung auf, um die Vollendung der Rekonfigurationsoperation anzuzeigen, und die Task SET_CONFIGURATION ruft eine Unterbrechung in Schritt 362 (3C) auf, um die Erzeugung eines neuen Datenträgers anzuzeigen. Auf dem Host-Computersystem 100 laufende Software kann den Status eines logischen Datenträgers rückgewinnen, indem sie einen Bfehl SENSE_LOGICAL_DRIVE_STATUS ausgibt, der den Status des logischen Laufwerks z. B. LOG_VOL_OK, LOG_VOL_FAILED, LOG_VOL_EXPANDING usw. zurückgibt.
  • Somit ist ein System beschrieben worden, in dem eine Online-Rekonfiguration einer Plattenanordnung zustande gebracht werden kann. Die Plattenanordnungs-Rekonfiguration wird aufgerufen, wenn ein neues physikalisches Laufwerk eingefügt oder ein Laufwerk entfernt wird. Die Rekonfiguration kann auch durchgeführt werden, wenn der Benutzer die Konfigu ration eines bestimmten logischen Datenträgers, z. B. seine Streifengröfe, zu ändern wünscht. Die Rekonfiguration wird als eine Hintergrund-Task durch Firmware auf einer Plattensteuerungsplatine gefahren. Die Rekonfigurations-Task schiebt zuerst Daten aus dem logischen Quellen-Datenträgerin einen Eintragungsspeicher, z. B. einen RAM-Speicher.
  • Die Rekonfigurations-Task arbeitet streifenweise, wobei die Streifengröße die des logischen Ziel-Datenträgers ist. Sobald ein Streifen von Daten in den Eintragungsspeicher geschoben ist, wird er in die entsprechenden Stellen im logischen Ziel-Datenträger zurückgeschrieben. Der Rekonfigurationsprozess dauert an, bis alle Daten in dem logischen Quellen-Datenträger in den logischen Ziel-Datenträger übertragen sind. Während die Rekonfigurations-Task auf einem einzelnen logischen Datenträger arbeitet, bleiben Daten für Host-Schreib- und Leseanforderungen zugänglich.

Claims (22)

  1. Verfahren zum Umkonfigurieren einer Plattenanordnung (142), das es ermöglicht, dass andere Host-Anforderungen auf in der Plattenanordnung (142) gespeicherte Daten zugreifen können, wobei ein logischer Quellen-Datenträger (F) zu einem logischen Ziel-Datenträger (F) umkonfiguriert wird und der logische Quellen- sowie der logische Ziel-Datenträger (F) auf der Plattenanordnung (142) ausgebildet sind und wobei die Plattenanordnung (142) mit einer Plattensteuerung (10) verbunden ist, die einen Eintragungsspeicher (116) aufweist, wobei das Verfahren die folgenden Schrittte umfasst: a) Verschieben einer Übertragungseinheit von Daten von dem logischen Quellen-Datenträger (F) in den Eintragungsspeicher (116); b) Verschieben der Übertragungseinheit von Daten aus dem Eintragungsspeicher (116) zu dem logischen Ziel-Datenträger (F); c) Wiederholen der Schritte (a)-(b) bis alle Daten in dem logischen Quellen-Datenträger (F) zu dem logischen Ziel-Datenträger (F) verschoben worden sind; und d) wenn eine Host-Anforderung für angegebene Blöcke von Daten aktiviert ist, Feststellen, ob sich die angegebenen Blöcke in dem logischen Quellen-Datenträger (F) oder dem logischen Ziel-Datenträger (F) befinden, und Richten der Host-Anforderung an den geeigneten, d. h. den logischen Quellen- oder den logischen Ziel-Datenträger (F), und dadurch gekennzeichnet, dass die Übertragungseinheit aus Daten ein momentan nicht umkonfigurierter Streifen (OB, 1B, 2B) eines Datenblocks ist, der Umkonfiguration unterzogen wird.
  2. Verfahren nach Anspruch 1, wobei der logische Quellen-Datenträger eine erste Streifengröße aufweist und der logische Ziel-Datenträger eine zweite Streifengröße aufweist und wobei die Übertragungseinheit eine Größe hat, die dem kleinsten gemeinsamen Nenner der ersten und der zweiten Streifengröße entspricht.
  3. Verfahren nach Anspruch 2, wobei der logische Quellen-Datenträger einen ersten Streifen und einen letzten Streifen aufweist, der logische Ziel-Datenträger einen ersten Streifen und einen letzten Streifen aufweist und wobei der logische Quellen-Datenträger auf einer ersten Anzahl von Plattenlaufwerken ausgebildet ist und der logische Ziel-Datenträger auf einer zweiten Anzahl von Plattenlaufwerken ausgebildet ist, wobei das Verfahren des Weiteren die folgenden Schritte umfasst: Feststellen, ob die erste Anzahl von Plattenlaufwerken größer ist als die zweite Anzahl von Plattenlaufwerken, wobei, wenn die erste Anzahl größer ist als die zweite Anzahl, der Verschiebeschritt a) in einer Richtung von dem letzten Streifen des Quellen-Datenträgers zu dem ersten Streifen des Quellen-Datenträgers vorgeht und der Verschiebeschritt b) in einer Richtung von dem letzten Streifen des Ziel-Datenträgers zu dem ersten Streifen des Ziel-Datenträgers vorgeht, und wobei, wenn die erste Anzahl nicht größer ist als die zweite Anzahl, der Verschiebeschritt a) in einer Richtung von dem ersten Streifen des Quellen-Datenträgers zu dem letzten Streifen des Quellen-Datenträgers vorgeht und der Verschiebeschritt b) in einer Richtung von dem ersten Streifen des Ziel-Datenträges zu dem letzten Streifen des Ziel-Datenträgers vorgeht.
  4. Verfahren nach Anspruch 3, wobei die Größe der Übertragungseinheit, die zu dem letzten Streifen des Ziel-Datenträgers verschoben wird, geringer ist als die zweite Streifengröße oder ihr entspricht und die Größe der Übertragungseinheit, die zu dem letzten Streifen des Ziel-Datenträgers verschoben wird, von der Beziehung zwischen der ersten Streifengröße und der zweiten Streifengröße abhängt.
  5. Verfahren nach Anspruch 1, wobei Schritt (d) des Weiteren die folgenden Schritte einschließt: Feststellen, ob sich die angegebenen Blöcke, die von der Host-Anforderung angefordert werden, teilweise in dem logischen Quellen-Datenträger befinden und teilweise in dem logischen Ziel-Datenträger befinden; und wenn sich die angegebenen Blöcke teilweise in dem logischen Quellen- und dem logischen Ziel-Datenträger befinden, Aussetzen der Host-Anforderung, bis die Verschiebeschritte a) und b) alle angegebenen Blöcke in den logischen Ziel-Datenträger verschoben haben.
  6. Verfahren nach Anspruch 1, wobei die Plattenanordnung eine vorgegebene Anzahl von Plattenlaufwerken aufweist und wobei das Umkonfigurierungsverfahren durchgeführt wird, wenn ein neues Plattenlaufwerk hinzugefügt wird, um die Plattenanordnung zu erweitern, wobei der logische Quellen-Datenträger auf der vorgegebenen Anzahl von Plattenlaufwerken ausgebildet ist und der Ziel-Datenträger auf der vorgegebenen Anzahl von Plattenlaufwerken und dem neuen Platterlaufwerk ausgebildet ist.
  7. Verfahren nach Anspruch 6, wobei überschüssiger Speicherplatz in der Plattenanordnung vorhanden ist, nachdem die Plattenanordnung erweitert worden ist, und das Verfahren des Weiteren den folgenden Schritt umfasst: Erzeugen eines neuen logischen Datenträgers in dem überschüssigen Speicherplatz.
  8. Verfahren nach Anspruch 1, wobei der Eintragungsspeicher des Weiteren einen Konfigurierungsbereich zum Speichern von Fortschrittsinformationen im Zusammenhang mit dem Erweiterungsverfahren enthält und wobei der Eintragungsspeicher batteriegestützt ist und das Verfahren des Weiteren die folgenden Schritte umfasst: Abrufen der Fortschrittsinformationen aus dem Konfigurterungsbereich, wenn ein Stromausfall das Umkonfigurterungsverfahren unterbrochen hat; und Neustarten des Umkonfigurterungsverfahrens auf Basis der Fortschrittsinformationen.
  9. Verfahren nach Anspruch 8, das des Weiteren den folgenden Schritt umfasst: Sichern der Fortschrittsinformationen in dem Konfigurterungsbereich vor jedem der Schritte a) und b).
  10. Verfahren nach Anspruch 1, das des Weiteren die folgenden Schritte umfasst: Zuweisen eines Teils des Eintragungsspeichers zu dem Umkonfigurierungsverfahren; und Sperren des Teils des Eintragungsspeichers, um Zugriff auf den Teil durch andere Host-Anforderungen zu verhindern.
  11. Plattensteuerung zum Übertragen von Daten zwischen einer Plattenanordnung (142) und einem Host-Computer, wobei die Plattensteuerung umfasst: einen Bus; einen Eintragungsspeicher (116), der mit dem Bus verbunden ist; eine Einrichtung, die mit dem Bus verbunden ist, um die Plattenanordnung umzukonfigurieren, wobei ein logischer Quellen-Datenträger zu einem logischen Ziel-Datenträgerumkonfiguriert wird und der logische Quellen- und sowie der logischen Ziel-Datenträger (F) auf der Platenanordnung ausgebildet sind und die Umkonfigurierungseinrichtung enthält: eine erste Einrichtung, die mit dem Bus verbunden ist, um Daten von dem logischen Quellen-Datenträgerin den Eintragungsspeicher zu verschieben, wobei die Daten jeweils in einer Übertragungseinheit verschoben werden; eine zweite Einrichtung, die mit dem Bus verbunden ist, um die Daten des logischen Quellen-Datenträgers aus dem Eintragungsspeicher zu dem logischen Ziel-Datenträger zu verschieben, nachdem eine Übertragungseinheit von Daten in den Eintragungsspeicher verschoben worden ist; eine Einrichtung, die mit dem Bus verbunden ist, um eine Host-Anfordenmg von dem Host-Computer zu empfangen, wobei die Host-Anforderung für angegebene Blöcke von Daten aktiviert ist; eine Einrichtung, die mit der Empfangseinrichtung verbunden ist, um festzustellen, ob sich die angeforderten Blöcke in dem logischen Quellen-Datenträger oder dem logischen Ziel-Datenträger befinden; und eine Einrichtung, die mit der Feststelleinrichtung verbunden ist, um die Host-Anforderung an den geeigneten, d. h., den logischen Quellen- oder den logischen Ziel-Datenträger, zu richten, dadurch gekennzeichnet, dass die Übertragungseinheit von Daten ein momentan nicht umkonfigurierter Streifen (OB, 1 B, 2B) eines Datenblocks ist, der Umkonfigurierung unterzogen wird.
  12. Plattensteuerung nach Anspruch 11, wobei der logische Quellen-Datenträger eine erste Streifengröße aufweist und der logische Ziel-Datenträger eine zweite Streifengröße aufweist und wobei die Übertragungseinheit eine Größe hat, die dem kleinsten gemeinsamen Nenner der ersten und der zweiten Streifengröße entspricht.
  13. Plattensteuerung nach Anspruch 12, wobei der logische Quellen-Datenträger einen ersten Streifen und einen letzten Streifen aufweist, der logische Ziel-Datenträger einen ersten Streifen und einen letzten Streifen aufweist und wobei der logische Quellen-Datenträger auf einer ersten Anzahl von Plattenlaufwerken ausgebildet ist und der logische Ziel-Datenträger auf einer zweiten Anzahl von Plattenlaufwerken ausgebildet ist und wobei die Umkonfigurierungseinrichtung des Weiteren enthält: eine Einrichtung, die mit dem Bus verbunden ist, um festzustellen, ob die erste Anzahl von Plattenlaufwerken größer ist als die zweite Anzahl von Plattenlaufwerken, wobei, wenn die erste Anzahl größer ist als die zweite Anzahl, die erste Verschiebeeinrichtung in einer Richtung vom dem letzten Streifen des Quellen-Datenträgers zu dem ersten Streifen des Quellen-Datenträgers vorgeht und die zweite Verschiebeeinrichtung in einer Richtung von dem letzten Streifen des Ziel-Datenträgers zu dem ersten Streifen des Ziel-Datenträgers vorgeht, und wobei, wenn die erste Anzahl nicht größer ist als die zweite Anzahl, die erste Verschiebeeinrichtung in einer Richtung von dem ersten Streifen des Quellen-Datenträgers zu dem letzten Streifen des Quellen-Datenträgers vorgeht und die zweite Verschiebeeinrichtung in einer Richtung von dem ersten Streifen des Ziel-Datenträgers zu dem letzten Streifen des Ziel-Datenträgers vorgeht.
  14. Plattensteuerung nach Anspruch 13, wobei die Größe der Übertragungseinheit, die zu dem letzten Streifen des Ziel-Datenträgers verschoben wird, geringer ist als die zweite Streifengröße oder ihr entspricht und die Größe der Übertragungseinheit in dem letzten Streifen des Ziel-Datenträgers von der Beziehung zwischen der ersten Streifengröße und der zweiten Streifengröße abhängt.
  15. Plattensteuerung nach Anspruch 11, wobei die Plattenanordnung eine vorgegebene Anzahl von Plattenlaufwerken aufweist und wobei die Umkonfigurierungseinnchtung die Plattenanordnung erweitert, wenn ein neues Plattenlaufwerk zu der Plattenanordnung hinzugefügt wird, wobei der logische Quellen-Datenträger auf der vorgegebenen Anzahl von Plattenlaufwerken ausgebildet ist und der logische Ziel-Datenträger auf der vorgegebenen Anzahl von Plattenlaufwerken und dem neuen Plattenlaufwerk ausgebildet ist.
  16. Plattensteuerung nach Anspruch 15, wobei überschüssiger Speicherplatz in der Plattenanordnung vorhanden ist, nachdem die Plattenanordnung erweitert worden ist, und die Plattensteuerung des Weiteren umfasst: eine Einrichtung, die mit dem Bus verbunden ist, um einen neuen logischen Datenträger in dem überschüssigen Speicherplatz zu erzeugen.
  17. Plattensteuerung nach Anspruch nach Anspruch 11, wobei die Umkonfigurierungseinrichtung des Weiteren enthält: eine Einrichtung, die mit der Host-Anforderungs-Empfangseinrichtung verbunden ist, um festzustellen, ob sich die angegebenen Blöcke teilweise in dem logischen Quellen-Datenträger befinden und sich teilweise in dem logischen Ziel-Datenträger befinden; und eine Einrichtung, die mit dem Bus und der Teil-Datenträger-Feststelleinrichtung verbunden ist, um die Host-Anforderung auszusetzen, bis die erste Verschiebeeinrich tung und die zweite Verschiebeeinrichtung alle angegebenen Blöcke in den logischen Ziel-Datenträger verschoben haben, wenn sich die angegebenen Blöcke teilweise in dem logischen Quellen- und dem logischen Ziel-Datenträger befinden.
  18. Plattensteuerung nach Anspruch 11, wobei die Umkonfigurierungseinnchtung des Weiteren enthält: eine Einrichtung, die mit dem Bus verbunden ist, um Umkonfigurierungs-Anforderungen von dem Host-Computer zu empfangen; und eine Warteschlange, die mit der Umkonfigurierungs-Anforderungs-Empfangseinrichtung verbunden ist, wobei die Umkonfigurierungs-Anforderungen in die Warteschlange eingegeben werden und die Umkonfigurierungseinrichtung aktiviert wird, wenn eine Umkonfigurierungs-Anforderung in der Warteschlange wartet.
  19. Plattensteuerung nach Anspruch 18, wobei die Umkonfigurierungseinrichtung des Weiteren enthält: eine Einrichtung, die mit dem Bus verbunden ist, um eine Abbruch-Anforderung zu empfangen, die von dem Host-Computer ausgegeben wird; und eine Einrichtung, die mit der Abbruch-Anforderungs-Empfangseinrichtung verbunden ist, um eine Umkonfigurierungs-Anforderung aus der Wartschlange zu entfernen und die Umkonfigunerungs-Anforderung abzubrechen.
  20. Plattensteuerung nach Anspruch 11, die des Weiteren umfasst: eine Batterie, die mit dem Eintragungsspeicher zur Batteriestützung des Eintragungsspeichers verbunden ist, wobei der Eintragungsspeicher des Weiteren einen Konfigurierungsbereich zum Speichern von Fortschrittsinformationen im Zusammenhang mit einer Umkonfigurierungs-Anforderung enthält, und wobei die Umkonfigurierungseinrichtung des Weiteren enthält: eine Einrichtung, die mit dem Bus verbunden ist, um die Fortschrittsinformationen aus dem Konfigurierungsbereich abzurufen, wenn ein Stromausfall in dem Host-Computer aufgetreten ist; und eine Einrichtung, die mit der Abrufeinrichtung verbunden ist, um eine Umkonfigurierungs-Anforderung auf Basis der Fortschrittsinformationen neu zu starten.
  21. Plattensteuerung nach Anspruch 20, wobei die Umkonfigurierungseinrichtung des Weiteren enthält: eine Einrichtung, die mit dem Bus verbunden ist, um die Fortschrittsinformationen in dem Konfigurierungsbereich zu sichern, bevor die erste Verschiebeeinrichtung Daten verschiebt und bevor die zweite Verschiebeeinrichtung Daten verschiebt.
  22. Plattensteuerung nach Anspruch 11, die des Weiteren umfasst: eine Einrichtung, die mit dem Bus verbunden ist, um einen Teil des Eintragungsspeichers zu einer Umkonfigurierungs-Anforderung zuzuweisen; und eine Einrichtung, die mit dem Bus verbunden ist, um den Teil des Eintragungsspeichers zu sperren und Zugriff auf den Teil durch andere Host-Anforderungen zu verhindern.
DE69631106T 1995-10-13 1996-10-04 On-line-Rekonfiguration einer Speicherplattenanordnung Expired - Lifetime DE69631106T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US542897 1995-10-13
US08/542,897 US5809224A (en) 1995-10-13 1995-10-13 On-line disk array reconfiguration

Publications (2)

Publication Number Publication Date
DE69631106D1 DE69631106D1 (de) 2004-01-29
DE69631106T2 true DE69631106T2 (de) 2004-06-17

Family

ID=24165751

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69631106T Expired - Lifetime DE69631106T2 (de) 1995-10-13 1996-10-04 On-line-Rekonfiguration einer Speicherplattenanordnung

Country Status (3)

Country Link
US (2) US5809224A (de)
EP (1) EP0768599B1 (de)
DE (1) DE69631106T2 (de)

Families Citing this family (200)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098128A (en) 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
JP3641872B2 (ja) * 1996-04-08 2005-04-27 株式会社日立製作所 記憶装置システム
JP3170455B2 (ja) * 1996-05-27 2001-05-28 インターナショナル・ビジネス・マシーンズ・コーポレ−ション データ記憶システムにおけるデータの再配置方法、そのシステムに記憶されたデータのアクセス方法及びデータ記憶システム
JPH10105345A (ja) * 1996-09-27 1998-04-24 Fujitsu Ltd アレイディスク装置
US6128711A (en) * 1996-11-12 2000-10-03 Compaq Computer Corporation Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
US6000010A (en) * 1997-05-09 1999-12-07 Unisys Corporation Method of increasing the storage capacity of a level five RAID disk array by adding, in a single step, a new parity block and N--1 new data blocks which respectively reside in a new columns, where N is at least two
US6269417B1 (en) 1997-05-13 2001-07-31 Micron Technology, Inc. Method for determining and displaying the physical slot number of an expansion bus device
US6499073B1 (en) 1997-05-13 2002-12-24 Micron Electronics, Inc. System using programmable processor for selectively enabling or disabling power to adapter in response to respective request signals
US6304929B1 (en) 1997-05-13 2001-10-16 Micron Electronics, Inc. Method for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US5990582A (en) * 1997-05-13 1999-11-23 Micron Electronics, Inc. Computer fan speed control device
US6134668A (en) 1997-05-13 2000-10-17 Micron Electronics, Inc. Method of selective independent powering of portion of computer system through remote interface from remote interface power supply
US6122758A (en) 1997-05-13 2000-09-19 Micron Electronics, Inc. System for mapping environmental resources to memory for program access
US6253334B1 (en) 1997-05-13 2001-06-26 Micron Electronics, Inc. Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses
US6247898B1 (en) 1997-05-13 2001-06-19 Micron Electronics, Inc. Computer fan speed control system
US6138250A (en) 1997-05-13 2000-10-24 Micron Electronics, Inc. System for reading system log
US6338150B1 (en) 1997-05-13 2002-01-08 Micron Technology, Inc. Diagnostic and managing distributed processor system
US6148355A (en) 1997-05-13 2000-11-14 Micron Electronics, Inc. Configuration management method for hot adding and hot replacing devices
US6192434B1 (en) 1997-05-13 2001-02-20 Micron Electronics, Inc System for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6292905B1 (en) 1997-05-13 2001-09-18 Micron Technology, Inc. Method for providing a fault tolerant network using distributed server processes to remap clustered network resources to other servers during server failure
US6282673B1 (en) 1997-05-13 2001-08-28 Micron Technology, Inc. Method of recording information system events
US6363497B1 (en) 1997-05-13 2002-03-26 Micron Technology, Inc. System for clustering software applications
US6179486B1 (en) 1997-05-13 2001-01-30 Micron Electronics, Inc. Method for hot add of a mass storage adapter on a system including a dynamically loaded adapter driver
US6202160B1 (en) 1997-05-13 2001-03-13 Micron Electronics, Inc. System for independent powering of a computer system
US6134673A (en) 1997-05-13 2000-10-17 Micron Electronics, Inc. Method for clustering software applications
US6247080B1 (en) 1997-05-13 2001-06-12 Micron Electronics, Inc. Method for the hot add of devices
US6182180B1 (en) 1997-05-13 2001-01-30 Micron Electronics, Inc. Apparatus for interfacing buses
US6073255A (en) 1997-05-13 2000-06-06 Micron Electronics, Inc. Method of reading system log
US6249828B1 (en) 1997-05-13 2001-06-19 Micron Electronics, Inc. Method for the hot swap of a mass storage adapter on a system including a statically loaded adapter driver
US6526333B1 (en) 1997-05-13 2003-02-25 Micron Technology, Inc. Computer fan speed control system method
US6243838B1 (en) 1997-05-13 2001-06-05 Micron Electronics, Inc. Method for automatically reporting a system failure in a server
US6249885B1 (en) 1997-05-13 2001-06-19 Karl S. Johnson Method for managing environmental conditions of a distributed processor system
US5962933A (en) * 1997-05-13 1999-10-05 Micron Electronics, Inc. Computer fan speed control method
US6202111B1 (en) 1997-05-13 2001-03-13 Micron Electronics, Inc. Method for the hot add of a network adapter on a system including a statically loaded adapter driver
US6330690B1 (en) 1997-05-13 2001-12-11 Micron Electronics, Inc. Method of resetting a server
US6173346B1 (en) 1997-05-13 2001-01-09 Micron Electronics, Inc. Method for hot swapping a programmable storage adapter using a programmable processor for selectively enabling or disabling power to adapter slot in response to respective request signals
US6243773B1 (en) * 1997-05-13 2001-06-05 Micron Electronics, Inc. Configuration management system for hot adding and hot replacing devices
US6145098A (en) 1997-05-13 2000-11-07 Micron Electronics, Inc. System for displaying system status
US6266721B1 (en) 1997-05-13 2001-07-24 Micron Electronics, Inc. System architecture for remote access and control of environmental management
US6163853A (en) 1997-05-13 2000-12-19 Micron Electronics, Inc. Method for communicating a software-generated pulse waveform between two servers in a network
US5892928A (en) 1997-05-13 1999-04-06 Micron Electronics, Inc. Method for the hot add of a network adapter on a system including a dynamically loaded adapter driver
US5987554A (en) 1997-05-13 1999-11-16 Micron Electronics, Inc. Method of controlling the transfer of information across an interface between two buses
US6219734B1 (en) 1997-05-13 2001-04-17 Micron Electronics, Inc. Method for the hot add of a mass storage adapter on a system including a statically loaded adapter driver
US6122746A (en) 1997-05-13 2000-09-19 Micron Electronics, Inc. System for powering up and powering down a server
US6195717B1 (en) 1997-05-13 2001-02-27 Micron Electronics, Inc. Method of expanding bus loading capacity
US6170028B1 (en) 1997-05-13 2001-01-02 Micron Electronics, Inc. Method for hot swapping a programmable network adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6249834B1 (en) 1997-05-13 2001-06-19 Micron Technology, Inc. System for expanding PCI bus loading capacity
US6163849A (en) 1997-05-13 2000-12-19 Micron Electronics, Inc. Method of powering up or powering down a server to a maintenance state
US6247079B1 (en) 1997-05-13 2001-06-12 Micron Electronics, Inc Apparatus for computer implemented hot-swap and hot-add
US6170067B1 (en) 1997-05-13 2001-01-02 Micron Technology, Inc. System for automatically reporting a system failure in a server
US6324608B1 (en) 1997-05-13 2001-11-27 Micron Electronics Method for hot swapping of network components
US6269412B1 (en) 1997-05-13 2001-07-31 Micron Technology, Inc. Apparatus for recording information system events
TW344059B (en) * 1997-06-14 1998-11-01 Winbond Electronics Corp Method and device for carrying out updating firmware of CD-ROM driver through ATA/IDE interface
US6178520B1 (en) * 1997-07-31 2001-01-23 Lsi Logic Corporation Software recognition of drive removal or insertion in a storage system
US6041394A (en) * 1997-09-24 2000-03-21 Emc Corporation Disk array write protection at the sub-unit level
US6065053A (en) 1997-10-01 2000-05-16 Micron Electronics, Inc. System for resetting a server
US6035420A (en) 1997-10-01 2000-03-07 Micron Electronics, Inc. Method of performing an extensive diagnostic test in conjunction with a bios test routine
US6154835A (en) 1997-10-01 2000-11-28 Micron Electronics, Inc. Method for automatically configuring and formatting a computer system and installing software
US6263387B1 (en) 1997-10-01 2001-07-17 Micron Electronics, Inc. System for automatically configuring a server after hot add of a device
US6088816A (en) 1997-10-01 2000-07-11 Micron Electronics, Inc. Method of displaying system status
US6212585B1 (en) 1997-10-01 2001-04-03 Micron Electronics, Inc. Method of automatically configuring a server after hot add of a device
US6009541A (en) 1997-10-01 1999-12-28 Micron Electronics, Inc. Apparatus for performing an extensive diagnostic test in conjunction with a bios test routine
US6175490B1 (en) 1997-10-01 2001-01-16 Micron Electronics, Inc. Fault tolerant computer system
JPH11126137A (ja) * 1997-10-24 1999-05-11 Alps Electric Co Ltd ディスクアレイ装置
US6032217A (en) * 1997-11-04 2000-02-29 Adaptec, Inc. Method for reconfiguring containers without shutting down the system and with minimal interruption to on-line processing
JP2927282B2 (ja) * 1997-11-06 1999-07-28 日本電気株式会社 ディスクアレイ装置
US6044411A (en) * 1997-11-17 2000-03-28 International Business Machines Corporation Method and apparatus for correlating computer system device physical location with logical address
JP3616487B2 (ja) * 1997-11-21 2005-02-02 アルプス電気株式会社 ディスクアレイ装置
US6098119A (en) * 1998-01-21 2000-08-01 Mylex Corporation Apparatus and method that automatically scans for and configures previously non-configured disk drives in accordance with a particular raid level based on the needed raid level
US6078990A (en) * 1998-02-06 2000-06-20 Ncr Corporation Volume set configuration using a single operational view
US6347359B1 (en) * 1998-02-27 2002-02-12 Aiwa Raid Technology, Inc. Method for reconfiguration of RAID data storage systems
WO1999046671A1 (en) * 1998-03-10 1999-09-16 Quad Research High speed fault tolerant mass storage network information server
US6631477B1 (en) * 1998-03-13 2003-10-07 Emc Corporation Host system for mass storage business continuance volumes
US6421746B1 (en) 1998-03-26 2002-07-16 Micron Electronics, Inc. Method of data and interrupt posting for computer devices
US6298409B1 (en) 1998-03-26 2001-10-02 Micron Technology, Inc. System for data and interrupt posting for computer devices
US6304941B1 (en) * 1998-04-08 2001-10-16 International Business Machines Corporation Method and apparatus for reducing processor operations when adding a new drive to a raid-6 drive group
US6141707A (en) * 1998-05-28 2000-10-31 Emc Corporation Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume
US6205503B1 (en) 1998-07-17 2001-03-20 Mallikarjunan Mahalingam Method for the hot swap and add of input/output platforms and devices
US6223234B1 (en) 1998-07-17 2001-04-24 Micron Electronics, Inc. Apparatus for the hot swap and add of input/output platforms and devices
US6332197B1 (en) 1998-08-04 2001-12-18 International Business Machines Corp. System for updating data in a multi-adaptor environment
US6446237B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
US6279138B1 (en) * 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US6530035B1 (en) * 1998-10-23 2003-03-04 Oracle Corporation Method and system for managing storage systems containing redundancy data
EP1026575A3 (de) * 1999-02-08 2006-09-06 Hitachi, Ltd. Speicherplattenanordnungssystem und Verfahren zur Änderung ihrer Konfiguration
EP1039387B1 (de) * 1999-03-19 2010-05-19 Hitachi, Ltd. System um Daten zu duplizieren
US6931440B1 (en) * 1999-04-21 2005-08-16 Emc Corporation Method and apparatus for dynamically determining whether access to a resource connected to a computer has changed and determining how to access the resource with a new identifier
US6363493B1 (en) * 1999-04-30 2002-03-26 Sun Microsystems, Inc. Method and apparatus for automatically reintegrating a module into a computer system
US6519679B2 (en) 1999-06-11 2003-02-11 Dell Usa, L.P. Policy based storage configuration
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
JP2001034304A (ja) * 1999-07-21 2001-02-09 Fujitsu Ltd 監視制御支援装置
WO2001040925A1 (fr) * 1999-12-02 2001-06-07 Fujitsu Limited Batterie de disques et procede d'extension de sa capacite
US6487562B1 (en) * 1999-12-20 2002-11-26 Emc Corporation Dynamically modifying system parameters in data storage system
US6438648B1 (en) * 1999-12-22 2002-08-20 International Business Machines Corporation System apparatus and method for managing multiple host computer operating requirements in a data storage system
JP4869466B2 (ja) * 2000-02-24 2012-02-08 富士通セミコンダクター株式会社 記憶装置の制御方法、データ管理システム、記録媒体、及び記憶装置
US6651154B1 (en) * 2000-07-11 2003-11-18 International Business Machines Corporation Method, system, and program for expanding the storage space in an array of storage units
US6618798B1 (en) * 2000-07-11 2003-09-09 International Business Machines Corporation Method, system, program, and data structures for mapping logical units to a storage space comprises of at least one array of storage units
US7269641B2 (en) * 2000-08-30 2007-09-11 Sun Microsystems, Inc. Remote reconfiguration system
US7099304B2 (en) 2000-09-05 2006-08-29 Flexiworld Technologies, Inc. Apparatus, methods and systems for anonymous communication
US6950900B1 (en) * 2000-09-27 2005-09-27 International Business Machines Corporation Method and apparatus for migrating data having a format of a first type to a format of a second type
US6546457B1 (en) * 2000-09-29 2003-04-08 Emc Corporation Method and apparatus for reconfiguring striped logical devices in a disk array storage
AU2001220723A1 (en) * 2000-12-20 2002-07-01 Exanet Co. Method and apparatus for unified storage of data for storage area network systems and network attached storage systems
US6549978B2 (en) 2001-01-17 2003-04-15 International Business Machines Corporation Method for storage controllers with different data formats to access common storage configuration information
GB0104469D0 (en) * 2001-02-23 2001-04-11 Ibm Log-structured array
US20020127969A1 (en) * 2001-03-12 2002-09-12 Meade William Kendall Wireless network storage device and method
KR100656977B1 (ko) * 2001-04-26 2006-12-13 더 보잉 캄파니 버스 컨트롤러에 명령 스케줄을 프리로딩하는 시스템 및 방법
US6820211B2 (en) 2001-06-28 2004-11-16 International Business Machines Corporation System and method for servicing requests to a storage array
JP4175788B2 (ja) * 2001-07-05 2008-11-05 株式会社日立製作所 ボリューム制御装置
US6658528B2 (en) 2001-07-30 2003-12-02 International Business Machines Corporation System and method for improving file system transfer through the use of an intelligent geometry engine
US20030093509A1 (en) * 2001-10-05 2003-05-15 Li Raymond M. Storage area network methods and apparatus with coordinated updating of topology representation
US7137124B2 (en) 2001-10-05 2006-11-14 International Business Machines Corporation Storage area network methods and apparatus for storage device masking
US20030154271A1 (en) * 2001-10-05 2003-08-14 Baldwin Duane Mark Storage area network methods and apparatus with centralized management
KR100449485B1 (ko) 2001-10-26 2004-09-21 한국전자통신연구원 스트라이핑 시스템 및 이의 매핑 및 처리방법
US6862632B1 (en) 2001-11-14 2005-03-01 Emc Corporation Dynamic RDF system for transferring initial data between source and destination volume wherein data maybe restored to either volume at same time other data is written
US6976139B2 (en) * 2001-11-14 2005-12-13 Emc Corporation Reversing a communication path between storage devices
US7111117B2 (en) * 2001-12-19 2006-09-19 Broadcom Corporation Expansion of RAID subsystems using spare space with immediate access to new space
US7055058B2 (en) * 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
JP3702231B2 (ja) * 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US6862668B2 (en) * 2002-02-25 2005-03-01 International Business Machines Corporation Method and apparatus for using cache coherency locking to facilitate on-line volume expansion in a multi-controller storage system
US7480909B2 (en) * 2002-02-25 2009-01-20 International Business Machines Corporation Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking
US7502457B2 (en) 2002-02-28 2009-03-10 At&T Intellectual Property I, L.P. Outbound call rules routing
US6728833B2 (en) 2002-02-28 2004-04-27 International Business Machines Corporation Upgrading firmware on disks of the raid storage system without deactivating the server
US7120826B2 (en) * 2002-03-29 2006-10-10 International Business Machines Corporation Partial mirroring during expansion thereby eliminating the need to track the progress of stripes updated during expansion
US6898668B2 (en) * 2002-06-24 2005-05-24 Hewlett-Packard Development Company, L.P. System and method for reorganizing data in a raid storage system
US6907504B2 (en) * 2002-07-29 2005-06-14 International Business Machines Corporation Method and system for upgrading drive firmware in a non-disruptive manner
US7383379B2 (en) * 2002-08-07 2008-06-03 Hewlett-Packard Development Company, L.P. Manipulating data in a data storage device using an auxiliary memory device
US6918007B2 (en) * 2002-09-09 2005-07-12 Hewlett-Packard Development Company, L.P. Memory controller interface with XOR operations on memory read to accelerate RAID operations
KR100502106B1 (ko) * 2002-10-17 2005-07-20 한국전자통신연구원 스트라이핑 기법을 이용한 레이드 시스템에서의 데이터재구성 방법
US7159093B2 (en) * 2002-12-20 2007-01-02 Veritas Operating Corporation Development of a detailed logical volume configuration from high-level user requirements
US7162575B2 (en) * 2002-12-20 2007-01-09 Veritas Operating Corporation Adaptive implementation of requested capabilities for a logical volume
US7143260B2 (en) * 2002-12-20 2006-11-28 Veritas Operating Corporation Intermediate descriptions of intent for storage allocation
US7383410B2 (en) * 2002-12-20 2008-06-03 Symantec Operating Corporation Language for expressing storage allocation requirements
US7143259B2 (en) * 2002-12-20 2006-11-28 Veritas Operating Corporation Preservation of intent of a volume creator with a logical volume
US7231544B2 (en) * 2003-02-27 2007-06-12 Hewlett-Packard Development Company, L.P. Restoring data from point-in-time representations of the data
JP2004272527A (ja) * 2003-03-07 2004-09-30 Hitachi Ltd ディスクアレイ装置および障害回復制御方法
JP4450577B2 (ja) * 2003-07-24 2010-04-14 株式会社日立製作所 ストレージシステム及びストレージ構成情報の設定方法
US9489150B2 (en) 2003-08-14 2016-11-08 Dell International L.L.C. System and method for transferring data between different raid data storage types for current data and replay data
WO2005017737A2 (en) * 2003-08-14 2005-02-24 Compellent Technologies Virtual disk drive system and method
US7543296B2 (en) * 2003-08-26 2009-06-02 International Business Machines Corporation Time based multi-tiered management of resource systems
US7487235B2 (en) * 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7370248B2 (en) * 2003-11-07 2008-05-06 Hewlett-Packard Development Company, L.P. In-service raid mirror reconfiguring
JP4244319B2 (ja) * 2003-12-17 2009-03-25 株式会社日立製作所 計算機システム管理プログラム,記録媒体,ならびに計算機システム管理システムおよびそのための管理装置および記憶装置
US7222135B2 (en) * 2003-12-29 2007-05-22 Intel Corporation Method, system, and program for managing data migration
JP4441286B2 (ja) * 2004-02-10 2010-03-31 株式会社日立製作所 ストレージシステム
US7334156B2 (en) * 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US7467257B1 (en) 2004-03-29 2008-12-16 Symantec Operating Corporation Identification of storage to acquire to maintain the intent of logical volumes
US7171518B2 (en) * 2004-04-02 2007-01-30 Lsi Logic Corporation Data storage system recovery from disk failure during system off-line condition
US7681007B2 (en) * 2004-04-15 2010-03-16 Broadcom Corporation Automatic expansion of hard disk drive capacity in a storage device
US20050235283A1 (en) * 2004-04-15 2005-10-20 Wilson Christopher S Automatic setup of parameters in networked devices
US20050235063A1 (en) * 2004-04-15 2005-10-20 Wilson Christopher S Automatic discovery of a networked device
US20050268036A1 (en) * 2004-05-27 2005-12-01 Hewlett-Packard Development Company, L.P. Storage configuration
US8601035B2 (en) 2007-06-22 2013-12-03 Compellent Technologies Data storage space recovery system and method
US20060059306A1 (en) * 2004-09-14 2006-03-16 Charlie Tseng Apparatus, system, and method for integrity-assured online raid set expansion
US7565569B2 (en) * 2004-10-22 2009-07-21 International Business Machines Corporation Data protection in a mass storage system
US20060095244A1 (en) * 2004-10-28 2006-05-04 Messick Randall E Model-based device configuration
AU2005304792B2 (en) * 2004-11-05 2010-07-08 Drobo, Inc. Storage system condition indicator and method
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US7308532B1 (en) * 2004-11-12 2007-12-11 Sun Microsystems, Inc. Method for dynamically implementing N+K redundancy in a storage subsystem
US7587626B2 (en) * 2004-12-15 2009-09-08 Dell Products L.P. Intelligent hotspare or “SmartSpare” drive with pre-emptive drive rebuild
US20060184736A1 (en) * 2005-02-17 2006-08-17 Benhase Michael T Apparatus, system, and method for storing modified data
US20060195657A1 (en) * 2005-02-28 2006-08-31 Infrant Technologies, Inc. Expandable RAID method and device
JP2006252733A (ja) * 2005-03-14 2006-09-21 Fujitsu Ltd 媒体記憶装置及び媒体記憶装置のライト系経路診断方法。
US7617370B2 (en) * 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7426633B2 (en) * 2005-05-12 2008-09-16 Hewlett-Packard Development Company, L.P. System and method for reflashing disk drive firmware
JP4473175B2 (ja) * 2005-05-13 2010-06-02 富士通株式会社 記憶制御方法、プログラム及び装置
JP4723290B2 (ja) * 2005-06-06 2011-07-13 株式会社日立製作所 ディスクアレイ装置及びその制御方法
US7774542B2 (en) * 2005-07-06 2010-08-10 Ji Zhang System and method for adaptive operation of storage capacities of RAID systems
US20070101058A1 (en) * 2005-10-27 2007-05-03 Kinnan Keith R Storage unit configuration
US7404104B2 (en) * 2005-11-16 2008-07-22 International Business Machines Corporation Apparatus and method to assign network addresses in a storage array
US7404036B2 (en) * 2005-11-23 2008-07-22 International Business Machines Corporation Rebalancing of striped disk data
US20070214313A1 (en) * 2006-02-21 2007-09-13 Kalos Matthew J Apparatus, system, and method for concurrent RAID array relocation
US20080091877A1 (en) * 2006-05-24 2008-04-17 Klemm Michael J Data progression disk locality optimization system and method
JP5048760B2 (ja) 2006-05-24 2012-10-17 コンペレント・テクノロジーズ Raid管理、再割振り、およびリストライピングのためのシステムおよび方法
JP4842720B2 (ja) * 2006-06-29 2011-12-21 株式会社日立製作所 ストレージシステム及びデータ複製方法
US7486083B2 (en) 2006-12-18 2009-02-03 Emc Corporation Managing system stability
JP5100133B2 (ja) * 2007-01-19 2012-12-19 株式会社東芝 情報処理装置
US7600151B2 (en) * 2007-01-25 2009-10-06 Inventec Corporation RAID capacity expansion interruption recovery handling method and system
JP4991605B2 (ja) * 2008-03-19 2012-08-01 株式会社東芝 データ記憶装置およびその制御方法
JP5075699B2 (ja) * 2008-03-21 2012-11-21 株式会社日立製作所 ストレージ容量拡張方法及びその方法を使用するストレージシステム
US7971092B2 (en) * 2008-08-06 2011-06-28 Lsi Corporation Methods and devices for high performance consistency check
US8234316B2 (en) * 2008-09-30 2012-07-31 Microsoft Corporation Nested file system support
US20100191907A1 (en) * 2009-01-26 2010-07-29 Lsi Corporation RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8468292B2 (en) * 2009-07-13 2013-06-18 Compellent Technologies Solid state drive data storage system and method
US8296517B2 (en) * 2009-08-19 2012-10-23 Oracle International Corporation Database operation-aware striping technique
US9529694B2 (en) * 2009-09-14 2016-12-27 Oracle International Corporation Techniques for adaptive trace logging
JP5021018B2 (ja) * 2009-11-30 2012-09-05 株式会社日立製作所 データ配置方法及びデータ管理システム
EP2498078B1 (de) 2011-03-11 2019-06-19 Distek, Inc. Auflösungstestvorrichtung
JP2013196276A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 情報処理装置、プログラムおよびデータ配置方法
US9146851B2 (en) 2012-03-26 2015-09-29 Compellent Technologies Single-level cell and multi-level cell hybrid solid state drive
KR102118161B1 (ko) * 2012-06-26 2020-06-03 레드 밴드 리미티드 장치 저장의 제자리 재조직을 위한 시스템들 및 방법들
US9886451B2 (en) * 2013-04-30 2018-02-06 Hitachi, Ltd. Computer system and method to assist analysis of asynchronous remote replication
US20160034476A1 (en) * 2013-10-18 2016-02-04 Hitachi, Ltd. File management method
US20150205667A1 (en) * 2014-01-23 2015-07-23 DSSD, Inc. Method and system for service-aware data placement in a storage system
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US9773007B1 (en) * 2014-12-01 2017-09-26 Pure Storage, Inc. Performance improvements in a storage system
TWI553476B (zh) * 2015-03-05 2016-10-11 光寶電子(廣州)有限公司 區域描述元管理方法及其電子裝置
US10073621B1 (en) * 2016-03-31 2018-09-11 EMC IP Holding Company LLC Managing storage device mappings in storage systems
CN110058789B (zh) * 2018-01-18 2022-06-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、存储系统以及计算机程序产品
US10740158B2 (en) * 2018-05-02 2020-08-11 EMC IP Holding Company LLC Synchronization object aborting systems and methods
US11256428B2 (en) * 2019-07-11 2022-02-22 Dell Products L.P. Scaling raid-based storage by redistributing splits

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4931923A (en) * 1987-03-13 1990-06-05 Apple Computer, Inc. Computer system for automatically reconfigurating memory space to avoid overlaps of memory reserved for expansion slots
US4908789A (en) * 1987-04-01 1990-03-13 International Business Machines Corporation Method and system for automatically assigning memory modules of different predetermined capacities to contiguous segments of a linear address range
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
AU8683991A (en) * 1990-11-09 1992-05-14 Array Technology Corporation Logical partitioning of a redundant array storage system
JP3386823B2 (ja) * 1991-03-28 2003-03-17 株式会社日立製作所 ファイルの管理方法及び装置
US5574851A (en) * 1993-04-19 1996-11-12 At&T Global Information Solutions Company Method for performing on-line reconfiguration of a disk array concurrent with execution of disk I/O operations
US5598549A (en) * 1993-06-11 1997-01-28 At&T Global Information Solutions Company Array storage system for returning an I/O complete signal to a virtual I/O daemon that is separated from software array driver and physical device driver
JP3249868B2 (ja) * 1993-11-19 2002-01-21 株式会社日立製作所 アレイ形式の記憶装置システム
US5479653A (en) * 1994-07-14 1995-12-26 Dellusa, L.P. Disk array apparatus and method which supports compound raid configurations and spareless hot sparing
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
US5790775A (en) * 1995-10-23 1998-08-04 Digital Equipment Corporation Host transparent storage controller failover/failback of SCSI targets and associated units
US5822782A (en) * 1995-10-27 1998-10-13 Symbios, Inc. Methods and structure to maintain raid configuration information on disks of the array
US5864653A (en) * 1996-12-31 1999-01-26 Compaq Computer Corporation PCI hot spare capability for failed components

Also Published As

Publication number Publication date
EP0768599B1 (de) 2003-12-17
US5809224A (en) 1998-09-15
US6058489A (en) 2000-05-02
DE69631106D1 (de) 2004-01-29
EP0768599A1 (de) 1997-04-16

Similar Documents

Publication Publication Date Title
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE69738159T2 (de) Anordnung und Verfahren zur Wiederzuteilung von logischen an physikalische Plattengeräte unter Verwendung eines Speichersteuergerätes
DE69534057T2 (de) Verfahren zur Vermeidung der Über-Zuteilung virtueller Kapazität in einem redundanten hierarchischen Datenspeichersystem
DE69533058T2 (de) Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung
DE69533764T2 (de) Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
DE602005000926T2 (de) Speichersystem und Speicherauszugs-Erstellungsverfahren eines Speichersystems
DE69534363T2 (de) Verfahren um Festplatten zu einer Festplattenanordnung hinzuzufügen und gleichzeitig die Datenerreichbarkeit zu gewährleisten
DE69632219T2 (de) Speicherplattenanordnungssystem
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE60034327T2 (de) Verfahren und systeme zur implementierung von verwaltungsfunktionen für gemeinsam genutzte plattenanordnungen
DE60031064T2 (de) Kopierverfahren zwischen logischen Speicherplatten, Speicherplattensystem und Programm dafür
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE69938378T2 (de) Kopieren von Daten in Speichersystemen
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE69533077T2 (de) Speichersystem mit hierarchischer Speicherplattenanordnung und Abbildungsspeicher zur Dauerspeicherung der virtuellen Abbildungsinformation
DE69532030T2 (de) Speicherplattenanordnung mit Ersatzbetriebsmitteln in Betrieb und Verfahren zur Verwendung von Ersatzbetriebsmitteln zum Speichern von Benutzerdaten
DE69735400T2 (de) Speicherplattenanordnung
DE102004025922B4 (de) Mit einem Computer verbundenes Speichersystem, Computersystem und Computerprogrammerzeugnis dafür
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE102004013114B4 (de) Plattenarrayvorrichtung
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE19720721C2 (de) Speichersystem
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102012201154B4 (de) Transaktionsspeicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition