DE112013006565T5 - Speichervorrichtung - Google Patents

Speichervorrichtung Download PDF

Info

Publication number
DE112013006565T5
DE112013006565T5 DE112013006565.7T DE112013006565T DE112013006565T5 DE 112013006565 T5 DE112013006565 T5 DE 112013006565T5 DE 112013006565 T DE112013006565 T DE 112013006565T DE 112013006565 T5 DE112013006565 T5 DE 112013006565T5
Authority
DE
Germany
Prior art keywords
data
memory
capacity
ssd
area
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
DE112013006565.7T
Other languages
English (en)
Inventor
Hideyuki Koseki
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 DE112013006565T5 publication Critical patent/DE112013006565T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Eine Speichervorrichtung umfasst eine Vielzahl von Speichereinheiten sowie eine Speichersteuereinheit, die die Speichereinheiten als eine RAID-Gruppe steuert. Jede Speichereinheit ist mit einem Chip eines nichtflüchtigen Halbleiterspeichers (d. h. Flash-Speichers) und einer Speichersteuerung versehen, die Daten komprimiert und die komprimierten Daten in den Chips der nichtflüchtigen Halbleiterspeicher speichert. Die Speichersteuerung stellt einen Logikspeicherbereich der Speichersteuereinheit zur Verfügung. Die Speichersteuereinheit unterteilt den Logikspeicherbereich in eine Vielzahl von Eingängen, von denen jeder einen Logikspeicherbereich einer vorgeschriebenen Größe bildet, akquiriert von entsprechenden Speichereinheiten Kapazitätsinformationen über die im nichtflüchtigen Halbleiterspeicher gespeicherte Datenkapazität und tauscht Daten der Eingänge zwischen den Halbleiterspeichereinheiten auf der Basis der Kapazitätsinformationen aus.

