-
GEBIET DER ERFINDUNG
-
Diese Erfindung betrifft computerimplementierten Datenspeicher und insbesondere die Defragmentierung von Daten in Bezug auf einen derartigen Datenspeicher.
-
HINTERGRUND DER ERFINDUNG
-
Das Aktualisieren eines Datenspeichers auf seriellen Einheiten eines Datenspeichersystems, für das Plattenspeicher- und RAID-(Redundant Array of Independent Disks)Systeme zwei Beispiele sind, führt typischerweise dazu, dass ein als Fragmentierung bekanntes Phänomen auftritt. Wenn zum Beispiel eine Datei wie ein Dataset erstmals erstellt wird, veranlasst das computerimplementierte System, dass die Datei einem zusammenhängenden Bereich zugeordnet wird, wie beispielsweise einer Serie von Spuren oder Zylindern auf dem Platten- oder RAID-System, sofern es möglich ist, den zusammenhängenden Bereich zu erhalten. Wenn der Benutzer jedoch Daten zu Daten einer ersten Datei hinzufügt oder sie aktualisiert, wird für die Hinzufügung oder Aktualisierung zusätzlicher Speicherplatz an einem weiteren physischen Speicherort auf der Platte zugeordnet und der veraltete Teil der Datei kann gelöscht werden, was zu einer Fragmentierung der Daten sowohl der ursprünglichen Datei aufgrund der Löschung als auch der hinzugefügten oder aktualisierten Daten aufgrund der Platzierung der Daten führt.
-
Je mehr Daten und Dateien hinzugefügt, gelöscht und geändert werden, desto mehr nimmt die Fragmentierung im Laufe der Zeit zu. Daher wurden Defragmentierungsalgorithmen entwickelt, um die fragmentierten Daten zu analysieren und Daten so zu verschieben, dass Abschnitte von Daten zum Reorganisieren der Daten in gelöschten Bereichen platziert werden, wodurch die Daten zusammenhängender werden und in der richtigen Abfolge stehen. Zu einigen der zahlreichen Beispiele von Defragmentierungsalgorithmen zählen „Real Time Defrag” von Dino Software, „Compaktor” von Computer Associates und „DFDSS Defrag” von International Business Machines Corp.
-
Hierin wird der Begriff „freier Speicherplatz” als fachtechnischer Begriff für Speicherplatz bezeichnet, dessen Daten gelöscht wurden oder für hinzugefügten Speicherplatz ohne Daten, wodurch der Platz „frei” und für die Verwendung zum Speichern von Daten verfügbar gemacht wird.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Verfahren, Datenspeichersysteme und Computerprogrammprodukte werden bereitgestellt, um auf Anforderungen zur Defragmentierung von Daten eines Datenspeichersystems zu reagieren.
-
In einer Ausführungsform wird in einem computerimplementierten Datenspeichersystem, das mindestens eine Speichersteuerung und Datenspeicher aufweist, in dem Daten in Form von Datenträgern gespeichert sind, wobei mindestens eine Vielzahl von Datenträgern zumindest einigen freien Speicherplatz hat und eine Gruppierung einer Vielzahl von Datenträgern einen Pool aufweist, Folgendes ausgeführt:
Starten der Migration von Daten aus einem Pool, um weiteren freien Speicherplatz zu erzeugen;
im Anschluss an die Migration von Daten Berechnen der Fragmentierung von Daten des Pools;
Ermitteln der Menge von vorhandenem freiem Speicherplatz des Pools;
Vergleichen der Menge von vorhandenem freiem Speicherplatz mit einem Schwellenwert für freien Speicherplatz, wobei der Schwellenwert für freien Speicherplatz mit der berechneten Fragmentierung in Beziehung steht;
wenn der Vergleich angibt, dass die Menge von freiem Speicherplatz unter dem Schwellenwert liegt, Hinzufügen von Überlaufdatenträgern zu dem Pool; und
andernfalls unverändertes Beibehalten des Pools, ohne Überlaufdatenträger hinzuzufügen; und
Starten der Defragmentierung des Pools.
-
In einer weiteren Ausführungsform werden die Überlaufdatenträger, sofern vorhanden, zusätzlich als temporäre Datenträger identifiziert, und im Anschluss an die Defragmentierung des Pools werden die Überlaufdatenträger aus dem Pool entfernt.
-
In noch einer weiteren Ausführungsform, in welcher der Schwellenwert für freien Speicherplatz einen Soll-Schwellenwert aufweist, korrigiert die berechnete Fragmentierung den Schwellenwert für freien Speicherplatz so, dass der Schwellenwert für freien Speicherplatz entweder erhöht oder verringert wird.
-
In einer weiteren Ausführungsform weist die Korrektur einen Wertebereich auf.
-
In noch einer weiteren Ausführungsform wird der Wertebereich so korrigiert, dass er in Bezug auf einen Index der berechneten Fragmentierung zwischen den Werten liegt.
-
In einer weiteren Ausführungsform wird der Schwellenwert für freien Speicherplatz (T) gemäß einer Formel festgelegt: (T) = (Gesamtspeicherkapazität des Pools) × (Soll-Schwellenwert) × {Bereich von 0,5 bis 1,5} wobei der Wert innerhalb des Bereichs auf einem Index der berechneten Fragmentierung beruht.
-
In einer weiteren Ausführungsform ist der Index der berechneten Fragmentierung ein Wert von 0 bis 1,0, der am Ende des Bereichs hinzugefügt wird.
-
In noch einer weiteren Ausführungsform ist die berechnete Fragmentierung ein Verhältnis einer geschätzten Anzahl von Fragmenten zu der Datenspeicherkapazität des Pools.
-
In einer weiteren Ausführungsform weisen die Daten Datenträger mit einer Vielzahl von Datasets auf, wobei die Datasets jeweils mindestens einen Datenbereich aufweisen, und wobei die geschätzte Anzahl von Fragmenten aus der Anzahl von Datenbereichen des Pools abzüglich der Anzahl von Datasets des Pools ermittelt wird.
-
Für ein umfassenderes Verständnis der vorliegenden Erfindung sollte auf die folgende ausführliche Beschreibung in Verbindung mit den begleitenden Zeichnungen Bezug genommen werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Übersichtsblockschaubild, das eine Ausführungsform eines computerimplementierten Systems zeigt, das aus verschiedenen Typen von Einheiten zur Datenverarbeitung und Datenspeicherung gebildet wird;
-
2 ist ein Übersichtsblockschaubild, das eine Ausführungsform eines computerimplementierten Systems zum Bereitstellen von Defragmentierung von mindestens einer der Datenspeichereinheiten von 1 zeigt;
-
3 ist ein Ablaufplan, der ein beispielhaftes Verfahren des Betriebs des Systems von 1 und 2 darstellt;
-
4 ist eine schematische Veranschaulichung von Datenträgern für Daten in dem System von 1 und 2; und
-
5 ist eine weitere schematische Veranschaulichung von Datenträgern für Daten in dem System von 1 und 2.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Diese Erfindung wird in bevorzugten Ausführungsformen in der folgenden Beschreibung unter Bezugnahme auf die Figuren beschrieben, in denen gleiche Bezugszahlen für dieselben oder ähnliche Elemente stehen. Obwohl diese Erfindung im Sinne des besten Modus für das Erreichen der Zielsetzungen dieser Erfindung beschrieben wird, ist dem Fachmann klar, dass hinsichtlich dieser Lehren Variationen vorgenommen werden können, ohne vom Gedanken oder Schutzumfang der Erfindung abzuweichen.
-
Unter Bezugnahme auf 1 wird ein Beispiel für ein computerimplementiertes System 100 veranschaulicht. Das System ist eines von vielen computerimplementierten Systemen, die die vorliegende Erfindung umsetzen können, um zeitpunktgesteuerte Kopien von Daten während der Defragmentierung von mindestens einer der Datenspeichereinheiten in dem System bereitzustellen. Die Systemarchitektur 100 wird dargestellt, um die verschiedenen Typen von Datenverarbeitungseinheiten zu zeigen, die aus der hierin offenbarten Vorrichtung und den offenbarten Verfahren Nutzen ziehen können. Die Systemarchitektur 100 wird nur zu Beispielzwecken dargestellt und soll keinesfalls einschränkend sein. Die hierin offenbarte Vorrichtung und die offenbarten Verfahren können auf eine große Vielfalt von verschiedenen Datenverarbeitungseinheiten angewendet werden und sind nicht auf die hierin veranschaulichten beschränkt.
-
Wie gezeigt, enthält die beispielhafte Systemarchitektur 100 einen oder mehrere Computerprozessoren 102, 106, die durch ein Netzwerk 104 miteinander verbunden sind. Das Netzwerk 104 kann zum Beispiel ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), das Internet, ein Intranet oder dergleichen enthalten. In gewissen Ausführungsformen können zu den Computerprozessoren 102, 106 sowohl Client-Computerprozessoren 102 als auch Server-Computerprozessoren 106 gehören. In dem Beispiel starten die Client-Computer 102 Kommunikationssitzungen, wogegen die Server-Computerprozessoren 106 auf Anforderungen von den Client-Computerprozessoren 102 warten. In gewissen Ausführungsformen können die Computerprozessoren 102 und/oder Server-Prozessoren 106 mit einem oder mehreren internen oder externen Datenspeichersystemen 112 verbunden sein (z. B. mit Festplattenlaufwerken, Solid-State-Laufwerken, Bandlaufwerken, Bibliotheken usw.). Diese Computerprozessoren 102, 106 und direkt angeschlossene Speichersysteme 112 können unter Verwendung von Protokollen wie ATA, SATA, SCSI, SAS, Fibre Channel oder dergleichen Daten austauschen.
-
Die Systemarchitektur 100 kann in gewissen Ausführungsformen hinter den Server-Prozessoren 106 ein Speichernetzwerk 108 enthalten, wie beispielsweise ein Speicherbereichsnetzwerk (SAN) oder ein LAN (z. B. wenn ein über ein Netzwerk angeschlossener Speicher verwendet wird). Dieses Netzwerk 108 kann die Server-Prozessoren 106 mit einem oder mehreren Datenspeichersystemen 110 verbinden, wie z. B. Arrays 110a von Festplattenlaufwerken oder Solid-State-Laufwerken einschließlich RAID-(Redundant Array of Independent Disks)Anordnungen, Bandbibliotheken 110b, einzelnen Festplattenlaufwerken 110c oder Solid-State-Laufwerken 110c, Bandlaufwerken oder Bibliotheken 110d, CD-ROM-Bibliotheken, virtuellen Bandbibliotheken oder dergleichen. Für den Zugriff auf ein Speichersystem 110 kann ein Server-Prozessor 106 über physische Verbindungen Daten von einem oder mehreren Anschlüssen auf dem Server-Prozessor 106 mit einem oder mehreren Anschlüssen auf dem Speichersystem 110 austauschen. Eine Verbindung kann über einen Vermittlungsstelle, eine Struktur, eine Direktverbindung oder dergleichen erfolgen. In gewissen Ausführungsformen können die Server-Prozessoren 106 und Speichersysteme 110 Daten unter Verwendung eines Netzwerkstandards wie Fibre Channel (FC) austauschen.
-
Unter Bezugnahme auf 2 wird eine Ausführungsform eines computerimplementierten Systems 200 zum Bereitstellen von Datenbearbeitung für die Bereitstellung von Defragmentierung für mindestens eine der Datenspeichereinheiten von 1 veranschaulicht. Das computerimplementierte System 200 kann in allen Einheiten oder Systemen von 1 umgesetzt werden, einschließlich einem Client-System 102, einem Server-Prozessor 106, einem Speichersystem 110 und einem angeschlossenen Speicher 112, oder in einem anderen computerimplementierten System, das über das Netzwerk 104 verbunden ist. Wie gezeigt, weist das computerimplementierte System 200 ein oder mehrere Module zum Bereitstellen der Datenbearbeitung auf. Die Module können sich in einem oder mehreren Computerprozessoren und einem oder mehreren zugehörigen, von einem Computer verwendbaren Speichermedium befinden, das einen nichtflüchtigen, von einem Computer verwendbaren Programmcode aufweist, der darin eingebettet ist. Die Details der Computerprozessoren und von einem Computer verwendbaren Speichermedien werden hierin im Folgenden erörtert. Das computerimplementierte System 200 kann Befehle, Informationen und den vom Computer verwendbaren Programmcode empfangen und Befehle, Benachrichtigungen und Informationen für einen oder mehrere Hosts oder Host-Terminals 206 bereitstellen. Diese Module können in eine Speichersteuerung 210 integriert sein oder Anwendungen einer Speichersteuerung 210 enthalten, wobei sie eine eigenständige Einheit aufweisen oder einen Abschnitt des Hosts, Server-Prozessors, Speichersystems oder angeschlossenen Speichers aufweisen.
-
Die Module können ein Modul 220 aufweisen, das mit dem Host-System und der Defragmentierungsanwendung eine Schnittstelle bildet, und ein Modul 230, das mit dem Datenspeicher 240 eine Schnittstelle bildet, der eine oder mehrere Speichereinheiten aufweist, deren Daten durch die Defragmentierungsanwendung defragmentiert werden, und weitere Datenträger aufweist, die keine aktiven Daten haben.
-
Obwohl die Module und andere Elemente gruppiert veranschaulicht sind, können sie auf verschiedene Computerprozessoren und Systeme verteilt sein, wie oben erörtert.
-
In einer Ausführungsform weisen die Daten des Datenspeichers 240 einen oder mehrere Pools von Datenträgern mit einer Vielzahl von Datasets auf, wobei die Datasets jeweils mindestens einen Datenbereich haben.
-
Unter anderem wird durch die Speichersteuerung 210 ein Antwortmodul 250 umgesetzt, das auf Befehle antwortet und über die Schnittstelle 220 Informationen für den Host 206 anfordert und Informationen von diesem empfängt. Ein Datenverwaltungsmodul 260 ruft einen Datenverwaltungsprozess auf, wie z. B. „HSM” von International Business Machines Corp., der Daten aus einem Typ von Datenspeicher in einen anderen verschiebt. Zum Beispiel sucht „HSM” nach Daten, die über längere Zeit nicht geändert wurden, um einen bestimmten Schwellenwert zu erfüllen, und verschiebt sie in eine weniger aktive Ebene des Datenspeichers, beispielsweise aus einer RAID-Anordnung von Festplattenlaufwerken in eine Bandbibliothek.
-
Die Datenverwaltung wird hierin in Bezug auf einen gesamten Datenpool ausgeführt.
-
Ein Modul für freien Speicherplatz 270 legt die Fragmentierung des Pools von Daten fest, ermittelt die Menge von vorhandenem freiem Speicherplatz im Pool und führt verschiedene Aktionen in Bezug auf die Fragmentierung und den freien Speicherplatz aus.
-
Ein Defragmentierungsmodul 280 startet die Defragmentierung, zum Beispiel durch Aufrufen eines Defragmentierungsprozesses wie „Real Time Defrag” von Dino Software, „Compaktor” von Computer Associates und „DFDSS Defrag” von International Business Machines Corp. Das Defragmentierungsmodul kann einem Benutzer gestatten, Optionen in Bezug auf den Defragmentierungsprozess für den Pool auszuwählen. Der Benutzer kann Objekte auswählen, die defragmentiert werden sollen sowie die Platzierung von einigen der durch den Defragmentierungsprozess verschobenen Datenobjekte im Pool.
-
Der Datenspeicher 240 kann, wie oben erörtert, einen oder mehrere Datenspeicherpools mit jeweils einer Vielzahl von Datenträgern aufweisen. Die weiteren Datenträger, die eventuell keine aktiven Daten haben, können in einer Ausführungsform eine Anzahl von „Überlauf”-Datenträgern 290 aufweisen, die Datenträger sind, die keine aktiven Daten haben und zu keinem der Pools gehören.
-
Wie Fachleuten bekannt ist, verwendet der computerimplementierte Datenspeicher Messwerte und Adressierungen, die auf früheren physischen Layouts von Festplattenlaufwerkspeichern wie „Spuren” oder „Zylindern” beruhen, die aber kleiner als der moderne physische Speicher sind. Um große Datenspeichermengen aufnehmen zu können, wurde die Adressierung auf verschiedene Arten erweitert. Ein Beispiel ist in den „z/OS”-Systemen der International Business Machines Corp. als „EAV” bzw. Extendable Addressable Volumes (Datenträger mit erweiterter Adresse) implementiert, das Speicherdatenträger mit einer Größe von mehr als 65.520 Zylindern ermöglichte. In dieser Umgebung wird der Speicherplatz über den ersten 65.520 Zylindern als „zylinderverwalteter Speicherplatz” bezeichnet und ist erweiterter Adressierbereich. Datasets, die zylinderverwalteten Speicherplatz verwenden können, werden als für erweiterte Adressierung in jeder z/OS-Adressierungsmethode berechtigt bezeichnet. Ein EAV-Datenträger hat einen Bereich für kleinere Datasets, der als „spurverwalteter” Bereich bezeichnet wird, und einen Bereich für „Chunk”-(Datenblock) verwaltete Speicherung, der in 21 Zylindereinheiten für größere Datasets reserviert ist.
-
Ein Dataset weist einen oder mehrere Bereiche auf, und ein Dataset kann in einem Datenträger oder einer Vielzahl von Datenträgern vorhanden sein. Umgekehrt haben die Datenträger eine Vielzahl von Datasets, wobei die Datasets mindestens einen Datenbereich haben. Die Kapazität eines Datenträgers wird üblicherweise anhand der Anzahl von Zylindern gemessen, die dem Datenträger zugeordnet sind oder vom Datenträger tatsächlich verwendet werden.
-
Unter Bezugnahme auf 2 und 3 antwortet das Antwortmodul 250 auf das Starten, beispielsweise durch ein Host-System 206, einer Defragmentierungsoperation 300 in Bezug auf einen Pool von Datenträgern des Datenspeichers 240. Wie oben erörtert, ist die Defragmentierung eine Operation oder ein Prozess in Bezug auf eine Datenspeicherebene, die im Lauf der Zeit fragmentierte Daten nimmt und die fragmentierten Daten so analysiert, dass Datenabschnitte zum Reorganisieren der Daten in gelöschten Bereichen platziert werden, damit die Daten zusammenhängender werden und in der richtigen Abfolge stehen. Der Benutzer 206 kann den Pool-Defragmentierungsbefehl über einen JCL-(Job Control Language)Stapeljob oder über einen TSO-(Time Sharing Option)Befehl angeben. In dem Befehl gibt der Benutzer den Namen der Speichergruppe an, die den Pool aufweist, der defragmentiert werden soll. Im Schritt 300 organisiert das Antwortmodul die Operationen des Speichersystems, um die Defragmentierungsoperation aufzunehmen. Dazu kann das Signalisieren des vorzeitigen Abschlusses oder des Aussetzens von Datenspeicheroperationen gehören.
-
Im Schritt 305 ruft das Datenverwaltungsmodul 260 einen Datenverwaltungsprozess wie den oben erörterten „HSM” auf, der Daten sucht, die über längere Zeit nicht geändert wurden, um einen bestimmten Schwellenwert zu erfüllen, und verschiebt sie in eine weniger aktive Ebene des Datenspeichers 240, beispielsweise aus einer RAID-Anordnung von Festplattenlaufwerken, die den Pool von Daten enthalten, in eine Bandbibliothek und aus dem Pool heraus. Das Verschieben von Daten erfolgt üblicherweise auf der Grundlage von Datasets und erschließt freien Speicherplatz innerhalb des Pools von Daten. Freier Speicherplatz wird üblicherweise im VTOV(Datenträgerinhaltsverzeichnis) als gelöschte Daten identifiziert.
-
Wenn der Datenverwaltungsprozess abgeschlossen ist und der Prozess im Schritt 310 zur Defragmentierungsoperation zurückkehrt, wird im Schritt 315 das Modul für freien Speicherplatz 270 angewendet, um die Fragmentierung der Daten des Pools, die defragmentiert werden sollen, zu messen und zu ermitteln.
-
Die Fragmentierung steht in Beziehung zu der Komplexität der Daten, nachdem die Daten während eines Zeitraums aktualisiert und geändert worden sind. Daten können als Datasets mit einem einzigen Bereich beginnen, doch wenn mit der Zeit mehr Daten und Dateien hinzugefügt, gelöscht und geändert werden, besteht das Dataset aus zusätzlichen Bereichen, die physisch verteilt sind.
-
Eine Ausführungsform des Schritts 315 zum Ermitteln der Fragmentierung eines Pools besteht darin, ein Verhältnis einer geschätzten Anzahl von Fragmenten zur Datenspeicherkapazität des Pools zu berechnen.
-
Wenn die Daten Datenträger mit einer Vielzahl von Datasets aufweisen, wobei die Datasets jeweils mindestens einen Datenbereich haben, wird die geschätzte Anzahl von Fragmenten aus der Anzahl von Datenbereichen des Pools abzüglich der Anzahl von Datasets des Pools ermittelt.
-
Die Datenspeicherkapazität des Pools kann die Anzahl von Zylindern sein, die den Pool ausmachen.
-
In einer weiteren Ausführungsform wird die Fragmentierung, auf die eine Defragmentierung eines Datenträgers angewendet werden kann, auf der Grundlage der Bereiche jedes Datenträgers berechnet. Die Fragmentierungsschätzung erfolgt durch die Berechnung der Anzahl von Bereichen und der Größe dieser Bereiche. Die Anzahl von Bereichen dividiert durch die durchschnittliche Größe der Bereiche ergibt einen Fragmentierungsmesswert für jeden Datenträger. Je kleiner die Anzahl von Bereichen und je umfangreicher die Größe der Bereiche ist, desto kleiner ist der Fragmentierungswert für einen Datenträger.
-
Eine Ausführungsform des Schritts 315 besteht darin, die die Berechnungen der Datenträgerfragmentierung poolübergreifend zu kombinieren.
-
Im Schritt 320 wird die Menge von vorhandenem freiem Speicherplatz des Pools ermittelt. Freier Speicherplatz ist Speicherplatz in einem Datenträger, der Daten enthält, die gelöscht worden sind, oder der keine Daten enthält.
-
Ein Tool zum Ermitteln des freien Speicherplatzes und der Fragmentierung ist „LSPACE” von International Business Machines Corp. LSPACE stellt Informationen über Datenträgergröße, freien Speicherplatz auf dem Datenträger, freien Speicherplatz des VTOC und INDEX, Fragmentierungsinformationen wie Anzahl von Bereichen und Datasets usw. bereit. Außerdem werden Informationen über die Größe des spurenverwalteten Speicherplatzes und Statistiken zu freiem Speicherplatz bereitgestellt. Das LSPACE-Makro gibt Statusinformationen (wie beispielsweise LSPACE-Unterfunktion, Rückgabecode und Gründecode) in einer Parameterliste zurück. Optionen wie „EXPMSG” und „XEXPMSG” erstellen erweiterte Meldungsrückgabebereiche, die das LSPACE-Makro benötigt, um die Informationen über freien Speicherplatz und Datenträgerspeicherplatz auf der Grundlage von Datenträgern bereitzustellen. Bei Datenträgern mit zylinderverwaltetem Speicherplatz werden die Informationen über freien Speicherplatz als freier Speicherplatz für den gesamten Datenträger und freier Speicherplatz für den spurenverwalteten Speicherplatz zurückgegeben. Die beiden Sätze von Daten für freien Speicherplatz sind dieselben für einen Datenträger, der keinen zylinderverwalteten Speicherplatz hat. LSPACE kann auch Informationen wie das Format, den Dataset-Steuerblock, die Gesamtanzahl von Bereichen und freien Bereichen oder einen Fragmentierungsindex zurückgeben.
-
Alternativ kann eine Dateizuordnungstabelle (FAT) Anfang und Ende von Zylinderbereichen bereitstellen und enthält Zeiger für freien Speicherplatz, der verwendet werden kann, um den freien Speicherplatz und Informationen über Speicherplatz auf der Grundlage eines Datenträgers bereitzustellen, um sowohl den freien Speicherplatz als auch die Fragmentierung zu ermitteln.
-
Im Schritt 325 ermittelt das Modul für freien Speicherplatz 270 den Schwellenwert für freien Speicherplatz.
-
In einer Ausführungsform weist der Schwellenwert für freien Speicherplatz einen Soll-Schwellenwert auf, und die berechnete Fragmentierung korrigiert den Schwellenwert für freien Speicherplatz so, dass der Schwellenwert für freien Speicherplatz entweder erhöht oder verringert wird.
-
In einer weiteren Ausführungsform weist die Korrektur einen Wertebereich auf.
-
In noch einer weiteren Ausführungsform wird der Wertebereich so korrigiert, dass er in Bezug auf einen Index der berechneten Fragmentierung zwischen den Werten liegt. In einer weiteren Ausführungsform wird der Schwellenwert für freien Speicherplatz (T) gemäß einer Formel festgelegt: (T) = (Gesamtspeicherkapazität des Pools) × (Soll-Schwellenwert) × {Bereich von 0,5 bis 1,5} wobei der Wert innerhalb des Bereichs auf dem Index der berechneten Fragmentierung beruht.
-
Daher ist der Index der berechneten Fragmentierung ein Wert von 0 bis 1,0, der am Ende des Bereichs hinzugefügt wird.
-
Unter Bezugnahme auf 4 und 5 sind zwei verschiedene Layouts für Daten veranschaulicht. Aus Gründen einer einfacheren Darstellung werden die Daten als repräsentative virtuelle Datenträger eines Pools gezeigt, ohne die physische Streuung zu zeigen. Es ist tatsächlich möglich, dass ein Pool Hunderttausende von Datenträgern aufweisen kann.
-
Die Daten von 4 veranschaulichen einen aktiven Typ von Daten, wobei die repräsentativen Datenträger 401 bis 404 und 406 bis 407 100 Datasets und 500 bis 1000 Bereiche aufweisen und jeder eine Kapazität von 10.000 Zylindern hat. Der Datenträger 405 wird als „Leer” gezeigt, was bedeutet, dass dessen Datasets zum Beispiel im VTOC für den Datenträger als gelöscht gekennzeichnet worden sind. Die Quelle des „Leer”-Datenträgers kann die Datenverwaltung des Schritts 260 sein, oder der Datenträger kann ein „Überlauf”-Datenträger sein, was noch erörtert wird.
-
Die Daten von 5 veranschaulichen einen weniger aktiven Typ von Daten, wobei die repräsentativen Datenträger 501 bis 503 und 505 bis 507 100 Datasets und 100 bis 200 Bereiche aufweisen und jeder eine Kapazität von 10.000 Zylindern hat. Der Datenträger 504 wird als „Leer” gezeigt, was bedeutet, dass dessen Datasets zum Beispiel im VTOC für den Datenträger als gelöscht gekennzeichnet worden sind. Die Quelle des „Leer”-Datenträgers kann die Datenverwaltung des Schritts 260 sein, oder der Datenträger kann ein „Überlauf”-Datenträger sein, was noch erörtert wird.
-
Unter Bezugnahme auf 2, 3, 4 und 5 verwendet das Modul für freien Speicherplatz 270 im Schritt 325 die Informationen, die im Schritt 315 zum Festlegen des Schwellenwerts für freien Speicherplatz ermittelt worden sind.
-
In einer Ausführungsform wird der Schwellenwert für freien Speicherplatz vom Benutzer anfänglich als Sollwert eingerichtet oder wird durch eine Standardeinstellung angegeben. Der Sollwert kann einen Wert aufweisen, den der Benutzer aus Erfahrung als den Wert erkennt, der den Anforderungen des Benutzers am besten entspricht, um die Defragmentierung mit dem Typ von Daten auszuführen, die der Benutzer normalerweise defragmentieren muss. Zum Beispiel kann der Sollwert, der zum Ausführen der Defragmentierung benötigt wird, 25% freien Speicherplatz im Pool aufweisen.
-
In einer Ausführungsform wird gemäß den tatsächlichen Daten im Pool eine Korrektur an dem Sollwert vorgenommen. In einer Ausführungsform erfolgt die Korrektur gemäß einem Bereich auf der Grundlage eines Fragmentierungsindexes und ist beispielsweise das 0,5- bis 1,5-fache des Sollwerts. Wenn der Sollwert 25% beträgt, ist der Korrekturbereich (25%) × {0,5 bis 1,5} oder ein Wertbereich von 12,5% bis 37,5%.
-
In einer Ausführungsform beruht die Wertkorrektur für den Sollwert auf einem Index, der mit der geschätzten Fragmentierung in Beziehung steht. Zum Beispiel kann der Index zwischen 0 bis 1,0 liegen und am Ende des Korrekturbereichs hinzugefügt werden. In einer Ausführungsform kann der Index linear oder exponentiell mit der geschätzten Fragmentierung der Daten in Beziehung stehen oder eine andere nichtlineare Beziehung zu der geschätzten Fragmentierung der Daten aufweisen. In einem Beispiel weist die Fragmentierung die Anzahl von Bereichen abzüglich der Anzahl von Datasets auf, um eine geschätzte Anzahl von Fragmenten bereitzustellen, und die Anzahl von Fragmenten wird durch die Kapazität des Pools dividiert. Damit würde der Fragmentierungswert eine kleine Bruchzahl sein.
-
In einer Ausführungsform hat der Schritt 315 zu Veranschaulichungszwecken und nur unter Verwendung der repräsentativen Datenträger von 4 ermittelt, dass für die Datenträger mit Daten 401 bis 404 und 406 bis 407, aus denen der Pool besteht, 600 Datasets mit 4.500 Bereichen vorhanden sind. Im Schritt 315 wurde ebenfalls ermittelt, dass die Kapazität des Pools 70.000 Zylinder beträgt, wenn der „Leer”-Datenträger 405 durch den Datenverwaltungsschritt 305 geleert wurde.
-
Unter Verwendung der oben genannten beispielhaften Fragmentierungsermittlung gibt die Anzahl von Bereichen (4.500) abzüglich der Anzahl von Datasets (600) eine geschätzte Anzahl von Fragmentierungen (3.900) an, und das Dividieren des Ergebnisses durch die Kapazität des Pools (70.000) ergibt einen Fragmentierungswert von (0,0557).
-
In einer Ausführungsform hat der Schritt 315 zu Veranschaulichungszwecken und nur unter Verwendung der repräsentativen Datenträger von 5 ermittelt, dass für die Datenträger mit Daten 501 bis 503 und 505 bis 507, aus denen der Pool besteht, 250 Datasets mit 900 Bereichen vorhanden sind. Im Schritt 315 wurde ebenfalls ermittelt, dass die Kapazität des Pools 60.000 Zylinder beträgt, wenn der „Leer”-Datenträger 504 nicht vorhanden ist.
-
Unter Verwendung der oben genannten beispielhaften Fragmentierungsermittlung gibt die Anzahl von Bereichen (900) abzüglich der Anzahl von Datasets (250) eine geschätzte Anzahl von Fragmentierungen (650) an, und das Dividieren des Ergebnisses durch die Kapazität des Pools (60.000) ergibt einen Fragmentierungswert von (0,0011).
-
Wie oben erörtert, kann der Index linear oder exponentiell mit der geschätzten Fragmentierung der Daten in Beziehung stehen oder eine andere nichtlineare Beziehung zu der geschätzten Fragmentierung der Daten aufweisen. In einem Beispiel steht der Index in linearer Beziehung zu der geschätzten Fragmentierung der Daten und hat einen Bereich von „0”, wenn die Fragmentierung „0,0000” aufweist, und von „1”, wenn die Fragmentierung „0,1000” aufweist.
-
Unter Verwendung der vorgenannten Beispiele würde der Index (0,56) für die Daten des Pools von 4 und (0,01) für die Daten des Pools von 5 aufweisen.
-
In einer Ausführungsform wird der Indexwert zum Ende des Bereichs hinzugefügt und weist (0,56) auf, die zu (0,5) für die Daten des Pools von 4 hinzugefügt werden, was (1,06) ergibt, und weist (0,01) auf, die zu (0,5) für die Daten des Pools von 5 hinzugefügtwerden, was (0,51) ergibt.
-
Die Formel zum Ermitteln des Indexwerts beruht auf der geschätzten Fragmentierung der Daten des Pools und kann sich von der oben angegebenen unterscheiden.
-
In einer Ausführungsform wird der Schwellenwert für freien Speicherplatz (T) gemäß einer Formel festgelegt: (T) = (Gesamtspeicherkapazität des Pools) × (Soll-Schwellenwert) × {Bereich von 0,5 bis 1,5} wobei der Wert innerhalb des Bereichs auf einem Index der berechneten Fragmentierung beruht.
-
Die Verwendung dieser Werte zum Ermitteln des Schwellenwerts für freien Speicherplatz weist Multiplizieren des Indexwerts mit dem Soll-Schwellenwert und Multiplizieren des sich daraus ergebenden Prozentsatzes mit der Kapazität des Pools auf. Für die Daten des Pools von 4 weist die Berechnung (70.000 Zylinder) × (25 Prozent) × (1,06) für einen Schwellenwert (T) von (18.550 Zylindern) auf. Für die Daten des Pools von 5 weist die Berechnung (60.000 Zylinder) × (25 Prozent) × (0,51) für einen Schwellenwert (T) von (7.650 Zylindern) auf.
-
Die für den Index zu verwendende Maßeinheit zum Erzeugen des Schwellenwerts (T) von Schritt 325 kann sich von der obigen unterscheiden, wobei der Schwellenwert (T) eine Maßeinheit zeigt, die mit der Menge von vorhandenem freien Speicherplatz verglichen werden kann, der im Schritt 320 ermittelt wird.
-
Im Schritt 330 wird der im Schritt 320 ermittelte vorhandene freie Speicherplatz mit dem im Schritt 325 ermittelten Schwellenwert verglichen. Im Schritt 335 nutzt das Modul für freien Speicherplatz 270 diesen Vergleich, um zu ermitteln, ob „Überlauf”-Datenträger hinzugefügt oder die Defragmentierung mit dem vorhandenen freien Speicherplatz angeordnet werden sollen. Wenn der im Schritt 320 ermittelte vorhandene freie Speicherplatz für den Pool kleiner als der Schwellenwert ist, werden im Schritt 340 „Überlauf”-Datenträger hinzugefügt. Die Anzahl der in einer Ausführungsform hinzugefügten Überlaufdatenträger ist die Anzahl, die erforderlich ist, damit der Schwellenwert überschritten wird.
-
Wenn zum Beispiel der Pool von 5 mit einem Schwellenwert von (7.650 Zylindern) verwendet wird, wenn der im Schritt 320 ermittelte freie Speicherplatz geringer als der Schwellenwert ist, muss nur ein „Überlauf”-Datenträger 504 von den „Überlauf”-Datenträgern 290 zu dem Pool hinzugefügt werden, wobei der hinzugefügte „Überlauf”-Datenträger 10.000 Zylinder bereitstellt. Als Alternative können die „Überlauf”-Datenträger aus einem Überlauf-Pool von Datenträgern kommen.
-
Sobald der freie Speicherplatz, entweder aus dem vorhandenen freien Speicherplatz oder aus der Kombination des vorhandenen freien Speicherplatzes mit dem bzw. den hinzugefügten „Überlauf”-Datenträgern, den Schwellenwert überschreitet, fährt der Prozess mit Schritt 350 des Moduls 280 fort. Wenn ein bzw. mehrere „Überlauf”-Datenträger verwendet werden, wird dieselbe Anzahl von vorhandenen Datenträgern als Datenträger gekennzeichnet, die während des Defragmentierungsprozesses geleert werden müssen, so dass sie aus dem Pool entfernt werden können, wenn der Defragmentierungsprozess beendet wird. Die Markierung kann einen Hinweis im Datenträgerinhaltsverzeichnis aufweisen, dass der Inhalt eines Datenträgers entfernt werden muss.
-
Das Defragmentierungsmodul 280 startet die Defragmentierung, indem zum Beispiel ein Defragmentierungsprozess aufgerufen wird. Einige Beispiele sind „Real Time Defrag” von Dino Software, „Compaktor” von Computer Associates und „DFDSS Defrag” von International Business Machines Corp. In einer Ausführungsform gestattet das Defragmentierungsmodul dem Benutzer außerdem, Optionen in Bezug auf den Defragmentierungsprozess für den Pool auszuwählen. Zu den Optionen zählt die Auswahl von Objekten, die defragmentiert werden sowie die Platzierung von einigen der durch den Defragmentierungsprozess verschobenen Datenobjekte im Pool.
-
Die Auswahl von Optionen und Parametern kann vom Benutzer empfangen und durch das Antwortmodul 250 weitergeleitet werden.
-
Sofern eingerichtet, gibt eine „Reduce_Multi”-Option in einer Ausführungsform an, dass Datasets, die sich aktuell auf mehreren Datenträgern befinden, zu so wenigen Datenträgern wie möglich zugeordnet werden sollen. Gründe für eine Auswahl dieser Option können einfachere Sicherungen und weniger Serialisierungsbedingungen während einiger Operationen sein. Da einheitenübergreifende Datasets aus Leistungsgründen absichtlich eingerichtet werden, würde diese Option nicht für einheitenübergreifende Datasets gelten. Da nicht einheitenübergreifende Datasets auf mehreren Datenträgern keine einheitenübergreifende Eingabe/Ausgabe auf dem Datenträger ermöglichen, sind für die Verringerung der zugeordneten Datenträger keine Auswirkungen auf die Leistung vorhanden.
-
Sofern eine „Freespace_Preference”-Option eingerichtet ist, hat der Benutzer die Möglichkeit anzugeben, wie der Benutzer den freien Speicherplatz in dem Speicher-Pool verteilt haben möchte. Zum Beispiel wird einem Benutzer ermöglicht, eine Mindestmenge von freiem Speicherplatz anzugeben, die in jedem Datenträger verbleiben soll. Zum Beispiel bedeutet „Freespace_Preference(5)”, dass der Benutzer mindestens 5% freien Speicherplatz auf jedem Datenträger des Pools haben möchte. Wenn Daten während der Defragmentierung zugeordnet werden, ist daher keine Zuordnung über 95% des Speicherplatzes eines Datenträgers hinaus zulässig. Wenn der Benutzer nicht genügend Speicherplatz im Pool hat, um den angegebenen Wert nach der Rückgabe von „Überlauf”-Datenträgern zu erfüllen, wird von dem Antwortmodul 250 eine Fehlermeldung an den Benutzer ausgegeben. Der gesamte verfügbare Speicherplatz in dem Pool ist bekannt, wenn die Schritte 315 und 320 ausgeführt worden sind.
-
Eine „Empty_Vol_Preference”-Option gestattet dem Benutzer, einen numerischen Wert anzugeben, der die Mindestanzahl von leeren Datenträgern darstellt, die nach der Rückgabe der „Überlauf”-Datenträger im Pool bleiben müssen. Diese Datenträger können dann nach der Defragmentierung entfernt werden, wenn der Benutzer diesen Speicherplatz in einem anderen Pool nutzen möchte, oder sie können im Pool bleiben, um große Zuordnungen zu einem einzelnen Datenträger zuzulassen. Wenn der Benutzer diese Option verwendet, werden aus diesen Datenträgern mit dem meisten freien Speicherplatz und der kleinsten Menge von zugeordneten Datasets während der Pool-Defragmentierung alle Datasets aus diesen Datenträgern abgezogen. Wenn der Benutzer in Verbindung mit „Freespace_Preference” pro Datenträger eine zu hohe Anzahl von leeren Datenträgern angibt, wird ebenfalls eine Fehlermeldung ausgegeben, um einen unzureichenden gesamten Pool-Speicherplatz anzugeben.
-
„EAV_Uplift” ist eine Option, mit der Datasets in zylinderverwalteten Speicher verschoben werden, wie oben erörtert, wenn sie den Kriterien für eine Mindestgröße entsprechen. Vorhandene zylinderverwaltete Datasets bleiben auch nach der Defragmentierung weiterhin im zylinderverwalteten Speicher, vorausgesetzt, dort ist noch Speicherplatz verfügbar. Diese Option ermöglicht es, die „Überlauf”-Datenträger als Datenträger mit erweiterter Adresse hinzuzufügen, wie oben erörtert, was ermöglicht, dass zusätzlicher Speicherplatz für Datenträger mit erweiterter Adresse während der Defragmentierung verfügbar ist.
-
„Retry_in_Use” ist ein Parameter, der die Anzahl wiederholter Versuche zum Verschieben eines Datasets aufweist, das aktuell verwendet wird. Wenn das Dataset nach der höchstmöglichen Anzahl von wiederholten Versuchen immer noch verwendet wird, wird dieses Dataset nicht verschoben.
-
Schritt 360 weist im Anschluss an die Beendigung der Defragmentierung eine Rückkehr vom Defragmentierungsprozess auf, und Schritt 360 identifiziert die Datenträger, die zu den „Überlauf”-Datenträgern zurückgegeben werden. Dies ermöglicht, dass die „Überlauf”-Datenträger zur Verwendung in einer weiteren Defragmentierung verfügbar sind.
-
Dem Fachmann ist klar, dass die Ausführungsformen der vorliegenden Erfindung, wie hierin offenbart, einschließlich des computerimplementierten Systems 200 von 2 zum Ausführen der Defragmentierung im System 100 von 1 sowie die hierin bereitgestellte Funktionalität als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Ausführungsformen der vorliegenden Erfindung in Gestalt einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Kombination davon vorliegen, wie zum Beispiel eine Ausführungsform, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Ausführungsformen der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode verkörpert ist.
-
Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Drahtleitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
-
In einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
-
Computerprogrammcode zum Ausführen von Operationen für Ausführungsformen der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden sein, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
-
Ausführungsformen der vorliegenden Erfindung sind oben unter Bezugnahme auf Ablaufplan-Veranschaulichungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Ablaufplan-Veranschaulichungen und/oder Blockschaubildern und Kombinationen von Blöcken in den Ablaufplan-Veranschaulichungen und/oder Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Block oder den Blöcken von Ablaufplan und/oder Blockschaubild angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Fertigungsartikel erzeugen, einschließlich Anweisungen, die die in dem Block oder den Blöcken von Ablaufplan und/oder Blockschaubild angegebene Funktion/Handlung umsetzen.
-
Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben sind.
-
Fachleuten wird klar sein, dass Änderungen in Bezug auf die oben erörterten Verfahren vorgenommen werden können, einschließlich Änderungen an der Reihenfolge der Schritte. Ferner wird Fachleuten klar sein, dass andere spezifische Komponentenanordnungen genutzt werden können als die hierin veranschaulichten.
-
Fachleuten wird klar sein, dass Änderungen in Bezug auf die oben erörterten Verfahren vorgenommen werden können, einschließlich Änderungen an der Reihenfolge der Schritte. Ferner wird Fachleuten klar sein, dass andere spezifische Komponentenanordnungen genutzt werden können als die hierin veranschaulichten.
-
Obwohl die bevorzugten Ausführungsformen der vorliegenden Erfindung ausführlich veranschaulicht worden sind, sollte für Fachleute offenkundig sein, dass an diesen Ausführungsformen Modifizierungen und Anpassungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.