-
Technisches Gebiet
-
Die Lösung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung betrifft das Gebiet der Datenverarbeitung, insbesondere Migrieren einer Datenverarbeitungs-Entität. Genauer betrifft diese Lösung die Migration von Software-Images.
-
Hintergrund
-
Bei der Migration von Software-Images handelt es sich um eine alltägliche Aktivität bei modernen Datenverarbeitungssystemen; allgemein ausgedrückt handelt es sich bei einem Software-Image um eine Struktur, die auf einem Massenspeicher eines Computers installierte Softwaremodule (zum Beispiel sein Betriebssystem, Anwendungsprogramme und/oder Daten) enthält. Ein typisches Szenario stellt zum Beispiel das Aktualisieren des Computers dar, um sein Betriebssystem auf eine neue Version heraufzustufen (upgrade).
-
Eine Standard-Migrationsprozedur, die auf einen Wechsel von einem aktuell auf dem Computer installierten Betriebssystem (als Quellbetriebssystem bezeichnet) zu einem anderen Betriebssystem (als Zielbetriebssystem bezeichnet) abzielt, umfasst allgemein die folgenden Schritte. Zuerst wird eine Momentaufnahme (snapshot) des Computers erstellt und auf einer externen Einheit (z. B. einer Wechselplatte oder einem entfernt angeordneten Server) gespeichert. Dann wird ein Migrationswerkzeug ausgeführt, um Konfigurationsinformationen des Computers zu sammeln (die ebenfalls auf einer externen Einheit gespeichert werden). An diesem Punkt ist es möglich, das Zielbetriebssystem auf dem Computer zu installieren. Dann wird das Migrationswerkzeug erneut ausgeführt, um die gespeicherten Konfigurationsinformationen auf das Zielbetriebssystem anzuwenden. Im Falle von beim Zielbetriebssystem auftretenden Problemen (zum Beispiel eines nicht korrekten Betriebs des Computers) wird die Momentaufnahme des Quellbetriebssystems auf dem Computer wiederhergestellt, um zu dessen ursprünglichem Zustand zurückzukehren.
-
Bei der vorstehend beschriebenen Migrationsprozedur treten jedoch einige Nachteile auf.
-
Insbesondere ist die Migrationsprozedur langsam. In der Tat benötigt das Installieren des Zielbetriebssystems eine lange Zeit (in der Größenordnung von 30 bis 60 min); während dieser Zeit ist der Computer insgesamt nicht verfügbar. Darüber hinaus benötigt das Wiederherstellen des Quellbetriebssystem gegebenenfalls ebenfalls eine lange Zeit (während der der Computer erneut nicht verfügbar ist). Noch mehr Zeit wird zudem für das Erstellen der Momentaufnahme des Quellbetriebssystems benötigt, ein Vorgang, der immer durchgeführt werden sollte, bevor das Zielbetriebssystem installiert wird (um im Falle von Problemen ein Wiederherstellen des Quellbetriebssystems zu ermöglichen).
-
Die Migrationsprozedur erfordert zudem viel Speicherplatz (auf der externen Einheit), um die Momentaufnahme des Quellbetriebssystems zu speichern; weiterer Speicherplatz wird zudem benötigt, um die Konfigurationsinformationen zu speichern.
-
Darüber hinaus geht jedes nicht mit dem Migrationswerkzeug erfasste Konfigurationsinformationselement (zum Beispiel, weil es vergessen wurde) verloren, sobald das Zielbetriebssystem auf dem Computer installiert wurde.
-
Somit können diese Konfigurationsinformation nicht mehr wiederhergestellt werden. In der Tat wäre die einzige Möglichkeit, darauf zuzugreifen, die Momentaufnahme des Quellbetriebssystem wiederherzustellen; dieser Vorgang ist jedoch so zeitaufwändig, dass er in der Praxis fast niemals durchgeführt wird. Wenn dies geschieht, ist es hingegen gängige Praxis zu versuchen, die fehlenden Konfigurationsinformationen manuell zu übernehmen; dieser Vorgang ist jedoch sehr anfällig für Fehler und birgt die Gefahr in sich, etwas zu übersehen.
-
In der
US-Patentschrift 6 920 555 B1 wird stattdessen ein Migrationsprozess vor Ort beschrieben. Zu diesem Zweck wird ein Speicherplatz abgeschätzt, der erforderlich ist, um die Konfigurationsinformationen zu speichern; freier Speicherplatz wird auf einer Festplatte des Computers so geschaffen, dass er zum Speichern der Konfigurationsinformationen ausreicht. Dann wird das Zielsoftware-Image auf dem Computer installiert (indem zum Beispiel eine startfähige CD oder ein Netzwerkstart-Image (network boot image) verwendet wird. An diesem Punkt ist es möglich, die Konfigurationsinformationen für das Zielsoftware-Image vom freien Speicherplatz wiederherzustellen.
-
Dadurch entfällt die Notwendigkeit, die Konfigurationsinformationen zum Beispiel auf einem Netzwerkserver zu speichern; auf diese Weise kann der Migrationsprozess auf mehreren Computern parallel ablaufen. Darüber hinaus kann die Migration der Konfigurationsinformationen auch ohne jegliche Netzwerkverbindung durchgeführt werden. Das in diesem Dokument beschriebene Verfahren leidet jedoch unter all den anderen vorstehend ausgeführten Nachteilen.
-
Die Druckschrift
US 2004/0010787 A1 offenbart ein Verfahren zum Migrieren einer virtuellen Maschine, wobei eine Eltern-virtuelle-Maschine angehalten wird und eine Kind-virtuelle-Maschine an einer neuen Stelle durch Verzweigen der Eltern-virtuellen-Maschine erzeugt ist.
-
Es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren zum Migrieren einer Datenverarbeitungs-Entität von einem Quellsoftware-Image auf ein Zielsoftware-Image bereitzustellen, welches insbesondere hinsichtlich einer Geschwindigkeit und eines Bedarf an Speicherplatz gegenüber dem Stand der Technik verbessert ist.
-
Kurzdarstellung
-
In ihrer allgemeinen Hinsicht beruht die Lösung gemäß einer oder mehrerer Ausführungsformen der vorliegenden Erfindung auf der Idee, den ursprünglichen Inhalt des Massenspeichers während des Migrationsprozesses zu behalten.
-
Genauer stellt ein Aspekt der Lösung gemäß einer Ausführungsform der Erfindung ein Verfahren zum Migrieren einer Datenverarbeitungs-Entität (zum Beispiel eines Computers) von einem auf einem Massenspeicher der Datenverarbeitungs-Entität installierten Quellsoftware-Image zu einem auf einer externen Quelle (zum Beispiel einer entfernt angeordneten Image-Ablage (image repository)) gespeicherten Zielsoftware-Image gemäß Anspruch 1 bereit. Jedes Software-Image enthält eine Mehrzahl von Speicherblöcken; jeder Speicherblock besitzt eine entsprechende Image-Adresse innerhalb des Software-Image. Der Massenspeicher enthält eine Mehrzahl von Speicherorten, von denen jeder zum Speichern eines Speicherblocks dient; der Speicherort besitzt eine entsprechende Speicher-Adresse innerhalb des Massenspeichers. Das Verfahren beinhaltet die folgenden Schritte. Ein Bereich des Massenspeichers wird freigegeben (zum Beispiel durch Verkleinern des Quellsoftware-Image). Die an Startorten des Zielsoftware-Image gespeicherten Speicherblöcke werden in den freigegebenen Bereich verlagert; bei den Startorten handelt es sich um diejenigen Speicherorte, deren Speicheradressen gleich den Image-Adressen von Startblöcken des Zielsoftware-Image sind, wobei die Startblöcke die Speicherblöcke enthalten, die zum Starten der Datenverarbeitungs-Entität erforderlich sind, um eine (zum Herunterladen des Zielsoftware-Image von der externen Quelle eingerichtete) Streaming-Funktion zu laden. Die Startblöcke werden an den entsprechenden Startorten gespeichert. Die Datenverarbeitungs-Entität wird von den Startblöcken an den entsprechenden Startorten gestartet (wobei die Streaming-Funktion geladen wird). Jede Anfrage zum Lesen eines ausgewählten Speicherblocks des Zielsoftware-Image wird durch die Streaming-Funktion bedient; die Streaming-Funktion lädt den ausgewählten Speicherblock von der externen Quelle herunter und speichert den ausgewählten Speicherblock im freigegebenen Bereich, wenn der ausgewählte Speicherblock im Massenspeicher nicht verfügbar ist, oder sie ruft andernfalls den ausgewählten Speicherblock aus den Massenspeicher ab.
-
In einem weiteren Aspekt der Lösung gemäß einer Ausführungsform der Erfindung wird ein Computerprogramm bereitgestellt, das ein Codemittel enthält, um ein Datenverarbeitungssystem zu veranlassen, die Schritte dieses Verfahrens durchzuführen, wenn das Computerprogramm auf dem Datenverarbeitungssystem ausgeführt wird; in noch einem weiteren Aspekt der Lösung gemäß einer Ausführungsform der Erfindung wird ein Computerprogrammprodukt bereitgestellt, das ein nichtflüchtiges computerlesbares Medium enthält, das ein Computerprogramm beinhaltet, wobei das Computerprogramm ein Codemittel enthält, das direkt in einen Arbeitsspeicher eines Datenverarbeitungssystems ladbar ist und dadurch das Datenverarbeitungssystem so konfiguriert, dass dieses Verfahren durchführbar ist.
-
In einem weiteren Aspekt der Lösung gemäß einer Ausführungsform der Erfindung wird ein System bereitgestellt, das Mittel zum Durchführen der Schritte des Verfahrens beinhaltet.
-
Kurze Beschreibung der Zeichnungen
-
Die Lösung gemäß einer oder mehreren Ausführungsformen der Erfindung sowie weitere Merkmale und Vorteile davon sind am besten unter Bezugnahme auf die folgende detaillierte Beschreibung verständlich, die allein in Form einer nicht einschränkenden Angabe vorgelegt wird und in Verbindung mit den angehängten Zeichnungen zu lesen ist (wobei zum Zwecke der Vereinfachung entsprechende Elemente mit gleichen oder ähnlichen Bezugszeichen bezeichnet sind und deren Erläuterung nicht wiederholt wird, und wobei der Name jeder Entität allgemein verwendet wird, um sowohl ihren Typ als auch ihre Attribute – wie beispielsweise ihren Wert, ihren Inhalt und ihre Ausbildung – zu bezeichnen). Insbesondere:
-
zeigt 1 ein schematisches Blockschaltbild eines Computers auf dem die Lösung gemäß einer Ausführungsform der Erfindung anwendbar ist,
-
zeigen die 2A bis 2G Kollaborationsschaubilder, die eine allgemeine Übersicht einer beispielhaften Anwendung der Lösung gemäß einer Ausführungsform der Erfindung darstellen,
-
zeigt 3A bis 3C ein Aktivitätsschaubild, das den dem Migrationsprozess zugehörigen Aktivitätsfluss gemäß einer Ausführungsform der Erfindung beschreibt, und
-
zeigt 4 ein Kollaborationsschaubild, das die Funktionen der Hauptsoftwarekomponenten wiedergibt, die verwendet werden können, um einen Vorbereitungsprozess gemäß einer Ausführungsform der Erfindung zu realisieren.
-
Beschreibung einer oder mehrerer Ausführungsformen
-
Unter besonderer Bezugnahme auf 1 wird ein schematisches Blockschaltbild eines Computers 100 gezeigt, auf dem die Lösung gemäß einer Ausführungsform der Erfindung anwendbar ist. Der Computer 100 (zum Beispiel ein PC) wird durch mehrere Einheiten ausgebildet, die parallel mit einem Systembus 105 verbunden sind. Im Detail steuern ein oder mehrere Mikroprozessoren (μP) 110 den Betrieb des Computers 100; ein RAM 115 wird durch die Mikroprozessoren 110 als Arbeitsspeicher verwendet, und in einem ROM 120 ist grundlegender Code des Computers 100 gespeichert. Mehrere Peripherieeinheiten sind um einen lokalen Bus 125 (mittels jeweiliger Schnittstellen) gruppiert (clustered). Insbesondere enthält ein Massenspeicher eine oder mehrere Festplatten 130 und Laufwerke 135 zum Lesen optischer Platten 140 (zum Beispiel DVDs oder CDs). Darüber hinaus enthält der Computer 100 Eingabeeinheiten 145 (zum Beispiel eine Tastatur und eine Maus) und Ausgabeeinheiten 150 (zum Beispiel einen Monitor und einen Drucker). Mit einem Adapter 155 wird der Computer 100 mit einem Netzwerk verbunden (in der Figur nicht gezeigt). Eine Brückeneinheit 160 verbindet den Systembus 105 mit dem lokalen Bus 125. Jeder Mikroprozessor 110 und die Brückeneinheit 160 können als Hauptagent fungieren und einen Zugriff auf den Systembus 105 zum Übermitteln von Daten anfordern. Eine Zuteilungseinheit (arbiter) 165 verwaltet das Gewähren des Zugriffs auf den Systembus 105 mit wechselseitigem Ausschluss.
-
Die Lösung gemäß einer Ausführungsform der Erfindung wird verwendet, um ein auf dem Computer 100 installiertes Software-Image zu migrieren (zum Beispiel, um sein Betriebssystem auf eine neuere Version heraufzustufen). Allgemein enthält jedes Software-Image ein oder mehrere Softwaremodule (zum Beispiel ein Betriebssystem, Anwendungsprogramme und/oder Daten); das Software-Image wird durch einen Satz von Speicherblöcken gebildet (von denen zum Beispiel jeder 1 bis 10 MB aufweist), die entsprechende Adressen innerhalb des Software-Image besitzen (die als -Image-Adressen bezeichnet werden).
-
Genauer ist in den 2A bis 2G ein Kollaborationsschaubild gezeigt, das eine allgemeine Übersicht einer beispielhaften Anwendung der Lösung gemäß einer Ausführungsform der Erfindung darstellt. Das Kollaborationsschaubild zeigt die Funktionen der betreffenden Hauptsoftwarekomponenten und insbesondere deren statischen Aufbau (als Ganzes mit der Bezugsziffer 200 bezeichnet) und dynamisches Verhalten (mittels einer Reihe von Austauschnachrichten, von denen jede für eine entsprechende Aktion steht und die mit fortlaufenden Zahlen mit einem vorangehenden Symbol „A” bezeichnet sind).
-
Beginnend mit 2A ist ein Quellsoftware-Image 205s auf der Festplatte 130 installiert; das Quellsoftware-Image 205s enthält ein oder mehrere in der Figur nicht gezeigte logische Partitionen der Festplatte 130 (zum Beispiel eine Primärstartpartition und mögliche weitere Partitionen). Die Festplatte 130 ist in einen Satz von Speicherorten mit entsprechenden (als Speicheradressen bezeichnete) Adressen innerhalb der Festplatte 130 organisiert, von denen in jeder ein Speicherblock gespeichert ist. Das Quellsoftware-Image 205s enthält ein Quellbetriebssystem 210s und einen (nachfolgend beschriebenen) Implementierungs-Agenten 215, die zumindest zum Teil in den Arbeitsspeicher 115 geladen sind.
-
Ein Benutzer 220 des Computers 100 übermittelt dem Implementierungs-Agenten 215 eine Anfrage zum Migrieren des Computers 100 zu einem Zielsoftware-Image 225, das auf einer externen Quelle – zum Beispiel einer entfernt angeordneten Image-Ablage – verfügbar ist (Aktion „A1: Migrieren”) Als Reaktion darauf verkleinert der Implementierungs-Agent 215 das Quellsoftware-Image 205s – zum Beispiel durch Verwenden einer integrierten Funktion des Quellbetriebssystems 210s (Aktion „A2: Verkleinern”).
-
Als Ergebnis wird wie in 2B gezeigt ein Bereich 230 der Festplatte 130 freigegeben. An diesem Punkt lädt der Implementierungs-Agent 215 einen Satz von Startblöcken des Zielsoftware-Image 225 herunter (der durch die entsprechenden Image-Adressen gekennzeichnet ist, die als Startadressen bezeichnet werden); die Startblöcke des Zielsoftware-Image 225 enthalten die Speicherblöcke, die zum Starten einer Startsequenz des Zielsoftware-Image 225 benötigt werden, um einen nachfolgend beschriebenen Streaming-Treiber des Implementierungs-Agenten zu laden (Aktion „A3: Herunterladen”). Der Implementierungs-Agent 215 verlagert dann die in Startblöcken des Zielsoftware-Image 225 gespeicherten Speicherblöcke des Quellsoftware-Image 205s (deren Speicheradressen gleich den Startadressen des Zielsoftware-Image 225 sind) an entsprechende Speicherorte des freigegebenen Bereichs 230 – die als verlagerte Speicherorte 235 s bezeichnet werden (Aktion „A4: Verlagern”). Der Implementierungs-Agent 215 kann nun die Startblöcke des Zielsoftware-Image 225 an ihren Startorten speichern – wo sie dunkelgrau unterschieden und mit der Bezugsziffer 240t bezeichnet sind. Auf diese Weise werden die Startblöcke 240t auf der Festplatte 130 exakt dort angeordnet, wo sie erwartungsgemäß während der Startsequenz des Zielsoftware-Image 225 zu finden sein sollen; nichtsdestoweniger verursacht dies jedoch keinen Verlust von Informationen im Quellsoftware-Image 205s, da die entsprechenden aufgehobenen Speicherblöcke an den verlagerten Speicherorten 235s gespeichert sind (Aktion „A5: Speichern”). An diesem Punkt schaltet der Implementierungs-Agent 215 den Computer 100 aus und dann ein, um ihn von den Startblöcken 240t des Zielsoftware-Image 225 an seinen Startorten neu zu starten (Aktion „A6: Neu starten”).
-
Wie in 2C gezeigt, werden daher ein den Startblöcken 240t entsprechender Teil eines Zielbetriebssystems 210t des Zielsoftware-Image 225 und der Streaming-Treiber des Implementierungs-Agenten 215 in den Arbeitsspeicher 115 geladen. Dann überträgt der Implementierungs-Agent 215 eine Benutzerkonfiguration des Quellsoftware-Image 205s auf das Zielsoftware-Image 225, das auf dem Computer 100 installiert wird; zum Beispiel werden Konfigurationsinformationen des Quellsoftware-Image 205s von der (in das Zielbetriebssystem 210t eingebundenen (mounted)) Festplatte 130 gesammelt und dann auf eine lokale Version des Zielsoftware-Image 225 angewandt – d. h. in entsprechenden, in den freigegebenen Bereich 230 geschriebenen Speicherblöcken (Aktion „A7: Übertragen”). Der Computer 100 kann nun (die lokale Version des Zielsoftware-Image 225 ausführend) mit jedem Speicherblock des Zielsoftware-Image 225 normal verwendet werden, der durch Streaming durch den Streaming-Treiber bereitgestellt wird; zu diesem Zweck liest der Streaming-Treiber wie nachfolgend detailliert beschrieben den Speicherblock, indem er ihn bei Verfügbarkeit von der Festplatte 130 abruft oder ihn andernfalls von der externen Quelle herunterlädt (und ihn gleichzeitig im freigegebenen Bereich 230 speichert), und den Speicherblock schreibt, indem er ihn in jedem der Fälle im freigegebenen Bereich 230 speichert. Der Benutzer 220 kann dann den Computer 100 mit der lokalen Version des Zielsoftware-Image 225 umfassend testen, um zu überprüfen, ob er korrekt arbeitet (Aktion „A8: Stream”).
-
Unter Bezugnahme auf 2D übernimmt (commits) der Benutzer 220 nun die Migration durch Übermitteln einer entsprechenden Anfrage an den Implementierungs-Agenten 215, wenn er mit dem Betrieb des Computers 100 mit der lokalen Version des Zielsoftware-Image 225 zufrieden ist (Aktion „A9: Übernehmen”). Als Reaktion darauf kopiert der Implementierungs-Agent 215 alle Speicherblöcke der lokalen Version des Zielsoftware-Image 225 (vom freigegebenen Bereich 230, wenn verfügbar, oder andernfalls von der externen Quelle) auf deren tatsächliche Speicherorte auf der Festplatte 130, deren Speicheradressen gleich den entsprechenden Image-Adressen sind (Aktion „A10: Kopieren”).
-
Daher wird wie in 2E gezeigt die lokale Version des Zielsoftware-Image (mit der Bezugsziffer 205t bezeichnet) nun vollständig auf der Festplatte 130 installiert, indem das Quellsoftware-Image überschrieben wird. Der Computer 100 kann nun vom Zielsoftware-Image 205t neu starten und normal arbeiten (Aktion „A11: Neu starten”).
-
Im Gegensatz hierzu kann unter Bezugnahme auf 2F der Benutzer die Migration durch Übermitteln einer entsprechenden Anfrage an den Implementierungs-Agenten 215 auf das Quellsoftware-Image 205s rückabwickeln (roll-back), wenn er mit dem Betrieb des Computers 100 mit der lokalen Version des Zielsoftware-Image 225 nicht zufrieden ist (Aktion „A12: Rückabwickeln”). Als Reaktion darauf stellt der Implementierungs-Agent 215 die Speicherblöcke des Quellsoftware-Image 205s von den verlagerten Orten 235s wieder an den Startorten des Zielsoftware-Image 225 her (Aktion „A13: Wiederherstellen”). Dann vergrößert der Implementierungs-Agent 215 das Quellsoftware-Image 205s, um dessen ursprüngliche Größe wiederherzustellen, und verdrängt dabei die Speicherblöcke des im freigegebenen Bereich 230 gespeicherten Zielsoftware-Image 225 (Aktion „A14: Vergrößern”). An diesem Punkt schaltet der Implementierungs-Agent 215 den Computer 100 aus und dann ein.
-
Daher wird der Computer 100 wie in 2G gezeigt vom Quellsoftware-Image 205s neu gestartet, wobei das Quellbetriebssystem 210s erneut geladen wird (Aktion „A15: Neu starten”).
-
Durch die vorstehend beschriebene Lösung ist der Computer in sehr kurzer Zeit für die Nutzung mit dem Zielsoftware-Image bereit – direkt nachdem seine Startblöcke auf der Festplatte gespeichert wurden (zum Beispiel nach 1 bis 2 Minuten für eine typische Größe der Startblöcke von 10 bis 200 MByte); der Betrieb des Computers ist dann ungeachtet der Verfügbarkeit der anderen Speicherblöcke des Zielsoftware-Image auf der Festplatte völlig normal (wenn er wie üblich direkt von der Festplatte gestartet wird) – bei einer nur geringfügigen Leistungsverschlechterung des Computers, wenn er auf Speicherblöcke zugreift, die noch von der externen Quelle heruntergeladen werden müssen (diese Leistungsverschlechterung verringert sich mit der Zeit, da mehr und mehr Speicherblöcke bereits auf der Festplatte verfügbar sein werden, nachdem einmal auf sie zugegriffen wurde). Darüber hinaus ist die erforderliche Zeit, um den Computer verwendungsbereit zu machen, von der Größe des Zielsoftware-Image unabhängig.
-
Diese Migrationsprozedur erfordert keinen zusätzlichen Speicherplatz. In der Tat verbleibt das Quellsoftware-Image auf der Festplatte; daher können seine Konfigurationsinformationen für die Anwendung auf das Zielsoftware-Image direkt von der Festplatte gesammelt werden.
-
Darüber hinaus wird das Quellsoftware-Image so wie es ist aufrecht erhalten, bis der Benutzer entscheidet, die Migration zum Zielsoftware-Image zu übernehmen. Daher sind die Konfigurationsinformationen des Quellsoftware-Image für das Zielsoftware-Image noch verfügbar (bis die Migration übernommen wird). Auf diese Weise ist es möglich, während des Tests des Computers mit dem Zielsoftware-Image jedes Konfigurationsinformationselement jederzeit (vom Quellsoftware-Image) zu sammeln und (auf das Zielsoftware-Image) anzuwenden (selbst wenn es zu Beginn vergessen wurde); dadurch wird das Risiko, irgendein Konfigurationsinformationselement während der Migration zu verlieren, vermieden oder zumindest erheblich verringert.
-
Die vorstehend beschriebene Lösung ermöglicht zudem das Wiederherstellen des Quellbetriebssystems (falls notwendig) in sehr kurzer Zeit, da es noch auf der Festplatte verfügbar ist; in der Tat erfordert dieser Vorgang nur ein Wiederherstellen der Speicherblöcke des Quellsoftware-Image, die verlagert wurden (um die Startblöcke des Zielsoftware-Image zu speichern). Darüber hinaus erfordert diese Lösung kein Erstellen einer Momentaufnahme des Quellsoftware-Image im Voraus für dessen Wiederherstellung im Falle von Problemen (mitsamt einer entsprechenden Zeitersparnis).
-
Unter Bezugnahme auf die 3A bis 3C wird nun ein Aktivitätsschaubild gezeigt, das den Aktivitätsfluss bezüglich eines Migrationsprozesses gemäß einer Ausführungsform der Erfindung beschreibt, wobei der Migrationsprozess durch ein Verfahren 300 wiedergegeben wird.
-
Das Verfahren 300 beginnt beim schwarzen Startkreis 302 und fährt dann mit Block 304 fort, sobald der Benutzer (dem Implementierungs-Agenten) eine Anfrage zum Migrieren des Computers zum Zielsoftware-Image übermittelt. Als Reaktion darauf verkleinert der Implementierungs-Agent in Block 306 das Quellsoftware-Image, um einen Bereich der Festplatte freizugeben; dieses Ergebnis kann zum Beispiel (unter Verwendung einer integrierten Funktion des Quellbetriebssystems) erreicht werden, indem nicht belegter Speicherplatz zurückgewonnen wird, der noch keinen Dateien zugewiesen wurde, oder temporäre Dateien gelöscht werden. Fortfahrend mit Block 308 lädt der Implementierungs-Agent die Startblöcke des Zielsoftware-Image von der externen Quelle herunter (wie darin in Zuordnung mit dem Zielsoftware-Image festgelegt); zum Beispiel enthalten die Startblöcke in Microsoft Windows (zusätzlich zum Streaming-Treiber) eine Hauptstartdatei (Master Boot Record (MBR)), einen Startsektor, eine Datei „bootmgr.exe”, eine Datei „boot\bcd”, eine Systemregistrierung, eine Datei „winload.exe” und in der Systemregistrierung festgelegte Treiberdateien. Wenn das Zielsoftware-Image in einer Image-Ablage eines entfernt angeordneten Servers gespeichert ist, kann der Implementierungs-Agent zu diesem Zweck als Fernzugriffinitiator fungieren, der mit einem Fernzugriffserver des entfernt angeordneten Servers interagiert – wie beispielsweise auf der Grundlage des Protokolls „Internet Small Computer System Interface” (iSCSI).
-
Unter Bezugnahme auf Block 310 verlagert der Implementierungs-Agent nun die Speicherblöcke des an den Startorten des Zielsoftware-Image gespeicherten Quellsoftware-Image in den freigegebenen Bereich. Insbesondere werden die an den Startorten des Zielsoftware-Image gespeicherten Speicherblöcke aufeinander folgend gelesen und in derselben Reihenfolge an die ersten Speicherorte des freigegebenen Bereichs kopiert.
-
Fortfahrend mit Block 312 initialisiert der Implementierungs-Agent den freigegebenen Bereich mit einer Steuerstruktur für den Streaming-Treiber. Zu diesem Zweck erstellt der Implementierungs-Agent eine Blockzuordnung, mit der jeder Speicherblock des Zielsoftware-Image dem Speicherort auf der Festplatte zugeordnet wird, an dem er gespeichert ist (zu Beginn angebend, dass kein Speicherblock des Zielsoftware-Image auf der Festplatte verfügbar ist). Insbesondere wenn der freigegebene Bereich (genauer gesagt, ein nützlicher Teil davon nach den verlagerten Speicherorten und der Steuerstruktur) eine Größe besitzt, die ein Speichern des gesamten Zielsoftware-Image ermöglicht, kann er als lokale Datenablage für das Zielsoftware-Image arbeiten. In diesem Fall kann es sich bei der Blockzuordnung um eine Bitmap handeln; die Bitmap besitzt einen Eintrag für jede -Imageadresse des Zielsoftware-Image, wobei der Eintrag einen Verfügbarkeitsmerker (availability flag) enthält, der anzeigt, ob der entsprechende Speicherblock an derselben Position innerhalb des freigegebenen Bereichs gespeichert ist (d. h. am Speicherort, der eine Speicheradresse besitzt, die gleich der Speicheradresse plus einem Versatz des nützlichen Teils des freigegebenen Bereichs innerhalb der Festplatte ist); zu Beginn sind alle Verfügbarkeitsmerker deaktiviert (um anzuzeigen, dass die entsprechenden Speicherblöcke nicht im freigegebenen Bereich gespeichert sind). Im Gegensatz hierzu kann der freigegebene Bereich als ein lokaler Cachespeicher für das Zielsoftware-Image arbeiten, wenn der freigegebene Bereich eine Größe besitzt, die das Speichern des gesamten Zielsoftware-Image nicht erlaubt. In diesem Fall kann es sich bei der Blockzuordnung um eine Nachschlagetabelle handelt; die Nachschlagetabelle besitzt einen Eintrag für die Speicheradresse jedes Speicherortes des nützlichen Teils des freigegebenen Bereichs, wobei der Eintrag die Image-Adresse des Speicherblocks des darin gespeicherten Zielsoftware-Image sowie ein Aktualisierungsmerker enthält, der anzeigt, ob der Speicherblock (in Hinblick auf seine ursprüngliche Version in der externen Quelle) aktualisiert wurde; zu Beginn weisen die Image-Adressen aller Einträge der Nachschlagetabelle einen Wert gleich Null auf (um anzuzeigen, dass keine Speicherblöcke im freigegebenen Bereich gespeichert sind). Darüber hinaus erstellt der Implementierungs-Agent eine Startliste; in der Startliste sind die Startadressen des Zielsoftware-Image festgelegt. Der Implementierungs-Agent erzeugt zudem einen Kopierzähler, der die Image-Adresse des letzten Speicherblocks des Zielsoftware-Image angibt, der an seine korrekte Position innerhalb der Festplatte kopiert wurde, nachdem die Migration übernommen wurde, wie nachfolgend beschrieben (zu Beginn auf Null gesetzt). Fortfahrend mit Block 314 speichert der Implementierungs-Agent nun die Startblöcke des Zielsoftware-Image an ihren Startorten (wie in der Startliste angegeben).
-
Der Implementierungs-Agent schaltet den Computer in Block 316 aus und dann ein, um ihn zu veranlassen, von den Startblöcken des Zielsoftware-Image an seinen Startorten neu zu starten. In der Tat erkennt ein in einer Firmware des Computers gespeicherter Startlader (Bootloader), der bei dessen Einschalten ausgeführt wird, – zum Beispiel das Basic Input/Output System (BIOS) – die Festplatte als eine startfähige Einheit; daher lädt das BIOS die MBR, die MBR lädt den Startsektor, der Startsektor findet und startet die Datei „bootmgr.exe”, die Datei „bootmgr.exe” findet und liest die Datei „boot\bcd”, um die Speicherorte der Systemregistrierung zu finden und dann die Systemregistrierung, die Datei „winload.exe” und die in der Systemregistrierung angegebenen Treiberdateien zu laden; die Datei „winload.exe” startet dann den Streaming-Treiber des Implementierungs-Agenten, der einen Standard-Dateisystemtreiber des Zielbetriebssystems überschreibt (um jede Anfrage zum Zugreifen auf einen beliebigen Speicherblock des Zielsoftware-Image zu bedienen, wie nachfolgend beschrieben). Fortfahrend mit Block 318 bindet der Implementierungs-Agent die Festplatte auf dem Computer ein (um das Zugreifen darauf und dann auf das Quellsoftware-Image zu ermöglichen).
-
An diesem Punkt überträgt der Implementierungs-Agent die Benutzerkonfiguration des Quellsoftware-Image auf das Zielsoftware-Image; zum Beispiel enthält die Benutzerkonfiguration des Quellsoftware-Image Einstellungen (wie beispielsweise bezüglich des Erscheinungsbildes und des Verhaltens des Betriebssystems oder Anwendungsprogramms) und/oder Daten (wie beispielsweise Peripherie-Einheitentreiber, Cookies und Adressbücher). Zu diesem Zweck sammelt der Implementierungs-Agent in Block 320 die Konfigurationsinformationen des Quellsoftware-Image durch Ausführen eines geeigneten Migrationswerkzeugs – zum Beispiel des Programms „ScanState.exe” des Werkzeugs „UserState Migration Tool” (USMT) in Windows. In diesem Fall überprüft der Streaming-Treiber für jede Anfrage (durch das Migrationswerkzeug) zum Lesen eines Speicherblocks des Quellsoftware-Image an einer entsprechenden Image-Adresse (als Konfigurationsspeicherblock bzw. Konfigurations-Imageadresse bezeichnet) in Block 322, ob der Konfigurationsspeicherblock in den freigegebenen Bereich verlagert wurde (d. h., wenn die Konfigurations-Image-Adresse gleich einer der Startadressen des Zielsoftware-Image ist, wie in seiner Startliste angegeben). Falls ja, aktualisiert der Streaming-Treiber in Block 324 die Konfigurations-Image-Adresse so, dass sie auf den entsprechenden verlagerten Speicherort verweist. Dann wird das Verfahren nach unten mit Block 326 fortgesetzt; derselbe Punkt wird auch direkt von Block 322 aus erreicht, wenn der Konfigurationsspeicherort nicht verlagert wurde. An diesem Punkt ruft der Streaming-Treiber den Konfigurationsspeicherblock von dem Speicherort ab, dessen Speicheradresse gleich der (möglicherweise aktualisierten) Konfigurations-Image-Adresse ist.
-
Fortfahrend mit Block 328 wendet der Streaming-Treiber die gesammelten Konfigurationsinformationen auf das Zielsoftware-Image an (indem im vorliegenden Beispiel das Programm „LoadState.exe” des USMT ausgeführt wird); zu diesem Zweck schreibt der Streaming-Treiber entsprechende Speicherblöcke des Zielsoftware-Image auf die Festplatte (wie nachfolgend beschrieben).
-
Der Computer 100 (auf dem das Zielsoftware-Image ausgeführt wird) kann nun normal verwendet werden. Insbesondere wird das Verfahren 300 nach unten mit Block 330 fortgesetzt, sobald eine Anfrage zum Lesen eines ausgewählten Speicherblocks des Zielsoftware-Image (bei einer entsprechenden ausgewählten Image-Adresse) an das Zielbetriebssystem übermittelt wird (zum Beispiel von einem Anwendungsprogramm). Die Leseanfrage wird in Block 332 an den Streaming-Treiber weitergeleitet, der überprüft, ob der ausgewählte Speicherblock bereits auf der Festplatte verfügbar ist. Zu diesem Zweck vergleicht der Streaming-Treiber zuerst die ausgewählte Image-Adresse mit den Startadressen des Zielsoftware-Image (wie in der Startliste angegeben), um zu ermitteln, ob es sich bei dem ausgewählten Speicherblock um einen Startblock handelt und er dann immer am entsprechenden Startblock gespeichert ist. Falls nicht, vergleicht der Streaming-Treiber die ausgewählte Image-Adresse mit dem Kopierzähler, um zu ermitteln, ob die ausgewählte Image-Adresse gleich oder höher als der Kopierzähler ist, und dann wird der ausgewählte Speicherblock an seine korrekte Position innerhalb der Festplatte kopiert (nachdem die Migration übernommen wurde, wie nachstehend beschrieben). Im Gegensatz dazu werden entsprechend des Betriebsmodus des freigegebenen Bereichs unterschiedliche Operationen durchgeführt. Insbesondere ruft der Streaming-Treiber im Falle, dass der freigegebene Bereich als lokale Datenablage arbeitet, den entsprechenden Verfügbarkeitsmerker in der Bitmap, um zu ermitteln, ob der ausgewählte Speicherblock im freigegebenen Bereich gespeichert ist oder nicht (wenn der Verfügbarkeitsmerker aktiviert bzw. deaktiviert ist); wenn andererseits der freigegebene Bereich als lokaler Cachespeicher arbeitet, sucht der Streaming-Treiber die ausgewählte Image-Adresse in der Nachschlagetabelle, um zu ermitteln, ob der ausgewählte Speicherblock im freigegebenen Bereich gespeichert ist oder nicht (wenn die ausgewählte Image-Adresse gefunden bzw. nicht gefunden wird). Der Aktivitätsfluss verzweigt sich dann in Block 334 entsprechend dem Ergebnis der Überprüfung.
-
Wenn der ausgewählte Speicherblock nicht auf der Festplatte verfügbar ist, lädt der Streaming-Treiber den ausgewählten Speicherblock in Block 336 von der externen Quelle herunter. Das Verfahren 300 gabelt sich nun in zwei Zweige, die entsprechend dem Betriebsmodus des freigegebenen Bereichs alternativ ausgeführt werden. Insbesondere speichert der Streaming-Treiber in Block 338 im Falle, dass der freigegebene Bereich als lokale Datenablage arbeitet, den ausgewählten Speicher am entsprechenden Speicherort des freigegebenen Bereichs (dessen Speicheradresse gleich der ausgewählten Image-Adresse plus seinem Versatz ist); gleichzeitig wird der entsprechende Verfügbarkeitsmerker in der Bitmap aktiviert (um anzuzeigen, dass der ausgewählte Speicherblock nun auf der Festplatte verfügbar ist). Andernfalls sucht der Streaming-Treiber in Block 340 nach einem freien Speicherort im freigegebenen Bereich (d. h., dessen entsprechende Image-Adresse in der Nachschlagetabelle ist gleich dem Wert Null), wenn der freigegebene Bereich als lokaler Cachespeicher arbeitet. Bei Fortsetzung nach unten mit Block 342 räumt der Streaming-Treiber in Block 344 einen Speicherort des freigegebenen Bereichs, wenn kein freier Speicherort verfügbar ist; der zu räumende Speicherort wird – zum Beispiel entsprechend eines Algorithmus der am längsten nicht erfolgten Verwendung (Least Recently Used (LRU) algorithm) – nur unter denjenigen ausgewählt, in denen Speicherblöcke gespeichert sind, die nach ihrem Herunterladen von der externen Quelle nicht aktualisiert wurden (was durch den deaktivierten entsprechenden Aktivierungsmerker angezeigt wird), um jeglichen Informationsverlust zu vermeiden. Dann wird das Verfahren 300 nach unten mit Block 346 fortgesetzt; derselbe Punkt wird auch direkt von Block 342 aus erreicht, wenn ein freier Speicherort gefunden wurde. An diesem Punkt speichert der Streaming-Treiber den ausgewählten Speicherblock am ersten freien Speicherort des freigegebenen Bereichs; gleichzeitig wird in der Nachschlagetabelle der entsprechende Eintrag auf die ausgewählte Image-Adresse gesetzt (um anzuzeigen, dass der ausgewählte Speicherblock nun darin verfügbar ist) und der entsprechende Aktualisierungsmerker deaktiviert (um anzuzeigen, dass der ausgewählte Speicherblock nicht aktualisiert wurde).
-
Zu Block 334 zurückkehrend wird das Verfahren nach unten mit Block 348 fortgesetzt, wenn der ausgewählte Speicherblock stattdessen auf der Festplatte verfügbar ist (im entsprechenden Startblock, an seiner korrekten Position innerhalb der Festplatte oder im freigegebenen Bereich). In dieser Phase ruft der Streaming-Treiber den ausgewählten Speicherblock von der Festplatte ab. Insbesondere wird im Falle, dass es sich bei dem ausgewählten Speicherblock um einen Startblock handelt (d. h., die ausgewählte Image-Adresse eine der in der Startliste angegebenen Startadressen ist), der ausgewählte Speicherblock (dessen Speicheradresse gleich der ausgewählten Image-Adresse ist) vom entsprechenden Startort abgerufen. Gleichermaßen wird der ausgewählte Speicherblock von seinem korrekten Speicherort (dessen Speicheradresse gleich der ausgewählten Image-Adresse ist) abgerufen, wenn der ausgewählte Speicherblock bereits an seine korrekte Position innerhalb der Festplatte kopiert wurde (d. h., die ausgewählte Image-Adresse ist niedriger als der Kopierzähler). Wenn der ausgewählte Speicherblock im freigegebenen Bereich gespeichert ist, wird der ausgewählte Speicherblock stattdessen vom Speicherort im freigegebenen Bereich abgerufen, der die Speicheradresse besitzt, die gleich der ausgewählten Image-Adresse plus dem Versatz des freigegeben Bereichs ist (wenn der freigegebene Bereich als lokale Datenablage arbeitet) oder vom Speicherort mit der Speicheradresse, die dem Eintrag der Nachschlagetabelle zugeordnet ist, der die ausgewählte Image-Adresse speichert (wenn der freigegebene Bereich als lokaler Cachespeicher arbeitet). In jedem Fall wird in Block 350 der Aktivitätsfluss von Block 346 oder Block 348 aus kommend zusammengeführt; an diesem Punkt gibt der Streaming-Treiber den ausgewählten Speicherblock an den Dateisystemtreiber zurück, der ihn wiederum dem Anwendungsprogramm zurückgibt.
-
Das Verfahren 300 wird stattdessen nach unten mit Block 352 fortgesetzt, sobald eine Anfrage zum Schreiben eines ausgewählten Speicherblocks des Zielsoftware-Image (bei einer entsprechenden ausgewählten Image-Adresse) an das Zielbetriebssystem übermittelt wird (zum Beispiel von einem Anwendungsprogramm). Wie vorstehend wird die Schreibanfrage in Block 354 an den Streaming-Treiber weitergeleitet, der überprüft, ob der ausgewählte Speicherblock bereits auf der Festplatte verfügbar ist. Der Aktivitätsfluss verzweigt sich dann in Block 356 entsprechend dem Ergebnis der Überprüfung.
-
Wenn der ausgewählte Speicherblock nicht auf der Festplatte verfügbar ist, speichert der Streaming-Treiber den ausgewählten Speicherblock auf der Festplatte durch Wiederholen derselben vorstehend beschriebenen Operationen. Insbesondere speichert der Streaming-Treiber in Block 358 im Falle, dass der freigegebene Bereich als lokale Datenablage arbeitet, den ausgewählten Speicherblock am entsprechenden Speicherort des freigegebenen Bereichs (dessen Speicheradresse gleich der ausgewählten Image-Adresse plus seinem Versatz ist); gleichzeitig wird der entsprechende Verfügbarkeitsmerker in der Bitmap aktiviert. Andernfalls sucht der Streaming-Treiber in Block 360 nach einem freien Speicherort im freigegebenen Bereich, wenn der freigegebene Bereich als lokaler Cachespeicher arbeitet. Bei Fortsetzung nach unten mit Block 362 räumt der Streaming-Treiber in Block 364 einen Speicherort des freigegebenen Bereichs (unter denen, die Speicherblöcke speichern, die nicht aktualisiert wurden), wenn kein freier Speicherort gefunden wird. Dann wird das Verfahren 300 nach unten mit Block 366 fortgesetzt; derselbe Punkt wird auch direkt von Block 362 aus erreicht, wenn ein freier Speicherort gefunden wurde. An diesem Punkt speichert der Streaming-Treiber den ausgewählten Speicherblock am ersten Speicherort des freigegebenen Bereichs; gleichzeitig wird in der Nachschlagetabelle der entsprechende Eintrag auf die ausgewählte Image-Adresse gesetzt, und der entsprechende Aktualisierungsmerker wird deaktiviert.
-
Zurückkehrend zu Block 356 wird das Verfahren nach unten mit Block 368 fortgesetzt, wenn der ausgewählte Speicherblock stattdessen auf der Festplatte verfügbar ist. In dieser Phase speichert der Streaming-Treiber den ausgewählten Speicherblock am entsprechenden Speicherort. Insbesondere wird im Falle, dass es sich bei dem ausgewählten Speicherblock um einen Startblock handelt (d. h., die ausgewählte Image-Adresse eine der in der Startliste angegebenen Startadressen ist), der ausgewählte Speicherblock (dessen Speicheradresse gleich der ausgewählten Image-Adresse ist) am entsprechenden Startort gespeichert. Gleichermaßen wird der ausgewählte Speicherblock an seinem korrekten Speicherort (dessen Speicheradresse gleich der ausgewählten -Imageadresse ist) gespeichert, wenn der ausgewählte Speicherblock bereits an seine korrekte Position innerhalb der Festplatte kopiert wurde (d. h., die ausgewählte Image-Adresse ist niedriger als der Kopierzähler). Wenn der ausgewählte Speicherblock im freigegebenen Bereich gespeichert ist, wird der ausgewählte Speicherblock stattdessen am Speicherort im freigegebenen Bereich gespeichert, der die Speicheradresse besitzt, die gleich der ausgewählten Image-Adresse plus dem Versatz des freigegeben Bereichs ist (wenn der freigegebene Bereich als lokale Datenablage arbeitet) oder am Speicherort mit der Speicheradresse, die dem Eintrag der Nachschlagetabelle zugeordnet ist, der die ausgewählte Image-Adresse speichert (wenn der freigegebene Bereich als lokaler Cachespeicher arbeitet).
-
Diese Streaming-Technik zielt dann darauf ab, so viele Speicherblöcke des Zielsoftware-Image wie möglich auf der Festplatte zu speichern (im Gegensatz zu den beim Stand der Technik bekannten Streaming-Techniken zum Bereitstellen von Software-Images auf Abruf, wobei die Speicherblöcke der Software-Images nur für deren unmittelbare Verwendung auf den Computer heruntergeladen werden). Darüber hinaus werden die heruntergeladenen Speicherblöcke im Falle, dass der freigegebene Bereich als lokale Datenablage arbeitet, dauerhaft auf der Festplatte gespeichert (ohne nach deren Verwendung oder bei Ausschalten des Computers zu verschwinden), so dass sie für eine mögliche nächste Verwendung davon nicht erneut heruntergeladen werden müssen.
-
Das Verfahren 300 wird nun nach unten mit Block 370 fortgesetzt, sobald eine Anfrage zum Übernehmen der Migration zum Zielsoftware-Image an den Implementierungs-Agenten übermittelt wird (durch Zusammenführen von Block 358, von Block 366 oder von Block 368 aus kommend). Als Reaktion darauf kann der Implementierungs-Agent in Block 372 eine Momentaufnahme des Quellsoftware-Image (zum Beispiel für seine Sicherung) erstellen. Zu diesem Zweck wird jeder Speicherblock des Quellsoftware-Image von der Festplatte abgerufen; insbesondere wird der Speicherblock im Falle, dass er nicht verlagert wurde, vom entsprechenden Speicherort abgerufen oder andernfalls vom entsprechenden verlagerten Speicherort. Der Speicherblock wird dann auf einer externen Einheit (zum Beispiel einer Wechselplatte) gespeichert. Daher ist es in diesem Fall möglich, die Momentaufnahme des Quellsoftware-Image nur zu erstellen, wenn sie gegebenenfalls tatsächlich notwendig ist.
-
Dann wird eine Schleife für jeden Speicherblock des Zielsoftware-Image durchgeführt. Die Schleife beginnt in Block 374, in dem der Streaming-Treiber wie vorstehend überprüft, ob ein aktueller Speicherblock des Zielsoftware-Image bei einer entsprechenden aktuellen Speicheradresse (gleich dem Kopierzähler plus eins) bereits auf der Festplatte verfügbar ist (in diesem Fall nur an den Speicherorten oder im freigegebenen Bereich). Der Aktivitätsfluss verzweigt sich dann in Block 376 entsprechend dem Ergebnis der Überprüfung.
-
Wenn der aktuelle Speicherblock nicht auf der Festplatte verfügbar ist, lädt der Streaming-Treiber den aktuellen Speicherblock in Block 378 von der externen Quelle herunter. Andernfalls wird der Aktivitätsfluss von Block 376 aus nach unten mit Block 380 fortgesetzt. Wenn es sich an diesem Punkt bei dem aktuellen Speicherblock nicht um einen Startblock handelt, ruft ihn der Streaming-Treiber in Block 382 vom freigegebenen Bereich ab; insbesondere wird der aktuelle Speicherblock vom Speicherort abgerufen, der die Speicheradresse besitzt, die gleich der aktuellen Image-Adresse plus dem Versatz des freigegeben Bereichs ist (wenn der freigegebene Bereich als eine lokale Datenablage arbeitet) oder vom Speicherort mit der Speicheradresse, die dem Eintrag der Nachschlagetabelle zugeordnet ist, der die ausgewählte Image-Adresse speichert (wenn der freigegebene Bereich als lokaler Cachespeicher arbeitet). Das Verfahren 300 wird dann von Block 378 oder von Block 382 kommend nach unten mit Block 384 fortgesetzt. In dieser Phase wird der aktuelle Speicherblock an seinen korrekten Speicherort (mit der Speicheradresse, die gleich der aktuellen Image-Adresse ist) kopiert, wobei der Kopierzähler dann um eins erhöht wird; wenn der freigegebene Bereich als lokaler Cachespeicher arbeitet, wird gleichzeitig der entsprechende Eintrag in der Nachschlagetabelle geräumt (indem seine Image-Adresse auf den Wert Null gesetzt wird). Der Aktivitätsfluss wird nun mit Block 386 fortgesetzt; derselbe Punkt wird auch direkt von Block 380 aus erreicht, ohne irgendeine Operation durchzuführen, wenn es sich bei dem aktuellen Speicherblock um einen Startblock handelt (da er bereits an der korrekten Position gespeichert ist). Nun wird ein Test vorgenommen, um zu überprüfen, ob alle Speicherblöcke des Zielsoftware-Image verarbeitet wurden. Falls nicht, kehrt der Aktivitätsfluss zu Block 372 zurück, um dieselben Operationen an einem nächsten Speicherblock des Zielsoftware-Image zu wiederholen. Andernfalls wird die Schleife durch Fortfahren nach unten mit Block 388 verlassen, wobei der Implementierungsagent den Streaming-Treiber deaktiviert (und ihn zudem von der Startsequenz des Zielsoftware-Image entfernt). An diesem Punkt schaltet der Implementierungs-Agent in Block 390 den Computer aus und dann ein, um ihn vom Zielsoftware-Image für seinen normalen Betrieb neu zu starten (ohne dass die externe Quelle länger benötigt wird).
-
Diese Kopierprozedur kann im Hintergrund durchgeführt werden, so dass sie für den Betrieb des Computers im Wesentlichen nicht erkennbar ist; auf diese Weise kann der Computer normal weiterarbeiten, wobei der einzige Unterschied darin liegt, dass auf jeden beliebigen Speicherblock nun an seiner korrekten Position zugegriffen wird, nachdem er dorthin kopiert wurde. Genauer wird im Falle, dass dem Betriebssystem eine Anfrage zum Zugreifen (entweder zum Lesen oder Schreiben) auf einen ausgewählten Speicherblock des Zielsoftware-Image übermittelt wird, die Zugriffsanfrage erneut an den Streaming-Treiber weitergeleitet, der überprüft, ob der ausgewählte Speicherblock bereits kopiert wurde (d. h., ob die ausgewählte Image-Adresse niedriger als oder gleich dem Kopierzähler ist). Falls ja, wird auf den ausgewählten Speicherblock am Speicherort mit der Speicheradresse zugegriffen, die gleich der ausgewählten Image-Adresse ist; andernfalls wird der ausgewählte Speicherblock durch Wiederholen derselben vorstehend beschriebenen Operationen gelesen oder geschrieben.
-
Zum Beispiel können die Operationen der Kopierprozedur entsprechend einer Arbeitslast des Computers wiederholt werden. Zu diesem Zweck wird die Arbeitslast des Computers überwacht (zum Beispiel alle 10 bis 100 ms); wenn die Arbeitslast des Computers niedriger als ein zuvor festgelegter Schwellenwert ist (zum Beispiel, weil im Moment keine Operation durchgeführt wird), werden ein oder mehrere Blöcke des Zielsoftware-Image durch Wiederholen der vorstehend beschriebenen Operationen kopiert. Auf diese Weise ist es möglich, die Auswirkung der Kopierprozedur auf den Betrieb des Computers zu minimieren. Infolgedessen ist das tatsächliche Umschalten auf das Zielsoftware-Image sehr schnell (da es nur das Neustarten des Computers erfordert).
-
Alternativ wird das Verfahren 300 stattdessen (von Block 358 oder von Block 366 oder von Block 368 kommend) nach unten mit Block 392 fortgesetzt, sobald dem Implementierungs-Agenten eine Anfrage zum Rückabwickeln des Quellsoftware-Image übermittelt wird. Als Reaktion darauf stellt der Implementierungs-Agent in Block 394 die Speicherblöcke des Quellsoftware-Image von den verlagerten Speicherorten an den Startorten des Zielsoftware-Image wieder her (indem sie aufeinander folgend von den verlagerten Speicherorten gelesen und in derselben Reihenfolge an die entsprechenden Startorte der Zielsoftware-Images kopiert werden, wie in seiner Startliste angegeben). Dann vergrößert der Implementierungs-Agent das Quellsoftware-Image in Block 396 (zum Beispiel erneut durch Verwenden einer integrierten Funktion des Quellbetriebssystems), um seine ursprüngliche Größe wiederherzustellen, und hebt dann sämtliche Speicherblöcke des Zielsoftware-Image auf. An diesem Punkt schaltet der Implementierungs-Agent in Block 398 den Computer aus und dann ein, um ihn vom Quellsoftware-Image für seinen normalen Betrieb neu zu starten.
-
In beiden Fällen endet das Verfahren 300 bei den konzentrischen weißen/schwarzen Stoppkreisen 399 (entweder von Block 390 oder von Block 398 kommend).
-
Die vorstehend beschriebene Lösung erfordert die Kenntnis der Startblöcke jedes Software-Image. Zu diesem Zweck ist es zum Beispiel möglich, das Software-Image entsprechend vorzubereiten. In dieser Hinsicht wird auf 4 Bezug genommen, die ein Kollaborationsschaubild zeigt, das die Funktionen der (als Ganzes mit der Bezugsziffer 400 bezeichneten) Hauptsoftwarekomponenten wiedergibt, die verwendet werden können, um einen Vorbereitungsprozess eines generischen Software-Image zu realisieren, das in der Lösung gemäß einer Ausführungsform der Erfindung zu verwenden ist.
-
Der Vorbereitungsprozess wird in einem System realisiert, das einen Servercomputer 405s enthält (mit seinem Arbeitsspeicher und Massenspeicher, die mit den Bezugszeichen 415s bzw. 430s bezeichnet sind). Auf dem Servercomputer 405s wird ein Implementierungs-Verwalter 435 ausgeführt – zum Beispiel der IBM Tivoli Provisioning Manager for Images (oder TPMfI) des IBM Tivoli Provisioning Manager for OS Deployment (oder TPM for OSD) der IBM Corporation (IBM und Tivoli sind Marken der IBM Corporation). Der Implementierungs-Verwalter 435 verwaltet eine Datenablage von Hauptsoftware-Images (oder einfach Haupt-Images) 440; jedes Haupt-Image 440 stellt eine grundlegende Version eines entsprechenden Software-Image bereit (das zum Beispiel durch Erfassen des Inhalts einer Festplatte eines Spendercomputers erstellt wird, auf dem es zuvor installiert war), wobei spezifische, sich auf eine beliebige Konfiguration des Spendercomputers beziehende Inhalte (zum Beispiel Treiber- und Registrierungseinstellungen) entfernt wurden. Der Servercomputer 405s enthält zudem eine Ablage von Modellen 445; jedes Modell 445 enthält stattdessen Inhalte, die spezifisch für eine entsprechende Konfiguration der Computer sind, auf denen die Software-Images bereitgestellt werden müssen. Darüber hinaus interagiert der Implementierungs-Verwalter 435 mit einem Fernzugriffserver 450, der dazu dient, den Fernzugriff auf Daten zu ermöglichen (zum Beispiel auf der Grundlage des iSCSI-Protokolls).
-
Ein Bediener 455 wählt ein Software-Image (das ein ausgewähltes Haupt-Image 440 und ein ausgewähltes Modell 445 enthält) für einen spezifischen Computertyp aus, der durch einen entsprechenden Hilfscomputer 405a repräsentiert wird (Aktion „B1: Auswählen”). Auf dem Hilfscomputer 405a (mit seinem Arbeitsspeicher und Massenspeicher, die mit den Bezugszeichen 415a bzw. 430a bezeichnet sind) wird ein Implementierungs-Agent 460 zum Interagieren mit dem Implementierungs-Verwalter 435 ausgeführt. Als Reaktion darauf weckt der Implementierungs-Verwalter 435 den Implementierungs-Agenten 460 auf dem Hilfscomputer 405a auf, indem er eine Kennung des ausgewählten Software-Image weiterleitet (Aktion „B2: Aufwecken”). Als Folge bindet der Implementierungs-Agent 460 das ausgewählte Software-Image als eine entfernt angeordnete Platte (d. h. durch Agieren als ein iSCSI-Initiator im vorliegenden Beispiel) zum Fernzugriff auf sie über den Fernzugriffserver 450 ein. Als Ergebnis wird ein temporäres Software-Image (oder einfach temporäres Image) 465 für den ausschließlichen Zugriff durch den Hilfscomputer 405a erstellt; das temporäre Image 465 ist einfach über eine Indexstruktur definiert, die auf die Speicherblöcke des ausgewählten Haupt-Image 440 und des ausgewählten Modells 445 verweist – d. h., ohne irgendeine Kopie davon anzufertigen. Das temporäre Image 465 wird mit einer aktivierten Blockverfolgungsfunktion eingebunden, um die Image-Adresse jedes beliebigen Speicherblocks des temporären Image 465 zu verfolgen, auf den zugegriffen wird (Aktion „B3: Einbinden”).
-
An diesem Punkt simuliert der Implementierungs-Agent 460 die Startsequenz des Hilfscomputers 405a auf dem temporären Image 465 (bis zum Laden des Implementierungs-Agenten); zum Beispiel liest in Microsoft Windows der Implementierungs-Agent 460 die MBR, den Startsektor, die Datei „bootmgr.exe”, die Datei „boot\bcd” die Systemregistrierung, die Datei „winload.exe”, die in der Systemregistrierung angegebenen Treiberdateien und den Streaming-Treiber (Aktion „B4: Simuliertes Starten”). Nachdem die simulierte Startsequenz abgeschlossen wurde, hebt der Implementierungs-Agent die Einbindung des temporären Image 465 auf (Aktion „B5: Einbindung aufheben”). Dann veranlasst der Implementierungs-Agent 460 ein Übernehmen des temporären Image 465 durch den Implementierungs-Verwalter 435 (Aktion „B6: Übernehmen”). Als Reaktion darauf baut der Implementierungs-Verwalter 435 ein neues Software-Image (oder einfach neues Image) 470 aus dem temporären (einfach durch seine Indexstruktur definierten) Image auf; darüber hinaus wird das neue Image 470 der Liste der Speicherblöcke zugeordnet, auf die während der simulierten Startprozedur zugegriffen wurde, wobei die Speicherblöcke die entsprechenden Startblöcke festlegen (Aktion „B7: Aufbauen”).,
-
Die Software-Images können jedes Softwareprogramm enthalten (zum Beispiel nur das Betriebssystem ohne jegliche Anwendungsprogramme); gleichermaßen können die Speicherblöcke jede beliebige Art von Informationen enthalten (zum Beispiel einen bzw. eine oder mehrere Sektoren, Dateien, Bibliotheken, Verzeichnisse, Kombinationen oder Teile davon). Darüber hinaus kann das Zielsoftware-Image von jeder beliebigen äquivalenten externen Quelle (zum Beispiel einer Wechselspeichereinheit) bereitgestellt werden. In jedem Fall kann die vorgeschlagene Technik verwendet werden, ein anderes Betriebssystem zu installieren, den Computer auf eine vorherige Version desselben Betriebssystem herabzustufen, eine Momentaufnahme des Computers für die Wiederherstellung nach einem Computer-Absturz (desaster recovery) wiederherzustellen oder aus einem beliebigen anderen Grund.
-
Dieselbe Technik kann zudem auf ein beliebiges anderes Betriebssystem mit welcher Startsequenz auch immer angewandt werden. Zum Beispiel enthalten bei Linux (einer Marke von Linus Torvalds) die Startblöcke (zusätzlich zum Streaming-Treiber) die MBR, die den GRUB-Startlader enthält und das Verzeichnis „/boot”, das den Kernel und das Dateisystem „initrd” enthält; in diesem Fall lädt das BIOS während der Startsequenz die MBR einschließlich des GRUB, der GRUB findet das Verzeichnis „/boot” und lädt den Kernel und das Dateisystem „initrd”, der GRUB startet auf dem Kernel, der Kernel startet das Dateisystem „initrd”, und das Dateisystem „initrd” startet den Streaming-Treiber.
-
In jedem Fall kann die vorstehend beschriebene Streaming-Funktion durch welche äquivalente Struktur auch immer realisiert werden (sogar ohne irgendeinen Implementierungs-Agenten). Darüber hinaus können die Software-Images auf eine andere Weise vorbereitet werden (zum Beispiel indem der Hilfscomputer tatsächlich gestartet wird und die Speicherblöcke verfolgt werden, auf die während der Startsequenz zugegriffen wird, um seine Startblöcke zu identifizieren).
-
Die vorgeschlagene Technik kann zudem dazu verwendet werden, das Zielsoftware-Image exakt so zu installieren, wie es durch die externe Quelle bereitgestellt wird (zum Beispiel, um eine vorherige Momentaufnahme des Computers wiederherzustellen).
-
In diesem Fall ist es auch möglich, das Übertragen jeglicher Konfigurationsinformationen des Quellsoftware-Image zu vermeiden.
-
In jedem Fall kann zu den Konfigurationsinformationen jeder beliebige andere Informationstyp zählen (zum Beispiel Anwendungsprogramme, Dokumente und Ähnliches); die Konfigurationsinformationen können zudem mit äquivalenten Techniken (auch manuell durch einfaches Kopieren der Dateien) vom Quellsoftware-Image erfasst und/oder auf das Zielsoftware-Image angewandt werden.
-
Die Operation des Übernehmens der Migration zum Zielsoftware-Image (durch Kopieren seiner Speicherblöcke an deren korrekte Position innerhalb der Festplatte) kann auf andere Weise durchgeführt werden.
-
Zum Beispiel können die Speicherblöcke, auch während der Computer getestet wird, kontinuierlich heruntergeladen werden; darüber hinaus ist es auch möglich, die Migration zum Zielsoftware-Image in einer einzigen Aktion zu übernehmen (zum Beispiel durch gleichzeitiges Kopieren all seiner Speicherblöcke, nachdem sie heruntergeladen wurden).
-
Die Arbeitslast kann mit jeder beliebigen anderen Häufigkeit oder während bestimmter Zeitdauern überwacht werden (zum Beispiel nachts); ähnliche Überlegungen gelten, wenn die Arbeitslast für den Computer, den Server, das Netzwerk oder jede beliebige Kombination davon überwacht wird. Darüber hinaus kann der Schwellenwert für die Arbeitslast auf jede beliebige andere Weise definiert werden (zum Beispiel durch Gewichten seiner Beiträge mit unterschiedlichen Gewichtungen). Ähnliche Überlegungen gelten bei Abfallen der Arbeitslast unter den Schwellenwert, falls zwei oder mehr Speicherblöcke gleichzeitig heruntergeladen werden.
-
Gleichwertige Algorithmen können realisiert werden, um die Kohärenz der Speicherblöcke des Zielsoftware-Image sicherzustellen, während sie an ihre korrekten Positionen kopiert werden.
-
Alternativ ist es auch möglich, den Streaming-Treiber stets aktiviert zu halten, auch nachdem das Zielsoftware-Image vollständig heruntergeladen wurde (zum Beispiel zum Herunterladen aktueller Versionen der Speicherblöcke).
-
Ähnliche Überlegungen gelten, wenn andere Prozeduren zum Rückabwickeln auf das Quellsoftware-Image ins Auge gefasst werden.
-
Der freigegebene Bereich der Festplatte kann auf beliebige andere Weise erhalten werden (zum Beispiel durch Komprimieren einiger Dateien); in jedem der Fälle wird unter Umständen nur ein Teil der Festplatte verkleinert (zum Beispiel manche Partitionen davon).
-
Jede beliebige äquivalente Steuerungsstruktur kann zur Verwendung durch den Streaming-Treiber realisiert werden (wenn der freigegebene Bereich entweder als lokale Datenablage oder lokaler Cachespeicher arbeitet).
-
Das Computerprogramm kann in Objektcode oder in Quellcode vorliegen, um zum Beispiel kompiliert oder übersetzt (interpreted) zu werden.
-
Jede Komponente des Datenverarbeitungssystems kann in mehrere Elemente aufgeteilt werden, oder zwei oder mehr Komponenten können zusammen in einem einzigen Element vereint werden; darüber hinaus kann jede Komponente wiederholt werden, um die parallele Ausführung der entsprechenden Vorgänge zu unterstützen.