DE112013006655T5 - Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung - Google Patents

Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung Download PDF

Info

Publication number
DE112013006655T5
DE112013006655T5 DE112013006655.6T DE112013006655T DE112013006655T5 DE 112013006655 T5 DE112013006655 T5 DE 112013006655T5 DE 112013006655 T DE112013006655 T DE 112013006655T DE 112013006655 T5 DE112013006655 T5 DE 112013006655T5
Authority
DE
Germany
Prior art keywords
data
address
vol
write
volume
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112013006655.6T
Other languages
English (en)
Inventor
Sadahiro Sugimoto
Akira Yamamoto
Kazuei Hironaka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE112013006655T5 publication Critical patent/DE112013006655T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Abstract

Die Speichervorrichtung der vorliegenden Erfindung stellt einen Dekomprimierungs-VOL ohne direktes entsprechendes Verhältnis (Zuordnung) mit einem Endspeichermedium für eine übergeordnete Vorrichtung bereit und empfängt Zugriffe von der übergeordneten Vorrichtung auf den Dekomprimierungs-VOL. Danach werden in den Dekomprimierungs-VOL geschriebene Daten online in einem Zwischenspeicher komprimiert und die komprimierten Daten werden einem Komprimierungs-VOL zugeordnet, bei dem es sich um einen Datenträger handelt, der einem Endspeichermedium zugeordnet ist. Durch Warten und Verwalten von Zuordnungsinformationen zwischen einem Bereich im Dekomprimierungs-VOL, in den Daten geschrieben wurden, und einer Speicherposition im Komprimierungs-VOL, der komprimierte Daten der relevanten Daten zugeordnet sind, wandelt die Speichervorrichtung gleichzeitig bei Empfang einer Leseanfrage in Bezug auf eine Dekomprimierungs-VOL von der übergeordneten Vorrichtung Positionsinformationen im Dekomprimierungs-VOL, der von der Leseanfrage ausgewiesen ist, in Positionsinformationen des Komprimierungs-VOL um, liest die komprimierten Daten Endspeichermedium in den Zwischenspeicher, dekomprimiert die komprimierten Daten in einem Zwischenspeicher und überträgt diese an die übergeordnete Vorrichtung.

