DE60034327T2 - Verfahren und systeme zur implementierung von verwaltungsfunktionen für gemeinsam genutzte plattenanordnungen - Google Patents

Verfahren und systeme zur implementierung von verwaltungsfunktionen für gemeinsam genutzte plattenanordnungen Download PDF

Info

Publication number
DE60034327T2
DE60034327T2 DE60034327T DE60034327T DE60034327T2 DE 60034327 T2 DE60034327 T2 DE 60034327T2 DE 60034327 T DE60034327 T DE 60034327T DE 60034327 T DE60034327 T DE 60034327T DE 60034327 T2 DE60034327 T2 DE 60034327T2
Authority
DE
Germany
Prior art keywords
amf
amfs
resource
lock
replication
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
DE60034327T
Other languages
English (en)
Other versions
DE60034327D1 (de
Inventor
William P. Bellevue BROWN
Michael B. Kirkland MATHEWS
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
YOTTA YOTTA Inc
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 YOTTA YOTTA Inc filed Critical YOTTA YOTTA Inc
Application granted granted Critical
Publication of DE60034327D1 publication Critical patent/DE60034327D1/de
Publication of DE60034327T2 publication Critical patent/DE60034327T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/061Improving I/O performance
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Description

  • Allgemeiner Stand der Technik
  • Die vorliegende Erfindung betrifft allgemein Systeme und Verfahren zum Beseitigen von Engpässen in Datenspeichernetzwerken und in direkt mit einem Server verbundenem Speicher und insbesondere Systeme und Verfahren zum Implementieren der Verwaltung von dynamisch gemeinsam genutzten Redundanzgruppen zwischen mehreren Laufwerksarraymanagementfunktionen.
  • Der Bedarf an schnellerer Kommunikation zwischen Computern und Datenspeichersystemen erfordert immer schnellere und effizientere Speichernetzwerke. In den vergangenen Jahren hat die Implementierung von Clusterbildungstechniken und Speicherbereichsnetzwerken (Storage Area Networks – SANs) die Leistung von Speichernetzwerken deutlich erhöht. In einem typischen Speichernetzwerk werden zum Beispiel N Server für einen proportionalen Leistungszuwachs zu einem Cluster gruppiert, und ein SAN (zum Beispiel ein faserkanalgestütztes SAN) wird zwischen die Server und verschiedene RAID-Speichersysteme/-arrays (RAID = Redundant Array of Inexpensive Disks) eingefügt. Das SAN ermöglicht es jedem Server, auf jedes Speicherelement zuzugreifen. Jedoch hat in dem typischen Speichernetzwerk jedes RAID-System einen zugehörigen RAID-Controller, auf den zugegriffen werden muss, um auf Daten zuzugreifen, die in dem bestimmten RAID-System gespeichert werden. Das kann zu Engpässen in der Systemleistung führen, weil auf den Speicher, der durch einen bestimmten RAID-Controller verwaltet wird, nur durch diesen RAID-Controller zugegriffen werden kann. Wenn überdies ein Controller ausfällt, so kann auf Informationen, die in dem RAID-System gespeichert sind, das durch den ausgefallenen Controller verwaltet wird, nicht mehr zugegriffen werden.
  • Eine Lösung zum Herstellen von Störungsunempfindlichkeit besteht darin, einen redundanten Controller in ein Master/Slave-Array einzubinden. Der Master-Controller hat die primäre Kontrolle, und nur, wenn der Master ausfällt, übernimmt der Slave-Controller die Kontrolle. Diese Lösung ist jedoch sehr ineffizient, weil der Slave-Controller erst dann verwendet wird, wenn es zu einem Ausfall des Masters gekommen ist.
  • Die internationale Anmeldung WO 98/28685 offenbart eine Vorrichtung zum Ausführen gleichzeitiger Operationen in gemeinsam genutzten Laufwerken durch mehrere Controller. Die Controller tauschen Meldungen aus, um einen gleichzeitigen Zugriff auf die gemeinsam genutzten Laufwerke zu koordinieren. Die Meldungen enthalten Zeichenträgerverriegelungs- und -freigabeanforderungen, um einen exklusiven Zugriff während Operationen zu koordinieren, sowie Cache-Daten, um eine Cachekohärenz zwischen den Controllern aufrecht zu erhalten.
  • Eine andere Lösung ist es, die Master/Slave-Controllerarchitektur zu verwenden, aber das Speicherarray in zwei Redundanzgruppen aufzuteilen, von denen jede nur durch einen einzigen der zwei Controller gesteuert wird (jeder Controller ist ein "Master" für die von ihm gesteuerte Redundanzgruppe). Auf diese Weise arbeiten beide Controller zur selben Zeit, wodurch die Effizienz des Systems gesteigert wird. Falls ein Controller ausfällt, übernimmt der andere Controller die Steuerung der Redundanzgruppe des ausgefallenen Controllers. Diese Lösung verhindert auch "Kollisionen", zu denen es zum Beispiel kommt, wenn mehr als ein Controller versucht, Daten in eine Redundanzgruppe zu schreiben. Diese Lösung hat aber auch einige Leistungsnachteile. Zum Beispiel ist die Leistung in einer solchen Master/Slave-Architektur durch die Geschwindigkeit des Master-Controllers dergestalt begrenzt, dass die Leistung nicht skalierbar ist.
  • Darum ist es wünschenswert, Techniken zum Implementieren einer Peer-to-Peer-Controllerarchitekturlösung bereitzustellen, bei der die Systemleistung nicht durch die Geschwindigkeit eines bestimmten Controllers begrenzt ist. Des Weiteren sollte ein solches System eine geeignete Störungsunempfindlichkeit und Leistungsskalierbarkeit ermöglichen.
  • Kurzdarstellung der Erfindung
  • Die vorliegende Erfindung wird durch die Ansprüche definiert.
  • Die vorliegende Erfindung stellt eine solche Peer-to-Peer-Controllerarchitekturlösung für die Datenspeicherverwaltung bereit. Die Systeme und Verfahren der vorliegenden Erfindung implementieren einen neuartigen Typ einer RAID-Arraymanagementfunktion, die sich zum Aufbauen hoch-skalierbarer Laufwerksarrays eignen. Insbesondere stellen die Systeme und Verfahren der vorliegenden Erfindung eine gemeinsam genutzte Redundanzgruppenverwaltung zwischen mehreren (zwei oder mehr) Arraymanagementfunktionen bereit.
  • Gemäß der Erfindung sind mehrere Arraymanagementfunktionen (AMFs) über ein Verbindungsmedium mit mehreren Redundanzgruppen verbunden. In einer Ausführungsform sind zum Beispiel die Arraymanagementfunktionen über ein beliebiges Speicherbereichsnetzwerk (Storage Area Network – SAN), wie zum Beispiel ein faserkanalgestütztes SAN, mit den Redundanzgruppen verbunden. Die mehreren AMFs teilen sich in die Verwaltungszuständigkeit für die Redundanzgruppen, von denen jede in der Regel mehrere Ressourcen enthält, die über mehrere Laufwerke verteilt sind. Die AMFs ermöglichen zugehörigen Host-Systemen den gleichzeitigen Zugriff auf die Redundanzgruppen. Wenn ein Host verlangt, dass eine AMF eine Operation an einer Ressource ausführt, so synchronisiert sich die AMF mit den anderen AMFs, die sich in die Steuerung der Redundanzgruppe teilen, welche die Ressource, an der eine Operation ausgeführt werden soll, enthält, um die Ressource zu verriegeln. Während des Ausführens der Operation sendet die AMF Replikationsdaten und Statusinformationen, die mit der Ressource verbunden sind, dergestalt, dass, wenn die AMF ausfällt, jede der anderen AMFs in der Lage ist, die Operation zu Ende zu führen und die Datenverlässlichkeit und -kohärenz zu wahren.
  • Im Sinne des vorliegenden Textes haben die Begriffe "Array Management Function" [Arraymanagementfunktion], "Redundancy Group" [Redundanzgruppe] und "Redundancy Group Management" [Redundanzgruppenverwaltung] die Bedeutungen, die ihnen im Handbuch der Systemspeichertechnologie des RAID Advisory Board (RAB), 6. Ausgabe, zugewiesen sind.
  • "Arraymanagementfunktion" (AMF) meint allgemein die Instanz, die eine gemeinsame Steuerung und Verwaltung für eine oder mehrere Laufwerks- oder Bandarrays ausführt. Eine AMF präsentiert der Betriebsumgebung die von ihr gesteuerten Arrays von Bändern oder Laufwerken als ein oder mehrere virtuelle Laufwerke oder Bänder. Eine AMF wird in der Regel in einem Laufwerks-Controller, einem intelligenten Hostbusadapter oder in einem Hostcomputer ausgeführt. Wenn sie in einem Laufwerks-Controller ausgeführt wird, so wird eine AMF oft als Firmware bezeichnet. In jedem Controller, Adapter oder Host können je nach Bedarf für eine bestimmte Anwendung eine oder mehrere AMFs ausgeführt werden.
  • "Redundanzgruppe" meint allgemein eine Zusammenstellung von p_Extents, die durch eine AMF für den Zweck des Datenschutzes organisiert wird. Mit einer einzelnen Redundanzgruppe wird ein einzelner Datenschutztyp verwendet. Die gesamte Nutzerdatenspeicherkapazität in einer Redundanzgruppe wird durch Prüfdaten geschützt, die innerhalb der Gruppe gespeichert sind, und keinerlei Nutzerdatenkapazität außerhalb einer Redundanzgruppe wird durch Prüfdaten, die in ihr gespeichert sind, geschützt. Redundanzgruppen enthalten in der Regel logische Entitäten, die aus vielen Ressourcen zusammengesetzt sind, wie zum Beispiel Streifen, Datenblöcke, cachegespeicherte Daten, Abbildungstabellen, Konfigurationstabellen, Statustabellen usw.
  • "Redundanzgruppenverwaltung" meint allgemein die Zuständigkeiten, Prozesse und Aktionen einer AMF, die zu einer bestimmten Redundanzgruppe gehört.
  • Gemäß der Erfindung werden Aktualisierungen der Prüfdaten innerhalb einer Redundanzgruppe zwischen den verschiedenen AMFs, welche die Redundanzgruppe gemeinsam nutzen, dynamisch koordiniert und synchronisiert. Ein solches Aktualisieren wird mittels Kohärenz- und Verriegelungs- und Freigabetechniken ermöglicht. Kohärenz und Verriegeln werden in der Regel als eine Funktion eines Blocks, einer Gruppe von Blöcken, eines Streifens oder einer Gruppe von Streifen ausgeführt. Verriegeln wird dynamisch mittels eines beliebigen aus einer Vielzahl einschlägig bekannter oder proprietärer Kohärenzprotokolle wie zum Beispiel MESI ausgeführt. Außerdem wird die Kohärenz zwischen den Cache-Speichern, die zu einer Redundanzgruppe gehören, und den Daten, die in der Redundanzgruppe enthalten sind, synchronisiert und gewahrt.
  • Gemäß einem Aspekt der Erfindung wird ein Datenspeichernetzwerk bereitgestellt, das in der Regel eine Redundanzgruppe, die mehrere Ressourcen enthält, und zwei oder mehr Arraymanagementfunktionen (AMFs) umfasst, die einen gemeinsamen Zugriff auf die Redundanzgruppe nutzen. Die AMFs ermöglichen zugehörigen Host-Systemen einen gleichzeitigen Zugriff auf die Redundanzgruppe. Das Netzwerk enthält in der Regel auch ein Speicherbereichsnetzwerk zum Verbinden der AMFs mit der Redundanzgruppe. Wenn in einer typischen Operation eine erste der AMFs eine Operation an einer ersten Ressource in der Redundanzgruppe ausführen will, so arbitriert die erste AMF mit den anderen AMFs, die den Zugriff auf die Redundanzgruppe gemeinsam nutzen, für eine Verriegelung der ersten Ressource. Anschließend führt die erste AMF die Operation an der ersten Ressource aus und sendet gleichzeitig Replikationsdaten und Statusinformationen, die zu der ersten Ressource gehören, an die anderen AMFs, dergestalt, dass, wenn die erste AMF während des Ausführens der Operation ausfällt, eine der anderen AMFs in der Lage ist, die Operation zu Ende zu führen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren zur dynamischen gemeinsamen Nutzung der Verwaltung einer Redundanzgruppe zwischen zwei oder mehr Arraymanagementfunktionen (AMFs) bereitgestellt, wobei die AMFs in der Lage sind, gleichzeitig auf die Redundanzgruppe zuzugreifen, die mehrere Ressourcen enthält. Das Verfahren umfasst in der Regel die Schritte des Empfangens einer Anforderung von einem Host durch eine erste der AMFs zum Ausführen einer ersten Operation an einer ersten der Ressourcen; des Synchronisiert mit den anderen AMFs, um Zugriff auf die erste Ressource zu erhalten; und Ausführen der ersten Operation an der ersten Ressource.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Datenspeichernetzwerksystem bereitgestellt, das in der Regel eine oder mehrere Redundanzgruppen umfasst, wobei jede Redundanzgruppe mehrere Ressourcen enthält, die über mehrere Laufwerke verteilt sind, sowie zwei oder mehr Arraymanagementfunktionen (AMFs), die eine Redundanzgruppenverwaltung der einen oder mehreren Redundanzgruppen gemeinsam nutzen, wobei die AMFs in der Lage sind, gleichzeitig auf die eine oder die mehreren Redundanzgruppen zuzugreifen. Das System umfasst in der Regel auch ein Speicherbereichsnetzwerk zum Verbinden der AMFs mit den Redundanzgruppen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren bereitgestellt, um eine Redundanzgruppe zu rekonstruieren, wenn eines ihrer Laufwerke in einem Datenspeichernetzwerksystem ausfällt. Das typische Netzwerksystem umfasst zwei oder mehr Arraymanagementfunktionen (AMFs), die mit der Redundanzgruppe über ein Speicherbereichsnetzwerk verbunden sind, wobei die AMFs alle die Verwaltung der Redundanzgruppe gemeinsam nutzen, und wobei die AMFs in der Lage sind, gleichzeitig auf die Redundanzgruppe zuzugreifen. Die Redundanzgruppe enthält mehrere Ressourcen, die über mehrere Laufwerke verteilt sind, und ein Ersatzlaufwerk. Das Verfahren umfasst in der Regel die Schritte des Arbitrieren für die Steuerung einer ersten Ressource der Redundanzgruppe durch eine erste der AMFs, des Arbitrierens für die Steuerung einer zweiten Ressource der Redundanzgruppe durch eine zweite der AMFs und des gleichzeitigen Rekonstruierens der ersten und der zweiten Ressource unter Verwendung des Ersatzlaufwerks.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren bereitgestellt, um eine Redundanzgruppe zu erweitern, wenn ihr ein zusätzliches Laufwerk in einem Datenspeichernetzwerksystem hinzugefügt wird. Das Netzwerksystem umfasst in der Regel zwei oder mehr Arraymanagementfunktionen (AMFs), die mit der Redundanzgruppe über ein Speicherbereichsnetzwerk verbunden sind. Die Redundanzgruppe enthält mehrere Ressourcen, die über mehrere Laufwerke verteilt sind. Die AMFs nutzen alle die Verwaltung der Redundanzgruppe gemeinsam und sind in der Lage, gleichzeitig auf die Redundanzgruppe zuzugreifen. Das Verfahren umfasst in der Regel die Schritte des Arbitrierens für die Steuerung einer ersten Ressource durch eine erste der AMFs, des Arbitrierens für die Steuerung einer zweiten Ressource durch eine zweite der AMFs und des gleichzeitigen Erweiterns der ersten und der zweiten Ressource unter Verwendung des zusätzlichen Laufwerks.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren zum Pipelining der Replikation von ankommenden Hostdaten in einem Datenspeichernetzwerksystem bereitgestellt. Das Netzwerksystem umfasst in der Regel eine Redundanzgruppe, die mit zwei oder mehr Arraymanagementfunktionen (AMFs) über ein Speicherbereichsnetzwerk verbunden ist. Die Redundanzgruppe enthält mehrere Ressourcen, die über mehrere Laufwerke verteilt sind. Die AMFs nutzen alle die Verwaltung der Redundanzgruppe gemeinsam und sind in der Lage, gleichzeitig auf die Redundanzgruppe zuzugreifen. Das Verfahren umfasst in der Regel die Schritte des Empfangens eines Schreibbefehls durch eine erste AMF von einem Host zum Schreiben von wenigstens zwei Datensätzen in zwei oder mehr der Ressourcen und des Erhaltens durch die erste AMF einer Verriegelung der ersten Ressource, in die der erste Datensatz geschrieben werden soll. Das Verfahren enthält in der Regel auch die Schritte des Schreibens des ersten Datensatzes in die erste Ressource und des gleichzeitigen Ausführens einer ersten Replikationsoperation, wobei Replikationsdaten und Statusinformationen, die zu der ersten Ressource gehören, an die anderen AMFs gesendet werden, dergestalt, dass, wenn die erste AMF während des Ausführens der Schreiboperation ausfällt, eine der anderen AMFs in der Lage ist, die Schreiboperation zu Ende zu führen.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren zur dynamischen gemeinsam genutzten Verwaltung einer Redundanzgruppe zwischen zwei oder mehr Arraymanagementfunktionen (AMFs) in einem Datenspeichersystem bereitgestellt. Die AMFs sind in der Lage, gleichzeitig auf die Redundanzgruppe zuzugreifen, die mehrere Ressourcen enthält. Das Verfahren umfasst in der Regel den Schritt des Bestimmens einer Arbitrierer-AMF für eine erste der Ressourcen, wobei die Arbitrierer-AMF eine der zwei oder mehr AMFs ist, welche die Verwaltung der Redundanzgruppe gemeinsam nutzen. Die Arbitrierer-AMF in der Lage ist, eine Verriegelung für die erste Ressource zu gewähren. Das Verfahren umfasst in der Regel auch die Schritte des Übermittelns einer Verriegelungsanforderung von einer ersten der AMFs an die Arbitrierer-AMF zum Anfordern einer Verriegelung der ersten Ressource und des Ausführens einer Operation an der ersten Ressource durch die erste AMF, sobald die Verriegelung der ersten Ressource durch die Arbitrierer-AMF gewährt wurde.
  • Das Studium der übrigen Abschnitte der Spezifikation, einschließlich der Zeichnungen und Ansprüche, offenbart weitere Merkmale und Vorteile der vorliegenden Erfindung. Weitere Merkmale und Vorteile der vorliegenden Erfindung sowie der Aufbau und die Funktionsweise verschiedener Ausführungsformen der vorliegenden Erfindung werden im Folgenden eingehender anhand der begleitenden Zeichnungen beschrieben. In den Zeichnungen bezeichnen gleiche Bezugszahlen identische oder funktional ähnliche Elemente.
  • Kurze Beschreibung der Zeichnungen
  • 1 bis 7 zeigen beispielhafte Konfigurationen, die sich dafür eignen, Daten von einer oder mehreren Redundanzgruppen zu einem oder mehreren Host-Systemen unter Verwendung von Controllern zu übermitteln, die den Zugriff auf die – und die Steuerung der – Redundanzgruppen gemäß der vorliegenden Erfindung gemeinsam nutzen.
  • 8 zeigt eine Mehr-Controller-Konfiguration und die interne Konfiguration der Controller gemäß der vorliegenden Erfindung.
  • 9 zeigt eine Operation unter Verwendung einer allgemeinen Synchronisationssequenz gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 10 zeigt eine Operation unter Verwendung einer allgemeinen Replikationssequenz gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11a zeigt den Ablauf für Leseoperationen, wenn sich die Redundanzgruppe in einem normalen, nicht-leistungsgeminderten Modus befindet, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11b zeigt den Ablauf für Leseoperationen, wenn sich die Redundanzgruppe in einem leistungsgeminderten Modus befindet, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 12 zeigt den Ablauf für das Pipelining der Replikation ankommender Host-Daten gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 13a zeigt den Ablauf für eine Schreiboperation, wenn sich die Redundanzgruppe in einem normalen, nicht-leistungsgeminderten Modus befindet, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 13b zeigt den Ablauf für einen Wiederherstellungsprozess, wenn die AMF, welche die Streifen aktualisiert, wie in 13a gezeigt, ausfällt, bevor die Aktualisierung vollendet ist, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 14a zeigt den Ablauf für eine Schreiboperation, wenn sich die Redundanzgruppe in einem leistungsgeminderten Modus (mit einem ausgefallenen Laufwerk) befindet, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 14b zeigt den Ablauf für einen Wiederherstellungsprozess, wenn die AMF, welche die Streifen aktualisiert, wie in 14a gezeigt, ausfällt, bevor die Aktualisierung vollendet ist, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 15 zeigt den Ablauf für einen im Hintergrund ablaufenden Rekonstruktionsprozess gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 16 zeigt den allgemeinen Sequenzablauf für einen im Hintergrund ablaufenden Erweiterungsprozess gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 17a und 17b veranschaulichen eine AMF-Kommunikation ohne bzw. mit den Meldungserfassungstechniken der vorliegenden Erfindung.
  • 18a veranschaulicht einen grundlegenden Arbitrierungsprozess, wobei eine AMF eine Verriegelung für eine bestimmte Ressource anfordert, gemäß der vorliegenden Erfindung.
  • 18b veranschaulicht den allgemeinen Prozessablauf des verallgemeinerten Arbitrierungsprozesses gemäß der vorliegenden Erfindung.
  • 19 veranschaulicht einen vereinfachten Arbitrierungsprozess zwischen zwei AMFs in einer Clusterkonfiguration für eine einzelne Ressource.
  • 20 veranschaulicht beispielhafte Ressourcenarbitrierungssequenzen für ein Cluster aus vier AMFs gemäß der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • Die vorliegende Erfindung stellt eine gemeinsam genutzte Redundanzgruppenverwaltung (Shared Redundancy Group Management – SRGM) zwischen mehreren AMFs bereit, so dass mehrere AMFs gleichzeitig auf dieselbe Redundanzgruppe zugreifen können. Gemäß der vorliegenden Erfindung werden Techniken der verteilten Synchronisation und Replikation verwendet, um die Aktivitäten aller AMFs, die eine Redundanzgruppe gemeinsam nutzen, zu koordinieren und die Datenverlässlichkeit zu wahren. Der Zugriff auf eine beliebige Redundanzgruppe kann über einen beliebigen Controller erfolgen, der eine AMF enthält, welche die Steuerung der betreffenden Redundanzgruppe gemeinsam nutzt. Die AMFs, die eine Ressourcengruppe gemeinsam nutzen, sind somit Peers. Wenn des Weiteren eine Redundanzgruppe für einen gemeinsam genutzten Zugriff konfiguriert ist und ein Controller ausfällt, so wird der Zugriff auf Daten über den ausgefallenen Controller gesperrt, aber die Daten in der Redundanzgruppe sind immer noch intakt, vor Laufwerksstörungen geschützt und von jedem anderen Controller aus zugänglich, der eine AMF enthält, welche diese Redundanzgruppe gemeinsam nutzt. Innerhalb eines bestimmten Controllers können mehrere AMFs vorhanden sein. In einem solchen Fall werden Redundanzgruppen vorzugsweise gruppenweise gemeinsam genutzt. Das heißt, einige Redundanzgruppen können durch eine erste Gruppe von AMFs gemeinsam genutzt werden, andere Redundanzgruppen können durch eine zweite Gruppe von AMFs gemeinsam genutzt werden, und wieder andere Redundanzgruppen werden möglicherweise überhaupt nicht gemeinsam genutzt. In bevorzugten Aspekten gibt es innerhalb eines bestimmten Controllers eine Eins-zu-eins-Beziehung zwischen einer AMF und einer Redundanzgruppe; das heißt, eine AMF verwaltet nur eine einzige Redundanzgruppe auf einmal. Alternativ verwaltet eine AMF mehrere AMFs gleichzeitig.
  • 1 zeigt eine grundlegende Netzwerkkonfiguration gemäß der vorliegenden Erfindung. Wie gezeigt, haben mehrere Netzwerk-Clienten 101 bis 10N , eine Kommunikationsverbindung zu mehreren Servern 201 bis 20N , von denen jeder einen Controller 30 enthält. (Im Allgemeinen bezeichnet "N" im vorliegenden Text eine unbestimmte Mehrzahl, so dass die Zahl "N", wenn sie auf eine einzelne Komponente bezogen ist, nicht unbedingt gleich der Anzahl "N" einer anderen Komponente ist. Zum Beispiel entspricht die Anzahl an Clients 10 nicht der Anzahl an Servern 20 in 1, könnte es aber.) Jeder Netzwerk-Client 10 ist mit einem oder mehreren Servern 20 über eine beliebige einer Anzahl von Verbindungsregimes verbunden, so wie es für die konkrete Anwendung und den geografischen Standort relativ zum Server 20 erforderlich ist, einschließlich beispielsweise einer Internetverbindung, einer beliebigen Verbindung vom Local Area Network (LAN)-Typ, einer beliebigen Verbindung vom Wide Area Network (WAN)-Typ, einer beliebigen proprietären Netzwerkverbindung usw. Jeder Controller 30 enthält eine oder mehrere AMFs und hat eine Kommunikationsverbindung zu den mehreren Arrays 40 der Laufwerke 45 über ein Verbindungsmedium, wie zum Beispiel ein Speicherbereichsnetzwerk (Storage Area Network – SAN) 50. Bei dem SAN 50 handelt es sich vorzugsweise um ein faserkanalgestütztes SAN. Es kann jedoch auch ein anderer SAN-Type, wie zum Beispiel ein SCSI-gestütztes SAN, oder eine direkte Serververbindung, wie zum Beispiel eine direkte SCSI- oder FC-Verbindung, verwendet werden, ohne dass vom Geist der Erfindung abgewichen wird. Weil jeder Controller 30 direkten Zugriff auf jedes Array 40 über das SAN 50 hat, kann die Redundanzgruppenverwaltung gemeinsam durch alle Controller 30 genutzt werden.
  • Ein faserkanalgestütztes SAN ist bevorzugt, weil der Faserkanalstandard ein offener Standard ist, der verschiedene Netzwerktopologien unterstützt, einschließlich Point-to-Point, Switched Fabric, Arbitrated Loop und eine beliebige Kombination dieser Topologien. Des Weiteren werden eine Anzahl von Protokollen durch den Faserkanalstandard unterstützt, einschließlich SCSI, Asynchronous Transfer Mode (ATM), Transmission Control Protocol/Internet Protocol (TCP/IP), High Performance Parallel Interface (HiPPI), Intelligent Peripheral Interface (IPI) und andere. Außerdem ermöglicht der Faserkanal derzeit Datenübertragungsgeschwindigkeiten von bis zu 100 MBps (200 MBps duplex) bei Entfernungen von bis zu 30 Metern über Kupferkabel und bis zu 10 Kilometern über Glasfaserkabel.
  • 2 zeigt ein Beispiel mehrerer Hosts, jeder mit einem Controller, der in einem schaltergestützten Faserkanal-SAN gemäß der vorliegenden Erfindung konfiguriert ist. Jeder Controller 30 ist mit Schaltern 55 in dem SAN über zwei Faserkanalports, wie gezeigt, verbunden. Somit steht jeder Controller 30 in Kommunikation mit allen anderen Controllern 30 und mit dem Laufwerksarray 40. Jeder Controller 30 kommuniziert mit seinem Host-System über einen PCI-Bus 35. Die Schalter 55 sind mit dem Laufwerksarray 40 unter Verwendung der Loop-Topologie, wie gezeigt, verbunden. Der Fachmann erkennt jedoch, dass viele Loops über eine beliebige einer Anzahl von Schalttopologien unterstützt werden können. Im Allgemeinen gilt: Je mehr Loops, desto größer die Datenübertragungsraten, die unterstützt werden können. Die Systemredundanz, wie in 2 gezeigt, ist N-1, was bedeutet, dass bei N Controllern (301 bis 30N ) bis zu N-1 Controllern ausfallen können und keine Daten in dem Laufwerksarray 40 verloren gehen, wenn alle Controller 30 dafür konfiguriert sind, die Verwaltung des Arrays 40 gemeinsam zu nutzen. Ein Controllerausfall für einen bestimmten Host verursacht einen Verlust an Datenverfügbarkeit für den betreffenden Host, aber nicht für das gesamte System. Einen Schutz vor Controllerumgebungsausfällen, wie zum Beispiel einem Ausfall der Stromversorgung, gibt es in dieser Systemkonfiguration, weil die Daten von einem Host-System mit Daten in den anderen Host-Systemen gemäß der vorliegenden Erfindung synchronisiert werden, wie weiter unten noch näher beschrieben wird.
  • Mit einem Controllerausfall ist ein Wiederherstellungszeitraum verbunden. Dies ist die Zeit, die die nicht-ausgefallenen Controller brauchen, um sicherzustellen, dass alle kritischen Daten wieder innerhalb des Clusters repliziert werden. Wenn während dieses Wiederherstellungszeitraums ein weiterer Controller ausfällt, so kann es zu Datenverlust kommen.
  • 3 zeigt ein Beispiel mehrerer Controller und eines einzelnen Hosts, der in einem schaltergestützten Faserkanal-SAN gemäß der vorliegenden Erfindung konfiguriert ist. Jeder Controller 30 ist mit den Schaltern 55 in dem SAN über zwei Faserkanalports, wie gezeigt, verbunden, jedoch können von 1 bis N Ports verwendet werden, so wie es für die konkrete Anwendung gewünscht ist. Somit steht jeder Controller 30 mit allen anderen Controllern 30 und mit dem Laufwerksarray 40 über das Faserkanal-SAN in Kommunikation. Des Weiteren kommuniziert jeder Controller 30 mit dem Host-System über einen oder mehrere PCI-Busse 35. Die Controller 30 sind auch in der Lage, über die PCI-Busse 35 miteinander zu kommunizieren. Die Schalter 55 sind mit dem Laufwerksarray 40 unter Verwendung der Loop-Topologie, wie gezeigt, verbunden. Für den Fachmann ist es jedoch erkennbar, dass viele Loops über eine beliebige einer Anzahl von Schalttopologien unterstützt werden können. Im Allgemeinen gilt: Je mehr Loops, desto größer die Datenübertragungsrate, die unterstützt werden können. In dieser Konfiguration können bis zu N-1 Controller ausfallen, bevor ein Verlust an Datenverfügbarkeit für das Host-System eintritt. Es ist ein externer Controller 30N+1 bereitgestellt, um einen Schutz vor einem Ausfall des Host-Systems zu bieten. Wenn das Host-System ausfällt, so gehen keine Daten in dem Array 40 verloren, wenn der Controller 30N+1 dafür konfiguriert ist, die Verwaltung des Arrays 40 mit den Controllern 301 bis 30N des Host-Systems gemäß der vorliegenden Erfindung gemeinsam zu nutzen.
  • 4 zeigt ein Beispiel mehrerer Hosts, jeder mit mehreren Controllern, die in einem schaltergestützten Faserkanal-SAN gemäß der vorliegenden Erfindung konfiguriert sind. Jeder Controller 30 ist mit den Schaltern 55 in dem SAN über zwei Faserkanalports, wie gezeigt, verbunden, jedoch können 1 bis N Ports verwendet werden, so wie es für die konkrete Anwendung gewünscht wird. Somit steht jeder Controller 30 mit allen anderen Controllern 30 und mit dem Laufwerksarray 40 über das Faserkanal-SAN in Kommunikation. Des Weiteren kommuniziert jeder Controller 30 mit seinem Host-System über einen oder mehrere PCI-Busse 35. Die Controller 30 sind auch in der Lage, über die PCI-Busse 35 miteinander zu kommunizieren. Die Schalter 55 sind mit dem Laufwerksarray 40 unter Verwendung der Loop-Topologie, wie gezeigt, verbunden. Für den Fachmann ist es jedoch erkennbar, dass viele Loops über eine beliebige einer Anzahl von Schalttopologien unterstützt werden können. Im Allgemeinen gilt: Je mehr Loops, desto größer die Datenübertragungsraten, die unterstützt werden können. In dieser Konfiguration bestehen Redundanz und Synchronisation zwischen zwei oder mehr Controllern 30 innerhalb jedes Host-Systems. Wenn jedes Host-System N Controller 30 enthält, so können bis zu N-1 Controller ausfallen, bevor ein Verlust an Datenverfügbarkeit für das Host-System eintritt. Wenn ein Host-System ausfällt, so gehen keine Daten in dem Array 40 verloren, wenn der Controller 30 in anderen Hosts dafür konfiguriert sind, die Verwaltung des Arrays 40 mit den Controllers 30 des ausgefallenen Host-Systems gemäß der vorliegenden Erfindung gemeinsam zu nutzen.
  • 5 zeigt ein Beispiel mehrerer Hosts, jeder mit mehreren Controllern, die in einem Fiber Channel Arbitrated Loop (FC-AL)-SAN gemäß der vorliegenden Erfindung konfiguriert sind. Jeder Controller 30 ist mit der Loop über die zwei Faserkanalports, wie gezeigt, verbunden. Somit steht jeder Controller 30 mit allen anderen Controllern 30 und mit dem Laufwerksarray 40 über die FC-AL in Kommunikation. Des Weiteren kommuniziert jeder Controller 30 mit seinem Host-System über einen oder mehrere PCI-Busse 35. In diese Konfiguration gibt es Redundanz und Synchronisation zwischen zwei oder mehr Controllern innerhalb jedes Host-Systems. Wenn jedes Host-System N Controller 30 enthält, so können bis zu N-1 Controller ausfallen, bevor ein Verlust an Datenverfügbarkeit für das Host-System eintritt. Des Weiteren kommt es, wenn ein Host-System ausfällt, zu keinem Datenverlust in dem Array 40, wenn die Controller 30 in anderen Hosts dafür konfiguriert sind, die Verwaltung des Arrays 40 mit den Controllern 30 des ausgefallenen Host-Systems gemäß der vorliegenden Erfindung gemeinsam zu nutzen.
  • 6 zeigt zwei unabhängige Redundanzgruppen, die durch zwei unabhängige Controller gemäß der vorliegenden Erfindung verwaltet werden. Die Redundanzgruppe A wird durch den Controller 30A des Host-Systems A verwaltet, und die Redundanzgruppe B wird durch den Controller 30B des Host-Systems B verwaltet. Ebenfalls gezeigt sind ein externes Host-System C und ein externes Host-System D. Gemäß einer Ausführungsform fungieren die FC-Ports der Controller 30A und 30B sowohl als Geräte- als auch Hostkanäle. Dies ermöglicht es jedem Controller 30A oder 30, auf Dienstanforderungen von seinem zugehörigen PCI-Bus 35 oder von einem externen FC-Host, wie zum Beispiel dem externen Host-System C, dem externen Host-System D bzw. einem anderen Controller, wie zum Beispiel Controller 30B oder 30A , zu reagieren. Auf diese Weise wird die Redundanzgruppe A für das Host-System B zugänglich, und die Redundanzgruppe B wird für das Host-System A zugänglich. Aus der Sicht des Controllers 30A zum Beispiel wird eine Anforderung, die vom Host-System B kommend empfangen wird, Daten zu lesen oder zu schreiben, so behandelt, als wenn sie über den zugehörigen PCI-Bus 35 empfangen werden würde. Gleichermaßen sind die externen Host-Systeme C und D in der Lage, auf Daten in den Redundanzgruppen A und B zuzugreifen, indem Lese- oder Schreibbefehle an den entsprechenden Controller 30 über den Faserkanal-SAN ausgegeben werden. Auf diese Weise kann eine beliebige Anzahl von Host-Systemen angeschlossen werden. Obgleich nur eine einzige Controller-Konfiguration gezeigt ist, können des Weiteren auch andere Konfigurationen verwendet werden, wie zum Beispiel die in 4 veranschaulichte Konfiguration. Die Verwendung von Schaltern hilft, die Laufwerksarrays für eine Leistungsskalierbarkeit zu isolieren.
  • 7 zeigt ein Beispiel eines externen RAID-Systems, das mehrere Controller auf einer oder mehreren passiven PCI-Hauptplatinen enthält, die in einem schaltergestützten Faserkanal-SAN gemäß der vorliegenden Erfindung konfiguriert sind. Die Controller 301 bis 30N sind auf einer oder mehreren passiven PCI-Hauptplatinen installiert und sind dafür konfiguriert, Host-Befehle von den FC-Ports und/oder den zugehörigen PCI-Bussen entgegenzunehmen. Somit sind externe Server in der Lage, auf Daten in den verschiedenen Redundanzgruppen zuzugreifen, die durch die Controller 301 bis 30N gesteuert werden, indem Lese- oder Schreibanforderungen an den entsprechenden Controller 30 ausgegeben werden. Obgleich nur ein einziger Controller 30 benötigt wird, werden Leistung und Redundanz skaliert, wenn mehr Controller hinzugefügt werden. Alternativ kann eine FC-AL ähnlich der Konfiguration in 5 verwendet werden, wenn die Verwendung von Schaltern 55 unerwünscht oder nicht praktikabel ist.
  • 8 zeigt eine Mehr-Controller-Konfiguration und die interne Konfiguration der Controller 30 gemäß der vorliegenden Erfindung. Einer oder mehrere der Controller 301 bis 30N aus 8 können in einem separaten Host oder auf passiven PCI-Hauptplatinen angeordnet werden. Zum Beispiel kann jeder Controller 30 in einem separaten Host-System angeordnet werden, oder jedes von mehreren Host-Systemen kann einen oder mehrere der Controller 30 enthalten. Die PCI-Host-Verbindung 60 bildet einen Verbindungspfad zum Empfangen und Verarbeiten von Befehlen von Host-Systemen und zum Erbringen von ICL (Inter-Controller Link)-Diensten mit anderen Controllern. Eine Faserkanal (FC)-Host-Verbindung 65 bildet ein Verbindungsmittel zum Verarbeiten und Empfangen von Befehlen von Host-Systemen und zum Erbringen von ICL-Diensten mit anderen Controllern. In bevorzugten Aspekten enthält jeder Controller zwei physische FC-Ports (in 8 nicht gezeigt, aber siehe die Beispiele in den 2 bis 7), von denen beide für den Laufwerkszugriff, das Empfangen und Verarbeiten von Host-Befehlen und für ICL-Dienste verwendet werden. Der Fachmann erkennt, dass jeder Controller 1 bis N FC-Ports enthalten kann, so wie es für die konkrete Anwendung gewünscht wird.
  • Jeder Controller 30 enthält einen oder mehrere Ports 70 für virtuelle Laufwerke, von denen jeder einen Zugriff auf ein virtuelles Laufwerk 75 ermöglicht. Virtuelle Laufwerke 75 sind im Grunde Partitionen eines Arrays. (Eine "Redundanzgruppe" ist im Allgemeinen mit einem "Array" synonym). Jedes Array kann in so viele virtuelle Laufwerke 75 partitioniert werden, wie es gewünscht wird. Jedes virtuelle Laufwerk ist einer oder mehreren zugehörigen AMFs 80 zugeordnet und wird durch eine oder mehrere zugehörige AMFs 80 gesteuert. Es können viele Ports 70 für virtuelle Laufwerke für dasselbe virtuelle Laufwerk 75 existieren, aber jeder muss an einem separaten Controller vorhanden sein. Zum Beispiel, wie in 8 gezeigt, sind Ports 70YR1 und 70YRN für virtuelle Laufwerke, die dem virtuellen Laufwerk YR zugeordnet sind, für Hosts im Controller 301 bzw. Controller 30N angeordnet. Jeder Port YR für virtuelle Laufwerke ermöglicht einen Zugriff auf dasselbe virtuelle Laufwerk YR. Das virtuelle Laufwerk YR ist eine Partition des Arrays Y, dessen Steuerung und Verwaltung durch AMFs 80Y1 und 80YN gemeinsam genutzt wird.
  • Ports für virtuelle Laufwerke können einem Controller jederzeit hinzugefügt werden, indem ein virtuelles Laufwerk erstellt wird und dem Port für virtuelle Laufwerke eine IO-Portadresse zugewiesen wird. Im Allgemeinen muss ein virtuelles Laufwerk existieren, bevor ein Port für virtuelle Laufwerke erstellt und ihm zugewiesen wird, aber die Erstellung eines virtuellen Laufwerks fällt zeitlich nicht mit der Erstellung eines Ports für virtuelle Laufwerke zusammen. In der Regel wird ein Port für virtuelle Laufwerke unmittelbar nach der Erstellung der Redundanzgruppe erstellt. Ports für virtuelle Laufwerke können dann jederzeit hinterher erzeugt werden, aber die Erstellung des virtuellen Laufwerks erfolgt nur ein einziges Mal. Ports für virtuelle Laufwerke können auch jederzeit gelöscht werden. Alle Host-Operationen, die sich an dem Port vollziehen, können zu Ende geführt werden. Während diese Operationen zu Ende geführt werden, werden neue Host-Operationen zurückgewiesen, indem zum Beispiel ein not_ready-Statussignal an den Host zurückgesendet wird.
  • Wenn wir davon ausgehen, dass mehrere AMFs 80 in jedem Controller 30 vorhanden sind, so werden Redundanzgruppen gruppenweise gemeinsam genutzt. Wie in 8 gezeigt, gibt es drei Gruppen von AMFs – Y, G und T –, die jeweils ein Array gemeinsam nutzen. Zugehörige AMFs in verschiedenen Controllern synchronisieren und replizieren miteinander, wie weiter unten noch näher beschrieben wird. Zum Beispiel, wie in 8 gezeigt, synchronisiert und repliziert AMF 80Y1 mit AMF 80YN (und mit einer beliebigen anderen AMF, die Array Y zugeordnet ist, zum Beispiel AMF 80Y2 (nicht gezeigt)). Gleichermaßen synchronisiert und repliziert AMF 80G1 mit AMF 80GN , und synchronisiert und repliziert AMF 80T1 mit AMF 80TN . Außerdem synchronisieren und replizieren die Ports für virtuelle Laufwerke in einem Controller mit zugeordneten Ports für virtuelle Laufwerke in anderen Controllern.
  • Verteilte Synchronisation und Replikation
  • Synchronisation und Replikation gewährleisten, dass die Operationen, die durch die verschiedenen AMFs, die eine Redundanzgruppe (Array) gemeinsam nutzen, ausgeführt werden, sich nicht gegenseitig destruktiv behindern (dass es zum Beispiel zu keinen "Kollisionen" kommt). Synchronisation erfordert, dass jede AMF, die auf eine Ressource, die einer gemeinsam genutzten Redundanzgruppe zugeordnet ist, zugreifen muss, mit den anderen AMFs um Zugriffsrechte (Verriegelung) für die Ressource arbitriert, bevor sie sie verwendet. Die Arbitrierung erfolgt durch Senden von Arbitrierungsmeldungen zwischen den AMFs über die PCI- und/oder die FC-ICL-Verbindungen.
  • 9 zeigt eine allgemeine Synchronisationssequenz für eine Operation gemäß einer Ausführungsform der vorliegenden Erfindung. In Schritt 110 wird die Operation begonnen. Zum Beispiel kann ein Host eine Anforderung senden, die verlangt, dass Daten in eine bestimmte Ressource geschrieben werden. In Schritt 120 ermittelt die AMF, ob sie die gewünschte Ressource bereits verriegelt hat. Wenn nicht, so arbitriert die AMF in Schritt 130 mit anderen AMFs für eine Verriegelung der gewünschten Ressource. Sobald eine Verriegelung besorgt ist (oder festgestellt wurde, dass die AMF bereits die Verriegelung hat), wird in Schritt 140 durch die AMF die gewünschte Operation an der Ressource ausgeführt. Sobald eine AMF eine Verriegelung besorgt hat, wird diese vorzugsweise erst dann wieder freigegeben, wenn eine andere AMF die Verriegelung benötigt (d. h. eine andere AMF für die Verriegelung arbitriert), um zu helfen, den Verwaltungsaufwand der gemeinsam genutzten Redundanzgruppenverwaltung (Shared Redundancy Group Management – SRGM) in vielen Anwendungen zu senken. Gemäß einer Ausführungsform wird ein Arbitrierungsregime vom FIFO-Typ verwendet, aber es kann auch ein prioritätsgestütztes Arbitrierungsregime oder ein beliebiges anderes Arbitrierungsregime verwendet werden. Wie weiter unten mit Bezug auf die 18, 19 und 20 noch näher beschrieben wird, wird bei einer Arbitrierung in der Regel eine Anforderung zum Nutzen einer Ressource an einen Ressourcen-Controller (in der Regel softwaregestützt, aber manchmal auch hardwaregestützt) gestellt. Der Ressourcen-Controller gewährt auf der Grundlage des verwendeten Arbitrierungsalgorithmus' Zugriff auf die Ressource. Wenn eine Ressource gerade benutzt wird, wenn die Anforderung gestellt wird, so wartet die anfordernde Entität, bis die Ressource frei ist und alle anderen anfordernden Entitäten vor ihr bedient wurden.
  • Jede AMF ist in der Lage, vielen Arten von Operationen an einer Redundanzgruppe auszuführen, einschließlich beispielsweise Host-Lesevorgänge, Host-Schreibvorgänge, im Hintergrund ablaufende Schreibvorgänge, Regenerationen, Rekonstruktionen, Online-Erweiterung, Paritätsbereinigungen usw. Eine längere Sequenz solcher Operationen nennt man einen "Prozess". Zu Beispielen von Prozessen gehören Rekonstruktionen, Online-Erweiterung und Paritätsbereinigungen. Alle AMF-Operationsarten erfordern eine Synchronisationsarbitrierung, um ablaufen zu können. Sobald eine bestimmte AMF eine Operation an einer Ressource vollendet hat, können andere AMFs die Ressource nutzen.
  • Eine Synchronisation erfolgt vorzugsweise auf der Operationsebene anstatt auf der Prozessebene. Das heißt, für jede auszuführende Operation wird die grundlegende Synchronisationssequenz aus 9 ausgeführt. Für einen Prozess, bei dem eine Funktion an der gesamten Redundanzgruppe ausgeführt werden muss (wie zum Beispiel eine Rekonstruktion), wird die Verarbeitung in eine Sequenz von Operationen aufgegliedert. Wo jede Operation an einer anderen Ressource arbeitet, erfolgt die Arbitrierung für eine Synchronisation der betreffenden Ressourcen, die für eine einzelne Operation benötigt werden, unabhängig von den Ressourcen, die für andere Operationen in dem Prozess benötigt werden. Die Ausführung einer Synchronisation auf der Operationsebene anstatt auf der Prozessebene ermöglicht es AMFs, Ressourcen gemeinsam zu nutzen, während ein Prozess im Gange ist. Wenn eine Synchronisation auf der Prozessebene anstatt auf der Operationsebene erfolgen würde, so müssten einige AMFs warten, bis der gesamte Prozess zu Ende geführt ist, bevor sie die Ressourcen nutzen könnten, wodurch es zu Host-Timeouts käme.
  • Eine Replikation dient der Kompensation von AMF-Ausfällen. Ressourcen und ihre Statusinformationen werden so replizierend, dass, wenn eine AMF ausfällt, die Ressource und ihre Statusinformationen über eine andere AMF verfügbar sind, die über eine Kopie der Ressource und ihrer Statusinformationen verfügt. Während des Aktualisierens (Beschreibens) einer bestimmten Ressource wird eine Kopie der modifizierten Ressource und/oder des Operationsstatus' der Ressource an andere AMFs gesandt, welche die Ressource gemeinsam nutzen.
  • Diese anderen AMFs nennt man Replikationspartner. Zum Beispiel sind in 8 AMF 80Y1 und AMF 80YN Replikationspartner, weil jede die Steuerung des Arrays Y gemeinsam nutzt. Die replizierten Informationen werden von den Replikationspartnern verwendet, um die Operation zu Ende zu führen, falls die AMF, welche die Ressource aktualisiert, während der Operation ausfällt.
  • 10 zeigt eine allgemeine Replikationssequenz für eine Operation gemäß einer Ausführungsform der vorliegenden Erfindung. Der Start der Sequenz ist die grundlegende Synchronisationssequenz gemäß 9. In Schritt 210 wird die Operation begonnen. Zum Beispiel kann ein Host eine Anforderung senden, die das Schreiben von Daten in eine bestimmte Ressource verlangt. In Schritt 220 stellt die AMF fest, ob sie die gewünschte Ressource bereits verriegelt hat. Wenn nicht, so arbitriert die AMF in Schritt 320 mit anderen AMFs für eine Verriegelung der gewünschten Ressource. Sobald eine Verriegelung besorgt wurde, kann die Operation ausgeführt werden. Wie gezeigt, wird die Operation, die durch die AMF ausgeführt wird, in eine Anzahl, i, von Schritten untergliedert. In Schritt 2401 werden die Replikationsdaten und Statusinformationen, die der Ressource und dem ersten Operationsschritt zugeordnet sind, an jeden Replikationspartner gesandt. In Schritt 2501 wird der erste Schritt der Operation ausgeführt. Wie in 10 gezeigt, werden die nachfolgenden Operationsschritte 2502 bis 250i der Reihe nach ausgeführt, wie auch die Replikationsschritte 2402 bis 240i . In jedem der Replikationsschritte 2401 bis 240i werden die Replikationsinformationen an den Replikationspartner gesendet, welcher der bestimmten Ressource zugeordnet ist. Im Allgemeinen werden N-1 gleichzeitige AMF-Ausfälle kompensiert, wenn es N Kopien einer Ressource und ihrer Statusinformationen innerhalb des AMF-Clusters (d. h. jener AMFs, welche die Ressource gemeinsam nutzen) gibt, wobei N als die Replikationsdimension definiert ist. Somit werden Replikationsinformationen an die N-1 Replikationspartner gesendet, die der bestimmten Ressource zugeordnet sind.
  • Eine Replikation kann auf bestimmte Replikationsgruppen oder bestimmte AMFs gerichtet werden. In einer Ausführungsform wird eine N-Weg-Replikation ohne definierte Replikationsgruppen ausgeführt. In dieser Ausführungsform findet die Replikation mit allen N-1 AMFs in dem Cluster statt, welche die replizierte Ressource gemeinsam nutzen. Alternativ erfolgt die Replikation mit N-1 anderen Replikationsgruppen. Eine Replikationsgruppe ist eine Gruppe von AMFs, die kritische Daten zu AMFs in Replikationsgruppen replizieren, die nicht zur eigenen gehören. Ein Beispiel dafür ist ein Satz Controller – wobei jeder Controller eine oder mehrere AMFs enthält – an einem physischen Ort und ein anderer Satz Controller an einem anderen physischen Ort. Ein anderes Beispiel ist ein Satz Controller in einem Host-System und ein anderer Satz außerhalb eines Hosts. Die Verwendung von Replikationsgruppen hilft zu gewährleisten, dass, wenn eine Gruppe von Controllern komplett ausfällt, die eine oder die mehreren anderen Gruppen über die Informationen verfügen, die für die Aufrechterhaltung der Datenverlässlichkeit notwendig sind.
  • Die Replikation kann auf bestimmte Replikationsgruppen oder bestimmte AMFs gerichtet werden. Eine bestimmte Replikationsgruppe repliziert vorzugsweise mit einer beliebigen AMF außerhalb der Replikationsgruppe der replizierenden AMFs. Jedoch kann der Satz Replikationsgruppen, zu denen eine bestimmte Replikationsgruppe repliziert, durch einen Bediener vorgegeben werden. Außerdem ist synchrone Replikation der bevorzugte Replikationsmodus. Im synchronen Replikationsmodus werden Fertigstellungsstatusinformationen für eine Operation an einen Host zurückgesandt, nachdem alle Replikationsziele die Replikationsdaten erhalten haben. Zu alternativen Replikationsmodi gehören die asynchrone Replikation und die pseudosynchrone Replikation. Im asynchronen Replikationsmodus werden Fertigstellungsstatusinformationen für eine Operation an einen Host zurückgesandt, bevor Replikationsdaten übertragen wurden. Im pseudo-synchronen Replikationsmodus werden Fertigstellungsstatusinformationen für eine Operation an einen Host zurückgesandt, nachdem die Replikationsdaten übertragen wurden, aber bevor alle Replikationsziele den Empfang der Daten bestätigt haben.
  • Gemäß der vorliegenden Erfindung können mehrere AMFs eine Ressource gleichzeitig lesen. Das heißt, es können jederzeit mehrere Leseverriegelungen ausstehen. Es wird jedoch immer nur eine einzige AMF auf einmal, die in die Ressource schreibt, berücksichtigt. Wenn mehrere AMFs eine Ressource gleichzeitig lesen können, so verbessert das deutlich die Leistung. Wenn eine AMF in die Ressource schreibt, so ist es keiner anderen AMF gestattet, die Ressource zu lesen. Das Synchronisationsprotokoll erlaubt diesen Aspekt und setzt ihn durch.
  • 11a zeigt den allgemeinen Sequenzablauf für eine Leseoperation, wenn sich die Redundanzgruppe (RG) in einem normalen, nicht-leistungsgeminderten Modus befindet, gemäß einer Ausführungsform der vorliegenden Erfindung. "Nicht-leistungsgemindert" meint allgemein den Fall, wo alle Laufwerke in der Redundanzgruppe betriebsbereit sind, während "leistungsgemindert" allgemein den Fall meint, wo ein oder mehrere Laufwerke in der Redundanzgruppe ausgefallen sind. In Schritt 310 wird die Leseoperation begonnen. Zum Beispiel empfängt die AMF eine Anforderung von einem Host, eine bestimmte Ressource zu lesen. In Schritt 320 wird eine Verriegelung der bestimmten Ressource verlangt. Dies ist im Grunde das gleiche wie die Schritte 120 und 130 von 9. In bevorzugten Aspekten können mehrere Verriegelungen ausstehen. Dies macht es möglich, dass mehrere AMFs eine Ressource gleichzeitig lesen.
  • 11b zeigt den allgemeinen Sequenzablauf für eine Leseoperation, wenn sich die Redundanzgruppe (RG) in einem leistungsgeminderten Modus befindet, gemäß einer Ausführungsform der vorliegenden Erfindung. In Schritt 310 wird die Leseoperation begonnen. Zum Beispiel empfängt die AMF eine Anforderung von einem Host, eine bestimmte Ressource zu lesen. In Schritt 320 wird eine Verriegelung der bestimmten Ressource verlangt. Sobald die Verriegelung im leistungsgeminderten Lesemodus besorgt ist, liest die AMF in Schritt 340 die Daten und die Parität aus der betreffenden Ressource und regeneriert alle fehlenden Daten in Schritt 350. In Schritt 360 werden die (regenerierten) Daten an den Host übertragen, der die Leseanforderung ausgegeben hat.
  • 12 zeigt den allgemeinen Sequenzablauf für das Replizieren ankommender Host-Daten in einer Pipelining-Weise für eine Schreiboperation gemäß einer Ausführungsform der vorliegenden Erfindung. Das Pipelining der Replikationsdaten hilft, die Replikationslatenz zu minimieren. In Schritt 410 wird die Operation begonnen. Zum Beispiel gibt ein Host einen Schreibbefehl aus, einen oder mehrere Blöcke mit Daten in eine oder mehrere Ressourcen zu schreiben. In Schritt 420 wird der Host-Befehl von dem Host kommend empfangen und analysiert. Der Host-Befehl wird als eine Sequenz von Datenblocksätzen verarbeitet. In Schritt 430 wird die entsprechende Verriegelung für den beginnenden Satz Blöcke besorgt. In Schritt 440 wird der beginnende Blocksatz von dem Host zu der AMF übertragen. In Schritt 450 wird die Blocksatzreplikation für den beginnenden Satz Blöcke begonnen. Die AMF wartet nicht die Vollendung der Blocksatzreplikation ab. Die AMF stellt sofort in Schritt 460 fest, ob noch weitere Sätze von Blöcken verarbeitet werden müssen. Wenn ja, so beginnt die AMF sofort in Schritt 430 mit der Besorgung der entsprechenden Verriegelung, um den nächsten Satz Blöcke zu holen, und wiederholt die Schritte 440, 450 und 460 für den nächsten Blocksatz. Wenn alle Blocksätze empfangen und verarbeitet wurden, so wartet die AMF in Schritt 470 auf die Fertigstellung aller Replikationsoperationen. Wenn jede Operation zu Ende geführt ist, sendet die AMF in Schritt 480 den Status an den Host.
  • 13a zeigt den allgemeinen Sequenzablauf für eine Schreiboperation, wenn sich die Redundanzgruppe (RG) in einem normalen, nicht-leistungsgeminderten Modus befindet, gemäß einer Ausführungsform der vorliegenden Erfindung. In Schritt 510 wird die Operation begonnen. Zum Beispiel gibt ein Host einen Schreibbefehl aus, in eine Ressource zu schreiben. Schritt 520 ist der Prozess des Besorgens der Synchronisationsverriegelung für die benötigte Ressource, wie in 9 gezeigt. In diesem Beispiel ist die Ressource eine Streifenschreibverriegelung, aber es kann sich auch um eine beliebige andere Verriegelung handeln, die durch die konkrete Operation benötigt wird. Nachdem die Streifenschreibverriegelung besorgt ist, liest die AMF in Schritt 530 die alten Daten und die alte Parität von den Laufwerken der RG.
  • Gleichzeitig mit der Laufwerksleseoperation von Schritt 530 sendet die AMF in Schritt 540 ein Statusbenachrichtigungssignal an ihren Replikationspartner für diese Ressource. Die Replikationspartner beinhalten alle anderen AMFs, zu denen diese AMF Statusinformationen und Daten für die betreffende Ressource repliziert. Die Anzahl von Replikationspartnern ist gleich N-1, wobei N die Replikationsdimension ist. Vorzugsweise liegt die Replikationsdimension N im Bereich von 1 bis 8, aber N kann nach Wunsch auch jede andere Zahl sein. Das Statusbenachrichtigungssignal ist ein Signal vom "Aktualisierungsbeginn"-Typ, das den Replikationspartnern sagt, dass eine Streifenaktualisierung begonnen hat. Die Replikationspartner müssen diese Informationen kennen, weil sie für das Bereinigen zuständig sind, falls die schreibende AMF ausfällt, bevor die Operation zu Ende geführt ist.
  • Sobald der Schritt 530 der "Aktualisierungsbeginn"-Benachrichtigung und der Schritt 540 des Lesens der alten Daten und der alten Parität beendet sind, schreibt die AMF in Schritt 550 die neuen Daten in das RG-Mitgliedslaufwerk. Gleichzeitig mit dem Schritt 550 des Schreibens der neuen Daten erfolgt das Erzeugen der neuen Parität in Schritt 560. Anschließend, in Schritt 570, schreibt die AMF die neue Parität in die RG-Mitgliedslaufwerke. Sobald die Paritätsschreiboperation vollendet ist, sendet die AMF in Schritt 580 eine "Aktualisierungsende"-Benachrichtigung an ihren Replikationspartner. Bei Empfang dieser Benachrichtigung geben die Replikationspartner ihre Statusdaten im Zusammenhang mit der Streifenaktualisierung frei.
  • 13b zeigt den allgemeinen Sequenzablauf für einen Wiederherstellungsprozess, wenn die AMF, die den Streifen, wie in 13a gezeigt, aktualisiert, ausfällt, bevor die Aktualisierung vollendet ist, gemäß einer Ausführungsform der vorliegenden Erfindung. Wenn die AMF, die den Streifen aktualisiert, ausfällt, bevor die Aktualisierung vollendet ist, so übernehmen die Replikationspartner die Zuständigkeit für das Wiederherstellen im Anschluss an die ausgefallene Aktualisierungsoperation. In Schritt 610 beginnt die Wiederherstellungsoperation, wenn eine oder mehrere der Replikationspartner-AMFs entweder einen Ausfall detektieren oder über einen Ausfall informiert werden. Die Replikationspartner arbitrieren in Schritt 620 um die Zuständigkeit für die Streifenverriegelung. Die AMF, welche die Arbitrierung gewinnt (die Wiederherstellungs-AMF), ist für das Ausführen der Wiederherstellung der ausgefallenen Aktualisierungsoperation zuständig.
  • Eine Ausfallbenachrichtigung kommt in der Regel von der Inter-Controller Link (ICL)-Komponente. Wenn ein Controller ausfällt, so verlieren die AMFs an diesem Controller die Kommunikation mit den anderen AMFs, mit denen sie die Redundanzgruppe gemeinsam genutzt haben. Die ICL sendet periodisch eine "Ping"-Meldung an alle anderen AMFs, mit denen sie die Redundanzgruppe gemeinsam nutzt. Wenn eine dieser AMFs nicht auf die Ping-Meldung antwortet, so nimmt die AMF, welche die Ping-Meldung versandte, an, dass die AMF ausgefallen ist, und beginnt die Wiederherstellungsaktion. Eine Wiederherstellung wird auch ausgelöst, wenn die ICL beim Senden von Synchronisations- oder Replikationsmeldungen an die Ziel-AMF einer Transportstörung begegnet.
  • Der Wiederherstellungsprozess enthält zwei grundlegende Schritte: Neuberechnung der Streifenparität und Neuschreiben der Daten. In Schritt 630 liest die Wiederherstellungs-AMF alle Daten für die Streifensegmente, die von der ausgefallenen Aktualisierungsoperation betroffen sind. Gleichzeitig mit dem Datenleseschritt 630 weist die Wiederherstellungs-AMF einen oder mehrere neue Replikationspartner zu und sendet in Schritt 640 eine "Aktualisierungsbeginn"-Benachrichtigung an alle ihre Replikationspartner. Wenn die Datenleseoperation vollendet ist, so erzeugt die Wiederherstellungs-AMF in Schritt 650 eine neue Parität. Diese neue Paritätsberechnung enthält nicht die neuen Daten. Es ist einfach eine Regeneration der Parität für Daten in den RG-Mitgliedslaufwerken.
  • Sobald der Paritätserzeugungsschritt 650 und der "Aktualisierungsbeginn"-Benachrichtigungsschritt 640 vollendet sind, schreibt die Wiederherstellungs-AMF in Schritt 660 die neue Parität in die RG-Mitgliedslaufwerke. Nachdem der Paritätsschreibschritt 660 vollendet ist, sendet die Wiederherstellungs-AMF in Schritt 670 eine "Aktualisierungsende"-Benachrichtigung an die Replikationspartner. Nach einem Zeitintervall veranlasst der Cacherückschreibeplanungsalgorithmus einen der Replikationspartner, die neuen Daten in Schritt 680 in die RG-Mitgliedslaufwerke zu schreiben, was eine normale Streifenaktualisierungsoperation (nicht im Wiederherstellungsmodus) ist, wie in 13a gezeigt. Die Cachespeicherungsfunktion ist ein Teil der AMF.
  • 14a zeigt den Ablauf für eine Schreiboperation, wenn sich die Redundanzgruppe (RG) in einem leistungsgeminderten Modus (mit einem ausgefallenen Laufwerk) befindet, gemäß einer Ausführungsform der vorliegenden Erfindung. Diese Sequenz ähnelt der des nicht-leistungsgeminderten Falls aus 13a, unter Einschluss des Regenerationsschrittes 744 und des Replikationsschrittes 746, wie weiter unten beschrieben wird.
  • In Schritt 710 wird die Operation begonnen. Zum Beispiel gibt ein Host einen Schreibbefehl aus, um Daten in eine Ressource zu schreiben. Schritt 720 ist der Prozess des Besorgens der Synchronisationsverriegelung für die benötigte Ressource, wie in 9 gezeigt. In diesem Beispiel ist die Ressource eine Streifenschreibverriegelung, aber sie kann auch eine beliebige andere Verriegelung sein, so wie es durch die konkrete Operation verlangt wird. Nach der Besorgung der Streifenschreibverriegelung liest die AMF in Schritt 730 die alten Daten und die alte Parität von den Laufwerken der RG.
  • Gleichzeitig mit der Laufwerksleseoperation von Schritt 730 sendet die AMF in Schritt 740 ein Statusbenachrichtigungssignal an ihre Replikationspartner für diese Ressource. Zu den Replikationspartnern gehören alle anderen AMFs, zu denen diese AMF Statusinformationen und Daten für die bestimmte Ressource repliziert. Das Statusbenachrichtigungssignal ist ein Signal vom "Aktualisierungsbeginn"-Typ, das den Replikationspartnern sagt, dass eine Streifenaktualisierung begonnen hat. Die Replikationspartner müssen diese Informationen kennen, weil sie für die Bereinigung zuständig sind, falls die schreibende AMF ausfällt, bevor die Operation zu Ende geführt ist. Sobald der Schritt 540 des Lesens der alten Daten und der alten Parität vollendet ist, regeneriert die AMF in Schritt 744 die Daten, die sich auf dem ausgefallenen Laufwerk befanden. In Schritt 746 werden die alten Daten, einschließlich der regenerierten Daten, zu den Replikationspartnern repliziert. Die Replikation dieser Daten zu den Replikationspartnern ist für die Wiederherstellung notwendig, falls die aktualisierende AMF ausfällt, bevor die Operation zu Ende geführt ist.
  • Sobald der Replikationsschritt 746 vollendet ist, werden in Schritt 750 die neuen Daten in die RG-Mitgliedslaufwerke geschrieben. Gleichzeitig mit dem Schritt 750 des Schreibens der neuen Daten erfolgt die Erzeugung der neuen Parität in Schritt 760.
  • Anschließend, in Schritt 770, schreibt die AMF die neue Parität in die RG-Mitgliedslaufwerke. Sobald die Paritätsschreiboperation vollendet ist, sendet die AMF in Schritt 780 eine "Aktualisierungsende"-Benachrichtigung an ihre Replikationspartner. Bei Empfang dieser Benachrichtigung geben die Replikationspartner ihre Statusdaten frei, die mit der Streifenaktualisierung verbunden sind.
  • 14b zeigt den allgemeinen Sequenzablauf für einen Wiederherstellungsprozess, wenn die AMF, die den Streifen, wie in 14a gezeigt, aktualisiert, ausfällt, bevor die Aktualisierung vollendet ist, gemäß einer Ausführungsform der vorliegenden Erfindung. Dieses Szenario unterscheidet sich von dem Fall der nicht-leistungsgeminderten Wiederherstellung aus 13b insofern, als die Wiederherstellungs-AMF die replizierten alten Daten benutzt, um die RG-Laufwerkssegmente zu rekonstruieren, die von dem Ausfall der aktualisierenden AMFs betroffen waren. Wenn die AMF, die den Streifen aktualisiert, ausfällt, bevor die Aktualisierung vollendet ist, so übernehmen die Replikationspartner die Zuständigkeit für die Wiederherstellung im Anschluss an die ausgefallene Aktualisierungsoperation. In Schritt 810 beginnt die Wiederherstellungsoperation, wenn eine oder mehrere der Replikationspartner-AMFs entweder einen Ausfall detektieren oder über einen Ausfall informiert werden, für Beispiel durch einen Host. Die Replikationspartner arbitrieren in Schritt 820 um die Zuständigkeit für die Streifenverriegelung. Die AMF, welche die Arbitrierung gewinnt (die Wiederherstellungs-AMF), ist für das Ausführen der Wiederherstellung der ausgefallenen Aktualisierungsoperation zuständig.
  • In Schritt 830 wird eine neue Parität aus den alten Daten erzeugt, die durch den Replikationsschritt 746 von 14a übermittelt wurden. Gleichzeitig mit Schritt 830 weist die Wiederherstellungs-AMF einen oder mehrere neue Replikationspartner zu und sendet in Schritt 840 eine "Aktualisierungsbeginn"-Benachrichtigung an alle ihre Replikationspartner. In Schritt 850 werden die alten Daten in die Laufwerke geschrieben. In Schritt 860 werden die Replikationspartner informiert, dass die alten Daten zurück in die Laufwerke geschrieben wurden. Die Replikationspartner können nun ihre Kopien der alten Daten verwerfen. Nach diesem Ereignis ist die Wiederherstellungssequenz die gleiche wie für die nicht-leistungsgeminderte Wiederherstellungssequenz. Genauer gesagt, wird die neue Parität in Schritt 870 in die RG-Mitgliedslaufwerke geschrieben. Nachdem der Paritätsschreibschritt 870 vollendet ist, sendet die Wiederherstellungs-AMF in Schritt 880 eine "Aktualisierungsende"-Benachrichtigung an die Replikationspartner. Nach einem Zeitintervall veranlasst der Cacherückschreibeplanungsalgorithmus einen der Replikationspartner, die neuen Daten in Schritt 890 in die RG-Mitgliedslaufwerke zu schreiben, was eine normale Streifenaktualisierungsoperation (nicht im Wiederherstellungsmodus) ist, wie in 13a gezeigt. Verteilte Rekonstruktion
  • 15 zeigt den allgemeinen Sequenzablauf für einen im Hintergrund ablaufenden Rekonstruktionsprozess gemäß einer Ausführungsform der vorliegenden Erfindung. Jede Operation wird in Schritt 910 begonnen, und die entsprechende Verriegelung wird in Schritt 920 besorgt, in diesem Fall eine Streifenverriegelung. In Schritt 930 liest die AMF die Daten und die Parität für den Streifen. In Schritt 940 regeneriert die AMF fehlende Daten und schreibt in Schritt 950 die Daten in das Ersatzlaufwerk. Nach dem Schreiben der Daten aktualisiert die AMF in Schritt 960 die Abbildungstabelle so, dass der Umstand widergespiegelt wird, dass Blöcke, die ursprünglich auf das ausgefallene Laufwerk abgebildet waren, nun auf das Ersatzlaufwerk abgebildet sind. Die Abbildungstabelle bildet logische Host-Blöcke auf RG-Mitgliedslaufwerke und Blöcke in den Laufwerken ab. In Schritt 970 wird festgestellt, ob noch weitere Streifen zu rekonstruieren sind. Diese Sequenz wiederholt sich, solange es noch weitere Streifen gibt, die auf das Ersatzlaufwerk zu rekonstruieren sind.
  • Ein Vorteil der Techniken der gemeinsam genutzten Redundanzgruppenverwaltung (Shared Redundancy Group Management – SRGM) der vorliegenden Erfindung ist, dass SRGM die Verteilung der Rekonstruktionsverarbeitung an alle AMFs gestattet, die eine RG gemeinsam nutzen. Das führt zu kürzeren Rekonstruktionszeiten und einer allgemeinen Verkürzung der längeren Reaktionszeiten, mit denen es ein Host während einer Rekonstruktion normalerweise zu tun hat. Eine verteilte Rekonstruktion wird in der Weise bewerkstelligt, dass man eine Teilmenge der (oder alle) AMFs, die eine RG gemeinsam nutzen, koordinieren lässt, für welche Streifen jede die Rekonstruktionszuständigkeit hat. Wenn eine oder mehrere dieser AMFs während der Rekonstruktion ausfallen oder sich abschalten, so arbitrieren die übrigen AMFs die Rekonstruktionszuständigkeiten neu. Nehmen wir zum Beispiel an, dass es N AMFs gibt, die eine Redundanzgruppe gemeinsam nutzen, die der Rekonstruktion bedarf. Diese AMFs unterhalten sich miteinander (durch Senden von Meldungen) und bestimmen, welche von ihnen sich an der Rekonstruktion beteiligen sollen, zum Beispiel eine Teilmenge von N, bezeichnet mit M. Diese M AMFs legen die Rekonstruktionszuständigkeiten fest, indem sie bestimmen, welche AMFs welche Streifen rekonstruieren. Dies kann mit Hilfe jedes beliebigen Algorithmus' bestimmt werden. In einer Ausführungsform der Erfindung rekonstruiert zum Beispiel jede AMFi Streifen Mod(S/i), wobei S die Streifenanzahl ist. Verteilte RG-Erweiterung Genauso, wie die Rekonstruktion vorzugsweise zwischen einer Teilmenge der AMFs, die eine RG gemeinsam nutzen, verteilt wird, wird auch die RG-Erweiterung verteilt. Die BG-Erweiterung ist die Hinzufügung von Laufwerksmitgliedern zu einer bestehenden RG. Ein einzigartiger Vorteil des SRGM ist, dass es die Verteilung der Erweiterungsverarbeitung an alle AMFs gestattet, die eine RG gemeinsam nutzen. Das führt zu kürzeren Erweiterungszeiten und einer Verkürzung der längeren Reaktionszeiten, mit denen es ein Host während einer Erweiterung normalerweise zu tun hat.
  • Eine verteilte Erweiterung wird in der Weise bewerkstelligt, dass man eine Teilmenge der (oder alle) AMFs, die eine RG gemeinsam nutzen, arbitrieren lässt, für welche Streifen sie die Erweiterungszuständigkeit haben. Wenn eine oder mehrere dieser AMFs während der Erweiterung ausfallen oder sich abschalten, so arbitrieren die übrigen AMFs die Erweiterungszuständigkeiten neu. Nehmen wir zum Beispiel an, dass es N AMFs gibt, die eine Redundanzgruppe gemeinsam nutzen, die der Erweiterung bedarf. Diese AMFs unterhalten sich miteinander (durch Senden von Meldungen) und bestimmen, welche von ihnen sich an der Erweiterung beteiligen sollen, zum Beispiel eine Teilmenge von N, bezeichnet mit M. Diese M AMFs legen die Rekonstruktionszuständigkeiten fest, indem sie bestimmen, welche AMFs welche Streifen erweitern. Dies kann mit Hilfe jedes beliebigen Algorithmus' bestimmt werden. In einer Ausführungsform der Erfindung erweitert zum Beispiel jede AMFi Streifen Mod(S/i), wobei S die Streifenanzahl ist.
  • 16 zeigt den allgemeinen Sequenzablauf für einen im Hintergrund ablaufenden Erweiterungsprozess gemäß einer Ausführungsform der vorliegenden Erfindung. Der Prozess wird in Schritt 1010 begonnen, und die entsprechende Streifenverriegelung wird in Schritt 1020 besorgt. Der Erweiterungsfall unterscheidet sich von den vorangegangenen Beispielen insofern, als mehrere Verriegelungen besorgt werden müssen. Eine Erweiterungsoperation umfasst 2 oder mehr Streifen. Ein Streifen ist der Erweiterungsstreifen, dessen Streifenbreite von W auf W + N erweitert wird. Die anderen involvierten Streifen sind Streifen, die Host-Daten enthalten, die von jenen Streifen zu den erweiterten Streifen migriert werden.
  • In Schritt 1030 werden die Daten auf dem zu erweiternden Streifen gelesen. In Schritt 1040 werden die Daten so repliziert, dass, wenn die Operation vor der Fertigstellung ausfällt, die Replikationspartner in der Lage sind, eine Bereinigung nach dem Ausfall vorzunehmen und den Erweiterungsprozess fortzuführen. Gleichzeitig mit den Schritten 1030 und 1040 wird der Quelldatenstreifen, der Daten enthält, die zu dem erweiterten Streifen zu migrieren sind, in Schritt 1045 gelesen. Nachdem die Schritte 1040 und 1045 vollendet sind, informiert die AMF ihre Replikationspartner, dass sie in Schritt 1050 mit der Erweiterungsstreifenaktualisierung beginnt.
  • Gleichzeitig, in Schritt 1055, erzeugt die AMF Paritätsinformationen für den erweiterten Streifen.
  • Nachdem der Schritt der "Aktualisierungsbeginn"-Benachrichtigung vollendet ist, werden in Schritt 1060 die Daten für den erweiterten Streifen in die Laufwerke geschrieben. Sobald der Schritt 1055 der Paritätserzeugung und der Schritt 1050 der "Aktualisierungsbeginn"-Benachrichtigung vollendet sind, wird in Schritt 1070 die Parität in die Laufwerke geschrieben. Sobald die Schritte 1060 und 1070 vollendet sind, informiert die AMF ihre Replikationspartner in Schritt 1080, dass die Aktualisierung zu Ende geführt ist. Die Replikationspartner aktualisieren dann ihre Abbildungstabellen so, dass die erweiterte Streifenbreite und die migrierten Host-Daten widergespiegelt werden. Sie verwerfen auch die Daten, die in Schritt 1040 repliziert wurden. Die Abbildungstabelle bildet logische Host-Blöcke auf RG-Mitgliedslaufwerke und Blöcke in den Laufwerken ab.
  • In Schritt 1090 wird festgestellt, ob noch weitere Streifen durch die AMF zu erweitern sind. Wenn ja, so wird die Sequenz wiederholt. Diese Sequenz wiederholt sich, solange es noch weitere Streifen gibt, die erweitert werden müssen, um die Kapazität der neuen RG-Mitgliedslaufwerke zu erweitern. Es ist zu beachten, dass es sich dabei um einen Prozess handelt. Was es zu einem Prozess macht, ist die Loop-Bildung, zu der es in Schritt 1090 kommt. Die Schritte 1020 bis 1090 umfassen eine Operation.
  • Meldungserfassung
  • Ein Problem beim SRGM ist der Verarbeitungsverwaltungsaufwand und die IO-Kanallast in Verbindung mit der Synchronisation und Replikation, die zum Unterstützen von SRGM verwendet wird. Um die Synchronisations- und Replikationstechniken zu ermöglichen, kommt vorzugsweise eine ICL (Inter-Controller Link)-Meldungserfassung zum Einsatz. Bei der Meldungserfassung handelt es sich allgemein um einen Algorithmus, der viele kleine Meldungen, die für einen bestimmten Clusterknoten (d. h. einen Controller, in dem sich viele AMFs befinden können) bestimmt sind, zu einem großen Meldungspaket kombiniert und es als eine einzelne Meldung an den betreffenden Knoten sendet. Dies senkt den Verarbeitungsverwaltungsaufwand und die IO-Kanallast drastisch und unterscheidet sich damit von dem Konzept des Sendens einzelner Meldungen an einen Clusterknoten.
  • 17a veranschaulicht eine AMF-Kommunikation ohne die Meldungserfassungstechniken der vorliegenden Erfindung. Wie gezeigt, bilden eine Zusammenstellung von AMFs 1100 und eine Inter-Controller Link (ICL)-Entität 1105 einen SRGM-Knoten 1110. Ein Knoten ist in der Regel eine Hardware-Entität, wie zum Beispiel ein Controller. Die ICL 1105 ist eine Software-Entität, die für das Routen von Synchronisations- und Replikationsmeldungen 1120 von einer AMF zu einer anderen zuständig ist. Wie in 17a gezeigt, ist nur einer von vielen ähnlichen Knoten als mit dem SAN 1130 verbunden gezeigt.
  • Die AMFs 1100 innerhalb des Knotens 1110 senden und empfangen Synchronisations- und Replikationsmeldungen mit anderen AMFs in anderen Knoten, welche dieselbe Redundanzgruppe gemeinsam nutzen. Jede AMF innerhalb des Knotens 1110 erzeugt unabhängige Ströme von Synchronisations- und Replikationsmeldungen, die alle für einen oder mehrere andere Knoten im SAN 1130 bestimmt sind. Die Meldungen, die von einer bestimmten AMF gesendet oder empfangen werden, sind unabhängig von den Meldungen, die von anderen AMFs im selben Knoten gesendet oder empfangen werden. Wie in 17a gezeigt, senden drei AMFs 1100 insgesamt neun Meldungen 1140 an AMFs in anderen Knoten. Ohne Meldungserfassung muss die ICL 1105 neun Meldungen an andere Knoten senden. Des Weiteren werden ohne Meldungserfassung alle Synchronisations- und Replikationsmeldungen, die durch alle AMFs innerhalb eine SAN-Knotens erzeugt werden, einzeln verarbeitet und über das SAN gesendet. Jede Meldung nimmt unabhängig von ihrer Größe einen festen Betrag an Verarbeitungsverwaltungsaufwand in Anspruch.
  • 17b veranschaulicht eine AMF-Kommunikation mit den Meldungserfassungstechniken der vorliegenden Erfindung. Meldungserfassung bedeutet, dass viele kleinere Meldungen, die für einen bestimmten Knoten bestimmt sind, zu einer einzelnen größeren Meldung zusammengepackt werden. Diese größere Meldung kann als eine einzelne Meldung über das SAN 1130 gesendet und dann im Empfangsknoten in einzelne Meldungen zurück entpackt werden. Zum Beispiel sind, wie gezeigt, die neun Meldungen 1120 für drei verschiedene Knoten bestimmt. In diesem Beispiel braucht dann, wenn Meldungserfassung verwendet wird, die ICL 1105 nur drei Meldungen 1150 zu senden – eine für jeden Knoten (sich selbst nicht mitgezählt). Die ICL 1105 übernimmt die Zuständigkeit für das Verpacken und Entpacken einzelner AMF-Meldungen.
  • Arbitrierung und verteilte Ressourcenarbitrierung
  • 18a veranschaulicht einen grundlegenden Arbitrierungsprozess, bei dem eine AMF eine Verriegelung für eine bestimmte Ressource anfordert, gemäß der vorliegenden Erfindung. AMF 1200 und AMF 1210 fordern jede eine Verriegelung einer bestimmten Ressource an, und die Verriegelungsanforderungen werden in eine Arbitrierungswarteschlange 1205 eingereiht. Der Arbitrierungsprozess für eine AMF beginnt, wenn eine Anforderung in die Arbitrierungswarteschlange 1205 eingereiht wird. Die Anforderungen werden in einer solchen Reihenfolge verarbeitet, dass alle Anforderungen in einer Prioritätsreihenfolge erfüllt werden. Die Anforderungswarteschlangenpriorität wird mittels eines beliebigen, einschlägig bekannten Algorithmus' (zum Beispiel FIFO, LIFO) bestimmt. Jeder anfordernde AMF muss warten, bis ihre Anforderung verarbeitet ist, um die Verriegelung zu erhalten. Jede AMF erlangt eine Verriegelung der Ressource bei erfolgreicher Vollendung des Arbitrierungsprozesses. Eine AMF kann die Ressource nicht verriegeln, wenn die Arbitrierung scheitert.
  • 18b veranschaulicht den allgemeinen Prozessablauf des verallgemeinerten Arbitrierungsprozesses gemäß der vorliegenden Erfindung. Die Arbitrierung beinhaltet das Koordinieren der Ressourcenverriegelungsübertragung zwischen zwei AMFs: der anfordernden AMF 1225 und der AMF 1230 mit der Ressourcenverriegelung. Die AMF 1225 sendet eine "Verriegelungsanforderungs"-Meldung an einen Arbitrierer 1220 (die Entität, die den Arbitrierungsprozess ausführt), der die Meldung für einen Zeitraum, der durch seinen Prioritätsalgorithmus festgelegt wird, in eine Warteschlange einreiht. Gegebenenfalls verarbeitet der Arbitrierer 1220 die Anforderung, indem er eine Verriegelungsfreigabemeldung an die AMF 1230 sendet, die momentan die Ressourcenverriegelung hat. Sobald sie einen Punkt erreicht hat, wo sie unbedenklich auf die Verwendung der Ressource verzichten kann, hebt die AMF 1230 die Verriegelung auf und informiert den Arbitrierer 1220, dass die Verriegelung aufgehoben ist. Der Arbitrierer 1220 signalisiert dann der anfordernden AMF 1225, dass ihr die Ressourcenverriegelung gewährt wurde. Die AMF 1225 behält die Verriegelung weiter bei, bis der Arbitrierer 1220 sie auffordert, die Ressource freizugeben.
  • Optimierungen der Arbitrierungswarteschlange sind möglich, wenn eine oder mehrere AMFs eine Leseverriegelung für eine bestimmte Ressource anfordern. In bevorzugten Aspekten gewährt der Arbitrierungsprozess in diesen Situationen gleichzeitig Leseverriegelungen, solange die Befehlsreihung gewahrt bleibt.
  • Eine AMF (oder ein Controller) verwaltet den Arbitrierungsprozess für eine Ressource innerhalb des Redundanzgruppenclusters. Diese AMF nennt man den Ressourcenarbitrierer. Die Zuweisung des Arbitrierers für eine bestimmte Ressource kann unter Verwendung eines beliebigen von mehreren Verfahren bewerkstelligt werden (zum Beispiel ein einziger Arbitrierer für alle Ressourcen, Lastausgleichszuweisung usw.). Die bevorzugten Verfahren für eine Arbitrierungszuweisung gemäß der vorliegenden Erfindung sind basieren auf der Anzahl der Controller und den Ressourcebereich. Für Clusterkonfigurationen mit einer oder zwei AMFs ist der zugewiesene Arbitrierer die letzte AMF mit einer Schreibverriegelung. Für Clusterkonfigurationen mit mehr als zwei AMFs basiert die Arbitriererzuweisung auf einem festen Abbildungsalgorithmus, der auf der Anzahl der AMFs und dem Ressourcenort (zum Beispiel Streifen-ID, Block-ID usw.) basiert.
  • 19 veranschaulicht einen vereinfachten Arbitrierungsprozess zwischen zwei AMFs in einer Clusterkonfiguration für eine einzelne Ressource. Die erste AMF 1300 (AMF Nr. 1) gab eine Leseverriegelungsanforderung 1320 für eine Ressource an die zweite AMF 1310 (AMF Nr. 2) aus, die momentan eine Schreibverriegelung der Ressource hat. Die AMF Nr. 2 gibt eine Verriegelungsgewährungs (Lese)-Meldung 1330 an die AMF Nr. 1 aus, die besagt, dass eine Ressourcenverriegelung gewährt wurde. Die AMF Nr. 1 hat nun Lesezugriff auf die Ressource. Die Sequenz geht weiter, wenn die AMF Nr. 1 eine Schreibverriegelungsanforderung 1340 an die AMF Nr. 2 ausgibt. Die AMF Nr. 2 antwortet mit einer Verriegelungsgewährungs (Schreib)-Meldung 1350. Die Sequenz geht weiter, wenn die AMF Nr. 1 eine Leseverriegelungsanforderung 1360 ausgibt, und da die AMF Nr. 1 bereits eine Schreibverriegelung hat, handhabt sie ihre eigene Arbitrierung und setzt die Schreibverriegelung auf eine Leseverriegelung herab. Als nächstes hat die AMF Nr. 2 in diesem Moment keine Verriegelungen an der Ressource, so dass sie nicht benachrichtigt zu werden braucht. Die AMF Nr. 2 gibt eine Leseverriegelungsanforderung 1370 an die AMF Nr. 1 aus, die sofort mit einer Verriegelungsgewährungs (Lese-) Meldung 1380 antwortet, da die Ressource mehrere Leseverriegelungen unterstützt. Für die Zwei-AMF-Clusterkonfiguration ist eine Arbitrierung mit der anderen AMF nicht erforderlich, wenn die AMF mit einer Schreibverriegelung eine Leseverriegelung anfordert. In alle anderen Fällen muss die zweite AMF die Verriegelung arbitrieren.
  • 20 veranschaulicht beispielhafte Ressourcenarbitrierungssequenzen für ein Cluster mit vier AMFs gemäß der vorliegenden Erfindung. Das bevorzugte Arbitriererzuweisungsverfahren für Cluster mit drei oder mehr AMFs besteht darin, den Arbitrierer unter Verwendung eines festen Abbildungsalgorithmus' auszuwählen. Das hat den Effekt einer permanenten Zuordnung eines Arbitrierers zu einer einzelnen AMF. Im Fall eines Scheiterns einer AMF-Ressourcenarbitrierung wird der Ressourcenarbitrierer gemäß dem Abbildungsalgorithmus neu zugewiesen.
  • Wenden wir uns 20 zu, wo zuerst die AMF 1400 (AMF Nr. 1) eine Schreibverriegelungsanforderung 1420 an den Ressource-X-Arbitrierer in der dritten AMF 1410 (AMF Nr. 3) ausgibt. Der Arbitrierer in der AMF Nr. 3 gibt eine Verriegelungsfreigabeanforderung 1422 an die zweiten AMF 1405 (AMF Nr. 2) aus, um ihre Verriegelung der Ressource X aufzuheben. Während die Verriegelungsanforderung 1420 für die Ressource X verarbeitet wird, gibt die AMF Nr. 1 eine Leseverriegelungsanforderung 1424 für die Ressource Y aus. Die vierte AMF 1415 (AMF Nr. 4) ist der zugewiesene Arbitrierer für die Ressource Y. Die AMF Nr. 4 gewährt sofort eine Leseverriegelung 1426, da keine anderen AMFs momentan eine Verriegelung haben. Als nächstes gibt die AMF Nr. 4 eine Schreibverriegelungsanforderung 1428 für die Ressource X aus, die durch den Arbitrierer in der AMF Nr. 3 in die Warteschlange eingereiht wird, da er momentan die Schreibverriegelungsanforderung 1420 verarbeitet.
  • Die AMF Nr. 2 sendet eine Verriegelungaufgehoben-Meldung 1430 an die AMF Nr. 3, die eine Verriegelungsgewährungs (Schreib)-Meldung 1432 an die AMF Nr. 1 sendet. In die Verriegelungsgewährungsmeldung 1432 ist eine Markierung eingebettet, die anzeigt, dass die AMF Nr. 1 die Verriegelung nach Beendigung aufheben soll. Diese Optimierung macht es überflüssig, dass die AMF Nr. 3 eine Verriegelungsfreigabemeldung an die AMF Nr. 1 sendet. Wenn sie mit der Ressource X fertig ist, sendet die AMF Nr. 1 eine Verriegelung-aufgehoben-Meldung 1434 an die AMF Nr. 3, die eine Verriegelungsgewährungsmeldung 1436 an die AMF Nr. 4 sendet (welche die nächste in der Warteschlange für eine Schreibverriegelung der Ressource X ist).
  • Die Sequenz, die mit der Verriegelungsanforderungs (Lese)-Meldung 1440 beginnt, zeigt einen Mehrfachleseverriegelungszustand. Mit dem Empfang der Verriegelungsgewährungs (Lese)-Meldung 1442 haben sowohl die AMF Nr. 2 als auch die AMF Nr. 1 gleichzeitig eine Leseverriegelung an der Ressource Y. Die Schreibverriegelungsanforderung 1444, die durch die AMF Nr. 3 versandt wurde, veranlasst die AMF Nr. 4, Verriegelungsfreigabemeldungen 1446 und 1448 an die AMF Nr. 2 bzw. die AMF Nr. 1 auszugeben. Das führt dazu, dass sowohl die Verriegelung-aufgehoben-Meldung 1450 als auch die Verriegelung-aufgehoben-Meldung 1852 an die AMF Nr. 4 gesendet werden. Bevor die AMF Nr. 4 der AMF Nr. 3 eine Verriegelung gewährt, sendet die AMF Nr. 1 eine Leseverriegelungsanforderungsmeldung 1454, die durch die AMF Nr. 4 in die Warteschlange eingereiht wird. Die AMF Nr. 3 empfängt die Schreibverriegelungsgewährungsmeldung 1456 für die Ressource Y, die eine Markierung enthält, die anzeigt, dass sie die Verriegelung nach Beendigung aufheben soll. Die AMF Nr. 3 gibt eine Verriegelungaufgehoben-Meldung 1458 aus, wenn sie mit der Ressource Y fertig ist. Die AMF Nr. 4 gibt dann eine Verriegelungsgewährungs (Lese)-Meldung 1460 aus, mit der die AMF Nr. 1 informiert wird, dass sie eine Leseverriegelung der Ressource Y erlangt hat.
  • Ein Nutzeffekt dieses Verfahrens zur Verriegelungsverwaltung ist, dass die Anzahl von Meldungen, die zwischen den AMFs versendet werden, nur eine Funktion der Anzahl der ausstehenden Verriegelungen ist. Sie hängt nicht von der Anzahl der AMFs in der Clusterkonfiguration ab. Wenn man das erste Verfahren, wie es zum Beispiel in 19 veranschaulicht ist, für die Zwei-Controller-Clusterkonfiguration so erweitert, dass mehr als drei Controller unterstützt werden, so führt dies dazu, dass die Anzahl der Arbitrierungsmeldungen mit der Anzahl der AMFs in der Clusterkonfiguration zunimmt. Es sind auch andere Verfahren zur Arbitrierungsoptimierung möglich, aber diese zwei Verfahren stellen die bevorzugte Ausführungsform für die vorliegende Erfindung dar.
  • Ressourcen-Prefetching
  • In der bevorzugten Ausführungsform für die vorliegende Erfindung wird die Ressourcenarbitrierung auch durch die Verwendung eines Verriegelungs-Prefetch optimiert. Eine AMF kann zusätzliche Prefetch-Ressourcen spezifizieren, wenn sie für eine Verriegelung arbitriert. Wenn alle oder einige der Prefetch-Ressourcen nicht verriegelt sind, so verriegelt der Arbitrierer sie auch für die AMF. Wenn darum die AMF die Verriegelung dieser Prefetch-Ressourcen anfordert, so kann sie (zu einem späteren Zeitpunkt) rasch die Verriegelung erhalten (weil sie sie bereits hatte).
  • 1
  • 10
    Netzwerk-Client
    20
    Server
    30
    Controller
    50
    Faserkanalgestütztes Speicherbereichsnetzwerk (SAN)
    45
    Laufwerk
  • 2
  • Kästen links
    Host-System/Controller/PCI/FC-Port
    55
    FC-Schalter
    45
    FC-Laufwerk
  • 3
  • Kasten links oben
    PCI-Bus (s)/Host-System/Controller/FC-Port
    55
    FC-Schalter
    45
    FC-Laufwerk
    Kasten links unten
    Externer Controller/FC-Port
    55
    FC-Schalter
    45
    FC-Laufwerk
  • 4
  • Kästen links
    PCI-Bus (s)/Host-System/Controller/FC-Port
    FC-Schalter
    45
    FC-Laufwerk
  • 5
  • Kästen links
    PCI-Bus (s)/Host-System/Controller/FC-Port
    55
    FC-Schalter
    45
    FC-Laufwerk
  • 6
  • 0
    Host-System/Controller/PCI/FC-Port/Redundanzgruppe/FC-Laufwerk
  • 7
  • Kasten links
    Passive PCI-Hauptplatine(n)/PCI-Bus (s)/Controller/FC-Port
    55
    FC-Schalter
    45
    FC-Laufwerk
    unten
    Server
  • 8
  • links
    Host
    60
    PCI-Host-Verbindung
    65
    FC-Host-Verbindung
    70
    Port für virtuelle Laufwerke
    75
    Virtuelles Laufwerk
    80
    Arraymanagementfunktion
    Wolke rechts
    Geräteverbindung – Faserkanal
    45
    Laufwerk
  • 9
  • 110
    Beginn der Operation
    120
    Verriegelung bereits vorhanden?
    No
    Nein
    Yes
    Ja
    130
    Arbitrieren mit AMFs für eine Ressourcenverriegelung
    140
    Ausführen der Operation an der Redundanzgruppe
    rechts
    Operation vollendet
  • 10
  • 210
    Beginn der Operation
    220
    Verriegelung bereits vorhanden?
    No
    Nein
    Yes
    Ja
    230
    Arbitrieren für eine Ressourcenverriegelung
    2401
    Replizieren der Ressource und/oder des Status'
    2501
    Operationsschritt Nr. 1
    2402
    Replizieren der Ressource und/oder des Status'
    2502
    Operationsschritt Nr. 2
    2403
    Replizieren der Ressource und/oder des Status'
    2503
    Operationsschritt Nr. 3
    240N-1
    Replizieren der Ressource und/oder des Status'
    250N-1
    Operationsschritt Nr. N-1
    240N
    Replizieren der Ressource und/oder des Status'
    250N
    Operationsschritt Nr. N
    rechts unten
    Operation vollendet
  • 11a
  • 310
    Start
    320
    Besorgen der benötigten Verriegelung
    330
    Lesen der Daten und Übertragen zum Host
    rechts
    beendet
  • 11b
  • 310
    Start
    320
    Besorgen der benötigten Verriegelung
    340
    Lesen der Daten und der Parität
    350
    Regenerieren aller fehlenden Daten
    360
    Übertragen der Daten zum Host
    rechts
    beendet
  • 12
  • 410
    Start
    420
    Analysieren des Host-Befehls
    430
    Besorgen der benötigten Verriegelung
    440
    Empfang eines oder mehrerer ankommender Host-Datenframes
    450
    Beginnen der Replikationsoperation
    460
    Alle Daten empfangen?
    470
    Warten, bis alle Replikationsoperationen vollendet sind
    480
    Senden des Status' an den Host
    No
    Nein
    Yes
    Ja
    rechts unten
    beendet
  • 13a
  • 510
    Start
    520
    Besorgen der benötigten Verriegelung
    530
    Lesen der alten Daten und/oder Parität, falls erforderlich
    540
    Bekanntgabe des Aktualisierungsbeginns
    550
    Schreiben der neuen Daten
    560
    Erzeugen einer neuen Parität
    570
    Schreiben der neuen Parität
    580
    Bekanntgabe des Aktualisierungsendes
    rechts
    beendet
  • 13b
  • 610
    Start
    620
    Arbitrieren für eine Schreibverriegelung mit anderen Replikationspartnern
    630
    Lesen der alten Daten
    640
    Bekanntgabe des Aktualisierungsbeginns
    650
    Erzeugen einer neuen Parität
    660
    Schreiben der neuen Parität
    670
    Bekanntgabe des Aktualisierungsendes
    680
    Normale Streifenaktualisierung
    rechts
    beendet
  • 14a
  • 710
    Start
    720
    Besorgen der benötigten Verriegelung
    730
    Lesen der alten Daten und/oder Parität, falls erforderlich
    740
    Bekanntgabe des Aktualisierungsbeginns
    744
    Regenerieren fehlender Daten
    746
    Replizieren alter Daten
    750
    Schreiben der neuen Daten
    760
    Erzeugen einer neuen Parität
    770
    Schreiben der neuen Parität
    780
    Bekanntgabe des Aktualisierungsendes
    rechts unten
    beendet
  • 14b
  • 810
    Start
    820
    Arbitrieren für eine Schreibverriegelung mit anderen Replikationspartnern
    830
    Erzeugen einer neuen Parität
    840
    Bekanntgabe des Aktualisierungsbeginns
    850
    Schreiben alter Daten
    860
    Bekanntgabe der Vollendung des Schreibens alter Daten
    870
    Schreiben der neuen Parität
    Bekanntgabe des Aktualisierungsendes
    890
    Normale Streifenaktualisierung
    rechts unten
    beendet
  • 15
  • 910
    Start
    920
    Besorgen der benötigten Verriegelung
    930
    Lesen der Daten und der Parität
    940
    Regenerieren fehlender Daten
    950
    Schreiben von Daten in das Ersatzlaufwerk
    960
    Aktualisieren der Abbildungstabelle und Informieren der Peers
    970
    Noch weitere Streifen zu rekonstruieren?
    Nein
    rechts unten
    beendet
  • 16
  • 1010
    Start
    1020
    Besorgen der benötigten Verriegelung(en)
    1030
    Aufrufen einer Leseoperation zum Lesen der Daten des Erweiterungsstreifens
    1045
    Aufrufen einer Leseoperation zum Lesen der Quelldaten
    1040
    Replizieren der alten Daten und Streifenkonfiguration
    1050
    Bekanntgabe des Aktualisierungsbeginns
    1055
    Berechnen der Parität für die Streifenbreite W + N
    1060
    Schreiben von Daten in die Laufwerke
    1070
    Schreiben der Parität in die Laufwerke
    1080
    Bekanntgabe des Aktualisierungsendes, Übertragen der Änderungen in die Abbildungstabelle
    1090
    Noch weitere Streifen zu erweitern?
    No
    Nein
    rechts unten
    beendet
  • 17a, 17b
  • bleiben unverändert
  • 18a
  • v.l.n.r. und v.o.n.u
    AMF/Verriegelung anfordern/Arbitrierungswarteschlange/Anforderung N, 2, 1/Verriegelung empfangen/AMF
  • 18b
  • v.l.n.r:
    1225
    AMF
    v.o.n.u
    Verriegelung anfordern/Verriegelung empfangen
    1220
    Arbitrierungsprozess
    v.o.n.u
    Verriegelung aufheben/Verriegelung aufgehoben
    1230
    AMF mit Verriegelung
  • 19
  • 1300
    AMF Nr. 1
    1310
    AMF Nr. 2
    1320
    Verriegelung anfordern (X, lesen)
    1330
    Verriegelung gewähren (X, lesen)
    1340
    Verriegelung anfordern (X, schreiben)
    1350
    Verriegelung gewähren (X, schreiben)
    1360
    Verriegelung anfordern/gewähren (X, lesen)
    1370
    Verriegelung anfordern (X, lesen)
    1380
    Verriegelung gewähren (X, lesen)
  • 20
  • 1400
    AMF Nr. 1
    1410
    AMF Nr. 3, Ressource-X-Arbitrierer
    1415
    AMF Nr. 4, Ressource-Y-Arbitrierer. Zu Anfang ist Ressource Y durch keine AMF verriegelt.
    1405
    AMF Nr. 2
    1420
    Verriegelung anfordern (X, lesen)
    1422
    Verriegelung aufheben (X, schreiben). AMF Nr. 2 hat zu Beginn eine Verriegelung für die Ressource X
    1424
    Verriegelung anfordern (Y, lesen)
    1426
    Verriegelung gewähren (Y, lesen)
    1428
    Verriegelung anfordern (X, schreiben)
    1430
    Verriegelung aufgehoben (X, schreiben)
    1432
    Verriegelung gewähren (X, schreiben)
    1434
    Verriegelung aufheben (X, schreiben)
    1436
    Verriegelung gewähren (X, schreiben)
    1440
    Verriegelung anfordern (Y, lesen)
    1442
    Verriegelung gewähren (Y, lesen)
    1444
    Verriegelung anfordern (Y, schreiben)
    1446
    Verriegelung aufheben (Y, schreiben)
    1448
    Verriegelung aufheben (Y, schreiben)
    1450
    Verriegelung aufgehoben (Y, schreiben)
    1454
    Verriegelung anfordern (Y, lesen)
    1452
    Verriegelung aufgehoben (Y, schreiben)
    1456
    Verriegelung gewähren (Y, schreiben)
    1458
    Verriegelung aufgehoben (Y, schreiben)
    1460
    Verriegelung gewähren (Y, lesen)

Claims (17)

  1. Datenspeichersystem, umfassend: eine Redundanzgruppe (40), die mehrere Ressourcen enthält; zwei oder mehr Arraymanagementfunktionen (AMFs) (80), die einen gemeinsamen Zugriff auf die Redundanzgruppe (40) nutzen, wobei die AMFs (80) einen gleichzeitigen Zugriff auf die Redundanzgruppe (40) für zugehörige Host-Systeme ermöglichen; und ein Verbindungsmedium zum Verbinden der AMFs (80) mit der Redundanzgruppe (40); wobei das System so konfiguriert ist, dass: wenn eine erste der AMFs eine Operation an einer ersten Ressource in der Redundanzgruppe (40) ausführen will, die erste AMF mit den anderen AMFs, die den Zugriff auf die Redundanzgruppe (40) gemeinsam nutzen, für eine Verriegelung der ersten Ressource arbitriert, dadurch gekennzeichnet, dass das System des Weiteren so konfiguriert ist, dass: wenn die Operation, die von der ersten AMF an der ersten Ressource ausgeführt wird, mehrere Schritte enthält, die erste AMF jeden Schritt der Operation an der Ressource ausführt und für jeden Schritt gleichzeitig Replikationsdaten und Statusinformationen, die der ersten Ressource und dem jeweiligen Schritt zugeordnet sind, an die übrigen AMFs sendet, dergestalt, dass, wenn die ersten AMF ausfällt, während sie einen der Schritte der Operation ausführt, eine der übrigen AMFs in der Lage ist, die Operation zu vollenden, und wenn die erste AMF ausfällt, während sie die Operation ausführt, eine der anderen AMFs die Operation mittels der gesendeten Replikationsdaten und Statusinformationen vollendet.
  2. Datenspeichersystem nach Anspruch 1, dadurch gekennzeichnet, dass die erste AMF die Verriegelung der ersten Ressource erst freigibt, wenn eine zweite der AMFs für eine Verriegelung der ersten Ressource arbitriert.
  3. Datenspeichersystem nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass, wenn die erste AMF ausfällt, die übrigen AMFs für eine Verriegelung der ersten Ressource arbitrieren, woraufhin eine zweite der AMFs (80) die Verriegelung erhält und die Operation vollendet.
  4. Datenspeichersystem nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass ein oder mehrere Host-Systeme mit der ersten AMF über das Verbindungsmedium, eine Internet-Verbindung oder einen PCI-Bus kommunizieren.
  5. Datenspeichersystem nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass das Verbindungsmedium eine SCSI-Schnittstelle und/oder eine Faserkanalschnittstelle und/oder ein Speicherbereichsnetzwerk (50) und/oder ein Faserkanalspeicherbereichsnetzwerk enthält.
  6. Datenspeichersystem nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass jede der AMFs (80) in einem Controller (30), einem Hostbusadapter oder einem Hostcomputer ausgeführt wird.
  7. Verfahren zur dynamischen gemeinsamen Nutzung der Verwaltung einer Redundanzgruppe (40) in einem Datenspeichersystem zwischen zwei oder mehr Arraymanagementfunktionen (AMFs) (80), wobei die AMFs (80) in der Lage sind, gleichzeitig auf die Redundanzgruppe (40) zuzugreifen, wobei die Redundanzgruppe (40) mehrere Ressourcen enthält, wobei das Verfahren die folgenden Schritte umfasst: Empfangen einer Anforderung von einem Host durch eine erste der AMFs zum Ausführen einer ersten Operation an einer ersten der Ressourcen; Arbitrieren mit den anderen AMFs zum Erwerben einer Verriegelung der ersten Ressource, so dass keine andere AMF in der Lage ist, auf die erste Ressource zuzugreifen, während die erste AMF die Verriegelung beibehält; und Ausführen der ersten Operation an der ersten Ressource; wobei die erste Operation mehrere Teiloperationen enthält, wobei der Schritt des Ausführens der ersten Operation das Ausführen jeder Teiloperation an der ersten Ressource enthält, wobei das Verfahren gekennzeichnet ist durch: das Senden von Replikationsdaten und Statusinformationen, die der ersten Ressource und dem jeweiligen Schritt zugeordnet sind, an die anderen AMFs gleichzeitig mit der Ausführung jeder Teiloperation, dergestalt, dass, wenn die erste AMF ausfällt, eine der anderen AMFs in der Lage ist, die erste Operation zu vollenden, und wenn die erste AMF ausfällt, während sie die erste Operation ausführt, Vollenden der ersten Operation mit einer zweiten der AMFs.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass die erste Operation eine Leseoperation ist, wobei das Verfahren des Weiteren folgende Schritte umfasst: Empfangen einer Anforderung von einem Host durch eine zweite der AMFs (80) zum Ausführen einer zweiten Leseoperation an der ersten Ressource; und Ausführen der zweiten Leseoperation an der ersten Ressource durch die zweite AMF gleichzeitig mit dem Ausführen der ersten Leseoperation an der ersten Ressource durch die erste AMF.
  9. Verfahren nach Anspruch 7, des Weiteren umfassend den Schritt des Freigebens der Verriegelung der ersten Ressource nur dann, wenn eine andere AMF für die Verriegelung arbitriert.
  10. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass der Schritt des Vollendens der ersten Operation den Schritt umfasst, dass die zweite AMF sich mit den anderen AMFs synchronisiert, um Zugriff auf die erste Ressource zu erlangen.
  11. Verfahren nach einem der Ansprüche 7 bis 10, das des Weiteren folgende Schritte umfasst: Empfangen einer Anforderung von einem zweiten Host durch eine zweite der AMFs zum Ausführen einer zweiten Operation an einer zweiten der Ressourcen; Synchronisieren mit der ersten AMF und den anderen AMFs, um Zugriff auf die zweite Ressource zu erlangen; und Ausführens der zweiten Operation an der zweiten Ressource.
  12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass wenigstens ein Abschnitt der zweiten Operation gleichzeitig mit der Ausführung der ersten Operation ausgeführt wird.
  13. Datenspeichersystem nach Anspruch 1, das des Weiteren wenigstens eine zweite Redundanzgruppe (40) umfasst, wobei: – jede der wenigstens einen zweiten Redundanzgruppe (40) mehrere Ressourcen enthält, die über mehrere Platten verteilt sind; – die AMFs (80) eine Redundanzgruppenverwaltung aller Redundanzgruppen (40) gemeinsam nutzen; – die AMFs (80) einen gleichzeitigen Zugriff auf alle Redundanzgruppen (40) ermöglichen; und – das Verbindungsmedium die AMFs mit allen Redundanzgruppen (40) verbindet.
  14. System nach Anspruch 13, dadurch gekennzeichnet, dass gleichzeitig mit dem Senden der Replikationsdaten und Statusinformationen die erste AMF bestimmt, ob der zweite Datensatz in eine zweite Ressource geschrieben werden soll, und wenn ja, eine Verriegelung der zweiten Ressource erwirbt, den zweiten Datensatz in die zweite Ressource schreibt und gleichzeitig eine zweite Replikationsoperation ausführt, wobei Replikationsdaten und Statusinformationen, die der zweiten Ressource zugeordnet sind, an die anderen AMFs gesendet werden, woraufhin die erste AMF wartet, bis alle Replikationsoperationen vollendet sind, bevor sie Statusinformationen an den Host sendet.
  15. System nach Anspruch 13, dadurch gekennzeichnet, dass jeder der AMFs (80) ein Mittel für das Pipelining von Replikationen ankommender Host-Daten enthält.
  16. Verfahren nach Anspruch 7, wobei die Ressourcen der Redundanzgruppe (40) über mehrere Platten (45) verteilt sind, wobei die AMFs (80) alle die Verwaltung der Redundanzgruppe (40) gemeinsam nutzen, und wobei die AMFs (80) in der Lage sind, gleichzeitig auf die Redundanzgruppe (40) zuzugreifen, wobei das Verfahren des Weiteren die folgenden Schritte umfasst: Empfangen eines Schreibbefehls durch eine erste AMF von dem Host zum Schreiben wenigstens zweier Datensätze in zwei oder mehr der Ressourcen, dergestalt, dass die Operation ein Schreiben des ersten Datensatzes in die erste Ressource ist.
  17. Verfahren nach Anspruch 16, das des Weiteren die folgenden Schritte umfasst: gleichzeitig mit dem Ausführen der ersten Replikationsoperation: das Bestimmen, ob der zweite Datensatz in eine zweite Ressource geschrieben werden soll, und wenn ja, Erlangen einer Verriegelung der zweiten Ressource; Schreiben des zweiten Datensatzes in die zweite Ressource; und gleichzeitig Ausführen einer zweiten Replikationsoperation, wobei Replikationsdaten und Statusinformationen, die der zweiten Ressource zugeordnet sind, an die anderen AMFs gesandt werden; und anschließend Senden von Statusinformationen an den Host, nachdem alle Replikationsoperationen beendet sind.
DE60034327T 1999-03-03 2000-02-08 Verfahren und systeme zur implementierung von verwaltungsfunktionen für gemeinsam genutzte plattenanordnungen Expired - Lifetime DE60034327T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US261906 1999-03-03
US09/261,906 US6148414A (en) 1998-09-24 1999-03-03 Methods and systems for implementing shared disk array management functions
PCT/US2000/003275 WO2000052576A1 (en) 1999-03-03 2000-02-08 Methods and systems for implementing shared disk array management functions

Publications (2)

Publication Number Publication Date
DE60034327D1 DE60034327D1 (de) 2007-05-24
DE60034327T2 true DE60034327T2 (de) 2008-01-03

Family

ID=22995391

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60042225T Expired - Lifetime DE60042225D1 (de) 1999-03-03 2000-02-08 Verfahren zur Implementierung verteilter Speicherplattenverwaltungsfunktionen
DE60034327T Expired - Lifetime DE60034327T2 (de) 1999-03-03 2000-02-08 Verfahren und systeme zur implementierung von verwaltungsfunktionen für gemeinsam genutzte plattenanordnungen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE60042225T Expired - Lifetime DE60042225D1 (de) 1999-03-03 2000-02-08 Verfahren zur Implementierung verteilter Speicherplattenverwaltungsfunktionen

Country Status (12)

Country Link
US (3) US6148414A (de)
EP (2) EP1796001B1 (de)
JP (1) JP2002538549A (de)
KR (1) KR20020012539A (de)
CN (1) CN100489796C (de)
AT (2) ATE359552T1 (de)
AU (1) AU3358600A (de)
CA (1) CA2363726C (de)
DE (2) DE60042225D1 (de)
NZ (1) NZ513789A (de)
TW (1) TW468107B (de)
WO (1) WO2000052576A1 (de)

Families Citing this family (243)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389312B2 (en) * 1997-04-28 2008-06-17 Emc Corporation Mirroring network data to establish virtual storage area network
JP3360719B2 (ja) * 1998-06-19 2002-12-24 日本電気株式会社 ディスクアレイクラスタリング通報方法およびシステム
US6148414A (en) * 1998-09-24 2000-11-14 Seek Systems, Inc. Methods and systems for implementing shared disk array management functions
JP2000187561A (ja) * 1998-12-24 2000-07-04 Hitachi Ltd 記憶装置システム
JP4294142B2 (ja) 1999-02-02 2009-07-08 株式会社日立製作所 ディスクサブシステム
US6397350B1 (en) * 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US7266706B2 (en) * 1999-03-03 2007-09-04 Yottayotta, Inc. Methods and systems for implementing shared disk array management functions
US6449731B1 (en) * 1999-03-03 2002-09-10 Tricord Systems, Inc. Self-healing computer system storage
US6400730B1 (en) * 1999-03-10 2002-06-04 Nishan Systems, Inc. Method and apparatus for transferring data between IP network devices and SCSI and fibre channel devices over an IP network
IE20000203A1 (en) * 1999-03-25 2001-02-21 Converge Net Technologies Inc Storage domain management system
US6446141B1 (en) 1999-03-25 2002-09-03 Dell Products, L.P. Storage server system including ranking of data source
US6553408B1 (en) * 1999-03-25 2003-04-22 Dell Products L.P. Virtual device architecture having memory for storing lists of driver modules
US6654830B1 (en) 1999-03-25 2003-11-25 Dell Products L.P. Method and system for managing data migration for a storage system
US6640278B1 (en) * 1999-03-25 2003-10-28 Dell Products L.P. Method for configuration and management of storage resources in a storage network
US6341328B1 (en) * 1999-04-20 2002-01-22 Lucent Technologies, Inc. Method and apparatus for using multiple co-dependent DMA controllers to provide a single set of read and write commands
JP4461511B2 (ja) * 1999-06-09 2010-05-12 株式会社日立製作所 ディスクアレイ装置及びディスク装置へのデータ読み出し/書き込み方式
US6519679B2 (en) * 1999-06-11 2003-02-11 Dell Usa, L.P. Policy based storage configuration
JP2001034427A (ja) * 1999-07-23 2001-02-09 Fujitsu Ltd デバイス制御装置及び制御方法
US6961749B1 (en) * 1999-08-25 2005-11-01 Network Appliance, Inc. Scalable file server with highly available pairs
US6499058B1 (en) * 1999-09-09 2002-12-24 Motokazu Hozumi File shared apparatus and its method file processing apparatus and its method recording medium in which file shared program is recorded and recording medium in which file processing program is recorded
US6343324B1 (en) * 1999-09-13 2002-01-29 International Business Machines Corporation Method and system for controlling access share storage devices in a network environment by configuring host-to-volume mapping data structures in the controller memory for granting and denying access to the devices
US8165146B1 (en) 1999-10-28 2012-04-24 Lightwaves Systems Inc. System and method for storing/caching, searching for, and accessing data
US6944654B1 (en) * 1999-11-01 2005-09-13 Emc Corporation Multiple storage array control
US6351776B1 (en) * 1999-11-04 2002-02-26 Xdrive, Inc. Shared internet storage resource, user interface system, and method
US20100185614A1 (en) 1999-11-04 2010-07-22 O'brien Brett Shared Internet storage resource, user interface system, and method
US6721900B1 (en) * 1999-12-22 2004-04-13 Rockwell Automation Technologies, Inc. Safety network for industrial controller having reduced bandwidth requirements
US6834326B1 (en) * 2000-02-04 2004-12-21 3Com Corporation RAID method and device with network protocol between controller and storage devices
US6772270B1 (en) 2000-02-10 2004-08-03 Vicom Systems, Inc. Multi-port fibre channel controller
US6877044B2 (en) 2000-02-10 2005-04-05 Vicom Systems, Inc. Distributed storage management platform architecture
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
AU2001287250A1 (en) * 2000-03-22 2001-10-03 Yotta Yotta, Inc. Method and system for providing multimedia information on demand over wide area networks
US6490659B1 (en) * 2000-03-31 2002-12-03 International Business Machines Corporation Warm start cache recovery in a dual active controller with cache coherency using stripe locks for implied storage volume reservations
US6754718B1 (en) 2000-05-10 2004-06-22 Emc Corporation Pushing attribute information to storage devices for network topology access
US6950871B1 (en) * 2000-06-29 2005-09-27 Hitachi, Ltd. Computer system having a storage area network and method of handling data in the computer system
US7281032B2 (en) * 2000-06-30 2007-10-09 Hitachi, Ltd. File sharing system with data mirroring by storage systems
US6820171B1 (en) * 2000-06-30 2004-11-16 Lsi Logic Corporation Methods and structures for an extensible RAID storage architecture
US7188157B1 (en) * 2000-06-30 2007-03-06 Hitachi, Ltd. Continuous update of data in a data server system
US6625747B1 (en) * 2000-06-30 2003-09-23 Dell Products L.P. Computer storage system and failover method
US6928470B1 (en) * 2000-07-31 2005-08-09 Western Digital Ventures, Inc. Transferring scheduling data from a plurality of disk storage devices to a network switch before transferring data associated with scheduled requests between the network switch and a plurality of host initiators
WO2002015018A1 (en) * 2000-08-11 2002-02-21 3Ware, Inc. Architecture for providing block-level storage access over a computer network
US6603625B1 (en) * 2000-09-11 2003-08-05 Western Digital Technologies, Inc. Spindle synchronizing a plurality of spindles connected to a multi-dimensional computer network
US6810491B1 (en) * 2000-10-12 2004-10-26 Hitachi America, Ltd. Method and apparatus for the takeover of primary volume in multiple volume mirroring
US6721902B1 (en) * 2000-10-12 2004-04-13 Hewlett-Packard Development Company, L.P. Method and system for providing LUN-based backup reliability via LUN-based locking
US6901451B1 (en) * 2000-10-31 2005-05-31 Fujitsu Limited PCI bridge over network
US6671773B2 (en) * 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
US6857059B2 (en) * 2001-01-11 2005-02-15 Yottayotta, Inc. Storage virtualization system and methods
US6907457B2 (en) * 2001-01-25 2005-06-14 Dell Inc. Architecture for access to embedded files using a SAN intermediate device
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20020156974A1 (en) * 2001-01-29 2002-10-24 Ulrich Thomas R. Redundant dynamically distributed file system
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US20020191311A1 (en) * 2001-01-29 2002-12-19 Ulrich Thomas R. Dynamically scalable disk array
US6904544B2 (en) * 2001-01-30 2005-06-07 Sun Microsystems, Inc. Method, system, program, and data structures for testing a network system including input/output devices
WO2002065298A1 (en) * 2001-02-13 2002-08-22 Candera, Inc. Silicon-based storage virtualization server
IES20010611A2 (en) * 2001-03-08 2002-09-18 Richmount Computers Ltd Distributed lock management chip
US8766773B2 (en) * 2001-03-20 2014-07-01 Lightwaves Systems, Inc. Ultra wideband radio frequency identification system, method, and apparatus
US8270452B2 (en) * 2002-04-30 2012-09-18 Lightwaves Systems, Inc. Method and apparatus for multi-band UWB communications
US7545868B2 (en) * 2001-03-20 2009-06-09 Lightwaves Systems, Inc. High bandwidth data transport system
US7533132B2 (en) * 2001-03-21 2009-05-12 Sap Ag Parallel replication mechanism for state information produced by serialized processing
US7231430B2 (en) * 2001-04-20 2007-06-12 Egenera, Inc. Reconfigurable, virtual processing system, cluster, network and method
US7017107B2 (en) * 2001-04-30 2006-03-21 Sun Microsystems, Inc. Storage array employing scrubbing operations at the disk-controller level
US7062704B2 (en) * 2001-04-30 2006-06-13 Sun Microsystems, Inc. Storage array employing scrubbing operations using multiple levels of checksums
US6839815B2 (en) * 2001-05-07 2005-01-04 Hitachi, Ltd. System and method for storage on demand service in a global SAN environment
US6915397B2 (en) 2001-06-01 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for generating point in time storage copy
US6757753B1 (en) 2001-06-06 2004-06-29 Lsi Logic Corporation Uniform routing of storage access requests through redundant array controllers
JP4232357B2 (ja) * 2001-06-14 2009-03-04 株式会社日立製作所 計算機システム
JP4175788B2 (ja) 2001-07-05 2008-11-05 株式会社日立製作所 ボリューム制御装置
US7076510B2 (en) * 2001-07-12 2006-07-11 Brown William P Software raid methods and apparatuses including server usage based write delegation
US7239642B1 (en) 2001-07-16 2007-07-03 Network Appliance, Inc. Multi-protocol network interface card
US7289499B1 (en) * 2001-07-16 2007-10-30 Network Appliance, Inc. Integrated system and method for controlling telecommunication network data communicated over a local area network and storage data communicated over a storage area network
US7404206B2 (en) * 2001-07-17 2008-07-22 Yottayotta, Inc. Network security devices and methods
US7127565B2 (en) * 2001-08-20 2006-10-24 Spinnaker Networks, Inc. Method and system for safely arbitrating disk drive ownership using a timestamp voting algorithm
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US7330892B2 (en) * 2001-09-07 2008-02-12 Network Appliance, Inc. High-speed data transfer in a storage virtualization controller
US7472231B1 (en) 2001-09-07 2008-12-30 Netapp, Inc. Storage area network data cache
US20030055932A1 (en) * 2001-09-19 2003-03-20 Dell Products L.P. System and method for configuring a storage area network
US6976134B1 (en) 2001-09-28 2005-12-13 Emc Corporation Pooling and provisioning storage resources in a storage network
US7421509B2 (en) * 2001-09-28 2008-09-02 Emc Corporation Enforcing quality of service in a storage network
US20030079018A1 (en) * 2001-09-28 2003-04-24 Lolayekar Santosh C. Load balancing in a storage network
US7185062B2 (en) * 2001-09-28 2007-02-27 Emc Corporation Switch-based storage services
US7558264B1 (en) 2001-09-28 2009-07-07 Emc Corporation Packet classification in a storage system
US7707304B1 (en) 2001-09-28 2010-04-27 Emc Corporation Storage switch for storage area network
US7864758B1 (en) 2001-09-28 2011-01-04 Emc Corporation Virtualization in a storage system
US7404000B2 (en) * 2001-09-28 2008-07-22 Emc Corporation Protocol translation in a storage system
US7499986B2 (en) 2001-10-04 2009-03-03 International Business Machines Corporation Storage area network methods with event notification conflict resolution
US6996670B2 (en) * 2001-10-05 2006-02-07 International Business Machines Corporation Storage area network methods and apparatus with file system extension
US20030154271A1 (en) * 2001-10-05 2003-08-14 Baldwin Duane Mark Storage area network methods and apparatus with centralized management
US20030149762A1 (en) * 2001-10-05 2003-08-07 Knight Gregory John Storage area network methods and apparatus with history maintenance and removal
US20030109679A1 (en) * 2001-10-10 2003-06-12 Green Brent Everett Flax protein isolate and production
US6880101B2 (en) * 2001-10-12 2005-04-12 Dell Products L.P. System and method for providing automatic data restoration after a storage device failure
US6545872B1 (en) 2001-10-12 2003-04-08 Compaq Information Technologies Group, L.P. Heat sink for edge connectors
US6912599B2 (en) * 2001-10-19 2005-06-28 Hewlett-Packard Development Company, L.P. Method and apparatus for sensing positions of device enclosures within multi-shelf cabinets
US6920511B2 (en) * 2001-10-19 2005-07-19 Hewlett-Packard Development Company, L.P. Method and apparatus for controlling communications in data storage complexes
US6889345B2 (en) * 2001-10-19 2005-05-03 Hewlett-Packard Development Company, Lp. System and method for locating a failed storage device in a data storage system
US6988136B2 (en) * 2001-10-19 2006-01-17 Hewlett-Packard Development Company, L.P. Unified management system and method for multi-cabinet data storage complexes
US8046469B2 (en) * 2001-10-22 2011-10-25 Hewlett-Packard Development Company, L.P. System and method for interfacing with virtual storage
US6895467B2 (en) 2001-10-22 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for atomizing storage
US6931487B2 (en) * 2001-10-22 2005-08-16 Hewlett-Packard Development Company L.P. High performance multi-controller processing
US6883065B1 (en) * 2001-11-15 2005-04-19 Xiotech Corporation System and method for a redundant communication channel via storage area network back-end
US7194656B2 (en) * 2001-11-28 2007-03-20 Yottayotta Inc. Systems and methods for implementing content sensitive routing over a wide area network (WAN)
JP2003162377A (ja) * 2001-11-28 2003-06-06 Hitachi Ltd ディスクアレイシステム及びコントローラ間での論理ユニットの引き継ぎ方法
US6732201B2 (en) * 2001-12-17 2004-05-04 Lsi Logic Corporation Hardware speed selection behind a disk array controller
US7159080B1 (en) * 2001-12-20 2007-01-02 Network Appliance, Inc. System and method for storing storage operating system data in switch ports
US7296068B1 (en) 2001-12-21 2007-11-13 Network Appliance, Inc. System and method for transfering volume ownership in net-worked storage
US7650412B2 (en) 2001-12-21 2010-01-19 Netapp, Inc. Systems and method of implementing disk ownership in networked storage
US7548975B2 (en) * 2002-01-09 2009-06-16 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network through a virtual enclosure
US7093043B2 (en) 2001-12-27 2006-08-15 Hewlett-Packard Development Company, L.P. Data array having redundancy messaging between array controllers over the host bus
EP1429249A3 (de) * 2002-01-04 2009-09-09 Egenera, Inc. Virtuelles Vernetzungssystem und Verfahren in einem Verarbeitungssystem
US7281044B2 (en) * 2002-01-10 2007-10-09 Hitachi, Ltd. SAN infrastructure on demand service system
US20030140128A1 (en) * 2002-01-18 2003-07-24 Dell Products L.P. System and method for validating a network
US6947981B2 (en) * 2002-03-26 2005-09-20 Hewlett-Packard Development Company, L.P. Flexible data replication mechanism
US6880052B2 (en) * 2002-03-26 2005-04-12 Hewlett-Packard Development Company, Lp Storage area network, data replication and storage controller, and method for replicating data using virtualized volumes
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
US8051197B2 (en) 2002-03-29 2011-11-01 Brocade Communications Systems, Inc. Network congestion management systems and methods
US20040006636A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Optimized digital media delivery engine
US7899924B2 (en) * 2002-04-19 2011-03-01 Oesterreicher Richard T Flexible streaming hardware
US20040006635A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Hybrid streaming platform
US7447778B2 (en) * 2002-05-06 2008-11-04 Qlogic, Corporation System and method for a shared I/O subsystem
US7356608B2 (en) * 2002-05-06 2008-04-08 Qlogic, Corporation System and method for implementing LAN within shared I/O subsystem
US7328284B2 (en) * 2002-05-06 2008-02-05 Qlogic, Corporation Dynamic configuration of network data flow using a shared I/O subsystem
US7404012B2 (en) * 2002-05-06 2008-07-22 Qlogic, Corporation System and method for dynamic link aggregation in a shared I/O subsystem
JP2003330782A (ja) * 2002-05-10 2003-11-21 Hitachi Ltd 計算機システム
US7010528B2 (en) * 2002-05-23 2006-03-07 International Business Machines Corporation Mechanism for running parallel application programs on metadata controller nodes
US7448077B2 (en) * 2002-05-23 2008-11-04 International Business Machines Corporation File level security for a metadata controller in a storage area network
US8140622B2 (en) 2002-05-23 2012-03-20 International Business Machines Corporation Parallel metadata service in storage area network environment
US6732171B2 (en) * 2002-05-31 2004-05-04 Lefthand Networks, Inc. Distributed network storage system with virtualization
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
GB0214669D0 (en) * 2002-06-26 2002-08-07 Ibm Method for maintaining data access during failure of a controller
US20040024807A1 (en) * 2002-07-31 2004-02-05 Microsoft Corporation Asynchronous updates of weakly consistent distributed state information
US6928509B2 (en) * 2002-08-01 2005-08-09 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices
US7308604B2 (en) * 2002-08-02 2007-12-11 Thomson Licensing Real-time fail-over recovery for a media area network
US7418702B2 (en) * 2002-08-06 2008-08-26 Sheng (Ted) Tai Tsao Concurrent web based multi-task support for control management system
US7283560B1 (en) 2002-08-08 2007-10-16 Vicom Systems, Inc. Method and apparatus for address translation between fibre channel addresses and SCSI addresses
US7571206B2 (en) * 2002-08-12 2009-08-04 Equallogic, Inc. Transparent request routing for a partitioned application service
US7134044B2 (en) * 2002-08-16 2006-11-07 International Business Machines Corporation Method, system, and program for providing a mirror copy of data
JP2004086721A (ja) * 2002-08-28 2004-03-18 Nec Corp データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム
US8805918B1 (en) 2002-09-11 2014-08-12 Cisco Technology, Inc. Methods and apparatus for implementing exchange management for virtualization of storage within a storage area network
US20040085908A1 (en) * 2002-10-31 2004-05-06 Brocade Communications Systems, Inc. Method and apparatus for managing locking of resources in a cluster by use of a network fabric
US7461146B2 (en) * 2003-01-20 2008-12-02 Equallogic, Inc. Adaptive storage block data distribution
US7627650B2 (en) * 2003-01-20 2009-12-01 Equallogic, Inc. Short-cut response for distributed services
US7937551B2 (en) * 2003-01-21 2011-05-03 Dell Products L.P. Storage systems having differentiated storage pools
US20040210724A1 (en) * 2003-01-21 2004-10-21 Equallogic Inc. Block data migration
US8037264B2 (en) 2003-01-21 2011-10-11 Dell Products, L.P. Distributed snapshot process
US7127577B2 (en) * 2003-01-21 2006-10-24 Equallogic Inc. Distributed snapshot process
US8499086B2 (en) * 2003-01-21 2013-07-30 Dell Products L.P. Client load distribution
US7181574B1 (en) * 2003-01-30 2007-02-20 Veritas Operating Corporation Server cluster using informed prefetching
US20040181707A1 (en) * 2003-03-11 2004-09-16 Hitachi, Ltd. Method and apparatus for seamless management for disaster recovery
US7817583B2 (en) * 2003-04-28 2010-10-19 Hewlett-Packard Development Company, L.P. Method for verifying a storage area network configuration
JP2005157825A (ja) * 2003-11-27 2005-06-16 Hitachi Ltd 障害復旧機能を有する計算機システム、および、障害復旧方法
JP2005004350A (ja) * 2003-06-10 2005-01-06 Sony Ericsson Mobilecommunications Japan Inc リソース管理方法及び装置、リソース管理プログラム、記憶媒体
US7065589B2 (en) * 2003-06-23 2006-06-20 Hitachi, Ltd. Three data center remote copy system with journaling
US20050015655A1 (en) * 2003-06-30 2005-01-20 Clayton Michele M. Intermediate station
US7379974B2 (en) * 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
US6939701B2 (en) 2003-08-08 2005-09-06 Novozymes, Inc. Polypeptides having oxaloacetate hydrolase activity and nucleic acids encoding same
JP4313650B2 (ja) * 2003-11-07 2009-08-12 株式会社日立製作所 ファイルサーバ、冗長度回復方法、プログラム及び記録媒体
US7934023B2 (en) 2003-12-01 2011-04-26 Cisco Technology, Inc. Apparatus and method for performing fast fibre channel write operations over relatively high latency networks
US7446433B2 (en) * 2004-01-23 2008-11-04 American Power Conversion Corporation Methods and apparatus for providing uninterruptible power
CN100452673C (zh) * 2004-02-16 2009-01-14 上海欣国信息技术有限公司 数字话务台
JP2005275829A (ja) * 2004-03-25 2005-10-06 Hitachi Ltd ストレージシステム
US7529291B2 (en) * 2004-04-13 2009-05-05 Raytheon Company Methods and structures for rapid code acquisition in spread spectrum communications
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US20050289143A1 (en) * 2004-06-23 2005-12-29 Exanet Ltd. Method for managing lock resources in a distributed storage system
JP2008506195A (ja) * 2004-07-07 2008-02-28 ヨッタヨッタ インコーポレイテッド 分散キャッシュ・コヒーレンスを提供するシステムおよび方法
JP4663718B2 (ja) * 2004-07-21 2011-04-06 ビーチ・アンリミテッド・エルエルシー ブロックマップキャッシングおよびvfsスタック可能なファイルシステムモジュールに基づく分散型のストレージアーキテクチャ
US7412545B2 (en) * 2004-07-22 2008-08-12 International Business Machines Corporation Apparatus and method for updating I/O capability of a logically-partitioned computer system
US20060146780A1 (en) * 2004-07-23 2006-07-06 Jaques Paves Trickmodes and speed transitions
US7240155B2 (en) * 2004-09-30 2007-07-03 International Business Machines Corporation Decision mechanisms for adapting RAID operation placement
US7529967B2 (en) * 2004-11-04 2009-05-05 Rackable Systems Inc. Method and system for network storage device failure protection and recovery
US7535832B2 (en) * 2004-11-22 2009-05-19 International Business Machines Corporation Apparatus and method to set the signaling rate of a switch domain disposed within an information storage and retrieval system
US9495263B2 (en) * 2004-12-21 2016-11-15 Infortrend Technology, Inc. Redundant SAS storage virtualization subsystem and system using the same, and method therefor
JP4563794B2 (ja) * 2004-12-28 2010-10-13 株式会社日立製作所 ストレージシステム及びストレージ管理方法
CN100373354C (zh) * 2005-01-20 2008-03-05 英业达股份有限公司 识别磁盘高速缓存内容有效性的资料存取方法
US7401260B2 (en) * 2005-01-28 2008-07-15 International Business Machines Corporation Apparatus, system, and method for performing storage device maintenance
US7535917B1 (en) 2005-02-22 2009-05-19 Netapp, Inc. Multi-protocol network adapter
JP4815825B2 (ja) * 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
US7676688B1 (en) * 2005-03-16 2010-03-09 Symantec Corporation Concurrent data broadcast of selected common groups of data blocks
US7600214B2 (en) * 2005-04-18 2009-10-06 Broadcom Corporation Use of metadata for seamless updates
EP1913482A4 (de) * 2005-07-14 2010-08-25 Emc Corp Erhalt der schreibreihenfolgetreue in einem system mit mehreren schreibern
US8819088B2 (en) * 2005-07-14 2014-08-26 International Business Machines Corporation Implementing storage management functions using a data store system
CN100405313C (zh) * 2005-07-22 2008-07-23 鸿富锦精密工业(深圳)有限公司 链接控制卡测试系统及方法
US7502957B2 (en) * 2005-09-09 2009-03-10 International Business Machines Corporation Method and system to execute recovery in non-homogeneous multi processor environments
US8396966B2 (en) * 2005-10-26 2013-03-12 Hewlett-Packard Development Company, L.P. Method and an apparatus for creating visual representations of farms that enables connecting farms securely
US8347010B1 (en) * 2005-12-02 2013-01-01 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US9118698B1 (en) 2005-12-02 2015-08-25 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US8275949B2 (en) * 2005-12-13 2012-09-25 International Business Machines Corporation System support storage and computer system
US8156195B2 (en) 2006-02-14 2012-04-10 Emc Corporation Systems and methods for obtaining ultra-high data availability and geographic disaster tolerance
US7676702B2 (en) * 2006-08-14 2010-03-09 International Business Machines Corporation Preemptive data protection for copy services in storage systems and applications
JP5179031B2 (ja) * 2006-09-13 2013-04-10 株式会社日立製作所 空きポートを有効に活用したストレージシステム
US20080181243A1 (en) * 2006-12-15 2008-07-31 Brocade Communications Systems, Inc. Ethernet forwarding in high performance fabrics
US20080159277A1 (en) * 2006-12-15 2008-07-03 Brocade Communications Systems, Inc. Ethernet over fibre channel
US7882393B2 (en) * 2007-03-28 2011-02-01 International Business Machines Corporation In-band problem log data collection between a host system and a storage system
US7779308B2 (en) * 2007-06-21 2010-08-17 International Business Machines Corporation Error processing across multiple initiator network
US8892942B2 (en) * 2007-07-27 2014-11-18 Hewlett-Packard Development Company, L.P. Rank sparing system and method
US20090060503A1 (en) * 2007-09-05 2009-03-05 Nec Laboratories America, Inc. Storage over optical/wireless integrated broadband access network (soba) architecture
US8583780B2 (en) * 2007-11-20 2013-11-12 Brocade Communications Systems, Inc. Discovery of duplicate address in a network by reviewing discovery frames received at a port
US8108454B2 (en) * 2007-12-17 2012-01-31 Brocade Communications Systems, Inc. Address assignment in Fibre Channel over Ethernet environments
JP5072692B2 (ja) * 2008-04-07 2012-11-14 株式会社日立製作所 複数のストレージシステムモジュールを備えたストレージシステム
US8347182B2 (en) * 2008-07-01 2013-01-01 International Business Machines Corporation Ensuring data consistency
US20100043006A1 (en) * 2008-08-13 2010-02-18 Egenera, Inc. Systems and methods for a configurable deployment platform with virtualization of processing resource specific persistent settings
US20100083268A1 (en) * 2008-09-29 2010-04-01 Morris Robert P Method And System For Managing Access To A Resource By A Process Processing A Media Stream
US8086911B1 (en) * 2008-10-29 2011-12-27 Netapp, Inc. Method and apparatus for distributed reconstruct in a raid system
US7882389B2 (en) * 2008-11-18 2011-02-01 International Business Machines Corporation Dynamic reassignment of devices attached to redundant controllers
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8848575B2 (en) 2009-02-23 2014-09-30 Brocade Communications Systems, Inc. High availability and multipathing for fibre channel over ethernet
US8719829B2 (en) * 2009-03-09 2014-05-06 International Business Machines Corporation Synchronizing processes in a computing resource by locking a resource for a process at a predicted time slot
US20100293145A1 (en) * 2009-05-15 2010-11-18 Hewlett-Packard Development Company, L.P. Method of Selective Replication in a Storage Area Network
US8074003B1 (en) * 2009-12-28 2011-12-06 Emc Corporation Host-based storage controller providing block devices in geographically distributed storage
CN102209097A (zh) * 2010-03-31 2011-10-05 英业达股份有限公司 储存局域网络的储存资源的调配系统
US8738724B2 (en) 2010-05-25 2014-05-27 Microsoft Corporation Totally ordered log on appendable storage
WO2012020505A1 (ja) * 2010-08-13 2012-02-16 富士通株式会社 メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法
CN102129400B (zh) * 2010-12-29 2013-12-04 华为数字技术(成都)有限公司 存储系统连接配置方法、设备及其存储系统
JP2015507407A (ja) * 2011-12-28 2015-03-05 インテル コーポレイション ビデオエンコーディングシステムにおける集積メタデータ挿入システム及び方法
CN103838515B (zh) * 2012-11-23 2016-08-03 中国科学院声学研究所 一种服务器集群访问调度多控制器磁盘阵列的方法及系统
JP6301318B2 (ja) 2012-12-28 2018-03-28 華為技術有限公司Huawei Technologies Co.,Ltd. 分散ストレージシステムのためのキャッシュ処理方法、ノード及びコンピュータ可読媒体
CN103701925B (zh) * 2013-12-31 2017-04-05 北京网康科技有限公司 资源同步管控方法
US9547448B2 (en) * 2014-02-24 2017-01-17 Netapp, Inc. System and method for transposed storage in raid arrays
US10455019B2 (en) * 2014-09-10 2019-10-22 Oracle International Corporation Highly performant reliable message storage using in-memory replication technology
US9853873B2 (en) 2015-01-10 2017-12-26 Cisco Technology, Inc. Diagnosis and throughput measurement of fibre channel ports in a storage area network environment
US9900250B2 (en) 2015-03-26 2018-02-20 Cisco Technology, Inc. Scalable handling of BGP route information in VXLAN with EVPN control plane
US10222986B2 (en) 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US11588783B2 (en) 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
US10778765B2 (en) 2015-07-15 2020-09-15 Cisco Technology, Inc. Bid/ask protocol in scale-out NVMe storage
US9892075B2 (en) 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
CN105677499B (zh) * 2015-12-29 2018-10-12 曙光信息产业(北京)有限公司 基于硬件的超时管理平台
CN105786656B (zh) * 2016-02-17 2019-08-13 中科院成都信息技术股份有限公司 基于随机矩阵的独立磁盘冗余阵列容灾存储方法
US10331353B2 (en) 2016-04-08 2019-06-25 Branislav Radovanovic Scalable data access system and methods of eliminating controller bottlenecks
US10140172B2 (en) 2016-05-18 2018-11-27 Cisco Technology, Inc. Network-aware storage repairs
US20170351639A1 (en) 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
US10664169B2 (en) 2016-06-24 2020-05-26 Cisco Technology, Inc. Performance of object storage system by reconfiguring storage devices based on latency that includes identifying a number of fragments that has a particular storage device as its primary storage device and another number of fragments that has said particular storage device as its replica storage device
US11563695B2 (en) 2016-08-29 2023-01-24 Cisco Technology, Inc. Queue protection using a shared global memory reserve
CN106527978B (zh) * 2016-10-19 2019-07-09 华中科技大学 一种基于环状虚拟双控的多控制器实现方法
US10545914B2 (en) 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10713203B2 (en) 2017-02-28 2020-07-14 Cisco Technology, Inc. Dynamic partition of PCIe disk arrays based on software configuration / policy distribution
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
CN109089255B (zh) * 2017-06-14 2022-01-25 中国移动通信有限公司研究院 用户位置通知控制方法、装置、系统、设备及存储介质
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table
US10942666B2 (en) 2017-10-13 2021-03-09 Cisco Technology, Inc. Using network device replication in distributed storage clusters

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671436A (en) 1991-08-21 1997-09-23 Norand Corporation Versatile RF data capture system
WO1993018456A1 (en) * 1992-03-13 1993-09-16 Emc Corporation Multiple controller sharing in a redundant storage array
US5459857A (en) * 1992-05-15 1995-10-17 Storage Technology Corporation Fault tolerant disk array data storage subsystem
US5611049A (en) 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US5758058A (en) * 1993-03-31 1998-05-26 Intel Corporation Apparatus and method for initializing a master/checker fault detecting microprocessor
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
US5694581A (en) * 1993-09-07 1997-12-02 Industrial Technology Research Institute Concurrent disk array management system implemented with CPU executable extension
TW252248B (en) 1994-08-23 1995-07-21 Ibm A semiconductor memory based server for providing multimedia information on demand over wide area networks
US6085234A (en) 1994-11-28 2000-07-04 Inca Technology, Inc. Remote file services network-infrastructure cache
US5657468A (en) 1995-08-17 1997-08-12 Ambex Technologies, Inc. Method and apparatus for improving performance in a reduntant array of independent disks
US5875456A (en) 1995-08-17 1999-02-23 Nstor Corporation Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array
US5826001A (en) * 1995-10-13 1998-10-20 Digital Equipment Corporation Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
JP2848300B2 (ja) * 1995-12-27 1999-01-20 日本電気株式会社 不揮発性半導体記憶装置
US6073218A (en) * 1996-12-23 2000-06-06 Lsi Logic Corp. Methods and apparatus for coordinating shared multiple raid controller access to common storage devices
JPH10289524A (ja) * 1997-04-11 1998-10-27 Sony Corp 記録媒体駆動装置
US6151297A (en) 1997-07-08 2000-11-21 Hewlett-Packard Company Method and system for link level server/switch trunking
US6049833A (en) 1997-08-29 2000-04-11 Cisco Technology, Inc. Mapping SNA session flow control to TCP flow control
US6216173B1 (en) 1998-02-03 2001-04-10 Redbox Technologies Limited Method and apparatus for content processing and routing
US6138247A (en) * 1998-05-14 2000-10-24 Motorola, Inc. Method for switching between multiple system processors
US6243829B1 (en) * 1998-05-27 2001-06-05 Hewlett-Packard Company Memory controller supporting redundant synchronous memories
US6148414A (en) * 1998-09-24 2000-11-14 Seek Systems, Inc. Methods and systems for implementing shared disk array management functions
US6405219B2 (en) 1999-06-22 2002-06-11 F5 Networks, Inc. Method and system for automatically updating the version of a set of files stored on content servers
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
AU2001287250A1 (en) 2000-03-22 2001-10-03 Yotta Yotta, Inc. Method and system for providing multimedia information on demand over wide area networks
US8281022B1 (en) 2000-06-30 2012-10-02 Emc Corporation Method and apparatus for implementing high-performance, scaleable data processing and storage systems
US6658478B1 (en) 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system

Also Published As

Publication number Publication date
CA2363726A1 (en) 2000-09-08
KR20020012539A (ko) 2002-02-16
CA2363726C (en) 2010-06-29
AU3358600A (en) 2000-09-21
US20060005076A1 (en) 2006-01-05
US6148414A (en) 2000-11-14
DE60034327D1 (de) 2007-05-24
EP1796001B1 (de) 2009-05-13
EP1796001A3 (de) 2007-06-27
JP2002538549A (ja) 2002-11-12
EP1171820A4 (de) 2005-06-15
NZ513789A (en) 2003-10-31
DE60042225D1 (de) 2009-06-25
US7246260B2 (en) 2007-07-17
EP1171820A1 (de) 2002-01-16
CN100489796C (zh) 2009-05-20
EP1796001A2 (de) 2007-06-13
WO2000052576A1 (en) 2000-09-08
US6912668B1 (en) 2005-06-28
ATE431589T1 (de) 2009-05-15
EP1171820B1 (de) 2007-04-11
TW468107B (en) 2001-12-11
CN1350674A (zh) 2002-05-22
ATE359552T1 (de) 2007-05-15
WO2000052576A9 (en) 2001-08-30

Similar Documents

Publication Publication Date Title
DE60034327T2 (de) Verfahren und systeme zur implementierung von verwaltungsfunktionen für gemeinsam genutzte plattenanordnungen
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE60008021T2 (de) Speicherverwaltungssystem mit gemeinsamen trägerverwalter
DE69636663T2 (de) System und Verfahren zur Zugriffsverteilung von Mehrfachspeichermatrixen zwischen Mehrfachwirtrechnersystemen
DE69632424T2 (de) Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
DE10014448B4 (de) Speicherverwaltungssystem
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE112006001590B4 (de) Vorrichtung, Verfahren und System zur Datenverarbeitung auf Transportschichtebene
DE112014006605B4 (de) Speichersystem
DE69833914T2 (de) Architektur eines Multiprozessorrechners mit mehreren Betriebssysteminstanzen und softwaregesteuerter Betriebsmittelzuteilung
DE112013006549T5 (de) Computersystem und Datensteuerverfahren
DE112014006156B4 (de) Speichersystem und Datenmigrationsverfahren
DE60216602T2 (de) Verfahren und vorrichtung zum zugang zu magnetbandeinrichtungen in einem rechnersystem
DE112013006643B4 (de) Speichersystem und steuerungsverfahren für speichersystem
DE69937715T2 (de) Verbessertes Zwei-Phasen-Bindungsprotokoll
DE112011104419T5 (de) Bereichsmigration für gepaarte Speicherung
DE112010003837T5 (de) Verbundfamilien für eine Verbundauswahl und eine Kooperative Replikation
DE102004027672A1 (de) Speicherplattenarraysystem
DE2917441A1 (de) Multiprozessoranlage
DE19515661C2 (de) Halbleiter-Plattenvorrichtung
DE10236179A1 (de) Speichersystem und Verfahren zur Verwendung desselben
DE60028793T2 (de) Skalierbarer dateiserver mit hochverfügbaren paaren
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102013205571B4 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Migrieren von Datenträgern mit schlanker Speicherzuweisung in mehrschichtigen Speicherarchitekturen

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: YOTTA YOTTA, INC., EDMONTON, CA

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: EMC CORPORATION OF CANADA, TORONTO, CA

8327 Change in the person/name/address of the patent owner

Owner name: EMC CORP., HOPKINTON, MASS., US