Description

  • Die vorliegende Erfindung betrifft eine Speichervorrichtung, die mit Speichereinheiten versehen ist, welche eine Datenkompressionsfunktion besitzen.
  • Eine Speichervorrichtung weist üblicherweise physikalische Speichereinheiten zum Speichern von Daten und eine Steuereinheit zum Steuern der physikalischen Speichereinheiten auf. Die Steuereinheit stellt Datenspeicherräume (generell Logikvolumina) einem Computer (d. h. einem Wirtcomputer) zur Verfügung, der an die Speichervorrichtung angeschlossen ist.
  • Durch Verwendung einer Vielzahl von physikalischen Speichereinheiten in einer RAID(redundante Anordnung von unabhängigen (oder preiswerten) Platten)-Konfiguration wird bei einer Speichervorrichtung die Geschwindigkeit der I/O-Bearbeitung erhöht und ein hoher Widerstand gegenüber Problemen mit physikalischen Speichereinheiten erzielt.
  • Obwohl eine Speichervorrichtung üblicherweise eine große Zahl von Hartplattenantrieben (HDDs) als physikalische Speichereinheiten besitzt, besitzen heutzutage physikalische Speichereinheiten mit Flash-Speichern (FMs) als physikalische Speichermedien, wie Festkörperantriebe (SSDs), anstelle von HDDs eine größere Anziehungskraft. Der SSD besitzt den Vorteil, dass er in der Lage ist, eine I/O-Bearbeitung wesentlich schneller als HDDs durchzuführen.
  • In den letzten Jahren ist das Volumen der in einer Speichervorrichtung gespeicherten Daten immer mehr angestiegen. Unter Berücksichtigung dieses Trends ist die Datenkompressionstechnologie zur Reduzierung des Volumens der zu speichernden Daten und somit zur Kostenersparnis der Speichervorrichtungen immer attraktiver geworden. Da SSDs insbesondere mit höheren Kosten als HDDs pro bit verbunden sind, besteht ein echter Bedarf zur Verringerung des Volumens der gespeicherten Daten und zur Erhöhung der augenscheinlichen Speicherkapazität durch Verwendung einer geeigneten Kompressionstechnologie.
  • Die Veröffentlichung No. Hei 8(1996)-249128 (Patentdokument 1) der ungeprüften japanischen Patentanmeldung offenbart eine Technik, mit der von einem Wirtcomputer über die Steuereinheit einer Speichervorrichtung (hiernach als Speichersteuereinheit bezeichnet) empfangene Daten in der Speichersteuereinheit komprimiert und komprimierte Daten in einem HDD gespeichert werden.
  • Die PCT/JP20111/003204 (Patentdokument 2) offenbart eine Technik in Bezug auf einen Flash-Memory-Speicher (hiernach als SSD bezeichnet), bei dem eine Steuereinheit in einem SSD (hiernach als SSD-Steuereinheit bezeichnet) eine Datenkompressionsfunktion besitzt und dessen virtuelle logische Kapazität, die für eine externe Vorrichtung (Speichersteuereinheit) verfügbar gemacht wird, mit der Datenkompressionsrate variiert. Je geringer die Datengröße nach der Kompression ist, desto größer ist die vom SSD der externen Vorrichtung zur Verfügung gestellte virtuelle logische Kapazität. Da die Datengröße nach der Kompression vom Muster der zu komprimierenden Daten abhängt, ist sie nicht konstant. Aus diesem Grund kann sich die virtuelle logische Kapazität, die externen Vorrichtungen zur Verfügung gestellt wird, von einem SSD zum anderen unterscheiden, wenn die Speichervorrichtung mit einer Vielzahl von SSDs versehen ist.
  • Da bei der Datenkompression durch eine Speichersteuereinheit, die bei einer bekannten Speichervorrichtung Anwendung findet, wie bei der im Patentdokument 1 beschriebenen, die Speichersteuereinheit zuerst Daten komprimiert, die komprimierten Daten in Sätze einer festen Größe unterteilt und die Datensätze in verschiedenen Speichern einschließlich SSDs und HDDs speichert (striping), ist die Logikkapazität der die RAID-Gruppe bildenden Speicher immer gleichmäßig.
  • Die Speichersteuereinheit gemäß Patentdokument 2 führt ein Daten-Striping durch und speichert Sätze von Daten in der Vielzahl von SSDs in der RAID-Gruppe. Zum Speichern der einem Striping unterzogenen Daten in den SSDs muss jeder SSD in der RAID-Gruppe einen gleichen Freiraum besitzen. Mit anderen Worten, wenn ein SSD in der RAID-Gruppe seinen Freiraum verliert, können keine weiteren Daten aufs Neue gespeichert werden, selbst wenn andere SDDs Freiräume besitzen.
  • Wenn daher eine Datenkompression innerhalb von SSDs durchgeführt wird, unterscheidet sich die tatsächlich in einem Flash-Speicher, bei dem es sich um ein Speichermedium handelt, gespeicherte Datenmenge von einem SSD zum anderen, da die Kompressionsrate vom Datenmuster abhängt, selbst wenn die Speichersteuereinheit die gleichen Datenmengen in der Vielzahl der SSDs, die eine RAID-Gruppe bilden, speichert. Wenn somit als Konsequenz freie Kapazitäten unter den eine RAID-Gruppe bildenden SSDs infolge einer Kompression ungleichmäßig werden, ist es nicht mehr möglich, als neues Daten zu speichern, wenn ein SSD keine freie Kapazität mehr besitzt, selbst wenn andere SSDs freie Kapazitäten aufweisen, die somit nutzlos werden.
  • Auf diese Weise entsteht ein Problem für die Speichervorrichtung, indem dann, wenn jede der Speichereinheiten, die eine RAID-Gruppe bilden, eine Datenkompression durchführt, der Nutzungsgrad der Speicherkapazitäten der Speichervorrichtungen sinkt.
  • Im Hinblick auf das vorstehend beschriebene Problem sieht die Erfindung eine Speichervorrichtung vor, die eine Vielzahl von Halbleiterspeichereinheiten aufweist, die jeweils eine Vielzahl von Chips von nichtflüchtigen Halbleiterspeichern besitzen, und eine Speichersteuerung umfasst, die Daten komprimiert und die komprimierten Daten in der Vielzahl der Chips von nichtflüchtigen Halbleiterspeichern speichert, sowie eine Speichersteuereinheit, die eine Vielzahl von RAID-Gruppen steuert, welche eine vorgegebene Anzahl von Halbleiterspeichereinheiten umfassen, die in der Vielzahl der Halbleiterspeichereinheiten enthalten sind, und die das Schreiben und Lesen von Daten in die Vielzahl der Halbleiterspeichereinheiten und aus diesen steuert.
  • Die Speichersteuerung assoziiert Speicherbereiche der Vielzahl der Chips der nichtflüchtigen Halbleiterspeicher mit Logikspeicherbereichen und stellt dieselben der Speichersteuereinheit zur Verfügung. Die Speichersteuereinheit unterteilt den Logikspeicherbereich, der von jeder der Vielzahl der Halbleiterspeichereinheiten zur Verfügung gestellt wurde, in eine Vielzahl von Entries (Eingängen), von denen jeder einen Logikspeicherbereich einer vorgegebenen Größe bildet, akquiriert von jeder Vielzahl der Halbleiterspeichereinheiten Kapazitätsinformationen in Bezug auf die Kapazität der in der Vielzahl der Chips der nichtflüchtigen Halbleiterspeicher gespeicherten Daten, selektiert auf der Basis der Kapazitätsinformationen eine erste Halbleiterspeichereinheit und eine zweite Halbleiterspeichereinheit, die eine Datenspeichermenge besitzt, welche um mindestens einen vorgegebenen Wert größer ist als die der ersten Halbleiterspeichereinheit, aus der Vielzahl der Halbleiterspeichereinheiten und tauscht auf der Basis der Kapazitätsinformationen Daten von Eingängen, die in der Datenspeichermenge kleiner sind, aus der Vielzahl der zur ersten Halbleiterspeichereinheit gehörenden Eingänge mit Daten von Eingängen aus, die in der Datenspeichermenge größer sind, aus der Vielzahl der Eingänge, die zur zweiten Halbleiterspeichereinheit gehören.
  • Die Unterschiede in der freien physikalischen Kapazität unter den Speichereinheiten, die eine RAID-Gruppe bilden, können somit reduziert werden. Die Verringerung der Unterschiede der freien physikalischen Kapazität führt zu einer Verringerung der Unterschiede in der maximalen physikalischen Kapazität. Folglich können die nutzbaren Logikkapazitäten der RAID-Gruppe erweitert werden. Es wird daher möglich, durch Datenkompression in den Speichereinheiten ein System mit niedrigen Kosten zu konzipieren, das die Speichervorrichtung umfasst, und das System mit noch niedrigeren Kosten auszustatten, indem die nutzbaren Logikkapazitäten der RAID-Gruppe erweitert werden.
  • Es folgt nunmehr eine Kurzbeschreibung der Zeichnungen.
  • 1 zeigt die Kontur des Adressraumes eines SSD in einer ersten Ausführungsform;
  • 2 zeigt die Kontur der ersten Ausführungsform;
  • 3 zeigt auf andere Weise die Kontur der ersten Ausführungsform;
  • 4 zeigt ein Beispiel eines Speichersystems, das die Speichervorrichtung der ersten Ausführungsform umfasst;
  • 5 zeigt ein Beispiel einer SSD-Konfiguration der ersten Ausführungsform;
  • 6 zeigt ein Beispiel eines Flash-Memory-Chips der ersten Ausführungsform;
  • 7 zeigt ein Beispiel des Adressraumes eines SSD der ersten Ausführungsform;
  • 8 zeigt die Kontur einer Kapazitätsvirtualisierungstechnik eines höheren Levels der ersten Ausführungsform;
  • 9 zeigt ein Beispiel der Beziehung zwischen der Bearbeitung der Kapazitätsegalisierung und einem virtuellen Volumen der ersten Ausführungsform;
  • 10 zeigt ein Beispiel der Konfiguration eines Pufferspeichers, der in der Speichersteuereinheit der ersten Ausführungsform vorgesehen ist;
  • 11 zeigt ein Beispiel der Konfiguration einer Plattenmanagement-TBL in der ersten Ausführungsform;
  • 12 zeigt ein Beispiel der Konfiguration einer RG-Management-TBL in der ersten Ausführungsform;
  • 13 zeigt ein Beispiel der Konfiguration einer Pool-Management-TBL in der ersten Ausführungsform;
  • 14 zeigt ein Beispiel der Konfiguration einer Eingangs-Management-TBL in der ersten Ausführungsform;
  • 15 zeigt ein Beispiel der Konfiguration einer Speicherbereichs-Management-TBL in der ersten Ausführungsform;
  • 16 zeigt ein Beispiel der Konfiguration einer Management-TBL für ein virtuelles Volumen in der ersten Ausführungsform;
  • 17 zeigt ein Beispiel der Konfiguration eines Pufferspeichers, der im SSD der ersten Ausführungsform vorgesehen ist;
  • 18 zeigt ein Beispiel der Konfiguration einer logisch-physikalischen Umwandlungs-TBL in der ersten Ausführungsform;
  • 19 zeigt ein Beispiel der Konfiguration einer Block-Management-TBL in der ersten Ausführungsform;
  • 20 zeigt ein Beispiel der Konfiguration einer Kapazitätsmanagementtabelle der ersten Ausführungsform;
  • 21 ist ein Ablaufdiagramm in Bezug auf die Aufgabe der Speichersteuereinheit der ersten Ausführungsform;
  • 22 ist ein Ablaufdiagramm, das ein Beispiel der von der Speichersteuereinheit der ersten Ausführungsform durchgeführten Datenschreibbearbeitung zeigt;
  • 23 ist ein Ablaufdiagramm, das ein Beispiel der Bereichszuteilungs-Bearbeitung der ersten Ausführungsform zeigt;
  • 24 ist ein Ablaufdiagramm, das ein Beispiel der SSD-Schreibbearbeitung der ersten Ausführungsform zeigt;
  • 25 ist ein Ablaufdiagramm, das ein Beispiel der Leseanforderungsbearbeitung der ersten Ausführungsform zeigt;
  • 26 ist ein Ablaufdiagramm, das Einzelheiten der Bearbeitung einer regulären Überwachung der ersten Ausführungsform zeigt;
  • 27 ist ein Ablaufdiagramm, das Einzelheiten der Bearbeitung der Kapazitätsegalisierung bei S106 in der ersten Ausführungsform zeigt;
  • 28 zeigt die Kontur einer In-RG-Datenverschiebung, die ein Beispiel einer Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung bei der der ersten Ausführungsform darstellt;
  • 29 zeigt die Kontur der Inter-RG-Datenverschiebung, die ein anderes Beispiel der Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung bei der ersten Ausführungsform darstellt;
  • 30 ist ein Ablaufdiagramm, das ein anderes Beispiel der Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung der ersten Ausführungsform zeigt;
  • 31 zeigt die Kontur einer Inter-RG-Datenverschiebung, die ein Beispiel einer Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung der ersten Ausführungsform darstellt;
  • 32 ist ein Ablaufdiagramm, das ein anderes Beispiel der Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung der ersten Ausführungsform zeigt,
  • 33 ist ein Ablaufdiagramm, das noch ein anderes Beispiel der Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung der ersten Ausführungsform zeigt;
  • 34 zeigt die Kontur des Adressraumes eines SSD in einer zweiten Ausführungsform;
  • 35 ist ein Ablaufdiagramm, das Einzelheiten der Bereichszuteilungs-Bearbeitung S505 in der zweiten Ausführungsform zeigt;
  • 36 zeigt die Kontur einer Hierarchieumordnungsfunktion in einer dritten Ausführungsform;
  • 37 zeigt ein Beispiel der Konfiguration einer RG-Management-TBL in der dritten Ausführungsform;
  • 38 zeigt ein Beispiel der Konfiguration der Management-TBL für virtuelles Volumen der dritten Ausführungsform;
  • 39 ist ein Ablaufdiagramm, das die Kontur der Aufgabe einer Steuerspeichereinheit der dritten Ausführungsform zeigt; und
  • 40 ist ein Ablaufdiagramm, das ein Beispiel der Hierarchieumordnungsbearbeitung der dritten Ausführung zeigt.
  • Eine Reihe von Ausführungsformen wird nachfolgend in Verbindung mit den beigefügten Zeichnungen beschrieben.
  • Erste Ausführungsform
  • Als erstes wird diese Ausführungsform in Verbindung mit den 1 bis 3 erläutert.
  • 1 zeigt eine Kontur eines Adressraumes eines SSD in der ersten Ausführungsform.
  • Der SSD als Element der Erfindung besitzt einen Logikadressraum (hiernach „Logikraum”), bei dem es sich um einen Logikadressraum handelt, der externen Vorrichtungen (einschließlich einer Speichersteuereinheit unter Verwendung des SSD) zur Verfügung gestellt wird, und einen physikalischen Adressraum (hiernach „physikalischer Raum”), bei dem es sich um einen physikalischen Adressraum handelt, in dem Daten, die dem Logikadressraum entsprechen, aktuell gespeichert werden. In der Terminologie der nachfolgenden Beschreibung wird die Größe des Adressraumes als eine „Kapazität” definiert. Somit handelt es sich bei der Größe eines Logikadressraumes um eine „Logikkapazität” und bei der eines physikalischen Adressraumes um eine „physikalische Kapazität”.
  • Der SSD als Element der Erfindung besitzt eine Virtualisierungsfunktion für eine Kapazität eines niedrigeren Levels und eine Datenkompressionsfunktion.
  • Mit der Virtualisierungsfunktion für eine Kapazität eines niedrigeren Levels kann der SSD den externen Vorrichtungen einen Logikraum zur Verfügung stellen, der größer ist als der entsprechende physikalische Raum.
  • Mit der Datenkompressionsfunktion komprimiert der SSD intern Daten, die von externen Vorrichtungen eingeschrieben wurden, und speichert die Daten nach einer Kompression (hiernach „komprimierte Daten”) in einem Flash-Speicher (FM), bei dem es sich um ein physikalisches Speichermedium handelt. Wenn somit ein vorgegebener Datensatz eingeschrieben worden ist, kann die tatsächlich verbrauchte physikalische Kapazität durch die Kompression reduziert werden. Die verbrauchte Menge der physikalischen Kapazität hängt jedoch von der Kompressionsrate der Daten ab. Die Datenkompressionsrate kann berechnet werden, indem die für das Speichern der komprimierten Daten verbrauchte physikalische Kapazität durch die aus der Schreibanforderung resultierende Datengröße geteilt wird. Wenn daher Schreibdaten von 10 KB durch die Kompression in der Größe auf 2 KB reduziert werden, beträgt die Datenkompressionsrate 1/5 (20%). Im Zusammenhang mit der Erfindung ist daher der Wert der Datenkompressionsrate um so geringer (näher an 0%), desto höher die Effektivität der Kompression ist.
  • Die Obergrenze der Datenkompressionsrate wird als maximale Datenkompressionsrate (hiernach „maximale Kompressionsrate”) definiert. Bei der maximalen Kompressionsrate handelt es sich um die Datenkompressionsrate, mit der der maximale Datenkompressionseffekt erreicht wird, bei dem es sich um einen Parameter handelt, der vom Kompressionsalgorithmus und von einigen Faktoren, die der SSD besitzt, bestimmt oder geschätzt wird. In der nachfolgenden Beschreibung wird von einer Ausführungsform ausgegangen, bei der die maximale Kompressionsrate 1/8 (12,5%) beträgt. Auf diese Weise variiert die Kompressionsrate mit dem Muster der im SSD zu speichernden Daten von der maximalen Kompressionsrate (12,5%) aus bis zu keinem Kompressionseffekt (100%).
  • Während der erfindungsgemäß verwendete SSD externen Vorrichtungen eine größere Logikkapazität als die entsprechende Logikkapazität zur Verfügung stellen kann, indem die Kapazitätsvirtualisierungsfunktion mit der Datenkompressionsfunktion verbunden wird, besitzt er die Charakteristik, dass die Logikkapazität, die er zur Verfügung stellen kann (nämlich die Kapazität, die die externen Vorrichtungen nutzen können), mit der Datenkompressionsrate variiert. Wenn er beispielsweise mit einer Datenkompression bei 1/8, der maximalen Kompressionsrate, Erfolg hat, wenn die Daten in einem SSD mit einer physikalischen Kapazität von 100 GB gespeichert werden, erhöht sich die Logikkapazität des SSD achtmal auf 800 GB. Wenn andererseits kein Kompressionseffekt erreicht wird, wenn nämlich die Kompressionsrate 100% beträgt, entspricht die Logikkapazität des SSD der physikalischen Kapazität, d. h. 100 GB.
  • Somit kann die Logikkapazität, die externen Vorrichtungen zur Verfügung gestellt werden kann, über eine Gleichung „externen Vorrichtungen zur Verfügung gestellte Logikkapazität = physikalische Kapazität ÷ Kompressionsrate” erhalten werden.
  • Die Beziehung der Korrespondenz zwischen dem Logikraum und dem physikalischen Raum eines SSD wird nachfolgend in Verbindung mit 1 im Einzelnen erläutert. 1 zeigt den Zustand bei einem vorgegebenen Zeitpunkt, bei dem der SSD in die Lage versetzt wurde, einen Logikraum von 800 GB am Maximum vorzusehen, spezifiziert auf eine physikalische Kapazität von 100 GB und eine maximale Kompressionsrate von 1/8.
  • Eine maximale Logikkapazität 30001 bildet die Obergrenze der Logikkapazität, die der SSD externen Vorrichtungen zur Verfügung stellen kann, und diese Kapazität beträgt gemäß 1 800 GB. Ein Logikraum von 800 GB kann jedoch externen Vorrichtungen nicht immer zur Verfügung gestellt werden, da der zur Verfügung stehende Logikraum mit der Kompressionsrate der im SSD verwirklichten Datenkompression variiert. Aus diesem Grund sind einige Logikräume in einem SSD nutzbar, während andere nicht nutzbar sind.
  • Ein nutzbarer Logikraum 30002 ist der Logikraum, den der SSD externen Vorrichtungen zur Verfügung stellen kann, die die Größe des Raumes als die Logikkapazität erkennen, welche der SSD ihnen zur Verfügung stellen kann. Gemäß 1 beträgt diese Größe 650 GB. Ein nichtnutzbarer Logikraum 30003 entspricht dem Logikraumverlust, der auftritt, wenn die im SSD gespeicherten Daten nicht auf die maximale Kompressionsrate von 1/8 komprimiert werden können. Seine Größe beträgt gemäß 1 150 GB.
  • Somit entspricht die maximale Logikkapazität 30001 der Summe aus der Größe (Kapazität) des nutzbaren Logikraumes 30002 und der Größe des nichtnutzbaren Logikraumes 30003.
  • Der nutzbare Logikraum 30002 umfasst einen freien Logikraum 30004 und einen benutzten Logikraum 30005.
  • Der benutzte Logikraum 30005 ist ein Raum, der von einer externen Vorrichtung im nutzbaren Logikraum 30002 bereits benutzt wurde. Genauer gesagt, in diesem Raum sind von der externen Vorrichtung eingeschriebene Daten bereits gespeichert. Die dort gespeicherten Daten sind jedoch in dem SSD komprimiert, und die komprimierten Daten sind in einem einen physikalischen Raum bildenden FM weiter gespeichert.
  • Die Größe eines benutzten physikalischen Raumes 30005 gemäß 1 beträgt 250 GB.
  • Andererseits handelt es sich bei dem freien Logikraum 30004 um einen Logikraum, der von keiner externen Vorrichtung im nutzbaren Logikraum 30002 benutzt wird. Dieser Bereich, in dem noch keine Daten von irgendeiner externen Vorrichtung gespeichert sind, befindet sich in einem freien Zustand. In 1 beträgt seine Größe 400 GB.
  • Als Nächstes wird der physikalische Raum des relevanten SSD beschrieben.
  • Dieser physikalische Raum umfasst einen benutzten physikalischen Raum 30007 und einen freien physikalischen Raum 30006. Der benutzte physikalische Raum 30007 ist ein Raum passend zum benutzten Logikraum 30005, d. h. ein Raum, in dem komprimierte Daten gespeichert sind, die aus der Kompression der in den benutzten Logikraum 30005 eingeschriebenen Daten resultieren. Gemäß 1 beträgt seine Größe 50 GB. In dem in 1 gezeigten Zustand benutzt eine externe Vorrichtung einen Logikraum entsprechend 250 GB zum Speichern von Daten, und es ist gezeigt, dass die tatsächlich verbrauchte physikalische Kapazität nur 50 GB beträgt, und zwar als Ergebnis der Kompression der Daten auf einen Durchschnitt von 1/5 innerhalb des SSD.
  • Andererseits sind im freien physikalischen Raum 30006 keine Daten gespeichert. Es handelt sich um eine freie physikalische Kapazität. Gemäß 1 beträgt seine Größe 50 GB.
  • Der freie physikalische Raum 30006 ist ein Raum passend zum freien Logikraum 30004. Genauer gesagt, die Größe des freien Logikraumes 30004 entspricht dem Quotienten aus der Größe des freien physikalischen Raumes 30006 und der maximalen Kompressionsrate. In der Zeichnung ist eine freie physikalische Kapazität von 50 GB angegeben, und es gibt ferner eine freie Logikkapazität von 400 GB, da die maximale Kompressionsrate des SSD 1/8 beträgt.
  • Man kann somit zusammenfassen, dass der SSD, der in 1 gezeigt ist, eine Logikkapazität von 800 GB maximal externen Vorrichtungen zur Verfügung stellen kann. Wenn die Logikkapazität, die zur Verfügung gestellt werden kann, um Bedürfnisse von außen zu befriedigen, 800 GB beträgt, existiert innerhalb des SSD die Beziehung nutzbare Logikkapazität = maximale Logikkapazität 30001. Die nutzbare Logikkapazität bedeutet die Größe des nutzbaren Logikraumes 30002.
  • Der zum Erreichen einer nutzbaren Logikkapazität von 800 GB geforderte Zustand entspricht einer Speicherung von Daten, die auf die maximale Kompressionsrate von 1/8 komprimiert sind. Die Kompressionsrate der Daten variiert jedoch mit dem Muster und anderen Faktoren der zu speichernden Daten, und in einem extremen Fall können Daten überhaupt nicht komprimiert werden. Im Fall der totalen Unmöglichkeit einer Kompression von Daten beträgt dann die nutzbare Logikkapazität 100 GB entsprechend der jeweiligen physikalischen Kapazität. Da die Datenkompressionsrate die ganze Zeit über variiert, variiert auch die nutzbare Logikkapazität von 100 GB bis zu 800 GB zusammen mit der Veränderung der Kompressionsrate.
  • Somit variiert in dem in 1 gezeigten Fall die von externen Vorrichtungen erkannte SSD-Größe von 100 GB bis zu 800 GB. Da sich im nichtbenutzten Zustand des SSD der gesamte physikalische Raum von 100 GB in einem freien Zustand befindet, beträgt die von externen Vorrichtungen erkannte SSD-Größe 800 GB. Da es sich jedoch bei der Größe des freien Logikraumes 30004 um einen erwarteten Wert handelt, kann diese Größe auch erhalten werden, indem man den freien physikalischen Raum 30006 durch die durchschnittliche Kompressionsrate teilt.
  • 2 zeigt eine RAID-Gruppe (hiernach abgekürzt als „RG”), die durch Verwendung von drei SSDs (SSD11, SSD 12 und SSD 13) des in Verbindung mit 1 beschriebenen Typs konzipiert wurde.
  • Bei dieser Konfiguration umfasst der physikalische Raum des SSD 11 einen freien physikalischen Raum 30036 und einen benutzten physikalischen Raum 30037, und der passende Logikraum besitzt einen nichtnutzbaren Logikraum 30033, einen freien Logikraum 30034 und einen benutzten Logikraum 30035. In entsprechender Weise umfasst der physikalische Raum des SSD 11 einen freien physikalischen Raum 30036 und einen benutzten physikalischen Raum 30037, und der passende Logikraum weist einen nichtnutzbaren Logikraum 30033, einen freien Logikraum 30034 und einen benutzten Logikraum 30035 auf.
  • Des Weiteren ist in der relevanten RG eine Vielzahl von Speicherbereichen (extents) durch eine Speichersteuereinheit (nicht gezeigt) hergestellt. In der Zeichnung ist ein Bereich 30010 als Beispiel der Konfiguration eines Speicherbereiches dargestellt. Die Speichersteuereinheit benutzt den Logikraum des SSD zum Konfigurieren des Bereiches.
  • Der hier in Rede stehende Speicherbereich wird durch „Eingänge” (entries) gebildet, die jeweils durch Nutzung eines Logikraumes einer festen Größe von einem SSD oder einem anderen hergestellt sind. Im Bereich 30010 sind ein Eingang 30011, der aus irgendeinem zur Verfügung stehenden Logikraum im SSD 11 hergestellt wurde, ein Eingang 30012, der von irgendeinem zur Verfügung stehenden Logikraum im SSD 12 hergestellt wurde, und ein Eingang 30013, der von irgendeinem zur Verfügung stehenden Logikraum im SSD 13 hergestellt wurde, vorhanden. Die Eingänge 30011, 30012 und 30013 besitzen eine identische Größe. Die in jedem Eingang gespeicherten Daten sind jedoch innerhalb des SSD komprimiert und im physikalischen Raum als komprimierte Daten gespeichert. In dem in der Zeichnung dargestellten Zustand sind die Daten des Eingangs 30011 im SSD 11 komprimiert und als komprimierte Daten 30014 gespeichert. Die Daten des Eingangs 30013 sind im SSD 13 komprimiert und als komprimierte Daten 30016 gespeichert. In diesem Prozess verleihen Unterschiede in der Kompressionsrate den Sätzen der komprimierten Daten 30014, 30015 und 30016 eine ungleiche Größe. In der Zeichnung geben die Unterschiede in der Viereckgröße die folgende Beziehung wieder: komprimierte Daten 30016 > komprimierte Daten 30015 > komprimierte Daten 30014. Die Kompressionsrate ist höher in der Reihenfolge komprimierte Daten 30014 > komprimierte Daten 30015 > komprimierte Daten 30016. Eine höhere Kompressionsrate in diesem Zusammenhang bedeutet die Fähigkeit, die komprimierten Daten kleiner zu machen.
  • Ein existierender Raumbereich 30020 zeigt an, dass Bereiche bereits im relevanten Logikraum hergestellt wurden. Die Größe des Raumes hängt von der Größe des benutzten Logikraumes in jedem SSD ab. Ein akzeptabler Raumbereich 30021 bedeutet, dass Bereiche im relevanten Logikraum hergestellt werden können, deren Größe von der Größe des freien Logikraumes des SSD abhängt, dessen freier Logikraum der kleinste in der RG ist. Ein nichtakzeptabler Raumbereich 30022 bedeutet, dass keine Bereiche im relevanten Logikraum hergestellt werden können, dessen Größe von der Größe des nichtnutzbaren Logikraumes des SSD abhängt, dessen nichtnutzbarer Logikraum der größte in der RG ist.
  • Da die Speicherbereiche hier in eine gleiche Größe für jeden SSD „gestriped” sind, besitzen die benutzten Logikräume 30035, 30045 und 30055 die gleiche Größe unter den SSDs. Wenn die RG aus drei SSDs besteht, entspricht die Größe des existierenden Raumbereiches 30020 dem dreifachen Wert der Größe des benutzten Logikraumes in jedem dieser SSDs. In jedem einzelnen SSD sind jedoch Daten in einem physikalischen Raum als komprimierte Daten komprimiert und gespeichert. Da die Wahrscheinlichkeit, dass die in den unterschiedlichen SSDs gespeicherten Daten das gleiche Datenmuster besitzen, niedrig ist, ist es sehr wahrscheinlich, dass die Kompressionseffekte der SSDs ungleich sind. Daher sind auch die Sätze der in den SSDs erzeugten komprimierten Daten sehr wahrscheinlich in der Größe ungleich. Das Diagramm zeigt, wie die unterschiedlichen durchschnittlichen Kompressionsraten in den SSDs bewirken, dass die benutzten physikalischen Räume 30037, 30047 und 30057, die physikalische Nutzungsmengen der SSDs bilden, eine unterschiedliche Größe besitzen. Da ihre Größen die Beziehung der benutzten physikalischen Räume 30037 < 30047 < 30057 aufweisen, kann man feststellen, dass die Größen der durchschnittlichen Kompressionsraten die Beziehung 30037 > 30047 > 30057 aufweisen.
  • Die Unterschiede in der physikalischen Nutzungsquantität bringen ungleiche Größen des freien Logikraumes 30034, 30044 und 30055 in den SSDs mit sich. Diese Situation führt ferner zur Ungleichheit zwischen den freien Logikräumen 30034, 30044 und 30055 und zwischen den nichtnutzbaren Logikräumen 30033, 30043 und 30053.
  • Was freie Logikräume anbetrifft, so ist aufgrund der Tatsache, dass der SSD 11 den größten freien physikalischen Raum 30036 besitzt, auch sein freier Logikraum 30034 der größte.
  • Wenn irgendein neuer Bereich, bei dem es sich um ein Stripevolumen handelt, neu hergestellt werden soll, wird ein freier Logikraum eines gleichen Volumens von jedem SSD verbraucht. Somit ist die Größe eines Bereiches, der in einer vorgegebenen RG hergestellt werden kann, durch den SSD begrenzt, dessen maximale physikalische Kapazität die kleinste unter den SSDs ist, die die RG bilden. Genauer gesagt, die Größe des akzeptablen Raumbereiches 30021 entspricht, wie in 2 gezeigt, dem dreifachen Wert der Größe des freien Logikraumes 30054, der in der RG der kleinste ist. Umgekehrt entspricht die Größe des nichtakzeptablen Raumbereiches 30022 dem dreifachen Wert der Größe des nichtnutzbaren Logikraumes 30053, bei dem es sich um den größten in der RG handelt.
  • Somit führt die Datenkompressionsfunktion von SSDs zu einer Situation, bei der die freie physikalische Kapazität, bei der es sich um die physikalische Restkapazität eines jeden SSD handelt, von einem SSD zum anderen variiert. Dies führt ferner zu einer Ungleichheit der maximalen physikalischen Kapazität unter den SSDs. Wenn in einer solchen Situation ein neuer Speicherbereich konfiguriert werden soll, ist, selbst wenn ausreichende maximale physikalische Kapazitäten in anderen SSDs verbleiben, die Größe der Kapazität, die eine Herstellung von irgendeinem zusätzlichen Bereich erlaubt, durch den SSD begrenzt, dessen maximale physikalische Kapazität unter den SSDs, die die RG bilden, die kleinste ist.
  • Erfindungsgemäß wird die Größe des akzeptablen Raumbereiches 30021 expandiert oder maximiert. Um dies zu erreichen, wird erfindungsgemäß eine Datenverschiebung durchgeführt, um Unterschiede unter den maximalen physikalischen Kapazitäten der SSDs zu reduzieren, wenn die maximalen physikalischen Kapazitäten der SSDs, die die RG bilden, ungleich sind, wie in 2 gezeigt.
  • 3 zeigt den Zustand der SSDs, wenn der in 2 dargestellte Zustand der Ungleichheit durch die Durchführung einer Kapazitätsegalisierung aufgelöst wurde. Die hier durchgeführte Egalisierung muss nicht dazu führen, dass die freien physikalischen Kapazitäten unter den SSDs einander vollständig entsprechen. Vielmehr ist eine Reduzierung der Unterschiede unter den freien physikalischen Kapazitäten der SSDs ausreichend. Wenn Daten so verschoben werden, um die freien physikalischen Kapazitäten des SSD zu egalisieren, werden jedoch die nutzbaren Logikkapazitäten maximiert.
  • Da die Größe des freien Logikraumes 30054 des SSD 13 ein Minimum besaß, während der freie Logikraum 30034 des SSD 11 und der freie Logikraum 30044 ausreichende Größen besaßen, bevor die Egalisierung durchgeführt wurde (2), war die Größe des akzeptablen Raumbereiches 30021 dreimal so groß wie die maximale physikalische Kapazität 30054 im Zustand der 2. Diese Ungleichheit der maximalen physikalischen Kapazitäten kommt von den ungleichen Größen der freien physikalischen Räume unter den SSDs, die aus Unterschieden im Datenkompressionseffekt (Unterschied in der Größe der komprimierten Daten) von einem SSD zum anderen resultieren.
  • Dann verschiebt die Speichersteuereinheit Daten, um die Größen der freien physikalischen Räume in den SSDs auszugleichen. Genauer gesagt, die Steuereinheit ersetzt Sätze von stärker komprimierten Daten (d. h. Sätze von komprimierten Daten mit geringerer Größe) in SSDs mit größeren freien physikalischen Räumen (d. h. mit kleineren physikalischen Nutzungsmengen) durch Sätze von weniger komprimierten Daten (d. h. Sätze von komprimierten Daten mit größeren Größen) in SSDs mit kleineren freien physikalischen Räumen (d. h. mit größeren physikalischen Nutzungsmengen).
  • Wie in 2 gezeigt, werden die komprimierten Daten 30014, bei denen es sich um stärker komprimierte Daten im SSD 11 mit einem größeren freien physikalischen Raum handelt, und die komprimierten Daten 30016, bei denen es sich um weniger komprimierte Daten im SSD 13 mit einem kleineren freien physikalischen Raum handelt, ausgetauscht.
  • Die Speicherung der komprimierten Daten 30016 mit einer größeren physikalischen Nutzungsmenge in den SSD 11 nach der Durchführung der Egalisierung (3) führt zu einer Abnahme im freien physikalischen Raum des SSD 11. Hiermit wird auch der freie Logikraum 30034 kleiner als in dem Zustand vor der Egalisierung, der in 2 gezeigt ist. Andererseits führt die Speicherung der komprimierten Daten 30014 mit einer kleineren physikalischen Nutzungsmenge in den SSD 13 zu einem Anstieg im freien physikalischen Raum des SSD 13. Hiermit wird auch der freie Logikraum 30054 größer als im Zustand vor der Egalisierung, der in 2 gezeigt ist.
  • Dies führt zu geringeren Diskrepanzen zwischen den freien Logikräumen 30034 und 30044 einerseits und den freien Logikräumen 30054 andererseits. Von diesen drei freien Logikräumen verbleibt der freie Logikraum, der die geringste Größe besitzt, als freier Logikraum 30054, wobei jedoch seine Größe größer ist als im in 2 gezeigten Zustand, der dem Zustand vor der Durchführung der Egalisierung entspricht. Hiermit hat sich auch die Größe des akzeptablen Raumbereiches 30021 vergrößert. Dies ist ein Effekt, der auf die Größenegalisierung der freien physikalischen Räume in den SSDs zurückzuführen ist. Somit ist die Größenegalisierung der freien Logikräume gleichbedeutend mit der Größenegalisierung der freien physikalischen Räume.
  • Wenn die Größenunterschiede unter den freien Logikräumen 30034, 30044 und 30054 eliminiert worden sind, d. h. wenn die Größenunterschiede unter den freien physikalischen Räumen 30036, 30046 und 30056 beseitigt worden sind, wird die Größe des akzeptablen Raumbereiches 30021 maximiert.
  • 4 zeigt ein Beispiel der Konfiguration eines Speichersystems 10000, das eine Speichervorrichtung 10 der ersten Ausführungsform aufweist.
  • Das Speichersystem 10000 umfasst die Speichervorrichtung 10 und einen Wirtcomputer 30. Der Wirtcomputer 30 ist ein Ausführungsbeispiel einer Wirtvorrichtung unter Verwendung der Speichervorrichtung 10. Der Wirtcomputer 30 ist beispielsweise ein Anwendungsserver. Der Wirtcomputer 30 und die Speichervorrichtung 10 stehen beispielsweise über ein Speicherbereichsnetzwerk (SAN) 20 in Verbindung. Als SAN 20 kann beispielsweise ein Faserkanal, eine Kleincomputersystemschnittstelle (SCSI), eine Internetkleincomputersystemschnittstelle (iSCSI), ein universalserieller Bus (USB), ein IEEE 1394-Bus oder ein serial attached SCSI (SAS) Verwendung finden. Anstelle des SAN 20 kann auch irgendein anderer Typ eines Kommunikationsnetzwerkes (d. h. ein Netzwerk für einen lokalen Bereich (LAN)) verwendet werden. Obwohl in der Zeichnung sowohl der Wirtcomputer 30 als auch die Speichervorrichtung 10 als ein Element dargestellt sind, kann auch mindestens einer der beiden Bestandteile in einer Vielzahl von Elementen vorgesehen sein.
  • Der Wirtcomputer 30 gibt Steuerbefehle u. ä. an die Speichervorrichtung 10 und hält diese unter seiner Überwachung, indem er ein Steuerprogramm (nicht gezeigt) ausführt, um Steuerbefehle u. ä. der Speichervorrichtung 10 zuzuführen. Durch die Ausführung der Steuerbefehle durch die Speichervorrichtung 10 können diverse Aufgaben gelöst werden, beispielsweise eine Änderung des RAID-Levels einer RAID-Gruppe (hiernach „RG”), die die Steuervorrichtung 10 besitzt, eine Einstellung des Schwellenwertes der Kapazitätsegalisierung und eine Ein/Ausschaltung der RG-by-RG- oder Poolvolumen-by-Poolvolumen-Kompressionsfunktion. Bei der RAID-Gruppe, die eine Vielzahl von SSDs (oder HDDs) umfasst, handelt es sich um eine Gruppe von physikalischen Speichermedien, die Daten gemäß vorgegebenen RAID-Levels einschließlich RAIDs 0, 1, 1 + 0, 2, 3, 4, 5 und 6 speichert. Als Computer zur Abgabe von Steuerbefehlen an die Speichervorrichtung 10 kann auch ein anderer Computer als der Wirtcomputer 30 verwendet werden.
  • Die Speichervorrichtung 10 besitzt eine Speichersteuereinheit 100 und eine an die Speichersteuereinheit 100 angeschlossene Plattenbox 110.
  • Die Speichersteuereinheit 100 steuert Aktionen der Speichervorrichtung 10. Die Speichervorrichtung 10 besitzt Kommunikationsschnittstellenvorrichtungen, Speicher und Steuervorrichtungen, die angeschlossen sind. Die Kommunikationsschnittstellenvorrichtungen umfassen Wirt-I/Fs 101, bei denen es sich um Vorderendkommunikationsschnittstellenvorrichtungen handelt, und Plattten-I/Fs 107, bei denen es sich um Rückendkommunikationsschnittstellenvorrichtungen handelt. Bei den Speichern handelt es sich um Pufferspeicher (cache memories) 103. Die Steuervorrichtungen sind Prozessoren (d. h. Zentralprozesseinheiten (CPUs)) 104. Die Wirt-I/Fs 101, die Pufferspeicher 103, die Prozessoren 104 und die Platten-I/Fs 107 sind über einen speziellen Verbindungsbus, wie eine Verbindung an periphere Komponenten (PCI), an ein internes Netzwerk 102 angeschlossen und können über das interne Netzwerk 102 kommunizieren. Die Pufferspeicher 103 sind über einen Verbindungsbus, wie einen Doppeldatenrate3-Bus (DDR3), an das interne Netzwerk 102 angeschlossen.
  • Bei den Wirt-I/Fs 101 handelt es sich um Schnittstellen zum Anschließen der Speichervorrichtung 10 an den SAN 20.
  • Das interne Netzwerk 102 ist ein Netzwerk zum Verbinden von Vorrichtungen, die in der Speichervorrichtung 10 vorhanden sind, untereinander. Das interne Netzwerk 102 besitzt einen Schalter. Anstelle des internen Netzwerkes 102 können auch anwendungsspezifische integrierte Schaltungen (ASICs) mit einer Schaltfunktion und einer Assistenzfunktion für eine DMA-Übertragung, RAID-Berechnung u. ä. verwendet werden.
  • Die Prozessoren 104 steuern die gesamte Speichervorrichtung 10. Sie sind in einer Vielzahl vorgesehen. In diesem Fall steuern die Prozessoren 104 die Speichervorrichtung 10 zusammen oder auf einer Funktionsteilbasis.
  • Die Pufferspeicher 103 besitzen Bereiche zum Speichern von Computerprogrammen, die von den Prozessoren 104 zur Steuerung der Speichervorrichtung 10 und zur temporären Speicherung von Daten benötigt werden.
  • Bei den Platten-I/Fs 107 handelt es sich um Schnittstellen zum Anschließen der Speichersteuereinheit 100 und der Plattenbox 110.
  • Die Plattenbox 110 besitzt eine Vielzahl von Platten unterschiedlicher Arten (d. h. nichtflüchtige physikalische Speichermedien, wie HDDs 111 und SSDs 700). Platten des gleichen Typs bilden eine RAID-Gruppe. Von jeder RAID-Gruppe wird ein Logikvolumen als ein Steuerraum für Nutzerdaten vorgesehen. Obwohl die HDDs 111 und SSDs 700 in der Zeichnung als Platten dargestellt sind, die die Plattenbox 110 bilden, kann auch auf die HDDs 111 verzichtet werden.
  • 5 zeigt ein Beispiel der Konfiguration der SSDs 700.
  • Die SSDs 700 besitzen eine Vielzahl von Flash-Speicherchips 708 und eine an diese angeschlossene SSD-Steuereinheit 710. Die SSD-Steuereinheit 710 steuert Aktionen auf der Vielzahl der Flash-Speicherchips einschließlich des Schreibens/Lesen und der Kompression/Extension von Daten.
  • Die SSD-Steuereinheit 710 umfasst Kommunikationsschnittstellenvorrichtungen, einen Speicher, eine Steuervorrichtung, die an diese angeschlossen ist, und eine Hardwareschaltung, die eine Kompression/Extension von Daten ausführt. Die Kompressions/Extensionsfunktion kann auch mit Software ausgeführt werden. Die Kommunikationsschnittstellenvorrichtungen umfassen eine Platten-I/F 711, bei der es sich um eine Vorderendkommunikationsschnittstellenvorrichtung handelt, und eine Flash-I/F 717, bei der es sich um eine Rückendkommunikationsschnittstellenvorrichtung handelt. Ein Pufferspeicher 716 ist als Speicher vorgesehen, und ein Prozessor 713 dient als Steuervorrichtung. Eine Kompressions/Extensionsschaltung 718 ist als Hardwarevorrichtung zum Ausführen einer Datenkompression/-extension vorgesehen. Die Funktion der Datenkompression/-extension kann auch mit Software durchgeführt werden, indem man den Prozessor 713 ein spezielles Programm ausführen lässt. Die Platten-I/F 711, der Prozessor 713, der Pufferspeicher 716, die Flash-I/F 717 und die Kompressions/Extensionsschaltung 718 sind über ein internes Netzwerk 712 miteinander verbunden. Bei dem internen Netzwerk 712 handelt es sich um ein Netzwerk zum Anschließen von Vorrichtungen untereinander. Das interne Netzwerk 712 kann Schalter aufweisen. ASICs mit einer Schaltfunktion können auch das interne Netzwerk 712 ersetzen. Der Prozessor 713 steuert die gesamten SSDs 700. Bei dem Pufferspeicher 716 handelt es sich um einen Bereich zum Speichern von Computern und Daten, die vom Prozessor 713 zum Steuern der SSDs 700 benötigt werden. Die Flash-I/F 717 ist eine Schnittstelle zum Anschließen der SSD-Steuereinheit 710 und der Flash-Speicherchips 780.
  • Bei dieser Ausführungsform ist jeder SSD eine Speichereinheit, die mit einer Vielzahl von Flash-Speichern und einer Steuereinheit zum Steuern derselben versehen ist. Seine externe Form oder andere Aspekte sind nicht auf irgendeinen Formfaktor beschränkt. Als Flash-Speicher können nichtflüchtige Halbleiterspeicher, wie NORs oder NANDs verwendet werden. Anstelle der Flash-Speicher können auch andere Halbleiterspeicher, wie magnetoresistive Random-Access-Speicher (MRAMs), Widerstands-Random-Access-Speicher (ReRAMs), bei denen es sich um Speicher mit variablem Widerstand handelt, oder ferroelektrische Random-Access-Speicher (FeRAMs) Verwendung finden. 6 zeigt ein Beispiel der Konfiguration der Flash-Speicherchips 780.
  • Jeder Flash-Speicherchip 780 besitzt eine Vielzahl von Blöcken 782 und eine Flash-Speichersteuereinheit, hiernach „Flash-Steuereinheit”) 781, die an diese angeschlossen ist. Die Flash-Steuereinheit 781 steuert das Schreiben/Lesen von Daten in die oder aus den Flash-Speicherchips 780. Jeder der Blöcke 782 besitzt eine Vielzahl von Seiten 783, und jede der Seiten 783 ist aus einer Vielzahl von Codewörtern 784 gebildet. Das Auslesen von Daten aus dem Flash-Speicherchip 780 und das Einschreiben von Daten in den Flash-Speicherchip 780 werden auf einer Seite-um-Seite-Basis durchgeführt. Das Löschen von Daten wird auf einer Block-um-Block-Basis durchgeführt. Jede der Seiten 783 ist aus einer Vielzahl von Codewörtern 784 und, obwohl nicht gezeigt, aus Daten, die vom Wirtcomputer 30 gespeichert sind, und einem Fehlercheck- und Korrektur(ECC)-Code gebildet, bei dem es sich um einen Fehlerkorrekturcode zum Schutz der in jedem der Codewörter 784 gespeicherten Daten handelt.
  • Bei den Flash-Speicherchips 780 handelt es sich beispielsweise um Flash-Speicher vom NAND-Typ. In einem Flash-Speicher vom NAND-Typ können keine Daten überschrieben werden. Aus diesem Grund muss, wenn neue Daten in eine Seite geschrieben werden sollen, in der bereits Daten eingeschrieben wurden, eine andere Seite, bei der bereits Daten gelöscht worden sind, gesichert werden, damit neue Daten eingeschrieben werden können. In diesem Fall wird die Seite, in die die neuen Daten eingeschrieben wurden, als gültige Seite gemanagt, und die Seite, in der die zu aktualisierenden Daten gespeichert wurden, als ungültige Seite gemanagt.
  • Da die Datenlöschung Block um Block durchgeführt werden muss, wenn irgendwelche gültigen Daten in dem zu löschenden Block vorhanden sind, werden sämtliche Seiten in dem Block, dessen Daten gelöscht werden sollen, durch das Kopieren von irgendwelchen gültigen Daten auf einen anderen Block ungültig gemacht. Auf diese Weise wird die Datenlöschung durchgeführt. Diese Prozesssequenz zur Erzeugung eines gelöschten Blocks ist als Reklamationsprozess bekannt.
  • Die SSD-Steuereinheit 710 führt eine Verschleißegalisierung der Vielzahl der Blöcke 782 in den SSDs 700 durch. Die SSD-Steuereinheit 710 egalisiert die Anzahl von Malen der Blocklöschung in den SSDs 700 durch Speichern von Daten, die weniger häufig zu aktualisieren sind, in Blöcke, die häufiger gelöscht werden müssen, und durch Speichern von Daten, die häufiger zu aktualisieren sind, in Blöcke, die weniger häufig gelöscht werden sollen.
  • Die SSD-Steuereinheit 710 kann auch eine Verschleißegalisierung zur Zeit des Einschreibens durchführen, indem sie Blöcke auswählt, die weniger häufig gelöscht werden sollen, und Daten in diesen Blöcken speichert. In diesem Fall kann die Steuereinheit auch die Vielzahl der Blöcke in eine Vielzahl von Gruppen in Abhängigkeit von der Anzahl der Löschungsvorgänge unterteilen und Blöcke in der aufsteigenden Reihenfolge der Anzahl der Löschungsvorgänge auswählen.
  • Die Verschleißegalisierung der Vielzahl der Blöcke in jedem SSD dient zur Verlängerung der nutzbaren Lebensdauer des SSD.
  • 7 zeigt ein Beispiel der Konfiguration von Adressräumen eines SSD.
  • Für jeden der SSDs 700 gibt es einen Logikadressraum 900 und einen physikalischen Adressraum 800. Der Logikadressraum 900 ist ein einzigartiger Adressraum, den der SSD 700 der Speichersteuereinheit 100 zur Verfügung stellt. Andererseits ist der physikalische Adressraum 800 ein Adressraum zum Identifizieren eines physikalischen Speicherbereiches, in dem aktuelle Daten gespeichert werden sollen. Die SSD-Steuereinheit 710 unterteilt den Logikadressraum 900 in eine Vielzahl von Bereichen (hiernach als „Logikseiten” bezeichnet) 901, 902, 903 und 904, die jeweils so groß sind wie eine physikalische Seite, und ordnet einem jeden Bereich die eine oder andere der physikalischen Seiten 7831, 7832 und 7833 zu, bei denen es sich um physikalische Adressräume handelt. Bei dieser Ausführungsform besitzt der SSD 700 eine Datenkompressionsfunktion und eine Virtualisierungsfunktion der Kapazität mit niedrigerem Level.
  • Über die Datenkompressionsfunktion wird Datenlogikseite um Datenlogikseite komprimiert. Beispielsweise werden Daten in der Logikseite 901 in komprimierte Daten 911, Daten in der Logikseite 902 in komprimierte Daten 912, Daten in der Logikseite 903 in komprimierte Daten 913 und Daten in der Logikseite 904 in komprimierte Daten 914 überführt. Schließlich werden die komprimierten Daten Codewort (hiernach als „CW” bezeichnet) um Codewort in physikalische Seiten gespeichert. Wenn komprimierte Daten so klein werden wie oder kleiner werden als die CW-Größe, wird der verbleibende Raum mit Nulldaten o. ä. ausgefüttert.
  • Wie in der Zeichnung dargestellt, werden die komprimierten Daten 911 in ein CW 7841, die komprimierten Daten 912 in ein CW 7842, die komprimierten Daten 913 in ein CW 7843 und ein CW 7844 und die komprimierten Daten 914 in ein CW 7847 gespeichert. Da die Kompressionsrate variiert, besitzen die komprimierten Daten nicht immer eine konstante Größe, sondern können irgendeine Größe annehmen. Auf diese Weise kann in jedem der SSDs 700, die eine Kompressionsfunktion besitzen, die Anzahl der verwendeten physikalischen Seiten eingespart werden, indem eine Vielzahl von Logikseiten in einer einzigen physikalischen Seite gespeichert wird.
  • Des Weiteren besitzen die SSDs 700 eine Virtualisierungsfunktion der Kapazität mit niedrigerem Level und stellen nach außen größere Logikräume als die entsprechenden physikalischen Räume zur Verfügung. Genauer gesagt, ein Logikadressraum besitzt eine größere Anzahl von Logikseiten als physikalische Seiten. Bis der physikalische Adressraum 800 mit komprimierten Daten gefüllt ist, wird der Logikadressraum 900 ausgeweitet. Mit anderen Worten, wenn jeder physikalische Adressraum mit Daten mit der maximalen Kompressionsrate gefüllt worden ist, kann der größte Logikadressraum nach außen zur Verfügung gestellt werden.
  • Bei dieser Ausführungsform wird davon ausgegangen, dass die Kompressionsrate aus der Anzahl der in der physikalischen Seite enthaltenen CWs und der Anzahl der CWs der komprimierten Daten berechnet wird. Wenn beispielsweise im Fall der 7 die Seite #a drei CWs enthält, beträgt die Kompressionsrate 33,3%, wenn die komprimierten Daten #a einem CW entsprechen. Wenn in diesem Fall Daten, die zu einer Seite äquivalent sind, zu Daten einer Größe, die nicht mehr als 1 CW beträgt, komprimiert worden sind, erreicht die Kompressionsrate ihr Maximum.
  • Die SSD-Steuereinheit 710 kann eine Verschleißegalisierung u. ä. durchführen, indem sie das Mapping zwischen einem Adressbereich (Zone), der den Logikadressraum 900 bildet, und einem Adressbereich (Zone), der den physikalischen Adressraum 800 bildet, dynamisch variiert. Die Korrespondenz zwischen dem Logikadressraum 900 und dem physikalischen Adressraum 800 wird vom Prozessor 713 gemanagt, indem eine logisch-physikalische Umwandlungstabelle 23100 verwendet wird, die nachfolgend beschrieben wird. Bei dieser Ausführungsform managt die Speichersteuereinheit 100 nicht die logisch-physikalische Umwandlungstabelle im SSD. Wenn daher der Prozessor 713 der Speichersteuereinheit 100 irgendeine interne Information auf dem SSD nicht mitteilt, kann die Speichersteuereinheit 100 die Beziehung der Korrespondenz zwischen dem Logikadressraum 900 und dem physikalischen Adressraum 800 nicht verfolgen.
  • Als Nächstes wird eine Virtualisierungstechnik der Kapazität höheren Levels im Einzelnen beschrieben.
  • Eine Virtualisierungstechnik der Kapazität höheren Levels (d. h. Thin-Provisioning) dient dazu, den Wirtcomputer 30 mit einer größeren virtuellen Kapazität zu versehen als der physikalischen Kapazität, die die Speichervorrichtung 10 besitzt. Der Wirtcomputer 30 hat Zugriff auf ein virtuelles Logikvolumen (virtuelles Volumen). Durch die Kapazitätsvirtualisierungstechnik wird, wenn die Speichervorrichtung 10 einen physikalischen Speicherbereich empfangen hat, dieser dem virtuellen Speicherbereich (virtuellen Bereich) zugeordnet, für den die durch die Schreibanforderung abgedeckten Daten bestimmt sind. Bei dieser Ausführungsform werden physikalische Speicherbereiche durch die Kapazitätsvirtualisierungstechnik auf einer Bereich-um-Bereich-Basis zugeteilt. Dabei kann jeder Bereich (extent) auf jede beliebige Größe, beispielsweise zwischen einigen wenigen MB bis auf einige Gigabytes, eingestellt werden.
  • Die Virtualisierungstechnik der Kapazität höheren Levels wird nunmehr im Detail in Verbindung mit 8 beschrieben.
  • 8 zeigt eine Ausführungsform der Virtualisierungstechnik der Kapazität höheren Levels.
  • Die RAID-Gruppe (RG) ist aus Platten des gleichen Typs (d. h. SSDs) konfiguriert. Ein Poolvolumen 500 ist auf der Basis von einem oder mehreren RGs konfiguriert.
  • Ein Bereich ist ein Speicherbereich, der durch Unterteilung einer RAID-Gruppe erhalten wird. Das Poolvolumen 500 enthält eine Vielzahl von RAID-Gruppen und enthält eine Vielzahl von Bereichen, die auf der Basis einer jeden RAID-Gruppe konfiguriert worden sind. In der Zeichnung ist dargestellt, dass das Poolvolumen 500 auf der Basis von drei RGs einschließlich einer RG 200, einer RG 300 und einer RG 400 konfiguriert wurde. Die nachfolgende Beschreibung bezieht sich auf die RG 200.
  • Die RG 200 ist aus einer disk1 210, einer disk2 220 und einer disk3 230 konfiguriert. Ferner bildet die RG 200 eine RAID 5, und Daten (D im Diagramm) sowie Parität (P im Diagramm) werden in den disks (Platten) (210 bis 230) gespeichert.
  • Ein RG-basierter Speicherbereich ist in eine Vielzahl von Bereichen unterteilt. Der RG-basierte Speicherbereich umfasst den Logikadressraum 900, der durch eine Vielzahl von SSDs gebildet wird.
  • Als Nächstes wird die Konfiguration eines Speicherbereiches (extent) beschrieben. Der Bereich ist aus Eingängen (entries) konfiguriert, bei denen es sich um Logikadressräume handelt, die in den Platten vorhanden sind. In jedem Eingang ist eine Vielzahl von Sätzen von Daten und Paritäten gespeichert. Wie im Diagramm gezeigt, sind D211, D212 und P213 in einem Eingang 251 gespeichert. In einem Eingang 252 sind D221, D222 und P223 gespeichert, ferner in einem Eingang 253 D231, D232 und P233. Obwohl nicht gezeigt, sind in einem Eingang 254 entsprechende Vielzahlen von Daten und Paritäten gespeichert. Ferner sind die Eingänge 252 und 254 in der Platte 210, die Eingänge 252 und 255 in der Platte 220 und die Eingänge 253 und 256 in der Platte 230 eingebaut.
  • Jeder Eingang gehört zu einer in einem Speicherbereich angeordneten Streifenreihe (stripe row). Die Eingänge 251, 252 und 253 gehören zu einer Streifenreihe 260. Die Eingänge 254, 255 und 256 gehören zu einer Streifenreihe 261. In einigen Streifenreihen sollten Datensätze und verwandte Paritäten in unterschiedlichen Platten gespeichert werden, um die Redundanz der RAID sicherzustellen. Genauer gesagt, da D211 und D221 durch P231 geschützt sind, sind D211 und D221 sowie P231 in der Platte 210, der Platte 220 und der Platte 230 gespeichert, bei denen es sich um unterschiedliche Platten handelt. In entsprechender Weise sind D212 und D232 durch P222 und D223 und D233 durch P213 geschützt. Beispielsweise wird P231 durch eine XOR-Operation von D211 und D221 berechnet. Wenn in diesem Fall D211 oder D221 aktualisiert wird, wird auch P231 aktualisiert. Auf diese Weise ermöglicht eine Paritätsaddition, dass Daten in einer problematisch gewordenen Platte aus irgendeiner anderen normalen Platte restauriert werden können, wenn eine der Platten 210, 220 und 230, die zu einer RAID-Gruppe gehören, zu einem Problemfall wird.
  • Bei dieser Ausführungsform werden Daten Eingang um Eingang zur Prozessegalisierung verschoben. Bei diesem Prozess fordert das Einhalten der Redundanz der RAID die Anwesenheit von zwei oder mehr Eingängen, die zur gleichen Streifenreihe in der gleichen Platte gehören. Es wird beispielsweise angenommen, dass Daten im Eingang 254 und im Eingang 252 verschoben werden. Dann sollten sie theoretisch in unterschiedliche Platten gespeichert werden. Anderenfalls würden sich D211 und D221 in der gleichen Platte 210 befinden. Dies würde einen Abfall in der Datenschutzfähigkeit der RAID bedeuten. Um daher die Redundanz der RAID aufrechtzuerhalten, sollte die Speichersteuereinheit die zu verschiebenden Daten im Egalisierungsprozess so auswählen, dass keine Vielzahl von Eingängen, die zur gleichen Streifenreihe gehören, in der gleichen Platte vorhanden ist.
  • Ein Speicherbereich stellt eine Gruppe von Eingängen dar. Beispielsweise ist ein Speicherbereich 240 aus den Eingängen 251, 252, 253, 254, 255 und 256 konfiguriert.
  • In 8 ist gezeigt, dass der Speicherbereich 240, ein Speicherbereich 241 und ein Speicherbereich 242 aus der RG 200 erstellt wurden. Ein Speicherbereich 340, ein Speicherbereich 341 und ein Speicherbereich 342 sind aus einer RG 300 erstellt, und ein Speicherbereich 440, ein Speicherbereich 441 und ein Speicherbereich 442 sind aus einem Speicherbereich einer RG 400 erstellt.
  • In dem in 8 gezeigten Fall handelt es sich bei den Bereichen um Speicherbereiche, die größer sind als Blöcke. Die Größe eines Bereiches entspricht beispielsweise dem N-fachen Wert (Größe N ist eine ganze Zahl, die nicht kleiner ist als 2) eines Blocks. Ein Speicherbereich kann ferner so eingestellt werden, dass er eine Vielzahl von Datensätzen und einen oder mehrere Sätze von Paritäten der Vielzahl der Datensätze 1 enthält.
  • Bei einem virtuellen Volumen 600 handelt es sich um ein virtuelles Logikvolumen für den Wirtcomputer 30, um Nutzerdaten einzuspeichern. Die als Kapazität des virtuellen Volumens 600 definierte Kapazität kann mit einer größeren Speicherkapazität versehen sein als sämtliche Kapazitäten der Speichermedien, die die Speichervorrichtung 10 besitzt. Das virtuelle Volumen 600 ist aus jeder gewünschten Zahl von virtuellen Bereichen 601 bis 607 konfiguriert. Obwohl beispielsweise ein Speicherbereich dem in 6 gezeigten virtuellen Bereich zugeordnet ist, kann auch eine Vielzahl von Bereichen einem einzigen virtuellen Bereich zugeordnet sein. Das virtuelle Volumen 600 besitzt eine virtuelle Adresse (Logikadresse, die ein virtuelles Volumen bildet), und virtuelle Bereiche sind durch Unterteilung der virtuellen Adresse gemäß einem vorgegebenen Bereich konfiguriert. Der Wirtcomputer 30 gibt eine Lese/Schreibanforderung an die virtuelle Adresse des virtuellen Volumens 600 ab. Speicherbereiche können auch einer Vielzahl von virtuellen Volumina 600 aus einem Poolvolumen zugeteilt sein.
  • Den virtuellen Bereichen 601 bis 604, die durch durchgezogene Linien dargestellt sind, werden Speicherbereich von den RGs 200, 300 und 400 zugeteilt. Somit wird der Speicherbereich 240 dem virtuellen Bereich 601, der Speicherbereich 242 dem virtuellen Bereich 602, der Bereich 442 dem virtuellen Speicherbereich 603 und der Bereich 341 dem virtuellen Speicherbereich 604 zugeordnet.
  • Da die virtuellen Bereiche 605 bis 607, die durch gestrichelte Linien dargestellt sind, keine virtuellen Bereiche sind, zu denen die Adresse gehört, die als die Bestimmung der Dateneinschreibung designiert ist, sind noch keine Bereiche den virtuellen Bereichen 605 bis 607 zugeteilt.
  • 9 zeigt ein Beispiel der Beziehung zwischen dem Prozess der Kapazitätsegalisierung und einem virtuellen Volumen.
  • Ein SSD 210, ein SSD 220 und ein SSD 230 bilden die RG 200, und der Eingang 251 wird in einem Teil des Logikadressraumes des SSD 210 gemapped. In entsprechender Weise wird der Eingang 253 in einem Teil des Logikadressraumes des SSD 220 gemapped, und der Eingang 253 wird in einem Teil des Logikadressraumes des SSD 230 gemapped. Da die Eingänge 251, 252 und 253 mit Logikadressräumen in SSDs übereinstimmen, werden sie von der Speichersteuereinheit erkannt als ob sie bestimmte Größen besitzen, und zwar unabhängig davon, ob eine Datenkompression in den SSDs stattgefunden hat oder nicht. Ferner werden die Eingänge 251, 252 und 253 im Speicherbereich 240 gemapped, und der Speicherbereich 240 wird als Teil des virtuellen Volumens 600 gemapped.
  • Als Nächstes wird D1, bei dem es sich um einen Datensatz handelt, der dem Eingang 251 entspricht, als komprimierte Daten 801 im SSD 210 gespeichert. In entsprechender Weise wird D2, bei dem es sich um einen Datensatz handelt, der dem Eingang 252 entspricht, als komprimierte Daten 802 im SSD 220 gespeichert. Ferner wird D3, bei dem es sich um einen Datensatz handelt, der dem Eingang 253 entspricht, als komprimierte Daten 803 im SSD 230 gespeichert. Die komprimierten Daten 801, 802 und 803, die in den physikalischen Adressräumen von SSDs gespeichert sind, unterscheiden sich in der Größe voneinander aufgrund von Differenzen in der Datenkompressionsrate, die auf Differenzen im Datenmuster zurückzuführen sind. Im Diagramm zeigen die Größen der Vierecke, die die komprimierten Daten 801, 802 und 803 repräsentieren, die tatsächlichen Datengrößen an, die die Beziehung 801 < 802 < 803 besitzen. Das bedeutet, dass 801 die höchste Kompressionsrate besitzt und 803 die niedrigste Kompressionsrate aufweist. Diese Unterschiede in der Kompressionsrate machen die freien physikalischen Kapazitäten der SSDs 210, 220 und 230 ungleich. Ferner besitzt die freie physikalische Kapazität des SSD 230 die geringste Größe und damit das höchste Risiko einer Löschung. Demzufolge reguliert die Speichereinheit diesen ungleichen Zustand der freien physikalischen Kapazitäten durch Kapazitätsegalisierung.
  • Genauer gesagt, der SSD 230 mit der kleinsten freien physikalischen Kapazität und der SSD 210 mit der größten freien physikalischen Kapazität werden als die SSDs ausgewählt, zwischen denen Daten zu verschieben sind. Dann werden die Daten 803, die größten in der physikalischen Nutzungsquantität (d. h. die niedrigsten in der Kompressionsrate) im SSD 230, und die Daten 801, die kleinsten in der physikalischen Nutzungsquantität (d. h. der höchsten Kompressionsrate) des SSD 210, als Austauschobjekte ausgewählt, und die Daten werden verschoben (ausgetauscht).
  • Speziell gesagt, die Datenverschiebungseinrichtung der Speichersteuereinheit 100 liest die komprimierten Daten 801 aus dem SSD 210 in einen Pufferspeicher 103 und schreibt die ausgelesenen Daten in den SSD 230, und diese Speichersteuereinheit 100 liest die komprimierten Daten 803 aus dem SSD 230 in den Pufferspeicher 103 und schreibt die ausgelesenen Daten in den SSD 210.
  • Genauer gesagt, die von einem SSD auf die Speichersteuereinheit übertragenen Daten sind nichtkomprimierte Daten. Aus diesem Grund extendiert der SSD 210 intern die komprimierten Daten 801, wenn die komprimierten Daten 801 aus dem SSD 210 in einen Pufferspeicher gelesen werden, und überträgt die Daten D1 in einem nichtkomprimierten Zustand auf die Speichersteuereinheit. Danach überträgt die Speichersteuereinheit die nichtkomprimierten Daten D1 auf den SSD 230, die Destination SSD. Der SSD 230 speichert die Daten in seinem eigenen physikalischen Bereich, nachdem er die nichtkomprimierten Daten D1 empfangen hat und nachdem er intern eine Datenkompression durchgeführt hat, um die Daten wieder in die komprimierten Daten 801 zu überführen. Entsprechende Aktionen werden durchgeführt, wenn die komprimierten Daten 803 vom SSD 230 zum SSD 210 überführt werden.
  • Durch diesen Prozess der Kapazitätsegalisierung wird die freie physikalische Kapazität des SSD 210 reduziert, in den die komprimierten Daten 803 mit einer großen physikalischen Nutzungsquantität gespeichert werden. Andererseits wird der SSD 230, in den die komprimierten Daten 801 mit einer kleinen physikalischen Nutzungsquantität gespeichert werden, in der freien physikalischen Kapazität vergrößert. Hierdurch wird die Ungleichheit der freien physikalischen Kapazität zwischen den SSDs eliminiert.
  • Auf diese Weise kann der Wirtcomputer ein virtuelles Volumen einer bestimmten Kapazität erkennen und eine Lese/Schreibanforderung an das virtuelle Volumen abgeben. Wenn die Kapazitätsegalisierung durchgeführt wird und die Logikraumkapazität, die jedes SSD zur Verfügung stellen kann, angestiegen ist, nimmt die Poolvolumenkapazität zu. Hierdurch kann der Wirtcomputer seine Operation ohne Erkennung irgendeiner Änderung in der Kapazität fortsetzen.
  • Wenn die Datenverschiebung zwischen SSDs stattfindet, sollte der Wirtcomputer 30 die Datenzugriffsdestination auf den SSD ändern, der die verschobenen Daten empfangen hat. Die Adressumwandlung unter Verwendung des virtuellen Volumens 600 versetzt jedoch den Wirtcomputer 30 in die Lage, auf die verschobenen Daten an der neuen Location zuzugreifen, ohne dass er die Zugriffsdestination ändern muss. Mit anderen Worten, die Zuordnung der virtuellen Bereiche 600 mit der virtuellen Adresse wird von der Speichersteuereinheit 100 von der Logikadresse des Einganges 251, dem Ursprung der Verschiebung, auf die Logikadresse des Einganges 253, der Destination der Verschiebung, geändert. Daher kann der Wirtcomputer 30 die Kapazitätsegalisierung durchführen, indem er auf das virtuelle Volumen 600 zugreift, ohne dass er die Adresse der Zugriffsdestination ändern muss.
  • Die Verwendung des virtuellen Volumens für die Adressumwandlung ist nur ein Beispiel. Die Adressumwandlung kann auch durchgeführt werden, ohne das virtuelle Volumen zu benutzen.
  • 10 zeigt ein Beispiel der Konfiguration des in der Speichersteuereinheit 100 vorgesehenen Pufferspeichers 103.
  • Der Pufferspeicher 103 besitzt einen Programmbereich 12000, einen Tabellenbereich 13000 und einen Datenpufferbereich 14000. Bei dem Programmbereich 12000 und dem Tabellenbereich 13000 handelt es sich um Bereiche, in denen Programme zum Steuern der Speichervorrichtung 10 und verschiedene Tabellen gespeichert sind. Der Datenpufferbereich 14000 ist ein Bereich für die Benutzung bei der temporären Speicherung von Nutzerdaten.
  • Der Programmbereich 12000 speichert ein Schreib-I/O-Programm 12100, ein Lese-I/O-Programm 122000, ein Kapazitätsegalisierungsprogramm 12300 und ein SSD-Informationsakquisitionsprogramm 12400.
  • Bei dem Schreib-I/O-Programm 12100 handelt es sich um ein Programm zur Bearbeitung von Schreibanforderungen vom Wirtcomputer 30. Das Lese-I/O-Programm 12200 ist ein Programm zur Bearbeitung von Leseanforderungen vom Wirtcomputer 30. Bei dem Kapazitätsegalisierungsprogramm 12300 handelt es sich um ein Programm zur Bearbeitung der physikalischen Kapazitätsegalisierung von SSDs. Ein SSD-Informationsakquisitionsprogramm 12400 ist ein Programm zum Akquirieren von internen Informationen der SSDs 700.
  • Der Tabellenbereich 13000 besitzt eine Plattenmanagementtabelle (hiernach wird Tabelle abgekürzt in TBL) 13100, eine RG-Management-TBL 13200, eine Poolmanagement-TBL 13300, eine Speicherbereichsmanagement-TBL 13400, eine Management-TBL 13500 für virtuelles Volumen und eine Eingangsmanagement-TBL 13600.
  • Die Plattenmanagement-TBL 13100 ist eine Tabelle zum Speichern von Informationen in Bezug auf Platten, die in der Plattenbox 110 gespeichert sind. Bei der RG-Management-TBL 13200 handelt es sich um eine Tabelle zum Speichern von Informationen in Bezug auf RAID-Gruppen. Die Poolmanagement-TBL 13300 ist eine Tabelle zum Speichern von Informationen in Bezug auf Poolvolumina. Die Speicherbereichsmanagement-TBL 13400 ist eine Tabelle zum Speichern von Informationen in Bezug auf Speicherbereiche. Die Management-TBL 13500 für virtuelles Volumen ist eine Tabelle zum Speichern von Informationen in Bezug auf virtuelle Volumina. Die Eingangsmanagement-TBL 13600 ist eine Tabelle zum Speichern von Informationen in Bezug auf Eingänge. Details von individuellen Tabellen werden hiernach beschrieben.
  • Im Datenpufferbereich 14000 werden Nutzerdaten 14100, die Schreibanforderungen und Leseanforderungen vom Wirtcomputer 30 erfüllen, gespeichert. Die Nutzerdaten 14100 sind Daten, die vom Wirtcomputer 30 genutzt werden.
  • 11 zeigt ein Beispiel der Konfiguration der Plattenmanagement-TBL 13100.
  • Die Plattenmanagement-TBL 13100 besitzt für jede Platte eine Platten # 13101, einen Plattentyp 13102, eine maximale Logikkapazität 13103, eine nutzbare Logikkapazität 13104, eine benutzte Logikkapazität 13105, eine freie Logikkapazität 13106, eine maximale physikalische Kapazität 13107, eine benutzte physikalische Kapazität 13108, eine freie physikalische Kapazität 13109, eine maximale Kompressionsrate 13110, eine durchschnittliche Kompressionsrate 13111 und einen Kompressionsmodus 13112.
  • Die Platten # 13101 stellt die Identifikation der Platte dar, wobei es sich hierbei um eine individuelle Nummer handelt. Der Plattentyp 13102 repräsentiert den Typ der Platte, wie SSD (SLC), SSD (MLC) oder HDD. Es gibt drei unterschiedliche Typen von SSDs hier, einschließlich des Single-Level-Zellen(SLC)-Typs, des Multi-Level-Zellen(MLD)-Typs und des Triple-Level-Zellen(TLC)-Typs, gemäß dem Typ des benutzten NAND-Flash-Speichers. SLC ist ein Flash-Speicher mit hoher Geschwindigkeit, langer Lebensdauer und geringer Kapazität, der Blocklöschungen in der Reihenfolge von einigen hunderttausend Malen bis zu einigen zehntausend Malen ermöglicht. Bei MLC handelt es sich um einen Flash-Speicher mit geringer Geschwindigkeit, kurzer Lebensdauer und großer Kapazität, der Blocklöschungen in der Reihenfolge von einigen zehntausend Malen bis zu einigen tausend Malen ermöglicht. TLC besitzt eine noch geringere Geschwindigkeit und kürzere Lebensdauer, ist jedoch ein Flash-Speicher mit großer Kapazität, der Blocklöschungen in der Reihenfolge von einigen tausend bis zu einigen hundert Malen ermöglicht.
  • Die maximale Logikkapazität 13103 bildet die obere Grenze der Logikkapazität, die vom entsprechenden SSD externen Vorrichtungen zur Verfügung gestellt werden kann, und entspricht der in 1 gezeigten maximalen Logikkapazität 30001. Die nutzbare Logikkapazität 13104 stellt die Logikkapazität dar, die externen Vorrichtungen zur Verfügung gestellt werden kann, und entspricht der Größe des in 1 gezeigten nutzbaren Logikraumes 30002. Die benutzte Logikkapazität 13105 stellt die Logikkapazität dar, die von irgendeiner externen Vorrichtung bereits genutzt wurde, und entspricht der Größe des in 1 dargestellten benutzten Logikraumes 30005. Die freie Logikkapazität 13106 bildet die Logikkapazität, die für irgendeine externe Vorrichtung zur Verfügung steht, jedoch nicht von dieser benutzt wird, und entspricht der Größe des in 1 gezeigten freien Logikraumes. Bei der maximalen physikalischen Kapazität 13107 handelt es sich um die Gesamtheit der Kapazitäten der am SSD montierten physikalischen Speichermedien. Die benutzte physikalische Kapazität 13108 repräsentiert das gespeicherte Volumen der komprimierten Daten und entspricht der Größe des in 1 gezeigten benutzten physikalischen Raumes 30007. Die freie physikalische Kapazität 13109 ist die Kapazität der physikalischen Räume, in denen keine Daten gespeichert sind, und entspricht der Größe des in 1 gezeigten freien physikalischen Raumes 30006. Die maximale Kompressionsrate 13110 entspricht der maximalen Kompressionsrate, die für den relevanten SSD zur Verfügung steht. Die durchschnittliche Kompressionsrate 13111 ist die durchschnittliche Kompressionsrate des SSD und wird berechnet, indem man die benutzte physikalische Kapazität 13108 durch die benutzte Logikkapazität 13105 teilt. In dieser Ausführungsform sind die Werte der maximalen Logikkapazität 13103, der maximalen physikalischen Kapazität 13107 und der maximalen Kompressionsrate 13110 auf einer Basis Platte-um-Platte voreingestellt. Informationen in Bezug auf andere Werte werden von der Speichersteuereinheit aktualisiert, wie nachfolgend beschrieben.
  • Der Kompressionsmodus 13112 zeigt an, ob der Kompressionsmodus eines SSD ein „synchronisierter” Modus oder ein „nichtsynchronisierter” Modus ist. Bei dem synchronisierten Kompressionsmodus handelt es sich um einen Modus, bei dem eine Kompression durchgeführt wird, nachdem der SSD Schreibdaten von der Speichersteuereinheit erhalten hat und bevor die Daten in einem FM gespeichert worden sind sowie die Datenkompressionsrate in Abhängigkeit von der Schreibanforderung auch zurückgeführt worden ist.
  • Andererseits handelt es sich bei dem nichtsynchronisierten Kompressionsmodus um einen Modus, bei dem eine Kompression durchgeführt wird, wenn ein SSD eine asynchrone Bearbeitung erfährt, wie beispielsweise eine Reklamation oder Erneuerung. Im nichtsynchronisierten Modus werden Schreibdaten von der Speichersteuereinheit nicht komprimiert, sondern so wie sie sind in einem FM gespeichert. In diesem Modus wird eine Kompression danach durchgeführt, wenn eine asynchrone Bearbeitung zu irgendeinem gewünschten Timing durchgeführt wird.
  • Der synchronisierte Kompressionsmodus besitzt den Vorteil, dass die Speichersteuereinheit sofort das Ergebnis der Datenkompression akquirieren kann. Da ferner das Volumen der in den FM eingeschriebenen Daten reduziert wird, besteht ein anderer Vorteil in der Verlängerung der Lebensdauer. Da jedoch die Bearbeitung zur Kompression separat durchgeführt wird, wird die Performance nachteilig beeinflusst. Andererseits kann, obwohl der nichtsynchronisierte Kompressionsmodus eine Periode mit sich bringt, bei der die Datenkompression ineffektiv ist, die Einwirkung auf die Performance unterdrückt werden, da die Kompression zusammen mit einer internen Datenverschiebung durchgeführt wird, die eine Reklamation und Erneuerung begleitet, welche unvermeidbar im SSD auftreten.
  • Darüber hinaus kann das Umschalten des Kompressionsmodus von der Speichersteuereinheit zu jedem gewünschten Timing im SSD eingestellt werden.
  • 12 zeigt ein Beispiel der Konfiguration der RG-Managementtabelle 13200.
  • Die RG-Management-TBL 13200 besitzt für jede RG eine RG # 13201, einen Plattentyp 13202, ein RAID-Level 13203, eine RG-Zusammensetzung 13204, eine Platten # 13205 und einen Kompressionsmodus 13206.
  • Die RG # 13201 bildet die Identifikation der RG, wobei es sich hierbei um eine individuelle Nummer handelt. Der Plattentyp 13202 repräsentiert den Typ der die RG bildenden Platten. Die RG ist aus Platten des gleichen Typs konfiguriert.
  • Der RAID-Level 13203 repräsentiert den RAID-Level der RG und besteht aus einem von verschiedenen Werten, wie RAID 1 + 0, 1, 3, 4, 5 und 6. Die RG-Zusammensetzung 13204 repräsentiert die Anzahl der Datenplatten (Plattenspeicherdaten), die die RAID bilden, und die Anzahl der Paritätsplatten (Plattenspeicherparitäten). Die Platten # 13205 ist die Identifikation einer jeden Platte, die die RAID bilden.
  • Der Kompressionsmodus 13206 gibt den Set-Zustand der Kompressionsfunktion für jede der Platten, die die RAID bilden, wieder. Wenn er wirksam ist, wird „EIN (synchronisiert)” und „EIN (nichtsynchronisiert)” gespeichert. Wenn er nicht wirksam ist, wird „AUS” gespeichert.
  • 13 zeigt ein Beispiel der Konfiguration der Poolmanagement-TBL 13300.
  • Die Poolmanagement-TBL 13300 besitzt ein Poolvolumen # 13301 und ein RG # 13302 für jedes Poolvolumen.
  • Das Poolvolumen # 13301 ist die Identifikation des Poolvolumens, wobei es sich hierbei um eine individuelle Nummer handelt. Die RG # 13302 gibt die RG-Nummer einer jeden RG wieder, die das Poolvolumen bilden. Obwohl als Beispiel in 13 ein Poolvolumen dargestellt ist, können auch mehrere Poolvolumina in der Speichervorrichtung gemanagt werden.
  • 14 zeigt ein Beispiel der Konfiguration der Eingangsmanagement-TBL 13600.
  • Die Eingangsmanagement-TBL 13600 hat eine Platten # 13601, eine Eingangs # 13602, eine Größe 13603, eine Start-LBA 13604, eine Länge 13605, einen Status 13606, einen Zuteilungsbestimmungsbereich # 13607 und eine physikalisch benutzte Quantität 13608 für jede Platte.
  • Die Platten # 13601 ist die Identifikation der Platte, wobei es sich um eine individuelle Nummer in der Speichervorrichtung 10 handelt. Die Eingangs # 13602 stellt die Identifikation des in den Platten hergestellten Einganges dar, wobei es sich hierbei um eine individuelle Identifikation für jede Platte handelt. Die Größe 13603 gibt die Kapazität eines Einganges, beispielsweise in Bytes wieder. Die Start-LBA 13604 und die Länge 13605 geben an, „welche Adressräume von welcher LBA bis zu welcher LBA zur Herstellung des relevanten Einganges benutzt werden”. Die Eingangs # 13602 ist mit einer Zahl vorhanden, die der maximalen Logikkapazität des SSD entspricht. Somit werden in einem Fall, in dem 12 MB Eingänge in einem SSD hergestellt werden sollen, dessen maximale Logikkapazität 800 GB beträgt, 800 × 1024 ÷ 12 MB = 68266 Eingänge im SSD hergestellt.
  • Der Status 13606 gibt den Status wieder, in dem sich der relevante Eingang befindet, als „zugeteilt”, „nichtzugeteilt” oder „nichtnutzbar”. Im „zugeteilten” Status befindet sich der relevante Eingang im Bereich des benutzten Logikraumes 30005. Im „nichtzugeteilten” Zustand befindet sich der relevante Eingang im Bereich des freien Logikraumes 30004. Wenn bei der ersten Ausführungsform die Speichersteuereinheit einen Eingang nutzen soll, verleiht sie dem Eingang Priorität, dessen Eingangs # 13602 der geringste Eingang von den Eingängen ist, deren Status 13606 „nichtzugeteilt” ist. Im „unbenutzbaren” Status liegt der relevante Eingang im Bereich des nichtnutzbaren Logikraumes 30003.
  • Eine Erhöhung im nutzbaren Logikraum des relevanten SSD bedeutet, dass „nichtnutzbare” Eingänge „nichtzugeteilt” werden. Umgekehrt bedeutet ein Absinken im nutzbaren Logikraum im relevanten SSD, dass „nichtzugeteilte” Eingänge „nichtnutzbar” werden. Durch dieses Statusmanagement kann die Speichersteuereinheit sich an Änderungen in der vom SSD zur Verfügung gestellten Logikkapazität anpassen. Wenn beispielsweise bei der ersten Ausführungsform die Logikkapazität, die vom SSD zur Verfügung gestellt wird, von 800 GB auf 700 GB variiert, ändert die Speichersteuereinheit 100 den Status des Einganges, so dass ein LBA-Raum von 700 GB auf 800 GB als „nichtnutzbar” eingestuft wird. Wenn die vom SSD zur Verfügung gestellte Logikkapazität durch den Prozess der Kapazitätsegalisierung von 500 GB auf 700 GB verändert wird, ändert die Speichersteuereinheit 100 den Eingangsstatus, so dass ein LBA-Raum von 500 GB auf 700 GB als „nichtzugeteilt” eingestuft wird.
  • Der Zuteilungsdestinationsbereich # 13607 managt die Destination der Zuteilung des relevanten Einganges. Wenn der relevante Eingang zugeteilt wird (der Status 13606 ist „zugeteilt”), wird der Bereich #, der diesen Eingang benutzt, gespeichert. Wenn andererseits der relevante Eingang nichtzugeteilt ist (der Status 13606 ist „nichtzugeteilt” oder „nichtnutzbar”), wird „N/A” gespeichert, was Ungültigkeit anzeigt.
  • Die physikalisch benutzte Quantität 13608 zeigt die Größe des physikalischen Speicherbereiches, in dem die komprimierten Daten gespeichert werden, an, wenn Daten im relevanten Eingang innerhalb eines SSD komprimiert werden, wobei die Größe in Bytes ausgedrückt wird. Dieser Wert wird auf der Basis der vom SSD akquirierten Informationen aktualisiert. Er kann auch als Prozentsatz, beispielsweise als Kompressionsrate, anstelle der Größe ausgedrückt werden. Wenn ein relevanter Eingang nichtzugeteilt ist, wird „N/A” gespeichert, wodurch Ungültigkeit angezeigt wird.
  • 15 zeigt ein Beispiel der Konfiguration der Bereichsmanagement-TBL 13400.
  • Die Bereichsmanagement-TBL 13400 besitzt eine RG # 13401, eine Bereichs # 13402, eine Größe 13403, einen Status 13404, eine Streifenreihe # 13405, eine Platten # 13406 und eine Eingangs # 13407 für jeden Speicherbereich.
  • Die RG # 13401 stellt die Identifikation der RG dar, wobei es sich hierbei um eine individuelle Nummer handelt. Die Bereichs # 13402 gibt die Identifikation des Bereiches wieder, wobei es sich ebenfalls um eine individuelle Zahl handelt. Die Größe 13403 gibt die Kapazität des Bereiches, beispielsweise in Bytes, wieder. Der Status 13404 zeigt an, ob der relevante Bereich „zugeteilt” oder „nichtzugeteilt” ist. Der „zugeteilte” Status bedeutet, dass der relevante Bereich einem virtuellen Bereich zugeteilt ist. Andererseits bedeutet der „nichtzugeteilte” Bereich, dass der relevante Bereich keinem virtuellen Bereich zugeteilt ist.
  • Die Streifenreihe # 13405, die Platten # 13406 und die Eingangs # 13407 dienen dazu, die Platte und den Eingang, der zur Streifenreihe des relevanten Bereiches gehört, zu identifizieren.
  • 16 zeigt ein Beispiel der Konfiguration der Management-TBL 13500 für das virtuelle Volumen.
  • Die Management-TBL 13500 für das virtuelle Volumen besitzt ein virtuelles Volumen # 13501, eine virtuelle Kapazität 13502, eine zugeteilte Kapazität 13503, einen virtuellen Bereich # 13504 und einen zugeteilten Bereich # 13505 für jedes virtuelle Volumen.
  • Bei dem virtuellen Volumen # 13501 handelt es sich um die Identifikation des virtuellen Volumens, wobei es sich hier um eine individuelle Zahl handelt. Die virtuelle Kapazität 13502 ist die virtuelle Kapazität des virtuellen Volumens. Diese virtuelle Kapazität wird dem Wirtcomputer 30 zur Verfügung gestellt. Die zugeteilte Kapazität 13503 ist die Gesamtheit der Kapazitäten der Bereiche, die tatsächlich dem virtuellen Volumen zugeteilt sind. Dieser Wert ist keine physikalische Quantität, sondern eine Logikquantität.
  • Der virtuelle Bereich # 13504 entspricht der Identifikation der virtuellen Bereiche, die im virtuellen Volumen enthalten sind. Es wird angezeigt, dass das virtuelle Volumen # 0 virtuelle Bereiche # 0 bis n enthält. Der zugeteilte Bereich # 13505 entspricht der Identifikation (ID-Nummer) der im virtuellen Volumen enthaltenen Bereiche. Die Speichersteuereinheit 100 managt den Status der Bereichszuteilung für jeden virtuellen Bereich. Somit wird ein Bereich # 0 dem virtuellen Bereich # 0 zugeordnet, während ein Bereich # 100 dem virtuellen Bereich # 1 zugeordnet wird. Es ist jedoch zu bemerken, dass der Bereich # 13505 eines virtuellen Bereiches, dem kein Bereich zugewiesen ist, „–” beträgt. Mit anderen Worten, kein Bereich, der einen physikalischen Speicherbereich zur Verfügung stellt, wird dem virtuellen Bereich # n zugeteilt.
  • 17 zeigt ein Beispiel der Konfiguration des Pufferspeichers 716 in den SDDs 700.
  • Der Pufferspeicher 716 besitzt einen Programmbereich 22000, einen Tabellenbereich 23000 und einen Datenpufferbereich 24000.
  • Der Programmbereich 22000 und der Tabellenbereich 23000 sind Bereiche, in denen Programme zum Steuern der SDDs 700 und von verschiedenen Tabellen gespeichert sind. Der Datenpufferbereich 24000 ist ein Bereich, der zum temporären Speichern von Nutzerdaten verwendet wird.
  • Der Programmbereich 22000 besitzt ein Schreib-I/O-Programm 22100, ein Lese-I/O-Programm 22200, ein in-SSD-WL-Programm 22300, ein Programm 22400 zur Erzeugung von freier Kapazität, ein SSD-Kommunikationsprogramm 22500 für interne Informationen und ein Kompressions/Extensionsprogramm 22600.
  • Das Schreib-I/O-Programm 22100 ist ein Programm zum Bearbeiten von Schreibanforderungen von der Speichersteuereinheit 100. Das Lese-I/O-Programm 22200 ist ein Programm zum Bearbeiten von Leseanforderungen von der Speichersteuereinheit 100. Bei dem in-SSD-WL-Programm 22300 handelt es sich um ein Programm zur Ausführung von WL im SSD. Das Programm 22400 zur Erzeugung freier Kapazität ist ein Programm zur Reklamationsbearbeitung, das durchgeführt wird, um eine Löschung von freier Kapazität in den SSDs 700 zu vermeiden.
  • Bei dem SSD-Kommunikationsprogramm 22500 für interne Informationen handelt es sich um ein Programm zur Erzeugung von internen Informationen auf SSDs in Übereinstimmung mit einer Anforderung von der Speichersteuereinheit 100 und zum Informieren der Speichersteuereinheit 100 über diese internen SSD-Informationen. Das Kompressions/Extensionsprogramm 226000 ist ein Programm zur Erzeugung einer Datenkompression und Datenextension mit Software unter Verwendung des Prozessors 713.
  • Der Tabellenbereich 23000 besitzt eine logisch-physikalische Umwandlungs-TBL 23100, eine Blockmanagement-TBL 23200 und eine Kapazitätsmanagement-TBL 23300.
  • Bei der logisch-physikalischen Umwandlungs-TBL 23100 handelt es sich um eine Tabelle zum Management der Anpassung zwischen Logikadressräumen und physikalischen Adressräumen der SSDs 700. Die Blockmanagement-TBL 23200 ist eine Tabelle zum Managen der Zustände der physikalischen Blöcke und Seiten. Die Kapazitätsmanagementtabelle 23300 ist eine Tabelle zum Managen von diversen Kapazitäten der SSDs.
  • Der Datenpufferbereich 24000 hat einen Bereich zum Speichern von Nutzerdaten 24100. Die Nutzerdaten 24100 bedeuten in diesem Zusammenhang Daten, die in Blöcke einzuschreiben sind, und Daten, die aus Blöcken auszulesen sind.
  • 18 zeigt ein Beispiel der Konfiguration der eine logisch-physikalische Umwandlung durchführenden TBL 23100.
  • Die eine logisch in physikalisch durchführende Umwandlungstabelle 23100 besitzt eine LBA 23101, eine Logikseiten # 23102, eine Logikseitengröße 23103, einen Status 23104, einen Block # 23102, eine Seiten # 23106, CW-Positionen 23107, eine physikalisch benutzte Quantität 23108 und ein Meldungskennzeichnen „benötigt-oder-nicht” 23109.
  • Die LBA 23101 gibt die Startposition einer der Speichersteuereinheit 100 zur Verfügung gestellten LBA wieder. Da die I/O-Einheit von Flash-Speichern innerhalb eines SSD eine Seite ist, wird der Wert der LBA 23101 in eine Vielzahl der Seitengröße gemanagt. Der SSD stellt LBAs von aufeinanderfolgenden numerischen Werten externen Vorrichtungen zur Verfügung. Der Optimalwert der LBA entspricht der maximalen Logikkapazität. Die Logikseiten # 23102 ist die Seriennummer der Logikseiten. Die Größe der Logikseite 23103 ist ein Ausdruck der Logikseitengröße in Bytes.
  • Der Status 23104 ist ein Feld, in dem gezeigt ist, ob sich jede Logikseite „in Benutzung”, „nicht in Benutzung” oder „in einem nichtbenutzbaren Zustand” befindet. „In Benutzung” bedeutet, dass Daten in der relevanten Logikseite gespeichert sind, mit anderen Worten, ein zur Logikseite passender LBA-Raum einem Eingang zugeteilt ist. Andererseits bedeutet „nicht in Benutzung”, dass keine Daten in der relevanten Logikseite gespeichert sind, mit anderen Worten, kein zur Logikseite passender LBA-Raum einem Eingang zugeteilt ist. „in einem nichtbenutzbaren Zustand” bedeutet, dass als Ergebnis eines Abfalls der nutzbaren Logikkapazität die relevante Logikseite dem nichtnutzbaren Logikraum zugehört. Die LBA-Anpassung der relevanten Logikseite wird auch von der Speichersteuereinheit als nichtnutzbar erkannt.
  • Der Block # 23105, die Seite # 23106 und die CW-Positionen 23107 zeigen auf dem physikalischen Adressraum die Anpassung der Logikseite an. Da bei dieser Ausführungsform der SSD eine Datenkompressionsfunktion besitzt, kann ein Fall auftreten, bei dem Daten in einer Logikseite komprimiert und in einem speziellen CW in der physikalischen Seite gespeichert werden. Daher betragen die CW-Positionen 23107 „1” für CWs, in denen Daten gespeichert sind, und „0” für CWs, in denen keine Daten gespeichert sind. Umgekehrt ist es für einen Logikadressraum auch möglich, dass zwei oder mehr Seiten in eine physikalische Einzelseite gemapped werden.
  • Die physikalisch genutzte Quantität 23108 gibt die Datenmenge in einem Fall wieder, in dem an die relevante Logikseite angepasste Daten in einer physikalischen Seite gespeichert werden. Beispielsweise ist gezeigt, dass in einer Logikseite # 0 Daten, die an eine Logikseite von 16 KB angepasst sind, auf 3 KB komprimiert und in einem Block # 0 und CW # 1 bis 3 der Seite # 0 gespeichert werden.
  • Das Meldungskennzeichen „benötigt-oder-nicht” 23109 stellt ein Feld dar, das anzeigt, wenn sich die physikalische Kapazität als Ergebnis einer Kompression durch nichtsynchronisierte Bearbeitung verändert hat, ob das Ergebnis nun der Speichersteuereinheit mitgeteilt wird oder nicht. Wenn es mitgeteilt werden muss, wird „EIN” gespeichert. Wenn es bereits mitgeteilt wurde oder nicht mitgeteilt werden muss, wird „AUS” gespeichert. Wenn das Feld auf „EIN” steht, wird es zu einem Kommunikationsobjekt durch die Bearbeitung einer regulären Überwachung, die später beschrieben wird.
  • Hiernach wird das Block- und Seitenmanagement innerhalb des SSD beschrieben. Die vom SSD benutzte Lese- und Schreibeinheit ist Seite.
  • Bei der FM handelt es sich um eine Einmalschreibvorrichtung, die kein Überschreiben auf der gleichen Seite ermöglicht und die Charakteristik besitzt, dass Daten auf einer freien Seite eingeschrieben werden sollten.
  • Wenn Daten auf einer vorgegebenen Seite aktualisiert (überschrieben) werden müssen, managt daher der SSD die letzten Daten als „gültige” Daten und Daten, die durch die Aktualisierung nicht mehr die letzten bilden, als „ungültige” Daten. Wie vorstehend erläutert, macht der SSD immer eine freie Seite erforderlich, in der aktualisierte Daten gespeichert werden. Diese freie Seite wird durch Löschen eines Blocks erzeugt. Die Löschung eines Blocks erfordert jedoch ein Ungültigmachen sämtlicher Seiten im zu löschenden Block. Aus diesem Grund findet daher ein Kopieren auf einen anderen Block zum Ungültigmachen dieser Seite im SSD statt, wenn irgendeine gültige Seite vorhanden ist. Diese Bearbeitungssequenz einschließlich des Kopierens von gültigen Daten und des Blocklöschens zur Erzeugung einer freien Seite ist der Prozess der Reklamation.
  • Für das Anhängen der aktualisierten Daten und der vorstehend beschriebenen Reklamation fordert der SSD zusätzlich zu einem Nutzerdatenbereich zum Speichern der letzten Daten (Nutzerdaten) einen Bereich, in dem die angehängten aktualisierten Daten gespeichert werden (Aktualisierungsbereich). Der Nutzerdatenbereich und der Aktualisierungsbereich können sich physikalisch voneinander unterscheiden. Wenn eine vorgegebene Kapazität sowohl im Nutzerdatenbereich als auch im Aktualisierungsbereich sichergestellt werden soll, ist auch keine physikalische Unterscheidung erforderlich. Bei dieser Ausführungsform wird davon ausgegangen, dass es sich bei dem physikalischen Raum um einen Raum auf der Basis eines Bereiches zur Speicherung von Nutzerdaten handelt.
  • 19 zeigt ein Beispiel der Konfiguration der Blockmanagementtabelle 23200.
  • Die Blockmanagementtabelle 23200 besitzt einen Block # 23201, eine Seiten # 23202, einen Seitenstatus 23203, einen CW # 23204, einen CW-Status 23205 und eine Logikseiten # 23206.
  • Bei dem Block # 23201 und der Seiten # 23202 handelt es sich um die Identifikationen von Blöcken und Seiten. Der Seitenstatus 23203 ist ein Feld, das anzeigt, ob die relevante Seite „in Benutzung (gültig)”, „in Benutzung (ungültig)” oder „frei” ist.
  • Somit bedeutet im Seitenstatus 23203 „in Benutzung (gültig)”, dass gültige Daten in der relevanten Seite gespeichert sind, bei denen es sich beispielsweise um ein Kopierobjekt in Reklamation handeln kann, während „frei” bedeutet, dass Daten gelöscht worden sind, jedoch die relevante Seite nicht benutzt ist.
  • Die CW # 23204 und der CW-Status 23205 führen ein Management durch, ob das relevante CW „gültig”, „ungültig” oder „frei” ist. „Gültig” sein bedeutet, dass gültige Daten in dem relevanten CW gespeichert sind. „Ungültig” sein bedeutet, dass keine gültigen Daten in dem relevanten CW gespeichert sind. „Frei” sein bedeutet, dass sich das relevante CW in einem nichtbenutzten Zustand befindet.
  • Die Logikseite # 23206 zeigt an, wenn der Status des relevanten CW „gültig” ist, auf welche Logikseite das CW passt. Wenn der Status des relevanten CW „ungültig” ist, wird „N/a” gespeichert.
  • Der Seitenstatus 23203 einer Seite, in der ein oder mehrere CWs mit einem CW-Status 23205 vorhanden sind, ist „in Benutzung (gültig)”. Andererseits ist der CW-Status 23205 einer jeden Seite, deren CW-Status 23205 „in Benutzung (ungültig)” entspricht, „ungültig”. Der CW-Status 23205 einer jeden Seite, deren Seitenstatus 23203 „frei” ist, ist „frei”.
  • 20 zeigt ein Beispiel der Konfiguration der Kapazitätsmanagementtabelle 23300.
  • Die Kapazitätsmanagementtabelle 23300 besitzt eine maximale Logikkapazität 23301, eine nutzbare Logikkapazität 23302, eine In-Benutzung-Logikkapazität 23303, eine freie Logikkapazität 23304, eine maximale physikalische Kapazität 23305, eine physikalische In-Benutzung-Kapazität 23306, eine freie physikalische Kapazität 23307, eine maximale Kompressionsrate 23308 und eine durchschnittliche Kompressionsrate 23309.
  • Die maximale Logikkapazität 23301 bildet die obere Grenze der Logikkapazität, die der relevante SSD externen Vorrichtungen zur Verfügung stellen kann, wobei dieser Wert an die maximale Logikkapazität 13103 angepasst ist.
  • Die nutzbare Logikkapazität 23302 ist eine Logikkapazität, die externen Vorrichtungen zur Verfügung gestellt werden kann und an die nutzbare Logikkapazität 13104 angepasst ist. Dieser Wert entspricht der Gesamtkapazität der Logikseiten, deren Status 23104 „in Benutzung” oder „nichtbenutzt” ist.
  • Die In-Benutzung-Logikkapazität 23303 ist eine Logikkapazität, die von einer externen Vorrichtung benutzt wird und an die In-Benutzung-Logikkapazität 13305 angepasst ist. Dieser Wert entspricht der Gesamtkapazität der Logikseiten, deren Status 23104 „in Benutzung” ist.
  • Bei der freien Logikkapazität 23304 handelt es sich um eine Logikkapazität, die von keiner externen Vorrichtung benutzt wird und an die freie Logikkapazität 13106 angepasst ist. Dieser Wert entspricht der Gesamtkapazität der Logikseiten, deren Status 23104 „nichtbenutzt” ist.
  • Die maximale physikalische Kapazität 23306 ist die Gesamtkapazität der am SSD montierten physikalischen Speichermedien und ist an die maximale physikalische Kapazität 13107 angepasst. Wenn der SSD einen Aktualisierungsbereich als einen physikalischen Speicherbereich besitzt, soll die maximale physikalische Kapazität 23306 die Kapazität des Bereiches sein, der zum Speichern von Nutzerdaten benutzt wird, ausgenommen der Aktualisierungsbereich.
  • Die physikalische In-Benutzung-Kapazität 23306 repräsentiert die Speichermenge der komprimierten Daten und ist an die physikalische In-Benutzung-Kapazität 13308 angepasst. Dieser Wert entspricht der Gesamtkapazität der CWs, deren CW-Status 23205 „gültig” ist. Es kann sich aber auch um die Gesamtkapazität von Seiten handeln, deren Seitenstatus 23203 „in Benutzung (gültig)” oder „in Benutzung (ungültig)” ist.
  • Bei der freien physikalischen Kapazität 23307 handelt es sich um die Kapazität von physikalischen Räumen, in denen keine Daten gespeichert sind, wobei eine Anpassung an die freie physikalische Kapazität 13109 gegeben ist. Dieser Wert entspricht der Gesamtkapazität von CWs, deren CW-Status 23205 „frei” ist. Es kann sich aber auch um die Gesamtkapazität von Seiten handeln, deren Seitenstatus 23203 „frei” ist.
  • Bei der maximalen Kompressionsrate 23308 handelt es sich um die Obergrenze der Kompressionsrate, die der relevante SSD zur Verfügung stellen kann, wobei eine Anpassung an die maximale Kompressionsrate 13110 gegeben ist.
  • Die durchschnittliche Kompressionsrate 23309 entspricht dem Durchschnitt der Kompressionsraten von Daten im SSD und ist an die durchschnittliche Kompressionsrate 13111 angepasst. Dieser Wert wird berechnet aus der physikalischen In-Benutzung-Kapazität 23306 ÷ die In-Benutzung-Logikkapazität 23303.
  • Managementinformationen u. ä. für die Eigenbenutzung der SSDs können zusätzlich zu den von externen Vorrichtungen gespeicherten Daten im physikalischen Raum gespeichert werden. Diese Managementinformationen umfassen beispielsweise die logisch-physikalische Umwandlungs-TBL 23100 und die Blockmanagement-TBL 23200.
  • 21 ist ein Ablaufdiagramm, das die Aufgabe der Speichersteuereinheit 100 wiedergibt. Die Speichersteuereinheit 100 prüft mit dem Wirt I/Fs 101, ob irgendein I/O, übertragen vom Wirtcomputer 30, vorhanden ist (S100). Wenn es irgendein I/O vom Wirtcomputer 30 gibt (S100: Ja), wird geprüft, ob die angeforderte Bearbeitung ein Lesebefehl oder ein Schreibbefehl ist (S101). Wen es sich um einen Lesebefehl handelt (S101: Lesebefehl), wird ein Datenauslesen durchgeführt (S102) (Einzelheiten siehe 25). Die Sequenz rückt dann zu Schritt S104 vor. Wenn die Bestimmung bei S101 auf einen Schreibbefehl zeigt (S101: Schreibbefehl), wird der Datenschreibbefehl durchgeführt (S103) (Einzelheiten siehe 22), und die Sequenz rückt dann zu S104 vor.
  • Wenn die Bestimmung bei S100 keine I/O-Anforderung anzeigt (S100: Nein), rückt die Sequenz direkt zur Bestimmung bei S104 vor.
  • Bei S104 wird ermittelt, ob oder ob nicht eine vorgegebene Periode abgelaufen ist. Wenn die Ermittlung bestätigend ist (S104: Ja), wird eine reguläre Überwachung zum Akquirieren von Informationen über die Kompressionsrate, Kapazität etc. vom SSD durchgeführt (S105) (Einzelheiten siehe 26). Danach wird eine Kapazitätsegalisierung durchgeführt, um die Ungleichheit der physikalischen Kapazität zwischen SSDs zu eliminieren (S106) (Einzelheiten siehe 27), und die Sequenz rückt zu S107 vor. Wenn die Ermittlung in S104 ein negatives Ergebnis hat (S104: Nein), rückt die Sequenz direkt zu S107 vor.
  • In Schritt S107 stellt die Speichersteuereinheit 100 fest, ob ein Stoppen des Systems befohlen wurde oder nicht. Wenn das Ergebnis bestätigend ist (S107: Ja), wird das System gestoppt. Wenn das Ergebnis bei S107 negativ ist (S107: Nein), kehrt die Sequenz zu S100 zurück, wo das Vorhandensein oder das Fehlen irgendeiner I/O-Anforderung überprüft wird.
  • 22 ist ein Ablaufdiagramm, das Einzelheiten von S103 zeigt, bei dem es sich um eine Datenschreibbearbeitung durch die Speichersteuereinheit 100 handelt.
  • Die Speichersteuereinheit 100 analysiert den Inhalt eines vom Wirtcomputer 30 gesendeten Schreibbefehles (S500). Dann stellt die Speichersteuereinheit auf der Basis der im Befehl enthaltenen Adressinformationen fest, ob oder ob nicht irgendein Speicherbereich in dem Bereich zugeteilt ist, in dem die Adresse des virtuellen Volumens der Schreibdestination vorhanden ist, indem u. a. auf Informationen in der Management-TBL 13500 für das virtuelle Volumen und in der Bereichsmanagement-TBL 13400 Bezug genommen wird (S501). Wenn die Ermittlung in S501 bestätigend ist (S501: Ja), bestimmt die Speichersteuereinheit, dass eine Bearbeitung der Überschreibaktualisierung des zugeteilten Bereiches angefordert wird, und prüft, ob ein Überschreiben erlaubt ist oder nicht (S502). In S502 wird der SSD, in dem die Überschreibdaten gespeichert werden sollen (hiernach der Schreibdestinations-SSD), identifiziert, indem u. a. auf die Bereichsmanagement-TBL Bezug genommen wird, und es wird überprüft, ob ein ausreichender Freiraum in der physikalischen Kapazität des Schreibdestinations-SSD vorhanden ist oder nicht, indem auf die freie physikalische Kapazität 13109 der Plattenmanagementtabelle Bezug genommen wird. Genauer gesagt, es wird überprüft, ob eine größere freie Kapazität als die Größe der Überschreibdaten im Schreibdestinations-SSD vorhanden ist oder nicht, da Probleme, wie sie nachfolgend wiedergegeben werden, auftreten können, weil die SSDs in dieser Ausführungsform eine Kompressionsfunktion und eine Virtualisierungsfunktion für eine Kapazität niedrigeren Levels besitzen. Es sei beispielsweise angenommen, dass eine Datenaktualisierungsanforderung in einem Status einer Löschung von freier physikalischer Kapazität empfangen wird und dass die zu aktualisierenden Daten bereits komprimiert sind. Wenn sich dann die Kompressionsrate der zu aktualisierenden Daten verschlechtert (ein Datenmuster annimmt, das nicht sofort eine Kompression erlaubt), ändert sich die für die Datenspeicherung erforderliche physikalische Kapazität nach der Aktualisierung gegenüber der Zeit vor der Aktualisierung (steigt an). Der schlechteste Fall hierbei würde eine vollständige Unmöglichkeit der Datenkompression bedeuten, nämlich einen Fall, in dem nichtkomprimierte Daten eingeschrieben werden müssen. Wenn daher nicht ein Minimum an physikalischer Kapazität, um eine Speicherung von unkomprimierten Daten zu ermöglichen, im Schreibdestinations-SSD sichergestellt werden kann, kann auch eine Anforderung zur Datenaktualisierung (Überschreiben) nicht akzeptiert werden. Wenn daher das Ergebnis in S503 negativ ist, wenn nämlich keine ausreichende freie physikalische Kapazität im Schreibdestinations-SSD zur Verfügung steht (S503: Nein), meldet die Speichersteuereinheit dem Wirtcomputer diesen Bearbeitungsfehler und beendet die Bearbeitungssequenz (S510).
  • Wenn das Ergebnis in S503 bestätigend ist (S503: Ja), stellt die Speichersteuereinheit fest, dass ein Datenüberschreiben möglich ist, speichert die vom Wirtcomputer 30 gesendeten Daten temporär im Datenpufferbereich 24000 des Pufferspeichers 716 (S504) und informiert den Wirtcomputer über die normale Beendigung der Bearbeitung (S508). Die Speichersteuereinheit 100 führt das Einschreiben von Daten in den Schreibdestinations-SSD zu jedem gewünschten Timing durch (S509) (Einzelheiten siehe 24), um die Prozesssequenz zu beenden. Ein Bericht über die normale Beendigung der Bearbeitung an den Wirt (S508) kann ebenfalls der SSD-Schreibbearbeitung folgen (S509).
  • Wenn das Ergebnis im S501 negativ ist (S501: Nein), bestimmt die Speichersteuereinheit, dass eine Bearbeitung zum Einschreiben von Daten in einen Bereich, in dem kein Bereich dem virtuellen Volumen zugeteilt ist, durchgeführt wird, und führt eine neue Bereichszuteilungsbearbeitung aus (S505) (Einzelheiten siehe 23). Es wird geprüft, ob die Bereichszuteilungsbearbeitung in S505 erfolgreich war oder nicht. Wenn sie erfolgreich war, rückt das Programm zur Datenspeicherbearbeitung in S504 vor. Wenn das Ergebnis im S506 negativ ist (S506: Nein), meldet die Speichersteuereinheit dem Wirtcomputer den Bearbeitungsfehler, ermittelt, dass die verbleibende Kapazität des Poolvolumens 500 unzureichend ist, und fordert den Nutzer über Steuersoftware, die im Wirtcomputer 30 installiert ist, zur Erweiterung des Poolvolumens auf (Installation einer zusätzlichen Platte). Hiernach wird die Prozesssequenz beendet.
  • 23 ist ein Ablaufdiagramm, das Einzelheiten der Bereichszuteilungsbearbeitung S505 zeigt.
  • Die Speichersteuereinheit wählt die zu bearbeitende RG aus (S300). Als Nächstes prüft sie, ob die freie physikalische Kapazität eines jeden SSD größer ist als die für die Bereichserstellung erforderliche Kapazität oder nicht (S301). Wenn das Ergebnis bestätigend ist (S301: Ja), bezieht sich die Speichersteuereinheit auf die Bereichsmanagement-TBL 13400 und wählt Speicherbereiche in einem nichtzugeteilten Status aus (S305). Als Nächstes selektiert die Speichersteuereinheit die führenden Eingänge in einem nichtzugeteilten Status von den SSDs und teilt sie den ausgewählten Bereichen zu. Genauer gesagt, bei diesen Eingängen handelt es sich um die Eingänge, die den geringsten Wert der Eingangs # 13602 unter den Eingängen besitzen, deren Status 13606 „nichtzugeteilt (nutzbar)” in der Eingangsmanagement-TBL 13600 ist (S306). Als Nächstes teilt die Speichersteuereinheit die ausgewählten Bereiche virtuellen Bereichen zu (S307). Hiernach sendet sie eine Notiz einer erfolgreichen Bearbeitung zurück (S308).
  • Wenn das Ergebnis in S301 negativ ist (S301: Nein), wird geprüft, ob sämtliche RGs ausgewählt worden sind oder nicht. Wenn das Prüfergebnis negativ ist (S302: Nein), wird die nächste RG ausgewählt (S303), wonach eine Rückkehr zu S301 folgt. Wenn das Prüfergebnis bestätigend ist (S302: Ja), wird eine Notiz eines Bearbeitungsfehlers zurückgeführt (S304).
  • 24 ist ein Ablaufdiagramm, das Einzelheiten der SSD-Schreibbearbeitung S509 zeigt.
  • Die Speichersteuereinheit überträgt einen Datenschreibanforderungsbefehl auf das Objekt SSD (S400). Die SSD-Steuereinheit, die den Schreibanforderungsbefehl empfangen hat, nimmt auf den Kompressionsmodus Bezug (S401), komprimiert die Daten, wenn sie sich im synchronisierten Kompressionsmodus befinden (S402), und speichert die komprimierten Daten in einem FM (S403). Wenn der nichtsynchronisierte Kompressionsmodus in S401 identifiziert wird (S401: nichtsynchronisiert), wird keine Datenkompression o. ä. durchgeführt. Vielmehr werden die empfangenen Daten so wie sie sind im FM gespeichert (S403). Der Kompressionsmodus des SSD kann im Voraus zu dem Zeitpunkt eingestellt werden, an dem die Speichervorrichtung den SSD betätigt, oder es kann im Schreibanforderungsbefehl ein Feld zur Information, ob der Kompressionsmodus synchronisiert ist oder nichtsynchronisiert ist, vorgesehen sein, und dieser Modus kann für jeden Schreibanforderungsbefehl bestimmt werden. Nachdem die SSD-Steuereinheit die Daten in die FM gespeichert hat, aktualisiert sie diverse Tabellen einschließlich der logisch-physikalischen Umwandlungstabelle, in der die Daten gespeichert wurden, der Blockmanagement-TBL und der Kapazitätsmanagementtabelle (S404). Hiernach wird auf eine Antwort zur Beendigung die Datenmenge, die in die FM eingeschrieben wurde (FM-Schreibmenge), der Speichersteuereinheit mitgeteilt (S405). Die FM-Schreibmenge kann mitgeteilt werden, indem ein Feld für den Mitteilungszweck in einem Teil eines Antwortbefehles vorgesehen wird. Alternativ dazu kann ein anderer spezieller Befehl für diesen Zweck vorgesehen und gesendet werden. Der mitzuteilende Inhalt umfasst die als Schreibanforderungsbefehl empfangene Datenmenge (angeforderte Schreibmenge) und die tatsächlich in die FM eingeschriebene Datenmenge (FM-Schreibmenge). Beispielsweise muss im synchronisierten Kompressionsmodus die FM-Schreibmenge der angeforderten Schreibmenge entsprechen oder kleiner als diese sein. Im nichtsynchronisierten Kompressionsmodus werden die gleichen Werte wie die FM-Schreibmenge und die angeforderte Schreibmenge zurückgeführt.
  • Die Speichersteuereinheit empfängt die Antwort von der SSD-Steuereinheit (S406), und letztere aktualisiert ihre eigenen Tabellen (S407). Genauer gesagt, sie aktualisiert die Eingangsmanagement-TBL 13600 und die Plattenmanagementtabelle 13100. Beim Aktualisieren der Eingangsmanagement-TBL 13600 aktualisiert die Speichersteuereinheit eine physikalisch benutzte Menge 13808. Auf diese Weise kann die Speichersteuereinheit die Datengröße eines jeden Einganges nach der Kompression managen. Wenn sie sich im nichtsynchronisierten Kompressionsmodus befindet, akquiriert die Steuereinheit Informationen über die Kompressionssituation durch die Bearbeitung einer regulären Überwachung, wie später beschrieben wird.
  • Beim Aktualisieren der Plattenmanagementtabelle 13100 aktualisiert die Speichersteuereinheit auf der Basis der von dem SSD angegebenen FM-Schreibmenge diverse physikalische Kapazitäten einschließlich der benutzten physikalischen Kapazität 13108 (durch Addieren der FM-Schreibmenge zum momentanen Wert) und der freien physikalischen Kapazität 13109 (durch Subtrahieren der FM-Schreibmenge vom momentanen Wert), aktualisiert die durchschnittliche Kompressionsrate 13111 und aktualisiert diverse Logikkapazitäten einschließlich der freien Logikkapazität 13106 (freie physikalische Kapazität 13109 ÷ maximale Kompressionsrate 13110), der benutzten Logikkapazität 13105 (durch Addieren der angeforderten Schreibmenge zum Momentanwert) und der nutzbaren Logikkapazität (benutzte Logikkapazität 13105 + freie Logikkapazität 13106). Durch diese Sequenz der Aktualisierungsbearbeitung kann die Speichersteuereinheit die letzten Werte der Kapazitäten des SSD durch Schätzung verfolgen. Es ist jedoch festzustellen, dass der Wert der Plattenmanagementtabelle 13100 schließlich auf den letzten Wert aktualisiert wird, der vom SSD, durch die Bearbeitung der regulären Überwachung, wie nachfolgend beschrieben, akquiriert wurde.
  • 25 ist ein Ablaufdiagramm, das ein Beispiel des Ablaufes der Bearbeitung von dem Zeitpunkt an zeigt, an dem eine Leseanforderung vom Wirtcomputer 30 übertragen wird, bis die Bearbeitung beendet ist.
  • Der Wirtcomputer 30 überträgt eine Datenleseanforderung auf die Speichersteuereinheit 100 (S200).
  • Die Speichersteuereinheit 100 empfängt die Datenleseanforderung, identifiziert den SSD, der die Basis des Speicherbereiches bildet, der dem Lesequellenbereich zugeteilt ist, und zwar in Abhängigkeit von der Leseanforderung (Adressbereich des virtuellen Volumens), und überträgt die Datenleseanforderung an die SSD-Steuereinheit 710 des speziellen SSD (auch bekannt als Staging-Anforderung) (S201).
  • Die SSD-Steuereinheit 710 empfängt die Datenleseanforderung, identifiziert den physikalischen Adressbereich, der an den Logikadressbereich angepasst ist, gemäß der Leseanforderung auf der Basis der logisch-physikalischen Umwandlungs-TBL 23100 und liest Daten aus diesem physikalischen Adressbereich aus (ein oder mehrere Seiten) (S202). Als Nächstes erweitert die Steuereinheit die Daten (S203) und überträgt die erweiterten Daten auf die Speichersteuereinheit 100 (S204).
  • Die Speichersteuereinheit 100 empfängt als Reaktion auf die in S201 übertragene Leseanforderung Daten von der SSD-Steuereinheit 710, speichert (stages) die empfangenen Daten im Pufferspeicher (S206) und überträgt die in S206 gespeicherten Daten auf den Wirtcomputer 30 (S207).
  • Der Wirtcomputer 30 empfängt als Reaktion auf die in S200 übertragene Leseanforderung Daten von der Speichersteuereinheit 100 und beendet die Bearbeitungssequenz (S208).
  • 26 ist ein Ablaufdiagramm, das Einzelheiten des Prozesses der regulären Überwachung in S105 zeigt.
  • Die Speichersteuereinheit 100 fordert die Objekt-SSD-Steuereinheit auf, interne Informationen zu melden (S600). Diese internen Informationen umfassen diverse Informationsgegenstände, die in der Kapazitätsmanagementtabelle 23330 gespeichert wurden, wie beispielsweise die logisch benutzte Menge und die physikalisch benutzte Menge. Wenn die SSD-Steuereinheit die Anforderung erhalten hat, führt sie als Reaktion darauf diverse Informationsgegenstände in die Kapazitätsmanagementtabelle 23300 zurück. Im Hinblick darauf, was sich infolge der Kompression im nichtsynchronisierten Kompressionsmodus in der physikalischen Größe verändert hat, beispielsweise den Kompressionsprozess nach der in S405 gezeigten Schreibanforderung, können auch ihr LBA-Bereich und ihre Datengröße nach der Kompression zurückgeführt werden. Genauere Beispiele umfassen den LBA-Bereich sowie die physikalisch benutzte Menge 23108 der logisch-physikalischen Umwandlungstabelle 23100, deren Meldungkennzeichen „benötigt-oder-nicht” 23109 auf EIN steht.
  • Nachdem die Speichersteuereinheit die Antwort in S601 erhalten hat, aktualisiert sie diverse Tabellen auf der Basis der auf diese Weise akquirierten Informationen (S602). Genauer gesagt, sie aktualisiert die Plattenmanagementtabelle 13100 und die Eintrittsmanagement-TBL 13600 u. a.
  • Wenn die Speichersteuereinheit 100 interne Informationen empfängt, aktualisiert sie die physikalisch benutzte Menge der Eingangsmanagement-TBL 13600. Da die physikalisch benutzte Menge im SSD für jeden LBA-Bereich (d. h. 16 KB) der logisch-physikalischen Umwandlungs-TBL 23100 gemanagt wird, werden interne Informationen für jeden dieser LBA-Bereiche gemeldet. Die Speichersteuereinheit aktualisiert sämtliche LBA-Bereiche (d. h. 12 MB), die die Eingänge bilden, als physikalisch benutzte Menge 13608. Dann berechnet die Speichersteuereinheit 100 für jede Platte die Gesamtheit der physikalisch benutzten Mengen gemäß der Eingangsmanagement-TBL 13600 und aktualisiert die benutzte physikalische Kapazität 13108 der Plattenmanagement-TBL 13100. Sie berechnet auch die freie physikalische Kapazität 13109 aus der Differenz zwischen der maximalen physikalischen Kapazität 13107 und der benutzten physikalischen Kapazität 13108 einer jeden Platte. Die freie Logikkapazität 13106 wird in Abhängigkeit vom Quotienten aus der freien physikalischen Kapazität 13109 und der maximalen Kompressionsrate 13110, die berechnet wird, aktualisiert. Die freie Logikkapazität 13106 kann auch aus der Gesamtgröße der Eingänge „nichtzugeteilt (nutzbar)” im Status in der Eingangsmanagement-TBL 13600 berechnet werden.
  • Auch wird die durchschnittliche Kompressionsrate 13111 aus dem Verhältnis zwischen der benutzten Logikkapazität 13105 und der benutzten physikalischen Kapazität 13108 berechnet, und relevante Teile in der Tabelle werden aktualisiert. Die benutzte Logikkapazität 13105 entspricht der Gesamtgröße der Eingänge, deren Status 13606 in der Eingangsmanagement-TBL 13600 „zugeteilt” ist. Die benutzte Logikkapazität 13105 wird beispielsweise in Abhängigkeit von der Zuteilung von Eingängen zu Speicherbereichen aktualisiert.
  • 27 ist ein Ablaufdiagramm, das Einzelheiten des Prozesses der Kapazitätsegalisierung in S106 zeigt.
  • Die Speichersteuereinheit wählt die zu bearbeitende RG aus (S700). Sie prüft, ob die restliche physikalische Kapazität in der RG von Platte zu Platte ungleich ist oder nicht (S701). Genauer gesagt, in Bezug auf die RG-Managementtabelle 13200 und die Plattenmanagementtabelle 13100 bedeutet die Ungleichheit beispielsweise, dass (1) das Maximum und das Minimum der freien physikalischen Kapazität 13109 der SSDs, die die relevante RG bilden, einen Schwellenwert übersteigt, (2) der Unterschied zwischen dem Maximum der freien physikalischen Kapazität 13109 in der relevanten RG und dem Durchschnitt der freien physikalischen Kapazitäten 13109 in der relevanten RG einen Schwellenwert übersteigt oder (3) der Unterschied zwischen dem Durchschnitt der freien physikalischen Kapazitäten 13109 in der relevanten RG und dem Minimum der freien physikalischen Kapazität 13109 in der relevanten RG einen Schwellenwert übersteigt. Ferner kann diese Ungleichheit bedeuten, dass (4) die freie physikalische Kapazität 13109 einer speziellen Platte extrem klein ist (oder kleiner als ein Schwellenwert) o. ä. Auch kann die Logikkapazität anstelle der physikalischen Kapazität als Kriterium der Ungleichheit benutzt werden. Ferner können die Schwellenwerte und andere numerischen Werte, die bei der Auswertung benutzt werden, auf alle beliebigen gewünschten Werte vom Administrator oder Nutzer der Speichervorrichtung in Abhängigkeit vom Verwendungszweck verändert werden. Diese Änderung kann unter Verwendung von Steuersoftware durchgeführt werden, die im Wirtcomputer installiert ist.
  • Wenn das Ergebnis der Prüfung in S701 positiv ist (S701: Ja), bestimmt die Speichersteuereinheit, dass eine Kapazitätsegalisierung durchgeführt werden sollte, da die physikalisch genutzten Mengen der Platten in der relevanten RG ungleich sind, und führt eine Kapazitätsegalisierung auf einer Eingang-um-Eingang-Basis durch (S702) (Einzelheiten siehe 28 bis 30). Dann rückt der Prozess auf S703 vor, um zu überprüfen, ob der Durchschnitt der freien physikalischen Kapazitäten in der relevanten RG klein ist oder nicht. Genauer gesagt, in Bezug auf die RG-Managementtabelle 13200 und die Plattenmanagementtabelle 13100 wird festgestellt, ob der Durchschnitt der freien physikalischen Kapazitäten 13109 in der relevanten RG unter einem Schwellenwert liegt oder nicht (S703). In Schritt S703 kann auch die Logikkapazität anstelle der physikalischen Kapazität als Kriterium der Ungleichheit benutzt werden.
  • Wenn das Ergebnis in S703 positiv ist (S703: JA), bestimmt die Speichersteuereinheit, dass die physikalische Kapazität der relevanten RG gelöscht werden kann, und rückt zu S704 vor, in dem die Bestimmung für die Bearbeitung der Inter-RG-Kapazitätsegalisierung durchgeführt wird. In S704 wird geprüft, ob es eine andere RG gibt oder nicht, die eine ausreichende restliche physikalische Kapazität besitzt. Genauer gesagt, es wird auf die RG-Managementtabelle 13200 und die Plattenmanagementtabelle 13100 Bezug genommen und festgestellt, ob es irgendeine freie physikalische Kapazität 13109 gibt oder nicht, deren Durchschnitt über einem Feststellungsschwellenwert liegt (S704). Wenn die Feststellung in S704 positiv ist (S704: Ja), kann die Inter-RG-Kapazitätsegalisierung durchgeführt werden, und es wird eine Bereich-um-Bereich-Kapazitätsegalisierung ausgeführt (S705) (Einzelheiten siehe 30 und 31). Durch die Bearbeitung der Bereich-um-Bereich-Kapazitätsegalisierung wird die physikalische Kapazität der RG, deren physikalische Kapazität gelöscht sein kann, erhöht. Hierdurch kann das Stoppen der I/O-Bearbeitung infolge der Löschung der physikalischen Kapazität vermieden werden. Hiernach wird geprüft, ob jede RG diesen Prozess durchlaufen hat oder nicht (S706). Wenn das Ergebnis negativ ist (S706: Nein), wird die nächste Objekt-RG ausgewählt (S707), wonach eine Rückkehr zur Überprüfung in S701 folgt.
  • Wenn das Ergebnis der Prüfung in S701 negativ ist (S701: Nein), bewegt sich die Speichersteuereinheit weiter zur Bearbeitung in S703.
  • Wenn das Ergebnis der Prüfung in S703 negativ ist (S703: Nein) oder wenn die Feststellung in S704 negativ ist (S704: Nein), stellt die Steuerspeichereinheit fest, dass die Inter-RG-Kapazitätsegalisierung nicht durchgeführt werden kann, und bewegt sich weiter zu S706.
  • Wenn das Ergebnis der Prüfung in S706 positiv ist (S707: Ja), wird der Prozess beendet.
  • Der Nutzer oder der Administrator kann die Schwellenwerte zur Feststellung in S703 und S704 in Abhängigkeit vom Verwendungszweck auf jeden gewünschten Wert einstellen. Ferner kann die Speichervorrichtung den Inhalt der Plattenmanagementtabelle 13100 und der RG-Management-TBL 13200 dem Nutzer oder dem Administrator über Steuersoftware anzeigen, die im Wirtcomputer installiert ist, und der Nutzer oder der Administrator kann das Objekt der Egalisierung in Abhängigkeit von dem Ergebnis, das diese Anzeige erzeugt hat, auswählen.
  • Wenn die freie SSD-Logikkapazität erhöht worden ist, wird das „nichtnutzbar” des Status 13606 der Eingangsmanagement-TBL 13600 in „nichtzugeteilt (nutzbar)” geändert. Durch dieses Management kann die Speichersteuereinheit 100 den Logikraum, der als eine Speichervorrichtung benutzbar ist, ausweiten.
  • 28 zeigt die Umrisse einer In-RG-Datenverschiebung, die ein Beispiel der Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung bildet. Bei den in 28 dargestellten in diagonalen Linien schraffierten Teilen des physikalischen Raumes handelt es sich um Bereiche, in denen Daten bereits gespeichert sind, während nichtschraffierte Bereiche freie Bereiche sind.
  • Ein SSD 310, ein SSD 320 und ein SSD 330 bilden die RG 300. Die freie physikalische Kapazität des SSD 310 ist extrem kleiner als diejenigen der anderen SDDs. Somit sind die freien physikalischen Kapazitäten in der RG ungleich. Obwohl nicht gezeigt, sind auch die freien Logikkapazitäten ungleich.
  • Ein Eingang (A) 811 wird in einem Logikraum erstellt, der von der SSD 310 zur Verfügung gestellt wird, und dessen Daten D(A) werden im SSD 310 als komprimierte Daten 810 gespeichert. Ferner wird ein Eingang (B) 813 in einem Logikraum erstellt, der vom SSD 330 zur Verfügung gestellt wird, und dessen Daten D(B) werden im SSD 330 als komprimierte Daten 812 gespeichert. Der Eingang (A) 811 und der Eingang (B) 813 besitzen die gleiche Größe. Die komprimierten Daten 810 sind jedoch größer als die komprimierten Daten 812.
  • Somit werden im SSD 310, dessen freie physikalische Kapazität kleiner ist, die komprimierten Daten 810 mit einer größeren benutzten physikalischen Menge gespeichert, während die komprimierten Daten 812 mit einer geringeren benutzten physikalischen Menge im SSD 330 gespeichert werden, der eine größere freie physikalische Kapazität besitzt.
  • Daher tauscht die Speichersteuereinheit die komprimierten Daten 810 mit den komprimierten Daten 812 zwischen dem SSD 310 und dem SSD 330 aus. Durch die erreichte Speicherung der komprimierten Daten 812 mit einer kleineren benutzten physikalischen Menge im SSD 310, der eine kleinere freie physikalische Kapazität besitzt, wird die freie physikalische Kapazität des SSD 310 erweitert. Andererseits wird durch die Speicherung der komprimierten Daten 810, die eine größere benutzte physikalische Menge besitzen, im SSD 330, der eine größere freie physikalische Kapazität hat, die freie physikalische Kapazität des SSD 330 komprimiert. Durch die auf diese Weise durchgeführte Bearbeitung wird eine Egalisierung der freien physikalischen Kapazität zwischen den SSDs erreicht.
  • 29 zeigt die Umrisse einer Inter-RG-Datenverschiebung, bei der es sich um ein anderes Beispiel einer Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung handelt.
  • Der SSD 310, der SSD 320 und der SSD 330 bilden die RG 300. Die freie physikalische Kapazität des SSD 310 ist extrem geringer als die der anderen SSDs. Daher sind die freien physikalischen Kapazitäten in der relevanten RG ungleich. Obwohl nicht gezeigt, sind auch die freien Logikkapazitäten ungleich.
  • Ein SSD 410, ein SSD 420 und SSD 430 bilden eine RG 400.
  • Ein Eingang (A) 821 wird in einem Logikraum erstellt, der vom SSD 310 zur Verfügung gestellt wird, und seine Daten D(A) werden im SSD 310 als komprimierte Daten 820 gespeichert. Ferner wird ein Eingang (B) 823 in einem Logikraum erstellt, der vom SSD 420 zur Verfügung gestellt wird, und seine Daten D(B) werden im SSD 420 als komprimierte Daten 822 gespeichert. Der Eingang (A) 821 und der Eingang (B) 823 besitzen eine identische Größe. Die komprimierten Daten 820 sind jedoch größer als die komprimierten Daten 822.
  • Somit werden im SSD 310, dessen freie physikalische Kapazität geringer ist, die komprimierten Daten 820 mit einer größeren benutzten physikalischen Menge gespeichert, während die komprimierten Daten 822 mit einer geringeren benutzten physikalischen Menge im SSD 420, der eine größere freie physikalische Kapazität besitzt, gespeichert werden.
  • Daher tauscht die Speichersteuereinheit die komprimierten Daten 820 mit den komprimierten Daten 822 zwischen dem SSD 310 und dem SSD 420 aus. Durch die erreichte Speicherung der komprimierten Daten 822, die eine geringere benutzte physikalische Menge bilden, im SSD 420, der eine kleinere physikalische Kapazität besitzt, wird die freie physikalische Kapazität des SSD 310 erweitert. Andererseits wird durch die Speicherung der komprimierten Daten 820 mit einer größeren benutzten physikalischen Menge im SSD 330, der eine größere freie physikalische Kapazität besitzt, die freie physikalische Kapazität des SSD 420 komprimiert.
  • Die soweit beschriebene Bearbeitung ermöglicht eine Egalisierung der freien physikalischen Kapazität zwischen den SSDs der RG 300.
  • 30 ist ein Ablaufdiagramm, das ein anderes Beispiel der Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung in S702 zeigt. Bei der Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung werden die Daten Eingang um Eingang verschoben.
  • Die Speichersteuereinheit wählt ein SSD einer kleineren freien physikalischen Kapazität. Der SSD mit einer kleineren freien physikalischen Kapazität ist derjenige SSD, dessen freie physikalische Kapazität 13109 beispielsweise den geringsten Wert in der relevanten RG besitzt. Es wird auf die Eingangsmanagement-TBL 13600 Bezug genommen, und ein Eingang (A) mit benutzter physikalischer Menge 13608 wird aus dem relevanten SSD ausgewählt (S800). In S800 kann auch ein SSD, dessen benutzte physikalische Kapazität 13108 größer ist, ausgewählt werden.
  • Als Nächstes wählt die Speichersteuereinheit einen SSD aus, der eine größere freie physikalische Kapazität besitzt, und wählt aus diesem SSD einen Eingang (B) aus, der eine kleinere benutzte physikalische Menge besitzt (S801). In S801 kann auch ein SSD mit einer kleineren benutzten physikalischen Kapazität 13109 ausgewählt werden.
  • D(A) und D(B), bei denen es sich um die benutzten physikalischen Mengen des Eingangs (A) und des Eingangs (B) handelt, werden verglichen, um zu überprüfen, ob D(A) größer ist als D(B) oder nicht (S802). Wenn das Ergebnis positiv ist (S802: Ja), stellt die Speichersteuereinheit fest, ob der Eingang (A) und der Eingang (B) zu unterschiedlichen Streifen auf der Basis der Bereichsmanagement-TBL 13400 gehören oder nicht (S803). Wenn das Ergebnis positiv ist (S803: Ja), tauscht die Steuereinheit Daten zwischen dem Eingang (A) und dem Eingang (B) aus (S804) und aktualisiert diverse Tabellen in Verbindung mit dem Austausch (S806), um die Sequenz der Bearbeitung zu beenden. Die Aktualisierung der Tabellen umfasst die Aktualisierung der Eingangszuteilung zu Speicherbereichen in der Berereichsmanagement-TBL 13400 und das Aktualisieren des Status 13606, der benutzten physikalischen Menge 13608 etc. in jedem Eingang in der Eingangsmanagement-TBL 13600. Wenn die freie SSD-Logikkapazität angestiegen ist, wird das „nichtnutzbar” des Status 12606 der Eingangsmanagement-TBL 13600 in „nichtzugeteilt (nutzbar)” geändert. Durch dieses Management kann die Speichersteuereinheit 100 den als Speichervorrichtung nutzbaren Logikraum erweitern.
  • Durch diese Bearbeitung der Kapazitätsegalisierung werden freie physikalische Kapazitäten von SSDs und der relevanten RG egalisiert. Da in Verbindung damit auch die freien Logikkapazitäten der SSDs in der RG egalisiert werden, wird schließlich die kapazitätsermöglichende Bereichserstellung in der RG erweitert. Im Prozess der Egalisierung besteht keine Notwendigkeit, die freien physikalischen Kapazitäten unter den SSDs in der RG genau zu egalisieren, sondern es ist ausreichend, Differenzen in der freien physikalischen Kapazität unter den SSDs zu reduzieren. Eine Verringerung der Differenzen in der freien physikalischen Kapazität dient dazu, Differenzen in der freien Logikkapazität zu reduzieren, so dass die Anzahl der Speicherbereiche, die erstellt werden können, erhöht werden kann.
  • Wenn das Ergebnis der Feststellung in S802 negativ ist (S802: Nein), suspendiert die Speichersteuereinheit den Datenaustausch (S805), da ein kontinuierlicher Datenaustausch in der Lage ist, die freien physikalischen Kapazitäten der SSDs mit kleineren freien physikalischen Kapazitäten zu erweitern.
  • Wenn das Ergebnis der Feststellung in S803 negativ ist (S803: Nein), stellt die Speichersteuereinheit fest, dass die Datenverschiebung die Redundanz der RAID reduzieren würde, und suspendiert den Datenaustausch.
  • Die Verringerung der Differenzen der freien Logikkapazität unter den SSDs der RG benötigt nicht immer die Schritte S802 und S803. Selbst wenn die TBL in S806 nicht aktualisiert wird, kann auch eine Verringerung der Differenzen der freien Logikkapazität unter den SSDs der RG durchgeführt werden.
  • 31 zeigt die Umrisse einer Inter-RG-Datenverschiebung, bei der es sich um ein Beispiel einer Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung handelt.
  • Der SSD 310, der SSD 320 und der SSD 330 bilden die RG 300. Die freien physikalischen Kapazitäten des SSD 310, SSD 320 und SSD 330 sind so gering, dass sie das Risiko einer Löschung mit sich bringen.
  • Andererseits bilden der SSD 410, der SSD 420 und der SSD 430 die RG 400. Dabei sind die freien physikalischen Kapazitäten des SSD 410, SSD 420 und SSD 430 ausreichend groß.
  • Es gibt somit im System die RG 300, deren physikalische Kapazitäten das Risiko einer Löschung mit sich bringen, und die RG 400, deren physikalische Kapazitäten ausreichend groß sind.
  • Es wird nunmehr ein Bereich (A) 843 in der RG 300 erstellt. Der Bereich (A) 843 wird von einem Eingang 832, der in einem vom SSD 310 zur Verfügung gestellten Logikraum erstellt wurde, einem Eingang 834, der in einem vom SSD 320 zur Verfügung gestellten Logikraum erstellt wurde, und einem Eingang 835, der in einem vom SSD 330 zur Verfügung gestellten Logikraum erstellt wurde, gebildet. Komprimierte Daten 831 in Anpassung an den Eingang 832 werden im SSD 310 gespeichert, komprimierte Daten 833 in Anpassung an den Eingang 834 werden im SSD 320 gespeichert und komprimierte Daten 835 in Anpassung an den Eingang 836 werden im SSD 330 gespeichert.
  • Andererseits wird ein Bereich (B) 844 in der RG 400 erstellt. Der Bereich (B) 844 wird von einem Eingang 838, der in einem vom SSD 410 zur Verfügung gestellten Logikraum erstellt wurde, einem Eingang 840, der in einem vom SSD 420 zur Verfügung gestellten Logikraum erstellt wurde, und einem Eingang 842, der in einem vom SSD 430 zur Verfügung gestellten Logikraum erstellt wurde, gebildet. Komprimierte Daten 837 in Anpassung an den Eingang 838 werden im SSD 410 gespeichert, komprimierte Daten 839 in Anpassung an den Eingang 840 werden im SSD 420 gespeichert und komprimierte Daten 841 in Anpassung an den Eingang 842 werden im SSD 430 gespeichert.
  • Die komprimierten Daten 831, die komprimierten Daten 833 und die komprimierten Daten 835 sind größer als die komprimierten Daten 837, die komprimierten Daten 839 und die komprimierten Daten 841. Der Bereich (A) 843, der eine größere benutzte physikalische Menge umfasst, wird in der RG 300 mit einer kleineren freien Kapazität gespeichert, und der Bereich (B) 844, der eine kleinere benutzte physikalische Menge aufweist, wird in der RG 400 mit einer größeren freien Kapazität gespeichert.
  • Daher tauscht die Speichersteuereinheit Daten des Bereiches (A) und des Bereiches (B) zwischen der RG 300 und der RG 400 aus. Folglich werden die komprimierten Daten 837 im SSD 310, die komprimierten Daten 839 im SSD 320 und die komprimierten Daten 841 im SSD 330 gespeichert. Andererseits werden die komprimierten Daten 831 im SSD 410, die komprimierten Daten 833 im SSD 420 und die komprimierten Daten 835 im SSD 430 gespeichert. Da die komprimierten Daten, die eine kleinere benutzte physikalische Menge als jetzt besitzen, auf diese Weise in den SSDs der RG 300 mit kleineren freien physikalischen Kapazitäten gespeichert werden, können die freien physikalischen Kapazitäten aller SSDs, die die RG 300 bilden, erweitert werden.
  • Da hierdurch ein Stoppen der I/O-Bearbeitung infolge einer Löschung der physikalischen Kapazität in der RAID-Gruppe vermieden werden kann, kann die Speichervorrichtung weiterhin auf stabile Weise operieren.
  • 32 ist ein Ablaufdiagramm, das Einzelheiten der Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung in S705 zeigt. Bei der Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung werden Daten auf einer Bereich-um-Bereich-Basis verschoben.
  • Die Speichersteuereinheit wählt den Bereich (A), der eine größere benutzte physikalische Menge umfasst, in der relevanten RG aus (S900). Als Nächstes wählt die Steuereinheit aus RGs, die eine größere durchschnittliche restliche physikalische Kapazität besitzen, den Bereich (B) aus, der eine geringere benutzte physikalische Menge umfasst (S901).
  • Als Nächstes wird festgestellt, ob die benutzte physikalische Menge der im ausgewählten Bereich (A) gespeicherten Daten größer ist als die benutzte physikalische Menge der im Bereich (B) gespeicherten Daten oder nicht (S902). Wenn das Ergebnis positiv ist (S902: Ja), werden Daten ausgetauscht (S903), wonach eine Aktualisierung der diversen Tabellen folgt (S903), und die Prozesssequenz wird beendet.
  • Dieser Prozess der Kapazitätsegalisierung führt zu einer Ausweitung der freien physikalischen Kapazität von allen SSDs in der relevanten RG. Da auch die freien Logikkapazitäten der SSDs hiermit expandieren, erweitert sich schließlich die Kapazität, mit der Speicherbereiche in der RG erstellt werden können.
  • Wenn die Feststellung in S802 negativ ist (S802: Nein), suspendiert die Speichersteuereinheit den Datenaustausch (S805).
  • Wenn die Feststellung in S902 negativ ist (S902: Nein), wird der Datenaustausch suspendiert (S904).
  • Somit wurde bei der Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung in S705 gemäß 27 vorausgesetzt, dass die freien physikalischen Kapazitäten der SSDs in der relevanten RG bereits egalisiert worden sind, um im Voraus S702 auszuführen, bei dem es sich um eine Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung handelt. Es ist jedoch darauf hinzuweisen, dass in der in 27 dargestellten Sequenz die relative Reihenfolge der Ausführung von S704, bei dem es sich um eine Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung handelt, und von S702, bei dem es sich um eine Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung handelt, auch umgekehrt werden kann.
  • Wenn die Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung auch den vorteilhaften Effekt einer Eingang-um-Eingang-Bearbeitung der Kapazitätsegalisierung erreichen kann, wie in 33 gezeigt, kann nur die Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung durchgeführt werden.
  • 33 ist ein Ablaufdiagramm, das noch ein anderes Ausführungsbeispiel einer Bereich-um-Bereich-Bearbeitung der Kapazitätsegalisierung zeigt.
  • Der SSD 310, der SSD 320 und der SSD 330 bilden die RG 300. Die freien physikalischen Kapazitäten des SSD 310, des SSD 320 und des SSD 330 sind ungleich, so dass ein trogförmiges Muster gebildet wird, in dem nur die des SSD 320 gering ist.
  • Andererseits bilden der SSD 410, der SSD 420 und der SSD 430 die RG 400. Die freien physikalischen Kapazitäten des SSD 410, des SSD 420 und des SSD 430 sind ungleich, so dass ein peakförmiges Muster gebildet wird, indem nur die des SSD 420 groß ist.
  • Die RG 300 und die RG 400 befinden sich daher in einem ungleichen Zustand der freien physikalischen Kapazität, wodurch sich eine zueinander entgegengesetzte Beziehung ergibt, bei der die RG 300 peakförmig ausgebildet ist, während die RG 400 trogförmig gestaltet ist.
  • Als Nächstes wird ein Bereich (A) 863 in der RG 300 erstellt. Der Bereich (A) 863 wird von einem Eingang 852, der in einem vom SSD 310 zur Verfügung gestellten Logikraum erstellt ist, einem Eingang 854, der in einem vom SSD 320 zur Verfügung gestellten Logikraum erstellt ist, und einem Eingang 856, der in einem vom SSD 330 zur Verfügung gestellten Logikraum erstellt ist, gebildet. Komprimierte Daten 851 in Anpassung an den Eingang 852 werden im SSD 310, komprimierte Daten 853 in Anpassung an den Eingang 854 im SSD 320 und komprimierte Daten 855 in Anpassung an den Eingang 856 im SSD 330 gespeichert.
  • In der RG 300 werden die komprimierten Daten 851, die eine kleinere benutzte physikalische Menge umfassen, in dem SSD 310 gespeichert, der eine größere freie physikalische Kapazität besitzt, die komprimierten Daten 853, die eine größere benutzte physikalische Menge umfassen, in dem SSD 320 gespeichert, der eine kleinere freie physikalische Kapazität aufweist, und die komprimierten Daten 855, die eine kleinere benutzte physikalische Menge umfassen, in dem SSD 330 gespeichert, der eine größere freie physikalische Kapazität besitzt.
  • Die im Bereich (A) 863 gespeicherten komprimierten Daten bilden ein peakförmiges Muster, in dem die komprimierten Daten 853 größer sind als die komprimierten Daten 851 und die komprimierten Daten 855.
  • Andererseits wird der Bereich (B) 864 in der RG 400 erstellt. Der Bereich (B) 864 wird von einem Eingang 858, der in einem vom SSD 410 zur Verfügung gestellten Logikraum erstellt ist, einem Eingang 860, der in einem vom SSD 420 zur Verfügung gestellten Logikraum erstellt ist, und einem Eingang 862, der in einem vom SSD 430 zur Verfügung gestellten Logikraum erstellt ist, gebildet. Komprimierte Daten 857 in Anpassung an den Eingang 858 werden im SSD 410 gespeichert, komprimierte Daten 859 in Anpassung an den Eingang 860 werden im SSD 420 gespeichert und komprimierte Daten 861 in Anpassung an den Eingang 862 werden im SSD 430 gespeichert.
  • In der RG 400 werden die komprimierten Daten 857, die eine größere benutzte physikalische Menge umfassen, in dem SSD 410 gespeichert, der eine geringere freie physikalische Kapazität besitzt, die komprimierten Daten 859, die eine kleinere benutzte physikalische Menge umfassen, in dem SSD 420, der eine größere freie physikalische Kapazität besitzt, und die komprimierten Daten 861, die eine größere benutzte physikalische Menge umfassen, in dem SSD 430, der eine kleinere freie physikalische Kapazität hat.
  • Die im Bereich (B) 864 gespeicherten komprimierten Daten bilden daher ein trogförmiges Muster, in dem die komprimierten Daten 859 kleiner sind als die komprimierten Daten 857 und die komprimierten Daten 861.
  • Daher verschiebt die Speichersteuereinheit Daten zwischen dem Bereich (A) 863 und dem Bereich (B) 864, um den ungleichen Zustand zwischen den beiden RGs zu beseitigen. Da hierdurch die komprimierten Daten 857, die eine größere benutzte physikalische Menge umfassen, in dem SSD 310 gespeichert werden, der eine größere freie physikalische Kapazität besitzt, nimmt die freie physikalische Kapazität des SSD 310 ab. Da die komprimierten Daten 859, die eine kleinere benutzte physikalische Menge umfassen, in dem SSD 320 gespeichert werden, der eine kleinere freie physikalische Kapazität hat, wird die freie physikalische Kapazität des SSD 320 erweitert. Da die komprimierten Daten 861, die eine größere benutzte physikalische Menge umfassen, in dem SSD 330 gespeichert werden, der eine größere freie physikalische Kapazität besitzt, nimmt die freie physikalische Kapazität des SSD 330 ab. In der RG 300 kann daher ein vorteilhafter Effekt erzielt werden, dass die freien physikalischen Kapazitäten der SSDs egalisiert werden.
  • Da andererseits in der RG 400 die komprimierten Daten 851, die eine kleinere benutzte physikalische Menge umfassen, in dem SSD 410 gespeichert werden, der eine kleinere freie physikalische Kapazität hat, wird die freie physikalische Kapazität des SSD 410 erweitert. Da die komprimierten Daten 853, die eine größere benutzte physikalische Menge umfassen, in dem SSD 420 gespeichert werden, der eine größere freie physikalische Kapazität hat, wird die freie physikalische Kapazität des SSD 420 verringert. Da die komprimierten Daten 855, die eine kleinere benutzte physikalische Menge umfassen, in dem SSD 430 gespeichert werden, der eine kleinere freie physikalische Kapazität besitzt, wird die freie physikalische Kapazität des SSD 430 erweitert. Sowohl in der RG 400 als auch in der RG 300 kann somit ein vorteilhafter Effekt erzielt werden, dass die freien physikalischen Kapazitäten der SSDs egalisiert werden.
  • Das Vorstehende lässt sich so zusammenfassen, dass die Speichersteuereinheit die Kapazitätsegalisierung so durchführen kann, dass die nachfolgenden Bedingungen erfüllt werden:
    • – Speichere Daten, die eine größere benutzte physikalische Menge umfassen, in einem SSD, der eine größere freie physikalische Kapazität besitzt.
    • – Speichere Daten, die eine kleinere benutzte physikalische Menge umfassen, in einem SSD, der eine kleinere freie physikalische Kapazität hat.
  • Auf diese Weise können die freien physikalischen Kapazitäten der SSDs, die eine RG bilden, egalisiert werden. Ferner dient die Egalisierung der freien physikalischen Kapazitäten auch dazu, freie Logikkapazitäten zu egalisieren. Folglich können akzeptable Bereichsräume in der RG erweitert oder maximiert werden.
  • Obwohl die freie physikalische Kapazität und die freie Logikkapazität bei dieser Ausführungsform als Kriterien zum Detektieren einer Ungleichheit und zum Auswerten des Egalisierungseffektes zum Ausgleich der Ungleichheit benutzt werden, können stattdessen auch die benutzte physikalische Kapazität und die benutzte Logikkapazität Verwendung finden.
  • Selbst wenn eine Ungleichheit der freien Logikkapazität durch Speicherung von eigenen internen Informationen von SSDs zusätzlich zu Daten, die von einer externen Vorrichtung in FMs in SSDs eingeschrieben wurden, verursacht wurde, kann eine Egalisierung der freien Logikkapazität durch Verschiebung von Daten in Eingängen Anwendung finden.
  • Zweite Ausführungsform
  • Bei der ersten Ausführungsform variiert der Logikadressraum, der von SSDs externen Vorrichtungen zur Verfügung gestellt werden kann, mit dem Zustand der Datenkompression. Genauer gesagt, wenn bei der ersten Ausführungsform die maximale Logikkapazität der SSDs 800 GB und die nutzbare Logikkapazität 650 GB beträgt, ist der zur Verfügung stehende Logikadressraum auf einen LBA 0 (d. h. 0 GB) bis 650 GB begrenzt (1). Es kann hierzu ergänzt werden, dass die Speichersteuereinheit den Maximalwert des von den SSDs zur Verfügung gestellten Logikadressraumes zu einem vorgegebenen Zeitpunkt als die nutzbare Logikkapazität der SSDs zu diesem Zeitpunkt erkennen kann. Im Gegensatz hierzu variiert bei den SSDs der zweiten Ausführungsform die zur Verfügung stehende Logikkapazität. Genauer gesagt, der hier von den SSDs zur Verfügung gestellte Logikraum verbleibt immer in einem Adressbereich von 0 GB bis 800 GB, wenn die maximale Logikkapazität 800 GB beträgt. Weitere Einzelheiten werden hierbei in Verbindung mit 34 erläutert.
  • 34 zeigt einen Adressraum eines SSD bei der zweiten Ausführungsform.
  • Unterschiede gegenüber der ersten Ausführungsform sind, dass die Größen der maximalen Logikkapazität 30001 und des nutzbaren Logikraumes 30002 800 GB betragen und die Größe des nutzbaren Logikraumes 30002 unabhängig vom Zustand der Datenkompression fixiert ist. Der nichtnutzbare Logikraum 30003, der in den SSDs der ersten Ausführungsform vorhanden ist, fehlt hier. Da ferner die Speichersteuereinheit den Logikadressraum von 800 GB frei benutzen kann, ist eine Vielzahl von benutzten Logikräumen einschließlich der benutzten Logikräume 30005a, 30005b und 30005c vorhanden. Des Weiteren werden andere Adressräume als die benutzten Logikräume, wie die freien Logikräume 30004a, 30004b und 30004c, der Speichersteuereinheit als freie Logikräume zur Verfügung gestellt. Es ist jedoch darauf hinzuweisen, dass der Speichersteuereinheit separat gemeldet wird, dass die nutzbare Logikkapazität 650 GB beträgt. Aus diesem Grund führt die Speichersteuereinheit eine solche Steuerung durch, dass die logisch genutzte Menge der SSDs 650 GB nicht überschreiten kann.
  • Es werden nunmehr weitere Unterschiede gegenüber der ersten Ausführungsform beschrieben. Da die SSDs der zweiten Ausführungsform keine nichtnutzbare Logikkapazität besitzen, kann der Wert des Status 13606 in der Eingangsmanagement-TBL 13600 nur einen von zwei Werten „zugeteilt” und „nichtzugeteilt (nutzbar)” annehmen. Auch in der logisch-physikalischen Umwandlungstabelle 23100 kann der Wert des Status 23104 nur einen von zwei Werten „benutzt” und „nichtbenutzt” annehmen.
  • 35 ist ein Ablaufdiagramm, das Einzelheiten des Bereichszuteilungsprozesses in S505 bei der zweiten Ausführungsform zeigt.
  • Der Unterschied gegenüber der ersten Ausführungsform besteht darin, dass ein Schritt S306a zum Auswählen irgendeines gewünschten Einganges in einem nichtzugeteilten Status von jedem SSD und zum Zuteilen desselben zu einem ausgewählten Bereich anstelle des Schrittes S306 vorgesehen ist. Andere Schritte sind die gleichen wie die entsprechenden Schritte in 23.
  • Selbst SSDs, bei denen nur die zur Verfügung stehende Logikkapazität variiert, können daher die gleichen Funktionen erfüllen wie bei der ersten Ausführungsform, indem sie mit der Speichersteuereinheit zusammenarbeiten.
  • Dritte Ausführungsform
  • In Verbindung mit der dritten Ausführungsform wird ein Fall beschrieben, bei dem die Speichersteuereinheit eine Hierarchieumordnungsfunktion besitzt. Hiermit ist eine Funktion gemeint, die von der Speichersteuereinheit durchgeführt wird, wenn eine Vielzahl von Speichermedien, die in der Kosteneffektivität differieren, in einer Speichervorrichtung montiert ist, um Daten gemäß der Datenzugriffsfrequenz und dem Typ der Speichermedien umzuordnen. Diese Funktion wird in Verbindung mit 36 beschrieben.
  • 36 zeigt eine Darstellung der Hierarchieumordnungsfunktion der dritten Ausführungsform.
  • Innerhalb einer Speichervorrichtung sind die RG 200, die aus Niedriggeschwindigkeits-HDDs konfiguriert ist, die RG 300, die aus Hochgeschwindigkeits-HDDs konfiguriert ist, und die RG 400, die aus SSDs konfiguriert ist, vorhanden. Jede RG steht unter einem Hierarchiemanagement in Abhängigkeit vom Typ des Speichermediums. Die RG 400 gehört zu einem Level # 0, die RG 300 zu einem Level # 1 und die RG 200 zu einem Level # 2. Die Levelnummern sind in der ansteigenden Reihenfolge der Zugriffsperformance zugeordnet. Wenn die Kapazität dazu neigt, niedriger zu werden, und der Preis dazu neigt, höher zu werden, wenn die Operationsgeschwindigkeit der Vorrichtung ansteigt, neigen übliche Speichervorrichtungen dazu, eine geringere Aufnahmekapazität mit einem Anstieg im hierarchischen Level zu erhalten. In der Zeichnung ist dargestellt, dass die Kapazität des SSD-gebildeten Levels # 0, des höchsten Levels, die kleinste ist, während die des vom Niedriggeschwindigkeits-HDD gebildeten Levels # 2, dem niedrigsten Level, am größten ist. Aus diesem Grund werden zwei Speicherbereiche der RG 300 des Levels # 1 und fünf Speicherbereiche in der RG 200 des Levels # 2 erstellt, obwohl nur ein Speicherbereich in der RG 400 des Levels # 0 strukturiert ist. In einer derartigen Umgebung ist es für Daten, auf die häufiger zugegriffen wird, wünschenswert, in Speichermedien eines höheren Levels gespeichert zu werden. Dieser Level kann eine Vielzahl von RGs enthalten, oder ein Poolvolumen kann eine Vielzahl von RGs enthalten, die auf unterschiedlichen hierarchischen Levels gebildet sind. In diesem Fall würde das Poolvolumen Bereiche umfassen, die auf der Basis der Multilevel-RG in einer vermischten Konfiguration konfiguriert sind.
  • Jeder Speicherbereich ist dem einen oder dem anderen der virtuellen Bereiche des virtuellen Volumens 600 zugeteilt. Der virtuelle Bereich 601 ist dem Bereich 241 zugeteilt, der virtuelle Bereich 602 einem Bereich 341, der virtuelle Bereich 603 dem Bereich 341, der virtuelle Bereich 604 dem Bereich 441, der virtuelle Bereich 605 dem Bereich 242 und ein virtueller Bereich 606 einem Bereich 243. Es wird davon ausgegangen, dass die Zugriffshäufigkeiten der virtuellen Bereiche sequenziell höher sind von 601 bis 606. Die Zugriffshäufigkeit kann in IOPS ausgedrückt werden, wobei es sich hierbei um die Anzahl der Datenlese- oder Datenschreibaktionen pro Zeitlängeneinheit handelt, oder in MB/s, wobei es sich um die Menge der pro Zeitlängeneinheit transferierten Daten handelt.
  • Da Daten des virtuellen Bereiches 604 mit einer niedrigeren Zugriffshäufigkeit im Bereich 441 der RG 400 mit höherem Level gespeichert werden, besteht die Furcht, dass die Performancefähigkeiten der SSDs nicht vollständig genutzt werden. Andererseits werden Daten des virtuellen Bereiches 601, auf den häufig zugegriffen wird, im Bereich 241 der RG 200 mit niedrigerem Level gespeichert, ferner speichern die Bereiche 242 und 243 in der RG 200 Daten von anderen virtuellen Bereichen. Dies bringt mit sich, dass der HDD eine Performanceengstelle der RG 200 darstellen kann.
  • Um dieses Problem zu beheben, optimiert die Speichersteuereinheit Datenspeicherpositionen, indem sie eine „Hierarchieumordnung” zum Umordnen von Daten im Bereich 441 und im Bereich 241 miteinander durchführt. Der linke Teil von 36 zeigt den Zustand vor der Hierarchieumordnung, während der rechte Teil den Zustand nach der Hierarchieumordnung zeigt. Nach der Hierarchieumordnung werden Daten, auf die häufig zugegriffen wird, auf höheren hierarchischen Levels in einer entsprechenden Sequenz gespeichert. Hierdurch kann die Systemperformance optimiert werden.
  • Da SSDs gemäß der Erfindung eine Funktion zum Erweitern der Kapazität durch Kompression besitzen, kann sich die Speichervorrichtung den Vorteil eines Kapazitätsanstieges auf höheren Levels zunutze machen. Da davon ausgegangen wird, dass dieser Vorteil zur Kostenersparnis beiträgt, indem die Zahl der zu installierenden SSDs und HDDs reduziert wird, ist es beispielsweise wünschenswert, eine so große Menge an Daten, wie dies praktisch ist, in SSDs höheren Levels zu speichern. Daher werden bei der dritten Ausführungsform SSDs einer Kapazitätsegalisierung unterzogen, bevor die Speichersteuereinheit eine Hierarchieumordnung vornimmt, damit eine größere Datenmenge in SSDs mit höheren Levels gespeichert werden kann. In den nachfolgenden Absätzen werden Unterschiede dieser Ausführungsform gegenüber der ersten und zweiten Ausführungsform erläutert.
  • 37 zeigt ein Beispiel der Konfiguration der RG-Management-Tabelle 13200 bei der dritten Ausführungsform.
  • Wie in 37 gezeigt, ist ein Level # 13207 zum Managen der Levelnummer einer jeden RG neu hinzugefügt worden. Die Level # wird in Abhängigkeit vom Typ der die RG bildenden Speichermedien zugeordnet. Beispielsweise wird „0” einem SSD zugeordnet, „1” einem Hochgeschwindigkeits-HDD und „2” einem Niedriggeschwindigkeits-HDD.
  • 38 zeigt ein Beispiel der Konfiguration der Management-TBL 13500 für das virtuelle Volumen in der dritten Ausführungsform.
  • Die in 38 gezeigte Konfiguration umfasst die Hinzufügung eines RD IOPS 13506 und eines WR IOPS 13507 zum Managen der Zugriffshäufigkeiten für die virtuellen Bereiche. Bei RD IOPS 13506 handelt es sich um die Anzahl der Datenleseanforderungsbefehle, die pro Zeiteinheit entstanden sind. Bei WR IOPS 13507 handelt es sich um die Anzahl von Datenschreibanforderungsbefehlen, die pro Zeiteinheit entstanden sind. Je höher diese Werte sind, desto höher sind die Zugriffshäufigkeiten. Anstelle der IUOPS, RD MB/s und WR MB/s, bei denen es sich um Datenübertragungsmengen pro Zeiteinheit handelt, kann auch die kumulative Anzahl von Befehlen oder Datenübertragungen aufgezeichnet werden.
  • 39 ist ein Ablaufdiagramm, das die Aufgabe einer Speichersteuereinheit in der dritten Ausführungsform zeigt.
  • Inder in 39 dargestellten Sequenz ist ein Hierarchieumordnungsbearbeitungsschritt S108 nach S106, bei dem eine Kapazitätsegalisierung durchgeführt wird, hinzugefügt. Einzelheiten der Hierarchieumordnungsbearbeitung S108 werden in Verbindung mit 40 beschrieben. Bei der dritten Ausführungsform muss die Speichersteuereinheit die Häufigkeit des Zugriffes auf jeden virtuellen Bereich überwachen. Aus diesem Grund addiert die Speichersteuereinheit 1 zur Zählung des RD IOPS 13506 jedes Mal dann, wenn eine Lesebearbeitung S102 durchgeführt wird, und addiert des Weiteren 1 zur Zählung des WR IOPS 13507 jedes Mal dann, wenn eine Lesebearbeitung S103 durchgeführt wird.
  • 40 ist ein Ablaufdiagramm, das ein Beispiel der Hierarchieumordnungsbearbeitung bei der dritten Ausführungsform zeigt.
  • Die Speichersteuereinheit wählt den zu bearbeitenden virtuellen Bereich aus (S1001). Als Nächstes prüft die Speichersteuereinheit, ob der Level des Bereiches, der dem virtuellen Bereich zugeteilt ist, der höchste Level ist, indem sie auf die RG-Management-TBL 13200 Bezug nimmt (S1002). Wenn das Ergebnis positiv ist (S1002: Ja), sieht die Speichersteuereinheit keinen Bedarf für eine Hierarchieumordnung und prüft, ob der relevante virtuelle Bereich final ist oder nicht (S1003). Wenn das Ergebnis positiv ist (S1003: Ja), beendet die Speichersteuereinheit diese Bearbeitung. Wenn das Ergebnis von S1003 negativ ist (S1003: Nein), setzt die Speichersteuereinheit den neuen virtuellen Bereich als das Bearbeitungsobjekt (S1004) und bewegt sich weiter zur Bearbeitung in S1002.
  • Wenn das Ergebnis von S1002 negativ ist (S1002: Nein), prüft die Speichersteuereinheit, ob die restliche physikalische Kapazität der RG mit höherem Level ausreichend ist, indem sie auf die RG-Management-TBL 13200 und die Plattenmanagementtabelle 13100 Bezug nimmt (S1005). Wenn die restliche physikalische Kapazität ausreichend ist, ist dies virtuell das Gleiche, als wenn die Größe der freien physikalischen Kapazität größer ist als die Größe des Bereiches. Dies kann ferner auch bedeuten, dass ein nichtzugeteilter Bereich in einer RG mit höherem Level vorhanden ist. Wenn das Ergebnis in S1005 positiv ist, bestimmt die Speichersteuereinheit, dass Daten, so wie sie sind, verschoben werden können, da die RG mit oberem Level einen Freiraum besitzt, und verschiebt die Daten des relevanten Bereiches zur RG mit oberem Level. Danach aktualisiert sie diverse Tabellen (S1009) und geht weiter auf S1003. Wenn das Ergebnis in S1005 negativ ist (S1005: Nein), bestimmt die Speichersteuereinheit, dass eine Datenumordnung erforderlich ist, da die RG mit oberem Level keinen ausreichenden Freiraum besitzt, und überprüft, ob sich in der RG mit oberem Level irgendein Bereich mit weniger häufigem Zugriff als der relevante Bereich befindet, indem sie auf die Management-TBL für virtuelles Volumen 13500, die RG-Managementtabelle 13200 u. ä. Bezug nimmt (S1008). Wenn das Ergebnis positiv ist (S1008: Ja), ersetzt die Speichersteuereinheit die Daten des relevanten Bereiches durch Daten des ausgewählten Bereiches mit höherem Level (S1007). Danach aktualisiert sie diverse Tabellen (S1009) und geht weiter auf S1003. Wenn das Ergebnis in S1008 negativ ist (S1008: Nein), rückt die Speichersteuereinheit auf S1003.
  • Da die Speichersteuereinheit somit in der Lage ist, eine Hierarchieumordnungsbearbeitung nach dem Ausweiten oder Maximieren der freien Kapazität des SSD vor der Bearbeitung der Kapazitätsegalisierung durchzuführen, wird es möglich, Daten von mehreren Bereichen in den SSD mit höherem Level zu speichern. Da dies zu einem Anstieg der Datenmenge führt, die im SSD mit hoher Performance gespeichert werden kann, kann die Performance der Speichervorrichtung verbessert werden.
  • Obwohl in der vorhergehenden Beschreibung von diversen Informationselementen der Ausdruck „xxx Tabelle” verwendet wurde, kann diese Information auch in anderen Datenstrukturen als Tabellen ausgedrückt werden. Um sicherzustellen, dass keine Datenstruktur vom Begriff „xxx Tabelle” abhängt, kann hierfür auch der Begriff „xxx Information” gelten.
  • Obwohl in der vorhergehenden Beschreibung Ziffern als Information zur Identifizierung von Elementen (d. h. Bereichen) Verwendung finden, kann auch irgendeine andere Art von Identifikationsinformation (d. h. Name oder Identifikation) verwendet werden.
  • Wenn der Begriff „Programm” als grammatikalisches Subjekt zur Beschreibung der Bearbeitung verwendet wird, kann dieses Subjekt auch als „Steuereinheit” oder „Prozessor” bezeichnet werden, da irgendein Programm durch einen Prozessor (d. h. eine Zentraleinheit (CPU)) realisiert wird, die in einer Steuereinheit (Speichersteuereinheit oder SSD-Steuereinheit) enthalten ist, während eine Speicherquelle (d. h. Speicher) und/oder eine Kommunikationsschnittstellenvorrichtung (d. h. Kommunikationsport) in geeigneter Weise genutzt wird. Des Weiteren kann diese Steuereinheit eine Hardwareschaltung enthalten, um die gesamte Bearbeitung oder einen Teil hiervon durchzuführen. Das Computerprogramm kann von einer Programmquelle installiert werden. Bei der Programmquelle kann es sich beispielsweise um einen Programmverteilungsserver oder ein computerlesbares Speichermedium handeln.
  • Des Weiteren wurde in der vorstehenden Beschreibung eine physikalische Speichereinheit manchmal aus Zweckmäßigkeitsgründen als „Platte” bezeichnet. Diese Bezeichnung bedeutet jedoch nicht notwendigerweise, dass die physikalische Speichereinheit ein plattenförmiges Speichermedium besitzt. Beispielsweise kann der Begriff „Platte” manchmal auch einen SSD mit einem nichtflüchtigen Halbleiterspeicher als Speichermedium bezeichnen. Wenn ein SSD einen Flash-Speicher als Speichermedium benutzt, kann der SSD als Flash-Speicherantrieb oder als Flash-Speicherpackung bezeichnet werden.
  • Ferner ist in der vorstehenden Beschreibung keine Beschränkung auf die Einheit zur Bezeichnung einer Zeitspanne vorgesehen. Beispielsweise kann es sich bei dieser Einheit um ein Jahr, einen Monat, einen Tag, eine Stunde, eine Minute und eine Sekunde oder um Kombinationen von zwei oder mehr davon handeln.
  • Ferner besitzt die in der Beschreibung der Ausführungsformen benutzte Speichereinheit zwei Funktionen einschließlich der Datenkompressionsfunktion und der Kapazitätsvirtualisierungsfunktion für einen niedrigeren Level, und es handelt sich hierbei um einen SSD, dessen virtuelle Logikkapazität, die für eine externe Vorrichtung (Speichersteuereinheit) zur Verfügung gestellt wird, mit der Datenkompressionsrate variiert. Wenn jedoch irgendein HDD oder irgendeine andere Speichereinheit entsprechende Funktionen besitzt, kann sie ebenfalls bei der vorliegenden Erfindung Anwendung finden. 10: Speichervorrichtung

