(57)【要約】      （修正有）【課題】記憶装置が記憶するデータのブロックについての保証コードをブロック単位に計算する、データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置を提供する。【解決手段】データ制御部は記憶装置から一連のデータをブロック単位で読み出してデータ記憶部に記憶する。データ制御部は書き込みデータの書き込み先となるブロックとデータ記憶部に記憶されているブロックとが同じ場合は、データ記憶部に記憶されているデータを書き込みデータにより更新し、異なる場合は、データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、その一連のデータに保証コードを付加して記憶装置に転送する。データ制御部は書き込みデータの書き込み先となるブロックの一連のデータを読み出してデータ記憶部に記憶し、書き込みデータにより更新する。【選択図】図６
2005084799.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に対する書き込みデータを受信するデータ受信部と、
前記データ受信部が受信する前記書き込みデータを前記記憶装置に転送するデータ制御部と、
前記記憶装置の記憶領域上に記憶される一連のデータを記憶するデータ記憶部と、
を備えるデータ転送装置の制御方法であって、
前記データ制御部は、前記記憶装置に記憶されている前記一連のデータをブロック単位で読み出して前記データ記憶部に記憶し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックと、前記データ記憶部に記憶されている前記記憶装置の記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記記憶装置の記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックと、前記データ記憶部に記憶されている前記記憶装置の記憶領域上の前記ブロックとが異なる場合は、前記データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、前記データ記憶部に記憶されている一連のデータに前記生成した前記保証コードを付加して前記記憶装置に転送し、前記書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックに記憶されている一連のデータを読み出して前記データ記憶部に記憶し、前記書き込みデータの書き込み先となる前記記憶装置の記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新すること、
を特徴とするデータ転送装置の制御方法。
【請求項２】
前記データ受信部により連続して受信される一連の前記書き込みデータは、前記ブロックの連続する領域に前記受信される順序では必ずしも書き込まれないこと、
を特徴とする請求項１に記載のデータ転送装置の制御方法。
【請求項３】
記憶装置に対する書き込みデータを受信するデータ受信部と、
前記データ受信部が受信する前記書き込みデータを前記記憶装置に転送するデータ制御部と、
前記記憶装置の記憶領域上に記憶される一連のデータを記憶するデータ記憶部と、
を備え、
前記データ制御部は、前記記憶装置に記憶されている前記一連のデータをブロック単位で読み出して前記データ記憶部に記憶し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックと、前記データ記憶部に記憶されている前記記憶装置の記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記記憶装置の記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックと、前記データ記憶部に記憶されている前記記憶装置の記憶領域上の前記ブロックとが異なる場合は、前記データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、前記データ記憶部に記憶されている一連のデータに前記生成した前記保証コードを付加して前記記憶装置に転送し、前記書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックに記憶されている一連のデータを読み出して前記データ記憶部に記憶し、前記書き込みデータの書き込み先となる前記記憶装置の記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新すること、
を特徴とするデータ転送回路。
【請求項４】
前記データ受信部により連続して受信される一連の前記書き込みデータは、前記ブロックの連続する領域に前記受信される順序では必ずしも書き込まれないこと、
を特徴とする請求項３に記載のデータ転送回路。
【請求項５】
情報処理装置からディスクドライブに対する書き込みデータを受信するホストインタフェースと、
前記ホストインタフェースが受信する前記書き込みデータを前記ディスクドライブに転送するデータコントローラと、を備えるディスクアレイ装置であって、
前記データコントローラは、前記ディスクドライブに対する書き込みデータを前記ホストインタフェースから受信するデータ受信部と、前記データ受信部が受信する前記書き込みデータを前記ディスクドライブに転送するデータ制御部と、前記ディスクドライブに記憶される一連のデータを記憶するデータ記憶部と、を備え、
前記データ制御部は、前記ディスクドライブに記憶されている前記一連のデータをブロック単位で読み出して前記データ記憶部に記憶し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記データ記憶部に記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記データ記憶部に記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが異なる場合は、前記データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、前記データ記憶部に記憶されている一連のデータに前記生成した前記保証コードを付加して前記ディスクドライブに転送し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックに記憶されている一連のデータを読み出して前記データ記憶部に記憶し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新すること、
を特徴とするディスクアレイ装置。
【請求項６】
前記ホストインタフェースは、ネットワークを介して前記情報処理装置と接続し、
前記ホストインタフェースにより連続して受信される一連の前記書き込みデータは、前記ブロックの連続する領域に前記受信される順序では必ずしも書き込まれないこと、
を特徴とする請求項５に記載のディスクアレイ装置。
【請求項７】
情報処理装置からディスクドライブに対する書き込みデータを受信するホストインタフェースと、
前記ホストインタフェースが受信する前記書き込みデータを前記ディスクドライブに転送するデータコントローラと、
全体の制御を制御部を司るプロセッサと、
データを記憶するメモリと、を備えるディスクアレイ装置であって、
前記プロセッサは、前記ディスクドライブに記憶されている前記一連のデータをブロック単位で読み出して前記メモリに記憶し、
前記プロセッサは、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記メモリに記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記メモリに記憶されているデータを前記書き込みデータにより更新し、
前記プロセッサは、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記メモリに記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが異なる場合は、前記メモリに記憶されている一連のデータに基づいて保証コードを生成し、前記メモリに記憶されている一連のデータに前記生成した前記保証コードを付加して前記ディスクドライブに転送し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックに記憶されている一連のデータを読み出して前記メモリに記憶し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記メモリに記憶されているデータを前記書き込みデータにより更新すること、
を特徴とするディスクアレイ装置。
【請求項８】
情報処理装置からディスクドライブに対する書き込みデータを受信するチャネル制御部と、
前記ディスクドライブに対するデータの書き込みに関する処理を行うディスク制御部と、
前記チャネル制御部と前記ディスク制御部との間で授受されるデータを記憶するキャッシュメモリと、を備えるディスクアレイ装置であって、
前記チャネル制御部は、前記書き込みデータを受信するデータ受信部と、前記データ受信部が受信する前記書き込みデータを前記キャッシュメモリに転送するデータ制御部と、前記ディスクドライブの記憶領域上に記憶される一連のデータを記憶するデータ記憶部とを備え、
前記データ制御部は、前記ディスクドライブに記憶されている前記一連のデータを前記キャッシュメモリからブロック単位で読み出して前記データ記憶部に記憶し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記データ記憶部に記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新し、
前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記データ記憶部に記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが異なる場合は、前記データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、前記データ記憶部に記憶されている一連のデータに前記生成した前記保証コードを付加して前記キャッシュメモリに転送し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックに記憶されている一連のデータをキャッシュメモリから読み出して前記データ記憶部に記憶し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新すること、
を特徴とするディスクアレイ装置。
【請求項９】
前記チャネル制御部は、ネットワークを介して前記情報処理装置と接続し、前記書き込みデータを受信するインタフェースを備え、
前記データ受信部は、前記インタフェースから前記書き込みデータを受信し、
前記インタフェースにより連続して受信される一連の前記書き込みデータは、前記ブロックの連続する領域に前記受信される順序では必ずしも書き込まれないこと、
を特徴とする請求項８に記載のディスクアレイ装置。
【請求項１０】
情報処理装置からディスクドライブに対する書き込みデータを受信するチャネル制御部と、
前記ディスクドライブに対するデータの書き込みに関する処理を行うディスク制御部と、
前記チャネル制御部と前記ディスク制御部との間で授受されるデータを記憶するキャッシュメモリと、を備えるディスクアレイ装置であって、
前記ディスク制御部は、前記書き込みデータをキャッシュメモリから読み出すデータ読み出し部と、前記データ読み出し部が読み出す前記書き込みデータを前記ディスクドライブに転送するデータ制御部と、前記ディスクドライブの記憶領域上に記憶される一連のデータを記憶するデータ記憶部とを備え、
前記データ制御部は、前記ディスクドライブに記憶されている前記一連のデータをブロック単位で読み出して前記データ記憶部に記憶し、
前記データ制御部は、前記キャッシュメモリから読み出した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記データ記憶部に記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新し、
前記データ制御部は、前記キャッシュメモリから読み出した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックと、前記データ記憶部に記憶されている前記ディスクドライブの記憶領域上の前記ブロックとが異なる場合は、前記データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、前記データ記憶部に記憶されている一連のデータに前記生成した前記保証コードを付加して前記ディスクドライブに転送し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶領域上のブロックに記憶されている一連のデータを読み出して前記データ記憶部に記憶し、前記書き込みデータの書き込み先となる前記ディスクドライブの記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新すること、
を特徴とするディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置に関する。
【背景技術】
【０００２】
近年の情報処理システムが取り扱うデータの内容はますます重要度を増し、記憶装置に対して信頼性が求められている。記憶装置の信頼性を高める方法として、ハードディスク等の記憶デバイスに記憶されるデータにＬＲＣ（Longitudinal Redundancy Check）符号などの保証コードを付加する方法が知られている。記憶装置と情報処理装置との間でのデータのやり取りはブロック単位で行われ、保証コードもブロック単位に付加されている。
【特許文献１】特許３１８６２７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、近年では記憶装置に接続する方式が多様化し、ファイバーチャネルやｉＳＣＳＩ（Internet SCSI）のように、ネットワークによって情報処理装置と記憶装置とをつなぐ技術が採用され始めている。ネットワークによって情報処理装置と記憶装置とが接続される環境において、情報処理装置と記憶装置とが複数の経路で接続されたり、情報処理装置から記憶装置に送信されるデータのブロックがネットワーク上ではそのブロックの大きさとは異なるサイズでデータが伝送されたりすることがある。そのため、情報処理装置から送信されるブロックの一部だけが記憶装置に到達するような状況が起こりうる。また、あるブロックの一部と、そのブロックとは異なるブロックの一部とが混在して伝送されることもありうる。このように、記憶装置がデータのブロックを、記憶装置の連続した領域に書き込む順序に一連のデータとして受信できないような状況が起こりうる。
【０００４】
しかしながら、従来の記憶装置においては、少なくとも１ブロック分のデータが、記憶装置に記憶されるアドレス順に連続して伝送されることが前提とされており、上記のネットワーク接続の形態のように、ブロックの一部だけが伝達されるような状況への対応ができなかった。
【０００５】
本発明はこのような状況を鑑みてなされたものであり、記憶装置が記憶するデータのブロックについての保証コードをブロック単位に計算する、データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成する本発明のうち主たる発明は、記憶装置に対する書き込みデータを受信するデータ受信部と、前記データ受信部が受信する前記書き込みデータを前記記憶装置に転送するデータ制御部と、前記記憶装置の記憶領域上に記憶される一連のデータを記憶するデータ記憶部と、を備えるデータ転送装置の制御方法であって、前記データ制御部は、前記記憶装置に記憶されている前記一連のデータをブロック単位で読み出して前記データ記憶部に記憶し、前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックと、前記データ記憶部に記憶されている前記記憶装置の記憶領域上の前記ブロックとが同じ場合は、前記書き込みデータの書き込み先となる前記記憶装置の記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新し、前記データ制御部は、受信した前記書き込みデータについて、当該書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックと、前記データ記憶部に記憶されている前記記憶装置の記憶領域上の前記ブロックとが異なる場合は、前記データ記憶部に記憶されている一連のデータに基づいて保証コードを生成し、前記データ記憶部に記憶されている一連のデータに前記生成した前記保証コードを付加して前記記憶装置に転送し、前記書き込みデータの書き込み先となる前記記憶装置の記憶領域上のブロックに記憶されている一連のデータを読み出して前記データ記憶部に記憶し、前記書き込みデータの書き込み先となる前記記憶装置の記憶位置に対応する前記データ記憶部に記憶されているデータを前記書き込みデータにより更新すること、を特徴とする。
【０００７】
ここで、前記データ転送装置とは、例えば後述するディスクアレイ装置２００の備えるデータコントローラ５００である。前記記憶装置とは、例えば後述するディスクアレイ装置２００の備えるキャッシュメモリ２０６やディスクドライブ３００である。前記保証コードとは、例えば、ＬＲＣ符号やＶＲＣ符号、ＣＲＣ符号、パリティ、チェックサム、ハミング符号などの誤り検出符合である。前記記憶装置に記憶されるデータはブロック単位に読み出され、ブロックを形成する一連のデータに対して保証コードの計算が行われ、計算された保証コードと前記ブロック単位に付加された保証コードとを用いて、ブロック単位のデータに誤りがないかどうかが検査される。したがって、前記記憶装置にはブロック単位にデータが記憶され、各ブロックを形成する一連のデータに対して、読み出されるときと同様の計算によって求められる保証コードが付加されている必要がある。
【０００８】
本発明によれば、データ制御部は記憶装置に記憶されている一連のデータをデータ記憶部に読み出し、読み出した一連のデータを受信した書き込みデータにより更新し、更新した一連のデータに基づいて保証コードを計算する。したがって、データ制御部はデータ記憶部に記憶されている一連のデータについて、記憶装置に記憶されている記憶位置の順番どおりに保証コードの計算を行うことができる。よって、記憶装置に記憶される記憶位置の順番とは異なる順番でデータ受信部が複数の書き込みデータを受信した場合にも、データ制御部はデータ記憶部に記憶されている一連のデータに基づき、記憶装置に記憶されている記憶位置の順番どおりに保証コードを計算することができる。また、データ受信部が受信する書き込みデータがブロックの一部のみを形成する可変長のデータであっても、データ記憶部にはブロック単位でのデータが記憶されているため、データ制御部はブロック単位に保証コードを計算することができる。データ制御部は、書き込み対象となるブロックの一連のデータを適宜記憶装置から読み出すため、データ受信部が同一のブロックに対する書き込みデータを連続して受信できない場合であっても、データ制御部はブロック単位に保証コードを付加することができる。データ制御部はデータ記憶装置に記憶されている一連のデータに基づいて計算した保証コードを、この一連のデータに付加して記憶装置に転送するため、記憶装置には常に記憶位置の順番にしたがって計算された保証コードが付加されたブロック単位のデータが記憶されていることになる。
【０００９】
なお、本発明の他の特徴については、本明細書及び添付図面の記載により明らかにされる。
【発明の効果】
【００１０】
本発明によれば、データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下に本発明の実施形態について図面を用いて詳細に説明する。
【００１２】
＝＝＝第１の実施の形態＝＝＝
図１は本実施の形態にかかるデータ転送回路を備えるディスクアレイ装置を含む情報処理システムの構成を示すブロック図である。データ転送回路とは後述するデータコントローラである。図１に示す情報処理システムは、各種の情報処理サービスを提供する情報処理装置１００と、ディスクドライブ３００の記憶領域を情報処理装置１００に提供するディスクアレイ装置２００とを含んで構成される。
【００１３】
情報処理装置１００はＣＰＵ（Central Processing Unit）やメモリを備えたコンピュータである。情報処理装置１００では、情報処理装置１００の備えるＣＰＵによって各種のプログラムが実行されることにより様々な機能が実現される。情報処理装置１００は例えばパーソナルコンピュータやワークステーション、メインフレームコンピュータなどである。情報処理装置１００は１台のコンピュータであってもよいし、複数台のコンピュータであってもよい。情報処理装置１００上ではオペレーティングシステムが実行され、オペレーティングシステム上では様々なアプリケーションプログラムが実行される。
【００１４】
情報処理装置１００はＳＡＮ（Storage Area Network）４００を介してディスクアレイ装置２００と接続されている。ＳＡＮ４００を介して行われる情報処理装置１００とディスクアレイ装置２００との間の通信は、一般的にファイバチャネルプロトコルに従って行われるが、ＳＡＮ４００はファイバチャネルプロトコル以外にも様々なプロトコルに従った通信経路とすることができる。情報処理装置１００とディスクアレイ装置２００とを接続する通信形態には、例えば、ＬＡＮ（Local Area Network）やＳＣＳＩ（Small Computer System Interface）、ｉＳＣＳＩ（Internet Small Computer System Interface）、ＥＳＣＯＮ（Enterprise System Connection）（登録商標）、ＦＩＣＯＮ（Fibre Connection）（登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fibre connection Architecture）（登録商標）などを用いることができる。また、情報処理装置１００とディスクアレイ装置２００とはネットワーク接続の形態ではなく、直接接続する形態とすることもできる。
【００１５】
情報処理装置１００はファイバチャネルプロトコルに従って、ブロック単位でのデータ入出力の要求（以下、ブロックアクセス要求と称する）をディスクアレイ装置２００に送信する。ディスクアレイ装置２００は、情報処理装置１００からブロックアクセス要求を受信すると、受信したブロックアクセス要求に応じて、ディスクドライブ３００に対するデータの入出力に関する処理を行う。このようにして、情報処理装置１００上で実行されるアプリケーションプログラムは、ディスクドライブ３００の記憶領域に適宜アクセスしながら、各種処理を実行する。
【００１６】
ディスクアレイ装置２００は多数の物理ディスク（ディスクドライブ３００）を備え、複数のディスクドライブ３００による記憶領域が情報処理装置１００に提供されている。ディスクドライブ３００としては例えば、ハードディスク装置やフレキシブルディスク装置、半導体記憶装置等を用いることができる。ディスクドライブ３００により提供される物理的な記憶領域は、論理的に設定される論理ユニット（Logical Unit）を単位として管理されている。各論理ユニットには論理ユニット番号（Logical Unit Number;LUN）という識別子が付与され、ディスクドライブ３００に対するデータ入出力は、論理ユニット番号を指定して行われる。ディスクアレイ装置２００は、ディスクドライブ３００に設定される論理ユニット上に、例えば５１２バイトといったブロック単位でデータを管理する。ディスクアレイ装置２００はこのブロック単位でデータの入出力に関する処理を行う。前記の単位となるブロックのことは論理ブロックと呼ばれている。各論理ブロックには記憶位置情報を示す論理ブロックアドレス（Logical Block Address;LBA）が付与され、情報処理装置１００からディスクアレイ装置２００に対するブロックアクセス要求には、論理ユニット番号と論理ブロックアドレスとが指定される。
【００１７】
ディスクアレイ装置２００は、複数のディスクドライブ３００によってディスクアレイを構成し、ＲＡＩＤによって管理される記憶領域を提供することもできるし、単一の物理ディスクによる記憶領域を提供するようにもできる。ディスクドライブ３００はディスクアレイ装置２００に一体的に構成されてもよいし、ディスクアレイ装置２００から独立した装置として、ＳＣＳＩやＬＡＮ、ＳＡＮといった通信経路によってディスクアレイ装置２００と接続する形態としてもよい。
【００１８】
＝＝＝ディスクアレイ装置＝＝＝
ディスクアレイ装置２００はＣＰＵ２０１、メモリ２０２、ＮＶＲＡＭ２０３、ＦＰＣ２０４、ＦＰＣ２０５、キャッシュメモリ２０６、データコントローラ５００を備えている。これらは互いにバス２０７を介して接続されている。バス２０７は、例えば、ＰＣＩバスであり、３２ビット単位でデータを伝送する。バス２０７で伝送されるデータの単位はワードと呼ばれる。もちろんバス２０７はＰＣＩバス以外のバスであってもよい。また１ワードは３２ビットに限らず、８ビットや１６ビット、６４ビット、１２８ビットなどの単位とすることができる。
【００１９】
ＣＰＵ２０１は、ディスクアレイ装置２００の全体の制御を司るもので、メモリ２０２やＮＶＲＡＭ２０３に格納されたアプリケーションプログラムを実行することにより、ディスクドライブ３００の管理やブロックアクセス要求の解釈など様々な機能を実現することができる。ＮＶＲＡＭ２０３は、ＣＰＵ２０１が実行するプログラムを格納する、例えばフラッシュメモリなどの不揮発性メモリである。
【００２０】
ＦＰＣ２０４は情報処理装置１００との間で通信を行うインタフェースである。ＦＰＣ２０４はホストインタフェースとも呼ばれる。ＦＰＣ２０４は、ファイバチャネルプロトコルに従ってブロックアクセス要求を受け付ける機能を備える。ＦＰＣ２０４はＳＡＮ４００の通信形態によって、例えば、ｉＳＣＳＩなどのプロトコルによるブロックアクセス要求を受け付けるようにすることもできる。
【００２１】
ＦＰＣ２０５はディスクドライブ３００との間でデータのやり取りを行うインタフェースである。ＦＰＣ２０５はディスクインタフェースとも呼ばれる。ＦＰＣ２０５はディスクドライブ３００を制御するコマンドなどを規定するプロトコルに従ってディスクドライブ３００に対するデータ入出力要求を送信する機能を備える。ＦＰＣ２０５は、例えば、ＳＣＳＩやファイバチャネルなどのプロトコルに従って、ディスクドライブ３００に対してデータの書き込みや読み出しのコマンドを送信することができる。
【００２２】
キャッシュメモリ２０６は、ＦＰＣ２０４とＦＰＣ２０５との間で授受されるデータを記憶するためのメモリである。
【００２３】
データコントローラ５００はＣＰＵ２０１の制御によりＦＰＣ２０４とキャッシュメモリ２０６との間、あるいはキャッシュメモリ２０６とＦＰＣ２０５との間でのデータの転送を行うものである。データコントローラ５００は、例えば、特定用途向けＩＣにロジックを形成する回路とすることができる。
【００２４】
情報処理装置１００がディスクドライブ３００に対する書き込みを要求するブロックアクセス要求（以下、ブロック書き込み要求と称する）をディスクアレイ装置２００に送信すると、ディスクアレイ装置２００では、ＦＰＣ２０４がブロック書き込み要求を受け付け、データコントローラ５００がブロック書き込み要求に付随するブロック単位の書き込みデータをキャッシュメモリ２０６に転送する。書き込みデータがキャッシュメモリ２０６に転送されると、データコントローラ５００がキャッシュメモリ２０６からＦＰＣ２０５に書き込みデータを読み出し、ＦＰＣ２０５がディスクドライブ３００に対するブロック単位での書き込みを指示するコマンドを送信する。
【００２５】
＝＝＝データコントローラ＝＝＝
図２はディスクアレイ装置２００の備えるデータコントローラ５００のブロック図である。データコントローラ５００は、バスインタフェース部５０１、キャッシュインタフェース部５０２、データ制御部５０３、データ記憶部５０４を備えている。
【００２６】
バスインタフェース部５０１は、バス２０７に接続するインタフェースである。バスインタフェース部５０１はバス２０７を介してＦＰＣ２０４やＦＰＣ２０５との間でデータの授受を行うデータ受信部及びデータ送信部として機能する。バスインタフェース部５０１は、ＦＰＣ２０４あるいはＦＰＣ２０５からデータを受信するときは、受信したデータに付加されたパリティを用いて受信データの完全性を検査する。またバスインタフェース部５０１はＦＰＣ２０４あるいはＦＰＣ２０５に対してデータを送信するときには、送信データにパリティを付加して送信する。
【００２７】
キャッシュインタフェース部５０２は、キャッシュメモリ２０６との間でデータの授受を行うインタフェースである。キャッシュインタフェース部５０２は、キャッシュメモリ２０６からデータを読み出すデータ読み出し部、及びキャッシュメモリ２０６にデータを書き込むデータ書き込み部として機能する。キャッシュインタフェース部５０２は、キャッシュメモリ２０６に対してデータを書き込む際にはＥＣＣ（Error Correcting Code）を計算して付加し、キャッシュメモリ２０６からデータを読み出す際にはＥＣＣによってデータの完全性を検査する。
【００２８】
データ制御部５０３は、ＦＰＣ２０４又はＦＰＣ２０５と、キャッシュメモリ２０６との間でデータを転送機能を有している。
【００２９】
データ記憶部５０４は、１ブロック分の大きさのデータを記憶することができる。もちろん、データ記憶部５０４に複数のブロック分のデータを記憶するようにしてもよい。データ制御部５０３はディスクドライブ３００からデータを１ブロック読み出し、データ記憶部５０４に記憶する。データ制御部５０３は、データ記憶部５０４に記憶されたデータのブロックについて、３２ビット毎のデータに対して排他的論理和演算を用いて保証コードを計算する。
【００３０】
＝＝＝保証コードが付加されたデータ転送処理＝＝＝
ディスクアレイ装置２００では、ディスクドライブ３００に記憶されているデータの保全性を保証するために、ディスクドライブ３００に対してデータを読み書きする単位である論理ブロック毎に保証コードを付加して管理する。論理ブロックへの保証コードの付加はデータコントローラ５００によって行われる。また、論理ブロックに保証コードを付加する以外にも、書き込みデータがディスクドライブ３００に書き込まれるまでのデータ転送処理において保証コードが付与されている。以下に、ディスクアレイ装置２００内で行われるデータ転送処理について説明する。
【００３１】
図３は、情報処理装置１００からブロック書き込み要求を受信し、ディスクドライブ３００に書き込むまでの流れを示す説明図である。情報処理装置１００からは１ブロックの書き込みデータを付随させたブロック書き込み要求が送信されている。
【００３２】
ＦＰＣ２０４は情報処理装置からのブロック書き込み要求を受信する。情報処理装置１００が送信するブロックアクセス要求にはＣＲＣ（Cyclic Redundancy Check）符号が付加されている。ＦＰＣ２０４はブロック書き込み要求に付随する書き込みデータについてＣＲＣ符号を計算する。ＦＰＣ２０４は計算したＣＲＣ符号と、ブロックアクセス要求に付加されたＣＲＣ符号とを比較することによって、書き込みデータに誤りがないことを確認する（S3001）。ＦＰＣ２０４は書き込みデータについてパリティを計算し、書き込みデータにパリティを付加してデータコントローラ５００に送信する（S3002）。データコントローラ５００は書き込みデータを受信すると、書き込みデータに付加されているパリティを用いて受信したデータが正しいことを確認する（S3003）。データコントローラ５００は書き込みデータに対するＬＲＣ（Longitudinal Redundancy Check）コードを計算し、書き込みデータに付加する（S3004）。データコントローラ５００はＬＲＣコードが付加された書き込みデータについてＥＣＣを生成し（S3005）、ＬＲＣコードが付加された書き込みデータとともにキャッシュメモリ２０６に転送する。ここまでの一連の処理で、ディスクアレイ装置２００が情報処理装置１００から受信したディスクドライブ３００に対する書き込みデータは、ＬＲＣコードが付加されてキャッシュメモリ２０６に記憶される。ディスクアレイ装置２００はキャッシュメモリ２０６に書き込みデータを記憶すると、情報処理装置１００には書き込みが完了した旨を通知する。
【００３３】
一方ディスクアレイ装置２００では、キャッシュメモリ２０６に記憶されているディスクドライブ３００に対する書き込みデータは、所定のタイミングでキャッシュメモリ２０６からディスクドライブ３００に転送される。所定のタイミングとは、例えば、ある一定の時間が経過した場合や、キャッシュメモリ２０６上の空き領域がある一定量を下回った場合などである。
【００３４】
ＣＰＵ２０１は、キャッシュメモリ２０６からＦＰＣ２０５へのデータ転送処理を行うようにデータコントローラ５００を起動し、データコントローラ５００によるデータの転送処理が開始される。データコントローラ５００はキャッシュメモリ２０６からデータのブロックを読み出し、ＥＣＣによってキャッシュメモリ２０６から読み出したデータに誤りがないかどうかを確認する（S3006）。データコントローラ５００は書き込みデータに対してＬＲＣ符号を計算し、書き込みデータに付加されたＬＲＣ符号と、計算したＬＲＣ符号とを比較して、書き込みデータに誤りがないことを確認する（S3007）。データコントローラ５００はＬＲＣ符号が付加された書き込みデータについてのパリティを付加してＦＰＣ２０５に転送する（S3008）。ＦＰＣ２０５はデータを受信すると、データに付加されているパリティを用いて受信したデータに誤りがないことを確認する（S3009）。ＦＰＣ２０５はＬＲＣ符号が付加された書き込みデータについてＣＲＣ符号を計算し、ブロック書き込み要求を生成し、ブロック書き込み要求に計算したＣＲＣ符合を付帯させる（S3010）。ＦＰＣ２０５は書き込みデータを付随させたブロック書き込み要求をディスクドライブ３００に送信する。ディスクドライブ３００はブロック書き込み要求に付帯されているＣＲＣ符号を用いて書き込みデータに誤りがないことを確認し（S3011）、データを記憶する。こうしてディスクドライブ３００には、書き込みデータにブロック単位でＬＲＣ符号が付加されて記憶される。
【００３５】
データの読み出しの際には、ディスクアレイ装置２００内では書き込みと逆の処理が行われる。ＦＰＣ２０５はＣＲＣ符号によって、ディスクドライブ３００から送信されるＬＲＣ符号が付加されたデータのブロックに誤りがないことを確認する。データコントローラ５００はパリティによって、ＦＰＣ２０５から受信するデータに誤りがないことを確認する。データコントローラ５００は読み出しデータについてＬＲＣ符号を計算し、読み出しデータに付加されたＬＲＣ符号を用いて読み出しデータに誤りがないことを確認する。データコントローラ５００はＥＣＣを付加してキャッシュメモリ２０６にＬＲＣ符号の付加された読み出しデータを書き込む。データコントローラ５００はキャッシュメモリからＬＲＣ符号の付加された読み出しデータを読み出し、ＥＣＣによって読み出したデータに誤りがないことを確認する。データコントローラ５００は読み出しデータに付加されたＬＲＣ符号によって読み出しデータに誤りがないことを確認する。ＦＰＣ２０４はパリティよって、データコントローラ５００から転送される読み出しデータの誤りを検査する。ＦＰＣ２０４は読み出しデータについてＣＲＣ符号を生成し、情報処理装置１００にファイバチャネルプロトコルに従って読み出しデータを送信する。情報処理装置１００は受信したデータに対して付加されたＣＲＣ符号を用いて、読み出しデータに誤りがないことを確認する。
【００３６】
このように、ディスクアレイ装置２００では、ＣＲＣ符号やパリティ、ＥＣＣなどによって、転送されるデータに対する誤り検出を行いながら、データコントローラ５００はブロック単位のデータに付加されるＬＲＣ符号を用いたデータの誤り検出が行っている。したがって、ディスクアレイ装置２００は信頼性の高いデータの記憶サービスを提供できるようになっている。
【００３７】
＝＝＝ブロック単位で伝送されない状況の説明＝＝＝
ファイバチャネルやｉＳＣＳＩなどのプロトコルによって、複数の情報処理装置１００が１つのディスクアレイ装置にアクセスすることができるようになり、１ブロック分のデータが連続して到達しないような状況が起こりうるようになってきた。このような状況を図４及び図５を用いて説明する。
【００３８】
図４は、ファイバチャネルプロトコルによるフレームの大きさと、ディスクドライブ３００の記憶するデータのブロックの大きさとが異なる場合を示した模式図である。ＳＡＮ４００上で伝送されるデータの単位（以下、フレームと称する）が、ディスクドライブ３００上に管理される論理ブロックの大きさよりも大きく、スイッチなどにより複数のフレームが適宜混在して伝送されるような場合、ＳＡＮ４００上で伝送されるフレームには、複数の論理ブロックに対する書き込みデータが混在することがある。図４では、論理ブロックＡに対する書き込みデータと、論理ブロックＢに対する書き込みデータとが同一のフレーム１に混在している様子が示されている。論理ブロックＡに対する書き込みデータは全体がフレーム１に含まれているが、論理ブロックＢに対する書き込みデータはその一部しかがフレーム１に含まれていない。したがって、ディスクアレイ装置２００はフレーム１を受信しても、データコントローラ５００がキャッシュメモリ２０６に転送するべき書き込みデータである論理ブロックＢのデータをブロック単位で受信することができない。
【００３９】
また、例えば、ディスクアレイ装置２００が複数のＦＰＣ２０４を備えており、それら複数のＦＰＣ２０４が同一のバス２０７を介して受信した書き込みデータをデータコントローラ５００に伝送するような構成である場合にも、データコントローラ５００は複数のＦＰＣ２０４からの書き込みデータが混在するデータを受信することがある。
【００４０】
図５は、ディスクアレイ装置２００が複数のＦＰＣ２０４を備え、異なる論理ブロックに対するデータが混在してデータコントローラ５００に伝送される状態を示す説明図である。ＦＰＣ１（２０４）がデータ「Ａ０」及び「Ａ１」を送信し、ＦＰＣ２（２０４）がデータ「Ｂ０」及びデータ「Ｂ１」を送信すると、バス２０７上にはこれらのデータが混在し、図５に示すように、データコントローラ５００にはデータ「Ａ０」「Ｂ０」「Ｂ１」「Ａ１」の順番で書き込みデータが到着することもある。
【００４１】
このように、ディスクアレイ装置２００が論理ブロックに対するデータを論理ブロックの一部のみしか受信できない場合や、情報処理装置１００がディスクアレイ装置２００に対して可変長のデータを送信するような場合など、ディスクアレイ装置２００がディスクドライブ３００に対する書き込みデータを、論理ブロックの連続する領域に書き込む順序に連続して受信することができないことがある。
【００４２】
＝＝＝本発明の転送フロー＝＝＝
本発明では、ディスクアレイ装置２００が論理ブロックに対する書き込みデータが論理ブロックの連続する領域に書き込む順序に連続して受信できないような場合であっても、データコントローラ５００が論理ブロック単位に保証コードを付加できるようにしている。以下にその仕組みを説明する。
【００４３】
図６は、データコントローラ５００がＦＰＣ２０４から書き込みデータを受信し、キャッシュメモリ２０６に書き込む処理の流れを説明するフローチャートである。
【００４４】
データコントローラ５００は、あらかじめキャッシュメモリ２０６から、ある論理ブロックのデータを読み出し、データ記憶部５０４に記憶しておく。
【００４５】
データコントローラ５００は、ＦＰＣ２０４からバス２０７を介して、ディスクドライブ３００のアドレスが指定された１ワードのデータを受信する（S6001）。データコントローラ５００は指定されたアドレスから書き込み先となる論理ブロックアドレスを求め、書き込み先の論理ブロックと、データ記憶部５０４に記憶されている論理ブロックとが同一のものであるかどうかを判断する（S6002）。それらが異なる場合には（S6002：NO）、データコントローラ５００はデータ記憶部５０４に記憶されている論理ブロックのデータについて保証コードの計算を行う（S6003）。データコントローラ５００はデータ記憶部５０４に記憶されている論理ブロックのデータに計算した保証コードを付加して、キャッシュメモリ２０６に転送する（S6004）。データコントローラ５００は、受信したデータの書き込み先となる論理ブロックをキャッシュメモリ２０６から読み出す（S6005）。データコントローラ５００は、指定されたアドレスに応じてデータ記憶部５０４に記憶されているデータを更新する（S6006）。
【００４６】
データコントローラ５００が受信した書き込みデータの書き込み先となる論理ブロックと、データ記憶部５０４に記憶しているデータの論理ブロックとが同一である場合（S6002：YES）には、データコントローラ５００はそのままデータ記憶部５０４に記憶されているデータを更新する（S6006）。
【００４７】
なお、データコントローラ５００が書き込み対象となる論理ブロックのデータをキャッシュメモリ２０６から読み込むために、例えば、ＣＰＵ２０１はキャッシュメモリ２０６上にデータをあらかじめディスクドライブ３００からステージングしておくようにする。ステージングのタイミングは、例えば、ＦＰＣ２０４がブロック書き込み要求を受信した時点や、データコントローラ５００が各ワード単位のデータを受信した時点、あるいは（S6005）の処理の直前とすることができる。
【００４８】
＝＝＝保証コードの計算＝＝＝
データコントローラ５００が論理ブロックのデータについて計算する保証コードは、排他的論理和を用いたＬＲＣ符号である。図７及び図８を用いてＬＲＣ符号の計算について説明する。本実施の形態では、図８に示すように、ブロックのデータをデータ記憶部５０４に記憶し、保証コードを計算する。
【００４９】
図７及び図８は、データコントローラ５００の備えるデータ記憶部５０４に記憶される１ブロック分のデータを示す模式図である。図７では、データ記憶部５０４には１ブロック５１２バイトのデータが２バイトずつアドレス順に並び、末尾には、論理ブロックアドレスの下位８ビット（ＬＢＡ０）と論理ユニット番号の下位８ビット（ＬＵＮ０）とが付加されている。図８では、データ記憶部５０４には１ブロック５１２バイトのデータが４バイトずつアドレス順に並び、末尾には、論理ユニット番号の下位１６ビット分（ＬＵＮ０及びＬＵＮ１）と、論理ブロックアドレスの下位１６ビット分（ＬＢＡ０及びＬＢＡ１）とが付加されている。本実施の形態では、図８に示すデータがキャッシュメモリ２０６及びディスクドライブ３００に記憶されるようにしている。
【００５０】
ＬＲＣ符号の計算を始める前に、データコントローラ５００は計算するＬＲＣ符号の初期値として「０」を設定する。よって、図７ではＬＲＣ０及び１の値が「０」となり、図８ではＬＲＣ０乃至３の各バイトが「０」となる。
【００５１】
データコントローラ５００は、図７に示す演算方向８０１に沿って、データ記憶部５０４に記憶する１ブロック分のデータについて、ディスクドライブ３００のアドレス順に２バイトずつのデータとＬＲＣ符号（ＬＲＣ０及び１）とを用いて排他的論理和を行う。図７では、１６ビットのＬＲＣ符号（ＬＲＣ０及び１）が求められ、ＬＢＡ０及びＬＵＮ０とともに、３２ビットの保証コードとしてキャッシュメモリ２０６に書き込まれる。
【００５２】
一方、図８に示す演算方向９０１に沿う演算では、データコントローラ５００はＬＲＣ符号に対して、上記４バイト単位のデータを排他的論理和演算していく。データコントローラ５００はその演算の結果をＬＲＣ符号としてＬＲＣ０乃至３に記憶する。ここで、データコントローラ５００は、ｎ番目の４バイト単位のデータを（８×ｎ）ビット左に巡回シフトしてから排他的論理和演算を行う。よって、図８に示すバイト単位のデータについてみると、例えば、ＬＲＣ１の値は、演算方向９０１にしたがって、「Ａ２ｘＡ５ｘ・・・ｘＡ５１１ｘＬＢＡ０」として求められる。ここで「ｘ」は排他的論理和演算を表す。
【００５３】
図７の演算方向８０１に従って計算するＬＲＣ符号は、容易に計算できる反面、データの順序についての保証を行うことができない。例えば、連続するデータが間違った送信順序でデータコントローラ５００に到達した場合、本来２番目に到達するべきデータが１番目に送信されてきたとしても、排他的論理和演算の演算結果は、本来の順番のデータで受信した場合の演算結果と同じになってしまう。
【００５４】
そこで、図８に示す演算方向９０１のように、データコントローラ５００はデータ記憶部５０４に記憶されているデータに対して巡回シフトしながら排他的論理和演算をすることによって、ＦＰＣ２０４から受信したデータが指定されたアドレスの順序に正しく並んでいない場合に排他的論理和演算の結果が正しい保証コードになってしまう不具合を防ぐようにしている。
【００５５】
なお、排他的論理和演算に際して各４バイトのデータを巡回シフトする単位は８ビットに限らず、１ビット、２ビット、４ビットなど任意のビット数をシフトするようにしてもよい。
【００５６】
＝＝＝その他の実施の形態＝＝＝
本実施の形態において、データコントローラ５００がディスクドライブ３００に対する書き込みデータのブロック単位に保証コードを付加していたが、これはＦＰＣ２０４で実現することもできる。
【００５７】
ＦＰＣ２０４がデータ記憶部を備え、ディスクドライブ３００から１ブロック分のデータを読み出す。ＦＰＣ２０４は情報処理装置１００から受信したブロック書き込み要求に応じて、ＦＰＣ２０４の備えるデータ記憶部に記憶した１ブロックのデータを更新し、保証コードを計算する。データコントローラ５００は、保証コードの付加されたブロックデータをキャッシュメモリ２０６に転送する。データ記憶部はＦＰＣ２０４に備える形態としてもよいし、ＦＰＣ２０４がアクセスできるメモリ２０２などの記憶装置を利用する形態としてもよい。
【００５８】
また、データのブロックに対する保証コードの付加は、ＣＰＵ２０１が行ってもよい。ＣＰＵ２０１はディスクドライブ３００に記憶されている論理ブロックのデータをメモリ２０２に読み出す。ＦＰＣ２０４がブロック書き込み要求を受信すると、データコントローラ５００はメモリ２０２に書き込みデータを転送し、メモリ２０２に記憶されている論理ブロックのデータを更新する。ＣＰＵ２０１はメモリ２０２に記憶されている論理ブロックのデータについての保証コードの計算を行い、メモリ２０２に記憶されている論理ブロックのデータの末尾に保証コードを書き込む。データコントローラ５００はメモリ２０２に記憶されている、論理ブロックのデータと保証コードとをキャッシュメモリ２０６に転送する。このようにして、ＣＰＵ２０１は、データコントローラ５００と同様に、ブロック単位に保証コードの計算を行うことができる。
【００５９】
本実施の形態において、保証コードはＬＲＣ符号を用いたが、保証コードにはＬＲＣ符号以外にも、ＣＲＣ符号やＶＲＣ符号、ハミング符号、チェックサム、パリティなどを用いてもよい。
【００６０】
本実施の形態において、ディスクアレイ装置２００はＦＰＣ２０４が受信したディスクドライブ３００に対する書き込みデータを、キャッシュメモリ２０６に格納し、キャッシュメモリ２０６からディスクドライブ３００に転送する形態としたが、ＦＰＣ２０４が受信したデータを、ＦＰＣ２０５を介して直接ディスクドライブ３００に書き込む形態としてもよい。
【００６１】
＝＝＝第２の実施の形態＝＝＝
次に本発明の別の実施の形態のひとつであるディスクアレイ装置について説明する。図９が本第２の実施の形態にかかる情報処理システムの構成を示すブロック図である。  
図９に示す情報処理システムは、上述した第１の実施の形態の情報処理システムと同様の構成となっている。ディスクアレイ装置２００はディスクドライブ３００の記憶領域を情報処理装置１００に提供し、情報処理装置１００は適宜ディスクアレイ装置２００に対してブロックアクセス要求を送信し、ディスクドライブ３００の記憶領域へのアクセスを行う。本実施の形態では、ディスクドライブ３００は記憶デバイス３１０として、ディスクアレイ装置２００と接続されている。記憶デバイス３１０とディスクアレイ装置２００とはＳＣＳＩやファイバチャネルのプロトコルに従った通信経路で接続されている。記憶デバイス３１０とディスクアレイ装置２００とは直接接続する形態としてもよいし、ネットワーク接続の形態としてもよい。また、記憶デバイス３１０はディスクアレイ装置２００に一体的に組み込む形態としてもよい。
【００６２】
ディスクアレイ装置２００は、図９に示すように、チャネル制御部２１０、共有メモリ２２０、スイッチ２３０、キャッシュメモリ２０６、ディスク制御部２４０、管理端末２５０などを備えている。
【００６３】
チャネル制御部２１０はＳＡＮ４００に接続され、情報処理装置１００との間で通信を行う。チャネル制御部２１０は通信インタフェースを備え、例えば、ＬＡＮやＳＣＳＩ、ｉＳＣＳＩ、ＥＳＣＯＮ（登録商標）、ＦＩＣＯＮ（登録商標）、ＡＣＯＮＡＲＣ（登録商標）、ＦＩＢＡＲＣ（登録商標）などのプロトコルにしたがって、ディスクドライブ３００に対するデータ入出力を指示するコマンド（以下、ディスク制御コマンドと称する）をディスク制御部２４０に伝達する。ディスク制御部２４０はチャネル制御部２１０からディスク制御コマンドを受け取ると、ディスクドライブ３００に対するデータ入出力に関する制御を行う。チャネル制御部２１０からディスク制御部２４０に対するディスク制御コマンドは、共有メモリ２２０を介して伝達される。共有メモリ２２０はチャネル制御部２１０やディスク制御部２４０、管理端末２５０などによって共有されるメモリである。
【００６４】
管理端末２５０はディスクアレイ装置２００を保守管理するためのコンピュータである。管理端末２５０はディスクアレイ装置２００に内臓された形態とすることもできるし、独立したコンピュータ端末としてディスクアレイ装置２００に接続する形態とすることもできる。チャネル制御部２１０やディスク制御部２４０において実行されるソフトウェアやデータの更新、設定情報の変更などは管理端末２５０からの指示によって行われる。
【００６５】
＝＝＝チャネル制御部＝＝＝
図１０は、チャネル制御部２１０の構成を示すブロック図である。チャネル制御部２１０は一体的にユニット化されたボードで構成されている。チャネル制御部２１０はＣＰＵ２１１、メモリ２１２、ＮＶＲＡＭ２１３、通信インタフェース部２１４、データコントローラ５００などを備え、これらが一体的にユニット化された回路基板上に形成されて構成されている。
【００６６】
通信インタフェース部２１４は、情報処理装置１００との間で通信を行うためのインタフェースを備えている。通信コネクタ２１５は情報処理装置１００と通信を行うためのコネクタである。本実施の形態におけるチャネル制御部２１０の場合、通信コネクタ２１５は、ＳＡＮ４００に接続可能なコネクタであり、例えば、ファイバチャネルに対応している。チャネル制御部２１０が情報処理装置１００からファイル名を指定したデータ入出力要求を受け付けるのであれば、通信コネクタは例えばイーサネット（登録商標）に対応し、チャネル制御部２１０はＬＡＮ経由でデータ入出力要求を受け付ける。
【００６７】
接続コネクタ２１６はチャネル制御部２１０がディスクアレイ装置２００と接続するためのコネクタである。接続コネクタ２１６がディスクアレイ装置２００側のコネクタと嵌合することにより、チャネル制御部２１０のボードはディスクアレイ装置２００と電気的に接続される。チャネル制御部２１０は接続コネクタ２１６を介してスイッチ２３０に接続され、ディスクアレイ装置２１０内の共有メモリ２２０やキャッシュメモリ２０６、ディスク制御部２４０などにアクセスが可能となっている。
【００６８】
ＣＰＵ２１１はチャネル制御部２１０全体の制御を司る。ＣＰＵ２１１はＮＶＲＡＭ２１３に記憶されたアプリケーションプログラムをメモリ２１２に読み出して実行することによって、各種の機能が実現される。ＮＶＲＡＭ２１３は各種プログラムや設定データなどを格納する不揮発性のメモリである。ＮＶＲＡＭ２１３に記憶されるアプリケーションプログラムや設定データなどの内容は管理端末２５０からの指示により書き換えを行うことができる。
【００６９】
上述した第１の実施の形態で説明したデータコントローラ５００は、このチャネル制御部２１０内においてデータの転送を制御するようにしている。データコントローラ５００の構成は上述した図２に示す部ブロック構成と同様となっている。
【００７０】
チャネル制御部２１０が情報処理装置１００からブロック書き込み要求を受信すると、ＣＰＵ２１１の制御によって、通信インタフェース部２１３が受信したデータをワード単位にデータコントローラ５００に伝送する。データコントローラ５００は通信インタフェース部２１３から受け取ったデータを、上に説明した図６に示す処理の流れと同様に、キャッシュメモリ２０６に書き込んでいく。キャッシュメモリ２０６に書き込まれたデータのブロックには論理ブロック単位で保証コードが付加されていることになる。
【００７１】
キャッシュメモリ２０６に書き込まれた書き込みデータは、ディスク制御部２４０によってディスクドライブ３００に書き込まれる。これにより、ディスクドライブ３００に書き込まれるデータには、論理ブロック単位で保証コードが付加されている。
【００７２】
ディスクアレイ装置２００は、情報処理装置１００からデータを読み出すためのブロックアクセス要求を受信すると、チャネル制御部２１０がその要求に応じてディスク制御部２４０に対してデータを読み出すように指示するコマンドを生成し、共有メモリ２２０に書き込む。ディスク制御部２４０は共有メモリ２２０から読み出したコマンドに応じて、ディスクドライブ３００からデータをブロック単位に読み出し、キャッシュメモリ２０６に書き込む。このとき読み出したブロック単位のデータには、末尾に保証コードが付加されている状態でキャッシュメモリ２０６に書き込まれることになる。チャネル制御部２１０はキャッシュメモリ２０６からブロック単位のデータを読み出し、読み出したデータに付加されている保証コードを用いてデータの完全性を検査する。チャネル制御部２１０は保証コードを除いたブロック単位のデータを情報処理装置１００に送信する。このようにして、ディスクアレイ装置２００は、データの誤りを適宜検査しながらデータの読み書きを行うことによって、信頼性の高いデータの記憶サービスを提供することができる。
【００７３】
＝＝＝ディスク制御部＝＝＝
書き込みデータに対して保証コードを付加する処理は、ディスク制御部２４０で行うようにすることもできる。図１１は、ディスク制御部２４０の構成を示すブロック図である。ディスク制御部２４０は、一体的にユニット化されたボードとして形成されている。ディスク制御部２４０のボードは、インタフェース部２４１、ＣＰＵ２４２、メモリ２４３、ＮＶＲＡＭ２４４、接続コネクタ２４５、データコントローラ５００を備え、これらが一体的にユニット化された回路基板上に形成されている。
【００７４】
ディスクインタフェース部２４１は、ディスクドライブ３００との間で通信を行うための通信インタフェースを備えている。コネクタ２４２はディスクドライブ３００と通信を行うためのコネクタである。コネクタ２４２は、例えば、ディスクドライブ３００がＳＣＳＩのハードディスクである場合、ＳＣＳＩのコネクタであり、ディスクドライブ３００がファイバチャネルの規約にしたがうハードディスクであれば、ファイバチャネルに接続するコネクタとなる。
【００７５】
ＣＰＵ２４２は、ディスク制御部２４０全体の制御を司ると共に、チャネル制御部２１０やディスクドライブ３００、管理端末２５０との間の通信を行う。メモリ２４３やＮＶＲＡＭ２４４に格納された各種プログラムを実行することにより本実施の形態に係るディスク制御部２４０の機能が実現される。ディスク制御部２４０により実現される機能としては、ディスクドライブ３００の制御やＲＡＩＤ制御、ディスクドライブ３００に記憶されたデータの複製管理やバックアップ制御、リモートコピー制御等である。
【００７６】
ＮＶＲＡＭ２４４はＣＰＵ２４２の制御を司るプログラムを格納する不揮発性メモリである。ＮＶＲＡＭ２４４に記憶されるプログラムの内容は、管理端末２５０からの指示により書き込みや書き換えを行うことができる。
【００７７】
接続コネクタ２４５がディスクアレイ装置２００側のコネクタと嵌合することにより、ディスク制御部２４０のボードはディスクアレイ装置２００と電気的に接続される。ディスク制御部２４０はボード接続コネクタ２１６を介してスイッチ２３０に接続し、ディスクアレイ装置２１０内の共有メモリ２２０やキャッシュメモリ２０６、チャネル制御部２１０などにアクセスが可能になっている。
【００７８】
データコントローラ５００は、これまでに説明したデータコントローラ５００と同様のものである。ただし、ディスク制御部２４０の備えるデータコントローラ５００は、キャッシュメモリ２０６から読み出すデータを受信データとし、保証コードを付加したブロックのデータはディスクドライブ３００に書き込まれることとなる。
【００７９】
チャネル制御部２１０は保証コードを付加せずに、受信したデータをキャッシュメモリ２０６に書き込む。ディスク制御部２４０はキャッシュメモリ２０６から読み出すデータを受信データとして、図６に示す処理の流れにしたがって、保証コードを計算し、キャッシュメモリ２０６ではなくディスクドライブ３００にデータを書き込む。
【００８０】
また、チャネル制御部２１０がディスクドライブ３００に対する書き込みデータ受信し、キャッシュメモリ２０６上のデータを更新し、ディスク制御部２４０が保証コードを付加するようにしてもよい。具体的には、チャネル制御部２１０は情報処理装置からディスクドライブ３００に対する書き込みデータを受信すると、ディスク制御部２４０がキャッシュメモリ２０６上にデータをステージングする。チャネル制御部２１０は、受信したデータを随時キャッシュメモリ２０６に書き込んで、ステージングしたデータを更新する。ディスク制御部２４０はキャッシュメモリ２０６からステージングしたデータを読み出し、ブロック単位に保証コードを計算してディスクドライブ３００に書き込む。
【００８１】
以上説明したように、本実施の形態にかかるディスクアレイ装置２００によれば、ディスクアレイ装置２００に連続して送信されてくる書き込みデータが論理ブロックの連続した領域に書き込まれる順序でディスクアレイ装置２００に到達しなかったとしても、ディスクアレイ装置２００はディスクドライブ３００に記憶されるデータにブロック単位で保証コードを付加することができる。したがって、信頼性の高いデータの記憶サービスを提供することができる。
【００８２】
以上本実施の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００８３】
【図１】本発明の一実施の形態による、データ転送回路を備えるディスクアレイ装置を含む情報処理システムの構成を示すブロック図である。
【図２】本発明の一実施の形態による、ディスクアレイ装置２００の備えるデータコントローラ５００のブロック図である。
【図３】本発明の一実施の形態による、情報処理装置１００からブロック書き込み要求を受信し、ディスクドライブ３００に書き込むまでの流れを示す説明図である。
【図４】本発明の一実施の形態による、ファイバチャネルプロトコルによるフレームの大きさと、ディスクドライブ３００の記憶するデータのブロックの大きさとが異なる場合を示した模式図である。
【図５】本発明の一実施の形態による、ディスクアレイ装置２００が複数のＦＰＣ２０４を備え、異なる論理ブロックに対するデータが混在してデータコントローラ５００に伝送される状態を示す説明図である。
【図６】本発明の一実施の形態による、データコントローラ５００がＦＰＣ２０４から書き込みデータを受信し、キャッシュメモリ２０６に書き込む処理の流れを説明するフローチャートである。
【図７】本発明の一実施の形態による、データコントローラ５００の備えるデータ記憶部５０４に記憶される１ブロック分のデータを示す模式図である。
【図８】本発明の一実施の形態による、データコントローラ５００の備えるデータ記憶部５０４に記憶される１ブロック分のデータを示す模式図である。
【図９】本発明の一実施の形態による、情報処理システムの構成を示すブロック図である。
【図１０】本発明の一実施の形態による、チャネル制御部２１０の構成を示すブロック図である。
【図１１】本発明の一実施の形態による、ディスク制御部２４０の構成を示すブロック図である。
【符号の説明】
【００８４】
１００  情報処理装置
２００  ディスクアレイ装置
２０１  ＣＰＵ
２０２  メモリ
２０３  ＮＶＲＡＭ
２０４  ＦＰＣ（ホストインタフェース）
２０５  ＦＰＣ（ディスクインタフェース）
２０６  キャッシュメモリ
２０７  バス
２１０  チャネル制御部
２２０  共有メモリ
２３０  スイッチ
２４０  ディスク制御部
２５０  管理端末
３００  ディスクドライブ
３１０  記憶デバイス
４００  ＳＡＮ
５００  データコントローラ
５０１  バスインタフェース部
５０２  キャッシュインタフェース部
５０３  データ制御部
５０４  データ記憶部
【図１】
2005084799.tif 000003
【図２】
2005084799.tif 000004
【図３】
2005084799.tif 000005
【図４】
2005084799.tif 000006
【図５】
2005084799.tif 000007
【図６】
2005084799.tif 000008
【図７】
2005084799.tif 000009
【図８】
2005084799.tif 000010
【図９】
2005084799.tif 000011
【図１０】
2005084799.tif 000012
【図１１】
2005084799.tif 000013