JP6073471B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP6073471B2
JP6073471B2 JP2015516849A JP2015516849A JP6073471B2 JP 6073471 B2 JP6073471 B2 JP 6073471B2 JP 2015516849 A JP2015516849 A JP 2015516849A JP 2015516849 A JP2015516849 A JP 2015516849A JP 6073471 B2 JP6073471 B2 JP 6073471B2
Authority
JP
Japan
Prior art keywords
data
ssd
capacity
storage
logical
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.)
Expired - Fee Related
Application number
JP2015516849A
Other languages
English (en)
Other versions
JPWO2014184941A1 (ja
Inventor
英通 小関
英通 小関
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
Application granted granted Critical
Publication of JP6073471B2 publication Critical patent/JP6073471B2/ja
Publication of JPWO2014184941A1 publication Critical patent/JPWO2014184941A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)

Description

本発明は、データ圧縮機能を有する記憶装置を備えるストレージ装置に関する。
ストレージ装置は、一般に、データを格納する物理記憶装置と、物理記憶装置を制御するコントローラとを有する。コントローラは、ストレージ装置に接続された計算機(例えばホスト)にデータ格納空間(一般に論理ボリューム)を提供する。
ストレージ装置は、複数の物理記憶装置をRAID(Redundant Array of Independent(or Inexpensive) Disks)構成で使用することにより、I/O処理を高速化し、物理記憶装置の故障に対する高い耐障害性を発揮する。
ストレージ装置は、物理記憶装置として一般に多数のHDD(Hard Disk Drive)を搭載しているが、近年、HDDに代わって、物理記憶媒体としてフラッシュメモリ(以下、FM)を有する物理記憶装置、例えば、SSD(Solid State Drive)が注目されている。SSDは、HDDに比べI/O処理が非常に高速であるというメリットを有している。
近年、ストレージ装置に格納されるデータ量は、増加の一途をたどっている。このため、格納データ量を削減し、ストレージ装置のコストを低減するためのデータ圧縮技術が注目されている。特にSSDは、HDDに比べてビットコストが高価であるため、圧縮技術によって格納データ容量を削減し、見かけ上の容量を大きくするニーズは高い。
特許文献1には、ストレージ装置のコントローラ(以下、ストレージコントローラ)がホスト計算機から受け取ったデータを、ストレージコントローラ内で圧縮し、圧縮後のデータ(以下、圧縮データ)をHDDに格納する技術が開示されている。
特許文献2には、SSD内部のコントローラ(以下、SSDコントローラ)がデータ圧縮機能を有しており、データ圧縮率により外部装置(ストレージコントローラ)に提供する仮想論理容量が変動するフラッシュメモリストレージ(以下では、SSDと呼ぶ)に関する技術が開示されている。つまり、圧縮後のデータサイズが小さいほど、SSDが外部装置に提供できる仮想論理容量が大きくなり、圧縮後のデータサイズが大きいほど、SSDが外部装置に提供できる仮想論理容量が小さくなる。圧縮後のデータサイズは、圧縮対象となるデータのパターンに依存するため、圧縮後のデータサイズは一定ではない。このため、ストレージ装置が複数のSSDを搭載している場合、SSD間で外部装置に提供できる仮想論理容量が異なりうる。
特開平8−249128 PCT/JP2011/003204
特許文献1のような、従来のストレージ装置で採用されている、ストレージコントローラによるデータ圧縮では、ストレージコントローラがまずデータを圧縮し、圧縮したデータを一定のサイズに分割してSSDやHDDなどの各種記憶装置へ格納(ストライピング)するため、RAIDグループを構成する記憶装置の論理容量は、常に均一であった。
特許文献2においては、ストレージコントローラは、RAIDグループ内の複数のSSDに対してデータをストライピングして格納する。ストライピングしてデータを格納するためには、RAIDグループ内の各SSDに同じサイズの空き容量が必要となる。つまり、RAIDグループ内のあるSSDの空き容量がなくなると、他のSSDの空き容量があっても、新たにデータを格納することはできなくなる。
このように、SSD内部でデータ圧縮を行う場合、ストレージコントローラがRAIDグループを構成する複数のSSDに同じ容量のデータを格納したとしても、圧縮率はデータパターンに依存するため、実際に記憶媒体であるフラッシュメモリに格納されるデータ量はSSD毎に異なる。このため、データ圧縮によりRAIDグループを構成するSSD間で空き容量が不均一となった場合、ある1つのSSDに空き容量がなくなると、他のSSDに空き容量があっても新たにデータを格納することができなくなり、使用できない空き容量が発生する。
このように、RAIDグループを構成する記憶装置それぞれがデータ圧縮を実行すると、記憶装置の記憶容量の使用率が低下するというストレージ装置としての課題が発生する。
上記課題を解決するために、本発明は、それぞれが複数の不揮発性半導体メモリチップと、データを圧縮して前記複数の不揮発性半導体メモリチップに格納するメモリコントローラと、を有する複数の半導体記憶装置と、
前記複数の半導体記憶装置に含まれる半導体記憶装置を所定数ずつ含む複数のRAIDグループを制御し、前記複数の半導体記憶装置へのデータの書き込み及び読み出しを制御するストレージコントローラと、を備える。
メモリコントローラは、複数の不揮発性半導体メモリチップの記憶領域を、論理記憶領域に対応付けて前記ストレージコントローラに提供する。ストレージコントローラは、複数の半導体記憶装置のそれぞれが提供する論理記憶領域を、それぞれ所定のサイズの論理記憶領域である複数のエントリーに分割し、複数の半導体記憶装置のそれぞれから、複数の不揮発性半導体メモリチップに格納されたデータ容量に関する容量情報を取得し、容量情報に基づいて、前記複数の半導体記憶装置から、第一の半導体記憶装置と、前記第一の半導体記憶装置のデータ格納量より所定値以上大きい第二の半導体記憶装置と、を選択し、容量情報に基づいて、第一の半導体記憶装置に属する複数のエントリーの中でデータ格納量が小さいエントリーと、第二の半導体記憶装置に属する複数のエントリーの中でデータ格納量が大きいエントリーのデータを交換する。
RAIDグループを構成する各記憶装置間の空き物理容量の差を小さくすることができる。空き物理容量の差が小さくなることで、空き論理容量の差も小さくなる。その結果として、RAIDグループとして使用可能な論理容量を拡大することができる。記憶装置内でのデータ圧縮により、ストレージ装置を含むシステムを低コストで構築することが可能となり、RAIDグループとして使用可能な容量を拡大することでさらに低コストでシステムを構築することが可能となる。
実施例1におけるSSDのアドレス空間の概要を示す図である。 実施例1の概要を示す図である。 実施例1の概要を示す図である。 実施例1におけるストレージ装置を含むストレージシステムの構成例を示す図である。 実施例1におけるSSDの構成例を示す図である。 実施例1におけるフラッシュメモリチップの構成例を示す図である。 実施例1におけるSSDのアドレス空間の構成例を示す図である。 実施例1における上位レベルの容量仮想化技術の概要説明図である。 実施例1における容量平準化処理と仮想ボリュームの関係の一例を示す図である。 実施例1におけるストレージコントローラが備えるキャッシュメモリの構成例を示す図である。 実施例1におけるディスク管理TBLの構成例を示す図である。 実施例1におけるRG管理TBLの構成例を示す図である。 実施例1におけるプール管理TBLの構成例を示す図である。 実施例1におけるエントリー管理TBLの構成例を示す図である。 実施例1におけるエクステント管理TBLの構成例を示す図である。 実施例1における仮想ボリューム管理TBLの構成例を示す図である。 実施例1におけるSSDが備えるキャッシュメモリの構成例を示す図である。 実施例1における論物変換TBLの構成例を示す図である。 実施例1におけるブロック管理テーブルの構成例を示す図である。 実施例1における容量管理テーブルの構成例を示す図である。 実施例1におけるストレージコントローラのタスクの概要を示すシーケンス図である。 実施例1におけるストレージコントローラのデータライト処理の一例を示すシーケンス図である。 実施例1におけるエクステント割当て処理の一例を示すシーケンス図である。 実施例1におけるSSDライト処理の一例を示すシーケンスである。 実施例1におけるリード要求の処理の一例を示すシーケンス図である。 実施例1における定期監視処理S105の詳細を示すシーケンスである。 実施例1における容量平準化処理S106の詳細を示すシーケンスである。 実施例1におけるエントリー単位の容量平準化処理の一例である、RG内データ移動の概要を示す図である。 実施例1におけるエントリー単位の容量平準化処理の一例である、RG間データ移動の概要を示す図である。 実施例1におけるエントリー単位の容量平準化処理の一例を示すシーケンスである。 実施例1におけるエクステント単位の容量平準化処理の一例である、RG間データ移動の概要を示す図である。 実施例1におけるエクステント単位の容量平準化処理の一例を示すシーケンスである。 実施例1におけるエクステント単位の容量平準化処理の別の一例の概要を示す図である。 実施例2におけるSSDのアドレス空間の概要を示す図である。 実施例2におけるエクステント割当て処理S505の詳細を示すシーケンスである。 実施例3における階層再配置機能の概要説明図である。 実施例3における仮想ボリューム管理TBLの構成例を示す図である。 実施例3における仮想ボリューム管理TBLの構成例を示す図である。 実施例3におけるストレージコントローラのタスクの概要を示すシーケンス図である。 実施例3における階層再配置処理の一例を示すシーケンス図である。
以下、図面に基づいて幾つかの実施例を説明する。
まず、図1から図3を用いて本実施例の概要を説明する。
図1は、実施例1における、SSDのアドレス空間の概要を示す図である。
本発明におけるSSDは、外部装置(SSDを利用するストレージコントローラなど)に提供する論理的なアドレス空間である「論理アドレス空間(以下、論理空間)」と、その論理アドレス空間に対応するデータが実際に格納される物理的なアドレス空間である「物理アドレス空間(以下、物理空間)」を有している。また以下では、アドレス空間のサイズを「容量」と定義する。すなわち、論理アドレス空間のサイズは「論理容量」であり、物理アドレス空間のサイズは「物理容量」である。
ここで、本発明におけるSSDは、下位レベルの容量仮想化機能とデータ圧縮機能とを有している。
まず下位レベルの容量仮想化機能により、SSDは、物理空間よりも大きな論理空間を、外部装置に対して提供することができる。
次にデータ圧縮機能により、SSDは、外部装置よりライトされたデータを内部で圧縮し、圧縮後のデータ(以下、圧縮データ)を物理記憶媒体であるフラッシュメモリ(FM)に格納する。すなわち、あるデータがライトされたときに、実際に消費する物理容量を、圧縮により小さくすることができる。ただし物理容量の消費量は、データの圧縮率に依存する。なお、データ圧縮率は、「圧縮データを格納するために消費した物理容量 ÷ ライト要求にともなうデータサイズ」により算出することが出来る。すなわち、10KBのライトデータが、データ圧縮により2KBのサイズとなったとき、データ圧縮率は、1/5(20%)となる。本発明では、データ圧縮率の値が小さい(0%により近い)ほど、圧縮効果が高いことということを意味する。
ここで、データ圧縮率の上限を最大データ圧縮率(以下、最大圧縮率)と定義する。最大圧縮率とは、最大のデータ圧縮効果が得られた際のデータ圧縮率であり、SSDがもつ圧縮アルゴリズム等により決定・推測されるパラメータである。以降では、最大圧縮率が1/8(12.5%)に設計されたSSDを前提とした説明をおこなう。このように、データ圧縮率は、SSDに格納されるデータのパターンにより、最大圧縮率(12.5%)から圧縮効果なし(100%)まで変化する。
本発明におけるSSDは、上述の下位レベルの容量仮想化機能とデータ圧縮機能とを連携させることで、物理容量よりも大きな論理容量を外部装置に提供できる一方で、提供可能な(すなわち、外部装置が使用することができる)論理容量がデータ圧縮率により変化するという特性を有している。例えば、物理容量が100GBのSSDにデータを格納した際に、最大圧縮率である1/8でデータを圧縮できた場合は、SSDの論理容量は8倍の800GBとなる。一方で、圧縮効果が全く得られなかった場合、すなわち圧縮率が100%のときは、SSDの論理容量は、物理容量と等しい100GBとなる。
このように、外部装置に提供可能な論理容量は、「外部装置に提供可能な論理容量=物理容量÷圧縮率」の数式により、得ることができる。
図1を用いて、SSDの論理空間と物理空間の対応について詳しく説明する。図1は、100GBの物理容量と、最大圧縮率1/8のスペックを持つことにより、最大で800GBの論理空間を提供可能なSSDの、ある時点における状態を示したものである。
最大論理容量30001は、SSDが外部装置に提供可能な論理容量の上限値であり、図1において、その容量は800GBである。ただし、800GBの論理空間を、常に外部装置に提供できるとは限らない。なぜなら、提供可能な論理容量は、SSD内部で実施されるデータ圧縮の、圧縮率により変化するためである。そのため、SSDの論理空間には、使用可能な空間と、使用不可能な空間が存在する。
使用可能論理空間30002は、SSDが外部装置に提供可能な論理空間であり、外部装置は使用可能論理空間30002のサイズを、当該SSDの論理容量として認識する。図1において、そのサイズは650GBである。次に、使用不可論理空間30003は、SSDに格納したデータを、最大圧縮率の1/8で圧縮できなかった際に発生する論理空間の損失分であり、図1ではそのサイズは150GBである。
すなわち、最大論理容量30001は、使用可能論理空間30002のサイズ(容量)と、使用不可論理空間30003のサイズ(容量)の合計値に等しい。
次に、使用可能論理空間30002は、空き論理空間30004および使用中論理空間30005により構成されている。
使用中論理空間30005は、使用可能論理空間30002のなかで、外部装置が使用済みの空間である。具体的には、当該の空間には、外部装置よりライトされたデータがすでに格納済の状態となっている。ただし本領域に格納されたデータは、SSD内部で圧縮され、圧縮データが物理空間を構築するFMに格納される。なお、図1において、使用中物理空間30005のサイズは250GBである。
一方、空き論理空間30004は使用可能論理空間30002のなかで、外部装置が使用していない論理空間である。この領域には、外部装置からのデータはまだ格納されておらず、空きの状態である。図1において、そのサイズは400GBである。
次に、当該SSDの物理空間について説明する。
物理空間は、使用中物理空間30007と空き物理空間30006により構成されている。使用中物理空間30007は、使用中論理空間30005に対応する空間であり、使用中論理空間30005にライトされたデータの、圧縮データが格納されている空間である。図1において、そのサイズは50GBである。すなわち、図1では、外部装置が250GB分の論理空間を使用して、データの格納を行っているが、そのデータがSSD内部で平均1/5に圧縮されたことにより、実際に消費した物理容量は50GBであることを示している。
一方、空き物理空間30006は、データが格納されていない、すなわち空き状態の物理容量である。図1において、そのサイズは50GBである。
空き物理空間30006は、空き論理空間30004に対応する空間である。具体的には、空き論理空間30004のサイズは、空き物理空間30006のサイズを最大圧縮率で割ったものに等しい。図では、50GBの空き物理容量が存在し、さらにSSDの最大圧縮率が1/8であることから、400GBの空き論理容量が存在している。
以上をまとめると、図1のSSDは、最大で800GBの論理容量を外部装置に提供することができる。外部に提供可能な論理容量が800GBであるとき、SSD内部では、使用可能論理容量=最大論理容量30001の関係が成り立っている。なお使用可能論理容量とは、使用可能論理空間30002のサイズである。
使用可能論理容量800GBを達成するための条件は、データを最大圧縮率1/8で圧縮して格納することである。しかし、データの圧縮率は、格納対象データのパターン等によって変化する。そのため、データを全く圧縮できない場合もある。仮にデータを全く圧縮できなかった場合、そのときの使用可能論理容量は、物理容量に等しい100GBとなる。このように、データ圧縮率は常に変動するため、それに伴い、使用可能論理容量も100GBから800GBまで変化する。
すなわち図1において、外部装置が認識するSSDのサイズは、100GBから800GBにまで変化する。なお、SSDが未使用の状態においては、100GBの物理空間がすべて空きの状態となるため、外部装置が認識するSSDのサイズは800GBとなる。 ただし、空き論理空間30004のサイズは期待値であるため、そのサイズは、空き物理空間30006を平均圧縮率で割ることで求めても良い。
図2では、図1で説明したSSDを3台(SSD11、SSD12、SSD13)用いて、RAIDグループ(以下、RG)が構築されている。
ここで、SSD11の物理空間は、空き物理空間30036と使用中物理空間30037により構成されており、それに対応するSSD11の論理空間は、使用不可論理空間30033と空き論理空間30034および使用中論理空間30035により構築されている。同様に、SSD12の物理空間は、空き物理空間30046と使用中物理空間30047により構成されており、それに対応するSSD12の論理空間は、使用不可論理空間30043と空き論理空間30044および使用中論理空間30045により構築されている。また、SSD13の物理空間は、空き物理空間30056と使用中物理空間30057により構成されており、それに対応するSSD13の論理空間は、使用不可論理空間30053と空き論理空間30054および使用中論理空間30055により構築されている。
さらに、当該のRGにはストレージコントローラ(図示せず)により、複数のエクステントが作成されている。図においてエクステント30010は、ある一つのエクステントの構成例をしめしている。ストレージコントローラは、SSDの論理空間を使用してエクステントを構築する。
ここで、エクステントは、各SSDから一定サイズの論理空間を使用して作成された「エントリー」により構成されている。今、エクステント30010には、SSD11の任意の論理空間より作成されたエントリー30011、SSD12の任意の論理空間より作成されたエントリー30012、SSD13の任意の論理空間より作成されたエントリー30013が存在している。なお、各エントリー30011、30012、30013のサイズは等しい。しかし、各エントリーに格納されたデータは、SSD内で圧縮され、圧縮データとして物理空間に格納される。図では、エントリー30011のデータはSSD11内で圧縮され、圧縮データ30014として格納されている。また、エントリー30012のデータはSSD12内で圧縮され、圧縮データ30015として格納されている。さらに、エントリー30013のデータはSSD13内で圧縮され、圧縮データ30016として格納されている。このとき、圧縮率が異なることで、圧縮データ30014、30015、30016はサイズが不均一となっている。図では、四角形の大きさがサイズを表しており、圧縮データのサイズは、圧縮データ30016>圧縮データ30015>圧縮データ30014となっている。すなわち、圧縮率は、圧縮データ30014>圧縮データ30015>圧縮データ30016の順に高い。ここで圧縮率が高いとは、圧縮データをより小さくすることができたことを意味する。
次に、エクステント作成済み空間30020は、当該の論理空間に既にエクステントが作成済みであることを示している。当該空間のサイズは各SSDの使用中論理空間のサイズに依存する。エクステント作成可能空間30021は、当該の論理空間にエクステントが作成可能であることを示しており、その空間のサイズはRG内で空き論理空間が最小であるSSDの、空き論理空間のサイズに依存する。エクステント作成不可空間30022は、当該の論理空間にはエクステントが作成できないことを示しており、その空間のサイズはRG内で使用不可論理空間が最大であるSSDの、使用不可論理空間のサイズに依存する。
ここで、エクステントは各SSDに、均等なサイズにストライプされているため、各SSDにおいて、使用中論理空間30035、30045、30055のサイズは等しい。すなわち、今RGを構築するSSDの台数は3台であるため、エクステント作成済み空間30020のサイズは、あるSSDの使用中論理空間のサイズを3倍したものに等しい。 しかし、各SSDでは、データを内部で圧縮し、圧縮データとして物理空間に格納する。各SSDに格納されるデータの、データパターンが同じである可能性は低いため、各SSDの圧縮効果は不均一となる可能性が高い。したがって、各SSDで生成される圧縮データのサイズも不均一となる可能性が高い。図では、各SSDの平均圧縮率が異なることで、各SSDの物理使用量である、使用中物理空間30037、30047、30057のサイズが異なっている様子を示している。そのサイズは、使用中物理空間30037<30047<30057の関係にあるため、平均圧縮率は30037>30047>30057の関係にあることが分かる。
物理使用量の相違にともない、各SSDの空き物理空間30036、30046、30056のサイズも不均一な状態になっている。これに伴い、各SSDの空き論理空間30034、30044、30055と使用不可論理空間30033、30043、30053も不均一な状態が生じている。
空き論理空間に着目すると、SSD11は、最大の空き物理空間30036を有するため、空き論理空間30034も最大である。一方で、SSD13は空き物理空間30056が最小であるため、空き論理空間30054も最小となっている。
ストライプボリュームであるエクステントを新たに作成する際には、各SSDから均等なサイズの、空き論理空間を消費する。すなわち、あるRGで新たに作成可能なエクステントのサイズは、RGを構成するSSDなかで、空き論理容量が最小であるSSDにより制約される。具体的に、図2ではエクステント作成可能空間30021のサイズは、RG内で最小の空き論理空間30054のサイズを3倍したものに等しい。反対に、エクステント作成不可空間30022のサイズは、RG内で最大の使用不可論理空間30053のサイズを3倍したものに等しい。
このように、SSDがデータ圧縮機能を有することにより、RGを構成する各SSDの物理残量である空き物理容量が不均一になるケースが生じる。これにより、各SSDの空き論理容量にも不均一な状態となる。この状況下で新たにエクステントを構築する場合、たとえ他のSSDに十分な空き論理容量が残っていたとしても、追加エクステントを作成可能な容量のサイズは、RGを構築するSSDのなかで、空き論理容量が最小のSSDにより制約されることとなる。
本発明では、エクステント作成可能空間30021のサイズを拡大もしくは最大化する。その実現ために、本発明では図2の様にRGを構築するSSDの空き論理容量が不均一な状態となっている場合に、SSD間で、各SSDの空き論理容量の差を小さくするデータ移動を行う。
図3は、平準化処理を実行することで、図2での不均一状態を解決した時の、各SSDの状態を示したものである。ここで、平準化処理では、各SSD間の空き物理容量を厳密に等しくする必要はなく、各SSD間の空き物理容量の差が小さくなればよい。ただし、各SSDの空き物理容量が等しくなるようにデータ移動すれば、使用可能な論理容量は最大化される。
平準化処理実行前(図2)は、SSD11の空き論理空間30034と、SSD12の空き論理空間30044のサイズは十分であるのに対し、SSD13の空き論理空間30054のサイズが最小となっているため、エクステント作成可能空間30021のサイズは、図2の状態における空き論理容量30054の3倍となっていた。なお、この空き論理容量の不均一さは、各SSDでのデータ圧縮効果に違いが生じる(圧縮データサイズが異なる)ことで、各SSDの空き物理空間のサイズが不均一となったことにより発生する。
そこで、ストレージコントローラは、各SSDの空き物理空間のサイズを均一にするための、データ移動を行う。具体的には、空き物理空間の多い(すなわち、物理使用量の少ない)SSDの、圧縮効果の高い圧縮データ(すなわち、圧縮データのサイズが小さいもの)と、空き物理空間の少ない(すなわち、物理使用量の多い)SSDの、圧縮効果の小さい圧縮データ(すなわち、圧縮データのサイズが大きいもの)とを、入れ替える。図2において、空き物理空間の多いSSD11内の、圧縮効果の高いデータである圧縮データ30014と、空き物理空間の少ないSSD13内の、圧縮効果の低いデータである圧縮データ30016とが、平準化処理により交換される。
平準化処理実行後(図3)には、SSD11に物理使用量の多い圧縮データ30016が格納されることで、SSD11の空き物理空間が減少している。それにあわせて、空き論理空間30034も平準化実行前の図2の状態と比べて減少している。一方、SSD13には物理使用量の少ない圧縮データ30014が格納されることで、SSD13の空き物理容量が増加している。それにあわせて、空き論理容量30054も平準化実行前の図2の状態と比べて拡大している。
これにより、空き論理空間30034と30044、30054の乖離は小さくなっている。このなかで空き論理空間のサイズが最小のものは、依然として空き論理容量30054であるものの、そのサイズは平準化実行前である図2の状態に比べて拡大している。これに伴い、エクステント作成可能空間30021のサイズも拡大している。これは、各SSDの空き物理空間のサイズを平準化したことにより、得られた効果である。すなわち、空き論理空間のサイズの平準化を行うことは、空き物理空間のサイズの平準化を行うことに等しい。
なお、各SSDの空き論理空間30034、30044、30054のサイズに差がなくなったとき、すなわち、各SSDの空き物理空間30036、30046、30056のサイズの差が無くなったとき、エクステント作成可能空間30021のサイズの最大化が達成される。
図4は、第1実施例に係るストレージ装置10を含むストレージシステム10000の構成例を示す図である。
ストレージシステム10000は、ストレージ装置10、及びホスト計算機30を備える。ホスト計算機30は、ストレージ装置10を利用する上位装置の一例である。ホスト計算機30は、例えばアプリケーションサーバである。ホスト計算機30とストレージ装置10は、SAN(Storage Area Network)20を経由して通信する。SAN20として、例えば、ファイバチャネル、SCSI(Small Computer System Interface)、iSCSI(internet Small Computer System Interface)、USB(Universal Serial Bus)、IEEE1394バス、SAS(Serial Attached SCSI)等を用いることが可能である。SAN20に代えて、他種の通信ネットワーク(例えばLAN(Local Area Network))が採用されても良い。なお、図では、ホスト計算機30及びストレージ装置10がそれぞれ1つであるが、それらのうちの少なくとも一方は複数でも良い。
ホスト計算機30は、ストレージ装置10に対して制御コマンド等を発行する制御ソフトウェア(図示省略)を実行することにより、制御コマンド等をストレージ装置10に発行し保守管理をする。その制御コマンドがストレージ装置10で実行されることにより、ストレージ装置10が有するRAIDグループ(以下、RG)のRAIDレベルの変更や、容量平準化の起動閾値の調整、および、RG単位またはプールボリューム単位での圧縮機能のON/OFF設定等の種々の作業を行うことができる。なお、RAIDグループは、複数のSSD(又はHDD)で構成され、RAID0,1,1+0,2,3,4,5,6などの所定のRAIDレベルに従いデータを記憶する物理記憶媒体グループである。ストレージ装置10に対して制御コマンドを発行する計算機として、ホスト計算機30とは別の計算機が使用されても良い。
ストレージ装置10は、ストレージコントローラ100と、ストレージコントローラ100に接続されたディスクボックス110とを有する。
ストレージコントローラ100は、ストレージ装置10の動作を制御する。ストレージコントローラ100は、通信インタフェースデバイスと、メモリと、それらに接続された制御デバイスとを有する。通信インタフェースデバイスとして、フロントエンドの通信インタフェースデバイスであるホスト I/F101と、バックエンドの通信インタフェースデバイスであるディスク I/F107がある。メモリとして、キャッシュメモリ103がある。制御デバイスとして、プロセッサ(例えばCPU(Central Processing Unit))104がある。ホスト I/F101と、キャッシュメモリ103と、プロセッサ104と、ディスク I/F107は、例えばPCI(Peripheral Component Interconnect)のような専用の接続バスで、内部ネットワーク102に接続されており、内部ネットワーク102を介して通信可能である。キャッシュメモリ103は、例えばDDR3(Double Data Rate3)のような専用の接続バスで、内部ネットワーク102に接続されている。
ホスト I/F101は、ストレージ装置10がSAN20と接続するためのインタフェースである。
内部ネットワーク102は、ストレージ装置10の内部に存在するデバイス同士を接続するためのネットワークである。内部ネットワーク102は、スイッチを含む。内部ネットワーク102に代えて、スイッチ機能やDMA転送、RAID演算等のアシスト機能を有するASICs(Application Specific Integrated Circuit)を用いても良い。
プロセッサ104は、ストレージ装置10の全体を制御する。プロセッサ104は、複数存在する。この場合、複数のプロセッサ104が協同または分担してストレージ装置10を制御することもできる。
キャッシュメモリ103は、プロセッサ104がストレージ装置10を制御するために必要なコンピュータプログラムを記憶する領域やデータを一時的に記憶する領域を有する。
ディスク I/F107は、ストレージコントローラ100とディスクボックス110とを接続するためのインタフェースである。
ディスクボックス110は、種類の異なるディスク(例えば、HDD111、SSD700といった不揮発物理記憶媒体)を複数台備えている。種類の同じディスクでRAIDグループが構成される。そして、各RAIDグループから、ユーザデータの格納空間としての論理ボリュームが提供される。なお、図では、ディスクボックス110を構成するディスクとして、HDD111及びSSD700が示されているが、HDD111が無くても良い。
図5は、SSD700の構成例を示す図である。
SSD700は、複数のフラッシュメモリチップ780とそれらに接続されたSSDコントローラ710とを有する。SSDコントローラ710は、複数のフラッシュメモリチップに対するデータの書き込み/読み出し、データの圧縮/伸張等の動作を制御する。
SSDコントローラ710は、通信インタフェースデバイスと、メモリと、それらに接続された制御デバイス、およびデータの圧縮・伸長を実行するハードウェア回路とを有する。なお、圧縮・伸長機能はCPUがソフトウェアで実現してもよい。通信インタフェースデバイスとして、フロントエンドの通信インタフェースデバイスであるディスク I/F711と、バックエンドの通信インタフェースデバイスであるフラッシュ I/F717がある。メモリとして、キャッシュメモリ716がある。制御デバイスとして、プロセッサ713がある。データの圧縮・伸長を実行するハードウェアデバイスとして、圧縮・伸長回路718がある。なお、データの圧縮・伸長機能は、プロセッサ713が専用のプログラムを実行することで、ソフトウェアによって実現してもよい。ディスク I/F711と、プロセッサ713と、キャッシュメモリ716と、フラッシュ I/F717と、圧縮・伸長回路718は、内部ネットワーク712を介してそれぞれ接続されている。 ディスク I/F711は、ストレージコントローラ100のディスク I/F107と専用の接続バスで接続されている。内部ネットワーク712は、デバイス同士を接続するためのネットワークである。内部ネットワーク712は、スイッチを含んでもよい。スイッチ機能を有したASICsで代用しても良い。プロセッサ713は、SSD700全体を制御する。キャッシュメモリ716は、プロセッサ713がSSD700を制御するために必要なコンピュータプログラムやデータを記憶する領域である。フラッシュ I/F717は、SSDコントローラ710とフラッシュメモリチップ780とを接続するためのインタフェースである。
本実施例において、SSDは、複数のフラッシュメモリと、それらを制御するコントローラとを備える記憶装置であり、外観形状等がフォームファクタに限定されるものではない。また、フラッシュメモリには、NORやNANDといった不揮発性の半導体メモリが使用されてよい。また、フラッシュメモリに代えて、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の各種半導体メモリが使用されても良い。 図6は、フラッシュメモリチップ780の構成例を示す図である。
フラッシュメモリチップ780は、複数のブロック782と、それらに接続されたフラッシュメモリコントローラ(以下、フラッシュコントローラ)781とを有する。フラッシュコントローラ781は、フラッシュメモリチップ780におけるデータのリード/ライトを制御する。各ブロック782は、複数のページ783より構成される。フラッシュメモリチップ780からのデータのリード、及びフラッシュメモリチップ780へのデータのライトは、ページ単位で実行される。データ消去は、ブロック単位で実行される。また、ページ783は、複数のコードワード784より構成されており、図示はしていないがコードワード784には、ホスト計算機30より格納されたデータとそのデータを保護するためのエラー訂正符号であるECC(Error Check and Correction)コードが格納されている。
フラッシュメモリチップ780は、例えば、NAND型のフラッシュメモリである。NAND型のフラッシュメモリでは、データを上書きすることができない。そのため、データがライトされているページに新たなデータをライトする際は、消去済みのページを新たに確保し、そのページに新たなデータをライトする。その際、新たなデータを格納したページを有効ページとして管理し、更新対象のデータを格納していたページを、消去可能な無効ページとして管理する。
データ消去は、ブロック単位で実行する必要があるため、消去対象ブロックの中に有効データが存在する場合には、有効データを別のブロックにコピーすることで、消去対象ブロック内の全ページを無効化し、データ消去を実行する。上記、消去済みブロック生成のための一連の処理は、リクラメーション処理と呼ばれる。
SSDコントローラ710は、SSD700内の複数のブロック782に対して、消去回数の平準化(ウェアレベリング)を行う。SSDコントローラ710は、更新頻度が小さいデータを消去回数の多いブロックに格納し、更新頻度が大きいデータを消去回数の少ないブロックに格納することで、SSD700内のブロックの消去回数を平準化する。
また、SSDコントローラ710は、ライトの際に、消去回数の少ない空きブロックを選択してデータを格納することで、消去回数の平準化を行ってもよい。この際、複数のブロックを消去回数に応じて複数のグループに分けて、消去回数が少ないグループからブロックを選択することとしてもよい。
SSD内の複数のブロックの消去回数が平準化されることで、SSDの長寿命化が達成される。
図7は、SSDのアドレス空間の構成例を示す図である。
SSD700に関して、論理アドレス空間900と物理アドレス空間800とが存在する。論理アドレス空間900は、SSD700がストレージコントローラ100に対して提供している一意なアドレス空間である。一方、物理アドレス空間800は、実際のデータが格納される物理記憶領域を識別するためのアドレス空間である。SSDコントローラ710は、論理アドレス空間900をたとえば物理ページサイズと同じ大きさを持つ複数個の領域(以下、論理ページ)901、902、903、904に分割し、それぞれの領域に物理アドレス空間である物理ページ7831、7832、7833を割り当てる。ここで、本実施例ではSSD700はデータ圧縮機能および下位レベルの容量仮想化機能を有している。
データ圧縮機能により、論理ページ毎にデータが圧縮される。例えば、論理ページ901のデータは圧縮データ911に、論理ページ902のデータは圧縮データ912に、論理ページ903のデータは圧縮データ913に、論理ページ904のデータは圧縮データ914にそれぞれ変換される。最終的に、圧縮データはコードワード(以下、CW)の単位で物理ページに格納される。圧縮データがCWサイズ以下になった場合は、残りをゼロデータ等でパディングする。
図中では、圧縮データ911はCW7841に、圧縮データ912はCW7842に、圧縮データ913はCW7843とCW7844に、圧縮データ914はCW7847に格納される。データパターン等によって、圧縮率が変化するため、圧縮データのサイズは一定とは限らず任意のサイズを持つ。このように、圧縮機能を有するSSD700では、一つの物理ページに複数個の論理ページに関連付けられたデータを格納することで、使用する物理ページの数を節約することができる。
さらに、SSD700は下位レベルの容量仮想化機能を有し、物理空間よりも大きな論理空間を、外部に提供する。具体的には、論理アドレス空間は、物理ページ数よりも多い論理ページ数を有しており、物理アドレス空間800が圧縮データで一杯になるまで、論理アドレス空間900が拡張される。すなわち、すべての物理アドレス空間が最大圧縮率のデータで格納された時に、最大の論理アドレス空間を外部に提供することが出来る。
本実施例では、圧縮率は物理ページに含まれるCW数と、圧縮後のデータのCW数から算出されるものとする。例えば、図7の例では、ページ#aがCWを3つ含むため、圧縮後のデータ#aがCW1つ分であれば圧縮率は、33.3%となる。この場合、1ページ分のデータが1CW以下のサイズのデータに圧縮された場合に、圧縮率は最大となる。
SSDコントローラ710は、論理アドレス空間900を構成するアドレス範囲(領域)と物理アドレス空間800を構成するアドレス範囲(領域)とのマッピングを動的に変更することで、ウェアレベリング等を実現することができる。なお、論理アドレス空間900と物理アドレス空間800との対応は、プロセッサ713が後述の論物変換テーブル23100を用いて管理している。本実施例では、ストレージコントローラ100は、直接SSD内の論物変換テーブルを管理していない。ゆえに、プロセッサ713がストレージコントローラ100に対して、SSD内部情報の通知を行わない限り、ストレージコントローラ100は、論理アドレス空間900と物理アドレス空間800との対応関係を把握することはできない。
次に、上位レベルの容量仮想化技術について詳細を説明する。
上位レベルの容量の仮想化技術(例えば、Thin Provisioning)とは、ストレージ装置10が有している物理的な容量より大きな仮想的な容量をホスト計算機30側に提供する技術である。ホスト計算機30は、仮想的な論理ボリューム(仮想ボリューム)に対してアクセスする。容量の仮想化技術では、ストレージ装置10がライト要求を受けた場合に、ライト要求のデータのライト先の仮想的な記憶領域(仮想エクステント)に、物理的な記憶領域が割り当てられる。本実施例では、容量仮想化技術において割り当てられる物理的な記憶領域の単位をエクステント単位とする。また、エクステントのサイズは、数MBから数GBなど、任意のサイズに設定されて良い。
図8を用いて、上位レベルの容量仮想化技術を詳細に説明する。
図8は、上位レベルの容量仮想化技術の概要説明図である。
同一種類のディスク(例えばSSD)でRAIDグループ(RG)が構成されている。1以上のRGを基にプールボリューム500が構成されている。
エクステントは、RAIDグループを分割することにより得られた記憶領域である。つまり、プールボリューム500は、複数のRAIDグループを含み、各RAIDグループに基づいて構成される複数のエクステントを含む。図では、プールボリューム500は、RG200、RG300及びRG400の3つのRGに基づいて構成されている。以下、RG200について説明する。
RG200は、ディスク1 210、ディスク2 220、ディスク3 230より構成されている。さらに、RG200は、RAID5を構築しており、Data(図では、D)及びParity(図では、P)がディスク(210〜230)に格納される。
RGに基づく記憶領域が複数のエクステントに分割される。RGに基づく記憶領域は、複数のSSDによって提供される論理アドレス空間900からなる。
次に、エクステントの構成について説明する。エクステントは、各ディスクに存在する論理アドレス空間であるエントリーにより構成される。エントリーには1または複数個のDataおよびParityが格納される。図中では、例えばエントリー251には、D211、D212、P213が格納されている。エントリー252には、D221、D222、P223が格納されており、さらにエントリー253には、D231、D232、P233が格納されている。図示はしていないがエントリー254、255、256も同様に複数個のDataとParityを格納している。また、エントリー251と254はディスク210内に、エントリー252と255はディスク220内に、また、エントリー253と256はディスク230内にそれぞれ構築されている。
各エントリーは、エクステント内に設けられたストライプ列に所属する。ここで、エントリー251、252と253はストライプ列260に所属している。また、エントリー254、255、256はストライプ列261に所属している。あるストライプ列においては、RAIDによる冗長度を保証するためDataとそれに関連するParityとは別々のディスクに格納されなければならない。具体的には、D211とD221はP231により保護されているため、D211とD221およびP231はそれぞれ別々のディスクであるディスク210、ディスク220、ディスク230に格納されている。同様に、D212とD232はP222により保護されており、D223とD233はP213により保護されている。例えば、P231は、D211とD221のXOR演算により算出される。この場合、D211またはD221が更新されると、P231も更新される。このようにParityを付加することで、あるRAIDグループに属するディスク210、ディスク220、ディスク230のいずれかに障害が発生した場合に、他の正常なディスクから障害が発生したディスクのデータを復元することができる。
本実施例では、平準化処理を実行するため、エントリー単位でデータの移動を行う。このとき、RAIDの冗長性を保つためには、同一のストライプ列に所属するエントリーが、同一のディスクに2個以上存在してはならない。たとえば、データ移動により、エントリー254とエントリー252のデータが移動されたとする。このとき、本来別々のディスクに格納されなければならない、D211とD221とP231のうち、D211とD221とが同一のディスク210内に存在してしまうことになる。これは、RAIDによるデータ保護能力が低下することを意味する。すなわち、ストレージコントローラは、RAIDの冗長性を保つために、平準化処理実行時には、同一のディスクに、同一のストライプ列に所属するエントリーが2つ以上存在することがないように、移動対象データを選択しなければならない。
また、エクステントはエントリーの集合体であり、例えばエクステント240はエントリー251、252、253、254、255、256より構成されている。
図8では、RG200から、エクステント240、エクステント241及びエクステント242が作成されている。RG300の記憶領域から、エクステント340、エクステント341及びエクステント342が作成されている。RG400の記憶領域から、エクステント440、エクステント441及びエクステント442が作成されている。
図8の例では、エクステントは、ブロックよりもサイズが大きい記憶領域である。エクステントのサイズは、例えば、ブロックのN倍(Nは2以上の整数)である。なお、エクステントは、複数のデータと複数のデータから算出されるパリティのセットを1つ以上含むように設定しても良い。
仮想ボリューム600は、ホスト計算機30がユーザデータを格納するための仮想的な論理ボリュームである。なお、仮想ボリューム600の容量として定義される容量は、ストレージ装置10が有する記憶媒体の容量の合計よりも大きな記憶容量とすることができる。なお、仮想ボリューム600は任意の数の仮想エクステント601から607によって構成されており、例えば、図6に示す1つの仮想エクステントに、1つのエクステントが対応付けられているが、1つの仮想エクステントに、複数のエクステントが対応付けられても良い。仮想ボリューム600は、仮想アドレス(仮想ボリュームを構成する論理アドレス)を有し、仮想アドレスを所定の範囲毎に区切って仮想エクステントが構成される。ホスト計算機30は、仮想ボリューム600の仮想アドレスに対して、リード/ライト要求を発行する。なお、1つのプールボリュームから、複数の仮想ボリューム600に対してエクステントが割当てられても良い。
また、実線で示されている仮想エクステント601〜604は、RG200、300、400からエクステントが割当てられている仮想エクステントである。すなわち、仮想エクステント601に対してはエクステント240が、仮想エクステント602に対してはエクステント242が、仮想エクステント603に対してはエクステント442が、仮想エクステント604に対してはエクステント341がそれぞれ割当てられている。
なお、点線で示されている仮想エクステント605〜607は、データのライト先として指定されたアドレスが属している仮想エクステントではないため、仮想エクステント605〜607にはエクステントは未割当てとなっている。
図9は、容量平準化処理と仮想ボリュームの関係の一例を示す図である。
SSD210、SSD220、SSD230がRG200を構築しており、SSD210の論理アドレス空間の一部に、エントリー251がマッピングされている。同様に、SSD220の論理アドレス空間の一部に、エントリー252が、また、SSD230の論理アドレスの一部に、エントリー253がそれぞれマッピングされている。なお、エントリー251、252、253はSSDの論理アドレス空間に対応しているため、SSD内部のデータ圧縮の有無によらず、ストレージコントローラからは一定のサイズとして認識される。さらに、エントリー251、252、253はエクステント240にマッピングされており、エクステント240は仮想ボリューム600の一部としてマッピングされている。
次に、エントリー251に対応するデータであるD1は、SSD210内部で圧縮データ801として格納されている。また、エントリー252に対応するデータであるD2は、SSD220内部で圧縮データ802として格納されている。さらに、エントリー253に対応するデータであるD3は、SSD230内部で圧縮データ803として格納されている。SSDの物理アドレス空間内に格納されている圧縮データ801、802、803は、データパターンの違いによるデータ圧縮率の違いにより、サイズに差が出ている。図において、圧縮データ801、802、803を示す四角の大きさは実際のデータのサイズを示しており、そのサイズは801<802<803である。すなわち、801がもっとも圧縮率が高く、803がもっとも圧縮率が低いことを意味している。この圧縮率の違いにより、SSD210、220、230の空き物理容量が不均一な状態となっている。さらには、SSD230の空き物理容量のサイズがもっとも少なく枯渇の可能性も高い。そこで、ストレージコントローラは容量の平準化により、空き物理容量の不均一な状態を解消する。
具体的には、空き物理容量のもっとも少ないSSD230と、空き物理容量がもっとも多いSSD210をデータ移動対象SSDとして選択し、次に、SSD230のなかで物理使用量の大きい(すなわち圧縮率の低い)データであるデータ803と、SSD210のなかで物理使用量の小さい(すなわち圧縮率の高い)データであるデータ801とを、交換対象として選択し、データの移動(交換)を行う。
具体的にデータの移動とは、ストレージコントローラ100がSSD210から圧縮データ801をキャッシュメモリ103にリードし、リードしたデータをSSD230にライトすることであり、さらに、ストレージコントローラ100がSSD230から圧縮データ803をキャッシュメモリ103にリードし、リードしたデータをSSD210にライトすることである。
厳密には、SSDからストレージコントローラに転送されるデータは、非圧縮なデータである。そのため、SSD210から圧縮データ801をキャッシュメモリにリードする際には、SSD210は内部で圧縮データ801を伸長し、非圧縮状態のデータであるD1をストレージコントローラに転送する。その後、ストレージコントローラは非圧縮状態のデータD1を、移動先のSSDであるSSD230へ転送する。非圧縮状態のデータD1を受け取ったSSD230は、内部でデータ圧縮を実行し、再度、圧縮データ801に変換したうえで、自身の物理領域に格納する。上記の動作は、SSD230からSSD210へ、圧縮データ803を移動させる際にも同様の動きとなる。
上記、容量の平準化処理により、物理使用量の大きな圧縮データ803を新たに格納したSSD210の、空き物理容量は減少する。一方、物理使用量の小さな圧縮データ801を新たに格納したSSD230は、空き物理容量が拡大する。これにより、SSD間の空き物理容量の不均一さが解消される。
このようにホスト計算機は一定の容量の仮想ボリュームを認識し、仮想ボリュームに対してリード/ライト要求を発行することができる。容量平準化処理が実行され各SSDが提供することができる論理空間の容量が増加した場合は、プールボリュームの容量が増加される。これにより、ホスト計算機は容量の変動を認識することなく、業務を継続することが可能となる。
なお、SSD間でデータが移動されると、ホスト計算機30は、データへのアクセス先を移動先のSSDへ変更しなければならない。しかし、仮想ボリューム600を用いてアドレスが変換されることで、ホスト計算機30は、アクセス先を変更することなく、移動先のデータへアクセスできる。つまり、仮想エクステント600の仮想アドレスとの関連付けが、ストレージコントローラ100によって、移動元のエントリー251の論理アドレスから、移動先のエントリー253の論理アドレスへ変更される。ホスト計算機30は、仮想ボリューム600にアクセスすることで、アクセス先のアドレスを変更することなく、容量の平準化処理を行うことができる。
アドレス変換に仮想ボリュームを用いるのは一例であり、仮想ボリュームを用いずにアドレス変換が行われてもよい。
図10は、ストレージコントローラ100が備えるキャッシュメモリ103の構成例を示す図である。
キャッシュメモリ103は、プログラム領域12000、テーブル領域13000及びデータキャッシュ領域14000を有する。プログラム領域12000及びテーブル領域13000は、ストレージ装置10を制御するためのプログラムや各種テーブルが格納される領域である。データキャッシュ領域14000は、ユーザデータを一時的に格納するために使用される領域である。
プログラム領域12000は、ライトI/Oプログラム12100、リードI/Oプログラム12200、容量平準化プログラム12300、SSD情報取得プログラム12400を記憶する。
ライトI/Oプログラム12100は、ホスト計算機30からのライト要求を処理するプログラムである。リードI/Oプログラム12200は、ホスト計算機30からのリード要求を処理するプログラムである。容量平準化プログラム12300は、SSDの物理容量の平準化処理を行うプログラムである。SSD情報取得プログラム12400は、SSD700の内部情報を取得するためのプログラムである。
テーブル領域13000は、ディスク管理テーブル(以下、テーブルをTBLと言う)13100、RG管理TBL13200、プール管理TBL13300、エクステント管理TBL13400、仮想ボリューム管理TBL13500及びエントリー管理TBL13600を有する。
ディスク管理TBL13100は、ディスクボックス110に格納されているディスクに関する情報を格納するテーブルである。RG管理TBL13200は、RAIDグループに関する情報を格納するテーブルである。プール管理TBL13300は、プールボリュームの情報を格納するテーブルである。エクステント管理TBL13400は、エクステントに関する情報を格納するテーブルである。仮想ボリューム管理TBL13500は、仮想ボリュームに関する情報を格納するテーブルである。エントリー管理格納TBL13600は、エントリーに関する情報を格納するテーブルである。各テーブルの詳細は後述する。
データキャッシュ領域14000には、ホスト計算機30からのライト要求及びリード要求に従うユーザデータ14100が一時的に記憶される。ユーザデータ14100は、ホスト計算機30が使用するデータである。
図11は、ディスク管理TBL13100の構成例を示す図である。
ディスク管理TBL13100は、ディスク毎に、ディスク#13101、ディスク種別13102、最大論理容量13103、使用可能論理容量13104、使用中論理容量13105、空き論理容量13106、最大物理容量13107、使用中物理容量13108、空き物理容量13109、最大圧縮率13110、平均圧縮率13111、圧縮モード13112を有する。
ディスク#13101は、ディスクの識別子であり、ユニークな番号である。ディスク 種別13102は、ディスクの種別を表しており、例えば、SSD(SLC)、SSD(MLC)、HDDなどを表す。ここで、SSDは、使用するNANDフラッシュメモリの種類により、SLC(Single Level Cell)タイプと、MLC(Multi Level Cell)タイプ、およびTLC(Triple Level Cell)タイプの3類が存在する。SLCは、高速、長寿命、低容量なフラッシュメモリであり、数十万から数万回オーダーのブロック消去が可能である。一方のMLCは、低速、短寿命、及び大容量なフラッシュメモリであり、数万から数千回オーダーのブロック消去が可能である。TLCはMLCに比べ、さらに、低速、短寿命であるが、大容量なフラッシュメモリであり数千から数百回オーダーのブロック消去が可能である。
最大論理容量13103は、当該のSSDが外部装置に提供可能な論理容量の上限値であり、図1の最大論理容量30001に等しい。使用可能論理容量13104は、外部装置に提供可能な論理容量であり、図1の使用可能論理空間30002のサイズに等しい。使用中論理容量13105は、外部装置が使用済みの論理容量であり、図1の使用中論理空間30005のサイズに等しい。空き論理容量13106は、使用可能な論理空間のなかで外部装置が使用していない容量であり、図1の空き論理空間30004のサイズに等しい。最大物理容量13107は、SSDが搭載する物理記憶媒体の容量の合計値である。使用中物理容量13108は、圧縮データの格納量を示しており、図1の使用中物理空間30007のサイズに等しい。空き物理容量13109は、データが格納されていない物理空間の容量であり、図1の空き物理空間30006のサイズに等しい。最大圧縮率13110は、当該のSSDが提供することができる、圧縮率の最大値である。平均圧縮率は、SSDの圧縮率の平均値であり、使用中物理容量13108÷使用中論理容量13105により算出される。本実施例では、最大論理容量13103、最大物理容量13107及び最大圧縮率13110の値はディスク毎に予め設定されている。その他の値は、後述するようにストレージコントローラが情報を更新する。
圧縮モード13112は、SSDの圧縮モードが、「同期」モードであるか「非同期」モードであるかを示すものである。ここで、同期圧縮モードとは、SSDがストレージコントローラからライトデータを受け取ってからFMにデータを格納する前に圧縮を実行し、ライト要求の応答にデータ圧縮率も返却するモードである。
一方、非同期圧縮モードとはSSDがリクラメーションやリフレッシュなどの、非同期処理を行う際に圧縮を実行するモードである。非同期モードの場合は、ストレージコントローラからのライトデータは圧縮されることなくFMにそのまま格納される。その後、任意のタイミングで非同期処理が実行された際に、圧縮を行うモードである。
同期圧縮モードは、ストレージコントローラがデータの圧縮結果を即座に取得できるという利点を有している。また、FMへのデータ書き込み量が削減されるため、長寿命化の利点もある。しかし、圧縮のための処理が別途発生するため、性能への影響が発生する。 一方、非同期圧縮モードはデータの圧縮が効かない期間が存在するが、SSDで必然的に発生するリクラメーションやリフレッシュに伴う、内部のデータ移動に併せて圧縮を実行するため、性能インパクトを押さえることができる。
なお、圧縮モードの切り替えは、ストレージコントローラが任意のタイミングでSSDに設定することができる。
図12は、RG管理テーブル13200の構成例を示す図である。
RG管理TBL13200は、RG毎に、RG#13201、ディスク種別13202、RAID Level13203、RAID構成13204、ディスク#13205、圧縮モード13206を有する。
RG#13201は、RGの識別子であり、ユニークな番号である。ディスク種別13202は、RGを構成するディスクの種別を表す。RGは、同一種類のディスクから構成される。
RAID Level13203は、RGのRAIDレベルを表し、例えば、RAID 1+0、1、3、4、5、6といった種々の値である。RAID構成13204は、RAIDを構成するデータディスク(データを格納するディスク)の数、及びパリティディスク(パリティを格納するディスク)の数を表す。ディスク#13205は、RGを構成するディスクの識別子である。
圧縮モード13206は、RGを構成するディスクに対する圧縮機能の設定状況を示している。有効の場合は「ON(同期)」「ON(非同期)」、無効の場合は「OFF」が格納される。
図13は、プール管理TBL13300の構成例を示す図である。
プール管理TBL13300は、プールボリューム毎に、プールボリューム#13301、RG#13302を有する。
プールボリューム#13301は、プールボリュームの識別子であり、ユニークな番号である。RG#13302は、プールボリュームを構成する全てのRGのRG番号を表す。図13では、プールボリュームを1つ例示しているが、ストレージ装置内で複数のプールボリュームが管理されても良い。
図14、エントリー管理TBL13600の構成例を示す図である。
エントリー管理TBL13600は、ディスク毎に、ディスク#13601、エントリー#13602、サイズ13603、Start―LBA13604、Length13605、ステータス13606、割当て先エクステント#13607、物理使用量13608を有する。
ディスク#13601は、ディスクの識別子であり、ストレージ装置10内でユニークな番号である。エントリー#13602はディスク内に作成されたエントリーの識別子であり、ディスクごとにユニークな識別子である。サイズ13603は、エントリーの容量を例えばByte単位で表記したものである。Start―LBA13604及びLength13605は「当該エントリーが、何番のLBAから何番のLBAまでのアドレス空間を使用して作成されているか」を示す。なお、エントリー#13602は、SSDの最大論理容量に対応する個数が存在する。すなわち、最大論理容量が800GBのSSDに、12MBのエントリーを作成するケースでは、800GBx1024÷12MB=68266個のエントリーがSSD内に作成されることとなる。
ステータス13606は、当該のエントリーが「割当て済み」「未割当て」「使用不可」のいずれの状態にあるかを示す。「割当て済み」とは、当該エントリーが使用中論理空間30005の範囲内に存在することを示す。「未割当て」とは、当該エントリーが、空き論理空間30004の範囲内に存在することを示す。なお実施例1では、ストレージコントローラがエントリーを使用する際には、ステータス13606が「未割当て」のエントリーのなかで、エントリー#13602が最も若いエントリーから使用する。つぎに「使用不可」とは、当該エントリーが、使用不可論理空間30003の範囲内に存在することを示す。
当該のSSDにおいて、使用可能な論理空間が増加するということは、「使用不可」状態のエントリーが「未割当て」状態に変更されるということを意味する。反対に、当該のSSDにおいて、使用可能な論理空間が減少するということは、「未割当て」状態のエントリーが「使用不可」状態に変更されるということを意味する。このステータス管理により、ストレージコントローラはSSDから提供される論理容量の変動に対応する。例えば、実施例1において、SSDの提供可能な論理容量が800GBから700GBに変動した場合、ストレージコントローラ100は700GBから800GBのLBA空間に対応するエントリーのステータスを「使用不可」に変更する。また、容量平準化処理により、SSDが提供可能な論理容量が500GBから700GBに増加した場合、ストレージコントローラ100は500GBから700GBのLBA空間に対応するエントリーのステータスを「未割当て」に変更する。
割当先エクステント#13607は、当該エントリーの割当て先を管理する。当該エントリーが割当て済みの場合(ステータス13606が「割当て済み」)は、そのエントリーを使用するエクステント#が格納される。一方、当該エントリーが未割当ての場合(ステータス13606が「未割当て」もしくは「使用不可」)は、無効を示す「N/A」が格納される。
物理使用量13608は当該エントリーに格納されたデータがSSD内で圧縮された場合に、圧縮後のデータを格納した物理記憶領域のサイズを示すものであり、そのサイズを例えばByte単位で表記したものである。なお、本数値は、SSDから取得した情報を元に更新される。また、サイズに代えて、圧縮率などのパーセント表記であっても良い。なお、当該エントリーが未割当てのものについては、無効を示す「N/A」が格納される。
図15は、エクステント管理TBL13400の構成例を示す図である。
エクステント管理TBL13400は、エクステント毎に、RG#13401、エクステント#13402、サイズ13403、ステータス13404、ストライプ列#13405、ディスク#13406、エントリー#13407を有する。
RG#13401は、RGの識別子であり、ユニークな番号である。エクステント#13402は、エクステントの識別子であり、ユニークな番号である。サイズ13403はエクステントの容量を例えばByte単位で表記したものである。ステータス13404は、当該のエクステントが「割当て済み」「未割当て」のいずれの状態にあるかを示す。「割当て済み」とは、当該のエクステントが仮想エクステントに割当て済みであることを示す。一方、「未割当て」とは、当該のエクステントが仮想エクステントに割り当てられていないことを示す。
ストライプ#13405、ディスク#13406、エントリー#13407は、当該エクステントのストライプ列に属するディスクとエントリーをそれぞれ識別するものである。
図16は、仮想ボリューム管理TBL13500の構成例を示す図である。
仮想ボリューム管理TBL13500は、仮想ボリューム毎に、仮想ボリューム#13501、仮想容量13502、割当済容量13503、仮想エクステント#13504及び割当てエクステント#13505を有する。
仮想ボリューム#13501は、仮想ボリュームの識別子であり、ユニークな番号である。仮想容量13502は、仮想ボリュームの仮想的な容量である。この仮想的な容量がホスト計算機30に提供される。割当済容量13503は、仮想ボリュームに実際に割当てられているエクステントの容量の合計値である。なお、本数値は物理量ではなく、論理量である。
仮想エクステント#13504は、仮想ボリュームに含まれる仮想エクステントの識別子である。仮想ボリューム#0には、仮想エクステント#0〜nが含まれることを示す。 割当てエクステント#13505は、仮想ボリュームに割り当てられているエクステントの識別子(番号)である。ストレージコントローラ100は、仮想エクステントごとに、エクステントの割当て状態を管理する。つまり、仮想エクステント#0には、エクステント#0が割当てられており、仮想エクステント#1には、エクステント#100が割当てられている。ただし、エクステントが未割当ての仮想エクステントのエクステント#13505が「―」となる。つまり、仮想エクステント#nには、物理的な記憶領域を提供するエクステントが割当てられていない。
図17は、SSD700におけるキャッシュメモリ716の構成例を示す図である。
キャッシュメモリ716は、プログラム領域22000、テーブル領域23000、及びデータキャッシュ領域24000を有する。
プログラム領域22000及びテーブル領域23000は、SSD700を制御するためのプログラムや各種テーブルが格納される領域である。データキャッシュ領域24000は、ユーザデータを一時的に格納するために使用される領域である。
プログラム領域22000は、ライトI/Oプログラム22100、リードI/Oプログラム22200、SSD内WLプログラム22300、空き容量生成プログラム22400、及びSSD内部情報通信プログラム22500、圧縮・伸長プログラム22600を有する。
ライトI/Oプログラム22100は、ストレージコントローラ100からのライト要求を処理するプログラムである。リードI/Oプログラム22200は、ストレージコントローラ100からのリード要求を処理するプログラムである。SSD内WLプログラム22300は、SSD内部でのWLを実行するためのプログラムである。空き容量生成プログラム22400は、SSD700の空き容量の枯渇を回避するために行われるリクラメーション処理を実行するプログラムである。
SSD内部情報通信プログラム22500は、ストレージコントローラ100の要求に従ってSSDの内部情報を作成し、そのSSD内部情報をストレージコントローラ100に通知するためのプログラムである。圧縮・伸長プログラムは、SSDコントローラ710が、プロセッサ713を用いてソフトウェアでデータの圧縮・伸長を実現するためのプログラムである。
テーブル領域23000は、論物変換TBL23100、ブロック管理TBL23200、容量管理TBL23300を有する。
論物変換TBL23100は、SSD700の論理アドレス空間と物理アドレス空間との対応を管理するためのテーブルである。ブロック管理TBL23200は物理ブロックやページの状態を管理するためのテーブルである。容量管理テーブル23300はSSDの各種容量を管理するためのテーブルである。
データキャッシュ領域24000は、ユーザデータ24100を格納する領域を有する。ここで言うユーザデータ24100は、ブロックに書き込まれるデータ及びブロックから読み出されたデータである。
図18は、論物変換TBL23100の構成例を示す図である。
論物変換テーブル23100は、LBA23101、論理ページ#23102、論理ページサイズ23103、ステータス23104、ブロック#23105、ページ#23106、CW位置23107、物理使用量23108、通知要否フラグ23109を有する。
LBA23101は、ストレージコントローラ100に提供するLBAの開始位置を示す。なお、SSD内部において、フラッシュメモリのI/O単位はページであるため、LBA23101の数値はページサイズの倍数で管理されている。SSDは、外部装置に対しては、連続した数値のLBAを提供する。またLBAの最大値は、最大論理容量に等しい。論理ページ#23102は、論理ページ番号の通し番号である。論理ページサイズ23103は、論理ページのサイズをByteで表したものである。
ステータス23104は、各論理ページが、「使用中」「未使用」「使用不可」のいずれであるかを示すフィールドである。「使用中」とは、当該の論理ページにデータが格納されていること、すなわち当該の論理ページに対応するLBA空間がエントリーに割り当たっていることを示している。一方、「未使用」とは当該の論理ページにデータが格納されていないこと、すなわち当該の論理ページに対応するLBA空間がエントリーに割り当てられていないことを示している。「使用不可」とは、使用可能論理容量が減少することにより、当該の論理ページが使用不可論理空間内に属していることを示している。すなわち、当該の論理ページに対応するLBA空間がストレージコントローラにも使用不可として認識されていることを示している。
ブロック#23105、ページ#23106、CW#位置23107は、論理ページに対応する物理アドレス空間の情報を示している。本実施例ではSSDがデータ圧縮機能を有するため、論理ページのデータが圧縮され、物理ページの特定のCWに格納されるというケースが発生する。そこで、CW位置23107は、データが格納されているCWに対して「1」を、データが格納されていないCWに対して「0」を設定する。反対に、2ページ以上にわたる論理アドレス空間が、1ページの物理ページにマッピングされることもあり得る。
物理使用量23108は、当該の論理ページに対応するデータが物理ページに格納された際の、データ量を表す。例えば、論理ページ#0では、16KBの論理ページに対応するデータが3KBに圧縮され、ブロック#0、ページ#0のCW#1〜3に格納されていることを示している。
通知要否フラグ23109は、非同期処理での圧縮により、物理容量が変化したときに、その結果をストレージコントローラに伝えているか否かを示すフィールドである。伝える必要がある場合は「ON」が、すでに伝えている場合や、容量の変化がない場合などは、伝える必要がないため「OFF」がそれぞれ格納される。なお、フィールドが「ON」の物については、後述の定期監視処理での伝達の対象となる。
ここで、SSD内部でのブロックおよびページ管理について説明する。SSDが使用するFMの読み書き単位はページである。さらにFMは同一のページに対して上書きができない追記型デバイスであり、データは空きページにライトしなければならない、という特性を有している。
そのためSSDは、あるページに対してデータの更新(上書き)が発生した際には、最新のデータを「有効データ」、更新により最新では無くなったデータを「無効データ」として管理する。上述のとおり、SSDは更新データを格納するための、空きページを常に必要とする。この空きページは、ブロックを消去することで生成される。ただし、ブロックを消去するためには、消去対象ブロック内の全ページが無効化している必要がある。そのため、有効ページが存在する場合には、そのページを無効化するための、別ブロックへのコピーがSSD内部で発生する。この、空きページ生成のための、有効データのコピーやブロック消去を含めた一連の処理が、リクラメーション処理である。
上述したような更新データの追記や、リクラメーション処理のために、SSDは最新データ(ユーザデータ)を格納する領域であるユーザデータ領域に加えて、更新データを追記する領域(更新領域)を有する。ユーザデータ領域と更新領域は物理的に区別されていてもよい。また、ユーザデータ領域と更新領域それぞれに所定の容量が確保されていれば、物理的に区別されていなくてもよい。本実施例では、物理空間とは、ユーザデータを格納する領域に基づく空間とする。
図19は、ブロック管理テーブル23200の構成例を示す図である。
ブロック管理テーブル23200は、ブロック#23201、ページ#23202、ページステータス23203、CW#23204、CWステータス23205、論理ページ#23206を有する。
ブロック#23201およびページ#23202は、ブロックおよびページの識別子である。ページステータス23203は当該のページが「使用中(有効)」「使用中(無効)」「空」のいずれの状態にあるかを示すフィールドである。
すなわち、ページステータス23203において、「使用中(有効)」とは、当該のページに有効なデータが格納されていることを示しており、例えばリクラメーションでのコピー対象となる。「使用中(無効)」とは、当該データに無効データが格納されていることを示しており、データ消去の対象となる。また、「空」とは、データは消去済であるが、当該のページが未使用であることを示している。
CW#23204およびCWステータス23205は、当該のCWが「有効」「無効」「空」いずれの状態にあるかを管理するものである。「有効」とは、当該のCWに有効データが格納されていることを示している。「無効」とは、当該のCWには無効なデータが格納されていることを示している。「空」とは、当該のCWが未使用の状態であることを示している。
論理ページ#23206は、当該のCWのステータスが「有効」である場合、そのCWがどの論理ページに対応しているかを示す。なお、当該のCWのステータスが「無効」である場合、「N/a」が格納される。
CWステータス23205が「有効」のCWが、一つ以上存在するページのページステータス23203は「使用中(有効)」となる。一方、ページステータス23203が「使用中(無効)」となっているページの、CWステータス23205はすべて「無効」となる。また、ページステータス23203が「空」となっているページの、CWステータス23205はすべて「空」となる。
図20は、容量管理テーブル23300の構成例を示す図である。
容量管理テーブル23330は、最大論理容量23301、使用可能論理容量23302、使用中論理容量23303、空き論理容量23304、最大物理容量23305、使用中物理容量23306、空き物理容量23307、最大圧縮率23308、平均圧縮率23309を有する。なお本テーブルは、ディスク管理テーブル13100の、ディスク種別13102から平均圧縮率13111までと同様の構成を取っており、後述の内部情報取得処理(図26)において、ストレージコントローラは、SSDから取得した本テーブルの数値を、ディスク管理テーブル13100に反映する。
最大論理容量23301は、当該のSSDが外部装置に提供可能な論理容量の上限値であり、本数値は最大論理容量13103に対応する。
使用可能論理容量23302は、外部装置に提供可能な論理容量であり、使用可能論理容量13104に対応する。本数値は、ステータス23104が「使用中」と「未使用」である論理ページの総容量に等しい。
使用中論理容量23303は、外部装置により使用されている論理容量であり、使用中論理容量13105に対応する。本数値は、ステータス23104が「使用中」である論理ページの総容量に等しい。
空き論理容量23304は、外部装置が使用していない論理容量であり、空き論理容量13106に対応する。本数値は、ステータス23104が「未使用」である論理ページの総容量に等しい。
最大物理容量23306は、SSDが搭載する物理記憶媒体の合計値であり、最大物理容量13107に対応する。なお、SSDが物理的な記憶領域として更新領域を有する場合は、最大物理容量23306は、更新領域を除いたユーザデータを格納するために使用される領域の容量とする。
使用中物理容量23306は、圧縮データの格納量を示しており、使用中物理容量13108に対応する。本数値は、CWステータス23205が「有効」であるCWの総容量に等しい。もしくは、ページステータス23203が「使用中(有効)」「使用中(無効)」となっているページの総容量としても良い。
空き物理容量23307は、データが格納されていない物理空間の容量であり、空き物理容量13109に対応する。本数値は、CWステータス23205が「空」であるCWの総容量に等しい。もしくは、ページステータス23203が「空」となっているページの総容量としても良い。
最大圧縮率23308は、当該のSSDが提供することができる、圧縮率の最大値であり、最大圧縮率13110に対応する。
平均圧縮率23309は、SSD内のデータの圧縮率の平均値であり、平均圧縮率13111に対応する。本数値は、使用中物理容量23306÷使用中論理容量23303により算出される。
なお、物理空間には、外部装置から格納されたデータの他に、SSDが自身で使用する管理情報等も格納してよい。その管理情報とは、例えば、論物変換TBL23100やブロック管理TBL23200などである。
図21は、ストレージコントローラ100のタスクの概要を示すシーケンス図である。 ストレージコントローラ100は、ホスト I/F101に対して、ホスト計算機30から送信されたI/O要求の有無をチェックする(S100)。ホスト計算機30からのI/O要求がある場合(S100:Yes)は、その処理内容がリードコマンドであるか、ライトコマンドであるかをチェックする(S101)。処理内容がリードコマンドである場合(S101:リードコマンド)は、データリード処理を実行する(S102)(詳細は図25で詳述)。その後、S104へと進む。一方、S101の判定がライトコマンドである場合(S101:ライトコマンド)は、データライトコマンド処理を実行し(S103)(詳細は図22で詳述)、その後、S104へと進む。
なお、S100の判定にてI/O要求無しの場合(S100:No)は、そのままS104の判定へと進む。
S104では、前回の判定から一定の期間が経過したかを判断する。その判断が肯定的である場合(S104:Yes)、SSDから圧縮率や容量の情報等を取得する、定期監視処理を実行する(S105)(図26で詳述)。その後、SSDの物理容量のばらつきを解消するための処理である、容量平準化処理を実行し(S106)(図27で詳述)、S107へと進む。一方、S104の判断が否定的でる場合は(S104:No)、そのままS107へと進む。
S107では、ストレージコントローラ100は装置の停止が指示されているかを判断し、その判定が肯定的である場合(S107:Yes)は装置の停止処理を行う。一方、S107の判定結果が否定的である場合(S107:No)は、I/O要求の有無を確認するS100へと戻る。
図22は、ストレージコントローラ100のデータライト処理であるS103の詳細を示すシーケンス図である。
ストレージコントローラ100はホスト計算機30から送付されたライトコマンドの内容を解析する(S500)。次に、ストレージコントローラは、そのコマンドに含まれているアドレス情報を元に、ライト先の仮想ボリュームのアドレスが含まれる範囲にエクステントが割当て済みであるかを、仮想ボリューム管理テーブル13500やエクステント管理テーブル13400の情報などを参照することで判断する(S501)。S501の判断が肯定的である場合(S501:Yes)、ストレージコントローラは割当て済みエクステントに対する上書き更新処理であると判断し、上書きの可否を判断する(S502)。S502では、上書きデータが格納されるSSD(以下、ライト先SSD)をエクステント管理テーブル等を参照することで特定し、ライト先SSDの物理容量に十分な空きがあるかをディスク管理テーブルの空き物理容量13109を参照することで判断する。具体的には、ライト先SSDに更新データのサイズよりも大きな空き容量があるかをチェックする。なぜなら、本実施例におけるSSDは圧縮機能と、下位レベルの容量仮想化機能を有しているため、次に述べる問題が発生し得る。例えば、空き物理容量が枯渇している状態でデータの更新要求を受けたとする。このとき、更新対象のデータは既に圧縮されている状態とする。ここでもし、更新対象データの圧縮率が悪化(圧縮されにくいデータパターンとなった)してしまった場合、更新前と後とでデータを格納するために必要な物理容量が変化(増大)する。その増大幅の最悪値は、データ圧縮が全く効かない、すなわち非圧縮状態のデータをライトするケースである。ゆえに、ライト先のSSDには、非圧縮状態のデータを格納できるだけの、物理容量が最低限確保できない限り、たとえデータ更新(上書き)処理であっても受け付けることは出来ない。そこで、S503の判定結果が否定的、すなわち、ライト先のSSDに空きの物理容量が十分にない場合(S503:No)、ストレージコントローラはホストに処理の失敗を通知し一連の処理を終了する(S510)。
一方、S503の判定結果が肯定的である場合(S503:Yes)、ストレージコントローラはデータの上書きが可能であると判断し、キャッシュメモリ716のデータキャッシュ領域24000にホスト計算機30から送付されたデータを一時的に格納し(S504)、ホスト計算機30に処理の正常終了を通知する(S508)。その後、ストレージコントローラ100は、任意のタイミングでライト先のSSDへとデータのライト処理を実行し(S509)(図24で詳述)、一連の処理を終了する。なお、ホストへのライト終了報告(S508)は、SSDライト処理(S509)の後に実行されても良い。
一方、S501の判定が否定的である場合(S501:No)、ストレージコントローラは仮想ボリュームに対してエクステントが未割当て領域に対する、データライト処理であると判断し、エクステントの新規割当て処理を実行する(S505)(図23で詳述)。S505のエクステント割当処理が成功したか否かを判断し、処理が成功した場合は(S506:Yes)、キャッシュメモリ716へのデータの格納処理であるS504へと進む。一方、S506の判断結果が否定的である場合(S506:No)、ストレージコントローラはホストに処理の失敗を通知するとともに、プールボリューム500の残量が不足していると判断し、ユーザにホスト計算機30にインストールされている制御ソフトを介して、プールボリュームの拡張(ディスクの増設)を要求する。その後、一連の処理を終了する。
図23は、エクステント割当て処理S505の詳細を示すシーケンスである。
ストレージコントローラは処理対象のRGを選択する(S300)。次に各SSDの空き物理容量が、エクステント作成に必要な容量よりも大きいかを判断する(S301)。その結果が肯定的である場合は(S301:Yes)、エクステント管理テーブル13400を参照し、未割当て状態のエクステントを選択する(S305)。次に、各SSDから未割当て状態の先頭エントリーを選択し、選択中のエクステントに割り当てる。具体的には、エントリー管理テーブル13600において、ステータス13606が「未割当て(使用可)」となっているエントリーのなかで、エントリー#13602の数値がもっとも若いエントリーである(S306)。つぎに選択中のエクステントを、仮想エクステントに割り当てる(S307)。その後、処理の成功をリターンする(S308)。
一方、S301の判断の結果が否定的である場合(S301:No)は、すべてのRGを選択したかを判断する(S302)。その結果が否定的である場合は(S302:No)、次のRGを選択し(S303)、S301に戻る。一方、S302の判断の結果が肯定的である場合は(S302:Yes)、処理の失敗をリターンする(S304)。
図24は、SSDライト処理S509の詳細を示すシーケンスである。
ストレージコントローラは、対象のSSDにデータのライト要求コマンドを送信する(S400)。ライト要求コマンドを受け取ったSSDコントローラは、圧縮モードを参照し(S401)、同期圧縮モードである場合はデータを圧縮し(S402)、圧縮データをFMに格納する(S403)。一方、S401にて非同期圧縮モードであった場合(S401:非同期)は、データ圧縮等は行わず、受領したデータをそのままFMに格納する(S403)。なお、SSDの圧縮モードは、ストレージ装置がSSDを起動する際などに、事前に設定しておいてもよいし、ライト要求コマンドの中に同期か非同期かを通知するフィールドを設け、ライト要求コマンドごとに、モードを指定しても良い。FMにデータを格納したSSDコントローラは、論物変換テーブルやブロック管理テーブル、容量管理テーブル等の各種テーブルを更新する(S404)。その後、終了応答ともに、FMにライトしたデータ量(FMライト量)をストレージコントローラに通知する(S405)。FMライト量の通知方法は、応答コマンドの一部に通知用のフィールドを設けるなどである。もしくは、専用の別コマンドを作成し、送付してもよい。通知する内容は、ライト要求コマンドとして受け取ったデータ量(ライト依頼量)と、実際にFMにライトしたデータ量(FMライト量)である。例えば、同期圧縮モードである場合は、FMライト量はライト依頼量と、同じかそれ以下の値になるはずである。一方、非同期圧縮モードである場合は、FMライト量とライト依頼量は同じ値が返却される。
ストレージコントローラは、SSDコントローラからの応答を受領し(S406)、その後、自身のテーブルを更新する(S407)。具体的には、エントリー管理テーブル13600の更新と、ディスク管理テーブル13100の更新である。エントリー管理テーブル13600の更新では、物理使用量13808を更新する。これにより、ストレージコントローラは各エントリーの圧縮後のデータサイズを管理することが出来る。なお、非同期圧縮モードである場合は、後述の定期監視処理により、圧縮状況に関する情報を取得する。
次に、ディスク管理テーブル13100の更新では、SSDより通知されたFMライト量を元に、使用中物理容量13108(現在の値にFMライト量を足す)や空き物理容量13109(現在の値からFMライト量を引く)などの各種物理容量の更新や、平均圧縮率13111を更新し、空き論理容量13106を更新する(空き物理容量13109÷最大圧縮率13110)、使用中中論理容量13105を更新する(現在の値に、ライト依頼量を足す)、使用可能論理容量を更新する(使用中論理容量13105+空き論理容量13106)などの各種論理容量の更新を行う。この更新処理により、ストレージコントローラはSSDの各種容量の最新値を推測により把握することが出来る。ただしディスク管理テーブル13100の値は、最終的には、後述の定期監視処理によりSSDより取得された最新値に更新される。
図25は、ホスト計算機30からリード要求が送信されそのリード要求の処理が完了するまでの処理の流れの一例を示すシーケンス図である。
ホスト計算機30は、ストレージコントローラ100に対して、データのリード要求を送信する(S200)。
ストレージコントローラ100は、データのリード要求を受信し、そのリード要求に従うリード元範囲(仮想ボリュームのアドレス範囲)に割り当てられているエクステントの基になっているSSDを特定し、特定されたSSDのSSDコントローラ710に対して、データのリード要求を送信する(ステージング要求とも言う)(S201)。
SSDコントローラ710は、データのリード要求を受信し、論物変換TBL23100を基に、リード要求に従う論理アドレス範囲に対応する物理アドレス範囲を特定し、その物理アドレス範囲(1以上のページ)からデータを読み出す(S202)。つぎにデータの伸長を行い(S203)、伸長したデータをストレージコントローラ100に送信する(S204)。
ストレージコントローラ100は、S201で送信したリード要求の応答として、SSDコントローラ710からデータを受信し、受信したデータをキャッシュメモリ103に格納(ステージング)し(S206)、ストレージコントローラ100は、S206で格納されたデータをホスト計算機30に送信する(S207)。
ホスト計算機30は、S200で送信したリード要求の応答として、ストレージコントローラ100からデータを受信し、一連の処理を終了する(S208)。
図26は、定期監視処理S105の詳細を示すシーケンスである。
ストレージコントローラ100は対象のSSDコントローラに対して、内部情報の通知を依頼する(S600)。内部情報とは、論理使用量や物理使用量など、容量管理テーブル233300に格納されている各種の情報である。要求を受領したSSDコントローラは、その応答として容量管理テーブル23300の各種情報を返却する。また、非同期圧縮モードでの圧縮など、例えばS405で示したライト応答後に圧縮処理により物理サイズが変化したものについて、そのLBA範囲と圧縮後のデータサイズとを返却してもよい。より具体的には、論物変換テーブル23100の通知要否フラグ23109がONとなっているものの、LBA範囲と物理使用量23108である。
S601での応答を受領したストレージコントローラは、その情報を元に各種テーブルを更新する(S602)。より具体的には、ディスク管理テーブル13100や、エントリー管理テーブル13600の更新である。
ストレージコントローラ100は、内部情報を受信すると、エントリー管理TBL13600の物理使用量を更新する。SSD内では物理使用量は論物変換TBL23100のLBA範囲(例えば16KB)毎に管理されているので、このLBA範囲毎に内部情報が通知される。ストレージコントローラは、各エントリーを構成するLBA範囲(例えば12MB)分の合計値を物理使用量13608として更新する。そして、ストレージコントローラ100は、エントリー管理TBL13600より、ディスク毎に物理使用量の合計を算出し、ディスク管理TBL13100の使用中物理容量13108を更新する。また、各ディスクの最大物理容量13107と使用中物理容量13108の差から空き物理容量13109を算出する。空き論理容量13106は、空き物理容量13109を最大圧縮率13110で割った値を算出して更新する。空き論理容量13106は、エントリー管理TBL13600のステータスが「未割当て(使用可)」のエントリーのサイズの合計から算出しても良い。
また、使用中論理容量13105と、使用中物理容量13108の比率から、平均圧縮率13111を算出し、TBLの該当箇所を更新する。なお、使用中論理容量13105は、エントリー管理TBL13600のステータス13606が「割当て済み」のエントリーのサイズの合計値である。使用中論理容量13105は、例えば、エントリーがエクステントに割当てられることに応じて更新される。
図27は、容量平準化処理S106の詳細を示すシーケンスである。
ストレージコントローラは処理対象のRGを選択する(S700)。そのRGの中でディスク毎の残物理容量が不均一であるかを判断する(S701)。具体的には、RG管理テーブル13200とディスク管理テーブル13100とを参照し、(1)当該のRGを構成するSSDの、空き物理容量13109の最大値と最小値の差が閾値を超過している、(2)当該RG内での空き物理容量13109の最大値と、当該RGの空き物理容量13109の平均値との差が閾値を超過している、(3)当該RGの空き物理容量13109の平均値と、当該RG内での空き物理容量13109の最小値との差が閾値を超過しているなどである。また、(4)特定ディスクの空き物理容量13109が極端に少ない(ある閾値より小さい)などであっても良い。なお、上記判断材料に、物理容量ではなく論理容量を用いても良い。さらには、上記判定に用いる閾値や数値は、ストレージ装置の管理者やユーザが、運用用途に応じて任意の値に変更しても良い。変更は、ホスト計算機にインストールされた制御用ソフトウェアを介して、実行することが出来る。
S701の判定の結果が、肯定的である場合は(S701:Yes)、ストレージコントローラは当該RGのディスクの物理使用量がばらついているため、容量の平準化処理が必要であると判断し、エントリー単位の容量平準化処理を実行する(S702)(図28から図30で詳述)。その後、S703へとすすみ、当該RGの空き物理容量の平均値が小さいかを判断する。具体的には、RG管理テーブル13200とディスク管理テーブル13100とを参照し、当該RGの空き物理容量13109の平均値が閾値を下回っているかを判断する(S703)。なお、S703において、判断材料に物理容量ではなく論理容量を用いてもよい。
S703の結果が肯定的である場合(S703:Yes)は、ストレージコントローラは当該RGの物理容量が枯渇する可能性があると判断し、RG間の容量平準化処理を行うための判定であるS704へと進む。S704では、残物理容量が十分にある別のRGが存在するか否かを判断する。具体的には、RG管理テーブル13200とディスク管理テーブル13100とを参照し、空き物理容量13109の平均値が判定閾値を上回っているものが存在するかを判断する(S704)。S704の判断が肯定的である場合(S704:Yes)は、RG間の容量平準化を実行可能であると判断し、エクステント単位での容量平準化処理を実行する(S705)(図30から31で詳述)。エクステント単位の容量平準化処理を実施することで、物理容量枯渇の危険性のあるRGの、物理容量が増大すする。これにより、物理容量枯渇によるI/O処理の停止を回避することが出来る。 その後、全RGの処理が終了したかを判断し(S706)、その結果が否定的である場合(S706:No)は、次の処理対象RGを選択し(S707)、S701の判定処理へと戻る。
一方、S701の判断の結果が否定的である場合(S701:No)、ストレージコントローラはS703の処理へと進む。
また、S703の判断が否定的である場合(S703:No)や、S704の判断の結果が否定的である場合(S704:No)は、ストレージコントローラはRG間の容量平準化処理を実行できないと判断し、S706へと進む。
また、S706の判断の結果が肯定的である場合(S707:Yes)は、処理を終了する。
なお、S703やS704において、判断のための閾値は、ユーザや管理者が運用用途に応じて任意の値に変更しても良い。さらには、ストレージ装置は、ホストにインストールされた制御用ソフトウェアを介して、ユーザや管理者に、ディスク管理テーブル13100やRG管理TBL13200の内容を表示し、その結果をもとにユーザや管理者が平準化対象を選択してもよい。
SSD空き論理容量が増加した場合は、エントリー管理TBL13600のステータス13606の「使用不可」を「未割当て(使用可)」に変更する。この管理により、ストレージコントローラ100はストレージ装置として使用可能な論理空間を拡大する。
図28は、エントリー単位の容量平準化処理の一例である、RG内データ移動の概要を示す図である。図28の物理空間における斜線部分はデータ格納済みの領域を示し、空白部分は空き領域を示す。
SSD310、SSD320、SSD330がRG300を構成している。今、SSD310の空き物理容量は他のSSDに比べて極端に少ない。すなわち、当該のRGにおいて、空き物理容量が不均一な状態となっている。それに伴い、図示はしていないが、空き論理容量も不均一な状態となっている。
今、SSD310が提供する論理空間内にエントリー(A)811が作成されており、そのデータであるD(A)がSSD310内に圧縮データ810として格納されている。また、SSD330が提供する論理空間内にエントリー(B)813が作成されており、そのデータであるD(B)がSSD330内に圧縮データ812として格納されている。なお、エントリー(A)811とエントリー(B)813のサイズは同一であるが、圧縮データ810のサイズは圧縮データ812よりも大きい。
すなわち、空き物理容量の少ないSSD310に、物理使用量の多い圧縮データ810が格納され、空き物理容量の多いSSD330に、物理使用量の少ない圧縮データ812が格納されている。
そこで、ストレージコントローラは、SSD310とSSD330の間で、圧縮データ810と圧縮データ812を交換する。これにより、空き物理容量の少ないSSD310に、物理使用量の少ない圧縮データ812が格納されることで、SSD310の空き物理容量は拡大する。一方で、空き物理容量の多いSSD330に、物理使用量の多い圧縮データ810が格納されることで、SSD330の空き物理容量は縮小する。以上の処理により、SSD間の空き物理容量の平準化を実現する。
図29は、エントリー単位の容量平準化処理の一例である、RG間データ移動の概要を示す図である。
SSD310、SSD320、SSD330がRG300を構成している。今、SSD310の空き物理容量は他のSSDに比べて極端に少ない。すなわち、当該のRGにおいて、空き物理容量が不均一な状態となっている。それに伴い、図示はしていないが、空き論理容量も不均一な状態となっている。
一方、SSD410、SSD420、SSD430がRG400を構成している。
今、SSD310が提供する論理空間内にエントリー(A)821が作成されており、そのデータであるD(A)がSSD310内に圧縮データ820として格納されている。また、SSD420が提供する論理空間内にエントリー(B)823が作成されており、そのデータであるD(B)がSSD420内に圧縮データ822として格納されている。なお、エントリー(A)821とエントリー(B)823のサイズは同一であるが、圧縮データ820のサイズは圧縮データ822よりも大きい。
すなわち、空き物理容量の少ないSSD310に、物理使用量の多い圧縮データ820が格納され、空き物理容量の多いSSD420に、物理使用量の少ない圧縮データ822が格納されている。
そこで、ストレージコントローラは、SSD310とSSD420の間で、圧縮データ820と圧縮データ822を交換する。これにより、空き物理容量の少ないSSD420に、物理使用量の少ない圧縮データ822が格納されることで、SSD310の空き物理容量は拡大する。一方で、空き物理容量の多いSSD330に、物理使用量の多い圧縮データ820が格納されることで、SSD420の空き物理容量は縮小する。
以上の処理により、RG300のSSD間の空き物理容量の平準化を実現する。
図30は、エントリー単位の容量平準化処理S702の詳細を示すシーケンスである。エントリー単位の容量平準化処理における、データの移動単位はエントリーである。
ストレージコントローラは、空き物理容量が少ないSSDを選択する。空き物理容量が少ないSSDとは、当該RGのなかで、例えば空き物理容量13109の値が最小のSSDである。次に、エントリー管理テーブル13600を参照し、当該のSSDの中から物理使用量13608が大きいエントリー(A)を選択する(S800)。S800では、使用中物理容量13108が大きいSSDを選択してもよい。
次に、ストレージコントローラは、空き物理容量が多いSSDを選択し、そのSSDの中で、物理使用量が小さいエントリー(B)を選択する(S801)。S801では、使用中物理容量13109が小さいSSDを選択してもよい。
エントリー(A)とエントリー(B)の物理使用量であるD(A)とD(B)とを比較し、D(A)がD(B)よりも大きいか否かを判断する(S802)。その結果が肯定的である場合(S802:Yes)、ストレージコントローラは、エントリー(A)とエントリー(B)とが別のストライプに属しているかを、エクステント管理テーブル13400を元に判断する(S803)。その結果が肯定的である場合(S803:Yes)、エントリー(A)とエントリー(B)のデータの交換と(S804)それに伴う各種テーブルの更新を行い(S806)、一連の処理を終了する。テーブルの更新とは、エクステント管理TBL13400におけるエクステントへのエントリーの割当ての更新や、エントリー管理TBL13600におけるエントリー毎のステータス13606、物理使用量13608などの更新である。SSD空き論理容量が増加した場合は、エントリー管理TBL13600のステータス13606の「使用不可」を「未割当て(使用可)」に変更する。この管理により、ストレージコントローラ100はストレージ装置として使用可能な論理空間を拡大する。
この容量平準化処理により、当該RG内SSDの空き物理容量が平準化される。これにともない、RG内SSDの空き論理容量も平準化されるため、結果としてRG内のエクステント作成可能な容量が拡大する。なお、平準化処理においては、厳密にRG内のSSD間の空き物理容量を等しくする必要はなく、SSD間の空き物理容量の差が小さくなればよい。空き物理容量の差が小さくなれば、空き論理容量の差も小さくなり、作成可能なエクステントの数を増加させることができる。
一方、S802の判断の結果が否定的である場合(S802:No)、ストレージコントローラは、データの交換を中止する(S805)。これは、データを交換しても空き物理容量が小さいSSDの空き物理容量を拡大できないためである。
また、S803の判断の結果が否定的である場合(S803:No)は、ストレージコントローラは、データの移動によりRAIDの冗長度が低下すると判断し、データの交換を中止する。
なお、RG内のSSD間の空き物理容量の差を小さくするためには、S802及びS803は必ずしも実施しなくてもよい。また、S806でTBLを更新しなくても、RG内のSSD間の空き物理容量の差を小さくすることは達成される。
図31は、エクステント単位の容量平準化処理の一例である、RG間データ移動の概要を示す図である。
SSD310、SSD320、SSD330がRG300を構成している。さらに、SSD310、SSD320、SSD330の空き物理容量は少なく、枯渇の危険性がある。
一方、SSD410、SSD420、SSD430がRG400を構成している。さらに、SSD410、SSD420、SSD430の空き物理容量は十分多い。
すなわち、システム内に物理容量の枯渇のおそれのあるRG300と、物理容量に余裕のあるRG400とが存在する。
今、RG300内にエクステント(A)843が構築されている。さらに、エクステント(A)843は、SSD310が提供する論理空間内に作成されたエントリー832、SSD320が提供する論理空間内に作成されたエントリー834、SSD330が提供する論理空間内に作成されたエントリー835により構築されている。さらに、エントリー832に対応する圧縮データ831がSSD310に、エントリー834に対応する圧縮データ833がSSD320に、エントリー836に対応する圧縮データ835がSSD330にそれぞれ格納されている。
一方、RG400内にはエクステント(B)844が構築されている。さらに、エクステント(B)844は、SSD410が提供する論理空間内に作成されたエントリー838、SSD420が提供する論理空間内に作成されたエントリー840、SSD430が提供する論理空間内に作成されたエントリー842により構築されている。さらに、エントリー838に対応する圧縮データ837がSSD410に、エントリー840に対応する圧縮データ839がSSD420に、エントリー842に対応する圧縮データ841がSSD430にそれぞれ格納されている。
また、圧縮データ831、圧縮データ833、圧縮データ835のサイズは、圧縮データ837、圧縮データ839、圧縮データ841よりも大きい。すなわち、空き容量の少ないRG300に物理使用量の多いエクステント(A)843が格納され、空き容量の多いRG400に物理使用量の少ないエクステント(B)844が格納されている。
そこで、ストレージコントローラは、RG300とRG400との間で、エクステント(A)とエクステント(B)のデータをそれぞれ交換する。これにより、SSD310には圧縮データ837が、SSD320には圧縮データ839が、SSD330には圧縮データ841がそれぞれ格納される。一方のSSD410には圧縮データ831が、SSD420には圧縮データ833が、SSD430には圧縮データ835がそれぞれ格納される。このように、空き物理容量の少ないRG300の各SSDに、今よりも物理使用量の少ない圧縮データが格納されるで、RG300を構成する全SSDの空き物理容量の拡大を実現する。
これにより、RAIDグループにおける物理容量の枯渇によるI/O処理の停止を回避できるため、ストレージ装置は、安定して稼働し続けることが可能となる。
図32は、エクステント単位の容量平準化処理S705の詳細を示すシーケンスである。エクステント単位の容量平準化処理における、データの移動単位はエクステントである。
ストレージコントローラは、当該のRGの中で物理使用量の大きいエクステント(A)を選択する(S900)。次に、残物理容量の平均値が大きいRGのなかで、物理使用量の小さいエクステント(B)を選択する(S901)。
次に、選択したエクステント(A)に格納されたデータの物理使用量が(B)に格納されたデータの物理使用量よりも大きいかを判断する(S902)。その結果が肯定的である場合は(S902:Yes)、データの交換を実施し(S903)、その後、各種テーブルを更新し(S903)、一連の処理を終了する。
この容量平準化処理により、当該RGの全SSDの空き物理容量が拡大される。これにともない、SSDの空き論理容量も拡大するため、結果としてRG内のエクステント作成可能な容量が拡大する。
一方、S802の判断の結果が否定的である場合(S802:No)、ストレージコントローラは、データの交換を中止する(S805)。
一方、S902の判断の結果が否定的である場合(S902:No)、データの交換を中止する(S904)。
このように、エクステント単位の容量平準化処理S705では、図27において事前にエントリー単位の容量平準化処理であるS702を実行するため、当該RGのSSDの空き物理容量は平準化済であることを前提としていた。ただし、図27において、エクステント単位の容量平準化処理であるS704と、エントリー単位の容量平準化処理であるS702とは実行順序が入れ替わっても良い。
さらには、図33に示すようにエクステント単位の容量平準化処理で、エントリー単位の容量平準化処理の効果も併せて実現できる場合は、エクステント単位の容量平準化処理の実行のみを行ってもよい。
図33は、エクステント単位の容量平準化処理の別の一例の概要を示す図である。
SSD310、SSD320、SSD330がRG300を構成している。さらに、SSD310、SSD320、SSD330の空き物理容量は、不均一な状態となっており、その形はSSD320のみが少ないという、谷型である。
一方、SSD410、SSD420、SSD430がRG400を構成している。さらに、SSD410、SSD420、SSD430の空き物理容量は、不均一な状態となっており、その形はSSD420のみが多いという、山型である。
すなわち、RG300とRG400は、互いに空き物理容量が不均一な状態にあるが、その傾向は、RG300は山形、RG400は谷型と相反する関係にある。
つぎにRG300内にはエクステント(A)863が構築されている。エクステント(A)863は、SSD310が提供する論理空間内に作成されたエントリー852、SSD320が提供する論理空間内に作成されたエントリー854、SSD330が提供する論理空間内に作成されたエントリー856により構築されている。さらに、エントリー852に対応する圧縮データ851がSSD310に、エントリー854に対応する圧縮データ853がSSD320に、エントリー856に対応する圧縮データ855がSSD330にそれぞれ格納されている。
RG300のなかで、空き物理容量の多いSSD310に、物理使用量の少ない圧縮データ851が格納されており、空き物理容量の少ないSSD320に、物理使用量の多い圧縮データ853が格納されており、空き物理容量の多いSSD330に、物理使用量の少ない圧縮データ855が格納されている。
すなわち、エクステント(A)863に格納された圧縮データは、圧縮データ853が圧縮データ851や圧縮データ855に比べて大きいという、山型である。
一方、RG400内にはエクステント(B)864が構築されている。エクステント(B)864は、SSD410が提供する論理空間内に作成されたエントリー858、SSD420が提供する論理空間内に作成されたエントリー860、SSD430が提供する論理空間内に作成されたエントリー862により構築されている。さらに、エントリー858に対応する圧縮データ857がSSD410に、エントリー860に対応する圧縮データ859がSSD420に、エントリー862に対応する圧縮データ861がSSD430にそれぞれ格納されている。
RG400のなかで、空き物理容量の少ないSSD410に、物理使用量の多い圧縮データ857が格納されており、空き物理容量の多いSSD420に、物理使用量の少ない圧縮データ859が格納されており、空き物理容量の少ないSSD430に、物理使用量の多い圧縮データ861が格納されている。
すなわち、エクステント(B)864に格納された圧縮データは、圧縮データ859が圧縮データ857や圧縮データ861に比べて小さいという、谷型である。
そこでストレージコントローラは、両RGの不均一状態を解消するために、エクステント(A)863とエクステント(B)864のデータ移動を行う。これにより、空き物理容量の多いSSD310に、物理使用量の多い圧縮データ857が格納されるため、SSD310の空き物理容量は減少する。空き物理容量の少ないSSD320に、物理使用量の少ない圧縮データ859が格納されるため、SSD320の空き物理容量は拡大する。空き物理容量の多いSSD330に、物理使用量の多い圧縮データ861が格納されるため、SSD330の空き物理容量は減少する。すなわち、RG300では、各SSDの空き物理容量が平準化される効果を得ることが出来る。
一方、RG400では、空き物理容量の少ないSSD410に、物理使用量の少ない圧縮データ851が格納されるため、SSD410の空き物理容量は拡大する。空き物理容量の多いSSD420に、物理使用量の多い圧縮データ853が格納されるため、SSD420の空き物理容量は減少する。空き物理容量の少ないSSD430に、物理使用量の少ない圧縮データ855が格納されるため、SSD430の空き物理容量は拡大する。すなわち、RG400においてもRG300と同様に、各SSDの空き物理容量が平準化される効果を得ることが出来る。
以上をまとめると、ストレージコントローラは以下の条件を満たす様に、容量平準化処理を行えばよい。
・空き物理容量の多いSSDに、物理使用量の多いデータを格納する。
・空き物理容量の少ないSSDに、物理使用量の少ないデータを格納する。
これにより、RGを構成する各SSDの空き物理容量を平準化することができる。さらには、空き物理容量が平準化されることで、空き論理容量も平準化される。その結果として、RG内のエクステント作成可能空間を拡大もしくは最大化することができる。
なお、本実施例では、不均一状態の検出および、平準化による緩和を判断するための判断材料として、空きの物理容量や空きの論理容量を使用したが、使用中の物理容量や使用中の論理容量を使用しても良い。
また、SSD内のFMに外部装置からライトされたデータに加え、SSD自身の内部情報を格納したことにより、空き論理容量に不均一状態が生じたときにおいても、エントリーのデータ移動による、空き論理容量の平準化を適用してもよい。
実施例1では、データの圧縮具合により、SSDが外部装置に提供可能な論理アドレス空間が変化していた。具体的には、実施例1では、SSDの最大論理容量が800GB、使用可能論理容量が650GBであるときに、使用可能な論理アドレス空間は、LBA0(すなわち0GB)から、650GBに相当するLBA範囲までとなっていた(図1)。補足すると、ストレージコントローラは、ある時点においてSSDが提供する論理アドレス空間の最大値が、その時点におけるSSDの使用可能な論理容量であると認識できた。 これに対して実施例2のSSDは、使用可能な論理容量が変化する。具体的には、最大論理容量が800GBであるときに、使用可能な論理空間は、常に0GB〜800GBのアドレス範囲のままとなるSSDである。詳細を図34にて説明する。
図34は、実施例2におけるSSDのアドレス空間の概要を示す図である。
実施例1との違いは、最大論理容量30001と、使用可能論理空間30002のサイズはともに800GBである点と、使用可能論理空間30002のサイズが、データの圧縮具合によらず固定である点である。これに伴い、実施例1のSSDには存在していた、使用不可論理空間30003は存在しない。さらに、ストレージコントローラが、800GBの論理アドレス空間を自由に使用することが出来るため、使用中論理空間30005a、30005b、30005cと複数の使用中論理空間が存在する。また、使用中論理空間以外のアドレス空間は、空き論理空間30004a、30004b、30004cのように、空き論理空間としてストレージコントローラに提供されている。ただし、ストレージコントローラには、使用可能論理容量が650GBであることも別途通知する。そのため、ストレージコントローラが、SSDの論理使用量が650GBを超過しないように制御をする。
その他、実施例1との違いを述べる。実施例2のSSDは使用不可な論理容量が存在しないため、エントリー管理テーブル13600において、ステータス13606の値が「割当て済み」と「未割当て(使用可)」のみとなる。さらに、論物変換テーブル23100においても、ステータス23104の値が「使用中」と「未使用」のみとなる。
図35は、実施例2における、エクステント割当て処理S505の詳細を示すシーケンスである。
実施例1との違いは、S306に代えて、各SSDから未割当状態の任意のエントリーを選択し、選択中のエクステントに割り当てる処理であるS306aを備える点である。その他のステップについては、図23と同じである。
このように、使用可能な論理容量のみが変化するSSDであったとしても、ストレージコントローラと連携することで、実施例1と同様の機能を提供することが出来る。
実施例3では、ストレージコントローラが階層再配置機能を有しているケースについて記載する。階層再配置機能とは、ストレージ装置内にコストパフォーマンスの異なる複数の記憶媒体が搭載されているときに、データのアクセス頻度と記憶媒体の種類に応じて、ストレージコントローラがデータを適切な記憶媒体へ再配置する機能である。図36を用いて概要を説明する。
図36は、第3の実施例における、階層再配置機能の概要説明図である。
ストレージ装置内には、低速なHDDで構成されたRG200、高速なHDDで構成されたRG300およびSSDで構成されたRG400がそれぞれ存在する。各RGは記憶媒体の種別に応じて階層管理されており、RG400は階層#0に、RG300は階層#1、RG200は階層#2となっている。なお、階層番号は、アクセス性能の高い順に割り当てられている。なお、一般的に高速なデバイスほど低容量・高価格な傾向にあるため、一般的なストレージ装置では上位階層ほど搭載容量が少ない傾向にある。図では、SSDで構成された最上位階層である階層#0の容量が最も少なく、低速HDDで構成された再下位階層である階層#2の容量が最も多い様子を示している。そのため、階層#0のRG400内にはエクステントが1つしか構築されてないが、階層#1のRG300にはエクステントが2つ、階層#2のRG200にはエクステントが5つ構築されている。このような環境においては、高頻度にアクセスされるデータほど、上位階層の記憶媒体に格納されることが望ましい。なお、各階層が複数のRGを含んでも良い。また、1つのプールボリュームが異なる階層を構成する複数のRGを含んでも良い。この場合、プールボリュームには複数の階層のRGに基づいて構成されるエクステントが混在する。
各エクステントは仮想ボリューム600の仮想エクステントに割当てられている。いま、仮想エクステント601はエクステント241に、仮想エクステント602はエクステント341に、仮想エクステント603はエクステント341に、仮想エクステント604はエクステント441に、仮想エクステント605はエクステント242に、仮想エクステント606はエクステント243に、それぞれ割当てられている。なお、仮想エクステントのアクセス頻度は601から606の順に高いとする。なおアクセス頻度とは、例えばデータリードやデータライトの単位時間あたりの回数であるIOPSや、単位時間あたりデータ転送量を示すMB/s等で把握できる値である。
アクセス頻度の低い仮想エクステント604のデータが、上位階層のRG400内のエクステント441に格納されているため、SSDの性能を十分に使い切れないおそれがある。一方、アクセス頻度の高い仮想エクステント601のデータが、下位階層のRG200内のエクステント241に格納されており、さらにRG200内のエクステント242および243も、他の仮想エクステントのデータを格納している、そのため、RG200ではHDDが性能のボトルネックとなる危険性がある。
そこで、ストレージコントローラは、エクステント441とエクステント241のデータを入れ替える「階層再配置」を実行することで、データ格納位置を最適化する。図36の左図は階層再配置前の状態を、図36の右図は階層再配置後の状態をそれぞれ示した物である。再配置後には、アクセス頻度の高いデータが順に、上位階層のRGに格納されている。これにより、システム性能を最大化することが出来る。
なお本発明のSSDは、圧縮により容量を拡張する機能を有するため、ストレージ装置にとっては、上位階層の容量が増加するという効果を得ることができる。これにより、例えば搭載するSSDやHDDの台数を削減できるなどのコスト削減効果を見込めるため、なるべく多くのデータを、上位階層のSSDに格納できることが望ましい。そこで実施例3では、ストレージコントローラが階層再配置を実行する前に、SSDの容量平準化を実施し、より多くのデータを上位階層のSSDに格納できるようにする。なお以下では、実施例1と2との違いを説明する。
図37は、第3の実施例におけるRG管理テーブル13200の構成例を示す図である。
図37では、各RGの階層番号を管理するための階層#13207が新たに追加されている。階層#は、RGを構成する記憶媒体の種別によって決まっており、例えばSSDは「0」、高速HDDは「1」、低速HDDは「2」のような番号が振られている。
図38は、第3の実施例における仮想ボリューム管理TBL13500の構成例を示す図である。
図38では、各仮想エクステントのアクセス頻度を管理するためのRD IOPS13506と、WR IOPS13507が追加されている。RD IOPS13506は、単位時間あたりに発生したデータリード要求コマンドの数である。WR IOPS13507は、単位時間あたりに発生したデータライト要求コマンドの数である。この数値が高いほど、高アクセス頻度であるということを意味する。なおIOPSに代えて、単位時間あたりのデータ転送量であるRD MB/sやWR MB/s、もしくは、コマンド数やデータ転送量の累積値を記録しても良い。
図39は、第3の実施例におけるストレージコントローラのタスクの概要を示すシーケンス図である。
図39では、容量平準化処理であるS106の後に、階層再配置処理S108が追加される。階層再配置処理S108の詳細は、図40で詳述する。なお実施例3では、ストレージコントローラは、各仮想エクステントへのアクセス頻度を監視する必要がある。そこでストレージコントローラは、リード処理S102を実行した場合には、その都度RD IOPS13506の値を1加算し、ライト処理S103を実行した場合には、その都度WR IOPS13507を1加算する。
図40は、第3の実施例における階層再配置処理S108の詳細を示すシーケンスである。
ストレージコントローラは、処理対象の仮想エクステントを選択する(S1001)。次にストレージコントローラは、仮想エクステントに割当てられたエクステントの階層が最上位階層であるか否かを、RG管理TBL13200を参照することで確認する(S1002)。その結果が肯定的である場合(S1002:Yes)、ストレージコントローラは階層再配置の必要性は無いと判断して、当該の仮想エクステントが最終であるか否かを判断する(S1003)。その結果が肯定的である場合(S1003:Yes)、ストレージコントローラは本処理を終了する。一方、S1003の結果が否定的である場合(S1003:No)、ストレージコントローラは次の仮想エクステントを処理対象に設定し(S1004)、S1002の処理に移行する。
なお、S1002の結果が否定的である場合(S1002:No)、ストレージコントローラは、上位階層のRGの残物理容量が十分であるかを、RG管理TBL13200とディスク管理テーブル13100を参照することで確認する(S1005)。なお、残物理容量が十分であるとは、空き物理容量のサイズが、エクステントのサイズよりも大であるかということに等しい。または、上位階層のRG内に、未割当て状態のエクステントがあるでも良い。S1005の結果が肯定的である場合は、上位階層のRGに空きがあるためデータをそのまま移動可能であると判断し、当該エクステントのデータを上位階層のRGに移動する。その後、各種テーブルを更新し(S1009)、S1003へと移行する。一方、S1005の結果が否定的である場合(S1005:No)、上位階層のRGには十分な空きがないためデータの交換が必要であると判断し、上位装置のRG内に当該のエクステントよりもアクセス頻度が低いエクステントが存在するか否かを、仮想ボリューム管理テーブル13500やRG管理テーブル13200等を参照することで確認する(S1008)。その結果が肯定的である場合(S1008:Yes)、ストレージコントローラは当該のエクステントのデータと、選択した上位階層のエクステントのデータとを入れ替える(S1007)。その後、各種テーブルを更新し(S1009)、S1003へと移行する。一方、S1008の結果が否定的である場合(S1008:No)、ストレージコントローラはS1003へと移行する。
このように、ストレージコントローラは、容量平準化処理により事前にSSDの空き容量を拡大または最大化したのちに、階層再配置処理を実行できるため、上位階層のSSDにより多くのエクステントのデータを格納することが出来るようになる。これにより、高性能なSSDに格納可能なデータ量が多くなるため、ストレージ装置の性能を向上することができる。
以上の説明では、「xxxテーブル」の表現にて各種情報を説明したが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以上の説明では、要素(例えばエクステント)の識別情報として番号が使用されるが、他種の識別情報(例えば名前、識別子)が使用されて良い。
また、「プログラム」を主語として処理を説明している場合、プログラムは、コントローラ(ストレージコントローラ、及びSSDコントローラ)に含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェース装置(例えば通信ポート)を用いながら行うため、処理の主語がコントローラ或いはプロセッサとされても良い。また、コントローラは、処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースからインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであっても良い。
また、以上の説明では、物理記憶装置を「ディスク」と便宜上表記することがあるが、この表記は、物理記憶装置が必ずしも円盤状の記憶媒体を有することを意味しない。例えば、ディスクは不揮発性半導体メモリを記憶媒体とするSSDを指すこともある。SSDがフラッシュメモリを記憶媒体とする場合、SSDはフラッシュメモリドライブやフラッシュメモリパッケージと表現されてもよい。
また、以上の説明では、期間或いは時間の単位は、限定されない。例えば、期間或いは時間の単位は、年、月、日、時、分、秒のうちのいずれか1つ或いはいずれか2以上の組合せで表現されて良い。
なお、上述の実施例における記憶装置とは、データ圧縮機能と下位レベルの容量仮想化機能の両機能を有しており、データ圧縮率により外部装置(ストレージコントローラ)に提供する仮想論理容量が変動するSSDである。ただし、HDDや他の記憶装置が同様の機能を有した場合も、本発明の適用が可能である。
10:ストレージ装置

