PatentDe  


Dokumentenidentifikation DE69904462T2 02.10.2003
EP-Veröffentlichungsnummer 1075676
Titel MANIPULATION VON PARTITIONEN VIRTUELLER UND REALER RECHNERSPEICHERVORRICHTUNGEN
Anmelder Powerquest Corp., Orem, Utah, US
Erfinder MURRAY, E., Golden, Mapleton, US;
MARSH, I., David, Orem, US;
RAYMOND, S., Robert, Orem, US;
MILLETT, Troy, Lindon, US;
JANIS, Damon, Katy, US;
MARSH, J., Russell, Lindon, US;
MADDEN, E., Paul, Orem, US
Vertreter Betten & Resch, 80333 München
DE-Aktenzeichen 69904462
Vertragsstaaten DE, GB, IE
Sprache des Dokument EN
EP-Anmeldetag 30.04.1999
EP-Aktenzeichen 999215619
WO-Anmeldetag 30.04.1999
PCT-Aktenzeichen PCT/US99/09467
WO-Veröffentlichungsnummer 0099057641
WO-Veröffentlichungsdatum 11.11.1999
EP-Offenlegungsdatum 14.02.2001
EP date of grant 11.12.2002
Veröffentlichungstag im Patentblatt 02.10.2003
IPC-Hauptklasse G06F 12/00
IPC-Nebenklasse F42B 3/00   

Beschreibung[de]
HINWEIS AUF DAS URHEBERRECHT

Ein Teil der Offenbarung dieses Patentdokuments enthält Material, das Gegenstand des Schutzes durch das Urheberrecht ist. Der Eigentümer des Urheberrechts hat keinen Einwand gegen die Faksimilewiedergabe oder textliche Wiedergabe des Patentdokuments oder der Patentoffenbarung durch jedermann, wie sie in den offiziellen Patentakten oder -datensätzen des Patentamts erscheint, er behält sich aber ansonsten alle Rechte am Urheberrecht vor.

GEBIET DER ERFINDUNG

Die vorliegende Erfindung bezieht sich auf die Manipulationen wirklicher und simulierter Partitionen von Computer-Speichervorrichtungen und insbesondere auf die Verwendungen der Simulation, um zu unterstützen, mit Manipulationen an Computer-Plattenpartitionen, die Anwenderdaten enthalten, zu experimentieren, sie rückgängig zu machen und sie zu optimieren.

TECHNISCHER HINTERGRUND DER ERFINDUNG

Computer-Festplatten und andere Computer-Speichervorrichtungen halten digitale Daten, die Zahlen, Namen, Daten, Texte, Bilder, Ton und andere Informationen repräsentieren, die durch Unternehmen, Menschen, Regierungsvertretungen und andere verwendet werden. Um die Organisation der Daten zu unterstützen und aus technischen Gründen können die Computer die Daten in Laufwerke, Partitionen, Verzeichnisse und Dateien unterteilen. Die Begriffe "Datei" und "Verzeichnis" sind den meisten Computer-Anwendern bekannt, wobei die meisten Menschen ihrer Bedeutung zustimmen, selbst wenn die Einzelheiten der geschriebenen Definitionen abweichen.

Der Begriff "Partition" ist jedoch vielen Menschen nicht bekannt, während der Begriff "Laufwerk" verschiedene Bedeutungen besitzt, selbst wenn der Kontext auf Computer eingeschränkt ist. Eine "Partition", wie sie hier verwendet wird, ist ein Bereich in einer oder mehreren Speichervorrichtungen, der formatiert ist (oder formatiert werden kann), um eine oder mehrere Dateien oder eines oder mehrere Verzeichnisse zu enthalten. Sogenannte Typen der "IBM-kompatiblen Partitionen" enthalten erweiterte, logische und primäre Partitionen, wie durch Bitmerker oder andere Werte angezeigt ist. Allgemeiner ist jede formatierte Partition auf einen speziellen Typ des Dateisystems maßgeschneidert, wie z. B. das Macintosh- Dateisystem, das SunOS-Dateisystem, das Windows NT-Dateisystem ("NTFS"), das Netware-Dateisystem oder eines der MS-DOS/FAT-Dateisysteme (MACIN- TOSH ist eine Marke von Apple Computer, Inc.; SUNOS ist eine Marke von Sun Microsystems, Inc.; Windows NT und MS-DOS sind Marken der Microsoft Corporation; NETWARE ist eine Marke von Novell, Inc.). Ein Dateisystem muß nicht die Partition füllen, die es hält.

"Laufwerk" wird manchmal austauschbar mit "Partition" verwendet, insbesondere in Bezugnahmen auf das logische Laufwerk C: oder dergleichen in sogenannten Wintel-Maschinen oder IBM-kompatiblen Maschinen. "Laufwerk" kann sich aber außerdem auf eine einzelne physikalische Speichervorrichtung beziehen, wie z. B. eine magnetische Festplatte oder ein CD-ROM-Laufwerk. Um die Verwirrung zu verringern, wird "Laufwerk" normalerweise hier verwendet, um sich nur auf Speichervorrichtungen und nicht auf Partitionen zu beziehen. Es ist folglich richtig, anzumerken, daß eine Partition oft auf einem einzelnen Laufwerk steht, sie kann sich aber außerdem über Laufwerke spannen, wobei ein Laufwerk eine oder mehrere Partitionen halten kann.

Es ist oft nützlich, Partitionen zu manipulieren, indem sie erzeugt, gelöscht, verschoben, kopiert werden, ihre Größe geändert wird, die durch ihre Dateisysteme verwendete Clustergröße geändert wird und andere Operationen ausgeführt werden. Eine Anzahl von Werkzeugen für das Manipulieren der Partitionen ist kommerziell verfügbar, einschließlich des FDISK-Programms und des PartitionMagic®-Programms (PARTITIONMAGIC ist ein eingetragenes Warenzeichen der PowerQuest Corporation). Die Version 4.0 des PartitionMagic®-Programms, die im September 1998 öffentlich verfügbar wurde, implementiert die Aspekte der vorliegenden Erfindung. Die Partitionsmanipulation ist außerdem in den US- Patenten Nr. 5.675.769 und 5.706.472 (die im folgenden als die '769- bzw. '472- Patente bezeichnet sind) und in den US-Patenten 6108759, 5930831, 6253300, 6108697 im gemeinsamen Eigentum ausführlich erörtert.

Ein Windows NT-Plattenadministratorprogramm erlaubt dem Anwender, Partitionen im Prinzip in einer virtuellen Weise zu löschen oder zu erzeugen, seine Unterstützung für mehrere "virtuelle" Befehle ist jedoch eingeschränkt. Der Anwender kann eine Partition erzeugen, er muß aber die "Änderungen festlegen", bevor diese Partition formatiert werden kann. Das Formatieren einer Partition kann nur unmittelbar ausgeführt werden. Andere Programme, die Partitionen manipulieren, enthalten die Version 3.0 des PartitionMagic-Programms, eine oder mehrere Versionen eines Quarterdeck-Partition-It-Programms und eine oder mehrere Versionen von zwei Programmen von V Communication, die unter den Namen System Commander Deluxe und Partition Commander verkauft werden. Jedes dieser Programme zwingt im allgemeinen den Anwender, eine Partitionsmanipulation auf einmal auszuführen.

Fig. 1 veranschaulicht bekannte Zugänge zur Partitionsmanipulation. Ein Anwender 100 liefert Befehle an ein Hilfsprogramm 102, wie z. B. FDISK oder eine frühe Version (Version 3.0 oder früher) des PartitionMagic-Programms, oder ein anderes bekanntes Partitionsmanipulationswerkzeug. Der Anwender 100 empfängt außerdem Informationen vom Hilfsprogramm 102, wie z. B. den (die) Typ(en), den (die) Ort(e) und die Größe(n) der Partitionen und die Größe und den Ort des Bereichs (der Bereiche) freien Raums. Diese Informationen werden typischerweise durch eine graphische Anwenderschnittstelle ("GUI") bereitgestellt; eine geeignete GUI ist in Fig. 6 des US-Patents Nr. 5.675.769 veranschaulicht. In Fig. 1 liest und schreibt (mit in der Technik bekannten genauen semantischen und syntaktischen Einschränkungen) das Hilfsprogramm 102 eine in einem Computer- Speichermedium 106 gespeicherte Partitionstabelle 104. Das Speichermedium 106 kann z. B. eine oder mehrere Festplatten enthalten. Die Partitionstabelle 104 definiert die Position, die Größe und den Typ einer oder mehrerer Partitionen 108, die außerdem auf dem Speichermedium 106 stehen, wobei sie folglich ebenso einen oder mehrere Bereiche 110 freien Raumes definieren kann. Das Hilfsprogramm 102 liest und schreibt (abermals mit genauen Einschränkungen) außerdem die Dateisystem-Informationen und die Anwenderdaten, die in der (den) Partition(en) 108 gespeichert sind, die manipuliert wird (werden).

Obwohl das PartitionMagic-Programm und andere vor kurzem entwickelte Werkzeuge 102 die Manipulationen der Partitionen 108 leichter, schneller und sicherer machen, als es mit FDISK gewesen ist, gibt es immer noch Raum für Verbesserungen. Es würde z. B. hilfreich sein, das Experimentieren leichter zu machen, so daß die Anwender 100 leichter verschiedene Manipulationen versuchen und diejenigen auswählen können, die sie für die besten halten. Implizit enthält dies die Notwendigkeit, es leichter zu machen, eine Manipulation der Partition 108 rückgängig zu machen, falls dem Anwender 100 die Ergebnisse nicht gefallen. Die Programme 102 könnten außerdem mehr Unterstützung beim Kennzeichnen der Manipulationen der Partitionen 108 bereitstellen, dies wird die Leistung oder Speicherfähigkeit der Medien 106 für einen gegebenen Computer verbessern.

Eine Art, das Experimentieren zu unterstützen, besteht darin, die Verschiebungs- und Kopieroperationen der Partition 108 noch schneller als vorher zu machen. Dies kann z. B. ausgeführt werden, indem nur die Anwenderdaten verschoben werden, die verschoben werden müssen, wie z. B. im Anspruch 1 des oben gekennzeichneten 769-Patents beschrieben ist. Dieser allgemeine Zugang ist jedoch durch die Grenzen der Geschwindigkeit begrenzt, mit der die Speichervorrichtungen 106 die Daten des Anwenders verschieben können. Für zusätzliche Verbesserungen der Manipulationsgeschwindigkeit wird ein grundlegend anderer Zugang benötigt.

Eine weitere Art, das Experimentieren (zumindest in der Theorie) zu unterstützen, besteht darin, den Anwendern 100 eine Computer-Programm-Entwicklungsumgebung zu geben, um ihnen den Computer-Code für ein Programm 102 zu geben, das die Manipulationen implementiert, und sie ausreichend über die Partitionen 108, die Partitionstabellen 104, die Dateisysteme in den Partitionen, die Computer, die Programmierung und den Code zu unterrichten, um sie verschiedene Zugänge versuchen zu lassen. Ein kenntnisreicher Programmierer kann Abschnitte des Codes des Programms 102 "herauskommentieren" oder überspringen, die ansonsten die E/A der Platte 106 oder andere Operationen in einer gegebenen Situation ausführen würden, und dann die Date n Strukturen des Programms unter Verwendung eines Fehlersuchprogramms oder anderer Mittel zu aktualisieren, um die Ergebnisse der weggelassen Operationen nachzubilden, bevor das Programm 102 die Ausführung fortsetzt. In dieser Weise kann die Wirkung der verschiedenen Operationen im Programm 102 untersucht werden, ohne die Operationen notwendigerweise auszuführen.

Dieser Zugang besitzt jedoch einige ernste Nachteile, von denen die Forderung, daß die Anwender 100 eine große Menge komplexen technischen Wissens managen müssen, nicht die geringste ist. Die meisten Anwender 100 besitzen die für diesen Zugang erforderlichen technischen Werkzeuge nicht. Außerdem wollen die Anwender 100 ein durch ausgebildete Programmierer entwickeltes zuverlässiges Werkzeug, so daß das Werkzeug und nicht der Anwender die zugrundeliegenden technischen Einzelheiten managt. Die Tatsache, daß ein im hohen Grade kenntnisreicher Programmierer ein bestimmtes Ergebnis erreichen kann, indem er technische Modifikationen an einem Programm 102 vornimmt, ermöglicht nicht, daß die meisten Anwender 100 (oder sogar die meisten Programmierer) dieses Ergebnis erhalten. Dies gilt besonders, falls die notwendigen Programmodifikationen außerdem das Programm 102 für seine normale beabsichtigte Verwendung schwächen.

Kurzum, es sind Verbesserungen notwendig, um das Experimentieren zu fördern und die Technik der Partitionsmanipulation ansonsten zu fördern. Demzufolge sind im folgenden neue Systeme, Vorrichtungen, Signale und Verfahren für das Manipulieren von Partitionen offenbart und beansprucht.

KURZE ZUSAMMENFASSUNG DER ERFINDUNG

Die vorliegende Erfindung schafft Werkzeuge und Techniken für das Simulieren und Ausführen von Partitionsmanipulationen gemäß den Ansprüchen, die folgen. Durch die Verwendung des Simulators der Erfindung können die Anwender mit "Was-wäre-wenn-Szenarios" experimentieren und dann alle ihre verschiedenen Schritte zusammen "stapeln". Vor der Erfindung war die Partitionierung ein schrittweiser Prozeß, weil jede Änderung an der Platte angewendet werden mußte, bevor zusätzliche Änderungen ausgeführt werden konnten. Die Erfindung beschleunigt den Partitionierungsprozeß, dies erlaubt den Anwendern, die Partitionen zu manipulieren, um die gewünschte Partitionsstruktur zu bestimmen, bevor die Änderungen wirklich angewendet werden. Die Anwender können nun mehrere Befehle speichern und sie in einem einzelnen Stapel ausführen. Dies unterstützt die Anwender, zu experimentieren, indem die Ergebnisse virtueller Manipulationen den Anwendern schnell verfügbar gemacht werden. Die Stapelung erlaubt außerdem die Partitionsmanipulation mittels ausgedehnter Operationen an der wirklichen Platte, ohne zu erfordern, daß ein Anwender anwesend ist, um die Operationen zu überwachen oder den nächsten Befehl einzugeben.

Ein Aspekt der Erfindung ist eine virtuelle Maschinenumgebung, die die Simulation der Partitionsmanipulationen erlaubt, um ihre Wirkungen zu bestimmen, bevor sie wirklich ausgeführt werden. Die virtuelle Maschinenumgebung enthält Objekte, die die Festplattenstrukturen einer derartigen Weise repräsentieren, daß sie in mehreren Operationen manipuliert werden können, wobei sie die Informationen beibehalten, die notwendig sind, um die Berechnungen auszuführen, um die Grenzen der wirklichen Partitionen zu bestimmen. Die virtuelle Maschine wird außerdem durch einen Stapel-Manager unterstützt, der die durch die virtuelle Maschine erzeugten Befehle, die die in der (den) physikalischen Vorrichtung(en) auszuführenden Operationen darstellen, speichert und anders managt.

Die virtuelle Maschine besitzt die Fähigkeit, mehrere Operationen auf der gleichen Partition oder auf irgendeiner Anzahl von Partitionen auf der Festplatte zu modellieren. Die virtuelle Maschinenumgebung kann von den Strukturen der Platte initialisiert werden. Die Operationen, die der Anwender virtuell ausführen kann, enthalten das Verschieben, das Ändern der Größe, das Erzeugen, das Löschen, das Ändern der FAT-Eigenschaften (Clustergröße, Wurzelverzeichniseinträge), das Umwandeln der Partitionen von FAT in FAT32, NTFS, HPFS oder von FAT32 in FAT, das Setzen der Partition als aktiv, das Verbergen/Aufheben des Verbergens der Partition, das Formatieren und das erneute Absuchen nach schlechten Sektoren. Mit einer Ausführungsform der Erfindung können die Anwender: die Partitionsstrukturen für jede der Platten in einem Computer virtuell manipulieren, ohne den Zustand der Platte zu ändern; eine Liste der Befehle erzeugen, um alle durch den Anwender angeforderten Operationen ohne weiteren Eingriff des Anwenders auszuführen; die physikalischen Attribute der virtuellen Partitionen durch mehrere virtuelle Operationen beibehalten, einschließlich der gesamten Dateien und Verzeichnisse, der Clustergröße, des verwendeten Raumes, des freien Raumes, des verschwendeten Raumes und der Dateisystem-Parameter; und die Operationen vordem Festlegen der Änderungen rückgängig machen.

Eine Ausführungsform der Erfindung hilft, unnötige Neu-Boot-Vorgänge zu beseitigen, wobei sie außerdem die Notwendigkeit beseitigt, nach jeder Partitionsmanipulation neu zu booten. Eine Ausführungsform schafft die automatische Handhabung erweiterter Partitionen, da sie eine primäre Partition aus dem freien Raum herstellen kann, der innerhalb der erweiterten Partition steht, oder eine logische Partition aus dem freien Raum herstellen kann, der außerhalb der erweiterten Partition steht. Außerdem läßt die Erfindung zu, daß die Anwender ein Laufwerk schreibgeschützt machen, so daß keine Änderungen an den Partitionen auf diesem Laufwerk vorgenommen werden können. Die Erfindung läßt außerdem zu, daß die Anwender eine Liste anwendermodifizierbarer Befehle aus einer Liste der virtuellen Operationen und umgekehrt erzeugen.

Durch die Erfindung sind Assistenten verfügbar, um die Anwender zu unterstüt zen, freien Raum auf einem Laufwerk und innerhalb von Partitionen durch die Verringerung der Clustergrößen und/oder das Umwandeln in effizientere Dateisysteme zu optimieren, und um Verschiebungs- und Größenänderungsoperationen zu optimieren, um eine minimale Menge notwendiger Datenverschiebung auszuführen. Eine graphische oder andere Anwenderschnittstelle zeigt den Zustand der Platte davor und danach, bevor der Anwender die durch den Assistenten vorgeschlagenen Änderungen festlegt. Der Assistent kann außerdem basierend auf einem ausgewählten Betriebssystem die optimale Partitionsgröße bestimmen oder den Anwender die optimale Größe einstellen lassen.