Description

  • [Technisches Gebiet]
  • Die vorliegende Erfindung bezieht sich auf eine Speichervorrichtung zum Komprimieren und Speichern von Daten und auf ein Verfahren zum Steuern dieser.
  • [Verwandter Stand der Technik]
  • Aufgrund der Weiterentwicklung der IT und der Verbreitung des Internets ist die Datenmenge, die Computersysteme in Unternehmen und dergleichen handhaben müssen, ständig am Steigen. Andererseits sind Kostenverringerungen in Zusammenhang mit IT-Systemen dringend nötig und es besteht der Bedarf an einem hochleistungsfähigen und kostengünstigen System.
  • Bei einer Speichervorrichtung sind die Speichermedien, die in der Speichervorrichtung verwendet werden, für einen großen Teil der Kosten verantwortlich. Aus diesem Grund besteht eine wichtige Herausforderung in der Verringerung der Kosten für das Speichermedium. Neben einem Verfahren zum Anwenden von kostengünstigen Speichermedien (mit geringen Bitkosten) kann zum Verringern der Kosten für das Speichermedium ein Verfahren zum Komprimieren von gespeicherten Daten angewandt werden, mit dem das Speichern einer größeren Menge von Daten in einem Speichermedium ermöglicht wird. Wenn Daten in einem komprimierten Zustand im Speichermedium der Speichervorrichtung gespeichert werden, es ist in Hinblick auf die Benutzerfreundlichkeit wichtig, dass sich Host-Computer und Anwendungen, die auf die Speichervorrichtung zugreifen, nicht der Tatsache bewusst sind, dass Daten in einem komprimierten Zustand gespeichert werden, d. h., die Datenkomprimierung wird transparent durchgeführt. Es ist in der Praxis auch wichtig, eine Verschlechterung der Zugriffsleistung so weit wie möglich zu verhindern. Beispielsweise offenbart die Patentliteratur 1 ein System zum Zugreifen auf erforderliche Daten, wobei Daten (unkomprimierte Daten) in eine Mehrzahl von Einheiten aufgeteilt und pro Einheit komprimiert werden, die jeweiligen komprimierten Einheiten in einer LU (Logische Einheit) gespeichert werden und beim Laden von Daten nur die erforderliche Einheit gelesen wird, ohne dass die gesamte LU gelesen wird.
  • [Liste der Referenzschriften]
  • [Patentliteratur]
    • [PTL 1] US-Patentanmeldung mit der Veröffentlichungs-Nr. 2011/0219153
  • [Kurzdarstellung der Erfindung]
  • [Technisches Problem]
  • Bei einer Konfiguration, bei der komprimierte Daten im Endspeichermedium gespeichert werden, kann die komprimierte Datengröße der relevanten Aktualisierungsdaten infolge der Komprimierung der Aktualisierungsdaten größer oder kleiner als die Größe der komprimierten Daten vor der Aktualisierung sein. Aus diesem Grund können die komprimierten Daten nach Aktualisierung nicht einfach in den Bereich überschrieben werden, in dem komprimierte Daten von Daten vor Aktualisierung gespeichert wurden. Die Lehre von Patentliteratur 1 offenbart, dass während einer Aktualisierung von Daten ein Prozess durchgeführt wird, der die Daten vor Aktualisierung vorübergehend liest, die Daten komprimiert und die Aktualisierungsdaten in die dekomprimierten Daten überschreibt. Darüber hinaus wird, wenn die Größe der komprimierten Daten nach Aktualisierung die Größe der komprimierten Daten vor Aktualisierung übersteigt, ein Prozess durchgeführt, um Teildaten zu speichern, die nicht in dem Bereich gespeichert werden konnten, in dem die komprimierten Daten vor Aktualisierung gespeichert worden waren, indem ein nicht verwendeter Speicherbereich durchsucht wird. Aus diesem Grund ist der Verarbeitungsaufwand während einer Aktualisierung von Daten hoch.
  • Das Ziel der vorliegenden Erfindung besteht in der Verbesserung der Verarbeitungsleistung der Speichervorrichtung, die die komprimierten Daten speichert.
  • [Lösung des Problems]
  • Bei der Speichervorrichtung gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung wird ein Dekomprimierungs-VOL mit keinem direkten entsprechenden Verhältnis (Zuordnung) zum Endspeichermedium für die übergeordnete Vorrichtung bereitgestellt und es wird bewirkt, dass die übergeordnete Vorrichtung auf den Dekomprimierungs-VOL zugreift. Danach werden die in den Dekomprimierungs-VOL geschriebenen Daten online in einem Zwischenspeicher komprimiert und die komprimierten Daten werden in einem Datenträger (Komprimierungs-VOL) gespeichert, der dem Endspeichermedium direkt zugeordnet ist. Durch Verwalten von Zuordnungsinformationen zwischen einem Bereich des Dekomprimierungs-VOL (in dem unkomprimierte Daten gespeichert werden) und einem Bereich des Komprimierungs-VOL (in dem komprimierte Daten gespeichert werden, werden darüber hinaus die Positionsinformationen im Dekomprimierungs-VOL, die durch die Leseanfrage ausgewiesen werden, sogar bei einer Leseanfrage von der übergeordneten Vorrichtung an den Dekomprimierungs-VOL auf Basis der Zuordnungsinformationen zu Positionsinformationen im Endspeichermedium (Speichermedium, das dem Komprimierungs-VOL zugeordnet ist) umgewandelt und komprimierte Daten aus dem Endspeichermedium gelesen. Danach werden die komprimierten Daten in den Zwischenspeicher dekomprimiert und auf die übergeordnete Vorrichtung übertragen.
  • Darüber hinaus ist die vorliegende Erfindung dadurch gekennzeichnet, dass Daten komprimiert werden und eine RAID-Parität für die komprimierten Daten nach Komprimierung im Zwischenspeicher erzeugt wird, die als Zwischenspeicher der Speichervorrichtung betrieben wird.
  • [Vorteilhafte Wirkungen der Erfindung]
  • Gemäß der vorliegenden Erfindung werden in der Speichervorrichtung Daten, die in den Dekomprimierungs-VOL geschrieben sind, bei Komprimierung der geschriebenen Daten, die vom Server empfangen wurden, und beim Speichern in der HDD online in einem Zwischenspeicher komprimiert und die komprimierte Daten wird in einem Datenträger (Komprimierungs-VOL) gespeichert, der dem Endspeichermedium direkt zugeordnet ist, durch Anhängen von Daten, so dass es nicht erforderlich ist, während der Datenaktualisierung einen komplexen Prozess durchzuführen. Durch Verwalten von Zuordnungsinformationen zwischen einem Bereich des Dekomprimierungs-VOL (in dem unkomprimierte Daten gespeichert werden) und einem Bereich des Komprimierungs-VOL (in dem komprimierte Daten gespeichert werden, werden darüber hinaus die Positionsinformationen im Dekomprimierungs-VOL, die durch die Leseanfrage ausgewiesen werden, sogar bei einer Leseanfrage von der übergeordneten Vorrichtung an einen Dekomprimierungs-VOL auf Basis der Zuordnungsinformationen zu Positionsinformationen des Endspeichermedium (Speichermedium, das dem Komprimierungs-VOL zugeordnet ist) umgewandelt und komprimierte Daten aus dem Endspeichermedium gelesen werden können, so dass eine Zugriffsleistung gleich dem Zugriff auf einen normalen Datenträger (der Daten während des Speicherns nicht komprimiert) erzielt werden kann.
  • [Kurze Beschreibung der Zeichnungen]
  • 1 ist ein konzeptuelles Schaubild eines Betriebs einer Speichervorrichtung gemäß der vorliegenden Erfindung.
  • 2 ist eine Ansicht, die eine Konfiguration einer Speichervorrichtung (Speichersystem) gemäß der vorliegenden Erfindung zeigt.
  • 3 ist eine Ansicht, die eine interne Konfiguration eines Zwischenspeichers zeigt.
  • 4 ist eine Ansicht, die ein Konzept einer Zuordnung zwischen logischen Bereichen LBA 0 und LBA 1 zeigt, die von einem Zwischenspeicher der vorliegenden Ausführungsform an eine Speichersteuereinheit und einen physischen Bereich PBA bereitgestellt wird.
  • 5 ist eine Ansicht, die einen Schreibbefehl und Antwortinformationen auf den Schreibbefehl, wie von einem Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, veranschaulicht.
  • 6 ist eine Ansicht, die einen Lesebefehl und Antwortinformationen auf den Lesebefehl, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, zeigt.
  • 7 ist ein Befehl zur Erzeugung einer Full-Stripe-Parität und Antwortinformationen auf den Befehl zur Erzeugung einer Full-Stripe-Parität, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt.
  • 8 ist eine Ansicht, die einen Befehl zur Erzeugung einer Aktualisierungsparität und Antwortinformationen auf den Befehl zur Erzeugung einer Aktualisierungsparität, wie von einem Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, zeigt.
  • 9 ist eine Ansicht, die einen LBA-1-Zuordnungsbefehl und Antwortinformationen auf den LBA-1-Zuordnungsbefehl, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, zeigt.
  • 10 ist ein LBA-0-Zuordnungsbefehl und Antwortinformationen auf den relevanten LBA-0-Zuordnungsbefehl, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt.
  • 11 ist ein Befehl zur Erfassung der Komprimierungsdatengröße und Antwortinformationen auf den Befehl zur Erfassung der Komprimierungsdatengröße, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt.
  • 12 ist ein Zuordnungsfreigabebefehl und Antwortinformationen auf den Zuordnungsfreigabebefehl, wie von einem Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt.
  • 13 ist eine Ansicht, die einen Inhalt einer Dekomprimierungs-VOL-Verwaltungstabelle zeigt.
  • 14 ist eine Ansicht, die einen Inhalt einer Komprimierungs-VOL-Verwaltungstabelle zeigt.
  • 15 ist ein konzeptuelles Schaubild eines Verhältnisses zwischen einem Dekomprimierungs-VOL und einem Komprimierungs-VOL.
  • 16 ist ein konzeptuelles Schaubild, das ein Verhältnis zwischen einem Komprimierungs-VOL und einem Endspeichermedium zeigt, das einem Komprimierungs-VOL entspricht.
  • 17 ist eine Ansicht, die einen Inhalt einer Datenträgerzuordnungstabelle zeigt.
  • 18 ist eine Ansicht, die einen Inhalt einer Adressenzuordnungstabelle zeigt.
  • 19 ist eine konzeptuelle Ansicht eines Verhältnisses zwischen Datenträger, Slot und Zwischenspeichersegment gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung.
  • 20 ist eine konzeptuelle Ansicht einer Zwischenspeicherverwaltungsdatenstruktur, die von der Speichervorrichtung verwaltet wird.
  • 21 ist eine Ansicht, die ein Verhältnis zwischen Zwischenspeicherverzeichnis, SLCT und SGCT zeigt.
  • 22 ist eine Ansicht, die eine Datenstruktur einer Warteschlange mit noch nicht reflektierten Daten (”dirty”) oder einer Warteschlange mit bereits reflektierten Daten (”clean”) zeigt.
  • 23 ist eine Ansicht, die eine Datenstruktur einer freien (”free”) Warteschlange zeigt.
  • 24 ist eine Ansicht, die einen Prozessablauf eines Speicherns von Schreibdaten, die von einem Host-Computer empfangen wurden, in einem Zwischenspeicher im Rahmen einer Schreibverarbeitung gemäß der vorliegenden Ausführungsform.
  • 25 ist eine Ansicht, die einen Ablauf einer Datenübertragungsverarbeitung auf einen Komprimierungs-VOL gemäß der vorliegenden Erfindung zeigt.
  • 26 ist eine Ansicht, die einen Ablauf einer Auslagerungsverarbeitung gemäß der vorliegenden Erfindung zeigt.
  • 27 ist eine Ansicht, die einen Ablauf einer Verarbeitung zeigt, wenn eine Leseanfrage an einen Datenträger (Dekomprimierungs-VOL) von einem Host-Computer empfangen wird.
  • 28 ist eine Ansicht, die einen Ablauf einer Verarbeitung zeigt, wenn eine Leseanfrage an einen Datenträger (Dekomprimierungs-VOL) von einem Host-Computer empfangen wird.
  • 29 ist eine konzeptuelle Ansicht, die ein Verhältnis zwischen Komprimierungs-VOL, logischem Datenträger (LDEV) und Endspeichermedium (PDEV), die von einer Speichervorrichtung verwaltet werden, gemäß dem modifizierten Beispiel 1 der vorliegenden Erfindung zeigt.
  • 30 ist eine Ansicht, die einen Inhalt von HVOL-Verwaltungsinformationen zeigt.
  • 31 ist eine Ansicht, die einen Inhalt einer Seitenzuordnungstabelle zeigt.
  • 32 ist eine Ansicht, einen Inhalt einer seitenfreien Liste zeigt.
  • 33 ist eine Ansicht, die einen Ablauf einer Datenübertragungsverarbeitung auf einen Komprimierungs-VOL gemäß dem modifizierten Beispiel 1 der vorliegenden Erfindung zeigt.
  • 34 ist eine Ansicht, die einen Ablauf einer Bereichszuordnungsverarbeitung an eine Seite im HVOL gemäß dem modifizierten Beispiel 1 der vorliegenden Erfindung zeigt.
  • 35 ist eine Ansicht, die einen Inhalt einer Datenträgerzuordnungstabelle gemäß dem modifizierten Beispiel 2 der vorliegenden Erfindung zeigt.
  • [Beschreibung von Ausführungsformen]
  • Die bevorzugten Ausführungsformen der vorliegenden Erfindung werden unter Bezugnahme auf die Zeichnungen beschrieben. Die vorliegende Erfindung ist nicht auf die nachstehend gezeigten bevorzugten Ausführungsformen beschränkt. Ein Flash-Speicher vom NAND-Typ (im Folgenden als FM bezeichnet) wird als Beispiel für ein Halbleiteraufzeichnungselement für die Beschreibung verwendet, die vorliegende Erfindung ist jedoch nicht auf FMs beschränkt und zielt auf alle nicht-flüchtigen Speicher ab. Bei der vorliegenden Ausführungsform ist ein Beispiel veranschaulicht, bei dem eine Datenkomprimierung durch eine dedizierte Hardwareschaltung erfolgt, wobei die vorliegende Erfindung jedoch nicht auf diese Ausführungsform beschränkt ist und Daten über eine arithmetische Datenkomprimierungsverarbeitung durch einen Universalprozessor komprimiert werden können. Gemäß der vorliegenden Ausführungsform ist darüber hinaus eine Ausführungsform veranschaulicht, bei der eine Parität (redundante Daten) über eine dedizierte Hardwareschaltung berechnet wird, wobei die vorliegende Erfindung jedoch nicht auf eine solche Ausführungsform beschränkt ist und eine RAID-Parität über eine arithmetische Paritätserzeugungsverarbeitung durch einen Universalprozessor erzeugt werden kann.
  • Zunächst folgt eine Beschreibung der vorliegenden Erfindung unter Bezugnahme auf 1. In einer Speichervorrichtung 1 der vorliegenden Erfindung werden aus einem Host-Computer 3 geschriebene Daten komprimiert und in einem SSD (Solid-State-Laufwerk) 11 oder einem HDD (Festplattenlaufwerk) 12 gespeichert, das das Endspeichermedium ist, da sich die Datengröße nach Komprimierung jedoch je nach Dateninhalt unterscheidet, ist es schwierig, eine eindeutige Datenspeicherposition zu ermitteln. Aus diesem Grund erstellt und verwaltet die Speichervorrichtung 1 zwei Typen von logischen Datenträgern. Ein erster Typ eines logischen Datenträgers ist ein logischer Datenträger, der für den Host-Computer 3 bereitgestellt ist und vom Host-Computer 3 erkannt wird, als würden unkomprimierte Daten im relevanten logischen Datenträger gespeichert. Der zweite Typ eines logischen Datenträgers, der vom Host-Computer 3 nicht erkannt wird, und der relevante logische Datenträger wird verwendet, wenn eine Speichersteuereinheit 10 die komprimierten Daten in einem Endspeichermedium (SSD 11 oder HDD 12) speichert. Danach wird der erste logische Datenträger als ”Dekomprimierungs-VOL” bezeichnet und wird der zweite logische Datenträger als ”Komprimierungs-VOL” bezeichnet.
  • Der Dekomprimierungs-VOL (”Dekomprimierungs-VOL 5000” in 1) dient lediglich der Bereitstellung eines logischen (virtuellen) Speicherbereichs für den Host-Computer (3), und es gibt keinen physischen Speicherbereich (Speicherbereich des SSD 11 oder HDD 12, das das Endspeichermedium ist), der den jeweiligen Adressen im Dekomprimierungs-VOL entspricht. Andererseits ist der Komprimierungs-VOL (”Komprimierungs-VOL 5500” in 1) ein Datenträger, dessen jeweilige Speicherbereiche (im Komprimierungs-VOL) eine 1-zu-1-Entsprechung mit den Speicherbereichen des SSD 11 und des HDD 12 aufweisen, das das Endspeichermedium ist. Die Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform verwaltet eine Mehrzahl (z. B. vier) von Endspeichermedien als eine RAID-Gruppe, und die jeweiligen Speicherbereiche der einen RAID Gruppe sind mit den jeweiligen Speicherbereichen des Komprimierungs-VOL assoziiert.
  • Wenn eine Datenschreibanfrage und Schreibdaten vom Host-Computer 3 an den Dekomprimierungs-VOL übertragen werden, werden die Schreibdaten in einem Zwischenspeicher 26 gespeichert. Der Zwischenspeicher 26 der vorliegenden Erfindung hat eine Komprimierungsfunktion, wobei er beim Speichern der Schreibdaten in den Zwischenspeicher 26 diese in einem komprimierten Zustand speichert. Beim Lesen (Ausgeben) der komprimierten Daten im Zwischenspeicher 26 kann er die Daten in einem dekomprimierten Zustand über die Komprimierungsfunktion lesen, so dass die in einem komprimierten Zustand gespeicherten Daten für den Host-Computer 3 nicht sichtbar sind (von diesem nicht erkannt werden).
  • Da das Ziel der vorliegenden Erfindung im Speichern der Daten in einem komprimierten Zustand im Endspeichermedium liegt, werden die im Zwischenspeicher 26 gespeicherten komprimierten Daten im immer noch komprimierten Zustand in das Endspeichermedium geschrieben. Gemäß der Speichervorrichtung 1 der vorliegenden Erfindung wird eine Konfiguration angewandt, bei der Aktualisierungsdaten nicht in den gleichen Bereich wie in den Bereich gespeichert werden, in dem Daten vor Aktualisierung gespeichert wurden, sondern werden an ein Endspeichermedium 11 (12) angehängt. Darüber hinaus wird ein Datenträger (Komprimierungs-VOL 5500), der sich vom Komprimierungs-VOL unterscheidet, für das Speichern vorbereitet und das Verwalten der komprimierten Daten wird vorbereitet und ein Prozess wird durchgeführt, um die Daten, die in den Komprimierungs-VOL geschrieben sind (die tatsächlichen Daten werden nur im einem Zwischenspeicher 26 gespeichert), künstlich in den Komprimierungs-VOL 5500 zu migrieren.
  • Es gibt kein festes entsprechendes Verhältnis zwischen den Bereichen des Dekomprimierungs-VOL und den Bereichen des Komprimierungs-VOL, so dass die Datenspeicherposition im Komprimierungs-VOL beim Migrieren von Daten aus dem Dekomprimierungs-VOL in den Komprimierungs-VOL dynamisch ermittelt wird. Beispielsweise wenn Daten a, b, c, d und e willkürlich in den Dekomprimierungs-VOL geschrieben werden, führt die Speichervorrichtung 1 einen Prozess durch, um die Daten, die in den Dekomprimierungs-VOL geschrieben sind, in den Bereich im Komprimierungs-VOL zu migrieren (diesem zuzuordnen), wobei die Daten a, b, c, d und e gleichzeitig anhand des Kopfes des Komprimierungs-VOL zugeordnet werden, so dass die Daten vor Aktualisierung während des Prozesses zur RAID-Paritätserzeugung, der vor dem Schreiben von Daten in das Endspeichermedium durchgeführt wird, nicht gelesen werden müssen. Die Speicherposition sämtlicher Daten, die in den Dekomprimierungs-VOL geschrieben sind, im Komprimierungs-VOL wird über eine Inter-Datenträger-Zuordnungstabelle 650 verwaltet. Nachdem die Daten a, b, c, d und e (die komprimierten Daten davon) dem Komprimierungs-VOL zugeordnet wurden, werden redundante Daten (Parität) durch eine RAID-Technik auf Basis dieser Daten erzeugt, wobei die Daten (komprimierte Daten) und die Parität in das Endspeichermedium geschrieben werden, das den Komprimierungs-VOL konfiguriert.
  • Bei einer allgemeinen Speichervorrichtung, die Daten ohne Komprimierung dieser speichert, werden bei Empfang einer Datenaktualisierungsanfrage und von Aktualisierungsdaten an einen Datenträger die relevanten Aktualisierungsdaten überschrieben und in einem Bereich gespeichert, in dem die Daten vor Aktualisierung der relevanten Aktualisierungsdaten gespeichert wurden. Bei einer Konfiguration, bei der die komprimierten Daten im Endspeichermedium gespeichert werden, kann die komprimierte Datengröße der relevanten Aktualisierungsdaten infolge der Komprimierung der Aktualisierungsdaten jedoch größer als die Größe der komprimierten Daten vor der Aktualisierung werden. Aus diesem Grund wird die Verarbeitung bei Überschreiben des Endspeichermediums kompliziert und die Verarbeitungsleistung wird verschlechtert.
  • Die Speichervorrichtung gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung stellt einen Dekomprimierungs-VOL ohne direktes entsprechendes Verhältnis (Zuordnung) mit dem Endspeichermedium für eine übergeordnete Vorrichtung wie einen Host-Computer bereit und bewirkt, dass die übergeordnete Vorrichtung auf den Dekomprimierungs-VOL zugreift. Der Verarbeitungsaufwand während einer Datenaktualisierung wird verhindert, indem eine Online-Komprimierung der in den Dekomprimierungs-VOL geschriebenen Daten in einem Zwischenspeicher durchgeführt wird und die komprimierten Daten im Komprimierungs-VOL, der dem Endspeichermedium direkt zugeordnet ist, in Form eines weiteren Schreibvorgangs gespeichert werden. Durch Verwalten von Zuordnungsinformationen zwischen den Bereichen des Dekomprimierungs-VOL, in denen unkomprimierte Daten gespeichert werden, und den Bereichen des Komprimierungs-VOL, in denen komprimierte Daten gespeichert werden, werden darüber hinaus sogar bei Empfang einer Leseanfrage in Bezug auf eine Dekomprimierungs-VOL von der übergeordneten Vorrichtung die Positionsinformationen im Dekomprimierungs-VOL, der von der Leseanfrage ausgewiesen ist, auf Basis der Zuordnungsinformationen in die Positionsinformationen des Komprimierungs-VOL umgewandelt, die komprimierten Daten werden aus dem Komprimierungs-VOL (Endspeichermedium) gelesen und die komprimierten Daten werden im Zwischenspeicher dekomprimiert, bevor sie auf die übergeordnete Vorrichtung übertragen werden, so dass kürzere Antwortzeiten möglich werden.
  • Details sind später beschrieben, durch Anwenden einer Technik der schlanken Speicherzuweisung (Thin Provisioning) in Bezug auf den Komprimierungs-VOL wird es jedoch möglich, die Kapazitätseffizienz zu verbessern und ein kostengünstiges System umzusetzen.
  • Details sind später beschrieben, durch Berücksichtigen der Datenanordnung im Dekomprimierungs-VOL und Migrieren von Daten in den Komprimierungs-VOL kann jedoch eine sequentielle Zugriffsleistung verbessert werden.
  • <Ausführungsform>
  • 2 ist eine Ansicht, die eine Konfiguration einer Speichervorrichtung (Speichersystem) gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
  • Die Speichervorrichtung 1 ist mit einer oder mehreren Speichersteuereinheiten 10 (im Folgenden auch mit ”Steuereinheit 10” abgekürzt, ausgestattet. Jede Steuereinheit 10 ist mit einer Host-Schnittstelle (in der Zeichnung als ”HIF I/F” bezeichnet) 24 für eine Verbindung mit einem Host-Computer (übergeordnete Vorrichtung) 3 und einer Plattenschnittstelle (in der Zeichnung als ”Platten-I/F” bezeichnet) 23 für eine Verbindung mit einem Aufzeichnungsmedium ausgestattet. Eine Vorrichtung, die Protokollen wie FC (Fibre Channel), iSCSI (internet Small Computer System Interface), FCoE (Fibre Channel over Ethernet) und dergleichen entspricht, wird als Host-Schnittstelle 24 verwendet, und eine Vorrichtung, die diversen Protokollen wie FC, SAS (Serial Attached SCSI), SATA (Serial Advanced Technology Attachment), PCI-Peripheral Component Interconnect)-Express und dergleichen entspricht, wird als Plattenschnittstelle 107 verwendet. In der folgenden Beschreibung kann die Host-Schnittstelle 24 auch als ”Anschluss 24” bezeichnet sein. Darüber hinaus ist die Speichersteuereinheit 10 mit Hardwareressourcen wie einem Prozessor (in der Zeichnung mit ”MPU” ausgewiesen) 31 und einen DRAM 25 ausgestattet sein und gibt unter der Steuerung des Prozessors 21 in Antwort auf eine Lese-/Schreibanfrage vom Host-Computer 3 eine Lese-/Schreibanfrage an ein Endspeichermedium wie das SSD 11 oder das HDD 12 aus. Außerdem weist sie einen Zwischenspeicher 26 auf, der darin gespeichert ist, und der Zwischenspeicher 26 ist dazu in der Lage, vom Prozessor 21 über einen internen Schalter (in der Zeichnung als ”interner SW” ausgewiesen) 22 gesteuert zu werden. Darüber hinaus ist sie mit einer Knoten-I/F 27 für einen gegenseitigen Austausch von Daten- und Steuerinformationen zwischen den Speichersteuereinheiten 10 ausgestattet.
  • Die Speichervorrichtung 1 ist über ein Netzwerk mit einer Verwaltungsvorrichtung 4 verbunden. Ethernet (eingetragene Handelsmarke) und dergleichen wird als Übertragungsmedium dieses Netzwerks verwendet. Auch wenn der Einheit halber in 2 nicht gezeigt, ist dieses Netzwerk mit jeder Speichersteuereinheit 10 in der Speichervorrichtung 1 verbunden. Dieses Netzwerk kann auch über ein gleiches Netzwerk wie das SAN 2 verbunden sein.
  • Die Verwaltungsvorrichtung 4 ist ein Computer, der mit Hardwareressourcen wie einem Prozessor, einem Hauptspeicher, einer Netzwerkschnittstelle, einer lokalen Eingabe-/Ausgabevorrichtung und so weiter und Softwareressourcen wie einem Verwaltungsprogramm ausgestattet ist. Ein Verwaltungsprogramm wird in der Verwaltungsvorrichtung 1 betrieben und durch Ausführen des relevanten Verwaltungsprogramms erfasst die Verwaltungsvorrichtung 4 Informationen aus der Speichervorrichtung 1 und stellt eine GUI für den Verwaltungsbetrieb für einen Systemadministrator bereit. Der Systemadministrator verwendet diese GUI für den Verwaltungsbetrieb, um Vorgänge wie das Bilden von Datenträgern in der Speichervorrichtung 1 oder das Überwachen der Speichervorrichtung 1 durchzuführen.
  • Eine Mehrzahl (z. B. 16) von SSDs 11 und HDDs 12 sind in der Speichervorrichtung 1 vorhanden, die über die Plattenschnittstelle 23 mit der Mehrzahl von Speichersteuereinheiten 10 verbunden sind, die gleichermaßen innerhalb der Speichervorrichtung vorhanden sind. Das SSD 11 und das HDD 12 speichern Daten, die gemäß einer Schreibanfrage von der Speichersteuereinheit 10 übertragen wurden, nehmen die gespeicherten Daten heraus und übertragen sie an die Speichersteuereinheit 10 gemäß einer Leseanfrage. Zu diesem Zeitpunkt weist die Plattenschnittstelle 107 die Lese-/Schreibposition von Daten über eine logische Blockadresse (Logical Block Address, im Folgenden als ”LBA” bezeichnet) aus. Darüber hinaus verwaltet die Speichervorrichtung 1 die Mehrzahl von SSDs 11 und HDDs 12 als RAID-Gruppe in einer Einheit einer bestimmten Anzahl von Vorrichtungen (z. B. 4, 8, 16 und so weiter) und eine Wiederherstellung von Daten ist gemäß der Konfiguration sogar dann möglich, wenn eine oder (zwei) Platten in der RAID-Gruppe ausfallen.
  • Ein Host-Computer (übergeordnete Vorrichtung) 3 ist mit Hardwareressourcen wie einem Prozessor, einem Speicher, einer Netzwerkschnittstelle, einer lokalen Eingabe-/Ausgabevorrichtung und dergleichen und Softwareressourcen wie einem Vorrichtungstreiber, einem Betriebssystem (OS), einem Anwendungsprogramm und dergleichen ausgestattet. Somit führt der Host-Computer 3 einen Datenaustausch mit einer Speichervorrichtung 1 und Lese-/Schreibanfragen von Daten durch Ausführen diverser Programme unter der Steuerung des Prozessors durch. Darüber hinaus erfasst er Verwaltungsinformationen wie den Verwendungsstatus oder den Betriebsstatus der Speichervorrichtung 1 durch Ausführen der diversen Programme unter der Steuerung des Prozessors. Darüber hinaus ist es möglich, die Verwaltungseinheit der Aufzeichnungsvorrichtung, das Verfahren zum Steuern der Aufzeichnungsvorrichtung oder die Einstellung der Datenkomprimierung auszuweisen oder zu ändern.
  • Im Folgenden wird eine interne Konfiguration des Zwischenspeichers 26 in Bezug auf 3 beschrieben.
  • Der Zwischenspeicher 26 gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung verwendet einen Flash-Speicher als Speichermedium. Der Zwischenspeicher 26 ist mit einer FM-Steuereinheit (FM-CTL) 410 und einer Mehrzahl (z. B. 32) solcher FMs 420 ausgestattet.
  • Die FM-Steuereinheit 410 weist im Inneren einen Prozessor 415, einen RAM 413, eine Datenkomprimierungs-/Datendekomprimierungseinheit 418, eine Paritätserzeugungseinheit 419, einen Datenpuffer 416, eine E/A-Schnittstelle (E/A) 411, eine FM-Schnittstelle 417 und einen Schalter 414 zum Durchführen eines gegenseitigen Datentransfers auf.
  • Die E/A-Schnittstelle 411 ist mit dem internen Schalter 22 verbunden, den die Speichersteuereinheit 10 innerhalb der Speichervorrichtung 1 aufweist, und ist über den Schalter 414 mit diversen Komponenten der Flash-Steuereinheit 410 verbunden. Die E/A-Schnittstelle 411 dient dem Empfangen diverser Befehle am Zwischenspeicher 26 vom Prozessor 21 der Speichersteuereinheit 10 innerhalb der Speichervorrichtung 1 oder dem Durchführen eines Datentransfers.
  • Der Prozessor 415 ist über den Schalter 414 mit diversen Komponenten der FM-Steuereinheit 410 verbunden und steuert die gesamte FM-Steuereinheit 410 auf Basis der Programm- und Verwaltungsinformationen, die im RAM 413 gespeichert sind. Der Datenpuffer 416 wird verwendet, um Daten in der Hälfte eines Datentransferprozesses innerhalb der Flash-Steuereinheit 410 vorübergehend zu speichern.
  • Eine FM-Schnittstelle (I/F) 417 ist über eine Mehrzahl (z. B. 16) Busse mit dem FM 420 verbunden. Eine Mehrzahl (z. B. 2) von FMs 420 ist mit jedem Bus verbunden.
  • Die Datenkomprimierungs-/Datendekomprimierungseinheit 418 weist eine Funktion zum Verarbeiten eines verlustfreien Komprimierungsalgorithmus auf. Eine Datenkomprimierungs-/Datendekomprimierungseinheit 418 komprimiert Daten, die von der E/A-Schnittstelle 411 eingehen und in den FM 420 geschrieben sind oder dekomprimiert die Daten, die vom FM 420 an die E/A-Schnittstelle 411 übertragen werden, auf Basis der Anweisung vom Prozessor 415. Die Datenkomprimierungs-/Datendekomprimierungseinheit kann als logische Schaltung umgesetzt sein oder eine ähnliche Funktion kann umgesetzt werden, indem ein Komprimierungs-/Dekomprimierungsprogramm von einem Prozessor verarbeitet wird.
  • Die Paritätserzeugungseinheit 419 weist eine Funktion zum Erzeugen einer Parität auf, wobei es sich um redundante Daten handelt, die mit einer RAID-Technik erfasst werden, und insbesondere weist sie Funktionen zum Berechnen eines XOR, das bei RAID 5, RAID 6 usw. verwendet wird, zum Erzeugen eines Reed-Solomon-Codes, der bei RAID 6 verwendet wird, und zum Erzeugen einer diagonalen Parität auf, die für die GERADE-UNGERADE-Methode verwendet wird.
  • Der Schalter 414, die Plattenschnittstelle 411, der Prozessor 415, der Datenpuffer 416, die FM-Schnittstelle 417, die Datenkomprimierungs-/Datendekomprimierungseinheit 418 und die Paritätserzeugungseinheit 419, die oben beschrieben sind, können innerhalb eines einzelnen Halbleiterelements wie einer ASIC (anwendungsspezifische integrierte Schaltung) oder einem FPGA (feldprogrammierbarem Gate-Array) konfiguriert sein oder können eine Konfiguration anwenden, bei der eine Mehrzahl von einzelnen dedizierten ICs (integrierten Schaltungen) miteinander verbunden sind.
  • Ein flüchtiger Speicher wie ein DRAM kann als RAM 413 angewandt werden. Der RAM 413 speichert Verwaltungsinformationen des FM 420, der innerhalb des Zwischenspeichers 26 verwendet wird, eine Transferliste, die Transfersteuerinformationen enthält, die von jedem DMA und so weiter verwendet werden. Darüber hinaus kann eine Konfiguration angewandt werden, wobei ein Teil der Rolle oder alle Rollen des Datenpuffers 416, der Daten speichert, im RAM 413 enthalten ist bzw. sind und der RAM 413 zur Datenspeicherung verwendet wird.
  • Bei der vorliegenden Ausführungsform, wie in 3 gezeigt, ist der Zwischenspeicher 26 beschrieben, der einen Flash-Speicher enthält, das in den Zwischenspeicher 26 aufzunehmende Speichermedium ist jedoch nicht auf Flash-Speicher beschränkt. Es kann ein Phasenübergangs-RAM oder ein Resistance-RAM sein. Darüber hinaus kann der gesamte FM 420 oder ein Teil davon ein flüchtiger RAM sein (DRAM oder dergleichen).
  • Im Folgenden wird ein Speicherplatz beschrieben, den der Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform für die Speichersteuereinheit 10 bereitstellt.
  • Der Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform stellt logischen Speicherplatz an die Speichersteuereinheit 10 (an deren Prozessor 21) bereit, mit der er verbunden ist. Unter ”Bereitstellen von Speicherplatz” versteht sich, dass Adressen den jeweiligen Speicherbereichen zugewiesen werden, auf die von der Speichersteuereinheit 10 zugegriffen wird, und dadurch, dass der Prozessor 21 der Speichersteuereinheit 10, mit der der Zwischenspeicher 26 verbunden ist, veranlasst wird, eine Zugriffsanfrage (Befehl) auszugeben, der die relevante Adresse ausweist, werden die Daten, die in dem von der relevanten Adresse festgelegten Bereich gespeichert sind, in einen Status versetzt, in dem Verweise und Aktualisierungen möglich sind. Der Prozessor 415 des Zwischenspeichers 26 verwaltet den physischen Steuerbereich, der aus dem FM 420 zusammengesetzt ist, indem der physische Speicherbereich eindeutig einem eindimensionalen Adressraum zugewiesen wird, der nur innerhalb des Zwischenspeichers 26 verwendet wird. Im Folgenden wird ein Adressraum zum Ausweisen eines physischen Bereichs (physischer Adressraum), der nur innerhalb des Zwischenspeichers 26 verwendet wird, PBA-(physische Blockadresse)-Raum genannt und eine Position (Adresse) jedes physischen Speicherbereichs (Sektor, bei der vorliegenden Ausführungsform entspricht ein Sektor 512 Bytes) innerhalb des PBA-Raums als PBA (physische Blockadresse) bezeichnet.
  • Die herkömmliche Speichervorrichtung wie das SSD stellt einen Speicherplatz an eine übergeordnete Vorrichtung (Host-Computer und dergleichen) bereit, mit der die Speichervorrichtung verbunden ist. Andererseits ist der Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform dadurch gekennzeichnet, dass er zwei logische Speicherplätze an die Speichersteuereinheit 10 bereitstellt, mit der der Zwischenspeicher 26 verbunden ist. Das Verhältnis zwischen diesen beide logischen Speicherplätzen und dem PBA-Raums wird im Folgenden unter Bezugnahme auf 4 beschrieben.
  • Der Zwischenspeicher 26 stellt zwei logische Speicherplätze bereit, einen LBA-0-Raums 701 und einen LBA-1-Raums 702. Im Folgenden wird die Adresse, die den jeweiligen Speicherräumen im LBA-0-Raums 701 zugewiesen ist, ”LBA 0” oder ”LBA-0-Adresse” genannt und wird die Adresse, die den jeweiligen Speicherbereichen im LBA-1-Raums 702 zugewiesen ist, als ”LBA 1” oder ”LBA-1-Adresse” bezeichnet. Gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung sind außerdem die Größe der LBA-0-Raums 701 und die Größe des LBA-1-Raums 702 jeweils kleiner gleich der Größe des PBA-Raums, aber sogar wenn die Größe des LBA-0-Raums 701 größer als die Größe des PBA-Raums ist, ist die vorliegende Erfindung effektiv. Der LBA-0-Raum 701 ist ein logischer Bereich, in dem vom Prozessor 21 der Speichersteuereinheit 10 auf die komprimierten Daten, die im physischen Speicherbereich aufgezeichnet werden, als komprimierte Daten zugegriffen wird. Wenn der Prozessor 21 eine Schreibanfrage an den Zwischenspeicher 26 unter Ausweisen einer Adresse (LBA 0) im LBA-0-Raums 701 ausgibt, erfasst der Zwischenspeicher 26 die Schreibdaten aus der Speichersteuereinheit 10, komprimiert sie über die Datenkomprimierungs-/Datendekomprimierungseinheit 418, speichert sie im physischen Speicherbereich im FM 420, der vom PBA ausgewiesen wird, wie vom Zwischenspeicher 26 dynamisch ausgewählt, und ordnet die LBA 0 der PBA zu. Wenn der Prozessor 21 eine Leseanfrage an den Zwischenspeicher 26 ausstellt, die die LBA 0 ausweist, erfasst darüber hinaus der Zwischenspeicher 26 Daten (komprimierte Daten) aus dem physischen Speicherbereich des FM 420, der in der PBA festgelegt ist, die der LBA 0 zugeordnet ist, dekomprimiert sie über die Datenkomprimierungs-/Datendekomprimierungseinheit 418 und überträgt die dekomprimierten Daten als Lesedaten an die Speichersteuereinheit 10. Die Umwandlung zwischen LBA 0 und PBA wird durch Warten der Verwaltungsinformationen der Zuordnung zwischen LBA 0 und PBA im RAM 413 und unter Verwendung dieser erzielt.
  • Der LBA-1-Raum 702 ist ein logischer Bereich, in dem die Speichersteuereinheit 10 auf die komprimierten Daten, die im physischen Speicherbereich gespeichert sind, der aus dem FM 420 zusammengesetzt ist, als komprimierte Daten (ohne Dekomprimierung zugreift. Wenn der Prozessor 21 eine Schreibanfrage an den Zwischenspeicher 26 unter Ausweisen einer LBA 1 ausgibt, erfasst der Zwischenspeicher 26 Daten (komprimierte Schreibdaten) aus der Speichersteuereinheit 10, speichert Daten im Speicherbereich des FM, der von der PBA ausgewiesen wird, wie vom Zwischenspeicher 26 dynamisch ausgewählt, und ordnet die LBA 1 der PBA zu. Wenn der Prozessor 21 eine Leseanfrage ausstellt, die die LBA 1 ausweist, erfasst darüber hinaus der Zwischenspeicher 26 Daten (komprimierte Daten) aus dem physischen Speicherbereich des FM 420, der von der PBA ausgewiesen ist, die der LBA 1 zugeordnet ist, überträgt die Daten (dekomprimierte Daten) als Lesedaten an die Speichersteuereinheit 10. Im Übrigen wird die Umwandlung zwischen LBA 1 und PBA auch durch Beibehalten der Verwaltungsinformationen der Zuordnung zwischen LBA 1 und PBA im RAM 413 und unter Verwendung dieser erzielt.
  • Wie in 4 gezeigt, kann darüber hinaus der PBA-Raum, der den physischen Speicherbereich zeigt, in dem komprimierte Daten 713 gespeichert sind, gleichzeitig sowohl einem Bereich im LBA-0-Raum als auch einem Bereich im LBA-1-Raum zugeordnet werden. Beispielsweise werden die dekomprimierten Daten der komprimierten Daten 713 als unkomprimierte Daten 711 zugeordnet und werden nicht-dekomprimierte Daten der komprimierten Daten 713 als komprimierte Daten 712 zugeordnet. Diese Zuordnung wird auf Basis einer Anweisung von der Speichersteuereinheit 10 durchgeführt. Beispielsweise wenn der Prozessor 21 Daten in den Zwischenspeicher 26 unter Ausweisen des LBA 0 (unter der Annahme, dass LBA 0 0x00000001000 ist) schreibt, werden die relevanten Daten von der Datenkomprimierungs-/Datendekomprimierungseinheit 418 innerhalb des Zwischenspeicher 26 komprimiert und die komprimierten Daten werden im PBA-Raum platziert, der dynamisch vom Zwischenspeicher 26 ausgewählt wird (insbesondere eine nicht-geschriebene Seite von einer Mehrzahl von Seiten des FM 420), und die Daten werden in dem Status verwaltet, in dem sie der Adresse 0x00000001000 im LBA-0-Raum zugeordnet sind. Wenn der Prozessor 21 eine Anfrage zum Zuordnen der Daten, die 0x00000001000 zugeordnet sind, zur Adresse im LBA-1-Raum an den Zwischenspeicher 26 ausgibt (unter der Annahme, dass dieser 0x80000000010 ist), werden diese Daten sodann auch dem LBA-1-Raum zuordnet. Und wenn der Prozessor 21 eine Anfrage (Befehl) zum Lesen der Daten der LBA-1-Adresse 0x80000000010 an den Zwischenspeicher 26 ausgibt, kann der Prozessor 21 die Daten, die in die LBA-0-Adresse 0x00000001000 geschrieben wurden, im komprimierten Zustand lesen.
  • Gemäß dem Zwischenspeicher 26 der vorliegenden Ausführungsform werden unkomprimierte Daten, die einer Schreibanweisung vom Prozessor 21 der Speichersteuereinheit 10 unterliegen, in 4-kB-Einheiten komprimiert. Beispielsweise wenn eine Schreibanfrage von 8 kB Daten (unkomprimierte Daten) mit einer LBA-0-Raum-Adresse (0x000_0000_0000) wie die Startadresse vom Prozessor 21 vorliegt, werden komprimierte Daten durch Komprimieren der 4 kB Daten des (LBA-0-Raum-)Adressbereichs 0x000_0000_0000 bis 0x000_0000_0007 als Einheit erzeugt und danach werden komprimierte Daten durch Komprimieren der 4 kB Daten des Adressbereichs 0x000_0000_0008 bis 0x000_0000_000F als Einheit erzeugt, wobei die jeweiligen komprimierten Daten in den physischen Speicherbereich des FM 420 geschrieben werden. Die vorliegende Erfindung ist jedoch nicht auf das Beispiel beschränkt, bei dem Daten in 4-kB-Einheiten komprimiert werden, und die vorliegende Erfindung ist auch bei einer Konfiguration effektiv, bei der Daten in anderen Einheiten komprimiert werden.
  • Darüber hinaus ist die Größe der erzeugten komprimierten Daten auf eine Größe von einem Vielfachen von 512 Bytes (ein Sektor) und auf eine Größe, die die Größe der unkomprimierten Daten nicht überschreitet, beschränkt. Anders ausgedrückt wird die Mindestgröße durch Komprimieren von 4 kB Daten 512 Bytes sein und maximale Größe 4 kB.
  • Danach wird ein Befehl, der vom Zwischenspeicher 26 verwendet wird, auf den die vorliegende Erfindung angewandt wird, beschrieben. Gemäß dem Zwischenspeicher 26 der vorliegenden Ausführungsform analysiert er bei Empfang eines Befehls vom Prozessor 21 der Speichersteuereinheit 10 den Inhalt des empfangenen Befehls und führt einen vorab festgelegten Prozess durch und gibt nach abgeschlossener Durchführung des Prozesses eine Antwort (Antwortinformationen) an die Speichersteuereinheit 10 zurück. Der Befehl enthält einen Satz von Informationen, die für den Zwischenspeicher 26 erforderlich sind, um den vorab festgelegten Prozess auszuführen, und beispielsweise wenn der Befehl ein Schreibbefehl ist, der das Schreiben von Daten in den Zwischenspeicher 26 anweist, enthält der Befehl Informationen, die zeigen, dass der Befehl ein Schreibbefehl ist, und Informationen, die für die Durchführung der Schreibverarbeitung erforderlich sind (z. B. die Schreibposition und die Datenlänge der Schreibdaten). Der Zwischenspeicher 26 unterstützt mehrere Typen von Befehlen, es folgt zunächst jedoch eine Beschreibung der Informationen, die für die jeweiligen Befehle üblich sind.
  • Jeder Befehl enthält als übliche Information Informationen zum Betriebsmodus (Opcode) und eine Befehls-ID am Kopfende davon. Nach der Befehls-ID werden sodann Informationen hinzugefügt, die für jeden Befehl spezifisch sind (Parameter), um einen einzelnen Befehl zu bilden. 5 beispielsweise zeigt eine Ansicht eines Formats eines Schreibbefehls des Zwischenspeichers 26 gemäß der vorliegenden Ausführungsform und ein Format der Antwortinformationen, die dem Schreibbefehl entsprechen, wobei ein Element (Feld) 1011 in 5 der Opcode ist und ein Element 1012 die Befehls-ID ist. Die jeweiligen Informationen des Elements 1013 und danach sind Parameter, die für den Schreibbefehl spezifisch sind. Als Antwortinformationen, die nach abgeschlossener Verarbeitung jedes Befehls zurückgegeben werden, sind darüber hinaus eine Befehls-ID und ein Status Informationen, die für gewöhnlich in allen Antwortinformationen enthalten sind, und Informationen, die für die jeweiligen Antwortinformationen spezifisch sind, können nach dem Status hinzugefügt werden.
  • Ein Betriebscode (Opcode) ist eine Information, die dem Zwischenspeicher 26 den Befehlstyp anzeigt, und anhand dieser Information erkennt der Zwischenspeicher 26, der den Befehl erfasst hat, den angezeigten Befehlstyp. Beispielweise wird bestimmt, dass der Opcode 0x01 für den Schreibbefehl ist und der Opcode 0x02 für den Lesebefehl ist.
  • Eine Befehls-ID ist ein Feld, in dem eine ID gespeichert ist, die für einen Befehl spezifisch ist, und eine ausgewiesene ID wird diesem Feld in den Antwortinformationen des Befehls zugewiesen, so dass die Speichersteuereinheit 10 erkennt, welchem Befehl die Antwortinformationen entsprechen. Die Speichersteuereinheit 10 erzeugt eine ID, die in der Lage ist, einen Befehl bei Erzeugung eines Befehls eindeutig zu identifizieren, erzeugt einen Befehl, der diese ID im Befehls-ID-Feld speichert, und überträgt den Befehl an den Zwischenspeicher 26. Wenn ein Prozess, der dem empfangenen Befehl entspricht, im Zwischenspeicher 26 abgeschlossen ist, enthält er sodann die Befehls-ID des relevanten Befehls in den Antwortinformationen und gibt diese an die Speichersteuereinheit 10 zurück. Bei Empfang dieser Antwortinformationen erfasst die Speichersteuereinheit 10 die ID, die in den Antwortinformationen enthalten ist, um die abgeschlossene Durchführung des relevanten Befehls zu erkennen. Darüber hinaus ist ein Status (Element 1022 von 5), der in den Antwortinformationen enthalten ist, ein Feld, in dem Informationen gespeichert sind, die anzeigen, ob die Verarbeitung des Befehls normal abgeschlossen wurde. Wenn die Verarbeitung des Befehls nicht normal abgeschlossen wurde (Fehler), wird eine Zahl im Status gespeichert, die die Ursache des Fehlers oder dergleichen identifizieren kann.
  • (1) Schreibbefehl
  • 5 zeigt einen Schreibbefehl und Antwortinformationen in Zusammenhang mit dem Schreibbefehl des Zwischenspeichers 26 gemäß der vorliegenden Ausführungsform. Ein LBA-0-Schreibbefehl 2010 des Zwischenspeichers 26 gemäß der vorliegenden Ausführungsform ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-0/1-Startadresse 1013 einer LBA-0/1-Länge 1014, einer Markierung ”Komprimierung- erforderlich/nicht erforderlich” 1015 und einer Schreibdatenadresse 1016 als Befehlsinformationen zusammengesetzt. Die vorliegende Ausführungsform veranschaulicht ein Beispiel für einen Befehl, der aus den obigen Informationen zusammengesetzt ist, er kann jedoch neben den obigen auch weitere Informationen enthalten. Beispielsweise können Informationen in Zusammenhang mit einem DIF (Datenintegritätsfeld) und dergleichen zum Befehl hinzugefügt werden.
  • Die LBA-0/1-Startadresse 1013 ist ein Feld, das eine Kopfadresse des logischen Platzes bezeichnet, der das Ziel des Schreibvorgangs ist. Der LBA-0-Raum gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung ist der Raum im Bereich der Adresse 0x000_0000_0000 bis 0x07F_FFFF_FFFF und der LBA-1-Raum ist als der Raum nach der Adresse 0x800_0000_0000 bestimmt, so dass wenn eine Adresse des Bereichs von 0x000_0000_0000 bis 0x07F_FFFF_FFFF in der LBA-0/1-Startadresse 1013 des Schreibbefehls gespeichert ist, der Zwischenspeicher 26 erkennt, dass die Adresse des LBA-0-Raums ausgewiesen wurde, und wenn eine Adresse von 0x800_0000_0000 oder danach ausgewiesen wird, erkennt er, dass die Adresse des LBA-1-Raums ausgewiesen wurde. Es kann jedoch ein Verfahren, bei dem es sich nicht um das oben beschriebene Verfahren handelt, als Verfahren angewandt werden, um zu erkennen, ob der Adressraum des LBA-0-Raums oder LBA-1-Raumses als Adresse ausgewiesen wurde. Beispielsweise kann ein Verfahren angewandt werden, um den LBA-0-Raums und den LBA-1-Raums gemäß den Inhalten des Opcodes 1011 zu identifizieren.
  • Die LBA-0/1-Länge 1014 ist ein Feld, das den Bereich (Länge) einer Speicherziel-LBA 0 oder -LBA 1 ausgehend von der LBA-0/1-Startadresse 1013 ausweist, und eine Länge, die von der Anzahl von Sektoren ausgewiesen ist, ist gespeichert. Der Zwischenspeicher 26 führt einen Prozess durch, um die PBA-Bereich, in dem die Schreibdaten gespeichert sind, dem LBA-0/1-Bereich des Bereichs zuzuordnen, der von der oben genannten LBA-0/1-Startadresse 1013 und LBA-0/1-Länge 1014 festgelegt wird.
  • Die Markierung ”Komprimierung erforderlich/nicht erforderlich” 1015 ist ein Feld, das ausweist, ob eine Komprimierung der Schreibzieldaten erforderlich ist, die von diesem Befehl ausgewiesen sind. Gemäß der Speichervorrichtung 1 der vorliegenden Ausführungsform wird diese Markierung ”Komprimierung erforderlich/nicht erforderlich” 1015 nicht verwendet, um einen Schreibbefehl auszugeben, der die LBA-1-Adresse ausweist, wenn der Prozessor 21 eindeutig angibt, dass keine Komprimierung erforderlich ist. Wenn die Speichersteuereinheit 10 einen Schreibbefehl erzeugt, wenn vorab erkannt wurde, dass die durch eine Datenkomprimierung erzielte Wirkung einer Größenverringerung für die vom Host-Computer 3 eingehenden Schreibzieldaten nicht erwartet werden kann (z. B. wenn bereits erkannt wurde, dass die Daten durch Bildkomprimierung oder dergleichen komprimiert wurden), ist es jedoch möglich, den Zwischenspeicher 26 darüber zu benachrichtigen, dass keine Komprimierung erforderlich ist, indem der Wert dieser Markierung auf ”ON” (”1” speichern) eingestellt wird. Wenn diese Markierung ”ON” ist, hat der Zwischenspeicher 26 eine Funktion, die Komprimierung nicht durchzuführen.
  • Eine Schreibdatenadresse 1017 und eine Schreibdatenlänge 1018 sind Felder, in denen jeweils eine Kopfadresse der aktuellen Speicherposition (bei der Ausführungsform der vorliegenden Erfindung die Adresse im DRAM 25) der Schreibzieldaten gespeichert sind, wie durch diesen Befehl ausgewiesen, und in denen eine Länge der Daten gespeichert wird. Wenn Schreibzieldaten in einem zusammenhängenden Bereich im DRAM 25 gespeichert werden, wird nur ein Satz der Schreibdatenadresse 1017 und Schreibdatenlänge 1018 im Schreibbefehl gespeichert und zu diesem Zeitpunkt wird ”1” in der Anzahl von Listen 1016 gespeichert. Wenn Schreibzieldaten in einer Mehrzahl von Bereichen innerhalb des DRAM 25 auf diskrete Weise gespeichert werden, wird andererseits eine Mehrzahl von Sätzen von Schreibdatenadresse 1017 und Schreibdatenlänge 1018 im Schreibbefehl gespeichert und die Zahl des Satzes der Schreibdatenadresse 1017 und der Schreibdatenlänge 1018, die gespeichert wird, wird in der Anzahl von Listen 1016 gespeichert. Der Zwischenspeicher 26 erfasst die Schreibdaten durch Erfassen der Daten aus dem Bereich im DRAM 25, der in diesem Feld angewiesen ist, dessen Bereich die Größe ist, die in der LBA-0/1-Länge (1014) gespeichert ist. Ein anderes Format als das Format, bei dem mehrere Sätze von Schreibdatenadresse 1017 und Schreibdatenlänge 1018 im Schreibbefehl gespeichert werden, kann angewandt werden. Beispielsweise ist ein Fall möglich, bei dem eine Zeigerinformation einer Liste, in der eine Mehrzahl von Adressen (ein Satz von Schreibdatenadresse 1017 und Schreibdatenlänge 1018) (Adresse, in der eine Liste gespeichert ist (z. B. eine Adresse innerhalb des DRAM 25)) im Schreibbefehl gespeichert ist und sich der Zwischenspeicher 26 auf die relevanten Zeigerinformationen bezieht, um die Schreibdatenadresse 1017 und die Schreibdatenlänge 1018 zu erfassen.
  • Schreibantwortinformationen 1020 sind aus einer Befehls-ID 1021, einem Status 1022 und einer komprimierten Datenlänge 1023 zusammengesetzt. Die Befehls-ID 1021 und der Status 1022 sind Antwortinformationen, die für die jeweiligen Befehle üblich sind, so dass auf eine Beschreibung davon verzichtet wird. Die komprimierte Datenlänge 1023 ist ein Feld zum Speichern einer Datenlänge nach Komprimierung der geschriebenen Daten. Durch Erfassen dieses Felds kann die Speichersteuereinheit 10 die Datengröße nach Komprimierung der geschriebenen Daten einholen. Darüber hinaus werden bei der vorliegenden Ausführungsform, wenn das Schreibziel (LBA-0/1-Startadresse 1013) LBA 1 ist, komprimierte Daten aufgezeichnet, so dass das vorliegende Feld ungültig wird.
  • Darüber hinaus kann eine PBA dem Bereich des LBA-0-Raums (oder LBA-1-Raums) zugeordnet sein, der von der LBA-1/0-Startadresse 1013 und der LBA-0/1-Länge 1014 des Schreibbefehls ausgewiesen wird. Wenn eine PBA nicht zugeordnet ist, ordnet der Zwischenspeicher 26 eine PBA neu zu und schreibt danach Daten in den von der relevanten PBA ausgewiesenen Bereich. Wenn eine PBA zugeordnet ist, wird der von der zugeordneten PBA ausgewiesene Bereich als ungenutzter Bereich verwaltet, eine neue PBA wird zugeordnet und Daten werden in den von der relevanten PBA ausgewiesenen Bereich geschrieben. Dies ist der Fall, da das Speichermedium des Zwischenspeichers 26 gemäß der Ausführungsform der vorliegenden Erfindung einen Flash-Speicher anwendet und es im Prinzip grundsätzlich nicht möglich ist, den Flash-Speicher zu überschreiben (bei einem Überschreiben muss ein Prozess durchgeführt werden, um zunächst den Block zu löschen, in den Daten geschrieben sind). Wenn die Anzahl von Bereichen, die als ungenutzte Bereich verwaltet werden, größer gleich der vorab festgelegten Anzahl wird (oder wenn schreibbare Seiten unzureichend werden), wird sodann eine sogenannte automatische Speicherbereinigung im Zwischenspeicher 26 durchgeführt, um ungeschriebene Seiten zu erhalten. Da diese Prozesse jedoch Prozessen ähneln, die bei einer herkömmlichen Speichervorrichtung unter Verwendung von bekannten Flash-Speichern durchgeführt werden, wird auf ausführliche Beschreibungen dieser bei der vorliegenden Ausführungsform verzichtet. Der wichtige Punkt ist, dass die Speichersteuereinheit 10 (Prozessor 21) der Ausführungsform der vorliegenden Erfindung nicht erkennt (nicht erkennen muss), dass der Speicherbereich von einem Adressraum, PBA genannt, im Zwischenspeicher 26 verwaltet wird, und dass im Bereich des LBA-0-Raums (oder LBA-1-Raums), der von der LBA-0/1-Startadresse 1013 und der LBA-0/1-Länge 1014 des Schreibbefehls ausgewiesen wird, ein Überschreiben, das die LBA 0 oder LBA 1 ausweist, unabhängig davon möglich ist, ob die PBA zugeordnet ist.
  • (2) Lesebefehl
  • 6 ist eine Ansicht, die einen Lesebefehl und Antwortinformationen auf den Lesebefehl, die von einem Zwischenspeicher 26 unterstützt werden, gemäß der vorliegenden Ausführungsform zeigt. Ein Lesebefehl 1610 des Zwischenspeichers 26 gemäß der vorliegenden Ausführungsform ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-0/1-Startadresse 1613 einer LBA-0/1-Länge 1614, einer Markierung ”Dekomprimierung- erforderlich/nicht erforderlich” 1615 und einer Lesedatenadresse 1616 als Befehlsinformationen zusammengesetzt. Bei der vorliegenden Ausführungsform ist das Beispiel eines Befehls auf Basis der obigen Informationen veranschaulicht, aber es können neben den obigen auch weitere Informationen enthalten sein. Die Befehls-ID 1012 ist der Inhalt wie der oben genannte LBA-0-Schreibbefehl, so dass auf eine Beschreibung davon verzichtet wird.
  • Der Betriebscode 1011 ist ein Feld, das dem Zwischenspeicher 26 den Befehlstyp anzeigt, und der Zwischenspeicher 26, der den Befehl erfasst hat, erkennt, dass der in diesem Feld angezeigte Befehl ein Lesebefehl ist.
  • Die LBA-0/1-Startadresse 1613 ist ein Feld, das die Kopfadresse eines logischen Platzes bezeichnet, der das Ziel des Lesevorgangs ist. Die LBA-0/1-Länge 1614 ist ein Feld, das den Bereich einer Speicherziel-LBA 0 oder -LBA 1 ausgehend von der LBA-0/1-Startadresse 1613 ausweist. Der Zwischenspeicher 26 führt einen Leseprozess durch, indem er Daten aus der PBA erfasst, die dem Bereich im LBA-0-Raum oder im LBA-1-Raum des Bereichs zugeordnet ist, der von der oben genannten LBA-0- oder LBA-1-Startadresse 1613 und der LBA-0/1-Länge 1614 gezeigt ist, und indem er die erfassten Daten an die Speichersteuereinheit 10 überträgt (ggf. durch Dekomprimieren der Daten).
  • Die Markierung ”Dekomprimierung erforderlich/nicht erforderlich” 1615 ist ein Feld, das ausweist, ob eine Dekomprimierung der Lesezieldaten erforderlich ist, die von diesem Befehl ausgewiesen sind. Wenn die Speichervorrichtung einen Lesebefehl erzeugt, steuert sie diese Markierung, um dem Zwischenspeicher 26 anzuzeigen, dass keine Dekomprimierung erforderlich ist. Im Übrigen ist dieses Feld nicht notwendigerweise im Lesebefehl enthalten. Im Fall des Zwischenspeichers 26 bei der vorliegenden Ausführungsform wird bei Durchführung eines Lesevorgangs durch Ausweisen von LBA 1 keine Dekomprimierung von erfassten Daten durchgeführt, so dass die Markierung ”Dekomprimierung erforderlich/nicht erforderlich” 1615 nicht erforderlich ist. Als weitere Ausführungsform kann, wenn der Zwischenspeicher 26 einen Lesebefehl empfängt, der LBA-1 ausweist, ein Datenlesevorgang durch Dekomprimieren von Daten durchgeführt werden, wenn die Markierung ”Dekomprimierung erforderlich/nicht erforderlich” 1615 auf ”OFF” (0) ist, und ohne Dekomprimieren von Daten durchgeführt werden, wenn die Markierung ”Dekomprimierung erforderlich/nicht erforderlich” 1516 auf ”ON” (1) ist.
  • Eine Kopfadresse des Bereichs, in dem die Lesezieldaten ausgegeben werden (z. B. die Adresse innerhalb des DRAM 25) wird als Lesedatenadresse 1616 ausgewiesen. Aus- dem Bereich der Adresse, die durch die Lesedatenadresse 1616 ausgewiesen wird, werden zusammenhängende Daten einer Länge, die durch die LBA-0/1-Länge ausgewiesen wird, als Lesedaten gespeichert. Ähnlich dem Schreibbefehl ist beispielsweise der Fall möglich, bei dem eine Mehrzahl von Sätzen der Lesedatenadresse 1616 und Datenlänge als Parameter des Lesebefehl ausgewiesen sind und Daten auf diskrete Weise in die Bereiche ausgegeben werden.
  • Eine Leseantwort 1620 enthält nur Informationen, die übliche Antwortinformationen von anderen Befehlen (Befehls-ID 1021 und Status 1022) sind, so dass auf eine Beschreibung davon verzichtet wird. Eine Konfiguration kann angewandt werden, bei der neben den üblichen Informationen weitere Informationen in der Leseantwort 1620 enthalten sind.
  • (3) Befehl zur Erzeugung einer Full-Stripe-Parität
  • Es gibt grundsätzlich zwei Verfahren zum Erzeugen einer Parität mit einer RAID-Technik. Eines ist ein Verfahren zum Erzeugen einer Parität durch Berechnen von Paritätsdaten wie XOR unter Verwendung aller Daten, die für das Erzeugung einer Parität erforderlich sind, und dieses Verfahren wird bei der vorliegenden Erfindung ”Verfahren zum Erzeugen einer Full-Stripe-Parität” genannt. Das andere Verfahren ist ein Verfahren zum Erzeugen einer Parität, die Aktualisierungsdaten entspricht (Parität nach Aktualisierung), durch Berechnen eines XOR der Daten vor Aktualisierung, die im Speichermedium gespeichert sind, und einer Parität vor Aktualisierung, die den Daten vor Aktualisierung entspricht, zusätzlich zu den relevanten Aktualisierungsdaten, wenn Aktualisierungsdaten in eine Gruppe von Speichermedien geschrieben wird, die eine RAID-Konfiguration darstellen, und dieses Verfahren wird in der vorliegenden Schritt ”Verfahren zur Erzeugen einer Aktualisierungsparität” genannt. 7 ist eine Ansicht, die einen Befehl zur Erzeugung einer Full-Stripe-Parität und Antwortinformationen auf den Befehl zur Erzeugung einer Full-Stripe-Parität, die vom Zwischenspeicher 26 unterstützt werden, gemäß der vorliegenden Ausführungsform zeigt. Der Befehl 1310 zur Erzeugung einer Full-Strip-Parität des Zwischenspeichers 26 gemäß der vorliegenden Ausführungsform ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-1-Länge 1313, einer Anzahl von Streifen 1314, einer LBA-1-Startadresse 0 bis X (1315 bis 1317), einer LBA-1-Startadresse (für XOR-Parität) 1318 und einer LBA-1-Startadresse (FÜR RAID-6-Parität) 1319 als Befehlsinformationen zusammengesetzt. Bei der vorliegenden Ausführungsform ist ein Beispiel eines Befehls veranschaulicht, der die obigen Informationen enthält, aber es können neben den obigen weitere Informationen enthalten sein.
  • Der Zwischenspeicher 26 erkennt auf Basis des Inhalts des Feldes Opcode 1011, dass der von der Speichersteuereinheit 10 empfangene Befehl ein Befehl zur Erzeugung einer Full-Stripe-Parität ist. Darüber hinaus kann sich der Typ der zu erzeugenden Parität je nach RAID-Ebene unterscheiden. Aus diesem Grund ändert der Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform die zu erzeugende Parität je nach Inhalt des Opcodes 1011. Beispielsweise wenn eines von 0x11, 0x12 oder 0x13 als Opcode ausgewiesen ist, wird eine Erzeugung einer Full-Stripe-Parität durchgeführt, wenn jedoch 0x11 als Opcode ausgewiesen ist, wird eine Parität erzeugt, die für RAID 4 und RAID 5 (XOR-Daten) verwendet wird, wenn 0x12 als Opcode ausgewiesen ist, werden zwei Paritäten (sogenannte P-Parität und Q-Parität) erzeugt, die für RAID 6 (unter Verwendung eines Reed-Solomon-Codes) verwendet werden, und wenn 0x13 als Opcode ausgewiesen ist, werden zwei Paritäten (horizontale Parität und diagonale Parität) erzeugt, die für RAID 6 (sogenannte GERADE-UNGERADE-Methode, Row-Diagonal-Parity-Methode) verwendet werden.
  • Die LBA-1-Länge 1313 ist ein Feld, das eine Länge der zu erzeugenden Parität oder die Länge der Paritätserzeugungsquelldaten ausweisen (bei einer RAID-Parität sind die Längen der Parität und der Paritätserzeugungsquelldaten gleich). Die Anzahl von Streifen 1314 weist die Anzahl von Daten aus, die für das Erzeugen von Paritäten verwendet werden. Beispielsweise wenn Paritäten für sechs Daten erzeugt werden, wird in der Anzahl von Streifen 1314 sechs gespeichert.
  • Die LBA-1-Startadressen 1315 bis 1317 sind Felder, die die Startadresse von LBA 1 ausweisen, der die Paritätserzeugungsquelldaten zugeordnet sind. Die Anzahl dieser Felder fällt mit der Anzahl zusammen, die in der Anzahl von Streifen 1314 ausgewiesen ist (wenn der Befehl ausgegeben wird, dass die Anzahl dieser Felder und die Anzahl von Streifen 1314 nicht zusammenfällt, gibt der Zwischenspeicher 26 einen Fehler zurück). Beispielsweise werden bei einer Konfiguration, bei der zwei Paritäten für sechs Daten erzeugt werden (RAID-6-Konfiguration von 6D + 2P), werden sechs LBA-1-Startadressen ausgewiesen.
  • Eine LBA-1-Startadresse Y1 (für XOR-Parität) 1318 ist ein Feld, mit dem das Speicherziel der zu erzeugenden RAID-Parität (XOR-Parität) ausgewiesen wird. Die erzeugte Parität (Parität bei RAID 5 oder P-Parität oder horizontale Parität bei RAID 6) wird im Bereich von dieser Startadresse bis zum Bereich gespeichert, der von der LBA-1-Länge 1313 ausgewiesen ist.
  • Eine LBA-1-Startadresse (für RAID 6) 1319 ist ein Feld, mit dem das Speicherziel der erzeugten Parität für RAID 6 ausgewiesen wird. Die Parität für RAID 6 ist, wie zuvor erwähnt, eine Q-Parität des Reed-Solomon-Codes oder eine diagonale Parität bei einer GERADE-UNGERADE-Methode. Bei der vorliegenden Erfindung wird die erzeugte Parität im Bereich von der LBA-1-Startadresse (für RAID 6) 1319 zum Bereich gespeichert, der von der LBA-1-Länge 1313 ausgewiesen ist. Wenn ein Paritätserzeugungsbefehl für RAID 5 als Opcode ausgewiesen ist (z. B. wenn 0x11 ausgewiesen ist), ist das Ziel der LBA-1-Startadresse (für RAID 6) 1319 natürlich nicht erforderlich.
  • Wenn der Zwischenspeicher 26 der vorliegenden Ausführungsform einen Befehl zur Erzeugung einer Full-Stripe-Parität empfängt, wird eine Mehrzahl von komprimierten Daten aus dem Bereich im FM 420 erfasst, der von der PBA festgelegt ist, die dem Bereich zugeordnet ist, der von den oben genannten LBA-1-Startadressen 1315 bis 1317 ausgewiesen ist, und (eine oder zwei) Paritäten werden unter Verwendung der Paritätserzeugungseinheit 419 im Zwischenspeicher 26 erzeugt. Danach wird die erzeugte Parität in dem Bereich des FM 420 gespeichert. Ähnlich den Schreibdaten über einen Schreibbefehl werden PBAs dem LBA-1-Raum dynamisch zugeordnet, der von der LBA-1-Startadresse (für XOR-Parität) 1318 und/oder der LBA-1-Startadresse (für RAID-6-Parität) 1319 festgelegt ist, und die Paritäten werden in den Bereich geschrieben, der von den zugewiesenen PBAs festgelegt ist.
  • Eine Antwort 1320 auf die Erzeugung einer Full-Stripe-Parität ist aus der Befehls-ID 1021 und dem Status 1022 zusammengesetzt, bei denen es sich um Informationen handelt, die bei anderen Befehlen üblich sind, und somit wird auf eine Beschreibung davon verzichtet.
  • (4) Befehl zur Erzeugung einer Aktualisierungsparität
  • Die Erzeugung einer Aktualisierungsparität, die vom Zwischenspeicher 26 gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung ausgeführt führt, kann ausgeführt werden, wenn drei Daten, bei denen es sich um Aktualisierungsdaten, Daten vor Aktualisierung (alte Daten) des Bereichs, der durch die Aktualisierungsdaten aktualisiert wird, und eine alte Parität handelt, die den alten Daten entspricht, dem LBA-1-Raum im Zwischenspeicher 26 zugeordnet werden, wenn Aktualisierungsdaten im Bereich eines Endspeichermediums (SSD 11 oder HDD 12) aufgezeichnet werden, in dem bereits eine Parität erzeugt wurde. Da die Speichersteuereinheit 10 gemäß der vorliegenden Ausführungsform eine Paritätserzeugung über das Verfahren zur Erzeugung einer Full-Stripe-Parität durchgeführt, erfolgt, wie später beschrieben, im Grunde keine Änderung, dass die Paritätserzeugung über das Verfahren zur Erzeugung einer Aktualisierungsparität durchgeführt wird, der Zwischenspeicher 26 ist jedoch mit einer Funktion ausgestattet, um nur für den Fall eine Erzeugung einer Aktualisierungsparität durchzuführen. Um eine Erzeugung einer Aktualisierungsparität durchzuführen, lest sie die alten Daten und die alte Parität aus dem Endspeichermedium mit RAID-Konfiguration, speichert sie im LBA-1-Raum des Zwischenspeichers 26 und gibt danach einen Befehl zur Erzeugung einer Aktualisierungsparität aus, der die Aktualisierungsdaten, die alten Daten des Bereichs, der durch die Aktualisierungsdaten aktualisiert wird, die alte Parität, die die alten Daten schützt, und die LBA-1-Adresse der Aktualisierungsparität ausweist.
  • 8 ist eine Ansicht, die einen Befehl zur Erzeugung einer Aktualisierungsparität und Antwortinformationen auf den Befehl zur Erzeugung einer Aktualisierungsparität, die vom Zwischenspeicher 26 unterstützt werden, gemäß der vorliegenden Ausführungsform zeigt. Ein Aktualisierungsparitätsbefehl 1410 ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-1-Länge 1413, einer LBA-1-Startadresse 0 (1414), einer LBA-1-Startadresse 1 (1415), einer LBA-1-Startadresse 2 (1416), einer LBA-1-Startadresse 3 (1417), einer LBA-Startadresse 4 (1418) und einer LBA-1-Startadresse 5 (1419) als Befehlsinformationen zusammengesetzt. Die vorliegende Ausführungsform beschreibt ein Beispiel für einen Befehl, der aus den obigen Informationen zusammengesetzt ist, es können jedoch weitere Informationen hinzugefügt werden.
  • Der Betriebscode 1011 ist ein Feld, das dem Zwischenspeicher 26 die Befehlsklassifizierung anzeigt, und der Zwischenspeicher 26, der diesen Befehl erfasst hat, erkennt, dass der in diesem Feld angezeigte Befehl der Befehl zur Erzeugung einer Aktualisierungsparität ist. Darüber hinaus variiert der Typ der zu erzeugenden Parität ähnlich dem Befehl zur Erzeugung einer Full-Stripe-Parität gemäß dem Inhalt des Opcodes 1011.
  • Die LBA-1-Länge 1413 ist ein Feld, das die Länge der zu erzeugenden Parität ausweist (bei der RAID-Parität sind die Längen der Parität und der Paritätserzeugungsquelldaten gleich). Die LBA-1-Startadresse 0 (1414) ist ein Feld, das eine Startadresse des Bereichs der LBA 1 bezeichnet, der neue Daten für eine Aktualisierungsparität zugeordnet sind. Die Speichersteuereinheit 10 verwendet dieses Feld, um dem Zwischenspeicher 26 anzuzeigen, dass die Daten im Bereich von der LBA-1-Startadresse 0 (1414) zur Länge, die von der LBA-1-Länge 1413 festgelegt ist, neue Daten sind. Die LBA-1-Startadresse 1 (1415) ist ein Feld, das die Startadresse des Bereichs einer LBA 1 bezeichnet, der alte Daten für eine Aktualisierungsparität zugeordnet sind. Die Speichersteuereinheit 10 verwendet dieses Feld, um dem Zwischenspeicher 26 anzuzeigen, dass die Daten im Bereich von der LBA-1-Startadresse 1 (1415) zur Länge, die von der LBA-1-Länge 1413 festgelegt ist, alte Daten sind.
  • Die LBA-1-Startadresse 1 (1416) ist ein Feld, das eine Startadresse des Bereichs einer LBA 2 bezeichnet, der die XOR-Parität vor Aktualisierung für eine Aktualisierungsparität zugeordnet ist. Die Speichervorrichtung verwendet dieses Feld, um dem Zwischenspeicher 26 anzuzeigen, dass die Daten im Bereich von der LBA-1-Startadresse 2 (1416) zur Länge, die von der LBA-1-Länge 1413 festgelegt ist, eine XOR-Parität ist. Die LBA-1-Startadresse 1 (1417) ist ein Feld, das eine Startadresse eines Bereichs der LBA 3 bezeichnet, der eine Parität für RAID 6 vor Aktualisierung für eine Aktualisierungsparität zugeordnet ist. Die Speichervorrichtung 1 verwendet dieses Feld, um dem Zwischenspeicher 26 anzuzeigen, dass die Daten des Bereichs von der LBA-1-Startadresse 3 (1417) zur Länge, die von der LBA-1-Länge 1413 festgelegt ist, eine Parität für RAID 6 vor Aktualisierung ist.
  • Die LBA-1-Startadresse 4 (1418) ist ein Feld, das die Startadresse des Bereichs der LBA 1 bezeichnet, der die neu erzeugte XOR-Parität zugeordnet ist. Die Speichervorrichtung verwendet dieses Feld, um den Zwischenspeicher 26 anzuweisen, die neue XOR-Parität dem Bereich von der LBA-1-Startadresse 4 (1418) zur Länge, die von der LBA-1-Länge 1413 festgelegt ist, zuzuordnen. Die LBA-1-Startadresse 5 (1419) ist ein Feld, das die Startadresse des Bereichs einer LBA 1 bezeichnet, der die neu erzeugte Parität für RAID 6 zugeordnet ist. Die Speichervorrichtung verwendet dieses Feld, um den Zwischenspeicher 26 anzuweisen, die neue Parität für RAID 6 dem Bereich von der LBA-1-Startadresse 5 (1419) zur Länge, die von der LBA-1-Länge 1413 festgelegt ist, zuzuordnen. Im Übrigen besteht kein Bedarf, die LBA-1-Startadresse 3 (1417) und die LBA-1-Startadresse 5 (1419) auszuweisen, wenn eine Parität für RAID 5 erzeugt wird, so dass die Werte, die in den relevanten Feldern des Befehls gespeichert sind, der vom Prozessor 21 an den Zwischenspeicher 26 übertragen wurde, ignoriert werden können.
  • Der Prozess, der durchgeführt wird, wenn der Zwischenspeicher 26 der vorliegenden Ausführungsform einen Befehl zur Erzeugung einer Aktualisierungsparität empfängt, ähnelt dem Prozess, der durchgeführt wird, wenn er einen Befehl zur Erzeugung einer Full-Stripe-Parität empfängt. Eine Mehrzahl von komprimierten Daten wird aus dem Speicherbereich im FM-420 erfasst, der von der PBA gezeigt wird, die dem Bereich zugeordnet ist, der von den oben genannten LBA-1-Startadressen 1414 bis 1417 ausgewiesen ist, und unter Verwendung der Paritätserzeugungseinheit 419 im Zwischenspeicher 26 werden ein oder zwei Paritäten erzeugt. Danach werden die erzeugten Paritäten in dem Bereich aufgezeichnet, der von der LBA-1-Startadresse 4 (1418) und der LBA-1-Startadresse 5 (1419) festgelegt ist.
  • (5) LBA-1-Zuordnungsbefehl
  • Im Zwischenspeicher 26 der vorliegenden Ausführungsform werden die Daten, die durch Ausweisen des Bereichs der LBA 0 geschrieben werden, vom Zwischenspeicher 26 komprimiert und im FM 420 aufgezeichnet. Um ein RAID in Bezug auf diese komprimierten Daten zu erzeugen und die komprimierten Daten im komprimierten Zustand in das Endspeichermedium zu schreiben, werden sodann die komprimierten Daten der LBA 1 zugeordnet, die sich von der LBA 0 unterscheidet. Der LBA-1-Zuordnungsbefehl wird an diesem Zeitpunkt verwendet.
  • 9 ist eine Ansicht, die ein Format eines LBA-1-Zuordnungsbefehl und Antwortinformationen auf den LBA-1-Zuordnungsbefehl, wie von einem Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, zeigt. Ein LBA-1-Zuordnungsbefehl 120 ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-0-Startadresse 1213, einer LBA-0-Länge 1214 und einer LBA-1-Startadresse 1215 als Befehlsinformationen zusammengesetzt. Bei der vorliegenden Ausführungsform ist ein Beispiel eines Befehls beschrieben, der mit den obigen Informationen konfiguriert ist, aber es können neben den obigen weitere Informationen enthalten sein.
  • Die LBA-0-Startadresse 1213 ist ein Feld, das eine Kopfadresse eines LBA-0-Bereichs der Zieldaten ausweist, dessen komprimierte Daten der LBA 1 zuzuordnen sind. Die LBA-0-Länge 1214 ist ein Feld, das einen Bereich der LBA 0 ausgehend von der LBA-0-Startadresse 1213 ausweist, der das Zuordnungsziel für die LBA-1 ist. Darüber hinaus sind die LBA-0-Startadresse 1213 und die LBA-0-Länge 1214 auf die Mehrfachen von 8 Sektoren (4 kB) beschränkt.
  • Die LBA-1-Startadresse 1215 ist ein Feld, das eine Startadresse der LBA 1 ausweist, die es zuzuordnen gilt. Der Prozessor 21 der Speichersteuereinheit 10 erkennt die Größe der zuzuordnenden Daten vorab, weist den Bereich der LBA 1 zu, der in der Lage ist, diese Datengröße zuzuordnen, speichert diese Kopfadresse im Feld der LBA-1-Startadresse 1215 und gibt den relevanten Befehl an den Zwischenspeicher 26 aus.
  • Der Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform führt eine Zuordnung der komprimierten Daten, die dem LBA-0-Bereich im Bereich zugeordnet sind, der durch die oben genannten LBA-0-Startadresse 1213 und LBA-0-Länge 1214 ausgewiesen ist, einem Bereich mit einer Größe zu, die den komprimierten Daten ausgehend von der LBA-1-Startadresse 1215 entspricht. Wenn der Prozessor 21 einen Lesebefehl, der die LBA-1-Adresse ausweist, die dem relevanten Befehl zugeordnet ist, danach an den Zwischenspeicher ausgibt, können die komprimierten Daten, die der relevanten LBA-1-Adresse zugeordnet sind, somit gelesen werden.
  • Eine LBA-1-Zuordnungsantwort 1220 ist aus einer Befehls-ID 1021 und einem Status 1022 zusammengesetzt. Die vorliegende Ausführungsform veranschaulicht ein Beispiel für Antwortinformationen, die die obigen Informationen enthalten, aber es können neben den obigen auch weitere Informationen enthalten sein.
  • (6) LBA-0-Zuordnungsbefehl
  • Wenn die Speichervorrichtung 1 der vorliegenden Ausführungsform Daten (komprimierte Daten) aus dem Endspeichermedium liest, speichert sie die komprimierten Daten im Zwischenspeicher 26 (im FM 420 davon), indem sie einen Schreibbefehl, der den Bereich von LBA 1 ausweist, an den Zwischenspeicher 26 ausgibt. Wenn eine Leseanfrage und dergleichen vom Host-Computer 3 empfangen wird, müssen darüber hinaus die im FM 420 gespeicherten Daten in einem dekomprimierten Zustand an den Host-Computer 3 gesendet werden. Der LBA-0-Zuordnungsbefehl wird dafür verwendet.
  • 10 ist eine Ansicht, die einen LBA-0-Zuordnungsbefehl und Antwortinformationen auf den relevanten LBA-0-Zuordnungsbefehl, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, zeigt. Ein LBA-0-Zuordnungsbefehl 1210 gemäß dem Zwischenspeicher 26 der vorliegenden Ausführungsform ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-1-Startadresse 1913 einer LBA-1-Länge 1914 und einer LBA-0-Startadresse 1915 als Befehlsinformationen zusammengesetzt. Bei der vorliegenden Ausführungsform ist ein Beispiel für einen Befehl gezeigt, der die obigen Informationen enthält, es können neben den oben beschriebenen aber auch weitere Informationen enthalten sein.
  • Die LBA-1-Startadresse 1913 ist ein Feld, das eine Kopfadresse des Bereichs im LBA-1-Raum der komprimierten Daten ausweist, die es zuzuordnen gilt. Die LBA-1-Länge 1914 ist ein Feld, das den Bereich der LBA 1 ausgehend von der LBA-1-Startadresse 1913 ausweist, den es der LBA 0 zuzuordnen gilt.
  • Die LBA-0-Startadresse 1915 ist ein Feld, das die Startadresse der LBA 0 ausweist, die es zuzuordnen gilt. Die Speichersteuereinheit 10 erkennt die Datengröße nach Dekomprimierung der komprimierten Daten, die in der LBA 1 aufgezeichnet sind, auf Basis der Verwaltungsinformationen, die von der Speichervorrichtung 1 verwaltet werden, und vor Ausgeben des LBA-0-Zuordnungsbefehls weist sie einen Bereich in der LBA 0 zu, dem sie diese Datengröße zuordnen kann, und bei Erzeugung eines LBA-0-Zuordnungsbefehls wird diese Kopfadresse im Feld der LBA-0-Startadresse 1915 gespeichert. Darüber hinaus ist die Adresse, die in der Lage ist, als LBA-0-Startadresse 1915 ausgewiesen zu werden, auf Mehrfache von 8 Sektoren (4 kB) beschränkt.
  • Wenn der Zwischenspeicher 26 der vorliegenden Ausführungsform einen LBA-0-Zuordnungsbefehl von der Speichersteuereinheit 10 empfängt, führt er eine Zuordnung der komprimierten Daten zu, die dem Bereich in dem LBA-1-Bereich zugeordnet sind, der von der oben genannten LBA-1-Startadresse 1913 und der LBA-1-Länge 1914 bezeichnet sind, zum Bereich von der LBA-0-Startadresse 1915 zu, der der Datengröße nach Dekomprimierung entspricht. Wenn der Prozessor 21 einen Lesebefehl, der die LBA-0-Adresse ausweist, die dem relevanten Befehl zugeordnet ist, danach an den Zwischenspeicher ausgibt, können die komprimierten Daten, die der relevanten LBA-0-Adresse zugeordnet sind, im dekomprimierten Zustand gelesen werden.
  • Eine LBA-0-Zuordnungsanwort 1920 enthält nur Informationen (Befehls-ID 1021 und Status 1022), die für die Antwortinformationen von anderen Befehlen üblich sind, so dass auf eine Beschreibung davon verzichtet wird. Eine Konfiguration kann auch angewandt werden, bei der neben den üblichen Informationen weitere Informationen in der LBA-0-Zuordnungsantwort 1920 enthalten sind.
  • (7) Befehl zur Erfassung der komprimierten Datengröße
  • 11 ist ein Befehl zur Erfassung der komprimierten Datengröße und Antwortinformationen auf den Befehl zur Erfassung der komprimierten Datengröße, wie vom Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt. Ein Befehl 1110 zur Erfassung der komprimierten Datengröße gemäß dem Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-0-Startadresse 1113 und einer LBA-0-Länge 1114 als Befehlsinformationen zusammengesetzt. Bei der vorliegenden Ausführungsform ist ein Beispiel für einen Befehl auf Basis der die obigen Informationen gezeigt, es können neben den obigen aber auch weitere Informationen enthalten sein. Da der Inhalt der Befehls-ID 1012 gleich wie der Inhalt des LBA-0-Lesebefehls ist, wird auf eine Beschreibung davon verzichtet.
  • Im Folgenden werden Informationen beschrieben, die für den Befehl zur Erfassung der komprimierten Datengröße einzigartig sind.
  • Die LBA-0-Startadresse 1113 ist ein Feld, das eine Kopfadresse des LBA-Bereichs ausweist, der das Ziel der Datengrößenerfassung nach Komprimierung ist. Die LBA-Länge 1114 ist ein Feld, das den Bereich LBA 0 oder -LBA 1 ausgehend von der LBA-0-Startadresse 1113 ausweist. Der Zwischenspeicher 26 berechnet eine Datengröße (Größe im komprimierten Zustand), die dem Bereich im LBA-0-Bereich zugeordnet ist, der von der oben genannten LBA-0-Startadresse 1113 und der LBA-Länge 1114 bezeichnet ist, und zeigt sie der Speichervorrichtung an. Die Adresse, die als LBA-0-Startadresse 1113 ausgewiesen werden kann, ist auf Mehrfache von 8 Sektoren (4 kB) beschränkt. Die Länge, die als LBA-Länge 1114 ausgewiesen werden kann, ist gleichermaßen auf Mehrfache von 8 Sektoren (4 kB) beschränkt. Wenn eine Adresse (z. B. 0x000_0000_0001) oder Länge, die nicht der 8-Sektoren-Grenze entspricht, als LBA-0-Startadresse 1113 oder LBA-Länge 1114 ausgewiesen ist, wird ein Fehler zurückgegeben.
  • Eine Antwort 1120 der Erfassung der komprimierten Datengröße ist neben der Befehls-ID 1021 und dem Status 1022 aus einer komprimierten Datenlänge 1123 zusammengesetzt. Bei der vorliegenden Ausführungsform ist ein Beispiel für Antwortinformationen beschrieben, die die obigen Informationen aufweisen, aber es können neben den obigen auch weitere Informationen enthalten sein. Die komprimierte Datenlänge 1123 ist ein Feld, in dem die komprimierte Datengröße gespeichert wird, die dem LBA-0-Bereich zugeordnet ist, der vom Befehl zur Erfassung der komprimierten Datengröße angewiesen wurde. Beim Übertragen von Daten aus dem Dekomprimierungs-VOL an den Komprimierungs-VOL führt die Speichersteuereinheit 10 einen Prozess durch, um den Wert dieser komprimierten Datenlänge zu erfassen.
  • (8) Zuordnungsfreigabebefehl
  • Gemäß der vorliegenden Ausführungsform ordnet die Speichersteuereinheit 10 Daten einer LBA 1 zu, um die komprimierten und aufgezeichneten Schreibdaten im komprimierten Zustand zu erfassen oder um eine Parität in Bezug auf die komprimierten Daten zu erzeugen. Darüber hinaus ordnet sie die Daten, die im Zwischenspeicher 26 aufgezeichnet sind und LBA 1 ausweisen, der LBA 0 zu, um die komprimierten Informationen in einem dekomprimierten Zustand zu erfassen. Wenn ein Prozess beendet wird und der wie oben beschriebene Bereich nicht mehr benötigt wird, wird danach die Zuordnung freigegeben. Die Speichervorrichtung gemäß der vorliegenden Ausführungsform verwendet den Zuordnungsfreigabenbefehl, um die Zuordnung des Bereichs in LBA 0 oder LBA 1, der der PBA zugeordnet ist, freizugeben.
  • 12 ist eine Ansicht, die einen Zuordnungsfreigabebefehl und Antwortinformationen auf den Zuordnungsfreigabebefehl, wie von einem Zwischenspeicher 26 gemäß der vorliegenden Ausführungsform unterstützt, zeigt. Ein Zuordnungsfreigabebefehl 1710 gemäß dem Zwischenspeicher 26 der vorliegenden Ausführungsform ist aus einem Betriebscode 1011, einer Befehls-ID 1012, einer LBA-0/1-Startadresse 1713 und einer LBA-0/1-Länge 1714 als Befehlsinformationen konfiguriert. Die vorliegende Ausführungsform veranschaulicht ein Beispiel für einen Befehl, der die obigen Informationen aufweist, aber es können neben den obigen auch weitere Informationen enthalten sein. Im Folgenden werden der Inhalt des Parameters, der für den Zuordnungsfreigabebefehl einzigartig ist, und eine Verarbeitung beschrieben, die durchgeführt wird, wenn der Zwischenspeicher 26 den Zuordnungsfreigabebefehl empfängt.
  • Die LBA-0/1-Startadresse 1713 ist ein Feld, das die Kopfadresse in einem logischen Platz ausweist, dessen Zuordnung freigegeben wird, und sowohl die Adresse des LBA-0-Raums als auch des LBA-1-Raums können ausgewiesen werden. Wenn jedoch die Adresse des LBA-0-Raums ausgewiesen wird, musst die Adresse eine Adresse einer Grenze von 4 kB (8 Sektoren) sein, und wenn eine Adresse ausgewiesen wird, die nicht der Grenze von 4 Kb (8 Sektoren) entspricht, gibt der Zwischenspeicher 26 einen Fehler zurück. Die LBA-0/1-Länge 1714 ist ein Feld, das den Bereich einer Aufzeichnungsziel-LBA 0 oder -LBA 1 ausgehend von der LBA-0/1-Startadresse 1713 ausweist.
  • Im Folgenden wird eine Zwischenspeicherverwaltungsdatenstruktur gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung beschrieben, davor jedoch sind der Datenträger, der von der Speichervorrichtung 1 der vorliegenden Erfindung verwaltet wird, und das Verhältnis zwischen dem Datenträger (logischen Datenträger) und den Zwischenspeicherverwaltungsdaten beschrieben.
  • Gemäß der Speichervorrichtung 1 der vorliegenden Erfindung werden Daten, die aus dem Host-Computer 3 geschrieben werden, im SSD 11 oder HDD 12 gespeichert, bei dem es sich um ein Endspeichermedium handelt, der Speicherplatz des SSD 11 oder HDD 12 als Endspeichermedium wird jedoch nicht direkt an den Host-Computer 3 bereitgestellt. Ein logischer Datenträger mit einem logischen Speicherplatz wird an den Host-Computer 3 bereitgestellt.
  • Darüber hinaus werden Daten, die aus dem Host-Computer 3 geschrieben werden, in einem komprimierten Zustand in das Endspeichermedium gespeichert, es wird jedoch nicht veranlasst, dass der Host-Computer 3 erkennt, dass die Daten im komprimierten Zustand gespeichert sind, und der Host-Computer 3 erkennt lediglich so, als wären unkomprimierte Daten im logischen Datenträger gespeichert (die vom Host-Computer 3 erkannt werden können). Um einen solchen Zustand, wie er zu Beginn beschrieben ist, umzusetzen, erzeugt und verwaltet die Speichervorrichtung 1 zwei Typen von logischen Datenträgern. Ein Typ eines logischen Datenträgers ist der logische Datenträger, der an den Host-Computer 3 bereitgestellt wird, wie zuvor erwähnt, bei dem es sich um einen Dekomprimierungs-VOL handelt, der vom Host-Computer 3 erkannt wird, als wären unkomprimierte Daten gespeichert. Der zweite Typ eines logischen Datenträgers ist der Komprimierungs-VOL.
  • Die Speichervorrichtung 1 wartet und verwaltet eine Dekomprimierungs-VOL-Verwaltungstabelle 500, wie in 13 gezeigt, um einen Dekomprimierungs-VOL an den Host-Computer 3 bereitzustellen. Die Speichervorrichtung 1 ist in der Lage eine Mehrzahl von Dekomprimierungs-VOLs an den Host-Computer 3 bereitzustellen, und eine eindeutige Kennnummer (logische Datenträgernummer) ist für Verwaltungszwecken jedem Dekomprimierungs-VOL zugewiesen. Eine VVOL-Nr. 503 zeigt eine Kennnummer, die dem Dekomprimierungs-VOL zugewiesen ist. Eine Größe 504 zeigt eine Kapazität des relevanten Dekomprimierungs-VOL. Beim Identifizieren jedes Dekomprimierungs-VOL im Host-Computer 3 wird darüber hinaus keine logische Datenträgernummer verwendet, sondern eine Kennung einer Host-Schnittstelle (Anschluss) 24 (z. B. ein WWN (World Wide Name) des FC, wenn die Host-Schnittstelle 24 eine FC-Schnittstelle ist) und eine logische Einheitennummer (LUN) verwendet, so dass es erforderlich ist, die Assoziation zwischen der logischen Einheitennummer und einem Satz von (Anschlusskennung und LUN) zu verwalten. Eine Anschlusskennung (WWN) und eine LUN, die für den Host-Computer 3 verwendet werden, um jeden Dekomprimierungs-VOL zu identifizieren, sind in einer Anschluss-Nr. 501 und einer LUN 502 gespeichert, die mit dem VVOL Nr. 503 assoziiert sind. Beim neuen Erzeugen eines Datenträgers (Dekomprimierungs-VOL) verwendet der Administrator des Speichervorrichtung 1 die GUI der Verwaltungsvorrichtung 4, um die Anschluss-Nr., die LUN und die Größe des neu zu erzeugenden Dekomprimierungs-VOL auszuweisen. Wenn die Speichervorrichtung 1 diese Ausweisung empfängt, erstellt sie einen neuen Eintrag in der Dekomprimierungs-VOL-Verwaltungstabelle 500 und speichert die vom Administrator ausgewiesenen Informationen in den Feldern der Anschluss-Nr. 501, der LUN 502 und der Größe 504 des neu erstellten Eintrags. Gleichzeitig erzeugt sie automatisch einen ungenutzten VVOL Nr. 503 und speichert diesen im Feld des VVOL Nr. 503, um den Dekomprimierungs-VOL zu erzeugen (definieren).
  • Im Folgenden wird ein Komprimierungs-VOL beschrieben. Der zuvor beschriebene Dekomprimierungs-VOL dient lediglich der Bereitstellung eines logischen (virtuellen) Speicherbereichs für den Host-Computer 3, und zu dem Zeitpunkt, an dem er definiert wird, gibt es keine physischen Speicherbereiche (Speicherbereich des SSD 11 oder HDD 12, das ein Endspeichermedium ist), die den jeweiligen Adressen des Dekomprimierungs-VOL entsprechen. Andererseits ist ein Komprimierungs-VOL ein Datenträger, dessen jeweilige Speicherbereiche (im Komprimierungs-VOL) z u dem Zeitpunkt, an er definiert wird, eine 1-zu-1-Entsprechung mit den Speicherbereichen des SSD 11 und des HDD 12 aufweisen. Die Speichervorrichtung 1 gemäß der vorliegenden Erfindung verwaltet eine Mehrzahl (z. B.) von Endspeichermedien als RAID-Gruppe und eine Datenwiederherstellung wird sogar dann ermöglicht, wenn eine oder zwei Endspeichermedien in der RAID-Gruppe ausfallen, und die Speichervorrichtung 1 der vorliegenden Erfindung verwaltet eine RAID-Gruppe als einen Komprimierungs-VOL:
    14 zeigt eine Komprimierungs-VOL-Verwaltungstabelle 550, die von der Speichervorrichtung 1 verwaltet wird. Eine LDEV-Nr. 551 ist eine Kennnummer eines Komprimierungs-VOL, die in der Speichervorrichtung 1 definiert ist, und eine PDEV-Nr. 552, eine RAID-Ebene 553 und eine Größe 554 zeigen jeweils eine Kennnummer des Endspeichermediums (SSD 11 oder HDD 12), die den Komprimierungs-VOL, eine RAID-Ebene einer RAID-Gruppe, die vom Endspeichermedium konfiguriert ist, das von der PDEV-Nr. 552 festgelegt wird, und eine Kapazität des Komprimierungs-VOL (ausschließlich der Kapazität des Bereichs, der von der RAID-Parität eingenommen wird) konfiguriert. Bei der vorliegenden Ausführungsform der vorliegenden Erfindung entspricht ein Komprimierungs-VOL einer RAID-Gruppe, so dass die Kapazität des Komprimierungs-VOL die Kapazität ist, wobei die Speicherkapazität der Paritätsdaten von der Gesamtkapazität aller Endspeichermedium ausgeschlossen ist, die die RAID-Gruppe darstellen. Die vorliegende Erfindung ist nicht auf eine Konfiguration beschränkt, bei der eine RAID-Gruppe und ein Komprimierungs-VOL eine 1-zu-1-Entsprechung aufweisen. Es ist auch möglich, eine Konfiguration anzuwenden, wobei eine RAID-Gruppe aufgeteilt ist, und wobei veranlasst wird, dass jeder aufgeteilte RAID-Gruppenbereich einem Komprimierung-VOL entspricht, oder veranlasst wird, dass eine Mehrzahl von RAID-Gruppen einem Komprimierungs-VOL entspricht. Beim neuen Erzeugen eines Datenträgers (Komprimierungs-VOL) verwendet der Administrator der Speichervorrichtung 1 eine GUI, die die Verwaltungsvorrichtung 4 bereitstellt, um ein Endspeichermedium (dessen Kennnummer) auszuweisen, das eine neu zu erzeugende Komprimierungs-VOL (RAID-Gruppe) darzustellen hat, und die RAID-Ebene. Wenn die Speichervorrichtung 1 diese Ausweisung empfängt, erstellt sie einen neuen Eintrag in der Komprimierungs-VOL-Verwaltungstabelle 550 und speichert vom Administrator ausgewiesene Informationen in den Feldern der PDEV-Nr. 52 und der RAID-Ebene 553 des neu erstellten Eintrags. Gleichzeitig wird eine ungenutzte Kennnummer für einen Komprimierungs-VOL automatisch erzeugt und im Feld der LDEV-Nr. 551 gespeichert, die Größe der RAID-Gruppe wird berechnet und im Feld der Größe 554 gespeichert, um somit den Komprimierungs-VOL zu erzeugen (definieren).
  • Im Folgenden wird ein Verhältnis zwischen Dekomprimierungs-VOL und Komprimierungs-VOL unter Bezugnahme auf 15 beschrieben. Wenn eine Schreibanfrage, die den Dekomprimierungs-VOL 5000 als Schreibzieldatenträger und Schreibzieldaten (Schreibdaten) der relevanten Schreibanfrage ausweist, vom Host-Computer 3 übertragen wird, werden die Schreibdaten in einem komprimierten Zustand im Zwischenspeicher 26 (in 15 nicht gezeigt) gespeichert. Im Folgenden wird dieser Zustand als Zustand bezeichnet, bei dem ”Daten (Schreibdaten” in den Dekomprimierungs-VOL geschrieben werden”. Der Zustand, dass Daten komprimiert sind, ist jedoch für den Host-Computer 3 nicht sichtbar (wird von diesem nicht erkannt).
  • Gemäß der Speichervorrichtung 1 der bevorzugten Ausführungsform der vorliegenden Erfindung werden Daten vom Dekomprimierungs-VOL 5000 auf den Komprimierungs-VOL 5500 übertragen (migriert), um die Schreibdaten, die in den Dekomprimierungs-VOL 5000 geschrieben sind, in das Endspeichermedium (SSD 11 und HDD 12) zu speichern. Die Details des hier durchgeführten ”Migrationsprozesses” sind später beschrieben, wobei sich ”Migration” nicht auf einen Prozess zum physischen Bewegen/Replizieren von Daten bezieht, sondern auf einen Prozess zum Zuordnen der Adresse des Speicherbereichs im Dekomprimierungs-VOL 5000, wo die Daten in die Adresse im Speicherbereich im Komprimierungs-VOL 5500 geschrieben werden. Darüber hinaus ist die Zuordnung zwischen der Adresse im Dekomprimierungs-VOL 5000, wo Daten geschrieben werden, und der Adresse im Komprimierungs-VOL 5500, dem die Adresse im Dekomprimierungs-VOL 5000 zugeordnet ist, nicht statisch und kann variieren, wann immer Daten in den Dekomprimierungs-VOL geschrieben werden.
  • Es wird das Verfahren zum Zuordnen von Daten, die in den Dekomprimierungs-VOL 5000 geschrieben sind, zum Komprimierungs-VOL beschrieben. Man gehe von einem Fall aus, bei dem Daten a, b, c, d und e willkürlich (in nicht zusammenhängende Bereiche) in den Dekomprimierungs-VOL 5000 geschrieben werden und dem Komprimierungs-VOL 5500 keine Daten zugeordnet sind. Nachdem eine bestimmte Menge an Daten in den Dekomprimierungs-VOL 5000 geschrieben wurden, führt die Speichersteuereinheit 10 einen Prozess zum Migrieren der Daten auf die Komprimierungs-VOL 5500 durch, d. h. einen Prozess zum Zuordnen des Bereichs im Dekomprimierungs-VOL 5000, in den Daten a, b, c, d und e geschrieben wurden, zum Bereich des Komprimierungs-VOL, und während dieses Prozesses wird eine Zuordnung durchgeführt, um den Arbeitsaufwand der Schreibdatenverarbeitung in das Endspeichermedium (SSD 11 und HDD 12) zu verringern, so dass Daten a, b, c, d und e sequentiell vom Kopfende des Komprimierungs-VOL 5500 gespeichert werden (siehe 15).
  • Darüber hinaus werden die Daten im Komprimierungs-VOL nicht überschrieben. Nachdem Daten a, b, c, d und e in den Komprimierungs-VOL migriert (diesem zugeordnet) wurden, wird, wenn eine Schreibanfrage zum Aktualisieren des Inhalts von Daten auf a' in den Bereich im Dekomprimierungs-VOL 5000, in dem Daten a gespeichert sind, vom Host-Computer 3 eingeht, beispielsweise wie in 15 gezeigt, der Dateninhalt des Bereichs, in den Daten a geschrieben wurden, auf a' im Dekomprimierungs-VOL aktualisiert, die Aktualisierungsdaten a' werden jedoch in den Bereich im Komprimierungs-VOL geschrieben (z. B. direkt nach dem Bereich, in dem Daten e gespeichert sind), der sich von dem Bereich unterscheidet, in dem Daten a (komprimierte Daten von) geschrieben sind, und zwar auf anhängende Weise.
  • Nachdem die Daten a, b, c, d und e (komprimierte Daten davon) dem Komprimierungs-VOL zugeordnet wurden, werden redundante Daten (Parität) durch eine RAID-Technik auf Basis dieser Daten erzeugt, und die Daten (komprimierte Daten) und die Parität werden in das Endspeichermedium (SSD 11 oder HDD 12) geschrieben werden, das den Komprimierungs-VOL darstellt. Im Folgenden wird der Prozess zum Schreiben von Daten (oder Parität) in das Endspeichermedium (SSD 11 oder HDD 12) als ”Auslagern” bezeichnet.
  • Wie zuvor beschrieben, werden Daten beim Prozess zum Migrieren der Daten im Dekomprimierungs-VOL auf den Komprimierungs-VOL im Komprimierungs-VOL angeordnet, so dass der Arbeitsaufwand des Datenschreibprozesses in das Endspeichermedium (SSD 11 oder HDD 12) minimiert wird, und das Anordnungsverfahren wird hier ausführlich beschrieben. 16 ist ein konzeptuelles Schaubild, das die Zuordnung zwischen dem Komprimierungs-VOL 5500 und dem Endspeichermedium (SSD 11 oder HDD 12) zeigt, das dem Komprimierungs-VOL entspricht. Für eine einfachere Beschreibung wird hier ein Fall beschrieben, bei dem die RAID-Gruppe aus vier Endspeichermedium zusammengesetzt ist und die RAID-Ebene 4 ist, es können gleichermaßen aber auch andere RAID-Ebenen umgesetzt werden.
  • Ein Element 5501 in der Zeichnung ist ein Bereich mit einer Größe von beispielsweise 16 kB (32 Sektoren) und wird gemäß einer Ausführungsform der Erfindung ”Slot” genannt. Darüber hinaus zeigt der Slot 5501 mit der Bezeichnung ”O (D)” im Slot 5501 einen Slot, der Daten speichert (im Folgenden ”Datenslot” genannt), und der Slot 5501 mit der Bezeichnung ”3 (P)” zeigt einen Slot, der Parität speichert (d. h. ein exklusives OR von 0 (D), 1 (D) und 2 (D)) (im Folgenden ”Paritätsslot” genannt). Wenn die Speichersteuereinheit 10 die in den Dekomprimierungs-VOL 5000 geschriebenen Daten auf den Komprimierungs-VOL 5500 migriert, wird ein Prozess durchgeführt, um die komprimierten Daten auf den Datenslot zu übertragen und einen Paritätsslot zuzuweisen. Im Folgenden wird der Satz von Datenslots, die erforderlich sind, um eine Parität zu erzeugen, die einem Paritätsslot entspricht (beispielsweise sind die Datenslots, die erforderlich sind, um einen Paritätsslot ”3 (P)” zu bilden, ”0 (D)”, ”1 (D)” und ”2 (D)”), ”Streifengruppe” genannt.
  • Wenn die Speichervorrichtung 1 eine Parität aus einer Mehrzahl von Schreibdaten erzeugt, müssen Daten aus dem Endspeichermedium (SSD 11 oder HDD 12) gelesen werden, wenn Daten, die für das Erzeugen einer Parität erforderlich sind, im Zwischenspeicher 26 der Speichersteuereinheit 10 nicht vorhanden sind. Beispielsweise wenn Daten von Slot 0 (D) in 16 aktualisiert werden, um eine Parität 3 (P) zu erzeugen, die Schlitz 0 (D) entspricht, müssen die Daten 0 (D) vor Aktualisierung und die Parität 3 (P) oder Daten 1 (D) und Daten 2 (D)) aus dem Endspeichermedium (SSD 11 oder HDD 12) gelesen werden (der Arbeitsaufwand während des Datenschreibvorgangs wird erhöht). Wenn jedoch Daten 0 (D), 1 (D) und 2 (D) allesamt im Zwischenspeicher 26 vorhanden sind, ist es lediglich erforderlich, das exklusive OR der Daten 0 (D), 1 (D) und (2) zu berechnen, die im Zwischenspeicher 26 gespeichert sind, so dass ein Arbeitsaufwand für das Lesen von Daten aus dem Endspeichermedium (SSD 11 oder HDD 12) verhindert wird.
  • Aus diesem Grund migriert die Speichervorrichtung 1 der vorliegenden Erfindung die Daten aus dem Dekomprimierungs-VOL 5000 auf den Komprimierungs-VOL 5500, nachdem Daten einer Menge, die einer Streifengruppe entspricht (beim Beispiel von 16 die Gesamtgröße der Daten 0 (D), 1 (D9 und 2 (D), anders ausgedrückt Daten, die 48 kB entsprechen), geschrieben wurden, so dass sie Daten vor Aktualisierung oder eine Parität vor Aktualisierung nicht aus dem Endspeichermedium lesen muss. Beim Migrieren (Zuordnen) der Daten auf die Komprimierungs-VOL 5500 werden Daten sodann sequentiell vom Kopfende der Streifengruppe (beim Beispiel von 16 die Position der Daten 0 (D) oder 4 (D)) zugeordnet, und an dem Zeitpunkt, an dem die Zuordnung der Daten zum Ende der Streifengruppe abgeschlossen ist (im Beispiel von 16 die Position der Daten 3 (D) oder 6 (D)), wird die Datenmigration auf den Komprimierungs-VOL beendet und die Erzeugung einer Parität (3 (P) oder 7 (P)) wird durchgeführt. Wenn Daten, die einer Streifengruppe (48 kB) entsprechen, in den Dekomprimierungs-VOL geschrieben werden, wird eine Datenmigration vom Dekomprimierungs-VOL auf den Komprimierungs-VOL erneut durchgeführt. Natürlich ist es nicht erforderlich, jedes Mal eine Datenmigration vom Dekomprimierungs-VOL auf den Komprimierungs-VOL durchzuführen, wenn Daten in den Dekomprimierungs-VOL geschrieben werden, die einer Streifengruppe (48 kB) entsprechen, und eine Datenmigration aus dem Dekomprimierungs-VOL auf den Komprimierungs-VOL kann durchgeführt werden, nachdem darauf gewartet wurde, dass eine Menge, die mehreren Streifengruppen entspricht (96 kB, 480 kB usw.) geschrieben wurde.
  • 17 zeigt den Inhalt einer Volumenzuordnungstabelle 600 und 18 zeigt den Inhalt einer Adresszuordnungstabelle 650. Bei der vorliegenden Ausführungsform stehen der Dekomprimierungs-VOL und der Komprimierungs-VOL in einem 1-zu-1-Verhältnis und ist das Ziel der Daten, die in einen Dekomprimierungs-VOL geschrieben sind, auf nur einen vorab festgelegten Komprimierungs-VOL beschränkt. Die Datenträgerzuordnungstabelle 600 zeigt, dass der Bereich im Dekomprimierungs-VOL, der von VVOL-Nr. 601 festgelegt wird, einem Bereich im Komprimierungs-VOL zugeordnet ist, der durch LDEV-Nr. 602 festgelegt wird. Unter Bezugnahme auf den Inhalt der Datenträgerzuordnungstabelle 600 werden dadurch, dass der Administrator der Speichervorrichtung 1 unter Verwendung der Verwaltungsvorrichtung 4 eine Kennung des Komprimierungs-VOL (LDEV-Nr.) ausweist, der der Kennnummer des Dekomprimierungs-VOL (VVOL-Nr.) zugeordnet ist, die ausgewiesenen Kennnummern in den Felder der VVOL-Nr. 601 und der LDEV-Nr. 602 der Datenträgerzuordnungstabelle 600 von der Speichervorrichtung 1 gespeichert. Damit wird die Zuordnung zwischen dem Dekomprimierungs-VOL und dem Komprimierungs-VOL festgelegt. Außerdem ist das Feld einer letzten Schreibposition 603 innerhalb der Datenträgerzuordnungstabelle 600 ein Feld zum Speichern der Position im Komprimierungs-VOL (LBA im Komprimierungs-VOL) der Daten, die zuletzt migriert wurden, als Daten aus dem Dekomprimierungs-VOL auf den Komprimierungs-VOL migriert (diesem zugeordnet) wurden. Die Speichervorrichtung 1 wartet diese Informationen, so dass sie Daten aus der LBA nach der LBA im Komprimierungs-VOL speichern kann, die im Feld der letzten Schreibposition 603 gespeichert ist (d. h. unter Umsetzung eines angehängten Schreibvorgangs), wenn Daten aus dem Dekomprimierungs-VOL auf den Komprimierungs-VOL migriert werden.
  • Die Adresszuordnungstabelle 650 von 18 ist eine Tabelle, mit der verwaltet wird, dass der Bereich im Dekomprimierungs-VOL, der von einer VVOL-Nr. 651 und einer LBA 652 festgelegt wird, einem Bereich (Sektor) im Komprimierungs-VOL zugeordnet wird, der von einer LDEV-Nr. 653 und einer LBA 654 festgelegt wird. Diese Tabelle wird aktualisiert, wenn die Speichersteuereinheit 10 den Daten, die in den Dekomprimierungs-VOL geschrieben sind, dem Komprimierungs-VOL zuordnet. Jede Zeile (Eintrag) in der Adresszuordnungstabelle 650 zeigt, welchem Sektor des Komprimierungs-VOL der Bereich zugeordnet ist, der acht Sektoren im Dekomprimierungs-VOL entspricht (ein Sektor ist eine Mindestzugriffseinheit des Speicherbereichs, wenn der Host-Computer 3 auf den Dekomprimierungs-VOL zugreift, für gewöhnlich 512 Bytes). Darüber hinaus unterscheidet sich die Anzahl der Plattenbereiche (Anzahl von Sektoren) des Komprimierungs-VOL, die jeder Zeile (Eintrag) der Adresszuordnungstabelle 650 zugeordnet sind, je nach Komprimierungsstatus der Daten, es werden jedoch zumindest ein Sektor und höchstens acht Sektoren zugeordnet.
  • Durch Warten und Verwalten der Adresszuordnungstabelle 650 bezieht sich die Speichersteuereinheit 10, wenn sie eine Leseanfrage vom Host-Computer 3 an den Dekomprimierungs-VOL empfängt, auf die Adresszuordnungstabelle 650, wandelt den Bereich (Adresse) im Dekomprimierungs-VOL, der von der Leseanfrage ausgewiesen ist, in eine Adresse im Komprimierungs-VOL um, liest die Zugriffszieldaten im Dekomprimierungs-VOL, der von der Leseanfrage ausgewiesen ist, aus dem Endspeichermedium (SSD 11 oder HDD 12), der dem Komprimierungs-VOL konfiguriert, dekomprimiert die Daten im Zwischenspeicher 26 und gibt die dekomprimierten Daten an den Host-Computer 3 zurück, um die Leseverarbeitung umzusetzen. Die Details dieses Prozesses sind später beschrieben.
  • Der Dekomprimierungs-VOL und der Komprimierungs-VOL müssen nicht notwendigerweise die gleiche Größe aufweisen. In der Speichervorrichtung 1 werden Daten im komprimierten Zustand in den Komprimierungs-VOL gespeichert, so dass die vorliegende Erfindung umgesetzt werden kann, sogar wenn die Größe des Komprimierungs-VOL auf eine kleiner Größe als jene des Dekomprimierungs-VOL eingestellt ist.
  • Im Folgenden wird das Verfahren zum Verwalten des Zwischenspeichers 26 beschrieben. 19 ist ein konzeptuelles Schaubild, das ein Verhältnis zwischen Datenträger, Slot und Zwischenspeichersegment gemäß der vorliegenden Ausführungsform zeigt. Wie zuvor erwähnt, verwaltet die Speichervorrichtung 1 der vorliegenden Erfindung zwei Typen von Datenträgern, bei denen es sich um einen Dekomprimierungs-VOL und einen Komprimierungs-VOL handelt, wobei der Dekomprimierungs-VOL und der Komprimierungs-VOL unter Verwendung einer ähnlichen Datenstruktur verwaltet werden. Aus diesem Grund wird in der folgenden Beschreibung hauptsächlich eine Datenstruktur von Zwischenspeicherverwaltungsdaten beschrieben, die verwendet wird, wenn die Daten im Dekomprimierungs-VOL im Zwischenspeicher 26 zwischengespeichert werden.
  • Bei der bevorzugten Ausführungsform der vorliegenden Erfindung ist eine Mindestzugriffseinheit für einen Datenträger ein Sektor (z. B. 512 Bytes) und ist eine logische Blockadresse (LBA; die in der vorliegenden Schrift manchmal als logische Adresse bezeichnet wird) jedem Sektor des Datenträgers zugewiesen (LBA sind im Element 2010 von 19 gezeigt). Darüber hinaus wird gemäß der Speichervorrichtung 1 der Ausführungsform der vorliegenden Erfindung eine exklusive Steuerung durchgeführt, wenn auf den Speicherbereich im Datenträger zugegriffen wird, und führt die Speichervorrichtung 1 eine exklusive Steuerung in jedem Bereich, Slot 2100 genannt, durch. Die Größe des Slots 2100 ist bei der vorliegenden Ausführungsformen 16 kB (d. h. 32 Sektoren), es können jedoch auch andere Größen angewandt werden. Eine eindeutige Kennnummer wird jedem Slot 2100 im Datenträger zugewiesen und die Nummer wird Slot-ID genannt. Null wird als Slot-ID des Slots 2100 am Kopfende des Datenträgers zugewiesen und danach werden die Slot-IDs 1, 2 und so weiter sequentiell den darauf folgenden Slots zugewiesen. In 19 zeigt ein Element 2110 die Slot-ID, und das Verhältnis zwischen der logischen Blockadresse 2010 und der Slot-ID 2110 ist wie in 19 gezeigt. Beispielsweise beim Umwandeln der logischen Blockadresse, die im E/A-Befehl ausgewiesen ist, der vom Host-Computer 3 empfangen wurde, in eine Slot-ID wird der Wert, der durch Teilen der ausgewiesenen logischen Blockadresse durch 32 (Anzahl der Sektoren, die einen Slot darstellen) erhalten wird, zur Slot-ID. Bei Durchführung dieser Teilung, wenn der Rest 0 ist, kann darüber hinaus erkannt werden, dass sich die logische Blockadresse, die im E/A-Befehl ausgewiesen ist, am Kopfende des Slots befindet (wie von der Slot-ID festgelegt), und wenn der Rest ein Nicht-Null-Wert ist (unter der Annahme, dass dieser Wert R ist), ist der Rest R die Informationen, die zeigen, dass der durch die logische Blockadresse festgelegte Block an der (R + 1)-ten Position vom oberen Block des Slots vorliegt (wie von der Slot-ID festgelegt) (im Folgenden werden diese Informationen R einen relative Adresse innerhalb eines Slots genannt).
  • Beim Speichern der Daten im Datenträger in den Zwischenspeicher 26 weist der Prozessor 21 der Speichersteuereinheit 10 einen Bereich mit einer bestimmten Größe als Zwischenspeicherbereich unter den ungenutzten Speicherbereichen im Zwischenspeicher 26 zu, wobei der Zwischenspeicherbereich in Einheiten von Bereichen zugewiesen wird, die Zwischenspeichersegment (oder Segment) genannt werden (in 19 zeigen Elemente 2201, 2202, 2203 und 2204 Zwischenspeicherelemente; im Folgenden werden sie, wenn gesammelt auf die Zwischenspeichersegmente 2201, 2202, 2203 und 2204 Bezug genommen wird, als ”Zwischenspeichersegment(e) 2200” bezeichnet). Bei der bevorzugten Ausführungsform der vorliegenden Erfindung ist die Größe des Zwischenspeichersegments 2200, das für das Verwalten der in den Dekomprimierungs-VOL geschriebenen Daten im Zwischenspeicher 26 verwendet wird, acht Sektoren, d. h. 4 kB (in unkomprimierter Größe), und werden vier Zwischenspeichersegmente 2201, 2202, 2203 und 2204 jedem Slot zugeordnet. 19 veranschaulicht ein Konzept, bei dem die Bereiche (Zwischensegmente 2200) im Zwischenspeicher 26 dem Slot 2100 zugeordnet sind. Die Details, wie die Speichervorrichtung 1 diese Zuordnung verwaltet, werden später beschrieben, die Speichervorrichtung 1 weist jedoch die Slotsteuertabelle 110 als Information für das Verwalten von Slots auf (deren Details werden später beschrieben; eine Slotsteuertabelle 110 ist in jede Slot 2100 vorhanden), und in der Slotsteuertabelle 110 werden die Informationen der Zwischenspeichersegmente 2200 gespeichert, die dem relevanten Slot zugeordnet sind (genauer gesagt Zeiger auf Informationen zum Verwalten der Zwischenspeichersegmente 2200). Die Speichervorrichtung 1 verwaltet die Zuordnung zwischen den Slots 2100 und den Zwischenspeichersegmenten 2200 durch Erstellen und Verwalten dieser Slotsteuertabelle 110. Bei der vorliegenden Ausführungsform ist die Größe des Zwischenspeichersegments 2200 beispielsweise auf 4 kB eingestellt, es können jedoch auch andere Größen als 4 kB angewandt werden. Im Zwischenspeicher 26 gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung werden jedoch unkomprimierte Daten über eine Komprimierungsfunktion in 4-kB-Einheiten komprimiert und das Einstellen der Größe des Zwischenspeichersegmentes 2200 (in unkomprimiertem Zustand) auf 4 kB hat den Vorteil, dass die Verwaltung nicht kompliziert ist, so dass das die Zwischenspeichersegmentgröße von 4 kB angewandt wird. Außerdem kann sich die Anzahl der Zwischenspeichersegmente 2200, die einem Slot 2100 zugeordnet sind, von vier unterscheiden.
  • Die Verarbeitung in Zusammenhang mit dem Verwalten des Zwischenspeicherbereichs, wenn der Host-Computer 3 auf einen Bereich in einem Datenträger 5000 zugreift (z. B. diesen liest oder beschreibt) ist wie folgt beschrieben. Der Host-Computer 3 gibt einen E/A-Befehl aus, der eine LUN und eine LBA (entsprechend Element 2010 in 19) an die Speichervorrichtung 1 ausgibt. Die Speichervorrichtung 1 wandelt die LBA, die im empfangenen E/A-Befehl enthalten ist, in einen Satz einer Slot-ID 2110 und einer relativen Adresse innerhalb des Slots um und bezieht sich auf die Slotsteuertabelle 110, die von der Slot-ID 2110 festgelegt wird, die durch die Umwandlung erhalten wird. Danach bestimmt sie auf Basis der Informationen in der Slotsteuertabelle 110, ob ein Zwischenspeichersegment 2200 dem Bereich im Datenträger zugewiesen wurde, der vom E/A-Befehl ausgewiesen wird (Bereich, der von der LBA festgelegt wird), und wenn das Zwischenspeichersegment 2200 nicht zugewiesen ist, führt sie einen Prozess durch, um ein Zwischenspeichersegment 2200 neu zuzuweisen.
  • Im Folgenden wird die Zwischenspeicherverwaltungsdatenstruktur beschrieben. 20 ist ein konzeptuelles Schaubild einer Zwischenspeicherverwaltungsdatenstruktur, die von der Speichervorrichtung 1 verwaltet wird.
  • Die Zwischenspeicherverwaltungsdatenstruktur enthält ein Zwischenspeicherverzeichnis 100 (das in 21 ausführlich beschrieben ist), eine freie (”free”) Warteschlange 200 und eine Warteschlange mit noch nicht reflektierten Daten (”dirty”) und eine Warteschlange mit bereits reflektierten Daten (”clean”) (in 22 ausführlich beschrieben). Die jeweiligen Zwischenspeichersegmente werden von einer Segmentsteuertabelle 120 (SGCT) verwaltet. Eine SGCT 120 liegt in jedem der Zwischenspeichersegmente (4-kB-Bereich in unkomprimiertem Zustand) im LBA-0-Raum im Zwischenspeicher 26 vor.
  • Das Zwischenspeicherverzeichnis 100 ist eine Datenstruktur, die eine Zuordnung zwischen einer logischen Blockadresse (LBA) im Datenträger und einer Adresse im Zwischenspeicher (Adresse im LBA-0-Raum) verwaltet, wo die Daten in der relevanten logischen Blockadresse zwischengespeichert werden, wobei ein Zwischenspeicherverzeichnis 100 für einen Dekomprimierungs-VOL vorliegt. Das Zwischenspeicherverzeichnis 100 ist beispielsweise eine Hash-Tabelle mit einer LBA (oder Informationen, die aus einer LBA abgeleitet werden, z. B. Slot-ID) im Datenträger, wo die Zwischenspeicherzieldaten gespeichert werden, als Schlüssel und sie hat einen Zeiger zum Zeigen auf die SGCT 120 als Eintrag. Die SGCT 120 verwaltet den Zeiger auf ein Zwischenspeichersegment 325 (Adresse im Zwischenspeicher 126 [Adresse im LBA-0-Raum], das der SGCT 120 entspricht. Aus diesem Grund kann das Zwischenspeichersegment, in dem Daten zwischengespeichert sind, die der relevanten logischen Blockadresse entsprechen, durch Durchsuchen der Informationen im Zwischenspeicherverzeichnis 100 unter Verwendung der LBA im Datenträger festgelegt werden. Die ausführliche Konfiguration der SGCT 120 wird später beschrieben.
  • Die freie Warteschlange 200 sind Steuerinformationen zum Verwalten eines ungenutzte Segments im Zwischenspeicher 26, d. h. ein Zwischenspeichersegment 325, in dem keine Daten gespeichert sind. Gemäß der vorliegenden Ausführungsform ist die freie Warteschlange 200 als bidirektionale Linkliste konfiguriert, die die SGCT 120, die dem freien Segment im Zwischenspeicher 26 entspricht, als Eintrag aufweist, ohne jedoch darauf beschränkt zu sein.
  • Die SGCT 120 wendet einen Status, in dem sie entweder mit dem Zwischenspeicher 100 oder der freien Warteschlange 200 verbunden ist, gemäß dem Status und dem Typ des Zwischenspeichersegments an, das der SGCT 120 entspricht. Die SGCT 120, die einem ungenutzten Zwischenspeichersegment 325 entspricht, ist mit der freien Warteschlange 200 verbunden und wenn das relevante Zwischenspeichersegment 325 zum Speichern von Daten zugewiesen wird, ist sie mit dem Zwischenspeicherverzeichnis 100 verbunden.
  • 21 ist eine Ansicht, die ein Verhältnis zwischen Zwischenspeicherverzeichnis, SLCT und SGCT zeigt.
  • Das Zwischenspeicherverzeichnis 100 ist aus einem Satz von Verzeichniseintragszeigern 100a zusammengesetzt. Jeder Verzeichniseintragszeiger 100a speichert einen Zeiger (Adressinformationen), der auf eine Slotsteuertabelle 110 (SLCT) zeigt, die einer Slot-ID entspricht. Wie zuvor erwähnt, ist das Zwischenspeicherverzeichnis 100 eine Hash-Tabelle mit der Slot-ID als Schlüssel und beispielsweise wird auf eine SLCT 110 eines Slots, dessen Ergebnis einer Hash-Berechnung einer Slot-ID 3 ist, direkt oder indirekt durch einen dritten Verzeichniseintragszeiger 100a im Zwischenspeicherverzeichnis 100 gezeigt.
  • Eine SLCT 110 ist eine Datenstruktur, die einen Verzeichniseintragszeiger 110a, einen Vorwärtszeiger 110b, einen Rückwärtszeiger 110c, eine Slot-ID 110d, einen Slotstatus 110e, eine Menge 110f an noch nicht reflektierten Daten und einen SGCT-Zeiger 110g enthält. Der Verzeichniseintragszeiger 110a ist ein Zeiger, der auf die SLCT 110 zeigt, die dem nächsten Eintrag in der Hash-Tabelle entspricht. Der Vorwärtszeiger 110b sind Informationen, die verwendet werden, wenn der SLCT 110 mit einer Warteschlange mit bereits reflektierten Daten oder einer Warteschlange mit noch nicht reflektierten Daten verbunden ist, und zeigt auf die vorherige SLCT 110 in der Warteschlange mit bereits reflektierten Daten oder die Warteschlange mit noch nicht reflektierten Daten. Der Rückwärtszeiger 110c sind Informationen, die verwendet werden, wenn der SLCT 110 mit einer Warteschlange mit bereits reflektierten Daten oder einer Warteschlange mit noch nicht reflektierten Daten verbunden ist, und zeigt auf die nächste SLCT 110 in der Warteschlange mit bereits reflektierten Daten oder die Warteschlange mit noch nicht reflektierten Daten. Die Slot-ID 110d sind Kennungsinformationen eines Slots (Slot-ID), der der SLCT 110 entspricht. Der Slotstatus 110e sind Informationen, die den Status des Slots zeigen. Ein ”Gesperrt”, das anzeigt, dass der relevante Slot gesperrt ist, und dergleichen kann eines der Beispiele für den Status des Slots sein. Die Menge 110f an ungeschriebenen Daten speichert eine Menge an Daten (noch nicht reflektierte Daten), die im Endspeichermedium (SSD 11 oder HDD 12) noch nicht reflektiert sind, unter den Daten, die in den Zwischenspeichersegmenten gespeichert sind, die im relevanten Slot enthalten sind. Der SGCT-Zeiger 110g ist ein Zeiger, der auf die SGCT 120 zeigt, die dem Zwischenspeichersegment entspricht, das im relevanten Slot enthalten ist. Wenn ein Zwischenspeichersegment nicht dem relevanten Slot zugewiesen ist, ist der SGCT-Zeiger 110g auf einen Wert eingestellt, der zeigt, dass der Zeiger (Adresse) ungültig ist (z. B. NULL). Wenn mehrere Zwischenspeichersegmente im Slot enthalten sind, wird darüber hinaus jede SGCT 120 als Linkliste verwaltet und ist der SGCT-Zeiger 110g ein Zeiger, der auf die SGCT 120 zeigt, die dem Zwischenspeichersegment am Kopfende der Linkliste entspricht.
  • Die SGCT 120 enthält einen SGCT-Zeiger 120a, eine Segment-ID 120b, eine Segmentadresse 120c, eine Zwischenspeicherungsbitmap 120d, eine noch nicht reflektierte Bitmap 120e und eine noch nicht reflektierte Menge 120f.
  • Der SGCT-Zeiger 120a ist ein Zeiger, der auf die SGCT 120 zeigt, die dem nächsten Zwischenspeichersegment entspricht, das im gleichen Slot enthalten ist. Die Segment-ID 120b sind Kennungsinformationen des Zwischenspeichersegments und sind Informationen, die zeigen, in welchem Bereich des Slots das Zwischenspeichersegment angeordnet ist. Bei der vorliegenden Ausführungsform sind maximal vier Zwischenspeichersegmente zu einem Slot zugewiesen, so dass jeder Wert von 0, 1, 2 oder 3 in der Segment-ID 120b jedes Zwischenspeichersegments gespeichert ist (die Segment-ID 120b des Zwischenspeichersegments, das am Kopfende des Slots gespeichert ist, ist auf 0 eingestellt, und was die darauf folgenden Segmente betrifft, so ist 1, 2 oder 3 sequentiell als Segment-ID 120b zugewiesen; wenn die Zwischenspeichersegmente 2201 bis 2204 in 19 als Beispiel herangezogen werden, ist die Segment-ID 120b des Zwischenspeichersegments 2201, das dem Kopfende des Slots 2100 zugeordnet ist, auf 0 eingestellt und danach ist die Segment-ID 120b jedes der Zwischenspeichersegmente 2202, 2203 und 2204 auf 1, 2 und 3 eingestellt).
  • Die Segmentadresse 120c ist eine Adresse des Zwischenspeichersegments, das der relevanten SGCT 120 zugeordnet ist, das heißt eine Adresse im LBA-0-Raum des Zwischenspeichers 26. Die Speichersteuereinheit 10 (deren Prozessor 21) gemäß der Ausführungsform der vorliegenden Erfindung verwendet eine Adresse im LBA-0-Raum als Adresse jedes Zwischenspeichersegments, um den Zwischenspeicherbereich (Zwischenspeichersegment) zu verwalten, in dem die Daten gespeichert sind, die in den Dekomprimierungs-VOL 5000 geschrieben sind. Anders ausgedrückt wird jedes Zwischenspeichersegment als im LBA-0-Raum vorhanden seiend verwaltet. Dadurch muss die Speichersteuereinheit 10 (deren Prozessor 21) die Größe der Daten, die in einem komprimierten Zustand im Zwischenspeicher 26 gespeichert sind, nicht berücksichtigen und kann die Daten im Zwischenspeicher 26 so verwalten, als wären die Daten im unkomprimierten Zustand im Zwischenspeicher 26 gespeichert. Darüber hinaus wird eine Adresse im LBA-1-Raum verwendet, um den Zwischenspeicherbereich (Zwischenspeichersegment) zu verwalten, in dem die Daten im Komprimierungs-VOL 5500 gespeichert sind.
  • Die Zwischenspeicherungsbitmap 120d ist eine Bitmap, die den Bereich zeigt, in dem bereits reflektierte (”clean”) Daten im Zwischenspeichersegment zwischengespeichert sind, d. h. die gleichen Daten wie die Daten im Endspeichermedium (SSD 11 oder HDD 12). Das Bit der Zwischenspeicherungsbitmap 120d, das dem Bereich entspricht, in dem bereits reflektierte Daten (Daten, die den im Endspeichermedium gespeicherten Daten gleichen) zwischengespeichert werden, wird auf ”ON” (1) gesetzt, und das Bit, das dem Bereich entspricht, in dem keine bereits reflektierten Daten zwischengespeichert werden, wird auf ”OFF” (0) gesetzt. Die Bitmap 120a mit noch nicht reflektierten Daten ist eine Bitmap, die den Bereich zeigt, in dem noch nicht reflektierte Daten im Zwischenspeichersegment zwischengespeichert werden. Ähnlich der Zwischenspeicherungsbitmap 120d entspricht bei der Bitmap 120e mit noch nicht reflektierten Daten jedes Bit den jeweiligen Bereichen (Sektoren) im Zwischenspeichersegment, wobei das Bit, das dem Bereich entspricht, in dem noch nicht reflektierte Daten zwischengespeichert sind, auf ”ON” (1) gesetzt wird, und das Bit, das dem Bereich entspricht, in dem keine noch nicht reflektierten Daten zwischengespeichert werden, wird auf ”OFF” (0) gesetzt. Bei der Ausführungsform der vorliegenden Erfindung sind die Zwischenspeicherungsbitmap 120d und die Bitmap 120e mit noch nicht reflektierten Daten jeweils ein Bit. Das heißt, dass jeder Sektor (acht Sektoren) innerhalb eines Zwischenspeichersegments als in einem Zustand mit noch nicht reflektierten oder bereits reflektierten Daten seiend verwaltet werden, es kann jedoch auch eine Konfiguration angewandt werden, bei der die Anzahl von Bits der Zwischenspeicherungsbitmap 120d und der Bitmap 120e mit noch nicht reflektierten Daten auf die gleiche Zahl wie die Anzahl von Sektoren in einem Segment (bis zu acht Bits) festgelegt wird.
  • Die Menge an Daten (noch nicht reflektierten Daten), die im Endspeichermedium (SSD 11 oder HDD 12) noch nicht reflektiert sind, unter den Daten, die im Zwischenspeichersegment gespeichert sind, das der relevanten SGCT 120 zugeordnet ist, werden in der Menge 120f von noch nicht reflektierten Daten gespeichert. Bei dem obigen Beispiel der Zwischenspeicher-SLCT und -SGCT wird eine Struktur angewandt, bei der die Informationen über die Menge von (noch nicht reflektierten) Daten nach Komprimierung sowohl in der SLCT 110 als auch der SGCT 120 verwaltet werden und die Gesamtmenge an noch nicht reflektierten Daten (120f) der SGCTs 120, die mit der relevanten SLCT 110 verbunden sind, wird in der SLCT 110 gespeichert. Es ist jedoch möglich, dass die Informationen über die Menge an noch nicht reflektierten Daten nach Komprimierung nur in jeder SGCT 120 gespeichert werden.
  • 22 ist eine Ansicht, die eine Datenstruktur einer Warteschlange mit noch nicht reflektierten Daten oder einer Warteschlange mit bereits reflektierten Daten zeigt.
  • Wie zuvor erwähnt, ist jede SLCT 110 mit dem Verzeichniseintragszeiger 110a des Zwischenspeicherverzeichnisses 100 verbunden und kann auch mit der Warteschlange mit noch nicht reflektierten Daten oder der Warteschlange mit bereits reflektierten Daten verbunden sein, je nach Status des Slots, der der SLCT 110 entspricht. Die Warteschlange mit noch nicht reflektierten Daten ist eine Warteschlange, die die SLCT 110 verbindet, die dem Slot entspricht, der die noch nicht reflektierten Daten enthält. Die Warteschlange mit bereits reflektierten Daten ist eine Warteschlange, die die SLCT 110 verbindet, die einem Slot entspricht, der nur bereits reflektierte Daten enthält. Die Warteschlange mit noch nicht reflektierten Daten wird verwendet, um noch nicht reflektierte Daten zu durchsuchen, wenn die Daten (Zwischenspeicherdaten) im Dekomprimierungs-VOL auf den Komprimierungs-VOL migriert werden, oder um die noch nicht reflektierten Daten im Komprimierungs-VOL auszulagern (in das Endspeichermedium zu schreiben). Beim Zuordnen eines Zwischenspeichersegments wird, wenn keine ungenutzten Zwischenspeichersegmente (SGCT) (mit der freien Warteschlange verbunden) vorhanden sind, stattdessen ein Zwischenspeichersegment verwendet, das nur bereits reflektierte Daten speichert (Zwischenspeicherersatz), und die Warteschlange mit bereits reflektierten Daten wird zu diesem Zeitpunkt verwendet, um den Zwischenspeicher zu durchsuchen.
  • Die vorliegende Ausführungsform beschreibt den Fall, bei dem der Algorithmus, der für die Zwischenspeicherersetzung oder die Auslagerungszeitplanung verwendet wird, ein LRU (Least Recently Used), aber es kann auch eine andere Konfiguration angewandt werden. Die Warteschlange mit noch nicht reflektierten Daten und die Warteschlange mit bereits reflektierten Daten unterscheiden sich dahingehend, dass sie mit verschiedenen SLCTs 110 verbunden sind, und die Grundkonfiguration dieser Warteschlangen ist ähnlich, so dass die Warteschlange mit noch nicht reflektierten Daten hier als Beispiel für Beschreibungszwecke herangezogen wird. Die Warteschlange mit noch nicht reflektierten Daten ist als bidirektionale Linkliste konfiguriert. Das heißt, dass die Warteschlange mit noch nicht reflektierten Daten eine SLCT 110, die dem Slot entspricht, der die zuletzt verwendeten noch nicht reflektierten Daten enthält (der Slot, der zuallerletzt verwendet wurde), mit einem Vorwärtszeiger eines MRU-(Most Recently Used)-Terminals 150 verbindet, und danach die SLCT 110 des Slots der nächsten Reihenfolge (der Slot, der die nächsten zuletzt verwendeten noch nicht reflektierten Daten enthält) sequentiell mit dem Vorwärtszeiger 110b der SLCT 110 verbindet, einen LRU-Terminals 160 schließlich mit dem Vorwärtszeiger 110b der letzten SLCT 110 verbindet, während sie die letzte SCLT 110 mit einem Rückwärtszeiger eines LRU-Terminals 160 verbindet und danach die SLCT 110 eines Slots einer vorausgehenden Reihenfolge sequentiell mit dem Rückwärtszeiger 110c der SLCT 110 der darauf folgenden Reihenfolge verbindet und die SLCT 110 in der ersten Reihenfolge mit dem MRU-Terminal 150 verbindet. In der Warteschlange mit noch nicht reflektierten Daten wird der SLCT 110 in einer Reihenfolge angeordnet, beginnend von der Seite des MRU-Terminals 150 mit der zuallerletzt verwendeten. Ähnlich dem Zwischenspeicherverzeichnis 100 gibt es eine Warteschlange mit noch nicht reflektierten Daten für jeden Dekomprimierungs-VOL. Es gibt eine Warteschlange mit bereits reflektierten Daten in der Speichersteuereinheit 10 (genauer gesagt gibt es eine Warteschlange mit bereits reflektierten Daten für die Dekomprimierungs-VOLs (anders ausgedrückt für die Zwischenspeicherverwaltung im LBA-0-Raum) und gibt es eine Warteschlange mit bereits reflektierten Daten für die Komprimierungs-VOLs (anders ausgedrückt für die Zwischenspeicherverwaltung im LBA-1-Raum)).
  • Im Folgenden wird die Datenstruktur der freien Warteschlange 200 unter Bezugnahme auf 23 beschrieben. Die freie Warteschlange 200 ist eine Warteschlange zum Verwalten des freien (ungenutzten) Zwischenspeichersegments 325 im Zwischenspeicher 26 und ist eine Linkliste, wobei die SGCTs 120 der freien Speichersegmente über einen Zeiger verbunden sind. Es gibt eine freie Warteschlange innerhalb der Speichersteuereinheit 10. Ein Freie-Warteschlangen-Zeiger 201 der freien Warteschlange 200 zeigt auf die obere SGCT 120 der Warteschlange. Der SGCT-Zeiger 120a des SGCT 120 zeigt auf die SGCT 120 des nächsten freien Zwischenspeichersegments.
  • Im Vorstehenden sind der Inhalt der Zwischenspeicherverwaltungsdaten zum Verwalten der Daten des Dekomprimierungs-VOL im Zwischenspeicher 26 beschrieben, und die Zwischenspeicherverwaltungsdatenstruktur zum Verwalten der Daten des Komprimierungs-VOL im Zwischenspeicher 26 hat eine ähnliche Struktur. Gemäß der Ausführungsform der vorliegenden Erfindung verwendet die Größe des Zwischenspeicherbereichs (Zwischenspeichersegment), das zum Verwalten der Daten des Komprimierungs-VOL im Zwischenspeicher 26 verwendet wird, eine andere Größe als die Größe (4 kB) im Dekomprimierungs-VOL, so dass sich der Inhalt der Informationen, die in der Zwischenspeicherverwaltungsdatenstruktur gespeichert sind, etwas unterscheidet. Im Folgenden werden nur die wesentlichen Unterschiede beschrieben.
  • Im Komprimierungs-VOL wird die exklusive Steuerung pro Slot durchgeführt, ähnlich dem Dekomprimierungs-VOL, und ein oder mehrere Zwischenspeichersegmente werden dem Slot zugeordnet. Die Größe des Zwischenspeichersegments, das zum Verwalten der Zwischenspeicherdaten des Komprimierungs-VOL verwendet wird, ist jedoch ein Sektor (512 Bytes; wobei es sich um die komprimierte Größe handelt), und die Slotgröße ist 16 kB. Aus diesem Grund ist die Anzahl der Zwischenspeichersegmente, die einem Slot zugeordnet sind, 32, was sich vom Fall des Dekomprimierungs-VOL unterscheidet. Natürlich ist die vorliegende Erfindung auch effektiv, wenn die Slotgröße auf eine Größe eingestellt ist, die nicht 16 kB ist, oder wenn die Segmentgröße auf eine Größe eingestellt ist, die nicht ein Sektor ist.
  • Darüber hinaus wurde die Zwischenspeicherverwaltungsdatenstruktur (Zwischenspeicherverzeichnis, SLCT, SGCT, freie Warteschlange, Warteschlange mit noch nicht reflektierten Daten und Warteschlange mit bereits reflektierten Daten) zum Verwalten der Zwischenspeicherdaten des Dekomprimierungs-VOL unter Bezugnahme auf die 20 bis 23 beschrieben, grundsätzlich wird jedoch eine Zwischenspeicherverwaltungsdatenstruktur ähnlich der oben in Bezug auf die 20 bis 23 beschriebenen zum Verwalten der Zwischenspeicherdaten des Komprimierungs-VOL verwendet. Die folgenden Punkte sind die Unterschiede. Zunächst ist die maximale Anzahl von SGCT, die mit einer SLCT verbunden sind, bei der Zwischenspeicherverwaltung des Komprimierungs-VOL 32, da 32 Segmente einem Slot zugeordnet sind. Außerdem wird ein Wert zwischen 0 und 31 in der Segment-ID 120b in der SGCT gespeichert. Darüber hinaus wird die Adresse des LBA-1-Raums bei der Zwischenspeicherverwaltung des Komprimierungs-VOL verwendet, um die Zwischenspeichersegmentverwaltung durchzuführen. Aus diesem Grund wird eine Adresse des LBA-1-Raums in der Segmentadresse 120c in der SGCT 120 gespeichert. Darüber hinaus gibt es bei der Zwischenspeicherverwaltung des Dekomprimierungs-VOL eine Warteschlange mit noch nicht reflektierten Daten für einen Dekomprimierungs-VOL, bei der Zwischenspeicherverwaltung des Komprimierungs-VOL ist hingegen eine Warteschlange mit noch nicht reflektierten Daten für ein Endspeichermedium (SSD 11 oder HDD 12) definiert. Dies ist darauf zurückzuführen, dass die Auslagerungsverarbeitung von noch nicht reflektierten Daten in SSD-11- oder HDD-12-Einheiten durchgeführt wird.
  • Jedenfalls unterscheiden sich die Zwischenspeicherdatenverwaltungsstruktur des Dekomprimierungs-VOL und die Zwischenspeicherdatenverwaltungsstruktur des Komprimierungs-VOL nur etwas in Hinblick auf den Inhalt der Informationen, die in der SGCT 120 gespeichert werden, und die Anzahl der Warteschlange mit noch nicht reflektierten Daten, so dass die Datenstruktur zum Verwalten der Zwischenspeicherdaten des Komprimierungs-VOL die gleiche Struktur wie jene verwendet, die in den 20 bis 23 beschrieben ist.
  • Darüber hinaus besteht ein Unterschied zwischen dem Dekomprimierungs-VOL und dem Komprimierungs-VOL, dass sich der Inhalt oder die Typen von Daten, die in den Slots gespeichert werden, unterscheiden. In jedem Slot für den Dekomprimierungs-VOL werden nur die Schreibdaten aus dem Host-Computer 3 gespeichert, in den Slots für den Komprimierungs-VOL wird neben den komprimierten Daten in manchen Slots eine Parität gespeichert, die mit einer RAID-Technik aus einer Mehrzahl von Slots (Slots, die komprimierte Daten speichern) erzeugt wurde.
  • Im Folgenden wird die Datenschreibverarbeitung, die in der Speichervorrichtung 1 durchgeführt wird, unter Bezugnahme auf die 24, 25 und 26 beschrieben. In 24 ist ein Prozess zum Empfangen einer Schreibanfrage und Schreibdaten in Bezug auf den Dekomprimierungs-VOL 5000 vom Host-Computer 3 und zum Speichern der empfangenen Schreibdaten im Zwischenspeicher 26 beschrieben. Im Rahmen der Schreibverarbeitung von 24 wird ein Fall beschrieben, bei dem die Schreibadresse (LBA), die vom Host ausgewiesen wird, der 4-kB-Grenze entspricht und die Schreibdatengröße 4 kB ist.
  • Bei S1 empfängt die Speichervorrichtung 1 eine Schreibanfrage vom Host-Computer 3 über die Host-Schnittstelle 24. Die Schreibanfrage enthält Informationen zum Spezifizieren des Anschlusses der Speichervorrichtung 1 (Informationen zum Ableiten der Anschluss-Nr. 501 von 13), die LUN des Dekomprimierungs-VOL und die LBA des Dekomprimierungs-VOL. Der Prozessor 21 der Speichersteuereinheit 10 weist einen Pufferbereich zum vorübergehenden Speichern der Schreibdaten im DRAM 25 zu, empfängt die Schreibdaten vom Host-Computer 3 und speichert diese im Pufferbereich (S1).
  • Bei S2 spezifiziert der Prozessor 21 die VVOL-Nr. des Dekomprimierungs-VOL (Informationen, die der VVOL-Nr. 503 von 13 entsprechen) auf Basis der Informationen zum Spezifizieren des Anschluss und der LUN, die in der Schreibanfrage unter S1 enthalten sind, und der Dekomprimierungs-VOL-Verwaltungstabelle 500. Darüber hinaus wird die LBA in die Slot-ID umgewandelt. Danach wird auf Basis der spezifizierten VVOL-Nr. und des Zwischenspeicherverzeichnisses 100, das mit dem Dekomprimierungs-VOL assoziiert ist, der das aktuelle Schreibziel bildet, ausgewählt und der Slot, zu dem die aktuelle Zugriffsziel-LBA gehört, wird gesperrt (die SLCT 110, die dem Slot entspricht, zu dem die aktuelle Zugriffsziel-LBA gehört, wird gemäß dem Zwischenspeicherverzeichnis 100 durchsucht und Informationen mit ”gesperrt” werden im Slotstatus 110e der durchsuchten SLCT 110 gespeichert).
  • Bei S3 beurteilt der Prozessor 21, ob das Zwischenspeichersegment, das der LBA im Dekomprimierungs-VOL entspricht (wie von der Schreibanfrage ausgewiesen), bereits zugewiesen ist. Insbesondere wird eine Ermittlung durchgeführt, indem Bezug auf einen SGCT-Zeiger 110f innerhalb der SLCT 110 mit der Slot-ID 110d genommen wird, die durch die unter S2 durchgeführte Umwandlung erhalten wurde. Wenn der SGCT-Zeiger 110f ein ungültiger Wert ist (z. B. NULL), wird ermittelt, dass das Zwischenspeichersegment nicht zugewiesen ist. Wenn der SGCT-Zeiger 110f einen gültigen Wert enthält, wird ermittelt, dass zumindest ein Zwischenspeichersegment zugewiesen ist, so dass bestätigt wird, ob das Zwischenspeichersegment der Position innerhalb des Slots zugeordnet ist, die von der relativen Adresse innerhalb des Slots spezifiziert ist, gemäß dem SGCT-Zeiger 110f. Insbesondere kann bestätigt werden, dass ein Zwischenspeichersegment zugewiesen ist, indem bestätigt wird, ob eine SGCT 120 mit der gleichen Segment-ID 120b vorhanden ist, die als Ergebnis von ”relative Adresse innerhalb des Slots durch 8” (ganze Zahl) erhalten wurde (durch Berechnen der relativen Adresse innerhalb eines Slots geteilt durch 8 kann eine ganze Zahl zwischen 0 und 3 erhalten werden, so dass erkannt werden kann, welche Segment-ID von 0 bis 3 dem Zwischenspeichersegment zugewiesen ist, dem die relative Adresse innerhalb des Slots entspricht). Wenn das Zwischenspeichersegment bereits zugewiesen ist (Schritt S3: Ja), geht der Prozess 21 in der Folge im Prozess zu Schritt S5 über. Wenn das Zwischenspeichersegment nicht zugewiesen ist (Schritt S3: Nein), führt er hingegen einen Segmentzuweisungsprozess (Schritt S4) durch und geht zu Schritt S4 über. Beim Segmentzuweisungsprozess von Schritt S4 wird ein ungenutztes Zwischenspeichersegment durch Erfassen der SGCT 120 zugewiesen, die mit dem Kopfende der freien Warteschlange 200 verbunden ist. Wenn kein ungenutztes Zwischenspeichersegment vorliegt, d. h., wenn keine SGCT 120 mit der freien Warteschlange 200 verbunden ist, wird darüber hinaus die SGCT 120 erfasst, die mit der SLCT 110 verbunden ist, die mit der Warteschlange mit bereits reflektierten Daten verbunden ist.
  • Bei S5 und S6 wird ein Datentransfer aus dem Pufferbereich in das zugewiesene Zwischenspeichersegment durchgeführt. Der Prozessor 21 erfasst die Adresse des Zwischenspeichersegments (Adresse des LBA-0-Raums, wie in der Segmentadresse 120c der SGCT 120 gespeichert, die dem zugewiesenen Segment entspricht) als Transferzieladresse (S5). Danach erzeugt er einen Datentransfer-(Schreib-)Befehl, der die Adresse des Pufferbereichs als Transferquelladresse und die unter S5 erfasste Adresse als Transferzieladresse ausweist, und weist einen Datentransfer durch Senden des Schreibbefehls an den Zwischenspeicher 26 an. Nach Senden des Schreibbefehls an den Zwischenspeicher 26 wartet er, bis eine Meldung über den Abschluss des Prozesses vom Zwischenspeicher 26 eingeht.
  • Wenn eine Meldung über den Abschluss des Prozesses vom Zwischenspeicher 26 erhalten wird, wird die Bitmap 120e mit noch nicht reflektierten Daten der SGCT 120, die dem Schreibzielzwischenspeichersegment entspricht, auf ”ON” gesetzt, um aufzuzeichnen, dass das Schreibzielzwischenspeichersegment in einen Status mit noch nicht reflektierten Daten gesetzt wurde, und die SLCT 110 des Slots, zu dem das Schreibzielzwischenspeichersegment gehört, wird mit der Warteschlange mit noch nicht reflektierten Daten verbunden (S7). Da die Größeninformationen nach Komprimieren der Daten, die in den Zwischenspeicher 26 geschrieben wurden, in der Meldung über den Abschluss der Schreibbefehlverarbeitungen enthalten ist, die vom Zwischenspeicher 26 empfangen wird, werden darüber hinaus die empfangenen Größeninformationen in der Menge 120f von nicht reflektierten Daten der SGCT 120 gespeichert und die relevanten Größeninformationen, die vom Zwischenspeicher 26 empfangen werden, werden zur Menge 110f von nicht reflektierten Daten der SLCT 110 hinzugefügt. Wenn die Menge an Schreibdaten, die der Schreibanfrage vom Host-Computer 3 unterliegen, nicht 4 kB ist, d. h. eine Größe von mehr als 4 kB, können im Übrigen die Informationen zur Datenmenge (nach Komprimierung) jedes Zwischenspeichersegments nur durch die Meldung über den Abschluss des Schreibbefehlprozesses erhalten werden, die vom Zwischenspeicher 26 empfangen wird, so dass ein Befehl 1110 zur Erfassung der komprimierten Datengröße ausgegeben wird, die Informationen zur komprimierten Datenmenge pro Zwischenspeichersegment werden erfasst und die Informationen zur komprimierten Datenmenge wird in der Menge 120f von nicht reflektierten Daten der SGCT 120 und der Menge 110f von nicht reflektierten Daten der SLCT 110 reflektiert. Danach wird die Sperre des Zwischenspeicherslots aufgehoben (S8), eine Meldung über den Abschluss der Schreibverarbeitung wird an den Host-Computer 3 gesendet und der Prozess wird beendet.
  • Nach Beendigung von S8 kann die Datentransferverarbeitung (Datenmigrationsverarbeitung) auf den Komprimierungs-VOL von S9 durchgeführt werden, dieser Prozess ist nicht unbedingt erforderlich, und die Datentransferverarbeitung auf den Komprimierungs-VOL wird durchgeführt, wenn der Status des Zwischenspeichers 26 eine vorab festgelegte Bedingung erfüllt. Dieser Prozess ist im Folgenden beschrieben.
  • Im Folgenden wird unter Bezugnahme auf 25 die Datentransferverarbeitung auf den Komprimierungs-VOL unter Bezugnahme auf 25 beschrieben. Die Datentransferverarbeitung ist eine Verarbeitung, die S9 von 24 entspricht, d. h. eine Verarbeitung, die direkt nach der Datenschreibverarbeitung aus dem Host-Computer 3 durchgeführt wird, die zeitliche Planung für die Datentransferverarbeitung auf den Komprimierungs-VOL ist jedoch nicht auf direkt nach der Datenschreibverarbeitung beschränkt. Beispielsweise kann die Verarbeitung auch durchgeführt werden, wenn der Status des Zwischenspeichers 26 ein bestimmte Bedingung erfüllt, indem der Status des Zwischenspeichers 26 periodisch überwacht wird. Darüber hinaus wird die Datentransferverarbeitung auf den Komprimierungs-VOL pro Dekomprimierungs-VOL durchgeführt.
  • In S1 ermittelt der Prozessor 21, ob eine bestimmte Bedingung erfüllt ist. Bei einem Beispiel, das sich auf einen gewissen Dekomprimierungs-VOL bezieht, wird die Menge 110f von nicht reflektierten Daten, die in der SLCT 110 von jedem Slot enthalten ist, der mit dem Zwischenspeicherverzeichnis 100 des relevanten Dekomprimierungs-VOL verbunden ist, (oder die Menge 120f von nicht reflektierten Daten der SGCT 120) geprüft, um zu ermitteln, ob die Menge von nicht reflektierten Daten, die im Zwischenspeicher 26 gespeichert wurde, die Menge überschritten hat, die für das Erzeugen einer RAID-Parität erforderlich ist. Hier ist die Menge, die zum Erzeugen einer RAID-Parität erforderlich ist, wie zuvor erwähnt, größer gleich der Menge von Daten wie der Satz von Slots, die die Streifengruppe darstellen. Nimmt man die RAID-Konfiguration von 16 als Beispiel heran, wird ermittelt, dass eine Parität erzeugt werden kann, wenn eine Menge, die drei Slots innerhalb eines Dekomprimierungs-VOL entspricht, d. h. eine Menge von nicht reflektierten Daten von 16 kB × 3 = 48 kB im Zwischenspeicher 26 vorliegt. Wenn diese Bedingung erfüllt ist (S21: Ja), geht das Verfahren zu S22 über, wenn diese Bedingung nicht erfüllt ist (S21: Nein), geht das Verfahren zu S31 über.
  • In S22 wird ein Slot als Ziel der Transferverarbeitung ausgewählt und der ausgewählte Slot wird gesperrt. Es können diverse Verfahren angewandt werden, um einen Slot auszuwählen. Beispielsweise wird auf die Menge 110f von nicht reflektierten Daten jeder SLCT 110, die mit der Warteschlange von nicht reflektierten Daten verbunden ist, Bezug genommen und Slots (SLCTs) werden sequentiell aus jenen ausgewählt, die größere Mengen 110f von nicht reflektierten Daten aufweisen, bis die Gesamtmenge 110f von nicht reflektierten Daten der ausgewählten Slots (SLCTs) eine vorab festgelegte Menge (48 kB oder Vielfache von 48 kB) erreicht. Die Slots können beispielsweise auch auf Basis des LRU-(Least Recently Used)-Algorithmus ausgewählt werden. Bei der folgenden Beschreibung wird davon ausgegangen, dass Slots ausgewählt werden, so dass die Gesamtmenge von nicht reflektierten Daten (von komprimierten Daten) gleich einer Streifengruppe (48 kB) im Prozess von S22 wird, die vorliegende Erfindung ist jedoch nicht darauf beschränkt. Unter den SLCTs 110 der hier ausgewählten Slots und der SGCT 120, die mit der SLCT 110 verbunden ist, wird durch Bezugnahme auf den Inhalt der SGCT 120, deren Bitmap von nicht reflektierten Daten auf ”ON” gesetzt ist, gleichzeitig die Segmentadresse 120c (d. h. die LBA 0 des Zwischenspeichers 26) des Zwischenspeichersegments, das das Ziel der Transferverarbeitung bildet, spezifiziert. Darüber hinaus wird auf Basis der Slot-ID 110d der SLCT, die dem Zwischenspeichersegment entspricht, das das Ziel der Durchführung einer Transferverarbeitung bildet, und der Segment-ID 120b der SGCT 120 die LBA des Bereichs des Dekomprimierungs-VOL berechnet, der dem Zwischenspeichersegment entspricht, das das Ziel der Transferverarbeitung bildet.
  • In S23 wird danach eine Plattenbereichszuweisung des Komprimierungs-VOL durchgeführt. Zunächst werden unter Bezugnahme auf die Datenträgerzuordnungstabelle 600 ein Komprimierungs-VOL 602, der einem Dekomprimierungs-VOL 601 entspricht, der das aktuelle Verarbeitungsziel bildet, und die letzte Schreibposition 603 ausgewählt. Danach wird ein Bereich, der einer Streifengruppe aus der LBA nach der letzten Schreibposition 603 des Komprimierungs-VOL 602 ausgewählt. Danach wird die Position des Komprimierungs-VOL, der die jeweiligen Bereiche (Bereiche, in denen noch nicht reflektierte Daten innerhalb des in S22 ausgewählten Slots gespeichert sind) des aktuellen Verarbeitungsziel-Dekomprimierungs-VOL zugeordnet werden sollte, ermittelt und der ermittelte Inhalt wird in der Adresszuordnungstabelle 650 gespeichert.
  • In S24 werden die Slots, die einer Streifengruppe entsprechen, wie in S23 ausgewählt, und der Paritätsslot, der dieser Streifengruppe entspricht, gesperrt und Segmente werden jedem Slot zugeordnet. Dieser Prozess ähnelt S3. Mit diesem Prozess werden Zwischenspeichersegmente (oder Adressen davon, anders ausgedrückt LBA 1), die dem Datenslot und dem Paritätsslot entsprechen, der der Streifengruppe entspricht, wie in S23 ausgewählt, ermittelt.
  • In S25 wird ein Datentransfer durchgeführt, d. h., die Adresse (LBA 0) im Zwischenspeicher 26 der noch nicht reflektieren Daten im Dekomprimierungs-VOL, wie in S22 ausgewählt, wird der Adresse (LBA 1) im Zwischenspeicher 26 zugeordnet, die dem Bereich der Streifengruppe im Komprimierungs-VOL entspricht, wie in S24 ermittelt. Da die LBA des Komprimierungs-VOL, der die LBA jedes Bereichs im Dekomprimierungs-VOL zugeordnet werden sollte, im Prozess von S23 ermittelt wird, wird eine Zuordnung auf Basis des Verarbeitungsergebnisses von S23 durchgeführt. Der Prozessor 21 gibt einen oder mehrere LBA-1-Zuordnungsbefehle an den Zwischenspeicher 26 aus und ordnet die eine oder mehreren Adressen (LBA 0) im Zwischenspeicher 26 der noch nicht reflektierten Daten im Dekomprimierungs-VOL zu der einen oder den mehreren Adressen (LBA 1) im Zwischenspeicher 26 zu, die dem Bereich einer Streifengruppe des Komprimierungs-VOL entsprechen. Nach Ausgabe des LBA-1-Zuordnungsbefehls wartet der Prozessor 21 auf eine Antwort vom Zwischenspeicher 26, dass die Verarbeitung abgeschlossen wurde.
  • Wenn das Verfahren vom Zwischenspeicher 26 die Antwort empfängt, dass die Verarbeitung abgeschlossen wurde, geht es zu S26 über und setzt das Zwischenspeichersegment, das dem Slot des Komprimierungs-VOL zugeordnet ist, wie in S24 zugewiesen, in einen Status mit noch nicht reflektierten Daten. Insbesondere wird ein Bit 120e mit noch nicht reflektierten Daten der SGCT 120, das jedem Zwischenspeichersegment entspricht, auf ”ON” gesetzt und die SLCT 110 wird mit der Warteschlange mit noch nicht reflektierten Daten verbunden. Da die Warteschlange mit noch nicht reflektierten Daten des Komprimierungs-VOL in jedem Endspeichermedium vorhanden ist, wird das Endspeichermedium, dem der Slot zugeordnet ist, der der SLCT 110 entspricht, bei Verbinden des SLCT 110 mit der Warteschlange mit noch nicht reflektierten Daten spezifiziert. Wie beispielsweise in 16 gezeigt, ist jeder Slot des Komprimierungs-VOL statisch einer vorab festgelegten Position eines beliebigen der Endspeichermedium der RAID-Gruppe zugeordnet, die dem Komprimierungs-VOL zugeordnet ist, und durch Berechnen der Umwandlung der logischen Datenträgeradresse und der Adresse der physischen Platte (wobei das SSD 11 oder HDD 12 das Endspeichermedium ist), die in einer herkömmlichen Speichervorrichtung durchgeführt wird, kann das Endspeichermedium, dem jeder Slot der Komprimierungs-VOL zugeordnet ist, auf einfache Weise spezifiziert werden. Danach wird die SLCT 110 mit der Warteschlange mit noch nicht reflektierten Daten verbunden, die dem spezifizierten Endspeichermedium entspricht.
  • Danach wird in S27 das Zwischensegment auf der Seite des Dekomprimierungs-VOL aufgehoben. Bei diesem Prozess wird das Bit 120e mit noch nicht reflektierten Daten der SGCT, das jedem Zwischenspeichersegment entspricht, auf der Seite des Dekomprimierungs-VOL auf ”OFF” gesetzt und die SGCT 120 wird von der SLCT 110 getrennt. Danach wird ein Zuordnungsfreigabefehl, der die Segmentadresse 120c der SGCT 120 ausweist, die von der SLCT 110 getrennt wurde, an den Zwischenspeicher 26 ausgegeben und die Zuordnung zwischen LBA 0 und PBA wird im Zwischenspeicher 26 freigegeben. Danach wird die SGCT 120 erneut mit einer freien Warteschlange 201 verbunden.
  • In S28 wird eine Paritätserzeugung des Komprimierungs-VOL durchgeführt. Der Prozessor 21 gibt einen Befehl zur Erzeugung einer Full-Strip-Parität an den Zwischenspeicher 26 aus, der die Segmentadresse (LBA 1) des Zwischenspeichersegments, das dem Datenslot in S24 zugeordnet wurde, und die Zwischenspeichersegmentadresse (LBA 1) ausweist, die dem Paritätsslot zugewiesen wurde. Der Zwischenspeicher 26, der diesen Befehl empfangen hat, erzeugt eine Parität zu dem Zwischenspeichersegment, das dem Paritätsslot zugewiesen ist. Nach abgeschlossener Paritätserzeugung sendet der Zwischenspeicher 26 eine Meldung über die abgeschlossene Verarbeitung an den Prozessor 21. Bei Empfang dieser Meldung über die abgeschlossene Verarbeitung setzt der Prozessor 21 das Zwischenspeichersegment des Paritätsslots in einen Status mit noch nicht reflektierten Daten. Dieser Prozess ähnelt S26.
  • In S29 wird die Sperre der Slots des Komprimierungs-VOL und des Dekomprimierungs-VOL aufgehoben. Darüber hinaus wird die letzte Schreibposition 603 der Datenträgerzuordnungstabelle 600 aktualisiert. Beispielsweise wenn Daten, die einer Streifengruppe entsprechen, bei der Verarbeitung von S22 bis S28 an den Komprimierungs-VOL übertragen werden, wird die Anzahl von Sektoren, die der Größe der Slots entsprechen, die eine Streifengruppe konfigurieren, und des Paritätsslots, der der Streifengruppe entspricht (wenn ein Slot bei einer 3D + 1-RAID-Konfiguration 16 kB ist, ist die Anzahl von Sektoren 64 kB, d. h. 128 Sektoren) zu den Informationen in der letzten Schreibposition 603 hinzugefügt.
  • In S31 wird ermittelt, ob die Transferverarbeitung (S21 bis S29) für alle Dekomprimierungs-VOLs durchgeführt wurde, und wenn die Transferverarbeitung für alle Dekomprimierungs-VOLs durchgeführt wurde (S31: Ja), wird die Verarbeitung abgeschlossen, wenn jedoch ein Dekomprimierungs-VOL übrigbleit, der noch keiner Transferverarbeitung unterzogen wurde (S31: Ja), kehrt der Prozess zu S21 zurück, um die Prozesse von S21 bis S29 für die restlichen Dekomprimierungs-VOLs durchzuführen.
  • Als weitere Ausführungsform können Bedingungen, bei denen es sich nicht um das oben beschriebene Beispiel handelt, als die bestimmte Bedingung von S21 verwendet werden. Beispielsweise kann eine Bedingung so festgelegt werden, dass, wenn ermittelt wird, dass eine Anfrage zum zusammenhängenden Schreiben von Daten mit einer bestimmten Größe oder größer sukzessive in den Dekomprimierungs-VOL vom Host-Computer 3 eingegangen ist (d. h., wenn ein sequentieller Schreibvorgang die Anfrage ist), wird die Datentransferverarbeitung auf den Komprimierungs-VOL durchgeführt, wenn Daten in das Zwischenspeichersegment geschrieben werden, das sich am Ende des Slots des Dekomprimierungs-VOL befindet.
  • Darüber hinaus ist es erforderlich, die noch nicht reflektierten Daten des Komprimierungs-VOL auszulagern, was zu einem beliebigen Zeitpunkt durchgeführt werden kann. Beispielsweise kann der Prozess durchgeführt werden, wenn die Nutzung des Zwischenspeichers 26 einen bestimmten Schwellenwert überschreitet, oder er kann periodisch durchgeführt werden (z. B. einmal alle zehn Minuten). Die Auslagerungsverarbeitung selbst ähnelt der Verarbeitung, die in einer herkömmlichen Speichervorrichtung durchgeführt wird, so dass diese unter Bezugnahme auf 26 lediglich umrissen wird.
  • Zunächst wählt der Prozessor 21 in S31 eine Warteschlange mit noch nicht reflektierten Daten aus den Warteschlangen mit noch nicht reflektierten Daten aus, die für jedes Endspeichermedium bereitgestellt sind. Danach ermittelt der Prozessor 21 in S32, ob ein Slot (SLCT 110) mit der in S31 ausgewählten Warteschlange mit noch nicht reflektierten Daten verbunden ist. Wenn kein Slot verbunden ist, geht das Verfahren zu S37 über, wenn ein Slot verbunden ist, geht es jedoch zu S33 über.
  • In S33 wählt der Prozessor 21 einen Slot aus, der mit der Warteschlange mit noch nicht reflektierten Daten verbunden ist, als aktuellen Auslagerungszielslot aus und sperrt den relevanten Slot. Wenn eine Mehrzahl von Slots mit der Warteschlange mit noch nicht reflektierten Daten verbunden ist, können hinlänglich bekannte Techniken als Verfahren zum Auswählen des Slots und zum Ermitteln der Anzahl von auszuwählenden Slots verwendet werden, für eine einfachere Beschreibung wird jedoch angenommen, dass eine SLCT 110, die vom LRU-Terminal 160 ausgewiesen wird, ausgewählt wird. Natürlich können Verfahren angewandt werden, z. B. das Auswählen einer bestimmten Anzahl (fixen Anzahl) von Slots, die mit der Warteschlange mit noch nicht reflektierten Daten verbunden sind, das Auswählen einer Mehrzahl von Slots, die (im Endspeichermedium) dem Slot der SLCT 110 benachbart sind, die vom LRU-Terminal 160 ausgewiesen wird, oder ein Verfahren zum Auswählen aller Slots, die mit der Warteschlange mit noch nicht reflektierten Daten verbunden sind.
  • In S34 wandelt der Prozessor 21 die Slot-ID 110d des Auslagerungszielslots, d. h. des in S33 ausgewählten Slots (SLCT 110), in eine Adresse des Endspeichermediums um. Diese Adressumwandlung ist auf dem Gebiet hinlänglich bekannt, wie zuvor erwähnt, so dass auf eine Beschreibung des Umwandlungsverfahrens verzichtet wird.
  • In S35 schreibt der Prozessor 21 Daten, die im Zwischenspeichersegment gespeichert sind, das zum Auslagerungszielslot (SLCT 110) gehört, in das Endspeichermedium. Zunächst weist der Prozessor 21 einen Bereich im DRAM 25 als Pufferbereich zu und liest unter Verwendung des zuvor beschriebenen Lesebefehls des Zwischenspeichers 26 Daten aus dem Zwischenspeicher 26 in den Pufferbereich. Danach werden die in den Pufferbereich gelesenen Daten in die Adresse des Endspeichermediums (SSD 11 oder HDD 12) geschrieben, die in der Umwandlungsverarbeitung von S34 berechnet wurde. Als weitere Ausführungsform ist es möglich, dass die LBA-1-Adresse des Zwischenspeichers 26 direkt als Schreibquelldatenadresse im Schreibbefehl (SCSI-Schreibbefehl) ausgewiesen wird, der an das Endspeichermedium (SSD 11 oder HDD 12) ausgegeben wird, und in diesem Fall ist es nicht erforderlich, die Daten vorübergehend aus dem Zwischenspeicher 26 in den DRAM 25 zu lesen.
  • In S36 wird der Auslagerungszielslot mit der Warteschlange mit bereits reflektierten Daten verbunden und die Sperre des Slots wird aufgehoben. Gleichzeitig wird die Menge 110f von noch nicht reflektierten Daten des Auslagerungszielslots (SLCT 110) auf 0 gesetzt und was alle SGCTs 120, die mit der relevanten SLCT 110 verbunden sind, so wird die Bitmap 120e mit noch nicht reflektierten Daten auf ”OFF” gesetzt, wird die Zwischenspeicherungsbitmap 120d auf ”ON” gesetzt und wird die Menge 120f von noch nicht reflektierten Daten auf 0 gesetzt.
  • Danach wird ermittelt (S37), ob eine nicht verarbeitete Warteschlange mit noch nicht reflektierten Daten vorhanden ist, und wenn eine nicht verarbeitete Warteschlange mit noch nicht reflektierten Daten übrigbleibt (S37: Ja), kehrt das Verfahren zu S31 zurück. Wenn die Prozesse von S31 bis S36 für alle Warteschlangen mit noch nicht reflektierten Daten durchgeführt wurden, wird die Auslagerungsverarbeitung beendet.
  • Das Vorstehende ist die Datenschreibverarbeitung, die von der Speichervorrichtung 1 gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung durchgeführt wird. Wie anhand dieses Prozessablaufs ersichtlich, werden alle Daten, die vom Host-Computer 3 in den Dekomprimierungs-VOL geschrieben werden, an den Komprimierungs-VOL angehängt. Aus diesem Grund bleiben die Daten vor Aktualisierung, die in den Komprimierungs-VOL geschrieben werden, im Komprimierungs-VOL zurück, auch wenn der Host-Computer 3 auf diese nicht erneut zugreift. Da neue Daten nicht in den Bereich geschrieben werden können, in dem Daten vor Aktualisierung gespeichert werden, wird nur ein bedeutungsloser Teil des Speicherbereichs im Komprimierungs-VOL eingenommen. Um dieses Problem zu lösen, ist es erforderlich, einen Prozess durchzuführen, um Daten, auf die nicht zugegriffen wird, periodisch aus dem Komprimierungs-VOL zu löschen und nur Daten, auf die zugegriffen wird, zurückzulassen (insbesondere nur den Bereich im Komprimierungs-VOL zurückzulassen, der der LBA des Dekomprimierungs-VOL zugeordnet ist, die von der Adresszuordnungstabelle 650 verwaltet wird), wobei es sich um eine sogenannte automatische Speicherbereinigung handelt. Dieser Prozess kann erzielt werden, indem ein Prozess in einem Speichermedium angewandt wird, das beim Schreiben von Daten einen Anhängungsprozess durchführt, z. B. Flash-Speicher und dergleichen.
  • Im Folgenden wird unter Bezugnahme auf die 27 und 28 der Ablauf des Prozesses beschrieben, der durchgeführt wird, wenn eine Leseanfrage an einen Datenträger (Dekomprimierungs-VOL) vom Host-Computer 3 empfangen wurde. In der folgenden Beschreibung ist ein Beispiel veranschaulicht, wobei der Zugriffsadressbereich (Kopfadresse und Endadresse) des Datenträgers, wie von der Leseanfrage ausgewiesen, der 4-kB-Grenze entspricht. Darüber hinaus wird eine Lesedatenlänge von 4 kB angenommen.
  • In S51 empfängt die Speichersteuereinheit 10 eine Leseanfrage(-befehl) vom Host-Computer 3. Die Leseanfrage enthält Informationen zum Spezifizieren eines Anschlusses der Speichervorrichtung 1 (Informationen, mit denen die Anschluss-Nr. 501 von 13 abgeleitet werden können), die LUN des Dekomprimierungs-VOL, die LBA des Dekomprimierungs-VOL und die Lesedatenlänge.
  • In S52 wird ein Prozess ähnlich S2 in 24 durchgeführt. Auf Basis der Informationen zum Spezifizieren des Anschlusses, die in S51 erhalten wurden, und der LUN und der Dekomprimierungs-VOL-Verwaltungstabelle 500 wird die VVOL-Nr. des Dekomprimierungs-VOL (Informationen, die der VVOL-Nr. 503 in 13 entsprechen) spezifiziert. Darüber hinaus wird die LBA in eine Slot-ID umgewandelt. Danach wird das Zwischenspeicherverzeichnis 100, das dem aktuellen Leseziel-Dekomprimierungs-VOL zugeordnet ist, auf Basis der spezifizierten VVOL-Nr. ausgewählt, und der Slot, zu dem die aktuelle Zugriffsziel-LBA gehört, wird gesperrt.
  • In S53 ermittelt der Prozessor 21, ob ein Zwischenspeichersegment, das der LBA des Dekomprimierungs-VOL entspricht, bereits zugewiesen wurde. Dieses Ermitteln ist ein Prozess ähnlich der Schreibverarbeitung von S3. Wenn ein Segment nicht zugewiesen ist, geht das Verfahren zu S54 über und führt eine Segmentzuweisung in S54 durch. Der Prozess von S54 ähnelt S4.
  • In S55 wird die LBA des Komprimierungs-VOL, die der Leseziel-LBA des Dekomprimierungs-VOL entspricht, durch Bezugnahme auf die Adressverwaltungstabelle 650 identifiziert. Danach wird die spezifizierte LBA in eine Slot-ID umgewandelt, die SLCT 110 des Slots, der der LBA des Komprimierungs-VOL entspricht, wird ermittelt, indem einem Verzeichniseintrag 100 des Komprimierungs-VOL gefolgt wird, und der Slot wird gesperrt.
  • In S56 ermittelt der Prozessor 21, ob das Zwischenspeichersegment, das der LBA des Komprimierungs-VOL entspricht, bereits zugewiesen wurde, und wenn das Zwischenspeichersegment nicht zugewiesen ist, führt er eine Segmentzuweisung (S57) durch. Dieser Prozess ähnelt S53 und S54. Wenn ein Zwischenspeichersegment bereits zugewiesen wurde, geht der Prozess zu S61 über.
  • In S58 wird die LBA des Komprimierungs-VOL in die Adresse des Endspeichermediums (SSD 11 oder HDD 12) umgewandelt. Da die jeweiligen Bereiche (Sektoren) im Komprimierungs-VOL den Sektoren im Endspeichermedium auf Basis einer bestimmten Regel zugeordnet werden, kann die Position des Endspeichermediums, dem jeder Speicherbereich im Komprimierungs-VOL zugeordnet wird, unter Verwendung der LBA des Komprimierungs-VOL berechnet werden. Da dieser Prozess dem Prozess ähnelt, den eine herkömmliche Speichervorrichtung, die Daten unter Verwendung der RAID-Technik speichert, beim Lesen oder Schreiben von Daten durchführt, wird auf eine ausführliche Beschreibung verzichtet.
  • In S59 weist der Prozessor 21 einen Bereich zum vorübergehenden Speichern der gelesenen Daten im DRAM 25 zu. Danach liest er die komprimierten Daten durch Ausgeben eines Lesebefehls, der die Adresse des Endspeichermediums ausweist, die in S58 berechnet wurde, an das Endspeichermedium (SSD 11 oder HDD 12) ausgibt, und überträgt diese an den DRAM 25.
  • Wenn in S53 ermittelt wird, dass ein Segment bereits zugewiesen wurde, wird auf die Segmentadresse 120c (in der LBA 0 gespeichert ist) im SGCT 120 des Zwischenspeicherelements das der LBA im Komprimierungs-VOL entspricht, Bezug genommen und die LBA 0 wird erfasst.
  • Wenn ermittelt wird, dass ein Segment in S56 bereits zugewiesen wurde, werden in S61 auf die Zwischenspeicherungsbitmap 120d und die Bitmap 120e mit noch nicht reflektierten Daten der SGCT 120, die dem relevanten Segment entspricht, Bezug genommen und es wird beurteilt, ob beliebige der Bits auf ”ON” gesetzt sind. Wenn beliebige der Bits auf ”ON” gesetzt sind (S61: Ja), geht das Verfahren zu S63 über, wenn jedoch alle Bits auf ”OFF” gesetzt sind (S61: Nein), geht das Verfahren zu S58 über.
  • Um die Daten, die in S59 auf den DRAM 25 übertragen wurden, auf den Zwischenspeicher 26 zu übertragen, führt der Prozessor 21 in S62 einen Datentransfer auf den Zwischenspeicher 26 durch, indem er einen Datentransferbefehl, der die Adresse des DRAM 25 als Transferquelladresse und die Segmentadresse des Zwischenspeichers 26 als Transferzieladresse ausweist, an den Zwischenspeicher 26 ausgibt. Was die Informationen zur Transferzieladresse im Zwischenspeicher 26 betrifft, ist, da die LBA 1 in der Segmentadresse 120c der SGCT 120 gespeichert wird, die dem in S57 zugewiesenen Zwischenspeichersegment entspricht (wenn in S56 ermittelt wird, dass ein Segment bereits zugewiesen wurde, das bereits zugewiesene Segment), diese Adresse die Transferzieladresse. Als anderes Beispiel für S59 und S62 ist es möglich, die Lesedaten aus dem Endspeichermedium direkt in den Bereich zu lesen, der von der LBA-1-Adresse des Zwischenspeichers 26 ausgewiesen wird, ohne dass der DRAM 25 passiert wird.
  • In S63 wird ein Prozess zum Zuordnen der Adresse im LBA-0-Adressraum zum Bereich im Zwischenspeicher, in dem Daten in S62 gespeichert wurden, durchgeführt, um zu ermöglichen, dass die im Zwischenspeicher 26 gespeicherten komprimierten Daten als unkomprimierte Date (dekomprimierte Daten) an den Host-Computer 3 übertragen werden. Der Prozessor 21 gibt einen LBA-0-Zuordnungsbefehl an den Zwischenspeicher 26 aus und ordnet die LBA 1, die die komprimierten Daten im Zwischenspeicher 26 speichert (Segmentadresse 120s der SGCT 120, die in S62 verwendet wurde), einer Segmentadresse (LBA 0) des Zwischenspeichersegments zu, wie in S54 zugewiesen.
  • In S64 liest der Prozessor 21 dekomprimierte Daten aus dem Zwischenspeicher 26 aus, indem er einen Lesebefehl, der die LBA 0, die der LBA 1 in S62 zugeordnet wurde, oder die LBA 0, die in S60 erfasst wurde, ausweist, an den Zwischenspeicher ausgibt und diese an den Host-Computer 3 überträgt.
  • Zuletzt wird in S65 die Sperre der Slots des Dekomprimierungs-VOL und des Komprimierungs-VOL aufgehoben, davor jedoch wird bestätigt, ob die SLCT 110 des Dekomprimierungs-VOL (die SLCT 110 des Slot, wie in S52 zugewiesen) und die SLCT 110 des Komprimierungs-VOL (die LSCT 110 des Slot, wie in S55 zugewiesen) mit der Warteschlange mit bereits reflektierten Daten verbunden sind, und wenn sie nicht mit der Warteschlange mit bereits reflektierten Daten verbunden sind, werden sie mit der Warteschlange mit bereits reflektierten Daten verbunden. Danach wird die Zwischenspeicherungsbitmap 120d der SGCT 120, die mit jeder SLCT 110 verbunden ist, auf ”ON” gesetzt. Danach wird die Sperre jedes Slots aufgehoben (der Wert des Slotstatus 110e wird auf 0 gesetzt) und die Leserverarbeitung wird beendet.
  • Im Obigen ist ein Beispiel eines Falles beschrieben, bei dem der Zugriffsadressbereich des Datenträgers, der von der Leseanfrage ausgewiesen wird, der 4-kB-Grenze entspricht, wenn der Zugriffsadressbereich jedoch nicht der 4-kB-Grenze entspricht, z. B. wenn eine Datenleseanfrage mit einer Größe von weniger als 4 kB eingeht, sollten die Daten im 4-kB-Bereich (im unkomprimierten Zustand) aus dem Endspeichermedium gelesen und im Zwischenspeicher 26 gespeichert werden und nur die Daten innerhalb des Bereichs, der vom Host-Computer 3 angefragt wurde, sollte ausgewählt und an den Host-Computer 3 übertragen werden. Darüber hinaus ist ein Beispiel beschrieben, bei dem der Zugriffsadressbereich des Datenträgers, der von der Schreibanfrage ausgewiesen wird, der 4-kB-Grenze entspricht, wenn der Zugriffsadressbereich der Schreibanfrage jedoch nicht der 4-kB-Grenze entspricht, z. B. wenn eine Datenschreibanfrage mit einer Größe von weniger als 4 kB eingeht, sollten die Daten im 4-kB-Bereich (im unkomprimierten Zustand), einschließlich der relevanten Schreibzugriffsadresse, aus vorübergehend dem Endspeichermedium in den Zwischenspeicher 26 gelesen werden und die Schreibdaten sollten auf die Lesedaten im Zwischenspeicher 26 überschrieben werden. In diesem Fall, wenn das Speichermedium, das den Zwischenspeicher 26 darstellt, ein Flash-Speicher ist, kann kein Überschreiben durchgeführt werden, ein Überschreiben der Daten im Zwischenspeicher 26 kann anscheinend durch Durchführen einer Überschreibverarbeitung erzielt werden, die bei hinlänglich bekannten Flash-Speichern verwendet wird, d. h. ein Zusammenführen der aus dem Endspeichermedium gelesenen Daten und der Schreibdaten auf einem Puffer 416 und ein Durchführen eines Prozesses zum Schreiben dieser auf eine unbeschriebene (Flash-Speicher-)Seite, so dass hier auf eine ausführliche Beschreibung dieses Prozesses verzichtet wird.
  • <Modifiziertes Beispiel 1>
  • Bei der bevorzugten Ausführungsform, die oben beschrieben ist, wurde eine Konfiguration veranschaulicht, bei der der Komprimierungs-VOL statisch einer RAID-Gruppe zugeordnet ist und das Verhältnis zwischen der Komprimierungs-VOL-Adresse und der Adresse von jeweiligen Speichermedium, die die RAID-Gruppe konfigurieren, ist ebenfalls statisch. Der Komprimierungs-VOL der vorliegenden Erfindung kann jedoch auch diverse Datenträger verwendet, die bei einer herkömmlichen Speichervorrichtung bereitgestellt werden. Im Folgenden wird als Beispiel ein Beispiel beschrieben, bei dem ein virtueller Datenträger, der unter Verwendung einer sogenannten Technik der schlanken Speicherzuweisung erzeugt wurde, wie z. B. in der US-Patentanmeldung mit der Veröffentlichungs-Nr. 2013/0036250 oder in der US-Patentanmeldung mit der Veröffentlichungs-Nr. 2010/0205390 offenbart, als Komprimierungs-VOL der vorliegenden Erfindung verwendet wird.
  • Im Ausgangsstatus hat ein virtueller Datenträger (im Folgenden wird dieser virtueller Datenträger [HVOL] genannt), der über die Technik der schlanken Speicherzuweisung erzeugt wurde, keinen spezifischen Speicherbereich, der jedem Bereich des HVOL zugewiesen ist. Wenn die Speichervorrichtung eine Zugriffsanfrage empfängt, die eine Position (LBA) im HVOL ausweist, bestätigt sie, ob der relevanten Position ein Speicherbereich zugewiesen ist, und wenn kein Bereich zugewiesen ist, wird dieser Position ein Speicherbereich zugewiesen.
  • Unter Bezugnahme auf 29 ist das Verhältnis zwischen Komprimierungs-VOL, logischem Datenträger (LDEV) und Endspeichermedium (PDEV), wie in der Speichervorrichtung 1 gemäß dem modifizierten Beispiel 1 der vorliegenden Erfindung verwaltet, beschrieben. Bei der Speichervorrichtung 1 gemäß dem modifizierten Beispiel 1 der vorliegenden Erfindung wird ein HVOL als Komprimierungs-VOL 5500' gemäß der oben beschriebenen bevorzugten Ausführungsform verwendet. Darüber hinaus erzeugt die Speichervorrichtung 1 einen logischen Datenträger (im Folgenden als ”LDEV” bezeichnet), der aus einer Mehrzahl von Endspeichermedien 11 (12) zusammengesetzt ist, neben HVOL. Der LDEV ähnelt dem Komprimierungs-VOL 5500 gemäß der oben beschriebenen Ausführungsform, wobei ein LDEV durch eine RAID-Gruppe konfiguriert ist.
  • Die Speichervorrichtung 1 des modifizierten Beispiels 1, wenn Daten vom Dekomprimierungs-VOL 5000 (in 29 nicht gezeigt) auf den Komprimierungs-VOL 5500' (HVOL) migriert werden, wird ein ungenutzter Bereich im LDEV dem Bereich im HVOL zugewiesen, in dem die Datenmigration durchgeführt wird. Die Speichervorrichtung 1 teilt den Speicherplatz im HVOL in eine Mehrzahl von Bereichen mit fester Größe auf und diese Bereiche mit fester Größe werden ”Seiten” genannt. Jeder Seite ist eine eindeutige Kennnummer zugewiesen, die ”Seiten-ID” genannt wird, und die Seiten-ID einer Seite am Kopfende des HVOL ist Seite 0. Danach sind Seite 1, Seite 2 und so weiter den darauf folgenden Seiten in der Reihenfolge zugewiesen. Die Speichervorrichtung 1 gemäß dem modifizierten Beispiel 1 verwaltet die Seite auf Basis der Annahme, dass die Größe einer Seite gleich der Größe einer Streifengruppe ist, die Größe der Seite ist jedoch nicht auf die Größe der Streifengruppe beschränkt und andere Größen können angewandt werden. Beispielsweise kann eine Konfiguration angewandt werden, bei der die Größe einer Seite gleich einer Größe von mehreren Streifengruppen oder größer ist.
  • Um den Bereich im LDEV zu verwalten, der der Seite im HVOL zuweisbar ist, ist darüber hinaus ein Konzept in der Speichervorrichtung 1 definiert, das LDEV-Pool 9000 genannt wird. Wenn die Speichervorrichtung 1 einen Speicherbereich einer Seite im HVOL zuweist, wählt sie den Speicherbereich, der einer Seite entspricht, aus dem Bereich im LDEV, der im LDEV-Pool 9000 vorhanden ist, aus und weist diesen zu.
  • Da der Speicherbereich im LDEV dem HVOL erst dann zugewiesen wird, nachdem mit dem Schreiben von Daten aus dem Host-Computer 3 in den Dekomprimierungs-VOL begonnen wurde und Daten auf den Komprimierungs-VOL (HVOL) migriert wurden, kann die Gesamtkapazität (Kapazität ausschließlich des Bereichs, der die Parität speichert) des Bereichs, der die Daten im LDEV speichert, kleiner als die Gesamtkapazität von HVOLs sein, zumindest im Ausgangsstatus. Anders ausgedrückt kann die Gesamtkapazität des Endspeichermediums, das den LDEV darstellt, kleiner als die Gesamtkapazität aller HVOLs sein. An dem Zeitpunkt, an dem der den HVOLs zugewiesene Speicherbereich (des LDEV) erhöht wird und der ungenutzte LDEV-Bereich verringert wird, sollte ein Vorgang durchgeführt werden, um ein Endspeichermedium zur Speichervorrichtung 1 hinzuzufügen, den LDEV aus dem hinzugefügten Speichermedium zu definieren und den definierten LDEV zum LDEV-Pool 9000 hinzuzufügen. Aus diesem Grund wird es unter Verwendung eines HVOL, der durch die Technik der schlanken Speicherzuweisung erzeugt wurde, für den Komprimierungs-VOL möglich, die Kapazität des Endspeichermediums sogar noch weiter zu sichern.
  • Im Vergleich zu dem Fall, bei dem ein LDEV-Pool von einem HVOL verwendet wird, ermöglicht darüber hinaus die gemeinsame Nutzung eines LDEV-Pools durch mehrere HVOLs die effektive Verwendung des gemeinsam genutzten LDEV-Pools. Ausführlicher gesagt unterscheidet sich die Anzahl von Seiten, die eine Zuweisung von Speicherbereichen erfordern, zwischen mehreren HVOLs, da komprimierte Daten gespeichert werden, durch gemeinsame Nutzung eines LDEV-Pools jedoch, kann der Speicherbereich anderen HVOLs zugewiesen werden, die den LDEV gemeinsam nutzen, so dass der gemeinsam genutzte LDEV-Pool effizient verwendet werden kann, auch wenn ein HVOL mit einer hohen Komprimierungsrate vorhanden ist (mit einer geringen Anzahl von Seiten, die eine Zuweisung von Speicherbereichen erfordern).
  • 30 veranschaulicht ein Beispiel für HVOL-Verwaltungsinformationen 10000, bei denen es sich um Informationen handelt, die von der Speichervorrichtung 1 zum Verwalten des HVOL verwendet werden. Jedes Zeile (Eintrag) der HVOL-Verwaltungsinformationen 10000 ist aus einer HVOL-Nr. 10001 und einer Größe 10002 konfiguriert. Die HVOL-Nr. 10001 zeigt eine Kennnummer eines HVOL und die Größe 10002 stellt eine Größe des HVOL dar, der von der HVOL-Nr. 10001 spezifiziert ist.
  • 31 veranschaulicht ein Beispiel für eine Seitenzuordnungstabelle 10010, bei der es sich um Informationen handelt, die die Speichervorrichtung 1 verwendet, um den Zuweisungsstatus von Speicherbereichen zu verwalten, die Seiten in jedem HVOL zugewiesen sind. Jede Zeile (Eintrag) der Seitenverwaltungstabelle 10000 enthält Einträge einer HVOL-Nr. 10001, einer Seiten-ID (P-ID) 10002, einer LDEV-Nr. 10003 und einer Slot-Nr. 10004 und zeigt einen Bereich, der einer Streifengruppe mit dem Slot im LDEV entspricht, der von der LDEV-Nr. 10003 spezifiziert ist, und die Slot-Nr. 10004 als Kopfendenslot wird dem Bereich (Seite) im HVOL zugewiesen, der von der HVOL-Nr. und der Seiten-ID (P-ID) 10002 spezifiziert ist.
  • Der HVOL wird von einem Benutzer (Administrator) der Speichervorrichtung 1 definiert. Wenn der Benutzer (Administrator) der Speichervorrichtung 1 anweist, einen HVOL unter Verwendung eines Verwaltungsterminals 4 zu erzeugen, registriert die Speichervorrichtung 1 eine Kennnummer (HVOL-Nr.) und eine HVOL-Größe des neu erzeugten HVOL in den HVOL-Verwaltungsinformationen 10000. Danach werden die Informationen zu jeweiligen Seiten des neu erzeugten HVOL in der Seitenverwaltungstabelle 10010 registriert, in der zu Beginn nur die Informationen zur HVOL-Nr. 10001 und Seiten-ID (P-ID) 10002 registriert wurden, und ein ungültiger Wert (z. B. NULL) wird in der LDEV-Nr. 10003 und der Slot-Nr. 10004 gespeichert. Wenn ein Transfer von Daten auf eine Seite im HVOL (Komprimierungs-VOL) aus dem Dekomprimierungs-VOL durchgeführt wird, werden Werte in den Feldern der LDEV-Nr. 10003 und der Slot-Nr. 10004 gespeichert.
  • Beim Zuweisen eines Bereichs zu einer Seite im HVOL verfügt darüber hinaus die Speichervorrichtung 1 über Verwaltungsinformationen, die Frei-Seiten-Liste 10100 genannt werden (32), da es erforderlich ist, einen Bereich im LDEV zuzuweisen, der noch keiner Seite zugewiesen wurde (ungenutzte Seite genannt). Die Freien-Seite-Liste 10100 enthält Einträge eine LDEV-Nr. 10110 und einer Slot-Nr. 10120, die zeigen, dass ein Bereich, der einer Streifengruppe mit dem Slot im LDEV entspricht, der von der LDEV-Nr. 10110 und der Slot-Nr. 10120 in der Freie-Seiten-Liste 10100 als Kopfendenslot spezifiziert ist, eine ungenutzte Seite ist. Wenn die Speichervorrichtung 1 einen Bereich der Seite im HVOL zuweist, werden ungenutzte Slots (die einer Streifengruppe entsprechen) aus der Freie-Seiten-Liste 10100 erfasst und der Seite im HVOL zugewiesen.
  • Im Folgenden wird der Ablauf der Verarbeitung beschrieben, die in der Speichervorrichtung 1 gemäß dem modifizierten Beispiel 1 durchgeführt wird, wenn eine Datenschreibanfrage vom Host-Computer 3 vorliegt und wenn eine Datenleseanfrage vorliegt. Diese Verarbeitung ähnelt im Wesentlichen den Prozessen der 24 bis 28 gemäß der oben veranschaulichten Ausführungsform. Beispielsweise da der Prozess des Empfangens einer Schreibanfrage und von Schreibdaten vom Host-Computer 3 in den Dekomprimierungs-VOL 5000 und des Speicherns der empfangenen Schreibdaten im Zwischenspeicher 26 gleich wie der in 24 beschriebenen Prozess ist, wird er im Folgenden nicht beschrieben. Im Folgenden sind die Bereiche beschrieben, die sich von der oben beschriebenen Ausführungsform in Hinblick auf die Datentransferverarbeitung und die Leseverarbeitung in den Komprimierungs-VOL (HVOL) unterscheiden.
  • Im Folgenden wird unter Bezugnahme auf 33 der Ablauf der Datentransferverarbeitung auf den Komprimierungs-VOL (HVOL) beschrieben. Die Prozesse von 25 und 33 sind die gleichen, mit der Ausnahme, dass die Prozesse von S23 und S24 in 25 in 33 auf S23', S241 und S242 geändert wurden.
  • In S21 ermittelt der Prozessor 21, ob eine bestimmte Bedingung erfüllt ist, und in S22 wählt der den Slot des Dekomprimierungs-VOL aus, der das Ziel der Transferverarbeitung darstellt, und sperrt den ausgewählten Slot. In S21 des modifizierten Beispiel 1 wird ermittelt, dass eine bestimmte Bedingung erfüllt ist, unter einer Bedingung, dass in Bezug auf einen gewissen Dekomprimierungs-VOL eine einseitige oder mehrseitige (d. h. einer oder mehreren Streifengruppen entsprechend) Menge von noch nicht reflektierten Daten (im Zwischenspeicher 26), die in den relevanten Dekomprimierungs-VOL geschrieben wurden, vorhanden sind. In S23' wird die Zuweisung von Plattenbereich im Komprimierung-VOL (HVOL) durchgeführt. Zunächst werden der Komprimierungs-VOL 602 und die letzte Schreibposition 603, die dem Dekomprimierungs-VOL 601 entspricht, der das aktuelle Verarbeitungsziel ist, durch Bezugnahme auf die Datenträgerzuordnungstabelle 600 ausgewählt. Danach wird ermittelt, dass Daten vom Dekomprimierungs-VOL auf den Bereich migriert werden sollten, der einer Streifengruppe entspricht, von der darauf folgenden LBA von der letzten Schreibposition 603 des Komprimierungs-VOL 602. Danach wird die Position des Komprimierungs-VOL ermittelt, dem die jeweiligen Bereiche des Dekomprimierungs-VOL zugeordnet werden sollte, der das aktuelle Verarbeitungsziel ist (Bereiche, in denen die noch nicht reflektierten Daten im in S22 ausgewählten Slot gespeichert werden), und der ermittelte Inhalt wird den der Adresszuordnungstabelle 650 gespeichert.
  • Danach wird in S24' der Bereich im LDEV einem Bereich zugewiesen, der einer Seite im HVOL entspricht (Bereich, der einer oder mehreren Streifengruppen entspricht), der der Bereich im Migrationsziel ist, das in S23' ermittelt wurde, um Daten zu migrieren. Dieser Prozess wird unter Bezugnahme auf 34 beschrieben.
  • In S241 wird die Kopfenden-LBA (die die darauf folgende LBA in Bezug auf die letzte Schreibposition 603 in der Datenträgerzuordnungstabelle 600 ist) des Bereichs, der einer Seite im HVOL entspricht, wie in S23' ausgewählt, in eine Seiten-ID umgewandelt. Um die Seiten-ID aus der LBA zu berechnen, sollte die LBA durch die Größe einer Seite geteilt werden. Beispielsweise wenn die Größe einer Seite gleich der Größe von N Streifengruppen (N > 1) ist und die Größe einer Streifengruppe 48 kB ist, sollte die LBA durch (48 × N) kB geteilt werden, um die Seiten-ID aus der LBA zu berechnen.
  • In S242 wird ermittelt, ob ein Bereich im LDEV der Seite mit der Seiten-ID zugewiesen ist, die in S241 berechnet wurde (ob ein Wert, der kein ungültiger Wert, in der LDEV-Nr. 10012 und der Slot-Nr. 10014 gespeichert ist), unter Bezugnahme auf die Seitenverwaltungstabelle 10010. Wenn ein Bereich bereits zugewiesen wurde, geht das Verfahren zu S244 über. Wenn ein Bereich nicht zugewiesen wurde, wird ein Bereich der Seite im HVOL zugewiesen, indem eine Streifengruppe, die einen Bereich im LDEV wert ist, aus der Freie-Seiten-Liste 10100 erfasst wird und die Informationen des erfassten Bereichs, der einer Streifengruppe entspricht, in der Seitenzuordnungstabelle 10010 registriert werden (S243). Danach geht das Verfahren zum Prozess S244 über.
  • In S244 wird auf die Seitenzuordnungstabelle 10010 Bezug genommen und die Informationen des Bereichs im LDEV, dem die Seite mit der in S241 berechneten Seiten-ID zugewiesen wurde (Slotnummern der Slots, die einer Seite mit der LDEV-Nr. 10013 und der Slot-Nr. 10014 als Kopfendenslot entsprechen), werden erfasst. Gleichzeitig wird die Slotnummer des Paritätsslots, der der einen Seite entspricht, die Slots wert ist, wie hier erfasst, berechnet. S245 führt einen ähnlichen Prozess wie S24 in 25 durch. Das heißt, dass eine Sperre für den in S244 erfassten Slot erfasst wird und eine Zuweisung des Zwischenspeichersegments durchgeführt wird.
  • Wenn die Verarbeitung von S245 beendet ist, geht das Verfahren zu S25 über, da jedoch die Prozesse von S25 und spätere gleich wie die Prozesse von 25 sind, wird auf eine ausführliche Beschreibung verzichtet.
  • Wie beschrieben, werden komprimierte Daten mit einer Größe, die sich von den Schreibdaten aus dem Host unterscheidet, unter Verwendung einer Komprimierungstechnik im Endspeichermedium gespeichert, durch Zuweisen eines Speicherbereichs aus dem LDEV zum Bereich mit fester Größe mit geteiltem HVOL bei Migration von Daten auf den HVOL kann jedoch die Kapazitätseffizienz verbessert werden. Darüber hinaus erkennt die Speichersteuereinheit die Seitengröße des HVOL, die Streifengruppengröße des LDEV und die Größe nach Komprimierung der Aktualisierungsdaten. Aus diesem Grund kann, wenn die Speichersteuereinheit Aktualisierungsdaten anhängt, die Zuweisung des Bereichs im HVOL zur Seite im HVOL geeigneterweise gemäß der Größe der angehängten Aktualisierungsdaten nach Komprimierung durchgeführt werden (Bereiche werden nicht übermäßig zugewiesen), so dass die Kapazitätseffizienz verbessert werden kann.
  • Im Folgenden wird ein Ablauf der Verarbeitung beschrieben, die durchgeführt wird, wenn eine Leseanfrage vom Host-Computer 3 in Bezug auf einen Datenträger (Dekomprimierungs-VOL) empfangen wurde. In diesem Prozess werden lediglich S55 und S56 von 27 auf S55' und S56', wie nachstehend beschrieben, geändert und die anderen Prozesse sind gleich wie in 27, so dass auf eine Zeichnung davon verzichtet wird.
  • In S55 wird die LBA des Komprimierungs-VOL (HVOL), die der Leseziel-LBA des Dekomprimierungs-VOL entspricht, durch Bezugnahme auf die Adressverwaltungstabelle 650 spezifiziert. Danach wird die LBA des spezifizierten HVOL in die Seiten-ID umgewandelt und unter Bezugnahme auf die Seitenzuordnungstabelle 10010 wird der Slot des LDEV, dem die relevante Seiten-ID zugewiesen wird (Slot, der durch die LDEV-Nr. 10013 und die Slot-Nr. 10014 spezifiziert ist), spezifiziert und der spezifizierte Slot des LDEV wird gesperrt.
  • In S56' identifiziert der Prozessor 21 das Zwischenspeichersegment im LDEV, das der LBA im Komprimierungs-VOL entspricht, ermittelt, ob das relevante Zwischenspeichersegment bereits zugewiesen wurde, und wenn das relevante Zwischenspeichersegment nicht zugewiesen ist, führt er eine Segmentzuweisung (S57) durch. Die Prozesse nach S57 sind gleich wie in 27. Darüber hinaus ist die Verarbeitung zum Spezifizieren des Zwischenspeichersegments im LDEV, das der LBA im Komprimierungs-VOL entspricht, ein hinlänglich bekannter Prozess, der bei der Speichervorrichtung, die eine Technik der schlanken Speicherzuweisung verwendet, für gewöhnlich durchgeführt wird, so dass auf eine ausführliche Beschreibung davon verzichtet wird. Wenn ein Zwischenspeichersegment bereits zugewiesen wurde, geht das Verfahren zu S61 über und die darauf folgende Schritte sind gleich wie in 27.
  • <Modifiziertes Beispiel 2>
  • Gemäß der oben beschriebenen Ausführungsform wird eine Migration auf den Komprimierungs-VOL jedes Mal durchgeführt, wenn die in den Dekomprimierungs-VOL geschriebenen Daten für eine Menge gesammelt werden, die einer Streifengruppe im Zwischenspeicher 26 entspricht. Darüber hinaus werden die in den Dekomprimierungs-VOL geschriebenen Daten während der Migration an den Komprimierungs-VOL (LDEV und darüber hinaus an das Endspeichermedium) angehängt, unabhängig von der Position der relevanten in den Dekomprimierungs-VOL geschriebenen Daten, so dass zusammenhängende Daten (Bereiche) im Dekomprimierungs-VOL nicht-zusammenhängend im Komprimierungs-VOL (LDEV) platziert werden können. Wenn eine solche Platzierung vorgenommen wird, wird die sequentielle Leseleistung im Vergleich zu normalen Speichervorrichtungen (Speichervorrichtungen, die unkomprimierte Daten speichern) verschlechtert. Im Folgenden wird ein Verfahren zum Migrieren von Daten auf den Komprimierungs-VOL unter Berücksichtigung der Datenplatzierung im Dekomprimierungs-VOL beschrieben, wenn Daten aus dem Dekomprimierungs-VOL auf den Komprimierungs-VOL übertragen werden.
  • Bei der Speichervorrichtung 1 gemäß dem modifizierten Beispiel 2 wird ähnlich dem modifizierten Beispiel 1 ein virtueller Datenträger (HVOL), der über die Technik der schlanken Speicherzuweisung erzeugt wurde, für den Komprimierungs-VOL verwendet. Außerdem ist die Größe einer Seite des HVOL beim modifizierten Beispiel 1 eine Größe, die einer Streifengruppe entspricht, beim modifizierten Beispiel 2 jedoch entspricht sie mehreren Streifengruppen (z. B. 1000 Streifengruppen). Der einfacheren Beschreibung wegen wird angenommen, dass eine Streifengruppe eine Größe aufweist, die drei Slots entspricht (48 kB). Aus diesem Grund ist die Größe einer Seite 48 × 1000 kB.
  • Gemäß der oben beschriebenen Ausführungsform 1 werden in einen Dekomprimierungs-VOL geschriebene Daten an einen Bereich eines Komprimierungs-VOL angehängt, der dem Dekomprimierungs-VOL zugeordnet ist, beim modifizierten Beispiel 2 jedoch wird jeder Dekomprimierungs-VOL in Seiteneinheiten (48 × 1000 kB) aufgeteilt, ähnlich der Seitengröße des Komprimierungs-VOL, und eine Seitennummer wird jeder Seite zur Verwaltung zugewiesen. Was die jeder Seite zugewiesene Seitennummer betrifft, so wird eine Seitennummer 0 der Seite zugewiesen, die sich am Kopfende des Dekomprimierungs-VOL befindet, und danach werden die Seitennummern 1, 2 und so weiter sequentielle zugewiesen. Die Seite des Dekomprimierungs-VOL und die Seite des Komprimierungs-VOL müssen nicht zwingend die gleiche Größe aufweisen, und die vorliegende Erfindung ist effektiv, wenn die Seitengröße des Komprimierungs-VOL auf eine kleinere Größe als die Größenseite des Dekomprimierungs-VOL eingestellt wird, unter der Annahme, dass die Daten komprimiert gespeichert werden.
  • Unter Bezugnahme auf 35 wird der Inhalt einer Datenträgerzuordnungstabelle 600' gemäß dem modifizierten Beispiel 2 beschrieben. Bei der Speichervorrichtung 1 des modifizierten Beispiels 2 werden auf Seite 0 des Dekomprimierungs-VOL geschriebene Daten auf Seite 0 des Komprimierungs-VOL (HVOL) geschrieben und danach werden gleichermaßen auf Seite 1, Seite 2 und so weiter im Dekomprimierungs-VOL geschriebene Daten jeweils auf Seite 1, Seite 2 und so weiter im Komprimierungs-VOL (HVOL) geschrieben. Aus diesem Grund hat die Datenträgerzuordnungstabelle 600' Einträge einer VVOL-Nr. 601', einer Seiten-ID (P-ID) 602', einer HVOL-Nr. 603', einer P-ID 604' und einer letzten Schreibposition 605', und die Daten, die in den Bereich im Dekomprimierungs-VOL geschrieben wurden, der von der VVOL-Nr. 601' und der Seiten-ID (P-ID) 602' spezifiziert ist, wird auf der Seite im Komprimierungs-VOL gespeichert, die von der HVOL-Nr. 603' und der P-ID 604' spezifiziert ist. Außerdem werden die Informationen der letzten Schreibposition 605' auch für jede Seite des Dekomprimierungs-VOL verwaltet.
  • Ferner enthält die Speichervorrichtung 1 des modifizierten Beispiels 2 ähnlich dem modifizierten Beispiel 1 die HVOL-Verwaltungsinformationen 10000, die Seitenzuordnungstabelle 10010 und die Freie-Seiten-Liste 10100 als Verwaltungsinformationen zum Verwalten des HVOL, aber mit Ausnahme des Punkts, dass die Seitengröße auf 1000 Streifengruppen eingestellt ist, sind sie die gleichen Verwaltungsinformationen wie beim modifizierten Beispiel 1, so dass auf eine Beschreibung davon verzichtet wird. Darüber hinaus ähneln die Dekomprimierungs-VOL- und die Zwischenspeicherverwaltungsinformationen des LDEV ebenfalls den Zwischenspeicherverwaltungsinformationen, die bei der bevorzugten Ausführungsform und beim modifizierten Beispiel 1 beschrieben wurden, das modifizierte Beispiel 2 unterscheidet sich in Bezug auf die Warteschlange mit noch nicht reflektierten Daten im Dekomprimierungs-VOL von den oben beschriebenen Ausführungsformen jedoch in dem Punkt, dass eine Warteschlange mit noch nicht reflektierten Daten auf jeder Seite des Dekomprimierungs-VOL vorhanden ist.
  • Im Folgenden wird die Schreibverarbeitung beschrieben, die bei der Speichervorrichtung 1 gemäß dem modifizierten Beispiel 2 durchgeführt wird. Der Ablauf der beim modifizierten Beispiel 2 durchgeführten Schreibverarbeitung unterscheidet sich grundsätzlich nicht viel von bevorzugten Ausführungsform und dem modifizierten Beispiel 1 wie oben beschrieben und da der Prozess zum Speichern der empfangenen Schreibdaten im Zwischenspeicher 26 gleich wie der Prozess in 24 ist, wird auf eine ausführliche Beschreibung davon verzichtet. Da sich die Datentransferverarbeitung aus dem Dekomprimierungs-VOL in den Komprimierungs-VOL nicht viel von 33 unterscheidet, wird sie unter Bezugnahme auf 33 beschrieben. Bei der bevorzugten Ausführungsform und dem modifizierten Beispiel 1, wie oben beschrieben, wird die Datentransferverarbeitung in den Komprimierungs-VOL in jedem Dekomprimierungs-VOL durchgeführt, beim modifizierten Beispiel 2 hingegen wird sie auf jeder Seite durchgeführt.
  • In S21 ermittelt der Prozessor 21, ob eine bestimmte Bedingung erfüllt wurde, beim modifizierten Beispiel 2 hingegen wird ermittelt, ob die Gesamtmenge an noch nicht reflektierten Daten 110f jedes Slots, der mit der Warteschlange von noch nicht reflektierten Daten jeder Seite im Dekomprimierungs-VOL verbunden ist, größer gleich einer bestimmten Menge (z. B. 60 & oder mehr einer Seitengröße) geworden ist, und wenn sie größer gleich der bestimmten Menge geworden ist, geht das Verfahren zu Schritt S22 und nachfolgende über.
  • Der Prozess von S22 ähnelt der oben beschriebenen Ausführungsform, allerdings werden die Slots, die mit der Warteschlange mit noch nicht reflektierten Daten verbunden sind, in der Reihenfolge des Slots mit kleineren Slot-IDs ausgewählt und wird die Auswahl so durchgeführt, dass die Gesamtmenge von noch nicht reflektierten Daten des Bereichs der noch nicht reflektierten Daten der ausgewählten Slots zu einem Vielfachen der Streifengruppengröße wird und dass der Wert so hoch wie möglich wird. Wenn die Menge von noch nicht reflektierten Daten zu einem Vielfachen der Streifengruppengröße wird, wenn alle noch nicht reflektierten Daten ausgewählt werden, werden somit alle Slots ausgewählt.
  • Der Prozess von S23 ähnelt ebenfalls der oben beschriebenen Ausführungsform, beim modifizierten Beispiel 2 jedoch wird jeder Bereich des Verarbeitungsziel-Dekomprimierungs-VOL dem Bereich im Komprimierungs-VOL in aufsteigender Reihenfolge beginnend mit jenen mit kleineren LBAs zugeordnet, so dass die Reihenfolge der Datenplatzierung im Dekomprimierungs-VOL und die Reihenfolge der Datenplatzierung im Komprimierungs-VOL gleich werden. Die darauf folgenden Prozesse sind der oben beschriebenen Ausführungsform und dem modifizierten Beispiel 1 ähnlich.
  • Dadurch werden auch alle Daten, die zusammenhängend im Dekomprimierungs-VOL platziert wurden, in aufsteigender Reihenfolge im Komprimierungs-VOL platziert. Aus diesem Grund wird es, wenn danach ein sogenannter sequentieller Lesezugriff zum Lesen von zusammenhängenden Daten vom Host-Computer 3 in den Dekomprimierungs-VOL eingeht, möglich, die komprimierten Daten im Wesentlichen sequentiell aus dem Komprimierungs-VOL zu lesen.
  • Die Ausführungsformen der vorliegenden Erfindung wurden beschrieben, aber diese sind lediglich Beispiele zum Veranschaulichen der vorliegenden Erfindung und sollen den Umfang der Erfindung nicht auf die oben veranschaulichten Beispiele beschränken. Die vorliegende Erfindung kann mit diversen anderen Ausführungsformen umgesetzt werden. Beispielsweise sind bei der Speichervorrichtung, die bei der vorliegenden Ausführungsform veranschaulicht ist, zwei Speichersteuereinheiten veranschaulicht, die Anzahl der Speichersteuereinheiten ist jedoch nicht darauf beschränkt und es kann eine beliebige Anzahl von einer oder mehreren Steuereinheiten bereitgestellt werden. Darüber hinaus ist die Anzahl von Prozessoren in der Steuereinheit oder Host-Schnittstellen nicht auf die in den Zeichnungen veranschaulichte Anzahl beschränkt.
  • Gemäß dem oben beschriebenen modifizierten Beispiel 2 wird darüber hinaus der über die Technik der schlanken Speicherzuweisung erzeugte HVOL, ähnlich dem modifizierten Beispiel 1, als Komprimierungs-VOL verwendet, Ausführungsform 2 kann jedoch ähnlich der zuerst beschriebenen Ausführungsform sogar unter Verwendung des logischen Datenträgers als Komprimierungs-VOL ohne Verwendung der Technik der schlanken Speicherzuweisung umgesetzt werden.
  • Bezugszeichenliste
  • 1
    Speichervorrichtung
    2
    SAN
    3
    Host-Computer
    4
    Verwaltungsvorrichtung
    10
    Speichersteuereinheit
    11
    SSD
    12
    HDD
    21
    Prozessor
    22
    Interner Schalter
    23
    Plattenschnittstelle
    24
    Host-Schnittstelle
    25
    DRAM
    26
    Zwischenspeicher
    27
    Knoten-I/F

Claims (14)

  1. Speichervorrichtung, die mit einem Host-Computer verbunden ist und die einen Prozessor, eine Zwischenspeichervorrichtung und eine Mehrzahl von Endspeichermedium aufweist, wobei die Speichervorrichtung umfasst: einen ersten Datenträger, der für den Host-Computer zugreifbar ist; einen zweiten Datenträger, bei dem es sich um einen dem ersten Datenträger zugeordneten Datenträger handelt und der Daten, die aus dem Host-Computer in den ersten Datenträger geschrieben werden, in einem komprimierten Zustand speichert; wobei: wenn der Prozessor eine Schreibanfrage in den ersten Datenträger und Schreibzieldaten in Bezug auf die Schreibanfrage vom Host-Computer empfängt, der Prozessor: (1) die Schreibzieldaten in einen komprimierten Zustand in der Zwischenspeichervorrichtung setzt und diese in einem Speicherbereich innerhalb der Zwischenspeichervorrichtung speichert; (2) eine Speicherposition im zweiten Datenträger der Zielschreibdaten im komprimierten Zustand ermittelt; (3) einen Speicherbereich im Endspeichermedium, das es zuzuordnen gilt, der Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand in Antwort darauf, dass die Speicherposition ermittelt wird, zuweist; und (4) die Lesezieldaten im komprimierten Zustand aus der Zwischenspeichervorrichtung liest und die gelesenen Schreibdaten im komprimierten Zustand in einem Bereich im zugewiesenen Endspeichermedium speichert.
  2. Speichervorrichtung nach Anspruch 1, wobei: die Schreibanfrage Informationen einer Adresse im ersten Datenträger enthält, in die die Schreibzieldaten zu schreiben sind; die Speichervorrichtung eine Adresszuordnungstabelle aufweist, die ein entsprechendes Verhältnis zwischen einer Adresse im ersten Datenträger und einer Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand verwaltet; wobei der Prozessor: ein entsprechendes Verhältnis zwischen der in der Schreibanfrage enthaltenen Adresse und der Speicherposition im zweiten Datenträger in der Adresszuordnungstabelle aufzeichnet, wenn eine Speicherposition der Schreibzieldaten im komprimierten Zustand im zweiten Datenträger ermittelt wird; sich auf die Zuordnungstabelle bezieht, wenn eine Leseanfrage, die eine Adresse im ersten Datenträger ausweist, vom Host-Computer empfangen wird, und eine Speicherposition im zweiten Datenträger spezifiziert, die einer in der Leseanfrage enthaltenen Adresse entspricht; Daten im komprimierten Zustand aus dem Endspeichermedium basierend auf der Speicherposition im zweiten Datenträger liest und die Daten in der Zwischenspeichervorrichtung speichert; und Daten, die die Daten im komprimierten Zustand dekomprimiert haben, aus der Zwischenspeichervorrichtung erfasst und die erfassten Daten an den Host-Computer überträgt.
  3. Speichervorrichtung nach Anspruch 1, wobei: der Prozessor Informationen der ermittelten Speicherposition jedes Mal speichert, wenn ein Prozess durchgeführt wird, um eine Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand zu ermitteln; beim Ermitteln einer Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand eine darauf folgende Adresse einer Adresse ermittelt, die von den Informationen der Speicherposition spezifiziert ist, die als Speicherposition der Schreibzieldaten im komprimierten Zustand im zweiten Volumen gespeichert ist.
  4. Speichervorrichtung nach Anspruch 1, wobei: wenn eine Menge der Schreibzieldaten im komprimierten Zustand, die in der Zwischenspeichervorrichtung gespeichert sind, größer gleich einer bestimmten Menge wird, der Prozessor eine Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand ermittelt.
  5. Speichervorrichtung nach Anspruch 4, wobei: ein Speicherbereich, den es der Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand zuzuordnen gilt, ein Speicherbereich innerhalb einer RAID-Gruppe ist, die aus einer Mehrzahl von Endspeichermedien konfiguriert ist; und wenn eine Menge von Schreibzieldaten im komprimierten Zustand, die in der Zwischenspeichervorrichtung gespeichert sind, größer gleich einer Menge wird, die einer Streifengrößengruppe der RAID-Gruppe entspricht, der Prozessor eine Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand ermittelt.
  6. Speichervorrichtung nach Anspruch 1, wobei: eine Kapazität des zweiten Datenträgers größer als eine Gesamtkapazität der Mehrzahl von Endspeichermedien ist.
  7. Speichervorrichtung nach Anspruch 1, wobei: die Zwischenspeichervorrichtung einen ersten logischen Speicherplatz und einen zweiten logischen Speicherplatz an den Prozessor bereitstellt; wenn der Prozessor an die Zwischenspeichervorrichtung eine Datenspeicheranfrage zum Speichern der Schreibzieldaten mit einer ausgewiesenen Adresse im ersten logischen Speicherplatz in der Zwischenspeichervorrichtung ausweist; die Zwischenspeichervorrichtung die Schreibzieldaten in einen komprimierten Zustand setzt und diese in einem Speicherbereich in der Zwischenspeichervorrichtung speichert; nachdem der Prozessor eine Zuordnungsanweisung zum Zuordnen der Adresse im ersten logischen Speicherplatz und der Adresse im zweiten logischen Speicherplatz an Zwischenspeichervorrichtung ausgegeben hat und ferner eine Datenleseanfrage zum Lesen der Schreibzieldaten, die in der Zwischenspeichervorrichtung gespeichert sind, die eine Adresse im zweiten logischen Speicherplatz ausweist, der einer Adresse im ersten logischen Speicherplatz zugeordnet ist, an die Zwischenspeichervorrichtung ausgibt; die Zwischenspeichervorrichtung die Schreibzieldaten in einem komprimierten Zustand liest.
  8. Verfahren zum Steuern einer Speichervorrichtung, die mit einem Host-Computer verbunden ist und die einen Prozessor, eine Zwischenspeichervorrichtung und eine Mehrzahl von Endspeichermedium aufweist, wobei die Speichervorrichtung umfasst: einen ersten Datenträger, der für den Host-Computer zugreifbar ist; einen zweiten Datenträger, bei dem es sich um einen dem ersten Datenträger zugeordneten Datenträger handelt und der Daten, die aus dem Host-Computer in den ersten Datenträger geschrieben werden, in einem komprimierten Zustand speichert; wobei: wenn der Prozessor eine Schreibanfrage in den ersten Datenträger und Schreibzieldaten in Bezug auf die Schreibanfrage vom Host-Computer empfängt, der Prozessor: (1) die Schreibzieldaten in einem Speicherbereich in der Zwischenspeichervorrichtung speichert, nachdem er die Schreibzieldaten in einen komprimierten Zustand in der Zwischenspeichervorrichtung geändert hat; (2) eine Speicherposition im zweiten Datenträger der Zielschreibdaten im komprimierten Zustand ermittelt; (3) einen Speicherbereich im Endspeichermedium, das es zuzuordnen gilt, der Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand in Antwort darauf, dass die Speicherposition ermittelt wird, zuweist; und (4) die Lesezieldaten im komprimierten Zustand aus der Zwischenspeichervorrichtung liest und die gelesenen Schreibdaten im komprimierten Zustand in einem Bereich im zugewiesenen Endspeichermedium speichert.
  9. Verfahren zum Steuern einer Speichervorrichtung nach Anspruch 8, wobei: die Schreibanfrage Informationen einer Adresse im ersten Datenträger enthält, in die die Schreibzieldaten zu schreiben sind; die Speichervorrichtung eine Adresszuordnungstabelle aufweist, die ein entsprechendes Verhältnis zwischen einer Adresse im ersten Datenträger und einer Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand verwaltet; wobei der Prozessor: ein entsprechendes Verhältnis zwischen der in der Schreibanfrage enthaltenen Adresse und der Speicherposition im zweiten Datenträger in der Adresszuordnungstabelle aufzeichnet, wenn eine Speicherposition der Schreibzieldaten im komprimierten Zustand im zweiten Datenträger ermittelt wird; sich auf die Zuordnungstabelle bezieht, wenn eine Leseanfrage, die eine Adresse im ersten Datenträger ausweist, vom Host-Computer empfangen wird, und eine Speicherposition im zweiten Datenträger spezifiziert, die einer in der Leseanfrage enthaltenen Adresse entspricht; Daten im komprimierten Zustand aus dem Endspeichermedium basierend auf der Speicherposition im zweiten Datenträger liest und die Daten in der Zwischenspeichervorrichtung speichert; und Daten, die die Daten im komprimierten Zustand dekomprimiert haben, aus der Zwischenspeichervorrichtung erfasst und die erfassten Daten an den Host-Computer überträgt.
  10. Verfahren zum Steuern einer Speichervorrichtung nach Anspruch 8, wobei: der Prozessor Informationen der ermittelten Speicherposition jedes Mal speichert, wenn ein Prozess durchgeführt wird, um eine Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand zu ermitteln; beim Ermitteln einer Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand eine darauf folgende Adresse einer Adresse ermittelt, die von den Informationen der Speicherposition spezifiziert ist, die als Speicherposition der Schreibzieldaten im komprimierten Zustand im zweiten Volumen gespeichert ist.
  11. Verfahren zum Steuern einer Speichervorrichtung nach Anspruch 8, wobei: der Prozessor den Host-Computer informiert, dass ein Prozess, der mit einer Schreibanfrage einhergeht, abgeschlossen wurde, zu einem Zeitpunkt, wenn die Schreibzieldaten in einen komprimierten Zustand in der Zwischenspeichervorrichtung gesetzt wurden und in einem Bereich innerhalb der Zwischenspeichervorrichtung gespeichert wurden; und zu einem Zeitpunkt, wenn eine Menge von Schreibzieldaten im komprimierten Zustand, die in der Zwischenspeichervorrichtung gespeichert wurden, größer gleich einer bestimmten Menge geworden ist, die Prozesse von (2) und darauffolgende ausführt.
  12. Verfahren zum Steuern einer Speichervorrichtung nach Anspruch 11, wobei: ein Speicherbereich, den es der Speicherposition im zweiten Datenträger der Schreibzieldaten im komprimierten Zustand zuzuordnen gilt, ein Speicherbereich innerhalb einer RAID-Gruppe ist, die aus einer Mehrzahl von Endspeichermedien konfiguriert ist; und wenn eine Menge von Schreibzieldaten im komprimierten Zustand, die in der Zwischenspeichervorrichtung gespeichert sind, größer gleich einer Menge wird, die einer Streifengrößengruppe der RAID-Gruppe entspricht, der Prozessor die Prozesse von (2) und darauffolgende ausführt.
  13. Verfahren zum Steuern einer Speichervorrichtung nach Anspruch 8, wobei: eine Kapazität des zweiten Datenträgers größer als eine Gesamtkapazität der Mehrzahl von Endspeichermedien ist.
  14. Verfahren zum Steuern einer Speichervorrichtung nach Anspruch 8, wobei: die Zwischenspeichervorrichtung einen ersten logischen Speicherplatz und einen zweiten logischen Speicherplatz an den Prozessor bereitstellt; bei (1), wenn der Prozessor an die Zwischenspeichervorrichtung eine Datenspeicheranfrage zum Speichern der Schreibzieldaten mit einer ausgewiesenen Adresse im ersten logischen Speicherplatz in der Zwischenspeichervorrichtung ausweist; die Zwischenspeichervorrichtung die Schreibzieldaten in einem Speicherbereich in der Zwischenspeichervorrichtung speichert, nachdem er die Schreibzieldaten in einen komprimierten Zustand geändert hat; bei (4), nachdem der Prozessor eine Zuordnungsanweisung zum Zuordnen der Adresse im ersten logischen Speicherplatz und der Adresse im zweiten logischen Speicherplatz an Zwischenspeichervorrichtung ausgegeben hat und ferner eine Datenleseanfrage zum Lesen der Schreibzieldaten, die in der Zwischenspeichervorrichtung gespeichert sind, die eine Adresse im zweiten logischen Speicherplatz zugeordnet ist, an die Zwischenspeichervorrichtung ausgibt; die Schreibzieldaten in einem komprimierten Zustand aus der Zwischenspeichervorrichtung gelesen werden.
DE112013006655.6T 2013-12-12 2013-12-12 Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung Withdrawn DE112013006655T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/083322 WO2015087424A1 (ja) 2013-12-12 2013-12-12 ストレージ装置及びストレージ装置の制御方法

Publications (1)

Publication Number Publication Date
DE112013006655T5 true DE112013006655T5 (de) 2015-11-19

Family

ID=53370765

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006655.6T Withdrawn DE112013006655T5 (de) 2013-12-12 2013-12-12 Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung

Country Status (6)

Country Link
US (2) US9916248B2 (de)
JP (1) JP6212137B2 (de)
CN (2) CN108108311A (de)
DE (1) DE112013006655T5 (de)
GB (1) GB2536514A (de)
WO (1) WO2015087424A1 (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN107341071A (zh) * 2013-08-23 2017-11-10 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9112890B1 (en) 2014-08-20 2015-08-18 E8 Storage Systems Ltd. Distributed storage over shared multi-queued storage device
US9274720B1 (en) 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
US10025843B1 (en) 2014-09-24 2018-07-17 EMC IP Holding Company LLC Adjusting consistency groups during asynchronous replication
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
US9519666B2 (en) * 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US9678665B2 (en) * 2015-03-06 2017-06-13 Western Digital Technologies, Inc. Methods and systems for memory page allocation
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US9525737B2 (en) * 2015-04-14 2016-12-20 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect
TWI531963B (zh) * 2015-06-04 2016-05-01 Accelstor Inc Data storage systems and their specific instruction enforcement methods
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US10893029B1 (en) * 2015-09-08 2021-01-12 Amazon Technologies, Inc. Secure computing service environment
US9715352B2 (en) * 2015-10-01 2017-07-25 International Business Machines Corporation Synchronous input/output using a low latency storage controller connection
US10063376B2 (en) 2015-10-01 2018-08-28 International Business Machines Corporation Access control and security for synchronous input/output links
US10120818B2 (en) 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output command
CN106919339B (zh) * 2015-12-25 2020-04-14 华为技术有限公司 一种硬盘阵列及硬盘阵列处理操作请求的方法
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
EP3364303B1 (de) * 2016-02-01 2019-10-30 Huawei Technologies Co., Ltd. Datenanordnungsverfahren, speichervorrichtung, speichersteuergerät und speicheranordnung
US11144445B1 (en) * 2016-03-28 2021-10-12 Dell Products L.P. Use of compression domains that are more granular than storage allocation units
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
US10496278B1 (en) * 2016-06-24 2019-12-03 EMC IP Holding Company LLC Inline compression support using discrete sized containers for backing store
US10503443B2 (en) * 2016-09-13 2019-12-10 Netapp, Inc. Systems and methods for allocating data compression activities in a storage system
WO2018051505A1 (ja) * 2016-09-16 2018-03-22 株式会社日立製作所 ストレージシステム
JP6553566B2 (ja) * 2016-09-23 2019-07-31 東芝メモリ株式会社 メモリシステムおよび制御方法
WO2018061161A1 (ja) * 2016-09-29 2018-04-05 株式会社日立製作所 ストレージ装置およびその制御方法
JP6239078B1 (ja) * 2016-11-04 2017-11-29 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法
US10387305B2 (en) * 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10031872B1 (en) 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
US10877701B2 (en) * 2017-02-23 2020-12-29 Hitachi, Ltd. Scale-out type storage system
CN110300960B (zh) * 2017-02-28 2023-04-04 株式会社日立制作所 信息系统、管理程序和信息系统的程序更换方法
US10732893B2 (en) * 2017-05-25 2020-08-04 Western Digital Technologies, Inc. Non-volatile memory over fabric controller with memory bypass
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
JP2019079113A (ja) * 2017-10-20 2019-05-23 株式会社日立製作所 ストレージ装置、データ管理方法、及びデータ管理プログラム
KR102507140B1 (ko) * 2017-11-13 2023-03-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20190179547A1 (en) * 2017-12-13 2019-06-13 Micron Technology, Inc. Performance Level Adjustments in Memory Devices
US10592173B2 (en) 2018-01-10 2020-03-17 International Business Machines Corporation Increasing storage efficiency of a data protection technique
US10691354B1 (en) 2018-01-31 2020-06-23 EMC IP Holding Company LLC Method and system of disk access pattern selection for content based storage RAID system
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
CN110413217B (zh) * 2018-04-28 2023-08-11 伊姆西Ip控股有限责任公司 管理存储系统的方法、设备和计算机程序产品
TWI664569B (zh) * 2018-06-05 2019-07-01 慧榮科技股份有限公司 資料儲存裝置及系統資訊的編程方法
CN108874312B (zh) * 2018-05-30 2021-09-17 郑州云海信息技术有限公司 数据存储方法以及存储设备
US10936404B2 (en) * 2018-06-30 2021-03-02 Intel Corporation Technologies for error detection in compressed data streams
WO2020078470A1 (zh) 2018-10-18 2020-04-23 上海寒武纪信息科技有限公司 片上网络数据处理方法及装置
JP2020071583A (ja) * 2018-10-30 2020-05-07 株式会社日立製作所 データ管理装置、データ管理方法、及びデータ管理プログラム
JP2020080130A (ja) * 2018-11-14 2020-05-28 株式会社日立製作所 ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム
CN111610931B (zh) 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610929B (zh) * 2019-02-26 2023-04-14 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610930B (zh) 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111611178B (zh) 2019-02-26 2023-05-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US11372984B2 (en) * 2019-08-14 2022-06-28 International Business Machines Corporation Key-compressible encryption
US20210064368A1 (en) * 2019-08-28 2021-03-04 Micron Technology, Inc. Command tracking
JP7034132B2 (ja) * 2019-12-20 2022-03-11 株式会社日立製作所 ストレージシステムおよびストレージシステムのデータ圧縮方法
JP7197541B2 (ja) * 2020-04-01 2022-12-27 株式会社日立製作所 ストレージ装置
JP2021190150A (ja) 2020-06-02 2021-12-13 キオクシア株式会社 メモリシステム及びメモリコントローラ
CN112328172B (zh) * 2020-10-27 2022-04-19 北京百度网讯科技有限公司 数据存储方法、装置及数据读取方法、装置
RU2752782C1 (ru) * 2020-12-18 2021-08-03 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Способ записи секторных данных в кэш-память
CN112631518B (zh) * 2020-12-25 2022-07-26 苏州浪潮智能科技有限公司 一种数据存储的方法和设备
US11513961B2 (en) * 2021-01-28 2022-11-29 EMC IP Holding Company LLC Online heuristic sequentiality detection over input/output streams for cache systems in large address spaces
JP2023070797A (ja) * 2021-11-10 2023-05-22 キオクシア株式会社 メモリシステムおよび方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6467022B1 (en) * 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US6795895B2 (en) * 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
JP3673274B1 (ja) * 2002-05-13 2005-07-20 トレック・2000・インターナショナル・リミテッド ポータブルデータ記憶デバイスに記憶されたデータを圧縮および解凍するためのシステムおよび装置
JP4220726B2 (ja) * 2002-06-05 2009-02-04 株式会社日立製作所 外部記憶装置システム及び記憶制御装置
US7181457B2 (en) * 2003-05-28 2007-02-20 Pervasive Software, Inc. System and method for utilizing compression in database caches to facilitate access to database information
US7162584B2 (en) 2003-12-29 2007-01-09 Intel Corporation Mechanism to include hints within compressed data
US7424482B2 (en) * 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
US7383399B2 (en) * 2004-06-30 2008-06-03 Intel Corporation Method and apparatus for memory compression
US7568075B2 (en) * 2005-09-22 2009-07-28 Hitachi, Ltd. Apparatus, system and method for making endurance of storage media
CN101346883A (zh) * 2005-10-26 2009-01-14 斯多维兹有限公司 用于块模式访问存储的数据压缩的方法和系统
JP4757038B2 (ja) 2006-01-25 2011-08-24 株式会社日立製作所 ストレージシステム及び記憶制御装置
CN101398744B (zh) * 2007-09-26 2011-12-28 新奥特硅谷视频技术有限责任公司 利用虚拟文件系统技术实现网络数据处理的方法及系统
JP5112003B2 (ja) * 2007-10-19 2013-01-09 株式会社日立製作所 ストレージ装置及びこれを用いたデータ格納方法
US8131927B2 (en) * 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US8108646B2 (en) * 2009-01-30 2012-01-31 Hitachi Ltd. Storage system and storage control method that compress and store data elements
US9311002B1 (en) * 2010-06-29 2016-04-12 Emc Corporation Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
US9582426B2 (en) * 2013-08-20 2017-02-28 International Business Machines Corporation Hardware managed compressed cache

Also Published As

Publication number Publication date
US20180173632A1 (en) 2018-06-21
US20160004642A1 (en) 2016-01-07
JP6212137B2 (ja) 2017-10-11
CN104956312A (zh) 2015-09-30
US9916248B2 (en) 2018-03-13
CN104956312B (zh) 2018-02-13
GB201515174D0 (en) 2015-10-07
JPWO2015087424A1 (ja) 2017-03-16
GB2536514A (en) 2016-09-21
CN108108311A (zh) 2018-06-01
WO2015087424A1 (ja) 2015-06-18

Similar Documents

Publication Publication Date Title
DE112013006655T5 (de) Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE69831944T2 (de) Vorrichtung und verfahren zur sicherung eines plattenspeichersystem
DE102012216034B4 (de) Direkte Speicheradressierung für Solid-State-Laufwerke
DE69626569T2 (de) Datenkompressionsverfahren und Struktur für eine Speichereinheit mit direktem Zugriff
DE69938378T2 (de) Kopieren von Daten in Speichersystemen
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE112015000710T5 (de) Verteiltes Speichersystem
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
US20150074342A1 (en) Method for managing storage system using flash memory, and computer
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112010003794B4 (de) Datenspeicherung unter Verwendung von Bitmaps
DE112013006549T5 (de) Computersystem und Datensteuerverfahren
DE112013005903T5 (de) Speichersystem und Speichersteuerungsverfahren
DE112014003349T5 (de) Verfahren und Gerät zum Ausführen atomarer Schreibvorgänge
DE102012218269B4 (de) Schnittstelle zur Verwaltung von Datenverschiebung in einem Speichersystem mit thin provisioning
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102009031923A1 (de) Verfahren zum Verwalten von Datenobjekten
DE112005001050T5 (de) Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0012080000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee