-
Hintergrund der Erfindung
-
Speichergeräte, wie
beispielsweise Bandgeräte,
können
konfiguriert sein, um zu ermöglichen, dass
mehrere Hosts auf das Gerät
zugreifen. Bei derartigen Konfigurationen ist es wichtig, sicherzustellen,
dass verhindert ist, dass die Hosts die Datenübertragungsoperationen der
anderen Hosts stören. Eine
Datenintegrität
kann beeinträchtigt
sein, falls ein Host auf das Gerät
zugreift, während
ein anderer Hoste eine Datenübertragung
durchführt.
-
Ein
Verfahren, das in der Vergangenheit verwendet wurde, um Datenübertragungen
zu schützen, ist
das Reservieren- & Freigeben-Verfahren
(Reserve & Release-Verfahren),
das bei Kleincomputersystemschnittstellengeräten (SCSI-Geräten; SCSI
= Small Computer System Interface) implementiert wird. Diese Methodologie
erfordert, dass die Anwendung oder der Treiber an dem Host Reservierungs- und
Freigabebefehle implementiert. Einem Host kann ein ausschließlicher
Zugriff auf ein Gerät
durch ein Erteilen eines Reservierungsbefehls gegeben werden. Wenn
der Host mit dem Gerät
fertig ist, muss derselbe dann einen Freigabebefehl erteilen, um
seine Reservierung des Geräts
abzugeben. Falls jedoch der Host, der die Reservierung an dem Gerät hält, einen
Ausfall erfährt,
kann derselbe die Freigabe nicht erteilen. So bleibt das Gerät unnötig für diesen
Host reserviert. Das Gerät
muss eventuell manuell rückgesetzt
werden, um sich von diesem Zustand zu erholen.
-
Die
SCSI-Persistent-ReserveIn- und Persistent-ReserveOut-Befehle sind ähnlich den
Reservierungs- und Freigabebefehlen wirksam. Diese Befehle ermöglichen
jedoch auch, dass irgendein Host einen Persistent-Reserve-Out-Befehl
mit der Dienstlöschhandlung
erteilt, um irgendwelche Reservierungen zu entfernen. Ein zweiter
Host, der versucht, auf ein Gerät zuzugreifen,
das mit dem Persistent-Reserve-In-Befehl reserviert ist, kann nicht
sagen, ob ein reserviertes Gerät
wirklich verwendet wird oder ob das Gerät sich in einem schlechten
Zustand befindet, weil der Host, der die Reservierung an dem Gerät hält, ausgefallen
ist. Falls eine Datenübertragung
besonders langwierig ist, kann der zweite Host beschließen, dass
der Host, der die Reservierung hält, ausgefallen
ist, und die Reservierung löschen.
Dies würde
irgendwelche Datenübertragungen
unterbrechen, die eventuell stattfinden. Falls das Gerät ein Bandlaufwerk
ist, könnte
die Löschung
den gesamten Sicherungsprozess wirksam beenden.
-
Die
US-B-6,327,613 offenbart
ein System zum gemeinschaftlichen Verwenden von Peripheriegeräten über ein
Netzwerk. Das System umfasst einen ersten Computer, der zumindest
ein Peripheriegerät
aufweist, und einen zweiten Computer, der mit dem ersten Computer
vernetzt ist. Der zweite Computer ist konfiguriert, um eine Anforderung,
das zumindest eine Peripheriegerät
zu verwenden, über das
Netzwerk zu senden, und die Anforderung wird verarbeitet, um zu
bestimmen, ob der zweite Computer Gemeinschaftsverwendungsprivilegien
aufweist, um das zumindest eine Peripheriegerät zu verwenden. Ferner ist
der erste Computer konfiguriert, um auf die Anforderung des zweiten
Computers einen Zugriff zu gewähren,
falls der zweite Computer die Gemeinschaftsverwendungsprivilegien
aufweist, die einen Zugriff auf das zumindest eine Peripheriegerät ermöglichen.
Der erste Computer wirkt als ein Server, der die Peripheriegeräte desselben
gemeinschaftlich verwenden kann, und der zweite Computer wirkt als ein
Client, der auf die Peripheriegeräte des Servers zugreifen kann.
Ein Reservierungszeitablaufwert kann dem zweiten Computer zugeordnet
sein und gibt eine Menge an Zeit an, für die der zweite Computer mit
einem speziellen Gerät
verbunden bleiben kann, ohne dasselbe zu verwenden, bevor die Reservierung
desselben entfernt wird. Zudem weist jedes Gerät eine Einstellung auf, die
die Menge an Zeit darstellt, für
die dieses Gerät
sich im Leerlauf befinden kann, während dasselbe aktuell durch
einen Client reserviert ist.
-
Die
US 2003/0005130 A1 bezieht
sich auf eine Audio-Video-Verwaltung
in einer Universal-Plug-and-Play-Architektur, bei der die Ressourcenverwaltungsbefehle
Reservierungs- und Freigabebefehle mit einem Nachrichtenköper umfassen, der
einen Weg, dessen Ressourcen reserviert werden sollen, und eine
Startzeit und eine Endzeit für
die Reservierung identifiziert.
-
Zusammenfassung der Erfindung
-
Es
sind Verfahren und Vorrichtungen zum Verwalten einer Gerätereservierung
offenbart. Bei einem Ausführungsbeispiel
wird von einem ersten Host ein Gerätebefehl empfangen. Auf das
Empfangen des Befehls hin wird ein Gerät, das dem Gerätebefehl zugeordnet
ist, für
den ersten Host reserviert. Eine Reservierungszeitperiode für einen
Ablauf des Reservierungsstatus wird ebenfalls gesetzt.
-
Kurze Beschreibung der Zeichnungen
-
Darstellende
Ausführungsbeispiele
der Erfindung sind in den Zeichnungen dargestellt, in denen:
-
1 eine
exemplarische Konfiguration eines Reservierungsagenten darstellt;
-
2 ein
Flussdiagramm ist, das ein exemplarisches Verfahren zum Reservieren
eines Geräts darstellt;
-
3 ein
Flussdiagramm ist, das ein exemplarisches Verfahren zum Prüfen eines
Reservierungskonflikts darstellt; und
-
4 ein
exemplarisches Verfahren zum Bestimmen, ob ein Gerät reserviert
ist, darstellt.
-
Detaillierte Beschreibung
-
Eine
exemplarische Konfiguration, die einen Reservierungsagenten 110 zum
Verwalten einer Gerätereservierung
umfasst, ist in 1 gezeigt. Der Reservierungsagent 110 ist
kommunikativ zwischen Hosts 120, 125 und ein Gerät 100 gekoppelt.
Die Hosts 120, 125 können Server, Personalcomputer oder
irgendein anderer Typ einer Maschine sein, die Befehle zu dem Gerät 100 liefert.
Das Gerät 100 kann
irgendein Typ eines Geräts
sein, das Befehle von mehreren Quellen annimmt. Bei einem Ausführungsbeispiel
ist das Gerät 100 ein
Speichergerät, wie
beispielsweise ein Bandgerät
(z. B. ein Bandlaufwerk oder eine Roboterbandbibliothek) oder ein
Plattengerät
(z. B. eine Festplatte, ein RAID-Gerät oder eine Optikbandbibliothek).
-
Es
ist zu beachten, das Konfigurationen, die sich von der in 1 gezeigten
unterscheiden, bei anderen Ausführungsbeispielen
verwendet werden können.
Zum Beispiel kann der Reservierungsagent 110 Teil der Firmware
des Geräts 100 sein,
kann eine Software sein, die an dem Host 120, 125 oder
einem anderen Host resident ist, oder kann irgendein anderer Typ
eines Geräts
sein, der kommunikativ mit den Hosts 120, 125 und
dem Gerät 100 gekoppelt
ist. Bei einigen Ausführungsbeispielen
kann ein Steuerhost kommunikativ mit dem Reservierungsagenten gekoppelt
sein, um den Reservierungsagenten zu konfigurieren. Der Reservierungsagent 110 kann
ferner Reservierungen für
mehrere Geräte
verwalten. Zusätzlich
können
einige Befehle von den Hosts 120, 125 direkt zu
dem Gerät
geleitet werden, ohne den Reservierungsagenten 110 zu durchlaufen,
und etwas oder alles der Ausgabe von dem Gerät 100 kann direkt
zu den Hosts 120, 125 geleitet werden.
-
2 stellt
ein exemplarisches Gerätereservierungsverfahren 200 dar,
das durch den Reservierungsagenten 110 durchgeführt werden
kann. Das Verfahren beginnt, wenn ein Befehl empfangen wird 205.
Durch ein Beispiel kann der Befehl ein Kleincomputersystemschnittstellenbefehl
(SCSI-Befehl) sein, der von dem Host 120 empfangen wird
und durch das Gerät 100 durchgeführt werden
soll. Es wird betrachtet, dass andere Kommunikationsprotokolle,
wie beispielsweise Internet-SCSI (iSCSI) und Fibre-Channel ebenfalls
verwendet werden können.
-
Nachdem
der Befehl empfangen ist, wird eine Bestimmung dahingehend vorgenommen,
ob der Befehl von einem vorbestimmten Typ ist, der eine Gerätereservierung
erfordert 215. Es werden nicht alle Befehle eine Gerätereservierung
erfordern. Der Typ von Befehlen, der eine Reservierung erfordert, kann
abhängig
von dem Typ des Geräts 100 und
dem Typ einer Anwendung, die den Befehl erteilt, variieren.
-
Falls
das Gerät 100 beispielsweise
ein Bandgerät
ist, können
Befehle, die in einer Bewegung des Bands resultieren, eine Gerätereservierung
erfordern, während
Befehle, die das Bandmedium nicht beeinflussen, eventuell keine
Gerätereservierung
erfordern. Zum Beispiel sind Schreib-, Lese-, Such-, Rücklauf-,
Lade- und Entladebefehle eventuell Befehle, die eine Reservierung
erfordern. Ein Bereitstellen eines Reservierungsverfahrens für diese
Befehlstypen kann verhindern, dass andere Hosts eine Datenübertragungsoperation
des anfordernden Hosts stören.
Befehle, wie beispielsweise der SCSI-„inquiry"-Befehl (SCSI-„Anfrage"-Befehl), der die Konfiguration des
Geräts
anfordert, oder der SCSI-„log_sense"-Befehl (SCSI-„Protokoll
erfassen"-Befehl),
der statistische Informationen wiedererlangt, die durch das Gerät beibehalten
sind, erfordern wahrscheinlich keine Gerätereservierung.
-
Falls
der Befehl keine Reservierung erfordert, endet der Prozess 230.
Falls der Befehl eine Gerätereservierung erfordert,
wird das Gerät,
auf das durch den Gerätebefehl
abgezielt wird, für
den Host reserviert, der den Befehl einleitet 220. Bei
einem Ausführungsbeispiel
kann dies durch ein Setzen eines Reservierungsstatus durch ein Zuweisen
eines Werts zu einem Aktivhostfeld erzielt werden, was implizit
bedeutet, dass das Gerät
reserviert ist. Eine Reservierungszeitperiode für einen Ablauf der Reservierung
wird ebenfalls gesetzt 225.
-
Die
Reservierungszeitperiode kann vor, nach oder in Verbindung mit dem
Setzen des Reservierungsstatus 220 gesetzt werden. Bei
einem Ausführungsbeispiel
beginnt die Reservierungszeitperiode eventuell erst zu laufen, nachdem
der Befehl ausgeführt
wurde. Somit läuft
die Reservierungszeitperiode ab, falls der aktive Host keinen ausstehenden
Befehl zu dem Gerät
aufweist, und der Zeitgeber abgelaufen ist, bei anderen Ausführungsbeispielen
kann die Reservierungszeitperiode von dem Befehlstyp abhängig variieren
und kann beginnen, sobald der Befehl ausgeführt wird. Zum Beispiel kann
einem Rücklaufbefehl
eine längere
Reservierungszeitperiode gegeben werden als einem Schreibbefehl.
Dies ermöglicht eventuell,
dass die Reservierung freigegeben wird, falls ein Befehl an dem
Gerät hängen bleibt.
Es wird betrachtet, dass einige Ausführungsbeispiele eventuell beide
Typen von Reservierungszeitperioden umfassen: eine Reservierungszeitperiode,
die zu laufen beginnt, nachdem der Befehl ausgeführt wurde, und eine Reservierungszeitperiode
für die
Ausführung des
Befehls.
-
Bei
einem Ausführungsbeispiel
kann ein Host, der bereits eine Reservierung hält, die Reservierung durch
ein Erteilen eines Befehls erneuern, der eine Reservierung erfordert,
bevor die Zeitperiode der bestehenden Reservierung abgelaufen ist. Nachdem
eine Bestimmung vorgenommen ist, dass der Befehl eine Reservierung
erfordert 215, wird das Gerät eventuell nicht für den einleitenden
Host reserviert, da dies bereits bei einem vorherigen Reservierungsprozess
durchgeführt
wurde. Bei diesem Ausführungsbeispiel
ist alles, was eventuell erforderlich ist, eine Rücksetzung
der Reservierungszeitperiode 225 auf die vorbestimmte Zeitperiode.
-
Obwohl
das obige Verfahren einen Prozess beschreibt, bei dem die Reservierung
basierend auf dem Befehlstyp gesetzt wird, können andere Verfahren bei anderen
Ausführungsbeispielen
verwendet werden. Bei einem Ausführungsbeispiel
wird der Befehlstyp eventuell nicht bestimmt, weil alle Befehle das
Gerät reservieren
können.
Alternativ kann der Host einen Befehl als eine Gerätereservierung
erfordernd markieren. Die Reservierungszeitperiode kann dann wie
oben beschrieben gesetzt werden oder der Host kann eine Zeitperiode,
die für
die Reservierung benötigt
wird, anfordern oder spezifizieren.
-
Bevor
ein Befehl durch das Gerät 100 ausgeführt werden
kann, muss eine Bestimmung dahingehend vorgenommen werden, ob der
Befehl mit einer Gerätereservierung
in Konflikt steht. Ein exemplarisches Verfahren zum Prüfen eines
Reservierungskonflikts 300 ist in 3 dargestellt.
-
Nachdem
ein Befehl von einem ersten Host empfangen ist 305, wird
eine Bestimmung dahingehend vorgenommen, ob der Befehl von einem
vorbestimmten Typ ist, der mit einer Gerätereservierung in Konflikt
stehen würde 310.
Diese Befehle können ähnlich den
Befehlen sein, die oben bei dem Gerätereservierungsprozess 200 beschrieben
sind. Befehle, die eine Gerätebewegung
erfordern, wie beispielsweise Lesen, Schreiben, Rücklauf,
Laden, Entladen oder Suchen, stehen wahrscheinlich in Konflikt mit
einer Gerätereservierung.
Befehle jedoch, die eventuell keine Gerätereservierung erfordern, stehen eventuell
ebenfalls in Konflikt mit einer bestehenden Reservierung. Diese
Befehle können
Befehle umfassen, wie beispielsweise dem SCSI-„Persistent-Reserve-Out"-Befehl bei der Dienstlöschhandlung.
Befehle dieses Typs erfordern keine Gerätebewegung, aber können eine
Datenoperation eines Hosts, der eine bestehende Reservierung hält, stark
stören.
-
Die
Befehlstypen, die mit der Gerätereservierung
in Konflikt stehen, können
abhängig
von dem Befehlstyp, der erteilt wurde, um das Gerät zu reservieren,
sowie von dem Gerätetyp
variieren. Bei anderen Ausführungsbeispielen
wird die Bestimmung eventuell nicht durchgeführt, wenn alle Befehle eventuell
mit der Gerätereservierung
in Konflikt stehen.
-
Befehle,
die nicht von einem Typ sind, der mit einer Gerätereservierung in Konflikt
steht, werden ausgeführt 325.
Falls der Befehl von einem vorbestimmten Befehlstyp ist, der mit
einer Reservierung in Konflikt steht, wird eine Prüfung durchgeführt, um
zu bestimmen, ob das Gerät
reserviert ist 315. Dieser Prozess wird unten mit Bezug
auf 4 ausführlicher
beschrieben.
-
Bei 405 wird
eine Bestimmung vorgenommen, ob das Gerät für einen Host reserviert ist.
Falls kein Host einer Reservierung zugewiesen ist, ist das Gerät nicht
reserviert 420. Andernfalls wird ein Zeitgeber geprüft, um zu
bestimmen, ob die Reservierungsperiode abgelaufen ist 410.
-
Falls
die Zeitperiode abgelaufen ist, ist das Gerät nicht reserviert. Falls der
Zeitgeber nicht abgelaufen ist, ist das Gerät reserviert 415.
Die Reservierung kann ferner den Host angeben, der der Reservierung
zugewiesen ist. Bei anderen Ausführungsbeispielen
kann der Zeitgeber geprüft
werden, bevor geprüft
wird, um zu bestimmen, ob ein Host einer Reservierung zugewiesen
ist. Zusätzliche
Verfahren, um zu bestimmen, ob ein Gerät reserviert ist, werden ebenfalls
betrachtet. Zum Beispiel kann ein Boolesches Flag verwendet werden,
um einen reservierten oder unreservierten Status anzugeben. Dieses
Flag kann auf den Ablauf der Reservierungszeitperiode hin automatisch
auf unreserviert aktualisiert werden.
-
Unter
erneuter Bezugnahme auf 3 wird, falls das Gerät nicht
reserviert ist, der Befehl ausgeführt 325. Falls das Gerät reserviert
ist, wird eine Bestimmung dahingehend vorgenommen, ob das Gerät für den ersten
Host reserviert ist, der den aktuellen Befehl einleitet. Der Befehl
wird ausgeführt 325,
falls die Reservierung für
den ersten Host ist. Andernfalls wird der Befehl verweigert 330.
Der Befehl kann durch ein Abbrechen des Befehls, ein Zurückgeben einer
Fehlernachricht oder ein Zurückgeben
eines anderen Typs einer Angabe, dass der Befehl nicht ausgeführt wurde,
verweigert werden.
-
Bevor
oder nachdem der Befehl ausgeführt wird 325,
kann ein Gerätereservierungsprozess durchgeführt werden,
wie beispielsweise dieser, der in 2 dargestellt
ist. Bei einem Ausführungsbeispiel
kann die Bestimmung, ob der Befehl ein vorbestimmter Befehlstyp
ist 310, ferner eine Bestimmung umfassen, dass der Befehl
eine Gerätereservierung erfordert.
Bei diesem Ausführungsbeispiel
besteht der Gerätereservierungsprozess
eventuell lediglich aus einem Reservieren des Geräts 220 und
einem Setzen oder Rücksetzen
der Reservierungszeitperiode 225.
-
Es
sollte klar sein, dass die Reihenfolge des Prozesses, die in 3 gezeigt
ist, verändert
werden kann. Zum Beispiel kann die Bestimmung, ob das Gerät reserviert
ist 315, vor dem Bestimmen, ob der Befehl ein vorbestimmter
Befehlstyp ist 310, vorgenommen werden. Zusätzlich kann
die Bestimmung, dass das Gerät
durch den Host reserviert ist, der den aktuellen Befehl einleitet 320,
als ein Teil der Gerätereservierungsbestimmung 315 durchgeführt werden.