Einige Assistenten-Ausführungsformen fügen automatisch Partitionen zu einem Boot-Manager hinzu, erzeugen die Partition und verschieben andere Partitionen, um Raum für die neue Partition zu schaffen. Einige Ausführungsformen verringern die Clustergröße automatisch oder wandeln die Partition in ein neues Dateisystem um, um verschwendeten Raum zurückzugewinnen. Allgemeiner analysieren die Assistenten die Platten konfigu ration des Anwenders und empfehlen Wege, um die Platte effizienter zu verwenden. Der Anwender kann außerdem Partitionseinschränkungen setzen, wie z. B. Einschränkungen, ob eine gegebene Partition verschoben werden kann oder ob ihre Größe geändert werden kann, wobei er eine minimale Größe festlegen kann, auf die die Größe der Partition geändert werden kann. Dadurch werden dem Algorithmus Einschränkungen auferlegt, die die Änderungen an den Partitionen bestimmt, wenn eine neue Partition erzeugt wird, der freie Raum neu ausgeglichen wird oder verschwendeter Raum zurückgewonnen wird und ein neues Betriebssystem vorbereitet wird. Die Erfindung stellt die logischen Partitionen und/oder die primären Partitionen ein, um Raum für die Partition eines neuen Betriebssystems zu schaffen, wobei sie die vorhandenen Partitionen gerade genug verkleinert, um für die mit dem Assistenten erzeugten neuen Partitionen Raum zu schaffen. Die Erfindung erzeugt außerdem basierend auf dem Kontext des Assistentenbetriebs eine primäre oder eine logische Partition.

Ein Stapel-Manager optimiert optional die Liste der Befehle für die Partitionsmanipulation, indem er redundante Operationen (Verschiebungen, Erzeugungen, Löschungen usw. von Partitionen) beseitigt. Der Stapel-Manager hält (auf der Platte) eine ständige Liste der Befehle, die die virtuellen Operationen repräsentieren. Er überprüft außerdem die Konsistenz der Partition, bevor irgendwelche Änderungen ausgeführt werden, wobei er durch die Beseitigung unnötiger Über prüfungen zwischen den Befehlen eine Optimierung ausführt. Andere Merkmale und Vorteile der vorliegenden Erfindung werden durch die folgende Beschreibung vollständiger offensichtlich.

KURZBESCHREIBUNG DER ZEICHNUNG

Um die Weise zu veranschaulichen, in der die Vorteile und Merkmale der Erfindung erhalten werden, wird unter Bezugnahme auf die beigefügte Zeichnung eine ausführlichere Beschreibung der Erfindung gegeben. Diese Zeichnung veranschaulicht nur ausgewählte Aspekte der Erfindung, wobei sie folglich den Umfang der Erfindung nicht einschränkt. In der Zeichnung ist:

Fig. 1 eine Darstellung, die einen herkömmlichen Zugang zur Partitionsmanipulation veranschaulicht.

Fig. 2 ist eine Darstellung, die die Werkzeuge und Techniken für die Partitionsmanipulation gemäß der vorliegenden Erfindung veranschaulicht, die eine virtuelle Maschinenumgebung, einen Stapel-Manager, eine "reale Maschine", die die Partitionsmanipulationen ausführt, und andere Elemente enthalten.

Fig. 3 ist eine Darstellung, die eines von vielen möglichen Computer-Netzen veranschaulicht, die für die Verwendung in Fern-Partitionsmanipulationen gemäß der vorliegenden Erfindung geeignet sind.

Fig. 4 ist eine Darstellung, die die virtuelle Maschinenumgebung nach Fig. 2 weiter veranschaulicht.

Fig. 5 ist ein Ablaufplan, der die Verfahren der vorliegenden Erfindung veranschaulicht.

Fig. 6 ist eine Darstellung, die ein virtuelles Partitionssignal gemäß der vorliegenden Erfindung veranschaulicht.

Fig. 7 ist eine Darstellung, die die Partitionsmanipulationen veranschaulicht, die den freien Raum innerhalb einer erweiterten Partition und einer zweiten Partition außerhalb der erweiterten Partition umfassen, die ausgeführt werden, um die zweite Partition zu modifizieren, nachdem etwas des freien Raumes aus der erweiterten Partition verschoben worden ist.

Fig. 8 ist eine Darstellung, die die Partitionsmanipulationen veranschaulicht, die den freien Raum innerhalb einer erweiterten Partition und einer zweiten Partition außerhalb der erweiterten Partition umfassen, die ausgeführt werden, um wenigstens die zweite Partition in das Innere der erweiterten Partition zu bringen.

AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN

Die vorliegende Erfindung bezieht sich auf Computer-Systeme, Verfahren, Signale und konfigurierte Speichermedien für das Manipulieren von Partitionen. Insbesondere schafft die Erfindung Werkzeuge und Techniken, die den Anwendern erlauben, Partitionsmanipulationen in einer virtuellen Maschinenumgebung zu simulieren und, sobald die gewünschten Befehle gekennzeichnet sind, die Manipulationen auf Live-Partitionen auf der Platte anzuwenden. Die virtuelle Maschinenumgebung gibt den Anwendern die Freiheit, mit verschiedenen Partitionsmanipulationen zu experimentieren, ohne den Zusatzaufwand (der durch unnötige wirkliche Manipulationen erlitten wird) der früheren Zugänge zu erfordern, und ohne zu erfordern, das Laienanwender Experten in der zugrundeliegenden Technologie werden.

Einige Definitionen

Für die Zweckmäßigkeit sind hier einige der in diesem Dokument verwendeten Begriffe definiert. Diese Definitionen müssen jedoch im Zusammenhang des vollständigen Dokuments betrachtet werden, wobei andere Begriffe durch die im ganzen Dokument angegebenen Beispiele definiert werden.

Das Wort "Anwender" ist in der technischen Literatur oder anderen Erörterungen auf menschliche Anwender eines Computer-Systems eingeschränkt. In diesem Dokument enthält "Anwender" jedoch menschliche Anwender und/oder Computer- Prozesse, die im Interesse menschlicher Anwender wirken.

"Speicher" wird gelegentlich in der Industrie verwendet, um sowohl internen Speicher als auch Langezeitspeicher zu bezeichnen. In diesem Dokument bezieht sich Speicher auf den internen Speicher, der typischerweise verwendet wird, um Programmcode und Daten zu halten, während das Programm ausgeführt wird. Verwandte aber verschiedene Elemente enthalten "Laufwerke", die im technischen Hintergrund erklärt sind, und "Speichervorrichtungen", die Langzeitspeicher bereitstellen, der verwendet wird, um Programme, Anwenderdaten und Systemdaten zu halten, ungeachtet ob sie in einem gegenwärtig ausgeführten Programm verwendet werden. Der Speicher ist typischerweise RAM (Schreib-Lese-Speicher), während bekannte Speichervorrichtungen Magnetplatten und optische Speichermedien enthalten. Der Speicher ist oft flüchtig, während die Speichervorrichtungen dies nicht sind, der Speicher kann aber nichtflüchtige Medien enthalten, wie z. B. ROM (Festwertspeicher), batteriegesicherten RAM und Flash-Speicher.

Die Wörter "Befehl" und "Operation" werden manchmal in der Industrie als Synonyme verwendet, in diesem Dokument sind aber die "Befehle" die Handlungen auf der Ebene der Anwenderschnittstelle, während die "Operationen" feinkörniger sind, wobei sie im allgemeinen intern in einer Weise verwendet werden, die für die Anwender nicht notwendigerweise sichtbar (oder von direktem Interesse) ist. Ein Befehl kann mehreren Operationen entsprechen, wie ein Befehl "installiere ein Windows NT-Betriebssystem" einer Verschiebungs- oder Größenänderungsoperation, einer Erzeugungsoperation, einer Formatierungsoperation usw. entspricht. In einigen Fällen kann es zwischen einem Befehl und einer Operation eine Eins-zu-eins-Entsprechung geben, wie bei einem Befehl, um eine spezifische Datei zu löschen.

Die "Simulation" einer Partition 108 oder eines Laufwerks, das ein Speichermedium 106 bereitstellt, geschieht in einem Computer. Die Simulation erfordert ein Modell, wie z. B. eine virtuelle Partition oder ein virtuelles Laufwerk, der Live- Partition 108 oder des Live-Laufwerks, die bzw. das simuliert wird. Eine reine Liste von Befehlen oder Operationen allein ist keine Simulation. Wenn ein Programm 102 (mit oder ohne Zugriff auf den Quellcode), das geschrieben worden ist, um Manipulationen an Live-Partitionen auszuführen, modifiziert wird, die Platten-E/A vorübergehend gesperrt wird und die Ergebnisse dieser E/A durch das Einfügen von Zahlen (z. B. mit einem Fehlersuchprogramm) nachgebildet werden, bevor die Fortsetzung der Ausführung erlaubt wird, ist das auch keine Simulation. Diese unterscheidet sich von der Simulation insofern, als sie (a) die Manipulationsfähigkeit an Live-Partitionen sperrt, die vermutlich die Hauptaufgabe des Programms ist, und (b) für normale Anwender 100 nicht verfügbar ist, weil ihnen der Quellcode und/oder das Fehlersuchprogramm und/oder die Kenntnis des Programms 102 und/oder die Kenntnis der technischen Einzelheiten der Partitionen 108 und Partitionstabellen 104 fehlt.

Die "Replikation" enthält das Kopieren oder Verschieben einer Partition 108. Das "Umbenennen" enthält das Ändern einer Laufwerkskennung oder das Ändern eines Datenträgerkennsatzes. Der "verborgene Status" einer Partition 108 spezifiziert, ob die Partition verborgen ist. Der "aktive Status" einer Partition spezifiziert, ob die Partition aktiv ist. Nur eine Partition in irgendeiner gegebenen physikalischen Speichervorrichtung kann auf einmal aktiv sein; die aktive Partition ist die bootfähige Partition, von der das Betriebssystem initialisiert wird. Die Replikation, die Änderung der Clustergröße und die Umwandlung des Typs des Dateisystems nehmen an, daß die Partition formatiert worden ist; alle anderen Operationen nehmen eine vorhergehende Formatierung nicht an.

Überblick über die Architektur

Ein technologischer Vorgänger der vorliegenden Erfindung ist das Partitionsmanipulationsprogramm PartitionMagic® 3.0, das von der PowerQuest Corporation, Orem, Utah ("PM 3.0") kommerziell verfügbar ist. Wie viele andere Partitionsmanipulationswerkzeuge 102 kann PM 3.0 als zwei Teile besitzend betrachtet werden, nämlich eine Anwenderschnittstelle und eine Maschine, wobei die Anwenderschnittstelle auf der Oberfläche der Maschine (d. h. näher am Anwender 100 als die Maschine) steht.

Im Gegensatz enthält, wie in Fig. 2 gezeigt ist, eine Ausführungsformen der vorliegenden Erfindung eine Anwenderschnittstelle 200 (die eine plattformspezifische Anwenderschnittstelle 202 und eine gemeinsame Anwenderschnittstelle 204 enthält, die im folgenden erörtert sind), eine virtuelle Maschinenumgebung 206, einen Stapel-Manager 208, eine "reale Maschine" 210 und einen oder mehrere Assistenten 212. Diese Komponenten und ihre entsprechenden Verfahren und Signale sind im folgenden ausführlicher erörtert.

Die virtuelle Maschinenumgebung

Die virtuelle Maschinenumgebung 206 erlaubt den Anwendern 100, die Wirkungen der Manipulationen an den Partitionen 108 zu simulieren, ohne sie notwendigerweise selbst durch das wirkliche Ausführen der Manipulationen auf der Platte 106 festzulegen. Sobald eine gewünschte Folge von Befehlen durch den Anwender 100 gekennzeichnet ist, erzeugt der Stapel-Manager 208 eine entsprechende Folge von Operationen und speist sie in die reale Maschine 210 ein, die die Manipulationen am Speichermedium 106 wirklich ausführt. Folglich können die Anwender 100 die wahrscheinlichen Ergebnisse der verschiedenen Befehlsfolgen untersuchen, ohne darauf zu warten, daß jede Befehlsfolge auf der Platte wirklich ausgeführt wird. Außerdem können die technischen Einzelheiten durch die virtuelle Maschinenumgebung 206, den Stapel-Manager 208 und die reale Maschine 210 gemanagt werden, so daß die Anwender 100 keine technischen Experten sein müssen, um die Partitionen 108 sicher und effizient zu manipulieren.

Die virtuelle Maschinenumgebung 206 enthält eine virtuelle Maschine 400 und Unterstützungsstrukturen, wie z. B. virtuelle Platenlaufwerke 402 und virtuelle Partitionen 404. Die virtuelle Maschine 400 wirkt auf virtuelle Strukturen, um die Wirkungen der entsprechenden Operationen durch die reale Maschine 210 auf das reale Speichermedium 106 und seine Inhalte, einschließlich der realen Partitionstabelle 104 und der realen Partitionen 108, zu simulieren. Die realen Strukturen der Platte werden hierin außerdem als "Live"-Strukturen bezeichnet, z. B. Live-Partitionen 108. Die virtuelle Maschinenumgebung 206 ist im Zusammenhang mit Fig. 4 und anderswo hierin weiter erörtert.

Die Anwenderschnittstelle

Die Module der plattformspezifischen Anwenderschnittstelle ("PSUI") 202 und der gemeinsamen Anwenderschnittstelle ("CUI") 204 können so implementiert sein, daß sich die PSUI 202 lokal auf jeden Client in einem Netz befindet, daß sich die CUI 204 auf einem Server befindet, und daß die Clients und Server über eine Kommunikationsverbindung kommunizieren. Dies erlaubt einer Live-Maschine 210 und/oder einem Paar aus einer Live-Maschine 210 und einer virtuellen Maschine 400, mehreren Clients zu dienen, selbst wenn jeder Client eine andere Plattform verwendet. Ein Client könnte z. B. ein plattenloser Knoten sein, der LINUX ausführt, während ein anderer ein Arbeitsplatzrechner mit einer lokalen Platte ist, der ein Windows-Markenbetriebssystem ausführt. Es können Schnittstellenmodule, wie z. B. Java-Maschinen und/oder Computer-Netzmodule (Software und Hardware) hinzugefügt werden, um die PSUIs 202 und die CUI 204 zu verbinden. Es wird angemerkt, daß plattenlose Knoten keine lokalen Platten und folglich keine lokalen Live-Partitionen besitzen, wobei sie nichtsdestoweniger als Simulationsplattformen verwendet werden können, um virtuelle Partitionsmanipulationen auszuführen.

Die plattformspezifische Anwenderschnittstelle 202 ist für Windows NT, Windows 95, Windows 98, Windows 2000, DOS TTY, Linux oder andere textorientierte oder graphische Anwenderschnittstellenumgebungen maßgeschneidert (WINDOWS NT, WINDOWS 95 und WINDOWS 98 sind Marken der Microsoft Corporation). Die gemeinsame Anwenderschnittstelle 204 enthält die Strukturen und Funktionen der Anwenderschnittstelle, die zwei oder mehr Plattformen gemeinsam sind. In alternativen Ausführungsformen ist die gemeinsame Anwenderschnittstelle 204 weggelassen, so daß nur eine Version der plattformspezifischen Schnittstelle 202 vorhanden ist. Die Anwenderschnittstellen sind im allgemeinen in der Technik wohlbekannt, aber einiges der durch die Anwenderschnittstelle 200 gebotenen Funktionalität ist für die vorliegende Erfindung spezifisch, wie z. B. die Fähigkeit, mit einer virtuellen Maschinenumgebung 206 eine Schnittstelle zu bilden, und die Fähigkeit, virtuelle Maschinenoperationen festzulegen, indem sie für die Ausführung zu einer realen Maschine 210 weitergeleitet werden.

Die CUI-Schicht 204 kann als eine höhere Anwendungsprogramm-Schnittstelle ("API") mit der virtuellen Maschine 400 implementiert sein. Die CUI 204 macht die Verwendung der virtuellen Maschine 400 für mehrere Schnittstellen (Text/tty, GUI, Script-Verarbeitung, ...) leichter und sorgt ebenfalls für Fernfähigkeits-Vorteile. In einer Ausführungsform enthält die CUI-Schicht 204 eine Menge von Klassen, von denen jede eine spezifische Operation betrifft, wie z. B. das Löschen einer Partition, das Erzeugen einer Partition usw. Diese Klassen kapseln fast die ganze Funktionalität ein, die durch eine Schnittstelle benötigt wird, aber durch die Partitionsmanipulationsabschnitte der virtuellen Maschinenumgebung 206 nicht bereitgestellt wird. Wenn z. B. eine Partition gelöscht wird, zeigt die Schnittstelle 200 die aktuelle Kennung an, wobei der Anwender 100 das Löschen der Partition durch das Eingeben der Kennung und das Verifizieren, daß sie richtig ist, bestätigen muß. Die Klasse der CUI 204 für die Löschoperation scharrt eine API, um die Kennung zu erhalten, wobei sie die Verifikation der Kennung vor dem Aufrufen in der virtuellen Maschine 400, um die Partitionen zu löschen, abwickelt. Die CUI- Schicht 204 schafft außerdem APIs, die sich mehr im Kontext des Anwenders als im Kontext der Maschine befinden, wie z. B. das Erhalten der Größeninformationen über eine Partition in Megabytes anstatt in einer Anzahl der Sektoren.

Eine der Schlüsselentwicklungsregeln der CUI-Schicht 204 besteht darin, daß sie die Anwender 100 von den zugrundeliegenden Strukturen und der Komplexität der virtuellen Maschinenumgebung 206 abschirmt. Die Zeiger auf die Strukturen der Umgebung 206 werden z. B. in der API der CUI-Schicht 204 selten verwendet. Im allgemeinen werden nur die grundlegendsten Typen verwendet (int, double, char usw.). Dies ist beim Fernzugriff auf die Schnittstelle besonders wichtig und nützlich.

Es wird z. B. die Aufgabe betrachtet, die Kennung der Partition 404 zu erhalten. Um dies auszuführen, benötigt die virtuelle Maschine 400 zuerst einen Zeiger auf eine Struktur der Partition 404 oder des Datenträgers; dies könnte durch einen Zeiger auf das Laufwerksobjekt 402 erhalten werden, der aus der Umgebung 206 erhalten wird. Das System könnte dann eine GetLabel-Funktion im FileSystem- Objekt 408 der Partition 404 aufrufen: vol → GetFileSystem() → GetLabel(). Die Klassen der CUI 204 Kapsel die Auswahl einer spezifischen Partition ein und bieten eine GetLabelQ-Funktion. Der Anwender 100 muß keine Kenntnis über das Dateisystem-Objekt oder sogar ein Datenträger/Partitions-Objekt besitzen. Die Datenträger oder Partitionen werden unter Verwendung eines ganzzahligen Indexwertes ausgewählt. Diese Einkapselung erlaubt außerdem, daß der plattformspezifische Anwenderschnittstellenabschnitt 202 des Codes viel kleiner ist, weil alle durch die verschiedenen Schnittstellen verwendete gemeinsame Funktionalität an einem Platz steht.