Claims (14)

  1. Speichervorrichtung mit einer Vielzahl von Halbleiterspeichereinheiten, die jeweils eine Vielzahl von Chips von nichtflüchtigen Halbleiterspeichern umfassen, und einer Speichersteuerung, die Daten komprimiert und die komprimierten Daten in den Chips der nichtflüchtigen Halbleiterspeicher speichert, sowie einer Speichersteuereinheit, die eine Vielzahl von RAID-Gruppen, welche eine vorgegebene Anzahl von Halbleiterspeichereinheiten aufweisen, die in den Halbleiterspeichereinheiten enthalten sind, steuert und die das Datenschreiben und Datenlesen in die und aus den Halbleiterspeichereinheiten steuert, wobei die Speichersteuerung Speicherbereichen der Chips der nichtflüchtigen Halbleiterspeicher Logikspeicherbereiche zuordnet und dieselben für die Speichersteuereinheit verfügbar macht und wobei die Speichersteuereinheit die Logikspeicherbereiche, die von jeder der Halbleiterspeichereinheiten zur Verfügung gestellt werden, in eine Vielzahl von Eingängen unterteilt, von denen jeder einen Logikspeicherbereich einer vorgegebenen Größe darstellt, von jeder der Halbleiterspeichereinheiten Kapazitätsinformationen akquiriert, die eine in den Chips der nichtflüchtigen Halbleiterspeicher gespeicherte Datenkapazität betreffen, auf der Basis der Kapazitätsinformationen eine erste Halbleiterspeichereinheit und eine zweite Halbleiterspeichereinheit, die eine Datenspeichermenge aufweist, die um mindestens einen vorgegebenen Wert größer ist als die erste Halbleiterspeichereinheit, aus den Halbleiterspeichereinheiten auswählt und auf der Basis der Kapazitätsinformationen Daten von Eingängen, die eine kleinere Datenspeichermenge umfassen, aus einer Vielzahl von Eingängen, die zur ersten Halbleiterspeichereinheit gehören, mit Daten von Eingängen, die eine größere Datenspeichermenge umfassen, aus einer Vielzahl von Eingängen, die zur zweiten Halbleiterspeichereinheit gehören, austauscht.
  2. Speichervorrichtung nach Anspruch 1, bei der die Chips der nichtflüchtigen Halbleiterspeicher Flash-Speicherchips sind.
  3. Speichervorrichtung nach Anspruch 1, bei der die Speichersteuerung der Speichersteuereinheit den Logikspeicherbereich zur Verfügung stellt, der eine größere Kapazität als die Kapazität der Speicherbereiche der Chips der nichtflüchtigen Halbleiterspeicher aufweist.
  4. Speichervorrichtung nach Anspruch 3, bei der die Speichersteuereinheit die erste Halbleiterspeichereinheit und die zweite Halbleiterspeichereinheit von einer ersten RAID-Gruppe aus den RAID-Gruppen auswählt.
  5. Speichervorrichtung nach Anspruch 4, bei der die Speichersteuereinheit auf der Basis der Kapazitätsinformationen die erste Halbleiterspeichereinheit aus einer ersten RAID-Gruppe aus den RAID-Gruppen und eine dritte Halbleiterspeichereinheit mit einer Kapazität, die um einen vorgegebenen Wert größer ist als die Datenspeichermenge der ersten Halbleiterspeichereinheit, aus einer zweiten RAID-Gruppe, die sich von der ersten RAID-Gruppe unterscheidet, aus den RAID-Gruppen auswählt und auf der Basis der Kapazitätsinformationen Daten von Eingängen mit einer kleineren Datenspeichermenge aus einer Vielzahl von Eingängen, die zur ersten Halbleiterspeichereinheit gehören, mit Daten von Eingängen mit einer größeren Datenspeichermenge aus einer Vielzahl von Eingängen, die zur dritten Halbleiterspeichereinheit gehören, austauscht.
  6. Speichervorrichtung nach Anspruch 5, bei der die Speichersteuereinheit für jede der RAID-Gruppen eine Vielzahl von Speicherbereichen strukturiert, die jeweils einen aus den Eingängen enthalten, die zu einer Vielzahl von Halbleiterspeichereinheiten gehören, welche in jeder RAID-Gruppe enthalten sind, auf der Basis der Kapazitätsinformationen eine erste RAID-Gruppe und eine zweite RAID-Gruppe aus den RAID-Gruppen auswählt und auf der Basis der Kapazitätsinformationen Daten eines ersten Speicherbereiches aus den Speicherbereichen, die zur ersten RAID-Gruppe gehören, mit Daten eines zweiten Speicherbereiches aus den Speicherbereichen, die zur zweiten RAID-Gruppe gehören, austauscht.
  7. Speichervorrichtung nach Anspruch 6, bei der, wenn die Datenspeichermenge einer ersten Halbleiterspeichereinheit aus einer Vielzahl von Halbleiterspeichereinheiten, die in der ersten RAID-Gruppe enthalten sind, geringer ist als die von anderen Halbleiterspeichereinheiten und die Datenspeichermenge einer dritten Halbleiterspeichereinheit aus einer Vielzahl von Halbleiterspeichereinheiten größer ist als die von anderen Halbleiterspeichereinheiten, die in der zweiten RAID-Gruppe enthalten sind, die Speichersteuereinheit auf der Basis der Kapazitätsinformationen Daten des ersten Speicherbereiches, die in Bezug auf die in der ersten Halbleiterspeichereinheit gespeicherte Datenmenge größer sind, mit Daten des zweiten Speicherbereiches; die in Bezug auf die in der zweiten Halbleiterspeichereinheit gespeicherte Datenmenge kleiner sind, von den zur ersten RAID-Gruppe gehörenden Speicherbereichen austauscht.
  8. Speichervorrichtung nach Anspruch 7, bei der die Speichersteuereinheit auf der Basis der Kapazitäten der Chips der nichtflüchtigen Halbleiterspeicher von jeder der Halbleiterspeichereinheiten und der Kapazitätsinformationen einen Bereich berechnet, in dem Daten des Logikspeicherbereiches gespeichert werden können, und die Anzahl der Speicherbereiche auf der Basis des Bereiches, in dem die Daten gespeichert werden können, berechnet.
  9. Speichervorrichtung nach Anspruch 8, bei der die Speichersteuereinheit einem Computer ein virtuelles Volumen, für das eine vorgeschriebene Kapazität eingestellt ist, zur Verfügung stellt, in Abhängigkeit von einer Schreibanforderung vom Computer einen aus den Speicherbereichen dem virtuellen Volumen zuteilt, als ein Poolvolumen die Kapazität des Logikspeicherbereiches, die den Halbleiterspeichereinheiten zur Verfügung gestellt wurde, managt, und wenn ein Bereich, in dem Daten aus dem Logikspeicherbereich gespeichert werden können, sich verändert hat, die Kapazität des Poolvolumens variiert.
  10. Speichervorrichtung nach Anspruch 9, bei der die Speichersteuerung in Abhängigkeit von einer Schreibanforderung von der Speichersteuereinheit Daten, die die Schreibanforderung begleiten, in den Chips der nichtflüchtigen Halbleiterspeicher speichert und in einem Reklamationsprozess Daten aus den Chips der nichtflüchtigen Halbleiterspeicher ausliest, die ausgelesenen Daten komprimiert und die komprimierten Daten in Chips der nichtflüchtigen Halbleiterspeicher einschreibt.
  11. Speichervorrichtung nach Anspruch 10, bei der die Speichersteuerung in Abhängigkeit von einer Anforderung zur Akquisition von Kapazitätsinformationen von der Speichersteuereinheit Informationen in Bezug auf die Kapazität der komprimierten Daten auf die Speichersteuereinheit überträgt.
  12. Speichervorrichtung nach Anspruch 11, bei der die Speichersteuerung in Abhängigkeit von einer Schreibanforderung von der Speichersteuereinheit Daten, die die Schreibanforderung begleiten, komprimiert und die komprimierten Daten in die Chips der nichtflüchtigen Halbleiterspeicher einschreibt.
  13. Speichervorrichtung nach Anspruch 12, bei der die Speichersteuerung Informationen über die Kapazität der komprimierten Daten zusammen mit einem Bericht in Bezug auf die Beendigung der Einwilligung auf die Schreibanforderung auf die Speichersteuereinheit überträgt.
  14. Speichervorrichtung nach Anspruch 7, bei der die Speichervorrichtung des Weiteren eine Vielzahl von Hartplattenantrieben aufweist, die Speichersteuereinheit die Hartplattenantriebe als eine dritte RAID-Gruppe steuert und eine Vielzahl von Speicherbereichen auf der Basis des Speicherbereiches der dritten RAID-Gruppe strukturiert und bei der die Speichersteuereinheit eine Zugriffsfrequenz für jeden der Speicherbereiche, die dem virtuellen Volumen zugeteilt sind, misst und nach Beendigung der Bearbeitung des Datenaustausches Daten der Speicherbereiche, die eine höhere Zugriffsfrequenz besitzen, aus einer Vielzahl von Speicherbereichen, die zur dritten RAID-Gruppe gehören, zu einer RAID-Gruppe verschiebt, die aus den Halbleiterspeichereinheiten konfiguriert ist.
