(57)【要約】【課題】フラッシュメモリに代表される不揮発性メモリによって構成された記憶装置の性能を向上させる。【解決手段】不揮発性メモリによって構成されるメモリドライブを含む記憶装置を備えるストレージ装置であって、ホスト計算機に認識される記憶容量を提供するために必要なメモリドライブの台数よりも一台以上多いメモリドライブによってグループを構成し、各メモリドライブから分割された記憶領域を一つずつ含むセグメントごとに管理され、分割された記憶領域にはデータ領域又はテンポラリ領域が割り当てられ、ホスト計算機からデータの書き込み要求を受け付けたとき、データが書き込まれるデータ領域及びセグメントを特定し、更新されたデータを特定されたセグメントに含まれるテンポラリ領域に書き込んで、当該データが書き込まれたテンポラリ領域を新たにデータ領域とし、当該データ領域を消去して、新たにテンポラリ領域とする。【選択図】図２
2008204041.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してホスト計算機に接続され、当該ホスト計算機によって読み書きされるデータが格納されるストレージ装置であって、
前記ネットワークに接続されるインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、前記読み書きされるデータが一時的に格納されるキャッシュメモリと、前記読み書きされるデータが格納される記憶装置と、を備え、
前記記憶装置は、
一つ以上の不揮発性メモリによって構成されたメモリドライブを搭載し、
前記ホスト計算機に認識される記憶容量を提供するために必要なメモリドライブの台数よりも一台以上多いメモリドライブによってグループを構成し、
前記グループを構成する各メモリドライブは、所定の容量ごとに記憶領域が分割され、
前記分割された記憶領域は、前記グループを構成する各メモリドライブに含まれる分割された記憶領域が少なくとも一つ以上含まれるセグメントごとに管理され、
前記プロセッサは、
前記読み書きされるデータが格納されるデータ領域及び空き領域であるテンポラリ領域が前記セグメントにそれぞれ少なくとも一つ以上含まれるように、前記データ領域又は前記テンポラリ領域を前記分割された記憶領域にそれぞれ割り当て、
前記インタフェースを介して、前記ホスト計算機からデータの書き込み要求を受け付けた場合に、
前記書き込みデータが書き込まれるデータ領域を抽出し、
前記抽出されたデータ領域が含まれるセグメントを特定し、
前記書き込みデータの容量が、前記抽出されたデータ領域に格納されたデータの容量に基づいて決定される値よりも大きい場合には、
前記抽出されたデータ領域に格納されたデータを読み出して、当該読み出されたデータを前記書き込み要求に従って更新して、当該更新されたデータを前記キャッシュメモリに格納し、
前記特定されたセグメントに含まれるテンポラリ領域を選択し、
前記キャッシュメモリに格納されたデータを前記選択されたテンポラリ領域に書き込んで、前記選択されたテンポラリ領域を新たにデータ領域とし、
前記抽出されたデータ領域を消去して、新たにテンポラリ領域とすることを特徴とするストレージ装置。
【請求項２】
前記プロセッサは、
さらに、前記データ領域の冗長データが格納される冗長データ領域が前記セグメントに少なくとも一つ以上含まれるように、前記冗長データ領域を前記分割された記憶領域に割り当て、
前記インタフェースを介して、前記ホスト計算機からデータの書き込みを受け付けた場合に、
前記抽出されたデータ領域の冗長データが格納された冗長データ領域を抽出し、
前記受け付けたデータの書き込み要求に基づいて、前記冗長データを更新して、前記キャッシュメモリに格納し、
前記特定されたセグメントに含まれる他のテンポラリ領域をさらに選択し、
前記キャッシュメモリに格納された冗長データを、前記選択された他のテンポラリ領域に書き込んで、当該冗長データが書き込まれたテンポラリ領域を新たに冗長データ領域とし、
前記抽出された冗長データ領域を消去して、新たにテンポラリ領域とすることを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記プロセッサは、
前記分割された記憶領域に対して、データが書き込まれた回数及びデータが消去された回数の少なくとも一方を、前記メモリドライブごとにカウンタ情報として記録し、
新たにデータ領域を生成するとき、前記カウンタ情報に基づいて、前記テンポラリ領域を新たにデータ領域として選択することを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記セグメントに含まれる、前記データ領域及び前記冗長データ領域の合計数と、前記テンポラリ領域の数が等しいことを特徴とする請求項２に記載のストレージ装置。
【請求項５】
前記冗長データ領域は、前記冗長データとして、当該冗長データ領域が属するセグメントに含まれるデータ領域の複製を格納することを特徴とする請求項２に記載のストレージ装置。
【請求項６】
前記冗長データ領域は、前記冗長データとして、当該冗長データ領域が属するセグメントに含まれる複数のデータ領域に基づいて生成されるパリティ情報を格納することを特徴とする請求項２に記載のストレージ装置。
【請求項７】
前記プロセッサは、新たに冗長データ領域を割り当てるとき、前記割り当てられた冗長データ領域の数が少ないメモリドライブに属するテンポラリ領域を選択することを特徴とする請求項６に記載のストレージ装置。
【請求項８】
前記プロセッサは、
前記グループを構成するメモリドライブに含まれる不良ページの数を記録し、
前記不良ページの数が所定の閾値よりも大きくなった場合にはメモリドライブを閉塞して、前記閉塞されたメモリドライブへのデータの書き込みを禁止し、
前記閉塞されたメモリドライブに格納されたデータを移動させるために、セグメントごとに移動先テンポラリ領域を選択し、
前記閉塞されたメモリドライブから、読み出し可能なデータを読み出して、前記選択された移動先テンポラリ領域に当該読み出されたデータを書き込み、
前記閉塞されたメモリドライブからデータを読み出せなかった場合には、前記読み出せなかったデータを復元し、前記選択された移動先テンポラリ領域に当該復元されたデータを書き込むことを特徴とする請求項２に記載のストレージ装置。
【請求項９】
前記プロセッサは、
前記グループを構成するメモリドライブに含まれる不良ページの数を記録し、
前記不良ページの数が所定の閾値よりも大きくなった場合にはメモリドライブを閉塞して、前記閉塞されたメモリドライブへのデータの書き込みを禁止し、
新たなメモリドライブの追加を要求し、
前記新たなメモリドライブが追加されたとき、当該追加されたメモリドライブを前記グループに追加し、
前記追加されたメモリドライブの記憶領域を、所定の容量ごとに分割して、テンポラリ領域として、既存のセグメントに追加し、
前記閉塞されたメモリドライブから、読み出し可能なデータを読み出して、前記追加テンポラリ領域に当該読み出されたデータを書き込み、
前記閉塞されたメモリドライブからデータを読み出せなかった場合には、前記読み出せなかったデータを復元し、前記追加テンポラリ領域に当該復元されたデータを書き込むことを特徴とする請求項２に記載のストレージ装置。
【請求項１０】
前記プロセッサは、前記ホスト計算機からデータの読み出し要求を受け付けた場合に、前記要求されたデータが格納されたデータ領域から前記要求されたデータを一時的に読み出すことができない場合には、前記要求されたデータが格納されたデータ領域が属するセグメントに含まれる他のデータ領域及び冗長データ領域に格納されたデータによって、前記要求されたデータを復元し、前記ホスト計算機に提供することを特徴とする請求項２に記載のストレージ装置。
【請求項１１】
ネットワークを介してホスト計算機に接続され、当該ホスト計算機によって読み書きされるデータが格納されるストレージ装置におけるデータ配置制御方法であって、
前記ネットワークに接続されるインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、前記読み書きされるデータが一時的に格納されるキャッシュメモリと、前記読み書きされるデータが格納される記憶装置と、を備え、
前記記憶装置は、
一つ以上の不揮発性メモリによって構成されたメモリドライブを搭載し、
前記ホスト計算機に認識される記憶容量を提供するために必要なメモリドライブの台数よりも一台以上多いメモリドライブによってグループを構成し、
前記グループを構成する各メモリドライブは、所定の容量ごとに記憶領域が分割され、
前記分割された記憶領域は、前記グループを構成する各メモリドライブに含まれる分割された記憶領域が少なくとも一つ以上含まれるセグメントごとに管理され、
前記データ配置制御方法は、
前記プロセッサが、前記読み書きされるデータが格納されるデータ領域及び空き領域であるテンポラリ領域が前記セグメントにそれぞれ少なくとも一つ以上含まれるように、前記データ領域又は前記テンポラリ領域を前記分割された記憶領域にそれぞれ割り当て、
前記プロセッサが、前記インタフェースを介して、前記ホスト計算機からデータの書き込み要求を受け付けた場合に、
前記プロセッサが、前記書き込みデータが書き込まれるデータ領域を抽出し、
前記プロセッサが、前記抽出されたデータ領域が含まれるセグメントを特定し、
前記プロセッサが、前記書き込みデータの容量が、前記抽出されたデータ領域に格納されたデータの容量に基づいて決定される値よりも大きい場合には、
前記プロセッサが、前記抽出されたデータ領域に格納されたデータを読み出して、当該読み出されたデータを前記書き込み要求に従って更新して、当該更新されたデータを前記キャッシュメモリに格納し、
前記プロセッサが、前記特定されたセグメントに含まれるテンポラリ領域を選択し、
前記プロセッサが、前記キャッシュメモリに格納されたデータを前記選択されたテンポラリ領域に書き込んで、前記選択されたテンポラリ領域を新たにデータ領域とし、
前記プロセッサが、前記抽出されたデータ領域を消去して、新たにテンポラリ領域とすることを特徴とするデータ配置制御方法。
【請求項１２】
前記データ配置制御方法は、
前記プロセッサが、さらに、前記データ領域の冗長データが格納される冗長データ領域が前記セグメントに少なくとも一つ以上含まれるように、前記冗長データ領域を前記分割された記憶領域に割り当て、
前記プロセッサが、前記インタフェースを介して、前記ホスト計算機からデータの書き込みを受け付けた場合に、
前記プロセッサが、前記抽出されたデータ領域の冗長データが格納された冗長データ領域を抽出し、
前記プロセッサが、前記受け付けたデータの書き込み要求に基づいて、前記冗長データを更新して、前記キャッシュメモリに格納し、
前記プロセッサが、前記特定されたセグメントに含まれる他のテンポラリ領域をさらに選択し、
前記プロセッサが、前記キャッシュメモリに格納された冗長データを、前記選択された他のテンポラリ領域に書き込んで、当該冗長データが書き込まれたテンポラリ領域を新たに冗長データ領域とし、
前記プロセッサが、前記抽出された冗長データ領域を消去して、新たにテンポラリ領域とすることを特徴とする請求項１１に記載のデータ配置制御方法。
【請求項１３】
前記データ配置制御方法は、
前記プロセッサが、前記分割された記憶領域に対して、データが書き込まれた回数及びデータが消去された回数の少なくとも一方を、前記メモリドライブごとにカウンタ情報として記録し、
前記プロセッサが、新たにデータ領域を生成するとき、前記カウンタ情報に基づいて、前記テンポラリ領域を新たにデータ領域として選択することを特徴とする請求項１１に記載のデータ配置制御方法。
【請求項１４】
前記セグメントに含まれる、前記データ領域及び前記冗長データ領域の合計数と、前記テンポラリ領域の数が等しいことを特徴とする請求項１１に記載のデータ配置制御方法。
【請求項１５】
前記冗長データ領域は、前記冗長データとして、当該冗長データ領域が属するセグメントに含まれるデータ領域の複製を格納することを特徴とする請求項１２に記載のデータ配置制御方法。
【請求項１６】
前記冗長データ領域は、前記冗長データとして、当該冗長データ領域が属するセグメントに含まれる複数のデータ領域に基づいて生成されるパリティ情報を格納することを特徴とする請求項１２に記載のデータ配置制御方法。
【請求項１７】
前記データ配置制御方法は、前記プロセッサが、新たに冗長データ領域を割り当てるとき、前記割り当てられた冗長データ領域の数が少ないメモリドライブに属するテンポラリ領域を選択することを特徴とする請求項１６に記載のデータ配置制御方法。
【請求項１８】
前記データ配置制御方法は、
前記プロセッサが、前記グループを構成するメモリドライブに含まれる不良ページの数を記録し、
前記プロセッサが、前記不良ページの数が所定の閾値よりも大きくなった場合にはメモリドライブを閉塞して、前記閉塞されたメモリドライブへのデータの書き込みを禁止し、
前記プロセッサが、前記閉塞されたメモリドライブに格納されたデータを移動させるために、セグメントごとに移動先テンポラリ領域を選択し、
前記プロセッサが、前記閉塞されたメモリドライブから、読み出し可能なデータを読み出して、前記選択された移動先テンポラリ領域に当該読み出されたデータを書き込み、
前記プロセッサが、前記閉塞されたメモリドライブからデータを読み出せなかった場合には、前記読み出せなかったデータを復元し、前記選択された移動先テンポラリ領域に当該復元されたデータを書き込むことを特徴とする請求項１２に記載のデータ配置制御方法。
【請求項１９】
前記データ配置制御方法は、
前記プロセッサが、前記グループを構成するメモリドライブに含まれる不良ページの数を記録し、
前記プロセッサが、前記不良ページの数が所定の閾値よりも大きくなった場合にはメモリドライブを閉塞して、前記閉塞されたメモリドライブへのデータの書き込みを禁止し、
前記プロセッサが、新たなメモリドライブの追加を要求し、
前記プロセッサが、前記新たなメモリドライブが追加されたとき、当該追加されたメモリドライブを前記グループに追加し、
前記プロセッサが、前記追加されたメモリドライブの記憶領域を、所定の容量ごとに分割して、テンポラリ領域として、既存のセグメントに追加し、
前記プロセッサが、前記閉塞されたメモリドライブから、読み出し可能なデータを読み出して、前記追加テンポラリ領域に当該読み出されたデータを書き込み、
前記プロセッサが、前記閉塞されたメモリドライブからデータを読み出せなかった場合には、前記読み出せなかったデータを復元し、前記追加テンポラリ領域に当該復元されたデータを書き込むことを特徴とする請求項１２に記載のデータ配置制御方法。
【請求項２０】
前記データ配置制御方法は、前記プロセッサが、前記ホスト計算機からデータの読み出し要求を受け付けた場合に、前記要求されたデータが格納されたデータ領域から前記要求されたデータを一時的に読み出すことができない場合には、前記要求されたデータが格納されたデータ領域が属するセグメントに含まれる他のデータ領域及び冗長データ領域に格納されたデータによって、前記要求されたデータを復元し、前記ホスト計算機に提供することを特徴とする請求項１２に記載のデータ配置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の半導体メモリを利用し、冗長構成を有するストレージ装置に関し、特に、処理性能及び信頼性を向上させる技術に関連する。
【背景技術】
【０００２】
近年、フラッシュメモリに代表される不揮発性メモリが注目されている。フラッシュメモリは、磁気ディスクドライブと比較して、低消費電力であり、小形軽量化に適している。このため、フラッシュメモリは、磁気ディスクドライブから代替可能となる外部記憶装置である。
【０００３】
フラッシュメモリは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と比較して待機中の消費電力が低い特徴がある。ＤＲＡＭは、記憶保持に必要な定期的なリフレッシュ動作が必要なためである。また、フラッシュメモリは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）に代表される磁気記憶装置のような駆動部分を持たないため、低消費電力である。
【０００４】
フラッシュメモリは、一般的に計算機装置の主記憶として用いられているＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と比較して低コストである。ＳＲＡＭは、ＤＲＡＭのリフレッシュ動作を必要としないが、ＤＲＡＭ又はフラッシュメモリと比較して、回路が複雑であるため、集積度を上げることが困難である。
【０００５】
フラッシュメモリは、磁気記憶装置と比較して小形であり、前述の通り、低消費電力の特徴を持つ。このため、フラッシュメモリは、ストレージ装置の主記憶として高密度実装できる利点を持つ。
【０００６】
したがって、大容量の主記憶としての磁気記憶装置から、フラッシュメモリを複数枚搭載したフラッシュメモリドライブが、大容量主記憶として置き換えることが期待されている。
【０００７】
しかし、フラッシュメモリは、ＳＲＡＭ、ＤＲＡＭ、及び磁気記憶装置にはない問題点が存在する。具体的には、フラッシュメモリは、データの上書き前に消去の操作を必要とする。フラッシュメモリは、消去操作にかかる時間が長いため、フラッシュメモリに記録されたデータを上書き更新するときのスループット性能は、読み出し時よりも劣ってしまう。
【０００８】
また、データの上書き前の消去の操作は、読み書きの最小単位であるブロックの単位で消去できない。フラッシュメモリは、前述のブロックを複数にまとめたページ単位で消去する。
【０００９】
さらに、フラッシュメモリの消去回数は、１０5〜１０6回程度の制限がある。このように、フラッシュメモリの書き換え回数に制限があるため、同一の領域に書き換えが集中しないように、ページの消去操作の回数を領域ごとに均一化することによって、長寿命化を図っている（特許文献１及び特許文献２参照）。
【００１０】
前述のとおり、フラッシュメモリは、消去単位であるページに、読み書きする単位であるブロックを複数格納しているため、データの消去又は読み書きする操作のアクセス単位が異なる。このため、フラッシュメモリは、同一のアドレスに上書きする場合、消去済みの異なる番地のブロックに書き込む必要がある。よって、読み書きする操作における論理アドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）と、フラッシュメモリドライブの内部にて管理している物理アドレス（ＰＢＡ：Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）が同一の対応関係にはならない。
【００１１】
したがって、小サイズのランダムな上書き操作を繰り返すとフラグメントが発生する。そして、この操作を実施していると、消去待ちで上書きできないブロックと、読み出し可能なブロックが混在したページができる。この消去待ちブロックと読み出し可能なブロックを含むページを消去するには、読み出し可能なデータを別の領域に移動する必要がある。消去操作を行なわない場合は、次に書き換えるデータの領域が枯渇する。
【００１２】
そこで、フラッシュメモリは、書き込み領域を確保するために、消去待ちブロックと読み出し可能なブロックが混在したページから、使用中のブロックを別の書き込み可能なブロックに移動して、ページ消去を実行可能とする操作を行なう。この一連の操作を、一般的にリクラメーションと呼ぶ。
【００１３】
ところで、ＨＤＤに代表される磁気記憶装置の代替として、複数の不揮発性メモリを搭載した外部記憶装置（メモリドライブ）がある。特に、不揮発性メモリとしてフラッシュメモリを搭載した外部記憶装置外部記憶装置を、以降、フラッシュメモリドライブ（ＦＭＤ）と呼ぶ。また、複数のフラッシュメモリドライブを用いたストレージ装置の制御についても、従来の複数の磁気記憶装置を搭載したストレージ装置の制御方法と同様に、以下に説明する技術を適用することによって、ストレージ装置としての信頼性を高める。
【００１４】
また、ストレージ装置は、安定性が要求され、構成要素を二重化することによって、構成要素に障害が発生した場合にも処理可能となっているものがある。さらに、データの信頼性と処理性能を高めるために、ＲＡＩＤ技術によって、複数の記憶デバイスを一つのＲＡＩＤグループとして管理し、データを冗長化して格納する。ＲＡＩＤグループは、一つ以上の論理的な記憶領域を形成する。当該記憶領域にデータを記録するとき、ＲＡＩＤグループを構成する記憶デバイスに冗長データを記録する。冗長データによって、記憶デバイスの一つが故障した場合であっても、データを復元することができる。
【００１５】
ＲＡＩＤ１は、ドライブに格納されたすべてのデータについて、別のドライブに複製を作成する。ＲＡＩＤ１の容量効率は、全容量に対して１／２であり、効率がよくない。
【００１６】
そこで、複数のデータによって計算されるＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔ  Ｃｏｄｅ）をＥＣＣドライブに記録し、１台のドライブに障害が発生しても残りのデータとＥＣＣによって、障害ドライブに格納されたデータを復元可能なＲＡＩＤ４及びＲＡＩＤ５がある。
【００１７】
しかし、ＲＡＩＤ４は、データを書き込む際に、ＥＣＣデータを毎回更新する必要があり、ＥＣＣデータのみを格納するドライブに対する書き込みが、ＲＡＩＤグループ全体の書き込み性能のボトルネックとなってしまう。
【００１８】
一方、ＲＡＩＤ５は、書き込み時のＥＣＣデータの更新による、読み出し編集書き込み（ＲＭＷ：Ｒｅａｄ  Ｍｏｄｉｆｙ  Ｗｒｉｔｅ）のアクセス負荷を、ＲＡＩＤグループを構成する各ドライブに分散させることで、書き込み性能を改善している。容量効率は、データドライブ数とパリティドライブ数の比によって決定される。
【００１９】
ＲＡＩＤを構成したストレージ装置は、所定の台数以上のドライブに障害が発生すると、データを復元することができなくなる。そこで、ストレージ装置では、一般的に、スペアドライブと呼ばれるデータを保存していない予備ドライブを用意する。
【００２０】
そして、ストレージ装置は、ＲＡＩＤを構成しているドライブの１台に障害が発生した場合に、ＲＡＩＤを構成している残りのドライブのデータを用いて、障害が発生したドライブのデータを復元してスペアドライブに格納する。このようにスペアドライブをあらかじめ用意することによって、早急に縮退状態から冗長状態に復旧できる。前述した障害の発生したドライブに格納されたデータを復元し、正常ドライブに格納する操作を、以降、コレクションコピーと呼ぶこととする。
【特許文献１】特開平５−２７９２４号公報
【特許文献２】特許第３５３４５８５号明細書
【非特許文献１】Ｄａｖｉｄ  Ａ．  Ｐａｔｔｅｒｓｏｎ、他２名、  ”Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ（ＲＡＩＤ）”、Ｉｎ  Ｐｒｏｃ．  ｏｆ  ＳＩＧＭＯＤ  １９８８、  ｐｐ．  １０９−１１６．  ＡＣＭ、  Ｊｕｎ  １９８８．
【発明の開示】
【発明が解決しようとする課題】
【００２１】
フラッシュメモリドライブにＲＡＩＤ構成を適用したストレージ装置は、前述した消去回数の制限などのフラッシュメモリドライブ特有の問題点によって、いくつかの課題が生じる。
【００２２】
まず、第１の課題として、ストレージ装置がページサイズよりも大きなサイズのデータを連続してフラッシュメモリドライブに書き込む場合、消去済みのページが枯渇する可能性がある。この場合には、消去時間のボトルネックによって、書き込みの性能が低下してしまう。
【００２３】
第２の課題として、複数のフラッシュメモリドライブにＲＡＩＤ構成を適用したストレージ装置において、磁気記憶装置に適用されていた従来技術のデータ信頼性技術であるＲＡＩＤ技術を適用すると、パリティの上書き更新が頻発する。このため、フラッシュメモリに対して連続して上書き操作を実行すると、フラッシュメモリドライブ内部にて、リクラメーション及び消去に伴う時間により、システム全体の性能が低下する。
【００２４】
第３の課題として、複数のフラッシュメモリドライブのグループにＲＡＩＤ５構成を適用したストレージ装置は、各フラッシュメモリドライブの書き込み回数を均一化させることが困難な点が挙げられる。フラッシュメモリドライブにＲＡＩＤ５構成が適用されたストレージ装置は、データの一部が書き換えられた場合であっても、逐次、パリティが更新される。したがって、パリティが格納された領域の書込み回数は、データが格納された領域よりも多くなる。
【００２５】
第４の課題として、ＲＡＩＤ５構成のストレージ装置は、１台のドライブに障害が発生した場合、データの冗長性を保全するために、前述したコレクションコピーを実行する。コレクションコピー実行時には、障害ドライブを除いた複数のドライブに格納されたデータがすべて読み出され、排他的論理和（ＸＯＲ：Ｅｘｃｌｕｓｉｖｅ  ＯＲ）に代表されるデータ復元演算によって、障害ドライブに格納されていたデータを復元する。しかし、データ量の増大に伴って、データの転送トラフィックが増大し、データ復元操作に膨大な計算時間が必要となる。このため、コレクションコピー実行中には、通常のホスト計算機からの入出力性能に影響し、ストレージ装置全体の性能が劣化する。
【００２６】
本発明は、前述したフラッシュメモリのような性質を有する不揮発性メモリによって構成されたメモリドライブを含むストレージ装置について、以上の問題点を解決することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の代表的な実施形態では、ネットワークを介してホスト計算機に接続され、前記ホスト計算機によって読み書きされるデータが格納されるストレージ装置であって、前記ネットワークに接続されるインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、前記読み書きされるデータが一時的に格納されるキャッシュメモリと、前記読み書きされるデータが格納される記憶装置と、を備え、前記記憶装置は、一つ以上の不揮発性メモリによって構成されたメモリドライブを搭載し、前記ホスト計算機に認識される記憶容量を提供するために必要なメモリドライブの台数よりも一台以上多いメモリドライブによってグループを構成し、前記グループを構成する各メモリドライブは、所定の容量ごとに記憶領域が分割され、前記分割された記憶領域は、前記グループを構成する各メモリドライブに含まれる分割された記憶領域が少なくとも一つ以上含まれるセグメントごとに管理され、前記プロセッサは、前記読み書きされるデータが格納されるデータ領域及び空き領域であるテンポラリ領域が前記セグメントにそれぞれ少なくとも一つ以上含まれるように、前記データ領域又は前記テンポラリ領域を前記分割された記憶領域にそれぞれ割り当て、前記インタフェースを介して、前記ホスト計算機からデータの書き込み要求を受け付けた場合に、前記書き込みデータが書き込まれるデータ領域を抽出し、前記抽出されたデータ領域が含まれるセグメントを特定し、前記書き込みデータの容量が、前記抽出されたデータ領域に格納されたデータの容量に基づいて決定される値よりも大きい場合には、前記抽出されたデータ領域に格納されたデータを読み出して、当該読み出されたデータを前記書き込み要求に従って更新して、当該更新されたデータを前記キャッシュメモリに格納し、前記特定されたセグメントに含まれるテンポラリ領域を選択し、前記キャッシュメモリに格納されたデータを前記選択されたテンポラリ領域に書き込んで、前記選択されたテンポラリ領域を新たにデータ領域とし、前記抽出されたデータ領域を消去して、新たにテンポラリ領域とする。
【発明の効果】
【００２８】
本発明の代表的な実施形態によれば、メモリドライブによって記憶装置が構成されたストレージ装置において、データが読み書きされるデータ領域を移動させながら、各メモリドライブの書き込み回数を均一化させることができる。したがって、本発明のストレージ装置では、各メモリドライブの寿命を均一化させることができる。また、性能上ボトルネックとなる消去時間を隠蔽することによって、ストレージ装置の性能が向上できる。
【発明を実施するための最良の形態】
【００２９】
以下に、図面を参照しながら、本発明の実施形態を説明する。
【００３０】
（ストレージ装置の構成）
図１Ａは、本発明の実施形態のストレージ装置１２０を中心とした計算機システムの構成図である。本計算機システムは、ホスト計算機１００、管理端末１０５及びストレージ装置１２０を含む。
【００３１】
ホスト計算機１００は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１１０を介して、ストレージ装置１２０に接続する。管理端末１０５は、ストレージ装置１２０と接続し、ＲＡＩＤグループの作成などの制御を行なう。
【００３２】
ストレージ装置１２０は、ホストパッケージ（ＰＫ）１３３、ＭＰＵ  ＰＫ１３１、キャッシュＰＫ１３５、バックエンドＰＫ１３６及びフラッシュメモリドライブ（ＦＭＤ）１５０を備える。ホストＰＫ１３３、ＭＰＵ  ＰＫ１３１、キャッシュＰＫ１３５及びバックエンドＰＫ１３６は、それぞれスイッチＰＫ１３４に接続する。
【００３３】
ストレージ装置１２０は、ホストＰＫ１３３、ＭＰＵ  ＰＫ１３１、キャッシュＰＫ１３５、バックエンドＰＫ１３６及びスイッチＰＫ１３４を、それぞれ二組ずつ有する冗長構成となっている。そのため、ストレージ装置１２０は、一方のパッケージが故障した場合であっても、他方のパッケージによって、業務を継続することが可能となっている。以下、各構成の概要を説明する。
【００３４】
ホストＰＫ１３３は、ホストインタフェース（Ｉ／Ｆ）として、Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ又はｉＳＣＳＩなどのＩ／Ｆコントローラを含む。ストレージ装置１２０は、ホストＰＫ１３３を経由し、ＳＡＮ１１０を介して、複数のホスト計算機１００と接続する。
【００３５】
ＭＰＵ  ＰＫ１３１は、ストレージ装置１２０を制御する。ＭＰＵ  ＰＫ１３１の構成は、図１Ｂにて詳細を説明する。
【００３６】
キャッシュＰＫ１３５は、キャッシュメモリ及びキャッシュコントローラを含む。キャッシュメモリは、ストレージ装置１２０に格納されるユーザーデータの一次記憶領域である。キャッシュコントローラは、キャッシュメモリとスイッチＰＫ１３４を接続する
バックエンドＰＫ１３６は、ストレージ装置内の複数の記憶装置を制御するＩ／Ｆコントローラを含む。Ｉ／Ｆコントローラは、バックエンドスイッチ１３８を介して、複数の記憶装置（例えば、ＨＤＤ又はフラッシュメモリドライブ）と接続する。
【００３７】
次に、フラッシュメモリドライブ１５０について説明する。フラッシュメモリドライブ１５０は、二つのターゲットポートコントローラ１５１、フラッシュメモリコントローラ１５７、及び一以上のフラッシュメモリ（ＦＭ）１５５によって構成された記憶装置である。
【００３８】
ターゲットポートコントローラ１５１は、バックエンドスイッチ１３８と接続する。フラッシュメモリコントローラ１５７は、フラッシュメモリドライブ１５０を制御する。フラッシュメモリ（ＦＭ）１５５は、データを格納する。
【００３９】
フラッシュメモリドライブ１５０は、ターゲットポートコントローラ１５１が冗長化されているため、各パッケージ又はバックエンドスイッチに障害が発生した場合にも、冗長化されたターゲットポートを経由してＦＭＤへのアクセスを可能となる。
【００４０】
ストレージ装置１２０は、データの冗長化を図るために、複数のフラッシュメモリドライブ１５０によって、ＲＡＩＤグループ１９０を構成する。ただし、ＲＡＩＤグループ１９０は、一般的なＲＡＩＤ５のようにパリティの配置が固定された構成とは異なる。パリティの配置については、図２にて詳細を説明する。
【００４１】
（ＭＰＵパッケージの詳細）
図１Ｂは、本発明の実施形態のストレージ装置１２０のＭＰＵパッケージ１３１の構成図である。ＭＰＵパッケージ１３１は、ＭＰＵ１４０、メモリ１４１を含む。
【００４２】
ＭＰＵ１４０は、メモリ１４１に格納された制御プログラム２０５を実行することによって、ストレージ装置１２０を制御する。メモリ１４１は、さらに、ストレージ装置１２０に備えられるＲＡＩＤグループ１９０を管理するＲＡＩＤグループ管理情報２００を記憶する。また、ＭＰＵパッケージ１３１は、ＭＰＵ１４０などをスイッチＰＫ１３４と接続するブリッジを含む。
【００４３】
ＲＡＩＤグループ管理情報２００は、ＲＡＩＤグループリスト２１０、ＲＡＩＤグループ構成情報２２０、ＲＡＩＤグループ管理テーブル２３０、ＦＭＤ番号リスト２４０及びＦＭＤカウンタ２６０を含む。これらの構成情報については、図２にて詳細を説明する。
【００４４】
（ＲＡＩＤグループの構成）
ここで、ＲＡＩＤグループ１９０の構成について、図２及び図３を用いて詳細を説明する。
【００４５】
図２は、本発明の実施形態のＲＡＩＤグループ管理情報２００を示す図である。ＲＡＩＤグループ管理情報２００は、前述のように、ＲＡＩＤグループリスト２１０、ＲＡＩＤグループ構成情報２２０、ＲＡＩＤグループ管理テーブル２３０、ＦＭＤ番号リスト２４０及びＦＭＤカウンタ２６０を含む。以下、各情報について、詳細を説明する。
【００４６】
ＲＡＩＤグループリスト２１０は、ストレージ装置１２０に定義されている複数のＲＡＩＤグループの総数２１１を格納する。また、ＲＡＩＤグループリスト２１０は、各ＲＡＩＤグループ１９０の構成情報２２０へのポインタ２１３を、ＲＡＩＤグループ１９０の数だけ保持する。
【００４７】
以下、ＲＡＩＤグループＡについて、各構成情報を説明する。他のＲＡＩＤグループについても同様の構成である。
【００４８】
ＲＡＩＤグループＡの構成情報２２０は、ＲＡＩＤグループ管理テーブル２３０へのポインタ２２１、容量２２３、セグメントサイズ２２５、セグメント数２２７、フラッシュメモリドライブの台数２２８、ＦＭＤ番号リスト２４０へのポインタ２２９を含む。
【００４９】
ＲＡＩＤグループ管理テーブル２３０へのポインタ２２１は、ＲＡＩＤグループＡのＲＡＩＤグループ管理テーブル２３０が格納されたアドレスが格納される。
【００５０】
ＲＡＩＤグループＡは、複数のフラッシュメモリドライブ１５０によって構成され、データが格納される記憶領域を提供する。容量２２３は、ＲＡＩＤグループＡによって提供される記憶領域の容量が格納される。
【００５１】
また、ＲＡＩＤグループＡを構成するフラッシュメモリドライブ１５０は、管理単位であるセグメントとして、所定の容量ごとに分割される。セグメントサイズ２２５は、分割されたセグメントごとの容量を格納する。本実施の形態では、例えば、１２８キロバイトである。セグメント数２２７は、ＲＡＩＤグループＡに含まれるセグメントの数を格納する。
【００５２】
また、フラッシュメモリドライブごとのセグメントの容量は、フラッシュメモリにアクセス単位であるブロックの容量よりも大きく、消去単位であるページの容量と同じ又は小さい容量となる。
【００５３】
なお、本実施形態では、例えば、ブロックの容量は、５１２バイトである。また、制御プログラムが演算する保証コードの８バイトをデータブロックに付加した５２０バイトをフラッシュメモリのブロックの容量としてもよい。また、ページとは、フラッシュメモリの消去単位であり、消去操作ができない場合には不良ページとなる単位である。本実施形態では、ページの容量は、例えば、１２８キロバイトである。本実施形態では、特に断らない限り、セグメントの容量とページの容量とを同じ値に設定している。
【００５４】
フラッシュメモリドライブ台数２２８は、ＲＡＩＤグループＡを構成する複数のフラッシュメモリドライブの台数が格納される。ＦＭＤ番号リスト２４０へのポインタ２２９は、ＦＭＤ番号リスト２４０のアドレスが格納される。
【００５５】
ＲＡＩＤグループ管理テーブル２３０には、セグメントごとに、データ及びパリティを格納するフラッシュメモリドライブの番号を格納する。なお、ＲＡＩＤグループ管理テーブル２３０は、ビットマップ情報にて圧縮、又はデータ／パリティの配置のパターンを制限することによって、情報量を削減することも可能である。また、ＲＡＩＤグループ管理テーブル２３０の各エントリに、セグメントを識別するセグメント番号を、論理ブロックアドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）順に割り当てる。
【００５６】
本実施形態では、ＲＡＩＤグループＡのＲＡＩＤ構成は、ＲＡＩＤ５であって、２つのデータ領域から１つのパリティ（ＥＣＣ）を生成する２データ＋１パリティ構成（以下、「２Ｄ１Ｐ構成」と記載する）となっている。
【００５７】
ＦＭＤ番号リスト２４０は、ＲＡＩＤグループＡを構成するフラッシュメモリドライブ１５０の一覧である。ＦＭＤ番号リスト２４０は、ＲＡＩＤグループＡを構成するフラッシュメモリドライブの台数２２８のエントリを含む。各エントリには、ＲＡＩＤグループＡを構成するフラッシュメモリドライブの物理アドレス（ＷＷＮ：Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ等）２４１が格納される。このように、ＲＡＩＤグループに所属する各ドライブが、ドライブの物理実装位置が連続しない配置であっても、フラッシュメモリドライブの固有の物理アドレスによって、ＲＡＩＤグループを構成するドライブを認識できる。また、任意の物理実装位置に障害発生時に交換する新たなフラッシュメモリドライブを追加することができる。
【００５８】
本実施形態では、ＲＡＩＤグループＡは、６台のフラッシュメモリドライブで構成するため、台数２２８には「６」を格納している。ＲＡＩＤグループＡは、前述のように、２Ｄ１Ｐ構成であるため、３台のスペアドライブに相当する容量が含まれていることを表している。
【００５９】
ＦＭＤ番号リスト２４０は、フラッシュメモリドライブの物理アドレスを格納し、ＦＭＤ＃Ａ１からＦＭＤ＃Ａ６の物理アドレスを各エントリ２４１に格納する。
【００６０】
ＦＭＤカウンタ２６０は、それぞれのフラッシュメモリドライブに対応するカウンタ情報を格納する。ＦＭＤカウンタ２６０は、各ドライブのカウンタ情報として、不良ページ数の総数２６１、パリティ領域の総数２６３、テンポラリ領域の総数２６５、書き込み回数２６７、消去発生回数２６９、及び代替ページの残数２７１を格納する。
【００６１】
不良ページ数の総数２６１は、フラッシュメモリドライブ１５０に含まれる不良ページの数を格納する。パリティ領域の総数２６３は、当該フラッシュメモリドライブ１５０に含まれるパリティを格納したセグメントの数を格納する。
【００６２】
テンポラリ領域の総数２６５は、フラッシュメモリドライブ１５０に含まれるテンポラリ領域が割り当てられたセグメントの数が格納される。テンポラリ領域とは、データ又はパリティが格納されていない領域である。テンポラリ領域は、ＲＡＩＤグループに含まれたスペアドライブのセグメントに対応する領域（スペア領域）である。なお、具体的なテンポラリ領域の利用方法については、後述する。
【００６３】
書き込み回数２６７は、ホスト計算機１００からの要求に応じて、データが書き込まれた回数を格納する。消去発生回数２６９は、データが消去された回数を格納する。フラッシュメモリは、消去回数に制限があるため、消去回数を記録することによって、稼働期間を管理する。なお、書き込み回数２６７及び消去発生回数２６９は、実際の値ではなく、正規化された値を格納してもよい。
【００６４】
また、ストレージ装置１２０は、特定のセグメントに書き込みが集中しないように、セグメントごとに均一にデータが書き込まれるように制御する。セグメントごとに均一にデータが書き込まれるように制御することによって、セグメントごとに書込み回数及び消去発生回数を記録しなくても、フラッシュメモリドライブ１５０ごとのカウンタ情報で代用できる。
【００６５】
代替ページの残数２７１は、フラッシュメモリドライブに含まれる使用可能な代替ページの残数である。ＦＭＤのコントローラは、不良ページを検出した場合に、代替領域として代替ページを割り当てる。
【００６６】
（ＲＡＩＤグループの作成手順）
図３は、本発明の実施形態のストレージ装置にＲＡＩＤグループ１９０を作成する手順を示すフローチャートである。
【００６７】
管理者は、ストレージ装置１２０にＲＡＩＤグループ１９０を構成するとき、管理端末１０５からストレージ装置１２０を操作する。管理者は、まず、複数のフラッシュメモリドライブ１５０を指定し、ストレージ装置１２０に対してＲＡＩＤグループ１９０の作成を指示する（Ｓ１１０）。このとき、フラッシュメモリドライブの指定の他に、フラッシュメモリドライブを分割するセグメントのセグメントサイズ又はセグメント数、その他必要な指示を送信する。なお、本実施形態では、６台のフラッシュメモリドライブによって構成する２Ｄ１Ｐ構成のＲＡＩＤグループの作成を指示している。
【００６８】
ストレージ装置１２０のＭＰＵ１４０は、管理者からのＲＡＩＤグループ作成指示を受信すると、制御プログラム２０５を実行することによって、ＲＡＩＤグループリスト２１０のエントリを追加し、ＲＡＩＤグループの総数２１１をカウントアップする。
【００６９】
さらに、ストレージ装置１２０のＭＰＵ１４０は、追加されるＲＡＩＤグループの構成情報２２０、ＲＡＩＤグループ管理テーブル２３０、ＦＭＤ番号リスト２４０、及びＦＭＤカウンタ２６０をメモリ１４１に格納する（Ｓ１２０）。また、管理者が指示した情報のうち、この時点で設定可能な情報を各テーブルに格納する。
【００７０】
次に、ストレージ装置１２０のＭＰＵ１４０は、ＲＡＩＤグループ作成時に指示されたセグメントサイズ又はセグメント数に基づいて、フラッシュメモリドライブの記憶領域を分割し（Ｓ１３０）、ＲＡＩＤグループ管理テーブル２３０の構造を決定する。なお、セグメントサイズを指定した場合には、フラッシュメモリドライブの容量をセグメントサイズで除算することによって、セグメント数を算出できる。
【００７１】
ストレージ装置１２０のＭＰＵ１４０は、ＲＡＩＤグループ１９０の初期状態として、セグメントごとに、２つのデータ、及びパリティをフラッシュメモリドライブに配置する（Ｓ１４０）。このとき、各フラッシュメモリドライブのセグメントに、データ及びパリティの総数が均一になるようにデータ領域とパリティ領域を各ＦＭＤに分散して配置する。また、データ及びパリティが割り当てられていない領域は、テンポラリ領域となる。本実施形態では、前述の通り、スペアドライブにもデータ領域及びパリティ領域を割り当てる。
【００７２】
ストレージ装置１２０のＭＰＵ１４０は、ＦＭＤカウンタ２６０のパリティ領域の総数２６３及びテンポラリ領域の総数２６５を設定する（Ｓ１５０）。
【００７３】
ストレージ装置１２０のＭＰＵ１４０は、すべてのセグメントに対して、Ｓ１４０及びＳ１５０の処理が完了したか否かを判定する（Ｓ１６０）。未処理のセグメントの残っている場合には（Ｓ１６０の結果が「Ｎｏ」）、未処理のセグメントに対して処理を続行する。すべてのセグメントに対して処理が完了した場合には（Ｓ１６０の結果が「Ｙｅｓ」）、本処理を終了する。
【００７４】
ストレージ装置１２０のＭＰＵ１４０は、以上の処理によってＲＡＩＤグループを構成し、当該ＲＡＩＤグループをデータ格納領域としてホスト計算機１００に提供する。さらに、ホスト計算機１００がＲＡＩＤグループのデータ格納領域にアクセスするために、当該データ格納領域を論理ユニット（ＬＵ：Ｌｏｇｉｃａｌ  Ｕｎｉｔ）として定義し、ＬＵをホストに割り当てることによってデータを読み書きすることができる。
【００７５】
（ＲＡＩＤグループとの対応関係）
図４は、本発明の実施形態のＲＡＩＤグループ管理テーブルと当該ＲＡＩＤグループのデータ配置との関係を示す図である。
【００７６】
図４上部は、ＲＡＩＤグループ管理テーブル２３０の一例を示す。図４下部は、図４上部に示すようにＲＡＩＤグループが構成されている場合の各フラッシュメモリドライブ１５０のデータ配置３００を示している。なお、データ配置３００に示されている各値は、対応するセグメント及び領域を表している。具体的には、データ領域の場合は「Ｄ（ｎ−１）」「Ｄ（ｎ）」、パリティ領域の場合は「Ｐａｒｉｔｙ（ｎ−１，ｎ）」、テンポラリ領域の場合には、「ｔｅｍｐ」と表す。
【００７７】
本実施形態のＲＡＩＤグループは、ＲＡＩＤ５の２Ｄ１Ｐ構成であり、各セグメントには２つのデータ領域及び１つのパリティ領域を割り当てた構成である。ＲＡＩＤグループ管理テーブル２３０の最終エントリ（セグメント＃Ｎ）について説明すると、データＡはＦＭＤ＃０（２３１）、データＢはＦＭＤ＃４（２３３）、パリティはＦＭＤ＃５（２３５）に配置されている。
【００７８】
また、制御プログラムは、データＡ（Ｄ（ｎ−１））を、ＦＭＤ＃Ａ１のセグメント＃Ｎ（３０１）に、データＢ（Ｄ（ｎ））を、ＦＭＤ＃Ａ５のセグメント＃Ｎ（３０７）に割り当てる。また、データＡ及びデータＢのパリティ（Ｐａｒｉｔｙ（ｎ−１，ｎ））を、ＦＭＤ＃Ａ６のセグメント＃Ｎ（３０９）に割り当てる。残りのＦＭＤ＃Ａ２、ＦＭＤ＃Ａ３及びＦＭＤ＃Ａ４のセグメント＃Ｎには、テンポラリ領域を割り当てる。
【００７９】
（データの書き込み手順）
次に、ホスト計算機１００がＲＡＩＤグループに割り当てた論理ユニット（ＬＵ）にデータを読み書きする処理について図５及び図６を用いて説明する。
【００８０】
まず、ＬＵに対する書き込み手順について説明する。本処理の概要としては、書き込まれるデータが所定のサイズよりも大きい場合には、書き込み対象となるセグメントのデータ領域にデータを書き込むのではなく、同じセグメントのテンポラリ領域にデータを書き込む。そして、データが書き込まれたテンポラリ領域をデータ領域に変更し、元のデータ領域を消去してテンポラリ領域に変更する。
【００８１】
図５は、本発明の実施形態のストレージ装置の書き込み処理の手順を示すフローチャートである。ストレージ装置１２０のＭＰＵ１４０は、ホスト計算機１００からの書き込み要求を受信すると、制御プログラム２０５を実行することによって、本処理を開始する。
【００８２】
ストレージ装置１２０のＭＰＵ１４０は、ホスト計算機１００から書き込み要求を受信すると、キャッシュＰＫ１３５のキャッシュメモリに書き込みデータを格納し、ホスト計算機１００に対して完了通知を送信する（Ｓ４１０）。
【００８３】
次に、ストレージ装置１２０のＭＰＵ１４０は、書き込み先の論理ブロックアドレスを計算する。そして、対応するＲＡＩＤグループ管理テーブル２３０の対応するセグメントを特定し、データ、パリティ及びテンポラリ領域の配置情報を取得し、データ領域とテンポラリ領域が割り当てられているＦＭＤを特定する（Ｓ４２０）。
【００８４】
図６Ａは、本発明の実施形態の書き込み処理を実行する前のデータ配置５００を示す図である。データ配置５００は、図５の書き込み処理を実行する前の状態である。また、図５のＳ４２０の処理で特定されたセグメントは、セグメント＃Ｎとする。
【００８５】
データ領域５０１及び５０５は、それぞれＦＭＤ＃Ａ１及びＦＭＤ＃Ａ５が該当し、パリティ領域５０６は、ＦＭＤ＃Ａ５が該当する。また、テンポラリ領域５０２、５０３及び５０４は、それぞれＦＭＤ＃Ａ２、ＦＭＤ＃Ａ３及びＦＭＤ＃Ａ４が該当する。斜線部は、移動対象のデータ領域５０１及び５０５とパリティ領域５０６である。
【００８６】
ここで、図５のデータの書き込み処理の説明に戻る。
【００８７】
続いて、ストレージ装置１２０のＭＰＵ１４０は、書き込みデータの容量が所定の値よりも大きいか否かを判定する（Ｓ４２５）。所定の値とは、フラッシュメモリに直接上書きしたほうが、効率がよいことを予め測定した結果に基づいて決定した値である。具体的には、測定の結果、セグメント（例えば１２８ＫＢ、ブロックサイズが５１２Ｂの場合で２５６個）内のデータを上書きするブロック（５１２Ｂ）の個数が、例えば１６個（８ＫＢ）を超えた場合には、テンポラリ領域に移動したほうがよく、超えなかった場合には、同一のフラッシュメモリドライブに上書きしたほうがよいとの評価結果が得られたとして、本実施形態では、所定の値を８ＫＢとする。
【００８８】
ストレージ装置１２０のＭＰＵ１４０は、書き込みデータの容量が所定の値以下の場合には（Ｓ４２５の結果が「Ｎｏ」）、記憶領域の消去作業やリクラメーションの作業をフラッシュメモリドライブ内部のコントローラに任せる従来技術の上書き操作を適用するほうが書込み性能がよい。このため、従来技術と同様にデータ領域５０１及び５０５の同一論理ブロックアドレスにデータを書き込む（Ｓ４２６）。なお、フラッシュメモリドライブの内部では、必要に応じてブロックを消去し、書込み可能な領域を確保したら、実際にはフラッシュメモリドライブ外部の論理アドレスとは異なる物理アドレスの領域（前述の確保された書込み可能な領域）にデータを書き込み、当該物理ブロックアドレスと論理ブロックアドレスとの対応を更新する。
【００８９】
また、ホスト計算機１００からの書き込み指示によってＳ４２６の書き込み処理を繰り返し実行する場合には、フラッシュメモリドライブのフラッシュメモリコントローラ１５７は、従来技術と同様にリクラメーションを実行する。Ｓ４２６の処理におけるデータ及びパリティの変更処理は、図６Ａのデータ領域（５０１、５０５）及びパリティ領域５０６の一部の領域を変更し、データ領域及びパリティ領域を別のフラッシュメモリドライブに移動しない。
【００９０】
一方、ストレージ装置１２０のＭＰＵ１４０は、書き込みデータの容量が所定の値よりも大きい場合には（Ｓ４２５の結果が「Ｙｅｓ」）、書き込み済みの既存データを消去し、既存データと書込みデータを新たにフラッシュメモリドライブに書き込むように制御する。しかし、前述のように、フラッシュメモリドライブのデータを消去するために必要な時間は、データを読み書きするために必要な時間と比較して非常に大きくなる。そこで、本実施形態では、書き込みと消去を並列して実行することによって、処理性能を向上させる。以下、具体的な処理を記述する。
【００９１】
ストレージ装置１２０のＭＰＵ１４０は、まず、消去するセグメントに含まれるすべてのブロックを更新するか否かを判定する（Ｓ４２７）。消去するセグメントにデータに含まれるすべてのブロックを更新しない場合には（Ｓ４２７の結果が「ＮＯ」）、消去するセグメントに含まれるデータ領域に記憶されているデータを読み出す。このとき、ホスト計算機から送信されたデータによって上書きされないデータのみを選択して部分的に読み出すことで、データ転送量を削減することも好ましい。次に、フラッシュメモリドライブから読み出した既存データを書き込みデータに更新し、データ領域に格納するデータを生成する。このとき、更新後のデータに対応するパリティも生成する。最後に、生成されたデータ及びパリティをキャッシュメモリに配置する（Ｓ４２８）。消去するセグメントに含まれるすべてのブロックを更新する場合には（Ｓ４２７の結果が「ＹＥＳ」）、フラッシュメモリドライブに存在するデータはそのまま消去してもよいため、フラッシュメモリドライブからの読み出しを行わず、Ｓ４３０の処理に遷移する。
【００９２】
図６Ｂは、本発明の実施形態の書き込み処理によって更新されたデータを一時的に格納するキャッシュメモリの状態を示す図である。Ｓ４２８の処理によって、新たに生成されたデータＤ（ｎ−１）、Ｄ（ｎ）及びパリティがキャッシュＰＫ１３５のキャッシュメモリに格納される。
【００９３】
ここで、図５のデータの書き込み処理の説明に戻る。
【００９４】
ストレージ装置１２０のＭＰＵ１４０は、フラッシュメモリドライブごとのデータ数及び書き込み回数２６７が均一になるように、Ｓ４２０の処理によって特定されたテンポラリ領域のフラッシュメモリドライブを選択する（Ｓ４３０）。なお、データ数は、ＦＭＤカウンタ２６０に値が直接格納されていないが、セグメント数２２７からパリティ領域の総数２６３及びテンポラリ領域の総数２６５を引いた値と一致する。
【００９５】
また、ストレージ装置１２０のＭＰＵ１４０は、フラッシュメモリドライブごとにパリティ領域の総数２６３が均一になるように、Ｓ４２０の処理によって特定されたテンポラリ領域のフラッシュメモリドライブを選択する（Ｓ４３０）。
【００９６】
ストレージ装置１２０のＭＰＵ１４０は、選択されたフラッシュメモリドライブのデータを書き込むブロックが属するバンクが消去中であるか否かを判定する（Ｓ４５０）。バンクとは、フラッシュメモリをある連想度にて分割した単位である。本実施の形態では、例えば、フラッシュメモリドライブ内に複数の１ギガバイトの容量のフラッシュメモリを含み、フラッシュメモリが１２８の連想度で分割されている場合、６４ページが一つのバンクの組となり、消去中は同じバンクに属する他の６３ページのアクセスができないとする。
【００９７】
ストレージ装置１２０のＭＰＵ１４０は、データを書き込むブロックが属するバンクの他のブロックが消去中である場合には（Ｓ４５０の結果が「Ｙｅｓ」）、消去処理が完了するまで当該ブロックに一時的にデータを書き込むことができないため、消去処理が完了するまで待機する（Ｓ４６０）。書込み可能となった場合には（Ｓ４５０の結果が「Ｎｏ」）、Ｓ４７０の処理を実行する。なお、この動作は、フラッシュメモリドライブ内部のコントローラが制御してもよい。
【００９８】
次に、ストレージ装置１２０のＭＰＵ１４０は、Ｓ４３０の処理によって選択されたフラッシュメモリドライブに対して、キャッシュメモリに保持されたデータ及びパリティを所定のセグメントに書き込むように指示する（Ｓ４７０）。
最後に、ストレージ装置１２０のＭＰＵ１４０は、Ｓ４７０の処理の終了後、元のデータ又はパリティが格納されたフラッシュメモリドライブのセグメントに対し、消去コマンドを発行する（Ｓ４８０）。ストレージ装置１２０のＭＰＵ１４０は、Ｓ４８０の処理で発行された消去コマンドに対する完了通知を受信すると、該当するフラッシュメモリドライブのＦＭＤカウンタ２６０の消去発生回数２６９を更新し、本処理は終了する。
【００９９】
このように、ストレージ装置１２０のＭＰＵ１４０は、データを更新するためにデータを消去する場合に、テンポラリ領域に更新データを書き込んでデータ領域を移動し、並行して元のデータ領域を消去することによって、処理のボトルネックとなる消去時間を隠蔽できる。
【０１００】
また、ストレージ装置１２０のＭＰＵ１４０は、データ領域及びパリティ領域の移動先を消去回数に基づいて決定するため、ＲＡＩＤグループを構成するフラッシュメモリドライブの消去回数などを均一化できる。
【０１０１】
さらに、ストレージ装置１２０のＭＰＵ１４０は、データ領域及びパリティ領域の移動先をデータ領域の数及びパリティ領域の数に基づいて決定するため、ＲＡＩＤグループを構成するフラッシュメモリドライブごとの構成を均一化できる。
【０１０２】
以下、データ領域に書き込むデータの容量が所定値よりも大きい場合について（Ｓ４２５の結果が「Ｙｅｓ」）、図６Ｃを参照しながら説明する。
【０１０３】
図６Ｃは、本発明の実施形態の書き込み処理が完了した後のデータ配置５５０を示す図である。データ配置５５０は、図６Ａのデータ配置５００の状態で、セグメント＃Ｎのセグメントに対して所定値以上のサイズのデータを書き込んだ結果を示す。
【０１０４】
ストレージ装置１２０のＭＰＵ１４０は、Ｓ４３０に処理によって、新たにデータ領域及びパリティ領域となるテンポラリ領域を選択する。ストレージ装置１２０のＭＰＵ１４０は、新たなデータ領域として、図６Ａのテンポラリ領域５０２及び５０３を選択し、新データ領域５５２及び５５３となる。同様に、新たなパリティ領域としてテンポラリ領域５０４が選択され、新パリティ領域５５４となる。斜線部は、移動後の新データ領域５５２及び５５３と新パリティ領域５５４である。
【０１０５】
その後、ストレージ装置１２０のＭＰＵ１４０は、Ｓ４８０の処理によって、図６Ａの元のデータ領域５０１及び５０５とパリティ領域５０６に対する消去コマンドを発行する。消去処理が完了すると、当該領域は、テンポラリ領域５５１、５５５及び５５６として使用される。
【０１０６】
（データの読み出し手順）
続いて、ＬＵに格納されたデータを読み出す手順について説明する。本処理は、通常のフラッシュメモリドライブに格納されたデータの読み出し手順と原則的に同じであるが、読み出しデータが記録されたブロックに属するバンクと同じバンクにおいて消去処理が実行されている場合の手順が異なる。
【０１０７】
図７は、本発明の実施形態のストレージ装置のデータの読み出し処理の手順を示すフローチャートである。ストレージ装置１２０のＭＰＵ１４０は、ホスト計算機１００からのデータの読み出し要求を受信すると、制御プログラム２０５を実行することによって、本処理を開始する。
【０１０８】
ストレージ装置１２０のＭＰＵ１４０は、まず、ホスト計算機１００からデータの読み出し要求を受信する（Ｓ６１０）。
【０１０９】
次に、ストレージ装置１２０のＭＰＵ１４０は、読み出し対象のデータが格納された論理ブロックアドレス（ＬＢＡ）を算出する。そして、ＲＡＩＤグループ管理テーブル２３０の対応するセグメントを特定し、データ／パリティ／テンポラリ領域の配置情報を取得し、読み出し対象のデータが格納されたデータ領域を割り当てたフラッシュメモリドライブを特定する（Ｓ６２０）。
【０１１０】
続いて、ストレージ装置１２０のＭＰＵ１４０は、読み出し対象のデータを格納するブロックが属するバンクにおいて消去処理が実行されているか否かを判定する（Ｓ６３０）。消去処理が実行されているか否かは、図５のＳ４８０の処理の消去コマンド発行中であって、消去コマンド実行完了の通知を受信していないことで判定することができる。
【０１１１】
ストレージ装置１２０のＭＰＵ１４０は、読み出し対象のデータが格納されたブロックが属するバンクにおいて消去処理が実行していない場合には（Ｓ６３０の結果が「Ｎｏ」）、通常の読み出し処理を実行する。具体的には、Ｓ６２０の処理によって特定された読み出し対象のデータを格納したフラッシュメモリドライブに対し、当該データの読み出しを要求する。そして、読み出されたデータをキャッシュメモリに格納する（Ｓ６４０）。Ｓ６４０の処理が実行される場合のデータ配置を図８Ａに示す。
【０１１２】
図８Ａは、本発明の実施形態の読み出し対象のデータが格納されたブロックが属するバンクにおいて消去処理が実行されていない場合のデータ配置７００を示す図である。図７のＳ６２０の処理で特定したセグメントは、セグメント＃Ｎとし、データ領域には、ＦＭＤ＃Ａ２（７０１）及びＦＭＤ＃Ａ３（７０３）が該当する。
【０１１３】
ここで、図７のデータの読み出し処理の説明に戻る。
【０１１４】
ストレージ装置１２０のＭＰＵ１４０は、読み出し対象のデータが格納されたブロックが属するバンクにおいて消去処理が実行されている場合には（Ｓ６３０の結果が「Ｎｏ」）、消去中と同一バンクに属するデータを一時的に読み出せない。そこで、本実施形態では、別のドライブの同一セグメントで消去中のバンクに属していないブロックに格納されたデータと、パリティから、一時的に読み出せないデータをＸＯＲ演算により復元する。前述のようにデータの消去には時間を要するため、消去の完了を待たずにデータを取得することができるため、データの読み出しに要する時間を短縮できる。
【０１１５】
具体的には、ストレージ装置１２０のＭＰＵ１４０は、まず、パリティを格納したセグメントと、消去処理を実行していないデータを格納したセグメントとを含むフラッシュメモリドライブに読み出しを要求する（Ｓ６５０）。そして、読み出したデータ及びパリティをＸＯＲ演算することによって、読み出し対象のデータを復元し、キャッシュメモリに格納する（Ｓ６５５）。以上の処理について、図８Ｂを用いてさらに説明する。
【０１１６】
図８Ｂは、本発明の実施形態の読み出し対象のデータを格納したブロックが属するバンクにおいて消去処理を実行している場合のデータ配置７５０を示す図である。図７のＳ６２０の処理で特定したセグメントは、図８Ａの場合と同様に、セグメント＃Ｎとする。データ領域は、ＦＭＤ＃Ａ２（７５１）及びＦＭＤ＃Ａ３（７５３）に該当する。
【０１１７】
データ配置７５０において、消去処理をＦＭＤ＃Ａ２のセグメント＃２で実行している。ここで、セグメント＃２と＃Ｎが同じバンクに属するため、セグメント＃Ｎに格納されたデータの読み出しができない。そこで、ストレージ装置１２０のＭＰＵ１４０は、データ７５３とパリティ７５５に基づいて、データ７５１を復元することによって、読み出しデータを取得する。
【０１１８】
ここで、図７のデータの読み出し処理の説明に戻る。
【０１１９】
ストレージ装置１２０のＭＰＵ１４０は、最後に、キャッシュメモリに格納された読み出しデータをホスト計算機１００に送信する。そして、完了通知（又は異常通知）をホスト計算機１００に送信し、本処理を終了する（Ｓ６６０）。
【０１２０】
（予防保守及び障害復旧）
続いて、本発明の実施形態のフラッシュメモリドライブを含むストレージ装置について、障害の発生を未然に防ぐ予防保守について説明する。
【０１２１】
フラッシュメモリドライブは、不良ページが発生した場合には、あらかじめ確保された代替ページを利用することによって、運用を継続できる。しかし、確保された代替ページをすべて使用すると、データを読み書きできない。
【０１２２】
そこで、ストレージ装置は、各フラッシュメモリドライブの不良ページの総数及び代替ページの残数などの情報を保持し、例えば、不良ページの総数が所定の値を超えた場合には、管理者に対してＦＭＤの交換を通知する。
【０１２３】
本実施形態のストレージ装置は、ＦＭＤカウンタ２６０に各フラッシュメモリドライブの不良ページの総数２６１などを格納する。不良ページが発生した場合に、当該フラッシュメモリドライブの不良ページの総数２６１をインクリメントする。不良ページの発生は、例えば、規定時間内に消去操作が完了せず、新たなデータを書き込みできない場合などとする。なお、フラッシュメモリドライブ内部にて不良ページ数を管理しており、ＭＰＵ１４０が定期的に不良ページ数をフラッシュメモリドライブに問い合わせる制御であってもよい。
【０１２４】
また、フラッシュメモリドライブは、前述のように、消去回数に制限があるため、ＦＭＤカウンタ２６０に消去発生回数２６９を記録することによって、消去発生回数２６９が所定の閾値を超えたとき、管理者に対して通知できる。
【０１２５】
このように、フラッシュメモリドライブを備えたストレージ装置は、フラッシュメモリドライブの障害が発生する前にフラッシュメモリドライブの交換を促して、障害の発生を予防することができる。
【０１２６】
さらに、ストレージ装置は、フラッシュメモリドライブが冗長構成となっている場合には、障害が発生してもデータを復元することができる。例えば、ＲＡＩＤ５構成の場合には、１台のフラッシュメモリドライブに障害が発生しても、残りのフラッシュメモリドライブに格納されたデータ及びパリティによって、データを復元することができる。したがって、１台のフラッシュメモリドライブに障害が発生した場合には、フラッシュメモリドライブを交換し、データを復元して交換されたフラッシュメモリドライブにコピーすることによって、早期に障害から復旧することができる。前述したように、復元されたデータを交換されたフラッシュメモリドライブにコピーすることをコレクションコピーという。
【０１２７】
コレクションコピーは、障害発生時だけでなく、障害発生前に予防保守として、フラッシュメモリドライブを交換する場合に実行してもよい。しかし、稼働中の残りのフラッシュメモリドライブに格納されたデータ及びパリティからデータを復元することによって、データの読み出しは可能であるが、処理性能は劣化してしまう。したがって、できるだけ短時間でコレクションコピーを完了させることが望ましい。
【０１２８】
本発明の実施形態では、データ及びパリティが格納されたセグメントを移動することが可能であることを利用して、コレクションコピーを短時間で完了させる方法について説明する。
【０１２９】
図９は、本発明の実施形態において、フラッシュメモリドライブ１５０の不良ページが所定の閾値を達した場合に実行する処理の手順を示すフローチャートである。本処理は、周期的に実行される。
【０１３０】
ストレージ装置１２０のＭＰＵ１４０は、各フラッシュメモリドライブの不良ページの総数２６１が所定の閾値を超過しているか否かを判定する（Ｓ８１０）。すべてのフラッシュメモリドライブについて、不良ページの総数２６１が所定の閾値を超過していない場合には（Ｓ８１０の結果が「Ｎｏ」）、本処理を終了する。
【０１３１】
ストレージ装置１２０のＭＰＵ１４０は、不良ページの総数２６１が所定の閾値を超過しているフラッシュメモリドライブを検出すると（Ｓ８１０の結果が「Ｙｅｓ」）、当該フラッシュメモリドライブを読み出しのみ可能として閉塞する。
【０１３２】
磁気ディスクドライブにおけるヘッドの障害又はメディアの障害では、データの読み出し及び書き込みがともに不能となる可能性が高い。一方、フラッシュメモリドライブの障害は、新たなデータの書き込みはできなくなるが、フラッシュメモリドライブ内の大多数のブロックに格納されたデータを読み出しできる。
【０１３３】
そこで、ストレージ装置１２０のＭＰＵ１４０は、閉塞したフラッシュメモリドライブからデータを可能な限り読み出し、ＲＡＩＤグループを構成する別のフラッシュメモリドライブの書き込み可能なテンポラリ領域に読み出したデータを書き込む（Ｓ８４０）。
【０１３４】
図１０Ａは、本発明の実施形態のコレクションコピーを実行する前に不良ページの総数が閾値を超過した時点のデータ配置９００を示す図である。データ配置９００では、Ｓ８１０の処理によって、ＦＭＤ＃Ａ４が不良ドライブと判定されている。なお、不良ドライブとは、不良ページの総数が所定の閾値を超過したフラッシュメモリドライブのことである。
【０１３５】
図１０Ｂは、本発明の実施形態の不良ドライブのデータを別のフラッシュメモリドライブの対応するセグメントにコピーした後のデータ配置９５０を示す図である。データ配置９５０では、ＦＭＤ＃Ａ４のセグメント＃Ｎ（９５１）に格納したパリティを、ＦＭＤ＃Ａ５のセグメント＃Ｎ（９５３）にコピーしている。
【０１３６】
ここで、図９の説明に戻ると、ストレージ装置１２０のＭＰＵ１４０は、Ｓ８４０の処理で読み出すことができなかったデータについて、別のドライブに格納されているデータ及びパリティからＸＯＲ演算することによって、データ又はパリティを復元する（Ｓ８５０）。
【０１３７】
ストレージ装置１２０のＭＰＵ１４０は、Ｓ８４０及びＳ８５０の処理によって、閉塞したドライブに格納しているデータを他の正常なフラッシュメモリドライブにコピーする。Ｓ８４０及びＳ８５０の処理が完了したら、閉塞ドライブの交換を管理端末１０５に表示し、管理者に閉塞したフラッシュメモリドライブの交換を促し、本処理を終了する（Ｓ８６０）。
【０１３８】
以上の処理によって、ストレージ装置に新たに追加されたフラッシュメモリドライブは、閉塞されたフラッシュメモリドライブに格納されたデータをコピーすることなく、運用を継続することができる。
【０１３９】
一方、新たに追加されたフラッシュメモリドライブは、最初はデータが格納されていないため、ＲＡＩＤグループを構成するフラッシュメモリドライブ間で不均衡となる。しかし、データ数、書き込み回数２６７及びパリティの総数２６５が他のフラッシュメモリドライブと比較して著しく少なくなるため、図５にて説明した書込み手順によって優先的にデータ領域又はパリティ領域が作成される。したがって、時間が経過するにつれて、ＲＡＩＤグループを構成するフラッシュメモリドライブ間でデータ領域の数及び書き込み回数２６７などが均一化される。
【０１４０】
また、図９に示した手順では、不良ドライブが検出されると、正常なフラッシュメモリドライブにデータを退避させた後、即座に管理者に通知する。本実施形態では、６台のフラッシュメモリドライブで、２Ｄ１Ｐ構成となっており、３つのテンポラリ領域をセグメントごとに有している。そこで、１台の不良ドライブが発生しても、２つのテンポラリ領域が残るため、運用を継続することが可能である。そこで、ＲＡＩＤグループの構成に応じて複数の不良ドライブが発生するまで、通常の運用を継続してもよい。
【０１４１】
図１１は、本発明の実施形態において、フラッシュメモリドライブ１５０の不良ページが閾値を達した場合に実行される処理の手順を示すフローチャートである。本処理は、図９に示された処理の手順の変形である。共通する処理については、説明を省略し、相違点について説明する。
【０１４２】
図９のＳ８１０の処理と、Ｓ９１０の処理は、同一の処理である。また、ストレージ装置１２０のＭＰＵ１４０は、不良ページ数が閾値を超過した場合には（Ｓ９１０の結果が「Ｙｅｓ」）、当該フラッシュメモリドライブを読み出しのみ可能として閉塞し、管理者に通知する（Ｓ９２０）。そして、管理者に空きスロットに新たなフラッシュメモリドライブを追加するように促す。
【０１４３】
ストレージ装置１２０のＭＰＵ１４０は、空きスロットに新たなフラッシュメモリドライブが追加されると、ＲＡＩＤグループ管理情報２００を更新し、追加されたフラッシュメモリドライブに図３に示した処理を実行し、初期化する（Ｓ９３０）。
【０１４４】
さらに、ストレージ装置１２０のＭＰＵ１４０は、閉塞したドライブのデータを新たに追加されたフラッシュメモリドライブにコピーする（コレクションコピー）。これによって、閉塞したドライブから読み出し可能なデータを、新たに追加した正常なドライブにコピーすることによって復旧できる。このため、不良ページによる読み出しできないブロックを除き、ＲＡＩＤグループを構成する他のフラッシュメモリドライブにコレクションコピーによる入出力要求を発行する必要がないため、稼働中の他のフラッシュメモリドライブへの性能影響を抑えられる。
【０１４５】
ストレージ装置１２０のＭＰＵ１４０は、コレクションコピーが完了すると、閉塞したドライブの交換指示を管理端末１０５に表示し、管理者にドライブの交換を通知する（Ｓ９６０）。さらに、ストレージ装置１２０のＭＰＵ１４０は、ＲＡＩＤグループ管理情報２００を更新し、ＲＡＩＤグループから閉塞したドライブを除外する（Ｓ９７０）。こうすることによって、ストレージ装置１２０のＭＰＵ１４０は、各フラッシュメモリドライブで均一化された状態で運用を開始できる。また、ホスト計算機１００から不良ドライブにアクセスさせないようにすることもできる。その後、管理者は、必要に応じて閉塞したドライブを除去し、空きスロットとする（Ｓ９８０）。
【０１４６】
なお、コレクションコピーの実行中であっても、閉塞されたフラッシュメモリドライブからデータの読み出しが可能であればそのまま処理し、読み出せない場合であっても、データとパリティをＸＯＲ演算することによって、データを復元して読み出しデータとすることで、運用を継続することができる。
【０１４７】
（テンポラリ領域の数が少ない場合）
本実施形態のストレージ装置１２０は、データ領域及びパリティ領域の合計と同じ数のテンポラリ領域を有していたが、テンポラリ領域の数がデータ領域及びパリティ領域の合計よりも少ない場合であっても、本発明を適用することができる。
【０１４８】
本実施形態のフラッシュメモリドライブは、記憶領域がセグメント単位に区切られている。そのため、各セグメントに記憶されたデータの容量がキャッシュメモリに一時的に保持できる容量に対して大きくなることはない。そこで、キャッシュメモリに書き込みデータを保持し、新たな書込み先の領域を確保されるまで待機すればよい。
【０１４９】
ここで、本実施形態の２Ｄ１ＰのＲＡＩＤ５構成のストレージ装置において、フラッシュメモリドライブが５台搭載される場合について説明する。本構成は、２台のスペアドライブを有する構成であり、２つのテンポラリ領域を有する。
【０１５０】
ストレージ装置１２０のＭＰＵ１４０がホスト計算機１００からの書込み要求を受け付けたとき、移動対象の領域は、２つのデータ領域と１つのパリティ領域である。このとき、ストレージ装置１２０のＭＰＵ１４０は、まず、２つのデータ領域を２つのテンポラリ領域に移動させる。このとき、パリティ領域に書き込まれるパリティは、キャッシュメモリに保持され、移動したデータ領域の消去が完了するまで待機する。消去が完了すると、前述した手順に従って、パリティを書き込む。
【０１５１】
ストレージ装置１２０のＭＰＵ１４０は、データを読み出す場合にはパリティを使用しないため、データ領域を先行して書き込むことによって、データを円滑に読み出すことができる。また、スペアドライブが１台の構成の場合であっても、各フラッシュメモリドライブへの書き込み負荷を均一化するため、フラッシュメモリドライブの長寿命化を図ることができる。
【０１５２】
（ＲＡＩＤ５以外の冗長構成）
本実施形態のストレージ装置１２０のＲＡＩＤグループは、ＲＡＩＤ５構成であったが、他の構成であっても本発明を適用することができる。例えば、パリティを２つ有するＲＡＩＤ６構成であっても、同様に本発明を適用することができる。
【０１５３】
また、ＲＡＩＤ１構成（ミラーリング）、及び、ＲＡＩＤ０１（ストライピングとミラーリングの併用）の場合には、データ領域と当該データ領域の複製を格納するミラー領域、さらにテンポラリ領域を有する構成となる。具体的には、所定のサイズよりも大きいサイズのデータをデータ領域に書き込むとき、記憶済データとあわせた新たな書き込みデータを生成し、選択されたテンポラリ領域に書き込む。さらに、当該新たな書き込みデータを新たに選択されたミラー領域に書き込めばよい。
【０１５４】
（本実施形態の効果）
本発明の実施形態によれば、データ領域及びパリティ領域を移動させることによって、上書き更新のために消去してからデータを書き込むのではなく、テンポラリ領域にデータを移動させることによって消去時間を隠蔽し、スループットを向上できる。また、データ及びパリティが書き込まれる領域を移動させるため、ホスト計算機１００からの書き込み要求時に常に更新されるパリティの書き込みも含めて、各フラッシュメモリドライブの書き込み回数を均一化できる。
【０１５５】
また、本発明の実施形態によれば、パリティを更新するときに、セグメントが同一であって、別のドライブのテンポラリ領域に、パリティを書き込むことによって、性能のボトルネックを解決することができる。
【０１５６】
さらに、本発明の実施形態によれば、テンポラリ領域に予防保守などにより読み出し専用として閉塞されたドライブからデータをコピーすることによって、コレクションコピーに要する時間を大幅に短縮できる。また、ＲＡＩＤグループを構成する複数のドライブのうち、閉塞ドライブと新たに追加したドライブを除いたドライブには、コレクションコピーによる入出力処理数を従来技術と比較して大幅に削減することができる。したがって、コレクションコピー実行中に処理性能が大幅に低下することを防ぐことができる。
【図面の簡単な説明】
【０１５７】
【図１Ａ】本発明の実施形態のストレージ装置を中心とした計算機システムの構成図である。
【図１Ｂ】本発明の実施形態のストレージ装置のＭＰＵパッケージの構成図である。
【図２】本発明の実施形態のＲＡＩＤグループ管理情報を示す図である。
【図３】本発明の実施形態のストレージ装置にＲＡＩＤグループを作成する手順を示すフローチャートである。
【図４】本発明の実施形態のＲＡＩＤグループの管理テーブルと当該ＲＡＩＤグループのデータ配置との関係を示す図である。
【図５】本発明の実施形態のストレージ装置の書き込み処理の手順を示すフローチャートである。
【図６Ａ】本発明の実施形態の書き込み処理実行前のデータ配置を示す図である。
【図６Ｂ】本発明の実施形態の書き込み処理によって更新されたデータを一時的に格納するキャッシュメモリの状態を示す図である。
【図６Ｃ】本発明の実施形態の書き込み処理完了後のデータ配置を示す図である。
【図７】本発明の実施形態のストレージ装置のデータの読み出し処理の手順を示すフローチャートである。
【図８Ａ】本発明の実施形態の読み出し対象のデータが格納されたブロックが属するバンクにおいて消去処理が実行されていない場合のデータ配置を示す図である。
【図８Ｂ】本発明の実施形態の読み出し対象のデータが格納されたブロックが属するバンクにおいて消去処理が実行されている場合のデータ配置を示す図である。
【図９】本発明の実施形態の予防保守において、フラッシュメモリドライブの不良ページが閾値を達した場合に実行される処理の手順を示すフローチャートである。
【図１０Ａ】本発明の実施形態のコレクションコピーを実行する前に不良ページの総数が閾値を超過した時点のデータ配置を示す図である。
【図１０Ｂ】本発明の実施形態の不良ドライブのデータを別のフラッシュメモリドライブの対応するセグメントにコピーした後のデータ配置を示す図である。
【図１１】本発明の実施形態の予防保守において、フラッシュメモリドライブの不良ページが閾値を達した場合に実行される処理の手順を示すフローチャートである。
【符号の説明】
【０１５８】
１００    ホスト計算機
１０５    管理端末
１１０    ＳＡＮ
１２０    ストレージ装置
１３１    ＭＰＵパッケージ
１３３    ホストパッケージ
１３４    スイッチＰＫ
１３５    キャッシュＰＫ
１３６    バックエンドＰＫ
１３８    バックエンドスイッチ
１４０    ＭＰＵ
１５０    フラッシュメモリドライブ
２００    ＲＡＩＤグループ管理情報
２２０    ＲＡＩＤグループ構成情報
２３０    ＲＡＩＤグループ管理テーブル
２４０    ＦＭＤ番号リスト
２６０    ＦＭＤカウンタ
【図１Ａ】
2008204041.tif 000003
【図１Ｂ】
2008204041.tif 000004
【図２】
2008204041.tif 000005
【図３】
2008204041.tif 000006
【図４】
2008204041.tif 000007
【図５】
2008204041.tif 000008
【図６Ａ】
2008204041.tif 000009
【図６Ｂ】
2008204041.tif 000010
【図６Ｃ】
2008204041.tif 000011
【図７】
2008204041.tif 000012
【図８Ａ】
2008204041.tif 000013
【図８Ｂ】
2008204041.tif 000014
【図９】
2008204041.tif 000015
【図１０Ａ】
2008204041.tif 000016
【図１０Ｂ】
2008204041.tif 000017
【図１１】
2008204041.tif 000018