Ein weiterer Vorteil der Verwendung der Grundtypen ist die Leichtigkeit der Fernverwendung der Schnittstelle 200. Mit den Klassen der CUI 204 wird es sehr leicht, eine COM-Schnittstelle (Schnittstelle des Komponentenobjektmodells von Microsoft) ohne Sorgen über Aufstellungsangelegenheiten (die IDispatch-Schnittstelle kann verwendet werden) über die CUI 204 zu legen. Die plattformspezifische Anwenderschnittstelle 202 kann dann in der gleichen Maschine oder einer anderen Maschine unter Verwendung des DCOM (des verteilten COM) stehen. Es ist außerdem für den entfernten Anwender leichter, wenn er mit anderen Sprachen als C++ arbeitet, weil es leichter ist, für Sprachen, wie z. B. Java, Umhüllungen um die CUI 204 (und folglich die virtuelle Maschine 400) zu schreiben.

Die Assistenten

Ein Assistent 212 ist im wesentlichen ein Werkzeug, das Fragen stellt und eine Liste von häufigen Antworten bereitstellt, aus denen der Anwender 100 auswählen kann. Die gewählten Antworten werden dann verwendet, um die erbetene Funktion zu automatisieren.

Ein Anfängeranwender, wie z. B. der Anwender A in Fig. 2, kann durch häufige Partitionsmanipulationen durch ein oder mehrere Assistenten-Hilfsprogramme oder -Lernprogramme geführt werden. Erfahrenere Anwender, wie z. B. der Anwender B, können die Assistenten 212 umgehen und direkt auf die Anwenderschnittstelle 200 zugreifen. Assistenten und Lernprogramme sind im allgemeinen in der Technik wohlbekannt, wobei sie aber im Kontext der vorliegenden Erfindung neuartig sind.

Der Stapel-Manager

Die virtuelle Maschine 400 wird durch den Stapel-Manager 208 unterstützt, der die durch die virtuelle Maschine 400 erzeugten Befehle speichert. Diese Befehle stellen die in der (den) physikalischen Vorrichtung(en) 106 auszuführenden Operationen dar. In einigen Ausführungsformen kann der Stapel-Manager 208 die Listen der gespeicherten Befehle optimieren, um die Zeit oder den Aufwand, die bzw. der von der realen Maschine 210 benötigt würde, um die Befehlsliste auszuführen, zu verringern. Bevor der realen Maschine 210 erlaubt wird, eine Befehlsliste auszuführen, sichert der Stapel-Manager 208 außerdem, daß sich die reale Platte 106 in dem gleichen Zustand befindet, indem sie sich befunden hat, als die Befehlsliste in der virtuellen Maschinenumgebung 206 erzeugt worden ist, so daß die Anwenderdaten nicht beschädigt oder zerstört werden (ausgenommen, der Anwender hat z. B. die Dateilöschung angefordert).

Während der Anstrengungen, die schließlich zur vorliegenden Erfindung geführt haben, wurde der Versuch unternommen, die "Stapelung" oder eine Liste mehrerer in einer realen Maschine auszuführender Befehle ohne eine getrennte virtuelle Maschinenumgebung 206 zu unterstützen. Das Modifizieren der realen Maschine in einer Ad-hoc-Weise, um die Stapelung in ihr zu implementieren, verursachte jedoch Verwirrung, die sich aus mehreren Codepfaden und anderen Problemen ergeben hat. Im Gegensatz kann die virtuelle Darstellung 400 der realen Maschine 210 unabhängig von den wirklichen Operationen und den realen Maschinenstrukturen auf der physikalischen Platte 106 verwendet werden, wobei sie die anderen hierin erörterten Vorteile bereitstellt.

Die reale Maschine

Die reale Maschine 210 führt die Manipulationen an den Partitionen 108 auf dem Speichermedium 106 aus. Die reale Maschine 210 kann eine neuartige Maschine sein. Die reale Maschine 210 könnte z. B. mit der virtuellen Maschinenumgebung 206 und/oder dem Stapel-Manager 208 eng integriert sein. Die reale Maschine 210 könnte außerdem neuartig in dem Sinn sein, daß sie die Merkmale implementiert, die in einer oder mehreren der oben gekennzeichneten gleichzeitig anhängigen Patentanmeldungen im gemeinsamen Eigentum beansprucht sind. Die reale Maschine 210 könnte jedoch außerdem ein herkömmliches Hilfsprogramm 102 sein, vielleicht mit unbedeutenden Modifikationen, um außer dem Akzeptieren (oder anstelle des Akzeptierens) der Befehle direkt von den Anwendern 100 die Befehle vom Stapel-Manager 208 zu akzeptieren. Die Maschine PM 3.0 ist z. B. ein Beispiel einer realen Maschine 210, die die Manipulationen an den Partitionen 108 auf der Festplatte oder einer anderen Speichel-Vorrichtung 106 ausführt.

Computer und Netze im allgemeinen

Fig. 3 veranschaulicht ein Netz 300, das eines von vielen möglichen Netzen ist, das für die Anpassung und Verwendung gemäß der vorliegenden Erfindung geeignet ist. Das Netz 300 kann durch ein Gateway oder einen ähnlichen Mechanismus mit anderen Netzen 302 verbindbar sein, einschließlich LANs oder WANs oder Teilen des Internets oder eines Intranets, und dadurch ein größeres Netz bilden, das außerdem für die Verwendung gemäß der Erfindung geeignet ist.

Das veranschaulichte Netz 300 enthält einen Server 304, der durch Kommunikationsverbindungen oder Netzsignalleitungen 306 mit einem oder mehreren Netz- Clients 308 verbunden ist. Andere geeignete Netze enthaltenen Multi-Server- Netze und Netze zwischen gleichrangigen Stationen. Der (die) Server 304 und der (die) Client(s) 308 in einem speziellen Netz gemäß der Erfindung können Maschinen mit einem Prozessor, mit mehreren Prozessoren oder mit in einem Cluster angeordneten Prozessoren sein. Der (die) Server 304 und der (die) Client(s) 308 enthalten jeder ein adressierbares Speichermedium, wie z. B. einen Schreib-Lese- Speicher.

Geeignete Netz-Clients 308 enthalten ohne Einschränkung Personal-Computer, Laptops 310, persönliche digitale Assistenten und andere mobile Vorrichtungen; und Arbeitsplatzrechner 312. Die Signalleitungen 304 können verdrillte Adernpaare, Koaxialkabel oder Lichtwellenleiterkabel, Telephonleitungen, Satelliten, Mikrowellenverbindungen, modulierte Wechselstrom-Leistungsleitungen, HF- Verbindungen, eine Netzverbindung, eine Wählleitung, eine portable Verbindung, wie z. B. eine Infrarotverbindung, und/oder andere Datenübertragungs-"Drähte" oder Kommunikationsverbindungen, die den Fachleuten auf dem Gebiet bekannt sind, enthalten. Die Verbindungen 306 können herkömmliche oder neuartige Signale darstellen, wobei sie insbesondere eine neuartige Folge von Befehlen und/oder Datenstrukturen in einer virtuellen Maschinenumgebung 206 darstellen können, wie hierin erörtert ist.

Der (die) Server 304 und/oder der (die) Client(s) 308 können ein nichtflüchtiges Programmspeichermedium enthalten, wie z. B. eine magnetische oder optische Platte, einen ROM, einen Blasenspeicher oder einen Flash-Speicher. Das Programmspeichermedium kann Teil des gleichen Speichermediums 106 sein, das die Partitionsstrukturen 104, 108 hält, oder es kann ein separates Medium sein. Das heißt, ein Computer-Programm gemäß Erfindung kann vom Speichermedium 106 ausgeführt werden, das das Programm manipuliert, oder das Programm kann von einem Medium ausgeführt werden und die Partitionen 108 auf einem anderen Medium oder beides manipulieren. Ein geeignetes Programmspeichermedium enthält eine magnetische, optische oder andere computerlesbare Speichervorrichtung, die eine spezifische physikalische Konfiguration besitzt. Geeignete Speichervorrichtungen enthalten Disketten, Festplatten, Bänder, CD-ROMs, PROMs, Schreib-Lese-Speicher, ROM, Flash-Speicher und andere Computersystem-Speichervorrichtungen, die gemäß der vorliegenden Erfindung konfiguriert sind.

Die physikalische Konfiguration repräsentiert Daten und/oder Befehle, die das Computer-System 300 veranlassen, in einer spezifischen und vorgegebenen Weise zu arbeiten, wie hierin beschrieben ist. Folglich verkörpert das Programmspeichermedium greifbar ein Programm, die Daten, die Funktionen und/oder die Befehle, die durch die Server und/oder die anderen Computer ausführbar sind, um eine virtuelle Maschinenumgebung 206 zu schaffen und/oder zu verwenden, die im wesentlichen hierin beschrieben ist. Geeignete Software- und Hardware- Implementierungen gemäß der Erfindung werden durch die Fachleute auf dem Gebiet unter Verwendung der hier dargestellten Lehren und von Programmiersprachen und -Werkzeugen, wie z. B. Java, Pascal, C++, C, Assembler, Firmware, Mikrocode, PROMS und/oder anderen Sprachen, Schaltungen oder Werkzeugen, leicht geschaffen.

Wenn mehrere Computer im System 300 verwendet werden, schafft die gemeinsame Anwenderschnittstelle 204 optionale aber im allgemeinen positive Vorteile. Die Befehle können z. B. von einem ersten Computer, z. B. dem Server 304, über eine Verbindung 306 zu einer Maschine in einem entfernten zweiten Computer, z. B. einem oder mehreren der Clients 308, gesendet werden. Der Server 304 und der Client 308 können mit wenigstens einer entsprechenden plattformspezifischen Anwenderschnittstelle ·202 auf dem Server 304 und wenigstens einer Instanz der gemeinsamen Anwenderschnittstelle 204 auf dem Client 308 verschiedene Plattformen bereitstellen, z. B. Linux auf den Server 304 und Windows 95 auf dem Client 308. In einer Konfiguration steht die verwendete virtuelle Maschinenumgebung 206 auf dem Server 304, während die reale Maschine 210, die schließlich die Befehle vom Server 304 ausführen kann, auf dem Client 308 steht, dessen Partitionen(en) 108 manipuliert werden. In einer weiteren Konfiguration kommuniziert die plattformspezifische Anwenderschnittstelle 202 im Server 304 über eine Verbindung 306 mit einer Instanz der gemeinsamen Anwenderschnittstelle 204 und folglich mit einer virtuellen Maschinenumgebung 206 im Client 308; die reale Maschine 210, die schließlich die Befehle vom Server 304 ausführen kann, steht gleichermaßen im Client 308.

Die virtuelle Maschinenumgebung

Fig. 4 veranschaulicht ferner die virtuelle Maschinenumgebung 206. Die Erörterung dieser Figur beginnt mit einem Überblick über die beteiligte Funktionalität der Komponenten und die strukturellen Beziehungen der Komponenten, wobei sie dann ausführlicher zu den einzelnen Komponenten übergeht.

Die virtuelle Maschinenumgebung 206 erlaubt den Anwendern, die Ergebnisse der verschiedenen Partitionsbefehle zu simulieren, ohne notwendigerweise diese Befehle durch Manipulationen an Live-Partitionen auszuführen, wobei sie dadurch die Untersuchung alternativer Plattenorganisationen erleichtert und unterstützt.

Die bei 400 gezeigte virtuelle Maschine ist eine Darstellung der "realen" Software- Maschine 210, die unabhängig von wirklichen Operationen an der physikalischen Platte oder einem anderen Medium 106 verwendet werden kann.

Wie die "virtuelle Partition" hier verwendet wird, ist ein Modell einer Partition 108 gemeint, das während der Verwendung typischerweise im Speicher gehalten wird. Im Gegensatz meint "Live-Partition" die wirkliche Partition 108 in der Speichervorrichtung 106. Das Ändern einer virtuellen Partition 404 ändert nicht notwendigerweise die entsprechende Live-Partition 108 und umgekehrt. Das Wort "Ausführen", wie es hier verwendet wird, bedeutet das Arbeiten an einer Live-Partition 108 in der Speichervorrichtung 106 im Gegensatz zu einer virtuellen Operation an einer virtuellen Partition 404.

Wie in Fig. 4 gezeigt ist, enthält die virtuelle Maschinenumgebung 206 eine Menge von Objekten, die in einem Speicher gespeichert sind, die die Strukturen der Festplatte 106 in einer derartigen Weise darstellen, daß mehrere Operationen simuliert werden können, wobei das virtuelle Endergebnis das "gleiche" ist, als ob die Befehle an den realen Strukturen ausgeführt worden wären. Die Informationen werden in den Objekten der virtuellen Partitionen gehalten, um zu erlauben, daß die virtuelle Partition 404 virtuell verschoben und ihre Größe virtuell geändert werden kann, während die Dateisystem-Informationen beibehalten werden, die die in den Gruppierungen der Dateien und den Dateisystem-Strukturen verwendeten Gesamtsektoren regieren.

Die Liste der Operationen und die Datenstrukturen der virtuellen Maschinenumgebung 206 können als Anwenderdaten in der Speichervorrichtung 106 oder einem anderen Medium gespeichert sein, wie z. B. dem oben erörterten Programmspeichermedium. Die Liste der Operationen und die Datenstrukturen können entweder (a) indirekt, wenn der Speicher seitenweise ausgelagert wird, oder (b) direkt durch die Software der Erfindung gespeichert werden, um die Wiederherstellung im Fall eines Leistungsausfalls oder einer anderen Unterbrechung zu unterstützen.

Die durch die virtuelle Maschinenumgebung 206 unterstützte Simulation ist keine reine Liste der Befehle für die Ausführung durch einen Computer. Vielmehr erfordert sie ein Modell des zu simulierenden Systems: in diesem Fall beginnt das Modell als eine völlig gleiche Version der im Speicher gehaltenen Eigenschaften der aktuellen Plattenpartition 108. Die an den virtuellen Partitionen 404 vorge nommenen Änderungen werden deshalb die an den Live-Partitionen 108 vorgenommenen Änderungen spiegeln, ohne das reale System auf dem Medium 106 zu modifizieren. Die Grenzen der wirklichen Partitionen 108 würden z. B. im virtuellen System und im realen System die gleichen sein. Im Rest dieses Abschnitts sind, wenn nicht anders angegeben, alle am System 300 vorgenommenen Änderungen virtuelle Änderungen, die entsprechenden physikalischen Änderungen können aber an den Partitionen 108 und der Partitionstabelle 104 auf dem Speichermedium 106 vorgenommen werden.

Die virtuelle Maschinenumgebung 206 verkörpert bekannte Regeln des Partitionsmanagements, wie z. B.: jede logische Partition muß sich innerhalb einer erweiterten Partition befinden; erweiterte Partitionen können nicht beliebig geschachtelt werden; nichterweiterte Partitionen können sich nicht überlappen; einen IBM-kompatibles Laufwerk kann höchstens vier primäre Partitionen besitzen; logische Partitionen müssen "verzahnt" sein; die Partitionen müssen an einer Zylindergrenze enden; usw. Die Übereinstimmung mit diesen Regeln wird im allgemeinen durch die Betriebssysteme eingenommen; falls den Regeln nicht gefolgt wird, können die Anwenderdaten verfälscht oder verloren werden. Selbstverständlich ist ein Teil des Vorteils der Verwendung einer virtuellen Maschine, daß, wenn ein virtueller Fehler gemacht wird, nicht außerdem ein "realer" Fehler gemacht wird.

Alle Änderungen in den virtuellen Strukturen können rückgängig gemacht (verwerten) werden, indem die virtuellen Strukturen erneut initialisiert werden, so daß sie Wert für Wert abermals mit den durch die reale Maschine 210 verwendeten Strukturen der Platte übereinstimmen. In einigen Ausführungsformen kann die virtuelle Maschinenumgebung 206 (entweder durch einen lokalen Anwender oder durch den Fernzugriff über eine Verbindung 306) umgangen werden, dies erlaubt den Direktzugriff auf die reale Maschine 210, falls der Anwender das so wünscht. In diesem Fall können die Änderungen nicht so leicht rückgängig gemacht werden.

Unter Verwendung der virtuellen Maschinenumgebung 206 können mehrere Operationen auf irgendeiner Anzahl von Partitionen 404 simuliert werden. Die Operationen, die der Anwender 100 virtuell ausführen kann, enthalten das folgende: das Erzeugen einer formatierten Partition 404; das Löschen einer Partition 404; das Verschieben einer vorhandenen Partition 404; das Verschieben einer neuen erzeugten Partition 404; das Kopieren einer Live-Partition 108 oder einer anderen virtuellen Partition 404 in einer virtuelle Partition 404; die Änderung der Größe einer vorhandenen Partition 404; die Änderung der Größe einer neu erzeugten Partition 404; das virtuelle Ändern der Attribute des Dateisystems, wie z. B. die FAT-Clustergröße und die Wurzelverzeichniseinträge; die Umwandlung einer Partition 404 von einem Typ in einem anderen, wie z. B. von FAT zu FAT32, NTFS, HPFS oder von FAT32 zu FAT usw.; das Erhalten von Informationen über Live-Partitionen 108 und/oder virtuelle Partitionen 404; das Ändern des Datenträgerkennsatzes in einer Partition 404; das Verbergen/Aufheben des Verbergens einer Partition-404; das Formatieren; und das Absuchen oder erneute Absuchen nach schlechten Sektoren.

Ein Merkmal des Rückgängigmachens erlaubt dem Anwender 100, die virtuellen Operationen rückgängig zu machen, bevor die Änderungen für die reale Maschine 210 festgelegt werden. Außerdem gibt die virtuelle Maschinenumgebung 206 dem Anwender 100 die Fähigkeit, die Größe erweiterter Partitionen 404 automatisch zu ändern, wenn primäre oder logische Partitionen 404 ihre Grenze kreuzen, oder erweiterte Partitionen 404 zu löschen, falls die Größe einer primären Partition 404 so geändert wird, daß sie die erweiterte Partition 404 vollständig überdeckt. Die virtuelle Maschinenumgebung 206 kann außerdem den "aktiven Status" einer Partition 404 ändern. Nur eine Partition 108 auf irgendeiner gegebenen physikalischen Speichervorrichtung kann auf einmal aktiv sein; die aktive Partition 108 ist die bootfähige primäre Partition 108, von der das Betriebssystem initialisiert wird.

Wie angemerkt ist, enthält die virtuelle Umgebung 206 die virtuelle Maschine 400. Die virtuelle Maschine 400 ist direkt oder durch Implikation überall in diesem Dokument erörtert; sie ist eine Hauptkomponenten der virtuellen Maschinenumgebung 206, die die reale Maschine 210 simuliert.

