(57)【特許請求の範囲】
【請求項１】
それぞれ書換回数に上限がある複数の物理記憶領域と、前記複数の物理記憶領域に対するデータのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を制御する第１プロセッサとを有する記憶媒体と、
前記記憶媒体に接続された第２プロセッサとを備え、
各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされ、
前記第２プロセッサは、
論理ボリュームをリード要求またはライト要求送信元に提供し、
前記論理ボリュームを構成する複数の論理記憶領域の総容量である論理記憶容量と、前記複数の論理記憶領域のうちのライト先とされ得る１以上の論理記憶領域である使用可能論理領域群の容量である使用可能容量と、を管理し、
前記論理ボリュームに対するライト頻度を測定し、
前記測定したライト頻度と所定の閾値とを比較し、
少なくとも前記比較した結果に基づき前記論理記憶容量のうちの前記使用可能容量を変化させ、
前記第１プロセッサは、
前記第２プロセッサから送信される前記使用可能容量を設定する設定コマンドに基づいて、前記複数の論理記憶領域から前記使用可能論理領域群を決定し、
前記複数の論理記憶領域と前記使用可能論理領域群とを対応付けて管理し、
前記使用可能論理記憶領域群のうちのライト先論理記憶領域に対していずれの物理記憶領域も割り当てられていない場合、又は、前記ライト先論理記憶領域に対して割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合、前記複数の物理記憶領域のうちのいずれかの空き物理記憶領域を前記ライト先論理記憶領域に対して割り当て、
前記割り当てた空き物理記憶領域に対して前記ライト対象データを書き込む
ストレージシステム。
【請求項２】
前記測定したライト頻度が前記所定の閾値以上の場合、前記論理記憶容量のうちの前記使用可能容量を減少させ、
前記測定したライト頻度が前記所定の閾値以下の場合、前記論理記憶容量のうちの前記使用可能容量を増加させる
請求項１に記載のストレージシステム。
【請求項３】
前記設定コマンドには、前記論理記憶容量に対する前記使用可能容量の割合が含まれており、
前記第１プロセッサは、前記設定コマンドに含まれる割合に従って、前記使用可能論理領域群を決定する
請求項１に記載のストレージシステム。
【請求項４】
前記第２プロセッサは、
前記論理ボリュームの容量の入力を受領すると、
前記入力された論理ボリュームの容量を使用可能容量とした場合の、物理記憶領域の書換回数の最大値に関する情報を算出し、
前記算出した情報を出力する
請求項１に記載のストレージシステム。
【請求項５】
前記第２プロセッサを管理する管理計算機をさらに備え、
前記管理計算機は、
前記論理ボリュームの容量の入力を受領すると、
前記入力された論理ボリュームの容量を使用可能容量とした場合の、物理記憶領域の書換回数の最大値に関する情報を算出し、
前記算出した情報を出力する
請求項１に記載のストレージシステム。
【請求項６】
それぞれ書換回数に上限がある複数の物理記憶領域と、前記複数の物理記憶領域に対するデータのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を制御する第１プロセッサとを有する記憶媒体と、
前記記憶媒体に接続された第２プロセッサとを備え、
各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされ、
前記第２プロセッサは、
Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇに従う仮想ボリュームをリード要求またはライト要求送信元に提供し、
前記仮想ボリュームに割り当て可能な複数の論理記憶領域の総容量である論理記憶容量と、前記複数の論理記憶領域のうちのライト先とされ得る１以上の論理記憶領域である使用可能論理領域群の容量である使用可能容量と、を管理し、
前記仮想ボリュームに対するライト頻度を測定し、
前記測定したライト頻度と所定の閾値とを比較し、
少なくとも前記比較した結果に基づき前記論理記憶容量のうちの前記使用可能容量を変化させ、
前記第１プロセッサは、
前記第２プロセッサから送信される割当コマンドに基づいて、前記複数の論理記憶領域から前記使用可能論理領域群を決定し、
前記複数の論理記憶領域と前記使用可能論理領域群とを対応付けて管理し、
前記使用可能論理記憶領域群のうちのライト先論理記憶領域に対していずれの物理記憶領域も割り当てられていない場合、又は、前記ライト先論理記憶領域に対して割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合、前記複数の物理記憶領域のうちのいずれかの空き物理記憶領域を前記ライト先論理記憶領域に対して割り当て、
前記割り当てた空き物理記憶領域に対して前記ライト対象データを書き込む
ストレージシステム。
【請求項７】
前記測定したライト頻度が前記所定の閾値以上の場合、前記論理記憶容量のうちの前記使用可能容量を減少させ、
前記測定したライト頻度が前記所定の閾値以下の場合、前記論理記憶容量のうちの前記使用可能容量を増加させる
請求項６に記載のストレージシステム。
【請求項８】
前記割当コマンドには、前記仮想ボリュームに対するライト頻度に関する情報が含まれており、
前記第１プロセッサは、前記割当コマンドに含まれるライト頻度に関する情報に従って、前記使用可能論理領域群を決定する
請求項６に記載のストレージシステム。
【請求項９】
それぞれ書換回数に上限がある複数の物理記憶領域と、前記複数の物理記憶領域に対するデータのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を制御する第１プロセッサとを有する記憶媒体と、
前記記憶媒体に接続された第２プロセッサと
を備えたストレージ装置において、
各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされ、
前記第２プロセッサが、
論理ボリュームをリード要求またはライト要求送信元に提供し、
前記論理ボリュームを構成する複数の論理記憶領域の総容量である論理記憶容量と、前記複数の論理記憶領域のうちのライト先とされ得る１以上の論理記憶領域である使用可能論理領域群の容量である使用可能容量と、を管理し、
前記論理ボリュームに対するライト頻度を測定し、
前記測定したライト頻度と所定の閾値とを比較し、
少なくとも前記比較した結果に基づき前記論理記憶容量のうちの前記使用可能容量を変化させ、
前記第１プロセッサが、
前記第２プロセッサから送信される設定コマンドに基づいて、前記複数の論理記憶領域から前記使用可能論理領域群を決定し、
前記複数の論理記憶領域と前記使用可能論理領域群とを対応付けて管理し、
前記使用可能論理記憶領域群のうちのライト先論理記憶領域に対していずれの物理記憶領域も割り当てられていない場合、又は、前記ライト先論理記憶領域に対して割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合、前記複数の物理記憶領域のうちのいずれかの空き物理記憶領域を前記ライト先論理記憶領域に対して割り当て、
前記割り当てた空き物理記憶領域に対して前記ライト対象データを書き込む
データ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムおよびデータ記憶方法の技術に関する。
【背景技術】
【０００２】
フラッシュメモリは、一般に、データを書き換えるためには、そのデータを記憶している領域からデータを消去する必要があり、データの書換回数（言い換えれば消去回数）に上限がある。この上限を超えたフラッシュメモリは、新たにデータを書き込めなかったり、書き込まれたデータにエラーが発生する確率が高くなったりする。フラッシュメモリの書換回数がその上限に達するまでの期間を、フラッシュメモリの「寿命」という。したがって、複数のフラッシュメモリによって構成されるＦＭＰＫ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｐａｃｋａｇｅ）にも寿命が存在する。【０００３】
特許文献１には、ＦＭＰＫの記憶領域をライト領域と固定サイズのユーザ領域とに分割し、ユーザ領域に複数の論理的な記憶装置であるＬＤＥＶ（Ｌｏｇｉｃａｌ  Ｄｅｖｉｃｅ）を設定し、ＬＤＥＶへのライト頻度に応じて、ＬＤＥＶに割り当てるライト領域のサイズを変更する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−０３３３９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、フラッシュメモリのような書換回数の上限を有する記憶媒体に書換頻度の高いデータを格納した場合、その記憶媒体の寿命は短くなる。ストレージ装置の用途は様々であり、例えば、書換頻度の低い（リードがメインの）データを格納するストレージ装置は、その記憶媒体の寿命は短くならない。このような場合であっても、特許文献１は、ライト領域を予め確保しているため、論理的な記憶容量を大きくすることはできない。つまり、このような場合、予め確保しているライト領域は、無駄な領域となってしまう。【０００６】
そこで、本発明の目的は、フラッシュメモリ等のように書換回数の上限を有する記憶媒体の寿命と論理的な記憶容量とのバランスを良好に保つことのできるストレージシステムおよびデータ記憶方法を実現することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係るストレージシステムは、それぞれ書換回数に上限がある複数の物理記憶領域と、複数の物理記憶領域に対するデータのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）を制御する媒体コントローラとを有する記憶媒体と、記憶媒体に接続されたストレージコントローラとを備える。
各物理記憶領域は、記憶されているデータの書換のためにデータが消去された場合に、書換回数が増え、且つ、空き物理記憶領域とされる。
媒体コントローラは、複数の論理記憶領域のうちのライト先論理記憶領域にいずれの物理記憶領域も割り当てられていない又はそのライト先論理記憶領域に割り当てられている物理記憶領域にライト対象データを記憶可能な空きが無い場合に、複数の物理記憶領域のうちのいずれかの空き物理記憶領域をライト先論理記憶領域に割り当て、割り当てた空き物理記憶領域にライト対象データを書き込む。
複数の論理記憶領域は、論理記憶容量のうちの使用可能容量と複数の物理記憶領域の書換頻度との関係に基づいて決定された使用可能論理領域群を含む。論理記憶容量は、複数の論理記憶領域の総容量である。使用可能領域群は、複数の論理記憶領域のうちライト先論理記憶領域とされ得る１以上の論理記憶領域である。使用可能容量は、複数の論理記憶領域のうちライト先論理記憶領域とされ得る１以上の論理記憶領域である使用可能論理領域群の容量である。
【発明の効果】
【０００８】
本発明によれば、書換回数の上限を有する記憶媒体の寿命と論理的な記憶容量とのバランス良好に保つこことのできるストレージ装置およびデータ記憶方法を実現することができる。
【図面の簡単な説明】
【０００９】
【図１】ストレージシステムの構成例を示す。
【図２】ＦＭＰＫの構成例を示す。
【図３】ＦＭ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）チップの構成例を示す。
【図４】ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）グループに対して余剰容量を設定した場合の概要図である。
【図５】ＲＡＩＤグループの使用可能容量を設定するＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の構成例を示す。
【図６】ＬＤＥＶに対して余剰容量を設定した場合の概要図を示す。
【図７】仮想ボリュームに対して余剰容量を設定した場合の概要図である。
【図８】ストレージコントローラの有する機能およびデータの例を示す。
【図９】ドライブ管理テーブルの構成例を示す。
【図１０】プール管理テーブルの構成例を示す。
【図１１】チャンク管理テーブルの構成例を示す。
【図１２】仮想ボリューム管理テーブルの構成例を示す。
【図１３】ドライブ個別管理テーブルの構成例を示す。
【図１４】ＦＭＰＫの有する機能およびデータの例を示す。
【図１５】論理物理変換テーブルの構成例を示す。
【図１６】ＲＡＩＤグループ作成処理の一例を示すフローチャートである。
【図１７】ＬＤＥＶの作成に関する処理例を示すフローチャートである。
【図１８】図１７の第１余剰容量設定処理の詳細を示すフローチャートである。
【図１９】仮想ボリューム作成処理の一例を示すフローチャートである。
【図２０】仮想ボリュームライト処理の一例を示すフローチャートである。
【図２１】図２０の第２余剰容量設定処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、書換回数の上限を有する記憶媒体として、ＦＭＰＫ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｐａｃｋａｇｅ）を例に取り、図面を参照しながら、一実施例について説明する。
【００１１】
なお、以後の説明では、「ａａａテーブル」等の表現にて情報を説明することがあるが、これら情報はテーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」等について「ａａａ情報」と呼ぶことがある。
【００１２】
また、各情報の内容を説明する際に、「番号」、「名称」という表現の識別情報が採用されるが、他種の識別情報が使用されて良い。
【００１３】
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムは、プロセッサによって実行されることで定められた処理をメモリ及び通信ポート（ネットワークＩ／Ｆ）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、監視システム等の計算機が行う処理としてもよい。また、プログラムの一部または全ては、専用ハードウェアによって実現されてもよい。また、各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶媒体によって各計算機にインストールされてもよい。
【００１４】
＜ストレージシステム＞
図１は、ストレージシステムの構成例を示す。
ストレージシステムは、ホスト計算機１１と、管理計算機１２と、ストレージ装置１０とを備える。ホスト計算機１１とストレージ装置１０とは、例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１３等の通信ネットワークを通じて接続されている。管理計算機１２とストレージ装置１０とは、例えば、所定の通信線１５を通じて接続されている。
【００１５】
ホスト計算機１１は、ストレージ装置１０に対してライト要求を送信することで、ストレージ装置１０にデータをライトする。ホスト計算機１１は、ストレージ装置１０に対してリード要求を送信することで、ストレージ装置１０からデータをリードする。
【００１６】
管理計算機１２は、ユーザがストレージ装置１０を管理及び制御ための装置である。管理計算機１２は、キーボード及びマウス等の入力デバイスと、ディスプレイ等の出力デバイスを備えてもよい。
【００１７】
ストレージ装置１０は、ストレージコントローラ２０と、ドライブボックス２１とを備える。ドライブボックス２１は、複数のＦＭＰＫ４０を備える。ドライブボックス２１は、さらに、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）４１を備えてもよい。
【００１８】
ストレージコントローラ２０は、ホストＩ／Ｆ３３と、プロセッサ３１と、メモリ３２と、ドライブＩ／Ｆ３４、管理Ｉ／Ｆ３５とを備え、それら要素３１〜３５は、データ送受信が可能な内部バス３６で接続されている。
【００１９】
ホストＩ／Ｆ３３は、ストレージコントローラ２０をＳＡＮ１３に接続するためのＩ／Ｆである。管理Ｉ／Ｆ３５は、ストレージコントローラ２０と管理計算機１２とを接続するためのＩ／Ｆである。
【００２０】
プロセッサ３１は、コンピュータプログラム（以下「プログラム」という）等を実行する。プロセッサがプログラムを実行することにより、ストレージ装置１０の備える様々な機能が実現される。
【００２１】
メモリ３２は、データを記憶する。メモリ３２は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成される揮発性半導体メモリであってもよいし、フラッシュメモリ等で構成される不揮発性半導体メモリであってもよい。メモリ３２に記憶されたプログラム及びデータは、プロセッサ３１、ホストＩ／Ｆ３３及びドライブＩ／Ｆ３４等からアクセスされる。
【００２２】
ドライブＩ／Ｆ３４は、ストレージコントローラ２０と、ＦＭＰＫ４０およびＨＤＤ４１を接続するためのＩ／Ｆである。
【００２３】
図２は、ＦＭＰＫ４０の構成例を示す。
ＦＭＰＫ４０は、ＦＭＰＫコントローラ５０と、複数のＦＭチップ５１とを備える。
【００２４】
ＦＭＰＫコントローラ５０は、プロセッサ６１と、メモリ６２と、ＦＭＰＫ  Ｉ／Ｆ６３と、ＦＭチップＩ／Ｆ６４とを有する。これらの要素６１〜６４は、データ送受信可能な内部バス６５で接続されており、双方向にデータを送受信できる。
【００２５】
プロセッサ６１は、プログラム等を実行する。プロセッサ６１がプログラムを実行することにより、ＦＭＰＫ４０の備える様々な機能が実現される。
【００２６】
メモリ６２は、データを記憶する。メモリは、例えば、ＤＲＡＭ等で構成される揮発性半導体メモリであってもよいし、フラッシュメモリ等で構成される不揮発性半導体メモリであってもよい。メモリ６２に記憶されたプログラム及びデータは、プロセッサ６１、ＦＭＰＫ  Ｉ／Ｆ６３及びＦＭチップＩ／Ｆ６４等からアクセスされる。
【００２７】
ＦＭＰＫ  Ｉ／Ｆ６３は、ＦＭＰＫ４０とストレージコントローラ２０とを接続するためのＩ／Ｆである。ＦＭチップＩ／Ｆ６４は、ＦＭＰＫコントローラ５０（プロセッサ）と、ＦＭチップ５１とを接続するためのＩ／Ｆである。
【００２８】
図３は、ＦＭチップ５１の構成例を示す。
ＦＭチップ５１は、例えばＮＡＮＤ型のＦＭチップであり、ＦＭコントローラ７０と、複数のブロック７１とを有する。そして、ブロック７１は、複数のページ７２で構成されている。ＦＭチップ５１は、その特性上、ページ単位でデータのリードおよびライトを行う必要がある。そして、ＦＭチップ５１は、その特性上、ブロック単位でデータの消去を行う必要がある。
【００２９】
また、ＦＭチップ５１は、ライト済みのページに対してデータをオーバーライトすることができない。したがって、ＦＭＰＫコントローラ５０は、ライト済みのページにオーバーライトする場合には、オーバーライトのデータを未使用のページにライトし、元のライト済みのページへのアクセスを不能とする。アクセス不能となったデータは、そのページの属するブロックが消去処理されるタイミングで消去される。
【００３０】
所定の回数ライト及び消去（つまり、書き換え）が実行されたページ（ブロック）には、データを新たにライトすることができなくなる。これは、ページ（ブロック）が寿命に達したことを意味する。したがって、書き換え頻度の高いページ（ブロック）は寿命が短い。そこで、ＦＭＰＫ４０全体で、各ページ（ブロック）の書き換え頻度を平準化することにより、特定のページ（ブロック）だけが早く寿命に達することを防ぐことができる。
【００３１】
そしてさらに、本実施例に示すように、不使用容量として確保する余剰容量を大きくすれば、各ページ（ブロック）の書き換え頻度はさらに低くなる。つまり、ＦＭＰＫ４０全体の寿命を長くすることができるのである。
【００３２】
＜概要＞
次に、本実施例で示す３つのパターンの概要を述べる。
【００３３】
図４は、ＲＡＩＤグループに対して余剰容量を設定した場合の概要図である。
ＲＡＩＤグループ１０１は、複数のＦＭＰＫ４０によって構成される。例えば、４つのＦＭＰＫ４０を用いて「３Ｄ＋１Ｐ」のＲＡＩＤ５のＲＡＩＤグループ１０１を構成した場合、そのＲＡＩＤグループ１０１は、３つのＦＭＰＫ４０を合計した記憶容量を提供する（１つのＦＭＰＫ４０の記憶容量はパリティ分となる）。
【００３４】
ストレージコントローラ２０は、「ＲＡＩＤグループの総記憶容量＝使用可能容量＋余剰容量」とし、ＲＡＩＤグループ１０１の総記憶容量に対する使用可能容量と余剰容量との割合を設定する。このＲＡＩＤグループ１０１には、この使用可能容量までデータを格納できる。言い換えると、このＲＡＩＤグループ１０１には、この使用可能容量よりも多くのデータを格納することはできない。
【００３５】
ここで、余剰容量を大きくすると使用可能容量は小さくなるが、その分、ＲＡＩＤグループ１０１を構成するＦＭＰＫ４０の寿命は長くなる。なぜなら、余剰容量を多くすることにより、ＲＡＩＤグループ１０１に対して所定回数のライトが実行された場合におけるＦＭチップ５１の１ブロック当たりの書換回数が平均的に減少するからである。
【００３６】
反対に、余剰容量を小さくすると使用可能容量は大きくなるが、その分、ＲＡＩＤグループ１０１を構成するＦＭＰＫ４０の寿命は短くなる。なぜなら、余剰容量を小さくすることにより、ＲＡＩＤグループに対して所定回数のライトが実行され場合におけるＦＭチップ５１の１ブロック当たりの書換回数が平均的に増加するからである。
【００３７】
したがって、書換頻度が高くなることが想定される場合、余剰容量を大きく設定したＲＡＩＤグループ１０１を構成することにより、ＦＭＰＫ４０の寿命を長くすることができる。書換頻度が低いことが想定される場合、余剰容量を小さく設定したＲＡＩＤグループ１０１を構成することにより、大きな使用可能容量を確保することができる。
【００３８】
つまり、ストレージコントローラ２０は、ＲＡＩＤグループに基づくボリュームに対する書換回数の総数を増加させる場合（寿命を長くする場合）、使用可能容量と余剰容量との差分が小さくなるように使用可能容量および余剰容量を設定してＲＡＩＤグループを構築する。すなわち、ボリューム（使用可能容量）が小さければ、そのボリュームの書換可能回数は増加し、反対に、ボリューム（使用可能容量）が大きければ、そのボリュームの書換可能回数は減少する。
【００３９】
ユーザは、ＲＡＩＤグループ１０１を構成する際に余剰容量を設定することができる。余剰容量の設定方法は、使用可能容量または余剰容量のサイズを入力させてもよいし、ＲＡＩＤグループの総記憶容量に対する使用可能容量及び余剰容量の割合（例えば「８０％：２０％」等）を入力させてもよい。
【００４０】
もしくは、ストレージコントローラ２０は、ユーザに、このＲＡＩＤグループ１０１の使用目的から書換頻度が「高」または「低」の何れであるかを選択させ、書換頻度「高」が選択された場合は、所定の大きい方の余剰容量が設定され、書換頻度「低」を選択された場合は、所定の小さい方の余剰容量が設定されてもよい。例えば、ストレージコントローラ２０は、次に示すようなＧＵＩを表示してもよい。
【００４１】
図５は、ＲＡＩＤグループ１０１の使用可能容量を設定するＧＵＩの構成例を示す。
ストレージコントローラ２０は、ＲＡＩＤグループ１０１を構成する際、管理計算機１２に図５に示すようなＧＵＩ９００を表示する。ＧＵＩ９００は、ＲＡＩＤグループ１０１の使用可能容量を入力する入力領域９０１と、書換回数の増加率を表示する表示領域９０２とを有する。
【００４２】
ストレージコントローラ２０は、その入力領域９０１に入力された使用可能容量に基づいて、書換回数の増加率を算出し、その算出結果を表示領域９０２に表示する。入力される使用可能容量が小さくなると、書換回数の増加率は大きくなる。反対に、入力される使用可能容量が大きくなると、書換回数の増加率は小さくなる。
【００４３】
書換回数の増加率は、例えば、「（（ＲＡＩＤグループの使用可能容量の最大値／入力されたＲＡＩＤグループの使用可能容量）−１）×１００％」として算出されてもよい。例えば、入力領域９０１にＲＡＩＤグループの使用可能容量の最大値が入力されると、書換回数の増加率の表示領域９０２に「０％増加」と表示される。例えば、入力領域９２１にＲＡＩＤグループの使用可能容量の最大値の半分の値が入力されると、書換回数の増加率の表示領域９０２に「１００％増加」（つまり、寿命が従来の２倍に延びる）と表示される。なお、上述のＧＵＩ９００の生成および書換回数の増加率の算出等を、管理計算機１２が実行するとしてもよい。
【００４４】
これにより、ユーザは、ＦＭＰＫ４０の寿命と使用可能容量とのバランスを見ながら、適切なＲＡＩＤグループの使用可能容量を設定することができる。
【００４５】
図６は、ＬＤＥＶに対して余剰容量を設定した場合の概要図を示す。
ストレージコントローラ２０は、ＲＡＩＤグループ１０１によって構成された記憶領域を分割し、複数のＬＤＥＶ１１０を構成することができる。例えば、ストレージコントローラ２０は、図６に示すように、「３Ｄ＋１Ｐ」のＲＡＩＤ５のＲＡＩＤグループ１０１によって構成された記憶領域を分割し、２つのＬＤＥＶ（第１ＬＤＥＶ１１０、第２ＬＤＥＶ１１０）を構成する。ストレージコントローラ２０は、ＬＤＥＶ１１０を構成する際、ＬＤＥＶ１１０の総記憶容量を指定することができる。ストレージコントローラ２０は、ＬＤＥＶ１１０の「使用可能容量」をホスト計算機１１に提供する。つまり、ホスト計算機１１からは、ＬＤＥＶ１１０の「使用可能容量」が、ＬＤＥＶの容量として見える。
【００４６】
ストレージコントローラ２０は、「ＬＤＥＶの総記憶容量＝使用可能容量＋余剰容量」として、ＬＤＥＶ１１０の総記憶容量に対する使用可能容量と余剰容量との割合を設定する。このＬＤＥＶ１１０には、この使用可能容量までデータを格納できる。言い換えると、このＬＤＥＶ１１０には、この使用可能容量よりも多くのデータを格納することはできない。
【００４７】
ここで、余剰容量を大きくするとＬＤＥＶ１１０の使用可能容量は小さくなるが、その分、ＬＤＥＶ１１０を構成するＦＭＰＫ４０の寿命は長くなる。なぜなら、余剰容量を多くすることにより、ＬＤＥＶ１１０に対して所定回数のライトが実行された場合におけるＦＭチップ５１の１ブロック当たりの書換回数が減少するからである。
【００４８】
反対に、余剰容量を小さくするとＬＤＥＶ１１０の使用可能容量は大きくなるが、その分、ＬＤＥＶ１１０を構成するＦＭＰＫ４０の寿命は短くなる。なぜなら、余剰容量を小さくすることにより、ＬＤＥＶ１１０に対して所定回数のライトが実行され場合におけるＦＭチップ５１の１ブロック当たりの書換回数が増加するからである。
【００４９】
したがって、書換頻度が高くなることが想定されるＬＤＥＶ１１０については、余剰容量を大きく設定することにより、ＦＭＰＫ４０の寿命を長くすることができる。書換頻度が低いことが想定されるＬＤＥＶ１１０については、余剰容量を小さく設定することにより、大きな使用可能容量を確保することができる。ここで、ＬＤＥＶの書換頻度は、そのＬＤＥＶを指定したライト要求の受信頻度（例えば、単位時間当たりのライト要求の受信回数）としてもよい。
【００５０】
つまり、ストレージコントローラ２０は、ＬＤＥＶ１１０全体に対する書換回数の総数を増加させる場合（寿命を長くする場合）、そのＬＤＥＶ１１０に対する使用可能容量と余剰容量との差分が小さくなるように使用可能容量および余剰容量を設定してＬＤＥＶを構築する。
【００５１】
ユーザは、ＬＤＥＶ１１０を構成する際に余剰容量を設定することができる。余剰容量の設定方法は、使用可能容量または余剰容量のサイズを入力させてもよいし、ＬＤＥＶ１１０の総記憶容量に対する使用可能容量及び余剰容量の割合（例えば「５０％：５０％」等）を入力させてもよい。
【００５２】
もしくは、ユーザに、このＬＤＥＶ１１０の使用目的から書換頻度が「高」または「低」の何れであるかを選択させ、書換頻度「高」が選択された場合は、所定の大きい方の余剰容量が設定され、書換頻度「低」が選択された場合は、所定の小さい方の余剰容量が設定されてもよい。
【００５３】
また、図５と同様に、ストレージコントローラ２０は、ＬＤＥＶ１１０の使用可能容量を設定するＧＵＩを管理計算機１２に表示させてもよい。
【００５４】
図７は、仮想ボリュームに対するライト要求に基づいて余剰容量を設定する場合の概要図である。
仮想ボリュームは、シンプロビジョニングに従う仮想的な論理ボリュームであり、複数の仮想的な記憶領域（仮想チャンク）１５１で構成されている。ストレージコントローラ２０は、図７に示すように、複数のＲＡＩＤグループ（第１ＲＡＩＤグループ１０１及び第２ＲＡＩＤグループ１０１）の記憶領域をまとめてプール１００を構成する。プール１００は、複数のチャンクから構成される。チャンクは、プール１００に属するＲＡＩＤグループの記憶領域の内の使用可能容量の或る部分の領域と対応付けられている。つまり、チャンクは、余剰容量として確保された記憶領域には対応付けられない。
【００５５】
ストレージコントローラ２０は、例えば、複数の仮想ボリューム（第１仮想ボリューム１２０ａ及び第２仮想ボリューム１２０ｂ）を構成する。ストレージコントローラ２０は、仮想ボリューム１２０に対するライト要求が発生した時に、その仮想ボリューム１２０におけるライト先の仮想チャンク１５１に対してプール１００からチャンク１５２を割り当てる。これにより、効率的にＲＡＩＤグループの記憶領域を使用することができる。
【００５６】
本実施例に係るストレージコントローラ２０は、仮想ボリューム１２０を生成する際に、仮想ボリュームのサイズに加えて、書換頻度を設定することができる。例えば、第１仮想ボリューム１２０ａに対する書換頻度は低いと想定される場合、ストレージコントローラ２０は、第１仮想ボリューム１２０ａに対する書換頻度を「低」と設定する。例えば、第２仮想ボリューム１２０ｂに対する書換頻度は高いと想定される場合、ストレージコントローラ２０は、第２仮想ボリューム１２０ｂに対する書換頻度を「高」と設定する。ここで、仮想ボリュームの書換頻度は、その仮想ボリュームを指定したライト要求の受信頻度（例えば、単位時間当たりのライト要求の受信回数）としてもよい。
【００５７】
書換頻度「低」の設定された第１仮想ボリューム１２０ａに対するライト要求があった場合、ストレージコントローラ２０は、プール１００から、そのライト要求に係るライトデータのサイズに基づいて、チャンク１、２、４、５を、第１仮想ボリューム１２０ａの仮想チャンク１、２、４、５に割り当てる。
【００５８】
書換頻度「高」の設定された第２仮想ボリューム１２０ｂに対するライト要求があった場合、ストレージコントローラ２０は、プール１００から、そのライト要求に係るライトデータのサイズに基づいて、チャンク３を、第２仮想ボリューム１２０ｂの仮想チャンク３に割り当てると共に、そのチャンク３の属する第１ＲＡＩＤグループ１０１の余剰容量を増加させる（符号１６１）。この余剰容量の増加量は、例えば、チャンクのサイズの所定の割合（例えば３０％）としてもよい。書換頻度「高」の設定された仮想ボリューム１２０にチャンクを割り当てた場合の余剰容量の増加量の割合は、ＲＡＩＤグループ１０１の構築時、プール１００の構築時又は仮想ボリューム１２０の構築時に、ユーザが設定および変更可能であってもよい。
【００５９】
これにより、書換頻度「高」のチャンクが多く属するＲＡＩＤグループ１０１は、その分、余剰容量が大きくなるので、上記図４の場合と同様、ＦＭＰＫ４０の寿命を長くすることができる。
【００６０】
＜ストレージコントローラの機能＞
図８は、ストレージコントローラ２０の有する機能およびデータの例を示す。
ストレージコントローラ２０は、機能として、ライトＩ／Ｏプログラム２１１と、リードＩ／Ｏプログラム２１２とを有する。これらプログラムは、メモリ３２上の所定のプログラム領域２０１に格納され、プロセッサ３１により実行される。
【００６１】
ライトＩ／Ｏプログラム２１１は、ホスト計算機１１からのライト要求を処理するプログラムである。ライトＩ／Ｏプログラム２１１は、ホスト計算機１１からのライト要求に従って、ＦＭＰＫ４０又はＨＤＤ４１にデータをライトする処理を実行する。ライト要求されたデータを「ライトデータ」ということがある。
【００６２】
リードＩ／Ｏプログラム２１２は、ホスト計算機１１からのリード要求を処理するプログラムである。リードＩ／Ｏプログラム２１２は、ホスト計算機１１からのリード要求に従って、ＦＭＰＫ４０又はＨＤＤ４１からデータをリードして、ホスト計算機１１に返す処理を実行する。リード要求されたデータを「リードデータ」ということがある。
【００６３】
ストレージコントローラ２０は、ユーザデータ３４０を管理する。ユーザデータ３４０は、メモリ３２上の所定のデータキャッシュ領域２０３に格納される。ユーザデータ３４０は、ホスト計算機１１に使用されるデータであり、具体的には、ライトデータ又はリードデータである。
【００６４】
ストレージコントローラ２０は、ドライブ管理テーブル２２０と、プール管理テーブル２４０と、仮想ボリューム管理テーブル２６０と、ＲＡＩＤグループ管理テーブル２８０と、チャンク管理テーブル３００と、ドライブ個別管理テーブル３２０とを管理する。これらテーブルは、メモリ３２上の所定のテーブル領域２０２に格納される。以下、各テーブルの詳細について説明する。
【００６５】
図９は、ドライブ管理テーブル２２０の構成例を示す。
ドライブ管理テーブル２２０は、ストレージ装置１０の備える各ドライブの情報を有する。ドライブ管理テーブル２２０は、データ項目として、ドライブ番号２２１と、ドライブ種別２２２と、最大容量２２３と、使用可能容量２２４とを有する。
【００６６】
ドライブ番号２２１は、ストレージ装置１０の備えるドライブを一意に識別可能な情報である。
ドライブ種別２２２は、ドライブ番号２２１に対応するドライブの種別を示す情報である。
最大容量２２３は、ドライブ番号２２１に対応するドライブが提供可能な最大の論理容量を示す情報である。最大容量２２３は、基本的に、ドライブの有する記憶媒体の物理的な記憶容量に基づいて、不変的に決定される情報である。
使用可能容量２２４は、ドライブ番号２２１に対応するドライブにおいて使用可能な論理容量を示す情報である。使用可能容量は、後述する余剰容量の設定に基づいて変化し得る情報である。
【００６７】
例えば、図９において、ドライブ番号２２１「３」に対応するドライブは、ドライブ種別２２２が「ＦＭＰＫ」であり、最大容量２２３が「１．６ＴＢ」であり、使用可能容量２２４が「１ＴＢ」である。
【００６８】
図１０は、プール管理テーブル２４０の構成例を示す。
プール管理テーブル２４０は、プール１００の情報を有する。プール１００は、ＲＡＩＤグループ１０１によって構成される論理的な記憶領域（以下「ＲＡＩＤ領域」という）の１以上の集合体として構成される。プール１００は、後述する仮想ボリューム１２０を生成する場合に使用される。したがって、仮想ボリューム１２０を生成しない場合、プール管理テーブル２４０は、プール番号２４１を管理しなくてもよい。
【００６９】
プール管理テーブル２４０は、データ項目として、プール番号２４１と、ＲＡＩＤグループ番号２４２と、ＲＡＩＤレベル２４３と、ＲＡＩＤ構成２４４と、ドライブ番号２４５と、最大容量２４６と、使用可能容量２４７とを有する。
【００７０】
プール番２４１号は、プール１００を一意に識別可能な情報である。
ＲＡＩＤグループ番号２４２は、ＲＡＩＤグループ１０１を一意に識別可能な情報である。
ＲＡＩＤレベル２４３は、ＲＡＩＤグループ番号２４２に対応するＲＡＩＤグループのレベルを示す情報である。
ＲＡＩＤ構成２４４は、ＲＡＩＤグループ番号２４２に対応するＲＡＩＤグループの構成を示す情報である。
ドライブ番号２４５、最大容量２４６および使用可能容量２４７は、上記で説明したとおりの情報である。
【００７１】
例えば、図１０において、プール番号２４１「１」のブール１００は、ＲＡＩＤグループ番号２４２「１」、「２」、「Ｎ」に対応する３つのＲＡＩＤグループによって構成されている。そして、ＲＡＩＤグループ番号２４２「１」に対応するＲＡＩＤグループのＲＡＩＤレベル２４３は「５」であり、ＲＡＩＤ構成２４４は「３Ｄ＋１Ｐ」である。「３Ｄ＋１Ｐ」とは、ＲＡＩＤグループが、３つのデータ用のドライブの容量と１つのパリティ用のドライブの容量とから構成されていることを示す。また、ＲＡＩＤグループ番号２４２「１」に対応するＲＡＩＤグループは、ドライブ番号２４５「１」、「２」、「１４」、「１５」の４つのドライブから構成されている。
【００７２】
図１１は、チャンク管理テーブル３００の構成例を示す。
チャンク管理テーブル３００は、チャンクの情報を有する。チャンクとは、ＲＡＩＤ領域の一部の領域を示す。チャンクは、仮想ボリューム１２０を生成する場合に使用される。
【００７３】
チャンク管理テーブル３００は、データ項目として、ＲＡＩＤグループ番号３０１と、チャンク番号３０２と、サイズ３０３と、ステータス３０４と、書換頻度３０５とを有する。
【００７４】
ＲＡＩＤグループ番号３０１は、上記で説明したとおりの情報である。
チャンク番号３０２は、ＲＡＩＤ領域内でチャンクを一意に識別可能な情報である。
サイズ３０３は、チャンク番号３０２に対応するチャンクのサイズを示す情報である。
【００７５】
ステータス３０４は、チャンク番号３０２に対応するチャンクが、仮想ボリューム１２０に割当済みであるか否かを示す情報である。例えば、仮想ボリューム１２０に割当済みのチャンクのステータスは「割当済」、仮想ボリューム１２０に未割当のチャンクのステータスは「未割当」とする。
【００７６】
書換頻度３０５は、チャンク番号３０２に対応するチャンクが、書換頻度「高」であるか、それとも書換頻度「低」であるかを示す情報である。例えば、書換頻度「高」の仮想ボリューム１２０に割り当てられたチャンクの書換頻度は「高」、書換頻度「低」の仮想ボリュームに割り当てられたチャンクの書換頻度は「低」とする。
【００７７】
例えば、図１１において、ＲＡＩＤグループ番号３０１「１」に対応するＲＡＩＤ領域は、チャンク番号３０２「１」〜「Ｎ」のチャンクで構成されている。そして、ＲＡＩＤグループ番号３０１「１」のチャンク番号３０２「１」に対応するチャンクは、サイズ３０３が「１ＧＢ」であり、書換頻度３０５「高」の仮想ボリューム１２０に「割当済」（ステータス３０４）である。また、ＲＡＩＤグループ番号３０１「１」のチャンク番号３０２「２」に対応するチャンクは、書換頻度３０５「低」の仮想ボリューム１２０に「割当済」（ステータス３０４）である。また、ＲＡＩＤグループ番号３０１「２」のチャンク番号３０２「Ｎ」に対応するチャンクは、何れの仮想ボリューム１２０にも「未割当」（ステータス３０４）である。
【００７８】
図１２は、仮想ボリューム管理テーブル２６０の構成例を示す。
仮想ボリューム管理テーブル２６０は、仮想ボリューム１２０の情報を有する。仮想ボリューム管理テーブル２６０は、データ項目として、仮想ボリューム番号２６１と、プール番号２６２と、最大仮想容量２６３と、仮想チャンク番号２６４と、ＲＡＩＤグループ番号２６５と、チャンク番号２６６と、書換頻度２６７とを有する。
【００７９】
仮想ボリューム番号２６１は、仮想ボリューム１２０を一意に識別可能な情報である。
プール番号２６２は、上記で説明したとおりの情報である。
最大仮想容量２６３は、仮想ボリューム番号２６１に対応する仮想ボリューム１２０に設定された最大容量を示す情報である。
仮想チャンク番号２６４は、仮想ボリューム番号２６１に対応する仮想ボリューム１２０を構成するチャンクを一意に識別可能な情報である。
ＲＡＩＤグループ番号２６５、チャンク番号２６６および書換頻度２６７は、上記で説明したとおりの情報である。
【００８０】
例えば、図１３において、仮想ボリューム番号２６１「１」に対応する仮想ボリューム１２０は、プール番号２６２「１」に対応するプール１００に属し、最大仮想容量２６３が「８００ＧＢ」であり、仮想チャンク番号２６４「１」〜「Ｎ」のチャンクによって構成されており、書換頻度２６７「高」が設定されている。そして、仮想ボリューム番号２６１「１」に対応する仮想ボリューム１２０を構成する仮想チャンク番号２６４「１」には、ＲＡＩＤグループ番号２６５「１」に対応するＲＡＩＤ領域のチャンク番号２６６「１」のチャンクが割り当てられている。
【００８１】
図１３は、ドライブ個別管理テーブル３２０の構成例を示す。
ドライブ個別管理テーブル３２０は、ドライブ（例えば、ＦＭＰＫ４０）の情報を有する。つまり、ドライブ個別管理テーブル３２０は、ドライブ毎に構成される。ドライブ個別管理テーブル３２０は、データ項目として、ドライブ番号３２１と、最大容量３２２と、使用可能容量３２３と、ＬＢＡ（Ｌｏｇｉａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）３２４と、ＬＢＡ長３２５と、チャンク番号３２６とを有する。
【００８２】
ドライブ番号３２１、最大容量３２２および使用可能容量３２３は、上記で説明したとおりである。
ＬＢＡ３２４は、ドライブ番号３２１に対応するドライブの記憶領域を構成する論理ブロックの先頭アドレスを示す情報である。
ＬＢＡ長３２５は、ＬＢＡ３２４に対応する論理ブロックのサイズ（長さ）を示す情報である。
チャンク番号３２６は、上記で説明したとおりの情報である。
【００８３】
例えば、図１３において、ドライブ番号３２１「３」に対応するドライブは、最大容量３２２が「１．６ＴＢ」であり、使用可能容量３２３が「１ＴＢ」であることを示す。そして、ドライブ番号３２１「３」に対応するドライブのＬＢＡ３２４「０」から「１ＧＢ」分（ＬＢＡ長３２５）の領域は、チャンク番号３２６「１」に対応付けられている。
【００８４】
＜ＦＭＰＫの機能＞
図１４は、ＦＭＰＫ４０の有する機能およびデータの例を示す。
【００８５】
ＦＭＰＫコントローラ５０は、機能として、ライトＩ／Ｏプログラム５１１と、リードＩ／Ｏプログラム５１２とを有する。これらプログラムは、メモリ６２上の所定のプログラム領域５０１に格納され、プロセッサ６１により実行される。
【００８６】
ライトＩ／Ｏプログラム５１１は、ストレージコントローラ２０から送信されたライトコマンドを処理する。ライトＩ／Ｏプログラム５１１は、ライトコマンドを受信すると、論理物理変換テーブル５２０を参照して、ライト先のページを特定する。そして、ライトＩ／Ｏプログラム５１１は、ライト先のページを有するＦＭチップ５１にデータをライトする。
【００８７】
リードＩ／Ｏプログラム５１２は、ストレージコントローラ２０から送信されたリードコマンドを処理する。リードＩ／Ｏプログラム５１２は、リードコマンドを受信すると、論理物理変換テーブル５２０を参照して、リード先のページを特定する。そして、リードＩ／Ｏプログラム５１２は、リード先のページを有するＦＭチップ５１からデータをリードする。
【００８８】
ストレージコントローラ２０は、ユーザデータ５８０を管理する。ユーザデータ５８０は、メモリ６２上の所定のデータキャッシュ領域５０３に格納される。ユーザデータは、例えば、ライトデータがＦＭチップ５１にライトされる前のキャッシュデータである。ユーザデータは、例えば、ＦＭチップ５１からリードされたデータがストレージコントローラ２０へ送信される前のキャッシュデータである。
【００８９】
ＦＭＰＫコントローラ５０は、論理物理変換テーブル５２０を管理する、論理物理変換テーブル５２０は、論理ページと物理的なページとの対応関係の情報を有する。以下、論理物理変換テーブル５２０についてさらに説明する。
【００９０】
図１５は、論理物理変換テーブル５２０の構成例を示す。
論理物理変換テーブル５２０は、データ項目として、ＬＢＡ５６１と、論理ページ番号５６２と、論理ページサイズ５６３と、ステータス５６４と、ブロック番号５６５と、ページ番号５６６とを有する。
【００９１】
ＬＢＡ５６１は、ＦＭＰＫ４０の論理ページ５６２の先頭アドレスを示す情報である。
論理ページ番号５６２は、ＬＢＡ５６１に対応する論理ページを一意に識別可能な情報である。
論理ページサイズ５６３は、論理ページ番号５６２に対応する論理ページのサイズを示す情報である。
【００９２】
ステータス５６４は、論理ページ番号５６２に対応する論理ページのステータスを示す情報である。例えば、ＲＡＩＤグループ１０１、ＬＤＥＶ１１０又はプール１００に割り当てられている論理ページのステータス５６４は「有効」、何れにも割り当てられていない論理ページのステータス５６４は「無効」となる。また、余剰容量として確保された論理ページのステータス５６４は「使用不可」となる。
【００９３】
ブロック番号５６５は、論理ページ番号５６２に対応する物理的なページの属する物理的なブロックを一意に識別可能な情報である。
ページ番号５６６は、論理ページ番号５６１に対応する物理的なページを一意に識別可能な情報である。
【００９４】
例えば、図１５において、ＬＢＡ５６１「８１９２」〜「１６３８３」に対応する論理ページの論理ページ番号５６２は「２」であり、その論理ページのサイズ５６３は「１６ＫＢ」であり、その論理ページは「有効」（ステータス５６４）である。そして、その論理ページはページ番号５６６「２」の物理的なページと対応付けられており、その物理的なページはブロック番号５６５「２」のブロックに属する。
【００９５】
＜ＲＡＩＤグループに余剰容量を設定する処理＞
本処理は、図４に示すＲＡＩＤグループに余剰容量を設定した場合に対応する。
図１６は、ＲＡＩＤグループ作成処理の一例を示すフローチャートである。
【００９６】
ストレージコントローラ２０は、管理計算機１２から、ＲＡＩＤグループ作成要求を受信する（Ｓ１０１）。
【００９７】
ストレージコントローラ２０は、ＦＭＰＫ４０の最大容量を用いて、ＲＡＩＤグループの最大容量（以下「ＲＡＩＤ最大容量」という）を算出する（Ｓ１０２）。
【００９８】
ストレージコントローラ２０は、管理計算機１２に対して、ＲＡＩＤ最大容量を提示する（Ｓ１０３）。ストレージコントローラ２０は、ＲＡＩＤ最大容量を含むＧＵＩを生成し、管理計算機１２に提示してもよい。
【００９９】
ストレージコントローラ２０は、管理計算機１２から、ユーザの入力したＲＡＩＤグループの使用可能容量（以下「ＲＡＩＤ使用可能容量」という）を受信する（Ｓ１０４）。
【０１００】
ストレージコントローラ２０は、その入力されたＲＡＩＤ使用可能容量（Ｖ）と、ＲＡＩＤ最大容量（Ｖｍａｘ）とを比較する（Ｓ１０５）。
【０１０１】
「ＲＡＩＤ使用可能容量（Ｖ）＞ＲＡＩＤ最大容量（Ｖｍａｘ）」の場合（Ｓ１０５：Ｖ＞Ｖｍａｘ）、ストレージコントローラ２０は、管理計算機１２に対してエラーを通知し（Ｓ１２０）、当該処理を終了する（ＥＮＤ）。
【０１０２】
「ＲＡＩＤ使用可能容量（Ｖ）＝ＲＡＩＤ最大容量（Ｖｍａｘ）」の場合（Ｓ１０５：Ｖ＝Ｖｍａｘ）、ストレージコントローラ２０は、後述のステップＳ１１０へ進む。
【０１０３】
「ＲＡＩＤ使用可能容量（Ｖ）＜ＲＡＩＤ最大容量（Ｖｍａｘ）」の場合（Ｓ１０５：Ｖ＜Ｖｍａｘ）、ストレージコントローラ２０は、「書換回数の増加率」を含むＧＵＩを生成し、管理計算機１２に通知する（Ｓ１０６）。
【０１０４】
ストレージコントローラ２０は、ＲＡＩＤ使用可能容量から、各ＦＭＰＫ４０の使用可能容量を算出する。そして、ストレージコントローラ２０は、各ＦＭＰＫ４０に対して使用可能容量を設定する設定コマンドを送信する（Ｓ１０７）。例えば、ＲＡＩＤ使用可能容量がＲＡＩＤ最大容量の８０％に設定された場合、ストレージコントローラ２０は、ＦＭＰＫ４０の最大容量の８０％を使用可能容量と設定する旨を含む設定コマンドを生成し、その設定コマンドを各ＦＭＰＫ４０に送信する。
【０１０５】
ＦＭＰＫコントローラ５０は、その設定コマンドに含まれる使用可能容量に対応する論理物理変換テーブル５２０を生成する（Ｓ１０８）。つまり、ＦＭＰＫコントローラ５０は、論理物理変換テーブル５２０の使用可能容量に対応するＬＢＡのステータスを「無効」から「有効」に設定する。さらに、ＦＭＰＫコントローラ５０は、論理物理変換テーブル５２０の余剰容量に対するＬＢＡのステータスを「使用不可」に設定する。ここで、ＦＭＰＫコントローラ５０は、ＬＢＡの大きい方から小さい方へステータスを「使用不可」に設定してもよい。
【０１０６】
ＦＭＰＫ４０は、ストレージコントローラ２０に対して、使用可能容量の設定完了を通知する（Ｓ１０９）。
【０１０７】
ストレージコントローラ２０は、各ＦＭＰＫ４０からの設定完了の通知を受けて、ＲＡＩＤ使用可能容量を設定し（Ｓ１１０）、当該処理を終了する（ＥＮＤ）。
【０１０８】
上記の処理において、ＦＭＰＫ４０に送信される設定コマンドには、使用可能容量と余剰容量との割合が含まれてもよいし、ＦＭＰＫ４０に確保する使用可能容量のサイズが含まれてもよいし、ＦＭＰＫ４０に設定する余剰容量のサイズが含まれてもよい。
【０１０９】
＜ＬＤＥＶに余剰容量を設定する処理＞
本処理は、図６に示すＬＤＥＶに余剰容量を設定した場合に対応する。
図１７は、ＬＤＥＶの作成に関する処理例を示すフローチャートである。
【０１１０】
ストレージコントローラ２０は、管理計算機１２から、ＬＤＥＶ作成要求を受信する（Ｓ２０１）。
【０１１１】
ストレージコントローラ２０は、管理計算機１２から、ＬＤＥＶの容量および書換頻度の設定情報を受信する（Ｓ２０２）。書換頻度には、「高」又は「低」の何れかが設定される。
【０１１２】
ストレージコントローラ２０は、各ＦＭＰＫ４０に対して、先頭ＬＢＡ、ＬＢＡ長および書換頻度を含む設定コマンドを送信する（Ｓ２０３）。
【０１１３】
その設定コマンドを受信したＦＭＰＫ４０は、先頭ＬＢＡおよびＬＢＡ長から、使用容量を算出し、使用容量に対応する論理物理変換テーブル５２０を生成する（Ｓ２０４）。つまり、ＦＭＰＫ４０は、論理物理変換テーブル５２０の使用可能容量に対応するＬＢＡのステータスを「無効」から「有効」にする。
【０１１４】
ＦＭＰＫ４０は、書換頻度が「高」又は「低」の何れであるかを判断する（Ｓ２０５）。
【０１１５】
書換頻度が「高」の場合（Ｓ２０５：書換頻度「低」）、ＦＭＰＫ４０は、後述する第１余剰設定処理を実行し（Ｓ２２０）、ステップＳ２０８へ進む。
【０１１６】
書換頻度が「低」の場合（Ｓ２０５：書換頻度「高」）、ＦＭＰＫ４０は、使用可能容量を算出および設定する（Ｓ２０６）。
【０１１７】
ＦＭＰＫ４０は、ストレージコントローラ２０に対して、使用可能容量に設定した領域の先頭ＬＢＡ及びＬＢＡ長を通知する（Ｓ２０７）。
【０１１８】
ストレージコントローラ２０は、ＦＭＰＫ４０に対応するドライブ個別管理テーブル３２０の使用可能容量と、ＦＭＰＫ４０から通知された使用可能容量との差分を算出する（Ｓ２０８）。
【０１１９】
差分がない場合（Ｓ２０９：なし）、ストレージコントローラ２０は、当該処理を終了する（ＥＮＤ）。
【０１２０】
差分がある場合（Ｓ２０９：あり）、ストレージコントローラ２０は、そのドライブ個別管理テーブル３２０の使用可能容量を、ＦＭＰＫ４０から通知された使用可能容量に修正する（Ｓ２１０）。
【０１２１】
ストレージコントローラ２０は、ＦＭＰＫ４０から通知された先頭ＬＢＡおよびＬＢＡ長に従って、ドライブ個別管理テーブル３２０のチャンク番号の一部を「使用不可」に更新し（Ｓ２１１）、当該処理を終了する（ＥＮＤ）。
【０１２２】
上記の処理において、ＦＭＰＫ４０に送信される設定コマンドには、使用可能容量と余剰容量との割合が含まれてもよいし、ＦＭＰＫ４０に確保する使用可能容量のサイズが含まれてもよいし、ＦＭＰＫ４０に設定する余剰容量のサイズが含まれてもよい。
【０１２３】
図１８は、図１７の第１余剰容量設定処理の詳細を示すフローチャートである。
ＦＭＰＫコントローラ５０は、必要な余剰容量を確保可能であるか否かを判定する（Ｓ２３１）。書換頻度「高」の場合に必要な余剰容量は、ＦＭＰＫ４０に確保する使用可能容量の所定の割合（例えば３０％）としてもよいし、ストレージコントローラ２０から指定されてもよい。
【０１２４】
必要な余剰容量を確保不可能な場合（Ｓ２３１：ＮＯ）、ＦＭＰＫコントローラ５０は、ストレージコントローラ２０に対して、余剰容量を確保できないため、ＬＤＥＶ作成が不可能である旨のエラーを通知する（Ｓ２４１）。そのエラー通知を受けたストレージコントローラ２０は、管理計算機１２に対して、ＬＤＥＶ作成が失敗した旨のエラーを通知し（Ｓ２４２）、当該処理を終了する（ＥＮＤ）。
【０１２５】
必要な余剰容量を確保可能な場合（Ｓ２３１：ＹＥＳ）、ＦＭＰＫコントローラ５０は、論理物理変換テーブル５２０において、余剰容量として確保するＬＢＡのステータスを「使用不可」に設定する（Ｓ２３２）。ここで、ＦＭＰＫコントローラ５０は、ＬＢＡの大きい方から小さい方へステータスを「使用不可」に設定してもよい。
【０１２６】
ＦＭＰＫコントローラ５０は、使用可能容量を算出する（Ｓ２３３）。そして、ＦＭＰＫコントローラ５０は、ストレージコントローラ２０に対して、使用可能容量に設定した領域の先頭ＬＢＡ及びＬＢＡ長と、余剰容量に設定した領域の先頭ＬＢＡ及びＬＢＡ長とを通知し（Ｓ２３４）、図１７のステップＳ２０８へ進む（戻る）。
【０１２７】
＜仮想ボリュームに対するライト時に余剰容量を設定する処理＞
本処理は、図７に示す仮想ボリュームに対するライト要求に基づいて余剰容量を設定する場合に対応する。
図１９は、仮想ボリューム作成処理の一例を示すフローチャートである。
【０１２８】
ストレージコントローラ２０は、管理計算機１２から、仮想ボリューム作成要求を受信する（Ｓ３０１）。
ストレージコントローラ２０は、仮想ボリュームの容量および書換頻度の設定情報を受信する（Ｓ３０２）。
ストレージコントローラ２０は、仮想ボリューム管理テーブル２６０に、新たに仮想ボリュームを登録し（Ｓ３０３）、当該処理を終了する（ＥＮＤ）。
【０１２９】
図２０は、仮想ボリュームライト処理の一例を示すフローチャートである。
ストレージコントローラ２０は、ホスト計算機１１から仮想ボリュームに対するライト要求を受けると、先頭ＬＢＡ、ＬＢＡ長および書換頻度を含むチャンク割当コマンドを生成し、ＦＭＰＫ４０へ送信する（Ｓ３１１）。ここで、書換頻度は、ライト要求を受けた仮想ボリュームの設定に対応する。
【０１３０】
ＦＭＰＫコントローラ５０は、先頭ＬＢＡおよびＬＢＡ長から、必要なチャンクを算出し、そのチャンクを論理物理変換テーブル５２０に確保する（Ｓ３１２）。
【０１３１】
ＦＭＰＫコントローラ５０は、論理物理変換テーブル５２０において、その確保したＬＢＡのステータスを「無効」から「有効」に変更する（Ｓ３１３）。
【０１３２】
ＦＭＰＫコントローラ５０は、そのチャンクの書換属性が「高」又は「低」の何れであるかを判定する（Ｓ３１４）。
【０１３３】
書換頻度が「高」の場合、後述する第２余剰容量設定処理を実行する（Ｓ３３１）。そして、ストレージコントローラ２０は、ＦＭＰＫ４０からエラーが通知されたか否かを判定する（Ｓ３３２）。成功が通知された場合（Ｓ３３２：ＮＯ）、ストレージコントローラ２０は、ステップＳ３１７へ進む。エラーが通知された場合（Ｓ３３２：ＹＥＳ）、ストレージコントローラ２０は、同じプール１００内の別のＲＡＩＤグループを選択し（Ｓ３３３）、ステップＳ３１１へ戻る。別のＲＡＩＤグループに余剰容量を確保できる可能性があるからである。
【０１３４】
書換頻度が「低」の場合、ＦＭＰＫコントローラ５０は、使用可能容量を算出する。そして、ＦＭＰＫコントローラ５０は、ストレージコントローラ２０に対して、使用可能容量に設定した領域の先頭ＬＢＡ及びＬＢＡ長を通知する（Ｓ３１６）。
【０１３５】
ストレージコントローラ２０は、対応するドライブ個別管理テーブル３２０の使用可能容量と、ＦＭＰＫ４０から通知された使用可能容量との差分を算出する（Ｓ３１７）。
【０１３６】
差分がない場合（Ｓ３１８：なし）、ストレージコントローラ２０は、当該処理を終了する（ＥＮＤ）。
【０１３７】
差分がある場合（Ｓ３１８：あり）、ストレージコントローラ２０は、ドライブ個別管理テーブル３２０の使用可能容量を修正すると共に、プール１００の使用可能容量を修正する（Ｓ３１９）。
【０１３８】
ストレージコントローラ２０は、ＦＭＰＫ４０から通知された先頭ＬＢＡおよびＬＢＡ長に従って、ドライブ個別管理テーブル３２０のチャンク番号の一部を「使用不可」に変更し（Ｓ３２０）、当該処理を終了する（ＥＮＤ）。
【０１３９】
上記の処理において、ＦＭＰＫ４０に送信されるチャンク割当コマンドには、チャンクの大きさに対する余剰容量の割合が含まれてもよいし、ＦＭＰＫ４０に設定する余剰容量のサイズが含まれてもよい。
【０１４０】
図２１は、図２０の第２余剰容量設定処理の詳細を示すフローチャートである。
ＦＭＰＫコントローラ５０は、必要な余剰容量を確保可能であるか否かを判定する（Ｓ４０１）。書換頻度「高」の場合に必要な余剰容量は、チャンクのサイズの所定の割合（例えば３０％）としてもよいし、ストレージコントローラ２０から指定されてもよい。
【０１４１】
必要な余剰容量を確保不可能な場合（Ｓ４０１：ＮＯ）、ＦＭＰＫコントローラ５０は、ストレージコントローラ２０に対して、余剰容量を確保できないため、そのＲＡＩＤグループにチャンクの割当が不可能である旨のエラーを通知し（Ｓ４１１）、図２０のステップ３３２へ進む。つまり、図２０のステップＳ３３２において「ＹＥＳ」と判定される。
【０１４２】
必要な余剰容量を確保可能な場合（Ｓ４０１：ＹＥＳ）、ＦＭＰＫコントローラ５０は、論理物理変換テーブル５２０において、余剰容量として確保するＬＢＡのステータスを「使用不可」に設定する（Ｓ４０２）。ここで、ＦＭＰＫコントローラ５０は、ＬＢＡの大きい方から小さい方へステータスを「使用不可」に設定してもよい。つまり、書換頻度「高」のチャンクを割り当てたＲＡＩＤグループの余剰容量は増加する。
【０１４３】
ＦＭＰＫコントローラ５０は、使用可能容量を算出する（Ｓ４０３）。そして、ＦＭＰＫコントローラ５０は、ストレージコントローラ２０に対して、使用可能容量に設定した領域の先頭ＬＢＡ及びＬＢＡ長と、余剰容量に設定した領域の先頭ＬＢＡ及びＬＢＡ長とを通知し、図２０のステップＳ３３２へ進む。つまり、図２０のステップＳ３３２において「ＮＯ」と判断される。
【０１４４】
なお、上述の実施例では、ＦＭＰＫコントローラ５０が、ストレージコントローラ２０からの指示に基づいて、自己の管理する論理物理変換テーブル５２０における使用可能なＬＢＡの範囲（使用不可能なＬＢＡの範囲）を決定および管理している。しかし、ストレージコントローラ２０が、各ＦＭＰＫの使用可能なＬＢＡの範囲（使用不可能なＬＢＡの範囲）を決定および管理し、ＦＭＰＫの使用可能なＬＢＡの範囲のみをライト先として指定するとしてもよい。これによっても、上述と同様の目的を達成することができる。
【０１４５】
上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【０１４６】
例えば、以下のような実施例であってもよい。
ストレージコントローラ２０は、仮想ボリュームを生成する。しかし、ストレージコントローラ２０は、その仮想ボリュームに予め書換頻度を設定しない。そして、ストレージコントローラ２０は、仮想ボリュームの仮想チャンク１５１に割り当てられたチャンク１５２毎に、ライト頻度を測定する。ストレージコントローラ２０は、チャンク管理テーブル３００において、測定したライト頻度が閾値を超えているチャンク１５２における書換頻度３０５を「高」とし、測定したライト頻度が閾値以下のチャンク１５２における書換頻度３０５を「低」とする。ストレージコントローラ２０は、書換頻度３０５が「高」のチャンクの増加に従って、余剰容量を増加させる。
【０１４７】
以上の処理によれば、仮想ボリュームに書換頻度が予め設定されない場合であっても、ストレージコントローラ２０が、ＲＡＩＤグループの書換頻度に応じた適切な余剰容量を確保することができる。
【符号の説明】
【０１４８】
１…ストレージシステム  １０…ストレージ装置  ２０…ストレージコントローラ  ４０…ＦＭＰＫ  ５０…ＦＭＰＫコントローラ
【図１】
0006006431.tif 000002
【図２】
0006006431.tif 000003
【図３】
0006006431.tif 000004
【図４】
0006006431.tif 000005
【図５】
0006006431.tif 000006
【図６】
0006006431.tif 000007
【図７】
0006006431.tif 000008
【図８】
0006006431.tif 000009
【図９】
0006006431.tif 000010
【図１０】
0006006431.tif 000011
【図１１】
0006006431.tif 000012
【図１２】
0006006431.tif 000013
【図１３】
0006006431.tif 000014
【図１４】
0006006431.tif 000015
【図１５】
0006006431.tif 000016
【図１６】
0006006431.tif 000017
【図１７】
0006006431.tif 000018
【図１８】
0006006431.tif 000019
【図１９】
0006006431.tif 000020
【図２０】
0006006431.tif 000021
【図２１】
0006006431.tif 000022