DE112013006565.7T 2013-05-17 2013-05-17 Speichervorrichtung Withdrawn DE112013006565T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/063740 WO2014184941A1 (ja) 2013-05-17 2013-05-17 ストレージ装置

Publications (1)

Publication Number Publication Date
DE112013006565T5 true DE112013006565T5 (de) 2015-11-05

Family

ID=51897946

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006565.7T Withdrawn DE112013006565T5 (de) 2013-05-17 2013-05-17 Speichervorrichtung

Country Status (6)

Country Link
US (1) US9665286B2 (de)
JP (1) JP6073471B2 (de)
CN (1) CN104937561B (de)
DE (1) DE112013006565T5 (de)
GB (1) GB2528585A (de)
WO (1) WO2014184941A1 (de)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US10033811B2 (en) * 2014-01-14 2018-07-24 International Business Machines Corporation Matching storage resource packs to storage services
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US10430079B2 (en) * 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
CN104360957A (zh) * 2014-11-26 2015-02-18 上海爱信诺航芯电子科技有限公司 一种维持闪存损耗均衡的方法
US10067882B2 (en) * 2015-01-13 2018-09-04 Hitachi, Ltd. Storage system and storage control method
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
JP6385570B2 (ja) * 2015-05-12 2018-09-05 株式会社日立製作所 ストレージシステムおよび記憶制御方法
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
TWI554885B (zh) * 2015-08-18 2016-10-21 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US20170068458A1 (en) * 2015-09-03 2017-03-09 Qualcomm Incorporated Hardware-accelerated storage compression
US9400609B1 (en) * 2015-11-04 2016-07-26 Netapp, Inc. Data transformation during recycling
US9927955B2 (en) * 2015-11-10 2018-03-27 International Business Machines Corporation Generating a configuration page for rendering in a graphical user interface (GUI) for managing provisioning of storage resources in a storage system
WO2017081811A1 (ja) * 2015-11-13 2017-05-18 株式会社日立製作所 ストレージ装置、記録媒体、および記憶制御方法
WO2017109931A1 (ja) * 2015-12-25 2017-06-29 株式会社日立製作所 計算機システム
US9971523B2 (en) 2016-03-10 2018-05-15 Toshiba Memory Corporation Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
CN107436727A (zh) * 2016-05-26 2017-12-05 中兴通讯股份有限公司 精简卷的存储空间管理方法和装置
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10664446B2 (en) 2016-11-07 2020-05-26 Kyocera Document Solutions Inc. Information processing apparatus and information processing method
US11029850B2 (en) 2016-12-13 2021-06-08 Hitachi, Ltd. System of controlling data rebalance and its method
CN108228079B (zh) * 2016-12-21 2021-01-22 伊姆西Ip控股有限责任公司 存储管理方法和设备
US10360973B2 (en) * 2016-12-23 2019-07-23 Western Digital Technologies, Inc. Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity
US10768838B2 (en) * 2017-01-12 2020-09-08 Hitachi, Ltd. Storage apparatus and distributed storage system
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
CN108733308B (zh) * 2017-04-17 2021-06-22 伊姆西Ip控股有限责任公司 用于管理盘池的方法和设备
US10678643B1 (en) * 2017-04-26 2020-06-09 EMC IP Holding Company LLC Splitting a group of physical data storage drives into partnership groups to limit the risk of data loss during drive rebuilds in a mapped RAID (redundant array of independent disks) data storage system
JP6848741B2 (ja) * 2017-07-18 2021-03-24 富士通株式会社 ストレージ試験装置及びストレージ試験プログラム
US10852966B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for creating mapped RAID group during expansion of extent pool
KR20190073824A (ko) * 2017-12-19 2019-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102495915B1 (ko) * 2018-04-30 2023-02-03 삼성전자 주식회사 스토리지 장치 및 상기 스토리지 장치를 포함하는 서버
JP7155727B2 (ja) * 2018-08-07 2022-10-19 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
CN109271206B (zh) * 2018-08-24 2022-01-21 晶晨半导体(上海)股份有限公司 一种异常现场的内存压缩和保存方法
CN111104055B (zh) * 2018-10-29 2023-10-27 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
KR102661281B1 (ko) * 2019-04-30 2024-04-30 양쯔 메모리 테크놀로지스 씨오., 엘티디. 플래시 메모리 컨트롤러를 갖는 본딩된 메모리 장치 및 이의 제조 및 작동 방법
TWI695264B (zh) * 2019-05-20 2020-06-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US11061612B2 (en) * 2019-05-20 2021-07-13 Micron Technology, Inc. Internal communication interface management
JP6858812B2 (ja) * 2019-07-26 2021-04-14 株式会社日立製作所 ストレージ制御システム及び方法
US11556254B2 (en) * 2020-02-28 2023-01-17 Cohesity, Inc. Providing a distributed and replicated data store in a heterogeneous cluster
CN113467699B (zh) * 2020-03-30 2023-08-22 华为技术有限公司 一种提升可用存储容量方法及装置
US11928196B2 (en) 2020-09-15 2024-03-12 Tawaun Bell Apparatuses for improved electronic data storage and transfer and computer-implemented methods of using the same
US11892909B2 (en) 2021-03-19 2024-02-06 Micron Technology, Inc. Managing capacity reduction due to storage device failure
US11650881B2 (en) 2021-03-19 2023-05-16 Micron Technology, Inc. Managing storage reduction and reuse in the presence of storage device failures
US11520656B2 (en) * 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction and recovery due to storage device failure
US11733884B2 (en) 2021-03-19 2023-08-22 Micron Technology, Inc. Managing storage reduction and reuse with failing multi-level memory cells
US11520500B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction when downshifting multi-level memory cells
US20220357980A1 (en) * 2021-05-06 2022-11-10 Dell Products L.P. Selectively offloading the compression and decompression of files to a hardware controller
CN114579050B (zh) * 2022-02-14 2024-04-02 阿里巴巴(中国)有限公司 处理压缩数据的方法以及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2831602B2 (ja) 1995-01-13 1998-12-02 富士通株式会社 圧縮データ管理装置及び圧縮データ管理方法
JP4211285B2 (ja) * 2002-05-24 2009-01-21 株式会社日立製作所 ネットワークストレージシステムの仮想一元化方法及び装置
JP4289084B2 (ja) * 2002-08-30 2009-07-01 株式会社日立製作所 仮想一元化されたネットワークストレージ間のディスク残量平準化方法
JP5026102B2 (ja) * 2007-02-07 2012-09-12 株式会社日立製作所 ストレージ制御装置及びデータ管理方法
US8543742B2 (en) * 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
JP5112003B2 (ja) * 2007-10-19 2013-01-09 株式会社日立製作所 ストレージ装置及びこれを用いたデータ格納方法
US8307187B2 (en) * 2008-09-12 2012-11-06 Vmware, Inc. VDI Storage overcommit and rebalancing
US8347023B2 (en) * 2008-10-06 2013-01-01 Marvell World Trade Ltd. Compression based wear leveling for non-volatile memory
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
US8225039B2 (en) * 2009-10-09 2012-07-17 Hitachi, Ltd. Storage controller and virtual volume control method
WO2011086598A1 (en) 2010-01-14 2011-07-21 Hitachi, Ltd. Storage system
JP5646633B2 (ja) 2010-04-12 2014-12-24 株式会社日立製作所 ストレージ装置
US8429455B2 (en) * 2010-07-16 2013-04-23 Hitachi, Ltd. Computer system management method and management system
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US9063663B2 (en) * 2010-09-21 2015-06-23 Hitachi, Ltd. Semiconductor storage device and data control method thereof
CN103384877B (zh) 2011-06-07 2016-03-23 株式会社日立制作所 包括闪存的存储系统和存储控制方法
JP5722500B2 (ja) * 2011-12-08 2015-05-20 株式会社日立製作所 リモートコピーシステム、及びリモートコピー制御方法
IN2014DN05977A (de) * 2012-02-08 2015-06-26 Hitachi Ltd