Die C++-Include-Dateien, die Funktionen und Strukturen definieren, die in einer Implementierung der Erfindung verwendet werden, (und ebenso andere Informationen) sind enthalten, selbst wenn die aktuellen Gesetze die Einbeziehung von Quellcode, wenn er vorhanden ist, nicht einem Mandat unterstellen. Die Fachleute werden verstehen, daß die entsprechenden *.cpp-Dateien leicht in verschiedenen Arten implementiert sein können, daß andere Implementierungen der gezeigten *.hpp-Dateistrukturen außerdem die Erfindung verkörpern können, und daß die Erfindung unter Verwendung von anderen Programmiersprachen als der C++- Sprache (oder außer der C++-Sprache) implementiert sein kann. Wird dies im Gedächtnis behalten, implementiert eine Ausführungsform die virtuelle Maschine 400 unter Verwendung einer C++-Klasse, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Wie oben angemerkt ist, enthält die virtuelle Maschinenumgebung 206 ein oder mehrere virtuelle Laufwerke 402, die die wirklichen Laufwerke modellieren, die die Partitionen 108 halten. Das (die) virtuelle(n) Laufwerk(e) weist (weisen) Laufwerkskennungen (z. B. "C:") entsprechend den durch die Betriebssysteme DOS und Windows verwendeten Konventionen zu. Außerdem wird die Laufwerksgeometrie durch eine Laufwerksgeometriestruktur 406 für jedes virtuelle Laufwerk 402 modelliert. Wie "Laufwerksgeometrie" hier verwendet wird, bezieht sie sich auf die maschinenorientierten Laufwerkseigenschaften, wie z. B. die Anzahl der Zylinder, Köpfe und Sektoren pro Spur auf einem physikalischen Laufwerk, das in der virtuellen Maschinenumgebung 206 modelliert wird. Eine Ausführungsform enthält eine C++-Klasse, wie z. B. eine VGeometry-Klasse.

In einer Ausführungsform sind die virtuellen Laufwerke 402 unter Verwendung einer C++-Klasse implementiert, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Es können mehrere Kopien der Informationen über eine gegebene Partition 108 vorhanden sein, einschließlich der virtuellen Partition 404 und der verwandten Strukturen in der virtuellen Maschinenumgebung 206; der wirklichen regierenden Strukturen, die sich auf der Platte 106 befinden (und möglicherweise ebenfalls in den Speicher des Betriebssystems oder Dateisystems kopiert sind), und einer Kopie der Strukturen der Platte im Speicher für die Verwendung durch die reale Maschine 210. Außerdem kann die Anwenderschnittstelle 200 eine Menge von Anzeigeobjekten, die eine funktionale Teilmenge der virtuellen Partition 404 sind, ein Objekt des virtuellen Dateisystems und ähnliche durch die virtuelle Maschinenumgebung 206 verwendete Objekte besitzen. Die Anzeigeobjekte können z. B. verwendet werden, um die Wirkungen des neuen Ausgleichs des freien Raumes zu zeigen, ohne die vollständige virtuelle Maschinenumgebung 206 aufzurufen.

In einer Ausführungsform sind die virtuellen Partitionen 404 unter Verwendung einer C++-Klasse implementiert, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Wie in Fig. 4 veranschaulicht ist, enthält die virtuelle Maschinenumgebung 206 außerdem ein virtuelles Dateisystem 408, das die Dateisysteme im allgemeinen modelliert, und ausführlichere Strukturen, wie z. B. ein virtuelles FAT-Dateisystem 410, die die auf die Manipulation von Partitionen bezogenen Aspekte der spezifischen Dateisysteme modellieren. Andere Strukturen 410 modellieren NTFS, HPFS, LINUX und andere Dateisysteme. Die möglichen virtuellen Dateisysteme 408 enthalten ein "Dateisystem", das eine unformatierte Partition 108 modelliert, um den freien Raum außerhalb der Partitionen 108 zweckmäßig von dem Raum zu unterscheiden, der den Partitionen 108 zugewiesen ist, aber innerhalb der umgebenden Partition 108 nicht notwendigerweise verwendet wird (Dateien und Systemstrukturen zugewiesen ist).

In einer Ausführungsform sind virtuelle Dateisysteme 408 unter Verwendung einer C++-Klasse implementiert, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

In einer Ausführungsform, die C++-Objekte verwendet, wird ein Objekt 412 der virtuellen Grenze (das einem gegebenen Objekt 404 der virtuellen Partition entspricht und mit dem Objekt des virtuellen Dateisystems 408 übereinstimmt) erzeugt, wenn die Manipulationen an einer virtuellen Partition 404 begonnen werden. Im Zusammenhang mit einem Objekt 414 der dateisystemspezifischen Grenzen kapselt das Objekt 412 der virtuellen Grenze die Grenzen, wie z. B. die linken und rechten Grenzen der virtuellen Partition 404, die Größe der virtuellen Partition 404, die Anforderung, daß die Grenze der Partition 404 eine Grenze eines Plattenzylinders ist, die "Klasse" der Partition 404 (primär, logisch oder erweitert, nicht mit einer C++-Klasse zu verwechseln), eine Anzeige, ob die Partition 404 formatiert ist, einen Datenträgerkennsatz, falls es einen gibt, welche Typen des Dateisystems verfügbar sind, falls das Partitionsobjekt 404 unforma tierten Raum auf dem Medium 106 darstellt, und welcher Typ des Dateisystems vorhanden ist, falls das Partitionsobjekt 404 eine formatierte nicht erweiterte primäre oder formatierte logische Partition 108 darstellt, ein.

Die Verfügbarkeit des Dateisystems hängt davon, welche Dateisysteme in der Implementierung der virtuellen Maschinenumgebung 206 entsprechende Definitionen des virtuellen Dateisystems besitzen (z. B. die Definition 410 für FAT-Dateisysteme), und von der Größe der virtuellen Partition 404 ab. Einige FAT-Partitionen 108 besitzen z. B. eine maximale Größe von 2 Gigabytes, die LINUX-Auslagerungspartitionen 108 besitzen eine maximale Größe von 128 Megabytes, die FAT32-Partitionen 108 müssen eine Größe von wenigstens 256 Megabytes besitzen usw. Die zu den Definitionen 410 des FAT-Dateisystems analogen Definitionen werden für NTFS-, HPFS-, LINUX/EXT2- und FAT32-Dateisysteme, verschiedene andere FAT-Dateisysteme und andere Dateisysteme leicht bereitgestellt. Eine Implementierung kann für die Partitionsgröße (die größtmögliche), die Partitionsklasse (FAT) und den Formatierungszustand der Partition (unformatiert) vorgegebene Werte verwenden. "FAT" bezieht sich gemeinsam auf alle FAT- Dateisysteme, einschließlich der FAT12-, FAT16- und FAT32-Dateisysteme.

Die Objekte 412 der virtuellen Grenze können unter Verwendung einer C++- Klasse implementiert sein, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Eine oder mehrere entsprechende Klassen der dateisystemspezifischen Grenzen können Verwendet werden, um zusätzliche Grenzen zu definieren, die von dem beteiligten Dateisystem abhängen. Für die Deutlichkeit der Veranschaulichung zeigt Fig. 4 eine einzelne Instanz einer derartigen Klasse in der Form eines Objekt 414 der virtuellen FAT-Grenzen. Wie bei den anderen Komponenten nach Fig. 4 ist es jedoch klar, daß die dateisystemspezifische(n) Grenzkomponente(n) 414 nicht unter Verwendung von C++-Klassen implementiert sein müssen, geschweige denn unter Verwendung der hierin als Beispiele bereitgestellten speziellen Klassen. Es können andere Programmiersprachen und -paradigmen verwendet werden, einschließlich z. B. C, Pascal oder Assembler, wobei weniger modulare Zugänge als die C++-Paradigmen von Klassen und Objekten verwendet werden können.

Außerdem können, wie bei der in Fig. 4 gezeigten anderen dateisystemspezifischen Komponente 410, andere Dateisysteme als die FAT-Dateisysteme außer oder anstelle eines speziellen FAT-Dateisystems in einer gegebenen Ausführungsform verwendet werden. Geeignete Dateisysteme sind hierin gekennzeichnet und außerdem den Fachleuten auf dem Gebiet bekannt.

Wird dies im Gedächtnis behalten, kann ein Objekt 414 der dateisystemspezifischen virtuellen Grenzen unter Verwendung einer C++-Klasse implementiert sein, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Eine Alternative zum Definieren einer "Klasse" der virtuellen Partitionen, um virtuelle Partitionen 404 zu implementieren, besteht darin, für drei separate Klassen eine Instanz zu bilden, jeweils eine für primäre, logische und erweiterte Partitionen 404. Dies macht es jedoch notwendig, die Aktualisierungen der Partition 404 zu ersetzen, die ansonsten die Variable in einem Objekt einfach mit Löschen-Erzeugen-Folgen überschreiben würden, die ein Objekt freigeben und ein Ersatzobjekt erzeugen und initialisieren und dadurch die Ausführung der Manipulationen an der virtuellen Partition 404 verlangsamen.

Eine Alternative zur Verwendung dateisystemspezifischer Objekte 410 besteht darin, alle notwendigen Dateisystemregeln in einer einzigen globalen Entität in der virtuellen Maschinenumgebung 206 einzukapseln. Ein potentieller Nachteil der Verwendung von Objekten 414 der dateisystemspezifischen Grenzen ist, daß die Regeln, die die Systeme und Partitionen regieren, durch das ganze Programm verbreitet sind. Wenn der Anwender 100 einen Dialog hervorbringt, um eine neue Partition zu erzeugen, muß eine Implementierung, die Objekte 414 der dateisy stemspezifischen Grenzen verwendet, ein Objekt 412 der generischen Grenzen erzeugen, das die Werte für alle Dateisysteme berechnen muß. Wenn der Anwender 100 den zu erzeugenden Typ des Dateisystems auswählt, muß die Implementierung neu rechnen und die Einstellungen für die beteiligten spezifischen Partition 404 vornehmen. Außerdem müssen im Dateisystem-Objekt 408 redundante Berechnungen ausgeführt werden. Die Alternative erzeugt eine Klasse der globalen Regeln, die eine Liste der Regeln-Objekte enthält, die die Parameter für jeden Typ des Dateisystems regieren. Diese Klasse wird für alle Berechnungen verwendet und sichert deshalb konsistente Berechnungen überall in der virtuellen Maschinenumgebung 206 und in der realen Maschine 210. Die Liste der Regeln enthält z. B. ein FatRules-Objekt, das verwendet wird, um für die FAT-Partitionen 108 die minimalen und maximalen Größen, die Grenzen der Erweiterung/Verkleinerung, die Grenzen für das Verschieben usw. zu berechnen.

Innerhalb einer Ausführungsform der virtuellen Maschinenumgebung 206 bringt der die Umwandlung des Typs des Dateisystems die Zerstörung des Objekts 410 des virtuellen Dateisystems und das Ersetzen dieses Objekts durch eine Instanz eines Objekts eines weiteren virtuellen Dateisystems für das Ziel-Dateisystem mit sich.

Der Stapel-Manager

Wenn der Anwender 100 mit den in der virtuellen Maschinenumgebung 206 gezeigten virtuellen Änderungen zufrieden ist, kann dann der Stapel-Manager 208 verwendet werden, um die Live-Partitionen 108 in einer entsprechenden Weise zu manipulieren. Der Stapel-Manager 208 hält eine ständige Liste der Befehle, die durch die virtuelle Maschine 400 ausgeführt werden. Die Liste des Stapel-Managers 208 der Befehle wird, wenn sie durch die reale Maschine 210 ausgeführt wird, die Manipulation der wirklichen Partition 108 ausführen. Diese Liste kann unter Verwendung von C++-Klassen implementiert sein. Insbesondere kann die Erzeugung der Befehls- oder Operationsliste unter Verwendung einer C++-Klasse implementiert sein, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Nachdem diese Befehle gespeichert worden sind, können sie außerdem abgerufen und editiert werden. Eine Ausführungsform des Stapel-Managers 208 kann z. B. die gespeicherten Listen optimieren. Dies kann ausgeführt werden, indem redundante Verschiebungen, Erzeugungen, Löschungen usw. beseitigt werden. Es kann außerdem ausgeführt werden, in dem unnötige Überprüfungen des Dateisystems zwischen den Befehlen gelöscht werden.

Der Stapel-Manager 208 erlaubt die wirkliche Ausführung der gespeicherte Liste.

Vor dem Beginn der Ausführung sichert der Stapel-Manager 208, daß sich die wirkliche Platte 106 im gleichen Zustand wie dem befindet, in dem die virtuelle Maschine 400 das Speichern der Liste begonnen hat. Falls sich die Zustände unterscheiden, endet die Ausführung, wobei ein Fehler gemeldet wird; ansonsten könnten die Anwenderdaten beschädigt oder verloren werden. Dies kann unter Verwendung einer C++-Klasse implementiert sein. Die wirkliche Ausführung der aufgelisteten Operationen kann unter Verwendung der realen Maschine 210 und einer C++-Klasse wie derjenigen implementiert sein, die durch das folgende veranschaulicht ist:

Der Stapel-Manager 208 kann außerdem bestimmen, ob während der aktuellen Anwendersitzung eine Partition 108 sicher manipuliert werden kann; einige Manipulationen sollten statt dessen später in einer Boot-Betriebsart ausgeführt werden. Der Stapel-Manager 208 kann bestimmen, ob vor der Live-Ausführung der Operationen ein durch die Software der Erfindung gesteuertes neues Booten in eine Betriebsart der abwechselnden Ausführung notwendig ist (um eine Sperre einer Partition 108 zu erhalten, die ansonsten nicht leicht gesperrt wird), und ob eine neues Booten nach der Live-Ausführung der Operationen an der (den) Partition(en) 108 notwendig ist, um die Strukturen im Betriebssystem-Speicher mit den neu für die Platte 106 festgelegten Strukturen zu aktualisieren. Die Betriebsart der abwechselnden Ausführung unterbricht den Boot-Prozeß und erlaubt folglich der Software der Erfindung, ihre Arbeit zu tun, bevor das Betriebssystem das Laden abschließt; In einem Microsoft-Windows NT-System kann die Software der Erfindung z. B. eine Anwendung enthalten, die für das Betriebssystem Windows NT wie ein geschütztes Untersystem dieses Betriebssystems aussieht, die aber wirklich ein Anwendungsprogramm ist, das in der sogenannten "Untersystem-Ladezeit" ausgeführt wird.

Im allgemeinen ist das neue Booten in die Betriebsart der abwechselnden Ausführung notwendig, falls die Ausführungsform der Erfindung keine Sperre in einer Partition 108 vom Betriebssystem erhalten kann. Das heißt, die Boot-Betriebsart schafft eine exklusive Sperre in dem Laufwerk, bevor die Operationen ausgeführt werden, und erlaubt die Ausführung der gestapelten Operationen, bevor das Betriebssystem die Steuerung übernimmt. Falls neue Laufwerkskennungen durch die Partitionsmanipulationen erzeugt werden, erfordern einige Betriebssysteme (wie z. B. Windows 95 und andere Windows-Umgebungen) ein neues Booten, um die Sicht des Betriebssystems der Laufwerkskennungen zu aktualisieren, die nun in der (den) Platte(n) 106 verwendet werden.

Das Laufwerksabbildungs-Hilfsprogramm automatisiert die Aktualisierung der Laufwerksbezugnahmen in den *.im-Dateien und Registierdatenbank-Dateien, wenn durch die Partitionsmanipulation Änderungen der Laufwerkskennungen vorgenommen werden. In einer Ausführungsform erzeugt der Stapel-Manager 208 außerdem Laufwerksabbildungs-Befehle. Weil die Folge, in der die Laufwerksabbildungen geändert werden, kritisch ist, managt der Stapel-Manager 208 das Sequentialisieren der Laufwerksabbildung für ein Laufwerksabbildungs-Hilfsprogramm. Geeignete Laufwerks-Abbildungseinrichtungen können unter Verwendung einer C++-Klasse implementiert sein, deren Laufwerksabbildungsfunktionalität in der Technik bekannt ist, wie z. B. die derjenigen, die im DriveMapper-Hilfsprogramm von PartitionMagic, Version 3.0, von PowerQuest zu finden ist.

Die Assistenten

Eine Ausführungsform dieser Erfindung schafft einen oder mehrere Assistenten 212, um die Anwender 100 zu unterstützen, häufige Handlungen auszuführen. Ein Anwender 100 könnte z. B. einen Assistenten 212 auffordern, den freien Raum auf einem gegebenen Laufwerk virtuell zu optimieren. Der Assistent würde dann ohne weitere Anwendereingabe entscheiden, wie die Optimierung auszuführen ist. In einer Ausführungsform stellt der Assistent 212 keine zusätzliche Funktionalität in dem Sinn bereit, daß alles, was der Assistent 212 tut, durch den Anwender 100 unter Verwendung der virtuellen Maschinenumgebung 206 direkt durch die Anwenderschnittstelle 200 ohne den Assistenten 212 getan werden kann.

Der Assistent 212 stellt jedoch für Expertenanwender 100 zweckmäßige Abkürzungen und für Anfängeranwender 100 hilfreiche Führung bereit. Die im folgenden aufgelisteten Funktionen können unter Verwendung eines oder mehrerer Assistenten 212 im Zusammenhang mit der virtuellen Maschinenumgebung 206 automatisiert werden. Wie oben erwähnt ist, werden hier alle Funktionen "virtuell" ausgeführt, sie erzeugen aber außerdem eine Liste der Befehle, um die durch die reale Maschine 210 ausgeführten realen Manipulationen anzusteuern, falls das so gewünscht wird:

- Optimieren des freien Raumes auf einem Laufwerk und innerhalb von Partitionen durch die Verringerung der Clustergrößen und die Umwandlung in effizientere Dateisysteme.

- Optimieren der Verschiebungs- und Größenänderungsoperationen, um das minimale Ausmaß der notwendigen Datenverschiebung auszuführen.

- Zeigen des Zustands der Platte davor und danach, bevor der Anwender 100 die durch den Assistenten vorgeschlagenen Änderungen festlegt.

- Bestimmen der optimalen Größe basierend auf dem ausgewählten Betriebssystem.

- Erlauben, daß der Anwender 100 die optimale Größe einstellt.

- Automatisches Hinzufügen von Partitionen zum Boot-Manager, Erzeugen der Partition und Verschieben anderer Partitionen, um Raum für eine neue Partition zu schaffen.

- Automatisches Verringern der Clustergröße oder Umwandlung in ein neues Dateisystem, um verschwendeten Raum zurückzugewinnen.

- Analysieren der Plattenkonfiguration des Anwenders und Empfehlen von Arten, um die Platte effektiver zu verwenden.

- Erlauben, daß der Anwender 100 Einschränkungen festlegt, ob eine gegebene Partition verschoben werden oder ihre Größe geändert werden kann. Falls die Größe der Partition geändert werden kann, Bestimmen der minimalen Größe für die Partition. Dies wird verwendet, um Einschränkungen an dem Algorithmus festzulegen, der die Änderungen an den Partitionen bestimmt, wenn eine neue Partition erzeugt wird, der freie Raum neu ausgeglichen wird oder verschwendeter Raum wiedergewonnen wird und wenn die Installation eines neuen Betriebssystems vorbereitet wird.

- Einstellen der logischen Partitionen und primären Partitionen, um Raum für die Partition eines neuen Betriebssystems zu schaffen.

