JP6006431B2 - ストレージシステムおよびデータ記憶方法 - Google Patents

ストレージシステムおよびデータ記憶方法 Download PDF

Info

Publication number
JP6006431B2
JP6006431B2 JP2015541380A JP2015541380A JP6006431B2 JP 6006431 B2 JP6006431 B2 JP 6006431B2 JP 2015541380 A JP2015541380 A JP 2015541380A JP 2015541380 A JP2015541380 A JP 2015541380A JP 6006431 B2 JP6006431 B2 JP 6006431B2
Authority
JP
Japan
Prior art keywords
logical
capacity
write
storage
usable
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
JP2015541380A
Other languages
English (en)
Other versions
JPWO2015052811A1 (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 JP6006431B2 publication Critical patent/JP6006431B2/ja
Publication of JPWO2015052811A1 publication Critical patent/JPWO2015052811A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/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
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to 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
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0653Monitoring storage devices or 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
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid 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
    • 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/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、ストレージシステムおよびデータ記憶方法の技術に関する。
フラッシュメモリは、一般に、データを書き換えるためには、そのデータを記憶している領域からデータを消去する必要があり、データの書換回数(言い換えれば消去回数)に上限がある。この上限を超えたフラッシュメモリは、新たにデータを書き込めなかったり、書き込まれたデータにエラーが発生する確率が高くなったりする。フラッシュメモリの書換回数がその上限に達するまでの期間を、フラッシュメモリの「寿命」という。したがって、複数のフラッシュメモリによって構成されるFMPK(Flash Memory Package)にも寿命が存在する。
特許文献1には、FMPKの記憶領域をライト領域と固定サイズのユーザ領域とに分割し、ユーザ領域に複数の論理的な記憶装置であるLDEV(Logical Device)を設定し、LDEVへのライト頻度に応じて、LDEVに割り当てるライト領域のサイズを変更する技術が開示されている。
特開2010−033393号公報
一般に、フラッシュメモリのような書換回数の上限を有する記憶媒体に書換頻度の高いデータを格納した場合、その記憶媒体の寿命は短くなる。ストレージ装置の用途は様々であり、例えば、書換頻度の低い(リードがメインの)データを格納するストレージ装置は、その記憶媒体の寿命は短くならない。このような場合であっても、特許文献1は、ライト領域を予め確保しているため、論理的な記憶容量を大きくすることはできない。つまり、このような場合、予め確保しているライト領域は、無駄な領域となってしまう。
そこで、本発明の目的は、フラッシュメモリ等のように書換回数の上限を有する記憶媒体の寿命と論理的な記憶容量とのバランスを良好に保つことのできるストレージシステムおよびデータ記憶方法を実現することにある。
本発明の一実施形態に係るストレージシステムは、それぞれ書換回数に上限がある複数の物理記憶領域と、複数の物理記憶領域に対するデータのI/O(Input/Output)を制御する媒体コントローラとを有する記憶媒体と、記憶媒体に接続されたストレージコントローラとを備える。
各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされる。
媒体コントローラは、複数の論理記憶領域のうちのライト先論理記憶領域にいずれの物理記憶領域も割り当てられていない又はそのライト先論理記憶領域に割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合に、複数の物理記憶領域のうちのいずれかの空き物理記憶領域をライト先論理記憶領域に割り当て、割り当てた空き物理記憶領域にライト対象データを書き込む。
複数の論理記憶領域は、論理記憶容量のうちの使用可能容量と複数の物理記憶領域の書換頻度との関係に基づいて決定された使用可能論理領域群を含む。論理記憶容量は、複数の論理記憶領域の総容量である。使用可能領域群は、複数の論理記憶領域のうちライト先論理記憶領域とされ得る1以上の論理記憶領域である。使用可能容量は、複数の論理記憶領域のうちライト先論理記憶領域とされ得る1以上の論理記憶領域である使用可能論理領域群の容量である。
本発明によれば、書換回数の上限を有する記憶媒体の寿命と論理的な記憶容量とのバランス良好に保つこことのできるストレージ装置およびデータ記憶方法を実現することができる。
ストレージシステムの構成例を示す。 FMPKの構成例を示す。 FM(Flash Memory)チップの構成例を示す。 RAID(Redundant Arrays of Inexpensive Disks)グループに対して余剰容量を設定した場合の概要図である。 RAIDグループの使用可能容量を設定するGUI(Graphical User Interface)の構成例を示す。 LDEVに対して余剰容量を設定した場合の概要図を示す。 仮想ボリュームに対して余剰容量を設定した場合の概要図である。 ストレージコントローラの有する機能およびデータの例を示す。 ドライブ管理テーブルの構成例を示す。 プール管理テーブルの構成例を示す。 チャンク管理テーブルの構成例を示す。 仮想ボリューム管理テーブルの構成例を示す。 ドライブ個別管理テーブルの構成例を示す。 FMPKの有する機能およびデータの例を示す。 論理物理変換テーブルの構成例を示す。 RAIDグループ作成処理の一例を示すフローチャートである。 LDEVの作成に関する処理例を示すフローチャートである。 図17の第1余剰容量設定処理の詳細を示すフローチャートである。 仮想ボリューム作成処理の一例を示すフローチャートである。 仮想ボリュームライト処理の一例を示すフローチャートである。 図20の第2余剰容量設定処理の詳細を示すフローチャートである。
以下、書換回数の上限を有する記憶媒体として、FMPK(Flash Memory Package)を例に取り、図面を参照しながら、一実施例について説明する。
なお、以後の説明では、「aaaテーブル」等の表現にて情報を説明することがあるが、これら情報はテーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。
また、各情報の内容を説明する際に、「番号」、「名称」という表現の識別情報が採用されるが、他種の識別情報が使用されて良い。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムは、プロセッサによって実行されることで定められた処理をメモリ及び通信ポート(ネットワークI/F)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、監視システム等の計算機が行う処理としてもよい。また、プログラムの一部または全ては、専用ハードウェアによって実現されてもよい。また、各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶媒体によって各計算機にインストールされてもよい。
<ストレージシステム>
図1は、ストレージシステムの構成例を示す。
ストレージシステムは、ホスト計算機11と、管理計算機12と、ストレージ装置10とを備える。ホスト計算機11とストレージ装置10とは、例えば、SAN(Storage Area Network)13等の通信ネットワークを通じて接続されている。管理計算機12とストレージ装置10とは、例えば、所定の通信線15を通じて接続されている。
ホスト計算機11は、ストレージ装置10に対してライト要求を送信することで、ストレージ装置10にデータをライトする。ホスト計算機11は、ストレージ装置10に対してリード要求を送信することで、ストレージ装置10からデータをリードする。
管理計算機12は、ユーザがストレージ装置10を管理及び制御ための装置である。管理計算機12は、キーボード及びマウス等の入力デバイスと、ディスプレイ等の出力デバイスを備えてもよい。
ストレージ装置10は、ストレージコントローラ20と、ドライブボックス21とを備える。ドライブボックス21は、複数のFMPK40を備える。ドライブボックス21は、さらに、HDD(Hard Disk Drive)41を備えてもよい。
ストレージコントローラ20は、ホストI/F33と、プロセッサ31と、メモリ32と、ドライブI/F34、管理I/F35とを備え、それら要素31〜35は、データ送受信が可能な内部バス36で接続されている。
ホストI/F33は、ストレージコントローラ20をSAN13に接続するためのI/Fである。管理I/F35は、ストレージコントローラ20と管理計算機12とを接続するためのI/Fである。
プロセッサ31は、コンピュータプログラム(以下「プログラム」という)等を実行する。プロセッサがプログラムを実行することにより、ストレージ装置10の備える様々な機能が実現される。
メモリ32は、データを記憶する。メモリ32は、例えば、DRAM(Dynamic Random Access Memory)等で構成される揮発性半導体メモリであってもよいし、フラッシュメモリ等で構成される不揮発性半導体メモリであってもよい。メモリ32に記憶されたプログラム及びデータは、プロセッサ31、ホストI/F33及びドライブI/F34等からアクセスされる。
ドライブI/F34は、ストレージコントローラ20と、FMPK40およびHDD41を接続するためのI/Fである。
図2は、FMPK40の構成例を示す。
FMPK40は、FMPKコントローラ50と、複数のFMチップ51とを備える。
FMPKコントローラ50は、プロセッサ61と、メモリ62と、FMPK I/F63と、FMチップI/F64とを有する。これらの要素61〜64は、データ送受信可能な内部バス65で接続されており、双方向にデータを送受信できる。
プロセッサ61は、プログラム等を実行する。プロセッサ61がプログラムを実行することにより、FMPK40の備える様々な機能が実現される。
メモリ62は、データを記憶する。メモリは、例えば、DRAM等で構成される揮発性半導体メモリであってもよいし、フラッシュメモリ等で構成される不揮発性半導体メモリであってもよい。メモリ62に記憶されたプログラム及びデータは、プロセッサ61、FMPK I/F63及びFMチップI/F64等からアクセスされる。
FMPK I/F63は、FMPK40とストレージコントローラ20とを接続するためのI/Fである。FMチップI/F64は、FMPKコントローラ50(プロセッサ)と、FMチップ51とを接続するためのI/Fである。
図3は、FMチップ51の構成例を示す。
FMチップ51は、例えばNAND型のFMチップであり、FMコントローラ70と、複数のブロック71とを有する。そして、ブロック71は、複数のページ72で構成されている。FMチップ51は、その特性上、ページ単位でデータのリードおよびライトを行う必要がある。そして、FMチップ51は、その特性上、ブロック単位でデータの消去を行う必要がある。
また、FMチップ51は、ライト済みのページに対してデータをオーバーライトすることができない。したがって、FMPKコントローラ50は、ライト済みのページにオーバーライトする場合には、オーバーライトのデータを未使用のページにライトし、元のライト済みのページへのアクセスを不能とする。アクセス不能となったデータは、そのページの属するブロックが消去処理されるタイミングで消去される。
所定の回数ライト及び消去(つまり、書き換え)が実行されたページ(ブロック)には、データを新たにライトすることができなくなる。これは、ページ(ブロック)が寿命に達したことを意味する。したがって、書き換え頻度の高いページ(ブロック)は寿命が短い。そこで、FMPK40全体で、各ページ(ブロック)の書き換え頻度を平準化することにより、特定のページ(ブロック)だけが早く寿命に達することを防ぐことができる。
そしてさらに、本実施例に示すように、不使用容量として確保する余剰容量を大きくすれば、各ページ(ブロック)の書き換え頻度はさらに低くなる。つまり、FMPK40全体の寿命を長くすることができるのである。
<概要>
次に、本実施例で示す3つのパターンの概要を述べる。
図4は、RAIDグループに対して余剰容量を設定した場合の概要図である。
RAIDグループ101は、複数のFMPK40によって構成される。例えば、4つのFMPK40を用いて「3D+1P」のRAID5のRAIDグループ101を構成した場合、そのRAIDグループ101は、3つのFMPK40を合計した記憶容量を提供する(1つのFMPK40の記憶容量はパリティ分となる)。
ストレージコントローラ20は、「RAIDグループの総記憶容量=使用可能容量+余剰容量」とし、RAIDグループ101の総記憶容量に対する使用可能容量と余剰容量との割合を設定する。このRAIDグループ101には、この使用可能容量までデータを格納できる。言い換えると、このRAIDグループ101には、この使用可能容量よりも多くのデータを格納することはできない。
ここで、余剰容量を大きくすると使用可能容量は小さくなるが、その分、RAIDグループ101を構成するFMPK40の寿命は長くなる。なぜなら、余剰容量を多くすることにより、RAIDグループ101に対して所定回数のライトが実行された場合におけるFMチップ51の1ブロック当たりの書換回数が平均的に減少するからである。
反対に、余剰容量を小さくすると使用可能容量は大きくなるが、その分、RAIDグループ101を構成するFMPK40の寿命は短くなる。なぜなら、余剰容量を小さくすることにより、RAIDグループに対して所定回数のライトが実行され場合におけるFMチップ51の1ブロック当たりの書換回数が平均的に増加するからである。
したがって、書換頻度が高くなることが想定される場合、余剰容量を大きく設定したRAIDグループ101を構成することにより、FMPK40の寿命を長くすることができる。書換頻度が低いことが想定される場合、余剰容量を小さく設定したRAIDグループ101を構成することにより、大きな使用可能容量を確保することができる。
つまり、ストレージコントローラ20は、RAIDグループに基づくボリュームに対する書換回数の総数を増加させる場合(寿命を長くする場合)、使用可能容量と余剰容量との差分が小さくなるように使用可能容量および余剰容量を設定してRAIDグループを構築する。すなわち、ボリューム(使用可能容量)が小さければ、そのボリュームの書換可能回数は増加し、反対に、ボリューム(使用可能容量)が大きければ、そのボリュームの書換可能回数は減少する。
ユーザは、RAIDグループ101を構成する際に余剰容量を設定することができる。余剰容量の設定方法は、使用可能容量または余剰容量のサイズを入力させてもよいし、RAIDグループの総記憶容量に対する使用可能容量及び余剰容量の割合(例えば「80%:20%」等)を入力させてもよい。
もしくは、ストレージコントローラ20は、ユーザに、このRAIDグループ101の使用目的から書換頻度が「高」または「低」の何れであるかを選択させ、書換頻度「高」が選択された場合は、所定の大きい方の余剰容量が設定され、書換頻度「低」を選択された場合は、所定の小さい方の余剰容量が設定されてもよい。例えば、ストレージコントローラ20は、次に示すようなGUIを表示してもよい。
図5は、RAIDグループ101の使用可能容量を設定するGUIの構成例を示す。
ストレージコントローラ20は、RAIDグループ101を構成する際、管理計算機12に図5に示すようなGUI900を表示する。GUI900は、RAIDグループ101の使用可能容量を入力する入力領域901と、書換回数の増加率を表示する表示領域902とを有する。
ストレージコントローラ20は、その入力領域901に入力された使用可能容量に基づいて、書換回数の増加率を算出し、その算出結果を表示領域902に表示する。入力される使用可能容量が小さくなると、書換回数の増加率は大きくなる。反対に、入力される使用可能容量が大きくなると、書換回数の増加率は小さくなる。
書換回数の増加率は、例えば、「((RAIDグループの使用可能容量の最大値/入力されたRAIDグループの使用可能容量)−1)×100%」として算出されてもよい。例えば、入力領域901にRAIDグループの使用可能容量の最大値が入力されると、書換回数の増加率の表示領域902に「0%増加」と表示される。例えば、入力領域921にRAIDグループの使用可能容量の最大値の半分の値が入力されると、書換回数の増加率の表示領域902に「100%増加」(つまり、寿命が従来の2倍に延びる)と表示される。なお、上述のGUI900の生成および書換回数の増加率の算出等を、管理計算機12が実行するとしてもよい。
これにより、ユーザは、FMPK40の寿命と使用可能容量とのバランスを見ながら、適切なRAIDグループの使用可能容量を設定することができる。
図6は、LDEVに対して余剰容量を設定した場合の概要図を示す。
ストレージコントローラ20は、RAIDグループ101によって構成された記憶領域を分割し、複数のLDEV110を構成することができる。例えば、ストレージコントローラ20は、図6に示すように、「3D+1P」のRAID5のRAIDグループ101によって構成された記憶領域を分割し、2つのLDEV(第1LDEV110、第2LDEV110)を構成する。ストレージコントローラ20は、LDEV110を構成する際、LDEV110の総記憶容量を指定することができる。ストレージコントローラ20は、LDEV110の「使用可能容量」をホスト計算機11に提供する。つまり、ホスト計算機11からは、LDEV110の「使用可能容量」が、LDEVの容量として見える。
ストレージコントローラ20は、「LDEVの総記憶容量=使用可能容量+余剰容量」として、LDEV110の総記憶容量に対する使用可能容量と余剰容量との割合を設定する。このLDEV110には、この使用可能容量までデータを格納できる。言い換えると、このLDEV110には、この使用可能容量よりも多くのデータを格納することはできない。
ここで、余剰容量を大きくするとLDEV110の使用可能容量は小さくなるが、その分、LDEV110を構成するFMPK40の寿命は長くなる。なぜなら、余剰容量を多くすることにより、LDEV110に対して所定回数のライトが実行された場合におけるFMチップ51の1ブロック当たりの書換回数が減少するからである。
反対に、余剰容量を小さくするとLDEV110の使用可能容量は大きくなるが、その分、LDEV110を構成するFMPK40の寿命は短くなる。なぜなら、余剰容量を小さくすることにより、LDEV110に対して所定回数のライトが実行され場合におけるFMチップ51の1ブロック当たりの書換回数が増加するからである。
したがって、書換頻度が高くなることが想定されるLDEV110については、余剰容量を大きく設定することにより、FMPK40の寿命を長くすることができる。書換頻度が低いことが想定されるLDEV110については、余剰容量を小さく設定することにより、大きな使用可能容量を確保することができる。ここで、LDEVの書換頻度は、そのLDEVを指定したライト要求の受信頻度(例えば、単位時間当たりのライト要求の受信回数)としてもよい。
つまり、ストレージコントローラ20は、LDEV110全体に対する書換回数の総数を増加させる場合(寿命を長くする場合)、そのLDEV110に対する使用可能容量と余剰容量との差分が小さくなるように使用可能容量および余剰容量を設定してLDEVを構築する。
ユーザは、LDEV110を構成する際に余剰容量を設定することができる。余剰容量の設定方法は、使用可能容量または余剰容量のサイズを入力させてもよいし、LDEV110の総記憶容量に対する使用可能容量及び余剰容量の割合(例えば「50%:50%」等)を入力させてもよい。
もしくは、ユーザに、このLDEV110の使用目的から書換頻度が「高」または「低」の何れであるかを選択させ、書換頻度「高」が選択された場合は、所定の大きい方の余剰容量が設定され、書換頻度「低」が選択された場合は、所定の小さい方の余剰容量が設定されてもよい。
また、図5と同様に、ストレージコントローラ20は、LDEV110の使用可能容量を設定するGUIを管理計算機12に表示させてもよい。
図7は、仮想ボリュームに対するライト要求に基づいて余剰容量を設定する場合の概要図である。
仮想ボリュームは、シンプロビジョニングに従う仮想的な論理ボリュームであり、複数の仮想的な記憶領域(仮想チャンク)151で構成されている。ストレージコントローラ20は、図7に示すように、複数のRAIDグループ(第1RAIDグループ101及び第2RAIDグループ101)の記憶領域をまとめてプール100を構成する。プール100は、複数のチャンクから構成される。チャンクは、プール100に属するRAIDグループの記憶領域の内の使用可能容量の或る部分の領域と対応付けられている。つまり、チャンクは、余剰容量として確保された記憶領域には対応付けられない。
ストレージコントローラ20は、例えば、複数の仮想ボリューム(第1仮想ボリューム120a及び第2仮想ボリューム120b)を構成する。ストレージコントローラ20は、仮想ボリューム120に対するライト要求が発生した時に、その仮想ボリューム120におけるライト先の仮想チャンク151に対してプール100からチャンク152を割り当てる。これにより、効率的にRAIDグループの記憶領域を使用することができる。
本実施例に係るストレージコントローラ20は、仮想ボリューム120を生成する際に、仮想ボリュームのサイズに加えて、書換頻度を設定することができる。例えば、第1仮想ボリューム120aに対する書換頻度は低いと想定される場合、ストレージコントローラ20は、第1仮想ボリューム120aに対する書換頻度を「低」と設定する。例えば、第2仮想ボリューム120bに対する書換頻度は高いと想定される場合、ストレージコントローラ20は、第2仮想ボリューム120bに対する書換頻度を「高」と設定する。ここで、仮想ボリュームの書換頻度は、その仮想ボリュームを指定したライト要求の受信頻度(例えば、単位時間当たりのライト要求の受信回数)としてもよい。
書換頻度「低」の設定された第1仮想ボリューム120aに対するライト要求があった場合、ストレージコントローラ20は、プール100から、そのライト要求に係るライトデータのサイズに基づいて、チャンク1、2、4、5を、第1仮想ボリューム120aの仮想チャンク1、2、4、5に割り当てる。
書換頻度「高」の設定された第2仮想ボリューム120bに対するライト要求があった場合、ストレージコントローラ20は、プール100から、そのライト要求に係るライトデータのサイズに基づいて、チャンク3を、第2仮想ボリューム120bの仮想チャンク3に割り当てると共に、そのチャンク3の属する第1RAIDグループ101の余剰容量を増加させる(符号161)。この余剰容量の増加量は、例えば、チャンクのサイズの所定の割合(例えば30%)としてもよい。書換頻度「高」の設定された仮想ボリューム120にチャンクを割り当てた場合の余剰容量の増加量の割合は、RAIDグループ101の構築時、プール100の構築時又は仮想ボリューム120の構築時に、ユーザが設定および変更可能であってもよい。
これにより、書換頻度「高」のチャンクが多く属するRAIDグループ101は、その分、余剰容量が大きくなるので、上記図4の場合と同様、FMPK40の寿命を長くすることができる。
<ストレージコントローラの機能>
図8は、ストレージコントローラ20の有する機能およびデータの例を示す。
ストレージコントローラ20は、機能として、ライトI/Oプログラム211と、リードI/Oプログラム212とを有する。これらプログラムは、メモリ32上の所定のプログラム領域201に格納され、プロセッサ31により実行される。
ライトI/Oプログラム211は、ホスト計算機11からのライト要求を処理するプログラムである。ライトI/Oプログラム211は、ホスト計算機11からのライト要求に従って、FMPK40又はHDD41にデータをライトする処理を実行する。ライト要求されたデータを「ライトデータ」ということがある。
リードI/Oプログラム212は、ホスト計算機11からのリード要求を処理するプログラムである。リードI/Oプログラム212は、ホスト計算機11からのリード要求に従って、FMPK40又はHDD41からデータをリードして、ホスト計算機11に返す処理を実行する。リード要求されたデータを「リードデータ」ということがある。
ストレージコントローラ20は、ユーザデータ340を管理する。ユーザデータ340は、メモリ32上の所定のデータキャッシュ領域203に格納される。ユーザデータ340は、ホスト計算機11に使用されるデータであり、具体的には、ライトデータ又はリードデータである。
ストレージコントローラ20は、ドライブ管理テーブル220と、プール管理テーブル240と、仮想ボリューム管理テーブル260と、RAIDグループ管理テーブル280と、チャンク管理テーブル300と、ドライブ個別管理テーブル320とを管理する。これらテーブルは、メモリ32上の所定のテーブル領域202に格納される。以下、各テーブルの詳細について説明する。
図9は、ドライブ管理テーブル220の構成例を示す。
ドライブ管理テーブル220は、ストレージ装置10の備える各ドライブの情報を有する。ドライブ管理テーブル220は、データ項目として、ドライブ番号221と、ドライブ種別222と、最大容量223と、使用可能容量224とを有する。
ドライブ番号221は、ストレージ装置10の備えるドライブを一意に識別可能な情報である。
ドライブ種別222は、ドライブ番号221に対応するドライブの種別を示す情報である。
最大容量223は、ドライブ番号221に対応するドライブが提供可能な最大の論理容量を示す情報である。最大容量223は、基本的に、ドライブの有する記憶媒体の物理的な記憶容量に基づいて、不変的に決定される情報である。
使用可能容量224は、ドライブ番号221に対応するドライブにおいて使用可能な論理容量を示す情報である。使用可能容量は、後述する余剰容量の設定に基づいて変化し得る情報である。
例えば、図9において、ドライブ番号221「3」に対応するドライブは、ドライブ種別222が「FMPK」であり、最大容量223が「1.6TB」であり、使用可能容量224が「1TB」である。
図10は、プール管理テーブル240の構成例を示す。
プール管理テーブル240は、プール100の情報を有する。プール100は、RAIDグループ101によって構成される論理的な記憶領域(以下「RAID領域」という)の1以上の集合体として構成される。プール100は、後述する仮想ボリューム120を生成する場合に使用される。したがって、仮想ボリューム120を生成しない場合、プール管理テーブル240は、プール番号241を管理しなくてもよい。
プール管理テーブル240は、データ項目として、プール番号241と、RAIDグループ番号242と、RAIDレベル243と、RAID構成244と、ドライブ番号245と、最大容量246と、使用可能容量247とを有する。
プール番241号は、プール100を一意に識別可能な情報である。
RAIDグループ番号242は、RAIDグループ101を一意に識別可能な情報である。
RAIDレベル243は、RAIDグループ番号242に対応するRAIDグループのレベルを示す情報である。
RAID構成244は、RAIDグループ番号242に対応するRAIDグループの構成を示す情報である。
ドライブ番号245、最大容量246および使用可能容量247は、上記で説明したとおりの情報である。
例えば、図10において、プール番号241「1」のブール100は、RAIDグループ番号242「1」、「2」、「N」に対応する3つのRAIDグループによって構成されている。そして、RAIDグループ番号242「1」に対応するRAIDグループのRAIDレベル243は「5」であり、RAID構成244は「3D+1P」である。「3D+1P」とは、RAIDグループが、3つのデータ用のドライブの容量と1つのパリティ用のドライブの容量とから構成されていることを示す。また、RAIDグループ番号242「1」に対応するRAIDグループは、ドライブ番号245「1」、「2」、「14」、「15」の4つのドライブから構成されている。
図11は、チャンク管理テーブル300の構成例を示す。
チャンク管理テーブル300は、チャンクの情報を有する。チャンクとは、RAID領域の一部の領域を示す。チャンクは、仮想ボリューム120を生成する場合に使用される。
チャンク管理テーブル300は、データ項目として、RAIDグループ番号301と、チャンク番号302と、サイズ303と、ステータス304と、書換頻度305とを有する。
RAIDグループ番号301は、上記で説明したとおりの情報である。
チャンク番号302は、RAID領域内でチャンクを一意に識別可能な情報である。
サイズ303は、チャンク番号302に対応するチャンクのサイズを示す情報である。
ステータス304は、チャンク番号302に対応するチャンクが、仮想ボリューム120に割当済みであるか否かを示す情報である。例えば、仮想ボリューム120に割当済みのチャンクのステータスは「割当済」、仮想ボリューム120に未割当のチャンクのステータスは「未割当」とする。
書換頻度305は、チャンク番号302に対応するチャンクが、書換頻度「高」であるか、それとも書換頻度「低」であるかを示す情報である。例えば、書換頻度「高」の仮想ボリューム120に割り当てられたチャンクの書換頻度は「高」、書換頻度「低」の仮想ボリュームに割り当てられたチャンクの書換頻度は「低」とする。
例えば、図11において、RAIDグループ番号301「1」に対応するRAID領域は、チャンク番号302「1」〜「N」のチャンクで構成されている。そして、RAIDグループ番号301「1」のチャンク番号302「1」に対応するチャンクは、サイズ303が「1GB」であり、書換頻度305「高」の仮想ボリューム120に「割当済」(ステータス304)である。また、RAIDグループ番号301「1」のチャンク番号302「2」に対応するチャンクは、書換頻度305「低」の仮想ボリューム120に「割当済」(ステータス304)である。また、RAIDグループ番号301「2」のチャンク番号302「N」に対応するチャンクは、何れの仮想ボリューム120にも「未割当」(ステータス304)である。
図12は、仮想ボリューム管理テーブル260の構成例を示す。
仮想ボリューム管理テーブル260は、仮想ボリューム120の情報を有する。仮想ボリューム管理テーブル260は、データ項目として、仮想ボリューム番号261と、プール番号262と、最大仮想容量263と、仮想チャンク番号264と、RAIDグループ番号265と、チャンク番号266と、書換頻度267とを有する。
仮想ボリューム番号261は、仮想ボリューム120を一意に識別可能な情報である。
プール番号262は、上記で説明したとおりの情報である。
最大仮想容量263は、仮想ボリューム番号261に対応する仮想ボリューム120に設定された最大容量を示す情報である。
仮想チャンク番号264は、仮想ボリューム番号261に対応する仮想ボリューム120を構成するチャンクを一意に識別可能な情報である。
RAIDグループ番号265、チャンク番号266および書換頻度267は、上記で説明したとおりの情報である。
例えば、図13において、仮想ボリューム番号261「1」に対応する仮想ボリューム120は、プール番号262「1」に対応するプール100に属し、最大仮想容量263が「800GB」であり、仮想チャンク番号264「1」〜「N」のチャンクによって構成されており、書換頻度267「高」が設定されている。そして、仮想ボリューム番号261「1」に対応する仮想ボリューム120を構成する仮想チャンク番号264「1」には、RAIDグループ番号265「1」に対応するRAID領域のチャンク番号266「1」のチャンクが割り当てられている。
図13は、ドライブ個別管理テーブル320の構成例を示す。
ドライブ個別管理テーブル320は、ドライブ(例えば、FMPK40)の情報を有する。つまり、ドライブ個別管理テーブル320は、ドライブ毎に構成される。ドライブ個別管理テーブル320は、データ項目として、ドライブ番号321と、最大容量322と、使用可能容量323と、LBA(Logial Block Address)324と、LBA長325と、チャンク番号326とを有する。
ドライブ番号321、最大容量322および使用可能容量323は、上記で説明したとおりである。
LBA324は、ドライブ番号321に対応するドライブの記憶領域を構成する論理ブロックの先頭アドレスを示す情報である。
LBA長325は、LBA324に対応する論理ブロックのサイズ(長さ)を示す情報である。
チャンク番号326は、上記で説明したとおりの情報である。
例えば、図13において、ドライブ番号321「3」に対応するドライブは、最大容量322が「1.6TB」であり、使用可能容量323が「1TB」であることを示す。そして、ドライブ番号321「3」に対応するドライブのLBA324「0」から「1GB」分(LBA長325)の領域は、チャンク番号326「1」に対応付けられている。
<FMPKの機能>
図14は、FMPK40の有する機能およびデータの例を示す。
FMPKコントローラ50は、機能として、ライトI/Oプログラム511と、リードI/Oプログラム512とを有する。これらプログラムは、メモリ62上の所定のプログラム領域501に格納され、プロセッサ61により実行される。
ライトI/Oプログラム511は、ストレージコントローラ20から送信されたライトコマンドを処理する。ライトI/Oプログラム511は、ライトコマンドを受信すると、論理物理変換テーブル520を参照して、ライト先のページを特定する。そして、ライトI/Oプログラム511は、ライト先のページを有するFMチップ51にデータをライトする。
リードI/Oプログラム512は、ストレージコントローラ20から送信されたリードコマンドを処理する。リードI/Oプログラム512は、リードコマンドを受信すると、論理物理変換テーブル520を参照して、リード先のページを特定する。そして、リードI/Oプログラム512は、リード先のページを有するFMチップ51からデータをリードする。
ストレージコントローラ20は、ユーザデータ580を管理する。ユーザデータ580は、メモリ62上の所定のデータキャッシュ領域503に格納される。ユーザデータは、例えば、ライトデータがFMチップ51にライトされる前のキャッシュデータである。ユーザデータは、例えば、FMチップ51からリードされたデータがストレージコントローラ20へ送信される前のキャッシュデータである。
FMPKコントローラ50は、論理物理変換テーブル520を管理する、論理物理変換テーブル520は、論理ページと物理的なページとの対応関係の情報を有する。以下、論理物理変換テーブル520についてさらに説明する。
図15は、論理物理変換テーブル520の構成例を示す。
論理物理変換テーブル520は、データ項目として、LBA561と、論理ページ番号562と、論理ページサイズ563と、ステータス564と、ブロック番号565と、ページ番号566とを有する。
LBA561は、FMPK40の論理ページ562の先頭アドレスを示す情報である。
論理ページ番号562は、LBA561に対応する論理ページを一意に識別可能な情報である。
論理ページサイズ563は、論理ページ番号562に対応する論理ページのサイズを示す情報である。
ステータス564は、論理ページ番号562に対応する論理ページのステータスを示す情報である。例えば、RAIDグループ101、LDEV110又はプール100に割り当てられている論理ページのステータス564は「有効」、何れにも割り当てられていない論理ページのステータス564は「無効」となる。また、余剰容量として確保された論理ページのステータス564は「使用不可」となる。
ブロック番号565は、論理ページ番号562に対応する物理的なページの属する物理的なブロックを一意に識別可能な情報である。
ページ番号566は、論理ページ番号561に対応する物理的なページを一意に識別可能な情報である。
例えば、図15において、LBA561「8192」〜「16383」に対応する論理ページの論理ページ番号562は「2」であり、その論理ページのサイズ563は「16KB」であり、その論理ページは「有効」(ステータス564)である。そして、その論理ページはページ番号566「2」の物理的なページと対応付けられており、その物理的なページはブロック番号565「2」のブロックに属する。
<RAIDグループに余剰容量を設定する処理>
本処理は、図4に示すRAIDグループに余剰容量を設定した場合に対応する。
図16は、RAIDグループ作成処理の一例を示すフローチャートである。
ストレージコントローラ20は、管理計算機12から、RAIDグループ作成要求を受信する(S101)。
ストレージコントローラ20は、FMPK40の最大容量を用いて、RAIDグループの最大容量(以下「RAID最大容量」という)を算出する(S102)。
ストレージコントローラ20は、管理計算機12に対して、RAID最大容量を提示する(S103)。ストレージコントローラ20は、RAID最大容量を含むGUIを生成し、管理計算機12に提示してもよい。
ストレージコントローラ20は、管理計算機12から、ユーザの入力したRAIDグループの使用可能容量(以下「RAID使用可能容量」という)を受信する(S104)。
ストレージコントローラ20は、その入力されたRAID使用可能容量(V)と、RAID最大容量(Vmax)とを比較する(S105)。
「RAID使用可能容量(V)>RAID最大容量(Vmax)」の場合(S105:V>Vmax)、ストレージコントローラ20は、管理計算機12に対してエラーを通知し(S120)、当該処理を終了する(END)。
「RAID使用可能容量(V)=RAID最大容量(Vmax)」の場合(S105:V=Vmax)、ストレージコントローラ20は、後述のステップS110へ進む。
「RAID使用可能容量(V)<RAID最大容量(Vmax)」の場合(S105:V<Vmax)、ストレージコントローラ20は、「書換回数の増加率」を含むGUIを生成し、管理計算機12に通知する(S106)。
ストレージコントローラ20は、RAID使用可能容量から、各FMPK40の使用可能容量を算出する。そして、ストレージコントローラ20は、各FMPK40に対して使用可能容量を設定する設定コマンドを送信する(S107)。例えば、RAID使用可能容量がRAID最大容量の80%に設定された場合、ストレージコントローラ20は、FMPK40の最大容量の80%を使用可能容量と設定する旨を含む設定コマンドを生成し、その設定コマンドを各FMPK40に送信する。
FMPKコントローラ50は、その設定コマンドに含まれる使用可能容量に対応する論理物理変換テーブル520を生成する(S108)。つまり、FMPKコントローラ50は、論理物理変換テーブル520の使用可能容量に対応するLBAのステータスを「無効」から「有効」に設定する。さらに、FMPKコントローラ50は、論理物理変換テーブル520の余剰容量に対するLBAのステータスを「使用不可」に設定する。ここで、FMPKコントローラ50は、LBAの大きい方から小さい方へステータスを「使用不可」に設定してもよい。
FMPK40は、ストレージコントローラ20に対して、使用可能容量の設定完了を通知する(S109)。
ストレージコントローラ20は、各FMPK40からの設定完了の通知を受けて、RAID使用可能容量を設定し(S110)、当該処理を終了する(END)。
上記の処理において、FMPK40に送信される設定コマンドには、使用可能容量と余剰容量との割合が含まれてもよいし、FMPK40に確保する使用可能容量のサイズが含まれてもよいし、FMPK40に設定する余剰容量のサイズが含まれてもよい。
<LDEVに余剰容量を設定する処理>
本処理は、図6に示すLDEVに余剰容量を設定した場合に対応する。
図17は、LDEVの作成に関する処理例を示すフローチャートである。
ストレージコントローラ20は、管理計算機12から、LDEV作成要求を受信する(S201)。
ストレージコントローラ20は、管理計算機12から、LDEVの容量および書換頻度の設定情報を受信する(S202)。書換頻度には、「高」又は「低」の何れかが設定される。
ストレージコントローラ20は、各FMPK40に対して、先頭LBA、LBA長および書換頻度を含む設定コマンドを送信する(S203)。
その設定コマンドを受信したFMPK40は、先頭LBAおよびLBA長から、使用容量を算出し、使用容量に対応する論理物理変換テーブル520を生成する(S204)。つまり、FMPK40は、論理物理変換テーブル520の使用可能容量に対応するLBAのステータスを「無効」から「有効」にする。
FMPK40は、書換頻度が「高」又は「低」の何れであるかを判断する(S205)。
書換頻度が「高」の場合(S205:書換頻度「低」)、FMPK40は、後述する第1余剰設定処理を実行し(S220)、ステップS208へ進む。
書換頻度が「低」の場合(S205:書換頻度「高」)、FMPK40は、使用可能容量を算出および設定する(S206)。
FMPK40は、ストレージコントローラ20に対して、使用可能容量に設定した領域の先頭LBA及びLBA長を通知する(S207)。
ストレージコントローラ20は、FMPK40に対応するドライブ個別管理テーブル320の使用可能容量と、FMPK40から通知された使用可能容量との差分を算出する(S208)。
差分がない場合(S209:なし)、ストレージコントローラ20は、当該処理を終了する(END)。
差分がある場合(S209:あり)、ストレージコントローラ20は、そのドライブ個別管理テーブル320の使用可能容量を、FMPK40から通知された使用可能容量に修正する(S210)。
ストレージコントローラ20は、FMPK40から通知された先頭LBAおよびLBA長に従って、ドライブ個別管理テーブル320のチャンク番号の一部を「使用不可」に更新し(S211)、当該処理を終了する(END)。
上記の処理において、FMPK40に送信される設定コマンドには、使用可能容量と余剰容量との割合が含まれてもよいし、FMPK40に確保する使用可能容量のサイズが含まれてもよいし、FMPK40に設定する余剰容量のサイズが含まれてもよい。
図18は、図17の第1余剰容量設定処理の詳細を示すフローチャートである。
FMPKコントローラ50は、必要な余剰容量を確保可能であるか否かを判定する(S231)。書換頻度「高」の場合に必要な余剰容量は、FMPK40に確保する使用可能容量の所定の割合(例えば30%)としてもよいし、ストレージコントローラ20から指定されてもよい。
必要な余剰容量を確保不可能な場合(S231:NO)、FMPKコントローラ50は、ストレージコントローラ20に対して、余剰容量を確保できないため、LDEV作成が不可能である旨のエラーを通知する(S241)。そのエラー通知を受けたストレージコントローラ20は、管理計算機12に対して、LDEV作成が失敗した旨のエラーを通知し(S242)、当該処理を終了する(END)。
必要な余剰容量を確保可能な場合(S231:YES)、FMPKコントローラ50は、論理物理変換テーブル520において、余剰容量として確保するLBAのステータスを「使用不可」に設定する(S232)。ここで、FMPKコントローラ50は、LBAの大きい方から小さい方へステータスを「使用不可」に設定してもよい。
FMPKコントローラ50は、使用可能容量を算出する(S233)。そして、FMPKコントローラ50は、ストレージコントローラ20に対して、使用可能容量に設定した領域の先頭LBA及びLBA長と、余剰容量に設定した領域の先頭LBA及びLBA長とを通知し(S234)、図17のステップS208へ進む(戻る)。
<仮想ボリュームに対するライト時に余剰容量を設定する処理>
本処理は、図7に示す仮想ボリュームに対するライト要求に基づいて余剰容量を設定する場合に対応する。
図19は、仮想ボリューム作成処理の一例を示すフローチャートである。
ストレージコントローラ20は、管理計算機12から、仮想ボリューム作成要求を受信する(S301)。
ストレージコントローラ20は、仮想ボリュームの容量および書換頻度の設定情報を受信する(S302)。
ストレージコントローラ20は、仮想ボリューム管理テーブル260に、新たに仮想ボリュームを登録し(S303)、当該処理を終了する(END)。
図20は、仮想ボリュームライト処理の一例を示すフローチャートである。
ストレージコントローラ20は、ホスト計算機11から仮想ボリュームに対するライト要求を受けると、先頭LBA、LBA長および書換頻度を含むチャンク割当コマンドを生成し、FMPK40へ送信する(S311)。ここで、書換頻度は、ライト要求を受けた仮想ボリュームの設定に対応する。
FMPKコントローラ50は、先頭LBAおよびLBA長から、必要なチャンクを算出し、そのチャンクを論理物理変換テーブル520に確保する(S312)。
FMPKコントローラ50は、論理物理変換テーブル520において、その確保したLBAのステータスを「無効」から「有効」に変更する(S313)。
FMPKコントローラ50は、そのチャンクの書換属性が「高」又は「低」の何れであるかを判定する(S314)。
書換頻度が「高」の場合、後述する第2余剰容量設定処理を実行する(S331)。そして、ストレージコントローラ20は、FMPK40からエラーが通知されたか否かを判定する(S332)。成功が通知された場合(S332:NO)、ストレージコントローラ20は、ステップS317へ進む。エラーが通知された場合(S332:YES)、ストレージコントローラ20は、同じプール100内の別のRAIDグループを選択し(S333)、ステップS311へ戻る。別のRAIDグループに余剰容量を確保できる可能性があるからである。
書換頻度が「低」の場合、FMPKコントローラ50は、使用可能容量を算出する。そして、FMPKコントローラ50は、ストレージコントローラ20に対して、使用可能容量に設定した領域の先頭LBA及びLBA長を通知する(S316)。
ストレージコントローラ20は、対応するドライブ個別管理テーブル320の使用可能容量と、FMPK40から通知された使用可能容量との差分を算出する(S317)。
差分がない場合(S318:なし)、ストレージコントローラ20は、当該処理を終了する(END)。
差分がある場合(S318:あり)、ストレージコントローラ20は、ドライブ個別管理テーブル320の使用可能容量を修正すると共に、プール100の使用可能容量を修正する(S319)。
ストレージコントローラ20は、FMPK40から通知された先頭LBAおよびLBA長に従って、ドライブ個別管理テーブル320のチャンク番号の一部を「使用不可」に変更し(S320)、当該処理を終了する(END)。
上記の処理において、FMPK40に送信されるチャンク割当コマンドには、チャンクの大きさに対する余剰容量の割合が含まれてもよいし、FMPK40に設定する余剰容量のサイズが含まれてもよい。
図21は、図20の第2余剰容量設定処理の詳細を示すフローチャートである。
FMPKコントローラ50は、必要な余剰容量を確保可能であるか否かを判定する(S401)。書換頻度「高」の場合に必要な余剰容量は、チャンクのサイズの所定の割合(例えば30%)としてもよいし、ストレージコントローラ20から指定されてもよい。
必要な余剰容量を確保不可能な場合(S401:NO)、FMPKコントローラ50は、ストレージコントローラ20に対して、余剰容量を確保できないため、そのRAIDグループにチャンクの割当が不可能である旨のエラーを通知し(S411)、図20のステップ332へ進む。つまり、図20のステップS332において「YES」と判定される。
必要な余剰容量を確保可能な場合(S401:YES)、FMPKコントローラ50は、論理物理変換テーブル520において、余剰容量として確保するLBAのステータスを「使用不可」に設定する(S402)。ここで、FMPKコントローラ50は、LBAの大きい方から小さい方へステータスを「使用不可」に設定してもよい。つまり、書換頻度「高」のチャンクを割り当てたRAIDグループの余剰容量は増加する。
FMPKコントローラ50は、使用可能容量を算出する(S403)。そして、FMPKコントローラ50は、ストレージコントローラ20に対して、使用可能容量に設定した領域の先頭LBA及びLBA長と、余剰容量に設定した領域の先頭LBA及びLBA長とを通知し、図20のステップS332へ進む。つまり、図20のステップS332において「NO」と判断される。
なお、上述の実施例では、FMPKコントローラ50が、ストレージコントローラ20からの指示に基づいて、自己の管理する論理物理変換テーブル520における使用可能なLBAの範囲(使用不可能なLBAの範囲)を決定および管理している。しかし、ストレージコントローラ20が、各FMPKの使用可能なLBAの範囲(使用不可能なLBAの範囲)を決定および管理し、FMPKの使用可能なLBAの範囲のみをライト先として指定するとしてもよい。これによっても、上述と同様の目的を達成することができる。
上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
例えば、以下のような実施例であってもよい。
ストレージコントローラ20は、仮想ボリュームを生成する。しかし、ストレージコントローラ20は、その仮想ボリュームに予め書換頻度を設定しない。そして、ストレージコントローラ20は、仮想ボリュームの仮想チャンク151に割り当てられたチャンク152毎に、ライト頻度を測定する。ストレージコントローラ20は、チャンク管理テーブル300において、測定したライト頻度が閾値を超えているチャンク152における書換頻度305を「高」とし、測定したライト頻度が閾値以下のチャンク152における書換頻度305を「低」とする。ストレージコントローラ20は、書換頻度305が「高」のチャンクの増加に従って、余剰容量を増加させる。
以上の処理によれば、仮想ボリュームに書換頻度が予め設定されない場合であっても、ストレージコントローラ20が、RAIDグループの書換頻度に応じた適切な余剰容量を確保することができる。
1…ストレージシステム 10…ストレージ装置 20…ストレージコントローラ 40…FMPK 50…FMPKコントローラ

Claims (9)

  1. それぞれ書換回数に上限がある複数の物理記憶領域と、前記複数の物理記憶領域に対するデータのI/O(Input/Output)を制御する第1プロセッサとを有する記憶媒体と、
    前記記憶媒体に接続された第2プロセッサとを備え、
    各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされ、
    前記第2プロセッサは、
    論理ボリュームをリード要求またはライト要求送信元に提供し、
    前記論理ボリュームを構成する複数の論理記憶領域の総容量である論理記憶容量と、前記複数の論理記憶領域のうちのライト先とされ得る1以上の論理記憶領域である使用可能論理領域群の容量である使用可能容量と、を管理し、
    前記論理ボリュームに対するライト頻度を測定し、
    前記測定したライト頻度と所定の閾値とを比較し、
    少なくとも前記比較した結果に基づき前記論理記憶容量のうちの前記使用可能容量を変化させ、
    前記第1プロセッサは、
    前記第2プロセッサから送信される前記使用可能容量を設定する設定コマンドに基づいて、前記複数の論理記憶領域から前記使用可能論理領域群を決定し、
    前記複数の論理記憶領域と前記使用可能論理領域群とを対応付けて管理し、
    前記使用可能論理記憶領域のうちのライト先論理記憶領域に対していずれの物理記憶領域も割り当てられていない場合、又は前記ライト先論理記憶領域に対して割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合、前記複数の物理記憶領域のうちのいずれかの空き物理記憶領域を前記ライト先論理記憶領域に対して割り当て、
    前記割り当てた空き物理記憶領域に対して前記ライト対象データを書き込
    ストレージシステム。
  2. 前記測定したライト頻度が前記所定の閾値以上の場合、前記論理記憶容量のうちの前記使用可能容量を減少させ、
    前記測定したライト頻度が前記所定の閾値以下の場合、前記論理記憶容量のうちの前記使用可能容量を増加させる
    請求項1に記載のストレージシステム。
  3. 前記設定コマンドには、前記論理記憶容量に対する前記使用可能容量の割合が含まれており、
    前記第1プロセッサは、前記設定コマンドに含まれる割合に従って、前記使用可能論理領域群を決定する
    請求項に記載のストレージシステム。
  4. 前記第2プロセッサは、
    前記論理ボリューム容量の入力を受領すると
    前記入力された論理ボリュームの容量を使用可能容量とした場合の物理記憶領域の書換回数の最大値に関する情報を算出し、
    前記算出した情報を出力する
    請求項1に記載のストレージシステム。
  5. 前記第2プロセッサを管理する管理計算機をさらに備え、
    前記管理計算機は、
    前記論理ボリューム容量の入力を受領すると
    前記入力された論理ボリューム容量を使用可能容量とした場合の、物理記憶領域の書換回数の最大値に関する情報を算出し、
    前記算出した情報を出力する
    請求項1に記載のストレージシステム。
  6. それぞれ書換回数に上限がある複数の物理記憶領域と、前記複数の物理記憶領域に対するデータのI/O(Input/Output)を制御する第1プロセッサとを有する記憶媒体と、
    前記記憶媒体に接続された第2プロセッサとを備え、
    各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされ、
    前記第2プロセッサは、
    Thin Provisioningに従う仮想ボリュームをリード要求またはライト要求送信元に提供し、
    前記仮想ボリュームに割り当て可能な複数の論理記憶領域の総容量である論理記憶容量と、前記複数の論理記憶領域のうちのライト先とされ得る1以上の論理記憶領域である使用可能論理領域群の容量である使用可能容量と、を管理し、
    前記仮想ボリュームに対するライト頻度を測定し、
    前記測定したライト頻度と所定の閾値とを比較し、
    少なくとも前記比較した結果に基づき前記論理記憶容量のうちの前記使用可能容量を変化させ、
    前記第1プロセッサは、
    前記第2プロセッサから送信される割当コマンドに基づいて、前記複数の論理記憶領域から前記使用可能論理領域群を決定し、
    前記複数の論理記憶領域と前記使用可能論理領域群とを対応付けて管理し、
    前記使用可能論理記憶領域群のうちのライト先論理記憶領域に対していずれの物理記憶領域も割り当てられていない場合、又は、前記ライト先論理記憶領域に対して割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合、前記複数の物理記憶領域のうちのいずれかの空き物理記憶領域を前記ライト先論理記憶領域に対して割り当て、
    前記割り当てた空き物理記憶領域に対して前記ライト対象データを書き込む
    ストレージシステム。
  7. 前記測定したライト頻度が前記所定の閾値以上の場合、前記論理記憶容量のうちの前記使用可能容量を減少させ、
    前記測定したライト頻度が前記所定の閾値以下の場合、前記論理記憶容量のうちの前記使用可能容量を増加させる
    請求項6に記載のストレージシステム。
  8. 前記割当コマンドには、前記仮想ボリュームに対するライト頻度に関する情報が含まれており、
    前記第1プロセッサは、前記割当コマンドに含まれるライト頻度に関する情報に従って、前記使用可能論理領域群を決定する
    請求項に記載のストレージシステム。
  9. それぞれ書換回数に上限がある複数の物理記憶領域と、前記複数の物理記憶領域に対するデータのI/O(Input/Output)を制御する第1プロセッサとを有する記憶媒体と、
    前記記憶媒体に接続された第2プロセッサ
    を備えたストレージ装置において、
    各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされ、
    前記第2プロセッサが、
    論理ボリュームをリード要求またはライト要求送信元に提供し、
    前記論理ボリュームを構成する複数の論理記憶領域の総容量である論理記憶容量と、前記複数の論理記憶領域のうちのライト先とされ得る1以上の論理記憶領域である使用可能論理領域群の容量である使用可能容量と、を管理し、
    前記論理ボリュームに対するライト頻度を測定し、
    前記測定したライト頻度と所定の閾値とを比較し、
    少なくとも前記比較した結果に基づき前記論理記憶容量のうちの前記使用可能容量を変化させ、
    前記第1プロセッサが、
    前記第2プロセッサから送信される設定コマンドに基づいて、前記複数の論理記憶領域から前記使用可能論理領域群を決定し、
    前記複数の論理記憶領域と前記使用可能論理領域群とを対応付けて管理し、
    前記使用可能論理記憶領域のうちのライト先論理記憶領域に対していずれの物理記憶領域も割り当てられていない場合、又は前記ライト先論理記憶領域に対して割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合、前記複数の物理記憶領域のうちのいずれかの空き物理記憶領域を前記ライト先論理記憶領域に対して割り当て、
    前記割り当てた空き物理記憶領域に対して前記ライト対象データを書き込
    データ記憶方法。
JP2015541380A 2013-10-10 2013-10-10 ストレージシステムおよびデータ記憶方法 Expired - Fee Related JP6006431B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/077590 WO2015052811A1 (ja) 2013-10-10 2013-10-10 ストレージシステムおよびデータ記憶方法

Publications (2)

Publication Number Publication Date
JP6006431B2 true JP6006431B2 (ja) 2016-10-12
JPWO2015052811A1 JPWO2015052811A1 (ja) 2017-03-09

Family

ID=52812658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015541380A Expired - Fee Related JP6006431B2 (ja) 2013-10-10 2013-10-10 ストレージシステムおよびデータ記憶方法

Country Status (3)

Country Link
US (1) US9817768B2 (ja)
JP (1) JP6006431B2 (ja)
WO (1) WO2015052811A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9654411B2 (en) 2013-08-27 2017-05-16 Vmware, Inc. Virtual machine deployment and management engine
US9823881B2 (en) * 2013-12-23 2017-11-21 Vmware, Inc. Ensuring storage availability for virtual machines
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9921910B2 (en) 2015-02-19 2018-03-20 Netapp, Inc. Virtual chunk service based data recovery in a distributed data storage system
WO2016181528A1 (ja) * 2015-05-13 2016-11-17 株式会社日立製作所 ストレージ装置
US20170116080A1 (en) * 2015-05-29 2017-04-27 International Business Machines Corporation Requesting avoidance/preference of which dispersed storage units to use on a write or retrieval request
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
JP6403162B2 (ja) 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US20170177224A1 (en) * 2015-12-21 2017-06-22 Oracle International Corporation Dynamic storage transitions employing tiered range volumes
WO2018116392A1 (ja) * 2016-12-21 2018-06-28 株式会社日立製作所 情報処理システム、及び、情報処理方法
JP6681512B2 (ja) 2017-02-20 2020-04-15 株式会社日立製作所 ストレージシステム及び記憶制御方法
KR102513941B1 (ko) 2018-06-19 2023-03-27 현대자동차주식회사 자율 주행 제어 장치, 그를 가지는 차량 및 그 제어 방법
US11137915B2 (en) * 2019-06-27 2021-10-05 International Business Machines Corporation Dynamic logical storage capacity adjustment for storage drives
US12066985B2 (en) 2020-05-01 2024-08-20 EMC IP Holding Company LLC Token-based offload data transfer with synchronous replication

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196609A (ja) * 2004-01-09 2005-07-21 Matsushita Electric Ind Co Ltd 情報記録フォーマットおよび情報記録媒体
US20090287878A1 (en) * 2008-05-14 2009-11-19 Hitachi, Ltd. Storage apparatus using flash memory
JP2012058770A (ja) * 2010-09-03 2012-03-22 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2013046464A1 (ja) * 2011-09-30 2013-04-04 株式会社日立製作所 不揮発半導体記憶媒体を有するストレージシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8412909B2 (en) * 2009-04-08 2013-04-02 Samsung Electronics Co., Ltd. Defining and changing spare space and user space in a storage apparatus
US8214580B2 (en) * 2009-10-23 2012-07-03 International Business Machines Corporation Solid state drive with adjustable drive life and capacity

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196609A (ja) * 2004-01-09 2005-07-21 Matsushita Electric Ind Co Ltd 情報記録フォーマットおよび情報記録媒体
US20080046675A1 (en) * 2004-01-09 2008-02-21 Takanori Okada Information Recording Medium
US20090287878A1 (en) * 2008-05-14 2009-11-19 Hitachi, Ltd. Storage apparatus using flash memory
JP2009301525A (ja) * 2008-05-14 2009-12-24 Hitachi Ltd フラッシュメモリを用いたストレージ装置
JP2012058770A (ja) * 2010-09-03 2012-03-22 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2013046464A1 (ja) * 2011-09-30 2013-04-04 株式会社日立製作所 不揮発半導体記憶媒体を有するストレージシステム

Also Published As

Publication number Publication date
WO2015052811A1 (ja) 2015-04-16
JPWO2015052811A1 (ja) 2017-03-09
US20160019159A1 (en) 2016-01-21
US9817768B2 (en) 2017-11-14

Similar Documents

Publication Publication Date Title
JP6006431B2 (ja) ストレージシステムおよびデータ記憶方法
US11474702B2 (en) Storage device that writes data from a host during garbage collection
JP6073471B2 (ja) ストレージ装置
US10162536B2 (en) Storage apparatus and storage control method
US9323667B2 (en) System and method for managing trim operations in a flash memory system using mapping tables and block status tables
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US10628088B2 (en) Computer system
US10360144B2 (en) Storage apparatus and non-volatile memory device including a controller to selectively compress data based on an update frequency level
US9760292B2 (en) Storage system and storage control method
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
JPWO2015015611A1 (ja) ストレージシステム及びデータライト方法
JP2018142240A (ja) メモリシステム
JP2017162260A (ja) メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法
JPWO2018142622A1 (ja) 計算機
US10915441B2 (en) Storage system having non-volatile memory device
WO2018150561A1 (ja) ストレージシステム及び記憶制御方法
JP6313242B2 (ja) メモリシステム及びプログラム
WO2018002999A1 (ja) 記憶デバイス及びストレージ装置
JP6276208B2 (ja) メモリシステム及びプログラム
JP2015191295A (ja) メモリコントローラ、メモリシステム及びメモリ制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160729

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: 20160823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160908

R150 Certificate of patent or registration of utility model

Ref document number: 6006431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees