-
ALLGEMEINER STAND DER TECHNIK
-
In Computersystemen kann ein Backup von Daten in einem Backup-Datenspeicher für eine Datenredundanz sorgen, die das Wiederherstellen von Daten nach einem Datenverlustereignis gestattet.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Verschiedene Ausführungsformen sind zu Veranschaulichungszwecken in den beiliegenden Zeichnungen dargestellt und sollten auf keinerlei Weise als den Schutzbereich der vorliegenden Offenbarung beschränkend ausgelegt werden. Außerdem können verschiedene Merkmale von verschiedenen offenbarten Ausführungsformen kombiniert werden, um zusätzliche Ausführungsformen auszubilden, die Teil der vorliegenden Offenbarung sind.
-
1 ist ein Blockdiagramm eines Rechensystems gemäß einer oder mehreren Ausführungsformen.
-
2A ist ein Blockdiagramm, das einen Daten-Blob mit mehreren Dateien gemäß einer oder mehreren Ausführungsformen darstellt.
-
2B ist ein Blockdiagramm, das eine Datendatei mit mehreren Chunks von Daten gemäß einer oder mehreren Ausführungsformen darstellt.
-
3A ist ein Blockdiagramm, das eine individuelle Chunk-Datei gemäß einer oder mehreren Ausführungsformen darstellt.
-
3B ist ein Blockdiagramm, das eine Chunk-Datei gemäß einer oder mehreren Ausführungsformen darstellt.
-
4 ist ein Blockdiagramm, das eine Dateiverzeichnishierarchie gemäß einer oder mehreren Ausführungsformen darstellt.
-
5 ist ein Flussdiagramm, das einen Prozess zum Sichern einer Datei gemäß einer oder mehreren Ausführungsformen darstellt.
-
6 ist ein Flussdiagramm, das einen Prozess zum Wiederherstellen einer Datei aus einem Backup-Speicher gemäß einer oder mehreren Ausführungsformen darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Wenngleich gewisse Ausführungsformen beschrieben werden, werden diese Ausführungsformen lediglich als Beispiel vorgelegt und sollen den Schutzbereich nicht beschränken. Tatsächlich können die hierin beschriebenen neuartigen Verfahren und Systeme in einer Vielzahl anderer Formen verkörpert werden. Zudem können verschiedene Weglassungen, Substitutionen und Änderungen an der Form der hierin beschriebenen Verfahren und Systeme vorgenommen werden, ohne von dem Schutzbereich abzuweichen.
-
Die hier verwendeten Überschriften dienen lediglich der Zweckmäßigkeit und beeinflussen den Schutzbereich oder die Bedeutung der Ansprüche nicht notwendigerweise. Es werden hier beispielhafte Konfigurationen und Ausführungsformen bezüglich des Sicherns von Daten in einem Rechensystem offenbart.
-
Überblick
-
Gemäß verschiedenen Datendeduplizierungsprozessen beinhaltet das Sichern von Daten das Aufteilen von Dateien in kleinere Chunks von Daten und, um Raum und/oder Datentransferzeit einzusparen, nur das Speichern jener Chunks, die sich während des Backup geändert haben. Bei gewissen Ausführungsformen wird ein Hash-Wert für jeden hashbaren Chunk einer Datei berechnet, so dass die geänderten Chunks durch Vergleichen von Hash-Werten und Identifizieren von Chunks, die damit assoziierte geänderte Hash-Werte besitzen, identifiziert werden können. Ein derartiger Prozess kann eine Anzahl von Vorzügen bereitstellen. Falls sich beispielsweise ein Chunk nicht geändert hat, wird ein derartiger Chunk nicht gespeichert, wodurch Datenablageressourcen eingespart werden. Falls außerdem ein Hash-Wert für einen bestimmten Chunk in einer Datei in einer anderen Datei gefunden wird, kann ein derartiger Chunk für die zweite und/oder nachfolgende Dateien wiederverwendet werden; der redundante Chunk wird nicht wieder gespeichert, und ein entsprechender Eintrag in einer Metadatenliste von Hash-Werten für diese Datei wird stattdessen aktualisiert, um die Beziehung wiederzugeben.
-
Bei containerisiertem Backup sorgen gewisse Lösungen für modifizierte oder neue Chunks, die mit einer an eine umfangreiche Datei anzuhängenden Datei assoziiert sind, oder einen Blob, wobei die umfangreiche Datei bzw. der umfangreiche Blob ständig so erweitert wird, dass sie/er die modifizierten/neuen Chunks enthalten. Gewisse Backup-Systeme gestatten jedoch möglicherweise nicht das Anhängen von Chunks an Dateien/Blobs innerhalb des Backup-Systems, oder eine derartige Operation ist möglicherweise ungünstig oder unpraktisch. Beispielsweise stellt ein Backup-Server möglicherweise keine öffentlich zugängliche Applikationsprogrammierschnittstelle (API) bereit, die es einem Client-System gestatten würde, das Speichern modifizierter/neuer Chunks in dem Backup-Server zu bewirken, ohne die ganze relevante Datei zuerst zu dem Client herunterzuladen. Deshalb kann es bei derartigen Systemen notwendig sein, eine Datei von dem Backup-System herunterzuziehen, modifizierte/neue Chunks daran anzuhängen und die ganze Datei/ den ganzen Blob mit den angehängten Chunks zurück zum Backup-System zu schieben, was verschiedene Datentransferineffizienzen einführen kann.
-
Gewisse hierin offenbarte Ausführungsformen sorgen für eine verbesserte Backup-Effizienz in Systemen, die möglicherweise das angehängte Schreiben von Chunks durch Generieren unabhängiger Dateien für jeden zu sichernden modifizierten/neuen Chunk gestatten. Bei gewissen Ausführungsformen sind eindeutige Datei-Chunks mit eindeutigen Hash-Werten assoziiert, die eine Abbildungsinformation liefern, die anzeigt, wo sich die Chunk-Datei in einer nichtflüchtigen Ablage des Backup-Systems befindet. Mit in der Backup-Datenspeicher gespeicherten individuellen Chunk-Dateien besteht möglicherweise keine Notwendigkeit, neue Chunks an einen einzelnen Blob oder eine andere umfangreiche Datenstruktur anzuhängen.
-
Datenablagesystem
-
1 ist ein Blockdiagramm eines Rechensystems 100 mit einem Datenablage-Backup-System 120 und einem über eine Schnittstelle 175 kommunikativ an das Backup-System gekoppelten Host-System 110. Die Schnittstelle 175 kann eine verdrahtete oder drahtlose Schnittstellenverbindung oder irgendeine andere Art von Kommunikationsschnittstelle sein wie etwa beispielsweise SATA, USB, Thunderbolt, Ethernet, Wi-Fi, Bluetooth, PCIe oder dergleichen.
-
Das Host-System 110 kann eine oder mehrere Recheneinrichtungen mit einem oder mehreren Prozessoren sein, die zum Ausführen von Code konfiguriert sind. Der Host 110 kann weiterhin ein oder mehrere Datenablagemodule umfassen, wie etwa die in 1 dargestellte Hostdatenablage-Datenspeicher. Bei gewissen Ausführungsformen kann der Host 110 Daten in dem Host-Datenspeicher 114 ablegen.
-
Es kann für das Host-System 110 wünschenswert sein, eine Datenredundanz durch Sichern von Benutzerdaten zu dem Backup-System 120 zu implementieren, um das Risiko des Datenverlustes zu reduzieren oder aus anderen Gründen. Der Host 110 kann konfiguriert sein zum Sichern mindestens eines Teils der in dem Host-Datenspeicher 114 abgelegten Daten in einem oder mehreren externen Backup-Systemen einschließlich dem Backup-System 120. Das Backup-System 120 kann konfiguriert sein zum Empfangen von Daten von dem Host-System 110 über die Schnittstelle 175 und Sichern solcher Daten in einem oder mehreren nichtflüchtigen Ablagemodulen 140, wie durch einen Backup-Client angewiesen. Das dargestellte System 100 zeigt einen innerhalb eines Controllers 130 des Backup-Systems 120 implementierten Backup-Client 132. Alternativ oder zusätzlich kann das System 100 konfiguriert sein zum Implementieren eines Daten-Backups, wie durch einen Backup-Client 112 angewiesen, der eine Komponente des Host-Systems 110 ist. Bei gewissen, unten beschriebenen Ausführungsformen werden Backup-Operationen vorteilhafterweise durch den Backup-Client 112 des Host-Systems 110 angewiesen. Es versteht sich jedoch, dass sich die Backup-Client-Logik innerhalb des Schutzbereichs der vorliegenden Offenbarung an einem beliebigen gewünschten oder praktischen Ort befinden kann.
-
Bei gewissen Ausführungsformen umfasst das Backup-System 120 eine Direct-Attached-Ablageeinrichtung (DAS). Alternativ kann das Backup-System 120 ein über ein Computernetzwerk wie etwa das Internet an das Host-System 110 gekoppeltes abgesetztes Backup-Server-System sein.
-
Der Backup-Client 112 des Host-Systems 110 kann Lese- und/oder Schreibbefehle an das Backup-System 120 ausgeben, die das Backup-System anweisen, Kopien von Daten in der nichtflüchtigen Ablage 140 des Backup-Systems 120 zu speichern. Bei gewissen Ausführungsformen führt das Backup-System 120 weiterhin gewisse Metadatentabellen oder ein anderes datenerleichterndes effizientes Backup und Wartung von Benutzerdaten in der nichtflüchtigen Ablage 140.
-
Die Backup-Client-Logik kann konfiguriert sein zum Implementieren einer Datendeduplizierung, was das Identifizieren und Entfernen oder das Verhindern einer Duplizierung von Daten innerhalb der Datenablage 140 beinhalten kann, ohne die Datentreue und/oder -integrität zu beeinträchtigen. Die Deduplizierung kann während Hardwarefehlern Resilienz bereitstellen und kann weiterhin eine Prüfsummenvalidierung an Daten und Metadaten sowie Redundanz für Metadaten und Chunk-Daten (z.B. Daten-Chunks, auf die häufig zugegriffen wird) bereitstellen.
-
Um die Deduplizierungsfunktionalität zu erleichtern, kann der Backup-Client (132 und/oder 112) Dateien in kleinere Chunks (z.B. 32–128 kB) segmentieren, die bei gewissen Ausführungsformen von variabler Größe sein können. Der Backup-Client identifiziert weiterhin doppelte Chunks und führt eine einzelne Kopie jedes Chunks. Redundante Kopien der Chunks können durch Bezugnahmen auf die einzelne Kopie ersetzt werden, wie etwa in einer oder mehreren Metadatentabellen beschriebene Referenzen. Bei gewissen Ausführungsformen werden Chunks komprimiert und dann in Containerdateien für ein containerisiertes Backup organisiert.
-
Der Ausdruck „Chunk“ wird hierin gemäß seiner breiten und gewöhnlichen Bedeutung verwendet und kann sich auf eine beliebige Zuordnung oder Sammlung von Daten in einer beliebigen Art der Form oder Struktur beziehen. Zudem können Bezugnahmen auf „Chunks“ hierin auf eine beliebige Art von Datenstruktur anwendbar sein, wie etwa Chunks, Heaps, Blobs, Dateien, Blöcke, Seiten oder eine andere Datenstruktur. Hierin beschriebene Chunks können von fester oder willkürlicher Größe sein. Bei gewissen Ausführungsformen kann sich die Chunk-Größe dynamisch ändern.
-
Zu Datendeduplizierungszwecken können Dateien durch Stubs ersetzt werden, die zu Datenblöcken zeigen, die innerhalb eines gemeinsamen Chunk-Speichers der nichtflüchtigen Ablage 140 abgelegt sind. Während des Dateizugriffs können die korrekten Blöcke/Chunks zusammengesetzt und dem Host-System 110 geliefert werden. Der Backup-Client (112/130) kann weiterhin eine oder mehrere Datenwartungsoperationen bezüglich der nichtflüchtigen Ablage 140 implementieren, wie etwa Optimierung, Müllsammlung, Wear Leveling und/oder Scrubbing.
-
Um die Deduplizierungsfunktionalität zu implementieren, kann das Backup-System 120 und/oder das Host-System 110 Metadaten führen, die Assoziationen zwischen Dateien und damit assoziierten Chunks führen, sowie Hash-Werte oder andere Kennungen, die mit den verschiedenen Dateien und/oder Chunks assoziiert sind, um die Identifikation von Modifikationen oder Änderungen in Benutzerdaten zu gestatten, die das Sichern oder Speichern solcher modifizierter oder geänderter Dateidaten gemäß dem relevanten Deduplizierungsprotokoll erforderlich machen.
-
Bei gewissen Ausführungsformen ist das System 100 konfiguriert zum Speichern jeder hashbaren Einheit einer Datei als eine separate Chunk-Datei. Solche Chunk-Dateien können mit dem mit den jeweiligen Chunks assoziierten hexadezimalen Hash-Wert benannt werden. Bei gewissen Ausführungsformen werden separate Chunk-Dateien mit einer “.hash”-Dateiendung gespeichert. Das Speichern von Chunks als separate Chunk-Dateien kann die Notwendigkeit zum Anhängen von Chunks an eine ständig wachsende Datei oder einen ständig wachsenden Blob verringern, wie oben beschrieben. Wo Backup-Repositories kein Verfahren zum Anhängen von Chunks an eine abgesetzte Datei bereitstellen, können deshalb hierin offenbarte Ausführungsformen das Speichern modifizierter/neuer Chunks durch das Host-System 110 im Backup-System 120 gestatten. Anstatt eine Anhäng-Funktion zum Anhängen des Chunks an die Datei aufzurufen, kann beispielsweise eine einfache Dateispeicherungsfunktion durch das Host-System 110 aufgerufen werden, um die separaten Chunk-Dateien in dem Backup-System 120 zu speichern.
-
Wenngleich nicht dargestellt, können das Backup-System 120 und das Host-System 110 verschiedene andere Komponenten und/oder Merkmale enthalten, wie etwa flüchtige und/oder nichtflüchtige Speichermodule, Datenübertragungskanäle/-schnittstellen, und/oder, und/oder Prozessoren, Zustandsmaschinen oder andere Rechenkomponenten.
-
Chunk-Level-Dateien
-
2A ist ein Blockdiagramm, das eine Ausführungsform eines Daten-Blobs 201 von Benutzerdaten veranschaulicht, wobei der Blob 201 mehrere Dateien (Datei 1–Datei N) enthält. Der Ausdruck „Blob“ wird hier gemäß seiner breiten und gewöhnlichen Bedeutung verwendet und kann sich auf eine beliebige von mehreren Arten von Datenstrukturen oder Einheiten von Daten beziehen, die in einem Backup-Datenspeicher abgelegt werden können. Beispielsweise kann sich “Blob” auf ein binäres großes Objekt, eine derartige Datei, einen Strom, ein digitales Dokument, eine Tabelle, ein Verzeichnis, eine Datenbank, ein Archiv, ein Objekt oder irgendeine andere Art von Datenstruktur oder Sammlung von Daten in einer unstrukturierten, halbstrukturierten oder strukturierten Datenablageumgebung beziehen. Beispielsweise kann ein Blob eine beliebige Art von Daten enthalten, wie etwa Bilder, Audio oder andere Multimediaobjekte, einen binären ausführbaren Code oder eine andere Art von Daten. Der Blob 201 kann eine beliebige gewünschte oder praktische Größe wie etwa ungefähr 2GB, 4GB oder irgendeinen anderen Wert besitzen. Der Blob 201 kann eine beliebige Anzahl von Dateien von Daten wie etwa Benutzerdaten enthalten.
-
Bei gewissen Ausführungsformen kann eine Datei von Benutzerdaten mehrere Chunks von Benutzerdaten umfassen, wobei jeder Chunk einen einen Teilabschnitt der Benutzerdaten der Datei darstellt. 2B veranschaulicht ein Blockdiagramm, das eine Datei 203 mit mehreren Chunks (Chunk A–Chunk N) zeigt. Die Datei 203 kann weiterhin mit den Benutzerdaten der Datei assoziierte Metadaten 205 wie etwa einen Dateinamen 207 oder eine andere Dateikennung enthalten.
-
Wie oben beschrieben können bei gewissen Backup-Lösungen modifizierte/neue Chunks an eine ständig wachsende Datei angehängt werden, wobei Datei-Offset und Chunk-Längendaten in dem Backup-Datenspeicher zum Lokalisieren solcher Chunks geführt werden können. Da jedoch möglicherweise nicht alle Backup-Repositories dahingehend konfiguriert sind, das Anhängen von Chunks an Dateien auf eine derartige Weise zu unterstützen, kann es wünschenswert sein, dass individuelle Chunks in gewissen Situationen als separate Dateien gespeichert werden, wie hierin offenbart. Weiterhin können die separaten Chunk-Dateien mit dem Hash-Wert (z.B. hexadezimalen Wert) des jeweiligen Chunks benannt werden. Zu Veranschaulichungszwecken kann eine Chunk-Datei beispielsweise als “08EF8A59CC3B17D9.hash” oder ein anderer Hash-Wert und/oder einer Dateiendung benannt werden.
-
Die separaten, in individuellen Chunks von Daten abgelegten Dateien werden hierin als „Chunk-Dateien“ bezeichnet. Wie in 3A gezeigt, kann ein individueller Chunk 311 (Chunk A) als eine individuelle Chunk-Datei 302A gespeichert werden, wobei die Chunk-Datei die Chunk-Daten 311 sowie gewisse mit dem Chunk assoziierte Metadaten 305, wie etwa eine Chunk-Kennung 315, umfasst. Die Chunk-Kennung 315 kann beispielsweise ein mit der Chunk-Datei 302A assoziierter Dateiname oder dergleichen sein. Andere Chunks der Datei 203 können gleichermaßen als separate Chunk-Dateien gespeichert werden, wie etwa Chunk-Datei B 304, wie in 3A gezeigt. Analog zu der Chunk-Datei 302A enthält die Chunk-Datei 304 Metadaten 306 einschließlich einer Chunk-Kennung 316 sowie die Chunk-Daten 312. Die Nutzung von Chunk-Dateien, wie etwa die in 3B gezeigte, kann vorteilhafterweise dazu führen, dass die Menge an Daten reduziert wird, die gespeichert werden muss, was wiederum Ressourcen für andere Zwecke freimachen kann.
-
3B veranschaulicht eine Chunk-Datei 302B, wobei die Chunk-Datei 302B einen Dateinamen 307 enthält. Bei gewissen Ausführungsformen kann der Dateiname 307 ein Hash-Wert der Chunk-Daten 311 sein oder ihm entsprechen. Beispielsweise wird bei gewissen Ausführungsformen ein Hash-Wert für jeden hashbaren Chunk einer Datei zu Zwecken des Identifizierens von Änderungen bei Daten für eine Deduplizierung berechnet. Wie in 3B gezeigt, kann ein derartiger Hash-Wert gleichzeitig als der Dateiname der Chunk-Datei 302B dienen, was eine effiziente Ablage von Metadaten gestatten kann, wobei nur ein einzelner Wert für den Hash-Wert und den Dateinamen der Chunk-Datei abgelegt wird.
-
Wie oben beschrieben wird eine Datendeduplizierung oftmals verwendet, um nur jene Abschnitte einer Datei zu sichern, die geändert worden sind oder neu sind, und um Chunks von Dateien über viele Dateien hinweg wiederzuverwenden. Um Änderungen und/oder neue Datei-Chunks zu bestimmen, kann ein Hash-Algorithmus über einen oder mehrere Abschnitte (z.B. Chunks) einer Datei ausgeführt werden, die sich geändert hat, um einen Hash-Wert für jeden Chunk zu generieren. Bei bestimmten Ausführungsformen erzeugt der Hash-Algorithmus einen eindeutigen Hash-Wert, um Kollisionen zu vermeiden, die ansonsten Probleme während des Wiederzusammensetzens von Daten verursachen könnten.
-
Der Backup-Client kann konfiguriert sein zum Vergleichen der neuberechneten Hash-Werte mit einer Liste von mit der Datei assoziierten gespeicherten Hash-Werten. Falls sich der Hash-Wert für einen Chunk oder Chunks der Datei geändert hat, werden in gewissen Ausführungsformen nur die geänderten Chunks als Chunk-Dateien gespeichert. Falls ein Hash-Wert als bereits in dem Backup-Ziel-Repository vorliegend erkannt wird, muss aufgrund der Eindeutigkeit der Hash-Werte der neue Chunk möglicherweise nicht gespeichert werden und kann als bereits gespeichert markiert werden.
-
Dateinamenverzeichnis-Ortsidentifikation
-
4 ist ein Blockdiagramm, das eine Dateiverzeichnishierarchie gemäß einer oder mehreren hier offenbarten Ausführungsformen darstellt, wobei Chunk-Dateien in verschiedenen Ordnern der Hierarchie gespeichert werden können. Allgemein kann es wünschenswert sein, Situationen zu vermeiden, in denen zu viele Dateien in einem einzelnen Verzeichnisordner abgelegt werden, was unerwünschterweise einen übermäßigen Overhead einführen kann und/oder zu verlängerten Chunk-Dateiablage- und- Abrufzeiten führen kann. Um die Ablage von zu vielen Chunk-Dateien in einem einzelnen Verzeichnis zu vermeiden, können die Chunk-Dateien in einer Ordnerhierarchie gespeichert werden, wobei jeder Ordner nach einem Byte oder einem anderen Abschnitt oder einer anderen Partition des relevanten Hash-Wertformats (z.B. hexadezimaler Hash-Wert) benannt wird. Die dargestellte Hierarchie von 4 wird unten unter Bezugnahme auf ein beispielhaftes Hash-Format mit einem hexadezimalen Drei-Byte-Hash-Wert beschrieben. Wenngleich der hexadezimale Drei-Byte-Wert zu Beschreibungszwecken verwendet wird, versteht sich, dass Werte mit einem beliebigen Format oder einer beliebigen Länge in Abhängigkeit von der implementierten bestimmten Hash-Konvention implementiert werden können.
-
Bei gewissen Ausführungsformen ist der Pfad zu dem Ablageort einer Hash-Datei zur Erleichterung des Nachschlagens in den Dateinamen der Chunk-Datei codiert. Dadurch besteht möglicherweise keine Notwendigkeit zum Speichern eines separaten Pfadwegs in den Datenspeicher, der die Dateien, die gesichert worden sind, indexiert. Wie gezeigt können bestimmte Zeichen, Symbole oder Bits/Bytes des Dateinamens mit verschiedenen Ebenen der Dateisystemhierarchie assoziiert sein und können einen Dateiortspfad innerhalb der Hierarchie identifizieren. Da die mit den verschiedenen gespeicherten Chunk-Dateien assoziierten Hash-Werte von Natur aus eindeutige Werte sein können, nutzen gewisse Ausführungsformen deshalb den Vorteil einer derartigen Eindeutigkeit zu dem Zweck, die zum Lokalisieren der Chunk-Dateien in dem Dateiverzeichnis erforderliche Menge an Metadaten zu reduzieren.
-
4 veranschaulicht ein Beispiel, das zeigt, wie ein derartiger, den Verzeichnispfad identifizierender Dateinamenmechanismus implementiert werden kann. Als ein Beispiel kann eine Datei, wie etwa eine Chunk-Datei 450, einen Dateinamen "08EF8B" besitzen. In der dargestellten Ausführungsform können jeweils zwei Symbole des hexadezimalen Werts eine separate Ebene in der Verzeichnishierarchie darstellen. Das heißt, die ersten beiden Symbole (oder zum Beispiel die letzten beiden Symbole) des Dateinamenwerts können einer höchsten Ebenen in der Verzeichnishierarchie entsprechen. Wenngleich in der dargestellten Ausführungsform zwei Symbole des Dateinamens jeder der jeweiligen Ebenen der Verzeichnishierarchie entsprechen, können andere Anzahlen von Symbolen oder Teilmengen des Dateinamenwerts/der Dateinamenkette zum Identifizieren der verschiedenen Ebenen der Verzeichnishierarchie verwendet werden.
-
Bezüglich des beispielhaften Dateinamens "08EF8B" kann deshalb "08" den Ordner 401 auf einer höchsten Ebene (Ebene 0) der relevanten Verzeichnishierarchie identifizieren. Deshalb kann die Datei 450 als in einem Unterordner oder einem untergeordneten Ordner des Elternordners 401 gespeichert identifiziert werden. Die übrigen Symbole des Dateinamens können jede der übrigen Ebenen der Hierarchie identifizieren. Beispielsweise können, wie gezeigt, das dritte und vierte Symbol "EF" den Ordner 411 der nächsten Ebene identifizieren, unter dem die Datei 450 abgelegt ist.
-
Die letzten beiden Zeichen "8B" identifizieren den untergeordneten Unterordner 422, in dem die Datei 450 abgelegt ist. Wie gezeigt, kann die Datei 450 eine Chunk-Datei mit dem Dateinamen sein, der die den Ablageort identifizierende Kette ist, die oben beschrieben ist, die den Ablageort der Chunk-Datei 450 identifiziert. Die Chunk-Datei 450 enthält weiterhin die Chunk-Daten.
-
Durch Implementieren des Ablageortspfads auf diese Weise können hierin offenbarte Ausführungsformen für reduzierte Metadatenanforderungen sorgen, da es möglicherweise nicht notwendig ist, den Dateioffset und die Anzahl von Bytes sowie Ablagepfadinformationen im Datenspeicher abzulegen. Verzeichnisbäumen wie der in 4 gezeigte können weiter für relativ schnellen und einfachen Zugang zu Chunk-Dateien sorgen.
-
Datei-Backup-/Wiederherstellungsprozesse
-
5 veranschaulicht einen Prozess 500 zum Sichern einer Datei in einem Backup-System. Bei Block 502 beinhaltet der Prozess 500 das Bestimmen, dass sich eine in einem Backup-System gesicherte oder zu sichernde Datei geändert hat. Beispielsweise kann die Datei eine nicht zuvor im Backup-System abgelegte neue Datei sein, oder die Datei kann durch einen Host modifiziert worden sein, wobei solche Modifikationen in dem Backup-System erfasst werden sollen. Bei gewissen Ausführungsformen empfängt der Backup-Client eine Benachrichtigung über eine Änderung an der Datei.
-
Bei Block 504 beinhaltet der Prozess 500 das Berechnen von Hash-Werten von hashbaren Chunks der Datei. Ein derartiger Schritt kann das Identifizieren hashbarer Chunk-Abschnitte der Datei und das Berechnen von mit einem oder mehreren der hashbaren Chunks assoziierten Hash-Werte beinhalten. Bei gewissen Ausführungsformen beinhaltet der Prozess 500 das Berechnen von Hash-Werten nur für jene Chunks der Datei, die modifiziert worden sind oder neu sind.
-
Bei Block 506 beinhaltet der Prozess 500 das Vergleichen der berechneten Hash-Werte der Datei mit mit der Datei assoziierten gespeicherten Hash-Werten. Auf der Basis eines derartigen Vergleichs beinhaltet der Prozess 500 bei Block 508 das Bestimmen, welche der hashbaren Chunks der Datei sich geändert haben. Beispielsweise kann der Prozess 500 das Bestimmen beinhalten, ob ein neu generierter Hash-Wert bereits in dem relevanten Ablagemodul existiert; falls der generierte Hash-Wert nicht bereits in dem Ablagemodul existiert, kann ein derartiges Fehlen anzeigen, dass der assoziierte Chunk neu oder modifiziert ist und deshalb gesichert werden muss.
-
Bei Block 510 beinhaltet der Prozess 500 das Speichern der modifizierten oder neuen Chunks als separate Dateien in dem Backup-Datenspeicher. Die separaten Chunk-Dateien können gewisse Metadaten- oder Chunk-Kennungsdaten sowie die Chunk-Daten enthalten. Das heißt, anstatt neue/modifizierte Chunks an eine ständig wachsende Datei anzuhängen, kann der Chunk als eine unabhängige Datei gespeichert werden. Dies kann dem Backup-Client gestatten, standardmäßige Datei-E/A-Operationen über die verschiedenen Backup-Ziel-Repository-Medienarten zu verwenden, einschließlich Drittziele, die die Datei-Anhängoperationen nicht unterstützen.
-
Bei gewissen Ausführungsformen, wie bei Block 512 gezeigt, können die separaten Chunk-Dateien Dateinamen besitzen, die den Hash-Wert des jeweiligen gespeicherten Chunks enthalten. Beispielsweise kann die Chunk-Datei mit einer hexidezimalen Darstellung des Hash-Werts des Chunks benannt werden und kann eine ".-Hash"-Dateiendung besitzen. Wie oben ausführlicher beschrieben, können bei bestimmten Ausführungsformen die Hash-Wert-Dateinamen zum Identifizieren eines Ablageorts, wo die Chunk-Datei abgelegt wird, verwendet werden.
-
Bei Block 514 kann der Prozess 500 das Markieren des neuen oder modifizierten Chunks hinsichtlich des Backup-Datenspeichers beinhalten. Falls zusätzliche Chunks als Chunk-Dateien gespeichert werden müssen, beinhaltet der Prozess 500 das Zurückschleifen zum Block 510 von dem Entscheidungsblock 516.
-
6 veranschaulicht einen Prozess 600 zum Wiederherstellen einer Datei von einem Backup-Speicher gemäß einer oder mehreren hierin offenbarten Ausführungsformen. Der Prozess 600 beinhaltet bei Block 602 das Empfangen einer Anforderung zum Wiederherstellen einer Datei, die in dem Backup-Datenspeicher gesichert worden ist. Die Anforderung kann eine bestimmte Version der wiederherzustellenden Datei anzeigen, wobei verschiedene Versionen der Datei entsprechend verschiedenen Zeitperioden beispielsweise verfolgt und/oder in dem Backup-System geführt werden. Beispielsweise kann ein relevanter Backup-Client eine Benachrichtigung empfangen, dass ein Benutzer gerne eine Version einer Datei wiederherstellen möchte, die gesichert worden ist.
-
Bei Block 604 beinhaltet der Prozess 600 das Abrufen einer Liste von mit der angeforderten Datei assoziierten Chunks. Beispielsweise kann die Liste in dem Backup-System wie etwa in dem Backup-Datenspeicher als ein Mechanismus zum Verfolgen der Orte von mit den bestimmten Dateien assoziierten Chunk-Dateien geführt werden. Die Chunks können hashbare Chunks der Datei sein, die die angeforderte Version der Datei bilden. Der Prozess kann das Konsultieren des Backup-Datenspeichers hinsichtlich der Datei zum Abrufen der Liste und/oder von identifizierten Chunks beinhalten.
-
Bei Block 606 beinhaltet der Prozess 600 das Erzeugen einer temporären Datei entsprechend der angeforderten wiederhergestellten Datei. Die temporäre Datei kann als die wiederhergestellte Datei aufgebaut werden, um zurück an den Host geliefert zu werden. Die Blöcke 608–612 veranschaulichen eine Schleife für das iterative Abrufen jeder der mit der angeforderten Datei assoziierten individuellen Chunk-Dateien. Das heißt, bei Block 608 werden eine mit den angeforderten Dateien oder einem Baum von dem Backup-Datenspeicher assoziierte Chunk-Datei und der Chunk der abgerufenen Chunk-Datei bei Block 610 an die temporäre Datei angehängt. Weil hashbare Chunks der Datei als Dateien anstelle von Offsets und Längen von einer größeren Datei gelesen werden, kann die in 6 dargestellte Backup-Lösung über verschiedene Backup-Plattformen kompatibel sein, da Support zum Lesen und Schreiben einer Datei möglicherweise breiter verfügbar ist als der Support für das Dateianhängen und/oder Lesen von willkürlichen Chunks einer Datei. Deshalb können hierin offenbarte Ausführungsformen gestatten, dass ein Backup-Client standargmäßige Datei-E/-A-Operationen über verschiedene Backup-Ziel-Repository-Medienarten verwendet.
-
Falls von der Datei zusätzliche Chunks übrig bleiben, die noch nicht abgerufen worden sind, erfolgt beim Entscheidungsblock 612 eine derartige Bestimmung, und falls die Chunks übrig bleiben, kehrt der Prozess 600 zurück zu Block 608 und gruppiert, bis alle der mit der angeforderten Datei assoziierten Chunks abgerufen und an die temporäre Datei angehängt worden sind. Die hashbaren Chunks der Datei können von dem Backup-Ziel-Repository unter Verwendung des Hash-Werts des Chunks abgerufen werden, um den hashbaren Chunk-Dateinamen zu bestimmen, wobei der Dateipfad durch den Dateinamen selbst identifiziert wird, wie oben beschrieben. Bei Block 614 beinhaltet der Prozess 600 das Liefern der wiederhergestellten Datei beispielsweise an ein Host-System. Die Datei kann an einem Ort und/oder einem Namen, die von den Benutzer geliefert werden, wiederhergestellt werden.
-
Hierin offenbarte Ausführungsformen können gegenüber gewissen existierenden Backup-Lösungen verschiedene Vorteile bereitstellen. Beispielsweise können die offenbarten Backup-Lösungen mit einer erheblichen Anzahl von Drittdaten-Repositories kompatibel sein, die durch hostseitige Backup-Clients verwendet werden können. Beispielsweise kann eine derartige verbesserte Effizienz besonders evident sein, wenn beispielsweise ein einzelnes Wort in einem relativ großen Dokument modifiziert wird, oder verstellt eine kleine Anzahl von Pixeln in einer relativ großen Bilddatei werden modifiziert. In einem derartigen Szenario wird gemäß gewissen, hierin offenbarten Ausführungsformen nur der Abschnitt der Datei, der sich geändert hat, und nicht die ganze Datei gespeichert, wodurch Zeit und/oder Ressourcen eingespart werden.
-
Zusätzliche Ausführungsformen
-
Der Fachmann versteht, dass bei einigen Ausführungsformen andere Arten von Daten-Backup-Systemen implementiert werden können, während man innerhalb des Schutzbereichs der vorliegenden Offenbarung bleibt. Außerdem können die in den hierin erörterten Prozessen unternommenen tatsächlichen Schritte von den beschriebenen oder in den Figuren gezeigten abweichen. Je nach der Ausführungsform können auch gewisse der oben beschriebenen Schritte entfernt werden und/oder andere können hinzugefügt werden.
-
Wenngleich gewisse Ausführungsformen beschrieben worden sind, sind diese Ausführungsformen lediglich als Beispiel vorgelegt worden und sollen den Schutzbereich nicht beschränken. Tatsächlich können die hierin beschriebenen neuartigen Verfahren und Systeme in einer Vielzahl anderer Formen verkörpert werden. Weiterhin können verschiedene Auslassungen, Substitutionen und Änderungen hinsichtlich der Form der hierin beschriebenen Verfahren und Systeme vorgenommen werden. Die beiliegenden Ansprüche und ihre Äquivalente sollen alle derartigen Formen oder Modifikationen abdecken, die in den Bereich und den Gedanken des Schutzes fallen würden. Beispielsweise können die in den Figuren dargestellten verschiedenen Komponenten als Software und/oder Firmware auf einem Prozessor, einer applikationsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gatearray (FPGA) oder dedizierter Hardware implementiert werden. Außerdem können die Merkmale und Attribute der oben offenbarten spezifischen Ausführungsformen auf unterschiedliche Weisen kombiniert werden, um zusätzliche Ausführungsformen auszubilden, die alle in den Schutzbereich der vorliegenden Offenbarung fallen. Wenngleich die vorliegende Offenbarung gewisse bevorzugte Ausführungsformen und Anwendungen liefert, liegen andere Ausführungsformen, die dem Durchschnittsfachmann offensichtlich sind, einschließlich Ausführungsformen, die nicht alle der hierin dargelegten Merkmale und Vorteile bereitstellen, ebenfalls innerhalb des Schutzbereichs der vorliegenden Offenbarung. Dementsprechend soll der Schutzbereich der vorliegenden Offenbarung nur durch Bezugnahme auf die beigefügten Ansprüche definiert werden.
-
Alle der oben beschriebenen Prozesse können in Softwarecodemodulen verkörpert und über diese vollständig automatisiert werden, die durch einen oder mehrere Allzweck- oder Spezialcomputer oder -prozessoren ausgeführt werden. Die Codemodule können auf einer beliebigen Art von computerlesbarem Medium oder einer anderen Computerablageeinrichtung oder Sammlung von Ablageeinrichtungen abgelegt werden. Einige oder alle der Verfahren können alternativ in spezialisierter Computerhardware verkörpert werden.