Claims (9)

  1. それぞれが複数の不揮発性半導体メモリチップと、データを圧縮して前記複数の不揮発性半導体メモリチップに格納するメモリコントローラと、を有する複数の半導体記憶装置と、
    前記複数の半導体記憶装置に含まれる半導体記憶装置を所定数ずつ含む複数のRAIDグループを制御し、前記複数の半導体記憶装置へのデータの書き込み及び読み出しを制御するストレージコントローラと、を備え、
    前記メモリコントローラは、前記複数の不揮発性半導体メモリチップの記憶領域を、論理記憶領域に対応付けて前記ストレージコントローラに提供し、
    前記データの格納に用いられた前記不揮発性半導体メモリチップの記憶領域の量である物理使用量の情報を前記ストレージコントローラに提供するよう構成されており、
    前記ストレージコントローラは、
    前記複数の半導体記憶装置のそれぞれが提供する前記論理記憶領域を、それぞれ所定のサイズの論理記憶領域である複数のエントリーに分割し、前記半導体記憶装置から取得する前記物理使用量の情報をもとに、書き込まれたデータを格納している前記不揮発性半導体メモリチップの記憶領域の量であるデータ格納量を前記半導体記憶装置毎に管理しており、
    前記複数のRAIDグループ毎に、各RAIDグループに含まれる複数の半導体記憶装置それぞれに属するエントリーを一つずつ含む複数のエクステントを構成し、
    前記データ格納量に基づいて、前記複数のRAIDグループから第一のRAIDグループと、第二のRAIDグループと、を選択し、
    前記データ格納量に基づいて、前記第一のRAIDグループに属する前記複数のエクステントのうち第一のエクステントと、前記第二のRAIDグループに属する前記複数のエクステントのうち第二のエクステントのデータを交換する
    ことを特徴とするストレージ装置。
  2. 前記不揮発性半導体メモリチップは、フラッシュメモリチップである
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記メモリコントローラは、前記複数の不揮発性半導体メモリチップの記憶領域の容量よりも大きい容量の前記論理記憶領域を、前記ストレージコントローラに提供する
    ことを特徴とする請求項に記載のストレージ装置。
  4. 前記ストレージコントローラは、
    所定の容量が設定された仮想ボリュームを計算機に提供し、
    前記計算機からのライト要求に応じて、前記複数のエクステントの1つを前記仮想ボリュームに割当て、
    前記複数の半導体記憶装置が提供する前記論理記憶領域の容量をプールボリュームとして管理し、
    前記論理記憶領域のうちデータを格納できる範囲が変動した場合、前記プールボリュームの容量を変動させる
    ことを特徴とする請求項に記載のストレージ装置。
  5. 前記メモリコントローラは、前記ストレージコントローラからのライト要求に応じて、ライト要求に伴うデータを圧縮し、前記圧縮されたデータを前記不揮発性半導体メモリチップに書き込む
    ことを特徴とする請求項4に記載のストレージ装置。
  6. 前記メモリコントローラは、前記ストレージコントローラからの内部情報の取得要求に応じて、前記物理使用量の情報を前記ストレージコントローラに送信する
    ことを特徴とする請求項4に記載のストレージ装置。
  7. 前記メモリコントローラは、
    前記ストレージコントローラからのライト要求に応じて、ライト要求に伴うデータを前記不揮発性半導体メモリチップに格納し、
    リクラメーション処理において、前記不揮発性半導体メモリチップからデータを読み出し、前記読み出したデータを圧縮し、前記圧縮されたデータを不揮発性半導体メモリチップに書き込む
    ことを特徴とする請求項に記載のストレージ装置。
  8. 前記メモリコントローラは、前記ライト要求の完了報告に伴って前記物理使用量の情報を前記ストレージコントローラに送信する
    ことを特徴とする請求項に記載のストレージ装置。
  9. 前記ストレージ装置は、さらに複数のハードディスクドライブを有し、
    前記ストレージコントローラは、前記複数のハードディスクドライブを第三のRAIDグループとして制御し、前記第三のRAIDグループの記憶領域に基づいて複数のエクステントを構成し、
    前記ストレージコントローラは、
    前記仮想ボリュームに割当てられたエクステント毎にアクセス頻度を計測し、
    前記データの交換処理が完了した後に、前記第三のRAIDグループに属すエクステントと、前記複数の半導体記憶装置から構成されるRAIDグループに属する複数のエクステントのうち前記第三のRAIDグループに属するエクステントよりアクセス頻度の低いエクステントとの間でデータを交換する
    ことを特徴とする請求項に記載のストレージ装置。