- Verkleinern vorhandener Partitionen gerade ausreichend, um Raum für die mit dem Assistenten erzeugten neuen Partitionen zu schaffen.

- Erzeugen einer primären oder logischen Partition basierend auf dem Kontext des Betriebs des Assistenten.

Die Verfahren

Fig. 5 veranschaulicht die Verfahren der vorliegenden Erfindung. Während eines Erhaltungsschritts 500 erhält eine Ausführungsform der Erfindung einen oder mehrere Manipulationsbefehle für die virtuellen Partitionen 404 vom Anwender 100. Die Ausführungsform kann die Software der Erfindung, wie diejenige, die in Fig. 2 gezeigt ist, und/oder ein System der Erfindung, wie eine oder mehrere Computer, die Fig. 3 gezeigt sind, enthalten, die mit Code und/oder Hardware konfiguriert sind, um entsprechend den hierin beschriebenen Verfahren zu arbeiten.

Der Erhaltungsschritt 500 kann in einer oder mehreren Gruppen von Arten ausgeführt werden. Die Ausführungsform kann z. B. den Befehl interaktiv vom Anwender 100 durch eine Befehlszeilenschnittstelle 200 oder eine graphische Anwenderschnittstelle 200 erhalten. Alternativ kann der Befehl aus einer Stapeldatei oder einem Skript erhalten werden, die bzw. das durch den Anwender 100 erzeugt wird und dann durch die Anwenderschnittstelle 200 gelesen wird.

Gleichermaßen kann der Befehl in dem Sinn lokal erhalten werden, daß der Anwender 100 die gleiche Maschine direkt bedient, die die Anwenderschnittstelle 200 und die virtuelle Maschinenumgebung 206 ausführt, oder der Befehl kann von einem entfernten Anwender 100 über eine Kommunikationsverbindung 306 erhalten werden.

Im Fall der entfernten Anwender 100 sind verschiedene Zugänge möglich. In dem am meisten getrennten Fall erzeugt der Anwender 100 die Befehle an einem Computer, sendet sie für die Simulation an einen zweiten Computer und führt die Manipulationen an einem Speichermedium 106 aus, das an einem dritten Computer angebracht ist, es sind aber außerdem Variationen möglich, die weniger Computer und Orte umfassen.

In einem Zugang wird der Computer, an dem die Speichervorrichtung 106 angebracht ist, als lokal betrachtet, wobei ein Simulationsschritt 502 lokal wenigstens eine Operation simuliert, die lokal in Reaktion auf den Befehl des entfernten Anwenders ausgeführt 516 werden kann. In Reaktion auf einen Befehl eines Anwenders von einem Ort R führt z. B. ein Computer am Ort X die virtuelle Maschine aus, um die Manipulation einer Platte 106 zu simulieren, die am Computer am Ort X angebracht ist.

In einem zweiten Zugang mit einem entfernten Anwender 100 ist der Computer, an dem die Speichervorrichtung 106 angebracht ist, abermals lokal, der Simulationsschritt 502 simuliert jedoch entfernt wenigstens eine Operation, die lokal in Reaktion auf den Befehl des entfernten Anwenders ausgeführt 516 werden kann. In Reaktion auf einen Befehl eines Anwenders vom Ort R simuliert z. B. ein Computer am Ort R die Manipulation einer Platte 106, die an einem Computer am Ort X angebracht ist.

In einem dritten Zugang mit einem entfernten Anwender 100 ist der Computer, an dem die Speichervorrichtung 106 angebracht ist, außerdem entfernt, wobei der Simulationsschritt 502 wenigstens eine Operation lokal simuliert, die in Reaktion auf den Befehl des entfernten Anwenders entfernt ausgeführt 516 werden kann. In Reaktion auf einen Befehl eines Anwenders vom Ort R simuliert z. B. ein Computer am Ort X die Manipulation einer Platte 106, die am Computer am Ort R angebracht ist.

In einem vierten Zugang mit einem entfernten Anwender 100 ist der Computer, an dem die Speichervorrichtung 106 angebracht ist, entfernt, wobei der Simulationsschritt 502 wenigstens eine Operation entfernt simuliert, die in Reaktion auf den Befehl des entfernten Anwenders entfernt ausgeführt 516 werden kann. In Reaktion auf einen Befehl eines Anwenders vom Ort R simuliert z. B. ein Computer am Ort X die Manipulation einer Platte 106, die an einem Computer am Ort X angebracht ist.

Während des Simulationsschrittes 502 simuliert die Ausführungsform die Partitionsmanipulation in der virtuellen Maschinenumgebung 206. Dies kann in einer breiten Vielzahl von verschiedenen Kombinationen unter Verwendung von Computern, Netzen, Computer-Programm-Speichermedien und/oder anderen Vorrichtungen und Maschinen ausgeführt werden, die entsprechend den hierin beschriebenen Verfahren, Strukturen und/oder Codes konfiguriert sind.

Es wird aus den durch dieses Dokument bereitgestellten Informationen klar sein, daß der Simulationsschritt die Erzeugung einer simulierten Partition 404 (die Erzeugung einer simulierten logischen Partition 404, einer simulierten primären Partition 404 und/oder einer simulierten erweiterten Partition 404); die Formatierung einer simulierten Partition 404; die Replikation einer simulierten Partition 404; das Löschen einer simulierten Partition 404; das Ändern der Größe einer simulierten Partition 404 durch das Ändern der Anzahl der Sektoren in der simulierten Partition 404; das Ändern der Größe einer simulierten Partition 404 durch das Ändern der Clustergröße der simulierten Partition 404; das Ändern der Größe einer simulierten Partition 404 durch das Ändern der Größe der simulierten erweiterten Partition 404 in Verbindung mit der Änderung der Größe einer simulierten logischen Partition 404 innerhalb dieser simulierten erweiterten Partition 404, so daß die erweiterte Partition 404 weiterhin die logische Partition 404 richtig enthält; die Änderung der Größe einer simulierten Partition 404 durch das Erweitern einer simulierten erweiterten Partition 404 in den freien Raum, der durch das Manipulieren einer weiteren simulierten Partition 404 außerhalb der simulierten erweiterten Partition 404 erhalten wird; das Ändern der Größe des Wurzelverzeichnis einer simulierten Partition 404; das Umbenennen einer simulierten Partition 404; die Umwandlung einer simulierten Partition 404 durch die Änderung des Typs des Dateisystems der simulierten Partition 404, wie z. B. die Umwandlung zwischen den FAT16- und FAT32-Dateisystemformaten, und möglicherweise danach das Anzeigen 504 einer Angabe des freien Raums der simulierten Partition und/oder des verwendeten Raums nach der Umwandlung; das Ändern des verborgenen Status einer simulierten Partition 404; und/oder das Ändern des aktiven Status einer simulierten Partition 404 enthalten kann.

Der Simulationsschritt 502 fügt optional einen Platzhalter für einen Schritt 514 des Verifizierens der Integrität und Konsistenz der Daten des internen Live-Dateisystems im Zusammenhang mit dem Ausführen 516 der Manipulationen, die vorher simuliert 502 worden sind, ein. Derartige Konsistenzprüfungen 516 sind im allgemeinen lohnend, einige reale Maschinen 210 werden sie jedoch ungeachtet dessen ausführen, ob sie durch einen durch die Simulation vorgesehenen Platzhalter ausdrücklich angewiesen werden, so zu verfahren.

Der Simulationsschritt 502 fügt optional einen Platzhalter für einen Schritt des Absuchens nach schlechten Sektoren in einer Live-Partition 106 ein. Das Absuchen nach schlechten Sektoren kann zeitraubend sein, es ist aber mit einigen Medien 106 und/oder in Fällen, in denen eine Manipulation der Partitionen 108 die Daten in einem vorher nicht verwendeten Abschnitt der Medien 106 legen würde, lohnend.

Während des Bereitstellungsschritts 504 versieht die Ausführungsform den Anwender 100 mit den Ergebnissen der während des Schritt 502 ausgeführten Simulation(en). Dies kann im Fall menschlicher Anwender 100 durch das Anzeigen der Informationen über die modifizierten Partitionen auf einer Text-Anwenderschnittstelle oder graphischen Anwenderschnittstelle 200 ausgeführt werden. Die Ergebnisse können außerdem durch Datenübertragung von der Ausführungsform zu einem Anwender 100 in Form eines Computers oder zu einem automatisierten Anwender 100 bereitgestellt 504 werden. Es können spezielle Anzeigeobjekte verwendet werden, um diesen Schritt 504 zu unterstützen; diese Anzeigeobjekte enthalten Kopien einer Teilmenge der Objekte der virtuellen Maschinenumgebung 206. In einer Ausführungsform können die Anzeigeobjekte eine oder mehrere Instanzen einer C++-Klasse enthalten, wie z. B. derjenigen, die durch das folgende veranschaulicht ist:

Während eines optionalen Editierschritts 506 erlaubt die Ausführungsform den Anwendern 100, eine Liste der gewünschten Operationen an den Partitionen 404 zu editieren. Der Anwender 100 kann z. B. wenigstens eine vorher durch den Anwender 100 spezifizierte Operation rückgängig machen oder die vorher in der Liste spezifizierten Parameter der Manipulation (z. B. die Clustergröße, die Partitionsgröße) ändern. Der Editierschritt 506 kann ausdrücklich das interaktive Editieren durch den Anwender 100 und/oder das implizite Editieren durch die Optimierung der Befehls- oder Operationsfolge enthalten. In anderen Ausführungsformen enthält das Editieren 506 nur ausdrücklich das Editieren der Listen durch den Anwender 100, wobei die Optimierung als ein separater Schritt 512 betrachtet wird oder nicht vorhanden ist. Allgemeiner können die Ausführungsformen die verschiedenen hier beschriebenen Verfahrensschritte in anderen Weisen gruppieren und/oder sie anders bezeichnen. Worauf es ankommt ist, ob die hier beschriebene Funktionalität auf der Ebene der spezifischen Schritte, die an irgendeinem Punkt unternommen werden, vorhanden ist.

Während eines optionalen Speicherschrittes 508 speichert die Ausführungsform die Liste der gewünschten Partitionsoperationen im Permanentspeicher als Anwenderdaten; diese Liste wird während eines Schrittes 510 abgerufen. Der Permanentspeicher kann sich auf dem Medium 106, auf einem Programmspeichermedium oder einem anderen Medium befinden. Die Dateispeicherung und der Dateiabruf sind im allgemeinen wohlbekannt, obwohl ihre Verwendung im Kontext der virtuellen Maschinenumgebungen 206 neu ist. Die Syntaxen, um Partitionsmanipulations-Befehle oder -Operationen für eine reale Maschine 210 zu spezifizieren, sind außerdem wohlbekannt, wobei sie verwendet werden können, um während der Speicherung 508 die Erzeugung von Befehlen zu unterstützen und um während des Abrufs 510 die Befehle zu parsen. Die virtuellen Befehle unterscheiden sich von den Befehlen der herkömmlichen realen Maschine 210 insofern, als die virtuellen Befehle anstatt Live-Laufwerke 106 und Live-Partitionen 108 virtuelle Laufwerke 402 und virtuelle Partitionen 404 kennzeichnen. Ein virtueller Befehl kann z. B. einen Zeiger enthalten, wie z. B. den VPartition *Partition-Zeiger.

Während eines optionalen Optimierungsschrittes 512 optimiert die Ausführungsform die Liste der gewünschten Partitionsmanipulations-Befehle oder -Operationen. Die Optimierung kann ausgeführt werden, um die Zeit zu verringern, die notwendig ist, um die Liste während des Schrittes 516 auszuführen, um die Verwendung der Speichervorrichtung 106 zu optimieren (den freien Raum zu maximieren, die erwartete Zugriffszeit während der späteren Verwendung der Partitionen 108 zu minimieren oder andere bekannte Ziele zu verfolgen), oder um irgendeine Kombination von zwei Typen der Optimierung zu fördern.

Mögliche Optimierungen enthalten die Beseitigung einer ersten Menge aus einer oder mehreren Partitionsoperationen, die durch eine zweite spätere Menge aus einer oder mehreren Partitionsoperationen redundant gemacht wird (z. B. Manipulationen an einer Partition, die anschließend zu löschen ist); die Verringerung des Ausmaßes der Datenverschiebung, die durch eine Menge von Partitionsoperationen gefordert wird (z. B. das Ersetzen einer Verschiebung von A nach B, gefolgt von einer Kopie zurück zu A mit einer Kopie von A nach B); das Neuverteilen des freien Raumes auf einer Speichervorrichtung; die Erhöhung des freien Raumes auf einer Speichervorrichtung durch die Verringerung der Clustergröße; die Erhöhung des freien Raumes auf einer Speichervorrichtung durch das Um wandeln des Typs des Dateisystems; und/oder das Spezifizieren (Kennzeichnen oder Erzeugen) freien Raumes und dann das Erzeugen einer Betriebssystem- Partition, um ein Betriebssystem zu installieren, möglicherweise gefolgt durch das Hinzufügen der Betriebssystem-Partition zu einer Boot-Manager-Struktur.

Während eines Konsistenzüberprüfungsschrittes 514 überprüft die Ausführungsform auf Inkonsistenzen, die zu verlorenen oder verfälschten Anwenderdaten führen könnten, falls sie nicht erfaßt und korrigiert werden. Vor dem Ausführen 516 der Manipulationen an den Live-Partitionen 108, die den simulierten 502 Manipulationen entsprechen, verifiziert das System der Erfindung z. B., daß die aktuelle wirkliche Plattenkonfiguration 106 mit der Konfiguration in der virtuellen Umgebung 206 wie am Anfang der Simulation übereinstimmt. Falls sie dies nicht tut, wird der Anwender 100 benachrichtigt, wobei keine auf der Simulation basierende Live-Manipulationen ausgeführt wird.

Der Schritt S14 kann außerdem die virtuelle Umgebung 206, die Live-Daten 104, 108 oder beides auf die Konsistenz und Integrität des Dateisystems und/oder die Integrität der Partitionsdefinitionen überprüfen.

Um die interne Konsistenz und Übereinstimmung mit den durch die Betriebssysteme gemachten Annahmen zu erzwingen, führt eine Implementierung der Erfindung das Folgende im Zusammenhang mit dem Schritt 514 aus. Zuerst wird für jede in der virtuellen Umgebung 206 dargestellte Partition 108 eine eindeutige Zustands-ID einem Anfangszustand einer gegebenen Partition 108 zugeordnet. Diese Zustands-ID wird verwendet, um die Liste der Operationen mit der Live- Partition 108 im Anfangzustand dieser Partition zu verbinden; die Ausführung der Liste auf einer anderen Partition 108 oder der gleichen Partition 108 aus einem anderen Anfangzustand könnte die Anwenderdaten zerstören.

Als zweites enthält die zur realen Maschine 210 für die Ausführung (falls der Anwender während des Schrittes 516 die Festlegung des Befehls (der Befehle) für die Platte genehmigt) gesendete Liste der Operationen die durch die reale Maschine 210 verwendeten Informationen, um zu verifizieren, daß der Zustand der Live-Partition 108 mit dem beim Anfordern der Operation durch die virtuelle Partition 404 angenommenen Zustand übereinstimmt. Dies kann ausgeführt werden, indem der Wert der Grenzen und andere Grenzen, die zu ändern sind, die durch die virtuelle Maschinenumgebung 206 bereitgestellt werden, einerseits entweder mit den Datenstrukturen der realen Maschine (z. B. eine Liste der Partitionsinformationen, wie z. B. derjenigen in PowerQuest PM 3.0) oder den wirklichen Werten auf der Platte 106 (z. B. der Partitionstabelle 104) verglichen werden. Abermals ist das Ziel, zu verifizieren, daß die Organisation der Live-Platte 106 mit der durch die virtuelle Maschine 400 angenommenen Organisation übereinstimmt.

Drittens stützt sich die virtuelle Maschine 400 auf die in den Objekten 412, 414 der virtuellen Grenzen eingebetteten Grenzen und auf die in den Funktionen der virtuellen Maschine 400 eingebetteten Einschränkungen (keine geschachtelten erweiterten Partitionen, keine überlappenden primären Partitionen, keine Partitionen über eine Plattengrenze hinaus usw.). Die Übereinstimmung mit diesen Einschränkungen kann während eines separaten Schrittes verifiziert werden, oder die Verifikation kann in einen Schritt des Dokumentierens des freien Raumes oder in den Schritt 510 des Abrufens der Liste der Operationen integriert sein.

In einer Implementierung enthält die virtuelle Maschinenumgebung 206 Kopien der Systemstrukturen, wie z. B. der Dateibelegungstabelle, wobei ein modifiziertes CHKDSK-Programm die Integrität und die interne Konsistenz dieser Strukturen verifiziert. In einer weiteren Implementierung werden die Dateisystem-Strukturen hauptsächlich nicht in die virtuelle Umgebung 206 kopiert; nur eine Angabe der Eigenschaften der Dateisystem-Struktur, wie z. B. die Größe der Dateibelegungstabelle und die Größe des anderen durch das Dateisystem zugewiesenen anderen Raumes innerhalb einer Partition, wird in der virtuellen Umgebung 206 aufrechterhalten. In einer Ausführungsform wird eine Tabelle der folgenden Informationen intern durch die implementierende Software, abhängig vom Typ des FAT-Dateisystems und/oder der spezifischen Partitions-ID, gehalten: die Clustergröße, die minimale Partitionsgröße, die maximale Partitionsgröße, die verwendeten und freien Sektoren innerhalb der spezifischen Partition, der verwendete und verschwendete Raum innerhalb der spezifischen Partition.

Während eines Ausführungsschrittes 516 führt die Ausführungsform an dem Live- Medium 106 Manipulationen aus, die den simulierten Manipulationen entsprechen (die den Änderungen in der Liste unterworfen sind, die durch die Optimierung und durch die Übersetzung von den virtuellen Kennzeichnungen in die Kennzeichnungen der Live-Struktur ausgeführt werden). Dies wird mit der realen Maschine 210 ausgeführt, die eine oder mehrere durch den Stapel-Manager 208 bereitgestellte Operationen empfängt und ausführt, der wiederum die Live-Manipulationsopera tionen basierend auf der der virtuellen Maschine 400 bereitgestellten Liste der simulierten Befehle erzeugt.

