DE60317815T2 - Verfahren und system zur bereitstellung einer dauerhaften speicherung von benutzerdaten - Google Patents

Verfahren und system zur bereitstellung einer dauerhaften speicherung von benutzerdaten Download PDF

Info

Publication number
DE60317815T2
DE60317815T2 DE60317815T DE60317815T DE60317815T2 DE 60317815 T2 DE60317815 T2 DE 60317815T2 DE 60317815 T DE60317815 T DE 60317815T DE 60317815 T DE60317815 T DE 60317815T DE 60317815 T2 DE60317815 T2 DE 60317815T2
Authority
DE
Germany
Prior art keywords
data
memory
nvram
request
stored
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
DE60317815T
Other languages
English (en)
Other versions
DE60317815D1 (de
Inventor
George Jr. Cranberry Township TOTOLOS
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.)
NetApp Inc
Original Assignee
Network Appliance 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 Network Appliance Inc filed Critical Network Appliance Inc
Application granted granted Critical
Publication of DE60317815D1 publication Critical patent/DE60317815D1/de
Publication of DE60317815T2 publication Critical patent/DE60317815T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/2015Redundant power supplies

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft die Speicherung von Daten bei Stromausfällen. Insbesondere betrifft die vorliegende Erfindung die Speicherung von Daten bei Stromausfällen, wobei eine zweite Stromquelle und eine private Liste verwendet werden, um sicherzustellen, dass Daten nicht fehlerhaft überschrieben werden, wenn die Stromversorgung zurückkehrt.
  • Hintergrund der Erfindung
  • Ein wichtiger Maßstab bei der Funktionsfähigkeit eines Datei- bzw. Files-Servers ist die Zeit, die benötigt wird, eine Anforderung eines Clients (Client Request) zu verarbeiten. Ein anspruchsvoller Server wird auf Client Requests innerhalb kürzester Zeit antworten. Im Falle von Schreiboperationen bei dem Datei- bzw. File-System, ist es dem Server nicht erlaubt, die Anforderung zu bestätigen, bis er garantieren kann, dass alle Nutzdaten es letzten Endes bis zum Platten-Array schaffen. Falls die Daten in einem wichtigen Speicher innerhalb des Servers gespeichert werden, würde ein Stromausfall den vollständigen Verlust der Schreibdaten verursachen und seine Garantie für Daten-Integrität verletzen. Ein Anschluss des Servers an eine unterbrechungsfreie Stromversorgung für eine sinnvolle Zeitdauer könnte bezüglich Kosten- und Platzbedarf unerschwinglich sein.
  • Die vorliegende Erfindung stellt sicher, dass übergebene Nutzdaten von allen Clients es letztendlich zur Festplatte schaffen, selbst dann, wenn die Stromversorgung für das System für eine ausgedehnte Zeitdauer unterbrochen wird. Es bedarf keiner systemmäßigen Batterie-Vorrichtung. Stattdessen wird nur eine kleine Reihe von batteriegepufferten Speichern für eine beständige Speicherung in dem System verwendet.
  • Die US-A-5 586 291 offenbart ein Festplattenspeicher-Untersystem, das sowohl flüchtige wie auch nicht-flüchtige Speicherbereiche enthält. Die von einem Host bereitgestellten Schreibdaten können in zugewiesenen nicht-flüchtigen Speicherblöcken gespeichert werden und können auch in zusätzlichen nicht-flüchtigen Speichern gespiegelt werden. Im Falle eines Stromausfalles werden Daten, die in dem nicht-flüchtigen Speicher gespeichert sind, aber noch nicht auf die Festplatte geschrieben worden sind, konserviert. Jedes nicht-flüchtige Speichermodul kann eine Batterie-Sicherungs-Stromquelle enthalten, die die nicht-flüchtigen Speichermodule im Falle eines System-Stromausfalls versorgt.
  • Die WO 92/15933 A offenbart eine Datenspeicher-Einrichtung, die eine Speichereinrichtung umfasst, die ein Stromsicherungs-System enthält. Das Stromsicherungs-System ist eingerichtet, die Stromversorgung für die Speichereinrichtung aufrechtzuerhalten, sollte die normale Stromversorgung unterbrochen werden. Falls eine solche Stromversorgungs-Unterbrechung auftritt, ist ein Speichermanager eingerichtet, alle aktualisierten Daten, die in einem festen Statusspeicher auf einer Magnetfestplatte vor dem Abschalten der Speichereinrichtung gespeichert sind, zu plazieren.
  • Die US-A-5 761 406 offenbart ein Verfahren zur Übertragung von Daten von einem Speicher zu einem anderen innerhalb einer Speicher-Hierarchie in einem Datenverarbeitungs-System. Falls die Stromversorgung abgeschaltet wird und dann der Strom wieder eingeschaltet wird, werden hoch-priorisierte Symbol-Bilddaten, die von einem RAM-Cache-Speicher zu einem Platten-Cache-Speicher übertragen worden sind und in dem Platten-Cache-Speicher gesichert worden sind, wenn das Ausdrucken nicht ausgeführt worden ist, in dem RAM-Cache-Speicher wiederhergestellt.
  • Zusammenfassung der Erfindung
  • Gemäß eines Aspektes der Erfindung wird eine Vorrichtung zur Übermittlung von Daten eines Clients von einem Netzwerk gemäß Anspruch 1 und ein Verfahren zur Übermittlung von Daten eines Clients von einem Netzwerk gemäß Anspruch 10 bereitgestellt.
  • Kurze Beschreibung der Zeichnungen
  • In den beiliegenden Zeichnungen werden das bevorzugte Ausführungsbeispiel der Erfindung und bevorzugte Verfahren der Durchführung der Erfindung veranschaulicht, wobei:
  • 1 ein Blockdiagramm von funktionalen Einheiten des File-Systems darstellt.
  • 2 einer schematischen Darstellung von NVRAM-Schreibdaten-Pufferstrukturen entspricht.
  • 3 einer schematischen Darstellung einer NVRAM-Pufferung-Primär/Sekundär-Bereichs-Visualisierung entspricht.
  • 4 einer schematischen Darstellung eines File-Systems der vorliegenden Erfindung entspricht.
  • 5 einer schematischen Darstellung eines bevorzugten Ausführungsbeispiels eines File-Systems der vorliegenden Erfindung entspricht.
  • Detaillierte Beschreibung
  • Bezug genommen wird nun auf die Zeichnungen, in denen ähnliche Bezugszeichen sich auf ähnliche oder identische Teile überall in den verschiedenen Ansichten und insbesondere in den 1 und 4 davon beziehen, wobei dort ein File-Server 10 zum Bearbeiten von Daten eines Clients eines Netzwerks 12 gezeigt wird. Der Server 10 umfasst Plattenmittel 14 zum Speichern der Daten. Der Server 10 umfasst Mittel zum Empfangen der Daten von dem Netzwerk 12 und zum Senden einer Bestätigung, dass die Daten gespeichert worden sind, an den Client über das Netzwerk 12, jedoch bevor die Daten in den Plattenmitteln 14, den Empfangsmitteln 16 in Kommunikation mit den Plattenmitteln 14, gespeichert worden sind. Der Server 10 umfasst einen Speicher 18 zum Speichern der Daten, bis die Daten in den Plattenmitteln 14 gespeichert worden sind, wobei die Empfangsmittel 16 in Kommunikation mit dem Speicher 18 stehen. Der Server 10 umfasst eine erste Stromquelle 20, um Elektrizität für die Plattenmittel 14, den Speicher 18 und die Empfangsmittel 16 bereitzustellen, wobei die erste Stromquelle 20 in elektrischer Verbindung mit den Plattenmitteln 14, dem Speicher 18 und den Empfangsmitteln 16 steht. Der Server 10 umfasst eine zweite Stromquelle 22, die Elektrizität für den Speicher 18 bereitstellt, wenn die erste Stromquelle 20 ausfällt, wobei die zweite Stromquelle 22 in Verbindung mit dem Speicher 18 steht.
  • Vorzugsweise empfangen die Empfangsmittel 16 Daten in beliebiger Reihenfolge von dem Client und schützen die Daten davor, fälschlicherweise in dem Speicher überschrieben zu werden, wenn die Daten ungeordnet empfangen worden sind und die erste Stromquelle 20 ausgefallen ist, bevor die Daten in dem Speicher 18 gespeichert worden sind. Die Plattenmittel 14 enthalten vorzugsweise ein Platten-Array 24 bzw. eine Anordnung von Festplatten. Vorzugsweise enthält der Speicher 18 NVRAM 26. Die Empfangsmittel 16 enthalten vorzugsweise einen Anforderungs-Manager 28 bzw. Request-Manager, der die Schreibdaten von anderen Informationen, die von einem Client empfangen werden, trennt und diese Daten zu dem NVRAM 26 sendet.
  • Vorzugsweise weist der Anforderungs-Manager 28 eine private Liste auf, welche die Daten in einer Reihenfolge identifiziert, in der eine Schreibanforderung eines Clients durch die Empfangsmittel 16 abgeschlossen wird. Die private Liste wird von den Anforderungs-Manager 28 verwendet, um sicherzustellen, dass die Daten in der Reihenfolge in dem Speicher 18 wiederhergestellt werden, selbst dann, wenn die Anforderungen außerhalb der Reihenfolge verarbeitet worden sind und die erste Stromquelle 20 ausgefallen ist, bevor die Daten in das Platten-Array 24 geschrieben worden sind. Die Empfangsmittel 16 enthalten vorzugsweise einen Inode-Manager 30, der Anforderungen von Clients verarbeitet. Vorzugsweise enthalten die Emfpangsmittel 16 einen Platten-Manager 32, der das Platten-Array 24 managt bzw. verwaltet und die Daten in oder aus dem Platten-Array 24 schreibt oder liest. Die Empfangsmittel 16 enthalten vorzugsweise einen Cache-Controller 34, der zumindest die Datenbereiche managt bzw. verwaltet, welche in dem Speicher 18 gespeichert, aber nicht in dem Platten-Array 24 gesichert worden sind.
  • Vorzugsweise hält das NVRAM 26 einen Rest bzw. einen Endteil eines Log-Files, der in dem Platten-Array 24 angeordnet ist und alle Änderungen von File-System-Metadaten verfolgt bzw. überwacht, um eine ordentliche Datenwiederherstellung bzw. Datenrekonstruktion sicherzustellen, wenn es zu einem Ausfall der ersten Stromquelle 20 kommt. Das NVRAM 26 umfaßt vorzugsweise NVRAM-Puffer 36, NVRAM-Deskriptoren 38 und ein Wiederherstellungs-Register 40. Vorzugsweise speichern die NVRAM-Puffer 36 die Daten, so wie sie von einem Client empfangen worden sind; die NVRAM-Deskriptoren 38 Aufnahme-Informationen, die für die Wiederherstellung der Daten in ihren zugewiesenen NVRAM-Puffern 36 wesentlich sind; die freie Liste von NVRAM-Puffer 36; und das Wiederherstellungs-Register 40 hält einen Kopf und einen Zähler (head and count) der freien Liste. Die zweite Stromquelle 22 enthält vorzugsweise eine Batterie bzw. Akku.
  • Vorzugsweise weist der Anforderungs-Manager 28 eine Anforderungsnummer der File-System-Anforderung zu, die von den Empfangsmitteln 16 von dem Client des Netzwerks 12 empfangen worden ist; wobei die Anforderungsnummer die Anforderung identifiziert. Die Empfangsmittel enthalten vorzugsweise einen Anforderungsnummer-Statusspeicher, und weitere Informationen enthalten vorzugsweise Call-Parameter und Dateinamen, und der Anforderungs-Manager 28 sendet die Call-Parameter und die Dateinamen zu dem Anforderungsnummer-Statusspeicher 42 und sendet eine Nachricht an den Inode-Manager 30, dass die Anforderung für die Verarbeitung bereit ist. Vorzugsweise arbeiten der Anforderungs-Manager 28 und der Inode-Manager 30 unabhängig voneinander, so dass der Anforderungs-Manager 28 mit dem Empfang von Anforderungen von Clients fortschreiten kann, während der Inode-Manager 30 Anforderungen verarbeitet.
  • Der Inode-Manager 30 beginnt vorzugsweise mit der Verarbeitung der Anforderung durch Lesen der Call-Parameter der Anforderung aus dem Anforderungsnummern-Statusspeicher 42, um zu bestimmen, welcher Bearbeitungs- bzw. Operations-Typ von der Anforderung angefordert wird. Vorzugsweise enthalten die Empfangsmittel Cache-RAM, und der Cache-Controller 34 empfängt Look-Up-Nachrichten von dem Inode-Manager 30 und dem Platten-Manager 32, was den Cache-Controller 34 veranlasst, die Cache-Status-Tabellen zu suchen, die in dem Cache-RAM 44 für die angeforderten Datenblöcke angeordnet sind, die aktuellen Daten abzurufen, die mit dem Datenblock des Plattenarrays 24 verknüpft sind, und den Cache-Zeiger bzw. Cache-Pointer an die Cache-Status-Tabellen zurückzugeben, die kenntlich machen, wo die Schreibdaten plaziert worden sind; und Nachrichten aufzufangen, die einen Cache-Zeiger enthalten und Instruktionen bzw. Befehle für das, was mit dem Status des verknüpften Cache-Blocks zu tun ist. Wenn der Inode-Manager 30 eine Nachricht an den Anforderungs-Manager 28 sendet, um die Schreibdaten von den NVRAM-Puffern 36 in bestimmte Datenblöcke in dem Cache-RAM 44 zu schreiben, sendet der Inode-Manager 30 vorzugsweise eine Änderungsnachricht an den Cache-Controller 34, dass der Datenblock geändert worden ist und in das Platten-Array 24 geschrieben werden muss.
  • Vorzugsweise übermittelt der Platten-Manager 32 Schreibdaten von einem Cache-Zeiger bzw. -Pointer an einen Plattenblock nachdem eine Auffangnachricht (,fetch-message') an den Cache-Controller 34 ausgegeben worden ist, der den zugewiesenen Cache-Zeiger sperrt und temporär Änderungen verhindert. Der Cache-Controller 34 speichert vorzugsweise eine NVRAM 26-Freigabeliste, die NVRAM-Puffer 36 miteinander verknüpft, welche freigegeben werden müssen, wenn ein Cache-Block gelöscht wird. Das geschieht vorzugsweise, indem der NVRAM-Deskriptor 38 einen ersten Bereich und einen zweiten Bereich der Daten in seinen NVRAM-Puffer 36 überwacht bzw. verfolgt, welche in verschiedenen Cache-Blöcke gespeichert sind.
  • Die vorliegende Erfindung betrifft ein Verfahren zum Verarbeiten von Daten eines Clients von einem Netzwerk 12. Das Verfahren umfasst die Schritte des Empfangens von Daten von dem Netzwerk 12 an einen File-Server 10, der von einer Stromquelle 20 versorgt wird. Es gibt den Schritt des Sendens einer Bestätigung an den Client über das Netzwerk 12, dass die Daten in einem Platten-Array 24 des Servers 10 gespeichert worden sind, jedoch bevor die Daten in den Platten-Array 24 gespeichert worden sind. Es gibt den Schritt des Speicherns der Daten in einem Speicher 18, der von einer zweiten Stromquelle 22 versorgt wird, wenn die erste Stromquelle 20 ausfällt, so dass die Daten nicht verloren gehen, falls die erste Stromquelle 20 ausfällt, bis die Daten in dem Platten-Array 24 gespeichert worden sind. Es gibt den Schritt des Speicherns der Daten in dem Platten-Array 24.
  • Vorzugsweise enthält der Empfangsschritt den Schritt des Empfangens der Daten außerhalb einer Reihenfolge; und der Speicherschritt enthält den Schritt eines Bewahrens der Daten davor, dass sie fälschlicherweise in dem Speicher 18 überschrieben werden, wenn die Daten außerhalb der Reihenfolge empfangen worden sind und die erste Stromquelle 20 ausgefallen ist, bevor die Daten in dem Speicher 18 gespeichert worden sind. Der Empfangsschritt enthält vorzugsweise den Schritt der Pflege einer privaten Liste durch einen Anforderungs-Manager 28 des Servers 10, welche die Daten in der Reihenfolge kennzeichnet, in der eine Schreibanforderung durch den Server 10 abgeschlossen wird und durch den Anforderungs-Manager 28 verwendet wird, um sicherzustellen, dass die Daten in der Reihenfolge in dem Speicher 18 wiederhergestellt werden, selbst dann, wenn die Anforderungen außerhalb der Reihenfolge verarbeitet worden sind und die erste Stromquelle 20 ausgefallen ist, bevor die Daten in das Platten-Array 24 geschrieben worden sind.
  • Vorzugsweise enthält der Speicherungsschritt für die Daten in dem Speicher 18 den Schritt eines Speicherns von Schreibdaten in dem NVRAM 28. Der Empfangsschritt enthält vorzugsweise den Schritt des Trennens der Schreibdaten von anderen Informationen, die von dem Client über das Netzwerk 12 empfangen worden sind.
  • Vorzugsweise enthält der Empfangsschritt die Schritte einer Zuweisung einer Anforderungsnummer an eine Anforderung, die mit den Daten verknüpft ist, und des Abbauens einer Warteschlange durch genügend NVRAM-Puffer 36, um die Schreibdaten zu bewahren.
  • Es gibt vorzugsweise den Schritt des Abbauens einer Warteschlange durch einen Anforderungs-Manager 28 des Servers 10 bezüglich eines NVRAM 26-Zeigers vom Kopf bzw. Anfang einer freien Liste; des Lesens eines Deskriptors des NVRAMS 26, um den Status den NVRAM-Puffers 36 zu prüfen, den der Deskriptor repräsentiert. Vorzugsweise gibt es die Schritte einer Null-Eliminierung durch den Anforderungs-Manager 28 von Statusbits des Deskriptors so lange, wie sich weder ein primärer Cache-Block noch ein sekundärer Cache-Block des Cache-RAM 44 des Servers 10, der mit dem NVRAM 26 verknüpft ist, in einem geschützten Status befindet; des Kopierens durch den Anforderungs-Manager 28 eines nächsten Zeigerfeldes des Deskriptors in ein Wiederherstellungs-Register 40, und des Zurückhaltens des nächsten Zeigerfeldes in dem Deskriptor im Falle, dass die erste Stromquelle 20 unterbrochen wird, bevor das Wiederherstellungs-Register 40 aktualisiert worden ist. Der Speicherschritt der Schreibdaten enthält vorzugsweise die Schritte eines Schreibens der Schreibdaten in den NVRAM-Puffern 36 und des Speicherns von Pufferzeigern in die entsprechenden NVRAM-Puffer 36 in einen Anforderungsnummer-Statusspeicher 42.
  • Vorzugsweise gibt es die Schritte der Benachrichtigung eines Inode-Managers 30 des Servers 10 durch den Anforderungs-Manager 28, dass die Anforderungsnummer der Anforderung zugewiesen worden ist; des Schützens der NVRAM-Puffer 36, die die Schreibdaten der Anforderung halten; und des Verhinderns des Inode-Managers 30, die Bestätigung an den Client für die Anforderung des Clients auszugeben. Der Schritt des Schützens enthält vorzugsweise den Schritt des Sperrens mit dem Inode-Manager 30 in Zeigerfeldern des Anforderungsnummern-Statusspeichers 42, um zu bestimmen, welche NVRAM-Puffer 36 verwendet werden, um die Schreibdaten für die Anforderung zu halten; des Erzeugens einer physikalischen Adresse für jedes Zeigerfeld für den NVRAM-Deskriptor 38; des Schreibens mit dem Inode-Manager 30 des Deskriptors in die NVRAM-Puffer 36; und des Setzens der primären und sekundären Cache-Blöcke auf ,geschützt'. Vorzugsweise gibt es den Schritt der Freigabe eines jeden unreinen Cache-Blocks mit einer Blockfreigabe-Unrein-Nachricht (block release dirty message) von dem Inode-Manager 30 an den Cache-Controller 34, der identifiziert, welche NVRAM-Puffer 36 freigegeben werden müssen, wenn jeder unreine Cache-Block freigegeben wird.
  • Es gibt vorzugsweise den Schritt der Freigabe durch den Anforderungs-Manager 28 eines jeden NVRAM-Zeigers, der mit einem Cache-Block verknüpft ist, nachdem er gelöscht worden ist und der Anforderungs-Manager 28 eine Blocklöschungs-Antwortnachricht von dem Platten-Manager 32 über den Cache-Controller 34 empfangen hat.
  • Vorzugsweise enthält der Schritt der Freigabe die Schritte des Übermittelns der NVRAM 26-Zeigerliste von dem Cache-Controller 34 an den Anforderungs-Manager 28; des Änderns mittels des Anforderungs-Managers 28 des Status der primären und sekundären Bereiche, wie durch den Cache-Controller 34 angezeigt, eines jeden NVRAM 26-Zeigers in der Zeigerliste, auf den Freigabestatus, sobald der Anforderungs-Manager 28 die NVRAM 26-Zeiger empfängt, während der Anforderungs-Manager 28 die NVRAM 26-Zeiger zusammen in einer privaten Liste verknüpft; des Bestimmens mittels des Anforderungs-Managers 28, ob der primäre oder sekundäre Bereich eines NSRAM 26-Zeigers auf der privaten Liste, der nicht durch den Cache-Controller 34 angezeigt wird, sich in dem geschützten Status befindet; des Einordnens des NVRAM 26-Zeigers in eine Warteschleife, so wie er von dem Anforderungs-Manager 28 empfangen wird, zu dem Kopf bzw. Anfang der privaten Liste, falls der primäre oder sekundäre Bereich sich in dem geschützten Status befindet oder zum Ende der privaten Liste, falls weder der primäre noch der sekundäre Bereich geschützt sind; des Anfügens der privaten Liste zum Kopf bzw. Anfang der aktuellen freien Liste; des Aktualisierens des Wiederherstellungs-Registers 40, um auf den neuen Anfang der freien Liste zu zeigen und um alle Deskriptoren aus der Warteschlange der freien Liste zu nehmen, welche sich nicht in dem geschützten Status befinden.
  • In der Ausführung der Erfindung stellt der File-Server ein verteiltes System von allgemein verwendeten Prozessoren und benutzerspezifischen ASICs dar, die durch die von ihnen ausgeführte Funktion separiert sind. Integral mit dem Management dieser funktionalen Einheiten ist ein Nachrichtensystem, das in der Lage ist, 32-Byte-Nachrichten an und von jeder Einheit in dem Server in eine Warteschlange zu stellen. Die vier funktionalen Einheiten, die mit dem Management von File-Systemdaten und deren Übertragung bzw. Übermittlung zu dem Plattenuntersystem befasst sind, sind der Anforderungs-Manager, der Inode-Manager, der Disk-Manager und Cache-Controller. Jede dieser Einheiten ist in der Lage, Nachrichten an jede zu senden, wenn sie File-System-Anforderungen verarbeiten. Die 1 zeigt, wie diese Einheiten sich an jede andere und die sie unterstützenden Speicher anpassen. Die dicken und durchgezogenen Linien zeigen den Datenfluss von den Clients zu dem Platten-Array. Die dünnen gestrichelten Linien zeigen Kommunikationskanäle zur Steuerung des Datenflusses.
  • Wenn eine File-System-Anforderung von einem mit dem Netzwerk verbundenen Client ankommt, wird sie unverzüglich durch den Anforderungs-Manager bearbeitet. Bei Empfang einer neuen Anforderung, wird der Anforderungs-Manager eine Anforderungsnummer (RNUM) zuweisen, die verwendet wird, um sie durch die Verarbeitung hindurch zu kennzeichnen. Der RQM (Request Manager) analysiert jede File-System-Anforderung für sich, um ihre Call-Parameter, Dateinamen und Schreibdaten zu separieren. Während Parameter und Dateinamen an den RNUM-Statusspeicher gesendet werden, werden alle Schreibdaten, die in dem Call vorhanden sind, getrennt und an die nicht-flüchtigen RAM gesendet, um sie gegen Stromausfall zu schützen. Sobald die Analyse abgeschlossen ist, wird der Anforderungs-Manager eine Nachricht an den Inode-Manager senden, die ihn informiert, dass eine neue Client-Anforderung bereit ist, verarbeitet zu werden. Weil der Anforderung-Manager und der Inode-Manager durch ein Nachrichten-Warteschleifen-System getrennt sind, sind sie frei. ihre Funktionen auszuführen, ohne auf Antworten des anderen warten zu missen. Mit anderen Worten, ist der Anforderungs-Manager frei, ein Bündel von Client-Anforderungen zu verarbeiten, selbst dann, wenn der Inode-Manager an einer schwierigen und langsamen File-System-Operation hängen bleibt. Der Anforderungs-Manager wird nur durch die maximale Anzahl von RNUMs, die in dem System programmiert sind, begrenzt.
  • Der Inode-Manager ist der zentrale Prozessor der File-System-Befehle und wird Nachrichten an verschiedene Einheiten verteilen, damit deren Verarbeitung abgeschlossen wird. Der Inode-Manager wird darüber, dass eine Anforderung wartet, durch den Empfang einer Nachricht des Anforderungs-Managers informiert. Er beginnt dann mit der Verarbeitung durch Lesen der Parameter des Calls von dem RNUM-Statusspeicher, um zu bestimmen, welcher Typ von Bearbeitung bzw. Operation angefordert worden ist. Dieser Prozessor ist programmiert, um alle Arten von File-System-Anforderungen, die von einem Client erhalten werden können, zu verarbeiten. Während der Verarbeitung wird der Inode-Manager Nachrichten an den Cache-Controller senden, die anfordern, dass Inodes und Datenblöcke von dem Platten-Array abgerufen werden. Er wird dann die Zeiger bzw. Pointer, die er von dem Cache-Controller empfängt, verwenden, um Daten an und von den Cache-RAM, wie zur Erledigung der Client-Requests bzw. -Anforderung benötigt, zu übertragen. Falls er die Inhalte eines Cache-Blocks ändert, wird der Inode-Manager eine Nachricht an den Cache-Controller senden, die diese Einheit informiert, dass ein Datenblock aktualisiert worden ist und zu der Platte zurückgeschrieben werden muss.
  • Der Cache-Controller verwaltet Bereiche des File-Systems, welche in den Speichern abgelegt sind, die sich näher an dem Client befinden und viel geringere Latenzzeiten als die Platten-Arrays aufweisen. Er empfängt die grundlegenden Arten von Nachrichten von dem Inode-Manager und dem Platten-Manager während sie File-System-Anforderungen verarbeiten. Der erste Typ ist eine Look-Up-Nachricht und veranlasst den Cache-Controller, die Cache-Status-Tabellen nach den angeforderten Datenblöcken zu durchsuchen, die Daten von der Platte, falls notwendig, abzurufen und den Cache-Zeiger dorthin zurückzuweisen, wo die Daten plaziert wurden. Der zweite Typ ist eine Abruf-Nachricht, die einen Cache-Zeiger enthält und Befehle über das, was mit dem Cache- Zeiger-Status zu tun ist. Weil verschiedene funktionelle Einheiten an den Cache-Eingängen arbeiten, nehmen sie auf diese (durch Cache-Nachrichten) Bezug, um sicherzustellen, dass sie nicht unerwartet replaziert bzw. ersetzt werden.
  • Der Platten-Manager behandelt Nachrichten von dem Cache-Controller immer dann, wenn Plattenaktivitäten angefordert werden. Wenn eine Look-Up-Nachricht einen Cache-Verlust verursacht hat, wird der Cache-Controller eine Lesenachricht an den Platten-Manager mit einem Cache-Zeiger senden, wohin die Daten in dem Cache-RAM plaziert werden sollen. Wenn ein Cache-Eingang geändert worden ist, wird der Cache-Controller eine Schreibnachricht an den Platten-Manager mit einem Cache-Zeiger senden, wohin die aktuellsten Daten angeordnet sind, so dass sie zurück zur Platte geschrieben werden können. Damit der Platten-Manager Daten von einem Cache-Zeiger an einen Plattenblock übermitteln kann, muss er zuerst eine Abrufnachricht an den Cache-Controller ausgeben, die um eine Sperrung auf dem Zeiger anfragt. Der Platten-Manager wird nur dann Daten von dem Cache-Zeiger auf das Platten-Array kopieren, wenn die Sperrung bewilligt worden ist. Dies stellt sicher, dass die Inhalte des Datenblocks stabil sind, bevor die Übertragung bzw. Übermittlung beginnt. Der Platten-Manager sendet Befehle an den Cache-Controller, um Daten von dem Cache-RAM zu verschieben. Er begründet seine Entscheidungen auf die Ergebnisse von Algorithmen, die beschaffen sind, die Effizienz der potenziell hochlatenten Festplatten bzw. Platten zu optimieren. Außer der Nachverfolgung von verunreinigten Seiten (dirty pages), haben seine Entscheidungen darüber, warm Daten aus dem Cache-Rahmen verschoben werden, wenig mit den sich auf der Client-Seite des Systems auftretenden Ereignissen zu tun.
  • Während der Anforderungs-Manager die Anforderungen von dem Netzwerk akzeptiert, weist er ihnen eine Kontext-ID zu, die während der Lebensdauer der Anforderung in dem Server verwendet wird. Diese ID wird als ein RNUM bezeichnet. Der RNUM-Status-Speicher wird verwendet, um Informationen, die sich während der Verarbeitung der Anforderung angesammelt haben, zu halten. Sie ist flüchtig und wird als ungültg nach einer Stromunterbrechung angesehen. Die Zeiger auf die NVRAM-Puffer, die verwendet werden, um eingehende Client-Daten für die RNUM zu halten, werden in diesem Bereich gespeichert.
  • Der File-Server verwendet Cache-RAM, um einen Bereich des File-Systems in einem gering latenten Speicher nahe der Clients zu pflegen. Während dieser Speicher viel schneller als das Platten-Array ist, verbraucht er eine Menge an Energie und ist deshalb als flüchtiger Speicher ausgeführt, der alle Inhalte während eines Stromausfalles verliert. Der Cache-Controller behandelt bzw. kontrolliert den Cache-RAM durch Verwendung eines Rückschreib-Algorithmus (,write-back algorithm') für eine verbesserte Wirksamkeit.
  • Durch Verschieben von Rückschreibe-Operationen (,write-backs') auf die Platte, kann der File-Server Daten von ähnlichen physikalischen Orten in einer größeren Schreibanforderung gruppieren, wobei die Funktionsfähigkeit verbessert wird. Weil er das Zurückschreiben von Daten zu den Platten verschiebt, wird der Cache-RAM eine aktualisiertere Version des File-Systems als das Platten-Array selbst haben. Deshalb müssen deren Inhalte durch die NVRAM geschützt bleiben, bis das Zurückschreiben aufgetreten ist.
  • Ein anderes Element, das in dem Cache-RAM gespeichert ist, ist die NVRAM-Freigabeliste. Dieser Speicher wird von dem Cache-Controller verwendet, um NVRAM-Puffer, die bei Löschung eines Cache-Blocks freigegeben werden müssen, miteinander zu verknüpfen. Ein Maximum von 64k-Einträgen werden für diese Funktion unterstützt.
  • Jeder Eintrag beträgt 8 Byte und ist wie folgt formatiert: Tabelle 1: NVRAM Freigabe Eintrag (8 Byte)
    4 Bytes Flags: [31-2]: Reserviert. [1]: Frei, wenn der primäre Bereich freigegeben werden soll. Für sekundären Bereich gesetzt. [0]: Gesetzt, wenn der letzte Eintrag in der Freigabe Liste
    2 Bytes NVRAM Puffer-Zeiger: Der gegenwärtige NVRAM Puffer-Zeiger, der mit diesem NVRAM verknüpft ist
    2 Bytes Nächster Eintrag in Freigabe-Liste: Falls dieser Eintrag nicht der letzte auf der Liste ist, enthält dieses Feld einen Zeiger auf den nächsten Eintrag auf der Freigabe-Liste.
  • Wenn der Cache-Controller eine Benachrichtigung des ersten NVRAM-Zeigers erhält; der eine Freigabeliste benötigt, wird der Cache-Controller einen Eintrag dafür mit seinem Flag (0) setzen, um anzugeben, dass er der letzte auf der Liste ist. Jeder nachfolgende Zeiger, der auf der Liste plaziert werden muss, wird zum Anfang der Liste hin eingereiht, wobei er auf den vorhergehenden Anfang zeigt.
  • Der nicht-flüchtige RAM (NVRAM) in diesem System kann implementiert werden, indem jede Schwachstrom-Speichertechnologie verwendet wird, die in der Lage ist, die Schreibdaten-Bandbreite von dem Client zu tragen. Sein Stromversorgungs-System muss von dem Rest des Systems getrennt werden, somit kann eine Umschaltung auf Batteriesicherung bei Stromunterbrechen auftreten. Das NVRAM hat zwei separate Zwecke. Erstens hält es das Ende des Lob Files, welches alle Änderungen an Datensystem-Metadaten verfolgt. Während Metadaten geändert werden, wird eine Transaktion von alten und neuen Daten in dem Log-File festgehalten, um eine sichere Wiederherstellung für den Fall eines Server-Ausfalls sicherzustellen. Während das meiste der Datei in der Platten-Array festgehalten wird, werden die aktuellsten Transaktionen in dem NVRAM festgehalten, weil sie an das Ende des Log-Files angehängt werden. Sobald genügend Transaktionen sich aufsummiert haben, wird das Ende zur Platte in einem großen effizienten Bündel verschoben. Indem man das Ende des Log-Files in einem schnellen Speicher hält, ist das File-System in der Lage, es höchst effizient zu halten.
  • Der zweite Zweck des NVRAM dient zur temporären Speicherung von Schreibdaten von Clients bevor das System sie in das Platten-Array schreibt. Um diese Aufgabe zu erfüllen, werden drei separate Strukturen in dem NVRAM aufrechterhalten. Diese sind die 4 kB NVRAM-Puffer, die 32-Byte NVRAM-Deskriptoren und das 4-Byte Wiederherstellungs-Register. Die NVRAM-Puffer werden durch den Server verwendet, um die Schreibdaten exakt, so wie sie von dem Client ankommen, zu speichern. Die Puffergröße von 4 kB wurde gewählt; weil sie zur Größe eines Festplattenblockes und Cache-RAM-Puffers passt. Jedoch umfasst eine andere potenzielle Größenoption, dass der Puffer gleich der größten möglichen Übertragung von Nutzdaten von dem Clienten gleichgesetzt wird. Noch eine weitere Vorgehensweise wäre es, sowohl kleine wie auch große Größen anzubieten, um die Effektivität des Speichers zu erhöhen, falls viele kleine Schreibvorgänge ankommen. Jeder Puffer hat einen einzelnen Deskriptor, der ihm zugewiesen ist, um alle Details der Schreibdaten, die in dem NVRAM-Puffer gehalten werden, anzugeben, so dass er nach einem Stromausfall wiederhergestellt bzw. rekonstruiert werden können. Die Deskriptoren werden auch verwendet, um eine freie Liste von Puffer zu pflegen, von denen der Anforderungs-Manager beziehen kann, während er Client-Anforderungen verarbeitet. Während Plattenblöcke mit Schreibdaten aus Cache-Blöcken aktualisiert werden, werden die NVRAM-Puffer zu dem Ende der freien Liste zurückgeführt. Das Wiederherstellungs-Register wird verwendet, um den Kopf bzw. Anfang sowie den Fehlerstand der freien Liste zu halten. Die 2 zeigt, wie der File-Server die verwendeten NVRAM-Puffer überwacht bzw. verfolgt, um Schreibdaten von seinen Clients zu halten.
  • Während der Server gestaltet ist, bis zu 64 k NVRAM-Puffer zu unterstützen, wird ein 16-Bit-Zeiger verwendet, um jeden Puffer und seinen Deskriptor zu identifizieren und zu referenzieren. Es wird angenommen, dass das Wiederherstellungs-Register lediglich einen 16-Bit-Zeiger zu dem Deskriptor enthält, der sich an dem Kopf der NVRAM-freien Liste befindet, und dass der 16-Bit-Zähler die Anzahl der Deskriptoren sich auf dieser freien Liste befindet. Die Inhalte des NVRAM-Deskriptors sind sehr wichtig für die Operation bzw. den Betrieb der hier vorgeschlagenen beständigen Speicherarchitektur. Dieses Feld wird bei Empfang von Schreibdaten initialisiert und während der Wiederherstellungs-Prozedur geprüft. Die Inhalte des NVRAM-Deskriptors sind in Tabelle 2 gezeigt. Tabelle 2: NVRAM Deskriptor (32 Byte)
    12 Bytes FID: Die Datei ID zu der die Daten in dem Puffer gehören.
    8 Bytes Offset: Der Anfangs-Byte-Offset der Daten in der Datei.
    8 Bytes Sequenz-Nummer: Falls der Puffer Daten enthält, die wiederhergestellt werden müssen, enthält dieses Feld die Sequenz-Nummer, die der Anforderung zugeordnet ist, wenn sie eintrifft. Diese wird verwendet, um eintreffende Schreib(-Operationen) einzuordnen, um Fehlerfreiheit während der Wiederherstellung sicherzustellen.
    4 Bytes Status Flags (4 Bits) [3-2]: Primäre Cache-Block-Status-Bits: [1-0]: Sekundäre Cache-Block-Status-Bits. '00': Ungültig. Ungültige Inhalte. '01': Undefiniert. '10': Freigebend. Stellt Inhalte wieder her, falls Deskriptor nicht auf Freier Liste ist. '11': Geschützt. Stellt Inhalte unter allen Bedingungen wieder her.
    Daten-Länge (12 Bits) Die Menge an gültigen Daten in dem NVRAM Puffer
    Nächster Zeiger (2 Bytes): Falls der NVRAM Puffer auf der Freien Liste ist, enthält dieses Feld einen Zeiger auf den nächsten NVRAM Puffer auf der Liste. Ein Wert von Nullen gibt das Ende der Liste an.
  • Wie in dem Deskriptor angezeigt, hat jeder NVRAM-Puffer einen primären und einen sekundären Bereich, die sich in einem unterschiedlichen Schutz-Zustand befinden können.
  • Zur Erläuterung dieses Konzeptes soll folgendes Beispiel betrachtet werden. Falls eine Client-Anforderung an den Server eintrifft, die 8 kB Schreibdaten trägt, müssen zwei 4 kB NVRAM-Puffer für den Empfang dieser Daten vorbereitet werden. Falls diese Daten einen Anfangs-Offset von 1 kB in ihrer Datei aufweisen, werden die ganzen 8 kB-Daten letztendlich geschrieben, um 1 kB durch 9 kB anzurechnen. Während alle Cache-Blöcke bei einer 4 kB Grenze beginnen, werden diese Daten drei getrennte Cache-Blöcke belegen, bevor sie zurück in das Platten-Array geschrieben werden. Wie in 3 gezeigt, werden die Schreibdaten in die NVRAM-Puffer 1 und 2 geschrieben. Während der Verarbeitung werden die Cache-Zeiger 100, 200 und 300 gewonnen und verwendet, um die Schreibdaten zu empfangen. Wegen der 4 kB-Grenzen bei den Cache-Blöcken, sind die NVRAM-Puffer virtuell in zwei getrennte Bereiche, den primären und den sekundären, aufgeteilt worden. Der Cache-Block 100 hält Daten aus dem primären Bereich des NVRAM-Puffers 1, während der Cache-Block 200 Daten aus dem sekundären Bereich des NVRAM-Puffers 1 und des primären Bereiches des NVRAM-Puffers 2 usw. hält. In dem Fall, dass der Cache-Block 300 vor den anderen gelöscht wird, wird das System wissen, das bloß der sekundäre Bereich des NVRAM-Puffers 2 noch freigegeben werden kann, wobei dieser Puffer aus der freien Liste gehalten wird und noch Schutz für den primären Bereich aufrecht erhalten wird.
  • Die drei Phasen der Operation bzgl. der Aufrechterhaltung der NVRAM-Strukturen während der Dauer einer Schreib-Anforderung von einem Client wird nun beschrieben. Jede Phase, die unten umrissen wird, weist zwei Unterbereiche bzw. Unterabschnitte auf. Der erste Unterabschnitt beschreibt die Schritte, die der Server durchgehen wird, während er diese Phase ausführt. Der zweite Unterabschnitt stellt eine Analyse des Einflusses eines Stromausfalles bereit, der während der Phase auftreten kann. Diese Ausfallanalyse wird benötigt, um sicherzustellen, dass Strom zu jeder Zeit ausfallen kann ohne die Intaktheit der NVRAM-Strukturen zu beeinträchtigen.
  • Phase 1: Nutzdaten-Eingang
  • Beschreibung des Nutzdaten-Eingangs
  • Wenn der File-Server eine Schreibanforderung von einem Client empfängt, wird sie einer bestimmten Anforderungsnummer (RNUM) zugewiesen und wird analysiert und durch den Anforderungs-Manager verteilt. Bevor er dem mode-Manager mitteilt, dass die Anforderung eingetroffen ist, muss er zuerst genügend 4 kB NVRAM-Puffer aus der Warteschlange bzw. Reihung nehmen, um die gesamten Schreibdateninhalte zu halten. Weil die maximale Größe einer Schreibanforderung 8 kB beträgt, werden nicht mehr als zwei Puffer pro Anforderung benötigt.
  • Wenn der Anforderungs-Manager einen NVRAM-Pointer bzw. -Zeiger aus der Warteschlange von dem Anfang der freien Liste nimmt, wird er zunächst seinen Deskriptor lesen, um den Status des Puffers, den er repräsentiert, zu prüfen. Solange, wie weder die primären noch die sekundären Cache-Blöcke sich in den geschützten Status befinden, wird der Anforderungs-Manager die Status-Bits in den Deskriptor ausnullen. Er wird dann das nächste Zeigerfeld des neuerlich aus der Warteschlange genommenen Deskriptors in das NVFREE_HEAD-Wiederherstellungs-Register kopieren, weil es den neuen Kopf bzw. Anfang der freien Liste darstellt. Das nächste Zeigerfeld wird in dem aus der Warteschlange entnommenen Deskriptor zurückgehalten im Falle, dass der Strom unterbricht, bevor das NVFREE_HEAD-Register aktualisiert worden ist. Falls der neuerlich aus der Warteschlange entnommene Deskriptor vollständig ausgenullt wurde, würde die freie Liste einen Moment bzw. Zustand der Ungültigkeit aufweisen, bis das NVFREE_HEAD-Wiederherstellungs-Register aktualisiert worden ist. Das Setzen des NVRAM-Puffers in den Ungültigkeitszustand, wird sicherstellen, dass es nicht wiederhergestellt wird, da es sich nun außerhalb der freien Liste befindet.
  • Falls der Anforderungs-Manager feststellt, dass die Status-Flags des primären und sekundären Cache-Blöcke auf ,geschützt' gesetzt sind, wird er wissen, dass der Zeiger nicht vollständig freigegeben ist, und wird ihn von der Liste allesamt entfernen. Während er den Deskriptor von der freien Liste entfernt, ändert er jeden Bereich im Freigabezustand auf ,ungültig', um die Wiederherstellung zu verhindern. Folglich wird das nächste Zeigerfeld des Deskriptors zu der NVFREE_HEAD-Wiederhersetellung wie oben erwähnt, kopiert.
  • Der Anforderungs-Manager wird dann die Nutzdaten in die neulich angeforderten Puffer schreiben und Zeiger auf den bzw. die Puffer an einem vorbestimmten Ort in dem RNUM-Status-Speicher speichern. Weil der Client noch keine Bestätigung empfangen hat, dass die Daten übergeben worden sind, sind diese Puffer noch nicht geschützt. Falls keine freien NRAM-Puffer verfügbar sind, wird die Client-Schnittstelle des Anforderungs-Managers verharren, bis genügend frei werden.
  • Ausfallanalyse des Nutzdaten-Eingangs
  • Die einzige Modifikation an den NVRAM-Strukturen während des Nutzdaten-Eingangs ist das Aus-der-Warteschlange-Nehmen von NVRAM-Puffern aus dem Kopf der freien Liste. Während dieses Vorgangs werden nur zwei Strukturen in einer sehr speziellen Reihenfolge aktualisiert. Zuerst werden die Status-Flags des Deskriptors von ,freigebend' auf ,ungültig' geändert, wobei alle geschützten Bereiche unverändert bleiben. Weil keine anderen Felder des Deskriptors während dieser Operation geändert werden, wird ein Stromverlust während seiner Aktualisierung bzw. Updates keinen Einfluss auf seinen Status haben. Ein Eintrag auf der freien Liste, die ,ungültig' oder ,freigebend' ist, wird niemals durch Definition wiederhergestellt. Falls der Strom ausfällt, nachdem der Deskriptor aktualisiert worden ist, jedoch bevor das NVFREE_HEAD-Wiederherstellungs-Register aktualisiert worden ist, wird die Wiederherstellungs-Prozedur bloß den jüngst von der Warteliste genommenen Deskriptor noch am Anfang der freien Liste finden und ihn nicht wiederherstellen. Da sein nächstes Zeigerfeld unverändert geblieben ist, wird die Integrität der freien Liste noch gewahrt.
  • Phase 2: Nutzdaten-Übergabe
  • Beschreibung der Nutzdaten-Übergabe
  • Sobald der Anforderungs-Manager den mode-Manager benachrichtigt, dass eine neue RNUM der Schreibanforderung zugewiesen worden ist, wird der mode-Manager durch seine Prozedur für diesen Call gehen, bis es Zeit ist, eine Antwort zurück an den Client zu senden. Bevor diese Antwort gesendet wird, muss der Inode-Manager sicher sein; die Speicherinhalte zu schützen. Um diese Aufgabe zu erfüllen, muss er zuerst in die Zeigerfelder des RNUM-Status-Speichers schauen, um herauszufinden, welcher bzw. welche Puffer verwendet werden, um die Schreibdaten für diese Anforderung zu halten. Nur ein Zeiger ist gültig, falls die Schreibanforderung 4 kB oder weniger betrug. Beide Zeiger sind gültig für Anforderungen die größer als 4 kB sind. Der mode-Manager muss jeden Zeiger verwenden, um eine physikalische Adresse für den 32-Byte-NVRAM-Deskriptor zu erzeugen. Der Inode-Manager muss die gesamten Inhalte des Deskriptors in den Speicher schreiben, wobei der primäre und/oder sekundäre Zustand auf ,geschützt' gesetzt wird. Zusätzlich muss er einen 8-Byte-Sequenznummer zuweisen, die einer mehr entspricht als dem letzten NVRAM-Puffer, den er schützt. An diesem Punkt sind die Puffer geschützt und dem Inode-Manager ist erlaubt, eine Antwort auf die Schreibanforderung auszugeben.
  • Wenn die Antwort an den Client gesendet worden ist, wird der Inode-Manager jeden unreinen Cache-Block mittels einer Block_Release_Dirty-Nachricht an den Cache-Controller freigeben. In dieser Nachricht muss der Prozessor angeben, welcher oder welche NVRAM-Puffer freigegeben werden müssen, wenn der Block gelöscht wird. Da bis zu zwei NVRAM-Puffer benötigt werden, um mit einem einzigen Cache-Block durch den Inode-Manager verknüpft zu werden, stellt der Block-Release_Dirty-Call genügend Raum bereit, diese Zeiger durchzugehen. Zusätzlich stellte dieser Call ein Bit pro NVRAM-Zeiger bereit, um anzugeben, ob der primäre oder der sekundäre Bereich des NVRAM-Puffers mit diesem Cache-Block verknüpft werden muss.
  • Es ist wichtig, zu bemerken, dass der Cache-Block, welcher mit den neuen NVRAM-Zeigern verknüpft worden ist, bereits die Nachverfolgung anderer aufrechterhalten kann. Deshalb ist es für den Cache-Controller notwendig, eine Liste von NVRAM-Zeigern zu halten, welche Freigabe benötigen, wenn der Cache-Block gelöscht wird. Um dies zu erreichen, hält der Cache-Controller einen separaten Pool bzw. Ansammlung von 8-Byte-Einträgen in einem Bereich des Cache-RAMs bereit, der die NVRAM-Freigabeliste genannt wird. Ein Block_Release_Dirty-Call geht ein und der Cache-Controller wird eine einzelne verbundene Liste von NVRAM-Puffern in diesem Speicher bilden. Es muss so viele Einträge in dieser Liste geben wie es NVRAM-Puffer gibt. Diese Liste wird die NVRAM-Freigabeliste genannt, so wie sie in dem Cache-RAM aufbewahrt wird.
  • Phase 3: Nutzdaten-Freigabe
  • Ausfallanalyse von Nutzdatenübergabe bzw. Freigabe Während dieser Phase treten nur Änderungen an den NVRAM-Strukturen auf, wenn der Inode-Manager den oder die NVRAM-Deskriptoren eingibt, um die Schreibdaten zu schützen. Die Statusbits des Deskriptors sind in seinem Abschlusswort plaziert worden, um sicherzustellen, dass der Statuswechsel auf ,geschützt' nicht auftreten wird, bis alle anderen Felder zunächst beschrieben worden sind. Während der Deskriptor sich in dem Ungültigkeitszustand bei Beginn dieser Phase befindet, wird der Deskriptor keinen Kandidaten zur Wiederherstellung darstellen, bis alle Felder gültige Informationen enthalten.
  • Beschreibung der Nutzdaten-Freigabe
  • Der Grund, warum eine Freigabeliste von NVRAM-Puffern hinter den Cache-Puffer gehalten wird und warum der Server es erlaubt, dass diese Liste in einer willkürlichen Reihenfolge erzeugt wird, selbst dann, wenn ein Stromausfall zu jeder Zeit zu erwarten ist, wird nun beschrieben. Um es dem Server zu erlauben, verschiedene Software und Hardwaremodule aufzuweisen, die unabhängig und gleichzeitig in dem File-System arbeiten, muss genügend Flexibilität vorhanden sein, um es den Funktionen zu ermöglichen, außerhalb der Reihenfolge abzuschließen. Mit anderen Worten: Angenommen, ein Cache-Block hat eine Liste von NVRAM-Puffern, um diese freizugeben, wenn deren Inhalte schließlich auf die Platte geschrieben werden. Und angenommen, dass diese Liste der Puffer sich in der folgenden Reihenfolge befand, wobei die Nummer die Reihenfolge wiedergibt, in welcher die Daten von dem Client angekommen sind: 1-2-5-4-3. Eingedenk dieser Aussage schrieb der Client an eine Datei 5-mal sehr schnell in einer Zeile und der Server verarbeitete diese Anforderungen in einer Weise, dass die 3-te Schreiboperation zuletzt in die Freigabeliste geschrieben wurde (obwohl die aktuellsten Schreibdaten von der Anforderung #5 sich eigentlich in dem Cache-Puffer befindet). Falls die Stromzufuhr verloren gegangen ist, bevor die Freigabeliste bearbeitet worden ist, würde es kein Problem machen, weil die NVRAM noch alle 5 NVRAM-Puffer zur Verfügung hätten, und sie in Ordnung bringen würden und sicherstellten, dass die aktuellsten Daten es zur Platte hin schaffen. Jedoch, was wäre. wenn die ersten 3 Einträge der Freigabeliste von dem NVRAM entfernt worden wären und dann die Stromzufuhr ausgefallen wäre. Wenn das System ein Back-Up machte, würde es sehen, dass die Übermittlung #3 und #4 sich in dem NVRAM befänden und es würde sie aus der Platte ausschreiben, wobei fälschlicherweise die aktuellsten Daten von der Übermittlung #5 überschrieben würden. Dieses Problem wird mit der privaten Liste gelöst, welche durch den Anforderungs-Manager bereitgestellt wird, wenn die Puffer freigegeben werden.
  • Insbesondere wird der Cache-Controller informiert, wenn ein Cache-Block gelöscht wird, durch die Verwendung der Block_Op-Löschnachricht. Wenn dieser Call empfangen wird, wird der Cache-Controller mit dem Anforderungs-Manager in Kommunikation treten, um jeden Zeiger, der in dem Status referenziert ist, freizugeben. Weil der File-Server eine (so genannte) ,multi-threading processing engine' ist, gibt es keine Garantie, dass die Reihenfolge der freigegebenen NVRAM-Puffer dieselbe Reihenfolge ist, in welcher die Anforderungen von dem Netzwerk ankommen. Deshalb kann der Anforderungs-Manager keine einfache Vorgehensweise durch Nullung der NVRAM-Deskriptoren durchführen, weil er diese auf die freie Liste setzt. Falls der Strom ausfällt, während der Chip die unregelmäßigen (,out-of-order')-Deskriptoren zu der freien Liste zurückführt, würde der Wiederhersteilungsprozess annehmen, dass die älteren Puffer, welche nicht befreit worden sind, tatsächlich die aktuellsten Daten enthalten.
  • Um die Beschränkung der Reihenfolge zu vermeiden, gibt der Server die NVRAM-Puffer in einer kontrollierten Art und Weise frei. Zuerst wird die gesamte Zeigerliste von dem Cache-Controller an den Anforderungs-Manager in einer beliebigen Reihenfolge übermittelt. Während der Anforderungs-Manager die Zeiger empfängt, wird er den primären oder sekundären Bereich (wie durch den Cache-Controller angezeigt) zu dem Freigabestatus ändern, während er sie in einer privaten Liste miteinander verknüpft. Falls der Anforderungs-Manager feststellt, dass der gegenüberliegende Bereich des NVRAM-Zeigers noch geschützt ist, reiht er den Zeiger am Kopf bzw. Anfang der privaten Liste ein. Andernfalls reiht er den Zeiger am Ende der privaten Liste ein. Nachdem der Cache-Controller die gesamte Liste der NVRAM-Pointer sendet, um sie freizugeben, wird der Anforderungs-Manager die neue Liste an den Anfang der gegenwärtigen freien Liste anhängen und das NVFREE_HEAD-Wiederherstellungs-Register aktualisieren, um auf den neuen Kopf bzw. Anfang zu zeigen. Um zu vermeiden. dass ein NVRAM-Zeiger auf der freien Liste zweimal plaziert wird, muß der Anforderungs-Manager dann alle die Deskriptoren ausreihen, welche Daten von der freien Liste geschützt haben, bevor jede weitere Freigabe von dem Cache-Controller akzeptiert wird. Er macht dies durch die folgende normale Ausreihungsprozedur.
  • Ausfallanalyse von Nutzdaten-Freigabe
  • Die erste Änderung der NVRAM-Strukturen, welche während der Freigabe-Prozedur auftritt, ist die Erzeugung der privaten Liste. Warm immer ein Zeiger an den Anfang oder das Ende der privaten Liste geschrieben wird, werden die Status-Bits auf Freigabe zum selben Zeitpunkt geändert, an dem der nächste Zeiger aktualisiert wird. Während der Erzeugung der privaten Liste gibt es überhaupt keine Änderungen an der freien Liste. Deshalb wird, falls die Stromversorgung der Herstellung der privaten Liste ausfällt, jeder NVRAM-Zeiger hinter dem neuerlich gelöschten Cache-Block wiederhergestellt, egal ob er es zu der privaten Liste hin schafft oder nicht.
  • Die zweite Änderung der NVRAM-Strukturen tritt auf, wenn die private Liste zum Anfang der freien Liste hin verschoben wird. Zu diesem Zeitpunkt, wird der nächste Zeiger eines jeden Eintrags am Ende der privaten Liste aktualisiert, um den gegenwärtigen freien Kopf bzw. Anfang darzustellen. Der nächste Schritt ist es, das NVFREE_HEAD-Wiederherstellungs-Register zu aktualisieren, um auf den Anfang der privaten Liste zu zeigen. Dies verschiebt effizient jeden neuerlich freigegebenen NVRAM-Zeiger zu der freien Warteschlange zum selben Zeitpunkt. Falls die Stromversorgung ausfällt, bevor das NVFREE_HEAD-Wiederherstellungs-Register aktualisiert worden ist, würde der Wiederherstellungs-Prozess immer noch die gesamte Liste wiederherstellen, weil es nicht auf der freien Liste gefunden wird.
  • Stromausfall-Prozedur
  • Bei Stromausfall wird der Datei-Server alle NVRAM-Aktivitäten elegant zu einem Abschluss bringen. Der Speicher-Controller, der Daten zu dem NVRAM sendet, wird aufhören, jede neue Anforderung von dem Anfoderungsmanager und dem Inode-Manager zu akzeptieren und wird jeden so genannten ,write-posting' Puffer leeren, den er hat. Der Leerungsschritt ist wichtig, weil der Anforderungs-Manager eine Antwort an den Client gesendet haben könnte, nachdem die Schreiboperation von dem Speicher-Controller akzeptiert worden ist, jedoch bevor sie tatsächlich es zu dem NVRAM geschafft hat. Der Speicher-Controller wird dann einer Abschaltprozedur folgen, welche die Stromversorgung in eine Batterieabsicherung überführt und den Speicher in einen Schwachstrom-Modus setzt.
  • Wiederherstellungs-Prozedur
  • Wenn die Stromversorgung in einem System wiederhergestellt ist, muss der Anforderungs-Manager deaktiviert bleiben, bis der gesamte Server bereit ist, neue Anforderungen anzunehmen. Nachdem die normale Initialisierungsroutine abgeschlossen ist, wird von dem Inode-Manager erwartet, jeden Deskriptor in dem NVRAM durchzugehen, um zu bestimmen, welche Puffer Daten geschützt haben und in welcher Reihenfolge sie empfangen worden sind.
    • 1. Absuchen des gesamten NVRAM-Deskriptor-Raumes nach allen Zeigern, welche einen Datenbereich aufweisen, der sich in dem ,Freigabe' oder ,geschützt'-Zustand befindet. Platzieren dieser Bereiche in der ,geschützt'-Liste.
    • 2. Auslesen des NVFREE_HEAD-Wiederherstellungs-Registers.
    • 3. Verfolgen der verknüpften Liste der freien Puffer, Entfernen aller Freigabe-Bereiche aus der geschützten Liste.
    • 4. Absuchen der gesamten geschützten Liste und Einordnung dieser durch Sequenznummern.
  • Nachdem die letzte Liste der geschützten Daten bestimmt worden ist, wird der Inode-Manager sich mit dem Cache-Controller verständigen, um die aktuellen Inhalte der Festplatten-Blöcke (,subject disk blocks') aus dem Platten-Array in die Cache-RAM gelesen zu haben. Dann überschreibt er jene Cache-Blöcke mit den Daten, welche in den NVRAM-Puffern gespeichert sind, wobei er bei einem Byte-Offset beginnt, welches in den Deskriptoren aufgezeigt wird. Nachdem alle Daten in die Cache-Blocks kopiert worden sind, wird er die Daten zurück auf die Platte schreiben, wobei das File-System auf die aktuellste Version aktualisiert bzw. updated wird. Zu diesem Zeitpunkt kann der Server in der Lage sein, neuen Netzwerk-Traffic von seinen Clients zu empfangen.
  • In dem bevorzugten Ausführungsbeispiel, und wie in 5 dargestellt, werden Anforderungen von Clients an einer 32 Gbps ,backplane' 80 durch eine ,fabric'-Schnittstelle 80 empfangen, welche das Format der Daten wandelt, die von dem ,backplane' 80 empfangen werden, in ein Format mit dem der Anforderungs-Warteschleifenmanager 82 arbeiten kann. Die ,fabric'-Schnittstelle 81 und der Request bzw. Anforderungs-Warteschleifenmanager 82 bilden zusammen den Anforderungs-Manager. Der Anforderungs-Warteschleifen-Manager 82 schreibt die Daten an den DRAM-Controller 83, der dann die Daten an den externen gemeinsamen DRAM-Speicher 92 und letztendlich die NVRAM kommuniziert. Der Anforderungs-Warteschleifenmanager 82 stellt auch Informationen für den ZBT-Controller 84 bereit, welche als Schnittstelle zu dem externen gemeinsamen SRAM-Speicher 85 dient.
  • Der Anforderungs-Warteschleifenmanager 82 steht in Kommunikation mit dem Nachrichten-Warteschleifenmanager 85, welcher als Knotenpunkt für alle Nachrichten zwischen den verschiedenen Komponenten des Systems dient. Nachrichten von dem Nachrichten-Warteschleifenmanager 85 werden dem ,fast path uP-Schnittstellenmanager 86 bereitgestellt, welcher mit dem externen mode-Manager und dem Platten-Manager kommuniziert. Der Platten-Manager wird aus einem BMAP-Lese-Prozessor und einem BMAP-Schreibprozessor gebildet. Der Platten-Manager ist in einen Leseprozessor und einen Schreibprozessor zerlegt, um die Arbeitslast besser zu verteilen. Der Nachrichten-Warteschleifen-Manager 85 steht in Kommunikation mit dem Cache-Controller, welcher wiederum die Schnittstelle mit dem externen Cache-Status DRAM 95 bildet.
  • Der Nachrichten-Warteschleifen-Controller 85 und der Cache-Daten DRAM-Controller 93 stehen in Verbindung mit dem Verzeichnismanager 87, um Informationen bezüglich Daten zu erhalten, welche in externen Speichern gespeichert sind. Der Nachrichten-Warteschleifen-Controller 85 steht auch mit einer slow-path-Schnittstelle 88 in Verbindung, die mit einem externen ,blade control'-Prozessor 89 zur Wartung des Systems in Verbindung steht. Der ,fiber channel'-Manager 90 steht in Verbindung mit ,fiber channels' 91, welche sich außerhalb des Chips 94 für die Übertragung von Daten zu und von der Platte und Inodes erstrecken. Der Anforderungs-Warteschleifenmanager 82 steht auch in Verbindung mit dem Cache-Data DRAM-Controller 93, der eine Schnittstelle zu dem Cache-Datenspeicher 96 bildet.
  • Obwohl die Erfindung im Detail in den vorgenannten Ausführungsformen zum Zwecke der Veranschaulichung beschrieben worden ist, versteht es sich, dass solche Details lediglich solchem Zwecke dienen und dass Variationen hiervon durch Fachleute ausgeführt werden können, ohne vom Schutzumfang der Erfindung anzuweichen, es sei dem, dass es durch die nachfolgenden Ansprüche beschrieben wird.

Claims (13)

  1. Vorrichtung zur Übermittlung von Daten eines Clients eines Netzwerks (12), umfassend: zumindest eine Platte zum Speichern der Daten, wobei die Platteneinrichtung (14) einen Platten-Array (24) umfasst; einen Empfänger (16) zum Empfangen der Daten von dem Netzwerk (12) und zum Senden einer Bestätigung, dass die Daten gespeichert worden sind, über das Netzwerk (12) an den Client, und zwar bevor die Daten auf der Platte gespeichert worden sind, wobei der Empfänger in einer Datenverbindung mit der Platte steht; einen Speicher (18) zum Speichern der Daten, solange bis die Daten auf der Platte gespeichert sind, wobei der Empfänger (16) in einer Datenverbindung mit dem Speicher (18) steht, der Speicher (18) einen NVRAM (26) umfasst und der Empfänger (16) einen Anforderungs-Manager (28) umfasst, der ausgelegt ist, um die Schreibdaten von anderen Informationen, die von einem Client empfangen werden, zu trennen und diese Daten an den NVRAM (26) zu senden; eine erste Stromquelle (20), um der Platte, dem Speicher (18) und dem Empfänger Elektrizität zur Verfügung zu stellen, wobei die erste Stromquelle (20) elektrisch leitend mit der Platte, dem Speicher (18) und dem Empfänger verbunden ist; und eine zweite Stromquelle (22), die ausgelegt ist, um dem Speicher (18) Elektrizität zur Verfügung zu stellen, wenn die erste Stromquelle (20) ausfällt, wobei die zweite Stromquelle (22) mit dem Speicher (18) elektrisch leitend verbunden ist, dadurch gekennzeichnet, dass: der Empfänger (16) ausgelegt ist, um Daten von dem Client in einer beliebigen Reihenfolge zu empfangen und um zu verhindern, dass die Daten in falscher Weise in den Speicher (18) überschrieben werden, wenn die Daten ungeordnet empfangen wurden und die erste Stromquelle (20) ausgefallen ist, bevor die Daten in dem Speicher (18) gespeichert wurden; der Anforderungs-Manager (28) eine private Liste aufweist, welche die Daten in der Reihenfolge bezeichnet, in der eine Schreibanforderung von einem Client von dem Empfänger (16) ausführt bzw. bearbeitet wird, und der Anforderungs-Manager (28) ausgelegt ist, um die private Liste zu verwenden um zu gewährleisten, dass die Daten in der Reihenfolge in dem Speicher (18) erneut gespeichert werden, selbst wenn die Anforderungen ungeordnet bearbeitet werden und die erste Stromquelle (20) ausgefallen ist, bevor die Daten in den Platten-Array (24) geschrieben werden.
  2. Vorrichtung nach Anspruch 1, wobei der Empfänger einen Inode- bzw. Informationsknoten-Manager umfasst, der ausgelegt ist, um die Anforderungen von den Clients zu bearbeiten.
  3. Vorrichtung nach Anspruch 2, dadurch gekennzeichnet, dass der Empfänger einen Platten-Manager (32) umfasst, der ausgelegt ist, um den Platten-Array (24) zu verwalten und die Daten auf den Platten-Array (24) zu schreiben oder aus diesem auszulesen.
  4. Vorrichtung nach Anspruch 3, dadurch gekennzeichnet, dass der Empfänger einen Cache-Controller (34) umfasst, der ausgelegt ist, um zumindest Abschnitte von Dateien zu verwalten, die in dem Speicher (18) gespeichert sind, jedoch nicht auf dem Platten-Array (24) abgespeichert wurden.
  5. Vorrichtung nach Anspruch 4, dadurch gekennzeichnet, dass diese ausgelegt ist, so dass der NVRAM (26) das Ende einer Protokolldatei enthält, die auf dem Platten-Array (24) vorgesehen ist und sämtliche Änderungen an File-System-Metadaten nachverfolgt, um eine geeignete Rekonstruktion der Daten zu gewährleisten, wenn die erste Stromquelle (20) ausgefallen ist.
  6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, dass der NVRAM (26) NVRAM-Pufferspeicher (36), NVRAM-Deskriptoren (38) und Wiederherstellungsspeicher (40) umfasst.
  7. Vorrichtung nach Anspruch 6, dadurch gekennzeichnet, dass diese ausgelegt ist, so dass die NVRAM-Pufferspeicher (36) die Daten speichern, so wie diese von einem Client empfangen werden; die NVRAM-Deskriptoren (38) Informationen aufzeichnen, die für die Wiedergewinnung von Daten in deren zugeordneten NCRAM-Pufferspeichern relevant sind; die freie Liste von NVRAM-Pufferspeichern (36); und die Wiederherstellungsspeicher (40) einen Kopfteil und einen Zählwert der freien Liste speichern.
  8. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, dass die zweite Stromquelle (22) eine Batterie enthält.
  9. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, dass der Anforderungs-Manager (28) ausgelegt ist, um einer File-System-Anforderung, die von dem Empfänger über das Netzwerk (12) von dem Client empfangen wird, eine Anforderungszahl zuzuordnen, wobei die Anforderungszahl die Anforderung bezeichnet.
  10. Verfahren zur Übermittlung von Daten eines Clients eines Netzwerks (12), mit den folgenden Schritten: die Daten werden von dem Netzwerk (12) bei einer Vorrichtung empfangen, die von einer ersten Stromquelle (20) versorgt wird; an den Client wird über das Netzwerk (12) eine Bestätigung gesendet, dass die Daten auf einem Platten-Array (24) der Vorrichtung gespeichert worden sind, und zwar bevor die Daten auf dem Platten-Array (24) gespeichert worden sind; die Daten werden in einem Speicher (18) gespeichert, der von einer zweiten Stromquelle (22) versorgt wird, wenn die erste Stromquelle (20) ausfällt, so dass die Daten nicht verloren gehen, wenn die erste Stromquelle (20) ausfällt, solange bis die Daten auf dem Platten-Array (24) gespeichert werden; und die Daten werden auf dem Platten-Array (24) gespeichert; dadurch gekennzeichnet, dass der Schritt des Empfangens die Schritte umfasst, dass Daten ungeordnet empfangen werden und von einem Anforderungs-Manager (28) des Servers eine private Liste geführt wird, welche die Daten in der Reihenfolge bezeichnet, in der eine Schreibanforderung von dem Server ausgeführt bzw. bearbeitet wird und von dem Anforderungs-Manager (28) verwendet wird, um zu gewährleisten, dass Daten in der Reihenfolge in dem Speicher (18) selbst dann erneut gespeichert werden, wenn die Anforderung ungeordnet abgearbeitet werden und die erste Stromquelle (20) ausgefallen ist, bevor die Daten auf einen Platten-Array (24) geschrieben werden; und der Schritt des Speicherns der Daten in einem Speicher (18) den Schritt umfasst, dass verhindert wird, dass die Daten in falscher Weise in den Speicher (18) überschrieben werden, wenn die Daten ungeordnet empfangen worden sind und die erste Stromquelle (20) ausgefallen ist, bevor die Daten in dem Speicher (18) gespeichert werden.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass das Speichern der Daten in dem Speicher (18) den Schritt des Speicherns von Schreibdaten in einem NVRAM (26) umfasst.
  12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass der Schritt des Empfangens den Schritt eines Trennens der Schreibdaten von anderen Informationen umfasst, die über das Netzwerk (12) von dem Client empfangen werden.
  13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, dass der Schritt des Empfangens die Schritte eines Zuordnens einer Anforderungszahl zu einer Anforderung, die den Daten zugeordnet ist, sowie den Abbau einer Warteschlange in NVRAM-Pufferspeichern (36) in ausreichendem Maße umfasst, um die Schreibdaten zu halten bzw. zu speichern.
DE60317815T 2002-10-17 2003-10-09 Verfahren und system zur bereitstellung einer dauerhaften speicherung von benutzerdaten Expired - Lifetime DE60317815T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/274,066 US6938184B2 (en) 2002-10-17 2002-10-17 Method and system for providing persistent storage of user data
US274066 2002-10-17
PCT/US2003/032112 WO2004036353A2 (en) 2002-10-17 2003-10-09 Method and system for providing persistent storage of user data

Publications (2)

Publication Number Publication Date
DE60317815D1 DE60317815D1 (de) 2008-01-10
DE60317815T2 true DE60317815T2 (de) 2008-07-17

Family

ID=32092953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60317815T Expired - Lifetime DE60317815T2 (de) 2002-10-17 2003-10-09 Verfahren und system zur bereitstellung einer dauerhaften speicherung von benutzerdaten

Country Status (7)

Country Link
US (2) US6938184B2 (de)
EP (1) EP1552393B1 (de)
JP (1) JP4336313B2 (de)
AT (1) ATE379809T1 (de)
AU (1) AU2003282561A1 (de)
DE (1) DE60317815T2 (de)
WO (1) WO2004036353A2 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660945B1 (en) * 2004-03-09 2010-02-09 Seagate Technology, Llc Methods and structure for limiting storage device write caching
ATE347731T1 (de) * 2004-10-04 2006-12-15 Research In Motion Ltd System und verfahren zum datensichern bei stromausfall
US7330955B2 (en) * 2004-10-18 2008-02-12 Seagate Technology Llc Recovery record for updating a system configuration
US8321486B2 (en) * 2005-11-09 2012-11-27 Ca, Inc. Method and system for configuring a supplemental directory
US8326899B2 (en) 2005-11-09 2012-12-04 Ca, Inc. Method and system for improving write performance in a supplemental directory
US20070112812A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H System and method for writing data to a directory
US20070112791A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H Method and system for providing enhanced read performance for a supplemental directory
US8458176B2 (en) 2005-11-09 2013-06-04 Ca, Inc. Method and system for providing a directory overlay
US8572495B2 (en) 2005-12-15 2013-10-29 Microsoft Corporation Providing electronic distribution of filtered calendars
US20070143242A1 (en) * 2005-12-15 2007-06-21 Microsoft Corporation Disk-based cache
US7685171B1 (en) * 2006-09-22 2010-03-23 Emc Corporation Techniques for performing a restoration operation using device scanning
US7710075B1 (en) * 2007-01-31 2010-05-04 Network Appliance, Inc. Apparatus and implementation of a battery in a non volatile memory subsystem
US8639656B2 (en) 2007-02-02 2014-01-28 International Business Machines Corporation Method for implementing persistent file pre-allocation
US7877626B2 (en) * 2007-12-31 2011-01-25 Datadirect Networks, Inc. Method and system for disk storage devices rebuild in a data storage system
US8301742B2 (en) * 2008-04-07 2012-10-30 International Business Machines Corporation Systems and methods for coordinated management of power usage and runtime performance in performance-managed computing environments
US9678879B2 (en) * 2008-05-29 2017-06-13 Red Hat, Inc. Set partitioning for encoding file system allocation metadata
WO2010049929A1 (en) * 2008-10-27 2010-05-06 Kaminario Tehnologies Ltd. A mass-storage system utilizing solid-state storage and non-solid-state storage
US8065556B2 (en) * 2009-02-13 2011-11-22 International Business Machines Corporation Apparatus and method to manage redundant non-volatile storage backup in a multi-cluster data storage system
US9311018B2 (en) * 2010-05-11 2016-04-12 Taejin Info Tech Co., Ltd. Hybrid storage system for a multi-level RAID architecture
US8812908B2 (en) 2010-09-22 2014-08-19 Microsoft Corporation Fast, non-write-cycle-limited persistent memory for secure containers
CN102455902B (zh) 2010-10-29 2015-09-16 国际商业机器公司 用于对象持久化的方法以及计算机系统
US9229816B2 (en) * 2011-03-14 2016-01-05 Taejin Info Tech Co., Ltd. Hybrid system architecture for random access memory
JP5751488B2 (ja) * 2011-07-26 2015-07-22 横河電機株式会社 ファイル管理装置
US10613982B1 (en) * 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US9632932B1 (en) * 2013-06-21 2017-04-25 Marvell International Ltd. Backup-power-free cache memory system
US9665493B2 (en) * 2014-10-03 2017-05-30 International Business Machines Corporation Increased cache performance with multi-level queues of complete tracks
US10318340B2 (en) * 2014-12-31 2019-06-11 Ati Technologies Ulc NVRAM-aware data processing system
US10318649B2 (en) * 2017-04-18 2019-06-11 International Business Machines Corporation Implementing a secondary storage dentry cache
KR102277728B1 (ko) * 2017-07-31 2021-07-14 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 시스템의 데이터 저장 방법, 및 솔리드 스테이트 드라이브의 제조 방법
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0833864B2 (ja) * 1990-01-30 1996-03-29 富士通株式会社 データ保全方式
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5335352A (en) * 1990-09-24 1994-08-02 Emc Corporation Reconfigurable, multi-function data storage system controller selectively operable as an input channel adapter and a data storage unit adapter
AU661304B2 (en) * 1991-03-05 1995-07-20 Zitel Corporation Cache memory system and method of operating the cache memory system
US5359569A (en) * 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
US5761406A (en) * 1992-07-31 1998-06-02 Fujitsu Limited Method of controlling data transfer and a safe shutdown in a hierarchical cache system during power cut-off
US5295577A (en) * 1993-03-26 1994-03-22 Minter Theodore M Storage system for compact discs
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5613155A (en) * 1995-06-07 1997-03-18 International Business Machines Corporation Bundling client write requests in a server
US6339787B1 (en) * 1995-11-30 2002-01-15 Stampede Technologies, Inc. Apparatus and method for increasing speed in a network file/object oriented server/client system
JP3477689B2 (ja) * 1995-12-07 2003-12-10 株式会社日立製作所 磁気ディスク制御装置
US5893140A (en) * 1996-08-14 1999-04-06 Emc Corporation File server having a file system cache and protocol for truly safe asynchronous writes
US6295577B1 (en) * 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
JP3745552B2 (ja) * 1999-02-26 2006-02-15 富士通株式会社 情報記憶装置
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6606694B2 (en) * 2000-12-22 2003-08-12 Bull Hn Information Systems Inc. Write logging in mirrored disk subsystems
US20020156983A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Method and apparatus for improving reliability of write back cache information
US20040139167A1 (en) 2002-12-06 2004-07-15 Andiamo Systems Inc., A Delaware Corporation Apparatus and method for a scalable network attach storage system
US6898685B2 (en) * 2003-03-25 2005-05-24 Emc Corporation Ordering data writes from a local storage device to a remote storage device
US8214588B2 (en) * 2003-11-05 2012-07-03 International Business Machines Corporation Parallel asynchronous order-preserving transaction processing
US8250406B2 (en) * 2003-08-19 2012-08-21 Intel Corporation Operational state preservation in the absence of AC power
US7249229B2 (en) * 2004-03-31 2007-07-24 Gemini Mobile Technologies, Inc. Synchronous message queues
US7334158B2 (en) * 2004-06-29 2008-02-19 Intel Corporation Power fault handling method, apparatus, and system
US8032787B2 (en) * 2004-09-02 2011-10-04 Intel Corporation Volatile storage based power loss recovery mechanism
JP4699091B2 (ja) * 2005-05-31 2011-06-08 株式会社日立製作所 ディザスタリカバリ方法およびシステム

Also Published As

Publication number Publication date
US20060031422A1 (en) 2006-02-09
EP1552393A2 (de) 2005-07-13
US6938184B2 (en) 2005-08-30
WO2004036353A3 (en) 2004-07-08
US7380158B2 (en) 2008-05-27
AU2003282561A1 (en) 2004-05-04
JP4336313B2 (ja) 2009-09-30
WO2004036353A2 (en) 2004-04-29
EP1552393B1 (de) 2007-11-28
AU2003282561A8 (en) 2004-05-04
US20040078623A1 (en) 2004-04-22
JP2006503370A (ja) 2006-01-26
ATE379809T1 (de) 2007-12-15
DE60317815D1 (de) 2008-01-10
EP1552393A4 (de) 2006-11-22

Similar Documents

Publication Publication Date Title
DE60317815T2 (de) Verfahren und system zur bereitstellung einer dauerhaften speicherung von benutzerdaten
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE69636330T2 (de) Verfahren für On-line- und Echzeit-Datenmigration
DE69907631T2 (de) Netzzugang zu inhaltsadressierbaren daten
DE102008015662B4 (de) Beseitigung von Daten
DE60204729T2 (de) Objektenlöschen von einem Vorrichtungspeicher
DE19982999B4 (de) Computersystem und Verfahren zum Transferieren von Daten
DE69831944T2 (de) Vorrichtung und verfahren zur sicherung eines plattenspeichersystem
DE602005001041T2 (de) Speicherauszugssystem
DE69918470T2 (de) Verwalten einer Ressource, welche von einer Mehrzahl von Knoten verwendet wird
DE60018872T2 (de) System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen
DE69729011T2 (de) System und verfahren zum unterhalten eines logisch konsistenten backups unter verwednung von minimalen daten-transfer
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE60113586T2 (de) Übertragen von miteinander verbundenen Datenobjekten in einer verteilten Datenspeicherumgebung
US7831561B2 (en) Automated disk-oriented backups
DE69722962T2 (de) Strukturiertes datenspeichersystem mit global adressierbarem speicher
DE602005000819T2 (de) Aufrechterhaltung der konsistenz einer fernkopie unter verwendung von virtualisierung
DE69733305T2 (de) System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem
DE602005002532T2 (de) Cluster-datenbank mit ferndatenspiegelung
DE10393771T5 (de) Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)
DE60313468T2 (de) Speicherdienste und -systeme
DE4221073A1 (de) Datenspeichersystem und -verfahren mit geraeteunabhaengigen dateiverzeichnissen
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: 2K PATENTANWAELTE BLASBERG KEWITZ & REICHEL, PARTN