(57)【要約】【課題】  どのような書き込み時の障害発生に対しても、正常にリトライ処理を実行し得る、ディスクアレイシステム等を提供する。【解決手段】  ディスクアダプタ２０は、次の第一及び第二の機能を有する。第一の機能は、５１２，５２０の最小公倍数である３３２８０バイト（５１２バイト×６５セクタ）のデータＣ１をディスク５１〜５ｎから読み出し、このデータＣ１の一部又は全部をホストコンピュータから送られた新たなデータに書き換えてデータＣ２（５２０バイト×６４セクタ）とし、このデータＣ２をメモリに書き込む。第二の機能は、ディスクアダプタ３０がデータＣ２をメモリ１２から読み出してディスク５１〜５ｎに書き込んでいる時にディスクアダプタ３０に障害が発生すると、データＣ２をメモリ１２から読み出してデータＣ３（５１２バイト×６５セクタ）としてディスク５１〜５ｎに書き込む。【選択図】  図１
2006146633.tif 000002
【特許請求の範囲】
【請求項１】
Ａ，Ｂを自然数かつＡ≠Ｂとしたとき、アクセスの最小単位がＡバイトに固定された複数のディスク装置と、これらのディスク装置とホストコンピュータとの間で伝送されるデータを一時的に記憶するとともにアクセスの最小単位がＢバイトに固定されたキャッシュメモリとの間で、データ転送を制御するとともに冗長構成を有する複数のディスクアダプタから成るディスクアレイ制御装置において、
前記各ディスクアダプタは、
前記Ａ，Ｂの公倍数であるＣバイトのデータＣ１を前記ディスク装置から読み出し、このデータＣ１の一部又は全部を前記ホストコンピュータから送られた新たなデータに書き換えてデータＣ２とし、このデータＣ２を前記キャッシュメモリに書き込む機能と、
他の前記ディスクアダプタが前記データＣ２を前記キャッシュメモリから読み出してデータＣ３として前記ディスク装置に書き込んでいる時に当該他のディスクアダプタに障害が発生すると、前記データＣ２を前記キャッシュメモリから読み出して前記データＣ３として前記ディスク装置に書き込む機能とを有する、
ことを特徴とするディスクアレイ制御装置。
【請求項２】
前記Ｃは前記Ａ，Ｂの最小公倍数である、
請求項１記載のディスクアレイ制御装置。
【請求項３】
前記Ｂは前記Ａよりも大きく、これらのＡ，Ｂの差に相当するバイト数は誤り検出用データである、
請求項１又は２記載のディスクアレイ制御装置。
【請求項４】
前記Ａは５１２であり、前記Ｂは５２０であり、前記Ｃは３３２８０である、
請求項１乃至３のいずれかに記載のディスクアレイ制御装置。
【請求項５】
Ａ，Ｂを自然数かつＡ≠Ｂとしたとき、アクセスの最小単位がＡバイトに固定された複数のディスク装置と、これらのディスク装置とホストコンピュータとの間で伝送されるデータを一時的に記憶するとともにアクセスの最小単位がＢバイトに固定されたキャッシュメモリとの間で、データ転送を制御するとともに冗長構成を有する複数のディスクアダプタによるディスクアレイ制御方法において、
前記各ディスクアダプタは、前記Ａ，Ｂの公倍数であるＣバイトのデータＣ１を前記ディスク装置から読み出し、このデータＣ１の一部又は全部を前記ホストコンピュータから送られた新たなデータに書き換えてデータＣ２とし、このデータＣ２を前記キャッシュメモリに書き込み、
他の前記ディスクアダプタが前記データＣ２を前記キャッシュメモリから読み出してデータＣ３として前記ディスク装置に書き込んでいる時に当該他のディスクアダプタに障害が発生すると、前記データＣ２を前記キャッシュメモリから読み出して前記データＣ３として前記ディスク装置に書き込む、
ことを特徴とするディスクアレイ制御方法。
【請求項６】
前記Ｃは前記Ａ，Ｂの最小公倍数である、
請求項５記載のディスクアレイ制御方法。
【請求項７】
前記Ｂは前記Ａよりも大きく、これらのＡ，Ｂの差に相当するバイト数は誤り検出用データである、
請求項５又は６記載のディスクアレイ制御方法。
【請求項８】
前記Ａは５１２であり、前記Ｂは５２０であり、前記Ｃは３３２８０である、
請求項５乃至７のいずれかに記載のディスクアレイ制御方法。
【請求項９】
Ａ，Ｂを自然数かつＡ≠Ｂとしたとき、アクセスの最小単位がＡバイトに固定された複数のディスク装置と、これらのディスク装置とホストコンピュータとの間で伝送されるデータを一時的に記憶するとともにアクセスの最小単位がＢバイトに固定されたキャッシュメモリと、このキャッシュメモリと前記複数のディスク装置との間でのデータ転送を制御するとともに冗長構成を有する複数のディスクアダプタと、を備えたディスクアレイシステムにおいて、
前記各ディスクアダプタは、
前記Ａ，Ｂの公倍数であるＣバイトのデータＣ１を前記ディスク装置から読み出し、このデータＣ１の一部又は全部を前記ホストコンピュータから送られた新たなデータに書き換えてデータＣ２とし、このデータＣ２を前記キャッシュメモリに書き込む機能と、
他の前記ディスクアダプタが前記データＣ２を前記キャッシュメモリから読み出してデータＣ３として前記ディスク装置に書き込んでいる時に当該他のディスクアダプタに障害が発生すると、前記データＣ２を前記キャッシュメモリから読み出して前記データＣ３として前記ディスク装置に書き込む機能とを有する、
ことを特徴とするディスクアレイシステム。
【請求項１０】
前記Ｃは前記Ａ，Ｂの最小公倍数である、
請求項９記載のディスクアレイシステム。
【請求項１１】
前記Ｂは前記Ａよりも大きく、これらのＡ，Ｂの差に相当するバイト数は誤り検出用データである、
請求項９又は１０記載のディスクアレイシステム。
【請求項１２】
前記Ａは５１２であり、前記Ｂは５２０であり、前記Ｃは３３２８０である、
請求項９乃至１１のいずれかに記載のディスクアレイシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスク装置を並列に接続し、全体をまとめて制御することにより、データ転送の高速化及びデータ障害耐久性の向上を図った、ディスクアレイシステム等に関する。なお、本明細書では、特許請求の範囲における「キャッシュメモリ」及び「ディスク装置」を、それぞれ「メモリ」及び「ディスク」と略称する。
【背景技術】
【０００２】
ディスクアレイシステムは、複数のディスクと、これらのディスクとホストコンピュータとの間で伝送されるデータを一時的に記憶するメモリと、メモリと複数のディスクとの間でのデータ転送を制御するとともに冗長構成を有する二つのディスクアダプタと、を備えている（例えば下記特許文献１）。
【０００３】
従来のディスクアレイシステムにおいて、ディスク及びメモリのアクセスの最小単位がそれぞれ別々の値に固定されているものがある。例えば図４［１］に示すように、ディスクでは１セクタが５１２バイトになっている。これに対して、メモリでは５１２バイトに８バイトのＣＲＣ（Cyclic Redundancy Check）を付加した５２０バイトが１セクタになっている。それぞれ１セクタがアクセスの最小単位である。
【０００４】
【特許文献１】特表２００２−５２０６９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のディスクアレイシステムでは次のような問題があった。
【０００６】
図４［２］に示すように、メモリに保存された書き込みデータの前後のデータをディスクへ書き込んでいる最中に、そのディスクアダプタで障害が発生して転送が異常終了すると、もう一方のディスクアダプタ側からリトライすることになる。しかし、書き込みデータの前後のデータは以前に書き込まれたデータであるため、障害発生前にどこまで書き込まれたのかが判断できない。そのため、もう一度ディスクからデータを読み出して書き込むリトライ処理を実行できないため、前後のデータが失われてしまう可能性があった。
【０００７】
そこで、本発明の目的は、どのような書き込み時の障害発生に対しても正常なリトライ処理を実行できるディスクアレイシステム等を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係るディスクアレイ制御装置は、複数のディスクとメモリとの間で、データ転送を制御するとともに、冗長構成を有する複数のディスクアダプタから成る。ディスクは、アクセスの最小単位がＡバイトに固定されている。メモリは、ディスクとホストコンピュータとの間で伝送されるデータを一時的に記憶するとともに、アクセスの最小単位がＢバイトに固定されている。ただし、Ａ，Ｂは自然数かつＡ≠Ｂである。そして、各ディスクアダプタは、次の第一及び第二の機能を有する。第一の機能は、Ａ，Ｂの公倍数であるＣバイトのデータＣ１をディスクから読み出し、このデータＣ１の一部又は全部をホストコンピュータから送られた新たなデータに書き換えてデータＣ２とし、このデータＣ２をメモリに書き込む。第二の機能は、他のディスクアダプタがデータＣ２をメモリから読み出してデータＣ３としてディスクに書き込んでいる時に他のディスクアダプタに障害が発生すると、データＣ２をメモリから読み出してデータＣ３としてディスクに書き込む。
【０００９】
ＣはＡ，Ｂの公倍数であるから、Ｃ／ＡもＣ／Ｂも自然数になる。そのため、データＣ１〜Ｃ３は、Ｃバイトであるから、ディスクにもメモリにもアクセスが可能となる。本発明では、この性質を利用している。つまり、ＣバイトのデータＣ１をディスクから読み出し、このデータＣ１の一部又は全部をホストコンピュータから送られた新たなデータに書き換えてデータＣ２とし、このデータＣ２をメモリに書き込む。これにより、一のディスクアダプタがディスクへ書き込んでいる最中にどのような障害が発生しても、他のディスクアダプタがデータＣ２をメモリから読み出してデータＣ３としてディスクに書き込むことができる。
【００１０】
ＣはＡ，Ｂの最小公倍数としてもよい。この場合は、アクセスするデータのバイト数が最小となる。また、ＢはＡよりも大きく、これらのＡ，Ｂの差に相当するバイト数は誤り検出用データである、としてもよい。誤り検出用データは、例えばＣＲＣである。具体的な数値例を述べれば、Ａは５１２であり、Ｂは５２０であり、Ｃは３３２８０である。
【００１１】
換言すると、本発明は、１セクタが５１２バイトでアクセスされるディスクへの書き込み処理を６５セクタ単位で管理することにより、データの書き込み中に障害が発生してもデータを失わずにリトライ処理を実行し得る、ディスクへの書き込み手段を提供するものである。
【００１２】
また、本発明に係るディスクアレイ制御方法は、本発明に係るディスクアレイ制御装置の各機能を手順として表現したものである。本発明に係るディスクアレイシステムは、本発明に係るディスクアレイ制御装置に加えて、ディスク及びメモリを備えたものである。
【発明の効果】
【００１３】
本発明によれば、ディスク及びメモリの両方にアクセス可能となるバイト数でデータをディスクから読み出し、このデータの一部又は全部をホストコンピュータから送られた新たなデータに書き換えてメモリに書き込むことにより、一のディスクアダプタがディスクへ書き込んでいる最中にどのような障害が発生しても、他のディスクアダプタがデータをメモリから読み出してディスクに書き込むことができる。したがって、どのような書き込み時の障害発生に対しても正常にリトライ処理を実行し得るディスクアレイシステム等を提供できる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明に係るディスクアレイシステムの一実施形態を示すブロック図である。図２は、本実施形態のディスクアレイシステムにおける２セクタ分の書き込み処理の動作を示す説明図である。以下、これらの図面に基づき説明する。
【００１５】
本実施形態のディスクアレイシステム１０は、ｎ個のディスク５１〜５ｎと、メモリ１２と、二つのディスクアダプタ２０，３０とを備えている。ディスク５１〜５ｎは、アクセスの最小単位が１セクタすなわち５１２バイトに固定されている。メモリ１２は、ディスク５１〜５ｎとホストコンピュータ（図示せず）との間で伝送されるデータを一時的に記憶するとともに、アクセスの最小単位が１セクタすなわち５２０バイトに固定されている。ディスクアダプタ２０，３０は、ディスク５１〜５ｎとメモリ１２との間でデータ転送を制御するとともに、冗長構成を有する。
【００１６】
ディスクアダプタ２０は、例えばコンピュータ及びそのプログラムによって実現された次の第一及び第二の機能を有する。第一の機能は、５１２，５２０の最小公倍数である３３２８０バイト（５１２バイト×６５セクタ）のデータＣ１をディスク５１〜５ｎから読み出し、このデータＣ１の一部又は全部をホストコンピュータから送られた新たなデータに書き換えてデータＣ２（５２０バイト×６４セクタ）とし、このデータＣ２をメモリに書き込む。第二の機能は、ディスクアダプタ３０がデータＣ２をメモリ１２から読み出してデータＣ３（５１２バイト×６５セクタ）としてディスク５１〜５ｎに書き込んでいる時にディスクアダプタ３０に障害が発生すると、データＣ２をメモリ１２から読み出してデータＣ３としてディスク５１〜５ｎに書き込む。ディスクアダプタ３０も、ディスクアダプタ２０と同じ構成である。ディスクアダプタ２０，３０は、例えばマイクロコンピュータを含む１チップ又はマルチチップのＩＣから成り、上記機能以外にも多数の機能を有している。
【００１７】
次に、ディスクアダプタ２０，３０の作用について説明する。３３２８０は５１２，５２０の最小公倍数であるから、３３２８０／５１２も３３２８０／５２０も自然数になる。そのため、データＣ１〜Ｃ３は、３３２８０バイトであるから、ディスク５１〜５ｎに及びメモリ１２の両方にアクセス可能となる。本実施形態では、この性質を利用している。つまり、６５セクタのデータＣ１をディスク５１〜５ｎから読み出し、このデータＣ１の一部又は全部をホストコンピュータから送られた新たなデータに書き換えて６４セクタのデータＣ２とし、このデータＣ２をメモリ１２に書き込む。これにより、ディスクアダプタ２０，３０の一方が書き込み中にどのような障害が発生しても、ディスクアダプタ２０，３０の他方が６４セクタのデータＣ２をメモリ１２から読み出して６５セクタのデータＣ３としてディスク５１〜５ｎに書き込むことができる。
【００１８】
次に、ディスクアレイシステム１０について更に詳しく説明する。
【００１９】
ディスクアレイシステム１０は、ＡＴＡ（AT Attachment）ディスクから成るディスク５１〜５ｎを使用し、二つのディスクアダプタ２０，３０のどちらからでもディスク５１〜５ｎに対してアクセスできる構成になっており、１セクタが５１２バイトで保存されるディスク５１〜５ｎに対して、１セクタが５２０バイトで管理されるメモリ１２上のデータを書き込むことに特徴を有する。また、ホストコンピュータとメモリ１２及びディスクアダプタ２０，３０との間には、ホストアダプタ１１が設けられている。ディスク５０〜５ｎとディスクアダプタ２０，３０との間には、パス制御部４０〜４ｎが設けられている。ここで、一例として、図４［２］に示すように２セクタ分（５１２バイト×２セクタ）のデータの書き込み処理方法について説明する。
【００２０】
ディスクアダプタ２０は、ＭＰＵ２１、記憶回路２２、アダプタ間通信制御部２３、データ転送部２４等から構成されたコントローラである。同様に、ディスクアダプタ３０も、ＭＰＵ３１、記憶回路３２、アダプタ間通信制御部３３、データ転送部３４等から構成されている。ディスクアダプタ２０，３０は、冗長構成となっていて通常はどちらからでも、パス制御部４１〜４ｎがパスを切り替えることにより、ディスク５１〜５ｎに対してコマンドを発行できる。
【００２１】
図４［１］に示すように、メモリ１２は、ホストコンピュータから送られてきた５１２バイトのデータに８バイトのＣＲＣを付加した５２０バイト単位でデータを管理しており、データ転送中のエラーを検出できるようになっている。ディスク５１〜５ｎは、５１２バイト単位でデータを保存している。
【００２２】
従来技術では、図４［２］に示すように例えば２セクタ分（５２０バイト×２）のデータＤ２をディスク５１〜５ｎに書き込むとき、予めディスク５１〜５ｎから３セクタ（５１２バイト×３）のデータＤ１を読み出して記憶回路２２に保存しておき、このデータＤ１に対してホストコンピュータから送られてきた２セクタ分（５２０バイト×２）のデータＤ２を書き換えて３セクタ（５１２バイト×３）のデータＤ３を生成し、これをディスク５１〜５ｎに対して書き込む必要がある。
【００２３】
ここで、データＤ３をディスク５１〜５ｎへ書き込んでいる最中にディスクアダプタ２０に障害が発生した場合、アダプタ間通信制御部２３，３３で通信を行いディスクアダプタ３０側から書き込みのリトライ処理を行うことになる。しかし、図４［２］に示すように、メモリ１２に保存されたデータＤ２の前後で書き込み処理を行っている最中であると、データＤ３内のデータＤ２前後のデータが失われてしまう可能性がある。
【００２４】
そこで、本実施形態では、図２に示すようにディスク５１〜５ｎから予め６５セクタ（５１２バイト×６５）のデータＣ１を記憶回路２２へ転送し、データＣ１に対してホストコンピュータから送られてきた２セクタ分（５２０バイト×２）のデータを書き換えて、６４セクタ（５２０バイト×６４）のデータＣ２を生成し、これをメモリ１２に保存しておくとともに、生成したデータＣ２を６５セクタ（５１２バイト×６５）のデータＣ３としてディスク５１〜５ｎに書き込む。これにより、書き込みの途中にディスクアダプタ２０で障害が発生しても、メモリ１２に保存してあるデータを使うことにより、ディスクアダプタ３０側から正常にリトライ処理を実行できるので、上記の問題を解決できる。
【００２５】
また、ディスクアダプタ２０，３０は、メモリ１２に書き込むべきデータがあることを検出するとそのデータをディスク５１〜５ｎへ書き込む処理を行うとともに、ホストアダプタ１１から読み出し要求を受けるとディスク５１〜５ｎから必要なデータをメモリ１２へ転送して終了報告を行う。パス制御部４１は、ディスクアダプタ２０，３０のどちらのデータ転送部２４，３４からでもコマンド処理ができるように、パスの切り替えを制御している。
【００２６】
ホストアダプタ１１は、ホストコンピュータとの間で、コマンド、データ及びステータスなどのやりとりを制御しており、ホストコンピュータから読み出しの要求があると、メモリ１２にデータが存在するか否かを確認する。そして、メモリ１２にデータが存在していれば（Cache Hit）、メモリ１２からホストコンピュータへデータを転送する。一方、メモリ１２にデータが存在しなければ（Cache Miss）、ディスクアダプタ２０，３０に対し、ディスク５１〜５ｎからメモリ１２へデータを取り込むように指示し、メモリ１２からホストコンピュータへそのデータを転送する。ホストコンピュータから書き込み要求があれば、メモリ１２へデータを転送し、ホストコンピュータへ終了報告を行う。
【００２７】
図３は、ディスクアレイシステム１０における動作の一例を示すフローチャートある。以下、図３を中心に図１乃至図３に基づき、ディスクアレイシステム１０の動作を説明する。
【００２８】
一例として、図２に示すように、２セクタ分（５２０バイト×２）のデータの書き込み処理方法について述べる。ディスクアダプタ２０は、メモリ１２上に書き込むべきデータがあるか否かを定期的にチェックする（ステップ１）。書き込むデータを検出すると、書き込むデータのアドレスをディスク５１〜５ｎ上のアドレスに、ＭＰＵ２１が変換する（ステップ２）。その際、ディスク５１〜５ｎ上のアドレスが６５セクタ境界であるか否かをチェックする（ステップ３）。６５セクタ境界でなければ、アドレスを書き込みデータを含む６５セクタ境界のアドレスに置き換えるとともに、データ転送長を６５セクタ単位に置き換える（ステップ４）。続いて、６５セクタ単位に変更したアドレスデータを、データ転送部２４がディスク５１〜５ｎから記憶回路２２へ読み込む（ステップ５）。続いて、記憶回路２２にあるディスク５１〜５ｎから読み出したデータに対して、メモリ１２にある書き込みデータを書き換えることにより、ディスク５１〜５ｎに書き込む６５セクタ単位のデータを生成し、そのデータでメモリ１２を更新する（ステップ６）。続いて、メモリ１２の６５セクタ単位に変更したデータをディスク５１〜５ｎに対して書き込む（ステップ７）。最後に、ホストアダプタ１１に対して終了報告を行う（ステップ８）。
【００２９】
本実施形態によれば、１セクタが５１２バイトでアクセスされるディスク５１〜５ｎへの書き込み処理を６５セクタ単位で管理することで、ディスクアダプタ２０からの書き込み処理中にディスクアダプタ２０で障害が発生した場合に、ディスクアダプタ３０からリトライ処理を実行しても、データを失ってしまうことがない。
【００３０】
なお、本発明は、言うまでもなく、上記実施形態に限定されない。例えば、ＣＲＣのサイズやデータ転送サイズなどは自由に変更してもよい。
【図面の簡単な説明】
【００３１】
【図１】本発明に係るディスクアレイシステムの一実施形態を示すブロック図である。
【図２】図１のディスクアレイシステムにおける２セクタ分の書き込み処理の動作を示す説明図である。
【図３】図１のディスクアレイシステムにおける動作の一例を示すフローチャートある。
【図４】図４［１］は、メモリ及びディスクの１セクタ分のフォーマットを示す構成図である。図４［２］は、従来のディスクアレイシステムにおける２セクタ分の書き込み処理の動作を示す説明図である。
【符号の説明】
【００３２】
１０  ディスクアレイシステム
１１  ホストアダプタ（ディスクアレイ制御装置）
１２  メモリ（キャッシュメモリ）
２０，３０  ディスクアダプタ
２１，３１  ＭＰＵ
２２，３２  記憶回路
２３，３３  アダプタ間通信制御部
２４，３４  データ転送部
４１〜４ｎ  パス制御部
５１〜５ｎ  ディスク（ディスク装置）
【図１】
2006146633.tif 000003
【図２】
2006146633.tif 000004
【図３】
2006146633.tif 000005
【図４】
2006146633.tif 000006