Es ist beabsichtigt, daß Fig. 5 das Verständnis der vorliegenden Erfindung unterstützt, wobei sie nicht jeden Aspekt der Erfindung oder sogar jedes Verfahren zusammenfassen soll. Die Verfahren, Signale, Systeme und konfigurierten Speichermedien der Erfindung sind durch die Ansprüche hinsichtlich der vollständigen Beschreibung und nicht bloß durch Fig. 5 definiert. Die Schritte können wiederholt werden; die Schritte 500 bis 504 können z. B. mehrmals wiederholt werden, bevor der Schritt S14 auftritt. Es können außerdem Schritte weggelassen werden. Jeder Editier-, Speicher-, Abruf- und Optimierungsschritt 506-512 kann weggelassen werden (obwohl ein Speicherschritt 508 vor einem Abrufschritt 510 notwendig ist). Gleichermaßen kann der Ablaufplan nach Fig. 5 ohne das Ausführen 516 irgendwelcher Live-Manipulationen verlassen werden, nachdem die Simulationsergebnisse während des Schrittes 504 bereitgestellt worden sind. Die Schritte können außerdem umgeordnet oder gleichzeitig ausgeführt werden, es sei denn ein Schritt erfordert das Ergebnis eines vorhergehenden Schrittes. Eine Liste könnte z. B. optimiert 512 werden, entweder bevor oder nachdem sie gespeichert 508 wird. Außerdem können die Schritte anders gruppiert oder umbenannt werden. Diese Variationen können in einer Ausführungsform vorhanden sein, ungeachtet ob sie ausdrücklich beschrieben oder als optional außerhalb der Ansprüche gezeigt sind.

Die Signale

Fig. 6 veranschaulicht ein virtuelles Partitionssignal 600 gemäß der Erfindung. Das Signal 600 kann in einem Computer 304 und/oder einem Speicher 308, im Speichermedium 106, in einem separat konfigurierten Programmspeichermedium und/oder im Leiter 306 verkörpert sein. Andere Signale gemäß der Erfindung sind durch die Quellcode-Auszüge und andere Beschreibungen hierin definiert, wobei sie gleichermaßen in verschiedenen physikalischen Vorrichtungen und/oder Medien verkörpert sein können.

Das virtuelle Partitionssignal 600 kann als ein Teil einer VPartition-C++-Klasse oder ähnlichem implementiert sein, wie oben gezeigt ist. Das veranschaulichte Signal 600 enthält eine Kennzeichnung 602 des virtuellen Laufwerks, die ein virtuelles Laufwerk 402 gekennzeichnet Unähnlich der Kennzeichnung eines physikalischen Laufwerks 106 kann die Kennzeichnung 602 des virtuellen Laufwerks in der virtuellen Maschinenumgebung 206 als ein Speicherzeiger (eine Speicheradresse) oder als ein Index in ein Feld implementiert sein, wie z. B. einen Zeiger oder ein Index in eine Liste oder ein Feld von VDrive-Objekten.

Das veranschaulichte Signal 600 enthält außer dem eine Dateisystem-Kennzeichnung 604, die einen Typ des Dateisystems kennzeichnet. In einer Ausführungsform kennzeichnet die Kennzeichnung 604 entweder ein vorhandenes Dateisystem, wie z. B. ein FAT-Dateisystem, oder sie zeigt an, daß der fraglichen virtuellen Partition 404 noch kein Dateisystem zugeordnet worden ist.

Das veranschaulichte Signal 600 enthält außerdem eine Partitionsklassen-Kennzeichnung 606, die eine Klasse (primär, logisch oder erweitert) der fraglichen virtuellen Partition 404 kennzeichnet.

Schließlich enthält das veranschaulichte Signal 600 eine Kennzeichnung 608 der virtuellen Partition, die eine virtuelle Partition 404 kennzeichnet. Unähnlich einer Kennzeichnung einer Live-Partition 108 kann die Kennzeichnung der virtuellen Partition in der virtuellen Maschinenumgebung 206 als ein Speicherzeiger (eine Speicheradresse) oder als ein Index in ein Feld implementiert sein, wie z. B. ein Zeiger oder ein Index in eine Liste oder ein Feld der VPartition-Objekte.

Es ist beabsichtigt, daß Fig. 6 das Verständnis der vorliegenden Erfindung unterstützt, wobei sie nicht jedes Signal der Erfindung oder sogar jedes virtuelle Partitionssignal zusammenfassen soll. Die Verfahren, Signale, Systeme und konfigurierten Speichermedien der Erfindung sind durch die Ansprüche hinsichtlich der vollständigen Beschreibung und nicht bloß durch Fig. 6 definiert. Die Signalkomponenten können wiederholt werden; es können z. B. mehrere Kennzeichnungen 608 der virtuellen Partitionen einer gegebenen Kennzeichnung 602 des virtuellen Laufwerks zugeordnet sein. Es können außerdem Signalkomponenten weggelassen werden. Wenn z. B. der fraglichen virtuellen Partition 404 noch kein Dateisystem zugeordnet worden ist, dann kann dies durch das Fehlen einer Dateisystem-Kennzeichnung 604 angezeigt werden. Die Signalkomponenten können in Reihenfolgen oder Anordnungen gespeichert sein, die von den gezeigten verschieden sind, wobei sie dadurch, daß sie zusammen gespeichert werden, und/oder durch Verbindungen, wie z. B. einen Zeiger oder ein Tabellenindex, zugeordnet werden können. Außerdem können die Signalkomponenten anders gruppiert oder umbenannt werden. Diese Variationen können in einer Ausführungsform vorhanden sein, ungeachtet ob sie ausdrücklich beschrieben oder als optional außerhalb der Ansprüche gezeigt sind.

Zusätzliche Anmerkungen über die Implementierung

Primäre Partitionen 108 sind diejenigen, die im Hauptstartsatz (Master Boot Record - "MBR") der Partitionstabelle 104 erscheinen. Die gegenwärtigen Versionen der Partitionstabelle 104 schränken die Anzahl der einem Betriebssystem bekannten primären Partitionen 108 auf vier ein, von denen nur eine eine erweiterte Partition 108 sein kann, dies kann aber in der Zukunft geändert werden, wobei entsprechende Änderungen an den Implementierungen der Erfindung durch die Fachleute auf dem Gebiet leicht ausgeführt werden. Eine erweiterte Partition 108 ist eine primäre Partition 108, sie dient aber als eine Schale, um eine oder mehrere logische Partitionen 108 zu halten. Eine logische Partition 108 muß sich innerhalb einer erweiterten Partition 108 befinden. Eine erweiterte Partition 108 muß zusammenhängend sein (sie kann nicht definiert sein, um zwei oder mehrere separate Sektorbereiche zu überdecken), wobei erweiterte Partitionen 108 nicht geschachtelt werden können. Diese Einschränkungen können sich in zukünftigen Betriebssystemen abermals ändern, wobei die entsprechenden Änderungen dann in den Implementierungen der Erfindung vorgenommen werden können.

Die erste primäre Partitionen 108 auf der Platte 106 (wenigstens unter Windows- Marken- und DOS-Betriebssystemen) ist immer verzahnt. Eine "verzahnte" Partition ist eine Partition, die nicht im ersten Sektor einer Zylindergrenze beginnt. Statt dessen beginnt eine verzahnte Partition normalerweise am zweiten Kopf nach der Zylindergrenze, d. h. einen Kopf vom Anfang eines Zylinders. Die logischen Partitionen 108 sind immer verzahnt. Die zweiten, dritten oder vierten primären Partitionen 108 sind nicht notwendigerweise verzahnt. Es muß darauf achtgegeben werden, wenn eine flache (nicht verzahnte) primäre Partition 108 manipuliert wird, um eine logische Partition 108 zu erzeugen, weil die Änderung der Größe einer Partition und/oder das Verschieben von Daten notwendig sein kann, um Raum für die Verzahnung zu schaffen, ohne Anwenderdaten zu verlieren. Die Verbindungen zwischen den Boot-Datensätzen der erweiterten Partitionen müssen außerdem aktualisiert werden, wenn eine logische Partition 108 eingefügt oder gelöscht wird.

Aktive Partitionen 108 sind bootfähig. Den verborgenen Partitionen 108 ist unter verschiedenen DOS- und Windows-Marken-Betriebssystemen keine Laufwerkskennung zugeordnet. Einige Anwender 100 würden gern mehr als vier verschiedene bootfähige Partitionen 108 besitzen, wobei die verschiedenen Partitionen 108 verschiedene Betriebssysteme und/oder verschiedene Versionen eines Betriebssystems und/oder verschiedene Kopien der gleichen Versionen eines gegebenen Betriebssystems ausführen.

Eine neuartige Art, dies entweder mit einer virtuellen Umgebung 206 oder einer realen Maschine 210 als ein Paar oder lediglich mit einer realen Maschine 210 auszuführen, besteht darin, die Manipulation der Partitionen 108 mit dem Boot- Management wie folgt zu koordinieren. Der Anwender 100 wählt eine Partition 108 für das Booten aus. Falls die Partition 108 bereits eine primäre Partition ist, bootet der Boot-Manager von dieser Partition 108 in einer Weise, die den Fachleuten auf dem Gebiet bekannt ist. Falls die Partition 108 eine logische Partition 108 ist und einer der vier Einträge der Partitionstabelle 104 offen ist, wird die logische Partition 108 in eine primäre Partition 108 geändert und in die Partitionstabelle 104 eingetragen, die Größe der erweiterten Partition 108, die die frühere logische Partition 108 hält, wird so geändert, daß sie sie nicht enthält, wobei der Boot-Manager von der neuen primären Partition 108 bootet. Wenn kein Eintrag der Partitionstabelle 104 verfügbar ist, dann wird eine der nicht erweiterten primären Partitionen 108 in die erweiterte Partition 108 verschoben, sie wird dadurch eine logische Partition 108, wobei ein Eintrag 104 der Partitionstabelle für die Verwendung durch die Partition 108, von der zu booten ist, freigegeben wird.

Bei der Änderung der Partitionen 108 von logischen in primäre oder umgekehrt kann es notwendig sein, Partitionen 108 zu verschieben oder zu kombinieren, so daß nur eine erweiterte und nur vier oder weniger primäre Partitionen 108 vorhanden sind. Es wird z. B. eine Platte 106 betrachtet, die die Partitionen P1, P2, P3 und E in dieser Reihenfolge enthält, wobei Pn eine nicht erweiterte primäre Partition 108 ist, E ist eine erweiterte Partition 108, wobei E die logischen Partitionen 108 L1, L2, L3 und L4 in dieser Reihenfolge enthält. Um von L3 zu Booten, könnte die implementierende Software L3 und L4 zu primären Partitionen 108 machen, die logischen Partitionen 108 P2 und P3 in eine erweiterte Partition 108 umwandeln, die außerdem L1 und L2 enthält, und P1 lassen, wie sie ist. Die vier Einträge der Partitionstabelle 104 würden dann (i) P1, (ii) eine erweiterte Partition 108 (die P2, P3, L1 und L2 enthält), (iii) L3 und (iv) L4 kennzeichnen. L3 würde eine primäre Partition 108 werden, von der anschließend durch den Boot-Manager in einer bekannten Weise gebootet werden kann.

Ein ähnlicher Zugang wird jedoch nicht funktionieren, um von L1 zu booten, weil es nicht genug Einträge der Partitionstabelle 104 gibt. Als eine bootfähige primäre Partition 108 benötigt L1 einen Eintrag der Partitionstabelle 104. Es gibt drei Partitionen 108 vor L1 und drei nach ihr, wobei nur eine der zwei Gruppen aus drei Partitionen 108 in einer erweiterten Partition 108 zusammengefaßt werden kann, die nur einen Eintrag der Partitionstabelle 104 benötigt. Folglich würden fünf Einträge der Partitionstabelle 104 benötigt. Eine Lösung ist, L1 zu verschieben und dann in den vorausgehend beschriebenen Zugang zu verwenden, wobei sich L1 außerhalb der erweiterten Partitionen 108 befindet und genug der anderen Partitionen 108 innerhalb der erweiterten Partition 108 angeordnet sind, um die Anzahl der primären Partitionen 108 herunter auf vier zu bringen. Das Verschieben einer Partition 108 kann jedoch zeitraubend sein.

Eine weitere Lösung besteht darin, eine erweiterte Partitionstabelle 104 zu erzeugen, die nur durch den Boot-Manager verwendet wird. Unter Verwendung der erweiterten Partitionstabelle 104 verfolgt der Boot-Manager die sieben Partitionen 108. Zwei oder mehr der Partitionen 108 werden in einer Partition 108 in der durch die Betriebssysteme verwendeten regulären Partitionstabelle 104 kombiniert. Dies ist nur sicher, wenn die erweiterte Partitionstabelle 104 sorgfältig erhalten und immer während der Boot-Vorgänge auf sie Bezug genommen wird; nur der Boot-Manager würde verwendet werden, um die Maschinen zu booten. Ansonsten können die Daten des Anwenders 100 oder des Systems in einer Partition 108 beschädigt oder verloren werden, die in der erweiterten Partitionstabelle 104 aber nicht in der durch den Boot-Manager modifizierten regulären Partitionstabelle 104 erscheint.

Eine grundlegende Steuerschleife für das in Fig. 2 gezeigte System geht wie folgt vor. Zuerst initialisiert das System eines oder mehrere Objekte der virtuellen Partitionen in der Umgebung 206 durch das Lesen der Werte (Ort, Klasse, Größe, Datenträgerkennsatz usw. der Partition) von der realen Maschine 210. Die reale Maschine 210 sollte den MBR auf Konsistenz und eine richtige Signatur überprüfen. Als nächstes erhält die virtuelle Maschine 400 einen Anwenderbefehl durch die Anwenderschnittstelle 200. Sobald die beteiligte(n) Partition(en) 108 kennzeichnet ist (sind), werden die Grenzen der Partitionsmanipulation bestimmt und in das (die) Objekt(e) 412 und/oder 414 der virtuellen Grenzen eingebettet. Die virtuelle Partition 404, auf die eingewirkt wird, wird aktualisiert (dies ist bevorzugt, sie kann aber außerdem zerstört und durch ein neues Objekt mit den Werten nach der Manipulation ersetzt werden). Das (die) Objekt(e) 408 und 410 der virtuellen Dateisysteme werden zerstört, wobei eine neue Instanz mit dem spezifizierten Dateisystem an ihre Stelle gesetzt wird.

Ein gegebener Befehl des Anwenders 100 kann einer oder mehreren Operationen entsprechen. Typische Anwender spezifizieren die Befehle, während der Stapel- Manager 208 und die virtuelle Maschine 400 im allgemeinen anstatt Befehlen Operationen intern verwenden. Einem fortgeschrittenen Anwender 100 kann erlaubt werden, eine Liste der Befehle während des Schrittes 506 und/oder des Schrittes 512 zu manipulieren. Um den Unterschied zwischen Befehlen und Operationen zu veranschaulichen und um ebenfalls die anderen Aspekte der Erfindung zu veranschaulichen, sind die folgenden Beispiele bereitgestellt.

Beispiel eins

Es wird eine aktuelle Organisation der Platte 700 mit einer ersten Partition A, die bei 702 angezeigt ist, einer erweiterten Partition 704, dem freien Raum 706 und einer zweiten Partition 708 (oder mehreren Partitionen 108, wobei die zweite Partition 708 gezeigt ist) angenommen, die zu der im oberen Teil der Fig. 7 gezeigten ähnlich ist. Es wird ferner angenommen, daß der Anwender 100 wünscht, die erste Partition 702 in den freien Raum 706 zu erweitern, der sich rechts von dieser Partition 702 befindet. Der entsprechende Befehl des Anwenders 100 kann in der Form "erweiterte die Partition A um 50% nach rechts" oder "vergrößere A um 75 Megabytes" (wobei das Wachstum nach Vorgabe ein Wachstum nach rechts ist) erfolgen, oder der Anwender 100 kann den Befehl durch die graphische Anwenderschnittstelle 200 eingeben, in dem er die rechte Kante eines Rechtecks, das die Partition A darstellt, nach rechts zieht.

Die virtuelle Maschinenumgebung 206 und/oder der Stapel-Manager 208 können diesen einzelnen Anwenderbefehl in mehrere Operationen übersetzen, wie veranschaulicht ist. Die erste Operation ändert die Größe des freien Raumes 706, indem sie seine linke Kante verschiebt; dies ist hauptsächlich eine interne "Buchhaltungs"-Operation, sie kann aber außerdem dem Anwender 100 graphisch gezeigt werden, um den Fortschritt zum Abschluß des Befehls anzuzeigen. Die zweite Operation ändert die Größe der erweiterten Partition 704, weil ansonsten die Partition 702 teilweise innerhalb und teilweise außerhalb der erweiterten Partition 704 liegen würde, wobei dies die durch die Betriebssysteme gemachten Annahmen verletzen und den Daten des Anwenders einem Risiko aussetzen würde. Die ersten und zweiten Operationen können in einigen Ausführungsformen kombiniert sein. Das heißt, die Verschiebung der Grenze einer erweiterten Partition kann automatisch außerdem die entsprechende Grenze des freien Raumes verschieben, der an die Grenze der erweiterten Partition grenzt. Schließlich ändert eine dritte Operation die Größe der Partition 702 in den freigemachten Bereich.

Beispiel zwei

Es wird eine aktuelle Organisation der Platte 800 mit einer ersten Partition A, die bei 802 angezeigt ist, einer erweiterten Partition 804, dem freien Raum 806 und dem verwendeten Raum 808, der einer Partition B zugewiesen ist, und null oder mehr zusätzlichen Partitionen 108 angenommen, die zu der im oberen Teil der Fig. 8 gezeigten ähnlich ist. Es wird ferner angenommen, daß der Anwender 100 wünscht, die Partition 802 zu einem Ort in der erweiterten Partition 804 auf der linken Seite des verwendeten Raumes 808 zu verschieben. Der entsprechende Befehl des Anwenders 100 kann in der Form "verschiebe die Partition A auf die linke Seite von B" (wobei die Verschiebung über eine Grenze einer erweiterten Partition nach Vorgabe eine Verschiebung in die erweiterte Partition ist) erfolgen, oder der Anwender 100 kann den Befehl durch die graphische Anwenderschnittstelle 200 eingeben, in dem er das Rechteck, das die Partition A darstellt, in die gewünschte Position neben dem Rechteck, das B darstellt, zieht.

Die virtuelle Maschinenumgebung 206 und/oder der Stapel-Manager 208 übersetzen diesen einzelnen Anwenderbefehl in mehrere Operationen, wie veranschaulicht ist. Die erste Operation entfernt die Partition 404/806 mit freiem Raum; weil die Partition A größer als der freien Raum 806 ist, wird es nicht ausreichen, lediglich die Größe des freien Raumes 806 zu ändern. Dann wird die Größe der erweiterten Partition 804 geändert, um sowohl A (die sich immer noch an ihrem ursprünglichen Ort befindet) und die Partition(en) im verwendeten Raum 808 einzuschließen. Wenn der Befehl des Anwenders 100 "verwandle A in eine logische Partition" gewesen ist, dann könnten die Operationen an diesem Punkt anhalten.

