(57)【要約】【課題】  ディスクドライブのユーザデータを識別できるディスクアレイシステムを提供する。【解決手段】  本発明は、計算機と接続され、計算機によってデータが入出力されるディスクアレイシステムであって、計算機よって書き込まれるユーザデータを格納するディスク装置と、計算機及び前記複数のディスク装置間で送受信されるデータを一時的に格納するキャッシュメモリと、キャッシュメモリへのデータの入出力を制御する制御部と、を有し、制御部は、ディスク装置のセクタにユーザデータが格納されているか否かを判定可能なユーザデータ識別情報を記憶することを特徴とする。【選択図】      図１
2006139478.tif 000002
【特許請求の範囲】
【請求項１】
計算機と接続され、前記計算機によってデータが入出力されるディスクアレイシステムであって、
前記計算機よって書き込まれるユーザデータを格納するディスク装置と、
前記計算機及び前記複数のディスク装置間で送受信されるデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリへのデータの入出力を制御する制御部と、を有し、
前記制御部は、前記ディスク装置のセクタにユーザデータが格納されているか否かを判定可能なユーザデータ識別情報を記憶することを特徴とするディスクアレイシステム。
【請求項２】
前記制御部は、前記計算機からの要求によらない前記ディスク装置へのアクセス時に、前記ユーザデータ識別情報を参照して、当該ユーザデータ識別情報に対応するセクタに前記ユーザデータが格納されているか否かを判定することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項３】
前記制御部は、前記ディスク装置に配置されたセクタへの連続したアクセス時に、次のセクタの前記ユーザデータ識別情報を参照して、当該次のセクタに前記ユーザデータが格納されているか否かを判定することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項４】
前記制御部は、
前記ユーザデータが正規なものであるかを判定可能な保証コードを前記ディスク装置に格納し、
前記保証コードと共に、前記ユーザデータ識別情報を記憶することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項５】
前記制御部は、
前記ユーザデータから生成される冗長データを前記ディスク装置に格納し、
前記冗長データに対応するセクタの少なくとも一部に前記ユーザデータが格納されているか否かを判定可能なユーザデータ識別情報を生成し、
前記冗長データに対応して、前記生成されたユーザデータ識別情報を記憶することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項６】
前記制御部は、前記生成されたユーザデータ識別情報を前記冗長データが格納されるセクタに記憶することを特徴とする請求項５に記載のディスクアレイシステム。
【請求項７】
前記制御部は、前記生成されたユーザデータ識別情報をビットマップ形式で前記キャッシュメモリに記憶することを特徴とする請求項５に記載のディスクアレイシステム。
【請求項８】
前記制御部は、
前記ディスク装置の複数の記憶領域を用いてＲＡＩＤ領域を構成する際に、前記ディスク装置のセクタ各々に前記ユーザデータが格納されていないことを示す前記ユーザデータ識別情報を設定し、
前記ディスク装置のセクタに前記ユーザデータが書き込まれるとき、当該セクタに前記ユーザデータが格納されていることを示す前記ユーザデータ識別情報を設定することを特徴とする請求項５に記載のディスクアレイシステム。
【請求項９】
前記制御部は、前記ディスク装置に格納されていたデータを前記冗長データを用いて復元する際に、前記ユーザデータ識別情報を参照し、前記ユーザデータが格納されているセクタのデータのみを復元することを特徴とする請求項５に記載のディスクアレイシステム。
【請求項１０】
前記ディスクアレイシステムには、第１論理ユニット及び第２論理ユニットが備わり、
前記制御部は、前記第１論理ユニットに格納されたデータを第２論理ユニットに複写する際に、前記ユーザデータ識別情報を参照し、前記ユーザデータが格納されているセクタのデータのみを前記第２論理ユニットに複写することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項１１】
前記ディスクアレイシステムには、第１論理ユニット及び第２論理ユニットが備わり、
前記制御部は、前記ユーザデータ識別情報を参照し、
前記第１論理ユニット及び前記第２論理ユニットのいずれのセクタにもユーザデータが格納されていない場合は、前記第１論理ユニット及び第２論理ユニットを統合し、
前記第１論理ユニット又は前記第２論理ユニットの少なくとも一つのセクタにユーザデータが格納されている場合は、その旨を通知することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項１２】
前記制御部は、当該ディスクアレイシステムに格納されたデータを、他のディスクアレイシステムに複写する際に、前記ユーザデータ識別情報を参照し、前記ユーザデータが格納されているセクタのデータのみを前記他のディスクアレイシステムに複写することを特徴とする請求項１に記載のディスクアレイシステム。
【請求項１３】
前記制御部は、前記ディスク装置に格納されていたデータを確認する際に、前記ユーザデータ識別情報を参照し、前記ユーザデータが格納されているセクタのデータのみを確認することを特徴とする請求項１に記載のディスクアレイシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤを用いたディスクアレイシステムに関し、特に、ディスクドライブのユーザデータを識別できるディスクアレイシステムに関する。
【背景技術】
【０００２】
一般的なディスクアレイシステムは、複数のディスクドライブを備え、これらによってＲＡＩＤを構成する。例えば、ＲＡＩＤ５では、ある一つのデータを分割して同時に複数のディスクドライブに書き込む。すなわち、データは予め決められたサイズ（ストライプサイズ）に分割されて、分割されたデータが各ディスクドライブのセクタに書き込まれる。複数のディスクドライブのうちの１つは、他のディスクドライブに書き込まれたデータのパリティ（冗長データ）が書き込まれる。
【０００３】
このように、ディスクアレイシステムにおいては、ディスクドライブの障害時にもデータを復元できるように冗長データを作成し、ディスクドライブに保存しているが、さらに、ディスクアレイ全体の信頼性を高める目的で、各論理データブロックごとに保証コードを付加する方式が知られている。具体的には、データをディスクドライブへ書き込む際には、各論理データブロックごとに論理的なアドレス値ＬＡ（Logical Address）と排他的論理和ＬＲＣ（Longitudinal Redundancy Check）とからなる保証コードをデータに付加してディスクドライブへ書き込む。データをディスクドライブから読み出す際には、各論理データブロックに付加されたＬＡ及びＬＲＣ値をチェックすることによって、ディスクドライブ内でのアドレス誤り、データ誤りを確認する方法が知られている（例えば、特許文献１、特許文献２参照。）。
【特許文献１】特開２００１−２０２２９５号公報
【特許文献２】特開２０００−３４７８１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述したように、ディスクアレイシステムでは、クライアントからの書き込み要求があったときにデータをディスクドライブの指定されたブロックアドレスに書き込む。しかし、そのデータの内容がどのようなものであるかはファイルシステムに依存する。よって、ディスクアレイシステム側では書き込み内容を識別することができない。
【０００５】
例えば、ディスクアレイシステムが、あるディスクドライブＡのデータを他のディスクドライブＢにコピーする場合は、ディスクドライブＡにどのようなデータが記録されているかをディスクアレイシステムは認識することはできない。そのため、ディスクドライブＡの内容にかかわらず、全てのセクタをディスクドライブＢにコピーする必要がある。従って、ディスク容量が増えるにつれて、コピーに掛かる時間も増大する。
【０００６】
本発明は、ユーザデータを識別可能なディスクアレイシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、計算機と接続され、計算機によってデータが入出力されるディスクアレイシステムであって、計算機よって書き込まれるユーザデータを格納するディスク装置と、計算機及び前記複数のディスク装置間で送受信されるデータを一時的に格納するキャッシュメモリと、キャッシュメモリへのデータの入出力を制御する制御部と、を有し、制御部は、ディスク装置のセクタにユーザデータが格納されているか否かを判定可能なユーザデータ識別情報を記憶することを特徴とする。
【発明の効果】
【０００８】
本発明によると、計算機から受信したデータに保証コードを付与すると共に、当該複数のデータ各々にユーザデータ識別ビットを付与するので、キャッシュメモリ、及び／又は、複数のディスクドライブに格納されたデータが、ユーザデータかを識別することができる。そのため、ディスクドライブ間のコピー時間の短縮、ディスクドライブ障害時のディスク復旧時間の短縮、が可能となる。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明の実施の形態を図面に基づいて説明する。
【００１０】
図１は、本発明の第１の実施の形態のシステム構成を示すブロック図である。
【００１１】
ホスト計算機Ａ１００、ホスト計算機Ｂ１１０、ホスト計算機Ｃ１２０は、ディスクアレイシステム２００に対してリード／ライト要求を送信することで、データを入出力する装置である。本実施形態におけるディスクアレイシステムにおいては、一又は複数のホストとディスクアレイシステム２００とは、バススイッチ１３０を介して接続される。本実施の形態では、バススイッチ１３０を介して、複数のディスクアレイシステム（２００Ａ、２００Ｂ）が接続される。
【００１２】
ディスクアレイシステム２００は、ホスト入出力インタフェース２１０、２１１と、ディスクキャッシュ２３０と、ディスク入出力インタフェース２５０、２５１と、ディスクドライブ群２７０、２７１と、制御装置（ＭＰＵ）２８０と、バスブリッジ２８５と、メモリ２９０と、キャッシュコントローラ３００とを有している。ディスクドライブ群２７０、２７１は、各々が複数のディスクドライブを有している。制御装置２８０は、マイクロプロセッサ（ＭＰＵ）を含んでおり、ディスクアレイ全体の動作を制御する。
【００１３】
本実施の形態では、一例として、ディスクドライブ群２７０は三つのディスクドライブ２７７〜２７９を有し、これらがＲＡＩＤ５を構成する。三つのディスクドライブ２７７〜２７９のうち何れか二つがデータ（Ｄ）を格納し、他の一つが当該二つのディスクドライブに格納したデータのパリティ（Ｐ）を格納する。
【００１４】
なお、本実施の形態では、ホスト入出力インタフェース２１０、２１１は二つ設けられているが、少なくとも一つ以上設ければよい。また、ディスク入出力インタフェース２５０、２５１も二つ設けられているが、少なくとも一つ以上設ければよい。さらに、ディスクドライブ群２７０、２７１も二つ設けられているが、少なくとも一つ以上設ければよい。
【００１５】
なお、制御装置２８０がディスクアレイ制御プログラム２９１を実行することによって、ホスト入出力インタフェース２１０、キャッシュコントローラ３００、ＭＰＵ２８０、バスブリッジ２８５、メモリ２９０、ディスクキャッシュ２３０、及び、ディスク入出力インタフェース２５０がＲＡＩＤコントローラ（ディスクコントローラ）として機能する。
【００１６】
ホスト計算機Ａ１００、ホスト計算機Ｂ１１０、ホスト計算機Ｃ１２０は、バススイッチ１３０及びいずれかのホストバス（ホスト通信路）Ａ１４０、Ｂ１４１を介して、ディスクアレイシステム２００のホスト入出力インタフェース２１０、２１１に接続される。図１には、３台のホスト計算機がディスクアレイシステム２００に接続されている例を示したが、少なくとも１台以上のホスト計算機がディスクアレイシステム２００に接続されていればよい。
【００１７】
ホスト入出力インタフェース２１０、２１１は、ホスト計算機Ａ１００、ホスト計算機Ｂ１１０、ホスト計算機Ｃ１２０からの入出力要求を受け付け、これらホスト計算機とキャッシュコントローラ３００との間でデータを転送する。このホスト入出力インタフェース２１０、２１１は、ホスト側内部バス（ホスト側内部通信路）２２０を介してキャッシュコントローラ３００と接続される。
【００１８】
ディスク入出力インタフェース２５０、２５１は、ディスクドライブ群２７０、２７１とキャッシュコントローラ３００との間でデータを転送する。このディスク入出力インタフェース２５０、２５１は、各々ディスクバス（ディスク通信路）Ａ２６０、Ｂ２６１によってディスクドライブ群２７０、２７１と接続される。また、ディスク側内部バス（ディスク側内部通信路）２４０によってキャッシュコントローラ３００と接続される。
【００１９】
ディスクキャッシュ２３０は、キャッシュバス（キャッシュ通信路）２３１によってキャッシュコントローラ３００に接続される。ディスクキャッシュ２３０は、ホスト入出力インタフェース２１０、２１１と、ディスク入出力インタフェース２５０、２５１との間で転送されるデータを一時的に記憶する。
【００２０】
キャッシュコントローラ３００は、ホスト側内部バスバッファ３１０と、キャッシュ制御部３２０と、ディスク側内部バスバッファ３３０とを有する。ホスト側内部バスバッファ３１０は、ホスト入出力インタフェース２１０、２１１とディスクキャッシュ２３０との間で転送されるデータを一時的に記憶する。キャッシュ制御部３２０は、ディスクキャッシュ２３０へのデータの読み書きを制御する。ディスク側内部バスバッファ３３０は、ディスク入出力インタフェース２５０、２５１とディスクキャッシュ２３０との間で転送されるデータを一時的に記憶する。
【００２１】
また、キャッシュコントローラ３００は、ＬＡ／ＬＲＣ付加／検査／削除部３４０を有する。このＬＡ／ＬＲＣ付加／検査／削除部３４０は、ホスト入出力インタフェース２１０、２１１からディスクキャッシュ２３０に転送されるデータに後述するＬＡ及びＬＲＣを付加する。また、このＬＡ／ＬＲＣ付加／検査／削除部３４０は、ディスクキャッシュ２３０からホスト入出力インタフェース２１０、２１１に転送されるデータに付加されているＬＡ及びＬＲＣを検査し、これを削除する。
【００２２】
制御装置２８０は、バスブリッジ２８５を介してメモリ２９０及びキャッシュコントローラ３００に接続される。
【００２３】
制御装置２８０は、ディスクアレイ制御プログラム２９１によってディスクアレイ全体の処理を制御する。また、制御装置２８０は、内部データ転送制御プログラム２９２によってキャッシュコントローラ３００に対してＬＡ／ＬＲＣの設定を指示する。さらに、制御装置２８０は、ホスト入出力インタフェース２１０、２１１、ディスク入出力インタフェース２５０、２５１に対して、データ転送指示を発行する。
【００２４】
また、制御装置２８０は、ユーザデータ識別制御プログラム２９３によって、後述するように、ディスクドライブ群２７０、２７１の各セクタのユーザデータを識別する。
【００２５】
メモリ２９０には、ディスクアレイ制御プログラム２９１と、内部データ転送制御プログラム２９２と、ユーザデータ識別制御プログラム２９３とが記憶されており、これらは制御装置２８０によって実行される。
【００２６】
次に、本発明のキャッシュコントローラ３００による、ＲＡＩＤのパリティの設定について説明する。
【００２７】
図２Ａ及び図２Ｂは、本実施の形態のディスクドライブ群２７０を示すブロック図である。
【００２８】
前述したように本実施の形態のディスクドライブ群２７０は、三つのディスクドライブ２７７乃至２７９によってＲＡＩＤ５が構成されている。ＲＡＩＤ５では、何れか二つのディスクドライブがデータを格納するデータ部となる。他の一つのディスクドライブは当該二つのディスクドライブに格納したデータ部のデータのパリティを格納するパリティ部となる。これら二つのデータ部と一つのパリティ部によってストライプ列が構成される。また、データ部に格納されるデータ及びパリティ部に格納されるパリティデータは、図４で後述するように、５２０Ｂｙｔｅの拡張データである。
【００２９】
図２Ａに示す例では、ディスクドライブ２７７のストライプＤ０及びディスクドライブ２７８のストライプＤ１にデータが格納される。ストライプＤ０及びストライプＤ１の各データの排他的論理和であるパリティが、ディスクドライブ２７９のストライプＰ０に格納される。
【００３０】
図２Ｂは、セクタ列のデータ及びパリティデータを示すブロック図である。
【００３１】
図２Ｂは、図２Ａに示すデータ部のストライプＤ０及びストライプＤ１、並びにパリティ部のストライプＰ０の詳細を示す。
【００３２】
各ストライプは、複数のセクタを格納可能に分割されている。図２Ｂの例では、ストライプサイズが２Ｋｂｙｔｅに設定されており、一つのストライプに四つのセクタが格納される。ディスクドライブに格納されるデータはセクタ単位に分割（ｓ０、ｓ１、ｓ２、ｓ３、ｓ４、ｓ５・・・）されて配置される。すなわち、分割されたデータがストライプの各セクタに並べられて格納される。
【００３３】
また、パリティデータは、ストライプ列のセクタを元に算出される。すなわち、異なるストライプの同じ列にあるセクタ同士によって算出された排他的論理和がパリティデータとなる。図２Ｂの例では、セクタ「ｓ０」とセクタ「ｓ４」とを元に算出された排他的論理和がパリティデータ「ｐ０」となる。この、パリティデータの算出するための要素となるセクタの組を本実施の形態では「セクタ列」と呼ぶ。なお、実際にはストライプサイズは６４Ｋｂｙｔｅの値を用いることが多い。このストライプサイズの値はシステムにより異なり、値を変更可能なシステムもある。
【００３４】
次に、ＬＡ／ＬＲＣ付加／検査／削除部３４０によって行われるＬＡ又はＬＲＣの付加、検査、削除処理について説明する。
【００３５】
本実施の形態のディスクアレイシステム２００は、ホストコンピュータから受信するデータを論理的なブロックに分割して管理・処理する。この分割最低単位を論理データブロックと呼ぶ。論理データブロックのサイズはディスクドライブへの最小読み書き単位（すなわち、セクタサイズ）とする。
【００３６】
キャッシュコントローラ３００のＬＡ／ＬＲＣ付加／検査／削除部３４０は、各論理データブロックに、保証コードとして、ＬＡ（Logical Address）及びＬＲＣ（Longitudinal Redundancy Check）を付加する。
【００３７】
ＬＡは、転送先アドレスの一部を含む４ｂｙｔｅのデータで、論理ブロックに分割されたデータの異常アドレスに対する読み書きを検出する。このＬＡの値は、連続する論理データブロック間では連続する値をとる。
【００３８】
本実施の形態では、４ｂｙｔｅのＬＡのうち、２バイトに、ホスト計算機からのライト要求に含まれる転送先アドレス（書込先ディスクドライブのブロックアドレス）の下位２ｂｙｔｅを格納する。そして、その他の２ｂｙｔｅは転送先アドレスを表さない。この未使用の２ｂｙｔｅのうち１ビットをユーザデータ識別ビット４０４とする。このユーザデータ識別ビット４０４は、当該ユーザデータ識別ビット４０４を含むＬＡ４０２が付加された論理データブロック４０１に、ユーザデータが書き込まれているかどうかを示す。
【００３９】
例えば、ユーザデータ識別ビット４０４が「１」に設定されている場合は、その論理データブロック４０１には、ユーザ（すなわち、ホスト計算機１００）からの書き込みがあり、何らかのユーザデータがそのブロックに存在していることを示す。一方、ユーザデータ識別ビットが「０」に設定されている場合は、その論理データブロック４０１には、ユーザからの書き込みはなく、ユーザデータは存在しないことを示す。
【００４０】
制御装置２８０は、メモリ２９０内に格納されている内部データ転送制御プログラム２９２を実行することによって、ＬＡ／ＬＲＣ付加／検査／削除部３４０に付加すべき値を指定する。また、制御装置２８０は、メモリ２９０内に格納されているユーザデータ識別制御プログラム２９３を実行することによって、ユーザデータ識別ビット値を指定する。
【００４１】
キャッシュコントローラ３００のホスト側内部バスバッファ３１０には、ホストから受信したユーザデータが論理データブロック単位に分割されて格納されている。ＬＡ／ＬＲＣ付加／検査／削除部３４０は、この分割されたデータのうち、最初の論理データブロックには制御装置２８０によって指定された値及びユーザ識別ビット値をＬＡとして付加し、それに続く論理データブロックには、制御装置２８０から指定された値に１ずつ加算した値及びユーザデータ識別ビット値をＬＡとして付加する。
【００４２】
また、ユーザデータ識別制御プログラム２９３は、ＬＡに含められたユーザデータ識別ビットを参照して、指定されたセクタにユーザデータが格納されているか否かを識別する。すなわち、ユーザデータ識別ビット４０４が「１」に設定されている場合は、そのセクタにはユーザデータが格納されていることが分かる。ユーザデータ識別ビット４０４が「０」に設定されている場合は、そのセクタに対してユーザデータは格納されていないことが分かる。
【００４３】
ＬＲＣは、論理データブロックのサイズである５１２ｂｙｔｅに、ＬＡのサイズ４ｂｙｔｅを加えた５１６ｂｙｔｅ長のデータの１ｂｙｔｅ目から５１６ｂｙｔｅ目までを４ｂｙｔｅ単位に分割し、この分割されたデータの排他的論理和をとった値である。
【００４４】
ＬＡ／ＬＲＣ付加／検査／削除部３４０は、各論理データブロックのデータと付加されているＬＡ値を用いてＬＲＣの値を計算する。そして、ＬＡ／ＬＲＣ付加／検査／削除部３４０は、論理データブロックにＬＡ（ユーザ識別ビット値を含む）が付加されたものに、更にＬＲＣを付加する。
【００４５】
ＬＡ／ＬＲＣ付加／検査／削除部３４０は、ＬＲＣの値を検査することによって、データ転送中及びディスクドライブ内部で生じたデータのビットエラーを検出できる。
【００４６】
なお、ＬＡ／ＬＲＣの付加、検査、削除の具体的な方法については、特許文献１や特許文献２に詳しく記載されている。
【００４７】
図３に、ＬＡ／ＬＲＣ付加／検査／削除部３４０が、論理データブロックにＬＡ及びＬＲＣを付加する例を示す。
【００４８】
論理データブロック４０１、４４１、４５１は、キャッシュコントローラ３００によって、ホスト計算機Ａ１００からディスクアレイシステム２００に転送されたユーザデータが分割されたものである。この三つの論理データブロックは、もともとは、論理データブロック４０１、４４１、４５１の順に連続したユーザデータであった。
【００４９】
ＬＡ４０２は、論理データブロック４０１に対応するＬＡであり、論理データブロック４０１の最後尾に付加される。ＬＡ４０２の大きさは４ｂｙｔｅである。
【００５０】
また更に、論理データブロック４０１にＬＡ４０２を加えた５１６ｂｙｔｅ長のデータを、４バイト単位で横方向（１ｂｙｔｅ目から５１６ｂｙｔｅ目への方向）に排他的論理和をとった値が、ＬＲＣ４０３である。ＬＲＣ４０３は、ＬＡ４０２の後ろに付加される。ＬＲＣ４０３の大きさは４ｂｙｔｅである。
【００５１】
ＬＡ４４２とＬＲＣ４４３は、論理データブロック４４１に対するＬＡ及びＬＲＣであり、ＬＡ４５２とＬＲＣ４５３は、論理データブロック４５１に対するＬＡ及びＬＲＣである。これらは、ＬＡ４０２、ＬＲＣ４０３と同様に各論理データブロックに付加される。
【００５２】
論理データブロック４０１、ＬＡ４０２、ＬＲＣ４０３をあわせた５２０ｂｙｔｅのデータが拡張データ４００である。同様に、データ４４０、４５０も拡張データである。
【００５３】
ＬＡ及びＬＲＣは、ホスト入出力インタフェース２１０、２１１からディスクキャッシュ２３０へのデータ転送時に、ＬＡ／ＬＲＣ付加／検査／削除部３４０によって付加される。
【００５４】
また、ディスクキャッシュ２３０からホスト入出力インタフェース２１０、２１１へのデータ転送時に、ＬＡ／ＬＲＣ付加／検査／削除部３４０が、ディスクキャッシュ２３０から読み出された拡張データ中のＬＡ及びＬＲＣを検査する。この検査によって、拡張データに誤りがなければ、ＬＡ／ＬＲＣ付加／検査／削除部３４０はＬＡ及びＬＲＣの合計８ｂｙｔｅ分を拡張データから削除する。そして、キャッシュコントローラ３００は、論理データブロック５１２ｂｙｔｅのみをホスト入出力インタフェース２１０又は２１１へ転送する。
【００５５】
従って、ホスト側内部バス２２０では論理データブロックが転送され、キャッシュバス２３１及びディスク側内部バス２４０では拡張データが転送される。
【００５６】
ディスクキャッシュ２３０とディスク入出力インタフェース２５０、２５１間では拡張データが転送される。ディスクキャッシュ２３０とディスク入出力インタフェース２５０、２５１間で拡張データが転送される場合には、ＬＡ／ＬＲＣ付加／検査／削除部３４０は、ＬＡ及びＬＲＣの検査のみを行い、誤りがなければ拡張データが転送される。
【００５７】
一方、ＬＡ／ＬＲＣ付加／検査／削除部３４０がＬＡ及びＬＲＣを検査した時に、ＬＡ又はＬＲＣの誤りが検出された場合は、ＬＡ／ＬＲＣ付加／検査／削除部３４０により誤りの内容が制御装置２８０へ報告され、制御装置２８０がエラー処理ルーチンによって誤りを適切に処理する。
【００５８】
図４は、セクタ列のデータ及びパリティデータのブロック図である。
【００５９】
図２Ｂで前述したように、本実施形態では、二つのセクタ（セクタ列）によって一つのパリティデータが算出される。
【００６０】
図４の例は、セクタ列のデータのユーザデータ識別ビット４０４及びパリティデータのパリティ部ユーザデータ識別ビット４３４を示す。
【００６１】
セクタ列に格納される拡張データ４００は、前述したように、ＬＡ４０２にユーザデータ識別ビット４０４が含まれる。一方、パリティデータ（拡張データ４３０）にも同様に、パリティ部ユーザデータ識別ビット４３４が含まれる。
【００６２】
論理データブロック４３１は、セクタｓ０の論理データブロック４０１及びセクタｓ１の論理データブロック４１１のパリティが格納される。パリティデータｐ０は、セクタ列のデータをディスクキャッシュ２３０に格納する際に、ディスクアレイ制御プログラム２９１によって計算される。
【００６３】
なお、拡張データ４００の論理データブロック４０１及び拡張データ４１０の論理データブロック４１１の排他的論理和がパリティであり、論理データブロック４３１に格納される。
【００６４】
パリティデータに関しては、ホストから指定される転送アドレスは存在したいため、ＬＡとして格納すべきアドレスはない。ここでは例えば、ＬＡ４３２に、パリティデータを格納するディスクドライブの転送先アドレスを含むようにすれば、同様のアドレス誤りチェックができる。また、ＬＲＣ４３３は、論理データブロック４３１及びＬＡ４３２を４ｂｙｔｅ単位で排他的論理和をとった値である。
【００６５】
制御装置２８０によって実行されるユーザデータ識別制御プログラム２９３は、ＬＡ／ＬＲＣ付加／検査／削除部３４０に対して、ＬＡに含められるパリティ部ユーザデータ識別ビット４３４を指示する。
【００６６】
パリティ部ユーザデータ識別ビット４３４は、論理データブロック４３１にセクタ列のユーザデータに基づいて算出されたパリティが存在することを示す。換言すると、当該論理データブロックのパリティの計算に用いられたセクタ列にユーザデータが書き込まれているか否かを示す。すなわち、セクタ列の少なくとも一つのセクタに何らかのユーザデータが書き込まれているときは、そのセクタ列に対応するパリティデータのパリティ部ユーザデータ識別ビットは「１」となる。
【００６７】
つまり、パリティ部ユーザデータ識別ビット４３４が「１」に設定されている場合は、論理データブロック４３１にはユーザデータから算出されたパリティが格納されている。そして同時に、当該拡張データ４３０に対応するセクタ列の少なくとも一つのセクタの論理データブロックにはユーザデータが書き込まれている。
【００６８】
一方、パリティ部ユーザデータ識別ビット４３４が「０」に設定されている場合は、その論理データブロック４３１にはユーザデータから算出されたパリティは格納されていない。そして同時に、当該拡張データ４３０に対応するセクタ列のいずれのセクタにもユーザデータは書き込まれていない。
【００６９】
図５は、本発明の第１の実施の形態のディスクドライブ群２７０のＲＡＩＤ領域の作成処理のフローチャートであり、制御装置２８０（ディスクアレイ制御プログラム２９１）によって実行される。
【００７０】
ディスクアレイシステム２００は、ディスクドライブ群２７０に備えられるディスクドライブ２７７〜２７９に、ホスト計算機１００等によって利用可能なＲＡＩＤ領域を設定する。この設定は、管理端末１５０からユーザの指示によって行われる。
【００７１】
まず、管理端末１５０からＲＡＩＤ領域の作成の指示を受領すると（ステップ１００１）、受領した指示の内容に基づいたＲＡＩＤ領域をディスクドライブ群２７０の複数のディスクドライブ２７７〜２７９に確保する（ステップ１００２）。管理端末からは、ＲＡＩＤタイプ、論理ユニット（ＬＵ）容量、ストライプサイズ等が指示される。制御装置２８０は、受領した指示内容に基づいて、複数のディスクドライブ２７７〜２７９に、指示されたディスク容量を確保する。ディスクドライブ群に作成されるＲＡＩＤ領域は、ホスト計算機１００からは、一つの論理ユニット（ＬＵ）として扱われる。なお、ディスクドライブ群２７０内に複数のＬＵを設定してもよい。この複数のＬＵは、ホストやファイルシステム毎に、ＲＡＩＤのタイプ、ＬＵ容量等を異ならせてもよい。
【００７２】
次に、管理端末１５０から、ステップ１００３で確保したＲＡＩＤ領域に対するＲＡＩＤフォーマット指示を受領すると（ステップ１００３）、当該ＲＡＩＤ領域全体に、ＲＡＩＤ固有データを書き込み、ＲＡＩＤ構成のＬＵとして利用可能にする（ステップ１００４）。
【００７３】
このとき、ＲＡＩＤ領域のデータ部に書き込まれるデータには前述したＬＡ／ＬＲＣを付加する。さらに当該データ部を含むストライプ列のセクタ列に対応するパリティを算出して、該算出されたパリティデータをパリティ部に書き込む。このパリティデータにはＬＡ／ＬＲＣが付加される。これらセクタ列のデータのユーザデータ識別ビット４０４、４１４及びパリティデータのパリティ部ユーザデータ識別ビット４３４は、すべて０に設定する。すなわち、ユーザデータが格納されていないことを示す。
【００７４】
以上の処理が終了すると、制御装置２８０は、管理端末１５０に、ＲＡＩＤ領域の作成完了を通知する（ステップ１００５）。
【００７５】
次に、ユーザデータ識別ビット４０４を用いたユーザデータの識別について説明する。
【００７６】
図６は、本発明の第１の実施の形態のユーザデータの書き込み処理を示すフローチャートであり、制御装置２８０（ディスクアレイ制御プログラム２９１）によって実行される。
【００７７】
ディスクアレイシステム２００の制御装置２８０は、ホスト計算機Ａ１００からのライト要求を受領すると、そのライト要求に指定されているセクタ及び当該セクタのセクタ列に対応するパリティデータ（拡張データ４３０）の全てが、ディスクキャッシュ２３０に格納されているか否かを判定する（ステップ２００１）。
【００７８】
要求に係るセクタ又はパリティデータのうち少なくとも一つがディスクキャッシュ２３０に格納されていないと判定した場合は、当該要求に係るセクタ又は対応するパリティデータをディスクドライブ群２７０から読み出し、ディスクキャッシュ２３０に格納する（ステップ２００２）。このとき、当該セクタと対応するパリティデータの一部が、ディスクキャッシュ２３０に格納されている場合は、ディスクキャッシュ２３０に格納されているセクタ又は対応するパリティデータを用い、ディスクキャッシュ２３０に格納されていないセクタと対応するパリティデータをディスクドライブ２７７〜２７９から読み出す。
【００７９】
要求された全てのセクタ及び対応するパリティデータがディスクキャッシュ２３０に格納されていると判定した場合は、当該セクタ及び対応するパリティデータをディスクドライブ２７７〜２７９から読み出すことなく、ステップ２００３に移行する。なお、ディスクドライブ２７７〜２７９から読み出されたセクタ及びパリティデータは５２０ｂｙｔｅの拡張データとしてディスクキャッシュ２３０に格納される。
【００８０】
次に、受領したライト要求に対する応答（ライトコマンド許可通知）を、ホスト計算機Ａ１００に送信する（ステップ２００３）。
【００８１】
ホスト計算機Ａ１００は、このライトコマンド許可通知を受信すると、要求セクタに書き込まれるユーザデータをディスクアレイシステム２００に送信する。
【００８２】
制御装置２８０は、ディスクドライブ群２７０に書き込まれるユーザデータを受領すると（ステップ２００４）、当該ユーザデータを、複数のディスクドライブに格納するために、論理データブロックごとに分割する。そして、当該論理データブロックに付加されるＬＡ４０２に含まれるユーザデータ識別ビット４０４を「１」に設定する（ステップ２００５）。
【００８３】
具体的には、書き込まれるユーザデータは、ホスト入力インタフェース２１０又は２１１、ホスト内部バス２２０を経由して、キャッシュコントローラ３００に送られる。キャッシュコントローラ３００では、ユーザデータは、ＬＡ／ＬＲＣ付加／検査／削除部３４０によってＬＡ及びＬＲＣが付加される。
【００８４】
ユーザデータ識別制御プログラム２９３は、ＬＡ／ＬＲＣ付加／検査／削除部３４０に対して、ＬＡ４０２に含められるユーザデータ識別ビット４０４を「１」又は「０」のいずれかに設定するかを指示する。ここでは、ライト要求によってユーザデータが書き込まれるので、ユーザデータ識別制御プログラム２９３は、当該ＬＡ４０２に含められるユーザデータ識別ビット４０４をユーザデータが存在することを示す「１」に設定することを指示する。
【００８５】
論理データブロック４０１には、ユーザデータ識別ビット４０４が「１」に設定されたＬＡ４０２及びＬＲＣ４０３が付加され、拡張データ４００となる。拡張データ４００は、ディスクキャッシュ２３０に格納される（ステップ２００６）。
【００８６】
同様に、ホストからのライトデータが複数セクタの場合は、論理データブロック４１１についても、ＬＡ４１２及びＬＲＣ４１３を付加し、拡張データ４１０を生成する。拡張データ４１０は、ディスクキャッシュ２３０に格納される。
【００８７】
次に、ライト要求によってデータが書き込まれるセクタに対応するパリティを作成する。通常ＲＡＩＤ５であれば、旧データ、旧パリティ及び新データの排他的論理和によって、新パリティが算出される。作成したパリティは論理データブロック４３１である。この論理データブロック４３１にＬＡ４３２及びＬＲＣ４３３を付加すると共に、パリティ部ユーザデータ識別ビット４３４を「１」に設定する。ＬＡ４３２のパリティ部ユーザデータ識別ビット４３４が「１」に設定され、ＬＡ４３２及びＬＲＣ４３３が付加された拡張データ４３０は、ディスクキャッシュ２３０に格納される（ステップ２００７）。
【００８８】
セクタ列の拡張データ４００、４１０及びパリティデータ（拡張データ４３０）がディスクキャッシュ２３０に格納されると、制御装置２８０はホスト計算機Ａ１００にデータの書き込みが完了した旨のメッセージ（コンプリート）を返信する（ステップ２００８）。なお、ディスクキャッシュ２３０に格納された拡張データは、任意のタイミング又は所定の操作があったときにデステージされ、ディスクドライブ群２７０に格納される。
【００８９】
このように、ディスクアレイシステム２００において、論理データブロック４０１に付加するＬＡ４０２にユーザデータ識別ビット４０４を、パリティデータのＬＡ４３２にパリティ部ユーザデータ識別ビット４３４を、それぞれ設定する。ディスクアレイシステム２００は、後に説明する処理においてこのユーザデータ識別ビット４０４又はパリティ部ユーザデータ識別ビット４３４を参照することで、ユーザデータが存在するか否かを識別できる。
【００９０】
なお、ホストからストライプ列よりも大きいサイズのデータの書き込みがあり、その書き込みデータのみでパリティを算出できる場合には、パリティの算出に旧データと旧パリティは不要なので、ステップ２００１及びステップ２００２は省略してもよい。
【００９１】
次に、コレクションコピーについて説明する。
【００９２】
コレクションコピーでは、ディスクドライブ群２７０のいずれか一つのディスクドライブに障害が発生した場合に、ディスクアレイシステム２００が、他の新たなスペアのディスクドライブに障害の発生したディスクドライブの内容を復元する。
【００９３】
具体的には、前述したＲＡＩＤ５構成において、二つのデータ部及び一つのパリティ部が格納される三つのディスクドライブ２７７〜２７９のうち、いずれか一つのディスクドライブに障害が発生した場合、当該障害の発生したディスクドライブのデータを、正常な他の二つのディスクドライブに格納されているデータ及びパリティデータから復元する。
【００９４】
同一ストライプ列において、二つのディスクドライブに格納されているデータの排他的論理和は他の一つのディスクドライブに格納されているデータと等しい。このことを利用して、一つのディスクドライブに障害が発生した場合は、他の二つのディスクドライブに格納されているデータの排他的論理和から、障害が発生したディスクドライブに格納されていたデータを復元する。すなわち、コレクションコピーができる。
【００９５】
ここで、本発明のコレクションコピーでは、ユーザデータ識別ビット４０４を用い、ユーザデータが保存されているセクタ列のみを復元対象とする。
【００９６】
図７は、本発明の第１の実施の形態のコレクションコピー処理のフローチャートであり、制御装置２８０（ディスクアレイ制御プログラム２９１）によって実行される。
【００９７】
制御装置２８０がディスクの障害が発生したことを検知した場合や、管理端末１５０からの指示によってこの処理を開始する。
【００９８】
まず、ＲＡＩＤ領域の最初のセクタ列に対応するパリティデータをディスクドライブから読み出し、ディスクキャッシュ２３０に格納する（ステップ３００１）。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ３００３に移行する。
【００９９】
なお、パリティ部が障害のあったディスクドライブにあり、パリティデータが読み出せない場合は、他の二つのディスクドライブがデータ部である。この場合は、コレクションコピー時（ステップ３００５）に二つのデータ部のセクタ列からパリティデータを算出して、スペアのディスクドライブに書き込む。
【０１００】
次に、当該パリティデータのパリティ部ユーザデータ識別ビット４３４が１であるか否かを判定する（ステップ３００３）。
【０１０１】
パリティ部ユーザデータ識別ビット４３４が１でない場合（パリティ部ユーザデータ識別ビット４３４が０である場合）は、当該パリティデータに対応するセクタ列にはユーザデータは格納されていない。従って、対応するセクタ列のデータを復元する必要がないので、コレクションコピーは行わず、当該セクタ列に対応するスペアのディスクドライブのセクタにはＲＡＩＤフォーマットデータを書き込む（ステップ３００４）。このとき、このセクタのセクタ列に対応するパリティが計算され、書き込まれる。
【０１０２】
一方、パリティ部ユーザデータ識別ビット４３４が１である場合は、当該パリティデータに対応するセクタ列にはユーザデータが格納されている。そこで、セクタ列のうち、障害の発生していないディスクドライブのセクタに格納されているデータを読み出し、ディスクキャッシュ２３０に格納する。そして、読み出したデータとパリティデータとによってコレクションコピーを行う（ステップ３００５）。
【０１０３】
なお、パリティ部が障害のあったディスクドライブにあり、パリティデータが読み出せない場合は、パリティ部ユーザデータ識別ビット４３４を取得することができないので、対応するセクタ列の全てのデータを取得して、当該データに含まれるユーザデータ識別ビット４０４を参照してユーザデータの有無を判断する。
【０１０４】
コレクションコピーは、障害の発生していないデータ部のデータとパリティデータとから、障害の発生したデータ部のデータを復元し、スペアのディスクドライブに格納する。例えば、拡張データ４１０が格納されているディスクドライブに障害が生じた場合、セクタ列の一方のセクタの論理データブロック４０１に格納されているデータと、パリティのセクタの論理データブロック４３１に格納されているデータとの排他的論理和を算出する。この算出された排他的論理和が、障害が生じたディスクドライブのセクタの論理データブロック４１１に格納されていたデータである。
【０１０５】
その後、ステップ３００１にて読み出したパリティデータに対応するセクタ列が、ＲＡＩＤ領域の最終セクタであるか否かを判定する（ステップ３００６）。
【０１０６】
ＲＡＩＤ領域の最終セクタのパリティデータを読み出していれば、ＲＡＩＤ領域の最終セクタまでコレクションコピーが終了しているので、このコレクションコピー処理を終了する。
【０１０７】
一方、ＲＡＩＤ領域の最終セクタのパリティデータを読み出していなければ、ＲＡＩＤ領域の最終セクタまでコレクションコピーが終了していないので、ステップ３００２に戻る。
【０１０８】
ステップ３００２では、ＲＡＩＤ領域の次のセクタ列に対応するパリティデータを読み出し、ディスクキャッシュ２３０に格納する。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ３００３に移行する。
【０１０９】
以上説明したコレクションコピー処理によって、ＲＡＩＤを構成する複数のディスクドライブの一つに障害が発生した場合に、障害が発生したディスクドライブに格納されていたデータを新たなディスクドライブに復元することができる。本実施の形態では、ユーザデータが存在するセクタ列のみ、コレクションコピーを行うので、コレクションコピーに要する時間を削減することができる。
【０１１０】
特に、個々のデータのユーザデータ識別ビット４０４ではなく、セクタ列に対応したパリティデータのパリティ部ユーザデータ識別ビット４３４によってセクタ列のユーザデータの有無を確認するので、処理時間の削減効果が高い。
【０１１１】
なお、スペアのディスクドライブがディスクアレイシステム２００にない場合は、管理者が障害のあったディスクドライブを取り外し、新たなディスクドライブに交換することで、新たなディスクドライブをスペアのディスクドライブとしてもよい。
【０１１２】
なお、パリティ部ユーザデータ識別ビット４３４によってユーザデータの有無を確認するのではなく、各ディスクドライブのデータのユーザデータ識別ビット４０４等によって、ユーザデータの判定をしてもよい。
【０１１３】
また、コレクションコピー処理中に、障害が発生したディスクドライブとは別のディスクドライブにさらに障害が発生した場合は、一般的に当該ＲＡＩＤ領域の閉塞（アクセス中止）を行う。本発明の実施の形態では、パリティ部ユーザデータ識別ビット４３４によって、セクタ列のデータの有無を確認できるため、障害の発生したディスクドライブにデータが格納されていない場合は、ＲＡＩＤ領域の閉塞を行う必要がない。そのためホスト計算機Ａ１００からのアクセスを中止することなく業務の運営が可能となる。
【０１１４】
図８は、第１の実施の形態の変形例のコレクションコピー処理を示すフローチャートである。
【０１１５】
図７では、パリティ部ユーザデータ識別ビット４３４によってユーザデータの有無を識別し、その都度処理をしたが、本変形例では、パリティ部ユーザデータ識別ビット４３４に対応する識別ビット５０１を集めたビットマップ５００（図９参照）をディスクキャッシュ２３０上に作成し、このビットマップ５００を参照してまとめて処理することにより、処理が高速化する。
【０１１６】
図８の処理は、制御装置２８０（ディスクアレイ制御プログラム２９１）によって実行される。
【０１１７】
制御装置２８０がディスクの障害が発生したことを検知した場合や、管理端末１５０からの指示によってこの処理を開始する。
【０１１８】
まず、ＲＡＩＤ領域の最初のセクタ列に対応するパリティデータをディスクドライブから読み出し、ディスクキャッシュ２３０に格納する。（ステップ８００１）。なお当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ８００３に移行する。
【０１１９】
なお、パリティ部が障害のあったディスクドライブにあり、パリティデータが読み出せない場合は、他の二つのディスクドライブがデータ部である。この場合は、コレクションコピー時（ステップ８００７）に二つのデータ部のセクタ列からパリティデータを算出して、スペアのディスクドライブに書き込む。
【０１２０】
次に、当該パリティデータのパリティ部ユーザデータ識別ビット４３４が１であるか否かを判定する（ステップ８００３）。
【０１２１】
パリティ部ユーザデータ識別ビット４３４が１でない場合、（パリティ部ユーザデータ識別ビット４３４が０である場合）は、当該パリティデータに対応するセクタ列にはユーザデータは格納されていない。従って、対応するセクタ列のデータを復元する必要はない。そこで、コレクションコピーを行わないことを示すため、当該セクタ列に対応している識別ビット５０１を０に設定する。（ステップ８００４）。
【０１２２】
一方、パリティ部ユーザデータ識別ビット４３４が１である場合は、当該パリティデータに対応するセクタ列にはユーザデータが書き込まれ、ユーザデータが存在することを示す。そこで、当該パリティデータに対応するセクタ列に対応する識別ビット５０１を１に設定する（ステップ８００５）。その後、ステップ８００６に移行する。
【０１２３】
なお、パリティ部が障害のあったディスクドライブにあり、パリティデータが読み出せない場合は、パリティ部ユーザデータ識別ビット４３４を取得することができないので、対応するセクタ列の全てのデータを取得して、当該データに含まれるユーザデータ識別ビット４０４を参照してデータの有無を判断し、識別ビット５０１を設定する。
【０１２４】
識別ビット５０１は、ディスクキャッシュに備えられているビットマップ５００として保存される（図９参照）。識別ビット５０１の１ビットは、ＲＡＩＤ領域（ＬＵ）のセクタ列の一つに対応する。セクタ列の少なくとも一つのセクタにユーザデータが書き込まれていれば識別ビット５０１を１に設定する。当該セクタ列にはいずれもユーザデータが書き込まれていなければ識別ビットは０となる。
【０１２５】
その後、ステップ８００１にて読み出したパリティデータに対応するセクタが、ＲＡＩＤ領域の最終セクタであるか否かを判定する（ステップ８００６）。
【０１２６】
ＲＡＩＤ領域の最終セクタのパリティデータを読み出していれば、ＲＡＩＤ領域の最終セクタまでビットマップの設定が終了しているので、ステップ８００７に移行する。
【０１２７】
一方、ＲＡＩＤ領域の最終セクタのパリティデータを読み出していなければ、ＲＡＩＤ領域の最終セクタまでビットマップの設定が終了していないので、ステップ８００２に戻る。
【０１２８】
ステップ８００２では、ＲＡＩＤ領域の次のセクタ列に対応するパリティデータを読み出し、ディスクキャッシュ２３０に格納する。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、ステップ８００３に移行する。
【０１２９】
ステップ８００７では、ビットマップ５００を参照して、ビットマップが１に設定されている識別ビット５０１に対応するセクタ列を、全て取得する。そして、取得した全てのセクタ列のセクタにコレクションコピーを行う（ステップ８００７）。
【０１３０】
例えば、拡張データ４１０が格納されているディスクドライブに障害が生じた場合、データ部の論理データブロック４０１に格納されているデータと、パリティ部の論理データブロック４３１に格納されているデータとの排他的論理和を算出する。この算出された排他的論理和が、障害が生じたディスクドライブの論理データブロックに格納されていたデータである。
【０１３１】
次に、ビットマップ５００を参照して、０に設定されている識別ビット５０１に対応するセクタ列にはＲＡＩＤフォーマットデータを書き込む（ステップ８００８）。このとき、このセクタ列に対応するパリティが計算され、書き込まれる。すべてのセクタについて処理が終了すると、コレクションコピー処理を終了する。
【０１３２】
以上説明した変形例のコレクションコピー処理では、ビットマップ５００を用いて、対応するセクタ列のユーザデータの有無を識別し、ユーザデータが存在するセクタのみ、コレクションコピーを行うので、ディスクドライブ（又はディスクキャッシュ２３０）へのアクセスが減り、処理時間の削減、処理負荷の低減ができる。
【０１３３】
次に、ディスクアレイシステム２００の、装置内でのＬＵコピーについて説明する。
【０１３４】
前述したように、ディスクドライブ群２７０には、複数のＬＵを設定することができる。この複数のＬＵのうち、あるＬＵの内容をすべて他のＬＵにコピー（複写）することができる。
【０１３５】
図１０は、第１の実施の形態の装置内ＬＵコピー処理のフローチャートであり、制御装置２８０（内部データ転送制御プログラム２９２）によって実行される。
【０１３６】
装置内ＬＵコピー処理は、管理端末１５０又はホスト計算機１００等からの要求によって開始される。
【０１３７】
まず、コピー元のＬＵから、最初のセクタのセクタ列に対応するパリティデータをディスクドライブから読み出し、ディスクキャッシュ２３０に格納する（ステップ４００１）。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ４００３に移行する。
【０１３８】
次に、当該パリティデータのパリティ部ユーザデータ識別ビット４３４が１であるか否かを判定する（ステップ４００３）。
【０１３９】
パリティ部ユーザデータ識別ビット４３４が１でない場合（パリティ部ユーザデータ識別ビット４３４が０である場合）は、当該パリティデータに対応するセクタ列にはユーザデータは格納されていない。従って、そのセクタ列のデータをコピーする必要がないので、コピー先ＬＵの当該セクタ列に対応するセクタにＲＡＩＤフォーマットデータを書き込む（ステップ４００４）。このとき、このセクタ列に対応するパリティデータが計算され、書き込まれる。
【０１４０】
一方、パリティ部ユーザデータ識別ビット４３４が１である場合は、当該パリティデータに対応するセクタ列にはユーザデータが格納されている。そこで、そのセクタ列の全てのデータをディスクドライブから読み出し、ディスクキャッシュ２３０に格納する。そして、読み出したデータを、対応するコピー先ＬＵに書き込む（ステップ４００５）。このときコピー先ＬＵでパリティが算出され、書き込まれる。
【０１４１】
その後、ステップ４００１にて読み出したパリティデータに対応するセクタ列が、コピー元ＬＵの最終セクタであるか否かを判定する（ステップ４００６）。
【０１４２】
コピー元ＬＵの最終セクタのパリティデータを読み出していれば、コピー元ＬＵの最終セクタまでのコピーが終了しているので、この装置内ＬＵコピー処理を終了する。
【０１４３】
一方、コピー元ＬＵの最終セクタのパリティデータを読み出していなければ、コピー元ＬＵの最終セクタまでのコピー処理が終了していないので、ステップ４００２に戻る。
【０１４４】
ステップ４００２では、コピー元ＬＵの次のセクタ列に対応するパリティデータを読み出し、ディスクキャッシュ２３０に格納する。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ４００３に移行する。
【０１４５】
以上説明した装置内ＬＵコピー処理によって、あるＲＡＩＤ構成のＬＵの内容を、他のＬＵにそのままコピーすることができる。本実施の形態では、ユーザデータが存在するセクタ列のみコピーするので、ＬＵ間のコピーに要する時間を削減することができる。
【０１４６】
特に、個々のデータのユーザデータ識別ビット４０４ではなく、セクタ列に対応したパリティ部ユーザデータ識別ビット４３４によってセクタ列のユーザデータの有無を確認するので、処理時間の削減効果が高い。
【０１４７】
なお、パリティ部ユーザデータ識別ビット４３４によってユーザデータの有無を確認するのではなく、各ディスクドライブのデータのユーザデータ識別ビット４０４等によって、ユーザデータであるかを判定してもよい。
【０１４８】
なお、コピー元ＬＵとコピー先ＬＵのＲＡＩＤ構成は異なっていてもかまわない。
【０１４９】
次に、ディスクアレイシステム２００間のＬＵコピーについて説明する。
【０１５０】
図１に示すように、ディスクアレイシステム２００Ａとディスクアレイシステム２００Ｂとがバススイッチ１３０を介して接続されている。以下に説明する装置間ＬＵコピー処理では、ディスクアレイシステム２００Ａの、あるＬＵに格納されているデータをすべて、他のディスクアレイシステム２００ＢのＬＵに複写する。
【０１５１】
図１１は、第１の実施の形態の装置間ＬＵコピー処理のフローチャートであり、制御装置２８０（内部データ転送制御プログラム２９２）によって実行される。
【０１５２】
まず、管理端末１５０からコピー先のディスクアレイシステム２００Ｂに、コピー元と同容量のＬＵの作成を指示する（ステップ５００１）。このときＲＡＩＤ構成は異なっていてもかまわない。コピー先のディスクアレイシステム２００Ｂにおいて、管理端末１５０からＬＵの作成指示を受信した制御装置２８０は、ＲＡＩＤ領域作成処理（図５参照）を行う。この処理が完了すると、管理端末１５０にＬＵ作成完了を通知する（ステップ５００２）。
【０１５３】
管理端末１５０は、コピー先のディスクアレイシステム２００ＢからＬＵ作成完了が通知されると、コピー元のディスクアレイシステム２００Ａに、コピー先ディスクアレイシステムを指示して、装置間コピーの開始を要求する（ステップ５００３）。
【０１５４】
コピー元のディスクアレイシステム２００Ａにおいて、制御装置２８０は、管理端末１５０からの要求を受信すると、最初のセクタ列に対応するパリティデータをコピー元のＬＵから読み出し、ディスクキャッシュ２３０に格納する（ステップ５００４）。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ５００６に移行する。
【０１５５】
次に、当該パリティデータのパリティ部ユーザデータ識別ビット４３４が１であるか否かを判定する（ステップ５００６）。
【０１５６】
パリティ部ユーザデータ識別ビット４３４が１でない場合（パリティ部ユーザデータ識別ビット４３４が０である場合）は、当該パリティデータに対応するセクタ列にはユーザデータは格納されていない。従って、当該セクタ列のデータをコピーする必要がないので、コピー先のディスクアレイシステム２００Ｂにデータを転送することなく、ステップ５００８に移行する。
【０１５７】
一方、パリティ部ユーザデータ識別ビット４３４が１である場合は、当該パリティデータに対応するセクタ列にはユーザデータが格納されている。そこで、そのセクタ列の全てのデータをディスクドライブから読み出し、ディスクキャッシュ２３０に格納する。そして、読み出したセクタ列のデータを、コピー先ディスクアレイシステム２００Ｂに送信する。コピー先ディスクアレイシステム２００Ｂでは、受信したデータをコピー先ＬＵの対応するセクタ列に書き込む（ステップ５００７）。この際に、データのユーザデータ識別ビット４０４を調べ、ユーザデータ識別ビット４０４が１のデータのみコピー先ディスクアレイシステム２００Ｂに送信すると、さらに処理を効率化できる。
【０１５８】
コピー先ディスクアレイシステム２００Ｂは、コピー元ディスクアレイシステム２００Ａからの書き込みをホスト計算機１００Ａからのライトコマンドと同様に受け取り、処理する。その処理は図６と同様である。
【０１５９】
その後、ステップ５００４で読み出したパリティデータに対応するセクタ列が、コピー元ＬＵの最終セクタであるか否かを判定する（ステップ５００８）。
【０１６０】
コピー元ＬＵの最終セクタのパリティデータを読み出していれば、コピー元ＬＵの最終セクタまでのコピーが終了しているので、コピー元ディスクアレイシステム２００Ａは、管理端末１５０に、装置間コピーの終了を通知して（ステップ５００９）、装置間ＬＵコピー処理を終了する。
【０１６１】
一方、コピー元ＬＵの最終セクタのパリティデータを読み出してなければ、コピー元ＬＵの最終セクタまでのコピー処理が終了していないので、ステップ５００５に戻る。
【０１６２】
ステップ５００５ではコピー元ＬＵの次のセクタ列のパリティデータを読み出し、ディスクキャッシュ２３０に格納する。なお、当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ５００６に移行する。
【０１６３】
以上説明した装置間コピー処理によって、あるディスクアレイシステムのＬＵの内容を、他のディスクアレイシステムのＬＵにそのままコピーすることができる。本実施の形態では、ユーザデータが存在するセクタ列のみをコピーするので、ディスクアレイ装置間のＬＵのコピーに要する時間を削減することができる。
【０１６４】
特に、個々のデータ部のユーザデータ識別ビット４０４ではなく、セクタ列に対応したパリティデータのパリティ部ユーザデータ識別ビット４３４によってセクタ列のユーザデータの有無を確認するので、処理時間の削減効果が高い。
【０１６５】
なお、パリティデータのパリティ部ユーザデータ識別ビット４３４によってユーザデータの有無を確認するのではなく、各ディスクドライブのデータのユーザデータ識別ビット４０４等によって、ユーザデータであるかを判定してもよい。
【０１６６】
また、コピー先のディスクアレイシステム２００Ｂに、（１）フォーマット無しでＬＵを使用できる機能、（２）コピー元からデータの書き込まれたセクタ以外のセクタを全てＲＡＩＤフォーマットする機能、を備えると、前記ステップ５００１及び５００２の処理を行う必要はない。
【０１６７】
次に、ＬＵ統合処理について説明する。
【０１６８】
前述したように、ディスクドライブ群２７０には、複数のＬＵを設定することができる。この複数のＬＵを、一つのＬＵとしてまとめる（統合する）ことができる。
【０１６９】
図１２は、第１の実施の形態のＬＵ統合処理のフローチャートであり、制御装置２８０（内部データ転送制御プログラム２９２）によって実行される。
【０１７０】
このＬＵ統合処理では、二つのＬＵ「ＬＵ０」と「ＬＵ１」とを統合して一つのＬＵとする。
【０１７１】
管理端末１５０からの要求によって処理を開始する。
【０１７２】
まず、管理端末１５０から、統合元のＬＵ番号である「ＬＵ０」及び「ＬＵ１」を指定してＬＵ統合指示を送信する（ステップ６００１）。
【０１７３】
ディスクアレイシステム２００において、制御装置２８０は、この指示を受けると、まず、ＬＵ０のすべてのパリティデータのパリティ部ユーザデータ識別ビット４３４を取得し、全てのパリティ部ユーザデータ識別ビット４３４が０であるか否かを判定する（ステップ６００２）。
【０１７４】
ＬＵ０の少なくとも一つのパリティ部ユーザデータ識別ビット４３４が０でない（少なくとも一つのパリティ部ユーザデータ識別ビット４３４が１である）場合は、ＬＵ０には、少なくとも一つ以上のセクタにユーザデータが書き込まれていることがわかる。ＬＵ統合処理では、ＬＵのデータ部に格納されたデータは、ＬＵの統合後には意味のないデータとなり、実質消去されてしまうことと同等である。これを避けるために、当該統合元ＬＵ０にはデータが存在し、空きのＬＵではない旨を管理端末１５０に通知し（ステップ６００６）、ユーザの指示を仰ぐ。管理端末１５０のユーザは、この通知によって、当該ＬＵにはデータが存在することがわかる。
【０１７５】
Ｕ０のすべてのパリティ部ユーザデータ識別ビット４３４が０であると判定した場合は、次に、ステップ６００２と同様に、ＬＵ１のすべてのパリティデータのパリティ部ユーザデータ識別ビット４３４を取得し、全てのパリティ部ユーザデータ識別ビット４３４が０であるか否かを判定する（ステップ６００３）。
【０１７６】
少なくとも一つのパリティ部ユーザデータ識別ビット４３４が０でない（少なくとも一つのパリティ部ユーザデータ識別ビット４３４が１である）場合は、ＬＵ１には、少なくとも一つ以上のセクタにユーザデーが書き込まれていることがわかるので、当該ＬＵ１にはデータが存在し、空きのＬＵではない旨を管理端末１５０に通知する（ステップ６００６）。
【０１７７】
ＬＵ０及びＬＵ１の全てのパリティ部ユーザデータ識別ビット４３４が０であると判定した場合は、ＬＵ０及びＬＵ１の統合処理を行う（ステップ６００７）。具体的には、ＬＵ０とＬＵ１とを見かけ上一つのＬＵであるように外部に見せるように、ディスクアレイシステム２００Ａの内部設定を行う。この統合処理が完了すると、管理端末１５０にＬＵの統合が完了した旨を送信する（ステップ６００５）。
【０１７８】
以上説明したＬＵ統合処理によって、複数のＬＵを一つのＬＵとして統合することができる。複数のＬＵを統合すると、統合元のＬＵのデータは失われてしまう。本実施の形態では、このことを防ぐために、統合元のＬＵにユーザデータが書き込まれているか否かを確認する。このとき、ユーザデータ識別ビット４０４ではなく、セクタ列に対応したパリティデータのパリティ部ユーザデータ識別ビット４３４によってセクタ列のユーザデータの有無を確認する。このようにすることで、管理者は、ユーザデータが書き込まれているＬＵを事前に知ることができ、ユーザデータが書き込まれているＬＵが誤って統合されることを防ぐことができる。
【０１７９】
なお、パリティ部ユーザデータ識別ビット４３４によってユーザデータの有無を確認するのではなく、各ディスクドライブのデータのユーザデータ識別ビット４０４によって、ユーザデータの有無を確認してもよい。
【０１８０】
次に、オンラインベリファイについて説明する。
【０１８１】
オンラインベリファイとは、ディスクアレイシステム２００が、アイドル時や処理負荷の小さいとき等に、ディスクドライブ２７７〜２７９に障害が発生していないかを調べるために、ディスク装置の各セクタに対してベリファイチェックを行うことである。
【０１８２】
図１３は、第１の実施の形態のオンラインベリファイ処理のフローチャートであり、制御装置２８０（ディスクアレイ制御プログラム２９１）によって実行される。
【０１８３】
処理の開始は、ディスクアレイシステム２００の処理負荷が所定の値以下となったときや、完全にアイドル時となった時を契機とする。また、定期的に実行してもよい。
【０１８４】
まず、ディスクアレイシステム２００のディスクドライブ群２７０に設定されている、最初のＬＵを選択する（ステップ７００１）。
【０１８５】
次に、選択したＬＵの最初のセクタ列に対応するパリティデータをディスクドライブから読み出し、ディスクキャッシュ２３０に格納する（ステップ７００２）。なお当該パリティデータが既にディスクキャッシュ２３０に格納されている場合は、パリティデータをディスクドライブから読み出すことなく、ステップ７００４に移行する。
【０１８６】
次に、当該パリティデータのパリティ部ユーザデータ識別ビット４３４が１であるか否かを判定する（ステップ７００４）。
【０１８７】
パリティ部ユーザデータ識別ビット４３４が１でない場合、（パリティ部ユーザデータ識別ビット４３４が０である場合）は、当該パリティデータに対応するセクタ列にはユーザデータは格納されていない。従って、そのセクタ列にはベリファイチェックを行う必要がないので、ベリファイチェックは行わず、ステップ７００６に移行する。
【０１８８】
一方、パリティ部ユーザデータ識別ビット４３４が１である場合は、当該パリティデータに対応するセクタ列にはユーザデータが格納されている。そこで、そのセクタ列のベリファイチェックを行う（ステップ７００５）。
【０１８９】
具体的には、当該セクタ列の全データに対して、ディスク装置の該当セクタのベリファイコマンドを発行する。ベリファイコマンドを受け取ったディスクドライブは、該当セクタのデータが正しく記録されているかディスクドライブ内部でテストを行い、結果を報告する。ディスクドライブによってセクタ障害が報告された場合は、制御装置２８０は、当該障害セクタを代替させるリアサイン処理、当該障害セクタを含むセクタ列の残りのデータ及び対応するパリティデータからデータを回復させるデータ回復処理、障害セクタ数の記録等、障害を回避する処理を行う。なお、パリティ部に関しては、ステップ７００２でパリティデータの読み出しに成功しているため、ベリファイチェックを行う必要はない。
【０１９０】
ステップ７００６では、ステップ７００２にて読み出したパリティデータに対応するセクタ列が、選択したＬＵの最終セクタであるか否かを判定する。
【０１９１】
ＬＵの最終セクタのパリティデータを読み出していれば、当該選択したＬＵは全てベリファイチェックが終了しているので、ステップ７００７に移行する。
【０１９２】
一方、ステップ７００２にてパリティデータを読み出したセクタが、ＬＵの最終セクタでないと判定した場合は、ステップ７００３に移行する。
【０１９３】
ステップ７００３では、次のセクタ列に対応するパリティデータを読み出し、ディスクキャッシュ２３０に格納する。なお当該パリティデータが既にディスクキャッシュ２３０に存在する場合は、パリティデータをディスクドライブから読み出すことなくステップ７００４に移行する。
【０１９４】
ステップ７００７では、処理したＬＵが、ディスクアレイシステムの中の最終のＬＵであるかを判定する（ステップ７００７）。最終のＬＵの処理が終了したと判定した場合は、ディスクドライブ全てのベリファイチェックが済んでいるので、処理を終了する。最終のＬＵでない場合は、ディスクアレイシステム２００に設定されている次のＬＵを選択し、ステップ７００２に戻る。
【０１９５】
以上説明したオンラインベリファイ処理によって、ディスクアレイシステムのＬＵのオンラインベリファイができる。本実施の形態では、ユーザデータが存在するセクタのみベリファイチェックを行うので、オンラインベリファイ処理に要する時間を削減できる。
【０１９６】
特に、個々のデータのユーザデータ識別ビット４０４ではなく、セクタ列に対応したパリティデータのパリティ部ユーザデータ識別ビット４３４によってセクタ列のユーザデータの有無を確認するので、処理時間の削減効果が高い。
【０１９７】
なお、パリティ部ユーザデータ識別ビット４３４によってユーザデータの有無を確認するのではなく、各ディスクドライブのデータのユーザデータ識別ビット４０４等によって、ユーザデータの有無を確認してもよい。
【０１９８】
なお、ステップ７００５のベリファイチェックにおいて、ディスク装置へのベリファイコマンド発行ではなく、対応するセクタ列のデータをディスクキャッシュ２３０に読み出すことによって同様のセクタ障害テストとすることもできる。この場合、さらにＲＡＩＤパリティの整合性チェックも実施可能である。
【０１９９】
以上のように構成された本発明の第１の実施の形態のディスクアレイシステム２００は、ディスクドライブ群に設定されたＲＡＩＤ領域（ＬＵ）のセクタに保存される拡張データ４００に、ユーザデータの存在の有無を示すユーザデータ識別ビット４０４を設定するので、ユーザデータの存在するセクタと、ユーザデータの存在しないセクタとで処理を分けることができる。
【０２００】
特に、ユーザデータの存在しないセクタには、コレクションコピー、装置内ＬＵコピー、装置間ＬＵコピー、ＬＵ統合、オンラインベリファイ等の処理を行わない。こうすることで、ディスクアレイシステム２００で行われる処理の時間を削減でき、処理負荷を低減ができる。
【０２０１】
さらに、冗長データを含むデータシステム（ＲＡＩＤ）を構成している場合は、セクタ列に対応したパリティデータのパリティ部ユーザデータ識別ビット４３４によってセクタ列のユーザデータの有無を確認するので、ディスクアレイシステム２００で行われる処理時間の削減効果が高い。
【０２０２】
なお、本発明は、ＲＡＩＤ構成にパリティ部を持つＲＡＩＤ５を用いたが、ＲＡＩＤ４やパリティ部を持つ他のＲＡＩＤ構成であってもよいし、他の冗長データを含むデータシステムでもよい。
【０２０３】
また、パリティ部を用いないＲＡＩＤ構成としてもよいし、ＲＡＩＤ構成でないＬＵを用いてもよい。この場合は、パリティ部ユーザデータ識別ビット４３４によってはセクタ列のユーザデータの存在の有無を確認することはできないが、データのユーザデータ識別ビット４０４によって、ユーザデータの存在の有無は少なくとも識別可能であり、処理時間を削減できる。
【０２０４】
次に、本発明の第２の実施の形態について説明する。
【０２０５】
第２の実施の形態では、パリティ部のパリティ部ユーザデータ識別ビット４３４ではなく、各セクタ列ごとに、当該セクタ列のユーザデータの有無に対応した識別ビット５０１をビットマップ５００（図９参照）としてディスクキャッシュ２３０に持つ。なお、システム構成は第１の実施の形態の図１と共通であるため説明は省略する。
【０２０６】
図６で前述したように、ディスクドライブにユーザデータが書き込まれたときに、ユーザデータの格納されたセクタ列に対応するパリティデータのパリティ部ユーザデータ識別ビット４３４を１に設定する（ステップ２００７）。このときに、ビットマップ５００の当該セクタ列に対応する識別ビット５０１を１に設定する。
【０２０７】
ビットマップ５００は、セクタ列と同じ数の識別ビット５０１によって構成される。そして、ビットマップ５００の各識別ビット５０１は、セクタ列に対応するパリティデータのパリティ部ユーザデータ識別ビット４３４と同じ値に設定される。このようにすることで、ビットマップ５００を参照することで、対応するセクタ列に対応するパリティデータのパリティ部ユーザデータ識別ビット４３４を参照できる。結果として、ビットマップ５００の識別ビット５０１を参照するだけで、対応するセクタ列にユーザデータが格納されているか否かを識別できる。
【０２０８】
以降の処理は、前述した第１の実施の形態と同様である。前述したように、コレクションコピー（図７参照）、装置内ＬＵコピー（図１０参照）、装置間ＬＵコピー（図１１参照）の処理では、ビットマップ５００を用いて、ユーザデータの有無を識別できる。すなわち、ビットマップ５００の識別ビット５０１を参照することで、当該識別ビット５０１に対応するセクタ列のユーザデータの有無が識別できる。
【０２０９】
以上のように構成された本発明の第２の実施の形態のディスクアレイシステム２００は、ディスクキャッシュ２３０に備えられるビットマップ５００に、ユーザデータの存在の有無を示す識別ビット５０１を設定することによって、セクタ列にユーザデータが存在するか否かを識別することができ、セクタ列毎に、ユーザデータの存在の有無で処理を分けることができる。
【０２１０】
特に、セクタ列毎の処理でなく、キャッシュメモリ２３０のビットマップ５００の連続した領域をまとめて処理することができるので、処理時間の削減、処理負荷の低減ができる。
【０２１１】
なお、セクタ列毎ではなくストライプ列毎にユーザデータの有無に対応した識別ビット５０１をビットマップ５００としてディスクキャッシュ２３０に持つようにしてもよい。この場合は、ユーザデータの有無がわかる単位がストライプ列のサイズとなるが、ビットマップ５００のサイズを抑えることができる。また、処理の高速化にも効果がある。
【図面の簡単な説明】
【０２１２】
【図１】本発明の第１の実施の形態のシステム構成を示すブロック図である。
【図２Ａ】本実施の第１の実施の形態のディスクドライブ群２７０を示すブロック図である。
【図２Ｂ】本実施の第１の実施の形態のセクタ列のデータ及びパリティデータを示すブロック図である。
【図３】論理データブロックにＬＡ及びＬＲＣを付加する具体的な例を示す。
【図４】セクタ列のデータ及びパリティデータを示すブロック図である。
【図５】本発明の第１の実施の形態のＲＡＩＤ領域の作成処理を示すフローチャートである。
【図６】本発明の第１の実施の形態のユーザデータの書き込み処理を示すフローチャートである。
【図７】本発明の第１の実施の形態のコレクションコピーの処理を示すフローチャートである。
【図８】本発明の第１の実施の形態のコレクションコピーの処理を示すフローチャートである。
【図９】本発明の第１の実施の形態のビットマップ５００を示す説明図である。
【図１０】本発明の第１の実施の形態の装置内ＬＵコピーの処理を示すフローチャートである。
【図１１】本発明の第１の実施の形態の装置間ＬＵコピーの処理を示すフローチャートである。
【図１２】本発明の第１の実施の形態のＬＵ統合処理を示すフローチャートである。
【図１３】本発明の第１の実施の形態のオンラインベリファイ処理を示すフローチャートである。
【符号の説明】
【０２１３】
１００      ホスト計算機Ａ
１１０      ホスト計算機Ｂ
１２０      ホスト計算機Ｃ
２００Ａ、２００Ｂ      ディスクアレイシステム
２１０、２１１      ホスト入出力インタフェース
２２０      ホスト側内部バス
２３０      ディスクキャッシュ
２３１      キャッシュバス
２５０、２５１      ディスク入出力インタフェース
２７０、２７１      ディスクドライブ群
２７７〜２７９      ディスクドライブ
２８０      制御装置（ＭＰＵ）
２８５      バスブリッジ
２９０      メモリ
２９１      ディスクアレイ制御プログラム
２９２      内部データ転送制御プログラム
２９３      ユーザデータ識別制御プログラム
３００      キャッシュコントローラ
３１０      ホスト側内部バスバッファ
３２０      キャッシュ制御部
３３０      ディスク側内部バスバッファ
３４０      ＬＡ／ＬＲＣ付加／検査／削除部
４００      拡張データ
４０１      論理データブロック
４０４      ユーザデータ識別ビット
４３４      パリティ部ユーザデータ識別ビット
５００      ビットマップ
５０１      識別ビット
【図１】
2006139478.tif 000003
【図２Ａ】
2006139478.tif 000004
【図２Ｂ】
2006139478.tif 000005
【図３】
2006139478.tif 000006
【図４】
2006139478.tif 000007
【図５】
2006139478.tif 000008
【図６】
2006139478.tif 000009
【図７】
2006139478.tif 000010
【図８】
2006139478.tif 000011
【図９】
2006139478.tif 000012
【図１０】
2006139478.tif 000013
【図１１】
2006139478.tif 000014
【図１２】
2006139478.tif 000015
【図１３】
2006139478.tif 000016