Also Published As

Publication number Publication date
GB2528585A (en) 2016-01-27
WO2014184941A1 (ja) 2014-11-20
US9665286B2 (en) 2017-05-30
CN104937561B (zh) 2018-01-02
JP6073471B2 (ja) 2017-02-01
JPWO2014184941A1 (ja) 2017-02-23
CN104937561A (zh) 2015-09-23
US20150378613A1 (en) 2015-12-31
GB201513833D0 (en) 2015-09-16

Similar Documents

Publication Publication Date Title
DE112013006565T5 (de) Speichervorrichtung
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
CN110245093B (zh) 固态存储驱动器阵列中的工作负荷自适应超额配置
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
US9921956B2 (en) System and method for tracking block level mapping overhead in a non-volatile memory
US10558383B2 (en) Storage system
DE112010003887B4 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE112013006504B4 (de) Speichersystem und Datenverwaltungsverfahren
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112015000710T5 (de) Verteiltes Speichersystem
US11928053B2 (en) System garbage collection method and method for garbage collection in solid state disk
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
CN106371761A (zh) 内存系统以及非易失性内存的控制方法
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
WO2017109931A1 (ja) 計算機システム
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE112013005903T5 (de) Speichersystem und Speichersteuerungsverfahren
DE112020003290B4 (de) Datenplatzierung in einer schreib-cache-architektur, die eine lesehitze-datenaufteilung unterstützt
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0003060000

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