Um die sich aus dem Befehl "verschiebe A auf die linke Seite von B" ergebenden Operationen fortzusetzen, wird die Partition 802 in den freien Raum verschoben, der durch das Objekt der gelöschten Partition 404 mit freiem Raum in der Umgebung 206 dargestellt wird. Es wird angemerkt, daß der neue Ort der Partition A den ursprünglichen Ort überlappt, deshalb muß darauf achtgegeben werden, die Daten in der richtigen Reihenfolge zu verschieben, um das Verlieren der Anwenderdaten zu vermeiden; ein Zugang beginnt an der rechten Kante von A und verschiebt die Daten von A in der Reihenfolge von rechts nach links, so daß die Daten im überlappten Bereich inzwischen verschoben sind, wenn dieser Bereich mit einer Kopie der Daten vom linken Ende der Partition A überschrieben wird. Die Größe der erweiterten Partition 804 wird dann abermals geändert, damit sie gut um die Partitionen A und B paßt; das vorgegebene Ergebnis setzt den neu freigegebenen Raum, der sich ansonsten an einem Ende einer erweiterten Partition befinden würde, außerhalb der erweiterten Partition 804. Schließlich wird ein neues Objekt 404/810 einer Partition mit freiem Raum erzeugt, um den Raum darzustellen, der nicht länger durch A belegt ist.

Alternative Ausführungsformen verwenden anderer Operationen und/oder Datenstrukturen, um das (die) gewünschte(n) Ergebnis(se) zu erreichen. Es wird z. B. angenommen, daß die in Fig. 8 veranschaulichten Zustände fortlaufend numeriert sind, wobei der Zustand 1 der im oberen Teil der Figur gezeigte Anfangzustand ist, der Zustand 2 ist der nächste Zustand usw. Ein alternativer Zugang wird den Zustand 2 beseitigen, würde die Strukturen 812 mit freiem Raum in den Zuständen 3 und 4 zeigen und würde den Zustand 5 beseitigen.

Es wird angenommen, daß ein kommerziell verfügbares Produkt, das unter dem Namen "Partition-It" von der Quarterdeck Corporation vertrieben wird, ebenfalls eine erweiterte Partition 108 vergrößern kann, um das Wachstum einer logischen Partition 108 aufzunehmen. Wenigstens bis zum 22. Juni 1998 war das Produkt jedoch offensichtlich nicht in der Lage, eine erweiterte Partition 108 zu verkleinern, um Raum für eine neue primäre Partition 108 außerhalb und neben der erweiterten Partition 108 zu schaffen.

Beim Ausführen der Verschiebung der Partition 404 bestimmt eine Implementierung der Erfindung die in den Informationen über die Strukturen 412, 414 erfaßten virtuellen Grenzen und zeigt diese Grenzen dem Anwender durch die Anwender schnittstelle 200 an. Die Verschiebung kann dann hinsichtlich des links oder rechts von einer vorhandenen Partition gewünschten freien Raumes spezifiziert werden. Das Objekt 404 der virtuellen Partition, das der verschobenen Partition 108 entspricht, wird demzufolge als ein Teil der Verschiebung aktualisiert.

Beispiel drei

Es können außerdem Dateisysteme umgewandelt werden, wie z. B. eine Umwandlung zwischen FAT12- oder FAT16- und FAT32-Dateisystemen, und eine Umwandlung von FAT- in NTFS- oder HPFS-Dateisysteme. In der Technik ist nur eine Umwandlung im Kontext einer realen Maschine 210 (keiner virtuellen Maschine 400) bekannt. Microsoft stellt z. B. ein Werkzeug bereit, um FAT-Partitionen in NTFS-Partitionen umzuwandeln, während PowerQuest die Umwandlung von FAT32 in FAT in seinem Produkt PartitionMagic® 3.0 (PARTITIONMAGIC ist ein eingetragenes Warenzeichen der PowerQuest Corporation) unterstützt.

Innerhalb der virtuellen Maschinenumgebung 206 umfaßt die Umwandlung die Zerstörung des Objekts 410 des virtuellen Dateisystems und seine Ersetzung durch eine Instanz eines Objekts 410 des virtuellen Dateisystems für das Ziel- Dateisystem; weitere Einzelheiten sind oben bereitgestellt. Wie die anderen Beispiele der Manipulation virtueller Partitionen 404 kann die Umwandlung in der virtuellen Maschinenumgebung 206 außerdem mit sich bringen, daß der Stapel- Manager 208 eine Liste aus einer oder mehreren Operationen für die mögliche spätere Ausführung durch die reale Maschine 210 (möglicherweise nach der Optimierung durch den Stapel-Manager 208 oder den Anwender 100) aufbauen muß.

Beispiel vier

Es ist eine FAT-Partition 404 in den freien Raum zu kopieren. Nachdem der Kopierbefehl abgeschlossen ist, werden zwei Kopien der Partition 404 in der virtuellen Maschinenumgebung 206 vorhanden sein, wobei zwei Kopien der Live- Partition 108 und ihrer Inhalte auf der Platte oder einem anderen Speichermedium 106 vorhanden sein werden, nachdem die Kopieroperation für die Platte 106 festgelegt worden ist.

In der virtuellen Umgebung 206 besitzt die FAT-Partition 108 eine entsprechende Struktur 404 der virtuellen Partition und eine zugeordnete Struktur 410 des virtuellen Dateisystems. Der freie Raum wird in der virtuellen Umgebung 206 als eine Partition 404 mit freiem Raum dargestellt, wobei er folglich eine eigene Struktur der virtuellen Partition und eine eigene zugeordnete Struktur 410 des virtuellen Dateisystems (die durch Vorgabe FAT spezifiziert) besitzt. Im Gegensatz stellen die unformatierten Partitionen 404 Partitionen 108 dar, die auf der Platte 106 vorhanden sind und einen Eintrag im MBR oder EPBR besitzen, wobei typischerweise ihr erster Sektor formatiert ist und den hexadezimalen Wert 0xF6 enthält. Anstatt eine Struktur einer Partition 404 zu löschen und dann eine neue zu erzeugen, wenn sich der logische/primäre Status ändert, aktualisieren die Kopieroperationen einfach die "Klassen"-Anzeige der Partition 404 mit freiem Raum, um sie logisch oder primär zu machen. Die Kopieroperationen zerstören außerdem das Objekt 410 des virtuellen Dateisystems der Partition mit freiem Raum (d. h. sie entfernen es aus jeder Liste der virtuellen Maschinenumgebung 206 und geben den durch es verwendeten Speicher frei), während sie für eine neue Instanz der C++-Klasse des virtuellen Dateisystems eine Instanz bilden, wobei sie die neue Instanz der aktualisierten Struktur der virtuellen Partition 404 zuordnen.

Am Ende des Partitions-Kopierbefehls tastet die Implementierung die Liste der virtuellen Umgebung 206 der Partitionen 404 ab, kennzeichnet den freien Raum und dokumentiert ihn, indem sie Paare aus der neuen virtuellen Partition 404 mit freiem Raum und dem Objekt 408 des virtuellen Dateisystems erzeugt, um die Konfiguration des freien Raumes darzustellen, nachdem die Partition kopiert worden ist. Ähnliche Abtastschritte und Schritte für das Dokumentieren des freien Raumes werden außerdem am Ende der Verschiebungs-, Erzeugungs- und Löschbefehle und anderer Manipulationsbefehle für die Partition 404 ausgeführt.

In einer Implementierung teilt der Abtastschritt die Platte 402 oder ein anderes Speichermedium in Segmente; eine Liste des Segmente wird nur für die interne Verwendung durch die virtuelle Maschine 400 in der virtuellen Umgebung 206 gespeichert. Die Segmentgrenzen sind an den Kanten der vorhandenen Partitionen 404, an Größengrenzen, die durch die Betriebssysteme auferlegt werden (z. B. die 1024-Zylindergrenze), und an den physikalischen Kanten der Platte 402 definiert. Jedes Segment ist als primär, erweitert oder logisch gekennzeichnet, wobei es außerdem als verwendet oder frei gekennzeichnet ist. Die Segmente, die "verzahnt" werden müssen, um Raum für einen MBR zu schaffen, sind so markiert. Schließlich werden Partitionen 404 mit freiem Raum aus entsprechenden freien Segmenten erzeugt. Das aufrechterhalten der Liste des Segmente macht es leichter, Partitionen 404 mit freiem Raum zu erzeugen und die Partitionen 404 während der Operationen zu manipulieren, wie z. B. denjenigen, die in Fig. 8 gezeigt sind, indem eine (von den virtuellen Partitionen 404) separate Struktur der Zustandinformationen geschaffen wird, die die Grenzen und die Partitions- "Klasse" zeigt.

Die Partitionserzeugung

Die Erzeugung einer Partition 404 wird ausgeführt, indem eine vorhandene Struktur einer Partition 404 mit freiem Raum genommen wird, und ihr Typ und ihre Position/Größe in die der Parameter geändert wird, die durch den Anwender 100 spezifiziert werden. Das zugeordnete Dateisystem-Objekt 410 wird zerstört, wobei ein neues für das spezifizierte Dateisystem erzeugt wird. Dieses Dateisystemobjekt 410 wird mit vorgegebenen Werten für den Typ und die Größe des Dateisystems erzeugt. Falls z. B. der Anwender 100 spezifiziert, daß eine neue FAT- Partition erzeugt wird, wird das Dateisystem mit der FAT, dem Wurzelverzeichnis usw. berechnet, die geeignete Größen für die Partitionsgröße besitzen. Während des Schrittes 504 werden sowohl die Sektoren, die durch das Dateisystem verwendet werden, als auch die freien Sektoren in der Partition 404 berechnet und dem Anwender 100 dargestellt.

Ein Verfahren, um dies auszuführen, besitzt ein Datenträgerobjekt, das sowohl die Partition als auch das Dateisystem darstellt, dies ist aber problematisch. Wenn eine neue Partition erzeugt wird, muß ein neues Datenträgerobjekt wiederholt erzeugt und zerstört werden, um eine neue Partition zu erzeugen, wobei es dann für den richtigen Typ formatiert werden muß. Die bevorzugte geteilte Architektur, die zuletzt oben erörtert ist, die das Partitionsobjekt behält und nur ein Objekt eines neuen Dateisystems löscht und eine Instanz eines Objekts eines neuen Dateisystems bildet, ist leichter und effizienter.

Die Partitionsformatierung

Die geteilte Architektur, die das Partitionsobjekt 404 vom Dateisystem-Objekt 410 trennt, macht außerdem das Formatieren einer virtuellen Partition 404 zu einer einfacheren Operation. Das System ändert einfach den Partitionstyp im MBR- Eintrag, wobei es für das spezifizierte Dateisystem ein Objekt 410 eines neuen Dateisystems löscht und eine Instanz eines Objekts 410 eines neuen Dateisystems anlegt. Dieses Objekt 410 eines neuen Dateisystems wird dann konfiguriert, um in der virtuellen Maschinenumgebung 206 die spezifischen Attribute des Dateisystems darzustellen.

Die Partitionsreplikation

Die Partitionsreplikation wird durch die bevorzugte geteilte Architektur ebenfalls leichter gemacht. Das Objekt 404 der Zielpartition wird geändert, um die Größe der Quellpartition 404 widerzuspiegeln, wobei das Dateisystem-Objekt 410 in das Objekt 410 der Zielpartition kopiert wird. Die Situationen, in denen die Laufwerksgeometrie in der Quelle anders als im Ziel ist, sollten erfaßt und behandelt werden. Die Größe der entsprechenden Partition 108 kann geändert werden müssen, aber die reale Maschine 210 behandelt dies. Alles was die virtuelle Maschine 400 tun muß, ist, die Größe der Zielpartitionen 404 zu validieren und die Grenzen 412 der ursprünglichen Partition zu replizieren.

Das Löschen einer Partition

Das Löschen einer Partition umfaßt das Löschen des Partitionsobjekts 404 und des zugeordneten Dateisystem-Objekts 410 und dann das Löschen und Regenerieren der Objekte des freien Raumes im System. Die Objekte 404 des freien Raumes sollten regeneriert werden, weil der neu erzeugte freie Raum einem weiteren Objekt des freien Raumes benachbart sein kann, die vereinigt werden sollten, um ein Partitionsobjekt 404 zu erzeugen, das den kombinierten freien Raum darstellt.

Das Ändern der Größe einer Partition

Diese Operation verwendet die von der realen Maschine 210 erhaltenen Informationen. Insbesondere werden für die Partitionen 404 die minimalen und maximalen Größen, die verwendeten Sektoren, und die verwendeten und verschwendeten Bytes der Partition berechnet, bevor die Größenänderung ausgeführt wird. Die verwendeten und verschwendeten Bytes werden als zusätzliche Informationen angesehen, die nur verwendet werden, wenn eine Clusteranalyse ausgeführt wird und sie nicht bereits aus der Partition 108 der Platte gelesen worden sind, falls sie nicht für die aktuelle Operation unbedingt notwendig sind.

Das Manipulieren einer erweiterten Partition mit dem Ändern der Größe der Partition

Die Operationen an einer erweiterten Partition 404 (die Erzeugung, falls sie nicht bereits vorhanden ist, das Löschen, falls die benachbarte primäre Partition eine leere erweiterte Partition überdeckt, oder die Änderung der Größe) werden während der Ausführung 516 der Manipulation ausgeführt, bevor irgendwelche anschließenden Operationen an den logischen oder primären Partitionen 108 beteiligt sind. Dies setzt die reale Maschine 210 in einen gültigen Zustand, um die Operation an der (den) spezifizierten logischen oder primären Partition(en) 108 auszuführen 516. Es muß achtgegeben werden, eine erweiterte Partition zu löschen, falls die Größe einer primären Partition geändert wird, um die erweiterte Partition zu überdecken.

Die Umwandlung des Dateisystems

Diese Operation nimmt die Informationen aus dem Objekt 410 des vorherigen Dateisystems und bestimmt die Parameter des Dateisystems für den neuen Typ des Dateisystems. Für Umwandlungen von FAT zu FAT32 wird eine Tabelle der verwendeten, minimalen und maximalen Sektoren für jede Clustergröße und jeden Typ des Dateisystems (FAT16 und FAT32) behalten und bei der Umwandlung verwendet, um die Parameter des neuen Dateisystems zu bestimmen. Die Umwandlungen von FAT in NTFS erfordern keine bedeutende Unterstützung in der virtuellen Maschinenumgebung 206, weil die Ausführungsform einfach das Umwandlungsprogramm von Microsoft Windows NT unmittelbar ausführt und dann die virtuelle Maschinenumgebung 206 neu initialisiert. Die Umwandlungen von FAT in HPFS müssen durch dateisystemspezifische Berechnungen an der Anzahl der Dateien und der Gesamtmenge der verwendeten Sektoren gehen, um die verwendeten und freien Sektoren nach der Umwandlung zu bestimmen.

Das Speichern einer Liste von Operationen

Die Speicherung ist während des Schrittes 508 für eine Kopie einer durch die virtuelle Maschine 400 erzeugten Liste der Operationen vorgesehen, um die Optimierung 512 und die Verifikation 514 zu erlauben. Da jeder Befehl durch die virtuelle Maschine 400 ausgeführt wird, wird eine Struktur geschrieben, die die Verifikationsinformationen über die vorhandene Partition 108 bereitstellt. Nachdem die virtuelle Maschine 400 ihre Operationen ausgeführt hat, kommuniziert sie mit dem Stapel-Manager 208, um die Liste der Operationen zu speichern, wobei sie ihm den notwendigen Parameter gibt, um die Operationen abzuschließen. Der Stapel-Manager 208 verwendet dann diese Informationen, um zu bestimmen, welche Befehle optimiert werden können. Eine Optimierung 512 entfernt die Operationen, die einander aufheben, wie z. B. das Löschen einer neu erzeugten Partition. Eine weitere Optimierung entfernt die Operationen, die durch spätere Operationen abgelöst werden, wie z. B. das Verschieben der gleichen Partition zweimal.

Das Rückgängigmachen

Eine einfache Operation, die einfach alles in der aktuellen Anwendersitzung rückgängig macht, kann implementiert werden, indem die virtuelle Maschinenumgebung 206 von den Strukturen 104, 108 der Platte neu initialisiert wird. Das schrittweise Rückgängigmachen ausgewählter Operationen erfordert, daß die Liste der Operationen gelesen wird und die letzte Operation rückgängig gemacht wird, indem die entgegengesetzte Operation ausgeführt wird (z. B. das Verbergen wird zu Rückgängigmachen des Aufhebens des Verbergens oder die Größenänderung kleiner wird zu Rückgängigmachen der Größenänderung größer). Weil die Liste der Operationen den Zustand "davor" der Partition speichert, wird dies leicht ausgeführt.

Die Umwandlung der Partitionsklassen

Um eine primäre Partition in eine logische Partition umzuwandeln, muß die primäre Partition benachbart zu einer erweiterten Partition stehen, oder es darf keine vorhandene erweiterte Partition 108 auf der Platte 106 geben. Falls die primäre Partition nicht verzahnt ist, muß zuerst die Größe der Partition geändert werden, um die Verzahnung hinzuzufügen, dann wird die erweiterte Partition erzeugt oder geändert, um die primäre Partition einzuschließen. Schließlich wird der MBR-Eintrag für die primäre Partition gelöscht, wobei ein entsprechender EPBR-Eintrag in der erweiterten Partition für die neue umgewandelte logische Partition erzeugt wird. Falls die umzuwandelnde primäre Partition die erste Partition auf der Platte 106 ist und einen Kopf vom Anfang der Platte beginnt, muß die Partition verschoben werden oder ihre Größe muß geändert werden, um einen Kopf nach dem Anfang des zweiten Zylinders auf der Platte zu beginnen, auf diese Weise beginnt die erweiterte Partition am Anfang eines Zylinders.

Um eine logische Partition in eine primäre Partition umzuwandeln, muß die logische Partition die erste oder die letzte Partition in der erweiterten Partition sein. Die erweiterte Partition wird einfach geändert, damit sie nicht länger die logische Partition einschließt, der EPBR-Eintrag wird gelöscht, wobei ein entsprechender Eintrag im MBR für die neu erzeugte primäre Partition erzeugt wird. Wenn die logische Partition allen verfügbaren Raum in der erweiterten Partition belegt hat, dann kann die erweiterte Partition außerdem gelöscht werden.

Zusammenfassung

Die vorliegende Erfindung schafft Werkzeuge und Techniken, um virtuelle Partitionen in einer virtuellen Maschinenumgebung zu manipulieren, oder notwendigerweise jede Partitionsmanipulation durch das wirkliche Modifizieren der Systemstrukturen der Platte festzulegen. Dies besitzt einige Vorteile. Es erlaubt den Anwendern, mit verschiedenen Manipulationen in einer sicheren und effizienten Weise zu experimentieren. Es erlaubt den Systemen gemäß der Erfindung, eine Folge von Operationen zu optimieren, indem dem System eine globalere Sicht auf das gegeben wird, was auszuführen ist. Es erlaubt außerdem den Anwendern, die Operationen in einer Stapelliste zu sammeln, die dann automatisch ausgeführt wird, ohne eine zusätzliche Anwendereingabe am Ende jedes Listeneintrags zu erfordern. Die vorliegende Erfindung integriert außerdem diese virtuellen Operationen mit vorhandenen Werkzeugen und Techniken, wie z. B. diejenigen, die durch das Programm Partition Magie 3.0 verwendet werden, während diese Werkzeuge und Techniken erweitert werden, indem die Fähigkeit des Anwenders verbessert wird, erweiterte Partitionen zu manipulieren, und indem eine bessere Unterstützung für Fern-Partitionsmanipulationen bereitgestellt wird.

