(57)【要約】【課題】複数の記憶デバイスを含むストレージシステムにおいて、データの消去回数に制限のある記憶デバイスの消去回数を平準化する。【解決手段】データを格納する複数の記憶デバイスを備えるストレージシステムで、複数の記憶デバイスには予備の記憶デバイスが含まれ、各記憶デバイスの識別子及び各記憶デバイスに格納されたデータが消去されたデータ消去回数を含む記憶デバイス構成情報が当該ストレージシステムに記憶され、データ消去回数が所定のしきい値を超えた場合には、データ消去回数が所定のしきい値を超えた記憶デバイスに格納されたデータをスペアの記憶デバイスに複製し、データが複製された予備の記憶デバイスの識別子にデータ消去回数が所定のしきい値を超えた記憶デバイスの識別子を割り当てる。【選択図】図１５
2010055247.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するストレージシステムであって、
インターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、前記データを格納する複数の記憶デバイスと、を備え、
前記複数の記憶デバイスには、予備の記憶デバイスが含まれ、
前記メモリは、前記各記憶デバイスの識別子及び前記各記憶デバイスに格納されたデータが消去されたデータ消去回数を含む記憶デバイス構成情報を格納し、
前記プロセッサは、
前記データ消去回数が所定の第１のしきい値を超えた場合には、前記データ消去回数が所定の第１のしきい値を超えた記憶デバイスに格納されたデータを前記予備の記憶デバイスに複製し、
前記データが複製された予備の記憶デバイスの識別子に、前記データ消去回数が所定の第１のしきい値を超えた記憶デバイスの識別子を割り当てることを特徴とするストレージシステム。
【請求項２】
前記プロセッサは、前記データ消去回数が前記所定の第１のしきい値を超えた場合には、前記所定の第１のしきい値に所定の値を加算することによって、前記所定の第１のしきい値を更新することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記プロセッサは、前記複数の記憶デバイスに含まれる記憶デバイスが閉塞され、かつ、前記閉塞された記憶デバイスが新たな記憶デバイスと交換された場合には、前記更新された所定の第１のしきい値を初期化することを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記プロセッサは、前記記憶デバイスに格納されたデータが消去されるごとに前記データ消去回数を更新することを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記データは、ＲＡＩＤグループを構成する前記複数の記憶デバイスによって冗長的に格納され、
前記所定の第１のしきい値は、前記ＲＡＩＤグループごとに設定されていることを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記記憶デバイスには、当該記憶デバイスの前記データ消去回数が記録され、
前記プロセッサは、
前記複数の記憶デバイスから各記憶デバイスのデータ消去回数を収集し、
前記収集されたデータ消去回数と前記所定の第１のしきい値とを周期的に比較することを特徴とする請求項１に記載のストレージシステム。
【請求項７】
前記プロセッサは、
前記複数の記憶デバイスのデータ消去回数の最大値及び最小値を取得し、
前記データ消去回数の最大値と最小値との差が所定の第２のしきい値よりも大きい場合には、前記データ消去回数の最大値である記憶デバイスに格納されたデータと、前記データ消去回数の最小値である記憶デバイスに格納されたデータとを交換し、
前記データ消去回数の最大値である記憶デバイス識別子と、前記データ消去回数の最小値である記憶デバイス識別子とを交換することを特徴とする請求項１に記載のストレージシステム。
【請求項８】
前記記憶デバイスは、半導体記憶素子によって構成され、
前記プロセッサは、前記記憶デバイスのデータが記憶されている領域にデータを書き込む場合には、前記データが書き込まれる領域を所定の単位で消去し、前記消去された領域にデータを書き込むことを特徴とする請求項１に記載のストレージシステム。
【請求項９】
読み書きされるデータを格納するストレージシステムにおいて、前記データを格納する記憶デバイスの構成を管理する構成管理方法であって、
前記ストレージシステムは、インターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、複数の前記記憶デバイスと、を備え、
前記複数の記憶デバイスには、予備の記憶デバイスが含まれ、
前記メモリは、前記各記憶デバイスの識別子及び前記各記憶デバイスに格納されたデータが消去されたデータ消去回数を含む記憶デバイス構成情報を格納し、
前記方法は、
前記プロセッサが、前記データ消去回数が所定の第１のしきい値を超えた場合には、前記データ消去回数が所定の第１のしきい値を超えた記憶デバイスに格納されたデータを前記予備の記憶デバイスに複製し、
前記プロセッサが、前記データが複製された予備の記憶デバイスの識別子に、前記データ消去回数が所定の第１のしきい値を超えた記憶デバイスの識別子を割り当てることを特徴とする構成管理方法。
【請求項１０】
前記方法は、前記データ消去回数が前記所定の第１のしきい値を超えた場合には、前記プロセッサが、前記所定の第１のしきい値に所定の値を加算することによって、前記所定の第１のしきい値を更新することを特徴とする請求項９に記載の構成管理方法。
【請求項１１】
前記方法は、前記複数の記憶デバイスに含まれる記憶デバイスが閉塞され、かつ、前記閉塞された記憶デバイスが新たな記憶デバイスと交換された場合には、前記プロセッサが、前記更新された所定の第１のしきい値を初期化することを特徴とする請求項１０に記載の構成管理方法。
【請求項１２】
前記方法は、前記プロセッサは、前記記憶デバイスに格納されたデータが消去されるごとに前記データ消去回数を更新することを特徴とする請求項９に記載の構成管理方法。
【請求項１３】
前記データは、ＲＡＩＤグループを構成する前記複数の記憶デバイスによって冗長的に格納され、
前記所定の第１のしきい値は、前記ＲＡＩＤグループごとに設定されていることを特徴とする請求項９に記載の構成管理方法。
【請求項１４】
前記記憶デバイスには、当該記憶デバイスの前記データ消去回数が記録され、
前記方法は、
前記プロセッサが、前記複数の記憶デバイスから各記憶デバイスのデータ消去回数を収集し、
前記プロセッサが、前記収集されたデータ消去回数と前記所定の第１のしきい値とを周期的に比較することを特徴とする請求項９に記載の構成管理方法。
【請求項１５】
前記方法は、
前記プロセッサが、前記複数の記憶デバイスに含まれる記憶デバイスのデータ消去回数の最大値及び最小値を取得し、
前記プロセッサが、前記データ消去回数の最大値と最小値との差が所定の第２のしきい値よりも大きい場合には、前記データ消去回数の最大値である記憶デバイスに格納されたデータと、前記データ消去回数の最小値である記憶デバイスに格納されたデータとを交換し、
前記プロセッサが、前記データ消去回数の最大値である記憶デバイス識別子と、前記データ消去回数の最小値である記憶デバイス識別子とを交換することを特徴とする請求項９に記載の構成管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶デバイスを含むストレージシステムの構成を管理する技術に関する。
【背景技術】
【０００２】
フラッシュメモリなどの半導体記憶媒体によって構成される記憶デバイスでは、データを更新するためには、更新対象のデータが格納された領域（ブロック）を一旦すべて消去してから、更新データを書き込む必要がある。このような記憶デバイスの代表的なものとしては、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が挙げられる。
【０００３】
また、ＳＳＤで利用されるフラッシュメモリには、データの消去回数に制限があり、データの消去回数が制限回数を超えると、データを格納することができなくなる。そこで、ＳＳＤによって提供される記憶領域の特定の領域にデータの更新（消去）が集中しないようにデータを配置することによって、消去操作の回数を領域ごとに均一化し、記憶デバイスの長寿命化を図る技術が開示されている（特許文献１参照）。
【特許文献１】特開２００７−１４９２４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された技術では、同じ記憶デバイスによって提供される記憶領域に対する消去回数（書き込み回数）を領域内で平準化することは可能であるが、複数の記憶デバイスを含むストレージシステムにおいて、記憶デバイスごとの消去回数を平準化することは想定されていない。例えば、ＲＡＩＤ技術（例えば、ＲＡＩＤ５）を適用し、複数のＳＳＤによってＲＡＩＤグループが構成される場合には、ＳＳＤ間の消去回数を平準化することはできない。
【０００５】
例えば、ＲＡＩＤグループによって提供される記憶領域に格納されたデータは、ストライピングされた複数の記憶デバイスによって記憶されるが、データがストライピングサイズ以下の場合に局所的に読み書きされた場合には、一定の記憶デバイスのみに入出力が集中してしまう。
【０００６】
したがって、ストレージシステムに含まれる記憶デバイス間で消去回数にばらつきが生じると、記憶デバイスによって提供される記憶領域内で消去回数が平準化されていても、記憶デバイスごとの寿命にばらつきが生じてしまう。これにより、ストレージシステム全体の寿命が短期化し、若しくは、ストレージシステムに含まれる記憶デバイスの交換頻度が増加することによって運用コストが増大する可能性がある。
【０００７】
本発明は、ストレージシステムに含まれる記憶デバイスの消去回数の平準化を図ることによって、ストレージシステム全体の長寿命化を図り、運用コストを低減させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の代表的な一形態では、読み書きされるデータを格納するストレージシステムであって、インターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、前記データを格納する複数の記憶デバイスと、を備え、前記複数の記憶デバイスには、予備の記憶デバイスが含まれ、前記メモリは、前記各記憶デバイスの識別子及び前記各記憶デバイスに格納されたデータが消去されたデータ消去回数を含む記憶デバイス構成情報を格納し、前記プロセッサは、前記データ消去回数が所定の第１のしきい値を超えた場合には、前記データ消去回数が所定の第１のしきい値を超えた記憶デバイスに格納されたデータを前記予備の記憶デバイスに複製し、前記データが複製された予備の記憶デバイスの識別子に、前記データ消去回数が所定の第１のしきい値を超えた記憶デバイスの識別子を割り当てる。
【発明の効果】
【０００９】
本発明の一形態によれば、データの消去回数の多い記憶デバイスをスペア記憶デバイスと交換することによって、記憶デバイスの書き込み回数を平準化し、ストレージシステム全体の長寿命化を図ることができる。
【発明を実施するための最良の形態】
【００１０】
本発明は、フラッシュメモリなどの書き込み回数（消去回数）に制限のある半導体記憶媒体によって構成されたストレージシステムにおいて、スペア記憶デバイスを含む記憶デバイスの書き込み回数を平準化することによって、ストレージシステム全体の長寿命化を図る。書き込み回数の平準化の方法としては、記憶デバイスごとに書き込み回数を記録し、書き込み回数の多い記憶デバイスに格納されたデータをスペア記憶デバイスに移行する（ダイナミックスペアリング）。以下、図面を参照しながら本発明の実施の形態について、具体的に説明する。
【００１１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態の計算機システムの構成を示す図である。
【００１２】
本発明の第１の実施の形態の計算機システムには、ホスト計算機１０、ストレージシステム２０及び保守端末３０が含まれる。
【００１３】
ホスト計算機１０は、アプリケーションプログラムを実行し、ストレージシステム２０に格納されたデータを利用して各種業務を処理する。ストレージシステム２０は、ホスト計算機１０によって読み書きされるデータを格納する。ホスト計算機１０は、汎用計算機（ＰＣ）で実現可能なハードウェア構成となっている。
【００１４】
ストレージシステム２０は、複数の記憶デバイス５００を備え、ホスト計算機１０によって読み書きされるデータを格納する。
【００１５】
ストレージシステム２０は、チャネルアダプタ１００、キャッシュ２００、共有メモリ３００、ディスクアダプタ４００及び記憶デバイス５００を備える。
【００１６】
チャネルアダプタ１００は、外部機器に接続されるインターフェースを含み、ホスト計算機１０とのデータの受け渡しを制御する。チャネルアダプタ１００は、キャッシュ２００及び共有メモリ３００に接続される。チャネルアダプタ１００は、プロトコルチップ１１０、ＤＭＡ回路１２０及びＭＰ１３０を含む。プロトコルチップ１１０、ＤＭＡ回路１２０及びＭＰ１３０は、相互に接続される。さらに、プロトコルチップ１１０、ＤＭＡ回路１２０及びＭＰ１３０は、それぞれ多重化されている。共通する機能又は処理について説明する場合には、プロトコルチップ１１０、ＤＭＡ回路１２０及びＭＰ１３０と表記し、個別の処理について説明する場合には、符号にＣ１〜Ｃｎを付与する。例えば、ＭＰＣ１と表記する。
【００１７】
プロトコルチップ１１０は、ネットワークインタフェースを含み、ホスト計算機１０に接続される。プロトコルチップ１１０は、ホスト計算機１０との間でデータを送受信し、プロトコル制御などを行う。
【００１８】
ＤＭＡ回路１２０は、ホスト計算機１０に対するデータ転送処理を制御する。具体的には、ホスト計算機１０に接続されるプロトコルチップ１１０とキャッシュ２００との間のＤＭＡ転送を制御する。ＭＰ１３０は、プロトコルチップ１１０及びＤＭＡ回路１２０を制御する。
【００１９】
キャッシュ２００は、ホスト計算機１０によって読み書きされるデータを一時的に格納する。ストレージシステム２０は、ホスト計算機１０によって要求されたデータがキャッシュ２００に格納されている場合には、記憶デバイス５００に格納されたデータではなく、キャッシュ２００に格納されたデータを提供することによって、高速なデータアクセスを可能とする。
【００２０】
共有メモリ３００は、チャネルアダプタ１００及びディスクアダプタ４００による処理又は制御に必要な情報を記憶する。例えば、チャネルアダプタ１００又はディスクアダプタ４００で処理される通信メッセージ、及びストレージシステム２０の構成情報などが記憶される。共有メモリ３００に格納された情報の詳細については、図２にて後述する。
【００２１】
ディスクアダプタ４００は、記憶デバイス５００に接続されるインターフェースを含み、キャッシュ２００とのデータの受け渡しを制御する。ディスクアダプタ４００は、ＤＭＡ回路４１０、プロトコルチップ４２０、ＭＰ４３０及びＤＲＲ４４０を含む。ＤＭＡ回路４１０、プロトコルチップ４２０、ＭＰ４３０及びＤＲＲ４４０は、相互に接続される。また、ＤＭＡ回路４１０、プロトコルチップ４２０、ＭＰ４３０及びＤＲＲ４４０は、それぞれ多重化されている。共通する機能又は処理について説明する場合には、ＤＭＡ回路４１０、プロトコルチップ４２０及びＭＰ４３０と表記し、個別の処理について説明する場合には、符号にＤ１〜Ｄｎを付与する。例えば、ＭＰＤ１と表記する。
【００２２】
ＤＭＡ回路４１０は、プロトコルチップ４２０とキャッシュ２００との間のＤＭＡ転送を制御する。プロトコルチップ４２０は、記憶デバイス５００に接続されるインターフェースを含み、記憶デバイス５００との間のプロトコル制御を行う。
【００２３】
ＭＰ４３０は、ＤＭＡ回路４１０、プロトコルチップ４２０及びＤＲＲ４４０を制御する。ＤＲＲ４４０は、キャッシュ２００に記憶されたデータを読み出し、冗長データを作成し、作成された冗長データをキャッシュ２００に書き込む。
【００２４】
記憶デバイス５００は、ホスト計算機１０によって読み書きされるデータを格納する。本発明の第１の実施の形態では、記憶デバイス５００は、フラッシュメモリによって構成されるＳＳＤである。各記憶デバイス５００に共通の内容を説明する場合には、記憶デバイス５００と表記し、個別の記憶デバイス５００について説明する場合には、記憶デバイス５００Ａのように適宜識別子を追加する。
【００２５】
また、本発明の第１の実施の形態のストレージシステム２０では、複数の記憶デバイス５００によってＲＡＩＤグループを構成し、データを冗長化して格納する。さらに、ストレージシステム２０には、障害が発生した場合などのために、スペア記憶デバイス５５０が備えられている。なお、スペア記憶デバイス５５０は、ダイナミックスペアリングなどによって記憶デバイス５００と入れ替えられる。
【００２６】
保守端末３０は、ストレージシステム２０を保守するための端末であって、ストレージシステム２０にネットワーク４０を介して接続する。具体的には、ストレージシステム２０に含まれるチャネルアダプタ１００及びディスクアダプタ４００に接続され、ストレージシステム２０の保守を行う。なお、保守端末３０は、ホスト計算機１０と同様に、汎用計算機（ＰＣ）で実現可能なハードウェア構成となっている。
【００２７】
図２は、本発明の第１の実施の形態の共有メモリ３００に格納された情報を示す図である。
【００２８】
共有メモリ３００には、メッセージエリア３１０、構成情報エリア３４０及びシステムしきい値エリア３７０を含む。
【００２９】
メッセージエリア３１０には、処理を実行するために必要な指示を含むメッセージが格納される。メッセージエリア３１０には、ホスト計算機１０によって要求された処理を実行するためのメッセージの他に、ストレージシステム２０を保守又は管理するための処理を実行するためのメッセージが格納される。また、メッセージエリア３１０に格納されたメッセージは、チャネルアダプタ１００又はディスクアダプタ４００によって処理される。メッセージエリア３１０には、具体的には、メッセージテーブル３２０及び要求応答内容テーブル３３０が格納される。
【００３０】
メッセージテーブル３２０は、処理の要求元及び要求先の識別情報、要求内容及び応答内容を示す情報を格納する。メッセージテーブル３２０の詳細は、図３にて後述する。
【００３１】
要求応答内容テーブル３３０は、要求内容及び応答内容を示すメッセージの具体的な内容が格納される。要求応答内容テーブル３３０の詳細は、図４にて後述する。
【００３２】
構成情報エリア３４０は、記憶デバイス５００によって構成されるＲＡＩＤグループの構成情報及び記憶デバイス５００に関する情報を格納する。具体的には、構成情報エリア３４０には、記憶デバイス構成情報としてＲＡＩＤグループ情報テーブル３５０及びドライブ情報テーブル３６０が格納される。
【００３３】
ＲＡＩＤグループ情報テーブル３５０は、ＲＡＩＤグループと当該ＲＡＩＤグループを構成する記憶デバイス５００などの情報を含む。ＲＡＩＤグループ情報テーブル３５０の詳細は、図５にて後述する。
【００３４】
ドライブ情報テーブル３６０は、記憶デバイス５００の属性及び状態などの情報を格納する。ドライブ情報テーブル３６０の詳細は、図６にて後述する。
【００３５】
システムしきい値エリア３７０は、ダイナミックスペアリング基礎しきい値Ｎ１（３８０）及びダイナミックスペアリング判定差分値Ｎ３（３９０）を含む。
【００３６】
ダイナミックスペアリング基礎しきい値Ｎ１（３８０）は、ダイナミックスペアリングを実行するか否かを判定するためのシステム共通の値である。第１の実施の形態では、ＲＡＩＤグループの構成及びダイナミックスペアリング基礎しきい値Ｎ１（３８０）に基づいて、ＲＡＩＤグループごとにしきい値が設定される。
【００３７】
ダイナミックスペアリング判定差分値Ｎ３（３９０）は、記憶デバイス５００の消去回数の差異に基づいて記憶デバイス５００を切り替える場合に使用されるしきい値である。なお、ダイナミックスペアリング判定差分値Ｎ３（３９０）は、後述する第３の実施の形態で使用される。
【００３８】
なお、ダイナミックスペアリング基礎しきい値Ｎ１（３８０）及びダイナミックスペアリング判定差分値Ｎ３（３９０）は、保守端末３０によって更新することができる。
【００３９】
図３は、本発明の第１の実施の形態のメッセージテーブル３２０の一例を示す図である。
【００４０】
メッセージテーブル３２０には、メッセージに対応する要求内容と当該要求に対する応答内容が含まれる。具体的には、メッセージテーブル３２０には、有効／無効フラグ３２１、メッセージＩＤ３２２、要求元ＩＤ３２３、要求内容アドレス３２４、要求先ＩＤ３２５及び応答内容アドレス３２６が含まれる。
【００４１】
有効／無効フラグ３２１は、メッセージが有効であるか無効であるかを示すフラグである。メッセージＩＤ３２２は、メッセージを一意に識別する識別子である。
【００４２】
要求元ＩＤ３２３は、メッセージに含まれる処理要求の要求元を識別する識別子である。例えば、メッセージの内容がホスト計算機１０からストレージシステム２０に対するデータの読み出し要求の場合には、要求を受け付けたチャネルアダプタ１００のＭＰ１３０の識別子が格納される。
【００４３】
要求内容アドレス３２４は、要求内容が記憶された領域のアドレスである。要求内容そのものは、後述する要求応答内容テーブル３３０に格納され、要求内容アドレス３２４にはアドレスのみが格納される。
【００４４】
要求先ＩＤ３２５は、メッセージに含まれる処理要求の要求先を識別する識別子である。例えば、前述したように、メッセージの内容がホスト計算機１０からストレージシステム２０に対するデータの読み出し要求の場合には、要求を処理するディスクアダプタ４００のＭＰ４３０の識別子が格納される。
【００４５】
応答内容アドレス３２６は、応答内容が記憶された領域のアドレスである。応答内容そのものは、要求内容と同様に、後述する要求応答内容テーブル３３０に格納されている。
【００４６】
図４は、本発明の第１の実施の形態の要求応答内容テーブル３３０の一例を示す図である。
【００４７】
要求応答内容テーブル３３０には、要求内容３３１及び応答内容３３２の実体が格納される。メッセージテーブル３２０には、前述したように、要求内容３３１及び応答内容３３２が格納された領域のアドレスが格納される。
【００４８】
要求内容３３１には、ホスト計算機１０などによって要求された処理内容が含まれる。具体的には、要求内容がデータの読み出しか書き込みかを示す情報、当該データが格納されたキャッシュ２００のアドレス、記憶デバイス５００の論理アドレス及びデータの転送長などが含まれる。応答内容３３２には、要求元に送信されるデータに関する情報などが含まれる。
【００４９】
図５は、本発明の第１の実施の形態のＲＡＩＤグループ情報テーブル３５０の一例を示す図である。
【００５０】
ＲＡＩＤグループ情報テーブル３５０は、ストレージシステム２０に含まれる記憶デバイス５００よって構成されるＲＡＩＤグループの定義情報が格納される。
【００５１】
ＲＡＩＤグループ情報テーブル３５０には、ＲＡＩＤグループ番号３５１、ＲＡＩＤレベル３５２、状態３５３、コピーポインタ３５４、しきい値Ｎ２（３５５）、構成ＤＲＶ台数３５６、及びドライブＩＤ（３５７〜３５９）が含まれる。
【００５２】
ＲＡＩＤグループ番号３５１は、ＲＡＩＤグループの識別子である。ＲＡＩＤレベル３５２は、ＲＡＩＤグループ番号３５１によって識別されるＲＡＩＤグループのＲＡＩＤレベルである。具体的には、“ＲＡＩＤ１”、“ＲＡＩＤ５”などが格納される。
【００５３】
状態３５３は、当該ＲＡＩＤグループの状態を示す。例えば、正常に運用されている場合には「Ｎｏｒｍａｌ」、障害が発生したなどの理由で使用できない場合には「使用不可」などが格納される。
【００５４】
コピーポインタ３５４は、ダイナミックスペアリングが実行されている場合など、ＲＡＩＤグループに含まれる記憶デバイス５００が他の記憶デバイスにコピーされている場合にコピーが完了した領域のアドレスが格納される。
【００５５】
しきい値Ｎ２（３５５）は、ＲＡＩＤグループごとに設定されるしきい値であって、当該ＲＡＩＤグループに含まれる記憶デバイス５００の消去回数がしきい値Ｎ２を超えた当該記憶デバイス５００に対してダイナミックスペアリングが実行される。なお、しきい値Ｎ２（３５５）は、保守端末３０によって更新することができる。
【００５６】
構成ＤＲＶ台数３５６は、ＲＡＩＤグループを構成する記憶デバイス５００の台数である。ドライブＩＤ（３５７〜３５９）は、ＲＡＩＤグループを構成する記憶デバイス５００の識別子である。
【００５７】
また、ＲＡＩＤグループ番号３５１が「Ｓｐａｒｅ」となっているエントリのように、実際にＲＡＩＤグループを構成しない記憶デバイス５００が含まれるようにしてもよい。このようにすれば、ＲＡＩＤグループ番号３５１を識別情報として、ＲＡＩＤグループに属さない記憶デバイスに対してもダイナミックスペアリングを実行することができる。
【００５８】
図６は、本発明の第１の実施の形態のドライブ情報テーブル３６０の一例を示す図である。
【００５９】
ドライブ情報テーブル３６０は、ストレージシステム２０に備えられる記憶デバイス５００の情報を格納する。ドライブ情報テーブル３６０には、ドライブＩＤ３６１、ドライブ状態３６２、ドライブ属性３６３、コピー関連ＩＤ３６４、消去回数３６５及び消去単位３６６を含む。
【００６０】
ドライブＩＤ３６１は、記憶デバイス５００の識別子である。ドライブ状態３６２は、記憶デバイス５００の状態を示す情報である。ドライブ状態３６２には、運用中である「Ｎｏｒｍａｌ」、ダイナミックスペアリングなどによって他の記憶デバイス５００に複製している若しくは他の記憶デバイス５００に複製されていることを示す「コピー中」などが格納される。
【００６１】
ドライブ属性３６３は、記憶デバイス５００の属性が格納される。具体的には、データが格納されている場合の「データ」、コピー中の場合には「コピー元」又は「コピー先」が格納される。当該記憶デバイス５００が、スペアドライブとなっている場合には「スペア」が格納される。
【００６２】
コピー関連ＩＤ３６４は、ドライブ状態３６２が「コピー中」となっている場合に、コピーの相手先の記憶デバイス５００のドライブＩＤが記憶される。具体的には、コピー元となっている場合にはコピー先の記憶デバイス５００が、コピー先となっている場合には、コピー元の記憶デバイス５００のドライブＩＤ３６１が格納される。
【００６３】
消去回数３６５は、ドライブＩＤ３６１によって識別される記憶デバイス５００に対してデータの消去処理が実行された回数が格納される。前述したように、ＳＳＤでは、データを書き込む場合には、データを書き込む領域を一旦消去してからデータを書き込むため、消去回数３６５を書き込み回数としてもよい。
【００６４】
消去単位３６６は、データ書き込み時などに書き込まれたデータが消去される領域のサイズである。なお、一般的にＳＳＤでは、データの書き込み（消去）単位は、データが読み出される単位よりも大きい。本発明の第１の実施の形態では、データの消去単位はデータの読み出し単位と相違していてもよいし、同じであってもよい。
【００６５】
図７は、本発明の第１の実施の形態のディスクアダプタ４００の構成の一例を示す図である。
【００６６】
図７に示すディスクアダプタ４００には、それぞれ４つのＤＭＡ回路Ｄ１〜４（４１０Ａ〜４１０Ｄ）、ＤＲＲ１〜４（４４０Ａ〜４４０Ｄ）、プロトコルチップＤ１〜４（４２０Ａ〜４２０Ｄ）及びＭＰＤ１〜４（４３０Ａ〜４３０Ｄ）が搭載されている。
【００６７】
また、記憶デバイス５００（５００Ａ〜５００Ｄ）は、３Ｄ＋１ＰのＲＡＩＤグループが構成されている。記憶デバイス５００Ａは、ドライブＩＤ３６１が「ＤＲＶ１−１」であって、さらにＲＡＩＤグループ内の識別情報として「Ｄ１」が付与されている。同様に、記憶デバイス５００Ｂは、ドライブＩＤ３６１が「ＤＲＶ１−２」、ＲＡＩＤグループ内の識別情報が「Ｄ２」となっている。記憶デバイス５００Ｃは、ドライブＩＤ３６１が「ＤＲＶ１−３」、ＲＡＩＤグループ内の識別情報が「Ｄ３」、記憶デバイス５００Ｄは、ドライブＩＤ３６１が「ＤＲＶ１−４」、ＲＡＩＤグループ内の識別情報がパリティに対応する「Ｐ１」が割り当てられている。
【００６８】
さらに、スペア記憶デバイス５５０として、ドライブＩＤ３６１が「ＤＲＶ１６−１」の記憶デバイス５００が割り当てられている。なお、ＲＡＩＤ構成情報は、前述したように、共有メモリ３００に含まれる構成情報エリア３４０のＲＡＩＤグループ情報テーブル３５０に定義されている。
【００６９】
また、記憶デバイス５００は、それぞれ、一組のＤＭＡ回路４１０、ＤＲＲ４４０、プロトコルチップ４２０及びＭＰ４３０によって制御される。例えば、記憶デバイス５００Ａ（Ｄ１）及びスペア記憶デバイス５５０（Ｓ）は、ＤＭＡ回路Ｄ１（４１０Ａ）、ＤＲＲ１（４４０Ａ）、プロトコルチップＤ１（４２０Ａ）及びＭＰＤ１（４３０Ａ）によって制御される。
【００７０】
キャッシュ２００には、記憶デバイス５００に対応する領域が必要に応じて確保される。例えば、記憶デバイス５００Ａには、ＲＡＩＤグループ内の識別情報と対応するように、領域「Ｄ１」が確保される。
【００７１】
なお、各記憶デバイス５００に対しては、対応するディスクアダプタ４００のＭＰ４３０によって制御され、保守管理などについては、ＭＰＤ１（４３０Ａ）によって処理されるとして手順を説明する。
【００７２】
以下、ホスト計算機１０によってストレージシステム２０に送信されたデータの書き込み要求を処理する手順について説明する。
【００７３】
図８は、本発明の第１の実施の形態のホスト計算機１０からデータの書き込み要求を受け付け、記憶デバイス５００にデータを書き込む手順を示すフローチャートである。なお、ホスト計算機１０によって送信されたデータの書き込み要求をプロトコルチップＣ１（１１０）が受け付けたものとして本処理を説明する。
【００７４】
まず、プロトコルチップＣ１（１１０）は、ホスト計算機１０によって送信されたデータの書き込み要求を受け付けると、ＭＰＣ１（１３０）に書き込み要求を受け付けられたことを通知する（Ｓ８０１）。
【００７５】
ＭＰＣ１（１３０）は、書き込み要求が受け付けられたことを通知されると、書き込みデータをプロトコルチップＣ１（１１０）からＤＭＡ回路Ｃ１（１２０）に転送するように、プロトコルチップＣ１（１１０）に指示する（Ｓ８０２）。
【００７６】
ＭＰＣ１（１３０）は、さらに、書き込みデータをプロトコルチップＣ１（１１０）からキャッシュ２００の領域Ｄ１に転送するように、ＤＭＡ回路Ｃ１（１２０）に指示する（Ｓ８０３）。前述したように、キャッシュ２００の領域Ｄ１は、記憶デバイス５００Ａ（Ｄ１）に対応する。このとき、ＭＰＣ１（１３０）は、領域Ｄ１のアドレス及び転送長を取得する。
【００７７】
ＤＭＡ回路Ｃ１（１２０）は、ＭＰＣ１（１３０）による指示に基づいて、書き込みデータをキャッシュ２００の領域Ｄ１に転送する（Ｓ８０４）。そして、書き込みデータの転送が終了した後、ＭＰＣ１（１３０）に転送が完了した旨を通知する（Ｓ８０５）。
【００７８】
ＭＰＣ１（１３０）は、キャッシュ２００への書き込みデータの転送が完了した旨をＤＭＡ回路Ｃ１（１２０）から通知されると、共有メモリ３００に格納されたメッセージエリア３１０にキャッシュ２００の領域Ｄ１に格納された書き込みデータを記憶デバイスＤ１に書き込む指示を含むメッセージを登録する（Ｓ８０６）。具体的には、メッセージテーブル３２０及び要求応答内容テーブル３３０に、Ｓ８０３の処理で取得された領域Ｄ１のアドレス及び転送長などの情報を登録する。
【００７９】
ＭＰＣ１（１３０）は、書き込み完了ステータスをホスト計算機１０に送信するように、プロトコルチップＣ１（１２０）に指示する（Ｓ８０７）。
【００８０】
プロトコルチップＣ１（１２０）は、書き込み完了ステータスの送信指示を受け付けると、ホスト計算機１０に書き込み完了ステータスを送信する（Ｓ８０８）。
【００８１】
ここで、ディスクアダプタ４００から記憶デバイス５００にデータを書き込む処理について図９を参照しながら概要を説明する。図９に示す処理は、図８のＳ８０６の処理によって、共有メモリ３００のメッセージエリア３１０にデータの書き込み指示を含むメッセージが登録された後に実行される。
【００８２】
図９は、本発明の第１の実施の形態の記憶デバイス５００にデータを書き込む処理の流れを説明する図である。なお、太線矢印は、データの流れを示している。
【００８３】
図９に示す図では、チャネルアダプタ１００によって記憶デバイスＤ１（５００Ａ）に対するデータの書き込み要求を受け付け、キャッシュ２００に書き込みデータが格納された状態となっている（Ｓ９０１）。
【００８４】
ＭＰＤ１（４３０Ａ）は、共有メモリ３００にデータの書き込み要求を含むメッセージを検出すると、ＤＲＲ１（４４０Ａ）にパリティデータを作成するように指示する（Ｓ９０２）。
【００８５】
ＤＲＲ１（４４０Ａ）は、パリティデータを作成するために、記憶デバイス５００Ｂ（Ｄ２）及び記憶デバイス５００Ｃ（Ｄ３）に格納されたデータの取得を要求する。ＤＭＡ回路Ｄ２（４１０Ｂ）及びＤ３（４１０Ｃ）は、要求されたデータを読み出し、データが格納されていた記憶デバイスに対応するキャッシュ２００の領域Ｄ２及びＤ３に読み出されたデータを書き込む（Ｓ９０３）。
【００８６】
ＤＲＲ１（４４０Ａ）は、キャッシュ２００に格納されたデータを取得し（Ｓ９０４）、パリティデータを作成する。そして、作成されたパリティデータをキャッシュ２００の対応する領域Ｐ１に書き込む（Ｓ９０５）。
【００８７】
最後に、ＤＭＡ回路Ｄ１（４１０Ａ）は、記憶デバイスＤ１（５００Ａ）に書き込みデータを書き込む（Ｓ９０６）。さらに、ＤＭＡ回路Ｄ４（４１０Ｄ）は、作成されたパリティデータを対応する記憶デバイスＰ１（５００Ｄ）に書き込む（Ｓ９０７）。
【００８８】
図１０では、図９において説明した各手順をフローチャートに示し、さらに詳しく説明する。
【００８９】
図１０は、本発明の第１の実施の形態のキャッシュ２００に記憶されたデータを記憶デバイス５００に格納するために、共有メモリ３００にメッセージを書き込む手順を示すフローチャートである。
【００９０】
ディスクアダプタ４００のＭＰＤ１（４３０Ａ）は、周期的に、ＭＰＤ１（４３０Ａ）によって管理される記憶デバイス５００に対するデータの書き込み指示を含むメッセージが共有メモリ３００に含まれているか否かを判定する（Ｓ１００１）。ここでは、記憶デバイスＤ１（５００Ａ）に対する書き込み指示を含むメッセージが共有メモリ３００に含まれているか否かを判定する。共有メモリ３００にデータの書き込み指示が含まれていない場合には（Ｓ１００１の結果が「Ｎ」）、データの書き込み指示を含むメッセージが共有メモリ３００に登録されるまで待機する。
【００９１】
ＭＰＤ１（４３０Ａ）は、共有メモリ３００に書き込み指示を含むメッセージが含まれている場合には（Ｓ１００１の結果が「Ｙ」）、データの書き込みによって変更されるパリティデータを更新するために、記憶デバイスＤ２（５００Ｂ）及びＤ３（５００Ｃ）に格納された対応するデータをキャッシュ２００に読み出す（Ｓ１００２）。具体的には、書き込みデータに対応する記憶デバイスＤ２（５００Ｂ）及びＤ３（５００Ｃ）に格納されたデータをキャッシュ２００に読み出すための読み出し指示メッセージを共有メモリ３００に書き込む。
【００９２】
ＭＰＤ１（４３０Ａ）は、Ｓ１００２の処理で共有メモリ３００に書き込まれた読み出し指示メッセージに基づいて、ＭＰＤ２（４３０Ｂ）及びＭＰＤ３（４３０Ｃ）によってキャッシュ２００に記憶デバイスＤ２（５００Ｂ）及びＤ３（５００Ｃ）に格納されたデータが書き込まれるまで待機する（Ｓ１００３）。記憶デバイスＤ２（５００Ｂ）及びＤ３（５００Ｃ）に格納されたデータが書き込まれると、ＭＰＤ１（４３０Ａ）は、ＤＲＲ１（４４０Ａ）にパリティデータの作成を指示する（Ｓ１００４）。
【００９３】
ＤＲＲ１（４４０Ａ）は、Ｓ１００４の処理で指示された内容に基づいて、キャッシュ２００の領域Ｄ１、Ｄ２及びＤ３に格納されたデータを読み出し、パリティデータを作成する。さらに、作成されたパリティデータをキャッシュ２００の領域Ｐ１に書き込むように指示する（Ｓ１００５）。
【００９４】
ＭＰＤ１（４３０Ａ）は、キャッシュ２００の領域Ｄ１及び領域Ｐ１に格納されたデータを記憶デバイス５００Ａ及び５００Ｄに書き込むために、ＭＰＤ１（４３０Ａ）及びＭＰＤ４（４３０Ｄ）に対する書き込み指示を含むメッセージを共有メモリ３００に書き込む（Ｓ１００６）。
【００９５】
ＭＰＤ１（４３０Ａ）は、キャッシュ２００の領域Ｄ１及び領域Ｐ１に格納されたデータが記憶デバイス５００Ａ及び５００Ｄに書き込まれるまで待機する（Ｓ１００７）。データの書き込み完了後、Ｓ１００１の処理で取得された書き込み指示に対する書き込み完了を示すメッセージを共有メモリ３００に書き込む（Ｓ１００８）。
【００９６】
図１１は、本発明の第１の実施の形態の共有メモリ３００に記憶されたメッセージに基づいて、記憶デバイス５００に記憶されたデータをキャッシュ２００に読み出すための手順を示すフローチャートである。
【００９７】
本処理は、パリティデータを作成する場合などに、記憶デバイス５００に格納されたデータをキャッシュ２００上に読み出す際に実行される。また、あらかじめ共有メモリ３００のメッセージエリア３１０にデータの読み出しに必要なメッセージが格納され、ディスクアダプタ４００のＭＰ４３０がメッセージを検出して本処理が実行される。
【００９８】
ＭＰＤｎ（ｎ：１〜４）４３０は、共有メモリ３００のメッセージエリア３１０に、ディスクアダプタ４００に対応する記憶デバイス５００に格納されたデータの読み出し指示を含むメッセージが含まれているか否かを判定する（Ｓ１００１）。
【００９９】
ＭＰＤｎ４３０は、データの読み出し指示を含むメッセージが含まれている場合には（Ｓ１００１の結果が「Ｙ」）、当該メッセージに基づいて、アドレス及び転送サイズを対応するＤＭＡ回路Ｄｎ４１０に設定する。さらに、記憶デバイス５００の識別子、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）及び転送サイズを対応するプロトコルチップＤｎに設定する（Ｓ１１０２）。
【０１００】
プロトコルチップＤｎ４２０は、設定された識別子の記憶デバイス５００のＬＢＡから設定された転送サイズ分のデータを転送する（Ｓ１１０３）。
【０１０１】
ＤＭＡ回路Ｄｎ４１０は、プロトコルチップＤｎ４２０から転送されたデータを、設定されたキャッシュ２００のアドレスに転送する（Ｓ１１０４）。
【０１０２】
ＭＰＤｎ４３０は、データの読み出し完了後、Ｓ１１０１の処理で取得された読み出し指示に対する読み出し完了を示すメッセージを共有メモリ３００に書き込む（Ｓ１１０５）。
【０１０３】
図１２は、本発明の第１の実施の形態の共有メモリ３００に記憶されたメッセージに基づいて、キャッシュ２００に記憶されたデータを記憶デバイス５００に書き込む手順を示すフローチャートである。
【０１０４】
本処理は、図１０のＳ９０６の処理によって、共有メモリ３００のメッセージエリア３１０に含まれる書き込み指示を含むメッセージに基づいて処理される。
【０１０５】
ＭＰＤｎ４３０は、キャッシュ２００に格納されたデータの記憶デバイス５００に対する書き込み指示を含むメッセージが共有メモリ３００のメッセージエリア３１０に含まれているか否かを判定する（Ｓ１２０１）。
【０１０６】
ＭＰＤｎ４３０は、記憶デバイス５００への書き込み指示を含むメッセージが含まれている場合には（Ｓ１２０１の結果が「Ｙ」）、当該メッセージに基づいて、書き込みデータをキャッシュ２００から読み出す。そして、対応する記憶デバイス５００にデータを書き込むために、ＤＭＡ回路Ｄｎ４１０にアドレス及び転送サイズを設定し、プロトコルチップＤｎ４２０への転送を指示する。さらに、プロトコルチップＤｎ４２０にデータを書き込む記憶デバイス５００の識別子、ＬＢＡ及び転送サイズを設定し、記憶デバイス５００への転送を指示する（Ｓ１２０２）。
【０１０７】
ＤＭＡ回路Ｄｎ４１０は、Ｓ１２０２の処理で設定されたキャッシュ２００のアドレスに基づいて、領域Ｄｎ又はＰ１に格納された転送数分のデータを読み出し、プロトコルチップＤｎ４２０に転送する（Ｓ１２０３）。
【０１０８】
プロトコルチップＤｎ４２０は、ＤＭＡ回路Ｄｎ４１０から転送データを受け取ると、Ｓ１２０２の処理で設定された転送サイズ分のデータを、設定された記憶デバイス５００及び設定されたＬＢＡに基づいて転送する（Ｓ１２０４）。
【０１０９】
ＭＰＤｎ４３０は、共有メモリ３００のメッセージエリア３１０に記憶デバイス５００への書き込みの完了を示すメッセージを書き込む（Ｓ１２０５）。
【０１１０】
本発明の第１の実施の形態では、記憶デバイス５００がＳＳＤであるため、データを格納する領域を一旦消去し、その後、データを書き込む。ＭＰＤｎ４３０は、記憶デバイス５００へのデータの書き込みが完了すると、データが書き込まれた記憶デバイス５００に対応するドライブ情報テーブル３６０のエントリの消去回数３６５を更新する（Ｓ１２０６）。消去回数３６５を更新する手順については、図１３を参照しながら説明する。
【０１１１】
図１３は、本発明の第１の実施の形態のドライブ情報テーブル３６０の消去回数３６５を更新する手順を示すフローチャートである。
【０１１２】
ＭＰＤｎ４３０は、まず、書き込みのあった記憶デバイス５００に対応する消去回数３６５をドライブ情報テーブル３６０から取得する（Ｓ１３０１）。続いて、書き込みのあった記憶デバイス５００に対応する消去単位３６６をドライブ情報テーブル３６０から取得する（Ｓ１３０２）。
【０１１３】
ＳＳＤでは、前述したようにデータを書き込む場合に、所定の単位（消去単位３６６）の領域が消去される。したがって、記憶デバイス５００に設定された転送長のデータが書き込まれる場合には、書き込みデータの転送長を消去単位３６６で除算した回数（小数点以下切り上げ）だけ消去が実行される。そこで、ＭＰＤｎ４３０は、書き込みデータの転送長を消去単位３６６で除算し、小数点以下を切り上げた回数を実消去回数として算出する（Ｓ１３０３）。さらに、算出された実消去回数を消去回数３６５に加算し、新たな消去回数３６５として更新する（Ｓ１３０４）。
【０１１４】
ここで、図１２のフローチャートの説明に戻る。
【０１１５】
ＭＰＤｎ４３０は、更新された消去回数３６５をしきい値Ｎ２（３５５）と比較する（Ｓ１２０７）。しきい値Ｎ２（３５５）は、前述したように、ＲＡＩＤグループごとに設定された値であって、記憶デバイス５００の消去回数がしきい値Ｎ２（３５５）を超えるごとにスペア記憶デバイス５５０に移行させることによって（ダイナミックスペアリング）、ＲＡＩＤグループを構成する記憶デバイス５００の消去回数を平準化させる。したがって、更新された消去回数３６５がしきい値Ｎ２（３５５）を超えた場合には（Ｓ１２０７の結果が「Ｙ」）、ダイナミックスペアリングを実行する。
【０１１６】
ＭＰＤｎ４３０は、ダイナミックスペアリングを実行する前に、ダイナミックスペアリングを実行する対象の記憶デバイス５００が既にダイナミックスペアリングを実行中であるか否かを判定する（Ｓ１２０８）。ダイナミックスペアリングの実行中の記憶デバイス５００が更新され、再びダイナミックスペアリングの対象となる可能性があるためである。ダイナミックスペアリングが実行中である場合には（Ｓ１２０８の結果が「Ｙ」）、本処理を終了する。
【０１１７】
ＭＰＤｎ４３０は、更新された消去回数３６５がしきい値Ｎ２（３５５）を超え、かつ、ダイナミックスペアリングが実行中でない場合には（Ｓ１２０８の結果が「Ｎ」）、実際にダイナミックスペアリングを実行する（Ｓ１２０９）。
【０１１８】
ダイナミックスペアリングの詳細については、図１４及び図１５を参照しながら説明する。
【０１１９】
図１４は、本発明の第１の実施の形態のダイナミックスペアリング実行時のデータの流れを説明する図である。
【０１２０】
図１４では、一例として、記憶デバイスＤ２（５００Ｂ）をスペア記憶デバイス５５０にコピーするダイナミックスペアリングを実行する場合について示している。
【０１２１】
ダイナミックスペアリングが実行されると、まず、記憶デバイスＤ２（５００Ｂ）に格納されたデータがキャッシュ２００の領域Ｄ２に格納される。続いて、スペア記憶デバイス５５０を制御するＤＭＡ回路４１０Ａによってキャッシュ２００の領域Ｄ２に格納されたデータがスペア記憶デバイス５５０に転送される。
【０１２２】
図１５は、本発明の第１の実施の形態のダイナミックスペアリングの手順を示すフローチャートである。
【０１２３】
ＭＰＤ１（４３０Ａ）は、まず、ダイナミックスペアリングの対象となる記憶デバイス５００に対応するドライブ情報テーブル３６０のエントリを更新する（Ｓ１５０１）。具体的には、ドライブＩＤ３６１が「ＤＲＶ１−２」の記憶デバイスＤ２（５００Ｂ）のドライブ属性３６３を「コピー元」に変更し、ドライブＩＤ３６１が「ＤＲＶ１６−１」のスペア記憶デバイス５５０のドライブ属性３６３を「コピー先」に変更する。さらに、ドライブＩＤ３６１が「ＤＲＶ１−２」のコピー関連ＩＤ３６４を「ＤＲＶ１６−１」に、ドライブＩＤ３６１が「ＤＲＶ１６−１」のコピー関連ＩＤ３６４を「ＤＲＶ１−２」に変更する。
【０１２４】
ＭＰＤ１（４３０Ａ）は、次に、記憶デバイスＤ２（５００Ｂ）のデータをスペア記憶デバイス５５０にコピーするために、共有メモリ３００のメッセージエリア３１０にメッセージを書き込む（Ｓ１５０２）。書き込まれるメッセージには、ＭＰＤ２（４３０Ｂ）に対し、記憶デバイスＤ２（５００Ｂ）に格納されたデータをキャッシュ２００に読み込む指示が含まれる。
【０１２５】
ＭＰＤ１（４３０Ａ）は、ＭＰＤ２（４３０Ｂ）によるキャッシュ２００への読み出しが終了するまで待機する（Ｓ１５０３）。そして、キャッシュ２００へのデータの読み出しが終了した後（Ｓ１５０３の結果が「Ｙ」）、スペア記憶デバイス５５０にキャッシュ２００に読み出されたデータを書き込むために、共有メモリ３００のメッセージエリア３１０に書き込み指示を含むメッセージを書き込む（Ｓ１５０４）。
【０１２６】
ＭＰＤ１（４３０Ａ）は、スペア記憶デバイス５５０へのデータの書き込みが終了するまで待機する（Ｓ１５０５）。そして、スペア記憶デバイス５５０へのデータの書き込みが終了すると（Ｓ１５０５の結果が「Ｙ」）、ＲＡＩＤグループ情報テーブル３５０のコピーポインタ３５４を更新する（Ｓ１５０６）。
【０１２７】
さらに、ＭＰＤ１（４３０Ａ）は、すべてのデータのコピーが完了するまで、Ｓ１５０２からＳ１５０６までの処理を実行する（Ｓ１５０７）。
【０１２８】
ＭＰＤ１（４３０Ａ）は、すべてのデータのコピーが完了すると（Ｓ１５０７の結果がＹ」）、ＲＡＩＤグループ情報テーブル３５０のドライブＩＤ（３５７〜３５９）の値を更新する（Ｓ１５０８）。具体的には、ドライブＩＤ２（３５８）の値をスペア記憶デバイスであった「ＤＲＶ１６−１」に更新する。さらに、ドライブ情報テーブル３６０のドライブ状態３６２、ドライブ属性３６３及びコピー関連ＩＤ３６４を更新する。同様に、スペア記憶デバイス５５０に対応するＲＡＩＤグループ番号３５１が「Ｓｐａｒｅ」のＤＲＶＩＤ１（３５７）を「ＤＲＶ２−１」に更新する。
【０１２９】
最後に、ＭＰＤ１（４３０Ａ）は、ＲＡＩＤグループ情報テーブル３５０のしきい値Ｎ２（３５５）を更新する（Ｓ１５０９）。具体的には、しきい値Ｎ２＝しきい値Ｎ２＋（しきい値Ｎ１（３８０）÷構成ドライブ台数（３５６））となる。このように、ダイナミックスペアリングが完了するたびに段階的にしきい値を大きくすることによって、ストレージシステム２０に含まれるすべての記憶デバイス５００に対してダイナミックスペアリングが実行された場合であっても、消去回数の大きい記憶デバイス５００に対してダイナミックスペアリングを実行することができる。
【０１３０】
ここで、ダイナミックスペアリング実行中の記憶デバイス５００に対するデータの書き込み処理について説明する。ダイナミックスペアリング実行中であっても、図８に示したフローチャート及び図１０に示したフローチャートのＳ１００５までの処理、すなわち、データの書き込む要求を受け付けて、キャッシュ２００にパリティデータを書き込むまでの処理は通常の場合と同じである。
【０１３１】
ＭＰＤ１（４３０Ａ）は、キャッシュ２００に記憶されたパリティデータを記憶デバイス５００に格納するために、共有メモリ３００のメッセージエリア３１０にデータの書き込み指示を含むメッセージを書き込む。具体的には、ＭＰＤ４（４３０Ｄ）によって、キャッシュ２００に記憶されたパリティデータが記憶デバイスＰ１（５００Ｄ）に書き込まれるように、共有メモリ３００のメッセージエリア３１０にメッセージを書き込む。
【０１３２】
次に、ＭＰＤ１（４３０Ａ）は、キャッシュ２００の領域Ｄ１に格納されたデータを書き込むアドレスを計算し、ＲＡＩＤグループ情報テーブル３５０のコピーポインタ３５４と比較する。
書き込むアドレスがコピーポインタよりも小さい場合には、領域Ｄ１に格納されたデータを記憶デバイスＤ１（５００Ａ）及びスペア記憶デバイス５５０の両方に書き込むように、共有メモリ３００のメッセージエリア３１０メッセージを書き込む。書き込まれるメッセージには、記憶デバイスＤ１（５００Ａ）及びスペア記憶デバイス５５０を制御するＭＰＤ１（４３０Ａ）に対し、記憶デバイスＤ１（５００Ａ）及びスペア記憶デバイス５５０の両方にデータを書き込むように指示する内容が含まれる。
【０１３３】
以降の処理については、図１０に示したフローチャートのＳ１００７以降の処理、図１１及び図１２のフローチャートに示した通常の手順と同じである。
【０１３４】
最後に、記憶デバイス５００を交換する手順について説明する。記憶デバイス５００を交換する場合、交換された記憶デバイス５００を含むＲＡＩＤグループでは、しきい値Ｎ２を交換前と同じ値にすると、ダイナミックスペアリングが実行されにくくなり、記憶デバイス５００間で消去回数のばらつきが大きくなる可能性がある。そこで、交換された記憶デバイス５００を含むＲＡＩＤグループのしきい値Ｎ２を初期化することによって、記憶デバイス５００の消去回数を平準化するようにする。
【０１３５】
図１６は、本発明の第１の実施の形態のストレージシステムに含まれる記憶デバイスを交換する手順を示すフローチャートである。
【０１３６】
ＭＰＤ１（４３０Ａ）は、記憶デバイス５００を交換するために取り外す記憶デバイス５００が指定されると、ドライブ情報テーブル３６０の指定された記憶デバイスに対応するエントリのドライブ状態３６２を「閉塞」に更新する（Ｓ１６０１）。取り外す記憶デバイス５００は、障害が発生した場合であってもよいし、消去回数が所定の回数を超えた記憶デバイス５００が取り外し対象として指定される。
【０１３７】
ＭＰＤ１（４３０Ａ）は、さらに、ネットワーク４０を介して、保守端末３０に指定された記憶デバイスを交換するように通知する。そして、保守端末３０を参照した保守員などによって、指定された記憶デバイス５００が取り外され、新たな記憶デバイス５００に交換される（Ｓ１６０２）。
【０１３８】
ＭＰＤ１（４３０Ａ）は、指定された記憶デバイス５００の交換が完了すると、対応する記憶デバイスのドライブ状態３６２を「Ｎｏｒｍａｌ」に更新する（Ｓ１６０３）。
【０１３９】
最後に、ＭＰＤ１（４３０Ａ）は、交換された記憶デバイス５００が属するＲＡＩＤグループのしきい値Ｎ２（３５５）を更新する（Ｓ１６０４）。具体的には、しきい値Ｎ１（３８０）を、ＲＡＩＤグループを構成する記憶デバイスの台数で除算した値にしきい値Ｎ２（３５５）を初期化する。
【０１４０】
本発明の第１の実施の形態によれば、書き込み回数の多い記憶デバイスに格納されたデータをスペア記憶デバイスに移行させるダイナミックスペアリングを実行することによって、記憶デバイス間の書き込み回数（消去回数）を平準化させることができる。したがって、ＳＳＤのように書き込み回数に制限がある記憶デバイスであっても、各記憶デバイスの寿命を平準化させることができ、ストレージシステム全体の長寿命化を図ることができる。
【０１４１】
また、本発明の第１の実施の形態によれば、各記憶デバイスの寿命を平準化させることによって、記憶デバイスの交換頻度を少なくすることが可能となり、運用コストを抑えることができる。
【０１４２】
さらに、本発明の第１の実施の形態によれば、ＲＡＩＤグループごとにダイナミックスペアリングを実行するための基準となるしきい値を設定し、段階的にしきい値を大きくすることによって、書き込み頻度の多いＲＡＩＤグループに過剰にダイナミックスペアリングが実行されることを防ぐことができる。同様に、ＲＡＩＤグループ内の特定の記憶デバイスに書き込みが集中する場合にであっても、ＲＡＩＤグループごとにしきい値が段階的に大きくなるため、特定の記憶デバイスに過剰にダイナミックスペアリングが実行されることを防ぐことができる。
【０１４３】
（第２の実施の形態）
本発明の第１の実施の形態では、構成情報エリア３４０のドライブ情報テーブル３６０に記憶デバイス５００ごとの消去回数が記録される構成としていたが、第２の実施の形態では、記憶デバイス５００の内部で消去回数を記憶可能な場合について説明する。
【０１４４】
本発明の第２の実施の形態では、各記憶デバイス５００が消去回数を記録するため、データの書き込み処理と独立して周期的に記憶デバイス５００の消去回数をディスクアダプタ４００が収集し、ダイナミックスペアリングを実行することができる。なお、収集された記憶デバイス５００ごとの消去回数は、構成情報エリア３４０に含まれるドライブ情報テーブル３６０に記憶される。
【０１４５】
なお、第２の実施の形態において、第１の実施の形態と共通する内容については適宜説明を省略する。
【０１４６】
図１７は、本発明の第２の実施の形態の構成情報エリア３４０に各記憶デバイス５００の消去回数を記憶する手順を説明する図である。
【０１４７】
ＭＰＤ１（４３０Ａ）は、ＲＡＩＤグループごとに、各記憶デバイス５００の内部に記憶された消去回数を周期的にドライブ情報テーブル３６０の対応するエントリを更新するように指示する。具体的には、ＭＰＤ１（４３０Ａ）がメッセージエリア３１０に消去回数を更新する指示を含むメッセージを書き込み、ディスクアダプタ４００に含まれるＭＰ４３０が管理する記憶デバイス５００の消去回数を取得し、ドライブ情報テーブル３６０の対応するエントリを更新する。
【０１４８】
図１８は、本発明の第２の実施の形態のダイナミックスペアリングを実行する手順を示すフローチャートである。
【０１４９】
ＭＰＤ１（４３０Ａ）は、一定周期が経過したか否かを判定する（Ｓ１８０１）。一定周期が経過した場合には（Ｓ１８０１の結果が「Ｙ」）、Ｓ１８０２以降の処理を実行し、ダイナミックスペアリングを実行するか否かを判定する。
【０１５０】
ＭＰＤ１（４３０Ａ）は、記憶デバイスＤ１、Ｄ２、Ｄ３及びＰ１（５００Ａ〜５００Ｄ）が接続されているＭＰＤ１〜Ｄ４（４３０Ａ〜４３０Ｄ）に各記憶デバイスの消去回数を取得するために、共有メモリ３００のメッセージエリア３１０に消去回数の読み込み指示を含むメッセージを書き込む（Ｓ１８０２）。
【０１５１】
ＭＰＤ１（４３０Ａ）は、共有メモリ３００にＭＰＤ１〜ＭＰＤ４（４３０Ａ〜４３０Ｄ）によって消去情報が読み出されるまで待機する（Ｓ１８０３）。ＭＰＤ１（４３０Ａ）は、すべての記憶デバイス５００の消去回数の読み出しが完了した場合には（Ｓ１８０３の結果が「Ｙ」）、ドライブ情報テーブル３６０の消去回数３６５と、ＲＡＩＤグループ情報テーブル３５０のしきい値Ｎ２（３５５）とを比較する（Ｓ１８０４）。
【０１５２】
ＭＰＤ１（４３０Ａ）は、消去回数がしきい値Ｎ２（３５５）を超える記憶デバイス５００がＲＡＩＤグループに含まれる場合には（Ｓ１８０５の結果が「Ｙ」）、当該記憶デバイス５００に対してダイナミックスペアリングが実行中であるか否かを判定する（Ｓ１８０６）。当該記憶デバイス５００がダイナミックスペアリング実行中でない場合には（Ｓ１８０６の結果が「Ｎ」）、図１５に示したフローチャートに従って、ダイナミックスペアリングを実行する（Ｓ１８０７）。
【０１５３】
なお、スペア記憶デバイス５５０は、ストレージシステム２０に共通のスペア記憶デバイス５５０を設けるようにしてもよいし、ＲＡＩＤグループごとにスペア記憶デバイス５５０を設けることによって、ＲＡＩＤグループごとにスペア記憶デバイス５５０を含めた消去回数の平準化を行うようにしてもよい。
【０１５４】
本発明の第２の実施の形態によれば、第１の実施の形態と同様に、ＲＡＩＤグループ単位で書き込み回数を平準化させることができる。さらに、データの書き込み時と独立してダイナミックスペアリングを実行させることができるため、データの書き込み時の負荷を抑制することができる。
【０１５５】
（第３の実施の形態）
本発明の第２の実施の形態では、ＲＡＩＤグループごとにダイナミックスペアリングを実行したが、第３の実施の形態では、記憶デバイス５００が属するＲＡＩＤグループに関わらず書き込み回数の大きい記憶デバイス５００に対してダイナミックスペアリングが実行される。
【０１５６】
また、第３の実施の形態では、第２の実施の形態と同様に、各記憶デバイス５００で消去回数が記憶され、データの書き込み処理と独立してダイナミックスペアリングが実行される。
【０１５７】
なお、第３の実施の形態において、第１の実施の形態及び第２の実施の形態と共通する内容については適宜説明を省略する。
【０１５８】
図１９は、本発明の第３の実施の形態の構成情報エリア３４０に各記憶デバイス５００の消去回数を記憶する手順を説明する図である。
【０１５９】
ＭＰＤ１（４３０Ａ）は、第２の実施の形態（図１７）と同様に、各記憶デバイス５００の内部に記憶された消去回数を周期的にドライブ情報テーブル３６０の対応するエントリを更新するように指示する。本発明の第３の実施の形態では、ＲＡＩＤグループに関わらず、ストレージシステム２０に含まれる記憶デバイス５００の消去回数がそれぞれ更新する。
【０１６０】
図２０は、本発明の第３の実施の形態のダイナミックスペアリングを実行する手順を示すフローチャートである。
【０１６１】
ＭＰＤ１（４３０Ａ）は、まず、一定周期が経過したか否かを判定する（Ｓ２００１）。一定周期が経過した場合には（Ｓ２００１の結果が「Ｙ」）、Ｓ２００２以降の処理を実行し、ダイナミックスペアリングを実行するか否かを判定する。
【０１６２】
ＭＰＤ１（４３０Ａ）は、すべての記憶デバイス５００が接続されているＭＰＤ１〜Ｄ４（４３０Ａ〜４３０Ｄ）に各記憶デバイス５００の消去回数を取得するために、共有メモリ３００のメッセージエリア３１０に消去回数の読み込み指示を含むメッセージを書き込む（Ｓ２００２）。
【０１６３】
ＭＰＤ１（４３０Ａ）は、共有メモリ３００に各ＭＰ４３０によって消去回数が取得されるまで待機する（Ｓ２００３）。ＭＰＤ１（４３０Ａ）は、すべての記憶デバイス５００の消去回数の取得が完了した場合には（Ｓ２００３の結果が「Ｙ」）、記憶デバイス５００ごとの消去回数を比較する（Ｓ２００４）。
【０１６４】
ＭＰＤ１（４３０Ａ）は、まず、スペア記憶デバイス５５０の消去回数が、各ＭＰ４３０によって読み出された記憶デバイス５００の消去回数の中で最大か否かを判定する（Ｓ２００５）。スペア記憶デバイス５５０の消去回数が最大の場合には（Ｓ２００５の結果が「Ｙ」）、ダイナミックスペアリングを実行せずに、本処理を終了する。
【０１６５】
一方、ＭＰＤ１（４３０Ａ）は、スペア記憶デバイス５５０の消去回数が最大でない場合には（Ｓ２００５の結果が「Ｎ」）、読み出された消去回数の最大値と最小値の差をしきい値Ｎ３（３９０）と比較する（Ｓ２００６）。
【０１６６】
ＭＰＤ１（４３０Ａ）は、各記憶デバイス５００の消去回数の最大値と最小値の差がしきい値Ｎ３（３９０）以下の場合には（Ｓ２００６の結果が「Ｎ」）、各記憶デバイス５００の消去回数の差が小さく平準化されていると判断することができるため、本処理を終了する。
【０１６７】
ＭＰＤ１（４３０Ａ）は、各記憶デバイスの消去回数の最大値と最小値の差がしきい値Ｎ３（３９０）よりも大きい場合には（Ｓ２００６の結果が「Ｙ」）、各記憶デバイスの消去回数が平準化されていないため、ダイナミックスペアリングを実行する。
【０１６８】
ＭＰＤ１（４３０Ａ）は、スペア記憶デバイス５５０の消去回数が最小であるか否かを判定する（Ｓ２００７）。スペア記憶デバイス５５０の消去回数が最小の場合には（Ｓ２００７の結果が「Ｙ」）、消去回数が最大の記憶デバイス５００との間でダイナミックスペアリングを実行する（Ｓ２００９）。
【０１６９】
一方、ＭＰＤ１（４３０Ａ）は、スペア記憶デバイス５５０の消去回数が最小でない場合には（Ｓ２００７の結果が「Ｎ」）、消去回数が最小の記憶デバイスと最大の記憶デバイスとの間でダイナミックスペアリングを実行するために、まず、消去回数が最小の記憶デバイス５００とスペア記憶デバイス５５０との間でダイナミックスペアリングを実行する（Ｓ２００８）。その後、スペア記憶デバイス５５０と消去回数が最大の記憶デバイス５００との間でダイナミックスペアリングを実行する（Ｓ２００９）。例えば、記憶デバイスＤ２（５００Ｂ）の消去回数が最大、記憶デバイスＤ１（５００Ａ）の消去回数が最小の場合には、まず、記憶デバイスＤ１（５００Ａ）とスペア記憶デバイス５５０との間でダイナミックスペアリングを実行する。その結果、記憶デバイスＤ１（５００Ａ）に格納されたデータがスペア記憶デバイス５５０に格納され、構成情報エリア３４０に格納された情報が更新される。さらに、もともと記憶デバイスＤ１であったスペア記憶デバイスと記憶デバイスＤ２（５００Ｂ）との間でダイナミックスペアリングを実行することによって、記憶デバイスＤ１（５００Ａ）と記憶デバイスＤ２（５００Ｂ）との間でダイナミックスペアリングを実行することができる。
【０１７０】
なお、ＲＡＩＤグループごとに設定されたしきい値Ｎ２に基づくダイナミックスペアリングを並行して実行するようにしてもよいし、しきい値Ｎ２を十分に大きな値に設定することによって、記憶デバイス５００の消去回数の最大値と最小値に基づくダイナミックスペアリングのみが実行されるようにしてもよい。
【０１７１】
本発明の第３の実施の形態によれば、第１の実施の形態の効果に加え、ストレージシステムに搭載されるすべての記憶デバイスを対象に書き込み回数を平準化することができるため、ストレージシステムの寿命をさらに延長させることができる。
【図面の簡単な説明】
【０１７２】
【図１】本発明の第１の実施の形態の計算機システムの構成を示す図である。
【図２】本発明の第１の実施の形態の共有メモリに格納された情報を示す図である。
【図３】本発明の第１の実施の形態のメッセージテーブルの一例を示す図である。
【図４】本発明の第１の実施の形態の要求応答内容テーブルの一例を示す図である。
【図５】本発明の第１の実施の形態のＲＡＩＤグループ情報テーブルの一例を示す図である。
【図６】本発明の第１の実施の形態のドライブ情報テーブルの一例を示す図である。
【図７】本発明の第１の実施の形態のディスクアダプタの構成の一例を示す図である。
【図８】本発明の第１の実施の形態のホスト計算機からデータの書き込み要求を受け付け、記憶デバイスにデータを書き込む手順を示すフローチャートである。
【図９】本発明の第１の実施の形態の記憶デバイスにデータを書き込む処理の流れを説明する図である。
【図１０】本発明の第１の実施の形態のキャッシュに記憶されたデータを記憶デバイスに格納するために、共有メモリにメッセージを書き込む手順を示すフローチャートである。
【図１１】本発明の第１の実施の形態の共有メモリに記憶されたメッセージに基づいて、記憶デバイスに記憶されたデータをキャッシュに読み出す手順を示すフローチャートである。
【図１２】本発明の第１の実施の形態の共有メモリに記憶されたメッセージに基づいて、キャッシュに記憶されたデータを記憶デバイスに書き込む手順を示すフローチャートである。
【図１３】本発明の第１の実施の形態のドライブ情報テーブルの消去回数を更新する手順を示すフローチャートである。
【図１４】本発明の第１の実施の形態のダイナミックスペアリング実行時のデータの流れを説明する図である。
【図１５】本発明の第１の実施の形態のダイナミックスペアリングの手順を示すフローチャートである。
【図１６】本発明の第１の実施の形態のストレージシステムに含まれる記憶デバイスを交換する手順を示すフローチャートである。
【図１７】本発明の第２の実施の形態の構成情報エリアに各記憶デバイスの消去回数を記憶する手順を説明する図である。
【図１８】本発明の第２の実施の形態のダイナミックスペアリングを実行する手順を示すフローチャートである。
【図１９】本発明の第３の実施の形態の構成情報エリアに各記憶デバイスの消去回数を記憶する手順を説明する図である。
【図２０】本発明の第３の実施の形態のダイナミックスペアリングを実行する手順を示すフローチャートである。
【符号の説明】
【０１７３】
１０    ホスト計算機
２０    ストレージシステム
３０    保守端末
４０    ネットワーク
１００    チャネルアダプタ
１１０    プロトコルチップ
１２０    ＤＭＡ回路
１３０    ＭＰ
２００    キャッシュ
３００    共有メモリ
３１０    メッセージエリア
３２０    メッセージテーブル
３３０    要求応答内容テーブル
３４０    構成情報エリア
３５０    ＲＡＩＤグループ情報テーブル
３６０    ドライブ情報テーブル
３７０    値エリア
４００    ディスクアダプタ
４１０    ＤＭＡ回路
４２０    プロトコルチップ
４３０    ＭＰ
４４０    ＤＲＲ
５００    記憶デバイス
５５０    スペア記憶デバイス
【図１】
2010055247.tif 000003
【図２】
2010055247.tif 000004
【図３】
2010055247.tif 000005
【図４】
2010055247.tif 000006
【図５】
2010055247.tif 000007
【図６】
2010055247.tif 000008
【図７】
2010055247.tif 000009
【図８】
2010055247.tif 000010
【図９】
2010055247.tif 000011
【図１０】
2010055247.tif 000012
【図１１】
2010055247.tif 000013
【図１２】
2010055247.tif 000014
【図１３】
2010055247.tif 000015
【図１４】
2010055247.tif 000016
【図１５】
2010055247.tif 000017
【図１６】
2010055247.tif 000018
【図１７】
2010055247.tif 000019
【図１８】
2010055247.tif 000020
【図１９】
2010055247.tif 000021
【図２０】
2010055247.tif 000022