(57)【特許請求の範囲】
【請求項１】
冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、前記予備領域の数よりも多くの記憶装置が故障した場合、前記複数の情報領域と前記１つ以上の予備領域との複数の組み合わせに含まれる故障した第１の記憶装置の複数の情報領域に対する復元処理において故障していない特定の複数の記憶装置から情報が読み出される回数と、前記復元処理において前記特定の複数の記憶装置に復元された情報が書き込まれる回数とに基づいて、各記憶装置の平均アクセス回数を求め、前記平均アクセス回数から、前記特定の複数の記憶装置のうち第２の記憶装置から情報が読み出される回数を減算することで、前記第２の記憶装置に復元された情報が書き込まれる回数を求め、前記特定の複数の記憶装置に復元された情報が書き込まれる回数から、前記第２の記憶装置から情報が読み出される回数を減算することで、前記第２の記憶装置に復元された情報を書き込むことが可能な回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数と前記第２の記憶装置に復元された情報を書き込むことが可能な回数とに基づいて、前記複数の組み合わせのうち１つの組み合わせに含まれる、前記第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先として、書き込み先記憶装置を決定する制御部、
を備えることを特徴とするストレージ制御装置。
【請求項２】
前記制御部は、前記第２の記憶装置に復元された情報を書き込むことが可能な回数に対する、前記第２の記憶装置に復元された情報が書き込まれる回数の比率に基づいて、前記書き込み先記憶装置を決定することを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、前記予備領域の数よりも多くの記憶装置が故障した場合、前記複数の情報領域と前記１つ以上の予備領域との複数の組み合わせに含まれる故障した第１の記憶装置の複数の情報領域に対する復元処理において故障していない特定の複数の記憶装置から情報が読み出される回数と、前記復元処理において前記特定の複数の記憶装置に復元された情報が書き込まれる回数とに基づいて、各記憶装置の平均アクセス回数を求め、
前記平均アクセス回数から、前記特定の複数の記憶装置のうち第２の記憶装置から情報が読み出される回数を減算することで、前記第２の記憶装置に復元された情報が書き込まれる回数を求め、
前記特定の複数の記憶装置に復元された情報が書き込まれる回数から、前記第２の記憶装置から情報が読み出される回数を減算することで、前記第２の記憶装置に復元された情報を書き込むことが可能な回数を求め、
前記第２の記憶装置に復元された情報が書き込まれる回数と前記第２の記憶装置に復元された情報を書き込むことが可能な回数とに基づいて、前記複数の組み合わせのうち１つの組み合わせに含まれる、前記第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先として、書き込み先記憶装置を決定する、
処理をコンピュータに実行させるストレージ制御プログラム。
【請求項４】
コンピュータが、
冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、前記予備領域の数よりも多くの記憶装置が故障した場合、前記複数の情報領域と前記１つ以上の予備領域との複数の組み合わせに含まれる故障した第１の記憶装置の複数の情報領域に対する復元処理において故障していない特定の複数の記憶装置から情報が読み出される回数と、前記復元処理において前記特定の複数の記憶装置に復元された情報が書き込まれる回数とに基づいて、各記憶装置の平均アクセス回数を求め、
前記平均アクセス回数から、前記特定の複数の記憶装置のうち第２の記憶装置から情報が読み出される回数を減算することで、前記第２の記憶装置に復元された情報が書き込まれる回数を求め、
前記特定の複数の記憶装置に復元された情報が書き込まれる回数から、前記第２の記憶装置から情報が読み出される回数を減算することで、前記第２の記憶装置に復元された情報を書き込むことが可能な回数を求め、
前記第２の記憶装置に復元された情報が書き込まれる回数と前記第２の記憶装置に復元された情報を書き込むことが可能な回数とに基づいて、前記複数の組み合わせのうち１つの組み合わせに含まれる、前記第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先として、書き込み先記憶装置を決定する、
ことを特徴とするストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法に関する。
【背景技術】
【０００２】
ストレージ装置の一例として、Redundant Array of Inexpensive Disks（ＲＡＩＤ）技術を利用したディスクアレイ装置が知られている。ディスクアレイ装置は、冗長化されたデータを複数のハードディスクドライブ（ＨＤＤ）に分散させて記憶することで、高速化と耐障害性を確保することができる。
【０００３】
ディスクアレイ装置は、例えば、複数のＨＤＤを含み、ディスクアレイ装置において冗長化されたデータを表す情報は、例えば、データ及びパリティを含む。以下の説明では、ディスクアレイ装置の各ＨＤＤを、単にディスクと記載することがある。
【０００４】
ディスクアレイ装置においていずれかのディスクが故障した場合、データの冗長性を利用して故障したディスク内の情報を復元するリビルド処理が行われる。リビルド処理に関する技術としては、例えば、以下のような技術が挙げられる。
【０００５】
ディスクシステムの空き領域を利用して障害ドライブのデータを回復する障害回復方法が知られている（例えば、特許文献１を参照）。この障害回復方法では、複数台のディスク装置を備えたディスクアレイ装置において、書込むべき一群のデータからそれらのデータのエラー訂正用のデータが生成され、一群の書込みデータとエラー訂正用データとが異なるディスク装置に分散して格納される。そして、障害を起こしたディスク装置のデータが、正常なディスク装置に保持された一群の書込みデータのうちの他のデータ及びエラー訂正用データから回復され、回復されたデータが正常なディスク装置の空き領域に分散して格納される。
【０００６】
磁気ディスクに障害が発生した場合、他の磁気ディスクに対するアクセス負荷によるデータ復旧処理の遅延を少なくするディスクアレイ装置も知られている（例えば、特許文献２を参照）。このディスクアレイ装置は、２種類のパリティデータと複数のデータ復旧方式と有し、単一磁気ディスク障害の場合、縮退した磁気ディスクと最大負荷の磁気ディスクとをデータ復旧処理への使用から外しえるデータ復旧方式を選択する。
【０００７】
２パリティ構成を有し、１ＨＤＤ障害時のコレクションリード時に復元元の使用パリティ及びデータをローテーションするディスクアレイ装置も知られている（例えば、特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−２３０９０３号公報
【特許文献２】特開２００５−３８２７１号公報
【特許文献３】特開２００６−２６０４４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来のディスクアレイ装置には、以下のような問題がある。
近年、ディスクの大容量化が進んでおり、リビルド処理により１台のディスクの情報を復元するまでの時間が著しく増加している。このため、リビルド処理の高速化が望まれている。
【００１０】
しかしながら、情報を格納する情報領域と予備領域とが配置された複数のディスクのうち、予備領域の数よりも多くのディスクが故障した場合に、リビルド処理を適切に行うことは容易ではない。
【００１１】
なお、かかる問題は、記憶装置としてＨＤＤを用いるディスクアレイ装置に限らず、他の記憶装置を用いるストレージ装置においても生ずるものである。
【００１２】
１つの側面において、本発明は、情報領域と予備領域とが配置された複数の記憶装置のうち、予備領域の数よりも多くの記憶装置が故障した場合に、情報を復元する際の記憶装置に対するアクセスを効率化することを目的とする。
【課題を解決するための手段】
【００１３】
１つの案では、ストレージ制御装置は制御部を含む。制御部は、冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、予備領域の数よりも多くの記憶装置が故障した場合、復元処理における書き込み先記憶装置を決定する。
【００１４】
復元処理は、複数の情報領域と１つ以上の予備領域との複数の組み合わせに含まれる、故障した第１の記憶装置の複数の情報領域に対する復元処理である。また、書き込み先記憶装置は、複数の組み合わせのうち１つの組み合わせに含まれる、第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先記憶装置である。
【００１５】
制御部は、復元処理において故障していない第２の記憶装置から情報が読み出される回数に基づいて、書き込み先記憶装置を決定する。
【発明の効果】
【００１６】
実施形態によれば、情報領域と予備領域とが配置された複数の記憶装置のうち、予備領域の数よりも多くの記憶装置が故障した場合に、情報を復元する際の記憶装置に対するアクセスを効率化することができる。
【図面の簡単な説明】
【００１７】
【図１】リビルド処理を示す図である。
【図２】データを分散させて格納するディスクアレイ装置を示す図である。
【図３】ＲＡＩＤ５（２＋１）の２つの冗長セットとＨＳ領域の配置パターンを示す図である。
【図４】ＲＡＩＤ５（２＋１）の２つの冗長セットとＨＳ領域とを分散させる配置パターンを示す図である。
【図５】変換テーブルを示す図である。
【図６Ａ】１台のディスクが故障した場合の復元対象を示す図（その１）である。
【図６Ｂ】１台のディスクが故障した場合の復元対象を示す図（その２）である。
【図７】ストレージ制御装置の構成図である。
【図８】ストレージ制御処理のフローチャートである。
【図９】ストレージシステムの構成図である。
【図１０Ａ】２台のディスクが故障した場合の復元対象を示す図（その１）である。
【図１０Ｂ】２台のディスクが故障した場合の復元対象を示す図（その２）である。
【図１１】書き込み先決定処理のフローチャートである。
【図１２Ａ】書き込み可能回数を求める処理を示す図（その１）である。
【図１２Ｂ】書き込み可能回数を求める処理を示す図（その２）である。
【図１３】書き込み回数を示す図である。
【図１４】書き込み可能回数に対する書き込み回数の比率を示す図である。
【図１５】Ｄｉｓｋ＃２に割り当てられた復元対象を示す図である。
【図１６】再計算された比率を示す図である。
【図１７】Ｄｉｓｋ＃４に割り当てられた復元対象を示す図である。
【図１８】４１個の復元対象の書き込み先ディスクを示す図である。
【図１９】４２個の復元対象の書き込み先ディスクを示す図である。
【図２０】ＲＡＩＤ６（３＋２）の２つの冗長セットとＨＳ領域とを分散させる配置パターンを示す図である。
【図２１】ｍｏｄ（５）加算及びｍｏｄ（５）乗算の表を示す図である。
【図２２】ＲＡＩＤ５（３＋１）の情報領域とＨＳ領域とを分散させる配置パターンを示す図である。
【図２３】４つの同じ整数を異なる整数に置き換えた配置パターンを示す図である。
【図２４】列内の整数を並べ替えた配置パターンを示す図である。
【図２５】ＧＦ（２２）加算及びＧＦ（２２）乗算の表を示す図である。
【図２６】元を整数に置き換えたＧＦ（２２）加算及びＧＦ（２２）乗算の表を示す図である。
【図２７】情報処理装置の構成図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１（Ａ）は、ＲＡＩＤ１のディスクアレイ装置において、ミラーリングされたディスク１０１−１及びディスク１０１−２のうちディスク１０１−１が故障した場合のリビルド処理の例を示している。この場合、故障していないディスク１０１−２から情報を読み出すリード処理と、予備のディスク１０２（ホットスペア：ＨＳ）に情報を書き込むライト処理とが共にボトルネックとなる。
【００１９】
１つのディスクから情報を読み出して１つのディスクにその情報を書き込む場合、リード処理及びライト処理のいずれの性能も、１ディスクのスループットを超えることはない。例えば、１ディスクのリード処理及びライト処理のスループットが共に１００Ｍバイト／ｓである場合、リビルド処理のスループットも最大で１００Ｍバイト／ｓである。
【００２０】
図１（Ｂ）は、ＲＡＩＤ５のディスクアレイ装置において、ディスク１１１−１〜ディスク１１１−４のうちディスク１１１−１が故障した場合のリビルド処理の例を示している。この場合、情報を読み出すディスクが３台であるのに対して、情報を書き込むディスクが１台であるため、ライト処理がボトルネックとなる。故障していないディスク１１１−２〜ディスク１１１−４からは並列に情報を読み出すことができるが、所定量の情報を復元するために、その３倍の量の情報が並列に読み出される。
【００２１】
例えば、１００Ｍバイトの情報を復元するためには、３台のディスクから１００Ｍバイトずつ、計３００Ｍバイトの情報が読み出される。１ディスクのリード処理及びライト処理のスループットが共に１００Ｍバイト／ｓである場合、１００Ｍバイト／ｓでディスク１１２に情報を書き込むために、ディスク１１１−２〜ディスク１１１−４の各々から１００Ｍバイト／ｓで情報が読み出される。このように、図１（Ｂ）のディスクアレイ装置においても、リビルド処理の性能は１ディスクのスループットを超えることはない。
【００２２】
図２は、図１のリビルド処理よりも高速に情報を復元できるディスクアレイ装置の例を示している。図２のディスクアレイ装置では、ＲＡＩＤ５（２＋１）の冗長化されたデータがディスク２０１−１〜ディスク２０１−７に分散させて格納される。ＲＡＩＤ５（ｎ＋１）は、分散させたｎ個のデータに対して１つのパリティが存在するＲＡＩＤ５のデータ構成（冗長セット）を示す。
【００２３】
ＳＥＣ１〜ＳＥＣ３は、データ及びパリティの３つの組に対応する情報領域を表し、ＨＳ領域は、復元された情報が書き込まれる予備領域を表す。情報領域及びＨＳ領域は、所定サイズの領域である。図２の例では、各組の冗長化されたデータに対応する３つの情報領域に１つのＨＳ領域を加えた４つの領域が、ディスク２０１−１〜ディスク２０１−７に分散して配置される。実際には、より多数の組の４つの領域が７つのディスクに均等に分散して配置される。
【００２４】
ここで、ディスク２０１−７が故障した場合、ディスク２０１−１〜ディスク２０１−６に格納された情報を用いてリビルド処理が行われ、復元された情報がディスク２０１−１〜ディスク２０１−６のいずれかのＨＳ領域に書き込まれる。この場合、各ディスクについて、読み出される情報領域の数と書き込まれるＨＳ領域の数の比は２：１となり、リード処理のスループットとライト処理のスループットの比も２：１となる。
【００２５】
１ディスクのリード処理及びライト処理のスループットが共に１００Ｍバイト／ｓである場合、図２の各ディスクのリード処理のスループットは、１００×（２／３）＝約６６Ｍバイト／ｓとなる。また、各ディスクのライト処理のスループットは、１００×（１／３）＝約３３Ｍバイト／ｓとなる。したがって、ライト処理がボトルネックとなり、各ディスクのリビルド処理のスループットは、３３Ｍバイト／ｓとみなすことができる。ディスク２０１−１〜ディスク２０１−６は並列にアクセスできるため、ディスクアレイ装置全体のリビルド処理のスループットは、３３×６＝約２００Ｍバイト／ｓとなる。
【００２６】
このように、ディスクアレイ装置に含まれるディスクを増やし、情報領域及びＨＳ領域を均等に分散させることで、ディスクの故障時にリビルド処理に関与するディスクを増やすことができ、リビルド処理が高速化される。例えば、１９台のディスクを設けた場合、リビルド処理のスループットを約６００Ｍバイト／ｓにすることも可能である。
【００２７】
図３は、ＲＡＩＤ５（２＋１）の２つの冗長セットに対応する情報領域と１つのＨＳ領域とを７台のディスク（Ｄｉｓｋ）に配置する配置パターンの例を示している。Ｄｉｓｋ＃０、Ｄｉｓｋ＃１、及びＤｉｓｋ＃２は、冗長セット＃０の情報を担当するＲＡＩＤグループのディスクであり、Ｄｉｓｋ＃３、Ｄｉｓｋ＃４、及びＤｉｓｋ＃５は、冗長セット＃１の情報を担当するＲＡＩＤグループのディスクである。Ｄｉｓｋ＃６は、冗長セット＃０及び冗長セット＃１のためのＨＳ領域を有する予備ディスクである。
【００２８】
４２個のストライプ（ｓｔｒｉｐｅ＃０〜ｓｔｒｉｐｅ＃４１）の各々は、冗長セット＃０の３つの情報領域と冗長セット＃１の３つの情報領域と１つのＨＳ領域とを含み、情報領域とＨＳ領域との組み合わせを表している。情報領域内に記載された整数０〜１６７は、データの順序を表し、Ｐｉ（ｉ＝０〜８３）は、各ストライプ内の対応する冗長セットの２つデータの整合性を保証するためのパリティを表す。例えば、ｓｔｒｉｐｅ＃０のパリティＰ０は、冗長セット＃０のデータ０及びデータ１から生成され、パリティＰ１は、冗長セット＃１のデータ２及びデータ３から生成される。
【００２９】
ＨＳｊ（ｊは０以上の整数）は、ｓｔｒｉｐｅ＃ｊに含まれるＨＳ領域を表す。この例では、すべてのストライプのＨＳ領域がＤｉｓｋ＃６に配置されているため、リビルド処理においてライト処理がＤｉｓｋ＃６に集中してしまう。
【００３０】
図４は、図３の情報領域及びＨＳ領域をストライプ毎にシフトしながら、７台のディスクに均等に分散させる配置パターンの例を示している。例えば、ｓｔｒｉｐｅ＃０では、冗長セット＃０の情報がＤｉｓｋ＃５、Ｄｉｓｋ＃６、及びＤｉｓｋ＃０に配置され、冗長セット＃１の情報がＤｉｓｋ＃２、Ｄｉｓｋ＃３、及びＤｉｓｋ＃４に配置され、ＨＳ領域ＨＳ０がＤｉｓｋ＃１に配置される。そして、ストライプ毎に、ＨＳ領域が右側のディスクへシフトしていく。このように、情報領域及びＨＳ領域を分散させることで、図２の場合と同様に、リビルド処理を高速化することができる。
【００３１】
図５は、図３の配置パターンを図４の配置パターンへ変換する変換テーブルの例を示している。図５の変換テーブルの各行は、図３の各ストライプに対応し、各列は、図３の各ディスクに対応する。また、図５の変換テーブルの各セルは、図３の対応する領域を有する図４のディスクを表す。例えば、図３のｓｔｒｉｐｅ＃０及びＤｉｓｋ＃１に対応するデータ１の情報領域は、変換テーブルに従ってＤｉｓｋ＃６に配置される。
【００３２】
変換テーブルは、例えば、図２１から図２６までを参照しながら後述する、ガロア拡大体の理論に基づいて生成することができる。ガロア拡大体の理論に基づく変換テーブルは、どのディスクが故障しても、リビルド処理における各ディスクの負荷が規定のストライプ数の範囲内において均等になるように生成される。ディスクの負荷は、リビルド処理におけるリード処理及びライト処理の回数に応じて変化する。規定のストライプ数は、ＲＡＩＤグループに含まれるディスクの数とＨＳ領域の数とに基づいて決定される。例えば、図４の例では、規定のストライプ数は４２である。
【００３３】
図６Ａ及び図６Ｂは、図４の配置パターンを採用したディスクアレイ装置において１台のディスクが故障した場合の復元対象を示している。４２個のストライプ（ｓｔｒｉｐｅ＃０〜ｓｔｒｉｐｅ＃４１）の各々は、情報領域とＨＳ領域との組み合わせを表している。
【００３４】
ただし、図６Ａ及び図６Ｂでは、図４とは異なる表記法を用いて情報領域及びＨＳ領域を表している。４２個のストライプに共通の整数０〜６のうち、０、１、及び２は、冗長セット＃０の情報を表し、３、４、及び５は、冗長セット＃１の情報を表し、６は、ＨＳ領域を表す。異なるストライプの同じ整数０〜５は、異なる情報に対応し、異なるストライプの同じ整数６は、異なるＨＳ領域に対応する。
【００３５】
このような分散配置において、Ｄｉｓｋ＃０が故障した場合、ストライプ毎に復元対象の情報が異なり、ストライプによっては復元対象が存在しない場合もある。
【００３６】
例えば、ｓｔｒｉｐｅ＃０では、故障したＤｉｓｋ＃０に情報０の情報領域が配置されているため、復元対象は情報０となる。情報０は冗長セット＃０に含まれるため、復元のために読み出される情報は情報１及び情報２であり、それぞれＤｉｓｋ＃６及びＤｉｓｋ＃５に格納されている。したがって、情報１及び情報２を読み出すために、Ｄｉｓｋ＃６及びＤｉｓｋ＃５が１回ずつアクセスされる。一方、復元された情報０を書き込むＨＳ領域６はＤｉｓｋ＃１に配置されているため、Ｄｉｓｋ＃１が１回アクセスされる。
【００３７】
ｓｔｒｉｐｅ＃４では、故障したＤｉｓｋ＃０に情報４の情報領域が配置されているため、復元対象は情報４となる。情報４は冗長セット＃１に含まれるため、復元のために読み出される情報は情報３及び情報５であり、それぞれＤｉｓｋ＃１及びＤｉｓｋ＃６に格納されている。したがって、情報３及び情報５を読み出すために、Ｄｉｓｋ＃１及びＤｉｓｋ＃６が１回ずつアクセスされる。一方、復元された情報４を書き込むＨＳ領域６はＤｉｓｋ＃５に配置されているため、Ｄｉｓｋ＃５が１回アクセスされる。
【００３８】
ｓｔｒｉｐｅ＃６、ｓｔｒｉｐｅ＃１２、ｓｔｒｉｐｅ＃１８、ｓｔｒｉｐｅ＃２４、ｓｔｒｉｐｅ＃３０、及びｓｔｒｉｐｅ＃３６では、故障したＤｉｓｋ＃０にＨＳ領域６が配置されているため、復元対象は存在しない。したがって、いずれのディスクに対するアクセスも発生しない。
【００３９】
４２個のストライプにおいて、リビルド処理によりディスクにアクセスする回数をディスク毎にカウントすると、Ｄｉｓｋ＃１〜Ｄｉｓｋ＃６のすべてのディスクにおいてアクセス回数が１８回となる。したがって、リビルド処理における各ディスクの負荷が４２個のストライプの範囲内において均等になっていることがわかる。
【００４０】
復元対象が存在するストライプの数は３６個であるため、情報領域及びＨＳ領域が分散配置されていない場合、３６個のストライプのリビルド処理において、読み出し元のディスク及び書き込み先のディスクに対して３６回のアクセスが発生すると考えられる。この場合、リビルド処理に関与する各ディスクのアクセス回数は３６回となる。
【００４１】
これに対して、図６Ａ及び図６Ｂの配置パターンを採用した場合、各ディスクのアクセス回数は１８回となるため、リビルド処理のスループットが２倍に向上する。
【００４２】
しかしながら、Ｄｉｓｋ＃０〜Ｄｉｓｋ＃６に分散配置されたＨＳ領域の総容量は、ディスク１台分の容量であるため、故障したＤｉｓｋ＃０の情報を復元した後はＨＳ領域が使用済みになってしまう。このため、リビルド処理によりデータの冗長性が回復した後にさらに別のディスクが故障した場合、ＨＳ領域の代わりに別の空き領域を使用してリビルド処理を行う方法が考えられる。
【００４３】
このとき、どのディスクの空き領域をリビルド処理に使用するかによって、各ディスクのアクセス回数が増減する可能性がある。そこで、リビルド処理に使用する適切なディスクを選択して、各ディスクに対するアクセスを効率化することが望ましい。
【００４４】
図７は、実施形態のストレージ制御装置の構成例を示している。図７のストレージ制御装置７０１は、制御部７１１を含む。
【００４５】
図８は、図７の制御部７１１が行うストレージ制御処理の例を示すフローチャートである。制御部７１１は、冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、予備領域の数よりも多くの記憶装置が故障した場合（ステップ８０１）、ステップ８０２の処理を行う。ステップ８０２において、制御部７１１は、復元処理における書き込み先記憶装置を決定する（ステップ８０２）。
【００４６】
復元処理は、複数の情報領域と１つ以上の予備領域との複数の組み合わせに含まれる、故障した第１の記憶装置の複数の情報領域に対する復元処理である。また、書き込み先記憶装置は、複数の組み合わせのうち１つの組み合わせに含まれる、第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先記憶装置である。
【００４７】
制御部７１１は、復元処理において故障していない第２の記憶装置から情報が読み出される回数に基づいて、書き込み先記憶装置を決定する。
【００４８】
このようなストレージ制御装置によれば、予備領域の数よりも多くの記憶装置が故障した場合に、情報を復元する際の記憶装置に対するアクセスを効率化することができる。
【００４９】
図９は、図７のストレージ制御装置７０１を含むストレージシステムの構成例を示している。図９のストレージシステムは、ホスト装置９０１及びストレージ装置９０２を含む。ストレージ装置９０２は、ストレージ制御装置９１１、ストレージ制御装置９１２、及びディスクエンクロージャ（ＤＥ）９１３を含む。
【００５０】
ホスト装置９０１は、通信回線を介してストレージ制御装置９１１及びストレージ制御装置９１２と接続されており、ストレージ制御装置９１１及びストレージ制御装置９１２は、通信回線を介してＤＥ９１３と接続されている。
【００５１】
ストレージ制御装置９１１は、インタフェース（ＩＦ）９２１、制御部９２２、及びＩＦ９２３を含む。制御部９２２は、復元部９２４、リビルド制御部９２５、コマンド発行制御部９２６、及び記憶部９２７を含む。
【００５２】
ストレージ制御装置９１２は、ＩＦ９３１、制御部９３２、及びＩＦ９３３を含む。制御部９３２は、復元部９３４、リビルド制御部９３５、コマンド発行制御部９３６、及び記憶部９３７を含む。
【００５３】
ストレージ制御装置９１１及びストレージ制御装置９１２は、図７のストレージ制御装置７０１に対応し、制御部９２２及び制御部９３２は、図７の制御部７１１に対応する。ＤＥ９１３は、ディスク９４１−１〜ディスク９４１−ｋ（ｋは４以上の整数）を含む。
【００５４】
ホスト装置９０１は、ストレージ制御装置９１１又はストレージ制御装置９１２を介して、ディスク９４１−１〜ディスク９４１−ｋからデータを読み出したり、ディスク９４１−１〜ディスク９４１−ｋにデータを書き込んだりすることができる。
【００５５】
図９のストレージシステムでは、ホスト装置９０１からＤＥ９１３へのアクセスパスが２重化されているが、アクセスパスを２重化しない場合は、ストレージ制御装置９１１又はストレージ制御装置９１２を省略することができる。ストレージ制御装置９１１及びストレージ制御装置９１２に対して、複数のホスト装置が接続されていてもよい。
【００５６】
ストレージ制御装置９１１のＩＦ９２１は、ホスト装置９０１と通信するための通信インタフェースであり、ＩＦ９２３は、ＤＥ９１３と通信するための通信インタフェースである。
【００５７】
制御部９２２は、ホスト装置９０１から受信するリード要求に基づいて、ＤＥ９１３へリードコマンドを発行することで、ＤＥ９１３からデータを読み出してホスト装置９０１へ送信することができる。また、制御部９２２は、ホスト装置９０１から受信するライト要求に基づいて、ＤＥ９１３へライトコマンドを発行することで、ライト要求に含まれるデータをＤＥ９１３に書き込むことができる。
【００５８】
記憶部９２７は、配置情報、読み出し回数、書き込み回数、及び書き込み可能回数を記憶することができる。配置情報は、情報領域及び予備領域をディスク９４１−１〜ディスク９４１−ｋに分散して配置する配置パターンを表す。配置情報としては、例えば、図５のような変換テーブルを用いてもよい。
【００５９】
読み出し回数は、リビルド処理（復元処理）において故障していないディスク９４１から情報が読み出される回数を表し、書き込み回数は、リビルド処理において故障していないディスク９４１に復元された情報が書き込まれる回数を表す。また、書き込み可能回数は、故障していないディスク９４１に復元された情報を書き込むことが可能な回数を表す。
【００６０】
復元部９２４は、リビルド制御部９２５からの指示に基づき、故障していないディスク９４１から読み出された情報を用いて、故障したディスク９４１の情報を復元する。リビルド制御部９２５は、リビルド処理の開始及び終了を制御すると共に、故障していないディスク９４１の中から、復元された情報を書き込む書き込み先のディスク９４１を選択する。このとき、リビルド制御部９２５は、配置情報、読み出し回数、書き込み回数、及び書き込み可能回数に基づいて、書き込み先のディスク９４１を決定する。
【００６１】
コマンド発行制御部９２６は、ホスト装置９０１から受信するリード要求又はライト要求に基づき、ＤＥ９１３へリードコマンド又はライトコマンドを発行する。リードコマンド又はライトコマンドによるアクセス対象のディスク９４１は、配置情報に基づいて決定される。
【００６２】
また、コマンド発行制御部９２６は、リビルド制御部９２５からの指示に基づき、ＤＥ９１３へリードコマンド又はライトコマンドを発行する。リードコマンド又はライトコマンドによるアクセス対象のディスク９４１は、リビルド制御部９２５により指定される。このうち、ライトコマンドによるアクセス対象は、リビルド制御部９２５により選択された書き込み先のディスク９４１である。
【００６３】
ストレージ制御装置９１２の動作についても、ストレージ制御装置９１１の動作と同様である。ストレージ制御装置９１１とストレージ制御装置９１２は、通信回線を介して接続されており、互いに通信することもできる。
【００６４】
以下では、一例として、ストレージ制御装置９１１がリビルド処理を行う場合の動作について説明する。例えば、配置情報が図４の配置パターンを表す場合はｋ＝７であり、ＤＥ９１３内のディスク９４１−１〜ディスク９４１−７は、それぞれ、Ｄｉｓｋ＃０〜Ｄｉｓｋ＃６に対応する。情報領域及びＨＳ領域は、ディスク９４１−１〜ディスク９４１−７の一部の記憶領域に分散して配置され、他の記憶領域は未使用の領域（空き領域）に対応する。
【００６５】
ここで、Ｄｉｓｋ＃０が故障した場合、制御部９２２は、図６Ａ及び図６Ｂに示したように、各ストライプに含まれるＤｉｓｋ＃０の情報を、そのストライプ内の対応する冗長セットの情報を用いて復元するリビルド処理を行う。そして、制御部９２２は、そのストライプ内のＨＳ領域に、復元された情報を書き込む。
【００６６】
例えば、ｓｔｒｉｐｅ＃０に含まれるＤｉｓｋ＃０の情報０を復元する場合、制御部９２２は、Ｄｉｓｋ＃６及びＤｉｓｋ＃５の情報１及び情報２を用いて情報０を復元し、Ｄｉｓｋ＃１のＨＳ領域６に書き込む。
【００６７】
また、ｓｔｒｉｐｅ＃４に含まれるＤｉｓｋ＃０の情報４を復元する場合、制御部９２２は、Ｄｉｓｋ＃１及びＤｉｓｋ＃６の情報３及び情報５を用いて情報４を復元し、Ｄｉｓｋ＃５のＨＳ領域６に書き込む。
【００６８】
しかし、ｓｔｒｉｐｅ＃６、ｓｔｒｉｐｅ＃１２、ｓｔｒｉｐｅ＃１８、ｓｔｒｉｐｅ＃２４、ｓｔｒｉｐｅ＃３０、及びｓｔｒｉｐｅ＃３６では、Ｄｉｓｋ＃０にＨＳ領域６が配置されているため、情報の復元は行われない。
【００６９】
このようなリビルド処理を行った結果、すべてのＨＳ領域６に復元された情報が書き込まれ、すべてのＨＳ領域６が使用済みとなる。
【００７０】
Ｄｉｓｋ＃０の情報が復元された後、続いてＤｉｓｋ＃１が故障した場合、復元対象は、図１０Ａ及び図１０Ｂに示すようになる。この場合、制御部９２２は、各ストライプに含まれるＤｉｓｋ＃１の情報を、そのストライプ内の対応する冗長セットの情報を用いて復元するリビルド処理を行う。そして、制御部９２２は、Ｄｉｓｋ＃２〜Ｄｉｓｋ＃６のうちいずれかのディスクの空き領域に、復元された情報を書き込む。
【００７１】
例えば、ｓｔｒｉｐｅ＃０では、故障したＤｉｓｋ＃１に情報０の情報領域が配置されているため、復元対象は情報０となる。情報０は冗長セット＃０に含まれるため、復元のために読み出される情報は情報１及び情報２であり、それぞれＤｉｓｋ＃６及びＤｉｓｋ＃５に格納されている。そこで、制御部９２２は、Ｄｉｓｋ＃６及びＤｉｓｋ＃５の情報１及び情報２を用いて情報０を復元し、いずれかのディスクの空き領域に書き込む。
【００７２】
また、ｓｔｒｉｐｅ＃４では、故障したＤｉｓｋ＃１に情報３の情報領域が配置されているため、復元対象は情報３となる。情報３は冗長セット＃１に含まれるため、復元のために読み出される情報は情報４及び情報５であり、それぞれＤｉｓｋ＃５及びＤｉｓｋ＃６に格納されている。そこで、制御部９２２は、Ｄｉｓｋ＃５及びＤｉｓｋ＃６の情報４及び情報５を用いて情報３を復元し、いずれかのディスクの空き領域に書き込む。
【００７３】
このように、各ストライプに含まれるＨＳ領域の数よりも多くのディスクが故障した場合、書き込み先としてＨＳ領域以外の空き領域を使用することで、データの冗長性を回復することができる。
【００７４】
図１１は、Ｄｉｓｋ＃１の情報を復元するリビルド処理において、リビルド制御部９２５が各復元対象の書き込み先ディスクを決定する書き込み先決定処理の例を示すフローチャートである。
【００７５】
まず、リビルド制御部９２５は、リビルド処理における総読み出し回数と総書き込み回数とに基づいて、処理カウントの初期値を設定する（ステップ１１０１）。総読み出し回数は、規定のストライプ数の復元対象を復元するために故障していないディスクから情報が読み出される回数を表し、総書き込み回数は、それらの復元対象を復元するために故障していないディスクに情報が書き込まれる回数を表す。処理カウントの初期値は、例えば、次式により求めることができる。
平均アクセス回数＝（総読み出し回数＋総書き込み回数）／ディスク数      （１）
初期値＝平均アクセス回数＊ディスク数−総読み出し回数      （２）
【００７６】
図１０Ａ及び図１０Ｂの例では、規定のストライプ数は４２であり、１つの復元対象を復元するために２回の読み出しと１回の書き込みが行われるため、総読み出し回数は８４となり、総書き込み回数は４２となる。
【００７７】
また、式（１）及び式（２）の右辺のディスク数は、故障していないディスクの数を表す。式（１）の右辺の値が整数でない場合は、その値の小数点以下が切り捨てられる。式（１）及び式（２）を用いることで、故障していないディスクのアクセス回数が過不足なく平均化される書き込み回数を、処理カウントの初期値として設定することができる。
【００７８】
図１０Ａ及び図１０Ｂの例では、ディスク数は５である。この場合、処理カウントの初期値は、次式により与えられる。
平均アクセス回数＝（８４＋４２）／５＝２５      （３）
初期値＝２５＊５−８４＝４１      （４）
【００７９】
次に、リビルド制御部９２５は、リビルド処理における各ディスクの書き込み可能回数を求める（ステップ１１０２）。ディスクの書き込み可能回数は、規定のストライプ数の復元対象を復元する際に、復元された情報をそのディスクに書き込むことが可能な回数を表す。
【００８０】
図１２Ａ及び図１２Ｂは、図１０Ａ及び図１０Ｂの各ディスクの書き込み可能回数を求める処理の例を示している。復元対象ｄ（ｓｔｒｉｐｅ＃ｐ）は、ｓｔｒｉｐｅ＃ｐにおける情報ｄを表す（ｄ＝０〜５，ｐ＝０〜４１）。例えば、復元対象０（ｓｔｒｉｐｅ＃１）は、ｓｔｒｉｐｅ＃１における情報０を表す。
【００８１】
ところで、図１０Ａ及び図１０Ｂの４２個のストライプのうち、下記の６個のストライプにおける復元対象は、最初に故障したＤｉｓｋ＃０に格納されていた情報に対応し、Ｄｉｓｋ＃０が故障したときに復元された情報である。
ｓｔｒｉｐｅ＃０
ｓｔｒｉｐｅ＃１３
ｓｔｒｉｐｅ＃１９
ｓｔｒｉｐｅ＃２５
ｓｔｒｉｐｅ＃３１
ｓｔｒｉｐｅ＃３７
【００８２】
そして、それ以外の３６個のストライプにおける復元対象は、Ｄｉｓｋ＃０が故障する前からＤｉｓｋ＃１に格納されていた情報に対応する。
【００８３】
この例では、元々Ｄｉｓｋ＃１に格納されていた情報の書き込み先を優先して決定するため、図１２Ａ及び図１２Ｂの復元対象の順序は、図１０Ａ及び図１０Ｂの復元対象の順序とは異なっている。図１２Ａ及び図１２Ｂの１番目から３６番目までの復元対象は、元々Ｄｉｓｋ＃１に格納されていた情報に対応し、３７番目から４２番目までの復元対象は、元々Ｄｉｓｋ＃０に格納されていた情報に対応する。
【００８４】
リードディスクＩＤは、各ストライプの復元対象を復元するために用いられる情報を格納するディスクの識別情報（ディスク番号）を表す。また、ライトディスクＩＤは、各ストライプの復元対象を書き込むことが可能なディスク（書き込み可能ディスク）の識別情報を表す。
【００８５】
Ｄｉｓｋ＃２〜Ｄｉｓｋ＃６の網がけされたセルは、各ストライプにおける書き込み可能ディスクであることを示している。書き込み可能ディスクとしては、故障していないディスクのうち、リードディスクＩＤが示すディスク以外のディスクを選択することができる。
【００８６】
例えば、復元対象０（ｓｔｒｉｐｅ＃１）に対応するリードディスクは、Ｄｉｓｋ＃２及びＤｉｓｋ＃６であり、書き込み可能ディスクは、Ｄｉｓｋ＃３〜Ｄｉｓｋ＃５である。また、復元対象３（ｓｔｒｉｐｅ＃４）に対応するリードディスクは、Ｄｉｓｋ＃５及びＤｉｓｋ＃６であり、書き込み可能ディスクは、Ｄｉｓｋ＃２〜Ｄｉｓｋ＃４である。
【００８７】
リビルド制御部９２５は、ディスク毎に網がけされたセルの数をカウントすることで、各ディスクの書き込み可能回数を求めることができる。Ｄｉｓｋ＃２〜Ｄｉｓｋ＃６の書き込み可能回数は、以下のようになる。
Ｄｉｓｋ＃２    ２８
Ｄｉｓｋ＃３    ２２
Ｄｉｓｋ＃４    ２８
Ｄｉｓｋ＃５    ２２
Ｄｉｓｋ＃６    ２６
【００８８】
リビルド制御部９２５は、総書き込み回数“４２”からリビルド処理における各ディスクの読み出し回数を減算することで、各ディスクの書き込み可能回数を求めてもよい。ディスクの読み出し回数は、規定のストライプ数の復元対象を復元する際に、そのディスクから情報が読み出される回数を表す。Ｄｉｓｋ＃２〜Ｄｉｓｋ＃６の読み出し回数は、以下のようになる。
Ｄｉｓｋ＃２    １４
Ｄｉｓｋ＃３    ２０
Ｄｉｓｋ＃４    １４
Ｄｉｓｋ＃５    ２０
Ｄｉｓｋ＃６    １６
【００８９】
次に、リビルド制御部９２５は、各ディスクの書き込み回数を求める（ステップ１１０３）。ディスクの書き込み回数は、規定のストライプ数の復元対象を復元する際に、復元された情報がそのディスクに書き込まれる回数を表す。リビルド制御部９２５は、例えば、各ディスクのアクセス回数から各ディスクの読み出し回数を減算することで、各ディスクの書き込み回数を求めることができる。各ディスクのアクセス回数としては、例えば、平均アクセス回数を用いることができる。
【００９０】
図１３は、各ディスクのアクセス回数として平均アクセス回数“２５”を用いた場合の各ディスクの書き込み回数の例を示している。
【００９１】
こうして求められた書き込み回数は、リビルド処理における複数のディスクに対するアクセスを均等化する上で好ましい書き込み回数を表している。しかし、各復元対象の書き込み先ディスクを書き込み可能ディスクの中から無作為に選択すると、あるディスクにおいて書き込み回数を超える書き込みが行われ、別のあるディスクにおいて書き込み回数未満の書き込みが行われる可能性がある。そこで、各ディスクの書き込み回数が遵守されるように、各復元対象の書き込み先ディスクを選択することが望ましい。
【００９２】
次に、リビルド制御部９２５は、各ディスクの書き込み可能回数と書き込み回数とに基づいて、１つのディスクを書き込み先ディスクとして選択する（ステップ１１０４）。このとき、リビルド制御部９２５は、各ディスクの書き込み可能回数と書き込み回数とに基づいて各ディスクの優先度を求め、優先度が比較的高いディスクを書き込み先ディスクとして選択することができる。
【００９３】
優先度としては、例えば、書き込み可能回数に対する書き込み回数の比率を用いることができる。この比率が大きいディスクほど、書き込み回数と同じ数の復元対象を割り当てることが困難になるため、他のディスクよりも先に復元対象を割り当てることが望ましい。
【００９４】
図１４は、図１２Ａ及び図１２Ｂに基づく書き込み可能回数に対する図１３の書き込み回数の比率を示している。この場合、Ｄｉｓｋ＃２〜Ｄｉｓｋ＃６の比率のうち、Ｄｉｓｋ＃２及びＤｉｓｋ＃４の比率が最大であるため、Ｄｉｓｋ＃２又はＤｉｓｋ＃４のいずれかが書き込み先ディスクとして選択される。例えば、ディスク番号の小さい方を選択する場合、Ｄｉｓｋ＃２が選択される。
【００９５】
次に、リビルド制御部９２５は、１つの復元対象を選択し、選択したディスクに割り当てる（ステップ１１０５）。このとき、リビルド制御部９２５は、図１２Ａ及び図１２Ｂにおいて、選択したディスクの網がけされたセルに対応する復元対象のうち、最も順位の高い復元対象を選択することができる。例えば、Ｄｉｓｋ＃２が選択された場合、図１５に示すように、４番目の復元対象３（ｓｔｒｉｐｅ＃４）がＤｉｓｋ＃２に割り当てられる。
【００９６】
次に、リビルド制御部９２５は、処理カウントを１だけデクリメントし（ステップ１１０６）、処理カウントを０と比較する（ステップ１１０７）。処理カウントが０より大きい場合（ステップ１１０７，ＮＯ）、リビルド制御部９２５は、ステップ１１０２以降の処理を繰り返す。このとき、リビルド制御部９２５は、ステップ１１０４で選択したディスクの書き込み回数を１だけデクリメントするとともに、ステップ１１０５で選択した復元対象に対応する各書き込み可能ディスクの書き込み可能回数を１だけデクリメントする。
【００９７】
図１６は、復元対象３（ｓｔｒｉｐｅ＃４）がＤｉｓｋ＃２に割り当てられた後に再計算された比率を示している。Ｄｉｓｋ＃２の書き込み回数は１だけ減少しており、復元対象３（ｓｔｒｉｐｅ＃４）に対応するＤｉｓｋ＃２〜Ｄｉｓｋ＃４の書き込み可能回数はそれぞれ１ずつ減少している。この場合、Ｄｉｓｋ＃４の比率が最大であるため、Ｄｉｓｋ＃４が書き込み先ディスクとして選択され、図１７に示すように、１番目の復元対象０（ｓｔｒｉｐｅ＃１）がＤｉｓｋ＃４に割り当てられる。
【００９８】
処理カウントが０になった場合（ステップ１１０７，ＹＥＳ）、リビルド制御部９２５は、処理カウントの初期値を復元対象の数と比較する（ステップ１１０８）。処理カウントの初期値が復元対象の数と同じである場合（ステップ１１０８，ＹＥＳ）、リビルド制御部９２５は、処理を終了する。
【００９９】
一方、処理カウントの初期値が復元対象の数より小さい場合（ステップ１１０８，ＮＯ）、リビルド制御部９２５は、残りの復元対象のうち１つの復元対象を選択し、いずれかのディスクに割り当てる（ステップ１１０９）。このとき、リビルド制御部９２５は、残りの復元対象のうち最も順位の高い復元対象を選択して、最も小さいディスク番号のディスクに割り当ててもよい。
【０１００】
次に、リビルド制御部９２５は、すべての復元対象を選択したか否かをチェックする（ステップ１１１０）。未選択の復元対象が存在する場合（ステップ１１１０，ＮＯ）、リビルド制御部９２５は、ステップ１１０９の処理を繰り返す。このとき、リビルド制御部９２５は、残りの復元対象を未だ割り当てていないディスクに対して、復元対象を割り当てる。そして、すべての復元対象の割り当てが完了すると（ステップ１１１０，ＹＥＳ）、リビルド制御部９２５は、処理を終了する。
【０１０１】
図１８は、図１２Ａ及び図１２Ｂの１番目から４１番目までの４１個の復元対象の書き込み先ディスクを示している。これらの復元対象の書き込み先ディスクは、ステップ１１０４及びステップ１１０５の処理により決定される。
【０１０２】
４１番目の復元対象２（ｓｔｒｉｐｅ＃３１）の書き込み先ディスクが決定された時点で処理カウントは０になるが、処理カウントの初期値“４１”は復元対象の数“４２”より小さい。そこで、リビルド制御部９２５は、図１９に示すように、ステップ１１０９の処理を行って、４２番目の復元対象５（ｓｔｒｉｐｅ＃３７）の書き込み先ディスクを、Ｄｉｓｋ＃２に決定する。これにより、Ｄｉｓｋ＃２の書き込み回数は“１２”になり、アクセス回数は“２６”になる。
【０１０３】
図１１の書き込み先決定処理によれば、各ストライプに含まれるＨＳ領域の数よりも多くのディスクが故障した場合に、故障していないディスクの読み出し回数に基づいて書き込み先ディスクを選択することで、ディスクに対するアクセスが効率化される。
【０１０４】
このとき、複数のディスクの総読み出し回数及び総書き込み回数と、各ディスクの読み出し回数とに基づいて、各ディスクの書き込み回数が求められ、各ディスクの書き込み回数に基づいて書き込み先ディスクが選択される。これにより、複数のディスクに対するアクセスが均等化されるため、ディスクアクセスの並列性を活用して、１ディスクのスループットを超える高速なリビルド処理を実現することができる。
【０１０５】
また、図１１の書き込み先決定処理によれば、総書き込み回数と各ディスクの読み出し回数とに基づいて、各ディスクの書き込み可能回数が求められ、各ディスクの書き込み回数と書き込み可能回数とに基づいて書き込み先ディスクが選択される。これにより、書き込み回数と同じ数の復元対象を割り当てることが比較的困難なディスクを特定して、優先的に復元対象を割り当てることが可能になり、複数の復元対象の書き込み先ディスクを効率良く決定できる。
【０１０６】
なお、図６Ａ及び図６Ｂの配置パターンでは、各ストライプに１つのＨＳ領域が含まれているが、各ストライプに複数のＨＳ領域が含まれていてもよい。この場合も、各ストライプに含まれるＨＳ領域の数よりも多くのディスクが故障したとき、図１１の書き込み先決定処理により復元対象の書き込み先ディスクを決定することができる。
【０１０７】
また、図６Ａ及び図６Ｂの配置パターンでは、各ストライプにＲＡＩＤ５（２＋１）の２つの冗長セットに対応する情報領域が含まれているが、各ストライプに３つ以上の冗長セットに対応する情報領域が含まれていてもよい。各冗長セットは、ＲＡＩＤ６等の他のデータ構成であってもよい。
【０１０８】
図２０は、ＲＡＩＤ６（３＋２）の２つの冗長セットに対応する情報領域と１つのＨＳ領域とを１１台のディスクに分散させる配置パターンの例を示している。網掛け２００１は、冗長セット＃０の情報領域を表し、網掛け２００２は、冗長セット＃１の情報領域を表し、網掛け２００３は、ＨＳ領域を表す。
【０１０９】
各ストライプは、冗長セット＃０の５つの情報領域と冗長セット＃１の５つの情報領域と１つのＨＳ領域とを含み、情報領域とＨＳ領域との組み合わせを表している。この場合も、各ストライプに含まれるＨＳ領域の数よりも多くのディスクが故障したとき、図１１の書き込み先決定処理により復元対象の書き込み先ディスクを決定することができる。
【０１１０】
図２０の配置パターンにおいてＨＳ領域の数よりも多くのディスクが故障したときにリビルド処理を行わない場合、最大で３台のディスクの故障が許容されるため、ストレージ装置９０２の冗長度は３となる。これに対して、ＨＳ領域の数よりも多くのディスクが故障したときに空き領域を利用してリビルド処理を行う場合、最大で５台のディスクの故障が許容されるため、ストレージ装置９０２の冗長度は５となる。このように、ディスクの空き領域を利用してリビルド処理を行うことで、データの冗長性が向上する。
【０１１１】
次に、図２１から図２６までを参照しながら、ガロア体又はガロア拡大体の理論に基づく変換テーブルの生成方法について説明する。ここでは、ｍ個の冗長セットとｎ個のＨＳ領域とをｋ台のディスクの集合（ディスクプール）に分散させるものとする（ｍは１以上の整数、ｎは１以上の整数、ｋは４以上の整数）。各冗長セットは、ｌ個の情報領域を含む（ｌは２以上の整数）。この場合、ｋ＝ｌ＊ｍ＋ｎである。
【０１１２】
まず、ｋが素数の場合、ガロア体に基づいて配置パターンを決定することで、分散配置のための規定のストライプ数を小さくすることが可能である。例えば、ｋ＝５の場合、整数を５で除算した余りの集合φ＝｛０，１，２，３，４｝は、要素数が有限で四則演算が閉じた集合（ガロア体）となっている。
【０１１３】
図２１（Ａ）は、集合φにおけるｍｏｄ（５）加算の表を示しており、図２１（Ｂ）は、集合φにおけるｍｏｄ（５）乗算の表を示している。ｍｏｄ（５）加算の表において、各セルの整数は、対応する行の整数と対応する列の整数とを加算した結果を表し、ｍｏｄ（５）乗算の表において、各セルの整数は、対応する行の整数と対応する列の整数とを乗算した結果を表す。例えば、４＋４及び４×３の演算結果は、次式のようになる。
４＋４＝８ ｍｏｄ ５＝３∈φ      （５）
４×３＝１２ ｍｏｄ ５＝２∈φ      （６）
【０１１４】
図２１（Ａ）において、シフト＃０〜シフト＃４の各行がストライプに対応し、各列がディスクに対応する。各列内ではすべての行の整数が異なっているため、どの２つの行の間においても同じ列の整数が重複することはない。したがって、シフト＃０〜シフト＃４は、領域の配置順序が異なる５つのストライプを表している。
【０１１５】
図２１（Ｂ）において、各セルの整数は、図２１（Ａ）のシフト＃０〜シフト＃４のいずれかを指すシフトＩＤ（シフト番号）に対応する。左端の“０”の列を除いて整数を比較すると、どの２つの行の間においても同じ列の整数が重複することはない。したがって、パターン＃０〜パターン＃４のうちどの２つのパターン同士の組み合わせにおいても、“０”の列を除くと、同じ列の２つのシフトＩＤは互いに異なるシフトを指している。
【０１１６】
このように、パターン＃０〜パターン＃４の各行は、４つのストライプに対応する４つのシフトＩＤの組み合わせを表し、各シフトＩＤは、１つのストライプ内の領域の配置を表す。どの２つのパターン同士の組み合わせにおいても、一方のパターンの各列に対応するストライプ内の領域の配置は、他方のパターンの同じ列に対応するストライプ内の領域の配置とは異なっている。
【０１１７】
ｍｏｄ（５）加算の表の各シフトが表すストライプ内の領域の配置を、ｍｏｄ（５）乗算の表に基づいて組み合わせることで、ストライプ間で領域の配置が互いに重複しない５つの排他的なパターンを生成することができる。各パターンは、４つのストライプに対応するため、５つのパターンは、２０個のストライプに対応する。これらの２０個のストライプが表す領域の配置を採用することで、どのディスクが故障しても、リビルド処理における各ディスクの負荷を均等にすることができる。したがって、規定のストライプ数は２０となる。
【０１１８】
規定のストライプ数は、例えば、次式により求めることができる。
規定のストライプ数＝ｋ＊（ｋ−１）
＝（ｌ＊ｍ＋ｎ）＊（ｌ＊ｍ＋ｎ−１）      （７）
【０１１９】
図２２は、ｍｏｄ（５）加算及びｍｏｄ（５）乗算の表に基づいて、ＲＡＩＤ５（３＋１）の情報領域と１つのＨＳ領域とをＤｉｓｋ＃０〜Ｄｉｓｋ＃４に分散させる配置パターンを示している。この場合、ｋ＝５、ｌ＝４、ｍ＝１、ｎ＝１である。
【０１２０】
ただし、図２２の配置パターンは、最終的な配置パターンではなく、暫定的な配置パターンである。図２２の各セルの整数０〜４、１０〜１４、２０〜２４、及び３０〜３４は、情報領域又はＨＳ領域を表す。
【０１２１】
パターン＃０〜パターン＃４の各々は、４つのストライプを含む。基本パターンであるパターン＃０の４つのストライプでは、すべてシフト＃０に従って領域が配置され、パターン＃１〜パターン＃４の４つのストライプでは、それぞれ異なるシフトに従って領域が配置される。例えば、パターン＃１のストライプ＃４では、シフト＃１に従って領域が配置され、ストライプ＃５では、シフト＃２に従って領域が配置される。ストライプ＃６では、シフト＃３に従って領域が配置され、ストライプ＃７では、シフト＃４に従って領域が配置される。
【０１２２】
５つのパターンに含まれる５つの同じ整数は、最終的な配置パターンにおいて同じストライプに含まれる５つの領域（情報領域又はＨＳ領域）を表す。例えば、パターン＃０〜パターン＃３を４つの情報領域の配置に適用し、パターン＃４をＨＳ領域の配置に適用することができる。この配置パターンによれば、各ディスクに配置された２０個の整数がすべて異なるため、情報領域及びＨＳ領域が均等に分散していることが分かる。したがって、例えば、Ｄｉｓｋ＃０が故障した場合のリビルド処理において、Ｄｉｓｋ＃１〜Ｄｉｓｋ＃４に対するアクセスを均等化することができる。他のディスクが故障した場合も同様である。
【０１２３】
図２２のパターン＃０〜パターン＃３に含まれる４つの同じ整数を、異なる情報を表す異なる整数に置き換えると、図２３のようになる。図２２のパターン＃４に含まれる整数は、Ｄｉｓｋ＃０に配置された同じ整数に対応する、図２３の整数に置き換えられている。ただし、図２３のストライプ＃１６〜ストライプ＃１９については、Ｄｉｓｋ＃０のセルは空欄である。
【０１２４】
例えば、情報０〜情報３は１つの冗長セットを形成し、この冗長セットのためのＨＳ領域０は、Ｄｉｓｋ＃１のストライプ＃１６に配置されている。Ｄｉｓｋ＃０が故障した場合、情報１〜情報３を用いてストライプ＃０の情報０が復元され、ストライプ＃１６のＨＳ領域０に書き込まれる。
【０１２５】
このままでも配置パターンとして使用できるが、図２３では、１つの冗長セットを形成する４つの情報と対応するＨＳ領域とが同じストライプに含まれていないため、ストライプ単位でリビルド処理を行う場合には都合が悪い。そこで、対応する情報領域及びＨＳ領域が同じストライプに含まれるように、各列内の整数を縦方向に並べ替えると、図２４のような配置パターンが生成される。縦方向に領域を並べ替えても、複数のディスクに対する領域の分散状況は変わらない。
【０１２６】
図２４の最終的な配置パターンに従って、ＲＡＩＤ５（３＋１）の情報領域と１つのＨＳ領域とを５台のディスクに分散配置した場合の変換テーブルを生成することができる。
【０１２７】
ｋが５以外の素数である場合も、整数をｋで除算した余りの集合φ＝｛０，１，２，３，．．．，ｋ−１｝について、同様の加算及び乗算の表を生成することが可能である。そして、加算の表の各シフトが表すストライプ内の領域の配置を乗算の表に基づいて組み合わせることで、配置パターン及び変換テーブルを生成することができる。
【０１２８】
次に、ｋが素数のべき乗である場合の変換テーブルの生成方法について説明する。この場合、ガロア拡大体に基づいて配置パターンを決定することで、ｋが素数の場合と同様に、規定のストライプ数を小さくすることが可能である。ここでは、ガロア拡大体として、αという元（要素）を加えた集合ＧＦ（ｑｒ）を用いる（ｑは素数、ｒは自然数）。
【数１】
0006515458.tif 000002
【０１２９】
ＧＦ（ｑｒ）に基づいて加算及び乗算の表を生成し、それらの表に基づいて、ｑｒ台のディスクを有するディスクプールにおける配置パターンを生成することができる。原始多項式ｆ（α）＝０が成立する場合、ＧＦ（ｑr）の各元は、周期ｒで巡回する値をとり、加算及び乗算についてガロア体と同じ性質を持っている。例えば、ｑ＝ｒ＝２、ｆ（α）＝α２＋α＋１の場合、集合ＧＦ（２２）＝｛０，１，α，α２（＝α＋１）｝が用いられる。ｆ（α）＝０が成立することから、α２＝α＋１となる。
【０１３０】
図２５（Ａ）は、ＧＦ（２２）における加算の表を示しており、図２５（Ｂ）は、ＧＦ（２２）における乗算の表を示している。加算及び乗算の表において、００、０１、１０、及び１１は、それぞれ、０、１、α、及びα＋１を表す。００、０１、１０、及び１１をそれぞれ整数０、１、２、及び３に置き換えることで、図２５（Ａ）及び図２５（Ｂ）の表は、図２６（Ａ）及び図２６（Ｂ）のように書き換えられる。
【０１３１】
そして、図２６（Ａ）が示す加算の表の各シフトが表すストライプ内の領域の配置を、図２６（Ｂ）が示す乗算の表に基づいて組み合わせることで、ストライプ間で領域の配置が互いに重複しない４つの排他的なパターンを生成することができる。さらに、対応する情報領域及びＨＳ領域が同じストライプに含まれるように、各列内の整数を縦方向に並べ替えることで、４（＝２２）台のディスクを有するディスクプールにおける配置パターン及び変換テーブルを生成することができる。
【０１３２】
ｑが２以外の素数であり、ｒが２以外の自然数である場合も、適当な原始多項式を用いて加算及び乗算の表を生成することが可能である。そして、加算の表の各シフトが表すストライプ内の領域の配置を乗算の表に基づいて組み合わせることで、配置パターン及び変換テーブルを生成することができる。規定のストライプ数は、ｋ＝ｑｒを用いて式（７）により求められる。
【０１３３】
図７のストレージ制御装置７０１と図９のストレージシステムの構成は一例に過ぎず、ストレージシステムの用途や条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、図９のストレージシステムにおいて、ストレージ制御装置９１１がＤＥ９１３に対するアクセスを制御する場合は、ストレージ制御装置９１２を省略することができる。また、ディスク９４１−１〜９４１−ｋの代わりに、光ディスク装置、光磁気ディスク装置、半導体記憶装置等の他の記憶装置を用いてもよい。
【０１３４】
図８及び図１１のフローチャートは一例に過ぎず、ストレージシステムの構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、ディスクのアクセス回数が過不足なく平均化される書き込み回数の代わりに、別の値を処理カウントの初期値に設定する場合は、図１１のステップ１１０１の処理を省略することができる。
【０１３５】
また、各ディスクの書き込み可能回数を求めることなく、各ディスクの書き込み回数に基づいて書き込み先ディスクを選択する場合は、ステップ１１０２の処理を省略することができる。各ディスクの書き込み可能回数と書き込み回数とを求めることなく、各ディスクの読み出し回数に基づいて、直接、書き込み先ディスクを選択する場合は、ステップ１１０２及びステップ１１０３の処理を省略することができる。ステップ１１０２とステップ１１０３の順序を入れ替えても構わない。
【０１３６】
図２、図４、図６Ａ、図６Ｂ、図１０Ａ、図１０Ｂ、及び図２０に示した配置パターンは一例に過ぎず、ストレージシステムの構成や条件に応じて他の配置パターンを用いてもよい。例えば、各ストライプに複数のＨＳ領域が含まれていてもよく、各ストライプに３つ以上の冗長セットに対応する情報領域が含まれていてもよく、各冗長セットに６つ以上の情報領域が含まれていてもよい。
【０１３７】
図１２Ａ及び図１２Ｂに示した復元対象の順序は一例に過ぎず、４２個の復元対象を別の順序で処理してもよい。
【０１３８】
図７のストレージ制御装置７０１と図９のストレージ制御装置９１１及びストレージ制御装置９１２は、例えば、図２７に示すような情報処理装置（コンピュータ）を用いて実現可能である。
【０１３９】
図２７の情報処理装置は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）２７０１、メモリ２７０２、入力装置２７０３、出力装置２７０４、補助記憶装置２７０５、媒体駆動装置２７０６、ＩＦ２７０７、及びＩＦ２７０８を備える。これらの構成要素はバス２７０９により互いに接続されている。
【０１４０】
メモリ２７０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、ストレージ制御プログラム及びデータを格納する。メモリ２７０２は、図９の記憶部９２７又は記憶部９３７として用いることができる。
【０１４１】
図２７の情報処理装置がストレージ制御装置９１１である場合、ＣＰＵ２７０１は、例えば、メモリ２７０２を利用してストレージ制御プログラムを実行することにより、復元部９２４、リビルド制御部９２５、及びコマンド発行制御部９２６として動作する。図２７の情報処理装置がストレージ制御装置９１２である場合、ＣＰＵ２７０１は、例えば、メモリ２７０２を利用してストレージ制御プログラムを実行することにより、復元部９３４、リビルド制御部９３５、及びコマンド発行制御部９３６として動作する。
【０１４２】
入力装置２７０３は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置２７０４は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。
【０１４３】
補助記憶装置２７０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置２７０５は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置２７０５にストレージ制御プログラム及びデータを格納しておき、それらをメモリ２７０２にロードして使用することができる。補助記憶装置２７０５は、図９の記憶部９２７又は記憶部９３７として用いることができる。
【０１４４】
媒体駆動装置２７０６は、可搬型記録媒体２７１０を駆動し、その記録内容にアクセスする。可搬型記録媒体２７１０は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体２７１０は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。ユーザ又はオペレータは、この可搬型記録媒体２７１０にストレージ制御プログラム及びデータを格納しておき、それらをメモリ２７０２にロードして使用することができる。
【０１４５】
このように、ストレージ制御プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ２７０２、補助記憶装置２７０５、及び可搬型記録媒体２７１０のような、物理的な（非一時的な）記録媒体が含まれる。
【０１４６】
ＩＦ２７０７は、Local Area Network（ＬＡＮ）、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。ＩＦ２７０７は、図９のＩＦ９２１又はＩＦ９３１として用いることができる。
【０１４７】
ＩＦ２７０８は、ＤＥ９１３と通信するための通信インタフェースである。ＩＦ２７０８は、図９のＩＦ９２３又はＩＦ９３３として用いることができる。
【０１４８】
なお、情報処理装置が図２７のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、ＩＦ２７０７を介してユーザ又はオペレータからの指示や情報を入力する場合は、入力装置２７０３を省略してもよい。ＩＦ２７０７を介してユーザ又はオペレータへの問い合わせや処理結果を出力する場合は、出力装置２７０４を省略してもよい。また、可搬型記録媒体２７１０を利用しない場合は、媒体駆動装置２７０６を省略してもよい。
【０１４９】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１５０】
図１乃至図２７を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、前記予備領域の数よりも多くの記憶装置が故障した場合、前記複数の情報領域と前記１つ以上の予備領域との複数の組み合わせに含まれる故障した第１の記憶装置の複数の情報領域に対する復元処理において故障していない第２の記憶装置から情報が読み出される回数に基づいて、前記複数の組み合わせのうち１つの組み合わせに含まれる前記第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先記憶装置を決定する制御部、
を備えることを特徴とするストレージ制御装置。
（付記２）
前記制御部は、前記復元処理において前記第２の記憶装置を含む故障していない特定の複数の記憶装置から情報が読み出される回数と、前記復元処理において前記特定の複数の記憶装置に復元された情報が書き込まれる回数と、前記第２の記憶装置から情報が読み出される回数とに基づいて、前記第２の記憶装置に復元された情報が書き込まれる回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数に基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記１記載のストレージ制御装置。
（付記３）
前記制御部は、前記特定の複数の記憶装置に復元された情報が書き込まれる回数と、前記第２の記憶装置から情報が読み出される回数とに基づいて、前記第２の記憶装置に復元された情報を書き込むことが可能な回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数と前記第２の記憶装置に復元された情報を書き込むことが可能な回数とに基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記２記載のストレージ制御装置。
（付記４）
前記制御部は、前記第２の記憶装置に復元された情報を書き込むことが可能な回数に対する、前記第２の記憶装置に復元された情報が書き込まれる回数の比率に基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記３記載のストレージ制御装置。
（付記５）
冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、前記予備領域の数よりも多くの記憶装置が故障した場合、前記複数の情報領域と前記１つ以上の予備領域との複数の組み合わせに含まれる故障した第１の記憶装置の複数の情報領域に対する復元処理において故障していない第２の記憶装置から情報が読み出される回数に基づいて、前記複数の組み合わせのうち１つの組み合わせに含まれる前記第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先記憶装置を決定する、
処理をコンピュータに実行させるストレージ制御プログラム。
（付記６）
前記書き込み先記憶装置を決定する処理は、前記復元処理において前記第２の記憶装置を含む故障していない特定の複数の記憶装置から情報が読み出される回数と、前記復元処理において前記特定の複数の記憶装置に復元された情報が書き込まれる回数と、前記第２の記憶装置から情報が読み出される回数とに基づいて、前記第２の記憶装置に復元された情報が書き込まれる回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数に基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記５記載のストレージ制御プログラム。
（付記７）
前記書き込み先記憶装置を決定する処理は、前記特定の複数の記憶装置に復元された情報が書き込まれる回数と、前記第２の記憶装置から情報が読み出される回数とに基づいて、前記第２の記憶装置に復元された情報を書き込むことが可能な回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数と前記第２の記憶装置に復元された情報を書き込むことが可能な回数とに基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記６記載のストレージ制御プログラム。
（付記８）
前記書き込み先記憶装置を決定する処理は、前記第２の記憶装置に復元された情報を書き込むことが可能な回数に対する、前記第２の記憶装置に復元された情報が書き込まれる回数の比率に基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記７記載のストレージ制御プログラム。
（付記９）
コンピュータが、
冗長化されたデータを表す情報を格納する複数の情報領域と１つ以上の予備領域とが分散して配置された複数の記憶装置のうち、前記予備領域の数よりも多くの記憶装置が故障した場合、前記複数の情報領域と前記１つ以上の予備領域との複数の組み合わせに含まれる故障した第１の記憶装置の複数の情報領域に対する復元処理において故障していない第２の記憶装置から情報が読み出される回数に基づいて、前記複数の組み合わせのうち１つの組み合わせに含まれる前記第１の記憶装置の１つの情報領域に対応する復元された情報を書き込む書き込み先記憶装置を決定する、
ことを特徴とするストレージ制御方法。
（付記１０）
前記コンピュータは、前記復元処理において前記第２の記憶装置を含む故障していない特定の複数の記憶装置から情報が読み出される回数と、前記復元処理において前記特定の複数の記憶装置に復元された情報が書き込まれる回数と、前記第２の記憶装置から情報が読み出される回数とに基づいて、前記第２の記憶装置に復元された情報が書き込まれる回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数に基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記９記載のストレージ制御方法。
（付記１１）
前記コンピュータは、前記特定の複数の記憶装置に復元された情報が書き込まれる回数と、前記第２の記憶装置から情報が読み出される回数とに基づいて、前記第２の記憶装置に復元された情報を書き込むことが可能な回数を求め、前記第２の記憶装置に復元された情報が書き込まれる回数と前記第２の記憶装置に復元された情報を書き込むことが可能な回数とに基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記１０記載のストレージ制御方法。
（付記１２）
前記コンピュータは、前記第２の記憶装置に復元された情報を書き込むことが可能な回数に対する、前記第２の記憶装置に復元された情報が書き込まれる回数の比率に基づいて、前記書き込み先記憶装置として前記第２の記憶装置を用いるか否かを決定することを特徴とする付記１１記載のストレージ制御方法。
【符号の説明】
【０１５１】
１０１−１、１０１−２、１０２、１１１−１〜１１１−４、１１２、２０１−１〜２０１−７、９４１−１〜９４１−ｋ  ディスク
７０１、９１１、９１２  ストレージ制御装置
７１１、９２２、９３２  制御部
９０１  ホスト装置
９０２  ストレージ装置
９１３  ＤＥ
９２１、９２３、９３１、９３３、２７０７、２７０８  ＩＦ
９２４、９３４  復元部
９２５、９３５  リビルド制御部
９２６、９３６  コマンド発行制御部
９２７、９３７  記憶部
２００１〜２００３  網掛け
２７０１  ＣＰＵ
２７０２  メモリ
２７０３  入力装置
２７０４  出力装置
２７０５  補助記憶装置
２７０６  媒体駆動装置
２７０９  バス
２７１０  可搬型記録媒体
【図１】
0006515458.tif 000003
【図２】
0006515458.tif 000004
【図３】
0006515458.tif 000005
【図４】
0006515458.tif 000006
【図５】
0006515458.tif 000007
【図６Ａ】
0006515458.tif 000008
【図６Ｂ】
0006515458.tif 000009
【図７】
0006515458.tif 000010
【図８】
0006515458.tif 000011
【図９】
0006515458.tif 000012
【図１０Ａ】
0006515458.tif 000013
【図１０Ｂ】
0006515458.tif 000014
【図１１】
0006515458.tif 000015
【図１２Ａ】
0006515458.tif 000016
【図１２Ｂ】
0006515458.tif 000017
【図１３】
0006515458.tif 000018
【図１４】
0006515458.tif 000019
【図１５】
0006515458.tif 000020
【図１６】
0006515458.tif 000021
【図１７】
0006515458.tif 000022
【図１８】
0006515458.tif 000023
【図１９】
0006515458.tif 000024
【図２０】
0006515458.tif 000025
【図２１】
0006515458.tif 000026
【図２２】
0006515458.tif 000027
【図２３】
0006515458.tif 000028
【図２４】
0006515458.tif 000029
【図２５】
0006515458.tif 000030
【図２６】
0006515458.tif 000031
【図２７】
0006515458.tif 000032