Die Erzeugnisse innerhalb des Umfangs der vorliegenden Erfindung enthalten ein computerlesbares Programmspeichermedium in Verbindung mit der spezifischen physikalischen Konfiguration eines Substrats des Programmspeichermediums. Die Substratkonfiguration repräsentiert Daten und Befehle, die die Computer veranlassen, in einer spezifischen und vorgegebenen Weise zu arbeiten, wie hierin beschrieben ist. Die geeigneten Speichervorrichtungen enthalten Disketten, Festplatten, Bänder, CD-ROMs, RAM und andere durch einen oder mehrere Computer lesbare Medien. Jedes derartiges Medium verkörpert greifbar ein Programm, Funktionen und/oder Anweisungen, die durch die Maschinen ausführbar sind, um die Partitionsmanipulationen im wesentlichen so auszuführen, wie hierin beschrieben ist.

Obwohl spezielle Verfahren und Signalformate, die die vorliegende Erfindung verkörpern, hierin ausdrücklich veranschaulicht und beschrieben sind, wird offensichtlich sein, daß das die Ausführungsformen des Systems und des konfigurierten Programmspeichermediums entsprechend den Signalen und Verfahren der vorliegenden Erfindung gebildet werden können. Falls nicht ausdrücklich anders angegeben ist, erstrecken sich die Beschreibungen der Verfahren und Signale der vorliegenden Erfindung deshalb hierin auf entsprechende Systeme und konfigurierte Speichermedien, wobei die Beschreibungen der Systeme und Programmspeichermedien der vorliegenden Erfindung sich gleichermaßen auf entsprechende Verfahren und Signale erstrecken.

Wie hierin sie verwendet sind, schließen die Begriffe, wie z. B. "ein/einer/eine" und "der/die/das" und die Elementbezeichnungen, wie z. B. "Partition", eines oder mehrere der bezeichneten Elemente ein. Insbesondere bedeutet eine Bezugnahme auf ein Element in den Ansprüchen, daß wenigstens ein derartiges Element erforderlich ist. Wenn genau ein Element beabsichtigt ist, legt dieses Dokument diese Anforderung ausdrücklich dar.

Die Erfindung kann in anderen spezifischen Formen verkörpert sein, ohne von ihren wesentlichen Eigenschaften abzuweichen. Die beschriebenen Ausführungsformen sind in jeder Hinsicht nur als veranschaulichend und nicht als einschränkend zu betrachten. Die Überschriften dienen nur der Zweckmäßigkeit.


Anspruch[de]

1. Verfahren zum Manipulieren von Live-Partitionen oder wirklichen Partitionen auf einem physikalischen nichtflüchtigen Computerspeichermedium (106), gekennzeichnet durch die folgenden Schritte:

Darstellen von Live-Partitionen durch virtuelle Partitionen (404), die während des Gebrauchs im Computerspeicher gehalten werden;

Erhalten (500) wenigstens eines Anwenderbefehls von einem Anwender (100), wobei jeder Anwenderbefehl wenigstens einer erwünschten Operation in einer virtuellen Partition (404) entspricht, wobei jede virtuelle Partition wenigstens anfangs einer Live-Partition (108) entspricht;

Simulieren (502) der Ausführung wenigstens einer der erwünschten Partitionsoperationen, um durch Manipulieren der virtuellen Partition Simulationsergebnisse zu erhalten, ohne unbedingt die Systemstrukturen (104) der Platte, die die Live-Partition spezifizieren, zu modifizieren; und

Bereitstellen (504) der Simulationsergebnisse für den Anwender.

2. Verfahren nach Anspruch 1, bei dem der Bereitstellungsschritt (504) die Simulationsergebnisse einem Anwender in Form eines Computers durch eine Datenübertragung und/oder einem menschlichen Anwender durch eine Anzeige in einer Anwenderschnittstelle (200) bereitstellt.

3. Verfahren nach Anspruch 1, das ferner den Schritt umfaßt, bei dem die Manipulation der Live-Partition durch Modifizieren wenigstens einer Systemstruktur der Platte ausgeführt wird, wobei die Systemstruktur der Platte die Live- Partition auf dem nichtflüchtigen Computerspeichermedium (106) und/oder die Größe der Live-Partition in Sektoren und/oder die Clustergröße der Live-Partition und/oder die Tatsache, ob die Live-Partition eine erweiterte Partition ist, spezifiziert und/oder ein in der Live-Partition verwendetes Dateisystem spezifiziert.

4. Verfahren nach Anspruch 1, bei dem der Erhaltungsschritt (500) das Erhalten des Befehls in interaktiver Weise von einem Anwender (100) umfaßt.

5. Verfahren nach Anspruch 1, bei dem der Anwenderbefehl von einem entfernten Anwender über eine Kommunikationsverbindung erhalten wird, wobei der Computer (304/308), an dem das nichtflüchtige Computerspeichermedium angebracht ist, lokal ist, und bei dem der Simulationsschritt (502) in Reaktion auf den Befehl des entfernten Anwenders lokal oder entfernt wenigstens eine Operation, die lokal ausgeführt werden kann, simuliert.

6. Verfahren nach Anspruch 1, bei dem der Anwenderbefehl von einem entfernten Anwender über eine Kommunikationsverbindung erhalten wird, wobei der Computer (304/308), an dem das nichtflüchtige Computerspeichermedium angebracht ist, entfernt ist, und bei dem der Simulationsschritt (502) in Reaktion auf den Befehl des entfernten Anwenders lokal oder entfernt wenigstens eine Operation, die entfernt ausgeführt werden kann, simuliert.

7. Verfahren nach Anspruch 1, bei dem der Simulationsschritt (502) umfaßt:

Erzeugen einer simulierten Partition und/oder

Erzeugen einer simulierten logischen Partition und/oder

Erzeugen einer simulierten primären Partition (108, 702) und/oder

Erzeugen einer simulierten erweiterten Partition (108, 704) und/oder

Formatieren einer simulierten Partition und/oder

Replizieren einer simulierten Partition und/oder

Löschen einer simulierten Partition und/oder

Ändern der Größe einer simulierten Partition durch Ändern der Anzahl von Sektoren in einer simulierten Partition und/oder

Ändern der Größe einer simulierten Partition durch Ändern der Clustergröße einer simulierten Partition und Ändern der Wurzelverzeichnisgröße einer simulierten Partition und/oder

Ändern der Größe einer simulierten Partition durch Ändern der Größe einer simulierten erweiterten Partition in Verbindung mit der Änderung der Größe einer simulierten logischen Partition innerhalb der simulierten erweiterten Partition und/oder

Ändern der Größe einer simulierten Partition durch Ausdehnen einer simulierten erweiterten Partition in den freien Raum, der durch die Manipulation einer simulierten Partition außerhalb der simulierten erweiterten Partition erhalten wird, und/oder

Umbenennen einer simulierten Partition.

8. Verfahren nach Anspruch 1, bei dem der Simulationsschritt (502) die Umwandlung einer simulierten Partition durch Ändern des Dateisystemtyps einer simulierten Partition umfaßt.

9. Verfahren nach Anspruch 8, bei dem die Umwandlung den Dateisystemtyp zwischen FAT16- und FAT32-Dateisystemen ändert.

10. Verfahren nach Anspruch 8, das ferner den Schritt des Anzeigens einer Angabe des freien Raums der simulierten Partition nach der Umwandlung umfaßt.

11. Verfahren nach Anspruch 8, das ferner den Schritt des Anzeigens einer Angabe des belegten Raums der simulierten Partition nach der Umwandlung umfaßt.

12. Verfahren nach Anspruch 1, bei dem der Simulationsschritt (502) das Ändern des verborgenen Status und/oder des aktiven Status einer simulierten Partition umfaßt.

13. Verfahren nach Anspruch 1, bei dem der Simulationsschritt (502) für einen Schritt des Verifizierens der Integrität und der Konsistenz von Live-Daten des internen Dateisystems einen Platzhalter in eine Liste erwünschter Partitionsoperationen einfügt.

14. Verfahren nach Anspruch 1, bei dem der Simulationsschritt (502) für einen Schritt des Prüfens schlechter Sektoren in einer Live-Partition einen Platzhalter in eine Liste erwünschter Partitionsoperationen einfügt.

15. Verfahren nach Anspruch 1, das ferner die Schritte des Erhaltens einer Partitionsbeschränkung vom Anwender und des Erzwingens der Partitionsbeschränkung während des Simulationsschrittes umfaßt.

16. Verfahren nach Anspruch 15, bei dem die Partitionsbeschränkung spezifiziert, ob eine Partition verschoben werden kann und/oder ob die Größe einer Partition geändert werden kann.

17. Verfahren nach Anspruch 1, bei dem der Simulationsschritt (502) eine Datenstruktur einer virtuellen Maschinenumgebung (206) in einem Computerspeicher aktualisiert und das Verfahren ferner das Speichern der Datenstruktur der virtuellen Maschinenumgebung in einem Permanentspeicher als Anwenderdaten umfaßt.

18. Verfahren nach Anspruch 1, das ferner den Schritt des Editierens (506) einer Liste von erwünschten Partitionsoperationen umfaßt.

19. Verfahren nach Anspruch 18, das ferner den Schritt des Speicherns (508) der Liste erwünschter Partitionsoperationen in einem Permanentspeicher als Anwenderdaten umfaßt.

20. Verfahren nach Anspruch 18, bei dem der Editierschritt (506) ein interaktives Editieren durch den Anwender umfaßt.

21. Verfahren nach Anspruch 20, bei dem das interaktive Editieren wenigstens eine Operation, die vorher vom Anwender spezifiziert wurde, rückgängig macht.

22. Verfahren nach Anspruch 18, bei dem der Editierschritt (506) eine computerimplementierte Optimierung (512) der Liste umfaßt, um die für die Ausführung der Liste erforderliche Zeit zu verringern.

23. Verfahren nach Anspruch 22, bei dem die Optimierung (512) eine erste Menge aus einer oder mehreren Partitionsoperationen, die durch eine zweite späterer Menge aus einer oder mehreren Partitionsoperationen redundant gemacht wird, entfernt.

24. Verfahren nach Anspruch 22, bei dem die Optimierung (512) das Ausmaß der Datenverschiebung, die durch eine Menge von Partitionsoperationen gefordert wird, verringert.

25. Verfahren nach Anspruch 1, das ferner den computerimplementierten Schritt des Optimierens (512) der Liste erwünschter Partitionsoperationen umfaßt, um die Nutzung der Speichervorrichtung zu optimieren.

26. Verfahren nach Anspruch 25, bei dem die optimierte Liste erlaubt:

Neuverteilen des freien Raums auf die Speichervorrichtung und/oder

Erhöhen des freien Raums in der Speichervorrichtung durch Verringern der Clustergröße und/oder

Erhöhen des freien Raums in der Speichervorrichtung durch Umwandeln des Dateisystemtyps und/oder

Spezifizieren des freien Raums und dann Erzeugen einer Betriebssystem- Partition für die Installation eines Betriebssystems und/oder

Hinzufügen der Betriebssystem-Partition zu einer Bootmanager-Struktur.

27. Verfahren nach Anspruch 1, das ferner einen der folgenden Schritte umfaßt:

Verifizieren der Integrität der Konsistenz von Live-Daten eines internen Datensystems,

Verifizieren der Integrität und der Konsistenz der Partitionsgröße und der Position relativ zu einer Speichervorrichtungsgrenze und/oder

Verifizieren der Integrität und der Konsistenz der Partitionsgröße und der Position relativ zu einer weiteren Partition.

28. Verfahren nach Anspruch 3, das ferner einen Teil des Schrittes des Ausführens (516) der Manipulation der Live-Partition umfaßt, wobei der Ausführungsschritt unterbrochen wird.

29. Verfahren nach Anspruch 28, bei dem der Computer zwangsläufig neu gebootet wird, bevor der Ausführungsschritt (516) abgeschlossen ist.

30. Computerprogramm, das, wenn es auf einem Computer oder einem Computernetz läuft, die Schritte nach einem der Verfahrensansprüche 1 bis 29 ausführen kann.

31. Computerprogramm nach Anspruch 30, das auf einem computerlesbaren Speichermedium ausgeführt ist.

32. System zum Manipulieren von Live-Partitionen oder wirklichen Partitionen auf einem physikalischen nichtflüchtigen Computerspeichermedium (106), gekennzeichnet durch:

eine Schnittstelle (200) zum Erhalten eines Befehls von einem Anwender (100), wobei der Befehl wenigstens einer erwünschten Partitionsoperation entspricht, und zum Bereitstellen von Simulationsergebnissen für den Anwender;

wenigstens einen Prozessor; und

einen Speicher, auf den der Prozessor zugreifen kann und der durch Daten, die Live-Partitionen durch virtuelle Partitionen (404) darstellen, und durch Befehle, die eine Struktur einer virtuellen Maschinenumgebung (206) bilden, konfiguriert ist, wobei das System die Ausführung wenigstens einer erwünschten Partitionsopera tion simuliert.

33. System nach Anspruch 32, das ferner eine reale Maschine (210) für die Manipulation von Live-Partitionen (108) in einem nichtflüchtigen Computerspeichermedium (106) umfaßt, wobei die reale Maschine in einer betriebsfähigen Kommunikation mit dem System steht und Befehle, die vorher über die Schnittstelle (200) an die virtuelle Maschinenumgebung (206) geliefert werden, akzeptiert.

34. System nach Anspruch 33, bei dem die reale Maschine (210) ein Anwendungsprogramm, das in einer Betriebsart der abwechselnden Ausführung läuft, umfaßt.

35. System nach Anspruch 33, wobei das System einen Stapel-Manager (208) umfaßt, der an die reale Maschine (210) eine Liste von Operationen liefert.

36. System nach Anspruch 32, bei dem die Schnittstelle (200) eine Kommunikationsverbindung für die Kommunikation mit einem entfernten Computer umfaßt.

37. System nach Anspruch 36, bei dem das Speichermedium direkt am selben Computer wie die Datenstruktur der virtuellen Maschine (400) oder direkt an dem entfernten Computer angebracht ist.

38. System nach Anspruch 32, bei dem die Struktur der virtuellen Maschinenumgebung (206) umfaßt:

eine virtuelle Partition (404) und/oder

ein virtuelles Laufwerk (402) und/oder

ein Objekt (408) eines virtuellen Dateisystems und/oder

ein Objekt (412) der Grenzen des virtuellen Dateisystems.

39. System nach Anspruch 32, wobei das System eine Einrichtung für die Ausführen der Erzeugung einer Live-Partition umfaßt.

40. System nach Anspruch 39, bei dem die Einrichtung für die Ausführung der Erzeugung einer Live-Partition eine Live-Partition auf einem entfernten Computer über eine Kommunikationsverbindung erzeugt.

41. System nach Anspruch 33, wobei das System eine Einrichtung zum Simulieren der Replikation einer Partition umfaßt.

42. System nach Anspruch 41, wobei das System ferner eine Einrichtung zum Ausführen der Replikation einer Live-Partition umfaßt.

43. System nach Anspruch 42, bei dem die Einrichtung zum Ausführen der Replikation der Live-Partition eine Live-Partition auf einem entfernten Computer über eine Kommunikationsverbindung repliziert.

44. System nach Anspruch 33, wobei das System eine erwünschte Partitionsoperation der Änderung der Größe einer Partition ausführt durch:

Ändern der Anzahl von Sektoren in einer simulierten Partition und/oder

Ändern der Anzahl von Sektoren in einer Live-Partition auf dem nichtflüchtigen Computerspeichermedium und/oder

Ändern der Größe der Live-Partition auf einem entfernten Computer über eine Kommunikationsverbindung.

45. System nach Anspruch 33, wobei das System eine erwünschte Partitionsoperation der Änderung der Größe der Partition durch Ändern der Clustergröße einer simulierten Partition simuliert.

46. System nach Anspruch 45, wobei das System ferner eine Einrichtung zum Ausführen der Änderung der Größe einer Live-Partition durch Ändern der Clustergröße einer Live-Partition umfaßt.

47. System nach Anspruch 46, bei dem die Einrichtung zum Ausführen der Änderung der Größe der Live-Partition die Größe der Live-Partition auf einem entfernten Computer über eine Kommunikationsverbindung ändert.

48. System nach Anspruch 32, das ferner eine Einrichtung zum Editieren (506) einer Liste erwünschter Partitionsoperationen umfaßt.

49. System nach Anspruch 48, bei dem die Einrichtung zum Editieren (506) einer Liste erwünschter Partitionsoperationen eine computerimplementierte Einrichtung zum Optimieren (512) der Liste umfaßt, um die für die Ausführung der Liste erforderliche Zeit zu verringern.

50. System nach Anspruch 32, das ferner eine Einrichtung zum Koordinieren der Partitionsmanipulation mit Bootmanagement umfaßt, wobei ein Anwender eine zu bootende Live-Partition auswählt; falls die ausgewählte Partition bereits eine primäre Partition ist, bootet der Bootmanager aus dieser Partition; falls die ausgewählte Partition eine logische Partition ist und ein Partitionstabelleneintrag geöffnet ist, wird die ausgewählte logische Partition zu einer primären Partition geändert und in die Partitionstabelle eingegeben, wobei die Größe einer erweiterten Partition, die die frühere logische Partition hält, so geändert wird, daß sie sie nicht enthält, und der Bootmanager aus der neuen primären Partition bootet; und falls kein Partitionstabelleneintrag verfügbar ist, wird die nicht erweiterte primäre Partition in die erweiterte Partition bewegt, so daß sie eine logische Partition wird, und wird ein Partitionstabelleneintrag freigegeben, um von der ausgewählten Partition, die gebootet werden soll, verwendet zu werden.

51. System nach Anspruch 32, das wenigstens zwei Computer umfaßt, die über eine Kommunikationsverbindung verbunden sind, wobei die Schnittstelle (200) wenigstens teilweise auf einem der Computer läuft und die virtuelle Maschinenumgebung (206) wenigstens teilweise in dem anderen Computer vorhanden ist.

52. System nach Anspruch 32, wobei das System umfaßt:

eine Einrichtung zum Umwandeln einer primären Partition in eine logische Partition und/oder

eine Einrichtung zum Umwandeln einer logischen Partition in eine primäre Partition.







IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com