Freigeben über


Abfragen der Write Cache-Eigenschaft

Speichergeräte puffern häufig Daten in einem Schreibcache, bevor sie auf nicht flüchtige Medien schreiben, z. B. eine Datenträgerplatte. Dieser Puffertyp verbessert die Geräteleistung, verringert aber auch die Datenintegrität. Wenn der Schreibcache nicht über eine Akkusicherung verfügt, kann ein Stromausfall zum Verlust von zwischengespeicherten Daten führen.

Eine Lösung für das Problem des Datenverlusts ist das Leeren des Schreibcaches (mit einem SCSI SYNCHRONIZE CACHE-Befehl auf SCSI-Geräten). Das Leeren des Schreibcaches ist jedoch ein kostspieliger Vorgang, und bei häufiger Ausführung kann die Leistung erheblich beeinträchtigt werden. Anstatt den Schreibcache zu leeren, lassen viele Speichergeräte Schreibzugriffsanforderungen zu. Eine Durchschreibanforderung umgeht den Schreibcache und sendet Daten direkt an die Medien.

Datenbankanwendungen können beispielsweise Durchschreibanforderungen verwenden, um sicherzustellen, dass Transaktionsprotokolle die Medien erreichen, und Dateisystemtreiber können Durchschreibanforderungen verwenden, um sicherzustellen, dass Dateisystemmetadaten die Medien erreichen.

Allerdings unterstützen nicht alle Speichergeräte, die über Schreibcaches verfügen, Write-Through-Anforderungen oder SYNCHRONIZE CACHE. und einige Geräte müssen zwischengespeicherte Daten nicht vorsorglich umgehen oder leeren, da sie über Akkusicherungssysteme verfügen, die Datenbeschädigungen bei Stromausfällen verhindern. Anwendungen und Treiber müssen Über Informationen über die Eigenschaften des Schreibcaches eines Geräts verfügen, bevor sie ihn effektiv nutzen können.

In Windows Vista können Sie die IOCTL_STORAGE_QUERY_PROPERTY-Anforderung mit einem StorageDeviceWriteCacheProperty-Eigenschaftsbezeichner verwenden, um den Speicherklassentreiber nach einer Schreibcacheeigenschaft abzufragen, die die Merkmale des Schreibcaches des Geräts angibt. Die Write Cache-Eigenschaft enthält die folgenden Informationen zu den Zwischenspeicherungsfunktionen des Geräts:

  • Vorhandensein eines Schreibcaches. Die Schreibcacheeigenschaft gibt an, ob das Gerät über einen Schreibcache verfügt.

  • Typ des Schreibcaches. Es gibt zwei Standard Typen von Schreibcache: Zurückschreiben und Durchschreiben. Bei einem Rückschreibcache kopiert das Gerät keine Cachedaten auf nicht flüchtige Medien, bis dies unbedingt erforderlich ist. Dieser Vorgang verbessert die Leistung von Schreibvorgängen. Mit einem Schreibzugriffscache schreibt das Gerät Daten parallel in den Cache und die Medien. Dadurch wird die Schreibleistung nicht verbessert, aber nachfolgende Lesevorgänge werden beschleunigt.

    Verwechseln Sie einen Durchschreibcache nicht mit einer Durchschreibanforderung. Eine Durchschreibanforderung kann mit jeder Art von Cache verwendet werden, einschließlich eines Rückschreibcaches, wenn das Gerät Schreibzugriffsanforderungen unterstützt. Angenommen, das Ziel ist ein SCSI-Gerät mit einem Rückschreibecache. Wenn das Gerät Durchschreibanforderungen unterstützt, kann der Initiator den Schreibcache umgehen, indem er das FUA-Bit (Force Unit Access) im Befehlsdeskriptorblock (Command Descriptor Block, CDB) des Schreibbefehls festlegt.

  • Unterstützung des Synchronisierungscaches. Die Schreibcacheeigenschaft gibt an, ob das Gerät den SCSI SYNC CACHE-Befehl oder einen entsprechenden Befehl für andere Busse unterstützt.

  • Akkusicherung. Die Write Cache-Eigenschaft gibt an, ob das Gerät über eine Akkusicherung verfügt, die die Integrität der Cachedaten bei Stromausfällen schützt.

Eine vollständige Beschreibung der Informationen, die von der Schreibcacheeigenschaft gemeldet werden, finden Sie unter STORAGE_WRITE_CACHE_PROPERTY.

Ohne den Schreibcacheeigenschaftsmechanismus (d. h. mithilfe der IOCTL_STORAGE_QUERY_PROPERTY-Anforderung und des Bezeichners der StorageDeviceWriteCacheProperty-Eigenschaft ) müssen Anwendungen und Treiber die Schreibcachemerkmale eines Geräts mit einer anderen Befehlssequenz für jeden Bus abfragen. Wenn das Zielgerät beispielsweise an einen IEEE 1394-Bus angefügt ist und das RBC-Protokoll (Reduced Block Command) verwendet, muss der Initiator Seite 6 der Gerätemodusdaten abrufen, um zu bestimmen, ob der Schreibcache aktiviert ist. Wenn das Zielgerät jedoch SCSI-kompatibel ist, muss der Initiator Seite 8 der Modusdaten abrufen. Der Write-Cache-Eigenschaftsmechanismus blendet die Details dieser Vorgänge vor dem Initiator aus und bietet eine Technik zum Abfragen der Merkmale des Schreibcaches eines Speichergeräts, der für verschiedene Busse identisch ist.

Der Schreibcacheeigenschaftsmechanismus wird für RAID-Geräte (da es keine Standardtechnik zum Abfragen dieser Geräte gibt) oder flash-Speichergeräte nicht unterstützt.

Die Schreibcacheeigenschaft wird in den 64-Bit-Versionen von Windows unterstützt.