JP2015516849A 2013-05-17 2013-05-17 ストレージ装置 Expired - Fee Related JP6073471B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP6073471B2 true JP6073471B2 (ja) 2017-02-01
JPWO2014184941A1 JPWO2014184941A1 (ja) 2017-02-23

Family

ID=51897946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015516849A Expired - Fee Related JP6073471B2 (ja) 2013-05-17 2013-05-17 ストレージ装置

Country Status (6)

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

Families Citing this family (62)

* 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
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
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 上海爱信诺航芯电子科技有限公司 一种维持闪存损耗均衡的方法
JP6425740B2 (ja) * 2015-01-13 2018-11-21 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
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 株式会社日立製作所 ストレージ装置、記録媒体、および記憶制御方法
JP6527961B2 (ja) * 2015-12-25 2019-06-12 株式会社日立製作所 計算機システム
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
CN108292263B (zh) * 2016-11-07 2022-04-15 京瓷办公信息系统株式会社 信息处理装置及信息处理方法
JP6612995B2 (ja) * 2016-12-13 2019-11-27 株式会社日立製作所 データリバランスを制御するシステムおよび方法
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控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
CN110537260B (zh) * 2019-04-30 2021-08-03 长江存储科技有限责任公司 具有闪速存储器控制器的键合的存储设备及其制造和操作方法
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 株式会社日立製作所 ストレージ制御システム及び方法
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
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
US11520500B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction when downshifting multi-level memory cells
US11892909B2 (en) 2021-03-19 2024-02-06 Micron Technology, Inc. Managing capacity reduction 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
US11520656B2 (en) * 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction and recovery 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
US12223346B2 (en) * 2021-05-06 2025-02-11 Dell Products L.P. Selectively offloading the compression and decompression of files to a hardware controller
US11709607B2 (en) * 2021-09-15 2023-07-25 International Business Machines Corporation Storage block address list entry transform architecture
CN114579050B (zh) * 2022-02-14 2024-04-02 阿里巴巴(中国)有限公司 处理压缩数据的方法以及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005038368A (ja) * 2002-08-30 2005-02-10 Hitachi Ltd 仮想一元化されたネットワークストレージ間のディスク残量平準化方法
JP2013506886A (ja) * 2010-01-14 2013-02-28 株式会社日立製作所 ストレージシステム
JP2013515979A (ja) * 2010-04-12 2013-05-09 株式会社日立製作所 ストレージ装置

