DE112012005275T5 - Datenauswahl zur Sicherung von Datenspeichern - Google Patents

Datenauswahl zur Sicherung von Datenspeichern Download PDF

Info

Publication number
DE112012005275T5
DE112012005275T5 DE112012005275.7T DE112012005275T DE112012005275T5 DE 112012005275 T5 DE112012005275 T5 DE 112012005275T5 DE 112012005275 T DE112012005275 T DE 112012005275T DE 112012005275 T5 DE112012005275 T5 DE 112012005275T5
Authority
DE
Germany
Prior art keywords
data object
data
storage pool
referenced
volume
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.)
Granted
Application number
DE112012005275.7T
Other languages
English (en)
Other versions
DE112012005275B4 (de
Inventor
c/o IBM Corporation Elder Robert Scott
c/o IBM Corporation Cannon David Maxwell
c/o IBM Corporation Anglin Matthew Joseph
c/o IBM Corporation Dawson Colin Scott
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012005275T5 publication Critical patent/DE112012005275T5/de
Application granted granted Critical
Publication of DE112012005275B4 publication Critical patent/DE112012005275B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data

Abstract

Bei einer Technik zur Datenspeicherverwaltung wird ein erstes dedupliziertes Datenobjekt in einem primären Speicherpool gespeichert. Der Zeitraum, während dessen sich das erste Datenobjekt im primären Speicherpool befindet, wird ermittelt und der ermittelte Zeitraum mit einem vorgegebenen Zeitintervall verglichen. Nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, gehören zu der Technik das Ermitteln, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird, und, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, das Ermitteln, ob das erste Datenobjekt vom primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Beschreibung betrifft allgemein die Datensicherung beim Computersystem und insbesondere das Auswählen von Daten zum Verschieben von einer Quelle auf ein Ziel.
  • HINTERGRUND
  • Es gibt verschiedene bekannte Techniken für das Sichern von Daten. Diese Sicherungstechniken werden oft unter Verwendung eines Speicherverwaltungsservers realisiert, der Datenobjekte wie zum Beispiel Benutzerdateien an einem oder mehreren Speicherorten speichern kann, die oftmals als Speicherpools bezeichnet werden. Der Speicherverwaltungsserver nutzt häufig eine Datenbank zum Verfolgen von Informationen über die gespeicherten Objekte, zu denen Attribute und Speicherorte der Objekte in den Speicherpools gehören.
  • Eine als „Deduplizierung” bezeichnete Sicherungstechnik ist ein Verfahren zum Verringern des zur Speicherung von Daten belegten Speicherplatzes, indem redundante Daten in Dateien beseitigt und Daten gemeinsam genutzt werden. Bei Deduplizierungssystemen wird normalerweise nur eine eindeutige Instanz der Daten tatsächlich auf Speichermedien wie zum Beispiel Platte oder Band gehalten, und weitere Instanzen der Daten in anderen Dateien oder Datenbanken können durch einen Zeiger auf die eindeutige Datenkopie ersetzt werden. Daher können, wenn sich nur wenige Bytes einer neu hinzugefügten Datei von Daten in anderen Dateien unterscheiden, die neuen Bytes für die neue Datei gespeichert werden, und Zeiger werden in die hinzugefügte Datei aufgenommen, die auf die gemeinsam genutzten Daten in anderen Dateien oder Datenbanken verweisen.
  • Somit bietet die Deduplizierung ein Verfahren zum Entfernen redundanter Daten während eines Sicherungsvorgangs, wodurch erforderlicher Speicherplatz verringert und möglicherweise Netzwerkbandbreite eingespart wird. Ein Deduplizierungssystem funktioniert oftmals so, dass eine Datei in eine Reihe von Datenblöcken bzw. Speicherbereichen aufgeteilt wird. Das Deduplizierungssystem ermittelt, ob beliebige der Datenblöcke bereits gespeichert sind, und geht dann dazu über, nur diese nicht redundanten Datenblöcke zu speichern. Die Redundanz kann während des Speicherns von Datenblöcken in der Datei oder an den bereits im System gespeicherten Datenblöcken geprüft werden.
  • Cache-Zwischenspeicher werden häufig verwendet, um Daten zeitweilig zu speichern, die aus dem Speicher abgerufen wurden. Derartige Cache-Zwischenspeicher können einen schnelleren Zugriff auf Daten bereitstellen, die häufig verwendet werden oder von denen anderweitig vermutet wird, dass sie benötigt werden. Es gibt verschiedene bekannte Zwischenspeicherungsalgorithmen, um Daten auszuwählen, die im Cache-Zwischenspeicher gehalten oder aus dem Cache-Zwischenspeicher gelöscht werden sollen. Zu derartigen Zwischenspeichertechniken gehört die First-In-First-Out-Technik (FIFO-Technik), die die ältesten Dateien aus dem Cache-Zwischenspeicher löschen kann. Eine weitere Zwischenspeichertechnik ist die LRU-Technik (LRU = Least Recently Used, am längsten nicht verwendet (bzw. gelesen)), die die am längsten nicht verwendeten Daten aus dem Cache-Zwischenspeicher löschen kann.
  • KURZDARSTELLUNG
  • Bei einem Aspekt der vorliegenden Erfindung werden Operationen zum Verwalten von Datenspeicher in einem Datenverarbeitungssystem beschrieben. Bei einer Ausführungsform gehören zu den Operationen das Speichern eines ersten deduplizierten Datenobjekts in einem primären Speicherpool, das Ermitteln des Zeitraums, während dessen sich das erste Datenobjekt im primären Speicherpool befindet, das Vergleichen des ermittelten Zeitraums mit einem vorgegebenen Zeitintervall, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, das Ermitteln, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird, und, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, das Ermitteln, ob das erste Datenobjekt vom primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  • Bei einem weiteren Aspekt gehört, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu dem oben erwähnten Ermitteln, ob das erste Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  • Bei noch einem weiteren Aspekt werden weitere Operationen beschrieben, die das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, einen Schwellenwert überschreitet.
  • Bei einem noch weiteren Aspekt werden weitere Operationen beschrieben, die das Speichern eines zweiten deduplizierten Datenobjekts in einem primären Speicherpool aufweisen, das Ermitteln des Zeitraums, während dessen sich das zweite Datenobjekt im primären Speicherpool befindet, das Vergleichen des ermittelten Zeitraums für das zweite Datenobjekt mit einem vorgegebenen Zeitintervall, nachdem der ermittelte Zeitraum für das zweite Datenobjekt dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, das Ermitteln, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird, und, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, das Ermitteln, ob das zweite Datenobjekt vom primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  • Bei einem weiteren Aspekt gehört, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu dem oben erwähnten Ermitteln, ob das zweite Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  • Bei noch einem weiteren Aspekt werden weitere Operationen beschrieben, die das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  • Bei noch einem weiteren Aspekt werden weitere Operationen beschrieben, die beim Speichern eines ersten Datenträgers, der deduplizierte Datenobjekte in einem primären Speicherpool enthält, bei jedem Datenobjekt des ersten Datenträgers aufweisen: Ermitteln des Zeitraums, während dessen sich ein Datenobjekt des ersten Datenträgers im primären Speicherpool befindet, Vergleichen des zu dem Datenobjekt des ersten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall, und nachdem der zu dem Datenobjekt des ersten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des ersten Datenträgers, auf den nicht durch ein anderes Objekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des ersten Datenträgers, und Ermitteln, ob die Datenobjekte des ersten Datenträgers als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes vom primären Speicherpool auf einen sekundären Speicherpool verschoben werden sollen.
  • Bei einem weiteren Aspekt wird das oben erwähnte vorgegebene Zeitintervall zu jedem Datenobjekt des ersten Datenträgers als Funktion von mindestens einem aus einem Zeitintervall zwischen Sicherungsereignissen an einer Client-Station, einer Weitergabezeit von Duplikatdaten zwischen Client-Stationen und einer Sicherungs-Verarbeitungszeit für ein im primären Speicherpool gespeichertes Datenobjekt.
  • Bei einem weiteren Aspekt werden weitere Operationen beschrieben, aufweisend: Speichern eines zweiten Datenträgers, der deduplizierte Datenobjekte in einem primären Speicherpool enthält, bei jedem Datenobjekt des zweiten Datenträgers: Ermitteln des Zeitraums, während dessen sich ein Datenobjekt des zweiten Datenträgers im primären Speicherpool befindet, Vergleichen des zu dem Datenobjekt des zweiten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall, und nachdem der zu dem Datenobjekt des zweiten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des zweiten Datenträgers, auf den nicht durch ein anderes Objekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des zweiten Datenträgers, und Ermitteln, ob die Datenobjekte des zweiten Datenträgers als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes vom primären Speicherpool auf einen sekundären Speicherpool verschoben werden sollen.
  • Bei einem weiteren Aspekt gehört, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu dem oben erwähnten Ermitteln, ob die Datenobjekte des zweiten Datenträgers verschoben werden sollen, das Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche des zweiten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  • Bei einem weiteren Aspekt werden weitere Operationen beschrieben, die das Verschieben der Datenobjekte des ersten Datenträgers vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  • Je nach dem jeweiligen Anwendungsfall können andere Merkmale und Aspekte realisiert werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Im Folgenden werden Ausführungsformen der Erfindung unter Bezugnahme auf die beigefügten Zeichnungen beispielhaft beschrieben, wobei:
  • 1 ein Beispiel einer Datenverarbeitungsumgebung veranschaulicht, in der Aspekte der veranschaulichenden Ausführungsformen realisiert sein können;
  • 2 ein Blockschema einer digitalen Datenverarbeitungsmaschine der Ausführungsform aus 1 ist;
  • 3 ein beispielhaftes Signalträgermedium gemäß beschriebenen Ausführungsformen ist;
  • 4 ein Blockschema ist, das die Teilkomponenten einer veranschaulichenden Speicherhierarchie gemäß beschriebenen Ausführungsformen zeigt;
  • 5 ein weiteres Beispiel einer Datenverarbeitungsumgebung veranschaulicht, in der Aspekte der veranschaulichenden Ausführungsformen realisiert sein können;
  • die 6, 7 Ausführungsformen von Operationen veranschaulichen, um Daten auszuwählen, die auf einen sekundären Speicher verschoben werden;
  • 8 ein weiteres Beispiel einer Datenverarbeitungsumgebung veranschaulicht, in der Aspekte der veranschaulichenden Ausführungsformen realisiert sein können;
  • 9 eine Realisierungsform eines Knotens in der Netzwerk-Datenverarbeitungsausführungsform veranschaulicht;
  • 10 eine Ausführungsform einer Cloud-Computing-Umgebung veranschaulicht; und
  • 11 eine Ausführungsform von Abstraktionsmodellschichten einer Cloud-Computing-Umgebung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Beschriebene Ausführungsformen stellen das Sichern von Daten bereit. Im hierin verwendeten Sinne gilt der Begriff „Sicherung” für die durch ein Datenverwaltungssystem durchgeführten Datenspeicheroperationen einschließlich des Archivierens, Migrierens, Replizierens und Deduplizierens von Daten sowie des Kopierens von Daten zum Schutz vor Datenverlust. Bei einer Ausführungsform ist diese Beschreibung auf das Auswählen von Daten zur Verschiebung von einer Quelle zu einem Ziel gerichtet.
  • Bei einem Merkmal der vorliegenden Beschreibung kann, nachdem sich das erste Datenobjekt während eines Zeitraums im primären Speicherpool befindet, der einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, eine Ermittlung dahingehend durchgeführt werden, ob ein erstes Datenobjekt von einem primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Objekt verwiesen wird. Als weiteres Beispiel kann, nachdem ermittelte Zeiträume zum ersten und zweiten Datenobjekt einem vorgegebenen Zeitintervall entsprechen oder dieses überschreiten, als Funktion der Gesamtgröße von Speicherbereichen, auf die nicht durch ein anderes Datenobjekt verwiesen wird, eine Ermittlung dahingehend durchgeführt werden, ob das erste Datenobjekt anstelle eines zweiten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool verschoben werden soll. Je nach dem jeweiligen Anwendungsfall können andere Auswahlkriterien verwendet werden.
  • Wie nachstehend ausführlicher erläutert wird, kann die Auswahl von Daten zur Verschiebung von einer Quelle zu einem Ziel gemäß beschriebenen Ausführungsformen die Wirksamkeit von Sicherungsoperationen bei einigen Ausführungsformen verbessern. Zum Beispiel kann unnötiger Netzwerkverkehr verringert oder unterbunden werden. Je nach dem jeweiligen Anwendungsfall können zusätzlich oder stattdessen andere Merkmale realisiert werden.
  • Bei einer typischen Konfiguration ist ein auf Platten beruhendes Speichersystem wie zum Beispiel ein Speicherverwaltungsserver in der Lage, eine Datei (oder ein anderes Datenobjekt wie zum Beispiel eine Datenbank) A in die Speicherbereiche a bis h zu unterteilen, zu erkennen, dass die Speicherbereiche b und e redundant sind, und nur die eindeutigen Speicherbereiche zu speichern. Die Redundanz könnte innerhalb des Datenobjekts A oder bei anderen Datenobjekten auftreten, die im Speichersystem gespeichert sind.
  • Normalerweise wird das Objekt unter Verwendung eines Verfahrens wie zum Beispiel Rabin Fingerprint in Speicherbereiche unterteilt. Redundante Speicherbereiche können unter Verwendung einer Hash-Funktion wie zum Beispiel MD5 oder SHA-1 erkannt werden, um zu jedem Speicherbereich einen Hash-Wert zu erzeugen und diesen Wert anschließend mit Werten für Speicherbereiche zu vergleichen, die bereits im System gespeichert sind.
  • Normalerweise werden die Hash-Werte zu gespeicherten Speicherbereichen in einem Index wie zum Beispiel einer Datenbank gehalten. Wenn ein redundanter Speicherbereich erkannt wird, kann dieser Speicherbereich durch einen Zeiger auf den übereinstimmenden Speicherbereich ersetzt werden, wodurch ein Verweis auf diesen Speicherbereich gebildet wird. In einem Client-Server-Softwaresystem kann die Deduplizierung während der Sicherung an der Quelle (Client), am Ziel (Server) oder auf einer Deduplizierungseinheit durchgeführt werden, die mit dem Server verbunden ist. Außerdem können deduplizierte Daten zwischen mehreren Servern repliziert werden, sodass der Quellserver Speicherbereiche nur an den Zielserver sendet, wenn sich diese Speicherbereiche nicht bereits auf dem Ziel befinden.
  • Datenobjekte und ihre deduplizierten Speicherbereiche können auf der Platte oder auf einem anderen Speicher-Teilsystem als einzelne Dateien in einem Dateisystem gespeichert werden. Alternativ können viele Datenobjekte und Speicherbereiche zusammen als Sammlung in einer größeren Datei gespeichert werden, die sich in einem Dateisystem befindet. Zum Beispiel kann eine Sammlung von Datenobjekten und deren Speicherbereichen als „Datenträger” bezeichnet werden.
  • Viele andere Techniken werden bisher eingesetzt bzw. wurden vorgeschlagen, um die Betriebsleistung zu erhöhen. Beispielsweise können Speicherpools für Medien mit sequenziellen Zugriff wie zum Beispiel ein Magnetband zur „Zusammenstellung” konfiguriert werden, wodurch der Speicherverwaltungsserver veranlasst wird, Daten für denselben Client-Knoten auf demselben Band bzw. denselben Bändern zu gruppieren. Außerdem können kleine Objekte auf dem Speicherverwaltungsserver zu einer einzigen Einheit zusammengefasst werden, wenn sie durch den Speicherverwaltungsserver empfangen werden. Das US-Patent Nr. 6 098 074 beschreibt eine Zusammenfassungstechnik, bei der Objekte in einer „verwalteten Datei” zusammengefasst werden. Die Objekte können anschließend als einzelne verwaltete Datei überwacht und innerhalb der Speicherhierarchie verschoben werden. Gegebenenfalls können einzelne Objekte einzeln verarbeitet werden, wie zum Beispiel bei Lösch- oder Abrufoperationen.
  • Die Datenreplikation dient dazu, Daten von einem Server, der Daten von mehreren Client-Knoten sichert, auf einen anderen Server zu replizieren, sodass die Clients ihre Daten vom Replikationsort wiederherstellen können, wenn der Haupt-Quellserver ausfällt. Ein Speicherverwaltungsserver wie zum Beispiel Tivoli® Storage Manager (TSM) speichert Datenobjekte in einem oder mehreren Speicherpools und nutzt eine Datenbank, um Metadaten über die gespeicherten Objekte zu überwachen. (Tivoli ist eine weltweite Marke der International Business Machines Corporation.) Der Speicherverwaltungsserver kann die Datenobjekte zum Zweck der Notfallwiederherstellung auf einen entfernt angeordneten Speicherort replizieren. Zu einigen Verfahren, die zur Migration von Daten an einen entfernt angeordneten Speicherort verwendet werden, gehören das physische Transportieren von Bändern, die Kopien der Daten enthalten, vom Quellort zum Notfallwiederherstellungsort, das elektronische Übertragen der Daten (TSM-Export/-Import) oder das Verwenden der Hardwarereplikation des Plattenspeichers des Quellortes, um eine Spiegelung der Daten zu erzeugen. Zu verfügbaren Replikations-Hardwareeinheiten gehören VTL-Produkte (VTL = Virtual Tape Library, virtuelles Bandarchiv), die unter Verwendung von Deduplizierungshardware eine Replikation auf Blockebene durchführen.
  • Außerdem können Daten in einem Speicherverwaltungssystem wie zum Beispiel einem Sicherungsserver in einer Speicherpoolhierarchie gespeichert werden, die das Speichern von Daten in einer Vielfalt von Einheiten mit verschiedenen Eigenschaften wie zum Beispiel Kosten und Leistungsfähigkeit ermöglicht. Bestimmte Richtlinien zum Verwalten von Daten können auf der Speicherpoolebene angewendet werden, um die geeignete Einheit zu ermitteln, auf der Objekte gespeichert werden sollen. Zum Beispiel könnte eine obere Ebene in der Hierarchie (die als „primärer Speicher” oder „primärer Pool” bezeichnet werden kann) aus Plattenmedien bestehen, deren Daten dedupliziert sind. Eine untere Ebene in der Hierarchie (die als „sekundärer Speicher” bezeichnet werden kann) könnte langsamere, weniger teure Speicher wie zum Beispiel ein Magnetband aufweisen.
  • Nach dem Speichern auf dem Speicherverwaltungsserver können Datenobjekte verschoben und kopiert werden, wobei Datenübertragungsoperationen wie zum Beispiel die Migration verwendet werden, bei der Objekte von einem Speicherpool auf einen anderen Speicherpool verschoben werden. Zum Beispiel kann ein Objekt von einem relativ schnellen und teuren Speicher wie zum Beispiel einer Platte zu einem relativ langsamen und kostengünstigen Speicher wie zum Beispiel einem Band migriert werden. Zu weiteren Datenübertragungsoperationen gehören Speicherpool-Sicherungen, bei denen Objekte in einem Speicherpool zu Verfügbarkeits- und Wiederherstellungszwecken auf einen anderen Pool dupliziert oder kopiert werden.
  • In der folgenden Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und mehrere Ausführungsformen veranschaulichen. Es versteht sich, dass andere Ausführungsformen genutzt und strukturelle und betriebstechnische Änderungen vorgenommen werden können, ohne vom Schutzbereich der vorliegenden Erfindung abzuweichen.
  • Ein Aspekt der Beschreibung, der hierin bereitgestellt wird, betrifft ein Speicherverwaltungssystem, das durch verschiedene Hardwarekomponenten und Verbindungen verkörpert sein kann. Ein Beispiel wird durch das Speicherverwaltungssystem 100 aus 1 dargestellt. Grob gesagt weist das System 100 ein Datenspeicher-Teilsystem 102, eine oder mehrere Administratorstationen 104 und eine oder mehrere Client-Stationen 106 auf. Das Teilsystem 102 arbeitet als Reaktion auf Anweisungen der Client-Stationen 106 sowie der Administratorstationen 104.
  • Die Administratorstationen 104 werden durch Systemadministratoren genutzt, um das Teilsystem 102 zu konfigurieren, zu überwachen und zu reparieren. Unter Anweisung eines Endbenutzers verwenden die Client-Stationen 106 das Teilsystem 102 zur Speicherung und Verwaltung von Daten in ihrem Auftrag. Insbesondere erzeugt jede Client-Station 106 Daten in Form von „Benutzerdateien” und nimmt auf diese Bezug. In diesem Zusammenhang nutzte jede Client-Station 106 das Teilsystem 102 getrennt, um ihre Benutzerdateien zu archivieren, zu sichern, abzurufen und wiederherzustellen. Dementsprechend gehört jede Benutzerdatei zu einer einzigen Client-Station 106, die die Quelle dieser Benutzerdatei bildet.
  • Jede Client-Station 106 kann einen beliebigen Mehrzweckcomputer wie zum Beispiel eine Power-Systems-Workstation, einen Personal Computer auf der Grundlage von Intel-Prozessoren, einen Großrechner usw. aufweisen. Die Client-Stationen 106 können ähnliche oder unterschiedliche Maschinen aufweisen, die ähnliche oder unterschiedliche Betriebssysteme ausführen. Zu einigen beispielhaften Betriebssystemen gehören AIXTM, UNIX, WindowsTM usw.
  • Die Client-Stationen 106 sind durch ein Netzwerk 116 mit dem Teilsystem 102 verbunden. Das Netzwerk 116 kann eine beliebige Verbindung aufweisen, zu der eine bzw. einer oder mehrere leitfähige Drähte oder Busse, Lichtwellenleiter, Datenaustauschkanäle, drahtlose Verbindungen, Internetverbindungen, Telefonleitungen, Speichernetzwerk (Storage Area Network, SAN), lokale Netzwerke (Local Area Network, LAN), Intranet, das Internet, Weitverkehrsnetzwerke (Wide Area Network, WAN) usw. gehören. Vorzugsweise wird ein schneller Datenaustauschkanal wie zum Beispiel eine T3-Verbindung verwendet, die ein Netzwerkprotokoll wie zum Beispiel TCP/IP nutzt.
  • Die Administratorstationen 104 weisen elektronische Ausrüstungen für einen menschlichen oder automatisierten Speicheradministrator auf, um dem Teilsystem 102 maschinenlesbare Anweisungen zu übermitteln. Daher können die Stationen 104 je nach dem speziellen Anwendungsfall mit Prozessoren ausgestattete Mehrzweckcomputer oder „dumme” Terminals aufweisen.
  • Bei einer beispielhaften Ausführungsform kann das Datenspeicher-Teilsystem 102 einen handelsüblichen Server wie zum Beispiel den Tivoli Storage ManagerTM (TSMTM) aufweisen, ein von IBM vertriebenes Produkt, das so abgeändert wurde, dass es gemäß den hierin bereitgestellten Beschreibungen arbeitet. Da jedoch andere Hardwareanordnungen ebenfalls verwendet werden können, wird nachfolgend eine verallgemeinerte Sicht auf das Teilsystem 102 erörtert.
  • Das Datenspeicher-Teilsystem 102 weist eine Datenverarbeitungsvorrichtung mit einem Aufbau auf, der nachfolgend ausführlicher erörtert wird. Die Datenverarbeitungsvorrichtung 108 tauscht Signale mit dem Netzwerk 116 und den Client-Stationen 106 über eine Schnittstelle 112 auf, und sie tauscht gleichfalls Signale mit den Administratorstationen 104 über eine Schnittstelle 110 aus. Die Schnittstellen 110, 112 können jede beliebige Einheit aufweisen, die zum Datenaustausch mit der realisierten Ausführungsform der Client-Station und Administratorstation geeignet sind. Zum Beispiel können die Schnittstellen 110, 112 Ethernet-Karten, SCSI-Schnittstellen (SCSI = Small Computer System Interface), parallele Datenanschlüsse, serielle Datenanschlüsse, Telefonmodems, Lichtwellenleiterverbindungen, drahtlose Verbindungen usw. aufweisen.
  • Die Datenverarbeitungsvorrichtung 108 ist zudem mit einer Datenbank 113 und einer Speicherhierarchie 114 verbunden. Wie nachfolgend ausführlicher erörtert wird, wird die Speicherhierarchie 114 verwendet, um ausgewählte einzelne Benutzerdateien in einer nicht zusammengefassten Sammlung zu speichern. Außerdem wird die Speicherhierarchie verwendet, um „verwaltete Dateien” zu speichern. Jede verwaltete Datei weist normalerweise mehrere Bestandteile in Form von Benutzerdateien auf, die als „Zusammenfassungs”-Datei gespeichert sind. In einigen Fällen kann eine verwaltete Datei eine einzelne Benutzerdatei sein (als solche gespeichert). Die Speicherung von Benutzerdateien in nicht zusammengefasster und in zusammengefasster Form durch das Teilsystem kann diese Dateien vor Verlust oder Beschädigung auf der Maschine des Clients schützen, zur besseren Funktion der Clients durch Freigeben von Speicherplatz auf den Client-Stationen beitragen und außerdem die Verwaltung von Client-Daten bereitstellen. In diesem Zusammenhang können zu den Operationen der Speicherhierarchie 114 das „Archivieren”, „Deduplizieren”, „Replizieren” und anderweitiges „Sichern” von Dateien der Client-Stationen 106 in die Speicherhierarchie 114, das „Abrufen” gespeicherter Dateien für Client-Stationen 106 und das „Wiederherstellen” von Dateien gehören, die in der Hierarchie 114 gesichert sind.
  • Die Datenbank 113 enthält Informationen über die in der Speicherhierarchie 114 enthaltenen Dateien. Beispielsweise können, wie im US-Patent Nr. 6 098 074 beschrieben, zu diesen Informationen die Adressen gehören, an denen verwaltete Dateien in der Speicherhierarchie 114 gespeichert sind, verschiedene Eigenschaften der gespeicherten Daten, bestimmte Client-spezifische Datenverwaltungsvoreinstellungen usw.
  • Die Datenverarbeitungsvorrichtung 108 kann durch verschiedene Hardwarekomponenten und Verbindungen verkörpert sein. 2 zeigt ein Beispiel in Form einer digitalen Datenverarbeitungsvorrichtung 200.
  • Die Vorrichtung 200 weist eine Verarbeitungseinheit 202 wie zum Beispiel einen Mikroprozessor oder eine andere Verarbeitungsmaschine auf, die mit der Speichereinheit 204 verbunden ist. Bei dem vorliegenden Beispiel weist die Speichereinheit 204 eine oder mehrere Speichereinheiten wie zum Beispiel einen Schnellzugriffsspeicher 206 und einen nichtflüchtigen Speicher 208 auf. Der Schnellzugriffspeicher 206 weist vorzugsweise Direktzugriffsspeicher auf und kann zur Speicherung von Programmieranweisungen verwendet werden, die durch die Verarbeitungseinheit 202 ausgeführt werden. Der nichftlüchtige Speicher 208 kann zum Beispiel eine oder mehrere magnetische Datenspeicherplatten wie zum Beispiel ein „Festplattenlaufwerk”, ein Bandlaufwerk oder eine beliebige andere geeignete Speichereinheit aufweisen. Außerdem gehören zur Vorrichtung 200 mindestens eine Eingabe/Ausgabe 210 wie zum Beispiel eine Leitung, ein Bus, ein Kabel, eine elektromagnetische Verbindung oder andere Mittel zum Austauschen von Daten zwischen der Verarbeitungseinheit 202 und anderen Komponenten des Teilsystems 102.
  • Ungeachtet der vorstehenden speziellen Beschreibung werden Fachleute (die von dieser Offenbarung profitieren) erkennen, dass die oben erörterte Vorrichtung in einer Maschine mit anderem Aufbau realisiert sein kann, ohne vom Schutzbereich der Erfindung abzuweichen. Als spezielles Beispiel kann eine der Komponenten 206 oder 208 weggelassen werden; ferner kann die Speichereinheit 204 auf der Platine der Verarbeitungseinheit 202 oder sogar außerhalb der Vorrichtung 200 bereitgestellt sein.
  • Die Speicherhierarchie 114 kann je nach den speziellen Anforderungen der Clients in Speichermedien in verschiedener Anzahl und mit verschiedenen Eigenschaften realisiert sein. Um eigens ein Beispiel zu veranschaulichen, ist in 4 eine repräsentative Speicherhierarchie 400 abgebildet. Die Hierarchie 400 weist mehrere Ebenen 402 bis 410 auf, wobei aufeinanderfolgende höhere Ebenen für eine zunehmend höhere Speicherleistungsfähigkeit stehen. Die Ebenen 402 bis 410 stellen Speichereinheiten mit einer Vielfalt von Merkmalen und Leistungscharakteristiken bereit.
  • Bei diesem Beispiel weist die erste Ebene 402 Speichereinheiten wie zum Beispiel magnetische Festplattenlaufwerke, beschreibbare optische Platten oder andere Direktzugriffspeichereinheiten (Direct Access Storage Devices, DASDs) auf. Die Ebene 402 stellt den schnellsten Datenspeicher und die kürzeste Abrufzeit aller Ebenen 402 bis 410 bereit, obwohl es sich um den kostenintensivsten Speicher handelt. Die zweite Ebene 404 weist DASDs mit weniger wünschenswerten Leistungscharakteristiken als die Ebene 402 auf, ist aber weniger kostenintensiv. Die dritte Ebene 406 weist mehrere optische Platten und ein oder mehrere optische Plattenlaufwerke auf. Die vierte und fünfte Ebene 408 bis 410 weisen weniger kostenintensive Speichermedien wie zum Beispiel Magnetband oder andere Speichereinheiten mit sequenziellem Zugriff auf.
  • Die Ebenen 408 bis 410 können besonders zur kostengünstigen Langzeit-Datenarchivierung geeignet sein, während sich die Ebenen 402 bis 406 für die kurzzeitige Datenspeicherung mit schnellem Zugriff eignen. Zum Beispiel können eine oder mehrere Einheiten in der Ebene 402 und/oder Ebene 404 sogar realisiert sein, um einen Cache-Zwischenspeicher für die Datenspeicherung bereitzustellen.
  • Einheiten der Ebenen 402 bis 410 können je nach den Anforderungen des Benutzers zum Teilsystem 102 benachbart oder entfernt angeordnet sein. Somit können Speichereinheiten der Hierarchie 400 mit der Datenverarbeitungsvorrichtung 108 durch eine Vielfalt von Mitteln verbunden sein, wie zum Beispiel durch eine oder mehrere Leitungen oder einen oder mehrere Busse, Lichtwellenleiter, Datenaustauschkanäle, drahtlose Verbindungen, Internetverbindungen, Telefonleitungen SCSI-Verbindung, ESCON-Verbindung usw.
  • Obwohl nicht dargestellt, kann die Hierarchie 400 mit einem einzigen Einheitentyp und einer entsprechenden einzigen Ebene bereitgestellt sein. Fachleute werden erkennen, dass der Begriff „Hierarchie” veranschaulichend verwendet wird, da die hierin bereitgestellte Beschreibung eine Hierarchie der Leistungsfähigkeit von Speichereinheiten einschließt, aber nicht erfordert.
  • Im Kontext der Speicherhierarchie 114/400 wird der Begriff „Speicherpool” verwendet, um eine oder mehrere Speichereinheiten mit ähnlichen Leistungscharakteristiken zu bezeichnen. Beispielsweise kann die Ebene 404 aus mehreren Speicherpools bestehen, wobei jeder Speicherpool eine oder mehrere DASDs aufweist.
  • 5 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung 502, die einen Quellserver 504a und einen Zielserver 504b mit einem Quell-Sicherungsmanager 506a bzw. einem Ziel-Sicherungsmanager 506b aufweist, um die Daten für Objekte auf einem Quellspeicher 508a auf einen Zielspeicher 5088b zu sichern. Jede Servereinheit 504a, 504b kann als Quell- und Zielserver fungieren. Die Sicherung kann im Auftrag eines Client-Knotens durchgeführt werden, der mit dem Quellserver 504a verbunden ist, um Objekte zu sichern, die zu dem Client-Knoten gehören. Der Quellserver 504a und der Zielserver 504b halten Datenobjekte, die in den Objektinformationen 510a bzw. 510b festgelegt sind. Die Daten zu den Datenobjekten, die in Form getrennter Einheiten von Daten vorliegen können, die als „Datenblöcke” (Chunks) 512a, 512b bezeichnet werden, werden im Quellspeicher 508a bzw. Zielspeicher 508b gehalten. Jeder Server 504a, 504b hält Datenblock-Speicherinformationen 514a, 514b, die Speicherstellen im Speicher 508a, 508b angeben, an denen sich Datenblöcke der Datenobjekte befinden, die in den Objektinformationen 510a, 510b festgelegt sind. Die Objektinformationen 510a, 510b weisen Metadaten oder Einträge zu jedem festgelegten Datenobjekt auf, die aus einer sortierten Liste von Datenblöcken 512a, 512b von Daten bestehen, die jedem Objekt zugewiesen sind.
  • Der Quellserver 504a und der Zielserver 504b halten eine Quell-Sicherungsdatenbank 516a bzw. eine Ziel-Sicherungsdatenbank 516b, die Informationen über Datenobjekte auf dem Quellserver 504a aufweisen, die im Auftrag eines Client-Knotens auf den Zielserver 504b gesichert wurden. Der Quellserver 504a hält und verwendet ferner eine Quellliste 530, die zu sichernde Objekte auf dem Quellserver 504a aufweist, die ein Sicherungskriterium erfüllen wie zum Beispiel Client-Knoten, zu dem die Objekte gehören, Dateibereich auf dem Client-Knoten und Datentyp; eine Zielliste 532, die Objekte auf dem Zielserver 504b aufweist, die das Sicherungskriterium erfüllen; einen Zielbestand 534 von Objekten im Zielserver 504b einschließlich einer eindeutigen Kennung oder eines eindeutigen Attributs zur eindeutigen Kennzeichnung der Objekte; und eine Sicherungsliste 536 von Dateien in der Zielliste 530, die nicht in der Zielliste 532 enthalten sind und auf den Zielserver 504b gesichert werden sollen. Die Kriterien, die zum Aufbau des Zielbestands 534 verwendet werden, können weiter gefasst als die Sicherungskriterien oder identisch mit diesen sein.
  • Eine Deduplizierungskomponente 524 stellt für den Quellserver 504a und den Zielserver 504b Deduplizierungsdienste bereit, um zu gewährleisten, dass auf dem empfangenden Server 504a, 504b bereits vorhandene Datenblockduplikate nicht erneut gesendet werden, wenn der Quellserver 504a oder der Zielserver 504b Objektdaten sendet. Die Deduplizierungskomponente 524 weist einen Deduplizierungsmanager 526 auf, um Deduplizierungsoperationen durchzuführen, und einen Datenblockindex 528 wie zum Beispiel einen Deduplizierungsindex, der Informationen über die Datenblöcke 512a, 512b bereitstellt, die Objekten zugewiesen wurden. Der Deduplizierungsmanager 526 gewährleistet, dass nur eine Kopie jedes Datenblocks im Quellspeicher 508a und Zielspeicher 508b gehalten wird, wenn Datenobjekte zwischen dem Quellserver 504a und dem Zielserver 504b übertragen werden, obwohl ein Datenblock in einem Speicher 508a, 508b in mehreren Datenobjekten enthalten sein kann, die für den Server 504a, 504b festgelegt sind, der diesen Speicher verwaltet. Der Deduplizierungsmanager 526 kann außerdem Objektinformationen 510c halten, die Informationen über die Zuweisung von Datenblöcken zu Objekten auf dem Quellserver 504a und Zielserver 504b aufweisen.
  • Zur Durchführung der Deduplizierung kann der Quell-Sicherungsmanager 506a oder eine andere Komponente nach dem Vorliegen eines neuen oder nicht geänderten Datenblocks in einem Datenobjekt einen Hash-Wert zu dem Datenblock berechnen und diesen Hash-Wert für den Datenblock anschließend zum Deduplizierungsmanager 526a übertragen, um zu ermitteln, ob der Datenblockindex 528a einen übereinstimmenden Hash-Wert aufweist. Wenn nicht, benachrichtigt der Deduplizierungsmanager 526a den Quell-Sicherungsmanager 506a, dass der Datenblock neu ist, und der Quell-Sicherungsmanager 506a sendet eine vollständige Kopie des neuen oder geänderten Datenblocks in dem Datenobjekt zwecks Speicherung im Zielspeicher 508b an den Zielserver 504b. Wenn anderenfalls der Datenblockindex 528a eine übereinstimmende Kopie des Hash-Wertes aufweist, muss der Quell-Sicherungsmanager 506a keine vollständige Kopie des Datenblocks übertragen. Stattdessen kann der Quell-Sicherungsmanager 506a den Auszug für den Datenblock und seine Position im Objekt übertragen. Alternativ kann der Quell-Sicherungsmanager 506a mit der Deduplizierungskomponente 524a interagieren, um zu ermitteln, ob er einen Datenblock an den Zielserver 504b senden muss.
  • Bei einer Ausführungsform der Deduplizierung auf der Client-Seite kommuniziert der Quell-Sicherungsmanager 506a mit dem Deduplizierungsmanager 526a, um zu ermitteln, ob Datenblöcke an den Zielserver 504b gesendet werden sollen, sodass nur neue Datenblöcke an den Zielserver 504b gesendet werden, die nicht bereits im Datenblockindex 528 als im Zielspeicher 508b vorhanden angegeben sind. Bei einer Ausführungsform der Deduplizierung auf der Server-Seite sendet der Quellserver 504a alle zu sichernden Datenblöcke eines Datenobjektes an den Zielserver 504b, und der Ziel-Sicherungsmanager 506b fordert die Deduplizierungskomponente 524a auf, zu ermitteln, welche Datenblöcke neue Datenblöcke sind, die im Zielspeicher 508b gespeichert werden sollen.
  • In ähnlicher Weise stellt eine Replikationskomponente 524b Replikationsdienste für den Quellserver 504a und Zielserver 504b bereit. Die Replikationskomponente 524b weist einen Replikationsmanager 526b auf, um Replikationsoperationen durchzuführen, und einen Datenblockindex 528b wie zum Beispiel einen Replikationsindex, der Informationen über die Datenblöcke 512a, 512b bereitstellt, die Objekten zugewiesen wurden. Der Replikationsmanager 526b sorgt zusammen mit dem Deduplizierungsmanager 526a dafür, dass nur eine Kopie jedes Datenblocks gesendet wird, wenn Datenobjekte in einer Replikationsfunktion zwischen dem Quellserver 504a und Zielserver 504b übertragen werden. Der Replikationsmanager 526b kann außerdem Objektinformationen 510d halten, die Informationen über die Zuweisung von Datenblöcken zu Objekten auf dem Quellserver 504a und Zielserver 504b aufweisen.
  • Der Quellserver 504a, Zielserver 504b, die Deduplizierungskomponente 524a und die Replikationskomponente 524b können in getrennten Computereinheiten realisiert sein, die über ein Netzwerk wie zum Beispiel ein lokales Netzwerk (Local Area Network, LAN), Speichernetzwerk (Storage Area Network, SAN), Weitverkehrsnetzwerk (Wide Area Network, WAN) usw. Daten austauschen. Bei weiteren Ausführungsformen können der Quellserver 504a, Zielserver 504b, die Deduplizierungskomponente 524a und/oder die Replikationskomponente 524b auf einem oder zwei Computersystemen realisiert sein. Wenn sich der Quellserver 504a, Zielserver 504b, die Deduplizierungskomponente 524a und/oder die Replikationskomponente 524b im selben System befinden, können sie über einen Bus oder einen Hauptspeicher Daten austauschen.
  • Der Quellspeicher 508a und der Zielspeicher 508b können in einer oder mehreren nach dem Stand der Technik bekannten Speichereinheiten konfiguriert sein, zum Beispiel in untereinander verbundenen Festplattenlaufwerken (die z. B. als DASD, RAID, JBOD usw. konfiguriert sind), in Halbleiterspeichereinheiten (z. B. EEPROM (Electrically Erasable Programmable Read-Only Memory, elektrisch löschbarer und programmierbarer Nur-Lese-Speicher), in Flash-Speicher, in einem Flash-Laufwerk, in Storage-Class Memory (SCM)), in einem elektronischen Speicher, in Magnetbandmedien, in Bandkassetten usw.
  • Der Quell-Sicherungsmanager 506a, Ziel-Sicherungsmanager 506b, der Deduplizierungsmanager 526a und der Replikationsmanager 526b können Softwareprogramme in einem Hauptspeicher aufweisen, die durch einen Prozessor ausgeführt werden. Bei einer alternativen Ausführungsform kann ein Teil oder die Gesamtheit der Programme 506a, 506b, 526a, 526b in einer Hardwarekomponente wie zum Beispiel in einer zweckgebundenen integrierten Schaltung wie zum Beispiel in einer anwendungsspezifischen integrierten Schaltung (Application Specific Integrated Circuit, ASIC), in einer Erweiterungskarte usw. realisiert sein.
  • Obwohl der Quell-Sicherungsmanager 506a, Ziel-Sicherungsmanager 506b, der Deduplizierungsmanager 526a und der Replikationsmanager 526b als getrennte Komponenten dargestellt sind, können die von diesen Komponenten 506a, 506b, 526a und 526b durchgeführten Funktionen bei alternativen Realisierungsformen in einer einzigen Programmkomponente in einem einzigen Computersystem oder in mehr als zwei Programmkomponenten in mehr als zwei Computereinheiten realisiert sein. Beispielsweise kann die Deduplizierungskomponente 524a auf dem Quellserver 504a oder dem Zielserver 504b oder als Teil von Komponenten des Quell-Sicherungsmanagers 506a oder des Ziel-Sicherungsmanagers 506b realisiert sein. Der Quell-Sicherungsmanager 506a und der Ziel-Sicherungsmanager 506b können von Client-Knoten verwendet werden, um als Teil einer Wiederherstellungsoperation Objekte wiederherzustellen.
  • Da der primäre Speicher für deduplizierte, replizierte oder andere Sicherungsdaten an Umfang zunimmt und die volle Speicherkapazität zu erreichen beginnt, besteht oft ein Wunsch, Daten aus einem primären Pool auf einen sekundären Speicher zu verschieben, um Speicherplatz für neue eingehende Daten zu schaffen. Zum Beispiel gibt es bei einem Speicher mit Deduplizierung verschiedene Verfahren, die verwendet werden können, um bestimmte deduplizierte Speicherbereiche auszuwählen, die aus dem primären Speicher auf einen sekundären Speicher verschoben werden sollen.
  • Es versteht sich hierin, dass verschiedene bekannte Zwischenspeicherungsalgorithmen wie zum Beispiel First In First Out (FIFO) oder LRU (LRU = Least Recently Used, am längsten nicht verwendet (bzw. gelesen)) genutzt werden können, um Speicherbereiche auszuwählen, die aus dem primären Speicher in den sekundären Speicher verschoben werden sollen. Derartige Zwischenspeicherungsalgorithmen sind jedoch unter Umständen nicht gut zur Verwendung in Verbindung mit einem deduplizierten (oder anderen) Pool von Speicherbereichen geeignet, wobei auf die Speicherbereiche zum Beispiel mehrere Male verwiesen wird, einmal verwiesen wird oder überhaupt nicht verwiesen wird. Außerdem erkennen Zwischenspeicherungsalgorithmen unter Umständen nicht, dass die Speicherbereiche, die zur Migration auf einen sekundären Speicher infrage kommen, Teile von logischen Datenobjekten sein können.
  • Wenn ein FIFO-Zwischenspeicherungsalgorithmus verwendet werden müsste, um die ältesten Speicherbereiche zur Migration auszuwählen, versteht es sich hierin somit, dass viele Verweise auf die ältesten Speicherbereiche vorliegen könnten. Daher versteht es sich, dass die ältesten Speicherbereiche unter Umständen keine guten Kandidaten für die Migration, sondern möglicherweise nützlicher sind, wenn sie auf dem primären Speicher verbleiben. Wenn der LRU-Algorithmus verwendet werden müsste, um die am längsten nicht verwendeten Speicherbereiche zur Migration auszuwählen, berücksichtigt der LRU-Zwischenspeicherungsalgorithmus unter Umständen auch nicht, wie häufig auf die Speicherbereiche verwiesen wird.
  • Daher könnte ein anderes Verfahren zum Auswählen von Speicherbereichen, die auf einen zweiten Speicher verschoben werden sollen, infrage kommen, um die Speicherbereiche zu erkennen, auf die am wenigsten verwiesen wird. Bei einem derartigen Auswahlverfahren kann eine Ermittlung dahingehend vorgenommen werden, wie oft durch andere logische Datenobjekte auf Speicherbereiche eines Datenobjekts verwiesen wird, und diejenigen mit der kleinsten Anzahl externer Verweise können auf einen sekundären Speicher verschoben werden.
  • Es versteht sich jedoch gemäß der vorliegenden Beschreibung, dass die Wahrscheinlichkeit, dass wieder auf einen bestimmten Speicherbereich verwiesen wird, ein nützlicher Gesichtspunkt beim Auswählen von Speicherbereichen zur Migration auf einen sekundären Speicher ist. Zum Beispiel ist es sinnvoll, Speicherbereiche zu verschieben, auf die in Zukunft mit geringerer Wahrscheinlichkeit verwiesen wird. Demgegenüber kann die Verwendung eines Speicherbereich-Auswahlverfahrens, das nur die Speicherbereiche erkennt, auf die am wenigsten häufig verwiesen wird, die Speicherleistung des primären Pools kurzfristig fördern, aber auf lange Sicht in der Weise weniger effizient sein, dass es die Wahrscheinlichkeit nicht ermitteln kann, mit der in Zukunft wieder zunehmend auf einen bestimmten Speicherbereich verwiesen wird.
  • Gemäß der vorliegenden Beschreibung versteht es sich, dass merkliche Speicherplatzeinsparungen unter Umständen mit geringerer Wahrscheinlichkeit erreicht werden, wenn ein bestimmter Speicherbereich zum ersten Mal in den primären Pool gelangt und dieser Speicherbereich auf einen sekundären Speicher migriert wird, bevor dem Speicherbereich ausreichend Gelegenheit gegeben wird, durch einen Speicherbereich eines anderen eingehenden Datenobjekts abgeglichen zu werden. Dementsprechend kann bei einem Aspekt der vorliegenden Beschreibung neu in einem Primärspeicher gespeicherten Speicherbereichen eine angemessene Zeit gegeben werden, um durch andere eingehende Datenobjekte abgeglichen zu werden. Ein derartiger Prozess zum Auswählen von Speicherbereichen, der dem Speicherbereich eine ausreichende Zeit bereitstellt, um durch andere eingehende Datenobjekte abgeglichen zu werden, bevor der Speicherbereich migriert wird, kann besser zur Speicherung geeignet sein, bei der die Deduplizierung eingesetzt wird. Infolgedessen können der vorliegenden Beschreibung entsprechende Datenauswahlalgorithmen zum Verschieben von Datenobjekten oder Datenträgern von Datenobjekten, oder Teilen von Datenobjekten oder Datenträgern auf einen sekundären Speicher die Effizienz des primären Pools in Bezug auf die Größe des eingesparten Speicherplatzes verbessern.
  • In der vorliegenden Beschreibung wird Bezug darauf genommen, wie viele Male auf einen bestimmten Speicherbereich „verwiesen” wird. Im hierin verwendeten Sinne wird eine Unterscheidung zwischen externen Verweisen und Gesamtverweisen vorgenommen, zu denen interne Verweise sowie externe Verweise gehören. Zum Beispiel kann ein bestimmtes Datenobjekt Duplikatdaten in sich selbst aufweisen, wenn Daten innerhalb des Objekts wiederholt werden. Diese internen Verweise werden hierin nicht als externe Verweise bezeichnet. Im Gegensatz hierzu wird der Speicherbereich hierin als einen externen Verweis aufweisend betrachtet, wenn ein anderes (d. h. ein externes) Datenobjekt ebenfalls auf denselben Speicherbereich verweist.
  • Bei einer Ausführungsform versucht das Datenauswahlverfahren, dass Migrieren von Daten zu vermeiden, die gerade zum primären Speicher hinzugefügt wurden. Um einem Speicherbereich Zeit zu geben, mit zukünftigen eingehenden Datenobjekten abgeglichen zu werden, kann der Datenauswahlalgorithmus die Migration von Daten auf Speicherbereiche oder Datenobjekte begrenzen, die sich bereits einen Mindestzeitraum lang im primären Speicher befinden.
  • Gemäß der vorliegenden Beschreibung könnte in Übereinstimmung mit verschiedenen Faktoren oder anderen Gesichtspunkten ein Zeitraum des Wartens ermittelt werden, bevor ein bestimmtes Datenobjekt oder eine bestimmte Menge von Speicherbereichen verschoben wird. Beispielsweise könnte ein derartiger Gesichtspunkt das Zeitintervall zwischen Sicherungsereignissen sein. Wenn damit zu rechnen ist, dass Daten aus aufeinanderfolgenden Sicherungen bestehenden Sicherungen aus derselben oder einer anderen Quelle der Sicherungsdaten ähneln, kann diesen Speicherbereichen Zeit gegeben werden, um im primären Pool zu verbleiben und mit Daten von nachfolgenden Sicherungen abgeglichen zu werden.
  • Ein weiterer Gesichtspunkt zum Ermitteln eines angemessenen Zeitraums des Wartens, bevor ein bestimmtes Datenobjekt oder eine bestimmte Menge von Speicherbereichen verschoben wird, ist die Zeit, die eine bestimmte Menge von Datenobjekten benötigt, um zu verschiedenen Maschinen weitergegeben zu werden, die ihre Daten im primären Pool speichern. Beispielsweise kann zum Ermitteln eines angemessenen Zeitraums des Wartens, bevor ein bestimmtes Datenobjekt oder eine bestimmte Menge von Speicherbereichen verschoben wird, die Zeit berücksichtigt werden, die eine Menge von per E-Mail übertragenen Datenobjekten benötigt, um auf unterschiedliche Maschinen weitergegeben und anschließend auf denselben deduplizierten primären Pool gesichert zu werden. Als weiteres Beispiel, bei dem Softwaredatenobjekte aus verschiedenen Maschinen auf ein dedupliziertes System gesichert werden, kann zum Ermitteln eines angemessenen Zeitraums des Wartens, bevor ein bestimmtes Datenobjekt oder eine bestimmte Menge von Speicherbereichen verschoben wird, die Zeit berücksichtigt werden, die ein neu verfügbares Softwareelement benötigt, um auf einer ersten Maschine und anschließend auf weiteren Maschinen installiert zu werden.
  • Ein noch weiterer Gesichtspunkt zum Ermitteln eines angemessenen Zeitraums des Wartens, bevor ein bestimmtes Datenobjekt oder eine bestimmte Menge von Speicherbereichen verschoben wird, kann das Zeitintervall zwischen dem Zeitpunkt sein, an dem die Daten zum ersten Mal an den primären Speicher gesendet werden, und dem nachfolgenden Zeitpunkt, wenn die Daten später unter Umständen verarbeitet werden. Wenn die Daten zum Beispiel auf ein entfernt angeordnetes System repliziert werden sollen, sollten die Daten im primären Pool auf dem Quellsystem verbleiben können, bis die Daten repliziert wurden. Die Möglichkeit des Verbleibens der Daten im primären Speicher zumindest während dieses Intervalls kann die Effizienz bei der Replikation verbessern, da die Daten im primären Speicher auf dem Quellsystem vorliegen, das normalerweise schneller als das des sekundären Speichers ist. Außerdem kann die Effizienz des Replikationsprozesses verbessert werden, indem im primären Pool ausreichend Zeit zur Speicherbereichverarbeitung der Daten gewährt wird, sodass das Zielsystem Speicherbereiche anstelle ganzer Datenobjekte senden kann, wodurch Netzwerkbandbreite eingespart wird. Es ist klar, dass das Zeitintervall zwischen dem Punkt, an dem Daten zum ersten Mal zum primären Speicher gesendet werden, und dem nachfolgenden Zeitpunkt, an dem diese Daten später unter Umständen durch andere Arten von Sicherungsoperationen verarbeitet werden können, ebenfalls berücksichtigt werden kann.
  • Es ist klar, dass zum Ermitteln eines angemessenen Zeitraums des Wartens, bevor ein bestimmter Datenträger, ein bestimmtes Datenobjekt oder eine bestimmte Menge von Speicherbereichen verschoben wird, andere Faktoren berücksichtigt werden können. Darüber hinaus kann die Dauer der Zeiträume, die unter Berücksichtigung der verschiedenen Faktoren ermittelt wurde, je nach den jeweiligen Faktoren oder Gesichtspunkten unterschiedlich sein. Bei einer Ausführungsform kann das Maximum eines oder mehrerer der oben erwähnten Zeiträume, sofern auf die jeweilige Anwendung zutreffend, als Mindestzeitraum verwendet werden, während dessen Speicherbereiche oder Datenobjekte im primären Pool verbleiben sollten, bevor sie zur Migration auf den sekundären Speicher berücksichtigt werden. Daher kann dieser Zeitraum einen Zeitschwellenwert bilden, der erfüllt sein muss, bevor Daten auf den sekundären Speicher migriert werden. Es ist klar, dass ein Schwellenwert je nach der betreffenden Anwendung anders berechnet werden kann. Beispielsweise kann ein Durchschnittswert verschiedener Zeiträume als Schwellenwert verwendet werden, die unter Berücksichtigung der verschiedenen Faktoren ermittelt wurden, die auf die betreffende Anwendung anwendbar sind. Andere Schwellenwerte können auf der Grundlage des Faktors oder der Faktoren ausgewählt werden, die der betreffenden Anwendung am meisten entsprechen.
  • Daten können in einer Vielfalt von Formen in den oder aus dem Speicher verschoben werden. Gemäß der vorliegenden Beschreibung kann das Auswahlverfahren, das zur Ermittlung verwendet wird, welche Daten vom primären auf den sekundären Speicher verschoben werden sollen, als Funktion der Datenform variieren. Zum Beispiel kann ein Datenauswahlverfahren verwendet werden, um zu ermitteln, welche Datenobjekte aus dem primären Speicher verschoben werden sollen. Des Weiteren kann je nach der Architektur des Systems ein anderes Datenauswahlverfahren verwendet werden, um zu ermitteln, welche Datenträger von Datenobjekten zur Verschiebung auf den sekundären Speicher ausgewählt werden sollen.
  • Nachstehend werden zwei verschiedene, aber ähnliche Datenauswahlalgorithmen beschrieben. Ein Algorithmus kann verwendet werden, um ganze Datenobjekte zur Migration vom primären auf den sekundären Speicher auszuwählen. Das andere kann verwendet werden, um zu wählen welche Datenträger von Datenobjekten verschoben werden sollen.
  • In der vorliegenden Beschreibung sind Auswahlverfahren eine Funktion der Anzahl, wie oft auf einen bestimmten Speicherbereich „verwiesen” wird, und darüber hinaus eines Zeitelements. Wie oben dargelegt, kann eine Unterscheidung zwischen externen Verweisen und Gesamtverweisen getroffen werden, zu denen interne Verweise sowie externe Verweise gehören. Daher kann ein bestimmtes Datenobjekt interne Verweise für Duplikatdaten in sich selbst aufweisen, d. h. wenn Daten innerhalb des Objekts wiederholt werden. Im Gegensatz hierzu wird der Speicherbereich hierin als einen externen Verweis aufweisend betrachtet, wenn ein anderes (d. h. ein externes) Datenobjekt ebenfalls auf denselben Speicherbereich verweist.
  • 6 stellt ein Beispiel von Operationen eines Datenauswahlverfahrens dar, um zu wählen, welche Speicherbereiche vom primären Speicher auf den sekundären Speicher verschoben werden sollen. Bei einer ersten Operation wird ein dedupliziertes Datenobjekt in einem primären Speicherpool gespeichert (Block 610). Ein Deduplizierungssystem teilt eine Datei in eine Reihe von Speicherbereichen auf. Das Deduplizierungssystem ermittelt, ob beliebige der Speicherbereiche bereits gespeichert sind, und geht dann dazu über, nur diese nicht redundanten Speicherbereiche zu speichern. Die Redundanz kann mit internen Speicherbereichen in der Datei geprüft werden, die gerade gespeichert wird, oder mit externen Speicherbereichen, die bereits im primären Pool gespeichert sind.
  • Redundante Speicherbereiche können unter Verwendung einer Hash-Funktion wie zum Beispiel MD5 oder SHA-1 erkannt werden, um beispielsweise zu jedem Speicherbereich einen Hash-Wert zu erzeugen und diesen Wert anschließend mit Werten für Speicherbereiche zu vergleichen, die bereits im System gespeichert sind. Normalerweise werden die Hash-Werte zu gespeicherten Speicherbereichen in einem Index wie zum Beispiel einer Datenbank in einem Datenbanksystem gehalten. Wenn ein redundanter Speicherbereich erkannt wird, kann dieser Speicherbereich durch einen Zeiger auf den übereinstimmenden Speicherbereich ersetzt werden, wodurch ein Verweis auf diesen Speicherbereich gebildet wird. Es ist klar, dass Daten je nach der betreffenden Anwendung unter Verwendung anderer Techniken dedupliziert werden können.
  • Bei einer weiteren Operation wird eine Ermittlung (Block 612) hinsichtlich des Zeitraums vorgenommen, während dessen sich das erste Datenobjekt im primären Speicherpool befindet. Bei der veranschaulichten Ausführungsform kann das Datenbanksystem, das Informationen über die Datenobjekte verwaltet, einen Zeitstempel des Zeitpunkts enthalten, an dem jedes Objekt im primären Speicherpool gespeichert wurde. Das „Alter” bzw. der Zeitraum, während dessen sich das Datenobjekt im primären Speicherpool befindet, kann unter Verwendung der Zeitstempeldaten für das Datenobjekt berechnet und mit einem Schwellenwert verglichen werden (Block 614).
  • Zu jedem Datenobjekt im primären Speicher, bei dem das Alter des Objekts (aus dem Objektzeitstempel berechnet) größer (Block 614) als der bereitgestellte Schwellenwert ist, kann die mögliche Größe des Speicherplatzes berechnet werden (Blöcke 616 bis 620), der freigegeben würde, wenn dieses Objekt auf den sekundären Speicher verschoben werden müsste. Bei der veranschaulichenden Ausführungsform können die möglichen Speicherplatzeinsparungen wie folgt berechnet werden:

    Speicherplatzeinsparungen = [(für alle bei einem Datenobjekt verwendeten Speicherbereiche)

    Σ((0 wenn (Zählwert externer Verweise auf den Speicherbereich >= R) sonst 1)·Speicherbereich_Größe)]

    wobei zum Beispiel R = 1 ist.
  • Daher wird zum Beispiel eine Ermittlung dahingehend vorgenommen, ob durch ein anderes Datenobjekt auf einen ersten Speicherbereich des Datenobjekts (d. h. extern) verwiesen wird (Block 616). In dem oben aufgeführten Ausdruck ist der Zählwert externer Verweise >= 1, wenn der Speicherbereich mindestens einen externen Verweis aufweist, und dem Unterausdruck für die möglichen Speicherplatzeinsparungen wird der Wert 0 für diesen Speicherbereich zugewiesen. Infolgedessen würden bei diesem Beispiel die möglichen Speicherplatzeinsparungen für diesen Speicherbereich mit 0·Speicherbereich_Größe bzw. 0 möglichen Speicherplatzeinsparungen berechnet werden.
  • Umgekehrt ist der Zählwert externer Verweise nicht >= 1, und dem Unterausdruck für die möglichen Speicherplatzeinsparungen wird der Wert 1 für diesen Speicherbereich zugewiesen, wenn auf den ersten Speicherbereich des Objekts nicht durch ein anderes Datenobjekt (d. h. nicht extern) verwiesen wird (Block 616). Infolgedessen würden die möglichen Speicherplatzeinsparungen für diesen Speicherbereich mit 1·Speicherbereich_Größe berechnet werden bzw. die möglichen Speicherplatzeinsparungen wären gleich der Größe dieses Speicherbereichs. Demzufolge wird die Größe des Datenobjekt-Speicherbereichs bei diesem Beispiel zum Gesamtwert der bei diesem Datenobjekt kumulativen möglichen Speicherplatzeinsparungen addiert (Block 618).
  • Diese Verfahrensweise wird bei jedem Speicherbereich des Datenobjekts wiederholt. Demzufolge wird eine Ermittlung dahingehend vorgenommen, ob (Block 620) alle Speicherbereiche des Datenobjekts geprüft wurden. Bei einer Ausführungsform können die Objekte mit den größten Speicherplatzeinsparungen zuerst verschoben werden. Um das Sortieren der Ergebnismenge zu vermeiden, könnte alternativ ein Größenschwellenwert verwendet werden, um nur die Datenobjekte zu verschieben, die, wenn sie verschoben werden, eine bestimmte Größe des Speicherplatzes einsparen. Demzufolge wird bei der Ausführungsform aus 6 eine Ermittlung dahingehend vorgenommen, ob (Block 622) die kumulativen möglichen Speicherplatzeinsparungen bei dem Datenobjekt einen Schwellenwert überschreiten. Wenn dies der Fall ist, ist das Datenobjekt ein guter Kandidat zum Verschieben und kann daher auf einen sekundären Speicherpool verschoben werden (Block 624), um Platz im primären Speicherpool zu schaffen.
  • Umgekehrt kann das Datenobjekt ein schlechter oder weniger wünschenswerter Kandidat zum Verschieben sein und muss daher nicht auf einen sekundären Speicherpool verschoben werden (Block 626), um Platz im primären Speicherpool zu schaffen, wenn die kumulativen möglichen Speicherplatzeinsparungen bei dem Datenobjekt einen Schwellenwert nicht überschreiten (Block 622).
  • Es ist klar, dass dem Wert R andere Werte als 1 zugewiesen werden können. Daher würde bei einem Wert von R = 2 der Zählwert der externen Verweise mit 2 verglichen werden, sodass die Berechnung der möglichen Speicherplatzeinsparungen Speicherbereiche einschließen würde, die anstelle keiner externen Verweise 1 oder weniger externe Verweise aufweisen. Je nach dem jeweiligen Anwendungsfall können auch andere Werte oder Berechnungen zur Einsparung von Speicherplatz verwendet werden.
  • 7 stellt ein Beispiel von Operationen eines Datenauswahlverfahrens dar, um zu wählen, welcher Datenträger oder welche Datenträger von Datenspeicherbereichen vom primären Speicher auf den sekundären Speicher verschoben werden sollen. Bei einer ersten Operation wird in einem Speicherpool ein Datenträger ausgewählt (Block 710), der deduplizierte Datenobjekte enthält. Ein Datenobjekt des ausgewählten Datenträgers wird anschließend untersucht (Block 712), um zu ermitteln, ob der Zeitraum, während dessen sich das Datenobjekt im primären Speicherpool befindet, einem vorgegebenen Schwellenwert entspricht oder diesen überschreitet. Wie oben erwähnt kann das Datenbanksystem, das Informationen über die Datenobjekte verwaltet, bei der veranschaulichten Ausführungsform einen Zeitstempel des Zeitpunkts enthalten, an dem jedes Datenobjekt im primären Speicherpool gespeichert wurde. Daher kann das „Alter” bzw. der Zeitraum, während dessen sich das Datenobjekt des ausgewählten Datenträgers im primären Speicherpool befindet, wie oben in Verbindung mit 6 erörtert unter Verwendung der Zeitstempeldaten für das Datenobjekt berechnet und mit einem Schwellenwert verglichen werden.
  • Zu jedem Datenobjekt im ausgewählten Datenträger im primären Speicher, bei dem das Alter des Objekts (aus dem Objektzeitstempel berechnet) größer (Block 712) als der bereitgestellte Schwellenwert ist, kann die mögliche Größe des Speicherplatzes ähnlich wie oben in Verbindung mit den Blöcken 616 bis 620 beschrieben speicherbereichsweise berechnet werden (Block 714), der freigegeben würde, wenn dieses Objekt (als Teil des ausgewählten Datenträgers) auf den sekundären Speicher verschoben werden müsste. Daher können bei der veranschaulichenden Ausführungsform die möglichen Speicherplatzeinsparungen wiederum wie folgt berechnet werden:

    Speicherplatzeinsparungen = [(für alle bei einem Datenobjekt verwendeten Speicherbereiche)

    Σ((0 wenn (Zählwert externer Verweise auf den Speicherbereich >= R) sonst 1)·Speicherbereich_Größe)]

    wobei zum Beispiel R = 1 ist.
  • Nach der Berechnung der möglichen Speicherplatzeinsparungen zu jedem Speicherbereich eines bestimmten Datenobjekts wird eine Ermittlung (Block 718) dahingehend vorgenommen, ob die Berechnung der möglichen Speicherplatzeinsparungen bei allen Datenobjekten des ausgewählten Datenträgers vorgenommen wurde. Wenn nicht, werden die möglichen Speicherplatzeinsparungen zu jedem verbliebenen Datenobjekt des ausgewählten Datenträgers wie oben erläutert berechnet. Es ist klar, dass je nach der betreffenden Anwendung andere Berechnungen verwendet werden können, um Speicherplatzeinsparungen zu ermitteln.
  • Sobald die möglichen Speicherplatzeinsparungen zu allen Datenobjekten des ausgewählten Datenträgers berechnet wurden, können die möglichen Speicherplatzeinsparungen aller Datenobjekte des ausgewählten Datenträgers summiert werden (Block 720), um einen kumulativen Gesamtwert bereitzustellen, der ebenfalls zum anderweitig „verfügbaren” Speicherplatz im ausgewählten Datenträger addiert wird. Bei einigen Datenträgern sind Daten nicht immer zusammenhängend gespeichert, sodass Teile des ausgewählten Datenträgers Speicherplatz enthalten können, der nicht belegt, aber nur begrenzt verfügbar ist, um neue Daten aufzunehmen. Zum Beispiel kann Speicherplatz, der zuvor durch Daten belegt war, die von einem Bandlaufwerk-Datenträger gelöscht wurden, bei einigen Anwendungen unter Umständen nicht ohne Weiteres wieder verwendet werden. Bei dieser Ausführungsform wird derartiger Speicher hierin als „anderweitig verfügbarer Speicherplatz” bezeichnet, der freigegeben würde, wenn der Datenträger auf einen sekundären Speicher verschoben werden müsste.
  • Bei einer Ausführungsform können Objekte dieser Datenträger mit den größten Speicherplatzeinsparungen und anderem verfügbaren Speicherplatz zuerst verschoben werden. Um das Sortieren der Ergebnismenge zu vermeiden, könnte alternativ ein Größenschwellenwert verwendet werden, um nur die Datenobjekte der Datenträger zu verschieben, die eine bestimmte Größe des Speicherplatzes einsparen. Ein derartiger Schwellenwert zur Datenträgerauswahl kann beispielsweise entweder als Prozentwert der Datenträgergröße oder als Gesamtdateneinsparung ausgedrückt werden.
  • Bei der Ausführungsform aus 7 wird die Summe aus anderweitig verfügbarem Speicherplatz des Datenträgers und kumulativem Gesamtwert der möglichen Speicherplatzeinsparungen, die zu jedem der Datenobjekte des ausgewählten Datenträgers berechnet wurde, verglichen (Block 720), um zu ermitteln, ob diese Summe aus möglichen Speicherplatzeinsparungen und anderweitig verfügbarem Speicherplatz des ausgewählten Datenträgers einen Schwellenwert überschreitet (Block 720). Wenn dies der Fall ist, kann der ausgewählte Datenträger ein guter Kandidat zum Verschieben sein und daher auf einen sekundären Speicherpool verschoben werden (Block 722), um Platz im primären Speicherpool zu schaffen. Umgekehrt kann der ausgewählte Datenträger ein schlechter oder weniger wünschenswerter Kandidat zum Verschieben sein und muss daher nicht auf einen sekundären Speicherpool verschoben werden (Block 724), um Platz im primären Speicherpool zu schaffen, wenn die Summe aus anderweitig verfügbarem Speicherplatz des ausgewählten Datenträgers und aus kumulativem Gesamtwert der möglichen Speicherplatzeinsparungen, die zu jedem der Datenobjekte des ausgewählten Datenträgers berechnet wurde, einen Schwellenwert nicht überschreitet (Block 720).
  • 8 veranschaulicht eine Realisierungsform einer Computerarchitektur 800 der Netzwerkkomponenten wie zum Beispiel des Datenspeicher-Teilsystems 102, der Administratorstationen 104 oder Client-Stationen 106, die in 1 dargestellt sind. Die Architektur 800 kann einen Prozessor 802 (z. B. einen Mikroprozessor), einen Speicher 804 (z. B. eine flüchtige Speichereinheit), und einen Speicher 806 (z. B. einen nichtflüchtigen Speicher wie zum Beispiel Magnetplattenlaufwerke, optische Plattenlaufwerke, ein Bandlaufwerk usw.) aufweisen. Der Speicher 806 kann eine interne Speichereinheit, eine angeschlossene Speichereinheit oder einen über ein Netzwerk zugänglichen Speicher aufweisen. Programme im Speicher 806 werden in einer in der Technik bekannten Weise in den Hauptspeicher 804 geladen und durch den Prozessor 802 ausgeführt. Die Architektur weist ferner eine Netzwerkkarte 808 auf, um den Datenaustausch mit einem Netzwerk zu ermöglichen. Eine Videosteuereinheit 809 steuert eine optische Anzeige. Eine Eingabeeinheit 810 dient dazu, dem Prozessor 802 Benutzereingaben bereitzustellen und kann eine Tastatur, eine Maus, einen Stift, ein Mikrofon, einen berührungsempfindlichen Anzeigebildschirm oder einen in der Technik bekannten beliebigen anderen Aktivierungs- oder Eingabemechanismus aufweisen. Eine Ausgabeeinheit 812 wie zum Beispiel ein Anzeigemonitor, ein Drucker, ein Speicher usw. kann Informationen bereitstellen, die vom Prozessor 802 oder einer anderen Komponente übermittelt werden.
  • Ein Datenauswahlverfahren gemäß der vorliegenden Beschreibung kann je nach der betreffenden Anwendung die Effizienz eines Deduplizierungs- oder Replikationssystems oder eines anderen Sicherungssystems verbessern, indem die nützlichen Daten im primären Speicherpool gehalten und Daten mit geringerem Wert auf den sekundären Speicher verschoben werden, um im primären Pool Platz für weitere Speicherungen zu schaffen. Daher können zum Beispiel bei Client-Deduplizierungssystemen, bei denen nur neue Speicherbereiche an den primären Pool im Serversystem gesendet werden, unnötiger Netzwerkverkehr, E/A- und Index-Aktivitäten verringert oder unterbunden werden, indem die Wahrscheinlichkeit erhöht wird, dass Speicherbereichsübereinstimmungen im primären Pool vorliegen. Ebenso kann dadurch, dass Daten für nachfolgende Replikationsoperationen im Speicher gehalten werden, Netzwerkverkehr verringert werden, indem die Daten in erweiterter Form im primären Pool gehalten und nur neue Speicherbereiche an das Replikationsziel gesendet werden.
  • Dementsprechend wird angenommen, dass ein Datenauswahlverfahren gemäß der vorliegenden Beschreibung eine effiziente Migration von Daten von einem deduplizierten Speicherpool bzw. das effiziente Weiterleiten von Speicherbereichen zu einem Replikationsziel bereitstellen kann. Zum Beispiel kann die Verwendung der Anzahl externer Verweise auf Speicherbereiche eines bestimmten Datenobjekts in Kombination mit der Zeit, die der Speicherbereich oder das Datenobjekt in einem deduplizierten primären Speicherpool gespeichert waren, um zu ermitteln, welche Daten aus dem deduplizierten Pool auf einen sekundären Speicher verschoben werden, eine Vielfalt von Sicherungsoperationen einschließlich der Datenmigration, Datendeduplizierung und Datenreplikation verbessern. Bei einem Aspekt kann das Datenauswahlverfahren den Datenlebenszyklus berücksichtigen, sodass Daten aufrechterhalten werden, die besser zu der Umgebung im primären Pool passen. Des Weiteren kann das Datenauswahlverfahren anstelle der bloßen Verwendung der Daten auf Verweisen auf den Speicherbereich von mehreren deduplizierten Datenobjekten und der Zeit beruhen, während der sich diese im primären Pool befinden.
  • Cloud-Computing-Ausführungsformen
  • Die Cloud-Computing-Umgebung aus den 1, 8 kann Teil eines Cloud-Computing-Modells zur Bereitstellung von Diensten sein, um einen praktischen und bei Bedarf verfügbaren Netzwerkzugriff (On-Demand-Netzwerkzugriff) auf ein gemeinsam genutztes Reservoir konfigurierbarer Datenverarbeitungsressourcen (z. B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die bei minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Die Realisierungsform des Cloud-Computing wird unter Bezugnahme auf die 9 bis 11 beschrieben. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle aufweisen.
  • Die Eigenschaften sind folgende:
    On-demand Self Service (Selbstzuweisung bei Bedarf): Ein Cloud-Nutzer kann einseitig Datenverarbeitungsfunktionen wie zum Beispiel Serverzeit und Netzwerkspeicher dem Bedarf entsprechend automatisch bereitstellen, ohne dass eine Interaktion von Menschen mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access (umfassender Netzwerkzugriff): Es stehen Funktionen über ein Netzwerk zur Verfügung, auf die der Zugriff über Standardmechanismen erfolgt, die die Verwendung heterogener Thin- oder Thick-Quellplattformen (z. B. Mobiltelefone, Notebook-Computer und PDAs) unterstützen.
  • Resource Pooling (Ressourcenbündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehrere Nutzer unter Verwendung eines Mehrfachnutzermodells mit unterschiedlichen physischen und virtuellen Ressourcen zu bedienen, die entsprechend dem Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine Art Ortsunabhängigkeit in der Weise, dass der Nutzer im Allgemeinen keine Kontrolle oder Kenntnis über den exakten Ort der bereitgestellten Ressourcen hat, aber möglicherweise in der Lage ist, den Ort auf einer höheren Abstraktionsebene (z. B. Land, Bundesstaat oder Datenverarbeitungszentrum) anzugeben.
  • Rapid Elasticity (rasche Elastizität): Funktionen können rasch und elastisch bereitgestellt werden, in einigen Fällen automatisch, um den Funktionsumfang schnell nach oben anzupassen, und schnell freigegeben werden, um den Funktionsumfang schnell nach unten anzupassen. Für den Nutzer entsteht oftmals der Eindruck, dass die zur Bereitstellung verfügbaren Funktionen unbegrenzt sind und jederzeit in jeder beliebigen Menge gekauft werden können.
  • Measured Service (bemessener Dienst): Cloud-Systeme steuern und optimieren automatisch die Ressourcenverwendung durch Nutzung einer Bemessungsfunktion auf einer bestimmten Abstraktionsebene, die für die Art des Dienstes geeignet ist (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, sodass Transparenz sowohl für den Anbieter als auch den Kunden des genutzten Dienstes besteht.
  • Die Dienstmodelle sind folgende:
    Software as a Service (SaaS) (Software als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Die Anwendungen sind von verschiedenen Quelleinheiten aus über eine Thin-Quellschnittstelle wie zum Beispiel über einen Web-Browser (z. B. auf dem Web beruhende E-Mail) zugänglich. Der Nutzer verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfunktionen nicht, abgesehen von der möglichen Ausnahme eingeschränkter benutzerspezifischer Konfigurationseinstellungen von Anwendungen.
  • Platform as a Service (PaaS) (Plattform als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen bereitzustellen, die unter Verwendung von Programmiersprachen und Programmierwerkzeugen erzeugt wurden, die durch den Anbieter unterstützt werden. Der Nutzer verwaltet oder steuert die unterlagerte Cloud-Infrastruktur einschließlich von Netzwerken, Servern, Betriebssystemen, Speicherplatz oder sogar einzelnen Anwendungsfunktionen nicht, hat aber die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendungen.
  • Infrastructure as a Service (IaaS) (Infrastruktur als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicherplatz, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Kunde beliebige Software bereitstellen und ausführen kann, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet oder steuert die unterlagerte Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz sowie bereitgestellte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Vernetzungskomponenten (z. B. über Host-Firewalls).
  • Die Bereitstellungsmodelle sind folgende:
    Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für ein Unternehmen betrieben. Sie kann durch das Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Unternehmen genutzt und unterstützt eine bestimmte Benutzergemeinschaft, die gemeinsame Interessen hat (z. B. eine Aufgabe, Sicherheitsanforderungen, Richtlinie und Gesichtspunkte im Zusammenhang mit der Einhaltung von Gesetzen und Vorschriften). Sie kann durch die Unternehmen oder einen Dritten verwaltet werden und auf dem Firmengelände oder außerhalb davon vorhanden sein.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Gruppe in einem Industriezweig zur Verfügung gestellt und ist Eigentum eines Unternehmens, das Cloud-Dienste verkauft.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Mischung aus zwei oder mehreren Clouds (Private Cloud, Community Cloud oder Public Cloud), die eigenständige Einheiten bleiben, aber über eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portierbarkeit von Daten und Anwendungen ermöglicht (z. B. Cloud-Zielgruppenverteilung (Cloud Bursting) zum Lastausgleich zwischen Clouds).
  • Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus untereinander verbundenen Knoten aufweist.
  • 9 veranschaulicht eine Ausführungsform eines Cloud-Computing-Knotens 900, der eine Realisierungsform des Quellservers 504a, Zielservers 504b und von Deduplizierungs- und Replikationskomponenten 524a, 524b aufweisen kann, wobei die Komponenten in einem oder mehreren der Knoten 900 realisiert sein können. Der Cloud-Computing-Knoten 900 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und nicht dazu gedacht, eine beliebige Einschränkung hinsichtlich des Schutzbereiches oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung nahezulegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 900 realisiert werden und/oder eine beliebige der hierin oben dargelegten Funktionalitäten durchführen.
  • In dem Cloud-Computing-Knoten 900 liegt ein Computersystem/Server 902 vor, der in Verbindung mit zahlreichen anderen Mehrzweck- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig ist. Zu Beispielen wohlbekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem Computersystem/Server 902 geeignet sind, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Quellen, Thick-Quellen, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der oben erwähnten Systeme oder Einheiten gehören, und dergleichen.
  • Das Computersystem/der Server 902 kann im allgemeinen Kontext von auf einem Computersystem ausführbaren Anweisungen beschrieben werden, wie zum Beispiel von Programmmodulen, die durch ein Computersystem ausgeführt werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logik und Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 902 kann in verteilten Cloud-Computing-Umgebungen praktisch umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, zu denen Hauptspeichereinheiten gehören.
  • Wie in 9 gezeigt, ist das Computersystem/der Server 902 im Cloud-Computing-Knoten 900 in Form einer Mehrzweck-Datenverarbeitungseinheit dargestellt. Zu den Komponenten des Computersystems/des Servers 902 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 904, ein Systemhauptspeicher 906 und ein Bus 908 gehören, der verschiedene Systemkomponenten einschließlich des Systemhauptspeichers 906 mit dem Prozessor 904 verbindet.
  • Der Bus 908 stellt eine oder mehrere von beliebigen verschiedenen Arten von Busstrukturen dar, zu denen ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port und ein Prozessorbus oder lokaler Bus gehören, die eine beliebige einer Vielfalt von Busarchitekturen nutzen. Als Beispiel und nicht als Einschränkung gehören zu derartigen Architekturen der ISA-Bus (ISA = Industry Standard Architecture), der MCA-Bus (MCA = Micro Channel Architecture), EISA-Bus (EISA = Enhanced ISA), der lokale VESA-Bus (VESA = Video Electronics Standards Association) und der PCI-Bus (PCI = Peripheral Component Interconnect).
  • Das Computersystem/der Server 902 weist normalerweise eine Vielfalt von Medien auf, die von Computersystemen gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 902 zugreifen kann, und zu diesen Medien gehören sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht auswechselbare Medien.
  • Zum Systemhauptspeicher 906 können für Computersysteme lesbare Medien in Form von flüchtigem Speicher wie zum Beispiel Direktzugriffsspeicher (Random Access Memory, RAM) 910 und/oder Cache-Zwischenspeicher 912 gehören. Das Computersystem/der Server 902 kann ferner andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien aufweisen. Lediglich als Beispiel kann das Speichersystem 913 zum Lesen von einem und Schreiben auf ein nicht auswechselbares, nichtflüchtiges magnetisches Medium (nicht dargestellt und normalerweise als „Festplatte” bezeichnet) bereitgestellt sein. Obwohl nicht dargestellt, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine auswechselbare nichtflüchtige Magnetplatte (z. B. eine „Diskette”) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine auswechselbare nichtflüchtige optische Platte wie zum Beispiel ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt sein. In solchen Fällen kann jede dieser Einheiten durch eine oder mehrere Datenmedienschnittstellen mit dem Bus 908 verbunden sein. Wie ferner abgebildet und nachfolgend beschrieben, kann der Hauptspeicher 906 mindestens ein Programmprodukt aufweisen, das eine Menge (z. B. mindestens eines) von Programmmodulen aufweist, die so gestaltet sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Ein Programm/Dienstprogramm 914, das eine Menge (mindestens eines) von Programmmodulen 916 aufweist, kann zum Beispiel und nicht als Einschränkung im Hauptspeicher 906 sowie in einem Betriebssystem, in einem oder mehreren Anwendungsprogrammen oder in anderen Programmmodulen und Programmdaten gespeichert sein. Jedes des Betriebssystems, des einen oder der mehreren Anwendungsprogramme, der anderen Programmmodule und Programmdaten oder jede einer bestimmten Kombination davon kann eine Realisierungsform einer Vernetzungsumgebung aufweisen. Die Programmmodule 916 führen üblicherweise die Funktionen und/oder Methodiken von Ausführungsformen der Erfindung wie hierin beschrieben aus.
  • Das Computersystem/der Server 902 kann außerdem mit einer oder mehreren externen Einheiten 918 kommunizieren wie zum Beispiel mit einer Tastatur, einer Zeigeeinheit, einer Anzeigeeinheit 920 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 902 zu interagieren; und/oder mit beliebigen Einheiten (z. B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 902 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten zu kommunizieren. Eine derartige Kommunikation kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 922 stattfinden. Darüber hinaus kann das Computersystem/der Server 902 über einen Netzwerkadapter 924 mit einem oder mehreren Netzwerken kommunizieren, zum Beispiel mit einem lokalen Netzwerk (Local Area Network, LAN), einem allgemeinen Weitverkehrsnetzwerk (Wide Area Network, WAN) und oder mit einem öffentlichen Netzwerk (z. B. dem Internet). Wie abgebildet kommuniziert der Netzwerkadapter 924 über den Bus 908 mit den anderen Komponenten des Computersystems/Servers 902. Es sollte klar sein, dass, obwohl nicht abgebildet, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 902 verwendet werden könnten. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Festplatten-Arrays, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
  • Unter Bezugnahme auf 10 ist dort eine veranschaulichende Cloud-Computing-Umgebung 950 abgebildet. Wie dargestellt weist die Cloud-Computing-Umgebung 950 einen oder mehrere Cloud-Computing-Knoten 900 auf, mit denen lokale Datenverarbeitungseinheiten wie zum Beispiel ein Personal Digital Assistant (PDA) oder Mobiltelefon 954A, ein Desktop-Computer 954B, ein Notebook-Computer 954C und/oder ein Automobil-Computersystem 954N kommunizieren können, die von Cloud-Nutzern verwendet werden. Die Knoten 900 können untereinander kommunizieren. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie zum Beispiel in einer hierin oben beschriebenen Private Cloud, Community Cloud, Public Cloud oder Hybrid Cloud oder in einer Kombinationen davon gruppiert sein (nicht dargestellt). Dies ermöglicht der Cloud-Computing-Umgebung 950, Infrastruktur, Plattformen und/oder Software als Dienste zu bieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit zu verwalten braucht. Es versteht sich, dass die in 13 gezeigten Arten von Datenverarbeitungseinheiten 954A bis N als veranschaulichend gedacht sind und dass die Datenverarbeitungsknoten 900 und die Cloud-Computing-Umgebung 950 über eine beliebige Art von Netzwerk und/oder netzwerkadressierbarer Verbindung (z. B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit kommunizieren können.
  • Unter Bezugnahme auf 11 ist dort eine Menge von Funktionsabstraktionsschichten dargestellt, die von der Cloud-Computing-Umgebung 950 (12) bereitgestellt werden. Im Vorhinein sollte klar sein, dass die in 11 gezeigten Komponenten, Schichten und Funktionen nur zur Veranschaulichung gedacht und Ausführungsformen der Erfindung nicht auf diese beschränkt sind. Wie abgebildet werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
    Die Hardware- und Softwareschicht 960 weist Hardware- und Softwarekomponenten auf. Zu Beispielen von Hardwarekomponenten zählen Großrechner, bei einem Beispiel IBM® zSeries®-Systeme; auf der RISC-Architektur (RISC = Reduced Instruction Set Computer) beruhende Server, bei einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke und Vernetzungskomponenten. Zu Beispielen von Softwarekomponenten zählen Netzwerk-Anwendungsserversoftware, bei einem Beispiel die Anwendungsserversoftware IBM WebSphere®; und Datenbanksoftware, bei einem Beispiel die Datenbanksoftware IBM DB2®. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind weltweit in vielen juristischen Zuständigkeitsbereichen eingetragene Marken von International Business Machines Corporation.)
  • Die Virtualisierungsschicht 962 stellt eine Abstraktionsschicht bereit, von der aus die folgenden Beispiele virtueller Einheiten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke einschließlich virtueller privater Netzwerke: virtuelle Anwendungen und Betriebssysteme; und virtuelle Quellen.
  • Bei einem Beispiel kann die Verwaltungsschicht 964 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung stellt die dynamische Beschaffung von Datenverarbeitungsressourcen und von anderen Ressourcen bereit, die genutzt werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Gebührenerfassung und Preisberechnung stellen eine Kostüberwachung bereit, während Ressourcen innerhalb der Cloud-Computing-Umgebung genutzt werden, sowie Abrechnung und Fakturierung des Verbrauchs dieser Ressourcen. Bei einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung bei Cloud-Nutzern und Aufgaben sowie den Schutz für Daten und andere Ressourcen bereit. Das Benutzerportal bietet Nutzern und Systemadministratoren einen Zugang zur Cloud-Computing-Umgebung. Die Dienstgüteverwaltung (Service Level Management) stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die jeweils erforderliche Dienstgüte erreicht wird. Die Planung und Erfüllung von Dienstgütevereinbarungen (Service Level Agreement (SLA), Servicevertrag) stellt die Vorausplanung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die auf der Grundlage eines SLA zukünftige Anforderungen erwartet werden.
  • Die Betriebslastschicht 966 stellt Beispiele von Funktionalitäten bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Betriebslasten und Funktionen, die von dieser Ebene aus bereitgestellt werden können, gehören: Zuordnung und Navigation; Softwarebereitstellung und Verwaltung während des Lebenszyklus; Bereitstellung von Schulungen in virtuellen Schulungsräumen; Verarbeitung von Datenanalysen; Transaktionsverarbeitung; Deduplizierungs- und andere Sicherungsdienste wie zum Beispiel in Bezug auf die 1 bis 8 oben beschrieben.
  • Die beschriebenen Operationen können unter Verwendung von Standard-Programmiertechniken oder Standard-Entwicklungstechniken zur Erzeugung von Software, Firmware, Hardware oder einer beliebigen Kombination davon als Verfahren, Vorrichtung oder Computerprogrammprodukt realisiert sein. Dementsprechend können Aspekte der Ausführungsformen die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, in der Software- und Hardwareaspekte miteinander kombiniert sind, die hierin allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden. Ferner können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu den genaueren Beispielen (unvollständige Liste) computerlesbarer Speichermedien zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher wie zum Beispiel der Flash-Speicher 300 aus 3), ein Lichtwellenleiter, ein tragbarer Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode aufweisen. Ein derartiges übertragenes Signal kann eine beliebige Vielfalt von Formen annehmen, einschließlich, ohne darauf beschränkt zu sein, einer elektromagnetischen oder optischen Form oder einer beliebigen geeigneten Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, senden oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, einschließlich, ohne darauf beschränkt zu sein, drahtloser, drahtgebundener Medien, von Lichtwellenleitern, HF usw. oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C” oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder über ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Aspekte der vorliegenden Erfindung sind oben unter Bezugnahme auf Flussdiagramme und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken des Flussdiagramms und/oder des Blockschemas angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken der Flussdiagramms und/oder der Blockschemata angegebenen Funktionen/Aktionen bereitstellen.
  • Die Begriffe „eine Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform”, „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „eine Ausführungsform” bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)”, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Die Begriffe „einschließlich”, „aufweisen/aufweisend”, „hat/haben” und Variationen davon bedeuten „einschließlich, ohne darauf beschränkt zu sein”, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Alle nummerierten Aufstellungen von Elementen schließen nicht stillschweigend ein, dass sich beliebige oder alle der Elemente gegenseitig ausschließen, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Die Begriffe „ein/eine” und „der/die/das” bezeichnen „ein/eine oder mehrere”, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Einheiten, die in Verbindung untereinander stehen, brauchen nicht ununterbrochen miteinander in Verbindung zu stehen, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem können untereinander in Verbindung stehende Einheiten über eine oder mehrere Vermittlereinheiten direkt oder indirekt miteinander kommunizieren.
  • Eine Beschreibung einer Ausführungsform, bei der mehreren Komponenten untereinander in Verbindung stehen, schließt nicht stillschweigend ein, dass alle diese Komponenten erforderlich sind. Vielmehr ist eine Vielfalt optionaler Komponenten beschrieben, um die große Vielfalt möglicher Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Obwohl ferner Prozessschritte, Verfahrensschritte, Algorithmen und dergleichen in einer Reihenfolge beschrieben sein können, können derartige Prozesse, Verfahren und Algorithmen so gestaltet sein, dass sie in alternativen Reihenfolgen funktionieren. Anders ausgedrückt gibt ein möglicherweise beschriebener beliebiger Ablauf oder eine möglicherweise beschriebene beliebige Reihenfolge von Schritten nicht zwangsläufig ein Erfordernis an, dem zufolge die Schritte in dieser Reihenfolge durchgeführt werden müssen. Die hierin beschriebenen Schritte von Prozessen können in einer beliebigen praktisch durchführbaren Reihenfolge durchgeführt werden. Ferner können einige Schritte gleichzeitig durchgeführt werden.
  • Wenn hierin eine einzelne Einheit oder ein einzelner Gegenstand beschrieben ist, wird ohne Weiteres ersichtlich, dass mehr als eine Einheit/ein Gegenstand (unabhängig davon, ob sie zusammenarbeiten) anstelle einer einzelnen Einheit/eines einzelnen Gegenstands verwendet werden können. Ebenso wird, wenn hierin mehr als eine Einheit oder mehr als ein Gegenstand beschrieben ist (unabhängig davon, ob sie zusammenarbeiten), ohne Weiteres ersichtlich, dass eine einzelne Einheit oder ein einzelner Gegenstand oder eine andere Anzahl von Einheiten/Gegenständen anstelle der gezeigten Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten verkörpert sein, die nicht ausdrücklich als diese Funktionalität/diese Merkmale aufweisend beschrieben sind. Daher brauchen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht aufzuweisen.
  • Die veranschaulichten Operationen der 6, 7 zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge auftreten. Bei alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge durchgeführt, verändert oder entfernt werden. Darüber hinaus können Schritte zu der oben beschriebenen Logik hinzugefügt werden, die dann immer noch den beschriebenen Ausführungsschritten entspricht. Ferner können hierin beschriebene Operationen der Reihe nach auftreten, oder bestimmte Operationen können parallel verarbeitet werden. Weiterhin können Operationen durch eine einzelne Verarbeitungseinheit oder durch verteilte Verarbeitungseinheiten durchgeführt werden.
  • Die vorstehende Beschreibung verschiedener Ausführungsformen der Erfindung wurde zur Veranschaulichung und Beschreibung vorgelegt. Sie ist nicht als erschöpfend oder als die Erfindung in der exakt offenbarten Form einschränkend gedacht. In Anbetracht der oben aufgeführten Lehren sind viele Veränderungen und Variationen möglich. Es ist nicht beabsichtigt, den Schutzbereich der Erfindung durch diese detaillierte Beschreibung einzuschränken, sondern vielmehr durch die hier beigefügten Ansprüche. Die obige ausführliche Beschreibung, die Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und der Verwendung des Aufbaus der Erfindung dar. Da viele Ausführungsformen der Erfindung geschaffen werden können, ohne vom Schutzbereich der Erfindung abzuweichen, ist die Erfindung in den hierin im Anschluss beigefügten Ansprüchen niedergelegt.

Claims (30)

  1. Verfahren zum Verwalten von Datenspeicher in einem Datenverarbeitungssystem, wobei das Verfahren aufweist: Speichern eines ersten deduplizierten Datenobjekts in einem primären Speicherpool; Ermitteln des Zeitraums, während dessen sich das erste Datenobjekt im primären Speicherpool befindet; Vergleichen des ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird; und nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das erste Datenobjekt aus dem primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  2. Verfahren nach Anspruch 1, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob das erste Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  3. Verfahren nach Anspruch 2, ferner aufweisend das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, einen Schwellenwert überschreitet.
  4. Verfahren nach Anspruch 1, ferner aufweisend: Speichern eines zweiten deduplizierten Datenobjekts in einem primären Speicherpool; Ermitteln des Zeitraums, während dessen sich das zweite Datenobjekt im primären Speicherpool befindet; Vergleichen des ermittelten Zeitraums für das zweite Datenobjekt mit einem vorgegebenen Zeitintervall; nachdem der ermittelte Zeitraum für das zweite Datenobjekt dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird; und nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das zweite Datenobjekt vom primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  5. Verfahren nach Anspruch 4, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob das zweite Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  6. Verfahren nach Anspruch 5, ferner aufweisend das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  7. Verfahren nach Anspruch 1, ferner aufweisend: Speichern eines ersten Datenträgers, der deduplizierte Datenobjekte enthält, in einem primären Speicherpool; zu jedem Datenobjekt des ersten Datenträgers: Ermitteln des Zeitraums, während dessen sich das Datenobjekt des ersten Datenträgers im primären Speicherpool befindet; Vergleichen des zu dem Datenobjekt des ersten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; und nachdem der zu dem Datenobjekt des ersten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des ersten Datenträgers, auf den nicht durch ein anderes Datenobjekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des ersten Datenträgers; und Ermitteln, ob die Datenobjekte des ersten Datenträgers vom ersten primären Speicherpool auf einen sekundären Speicherpool als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes verschoben werden sollen.
  8. Verfahren nach Anspruch 7, wobei das vorgegebene Zeitintervall zu jedem Datenobjekt des ersten Datenträgers als Funktion von mindestens einem aus einem Zeitintervall zwischen Sicherungsereignissen an einer Client-Station, einer Weitergabezeit von Duplikatdaten zwischen Client-Stationen und einer Sicherungs-Verarbeitungszeit für ein im primären Speicherpool gespeichertes Datenobjekt ermittelt wird.
  9. Verfahren nach Anspruch 7, ferner aufweisend: Speichern eines zweiten Datenträgers, der deduplizierte Datenobjekte enthält, in einem primären Speicherpool; zu jedem Datenobjekt des zweiten Datenträgers: Ermitteln des Zeitraums, während dessen sich das Datenobjekt des zweiten Datenträgers im primären Speicherpool befindet; Vergleichen des zu dem Datenobjekt des zweiten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; und nachdem der zu dem Datenobjekt des zweiten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des zweiten Datenträgers, auf den nicht durch ein anderes Datenobjekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des zweiten Datenträgers; und Ermitteln, ob die Datenobjekte des zweiten Datenträgers vom ersten primären Speicherpool auf einen sekundären Speicherpool als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes verschoben werden sollen.
  10. Verfahren nach Anspruch 9, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob die Datenobjekte des zweiten Datenträgers verschoben werden sollen, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche des zweiten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  11. Verfahren nach Anspruch 10, ferner aufweisend das Verschieben der Datenobjekte des ersten Datenträgers vom primären Speicherpool auf einen sekundären Speicherpool, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  12. Computerprogrammprodukt zum Verwalten von Datenspeicher, der eine Vielzahl von Speicherpools aufweist, die Speicherbereiche von Datenobjekten enthalten, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin verkörpertem computerlesbaren Programmcode aufweist, der ausgeführt wird, um Operationen durchzuführen, wobei die Operationen aufweisen: Speichern eines ersten deduplizierten Datenobjekts in einem primären Speicherpool; Ermitteln des Zeitraums, während dessen sich das erste Datenobjekt im primären Speicherpool befindet; Vergleichen des ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird; und nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das erste Datenobjekt aus dem primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  13. Computerprogrammprodukt nach Anspruch 12, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob das erste Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  14. Computerprogrammprodukt nach Anspruch 13, wobei die Operationen ferner das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, einen Schwellenwert überschreitet.
  15. Computerprogrammprodukt nach Anspruch 12, wobei die Operationen ferner aufweisen: Speichern eines zweiten deduplizierten Datenobjekts in einem primären Speicherpool; Ermitteln des Zeitraums, während dessen sich das zweite Datenobjekt im primären Speicherpool befindet; Vergleichen des ermittelten Zeitraums für das zweite Datenobjekt mit einem vorgegebenen Zeitintervall; nachdem der ermittelte Zeitraum für das zweite Datenobjekt dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird; und nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das zweite Datenobjekt vom primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  16. Computerprogrammprodukt nach Anspruch 15, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob das zweite Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  17. Computerprogrammprodukt nach Anspruch 16, wobei die Operationen ferner das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  18. Computerprogrammprodukt nach Anspruch 12, wobei die Operationen ferner aufweisen: Speichern eines ersten Datenträgers, der deduplizierte Datenobjekte enthält, in einem primären Speicherpool; zu jedem Datenobjekt des ersten Datenträgers: Ermitteln des Zeitraums, während dessen sich das Datenobjekt des ersten Datenträgers im primären Speicherpool befindet; Vergleichen des zu dem Datenobjekt des ersten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; und nachdem der zu dem Datenobjekt des ersten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des ersten Datenträgers, auf den nicht durch ein anderes Datenobjekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des ersten Datenträgers; und Ermitteln, ob Datenobjekte des Datenträgers vom ersten primären Speicherpool auf einen sekundären Speicherpool als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes verschoben werden sollen.
  19. Computerprogrammprodukt nach Anspruch 18, wobei das vorgegebene Zeitintervall zu jedem Datenobjekt des ersten Datenträgers als Funktion von mindestens einem aus einem Zeitintervall zwischen Sicherungsereignissen an einer Client-Station, einer Weitergabezeit von Duplikatdaten zwischen Client-Stationen und einer Sicherungs-Verarbeitungszeit für ein im primären Speicherpool gespeichertes Datenobjekt ermittelt wird.
  20. Datenverarbeitungssystem, aufweisend: Datenspeicher mit einer Vielzahl von Speicherpools, die Speicherbereiche von Datenobjekten enthalten; und einen Speichermanager, der einen Prozessor und ein computerlesbares Speichermedium mit darin verkörpertem computerlesbaren Programmcode aufweist, der durch den Prozessor ausgeführt wird, um Verwaltungsoperationen durchzuführen, wobei die Verwaltungsoperationen aufweisen: Speichern eines ersten deduplizierten Datenobjekts in einem primären Speicherpool; Ermitteln des Zeitraums, während dessen sich das erste Datenobjekt im primären Speicherpool befindet; Vergleichen des ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird; und nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das erste Datenobjekt aus dem primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das erste Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  21. Datenverarbeitungssystem nach Anspruch 20, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob das erste Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  22. Datenverarbeitungssystem nach Anspruch 21, wobei die Operationen ferner das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, einen Schwellenwert überschreitet.
  23. Datenverarbeitungssystem nach Anspruch 21, wobei die Operationen ferner aufweisen: Speichern eines zweiten deduplizierten Datenobjekts in einem primären Speicherpool; Ermitteln des Zeitraums, während dessen sich das zweite Datenobjekt im primären Speicherpool befindet; Vergleichen des ermittelten Zeitraums für das zweite Datenobjekt mit einem vorgegebenen Zeitintervall; nachdem der ermittelte Zeitraum für das zweite Datenobjekt dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird; und nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, Ermitteln, ob das zweite Datenobjekt vom primären Speicherpool auf einen sekundären Speicherpool als Funktion dessen verschoben werden soll, ob das zweite Datenobjekt einen Speicherbereich aufweist, auf den durch ein anderes Datenobjekt verwiesen wird.
  24. Datenverarbeitungssystem nach Anspruch 23, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob das zweite Datenobjekt verschoben werden soll, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  25. Datenverarbeitungssystem nach Anspruch 24, wobei die Operationen ferner das Verschieben des ersten Datenobjekts vom primären Speicherpool auf einen sekundären Speicherpool aufweisen, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenobjekts belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  26. Datenverarbeitungssystem nach Anspruch 20, bei dem die Operationen ferner aufweisen: Speichern eines ersten Datenträgers, der deduplizierte Datenobjekte enthält, in einem primären Speicherpool; zu jedem Datenobjekt des ersten Datenträgers: Ermitteln des Zeitraums, während dessen sich das Datenobjekt des ersten Datenträgers im primären Speicherpool befindet; Vergleichen des zu dem Datenobjekt des ersten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; und nachdem der zu dem Datenobjekt des ersten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des ersten Datenträgers, auf den nicht durch ein anderes Datenobjekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des ersten Datenträgers; und Ermitteln, ob die Datenobjekte des ersten Datenträgers vom ersten primären Speicherpool auf einen sekundären Speicherpool als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes verschoben werden sollen.
  27. Datenverarbeitungssystem nach Anspruch 26, wobei das vorgegebene Zeitintervall zu jedem Datenobjekt des ersten Datenträgers als Funktion von mindestens einem aus einem Zeitintervall zwischen Sicherungsereignissen an einer Client-Station, einer Weitergabezeit von Duplikatdaten zwischen Client-Stationen und einer Sicherungs-Verarbeitungszeit für ein im primären Speicherpool gespeichertes Datenobjekt ermittelt wird.
  28. Datenverarbeitungssystem nach Anspruch 26, wobei die Operationen ferner aufweisen: Speichern eines zweiten Datenträgers, der deduplizierte Datenobjekte enthält, in einem primären Speicherpool; zu jedem Datenobjekt des zweiten Datenträgers: Ermitteln des Zeitraums, während dessen sich das Datenobjekt des zweiten Datenträgers im primären Speicherpool befindet; Vergleichen des zu dem Datenobjekt des zweiten Datenträgers ermittelten Zeitraums mit einem vorgegebenen Zeitintervall; und nachdem der zu dem Datenobjekt des zweiten Datenträgers ermittelte Zeitraum einem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zu jedem Speicherbereich des Datenobjekts des zweiten Datenträgers, auf den nicht durch ein anderes Datenobjekt verwiesen wird, Berechnen des Speicherplatzes, der durch die Datenobjekt-Speicherbereiche belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, und Berechnen des verfügbaren Speicherplatzes des zweiten Datenträgers; und Ermitteln, ob die Datenobjekte des zweiten Datenträgers vom ersten primären Speicherpool auf einen sekundären Speicherpool als Funktion des berechneten belegten Speicherplatzes und des berechneten verfügbaren Speicherplatzes verschoben werden sollen.
  29. Datenverarbeitungssystem nach Anspruch 28, wobei, nachdem der ermittelte Zeitraum dem vorgegebenen Zeitintervall entspricht oder dieses überschreitet, zum Ermitteln, ob die Datenobjekte des zweiten Datenträgers verschoben werden sollen, das Berechnen des Speicherplatzes gehört, der durch die Datenobjekt-Speicherbereiche des zweiten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
  30. Datenverarbeitungssystem nach Anspruch 29, ferner aufweisend das Verschieben der Datenobjekte des ersten Datenträgers vom primären Speicherpool auf einen sekundären Speicherpool, wenn der berechnete Speicherplatz, der durch die Datenobjekt-Speicherbereiche des ersten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird, den berechneten Speicherplatz überschreitet, der durch Datenobjekt-Speicherbereiche des zweiten Datenträgers belegt wird, auf die nicht durch ein anderes Datenobjekt verwiesen wird.
DE112012005275.7T 2011-12-15 2012-12-04 Datenauswahl zur Sicherung von Datenspeichern Active DE112012005275B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/327,571 US9087010B2 (en) 2011-12-15 2011-12-15 Data selection for movement from a source to a target
US13/327,571 2011-12-15
PCT/IB2012/056934 WO2013088298A1 (en) 2011-12-15 2012-12-04 Data selection for data storage backup

Publications (2)

Publication Number Publication Date
DE112012005275T5 true DE112012005275T5 (de) 2014-10-16
DE112012005275B4 DE112012005275B4 (de) 2021-11-04

Family

ID=48611430

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012005275.7T Active DE112012005275B4 (de) 2011-12-15 2012-12-04 Datenauswahl zur Sicherung von Datenspeichern

Country Status (4)

Country Link
US (2) US9087010B2 (de)
CN (1) CN104011717B (de)
DE (1) DE112012005275B4 (de)
WO (1) WO2013088298A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087010B2 (en) 2011-12-15 2015-07-21 International Business Machines Corporation Data selection for movement from a source to a target
CN104106063B (zh) * 2012-02-13 2017-06-30 株式会社日立制作所 用于分级存储系统的管理装置和管理方法
US8984097B1 (en) * 2012-05-23 2015-03-17 Symantec Corporation Efficient file replication which preserves the underlying extent structure
US9141633B1 (en) * 2012-06-27 2015-09-22 Emc Corporation Special markers to optimize access control list (ACL) data for deduplication
US9015212B2 (en) * 2012-10-16 2015-04-21 Rackspace Us, Inc. System and method for exposing cloud stored data to a content delivery network
US8996478B2 (en) * 2012-10-18 2015-03-31 Netapp, Inc. Migrating deduplicated data
US9372726B2 (en) 2013-01-09 2016-06-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US9244932B1 (en) * 2013-01-28 2016-01-26 Symantec Corporation Resolving reparse point conflicts when performing file operations
US9632926B1 (en) * 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
US9529545B1 (en) * 2013-12-26 2016-12-27 EMC IP Holding Company LLC Managing data deduplication in storage systems based on storage space characteristics
US9942110B2 (en) * 2014-06-25 2018-04-10 Unisys Corporation Virtual tape library (VTL) monitoring system
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US9612918B2 (en) * 2014-10-17 2017-04-04 Netapp, Inc. Methods and systems for restoring storage objects
US9811550B2 (en) * 2014-12-02 2017-11-07 Ca, Inc. Security for multi-tenant deduplication datastore against other tenants
US10728585B2 (en) * 2015-06-30 2020-07-28 Sensormatic Electronics, LLC System and method for distributed video storage across enterprises
US10754733B2 (en) 2015-07-16 2020-08-25 Gil Peleg System and method for mainframe computers backup and restore
US10901942B2 (en) 2016-03-01 2021-01-26 International Business Machines Corporation Offloading data to secondary storage
US11113247B1 (en) 2016-05-10 2021-09-07 Veritas Technologies Llc Routing I/O requests to improve read/write concurrency
US10430350B1 (en) * 2017-06-27 2019-10-01 Wells Fargo Bank, N.A. Secure storage of data through a multifaceted security scheme
TWI659306B (zh) * 2018-01-10 2019-05-11 英屬開曼群島商捷鼎創新股份有限公司 卷搬移中執行資料讀寫的方法及電子裝置
US11782882B2 (en) * 2018-01-22 2023-10-10 Jpmorgan Chase Bank, N.A. Methods for automated artifact storage management and devices thereof
US10725679B2 (en) 2018-03-01 2020-07-28 Nutanix, Inc. Systems and methods for calculating a probability of exceeding storage capacity in a virtualized computing system
US11010082B2 (en) * 2018-10-31 2021-05-18 EMC IP Holding Company LLC Mechanisms for performing accurate space accounting for volume families
US10877683B2 (en) 2019-04-09 2020-12-29 International Business Machines Corporation Tiered storage optimization and migration
US20200192596A1 (en) * 2019-06-03 2020-06-18 Alibaba Group Holding Limited Blockchain data storage method and apparatus
US11010091B2 (en) * 2019-08-29 2021-05-18 International Business Machines Corporation Multi-tier storage
US11860778B2 (en) * 2021-10-26 2024-01-02 EMC IP Holding Company LLC Efficient cloud garbage collection mechanism for lowering cloud costs when using cloud tiers or storage classes with minimum storage durations

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5564037A (en) * 1995-03-29 1996-10-08 Cheyenne Software International Sales Corp. Real time data migration system and method employing sparse files
US6098074A (en) 1997-10-29 2000-08-01 International Business Machines Corporation Storage management system with file aggregation
US20040054656A1 (en) * 2001-08-31 2004-03-18 Arkivio, Inc. Techniques for balancing capacity utilization in a storage environment
US7546364B2 (en) * 2002-05-16 2009-06-09 Emc Corporation Replication of remote copy data for internet protocol (IP) transmission
CN1324481C (zh) 2003-07-31 2007-07-04 华为技术有限公司 一种用于网络处理器的数据老化方法
WO2006053084A2 (en) * 2004-11-05 2006-05-18 Commvault Systems, Inc. Method and system of pooling storage devices
US7404039B2 (en) * 2005-01-13 2008-07-22 International Business Machines Corporation Data migration with reduced contention and increased speed
US7403949B2 (en) * 2005-08-17 2008-07-22 International Business Machines Corporation Elimination of redundant objects in storage systems
US7552300B2 (en) * 2006-01-03 2009-06-23 International Business Machines Corporation Method for migrating objects in content management systems through exploitation of file properties, temporal locality, and spatial locality
US7831793B2 (en) 2006-03-01 2010-11-09 Quantum Corporation Data storage system including unique block pool manager and applications in tiered storage
JP4940738B2 (ja) * 2006-04-12 2012-05-30 株式会社日立製作所 記憶領域動的割当方法
JP2008165624A (ja) * 2006-12-28 2008-07-17 Hitachi Ltd 計算機システム及び第1記憶装置
JP2008210057A (ja) * 2007-02-23 2008-09-11 Hitachi Ltd 記憶システム及びその管理方法
US20080243878A1 (en) 2007-03-29 2008-10-02 Symantec Corporation Removal
US7870105B2 (en) * 2007-11-20 2011-01-11 Hitachi, Ltd. Methods and apparatus for deduplication in storage system
JP5238235B2 (ja) * 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
US7908436B1 (en) 2008-04-25 2011-03-15 Netapp, Inc. Deduplication of data on disk devices using low-latency random read memory
US20100070474A1 (en) * 2008-09-12 2010-03-18 Lad Kamleshkumar K Transferring or migrating portions of data objects, such as block-level data migration or chunk-based data migration
US8984252B2 (en) * 2009-01-22 2015-03-17 International Business Machines Corporation Extent consolidation and storage group allocation
US8224874B2 (en) 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
CN102135963B (zh) * 2010-01-21 2013-04-24 深圳市智骏数据科技有限公司 数据迁移的方法和系统
CN102985911B (zh) 2010-03-16 2016-07-06 科派恩股份有限公司 高度可伸缩和分布式重复数据删除
US8285762B2 (en) * 2010-05-11 2012-10-09 International Business Machines Corporation Migration of metadata and storage management of data in a first storage environment to a second storage environment
WO2012011153A1 (en) * 2010-07-22 2012-01-26 Hitachi, Ltd. Data storage apparatus and data storage control method for the same
US8364716B2 (en) * 2010-12-17 2013-01-29 Netapp, Inc. Methods and apparatus for incrementally computing similarity of data sources
CN102033962B (zh) * 2010-12-31 2012-05-30 中国传媒大学 一种快速去重的文件数据复制方法
CN102185889B (zh) * 2011-03-28 2014-01-22 北京邮电大学 基于iSCSI的重复数据删除方法
US9087010B2 (en) 2011-12-15 2015-07-21 International Business Machines Corporation Data selection for movement from a source to a target

Also Published As

Publication number Publication date
US9087010B2 (en) 2015-07-21
US20130159645A1 (en) 2013-06-20
US20130159648A1 (en) 2013-06-20
WO2013088298A1 (en) 2013-06-20
US9087011B2 (en) 2015-07-21
CN104011717A (zh) 2014-08-27
DE112012005275B4 (de) 2021-11-04
CN104011717B (zh) 2017-12-29

Similar Documents

Publication Publication Date Title
DE112012005275B4 (de) Datenauswahl zur Sicherung von Datenspeichern
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112012002762T5 (de) Replikationen von Datenobjekten von einem Quellserver auf einen Zielserver
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE112011104419B4 (de) Bereichsmigration für gepaarte Speicherung
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112013001421B4 (de) Auf Richtlinien beruhendes Verwalten von Speicherfunktionen in Datenreplikationsumgebungen
US9760446B2 (en) Conveying value of implementing an integrated data management and protection system
DE112019002584T5 (de) Wechseln zwischen vermittlerdiensten für ein speichersystem
DE112012004336B4 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
DE102012219155B4 (de) Verschlüsseln von Datenobjekten zur Datensicherung
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
JP2020525906A (ja) データベーステナントマイグレーションのシステム及び方法
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE202014010909U1 (de) Verteilung von Daten in verteilten Speichersystemen
DE102013204508A1 (de) Dynamisches Neukonfigurieren eines Speichersystems
DE112012004318T5 (de) Verwendung eines virtuellen Laufwerks als Hot-Spare-Einheit für eine RAID-Gruppe
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
US20170177652A1 (en) Copying garbage collector for b+ trees under multi-version concurrency control
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
DE112012000282B4 (de) Anwendungswiederherstellung in einem Dateisystem
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final