(57)【要約】【課題】ディスクアレイの再構築時にメディアエラーが発生しても、当該メディアエラーが発生した領域を除く部分を再構築でき、且つ当該メディアエラーが発生した領域からのデータリードで不正データが処理されるのを防止できるようにする。【解決手段】アレイコントローラ３０内のリビルド制御部３１は、ディスクアレイ２０を構成するＨＤＤのうちの１台に障害が発生した場合、当該ディスクアレイ２０を再構築する処理を行う。リビルド制御部３１は、新たなＨＤＤに障害が発生したＨＤＤのデータを復元するために、残りのＨＤＤからのデータリードを行う。リビルド制御部３１内のエラーデータ書き込み部３１３は、このデータリードでメディアエラーが発生した場合、当該メディアエラーが発生した領域に対応する新たなＨＤＤの領域の情報がリードされる際にメディアエラーを発生させる情報を、例えば当該新たなＨＤＤの領域にライトする。【選択図】      図１
2005107676.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２台のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラにおいて、
前記少なくとも２台のディスクドライブのうちの１台に障害が発生したために前記ディスクアレイを再構築する場合に、残りの少なくとも１台のディスクドライブのデータをリードする再構築用データリード手段と、
前記再構築用データリード手段によりリードされたデータをもとに、前記障害が発生したディスクドライブに代えて用いられる新たなディスクドライブに、当該障害が発生したディスクドライブのデータを復元するデータ復元手段と、
前記再構築用データリード手段によるデータリードでメディアエラーが発生した場合、当該メディアエラーが発生した領域に対応する前記新たなディスクドライブの領域の情報がリードされる際にメディアエラーを発生させる情報を設定するメディアエラー設定手段と
を具備することを特徴とするアレイコントローラ。
【請求項２】
前記メディアエラー設定手段は、前記メディアエラーが発生した領域に対応する前記新たなディスクドライブの領域に、メディアエラーを強制的に発生させる特定エラーデータをライトするエラーデータ書き込み手段を含むことを特徴とする請求項１記載のアレイコントローラ。
【請求項３】
前記ディスクドライブは、ライトロングコマンドをサポートしており、
前記エラーデータ書き込み手段は、前記メディアエラーが発生した領域に対応する前記新たなディスクドライブの領域に、前記特定エラーデータを前記ライトロングコマンドを用いてライトする
ことを特徴とする請求項２記載のアレイコントローラ。
【請求項４】
前記ディスクアレイを利用するホストから与えられるリードコマンドに応じて、前記ディスクアレイから当該コマンドで指定されたデータをリードするリードコマンド実行手段と、
前記リードコマンド実行手段によるデータリードが前記ディスクアレイを構成する前記少なくとも２台のディスクドライブを対象に行われて、前記少なくとも２台のディスクドライブでメディアエラーが発生した場合に、対応するメディアエラーを前記ホストに通知するエラー通知手段と
を更に具備することを特徴とする請求項２記載のアレイコントローラ。
【請求項５】
前記リードコマンド実行手段は、前記ディスクアレイを利用するホストから与えられるリードコマンドに応じて、前記少なくとも２台のディスクドライブのうちの少なくとも１台のディスクドライブからデータをリードし、メディアエラーが発生した場合には、前記リードコマンドで指定されたデータを前記ディスクアレイの冗長性を利用して取得するために、前記少なくとも２台のディスクドライブのうちの残りの少なくとも１台のディスクドライブからデータをリードし、
前記エラー通知手段は、前記リードコマンドで指定されたデータを前記ディスクアレイの冗長性を利用して取得するために前記リードコマンド実行手段により前記少なくとも１台のディスクドライブからデータがリードされた際にメディアエラーが発生した場合、対応するメディアエラーを前記ホストに通知することを特徴とする請求項４記載のアレイコントローラ。
【請求項６】
前記メディアエラー設定手段は、前記メディアエラーが発生した領域を特定するアドレス情報を不揮発性記憶領域に記録するエラー箇所記録手段を含むことを特徴とする請求項１記載のアレイコントローラ。
【請求項７】
前記ディスクアレイを利用するホストからリード対象となる領域を指定するアドレス情報を含むリードコマンドが与えられた場合、当該コマンドに含まれているアドレス情報が前記不揮発性記憶領域に記録されていることを検出する検出手段と、
前記リードコマンドに含まれているアドレス情報が前記不揮発性記憶領域に記録されていることが前記検出手段により検出された場合に、メディアエラーを前記ホストに通知するエラー通知手段と
を更に具備することを特徴とする請求項６記載のアレイコントローラ。
【請求項８】
前記ディスクアレイを利用するホストから与えられるリードコマンドに応じて、前記ディスクアレイから当該コマンドで指定されたデータをリードするリードコマンド実行手段を更に具備し、
前記検出手段は、前記リードコマンド実行手段によるデータリードが実行される前に動作し、
前記リードコマンド実行手段は、前記リードコマンドに含まれているアドレス情報が前記不揮発性記憶領域に記録されていることが前記検出手段により検出されなかった場合に動作する
ことを特徴とする請求項７記載のアレイコントローラ。
【請求項９】
少なくとも２台のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラにより前記ディスクアレイを再構築するためのディスクアレイ再構築方法であって、
前記少なくとも２台のディスクドライブのうちの１台に障害が発生したために前記ディスクアレイを再構築する場合に、残りの少なくとも１台のディスクドライブのデータを予め定められたデータサイズを単位に順次リードするステップと、
前記少なくとも１台のディスクドライブからのデータリードで正常にデータがリードされた場合、当該データをもとに、前記障害が発生したディスクドライブに代えて用いられる新たなディスクドライブに、当該障害が発生したディスクドライブのデータを復元するステップと、
前記少なくとも１台のディスクドライブからのデータリードでメディアエラーが発生した場合、当該メディアエラーが発生した領域に対応する前記新たなディスクドライブの領域の情報がリードされる際にメディアエラーを発生させる情報を設定するステップと
を具備することを特徴とするディスクアレイ再構築方法。
【請求項１０】
前記メディアエラーを発生させる情報を設定するステップは、前記メディアエラーが発生した領域に対応する前記新たなディスクドライブの領域に、メディアエラーを強制的に発生させる特定エラーデータを前記メディアエラーを発生させる情報としてライトするステップを含むことを特徴とする請求項９記載のディスクアレイ再構築方法。
【請求項１１】
前記メディアエラーを発生させる情報を設定するステップは、前記メディアエラーが発生した領域を特定するアドレス情報を前記メディアエラーを発生させる情報として不揮発性記憶領域に記録するステップを含むことを特徴とする請求項９記載のディスクアレイ再構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラに係り、特にディスクアレイ中の１つのディスクドライブに障害が発生したために当該障害が発生したディスクドライブを新たなディスクドライブに交換してディスクアレイを再構築するのに好適なアレイコントローラ及びディスクアレイ再構築方法に関する。
【背景技術】
【０００２】
冗長データを持つことによりデータの信頼性を向上させる技術として、複数のディスクドライブを用いて構成される冗長性を持つディスクアレイ（冗長化ディスクアレイ）、つまりＲＡＩＤ（Redundant Array of Inexpensive Disks、またはRedundant Array of Independent Disks）が知られている。ＲＡＩＤには幾つかのレベル（ＲＡＩＤレベル）が定義されており、ＲＡＩＤ１（ミラーリング）やＲＡＩＤ５（パリティ付きストライピング）などが知られている。いずれも複数のディスクドライブを用いて構成される冗長化ディスクアレイにデータ及び冗長データを配置することにより、いずれか１台のディスクドライブに障害が発生してもデータの復元を可能にする技術である。
【０００３】
さて、冗長化ディスクアレイを構成する複数のディスクドライブのうち、いずれか１台のディスクドライブに障害が発生した場合、当該障害が発生したディスクドライブを新たなディスクドライブと交換して、当該ディスクアレイを再構築する必要がある（例えば、特許文献１参照）。このディスクアレイを再構築する処理は、リビルド（Rebuild）と呼ばれる。このリビルドでは、ディスクアレイの冗長性を復活するために、障害が発生していない既存のディスクドライブのデータを利用して、障害が発生したディスクドライブのデータを新たなディスクドライブに復元する処理が行われる。ＲＡＩＤ１を適用するディスクアレイであれば、既存のディスクドライブのデータをリードして新たなディスクドライブにライトする処理（即ち既存のディスクドライブのデータを新たなディスクドライブにコピーする処理）により、障害が発生したディスクドライブのデータが新たなディスクドライブに復元される。
【特許文献１】特開平８−１４７１１２号公報（段落０００５）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記したように、ディスクアレイの再構築（リビルド）時には、障害が発生していない既存のディスクドライブのデータを利用して、障害が発生したディスクドライブのデータを新たなディスクドライブに復元するために、当該既存のディスクドライブのデータをリードする処理が行われる。ところが、既存のディスクドライブからのデータのリードで、メディアエラーが発生する場合がある。メディアエラーとは、予め定められた回数のリードリトライを繰り返してもディスクドライブから正常にデータがリードできない状態をいう。今、メディアエラーが発生したディスクドライブの論理ブロックアドレスをＬＢＡｉとすると、当該ＬＢＡｉで指定される障害発生ディスクドライブのデータを、新たなディスクドライブに復元することができなくなる。この場合、後続の論理ブロックアドレスについて、リビルドを継続すると、メディアエラーが発生した論理ブロックアドレスＬＢＡｉでは、不正データが見かけ上正常処理されてしまう。例えば、ＲＡＩＤ１を適用するディスクアレイであれば、メディアエラーが発生した論理ブロックアドレスＬＢＡｉに格納されている既存のディスクドライブのデータを新たなディスクドライブにコピーできない。この場合、リビルド完了後に、ホストから論理ブロックアドレスＬＢＡｉのデータをリードすることを指示するリードコマンドが与えられると、新たなディスクドライブから不正データがリードされてしまう。そこで、リビルド時に、既存ディスクドライブからのデータリードでメディアエラーが発生した場合、リビルドをアボート（Abort）せざるを得ない。この場合、メディアエラーが発生した論理ブロックアドレスＬＢＡｉのブロックだけでなく、そのＬＢＡｉに後続する領域のブロック群についても、冗長性を復活できなくなる。
【０００５】
本発明は上記事情を考慮してなされたものでその目的は、ディスクアレイの再構築時にメディアエラーが発生しても、当該メディアエラーが発生した領域を除く部分を再構築でき、且つ当該メディアエラーが発生した領域からのデータリードで不正データが処理されるのを防止できるアレイコントローラ及びディスクアレイ再構築方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の１つの観点によれば、少なくとも２台のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラが提供される。このアレイコントローラは、上記少なくとも２台のディスクドライブのうちの１台に障害が発生したために上記ディスクアレイを再構築する場合に、残りの少なくとも１台のディスクドライブのデータをリードする再構築用データリード手段と、この再構築用データリード手段によりリードされたデータをもとに、障害が発生したディスクドライブに代えて用いられる新たなディスクドライブに、当該障害が発生したディスクドライブのデータを復元するデータ復元手段と、上記再構築用データリード手段によるデータリードでメディアエラーが発生した場合、当該メディアエラーが発生した領域に対応する上記新たなディスクドライブの領域の情報がリードされる際にメディアエラーを発生させる情報を設定するメディアエラー設定手段とを備えることを特徴とする。
【０００７】
このような構成のアレイコントローラでは、ディスクアレイを構成する少なくとも２台のディスクドライブのうちの１台に障害が発生した場合、残りの少なくとも１台のディスクドライブ（つまりソース側のディスクドライブ）のデータを利用して、障害が発生したディスクドライブに代えて用いられる新たなディスクドライブ（つまりターゲット側ディスクドライブ）に、当該障害が発生したディスクドライブのデータを復元することにより、当該ディスクアレイを再構築する処理が行われる。
【０００８】
このディスクアレイ再構築処理では、上記少なくとも１台のソース側ディスクドライブのデータがリードされ、そのリードされたデータは、障害が発生したディスクドライブのデータをターゲット側ディスクドライブに復元するのに用いられる。ここで、ソース側ディスクドライブからのデータリードでメディアエラーが発生したとしても、そのメディアエラーが発生した領域以外は、冗長性の復活が可能である。このため上記構成のアレイコントローラでは、ソース側ディスクドライブからのデータリードでメディアエラーが発生しても、メディアエラーが発生した領域以外の冗長性を確保するため、ディスクアレイの再構築処理を継続する。但し、この場合、メディアエラーが発生したソース側ディスクドライブの領域の情報と、当該領域に対応するターゲット側ディスクドライブの領域の情報との間で整合性が取れなくなる。
【０００９】
そこで上記構成のアレイコントローラでは、ディスクアレイの再構築のために行われるソース側ディスクドライブからのデータリードでメディアエラーが発生した場合、当該メディアエラーが発生した領域に対応する上記ターゲット側ディスクドライブの領域の情報がリードされる際にメディアエラーを発生させる情報が設定される。この情報設定により、ディスクアレイの再構築後にホストからのリードコマンドに応じて、例えばメディアエラーが発生した領域に対応するターゲット側ディスクドライブの領域の情報がリードされる場合でも、メディアエラーが強制的に発生されるため（つまりメディアエラー扱いとなるため）、不正データが正常処理されることを防ぐことができる。しかも、ディスクアレイ中のメディアエラーが発生した領域を除く部分は再構築されるため、エラー発生領域以外の冗長性を確保できる。
【００１０】
ここで、上記メディアエラー設定手段に、メディアエラーが発生した領域に対応するターゲット側ディスクドライブの領域に、メディアエラーを強制的に発生させる特定エラーデータを上記メディアエラーを発生させる情報としてライトするエラーデータ書き込み手段を持たせると良い。このようにすると、当該特定エラーデータがライトされている領域がリードアクセスされた場合に、メディアエラーを発生させることができる。
【００１１】
また、上記メディアエラー設定手段に、メディアエラーが発生した領域を特定するアドレス情報を上記メディアエラーを発生させる情報として不揮発性記憶領域に記録するエラー箇所記録手段を持たせても良い。このようにすると、不揮発性記憶領域に記録されているアドレス情報によって示される領域をリード対象として指定するリードコマンドの実行時に、実際に当該コマンドを実行しなくても、メディアエラーを発生させ（つまりメディアエラー扱いとして）、不正データが正常処理されることを防ぐことができる。
【発明の効果】
【００１２】
本発明によれば、ディスクアレイを構成する少なくとも２台のディスクドライブのうちの１台に障害が発生した場合、当該障害が発生したディスクドライブに代えて用いられる新たなディスクドライブに当該障害が発生したディスクドライブのデータを復元することにより、当該ディスクアレイを再構築する処理が行われる。ここでは、上記新たなディスクドライブに障害が発生したディスクドライブのデータを復元するために、残りの少なくとも１台のディスクドライブからのデータリードが行われる。本発明においては、このデータリードでメディアエラーが発生した場合、当該メディアエラーが発生した領域に対応する上記新たなディスクドライブの領域の情報がリードされる際にメディアエラーを発生させる情報が設定される。この情報設定により、ディスクアレイの再構築後にホストからのリードコマンドに応じて、例えばメディアエラーが発生した領域に対応する上記新たなディスクドライブの領域の情報がリードされる場合でも、メディアエラーが強制的に発生されるため（つまりメディアエラー扱いとなるため）、不正データが正常処理されることを防ぐことができる。しかも、ディスクアレイ中のメディアエラーが発生した領域を除く部分は再構築されるため、エラー発生領域以外の冗長性を確保できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態につき図面を参照して説明する。  
［第１の実施形態］
図１は本発明の第１の実施形態に係るコンピュータシステムの構成を示すブロック図である。図１のコンピュータシステムは、各種アプリケーションを実行するホスト（ホストコンピュータ）１０と、このホスト１０の外部記憶装置として用いられるディスクアレイ２０と、アレイコントローラ（以下、ＲＡＩＤコントローラと称する）３０とから構成される。
【００１４】
ディスクアレイ２０は、例えば２台のハードディスクドライブ（以下、ＨＤＤと称する）２１-0，２１-1から構成されるＲＡＩＤである。ＨＤＤ２１-0，２１-1は、説明を簡略化するために同一記憶容量であるものとする。本実施形態におけるディスクアレイ２０は、ＲＡＩＤコントローラ３０の制御により、ＲＡＩＤ１のディスクアレイ、いわゆるミラーリングディスクアレイとして機能する。ＲＡＩＤ１のディスクアレイ２０では、ホスト１０からは、当該ディスクアレイ２０を構成するＨＤＤ２１-0，ＨＤＤ２１-1のうちの一方のＨＤＤだけが認識でき、他方のＨＤＤは当該一方のＨＤＤの複製を保持するＨＤＤとして用いられる。このホスト１０から認識可能なＨＤＤをマスタ側ＨＤＤと呼び、マスタ側ＨＤＤの複製を保持するＨＤＤをバックアップ側ＨＤＤと称する。
【００１５】
ＨＤＤ２１-0，２１-1は、ライトロングコマンド（Write Long Command）をサポートする。ライトロングコマンドは、ホストから指定（転送）されるライトデータ（例えばエラー訂正符号を含む１セクタのライトデータ）をそのままＨＤＤに書き込ませるためのコマンドである。ライトロングコマンドの実行では、エラー訂正符号（ＥＣＣ）を生成するＥＣＣ生成器の動作が抑止される。ＥＣＣは、データのエラーを検出して訂正するのに用いられる冗長データである。
【００１６】
ＲＡＩＤコントローラ３０はディスクアレイ２０を制御する。この例のように、ディスクアレイ２０をＲＡＩＤ１として機能させる場合、ＲＡＩＤコントローラ３０はホスト１０から要求されたデータをＨＤＤ２１-0，ＨＤＤ２１-1のうちの一方のＨＤＤ（マスタ側ＨＤＤ）に書き込む制御を行うと共に、その書き込み先と相対位置が同一の他方のＨＤＤ（バックアップ側ＨＤＤ）の領域に当該データの複製を書き込む制御を行う。
【００１７】
ＲＡＩＤコントローラ３０は、ディスクアレイ２０の再構築、つまりリビルド（Rebuild）を制御するリビルド制御部３１を備えている。リビルド制御部３１は、コピー部３１１と、エラー判定部３１２と、エラーデータ書き込み部３１３とを含む。コピー部３１１は、ホスト１０からディスクアレイ２０の再構築が指示された場合に動作する。コピー部３１１は、ディスクアレイ２０を構成するＨＤＤ２１-0，２１-1のうちの正常なＨＤＤ（以下、ソース側ＨＤＤと称する）のデータを、障害が発生したＨＤＤと交換して用いられる新たなＨＤＤ（以下、ターゲット側ＨＤＤと称する）にコピーする。エラー判定部３１２は、コピー部３１１によるソース側ＨＤＤからのデータリード時に正しくデータがリードできないメディアエラーの有無を判定する。エラーデータ書き込み部３１３は、ディスクアレイ２０の再構築時にメディアエラーが発生した論理ブロックアドレスＬＢＡｉで指定されるターゲット側ＨＤＤの領域（ブロック）に、メディアエラーを必ず発生させる特定エラーデータをライトロングコマンドを用いてライトする。
【００１８】
図２（ａ）は、ホスト１０からの通常のライトコマンドの指定によりＨＤＤにライトされるセクタデータを示す。図２（ａ）において、ＨＤＤにライトされるセクタデータは、ホストからのデータＤＡＴＡと、当該データＤＡＴＡに基づいてＨＤＤ内のＥＣＣ生成器で生成されるＥＣＣとを含む。データＤＡＴＡとＥＣＣとは整合性が取れており、したがってデータＤＡＴＡ及びＥＣＣを含むセクタデータのリード時には、当該データＤＡＴＡと当該データＤＡＴＡに付されているＥＣＣとに基づいて当該データＤＡＴＡのエラー訂正が正しく行える。
【００１９】
図２（ｂ）は、エラーデータ書き込み部３１３からのライトロングコマンドの指定によりＨＤＤにライトされる特定エラーデータを示す。図２（ｂ）において、ＨＤＤにライトされるデータ（エラーデータ）は、データＤＡＴＡと、上記ＥＣＣ（つまりデータＤＡＴＡから生成可能なＥＣＣ）とは無関係のＥＣＣ’（つまりＤＡＴＡとは整合性の取れていない不正なＥＣＣ’）とを含む。したがってＤＡＴＡ及びＥＣＣ’を含むセクタデータのリード時には、エラー訂正が正しく行えず、メディアエラーとなる。
【００２０】
次に、図１に示したコンピュータシステムの動作について、ディスクアレイ２０の再構築時の動作を例に図３のフローチャートを参照して説明する。  
ここでは、ディスクアレイ２０を構成するＨＤＤ２１-0，２１-1のうちの例えばＨＤＤ２１-1で障害が発生したために、当該ＨＤＤ２１-1が新たなＨＤＤに交換されたものとする。ここでは説明の便宜上、障害が発生したＨＤＤ２１-1に代えて用いられる新たなＨＤＤの参照番号に、元のＨＤＤ２１-1の参照番号を用いるものとする。この状態で、ホスト１０からＲＡＩＤコントローラ３０に対してディスクアレイ２０の再構築が指示されると、ＲＡＩＤコントローラ３０内のリビルド制御部３１が起動される。ここでのディスクアレイ２０の再構築では、ソース側ＨＤＤは既存のＨＤＤ２１-0であり、ターゲット側ＨＤＤは新たに用いられるＨＤＤ２１-1である。
【００２１】
リビルド制御部３１が起動されると、まず当該リビルド制御部３１内のコピー部３１１が、論理ブロックアドレスＬＢＡｉを初期値０に設定する（ステップＳ１）。次にコピー部３１１は、ＬＢＡｉで指定されるソース側ＨＤＤ２１-0の領域（ブロック）に格納されているデータをリードする（ステップＳ２）。するとエラー判定部３１２は、ＬＢＡｉで指定されるデータがソース側ＨＤＤ２１-0から正常にリードできないメディアエラーが発生したか否かを判定する（ステップＳ３）。
【００２２】
もし、メディアエラーが発生しなかった場合、つまり、ＬＢＡｉで指定されるデータがソース側ＨＤＤ２１-0から正常にリードできた場合、エラー判定部３１２は、その旨をコピー部３１１に通知する。するとコピー部３１１は、正常にリードできたデータを、ＬＢＡｉで指定されるターゲット側ＨＤＤ２１-1の領域（ブロック）にライトする（ステップＳ４）。これにより、ＬＢＡｉで指定されるソース側ＨＤＤ２１-0のデータが、ＬＢＡｉで指定されるターゲット側ＨＤＤ２１-1のブロックにコピーされたことになる。
【００２３】
一方、メディアエラーが発生した場合、即ち予め定められた回数のリードリトライを繰り返してもＬＢＡｉで指定されるデータがソース側ＨＤＤ２１-0から正常にリードできなかった場合、エラー判定部３１２は、その旨をコピー部３１１及びエラーデータ書き込み部３１３に通知する。するとエラーデータ書き込み部３１３は、ＬＢＡｉで指定されるターゲット側のＨＤＤ２１-1のブロックに、必ずメディアエラーとなる図２（ｂ）に示す特定エラーデータをライトロングコマンドを用いてライトする（ステップＳ５）。即ちエラーデータ書き込み部３１３は、ターゲット側のＨＤＤ２１-1に対して、ＬＢＡｉで指定されるブロックへのデータライトを指示するライトロングコマンドを発行すると共に、図２（ｂ）に示す特定エラーデータをライトデータとして転送する。ライトロングコマンドの場合、ＨＤＤ２１-1内のＥＣＣ生成器の動作は抑止される。これにより、ライト先を指定するＬＢＡがＬＢＡｉであるライトロングコマンドの場合、外部からＨＤＤ２１-1に転送されるライトデータが、そのまま、ＨＤＤ２１-1に搭載されているメディア上のＬＢＡｉのブロックにライトされる。ここでは、ＨＤＤ２１-1には、エラーデータ書き込み部３１３から図２（ｂ）に示す特定エラーデータが転送される。したがって上記ステップＳ５において、この特定エラーデータが、ライトロングコマンドに従ってＬＢＡｉで指定されるＨＤＤ２１-1のブロックにライトされることにより、当該ブロックのリード時に意図的にメディアエラーを発生させることができる。このステップＳ５の実行時、コピー部３１１はステップＳ４の動作、即ちソース側ＨＤＤ２１-0からリードしたデータをターゲット側ＨＤＤ２１-1にライトする動作を控える。
【００２４】
このように本実施形態においては、ディスクアレイ２０の再構築のためにソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1にデータをコピーする処理で、ソース側ＨＤＤ２１-0にメディアエラーがあった場合、そのメディアエラーがあった論理ブロックアドレスＬＢＡｉと相対位置が同一のターゲット側ＨＤＤ２１-1のブロックに特定エラーデータがライトされる。これにより、ＬＢＡｉで指定されるＨＤＤ２１-1のブロックがリードされた場合でも、当該ＬＢＡｉで指定されるＨＤＤ２１-0のブロックがリードされた場合と同様にメディアエラーが発生し、不正データが正常処理されるのを防止できる。
【００２５】
コピー部３１１は、ステップＳ４またはＳ５が実行されると、現在のＬＢＡｉがＨＤＤ２１-0，２１-1の最終ＬＢＡであるか否かを判定する（ステップＳ６）。もし、現在のＬＢＡｉが最終ＬＢＡでないならば、コピー部３１１は次のコピー元及びコピー先の論理ブロックアドレスを示すように、現在のＬＢＡｉを１だけインクリメントする（ステップＳ７）。そしてコピー部３１１は、インクリメント後のＬＢＡｉに従うソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1へのデータコピーのために、ステップＳ２に戻る。これに対し、現在のＬＢＡｉが最終ＬＢＡであるならば、コピー部３１１はソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1へのデータコピー動作（つまりディスクアレイ２０の再構築）を終了する。
【００２６】
次に、ディスクアレイ２０の再構築後に、ホスト１０からＲＡＩＤコントローラ３０に対し、論理ブロックアドレスＬＢＡｒで指定されるＨＤＤのデータをリードすることを指示するリードコマンドが発行された場合の動作について、図４のフローチャートを参照して説明する。ここでは、ＨＤＤ２１-0がマスタ側ＨＤＤとして用いられ、ディスクアレイ２０の再構築で当該ＨＤＤ２１-0のデータがコピーされたＨＤＤ２１-1がバックアップ側ＨＤＤとして用いられるものとする。
【００２７】
まず、ＲＡＩＤコントローラ３０は、ホスト１０からのリードコマンドに従い、ＬＢＡｒで指定されるマスタ側ＨＤＤ２１-0のデータをリードする（ステップＳ１１）。そしてＲＡＩＤコントローラ３０は、メディアエラーの発生の有無を判定する（ステップＳ１２）。もし、ステップＳ１１のデータリードでメディアエラーが発生せずに、ホスト１０からのリードコマンドで指定されたデータが正常にリードできた場合、ＲＡＩＤコントローラ３０はそのリードデータをホスト１０に転送する（ステップＳ１３）。
【００２８】
一方、ステップＳ１１のデータリードでメディアエラーが発生した場合、ＲＡＩＤコントローラ３０はＬＢＡｒで指定されるバックアップ側ＨＤＤ２１-1のデータをリードする（ステップＳ１４）。そしてＲＡＩＤコントローラ３０は、メディアエラーの発生の有無を判定する（ステップＳ１５）。もし、ステップＳ１４のデータリードでメディアエラーが発生せずに、ホスト１０からのリードコマンドで指定されたデータがバックアップ側ＨＤＤ２１-1から正常にリードできた場合、ＲＡＩＤコントローラ３０はそのリードデータを、ＬＢＡｒで指定されるマスタ側ＨＤＤ２１-0のブロックにライトする（ステップＳ１６）。これにより、ステップＳ１１のデータリードでメディアエラーが発生したマスタ側ＨＤＤ２１-0のブロックが復元される。ＲＡＩＤコントローラ３０は、この復元に用いられたリードデータをホスト１０に転送する（ステップＳ１３）。なお、メディアエラーが発生したマスタ側ＨＤＤ２１-0のブロックが正しく復元されているかを確認するには、当該ブロックのデータを再度リードして、メディアエラーが発生しないか調べれば良い。
【００２９】
これに対し、ステップＳ１４のデータリードでメディアエラーが発生した場合、即ち規定回数のリードリトライを繰り返してもホスト１０からのリードコマンドで指定されたデータを正常にリードできなかった場合（ステップＳ１５）、ＲＡＩＤコントローラ３０はホスト１０に対してメディアエラーを通知する（ステップＳ１７）。明らかなように、ホスト１０からのリードコマンドで指定される論理ブロックアドレスＬＢＡｒが、ディスクアレイ２０の再構築時に、図２（ｂ）に示す特定エラーデータがライトされたＨＤＤ２１-1のブロックを指定する論理ブロックアドレスＬＢＡｉに一致する場合、上記ステップＳ１２及びＳ１５で共にメディアエラーの発生が判定される。このため、不正データが正常処理されるのを防止できる。
【００３０】
［第２の実施形態］
図５は本発明の第２の実施形態に係るコンピュータシステムの構成を示すブロック図である。図５において図１と同様の構成要素には同一参照番号を付してある。
【００３１】
図５のコンピュータシステムは、ホスト１０と、図１中のＲＡＩＤコントローラ３０に相当するＲＡＩＤコントローラ３００と、ディスクアレイ２０とから構成される。ディスクアレイ２０を構成するＨＤＤ２１-0，２１-1内の領域２１０-0，２１０-1は、ＲＡＩＤコントローラ３００が利用可能な専用のリザーブ領域として予め確保されている。ここでは、領域（以下、リザーブ領域と称する）２１０-0，２１０-1は、ＨＤＤ２１-0，２１-1内の同一の相対位置に確保されている。リザーブ領域２１０-0，２１０-1内の一部の領域２１１-0，２１１-1は、ディスクアレイ２０の再構築時にメディアエラーが発生した論理ブロックアドレスＬＢＡｉを記録（保存）するのに用いられる。この領域（以下、エラー箇所記録領域と称する）２１１-0，２１１-1にＬＢＡｉを記録する形態として、ＬＢＡｉのリストを用いる形態、ビットマップテーブルを用いる形態が利用可能である。ビットマップテーブルは、ＨＤＤ２１-0，２１-1の全ＬＢＡに対応するビットから構成される。ビットマップテーブル中の、ディスクアレイ２０の再構築時にメディアエラーが発生したＬＢＡｉに対応するビットは、例えばＯＮされる。
【００３２】
ＲＡＩＤコントローラ３０は、図１中のリビルド制御部３１に相当するリビルド制御部３１０と、ＲＡＭ３２０と、リード制御部３３０とを備えている。リビルド制御部３１０は、図１中のリビルド制御部３１が有していたエラーデータ書き込み部３１３に代えて用いられるエラー箇所記録部３１４を含む。エラー箇所記録部３１４は、ディスクアレイ２０の再構築時にメディアエラーが発生した論理ブロックアドレスＬＢＡｉを、ＨＤＤ２１-0，２１１-1のエラー箇所記録領域２１１-0，２１１-1に記録する。
【００３３】
ＲＡＭ３２０の記憶領域の一部は、エラー箇所記録領域２１１-0の複製を保持するエラー箇所テーブル３２１を格納するのに用いられる。リード制御部３３０は、ホスト１０からのリードコマンドに従ってディスクアレイ２０からデータをリードするための制御を行う。リード制御部３３０は、エラー箇所リード検出部３３１を含む。エラー箇所リード検出部３３１は、ホスト１０からのリードコマンドで指定された論理ブロックアドレスＬＢＡｒが、メディアエラーを発生する箇所として記録されているかをエラー箇所テーブル３２１に基づいて検出する。
【００３４】
次に、図５に示したコンピュータシステムの動作について、ディスクアレイ２０の再構築時の動作を例に図６のフローチャートを参照して説明する。ここでは、前記第１の実施形態と同様に、ソース側ＨＤＤは既存のＨＤＤ２１-0であり、ターゲット側ＨＤＤは新たに用いられるＨＤＤ２１-1であるものとする。
【００３５】
まず、リビルド制御部３１内のコピー部３１１は、論理ブロックアドレスＬＢＡｉを初期値０に設定する（ステップＳ２１）。次にコピー部３１１は、ＬＢＡｉで指定されるソース側ＨＤＤ２１-0のブロックに格納されているデータをリードする（ステップＳ２２）。するとエラー判定部３１２は、ＬＢＡｉで指定されるデータがソース側ＨＤＤ２１-0から正常にリードできないメディアエラーが発生したかを判定する（ステップＳ２３）。もし、メディアエラーが発生せず、ＬＢＡｉで指定されるデータがソース側ＨＤＤ２１-0から正常にリードできた場合、エラー判定部３１２は、その旨をコピー部３１１に通知する。するとコピー部３１１は、正常にリードできたデータを、ＬＢＡｉで指定されるターゲット側ＨＤＤ２１-1のブロックにライトする（ステップＳ２４）。
【００３６】
一方、メディアエラーが発生した場合、エラー判定部３１２は、その旨をコピー部３１１及びエラー箇所記録部３１４に通知する。するとエラー箇所記録部３１４は、メディアエラーとなったＬＢＡｉを、ソース側ＨＤＤ２１-0のエラー箇所記録領域２１１-0及びターゲット側ＨＤＤ２１-1のエラー箇所記録領域２１１-1にそれぞれ記録する（ステップＳ２５）。このステップＳ２５の実行時、コピー部３１１はステップＳ２４の動作、、即ちソース側ＨＤＤ２１-0からリードしたデータをターゲット側ＨＤＤ２１-1にライトする動作を控える。
【００３７】
このように本発明の第２の実施形態においては、ディスクアレイ２０の再構築のためにソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1にデータをコピーする処理で、ソース側ＨＤＤ２１-0にメディアエラーがあった場合、そのメディアエラーがあった論理ブロックアドレスＬＢＡｉがエラー箇所記録領域２１１-0及び２１１-0に記録される。これにより、ＬＢＡｉで指定されるデータのリードがホスト１０から指定された場合に、メディアエラーが発生する箇所（ブロック）からのリードであることを検出できる。この場合、ＬＢＡｉで指定されるＨＤＤ２１-1のブロックをリードせずに、ホスト１０にメディアエラーを通知することにより、不正データが正常処理されるのを防止できる。ここでは、上記第１の実施形態とは異なって、ＨＤＤ２１-0及び２１-1がライトロングコマンドをサポートしている必要がない。
【００３８】
コピー部３１１は、ステップＳ２４またはＳ２５が実行されると、現在のＬＢＡｉがＨＤＤ２１-0，２１-1の最終ＬＢＡであるか否かを判定する（ステップＳ２６）。もし、現在のＬＢＡｉが最終ＬＢＡでないならば、コピー部３１１は当該ＬＢＡｉを１だけインクリメントする（ステップＳ２７）。そしてコピー部３１１はステップＳ２２に戻る。これに対し、現在のＬＢＡｉが最終ＬＢＡであるならば、コピー部３１１はソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1へのデータコピー動作（つまりディスクアレイ２０の再構築）を終了する。
【００３９】
次に、ディスクアレイ２０の再構築後に、ホスト１０からＲＡＩＤコントローラ３０に対し、論理ブロックアドレスＬＢＡｒで指定されるＨＤＤのデータをリードすることを指示するリードコマンド（つまり、リード対象となる論理ブロックを指定するＬＢＡｒを含むリードコマンド）が発行された場合の動作について、図７のフローチャートを参照して説明する。ここでは、ＨＤＤ２１-0がマスタ側ＨＤＤとして用いられ、ディスクアレイ２０の再構築で当該ＨＤＤ２１-0のデータがコピーされたＨＤＤ２１-1がバックアップ側ＨＤＤとして用いられるものとする。また、図５のコンピュータシステムの起動時に、ＨＤＤ２１-0のエラー箇所記録領域２１１-0またはＨＤＤ２１-1のエラー箇所記録領域２１１-1の複製を保持するエラー箇所テーブル３２１がＲＡＭ３２０に格納されるものとする。なお、エラー箇所記録領域２１１-0，２１１-1にはＨＤＤ２１-0内でメディアエラーが発生するＬＢＡｉのリストを記録し、エラー箇所テーブル３２１には、当該リストから作成されるメディアエラーが発生するＬＢＡｉのビットマップテーブルを用いることも可能である。また、ＲＡＩＤコントローラ３００内に書き換え可能な不揮発性メモリを備えることが可能な場合、上記ステップＳ２５に代えて、メディアエラーが発生したＬＢＡｉを当該不揮発性メモリに記録するようにしても良い。
【００４０】
ＲＡＩＤコントローラ３０内のリード制御部３３０に含まれているエラー箇所リード検出部３３１は、ホスト１０からリードコマンドが発行された場合、当該コマンドで指定される論理ブロックアドレスＬＢＡｒをキーとしてＲＡＭ３２０内のエラー箇所テーブル３２１を参照する（ステップＳ３１）。そしてエラー箇所リード検出部３３１は、ホスト１０からのリードコマンドで指定された論理ブロックアドレスＬＢＡｒが、メディアエラーを発生する箇所としてエラー箇所テーブル３２１に記録されているか否かを判定する（ステップＳ３２）。ここで、エラー箇所テーブル３２１を参照するのは処理の高速化のためであり、エラー箇所記録領域２１１-0または２１１-1を参照することと等価である。
【００４１】
もし、ＬＢＡｒが、メディアエラーを発生する箇所としてエラー箇所テーブル３２１に記録されていない場合、リード制御部３３０は、ＬＢＡｒで指定されるマスタ側ＨＤＤ２１-0のデータをリードする（ステップＳ３３）。そしてリード制御部３３０は、メディアエラーの発生の有無を判定する（ステップＳ３４）。もし、ステップＳ３３のデータリードでメディアエラーが発生せずに、ホスト１０からのリードコマンドで指定されたデータが正常にリードできた場合、リード制御部３３０はそのリードデータをホスト１０に転送する（ステップＳ３５）。
【００４２】
一方、ステップＳ３３のデータリードでメディアエラーが発生した場合、リード制御部３３０はＬＢＡｒで指定されるバックアップ側ＨＤＤ２１-1のデータをリードする（ステップＳ３６）。そしてリード制御部３３０は、メディアエラーの発生の有無を判定する（ステップＳ３７）。もし、ステップＳ３６のデータリードでメディアエラーが発生せずに、ホスト１０からのリードコマンドで指定されたデータがバックアップ側ＨＤＤ２１-1から正常にリードできた場合、ＲＡＩＤコントローラ３０はそのリードデータを、ＬＢＡｒで指定されるマスタ側ＨＤＤ２１-0のブロックにライトする（ステップＳ３８）。そしてリード制御部３３０は、このリードデータをホスト１０に転送する（ステップＳ３５）。
【００４３】
これに対し、ステップＳ３６のデータリードでメディアエラーが発生した場合（ステップＳ３７）、リード制御部３３０はマスタ側ＨＤＤ２１-0のエラー箇所記録領域２１１-0、バックアップ側ＨＤＤ２１-1のエラー箇所記録領域２１１-1、及びＲＡＭ３２０内のエラー箇所テーブル３２１に、それぞれＬＢＡｒを記録する（ステップＳ３９）。これにより、次回に当該ＬＢＡｒで指定されるＨＤＤのデータをリードすることを指示するリードコマンドが発行された場合、以下に述べるように、ＨＤＤ２１-0及び２１-1からデータをリードするための動作を実行することなく、ホスト１０にメディアエラーを通知できる。リード制御部３３０は、ステップＳ３９を実行すると、ホスト１０にメディアエラーを通知する（ステップＳ４０）。
【００４４】
一方、上記ステップＳ３２で、ホスト１０からのリードコマンドで指定されるＬＢＡｒが、メディアエラーを発生する箇所としてエラー箇所テーブル３２１に記録されていると判定された場合、エラー箇所リード検出部３３１は当該リードコマンドがメディアエラーを発生する箇所（ブロック）からのデータリードを指定していると判定する。この場合、リード制御部３３０はホスト１０にメディアエラーを通知する（ステップＳ４０）。
【００４５】
［変形例］
上記第１の実施形態では、ディスクアレイ２０が２台のＨＤＤ２１-0，２１-1から構成され、ＲＡＩＤ１のディスクアレイ（つまりミラーリングディスクアレイ）として機能する場合を前提としている。しかし、ディスクアレイを構成するＨＤＤの台数は２台を越えていても良く、ＲＡＩＤレベルもＲＡＩＤ１でなくても良い。
【００４６】
そこで、図１のディスクアレイ２０に代えて図８に示すディスクアレイ２００を用いた、上記第１の実施形態の変形例について、図１を援用して説明する。ディスクアレイ２００は、３台のＨＤＤ２１-0，２１-1，２１-2から構成される。ここでは、ディスクアレイ２００は、ＲＡＩＤ５レベルで用いられるものとする。この場合、ＨＤＤ２１-0〜２１-2は、いずれもデータ並びにパリティデータ（冗長データ）の格納用に用いられ、パリティデータは各ＨＤＤ２１-0〜２１-2に分散して格納される。なお、ディスクアレイ２００がＲＡＩＤ３レベルで用いられる場合には、ＨＤＤ２１-0〜２１-2のうちの２台がデータ格納用（データディスク用）に、残りの１台がパリティデータ格納用（パリティディスク用）に割り当てられる。
【００４７】
ＨＤＤ２１-0〜２１-2によって実現されるディスクアレイ２０のディスク領域は、図８に示すようにストライプ単位に分割して管理される。ストライプは、ＨＤＤ２１-0〜２１-2の相対位置が同一のブロック領域から構成される。ここでは、説明を簡略化するために、１ストライプを構成するＨＤＤ２１-0〜２１-2のブロックサイズが１ブロックであるものとする。この場合、１ストライプを構成するＨＤＤ２１-0〜２１-2の各ブロックのうち、２つのブロックにはデータＤ０，Ｄ１が、残りの１ブロックにはデータＤ０，Ｄ１のパリティデータＰが格納される。ディスクアレイ２００内のＨＤＤ２１-0〜２１-2のいずれか１台に障害が発生した場合、残りの２台のＨＤＤのデータから、障害が発生したＨＤＤのデータまたはパリティデータがストライプ単位に復元可能である。なお、相対位置が同一の各ＨＤＤ２１-0〜２１-2に属するブロック（ブロック群）をそれぞれストライプと呼び、相対位置が同一の各ＨＤＤ２１-0〜２１-2に属するストライプの集合をストライプグループと呼ぶこともある。
【００４８】
図９は、図８に示したディスクアレイ２００中のＨＤＤ２１-2に障害が発生したために、当該障害発生ＨＤＤ２１-2が新たなＨＤＤ２１-2（便宜的に障害発生ＨＤＤと同一参照番号を付してある）に交換された状態でディスクアレイ２００を再構築する際のデータの復元処理を示す。ここでは、ＬＢＡｉで指定されるＨＤＤ２１-0及び２１-1のブロックに格納されているデータＤ１０及びＤ１１をリードするためのデータリード９０及び９１がＲＡＩＤコントローラ３０（に相当するＲＡＩＤコントローラ）によって行われる。このデータリード９０及び９１でメディアエラーが発生しなかった場合、ＨＤＤ２１-0及び２１-1からリードされたデータＤ１０及びＤ１１を排他的論理和（ＸＯＲ）するための演算（ＥＸＯＲ演算）９２が行われる。このＥＸＯＲ演算９２により生成されるデータＤ１２を、対応するストライプが属するＨＤＤ２１-2のブロックにライトするためのデータライト９３が行われる。ここで、Ｄ１０及びＤ１１が共に非パリティデータであれば、Ｄ１２はパリティデータである。また、Ｄ１０及びＤ１１の一方がパリティデータであれば、Ｄ１２は非パリティデータである。以上の動作は、ＬＢＡｉをインクリメントしながら繰り返し行われる。
【００４９】
このように、ＲＡＩＤ５レベルで用いられるディスクアレイ２００を再構築する場合、ＨＤＤ２１-2が交換された新たなＨＤＤであるものとすると、ＨＤＤ２１-2には、他のＨＤＤ２１-0及び２１-1のデータからストライプ単位で復元されたデータがライトされる。このストライプ単位のデータ復元のためにＨＤＤ２１-0及び２１-1からデータをリードした際に、ＨＤＤ２１-0または２１-1でメディアエラーが発生した場合には、前記第１の実施形態と同様に、新たなＨＤＤ２１-2の対応するブロックに図２（ｂ）に示した特定エラーデータをライトロングコマンドを用いてライトすれば良い。
【００５０】
ここで、ディスクアレイ２００の再構築後に、ホスト１０からのリードコマンドに応じて、上記特定エラーデータがライトされたＨＤＤ２１-2のブロックまたは当該ブロックに対応する別のＨＤＤのブロックがリードされるものとする。もし、リードコマンドで指定されたブロックのリードでメディアエラーが発生した場合、当該ブロックのデータを復元するために、当該ブロックに対応する他の２台のＨＤＤのブロックがリードされる。このブロックリードで、２台のＨＤＤの少なくとも一方でメディアエラーが発生すると、リードコマンドで指定されたブロックのデータを復元することはできない。明らかなように、リードコマンドで指定されたＨＤＤのブロックまたは当該ブロックに対応する別のＨＤＤのブロックに特定エラーデータがライトされている場合には、上記したデータ復元ができない状態が発生する。この場合、前記第１の実施形態におけるステップＳ１７と同様に、ＲＡＩＤコントローラ３０からホスト１０にメディアエラーを通知すれば良い。
【００５１】
また、前記第２の実施形態のように、各ＨＤＤ２１-0〜２１-2にエラー箇所記録領域を確保し、ディスクアレイ２００を再構築する処理でメディアエラーが発生したＬＢＡｉを当該エラー箇所記録領域に記録するようにしても良い。このことは、ディスクアレイ２００がＲＡＩＤ３レベルまたはＲＡＩＤ４レベルで用いられる場合にも同様である。
【００５２】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図２】ホストからの通常のライトコマンドの指定によりＨＤＤにライトされるセクタデータとライトロングコマンドの指定によりＨＤＤにライトされる特定エラーデータとを対比して示す図。
【図３】同第１の実施形態におけるディスクアレイ２０の再構築時の動作手順を示すフローチャート。
【図４】同第１の実施形態におけるディスクアレイ２０の再構築後に、ホスト１０からリードコマンドが発行された場合の動作手順を示すフローチャート。
【図５】本発明の第２の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図６】同第２の実施形態におけるディスクアレイ２０の再構築時の動作手順を示すフローチャート。
【図７】同第２の実施形態におけるディスクアレイ２０の再構築後に、ホスト１０からリードコマンドが発行された場合の動作手順を示すフローチャート。
【図８】上記第１の実施形態の変形例で図１のディスクアレイ２０に代えて用いられるディスクアレイ２００の構成を示す図。
【図９】上記第１の実施形態の変形例におけるディスクアレイ２００の再構築時に実行されるデータ復元処理を示す図。
【符号の説明】
【００５４】
１０…ホスト、２０，２００…ディスクアレイ、２１-0，２１-1，２１-2…ＨＤＤ（ディスクドライブ）、３０，３００…ＲＡＩＤコントローラ（アレイコントローラ）、２１０-0，２１０-1…リザーブ領域、２１１-0，２１１-1…エラー箇所記録領域、３１，３１０…リビルド制御部、３１１…コピー部（再構築用データリード手段、データ復元手段）、３１２…エラー判定部、３１３…エラーデータ書き込み部（メディアエラー設定手段）、３１４…エラー箇所記録部（メディアエラー設定手段）、３２０…ＲＡＭ、３２１…エラー箇所テーブル、３３０…リード制御部、３３１…エラー箇所リード検出部。
【図１】
2005107676.tif 000003
【図２】
2005107676.tif 000004
【図３】
2005107676.tif 000005
【図４】
2005107676.tif 000006
【図５】
2005107676.tif 000007
【図６】
2005107676.tif 000008
【図７】
2005107676.tif 000009
【図８】
2005107676.tif 000010
【図９】
2005107676.tif 000011