Family Cites Families (15)

* 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 株式会社日立製作所 ネットワークストレージシステムの仮想一元化方法及び装置
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
WO2011042940A1 (en) * 2009-10-09 2011-04-14 Hitachi, Ltd. Storage system and control method thereof, implementing data reallocation in case of load bias
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
WO2012039002A1 (en) * 2010-09-21 2012-03-29 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 (ja) * 2012-02-08 2015-06-26 Hitachi Ltd

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005038368A (ja) * 2002-08-30 2005-02-10 Hitachi Ltd 仮想一元化されたネットワークストレージ間のディスク残量平準化方法
JP2013506886A (ja) * 2010-01-14 2013-02-28 株式会社日立製作所 ストレージシステム
JP2013515979A (ja) * 2010-04-12 2013-05-09 株式会社日立製作所 ストレージ装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6073471B2 (ja) ストレージ装置
JP6381529B2 (ja) ストレージ装置および記憶制御方法
JP5844473B2 (ja) 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法
JP6000376B2 (ja) 特性の異なる複数種類のキャッシュメモリを有する情報処理装置
CN106371761B (zh) 内存系统以及非易失性内存的控制方法
CN106372001B (zh) 内存系统
JP5937697B2 (ja) ストレージシステム
JP6006431B2 (ja) ストレージシステムおよびデータ記憶方法
WO2014141411A1 (ja) ストレージシステムおよびストレージシステム制御方法
JP6007332B2 (ja) ストレージシステム及びデータライト方法
JP6507261B2 (ja) ストレージ装置、記録媒体、および記憶制御方法
US20180275894A1 (en) Storage system
US10768838B2 (en) Storage apparatus and distributed storage system
JP2012505441A (ja) ストレージ装置およびそのデータ制御方法
CN107710140A (zh) 存储系统
WO2016181528A1 (ja) ストレージ装置
CN111124950A (zh) 数据管理装置、数据管理方法和存储介质
JP6716757B2 (ja) メモリシステムおよび制御方法
JP6817340B2 (ja) 計算機
JP2017199043A (ja) ストレージ装置とシステム及び方法とプログラム
WO2015162766A1 (ja) ストレージシステム及び半導体記憶装置
WO2018002999A1 (ja) 記憶デバイス及びストレージ装置
JP2016194928A (ja) ストレージシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170104

R150 Certificate of patent or registration of utility model

Ref document number: 6073471

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees