(57)【要約】【課題】書込みによって劣化する記憶媒体を複数個搭載したストレージシステムの可用性を向上する。【解決手段】各記憶媒体の消耗値と書き込みに関する上限とを管理しておく。記憶媒体グループを構成する複数の記憶媒体のうちの二以上の記憶媒体の各々の消耗値と上限を特定し、各記憶媒体について、上限と消耗値とを用いて残使用可能値を算出する。算出された各残使用可能値に基づいて、前記選択された記憶領域グループに属する複数の記憶媒体のうち、少なくとも一つの記憶媒体内のデータを、該記憶領域グループとは異なる記憶媒体に移行する。【選択図】図１１
2008040713.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムであって、
ストレージシステムの外部にある外部装置からの書込み／読出しの要求を処理する制御部と、
前記外部装置が使用するデータを格納する複数の記憶媒体と、
前記複数の記憶媒体の各々と、複数の記憶媒体により構成される複数の記憶媒体グループの各々との対応を示すグループ管理情報と、
前記複数の記憶媒体の各々について書込みに関する消耗値を管理する記憶媒体管理情報と、
前記複数の記憶媒体の各々の書込みに関する上限を示す情報を管理する書込み上限管理情報と
を有し、
前記制御部は、
記憶媒体への書込みに応じて、該書込み先の記憶媒体に対応した、前記記憶媒体管理情報における消耗値を更新し、
前記複数の記憶媒体グループの中からいずれかの記憶媒体グループを選択し、
前記選択された記憶媒体グループを構成する複数の記憶媒体を前記グループ管理情報から特定し、
前記特定した複数の記憶媒体のそれぞれについて、消耗値を、前記記憶媒体管理情報から取得し、
前記特定した複数の記憶媒体のそれぞれについて、書込みに関する上限を、前記記憶媒体管理情報から取得し、
前記特定した複数の記憶媒体のそれぞれについて、前記取得した消耗値と、前記取得した上限とを用いて、残りどのぐらい使用可能かを表す値である残使用可能値を算出し、
前記算出された各残使用可能値に基づいて、前記選択された記憶領域グループに属する複数の記憶媒体のうち、少なくとも一つの記憶媒体内のデータを、該記憶領域グループとは異なる記憶媒体に移行する、
ことを特徴とするストレージシステム。
【請求項２】
前記消耗値は、書込み回数、イレース回数及び不良領域サイズのうちの少なくとも一つである、
請求項１記載のストレージシステム。
【請求項３】
前記ストレージシステムは、前記複数の記憶媒体グループのいずれにも属していない一以上の予備の記憶媒体を更に備え、
前記制御部は、前記特定された複数の記憶媒体のうちの２つの記憶媒体について、残使用可能値の差分を算出し、該差分と第一の閾値との比較を行い、該差分が該第一の閾値未満であれば、前記２つの記憶媒体にそれぞれ対応した第一と第二の記憶媒体のうちの第一の記憶媒体内のデータを、前記一以上の予備記憶媒体のいずれかの予備記憶媒体に移行する、
請求項１記載のストレージシステム。
【請求項４】
前記２つの記憶媒体とは、残使用可能値が最も短い記憶媒体と、残使用可能値が次に短い記憶媒体である、
請求項３記載のストレージシステム。
【請求項５】
前記第一の閾値は、前記２つの記憶媒体のうちの残使用可能値の短い方の記憶媒体が故障してから、残使用可能値が次に短い記憶媒体が故障するまでの第一の時間長に比して、前記予備記憶媒体へのデータ移行が完了するまでの第二の時間長の方が短くなるような値である、
請求項３記載のストレージシステム。
【請求項６】
前記記憶媒体管理情報には、前記各予備記憶媒体の消耗値も含まれ、
前記制御部が、前記各予備記憶媒体の消耗値と上限とを用いて、前記各予備記憶媒体の残使用可能値を算出し、前記第一の記憶媒体内のデータを、前記第二の記憶媒体の残使用可能値との差分が前記第一の閾値以上となる残使用可能値の予備メディアに移行する、
請求項３記載のストレージシステム。
【請求項７】
前記制御部は、記憶媒体グループ及び／又は各記憶媒体への書込み頻度に応じて前記第一の閾値を変更する、
請求項３記載のストレージシステム。
【請求項８】
前記グループ管理情報には、各記憶媒体グループのＲＡＩＤ構成が含まれており、
前記制御部は、前記選択された記憶媒体グループのＲＡＩＤ構成を前記グループ管理情報から特定し、特定した前記ＲＡＩＤ構成を基に、該記憶媒体グループを構成する前記複数の記憶媒体から、残使用可能値の算出の対象とする記憶媒体を絞り込む、
請求項１記載のストレージシステム。
【請求項９】
前記２つの記憶媒体とは、残使用可能値が互いに直近している記憶媒体である、
請求項３記載のストレージシステム。
【請求項１０】
外部装置からの書込み対象データを一時的に記憶するキャッシュ領域を更に備え、
前記制御部は、前記キャッシュ領域に記憶されている、前記各記憶媒体内のデータと一致しない複数の書込み対象データを、特定の順番でそれぞれ記憶媒体に格納し、前記複数の書込み対象データのうちの或る書込み対象データの書込み先記憶媒体について、前記算出された残使用可能値と、第二の閾値とを比較し、該残使用可能値が該第二の閾値未満であれば、該或る書込み対象データの順番を該順番よりも後にする、
請求項１記載のストレージシステム。
【請求項１１】
前記制御部は、更に、前記複数の書込み対象データの総量と第三の閾値とを比較し、前記残使用可能値が前記第二の閾値未満であり、且つ、該総量が前記第三の閾値未満であれば、該或る書込み対象データの順番を該順番よりも後にする、
請求項１０記載のストレージシステム。
【請求項１２】
前記制御部は、データの書込み先記憶媒体の前記算出された残使用可能値と第四の閾値とを比較し、該残使用可能値が該第四の閾値未満であれば、書き込みを一時休止する、
請求項１記載のストレージシステム。
【請求項１３】
前記複数の記憶媒体グループの各々には、一又は複数の論理ボリュームが設けられ、
前記ストレージシステムは、
各論理ボリュームがどの記憶媒体グループにありどんな用途に利用されるかを表したボリューム管理情報と、
各用途に応じた消耗値変化度を表したポリシー情報と
を備え、
前記制御部が、
前記選択された記憶媒体グループにある一以上の論理ボリュームとそれら一以上の論理ボリュームの各々の用途を前記ボリューム管理情報から特定し、
前記特定された各用途に対応する各消耗値変化度を前記ポリシー情報から特定し、
前記選択された記憶媒体グループを構成する複数の記憶媒体のそれぞれについての残使用可能値と消耗値変化度とを用いて、該記憶媒体グループを残りどのぐらい使用可能かを表すグループ残使用可能値を算出し、
前記グループ残使用可能値と第五の閾値との比較を行い、該グループ残使用可能値が該第五の閾値未満であれば、前記選択された記憶媒体グループ内のいずれかの論理ボリューム内のデータを、前記選択された記憶媒体グループとは別の論理ボリュームに移行するデータ移行処理を実行する、
請求項１記載のストレージシステム。
【請求項１４】
前記消耗値変化度とは、単位時間当たりの消耗値であり、
前記制御部が、前記選択された記憶媒体グループを構成する複数の記憶媒体の残使用可能値の合計と、前記複数の消耗値変化度の合計とをそれぞれ算出し、残使用可能値の合計と消耗値変化度の合計とを用いて前記グループ残使用可能値を算出する、
請求項１３記載のストレージシステム。
【請求項１５】
前記制御部は、各用途に求められる性能と、各記憶媒体の信頼性と、各記憶媒体の価格とのうちの少なくとも一つに基づいて、前記データ移行処理を行うか否かを決定する、
請求項１３記載のストレージシステム。
【請求項１６】
前記性能とは、単位時間当たりのデータ転送速度であり、
前記グループ管理情報には、記憶媒体グループの性能であるグループ性能が各記憶媒体グループ毎に含まれており、
前記ポリシー情報には、各用途に求められる各性能が含まれており、
前記制御部は、前記選択された記憶媒体グループにおける全論理ボリュームの性能の合計値と、前記選択された記憶媒体グループのグループ性能とを比較し、前記合計値が前記グループ性能を超えている場合に、前記データ移行処理を実行する、
請求項１５記載のストレージシステム。
【請求項１７】
前記消耗値は、書込み回数、イレース回数及び不良領域サイズのうちの少なくとも一つであり、
前記グループ管理情報には、各記憶媒体グループのＲＡＩＤ構成が含まれており、
前記ストレージシステムは、前記複数の記憶媒体グループのいずれにも属していない一以上の予備の記憶媒体を更に備え、
前記制御部は、
前記選択された記憶媒体グループのＲＡＩＤ構成を前記グループ管理情報から特定し、
特定した前記ＲＡＩＤ構成を基に、該記憶媒体グループを構成する前記複数の記憶媒体から前記二以上の記憶媒体を選択し、
前記二以上の記憶媒体にそれぞれ対応した二以上の残使用可能値のうち、最も短い残使用可能値と次に短い残使用可能値との２つの残使用可能値の差分を算出し、
前記差分と前記第一の閾値との比較を行い、該差分が該第一の閾値未満であれば、前記２つの残使用可能値にそれぞれ対応した第一と第二の記憶媒体のうちの第一の記憶媒体内のデータを、前記一以上の予備記憶媒体のいずれかの予備記憶媒体に移行し、
前記第一の閾値は、前記２つの記憶媒体のうちの残使用可能値の短い方の記憶媒体が故障してから、残使用可能値が次に短い記憶媒体が故障するまでの第一の時間長に比して、前記予備記憶媒体へのデータ移行が完了するまでの第二の時間長の方が短くなるような値である、
請求項１記載のストレージシステム。
【請求項１８】
ストレージシステムの制御装置において、
前記ストレージシステムが、
前記ストレージシステムの外部にある外部装置からの書込み／読出しの要求を処理するストレージ制御部と、
前記外部装置が使用するデータを格納する複数の記憶媒体と、
前記複数の記憶媒体の各々と、複数の記憶媒体により構成される複数の記憶媒体グループの各々との対応を示すグループ管理情報と、
前記複数の記憶媒体の各々について書込みに関する消耗値を管理する記憶媒体管理情報と
を備え、前記ストレージ制御部が、各記憶媒体に対する書込みに応じて、該書込み先の記憶媒体に対応した、前記記憶媒体管理情報における消耗値を更新し、
前記制御装置が、
前記複数の記憶媒体の各々の書込みに関する上限を示す情報を管理する書込み上限管理情報と、
制御部と
を備え、
前記制御部が、
前記複数の記憶媒体グループの中からいずれかの記憶媒体グループを選択し、
前記選択された記憶媒体グループを構成する複数の記憶媒体を前記グループ管理情報から特定し、
前記特定した複数の記憶媒体のそれぞれについて、消耗値を、前記記憶媒体管理情報から取得し、
前記特定した複数の記憶媒体のそれぞれについて、書込みに関する上限を、前記記憶媒体管理情報から取得し、
前記特定した複数の記憶媒体のそれぞれについて、前記取得した消耗値と、前記取得した上限とを用いて、残りどのぐらい使用可能かを表す値である残使用可能値を算出し、
前記算出された各残使用可能値に基づいて、前記選択された記憶領域グループに属する複数の記憶媒体のうち、少なくとも一つの記憶媒体内のデータを、該記憶領域グループとは異なる記憶媒体に移行させる、
ことを特徴とする制御装置。
【請求項１９】
前記ストレージシステムは、前記複数の記憶媒体グループのいずれにも属していない一以上の予備の記憶媒体を更に備え、
前記制御部は、前記特定された複数の記憶媒体のうちの２つの記憶媒体について、残使用可能値の差分を算出し、該差分と第一の閾値との比較を行い、該差分が該第一の閾値未満であれば、前記２つの記憶媒体にそれぞれ対応した第一と第二の記憶媒体のうちの第一の記憶媒体内のデータを、前記一以上の予備記憶媒体のいずれかの予備記憶媒体に移行させる、
請求項１８記載の制御装置。
【請求項２０】
前記複数の記憶媒体グループの各々には、一又は複数の論理ボリュームが設けられ、
前記制御装置が、
各論理ボリュームがどの記憶媒体グループにありどんな用途に利用されるかを表したボリューム管理情報と、
各用途に応じた消耗値変化度を表したポリシー情報と
を更に備え、
前記制御部が、
前記選択された記憶媒体グループにある一以上の論理ボリュームとそれら一以上の論理ボリュームの各々の用途を前記ボリューム管理情報から特定し、
前記特定された各用途に対応する各消耗値変化度を前記ポリシー情報から特定し、
前記選択された記憶媒体グループを構成する複数の記憶媒体のそれぞれについての残使用可能値と消耗値変化度とを用いて、該記憶媒体グループを残りどのぐらい使用可能かを表すグループ残使用可能値を算出し、
前記グループ残使用可能値と第五の閾値との比較を行い、該グループ残使用可能値が該第五の閾値未満であれば、前記選択された記憶媒体グループ内のいずれかの論理ボリューム内のデータを、前記選択された記憶媒体グループとは別の論理ボリュームに移行するデータ移行処理を実行する、
請求項１８記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶媒体を備えたストレージシステムに関する。
【背景技術】
【０００２】
従来、ストレージシステムでは複数の記憶媒体を集め、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）と呼ばれる構成を用いて、並列アクセスによる高性能・データの冗長化による高可用性を実現している。
【０００３】
このストレージシステムには、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）と呼ばれる記憶媒体を用いるのが一般的である。ＨＤＤは、データを記録する為の磁性体を塗布若しくは蒸着したプラッタと呼ばれる円盤と、プラッタの磁気状態を読み出しや変更を行う為の磁気ヘッドと、指定されたプラッタ上位置へ磁気ヘッドを移動するためのプラッタ回転を行うモータとで構成されている。
【０００４】
ＨＤＤは、データに対するアクセス性能が高く、大容量であり、更に単位容量当りのコストが低いという特徴を持っている。
【０００５】
ＨＤＤは、大容量化に伴う磁気情報の微細化により、単位容量当りの情報を扱う磁力が必然的に弱くなってしまう。この弱くなった磁力を検出するためには、プラッタと磁気ヘッド間の間隔を小さくする必要がある。現在では、この間隔はナノメートルの単位に達している。
【０００６】
そのため、振動により回転しているプラッタに磁気ヘッドが接触し、この接触により、プラッタが故障してしまうことがある。
【０００７】
また、プラッタを回転させるモータは、機械駆動部品である為、長時間運用に伴い磨耗し、それにより、ＨＤＤの故障につながることがある。
【０００８】
これ故、ＨＤＤの寿命の決定には、稼働時間が支配的であると言われている。
【０００９】
尚、ＨＤＤを用いたストレージシステムでは、文献１（特開２００４−２４６７４９号公報）に示す手法のように、ストレージシステム内のＨＤＤ稼働時間を記録し、長時間稼動しているＨＤＤと予備のＨＤＤを交換する等の制御により、故障を未然に防ぐことでデータの消失を防ぎ、高可用性を実現している。
【特許文献１】特開２００４−２４６７４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、フラッシュメモリを使用したフラッシュメモリメディアと呼ばれる記憶媒体がある。フラッシュメモリは、電力の供給が停止した場合でも記録されたデータの消失が発生しない半導体装置であり、データの消去・書き込みを自由に行うことが可能である。近年では、特にＮＡＮＤ型フラッシュメモリと呼ばれる半導体装置を使用したフラッシュメモリメディアが、大容量化・単位容量当りの低価格化に伴い、一般に普及しつつある。
【００１１】
フラッシュメモリメディアは、ＨＤＤとは異なり機械駆動部品がないため、長時間の運用でも劣化の少ない記憶媒体である。また、プラッタの回転による磁気ヘッドの移動時間が必要ないため、データ検索に必要なオーバヘッド時間の短縮化が可能であり、ＨＤＤに比べてレスポンス性能の向上を図ることができる。
【００１２】
そのため、ＨＤＤに換えてフラッシュメモリメディアを使用するストレージシステムの開発が検討されている。
【００１３】
しかし、そこで注意すべきは、フラッシュメモリメディアのデータ記憶部品であるフラッシュメモリは、書き込みにより劣化する特徴を持っている点にある。
【００１４】
これは、フラッシュメモリが、メモリセルと呼ばれる単位にデータを格納し、メモリセルを複数個纏めたブロックと呼ばれる単位で管理を行い、データの書き込み時に適当なメモリセルを割当てて此処にデータの格納を行うが、既にデータが格納させているメモリセルには直接データを上書きできないことに起因する。このため、既にデータが書き込まれているメモリセルに対し、データを書き込むに当り、既存データを消去する為に一度ブロックに対し電子を充填するイレース処理が必要となる。当該イレース処理では、当該ブロックに対して高電圧を掛ける為、フラッシュメモリを構成している酸化膜が劣化し、これがフラッシュメモリの劣化に繋がる。
【００１５】
一般には、同一のブロックに対し、１０万回程度のイレースで、当該ブロックは寿命を迎えると言われている。
【００１６】
前述の劣化による記憶媒体の故障を防ぐ為に、フラッシュメモリ全体に対し書き込み量を満遍なく分散させることで局所的な劣化を防ぐ「平準化」や、特定の領域に対して不良が発生した場合に代替のブロックを用意するなどの手法（以下、便宜上「フラッシュメモリ劣化抑制方法」と言う）が採用されている。
【００１７】
しかし、そのフラッシュメモリ劣化抑制方法は、フラッシュメモリメディア内でのみ有効な方法であり、ストレージシステムにフラッシュメモリメディアを適用した場合には、別の問題が生じると考えられる。
【００１８】
その別の問題というのは、ストレージシステムではＲＡＩＤグループを構成している記憶媒体に対しては書き込み回数が均一化される可能性が高いため、同一ＲＡＩＤグループを構成するフラッシュメモリメディアが同時期に故障する可能性が高いという問題である。
【００１９】
基本的に、ストレージシステムは、当該ストレージシステムを使用する情報機器（例えばホストコンピュータ）に対して、ボリュームと呼ばれる論理的なデータ格納装置を提供する。当該ボリュームを使用する情報機器及び該情報機器上で動作するアプリケーションに対しては、ボリュームの物理的な構成は隠蔽されている。このため、前記情報機器及び前記アプリケーションは、前記ボリュームを構成する前記記憶媒体の特性に応じた利用を行うことは困難である。それ故、前記情報機器や前記アプリケーションからの制御によって、上記の別の問題を回避することは難しい。
【００２０】
特に、ＲＡＩＤ１のミラーリングと呼ばれる２個の記憶媒体に同一のデータを格納する冗長構成では、片方の記憶媒体が故障した場合にもう一方の記憶媒体を使用してデータの保持を行うが、両方の記憶媒体に対し同回数の書き込みを行うと、ほぼ同時期に、ミラーとなっている記憶媒体で故障となり易く、故に、データ消失の危険性が高い。
【００２１】
以上のような問題点は、ストレージシステムに搭載する記憶媒体として、フラッシュメモリメディアを採用する場合に限らず、書込みによって劣化する他種の記憶媒体についても、同様に生じ得る。
【００２２】
本発明は以上の問題点を懸念してなされたもので、書込みによって劣化する記憶媒体を複数個搭載したストレージシステムの可用性を向上することにある。
【課題を解決するための手段】
【００２３】
本発明に従うストレージシステムは、ストレージシステムの外部にある外部装置からの書込み／読出しの要求を処理する制御部と、前記外部装置が使用するデータを格納する複数の記憶媒体と、前記複数の記憶媒体の各々と複数の記憶媒体により構成される複数の記憶媒体グループの各々との対応を示すグループ管理情報と、前記複数の記憶媒体の各々について書込みに関する消耗値を管理する記憶媒体管理情報と、前記複数の記憶媒体の各々の書込みに関する上限を示す情報を管理する書込み上限管理情報とを有する。前記制御部は、記憶媒体への書込みに応じて、該書込み先の記憶媒体に対応した、前記記憶媒体管理情報における消耗値を更新し、前記複数の記憶媒体グループの中からいずれかの記憶媒体グループを選択する。また、前記制御部は、前記選択された記憶媒体グループを構成する複数の記憶媒体を前記グループ管理情報から特定し、前記特定した複数の記憶媒体のそれぞれについて、消耗値を、前記記憶媒体管理情報から取得する。また、前記制御部は、前記特定した複数の記憶媒体のそれぞれについて、書込みに関する上限を、前記記憶媒体管理情報から取得し、前記特定した複数の記憶媒体のそれぞれについて、前記取得した消耗値と、前記取得した上限とを用いて、残りどのぐらい使用可能かを表す値である残使用可能値を算出する。そして、前記制御部は、前記算出された各残使用可能値に基づいて、前記選択された記憶領域グループに属する複数の記憶媒体のうち、少なくとも一つの記憶媒体内のデータを、該記憶領域グループとは異なる記憶媒体に移行する。
【００２４】
ここで、残使用可能値は、残りどのぐらい使用可能かを表す値であれば良い。例えば、その値は、使用可能な期間を表す値であっても良いし、書込み可能な回数を表す値であっても良い。
【００２５】
第一の実施態様では、前記消耗値は、書込み回数、イレース回数及び不良領域サイズのうちの少なくとも一つである。
【００２６】
第二の実施態様では、前記ストレージシステムは、前記複数の記憶媒体グループのいずれにも属していない一以上の予備の記憶媒体を更に備える。前記制御部は、前記特定された複数の記憶媒体のうちの２つの記憶媒体について、残使用可能値の差分を算出し、該差分と第一の閾値との比較を行う。前記制御部は、該差分が該第一の閾値未満であれば、前記２つの記憶媒体にそれぞれ対応した第一と第二の記憶媒体のうちの第一の記憶媒体内のデータを、前記一以上の予備記憶媒体のいずれかの予備記憶媒体に移行する。
【００２７】
第三の実施態様では、前記第二の実施態様において、前記２つの記憶媒体とは、残使用可能値が最も短い記憶媒体と、残使用可能値が次に短い記憶媒体である。
【００２８】
第四の実施態様では、前記第二の実施態様において、前記第一の閾値は、前記２つの記憶媒体のうちの残使用可能値の短い方の記憶媒体が故障してから、残使用可能値が次に短い記憶媒体が故障するまでの第一の時間長に比して、前記予備記憶媒体へのデータ移行が完了するまでの第二の時間長の方が短くなるような値である。
【００２９】
第五の実施態様では、前記第二の実施態様において、前記記憶媒体管理情報には、前記各予備記憶媒体の消耗値も含まれる。前記制御部が、前記各予備記憶媒体の消耗値と上限とを用いて、前記各予備記憶媒体の残使用可能値を算出し、前記第一の記憶媒体内のデータを、前記第二の記憶媒体の残使用可能値との差分が前記第一の閾値以上となる残使用可能値の予備メディアに移行する。
【００３０】
第六の実施態様では、前記第二の実施態様において、前記制御部は、記憶媒体グループ及び／又は各記憶媒体への書込み頻度に応じて前記第一の閾値を変更する。
【００３１】
第七の実施態様では、前記グループ管理情報には、各記憶媒体グループのＲＡＩＤ構成が含まれている。前記制御部は、前記選択された記憶媒体グループのＲＡＩＤ構成を前記グループ管理情報から特定し、特定した前記ＲＡＩＤ構成を基に、該記憶媒体グループを構成する前記複数の記憶媒体から、残使用可能値の算出の対象とする記憶媒体を絞り込む。
【００３２】
第八の実施態様では、前記第二の実施態様において、前記２つの記憶媒体とは、残使用可能値が互いに直近している記憶媒体である。
【００３３】
第九の実施態様では、外部装置からの書込み対象データを一時的に記憶するキャッシュ領域が更に備えられる。前記制御部は、前記キャッシュ領域に記憶されている、前記各記憶媒体内のデータと一致しない複数の書込み対象データを、特定の順番でそれぞれ記憶媒体に格納する。前記制御部は、前記複数の書込み対象データのうちの或る書込み対象データの書込み先記憶媒体について、前記算出された残使用可能値と、第二の閾値とを比較し、該残使用可能値が該第二の閾値未満であれば、該或る書込み対象データの順番を該順番よりも後にする。
【００３４】
第十の実施態様では、前記第九の実施態様において、前記制御部は、更に、前記複数の書込み対象データの総量と第三の閾値とを比較し、前記残使用可能値が前記第二の閾値未満であり、且つ、該総量が前記第三の閾値未満であれば、該或る書込み対象データの順番を該順番よりも後にする。
【００３５】
第十一の実施態様では、前記制御部は、データの書込み先記憶媒体の前記算出された残使用可能値と第四の閾値とを比較し、該残使用可能値が該第四の閾値未満であれば、書き込みを一時休止する。
【００３６】
第十二の実施態様では、前記複数の記憶媒体グループの各々には、一又は複数の論理ボリュームが設けられる。前記ストレージシステムは、各論理ボリュームがどの記憶媒体グループにありどんな用途に利用されるかを表したボリューム管理情報と、各用途に応じた消耗値変化度を表したポリシー情報とを備える。前記制御部が、前記選択された記憶媒体グループにある一以上の論理ボリュームとそれら一以上の論理ボリュームの各々の用途を前記ボリューム管理情報から特定する。前記制御部は、前記特定された各用途に対応する各消耗値変化度を前記ポリシー情報から特定する。前記制御部は、前記選択された記憶媒体グループを構成する複数の記憶媒体のそれぞれについての残使用可能値と消耗値変化度とを用いて、該記憶媒体グループを残りどのぐらい使用可能かを表すグループ残使用可能値を算出する。前記制御部は、前記グループ残使用可能値と第五の閾値との比較を行い、該グループ残使用可能値が該第五の閾値未満であれば、前記選択された記憶媒体グループ内のいずれかの論理ボリューム内のデータを、前記選択された記憶媒体グループとは別の論理ボリュームに移行するデータ移行処理を実行する。
【００３７】
第十三の実施態様では、前記十二の実施態様において、前記消耗値変化度とは、単位時間当たりの消耗値である。前記制御部が、前記選択された記憶媒体グループを構成する複数の記憶媒体の残使用可能値の合計と、前記複数の消耗値変化度の合計とをそれぞれ算出し、残使用可能値の合計と消耗値変化度の合計とを用いて前記グループ残使用可能値を算出する。
【００３８】
第十四の実施態様では、前記十二の実施態様において、前記制御部は、各用途に求められる性能と、各記憶媒体の信頼性と、各記憶媒体の価格とのうちの少なくとも一つに基づいて、前記データ移行処理を行うか否かを決定する。
【００３９】
第十五の実施態様では、前記十四の実施態様において、前記性能とは、単位時間当たりのデータ転送速度である。前記グループ管理情報には、記憶媒体グループの性能であるグループ性能が各記憶媒体グループ毎に含まれている。前記ポリシー情報には、各用途に求められる各性能が含まれている。前記制御部は、前記選択された記憶媒体グループにおける全論理ボリュームの性能の合計値と、前記選択された記憶媒体グループのグループ性能とを比較し、前記合計値が前記グループ性能を超えている場合に、前記データ移行処理を実行する。
【００４０】
ストレージシステムは、ストレージシステムの外部にある外部装置からの書込み／読出しの要求を処理する制御部と、前記外部装置が使用するデータを格納する複数の記憶媒体と、前記複数の記憶媒体の各々と複数の記憶媒体により構成される複数の記憶媒体グループの各々との対応を示すグループ管理情報と、前記複数の記憶媒体の各々について残使用可能値に関する使用可能情報を管理する記憶媒体管理情報とを有することができる。前記制御部は、記憶媒体への書込みに応じて、該書込み先の記憶媒体に対応した、前記記憶媒体管理情報における使用可能情報を更新することができる。前記制御部は、前記複数の記憶媒体グループの中からいずれかの記憶媒体グループを選択し、前記選択された記憶媒体グループを構成する複数の記憶媒体を前記グループ管理情報から特定することができる。前記制御部は、前記特定した複数の記憶媒体のそれぞれの使用可能情報を前記記憶媒体管理情報から取得し、各使用可能情報から特定される各残使用可能値に基づいて、前記選択された記憶領域グループに属する複数の記憶媒体のうち、少なくとも一つの記憶媒体内のデータを、該記憶領域グループとは異なる記憶媒体に移行することができる。ここでの残使用可能値は、前述した消耗値それ自体であってもよい。
【００４１】
前述したストレージシステムの制御部が有する複数の処理のうちの一以上の処理が、ストレージシステムの外の装置（例えば計算機）で実行されても良い。
【００４２】
上述した各種情報は、各記憶域に記憶させることができ、各記憶域は、例えば、メモリなどの記憶資源により構築することができる。また、制御部が実行する処理は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により実行することができる。具体的には、例えば、制御部は、一又は複数の回路基板（例えばCPUやメモリが搭載された回路基板）により実現することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【発明の効果】
【００４３】
本発明によれば、書込みによって劣化する記憶媒体を複数個搭載したストレージシステムの可用性を向上することができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施形態を、図面を用いて説明する。尚、本発明は以下に説明する実施形態に限定されるものではない。
【実施例１】
【００４５】
図１は、本発明の第一の実施形態に係る計算機システムの構成例を示す図である。なお、この実施形態では、ストレージサブシステムが、前述したストレージシステムに相当する。
【００４６】
はじめに、計算機システムの構成について説明を行う。
【００４７】
ストレージサブシステム１００とホストコンピュータ３００は、ストレージネットワーク２００に接続される。ホストコンピュータ３００より、ストレージサブシステム１００に、データを書き込むための書込み要求や、データを読み出すための読出し要求を送信することが可能である。
【００４８】
ストレージサブシステム１００は、複数のフラッシュメモリメディア１３１を格納する為のメディアユニット１３０と、各フラッシュメモリメディア１３１の制御を行う機器であるコントローラ１１０と、当該ストレージサブシステム１００を管理する為の機器である管理端末１２０より構成される。なお、以下の説明では、フラッシュメモリメディアを、単に「メディア」と呼ぶ場合もある。
【００４９】
コントローラ１１０は、当該コントローラ１１０装置全体の制御を行うプロセッサ１１１と、プロセッサ１１１にて制御を行う為のコンピュータプログラムや制御情報を格納する為のメモリ１１３と、ストレージネットワーク２００へ接続する為のインタフェースであるストレージネットワークインタフェース１１２と、フラッシュメモリメディア１３１との通信インタフェースであるメディアインタフェース１１５と、管理端末１２０との通信インタフェースであるネットワークインタフェース１１６より構成される。
【００５０】
管理端末１２０は、当該管理端末１２０装置全体の制御を行うプロセッサ１２１と、プロセッサ１２１にて制御を行う為のコンピュータプログラムや制御情報を格納する為のメモリ１２３と、ネットワークインタフェース１１６と相互通信を行う為のインタフェースであるネットワークインタフェース１２２と、ユーザが本機器より管理を行うインタフェース機器であるユーザインタフェース１２４と、外部機器との通信を行う為のインタフェースであるネットワークインタフェース１２５より構成される。
【００５１】
図１に記した構成部品の一例として、下記の機器を適用することが出来る。
【００５２】
ホストコンピュータ３００は、メインフレームや各種サーバなど業務を行う為の計算機であり、当該機器でＯＳ（オペレーションシステム）が動作する。そのＯＳとしては、例えば、ｚ／ＯＳ、Ｌｉｎｕｘ（登録商標）、ＵＮＩＸ（登録商標）、Ｗｉｎｄｏｗ（登録商標）等、種々のＯＳを採用することができる。
【００５３】
ストレージネットワーク２００を構成するケーブルには、ファイバチャネルケーブルや、イーサネットケーブル等を採用することができる。
【００５４】
プロセッサ１１１は、例えばＣＰＵである。
【００５５】
メモリ１１３には、ＳＲＡＭやＳＤＲＡＭ等の揮発性メモリ、または、フラッシュメモリ等の不揮発性メモリを採用することができる。
【００５６】
ストレージネットワークインタフェース１１２は、ストレージネットワーク２００に使用されるケーブルが接続されるコネクタである。これと同様のコネクタを、格別図示しないが、ホストコンピュータ３００にも搭載される。ストレージネットワーク２００がファイバチャネルケーブルであり、ホストコンピュータ３００がメインフレームである場合には、例えばＦＩＣＯＮ（Fibre Connection）（登録商標）が使用される。ストレージネットワーク２００がイーサネットケーブルであり、ホストコンピュータ３００がＵＮＩＸやＷｉｎｄｏｗｓ等のオープン系サーバである場合には、例えばｉＳＣＳＩが使用される。他に、例えば、ＥＳＣＯＮ（Enterprise Systems Connection）（登録商標）やＦＣコネクタなどが使用されても良い。
【００５７】
プロセッサ１２１は、例えばＣＰＵである。
【００５８】
メモリ１２３には、ＳＲＡＭやＳＤＲＡＭ等の揮発性メモリ、または、フラッシュメモリ等の不揮発性メモリを採用することができる。
【００５９】
ユーザインタフェース１２４は、例えば、ディスプレイ・マウス・キーボード・タッチパネル等のユーザに対する入出力可能な装置である。ディスプレイには、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）やＣＵＩ（Ｃｏｍｍａｎｄ  ｌｉｎｅ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）のイメージが表示される。
【００６０】
ネットワークインタフェース１１６、１２２及び１２５は、例えば、イーサネットカード等の通信インタフェースである。
【００６１】
フラッシュメモリメディア１３１は、データをフラッシュメモリに格納する特徴を持つメディアであり、当該メディアは書き込み処理により劣化が生ずる為、書き込み回数の増加に従い故障の可能性も増加する特性を持つ。
【００６２】
図２は、メディアユニット１３０の構造を示した図である。
【００６３】
本図で示すように、メディアユニット１３０には、例えば、フラッシュメモリメディア１３１毎に、フラッシュメモリメディア１３１を格納するための棚が設けられる。個々のメディア１３１に、棚と対応するメディア番号が付与される。メディア番号は、ストレージサブシステム１００内でユニークな値を採る。
【００６４】
尚、メディアユニット１３０には、フラッシュメモリメディア１３１以外にも、他種の記憶媒体、例えば、ＨＤＤをはじめとする磁気記憶装置が混載されていても良い。
【００６５】
図３は、フラッシュメモリメディア１３１の詳細な構造を表す図である。
【００６６】
フラッシュメモリメディア１３１は、図１で示したメディアインタフェース１１５との通信インタフェースであるメディアインタフェース１３１０と、データを格納する為のフラッシュメモリ１３１２と、メディアインタフェース１３１０にて受信したＩ／Ｏ（入力／出力）に従いフラッシュメモリ１３１２に対するデータの書込み／読出しを制御するメディアコントローラ１３１１より構成される。
【００６７】
ここで、メディアコントローラ１３１１は、データアクセス制御だけでなく、フラッシュメモリ全体に対して書き込み回数を平準化して不良発生を防ぐ機能や、部分的に発生した不良領域に代わって予め確保しておいた代替領域を割当てる機能などを持っていてもよい。また、前記代替領域を割り当てる機能を持つ場合、該代替領域の使用量を取得し、メディアインタフェース１３１０を介してコントローラ１１０へ通知する機能を持っていてもよい。
【００６８】
図４は、メモリ１１３に格納するプログラム及び制御情報の詳細な構成を表す図である。
【００６９】
メモリ１１３には、キャッシュ領域１１３６が設けられる。キャッシュ領域１１３６は、Ｉ／Ｏに対するアクセスを高速化する目的やフラッシュメモリメディア１３１への格納を高速化する目的で一時的にメモリ１１３上に格納する為の領域である。
【００７０】
また、メモリ１１３には、制御情報として、例えば、パリティグループ構成情報１１３１と、ボリューム構成情報１１３２と、メディア管理テーブル１１３３と、メディア情報データベース１１３４と、キャッシュ管理テーブル１１３５とが記憶される。パリティグループ構成情報１１３１は、パリティグループに含まれるフラッシュメモリメディア１３１の構成を管理する為のテーブルである。パリティグループとは、複数のフラッシュメモリメディア１３１を集めＲＡＩＤ構成のデータ格納・冗長化の単位である。ここでいうパリティグループは、例えばRAID5のようにパリティを使用した冗長構成に限らず、パリティを使用しない例えばミラーリングであっても良い。そのため、パリティグループは、冗長構成グループと言い換えることもできる。ボリューム構成情報１１３２は、論理ボリューム（以下、単に「ボリューム」と言う場合もある）の構成を管理する為のテーブルである。ボリュームは、パリティグループを任意のサイズで分割することにより作成される論理的な記憶装置である。メディア管理テーブル１１３３は、複数のフラッシュメモリメディア１３１の各々に関する情報を格納するテーブルである。メディア情報データベース１１３４は、フラッシュメモリメディア１３１の余命算出の為に使用する各種メディアの特性情報を格納するデータベースである。キャッシュ管理テーブル１１３５は、キャッシュ領域１１３６のデータ管理のためのテーブルである。
【００７１】
また、メモリ１１３には、プロセッサ１１１にて実行するプログラムとして、例えば、各フラッシュメモリメディア１３１の余命をチェックするメディア寿命チェックプログラム１１３７と、指定されたフラッシュメモリメディア１３１内に格納されたデータを他のフラッシュメモリメディア１３１へコピーした後に両者の属していたパリティグループの構成を変更するメディア交換プログラム１１３８とがある。また、Ｉ／Ｏ特性や装置構成に従ってキャッシュ領域１１３６に格納されフラッシュメモリメディア１３１に反映していないデータを書き込むデステージ制御プログラム１１３９と、Ｉ／Ｏ特性や装置使用状況に応じたＩ／Ｏの制御を行うＩ／Ｏ制御プログラム１１３０とがある。
【００７２】
図５は、パリティグループ構成情報１１３１の詳細な構成を表す図である。
【００７３】
パリティグループ構成情報１１３１は、要素として、例えば、パリティ番号情報１１３１ａ、メディア番号リスト情報１１３１ｂ及びＲＡＩＤレベル情報１１３１ｃを持つ。パリティ番号情報１１３１ａには、各パリティグループのユニークな番号（パリティグループ番号）が含まれる。メディア番号リスト情報１１３１ｂには、各パリティグループ毎に、パリティグループを構成する複数のフラッシュメモリメディアのユニークな番号（メディア番号）のリストが含まれる。ＲＡＩＤレベル情報１１３１ｃには、各パリティグループのＲＡＩＤレベル及び構成を表す情報が含まれる。
【００７４】
ここで、パリティ番号情報１１３１ａにおける各パリティグループ番号は、後述する図６のパリティグループ番号情報１１３２ｂ、及び、図７のパリティグループ番号情報１１３３ｃを参照する際のテーブルインデックスとして利用される。
【００７５】
更に、メディア番号リスト情報１１３１ｂの要素である各メディア番号は、後述する図７のメディア番号情報１１３３ａを参照する際に、そのメディア番号に関連する情報を取得する場合に利用される。
【００７６】
図６は、ボリューム構成情報１１３２の詳細な構成を表す図である。
【００７７】
ボリューム構成情報１１３２は、要素として、例えば、ボリューム番号情報１１３２ａ、パリティグループ番号情報１１３２ｂ及びボリューム領域アドレス情報１１３２ｃを持つ。ボリューム番号情報１１３２ａには、ストレージサブシステム１００内でユニークなボリュームの番号が含まれる。パリティグループ番号情報１１３２ｂには、各ボリューム毎に、そのボリュームが属するパリティグループの番号が含まれる。ボリューム領域アドレス情報１１３２ｃには、各ボリューム毎に、そのボリュームがパリティグループ内で使用している領域を表す情報（アドレス）が含まれる。
【００７８】
ここで、パリティグループ番号情報１１３２ｂにおける各パリティグループ番号は、前述のパリティ番号情報１１３１ａ（図５）におけるパリティグループ番号に対応している。パリティグループ番号情報１１３２ｂにおけるパリティグループ番号を使用することで、パリティグループ構成情報１１３１より、そのパリティグループ番号に対応した情報が取得可能である。
【００７９】
図７は、メディア管理テーブル１１３３の詳細な構成を表す図である。
【００８０】
メディア管理テーブル１１３３は、例えば、要素としてメディア番号情報１１３３ａ、書き込み回数情報１１３３ｂ、パリティグループ番号情報１１３３ｃ、メディア種別情報１１３３ｄを持つ。メディア番号情報１１３３ａには、各フラッシュメモリメディアのメディア番号が含まれる。書き込み回数情報１１３３ｂには、各フラッシュメモリメディア毎に、発生した書き込み回数が含まれる。パリティグループ番号情報１１３３ｃには、各フラッシュメモリメディア毎に、そのフラッシュメモリメディアが属するパリティグループの番号が含まれる。なお、現在使用されておらず予備として備えられている場合、パリティグループ番号の値として"予備"が記録される。メディア種別情報１１３３ｄには、各フラッシュメモリメディア毎に、そのフラッシュメモリメディアの種別に関する情報（以下、メディア種別）が含まれる。メディア種別には、例えば、フラッシュメモリメディアのメーカ名や記憶容量が含まれる。
【００８１】
ここで、メディア番号情報１１３３ａは、前述のメディア番号リスト情報１１３１ｂ（図５参照）より参照されるテーブルインデックスであることを表す。
【００８２】
また、パリティグループ番号情報１１３３ｃにおける各パリティグループ番号を利用することにより、パリティグループ構成情報１１３１より、そのパリティグループに対応する情報が取得可能である。
【００８３】
更に、メディア種別情報１１３３ｄにおける各メディア番号を利用することにより、メディア情報データベース１１３４より、そのメディア番号に対応した情報が取得可能である。
【００８４】
尚、メディアコントローラ１３１１がフラッシュメモリ１３１２に発生した不良領域サイズを取得し、該情報をメディアインタフェース１３１０よりコントローラ１１０へ通知する機能があるならば、書き込み回数情報１１３３ｂには、書き込み回数に代えて、当該不良領域サイズが格納されても良い。この場合、書込み回数上限値に代えて、不良領域サイズ合計上限値を採用することができる。
【００８５】
また、後に説明する余命計算は、図８で説明する書き込み回数上限値情報１１３４ｂ中の書込み回数上限値と、書き込み回数情報１１３３ｂにおける書込み回数との差を求めることで実現しているが、当該余命の値を、予め、所定の記憶領域（例えば、書き込み回数情報１１３３ｂ）に格納しても良い。
【００８６】
また、各メディアの書込み回数は、そのメディアへの書込みが行われる時に更新される。
【００８７】
また、書込み回数に代えて、イレース処理回数が記録されても良い。その場合、書込み回数上限値に代えて、イレース処理回数上限値が採用されてもよい。
【００８８】
図８は、メディア情報データベース１１３４の詳細な構成を表す図である。
【００８９】
メディア情報データベース１１３４は、要素として、例えば、メディア種別情報１１３４ａ、書き込み回数上限値情報１１３４ｂ、イレースサイズ情報１１３４ｃ及びメディア性能値１１３４ｄを持つ。メディア種別情報１１３４ａには、各種メディアのインデックス情報（種別情報）が含まれる。書き込み回数上限値情報１１３４ｂには、各種メディア毎に、書き込み回数を許容する上限値が含まれる。イレースサイズ情報１１３４ｃには、各種メディア毎に、対象のメディアに対して書き込みを行う際のイレースを行う領域のサイズが含まれる。メディア性能値１１３４ｄには、各種メディア毎に、対象のメディアの性能値が含まれる。なお、この性能値は、例えば、データ転送速度である。
【００９０】
尚、書き込み回数情報１１３３ｂ（図７参照）に、書込み回数に代えて不良領域サイズが含まれている場合、書き込み回数上限値情報１１３４ｂには、許容可能な不良領域サイズが含まれる。
【００９１】
ここで、メディア種別情報１１３４ａは、前述図７のメディア種別情報１１３３ｄより参照されるテーブルインデックスであることを表す。
【００９２】
図９は、キャッシュ管理テーブル１１３５の詳細な構成を表す図である。
【００９３】
キャッシュ管理テーブル１１３５は、キャッシュ情報テーブル１１３５−１と、キャッシュキューヘッダテーブル１１３５−２より構成されている。
【００９４】
キャッシュ情報テーブル１１３５−１は、要素として、例えば、テーブル番号情報１１３５−１ａと、ボリューム番号情報１１３５−１ｂと、ＬＢＡ情報１１３５−１ｂと、次ポインタ情報１１３５−１ｃを持っている。
【００９５】
テーブル番号情報１１３５−１ａは、キャッシュ情報テーブル１１３５−１の配列のインデックス番号で、キャッシュ領域１１３６の特定のサブ領域（以下、「キャッシュスロット」と言う）と、１：１で対応している。つまり、テーブル番号は、キャッシュスロット番号と言い換えても良い。
【００９６】
ボリューム番号情報１１３５−１ｂは、対象のテーブル番号（キャッシュスロット番号）が指し示すキャッシュスロットに格納されているデータが何れの論理ボリュームに存在するのかを表し、ＬＢＡ情報１１３５−１ｃは、当該論理ボリューム内の何れの位置にあるかを表す。
【００９７】
次ポインタ情報１１３５−１ｃは、キャッシュ情報テーブル１１３５−１のキュー構造を実現する為の情報である。各テーブル番号毎に値（次ポインタ）が用意され、その値は、対象のテーブル番号の次に参照するテーブル番号（キャッシュスロット番号）を示す。例えば、図９によれば、初めに、テーブル番号０に対応するキャッシュスロットにアクセスした場合には、順次、テーブル番号１、２、３にそれぞれ対応するキャッシュスロットにアクセスすることで、必要なデータをキャッシュ領域１１３６から取得できることがわかる。なお、次ポインタ"ＮＵＬＬ"とは、次に参照すべきテーブル番号が無いことを意味する。
【００９８】
キャッシュキューヘッダテーブル１１３５−２は、キャッシュ情報テーブル１１３５−１と対応付けられたキャッシュ領域１１３６の状態を表すキュー管理のヘッダテーブルである。このテーブル１１３５−２には、キャッシュ情報テーブル１１３５−１で連なる各キューの種別を表すキュー種別情報１１３５−２ａと、各キューの先頭のテーブル番号を示す先頭ポインタ情報１１３５−２ｂとが含まれる。
【００９９】
キュー種別情報１１３５−２ａには、３個の配列があり、それぞれ「フリー」「クリーン」「ダーティ」の状態を表す。配列「フリー」に連なるキューは、対応するキャッシュ領域１１３６を使用していないことを表す。そこで、当該キューを「フリーキュー」と呼ぶ。また、配列「クリーン」に連なるキューは、キャッシュ領域１１３６に格納されたデータと、ボリューム番号情報１１３５−１ｂ及びＬＢＡ情報１１３５−１ｂが示すフラッシュメモリメディア１３１に格納されたデータとが一致していることを表す。そこで、当該キューを、「クリーンキュー」とよぶ。さらに、配列「ダーティ」に連なるキューは、キャッシュ領域１１３６に格納されたデータと、ボリューム番号情報１１３５−１ｂ及びＬＢＡ情報１１３５−１ｂが示すフラッシュメモリメディア１３１に格納されたデータとが不一致であるため、フラッシュメモリメディア１３１に対するコピーが必要であることを表す。そこで、当該キューを、「ダーティキュー」と呼ぶ。
【０１００】
図１０は、キャッシュ領域１１３６と、図９に示したキャッシュ管理テーブル１１３５との対応関係を表す図である。
【０１０１】
キャッシュ領域１１３６は、特定の容量で区画に分割されており、該区画ごとにデータを格納する。各区画とキャッシュ情報テーブル情報１１３５−１は１：１対応している構造である。
【０１０２】
図１１は、メディア寿命チェックプログラム１１３７の処理手順フローである。
【０１０３】
本プログラムは定期的、他のプログラムからの指示、若しくはユーザ指定によりプロセッサ１１１にて実行される。以下、その処理手順の詳細を説明する。また、以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサによって処理が行われるものとする。
【０１０４】
メディア寿命チェックプログラム１１３７は、開始後、ステップＳ１００にて、終了要求のチェックを行う。終了の要求がある場合は、本プログラムが終了する。終了要求がない場合、ステップＳ１０１へ進む。
【０１０５】
ステップＳ１０１にて、メディア寿命チェックプログラム１１３７は、ストレージサブシステム１００が管理する適当なパリティグループを選択する。このステップＳ１０１では、全てのパリティグループの各々が順次に選択されても良いし、ランダムに選択が行われても良い。選択の後、ステップＳ１０２へ進む。
【０１０６】
ステップＳ１０２にて、メディア寿命チェックプログラム１１３７は、ステップＳ１０１で選択したパリティグループについてＲＡＩＤレベルを取得する。具体的には、パリティグループ構成情報１１３１より、選択したパリティグループの番号に対応したＲＡＩＤレベルが取得される。取得したＲＡＩＤレベルが１０（ミラーリング＋ストライピング構成）である場合は、ステップＳ１０３へ進み、ＲＡＩＤレベルが５（パリティ構成）若しくは６（ダブルパリティ構成）であるならば、ステップＳ１０４へ進む。
【０１０７】
ステップＳ１０３にて、メディア寿命チェックプログラム１１３７は、パリティグループ構成情報１１３１より選択したパリティグループに対応する複数のメディアを特定し（具体的には、選択したパリティングループの番号に対応する複数のメディア番号をメディア番号リスト情報１１３１ｂより取得し）、特定した複数のメディアのうちミラーリングを行っているメディアペアを選択した後、ステップＳ１０５へ進む。
【０１０８】
ステップＳ１０４にて、メディア寿命チェックプログラム１１３７は、選択したパリティグループの番号に対応する複数のメディア番号をメディア番号リスト情報１１３１ｂより取得し、それら複数のメディア（複数のメディア番号）を選択した後、ステップＳ１０５へ進む。
【０１０９】
ステップＳ１０５にて、メディア寿命チェックプログラム１１３７は、前ステップで選択した各メディアについて、各メディアのメディア番号に対応する書き込み回数を、書き込み回数情報１１３３ｂより取得する。また、その際、メディア寿命チェックプログラム１１３７は、各メディアのメディア番号に対応するメディア種別を、メディア種別情報１１３３ｄより取得する。さらに、メディア寿命チェックプログラム１１３７は、各メディア毎に、取得したメディア種別に対応した書き込み回数上限値を、書き込み回数上限値情報１１３４ｂより取得する。そして、メディア寿命チェックプログラム１１３７は、ステップＳ１０５の前ステップで選択した各メディアについて、上記取得した書込み回数上限値と書き込み回数との差を計算する。本実施形態では、説明を分かり易くするために、この算出された差を、余命とするが、余命は、その差を基に所定の法則で算出されても良い。余命の計算の後、ステップＳ１０６へ進む。
【０１１０】
ステップＳ１０６にて、メディア寿命チェックプログラム１１３７は、前ステップで取得した複数の余命（複数のメディアにそれぞれ対応した複数の余命）のうち、最も短い余命のメディアと、２番目に短い余命のメディアとを選択し、それらの余命の差分（余命差）を計算する。この後、ステップＳ１０７へ進む。
【０１１１】
ステップＳ１０７にて、メディア寿命チェックプログラム１１３７は、求めた余命差が第一の閾値未満であるかをチェックする。余命差が第一の閾値以上ならばステップＳ１１０へ進み、余命差が第一の閾値未満であるならば、ステップＳ１０８へ進む。尚、第一の閾値は、Ｓ１０１で選択されたパリティグループからデータが消失されてしまうことを防ぐ為の閾値である。具体的には、例えば、１番目に余命の短いメディアの故障に伴う予備メディアへの交換完了前に２番目に余命の短いメディアが寿命により故障してしまうことを防ぐ為の閾値である。そのため、そのようなことを未然に防止するのに適した値が、第一の閾値として設定される。より具体的には、例えば、最も余命の短いメディア１３１が故障してから二番目に余命が短いメディア１３１が故障するまでの第一の時間長に比して、後述の予備メディアへの交換が完了することが可能な第二の時間長が短くなるような値を第一の閾値として設定するのが望ましい。なお、第一の時間長は、パリティグループへの書込み頻度（書き込み回数が更新される速度）に応じて可変である。そのため、例えば、第一の閾値は、パリティグループ別に用意されても良い。また、プロセッサ１１１で実行されるコンピュータプログラムとして、図示しない監視プログラムが用意されてもよい。この場合、監視プログラムが、各パリティグループ（又は各メディア）に対する書込み頻度を監視し、書き込み頻度の値に応じて、そのパリティグループに対応する第一の閾値を変更しても良い。
【０１１２】
さて、ステップＳ１０８にて、メディア寿命チェックプログラム１１３７は、メディア管理テーブル１１３３を参照し、何れのパリティグループにも属しておらず、且つ、ステップＳ１０６にて選択したフラッシュメモリメディア１３１の何れかと交換した場合に、余命差が第一の閾値以上になる予備メディアと稼動メディア（Ｓ１０６にて選択したいずれかのメディア）を選択する。具体的には、パリティグループ番号が"予備"となっており、且つ、その"予備"に対応した書込み回数と、その予備メディアのメディア種別に対応する書込み回数上限値（書き込み回数上限値情報１１３４ｂより取得される値）との差分（余命）を算出する。そして、その算出された余命と、Ｓ１０６にて選択した２つのメディアのうち交換対象としない稼動メディアの余命との差を計算し、その余命差が、第一の閾値以上になるか否かを判断する。第一の閾値以上となれば、そうなった予備メディアを選択する。もし、そのような予備メディアが複数個ある場合には、余命差と第一の閾値との差分が最も大きい又は最も小さい予備メディアを選択する。また、ステップＳ１０８で選択される予備メディアは、稼動メディアの記憶容量以上の記憶容量を有する必要がある。後述する図１２のメディア交換の際に、稼動メディアに記憶されている全データが、予備メディアに移行されるからである。予備メディアの記憶容量が、稼動メディアの記憶容量以上か否かは、メディア種別から特定することができる。
【０１１３】
次に、ステップＳ１０９へ進む。
【０１１４】
ステップＳ１０９にて、メディア寿命チェックプログラム１１３７は、前ステップで選択した予備メディアと稼動メディア（つまり交換元と交換先の交換対象メディア）とを指定してメディア交換プログラム１１３８を起動する。本ステップの終了後、対象パリティグループは、前記交換対象のメディアに代えて予備メディアが属する構成となる。本処理の後、ステップＳ１１０へ進む。
【０１１５】
ステップＳ１１０にて、ステップＳ１００へ戻り、一連の処理を繰り返す。
【０１１６】
図１２は、メディア交換プログラム１１３８の処理手順フローである。
【０１１７】
本プログラムは他のプログラムからの指示、若しくはユーザ指定によりプロセッサ１１１にて実行される。以下、その処理手順の詳細を説明する。
【０１１８】
メディア交換プログラム１１３８は、開始後、ステップＳ２００にて交換対象メディアが交換中状態であることを記憶し、ステップＳ２０１に進む。ここで、交換対象メディアとは、交換元メディアと交換先メディアとを意味し、具体的には、例えば、図１１のステップＳ１０９で指定された稼動メディアと予備メディアである。
【０１１９】
ステップＳ２０１にて、メディア交換プログラム１１３８は、交換元メディア（例えば稼動メディア）より交換先メディア（例えば予備メディア）へ両メディアの先頭より順次コピーを行う為、進捗を管理するポインタを先頭（例えば各メディアの先頭アドレス）に設定し、ステップＳ２０２へ進む。
【０１２０】
ステップＳ２０２にて、メディア交換プログラム１１３８は、前ステップでポインティングしたメディアのデータ位置よりデータを読み込み、当該データをキャッシュ領域１１３６の適当なキャッシュスロットに格納する。このあと、ステップＳ２０３へ進む。
【０１２１】
ステップＳ２０３にて、メディア交換プログラム１１３８は、前ステップでキャッシュ領域１１３６へ格納したデータを、交換先メディアにコピーする。そして、ステップＳ２０４へ進む。
【０１２２】
ステップＳ２０４にて、メディア交換プログラム１１３８は、コピー処理の終了判定を行う。終了判定は、前ステップでコピー処理の進捗ポインタが、メディアの終端に到達したかを基に行う。進捗ポインタが末尾に到達していない場合は、処理を続行する為、ステップＳ２０５に進む。一方、末尾に到着した場合は、終了処理を行う為、ステップＳ２０６へ進む。
【０１２３】
ステップＳ２０５にて、メディア交換プログラム１１３８は、コピー対象箇所を変更する為に進捗ポインタをインクリメントした後、変更後の進捗ポインタ箇所についてコピー処理を行う為に、ステップＳ２０２へ戻る。
【０１２４】
ステップＳ２０６にて、メディア交換プログラム１１３８は、交換元メディアを備えたパリティグループ（以下、本フローの説明において、「対象パリティグループ」と言う）の構成を変更する。具体的には、メディア番号リスト情報１１３１ｂにおいて、対象パリティグループの番号に対応したメディア番号リストから、交換元メディアのメディア番号を削除し、そして、そのメディア番号リストに、交換先メディアのメディア番号を追加する。本処理の後、ステップＳ２０７へ進む。
【０１２５】
ステップＳ２０７にて、メディア交換プログラム１１３８は、パリティグループ番号情報１１３３ｃにおいて、交換先メディアの番号に対応したパリティグループの番号を、対象パリティグループの番号に変更し、交換元のメディアについては、非使用中である旨の情報である"予備"という値を格納し、メディア交換プログラム１１３８を完了する。但し、該交換元のメディアの余命が僅か（例えば所定の閾値未満）ならば、「予備」に代えて「使用禁止」という値を格納しても良い。この値は、交換先として選択されないメディアであるとの情報を意味する。
【０１２６】
図１３は、デステージ制御プログラム１１３９の処理手順フローである。
【０１２７】
本プログラムは定期的、他のプログラムからの指示、若しくはユーザ指定によりプロセッサ１１１にて実行される。以下、その処理手順の詳細を説明する。
【０１２８】
デステージ制御プログラム１１３９は、開始後、ステップＳ３００にて終了要求のチェックを行う。終了の要求がある場合は、本プログラムの終了を行う。終了要求がない場合、ステップＳ３０１へ進む。
【０１２９】
ステップＳ３０１にて、デステージ制御プログラム１１３９は、先頭ポインタ情報１１３５−２ｂより、ダーティについて連なるキャッシュ情報テーブル１１３５−１のメンバ（つまり、ダーティキューに連なるメンバ）を特定した後、ステップＳ３０２へ進む。
【０１３０】
ステップＳ３０２にて、デステージ制御プログラム１１３９は、前ステップで特定したメンバの所属するボリューム（以下、本フローの説明で「対象ボリューム」と言う）の番号を、ボリューム番号情報１１３５−１ｂより特定する。デステージ制御プログラム１１３９は、特定された対象ボリューム番号を基に、ボリューム番号情報１１３２ａの検索を行い、対象ボリュームが所属するパリティグループ（以下、本フローの説明で「対象パリティグループ」と言う）の番号を、パリティグループ番号情報１１３２ｂより特定する。デステージ制御プログラム１１３９は、特定された対象パリティグループ番号を基に、パリティ番号情報１１３１ａの検索を行い、対象パリティグループを構成するメディアのリストを、メディア番号リスト情報１１３１ｂより取得する。また、デステージ制御プログラム１１３９は、対象パリティグループ番号に対応するＲＡＩＤレベルをＲＡＩＤレベル情報１１３１ｃより取得する。デステージ制御プログラム１１３９は、取得したＲＡＩＤレベルと、対象ボリュームに対応するＬＢＡ（ＬＢＡ情報１１３５−１ｂから取得される情報）により、計算により、キャッシュ領域１１３６に格納されているダーティデータ（メディアに未反映のデータ）のコピー先とすべきメディアを特定する。本処理の後、ステップＳ３０３へ進む。
【０１３１】
ステップＳ３０３にて、デステージ制御プログラム１１３９は、前ステップで選択したメディアの番号に対応した書き込み回数を、書き込み回数情報１１３３ｂより取得する。また、その際、デステージ制御プログラム１１３９は、そのメディア番号に対応したメディア種別をメディア種別情報１１３３ｄより取得する。デステージ制御プログラム１１３９は、その後、取得したメディア種別に対応した書込み回数上限値を書き込み回数上限値情報１１３４ｂより取得し、その書込み回数上限値と、上記取得した書き込み回数との差を計算することで余命を算出する。余命計算の後にステップＳ３０４へ進む。
【０１３２】
ステップＳ３０４にて、デステージ制御プログラム１１３９は、求めた余命が第二の閾値を超えているかチェックを行う。本チェックにて、対象メディアの余命が閾値を超過していないならばステップＳ３０７へ進み、超過しているならばステップＳ３０５へ進む。
【０１３３】
ステップＳ３０５にて、デステージ制御プログラム１１３９は、キュー種別情報１１３５−２ａのダーティキューに連なるキャッシュ情報テーブル１１３５−１メンバの数をカウントし、ダーティ量（メンバのカウント値）が第三の閾値を超過していないかのチェックを行う。本チェックにて、ダーティ量が第三の閾値を超過しているならばステップＳ３０７へ進み、超過していないならばステップＳ３０６へ進む。
【０１３４】
ステップＳ３０６にて、デステージ制御プログラム１１３９は、メディアに対する書き込み回数を低減する為、キャッシュ領域１１３６上のデータをメディアに書き込む処理を後回しにする処理を行う。具体的には、デステージ制御プログラム１１３９は、キュー種別情報１１３５−２ａのダーティキューに連なった、データ書き込み対象であるキャッシュ情報テーブル１１３５−１メンバを、当該キューの末尾に移動する。また、そのメンバがキューの先頭である場合、デステージ制御プログラム１１３９は、先頭ポインタ情報１１３５−２ｂをキュー２番目にあるテーブルの番号に変更する。本処理の後、ステップＳ３０９へ進む。
【０１３５】
ステップＳ３０７にて、デステージ制御プログラム１１３９は、キャッシュ領域１１３６上のデータをメディアに書き込む。書き込み完了後、対象メディアについての書込み回数をインクリメントし、ステップＳ３０８へ進む。なお、当該書込み処理は、対象メディアについてのイレースサイズ情報１１３４ｃを参照し、当該イレースサイズ単位に書き込みを行っても良い。
【０１３６】
ステップＳ３０８にて、デステージ制御プログラム１１３９は、前ステップでデータ書き込みを行ったことによりキャッシュ領域１１３６とフラッシュメモリメディア１３１上のデータが一致する。その為、キャッシュの状態を「クリーン」に変更する為、デステージ制御プログラム１１３９は、キャッシュ情報テーブル１１３５−１のメンバをクリーンキューの末尾に移動する。また、前記メンバがダーティキューの先頭であった場合、デステージ制御プログラム１１３９は、「ダーティ」に対応する先頭ポインタ情報１１３５−２ｂをキュー２番目にあるテーブルの番号に変更する。クリーンキューにメンバが追加されていない状態で当該移動処理を行った場合、デステージ制御プログラム１１３９は、クリーンに対応する先頭ポインタ情報１１３５−２ｂに前記メンバのテーブル番号を格納する。本処理の後にステップＳ３０９へ進む。
【０１３７】
ステップＳ３０９にて、一連の処理を繰り返し行う為、ステップＳ３００へ戻る。
【０１３８】
図１４は、Ｉ／Ｏ制御プログラム１１３０の詳細な構造である。
【０１３９】
Ｉ／Ｏ制御プログラム１１３０は、ホストコンピュータ３００から要求された書き込みＩ／Ｏ（書込み要求）を処理する為のＷｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１と、読み出しＩ／Ｏ（読出し要求）を処理する為のＲｅａｄ  Ｉ／Ｏ制御ルーチン１１３０−２より構成される。
【０１４０】
図１５は、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチンの詳細手順フローである。
【０１４１】
本ルーチンは定期的、他のプログラムからの指示、若しくはユーザ指定によりプロセッサ１１１にて実行される。以下、その処理手順の詳細を説明する。
【０１４２】
処理開始後、ステップＳ４００にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、キャッシュ管理テーブル１１３５よりダーティキュー及びクリーンキューを辿り、キャッシュ領域１１３６にＩ／Ｏ対象のデータが格納されているか否かを調査する。調査の結果、データが格納されているならばステップＳ４０１へ、格納されていないのならばステップＳ４０２へ進む。
【０１４３】
ステップＳ４０１にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、前ステップで調査した結果、キャッシュ情報テーブル１１３５−１連結されているがダーティキューであれば「ダーティ状態」、クリーンキューであれば「クリーン状態」であると見做す。ここで、キャッシュ領域１１３６がダーティ状態であればステップＳ４０３へ、クリーン状態であればステップＳ４０８へ進む。
【０１４４】
ステップＳ４０２にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、データ書き込みに使用するためキャッシュ領域１１３６上の適当な領域の確保を行う。はじめにフリーキューに接続されている適当なキャッシュ情報テーブル１１３５−１を確保し、ボリューム番号情報１１３５−１ｂ、ＬＢＡ情報１１３５−１ｂの必要情報を格納する。但し、フリーキューからのテーブル確保処理において、当該キューに接続がない場合は、クリーンキューから確保を行う。また、フリーキュー及びクリーンキュー共に接続がないならば、デステージ制御プログラム１１３９によるキャッシュ領域１１３６のクリーン化を待つ。本処理の後、ステップＳ４０３へ進む。
【０１４５】
ステップＳ４０３にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、ボリューム構成情報１１３２のパリティグループ番号情報１１３２ｂを参照することで、書き込み対象データの格納先と対応するフラッシュメモリメディア１３１の所属するパリティグループを特定する。本処理の後、ステップＳ４０４へ進む。
【０１４６】
ステップＳ４０４にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、パリティグループ構成情報１１３１のメディア番号リスト情報１１３１ｂを参照し、データ書き込み先のアドレスより、データ格納先のフラッシュメモリメディア１３１を特定する。本処理の後、ステップＳ４０５へ進む。
【０１４７】
ステップＳ４０５にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、データ格納先フラッシュメモリメディア１３１について、前述した方法で、書き込み回数と書き込み回数上限値とを取得し、それらの差を余命として求める。本処理の後、ステップＳ４０６へ進む。
【０１４８】
ステップＳ４０６にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、前ステップで求めた余命が第四の閾値を超過しているかをチェックする。第四の閾値を超過している場合にはステップＳ４０７へ、超過していない場合はステップＳ４０８へ進む。なお、第四の閾値は、図１３のＳ３０４の第二の閾値と同じ値であっても異なる値であってもよい。
【０１４９】
ステップＳ４０７にて、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、Ｉ／Ｏ処理を休止させることでＩ／Ｏの流入を制限する。該休止の時間長は、固定値であっても良いし、算出された余命を基に設定された可変値であってもよい（Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１が、余命を基に、休止時間長を決定し、決定した休止時間長の間、Ｉ／Ｏ処理を停止させてもよい）。Ｉ／Ｏ処理の休止では、例えば、ホストからのＩ／Ｏの遅延するための処理を実行しても良い。具体的には、ホストからのＩ／Ｏに対する応答にて、リトライ要求或いはビジーをホストに返すことで遅延させても良いし、受領したＩ／Ｏの要求メッセージを所定のバッファに蓄積しておき、そのＩ／Ｏに対する応答を遅延させてもよい。本処理の後、ステップＳ４０８へ進む。
【０１５０】
ステップＳ４０８にて、当該キャッシュ領域１１３６におけるデータと、対応するフラッシュメモリメディア１３１に格納されていたデータには差異が発生する。そのため、そのデータが格納されているキャッシュスロットの状態を「ダーティ」に設定する必要がある。そのため、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、対象のキャッシュ情報テーブル１１３５−１のメンバをダーティキューへ移動させる。その後、Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチン１１３０−１は、ホストコンピュータ３００より要求された書き込み対象データを、確保されたキャッシュ領域１１３６上の領域へ転送する。以上の処理をもって一連の書き込み処理を終了する。このとき、当該書き込み対象となったフラッシュメモリメディア１３１に関する書き込み回数の値をインクリメントする。尚、フラッシュメモリメディア１３１の劣化は、数回の書き込み処理につき１回発生するイレース処理において発生する為、イレースサイズ情報１１３４ｃに指定するサイズのデータ書き込みにつき書き込み回数を１インクリメントするように制御しても構わない。
【０１５１】
図１６は、Ｒｅａｄ  Ｉ／Ｏ制御ルーチンの詳細手順フローである。
【０１５２】
本ルーチンは定期的、他のプログラムからの指示、若しくはユーザ指定によりプロセッサ１１１にて実行される。以下、その処理手順の詳細を説明する。
【０１５３】
処理開始後、Ｒｅａｄ  Ｉ／Ｏ制御ルーチン１１３０−２は、ステップＳ５００にてキャッシュ管理テーブル１１３５よりダーティキュー及びクリーンキューを辿り、キャッシュ領域１１３６にＩ／Ｏ対象のデータが格納されているか否かを調査する。調査の結果、データが格納されていないならばステップＳ５０１へ、格納されているならばステップＳ５０４へ進む。
【０１５４】
ステップＳ５０１にて、Ｒｅａｄ  Ｉ／Ｏ制御ルーチン１１３０−２は、ボリューム構成情報１１３２のパリティグループ番号情報１１３２ｂを参照することで、読み出しのデータ格納先と対応するフラッシュメモリメディア１３１の所属するパリティグループを特定する。本処理の後、ステップＳ５０２へ進む。
【０１５５】
ステップＳ５０２にて、Ｒｅａｄ  Ｉ／Ｏ制御ルーチン１１３０−２は、パリティグループ構成情報１１３１のメディア番号リスト情報１１３１ｂを参照し、データ読み出し元のアドレスより、データ格納先のフラッシュメモリメディア１３１を特定する。本処理の後、ステップＳ５０３へ進む。
【０１５６】
ステップＳ５０３にて、Ｒｅａｄ  Ｉ／Ｏ制御ルーチン１１３０−２は、キャッシュ領域１１３６上の適当なキャッシュスロットに、ホストコンピュータ３００へ転送すべきデータを格納する。はじめに、フリーキューに接続されている適当なキャッシュ情報テーブル１１３５−１を確保し、ボリューム番号情報１１３５−１ｂ、ＬＢＡ情報１１３５−１ｂの必要情報を格納する。但し、フリーキューからのテーブル確保処理において、当該キューに接続がない場合は、クリーンキューから確保を行う。また、フリーキュー及びクリーンキュー共に接続がないならば、デステージ制御プログラム１１３９によるキャッシュ領域１１３６のクリーン化を待つ。この後、フラッシュメモリメディア１３１上の対象のデータをキャッシュ領域１１３６へコピーする。コピー完了後、確保したキャッシュ情報テーブル１１３５−１のメンバをクリーンキューへ移動する。本処理の後、ステップＳ５０４へ進む。
【０１５７】
ステップＳ５０４にて、Ｒｅａｄ  Ｉ／Ｏ制御ルーチン１１３０−２は、前ステップにて検出若しくは確保されたキャッシュ領域１１３６上の領域に格納されたデータを、ホストコンピュータ３００に対して送信を行い、一連の処理を終了する。
【０１５８】
図１７は、ユーザインタフェース１２４の表示画面の詳細図である。
【０１５９】
表示画面（グラフィカル・ユーザ・インタフェース）上には、例えば、メディア選択シート１２４１、パリティグループ選択シート１２４２、実行ボタン１２４３が表示される。この表示画面は、例えば、メディア交換プログラム１１３８によって表示される。
【０１６０】
パリティグループ選択シート１２４２には、パリティグループの番号が表示されている。メディア交換プログラム１１３８は、表示されているパリティグループ番号の中から任意の個数の番号を選択可能に表示する（例えば、マウスカーソル１２４４を用いてパリティグループ番号の選択が可能である）。選択処理に伴い、メディア選択シート１２４１の表示が変更される。
【０１６１】
メディア選択シート１２４１には、パリティグループ選択シート１２４２で選択されたパリティグループを構成しているフラッシュメモリメディア１３１の番号が表示される。メディア選択シート１２４１では、例えば、表示された２個の番号をマウスカーソル１２４４を用いて選択することが出来る。
【０１６２】
実行ボタン１２４３は、マウスカーソル１２４４による選択に伴い、メディア選択シート１２４１で選択された２個のフラッシュメモリメディア１３１を交換するようコントローラ１１０に対して要求を行う。当該要求に伴い、コントローラ１１０は、プロセッサ１１１によるメディア交換プログラム１１３８の処理を行い、交換処理を実行する。
【０１６３】
以上、上述した第一の実施形態によれば、一つのパリティグループの中で、最も短い余命と２番目に短い余命との差分が第一の閾値以上になるように制御される。これにより、パリティグループにおいて同時期に２点以上の記憶媒体が故障してしまうことを防ぐことができる。
【実施例２】
【０１６４】
以下、本発明の第二の実施形態を説明する。その際、第一実施形態の相違点を主に説明し、第一実施形態との共通点については説明を省略或いは簡略する。
【０１６５】
図１８は、本発明の第二実施形態に係る計算機システムの構成を示す図である。
【０１６６】
はじめにシステムの構成について説明を行う。
【０１６７】
ホストコンピュータ３００、ストレージネットワーク２００、ストレージサブシステム１００及びストレージサブシステム１００の構成部品であるコントローラ１１０、メディアユニット１３０、管理端末１２０及び管理端末１２０の構成部品であるネットワークインタフェース１２５は、第一の実施形態で説明したそれぞれの機器（図１）と同一である。加えて、コントローラ１１０は、「ボリュームマイグレーション機能」を有する。この機能により、使用中の論理ボリュームと未使用の論理ボリュームを指定して、使用中の論理ボリュームより未使用の論理ボリュームへデータコピーを行った後に両者の論理ボリューム番号を入れ替えることで、両論理ボリュームが所属するパリティグループを交換する。
【０１６８】
また、この第二の実施形態では、データ配置管理装置４００が、管理端末１２０に接続される。データ配置管理装置４００は、その装置が管理するボリューム使用用途に従い、データを格納するメディア種別を変更する機能を有する。データ配置管理装置４００は、当該装置全体の制御を行うプロセッサ４０１と、プロセッサ４０１が制御を行う為のプログラムや制御情報を格納する為のメモリ４０２と、管理端末１２０との通信インタフェースであるネットワークインタフェース４０３より構成される。尚、ネットワークインタフェース４０３はネットワークインタフェース１２２に接続されている。
【０１６９】
データ配置管理装置４００の各構成部品の一例として、下記の機器を適用することが出来る。すなわち、プロセッサ４０１は、ｘ８６、ＳＰＡＲＣ、Ｐｏｗｅｒ等のパーソナル若しくはサーバユースのプロセッサを主に使用する。メモリ４０２は、ＳＲＡＭやＳＤＲＡＭ等の各種揮発性メモリまたはフラッシュメモリ等の不揮発性メモリである。ネットワークインタフェース４０３イーサネットカード等の通信インタフェースである。
【０１７０】
図１９は、メモリ４０２に格納されるプログラム及び制御情報の詳細な構成を表す図である。
【０１７１】
メモリ４０２には、制御情報として、例えば、各ボリュームの用途を管理する為のボリューム用途管理テーブル４０２０と、ボリュームの用途に応じて必要とされる性能や寿命情報を格納するポリシー管理データベース４０２１と、各パリティグループのアクセス性能値と余命情報を格納するパリティグループ情報データベース４０２２とが格納される。
【０１７２】
また、メモリ４０２には、プロセッサ４０１にて実行するプログラムとして、例えば、ボリューム移動プログラム４０２３が格納される。ボリューム移動プログラム４０２３は、任意のボリュームを当該ボリュームの用途に従って、別の適切なパリティグループへの移動を提案し（例えばユーザに通知し）、コントローラ１１０に実行を要求する。
【０１７３】
図２０は、ボリューム用途管理テーブル４０２０の詳細な構成を表す図である。
【０１７４】
ボリューム用途管理テーブル４０２０は、ボリューム番号情報４０２０ａと、パリティグループ番号情報４０２０ｂと、ボリューム用途情報４０２０ｃと、ボリューム容量情報４０２０ｄを要素として含む。ボリューム番号情報４０２０ａには、各ボリュームのボリューム番号が含まれる。パリティグループ番号情報４０２０ｂには、各ボリュームについて、そのボリュームが所属するパリティグループの番号が含まれる。ボリューム用途情報４０２０ｃには、各ボリュームについて、そのボリュームの用途を表す情報（以下、ボリューム用途）が含まれる。ボリューム容量情報４０２０ｄには、各ボリュームについて、そのボリュームの記憶容量が含まれる。
【０１７５】
ここで、ボリューム用途情報４０２０ｃにおけるボリューム用途を用いて、後述する図２１のポリシー管理データベース４０２１より、そのボリューム用途に対応する要求性能及び要求書込み頻度を取得することが出来る。
【０１７６】
また、パリティグループ番号情報４０２０ｂにおけるパリティグループ番号を用いて、後述する図２２のパリティグループ情報データベース４０２２より、そのパリティグループ番号に対応する種々の情報を取得することが出来る。
【０１７７】
上述した例では、１台のデータ配置管理装置４００にて、１台のストレージサブシステム１００を管理する構成として示している。しかし、それに限らず、他種の構成が採用されてもよい。例えば、もし１台のデータ配置管理装置４００にて複数のストレージサブシステム１００を管理するならば、前記情報に加えて、製品番号などのストレージサブシステム１００を特定する為の情報を併せて持つ必要がある。
【０１７８】
尚、ボリューム番号情報４０２０ａ、パリティグループ番号情報４０２０ｂ、ボリューム容量情報４０２０ｄの対応関係は、管理端末１２０を介して、コントローラ１１０にボリューム構成情報１１３２の情報転送を要求して取得することができる。
【０１７９】
図２１は、ポリシー管理データベース４０２１の詳細な構成を表す図である。
【０１８０】
ポリシー管理データベース４０２１は、ボリューム用途情報４０２１ａと、ボリューム要求性能情報４０２１ｂと、ボリューム書き込み頻度情報４０２１ｃを要素として構成されている。ボリューム用途情報４０２１ａには、各ボリューム用途を含む。ボリューム要求性能情報４０２１ｂには、各ボリューム用途について、そのボリューム用途において要求される性能値（以下、要求性能）が含まれる。ボリューム書き込み頻度情報４０２１ｃには、各ボリューム用途について、そのボリューム用途において発生する書き込みの頻度が含まれる。
【０１８１】
尚、ボリューム用途情報４０２１ａに格納されたテーブルインデックスは図２０で示したボリューム用途情報４０２０ｃより参照されている。
【０１８２】
図２２は、パリティグループ情報データベース４０２２の詳細な構成を表す図である。
【０１８３】
パリティグループ情報データベース４０２２は、パリティグループ番号情報４０２２ａと、構成容量リスト情報４０２２ｂと、最大性能値情報４０２２ｃと、余命情報４０２２ｄを要素として構成されている。パリティグループ番号情報４０２２ａには、各パリティグループの番号が含まれる。構成容量リスト情報４０２２ｂには、各パリティグループについて、そのパリティグループ内に作成された各論理ボリュームの記憶容量がリスト化されたものが含まれる。最大性能値情報４０２２ｃには、各パリティグループについて、そのパリティグループが発揮可能な性能の最大値（例えば、レイテンシやスループット等の性能情報）が含まれる。余命情報４０２２ｄには、各パリティグループについて、そのパリティグループに対して書き込み可能な回数が含まれる。
【０１８４】
尚、最大性能値情報４０２２ｃは、例えば、管理端末１２０を介して、コントローラ１１０に、パリティグループ構成情報１１３１、メディア管理テーブル１１３３及びメディア情報データベース１１３４の情報転送を要求し、その要求に応答して取得した後に、対象のパリティグループを構成する各メディア１３１の転送性能（メディア性能値１１３４ｄから取得する値）の和を算出することで、求めることができる。但し、最大性能値は、前記算出に代えて、実際に性能測定を行った結果を基にしても良い。
【０１８５】
また、構成容量リスト情報４０２２ｂは、管理端末１２０を介して、コントローラ１１０に、パリティグループ構成情報１１３１の情報転送を要求することにより、取得することができる。
【０１８６】
更に、余命情報４０２２ｄは、管理端末１２０を介して、コントローラ１１０に、パリティグループ構成情報１１３１及びメディア管理テーブル１１３３の情報転送を要求して取得した後に、対象のパリティグループを構成する各フラッシュメモリメディア１３１毎に、書き込み回数上限値と書き込み回数の差である余命を算出し、算出された複数の余命の総和を算出することで、求めることができる。図２２において、書込み可能な回数が"無限大"となっているのは、書込みによって単純に劣化する種類の記憶媒体ではない（例えばＨＤＤである）ことを表す。
【０１８７】
図２３は、ボリューム移動プログラム４０２３の詳細手順フローである。
【０１８８】
本プログラムは定期的、他のプログラムからの指示、若しくはユーザ指定によりプロセッサ４０１にて実行される。以下、その処理手順の詳細を説明する。
【０１８９】
処理開始後、ボリューム移動プログラム４０２３は、ステップＴ１００にて終了要求のチェックを行う。終了の要求がある場合は本プログラムの終了を行う。終了要求がない場合、ステップＴ１０１へ進む。
【０１９０】
ステップＴ１０１にて、ボリューム移動プログラム４０２３は、データ配置管理装置４００が管理する適当なボリュームを選択する。この選択のための方法としては、例えば、無作為にボリュームを指定する方法であっても、過去に未チェックであるものを優先的に選択する方法であっても、ボリュームの設定に変更があったものを優先して選択する方法であっても良い。本処理の後、ステップＴ１０２へ進む。
【０１９１】
ステップＴ１０２にて、ボリューム移動プログラム４０２３は、前ステップで選択されたボリュームが属するパリティグループの特定を行う。ボリューム用途管理テーブル４０２０のボリューム番号情報４０２０ａより、前ステップで選択したボリュームを検索し、パリティグループ情報データベース４０２２より、そのボリュームを有するパリティグループを取得することで特定を行う。本処理の後、ステップＴ１０２へ進む。
【０１９２】
ボリューム移動プログラム４０２３は、前ステップで特定したパリティグループで対象ボリュームの運用を継続するかを判断する。ここでは、ステップＴ１０３に示すように、「要求性能を満たしているか」という第一の基準での判断と、ステップＴ１０６に示すように、「運用を継続することで近い時間以内に故障とならないか」という第二の基準での判断を行う。
【０１９３】
ステップＴ１０３にて、「要求性能を満たしているか」の判断を行う為、ボリューム移動プログラム４０２３は、当該パリティグループ（ステップＴ１０２にて特定されたパリティグループ）に属するボリュームをボリューム用途管理テーブル４０２０のパリティグループ番号情報４０２０ｂより検索することで抽出する。そして、ボリューム移動プログラム４０２３は、抽出されたボリュームに関するボリューム用途情報４０２０ｃより参照されているポリシー管理データベース４０２１よりボリューム要求性能情報４０２１ｂを取得する。続いて、ボリューム移動プログラム４０２３は、前記パリティグループの持つ性能値を最大性能値情報４０２２ｃより取得する。この後、前記パリティグループに属する各ボリュームの要求性能値の和とパリティグループの性能値を比較する。前者が後者を下回っていれば「満たしている」と判断し、ステップＴ１０６にすすみ、逆に上回っていれば「満たしていない」と判断し、ステップＴ１０４にすすむ。なお、このステップＴ１０３では、要求性能を満たしているか否かの判断が行われるが、それに代えて又は加えて、信頼性（例えばＲＡＩＤレベル）、メディア価格及びメディア種類のうちの少なくとも一つを基に、当該パリティグループを構成する各ボリュームのボリューム用途は適しているか否かの判断が行われても良い。
【０１９４】
ステップＴ１０６にて、「運用を継続することで近い時間以内に故障とならないか」の判断を行う為、ボリューム移動プログラム４０２３は、当該パリティグループに属するボリュームをボリューム用途管理テーブル４０２０のパリティグループ番号情報４０２０ｂより検索することで抽出する。そして、抽出されたボリュームに関するボリューム用途情報４０２０ｃより参照されているポリシー管理データベース４０２１より、ボリューム書き込み頻度情報４０２１ｃを取得する。続いて、前記パリティグループの余命を余命情報４０２２ｄより取得する。この後、そのパリティグループ余命を、前記パリティグループに属する各ボリュームの寿命消費速度の和（要求書き込み頻度の和）で除算し、それの商から、故障となる時間を予測する。当該予測値（例えば商）が第五の閾値以内であれば、「近い時間以内に故障となる」と判断し、ステップＴ１０４に進み、閾値を超えていれば「故障までに長時間を要する」と判断し、ステップＴ１００に戻る。
【０１９５】
ステップＴ１０４にて、ボリューム移動プログラム４０２３は、移動元と移動先にそれぞれ適切なボリュームを選択する。ここでの選択の目的としては、後述するボリュームの移動が行われることにより、当該パリティグループにおいて、「要求性能を満たしているか」で「満たしている」となり、かつ、「運用を継続することで近い時間以内に故障とならないか」で「故障までに長時間を要する」となるようにすることがある。そのため、その観点から、移動元と移動先にそれぞれ適切なボリュームが選択される。具体的には、例えば、要求性能を満たしていない場合には、当該パリティグループにおける複数のボリュームの要求性能の和と該パリティグループの最大性能との差分以上の要求性能のボリューム用途に対応したボリュームを、移動元ボリュームとして選択する。また、例えば、近い時間以内に故障となるのであれば、要求書き込み頻度の和を、余命＞第五の閾値とすることができるような、要求書込み頻度のボリューム用途に対応したボリュームを、移動元ボリュームとして選択する。なお、移動先のボリュームは、移動元のボリュームの記憶容量以上の記憶容量となる必要がある。尚、上記の目的を達成できるような移動先ボリュームが見つからない場合、現在の構成に比べて、要求された性能値により近い、若しくは故障までに要する時間が長くなる移動先ボリュームが存在するならば、これを指定しても良い。
【０１９６】
ステップＴ１０５にて、ボリューム移動プログラム４０２３は、管理端末１２０を介して、コントローラ１１０に、移動元と移動先のボリュームを指定して、ボリュームの移動を実行させる。本処理の後、ステップＴ１００へ戻り、一連の処理を繰り返し行う。
【０１９７】
以上、上述した第二の実施形態によれば、余命の少ないメディアで構成されたパリティグループ内に、書き込み頻度の高いボリューム用途のボリュームがあれば、そのボリュームを、別のパリティグループに移すことで、そのパリティグループで故障が発生する時期を遅くすることができる。
【０１９８】
以上、本発明の幾つかの好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０１９９】
例えば、第二実施形態において、データ配置管理装置４００で実行されるコンピュータプログラムや制御情報は、ストレージサブシステム内のメモリにあっても良い（つまり、図２３のフローはストレージサブシステムで実行されても良い）。また、例えば、図１１のフローは、ストレージサブシステム内ではなく、ストレージサブシステムに接続された遠隔の計算機で行われても良い。
【０２００】
また、例えば、第二実施形態において、以下の処理が行われても良い。すなわち、ボリューム移動プログラム４０２３が、余命が短い（例えば所定の閾値未満の）パリティグループ（以下、パリティグループＡ）から、書込みが発生する或いは書込みが比較的頻繁に発生する用途（例えば、バックアップ或いは業務、以下、書込み用途）のボリュームを外に移行する。そして、ボリューム移動プログラム４０２３が、書込みが発生しない或いは比較的頻繁には発生しない用途（例えば、アーカイブ或いはWORM、以下、読出し用途)のボリュームを、そのパリティグループＡに移動する。換言すれば、書込み用途のボリュームと、読出し用途のボリュームとを交換する。つまり、ボリューム移動プログラム４０２３は、余命が短いパリティグループＡを、実質的に、読出し専用とする。これにより、余命が短いパリティグループＡをより長く使用することができる。なお、どのパリティグループにある読出し用途のボリュームを、交換対象とするかについては、例えば、余命が最も長いパリティグループにある読出し用途のボリュームとすることができる。また、上記のようなボリューム交換において、読出し用途のボリュームを、余命の短いパリティグループＡに移すので、その移行の際に、余命の短いパリティグループＡには更なる書込みが発生する。そこで、ボリューム移動プログラム４０２３は、その書込みによって余命が尽きてしまわないよう制御できるよう構成される。具体的には、例えば、ボリューム移動プログラム４０２３が、書込み余命よりも、読出し用途のボリュームのサイズに基づく書込み回数の方が小さくなるようなサイズを有する読出し用途のボリュームであって、移行しても移行先のパリティの容量を超えないボリュームを選択し、そのボリュームを、交換対象の読出し用途のボリュームとすることができる。
【図面の簡単な説明】
【０２０１】
【図１】本発明の第一の実施形態に係る計算機システムの構成例を示す図である。
【図２】メディアユニットの構造を示す図である。
【図３】フラッシュメモリメディアの詳細な構造を表す図である。
【図４】メモリ１１３に格納するプログラム及び制御情報の詳細な構成を表す図である。
【図５】パリティグループ構成情報１１３１の詳細な構成を表す図である。
【図６】ボリューム構成情報１１３２の詳細な構成を表す図である。
【図７】メディア管理テーブル１１３３の詳細な構成を表す図である。
【図８】メディア情報データベース１１３４の詳細な構成を表す図である。
【図９】キャッシュ管理テーブル１１３５の詳細な構成を表す図である。
【図１０】キャッシュ領域１１３６と、図９に示したキャッシュ管理テーブル１１３５との対応関係を表す図である。
【図１１】メディア寿命チェックプログラム１１３７の処理手順フローである。
【図１２】メディア交換プログラム１１３８の処理手順フローである。
【図１３】デステージ制御プログラム１１３９の処理手順フローである。
【図１４】Ｉ／Ｏ制御プログラム１１３０の詳細な構造である。
【図１５】Ｗｒｉｔｅ  Ｉ／Ｏ制御ルーチンの詳細手順フローである。
【図１６】Ｒｅａｄ  Ｉ／Ｏ制御ルーチンの詳細手順フローである。
【図１７】ユーザインタフェース１２４の表示画面の詳細図である。
【図１８】本発明の第二実施形態に係る計算機システムの構成を示す図である。
【図１９】メモリ４０２に格納されるプログラム及び制御情報の詳細な構成を表す図である。
【図２０】ボリューム用途管理テーブル４０２０の詳細な構成を表す図である。
【図２１】ポリシー管理データベース４０２１の詳細な構成を表す図である。
【図２２】パリティグループ情報データベース４０２２の詳細な構成を表す図である。
【図２３】ボリューム移動プログラム４０２３の詳細手順フローである。
【符号の説明】
【０２０２】
１００…ストレージサブシステム、１１０…コントローラ、１１１…プロセッサ、１１２…ストレージネットワークインタフェース、１１３…メモリ、１１５…メディアインタフェース、１１６…ネットワークインタフェース、１２０…管理端末、１２１…プロセッサ、１２２…ネットワークインタフェース、１２３…メモリ、１２４…ユーザインタフェース、１２５…ネットワークインタフェース、１３０…メディアユニット、１３１…フラッシュメモリメディア、２００…ストレージネットワーク、３００…ホストコンピュータ、４００…データ配置管理装置、４０１…プロセッサ、４０２…メモリ、４０３…ネットワークインタフェース、１１３０…Ｉ／Ｏ制御プログラム、１１３１…パリティグループ構成情報、１１３２…ボリューム構成情報、１１３３…メディア管理テーブル、１１３４…メディア情報データベース、１１３５…キャッシュ管理テーブル、１１３６…キャッシュデータ、１１３７…メディア寿命チェックプログラム、１１３８…メディア交換プログラム、１１３９…デステージ制御プログラム、１３１０…メディアインタフェース、１３１１…メディアコントローラ、１３１２…フラッシュメモリ、４０２０…ボリューム用途管理テーブル、４０２１…ポリシー管理データベース、４０２２…パリティグループ情報データベース、４０２３…ボリューム移動プログラム
【図１】
2008040713.tif 000003
【図２】
2008040713.tif 000004
【図３】
2008040713.tif 000005
【図４】
2008040713.tif 000006
【図５】
2008040713.tif 000007
【図６】
2008040713.tif 000008
【図７】
2008040713.tif 000009
【図８】
2008040713.tif 000010
【図９】
2008040713.tif 000011
【図１０】
2008040713.tif 000012
【図１１】
2008040713.tif 000013
【図１２】
2008040713.tif 000014
【図１３】
2008040713.tif 000015
【図１４】
2008040713.tif 000016
【図１５】
2008040713.tif 000017
【図１６】
2008040713.tif 000018
【図１７】
2008040713.tif 000019
【図１８】
2008040713.tif 000020
【図１９】
2008040713.tif 000021
【図２０】
2008040713.tif 000022
【図２１】
2008040713.tif 000023
【図２２】
2008040713.tif 000024
【図２３】
2008040713.tif 000025