(57)【要約】【課題】セクタ長固定のデバイスをディスクアレイの記憶域に用いると、従来の保証コードを付加することができない。【解決手段】複数の保証コードをまとめてセクタ長で管理し、データとの対応付け、デバイスへのリード・ライト制御をすべてハードウェアで行うことにより、従来同等の信頼性を実現する。【選択図】  図１
2004288078.tif 000002
【特許請求の範囲】
【請求項１】
計算機と接続されるディスクアレイシステムであって、
前記計算機と接続するための、一又は複数のホスト入出力インタフェースと、
アクセス単位長が固定長である複数のディスク装置と、
前記複数のディスク装置と接続するための、一又は複数のディスク入出力インタフェースと、
前記計算機及び前記複数のディスク装置間で送受信されるデータを一旦格納するキャッシュメモリと、
前記キャッシュメモリへのデータの入出力を制御するキャッシュコントローラとを有し、
前記キャッシュコントローラは、前記計算機からホスト入出力インタフェースが受信した第一のデータを、前記アクセス単位長ごとに分割して複数の第二のデータとし、複数の第二のデータ各々に保証コードを付与して前記キャッシュメモリに格納し、
前記ディスク入出力インタフェースは、第二のデータと該第二のデータに付与された保証コードとを前記複数のディスク装置のいずれかに格納することを特徴とするディスクアレイシステム。
【請求項２】
請求項１記載のディスクアレイシステムにおいて、
前記ディスク入出力インタフェースは、前記キャッシュメモリに格納されている第二のデータと該第二のデータに付与された保証コードとを分離し、分離された第二のデータと保証コードを、ディスク装置内の、各々アクセス単位長の容量を有する、異なる記憶領域に格納することを特徴とするディスクアレイシステム。
【請求項３】
請求項１記載のディスクアレイシステムにおいて、
前記アクセス単位長とは、セクタ長であることを特徴とするディスクアレイシステム。
【請求項４】
請求項３記載のディスクアレイシステムにおいて、
前記ディスク入出力インタフェースは、前記キャッシュメモリに格納されている、第二のデータと該第二のデータに付与された保証コードとを、ディスク装置内の異なるセクタに格納することを特徴とするディスクアレイシステム。
【請求項５】
請求項４記載のディスクアレイシステムにおいて、
前記ディスク入出力インタフェースは、各々異なる第二のデータに付与された複数の保証コードを、一つのセクタにまとめて格納することを特徴とするディスクアレイシステム。
【請求項６】
請求項５記載のディスクアレイシステムにおいて、
前記アクセス単位長は５１２バイトであることを特徴とするディスクアレイシステム。
【請求項７】
請求項５記載のディスクアレイシステムにおいて、
前記複数のディスク装置は各々、ＡＴＡディスク若しくはＳＡＴＡディスクであることを特徴とするディスクアレイシステム。
【請求項８】
請求項５記載のディスクアレイシステムにおいて、
前記ディスク入出力インタフェースは、各々異なるセクタに格納された第二のデータと該第二のデータに付与された保証コードとを、前記複数のディスク装置のいずれかから読み出し、読み出した第二のデータと保証コードとを組にして前記キャッシュメモリに転送することを特徴とするディスクアレイシステム。
【請求項９】
請求項８記載のディスクアレイシステムにおいて、
前記キャッシュコントローラは更に、前記キャッシュメモリに格納された第二のデータと保証コードを読み出し、該保証コードをチェックして該保証コードにエラーがなければ、該保証コードと対応付けられている第二のデータを前記計算機に送信するよう、該第二のデータを前記一又は複数のホスト入出力インタフェースのいずれかに転送することを特徴とするディスクアレイシステム。
【請求項１０】
計算機と接続され、該計算機がアクセスするデータを格納するディスクアレイシステムであって、
計算機がアクセスするデータを格納する、アクセス単位長が固定長である複数のディスク装置と、
計算機からのアクセス要求を受け付けて、該アクセス要求に従って前記複数のディスク装置に対するデータの入出力を制御するディスクコントローラとを有し、
前記ディスクコントローラは、計算機から受信したデータを、前記アクセス単位長ごとにデータブロックに分割し、データブロックごとに保証コードを付与し、保証コードとデータブロックを、前記複数のディスク装置のいずれかに格納するよう制御することを特徴とするディスクアレイシステム。
【請求項１１】
請求項１０記載のディスクアレイシステムにおいて、
前記複数のディスク装置は、各々セクタ単位でアクセスされ、
前記ディスクコントローラは、セクタ長ごとに分割されたデータブロックと、該データブロックに付与された保証コードとを、前記複数のディスク装置の異なるセクタに格納するよう制御することを特徴とするディスクアレイシステム。
【請求項１２】
請求項１１記載のディスクアレイシステムにおいて、
前記ディスクコントローラは、連続する複数のデータブロックに対応する複数の保証コードを、一つのセクタに格納することを特徴とするディスクアレイシステム。
【請求項１３】
請求項１２記載のディスクアレイシステムにおいて、
前記複数のディスク装置は、各々ＡＴＡディスク装置若しくはＳＡＴＡディスク装置であることを特徴とするディスクアレイシステム。
【請求項１４】
複数のディスク装置を有するディスクアレイシステムが、計算機から受信したデータに保証コードを付与して、保証コードの付与されたデータをディスク装置に格納する方法であって、
計算機からデータを受信するステップと、
計算機から受信したデータを、ディスク装置のアクセス単位長ごとのデータブロックに分割する分割ステップと、
データブロックごとに保証コードを付与して拡張データブロックを作成する拡張データブロック作成ステップと、
拡張データブロックを、アクセス単位長がデータブロック長に固定されているディスク装置に格納するデータ格納ステップとを有することを特徴とする、データ格納方法。
【請求項１５】
請求項１４記載のデータ格納方法であって、
前記アクセス単位長は、ディスク装置のセクタ長であることを特徴とするデータ格納方法。
【請求項１６】
請求項１４記載のデータ格納方法であって、
前記データ格納ステップは更に、前記拡張データブロックをデータブロックと保証コードとに分離するステップと、
前記データブロックと前記保証コードとをディスク装置内の異なるセクタに格納するステップとを有することを特徴とするデータ格納方法。
【請求項１７】
請求項１６記載のデータ格納方法であって、
前記データ格納ステップは更に、複数の拡張データブロックが有する複数の保証コードを一つのセクタに格納するステップを有することを特徴とするデータ格納方法。
【請求項１８】
請求項１７記載のデータ格納方法であって、
前記複数のディスク装置は各々、ＡＴＡディスク若しくはＳＡＴＡディスクであることを特徴とする、データ格納方法。
【請求項１９】
請求項１７記載のデータ格納方法であって、
更に、前記データブロックと前記保証コードを前記ディスク装置に格納する際に、保証コードを検査するステップを有することを特徴とするデータ格納方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムの記憶システムとして用いられるディスクアレイシステムの制御方法に係わり、特に記憶媒体としてセクタ長固定のデバイスを用いた場合の、ディスクアレイシステムの高信頼化に関する。
【０００２】
【従来の技術】
ディスクアレイシステムは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）とも呼ばれ、複数のディスク装置をアレイ状に配置した構成を有する。ディスクアレイシステムでは、ホストからのリード要求（データの読み出し要求）およびライト要求（データの書き込み要求）を、複数のディスクに対して並列に実行することにより、入出力要求を高速に処理するとともに、データに冗長データを付加することによって信頼性を向上させている。ディスクアレイシステムは、冗長データの種類とディスクアレイシステムの構成により５つのレベルに分類されている（非特許文献１）。
【０００３】
ディスクアレイシステムを実現するためには、ホストから受信したリード／ライト要求を、各ディスク装置へのリード／ライト要求に変換し、ライト時にはデータを各ディスク装置へ分散させて書き込み、リード時には各ディスク装置からデータを読み出して集合させる、データ分散・集合制御を行う必要がある。このような制御をディスクアレイ制御と呼ぶこととする。
【０００４】
ディスクアレイシステムにおいては、ディスク装置の障害時にもデータを復元できるように冗長データを作成し、ディスク装置に保存しているが、さらに、ディスクアレイ全体の信頼性を高める目的で、各論理データブロックごとに保証コードを付加する方式が知られている。保証コードを付加する方法としては、例えば、特許文献１や特許文献２に記載されているように、データをディスク装置へ書き込む際には、各論理データブロックごとに論理的なアドレス値ＬＡ（Ｌｏｇｉｃａｌ  Ａｄｄｒｅｓｓ）と水平方向の排他的論理和ＬＲＣ（Ｌｏｎｇｉｔｕｄｉｎａｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）とからなる保証コードをデータに付加してディスク装置へ書き込み、データをディスク装置から読み出す際には、各論理データブロックに付加されたＬＡ及びＬＲＣ値をチェックすることによりディスク装置内でのアドレス化け、データ化けを確認する方法が知られている。
【０００５】
【特許文献１】
特開２００１−２０２２９５号広報
【特許文献２】
特開２０００−３４７８１５号広報
【非特許文献１】
デビット・エー・パターソン（Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ）外２名著、「レイド装置の一考察（Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ  （ＲＡＩＤ））」、１９９８年ＡＣＭ  ＳＩＧＭＯＤ国際会議予稿集（Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９８８  ＡＣＭ  ＳＩＧＭＯＤ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ｄａｔａ）、ＡＣＭプレス（ＡＣＭ  Ｐｒｅｓｓ）、１９８８年、ｐ．１０９−ｐ．１１６
【０００６】
【発明が解決しようとする課題】
通常ディスクドライブのセクタサイズは５１２ｂｙｔｅであり、ディスク装置はセクタサイズを最小単位としてアクセスされる。
【０００７】
従来の方法においては、ディスク装置として、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ディスクやＦＣ（ＦｉｂｒｅＣｈａｎｎｅｌ）ディスクといったセクタ長可変のディスクドライブが用いられていた。そのため、論理データブロック長を通常のディスクドライブのセクタ長である５１２ｂｙｔｅとした場合に、論理データブロックに更にＬＡ４ｂｙｔｅ、ＬＲＣ４ｂｙｔｅの計８ｂｙｔｅの保証コードが付加されて、アクセスすべきデータ量が合計５２０ｂｙｔｅ長となっても、５２０ｂｙｔｅをセクタサイズとしてディスク装置をアクセスすることは可能であった。
【０００８】
しかし、セクタ長が５１２ｂｙｔｅの固定長に設定されているディスクをディスク装置として用いようとすると、５２０ｂｙｔｅをセクタサイズとしてディスク装置にアクセスすることはできないため、従来と同じ保証コードの付与方法を用いることはできない。
【０００９】
本発明の目的は、ディスクアレイシステムにおいて、ディスク装置にアクセス単位長が固定のデバイスを用いた場合にも、保証コードを付加することができる技術を提供することにある。
【００１０】
本発明の他の目的は、アクセス単位長が固定長のデバイスをディスク装置として用いた、従来と同等の信頼性を確保したディスクアレイシステムを提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、ディスクアレイシステムは、アクセス単位長が固定長の複数のディスク装置を有し、計算機から受信したデータに対してアクセス単位長毎に保証コードを付与し、データと保証コードをディスク装置内の異なる記憶領域に格納する。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態を説明する。尚、この実施形態によって本発明が限定されるものではない。
【００１３】
まず、本実施形態のシステム構成を、図１を用いて説明する。
【００１４】
図１において、ホスト計算機（以下、単にホストという。）Ａ１００、ホストＢ１１０、ホストＣ１２０は、ディスクアレイシステム２００に対してリード／ライト要求を出し、データの入出力を行う装置である。本実施形態における計算機システムにおいては、一又は複数のホストとディスクアレイシステム２００とは、バススイッチ１３０を介して接続される。
【００１５】
ディスクアレイシステム２００は、ホスト入出力インタフェース２１０、２１１と、ディスクキャッシュ２３０と、ディスク入出力インタフェース２５０、２５１と、ディスク装置群２７０、２７１と、ディスクアレイ全体の制御を行うプロセッサ（ＭＰＵ）２８０と、バスブリッジ２８５と、メモリ２９０と、キャッシュコントローラ３００とを有している。ディスク装置群２７０、２７１は、各々が少なくとも１台以上のディスク装置を有している。本実施形態では、一例として、ディスク装置群２７０はディスク装置２７７〜２７９を有するものとする。ホスト入出力インタフェース２１０、２１１は、少なくとも１つ以上存在すればよい。ディスク入出力インタフェース２５０、２５１は、少なくとも１つ以上存在すればよい。ディスク装置群２７０、２７１は、少なくとも１つ以上存在すればよい。
【００１６】
尚、ホスト入出力インタフェース、キャッシュコントローラ、ＭＰＵ、バスブリッジ、メモリ、ディスクキャッシュ、及びディスク入出力インタフェースを、本実施形態においてはディスクコントローラと呼ぶ。
【００１７】
ホストＡ１００、ホストＢ１１０、ホストＣ１２０は、バススイッチ１３０を介して、ホストバス（ホスト通信路）Ａ１４０、ホストバス（ホスト通信路）Ｂ１４１によりディスクアレイ２００のホスト入出力インタフェース２１０、２１１に接続される。図１には３台のホストがディスクアレイシステム２００に接続されている例を示したが、少なくとも１つ以上のホストがディスクアレイシステム２００に接続されればよい。
【００１８】
ホストＡ１００、ホストＢ１１０、ホストＣ１２０からの入出力要求を受け付け、これらホストとキャッシュコントローラ３００との間のデータの転送を実行するホスト入出力インタフェース２１０、２１１は、ホスト側内部バス（ホスト側内部通信路）２２０を介してキャッシュコントローラ３００と接続される。
【００１９】
ディスク装置群２７０、２７１とキャッシュコントローラ３００との間のデータ転送を実行するディスク入出力インタフェース２５０、２５１は、各々ディスクバス（ディスク通信路）Ａ２６０、ディスクバス（ディスク通信路）Ｂ２６１によりディスク装置群２７０、２７１と接続され、ディスク側内部バス（ディスク側内部通信路）２４０によりキャッシュコントローラ３００と接続される。ディスク入出力インタフェース２５０は、キャッシュコントローラ３００とディスク装置群２７０との間を転送される論理データブロックに対して、ＬＡ及びＬＲＣを分離又は結合するＬＡ／ＬＲＣ分離／結合部２５５を有する。ＬＡ／ＬＲＣ分離／結合部２５５の詳細については後述する。ディスク入出力インタフェース２５１もディスク入出力インタフェース２５０と同様の構成又は機能を有する。
【００２０】
本実施形態においては、ディスク装置２７７〜２７９は、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）ディスクやＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）ディスクといったセクタ長が５１２ｂｙｔｅ固定のディスク装置である。これらのディスク装置は、セクタ長が可変であるＳＣＳＩやＦＣディスクに比べて価格が３分の１程度で安価であるという特徴がある。従って、これらのディスク装置を用いれば安価なディスクアレイシステムを構築することができる。ＡＴＡディスクの場合は同一バス上にディスク装置を２つまで、またＳＡＴＡの場合は同一バス上にディスク装置を１つまでしか接続できないという制限がある。従ってディスク入出力インタフェース２５０、２５１は、必要な台数分ディスク装置を接続できるよう、必要なディスク台数に対応する数のディスクバスＡ２６０、ディスクバスＢ２６１を接続するためのポートを、一又は複数持つ。
【００２１】
尚、本実施形態においては、ディスクアレイシステム２００のディスク装置群はセクタ長が５１２ｂｙｔｅと固定のディスク装置で構成される例を示したが、ディスク装置の種類はこれに限られることはなく、セクタ長が固定のディスク装置であれば、例えば２０４８ｂｙｔｅ等、セクタ長の値はいくつであっても構わない。
【００２２】
ディスクキャッシュ２３０は、キャッシュバス（キャッシュ通信路）２３１によりキャッシュコントローラ３００に接続される。
【００２３】
キャッシュコントローラ３００は、ホスト入出力インタフェース２１０、２１１とディスクキャッシュ２３０との間のデータ転送をバッファリングするホスト側内部バスバッファ３１０と、ディスクキャッシュ２３０とキャッシュコントローラ３００との間のデータ転送を制御するキャッシュ制御部３２０と、ディスク入出力インタフェース２５０、２５１とディスクキャッシュ２３０との間のデータ転送をバッファリングするディスク側内部バスバッファ３３０とを有する。また、キャッシュコントローラ３００は、ホスト入出力インタフェース２１０、２１１からディスクキャッシュ２３０に転送されるデータに後述するＬＡ及びＬＲＣを付加し、ディスクキャッシュ２３０からホスト入出力インタフェース２１０、２１１に転送されるデータに付加されているＬＡ及びＬＲＣを検査し又削除し、ディスクキャッシュ２３０とディスク入出力インタフェース２５０、２５１間を転送されるデータに付加されているＬＡ及びＬＲＣを検査する、ＬＡ／ＬＲＣ付加／検査／削除部３４０を有する。
【００２４】
ＭＰＵ２８０は、バスブリッジ２８５を介してメモリ２９０およびキャッシュコントローラ３００に接続される。
【００２５】
メモリ２９０は、ＭＰＵ２８０がディスクアレイ制御処理を実行するために使用するディスクアレイ制御プログラム２９１と、キャッシュコントローラ３００に対してＬＡの設定を指示したり、ホスト入出力インタフェース２１０、２１１、ディスク入出力インタフェース２５０、２５１に対して、データ転送指示を発行したりするための、内部データ転送制御プログラム２９２を備えている。
【００２６】
次に、ＬＡ及びＬＲＣについて説明すると共に、ＬＡ／ＬＲＣ付加／検査／削除部３４０によって転送データに対して行われるＬＡ又はＬＲＣの付加、検査、削除処理について説明する。
【００２７】
本実施形態におけるディスクアレイ２００は、ホストコンピュータから受信するデータを論理的なブロックに分割して管理・処理するが、その分割最低単位を論理データブロックと呼ぶことにする。尚、本実施形態においては、論理データブロックのサイズはディスク装置への最小リード／ライト単位（即ちセクタサイズ）である５１２ｂｙｔｅとする。
【００２８】
キャッシュコントローラのＬＡ／ＬＲＣ付加／検査／削除部３４０は、各論理データブロックに、転送元アドレスの一部を含む４ｂｙｔｅのＬＡと呼ばれる保証コードを付加して、分割されたデータ（論理データブロック）の異常アドレスに対する読み出し／書き込みを検出できるようにする。このＬＡの値は、連続する論理データブロック間では連続する値をとる。ＭＰＵ２８０は、メモリ２９０内に格納されている内部データ転送制御プログラム２９２を実行することによって、ＬＡ／ＬＲＣ付加／検査／削除部３４０に適当な値を指定する。ＬＡ／ＬＲＣ付加／検査／削除部３４０は、キャッシュコントローラで分割されたホストからの受信データ（論理データブロック）のうち、最初の論理データブロックにはＭＰＵ２８０によって指定された値をＬＡとして付加し、それに続く論理データブロックには、ＭＰＵから指定された値に１ずつ加算した値をＬＡとして付加する。
【００２９】
論理データブロック５１２ｂｙｔｅにＬＡ４ｂｙｔｅを加えた５１６ｂｙｔｅ長のデータの１ｂｙｔｅ目から５１６ｂｙｔｅ目までを、４ｂｙｔｅ単位で排他的論理和をとった値がＬＲＣの値である。ＬＡ／ＬＲＣ付加／検査／削除部３４０は、各論理データブロックと付加されているＬＡについてＬＲＣの値を計算し、論理データブロックにＬＡが付加されたものに、更にＬＲＣを付加する。ＬＡ／ＬＲＣ付加／検査／削除部３４０は、ＬＲＣの値を検査することにより、データ転送中およびディスク装置内部で生じたデータビットエラーを検出できる。
【００３０】
尚、ＬＡ／ＬＲＣの付加、検査、削除の具体的な方法については、特許文献１や特許文献２に記載されている。
【００３１】
図２に、ＬＡ／ＬＲＣ付加／検査／削除部３４０がデータにＬＡ及びＬＲＣを付加する具体的な例を示す。論理データブロック４０１、４１１、４２１は、ホストＡ１００からディスクアレイシステム２００に転送されたホストデータが、キャッシュコントローラ３００によって分割されたものであり、もともとは、論理データブロック４０１、論理データブロック４１１、論理データブロック４２１の順に連続したホストデータであったものである。ＬＡ４０２は、論理データブロック４０１に対応するＬＡであり、４ｂｙｔｅの大きさを持つ。ＬＡ４０２は、論理データブロック４０１の最後尾に付加されるものとする。また更に、論理データブロック４０１にＬＡ４０２を加えた５１６ｂｙｔｅ長のデータを、４バイト単位で横方向（１ｂｙｔｅ目から５１６ｂｙｔｅ目への方向）に排他的論理和をとった値が、ＬＲＣ４０３としてＬＡ４０２の後ろに付加される。ＬＲＣ４０３の大きさは４ｂｙｔｅである。ＬＡ４１２とＬＲＣ４１３、ＬＡ４２２とＬＲＣ４２３はそれぞれ論理データブロック４１１、４２１に対するＬＡ及びＬＲＣであり、ＬＡ４０２、ＬＲＣ４０３と同様に各論理データブロックに付加される。論理データブロック４０１、ＬＡ４０２、ＬＲＣ４０３をあわせた５２０ｂｙｔｅのデータを拡張データ４００と呼ぶ。データ４１０、４２０も同様に拡張データである。
【００３２】
ＬＡ及びＬＲＣの付加処理は、ホスト入出力インタフェース２１０又は２１１からディスクキャッシュ２３０へのデータ転送時に、ＬＡ／ＬＲＣ付加／検査／削除部３４０によって実行される。また、ディスクキャッシュ２３０からホスト入出力インタフェース２１０又は２１１へのデータ転送時に、ＬＡ／ＬＲＣ付加／検査／削除部３４０が、ディスクキャッシュ２３０から読み出された拡張データ中のＬＡ及びＬＲＣを検査することにより拡張データに誤りがないことを調べ、誤りがなければＬＡ／ＬＲＣ付加／検査／削除部３４０はＬＡ及びＬＲＣの合計８ｂｙｔｅ分を拡張データから削除する。そしてキャッシュコントローラ２００は、論理データブロック５１２ｂｙｔｅのみをホスト入出力インタフェース２１０又は２１１へ転送する。従って、ホスト側内部バス２２０上を流れるデータは、論理データブロックであり、キャッシュバス２３１、ディスク側内部バス２４０上を流れるデータは、拡張データとなる。
【００３３】
ディスクキャッシュ２３０とディスク入出力インタフェース２５０又は２５１間で転送されるのは拡張データである。ディスクキャッシュ２３０とディスク入出力インタフェース２５０、２５１間で拡張データが転送される場合には、ＬＡ／ＬＲＣ付加／検査／削除部３４０は、ＬＡ及びＬＲＣの検査のみを行い、誤りがなければ拡張データの転送が続行される。ＬＡ／ＬＲＣ付加／検査／削除部３４０がＬＡ及びＬＲＣを検査した時にＬＡあるいはＬＲＣの誤りが検出された場合は、ＬＡ／ＬＲＣ付加／検査／削除部３４０により誤りの内容がＭＰＵ２８０へ報告され、ＭＰＵ２８０がエラー処理ルーチンにより誤りを適切に処理する。
【００３４】
次に、ディスク入出力インタフェース２５０及び２５１が有する、ＬＡ／ＬＲＣ分離／結合部２５５について説明し、又、セクタ長５１２ｂｙｔｅ固定のディスク装置に対して論理データブロック、ＬＡ及びＬＲＣを格納する方法を説明する。
【００３５】
本実施形態において使用されるディスク装置は、セクタ長が５１２ｂｙｔｅと固定であるため、ディスク装置に対するリード／ライト処理は、最小単位で５１２ｂｙｔｅ単位でしか実行できない。前述のように拡張データは５２０ｂｙｔｅであり、ディスク入出力Ｉ／Ｆ２５０は、拡張データをこのままディスク装置へ書き込むことはできない。また保証コード部分（保証コード部分とは、ＬＡ及びＬＲＣを合わせた部分のことを言う。）の合計サイズは８ｂｙｔｅであるから、ディスク入出力Ｉ／Ｆ２５０が保証コード部分のみをこのままディスク装置へ書き込むと、セクタ５１２ｂｙｔｅ中８ｂｙｔｅを除いた５０４ｂｙｔｅが無意味なデータになってしまい、ディスク容量の多くを無駄にすることとなる。
【００３６】
そこで、本実施の形態では、図３に示すように複数の論理データブロックに付加されている保証コード部分を集めて制御することにより、この問題を解決する。具体的には、保証コード部分８ｂｙｔｅを６４個分集めると５１２ｂｙｔｅになるので、図３に示すように、ＬＡ／ＬＲＣ分離／結合部２５５は、論理データブロック６４個分の保証コード部分を集めて一つのＬＡ／ＬＲＣ群を形成する。
【００３７】
より具体的な制御方法としては、図４に示すように、１Ｍｂｙｔｅを一つの単位として、先頭から２０１６個の論理データブロックが配置され、その後ろに論理データブロックの配置と同じ順番でＬＡ／ＬＲＣ群が配置されるよう、ディスク入出力インタフェース２５０、２５１はディスク装置群にデータを格納する。ここでＬＡ／ＬＲＣ群１は、論理データブロックであるＤＡＴＡ１からＤＡＴＡ６４までに対応する６４個の保証コード部分を集めたものであり、同様にＬＡ／ＬＲＣ群２は、ＤＡＴＡ６５からＤＡＴＡ１２８に対応する保証コード部分の集合である。ディスク入出力インタフェース２５０、２５１が、１Ｍｂｙｔｅを単位として論理データブロック及びＬＡ／ＬＲＣ群をディスク装置内に配置するよう制御するため、１Ｍｂｙｔｅの範囲に収めるために最後のＬＡ／ＬＲＣ群３２だけは２５６ｂｙｔｅの大きさとなっており、１Ｍｂｙｔｅの範囲中、最後の２５６ｂｙｔｅは空き領域となる。
【００３８】
論理データブロックと保証コード部分とをディスク装置内に図４の様に配置、格納すると、任意の論理データブロックであるＤＡＴＡＸに対応する保証コード部分が格納されているディスク装置内の位置は、次の計算式から求めることができる。即ち、計算式（Ｘ／６４）＋１の整数部分をＹとすると、論理データブロックＤＡＴＡＸの保証コード部分は、ＬＡ／ＬＲＣ群Ｙ内の（Ｘ  ｍｏｄ  ６４）−１に８ｂｙｔｅを乗じた位置から８ｂｙｔｅ分を占めていることになる。この計算結果がマイナスの場合（Ｘが６４で割り切れる場合）は、対応する保証コード部分はそのままマイナスの位置、すなわちＬＡ／ＬＲＣ群（Ｙ−１）の最後尾８ｂｙｔｅになる。
【００３９】
例えばＤＡＴＡ１２７の保証コード部分は、（１２７／６４）＋１＝２．９８・・・からＬＡ／ＬＲＣ群２内に存在し、（１２７ｍｏｄ６４）−１＝６２、６２×８＝４９６、よってＬＡ／ＬＲＣ群２の先頭から４９６ｂｙｔｅ目からの８ｂｙｔｅ分を占めている。このように、１Ｍｂｙｔｅ範囲ごとに、論理データブロックと保証コード部分のディスク装置内での格納位置は、機械的に計算可能である。
【００４０】
ＬＡ／ＬＲＣ分離／結合部２５５は、内部にＬＡ／ＬＲＣ群１つ分を蓄える５１２ｂｙｔｅ容量のバッファを持つ。上述の様に、一つのＬＡ／ＬＲＣ群は、論理データブロック６４個分に対応する保証コード部分を有する。そこで、ＬＡ／ＬＲＣ分離／結合部２５５は、同じＬＡ／ＬＲＣ群に対応する６４個の論理データブロックを一組の論理データブロックグループとして管理すると共に、論理データブロックグループとこれに対応するＬＡ／ＬＲＣ群との組合せに対してグループナンバーをつけて、グループナンバーを用いて論理データブロックグループ及びＬＡ／ＬＲＣ群を管理する。
【００４１】
このグループナンバーは、ＬＡ／ＬＲＣ分離／結合部２５５が実際に論理データブロックグループとこれに対応するＬＡ／ＬＲＣ群との組合せに対して適当な番号Ｚをナンバリングすることにより定めても良い。
【００４２】
グループナンバーは論理アドレスを含むＬＡから算出することもできる。ＬＡは連続する論理データブロック間では連続した値となるから、同じグループに属する論理データブロックのＬＡの値は連続した値であると考えられる。従って、（ＬＡの値／６４）の商の整数部分をＺ’とすると、Ｚ’の値が同じ値となる論理データブロックは、同じＬＡ／ＬＲＣ群と対応付けられている、即ち同じ論理データブロックグループに属する論理データブロックであると考えられる。そこで、このＺ’の値を論理データブロックグループとこれに対応するＬＡ／ＬＲＣ群とに対して付与されているグループナンバーとしても良い。
【００４３】
更に、論理データブロックの転送時には、転送対象の論理データブロックを特定するためのアドレスが指定されるので、そのアドレスからグループナンバーを算出することも可能である。同じ組に属する論理データブロックは、ディスク装置群内では、５１２ｂｙｔｅが６４個分、すなわち３２Ｋｂｙｔｅ範囲内に格納されているはずである。従って少なくとも３２Ｋｂｙｔｅ以上離れたアドレスへのデータ転送は、別の論理データブロックグループに属する論理データブロックの転送ということになる。そこで、ある論理データブロックグループの先頭論理データブロックのディスク装置内での位置を基準位置として、転送対象の論理データブロックのアドレスが示すディスク装置内の格納位置と、基準位置との間に存在する記憶領域のサイズを、３２Ｋｂｙｔｅで割った際の商の整数部分（この商の整数部分の値をＺ’’とする。）をグループナンバーとしても良い。
【００４４】
図５に示すフローチャートを用いて、ディスク入出力インタフェース２５０によって実行される、ディスクキャッシュ２３０からディスク装置群２７０へのデータ転送処理の流れを説明する。
【００４５】
ディスク入出力インタフェースは、内部に拡張データ５２０ｂｙｔｅを格納するバッファを有する。ＭＰＵ２８０が発行した、ディスクキャッシュ２３０からディスク装置群２７０へのデータ転送指示を、ディスク入出力インタフェース２５０が受信すると、ディスク入出力インタフェース２５０は、ディスクキャッシュ２３０からディスク入出力インタフェース内部のバッファに、論理データブロックに保証コード部分（ＬＡ及びＬＲＣ）が付加されている拡張データ５２０ｂｙｔｅを読込む（ステップ１０００）。そして、ＬＡ／ＬＲＣ分離／結合部２５５が、読み込まれた拡張データを論理データブロック５１２ｂｙｔｅとＬＡ／ＬＲＣ（保証コード部分）８ｂｙｔｅに分離して、ディスク装置群２７０へ論理データブロックのみを書き込む（ステップ１０１０）。
【００４６】
ＬＡ／ＬＲＣ分離／結合部２５５は上述の様に、内部にＬＡ／ＬＲＣ郡一つ分を蓄えるバッファを持つので、ステップ１０２０において、ＬＡ／ＬＲＣ分離／結合部２５５は、そのバッファに前回の拡張データブロックの転送時に格納されたＬＡ／ＬＲＣ群に対応付けられたグループナンバーと、ステップ１０１０でディスク装置群へ書き込まれた論理データブロックに対応付けられたグループナンバーとが一致するか否かを比較する。一致しなかった場合はバッファ内のＬＡ／ＬＲＣ群は直前に行われたデータ転送に対応するＬＡ／ＬＲＣ群で、現在転送している拡張データブロックに対応するＬＡ／ＬＲＣ群とは異なるので、ディスク入出力インタフェース２５０はバッファ内のＬＡ／ＬＲＣ群をディスク装置群２７０へ書き出し、バッファをクリアする（ステップ１０３０）。その後、ＬＡ／ＬＲＣ分離／結合部２５５はステップ１０４０において、ステップ１０１０でディスク装置群２７０へ書き出された論理データブロックに対応する保証コード部分を、ディスク入出力インタフェース内部のバッファからＬＡ／ＬＲＣ分離／結合部２５５内のバッファへ書き込み、ステップ１０００に戻りデータ転送処理を続ける。
【００４７】
ステップ１０２０において、グループナンバーが一致した場合は、ステップ１０１０でディスク装置群２７０に書き出した論理データブロックが属する論理データブロックグループに対応するＬＡ／ＬＲＣ群がすでにバッファ内にあるので、ステップ１０１０でディスク装置群２７０に書き出された論理データブロックに対応する保証コード部分を、ディスク入出力インタフェース内部のバッファからＬＡ／ＬＲＣ分離／結合部２５５が有するバッファへ書き込み、ステップ１０００に戻りデータ転送処理を続ける。転送初めのためバッファが空である場合も同様にステップ１０１０でディスク装置群２７０に書き出された論理データブロックに対応する保証コード部分を、ディスク入出力インタフェース内部のバッファからＬＡ／ＬＲＣ分離／結合部２５５が有するバッファへ書き込み、ステップ１０００に戻りデータ転送処理を続ける。
【００４８】
この処理はＭＰＵ２８０が用意し発行したデータ転送指示がなくなるまで繰り返し行われる。データ転送指示がなくなったら、バッファの内容をディスク装置群２７０へ書き出し、バッファはクリアされる。
【００４９】
同一グループナンバー内のデータがすでにディスク装置群２７０に書き込まれている時に新たなデータ転送におけるＬＡ／ＬＲＣ群で上書きしてしまうと、以前のデータ（ＬＡ／ＬＲＣ）を壊してしまうので、同一グループナンバー内のデータがすでにディスク装置群２７０に書き込まれている場合には、対応するＬＡ／ＬＲＣ群を先にバッファ内に読み出しておき、新たなデータ転送におけるＬＡ／ＬＲＣとマージする処理を行う必要がある。
【００５０】
あるいは、ディスクキャッシュ上でデータを扱う単位を３２Ｋｂｙｔｅなり６４Ｋｂｙｔｅなりとし、ホストからその単位以下、たとえば５１２ｂｙｔｅの書き込みがあった場合には、その５１２ｂｙｔｅを含む３２Ｋｂｙｔｅデータをディスク装置群から読み出しキャッシュ上で処理するという方法がある。このような処理の場合、ディスク装置群への書き込みは、常にキャッシュ上のデータを扱う単位での書き込みとなる。このためキャッシュ上でデータを扱う単位が３２Ｋｂｙｔｅであれば、ディスク装置群への書き込みは常にグループナンバー単位での書き込みとなるために、上記のようなマージ処理は不要となる。
【００５１】
図６に示すフローチャートを用いて、ディスク入出力インタフェース２５０が実行する、ディスク装置群２７０からディスクキャッシュ２３０へのデータ転送処理の流れを説明する。
【００５２】
ＭＰＵ２８０が用意したディスク装置群２７０からディスクキャッシュ２３０へのデータ転送指示を、ディスク入出力インタフェース２５０が受信すると、ディスク入出力インタフェース２５０は、ディスク装置群２７０からディスク入出力インタフェース内部のバッファへ、論理データブロック５１２ｂｙｔｅを読み出す（ステップ１１００）。ステップ１１１０において、ディスク入出力インタフェース２５０は、読み出した論理データブロックと対応付けられているグループナンバーと、ＬＡ／ＬＲＣ分離／結合部２５５内のバッファに格納されているＬＡ／ＬＲＣ群と対応付けられているグループナンバーとが一致するかを比較する。
【００５３】
一致しなかった場合および転送初めのためＬＡ／ＬＲＣ分離／結合部２５５内のバッファが空の場合は、ディスク入出力インタフェース２５０は、ステップ１１００でディスク入出力インタフェース内部のバッファへ転送した論理データブロックに対応するＬＡ／ＬＲＣ群５１２ｂｙｔｅをディスク装置からＬＡ／ＬＲＣ分離／結合部２５５内のバッファへ読み込む（ステップ１１２０）。
【００５４】
一致する場合は、すでに対応するＬＡ／ＬＲＣ群がバッファ内に読み込まれていることになる。ステップ１１３０において、ＬＡ／ＬＲＣ分離／結合部２５５は、ステップ１１００で読み出した論理データブロックと、それに対応するＬＡ／ＬＲＣ（バッファ内にある）とを結合して５２０ｂｙｔｅの拡張データとして、ディスクキャッシュ２３０へ書き込む。そしてまたステップ１１００へ戻る。
【００５５】
このデータ転送処理は、ＭＰＵ２８０が用意したデータ転送指示がなくなるまで繰り返し行われる。
【００５６】
以上の構成、動作により本実施形態によれば、ディスクアレイシステム２００の記録媒体として、セクタ長５１２ｂｙｔｅ固定のディスク装置を用いた場合にも、論理データブロック５１２ｂｙｔｅに対して従来同等の保証コードＬＡ／ＬＲＣ８ｂｙｔｅを付加することが可能となる。複数の保証コードをまとめて一つのセクタに格納するため従来と違い、ディスク装置内では論理データブロックとＬＡ／ＬＲＣの位置が離れて記憶されることとなるが、論理データブロックと保証コードの対応付け、保証コードの格納位置の計算、論理データブロックとＬＡ／ＬＲＣとの分離／結合および、ディスク装置へのＬＡ／ＬＲＣ群の書き込み／読み出しはすべてディスク入出力インタフェース内のハードウェア（ＬＡ／ＬＲＣ分離／結合部）によって行われるため、ソフトウェアによる誤りが介在することはなく、ディスク装置内でのアドレス化け、データ化けを従来と同等のレベルで検査することが可能である。
【００５７】
尚、本実施形態においては、ＬＡ／ＬＲＣ分離／結合部はハードウェアで実現されるものとして説明したが、ディスク入出力インタフェースが内部にマイクロプロセッサとメモリを有し、メモリ内に格納されているＬＡ／ＬＲＣ分離／結合プログラムをマイクロプロセッサが実行することにより、ＬＡ／ＬＲＣ分離／結合部が実現される構成であっても良い。
【００５８】
なお、ホストＡ１００、ホストＢ１１０、ホストＣ１２０とホスト入出力インタフェース２１０、２１１の間のインタフェースとしては、たとえばファイバチャネル、ＳＣＳＩなどが考えられるが、他のインタフェースであってもよい。また、ホスト側内部バス２２０、および、ディスク側内部バス２４０は、たとえば６４ビット幅のＰＣＩバスなどが考えられるが、３２ビット幅のＰＣＩバスや他のバスであっても実現できる。
【００５９】
更に、ディスクアレイシステム２００の記憶媒体のセクタ長はや論理データブロックのサイズは５１２ｂｙｔｅに限定されることはなく、保証コードのサイズも８ｂｙｔｅに限られることはない。
【００６０】
また、ディスク入出力インタフェースが、転送される拡張データのＬＡ／ＬＲＣを検査することにより、ディスク装置内部やディスクバスあるいはディスク側内部バス等でのビット化けやアドレス誤りを検出することが可能である。
【００６１】
【発明の効果】
本発明によれば、ディスクアレイシステムにアクセス単位長固定のディスク装置を採用した場合にも、データに保証コードを付加してディスク装置に格納することができる。この結果、アクセス単位固定長のデバイスを用いた、信頼性の高いディスクアレイシステムを提供することができる。
【図面の簡単な説明】
【図１】第１の実施形態における計算機システムの構成例を示す図である。
【図２】拡張データブロックの一例を示す図である。
【図３】ＬＡ／ＬＲＣ群の一例を示す図である。
【図４】ディスク装置群内での、論理データブロックとＬＡ／ＬＲＣ群の配置の一例を示す図である。
【図５】ディスクキャッシュからディスク装置群へのデータ転送処理の一例を示すフローチャートである。
【図６】ディスク装置群からディスクキャッシュへのデータ転送処理の一例を示すフローチャートである。
【符号の説明】
１００…ホストＡ
２００…ディスクアレイ
２１０…ホスト入出力インタフェース
２２０…ホスト側内部バス
２３０…ディスクキャッシュ
２３１…キャッシュバス
２４０…ディスク側内部バス
２５０…ディスク入出力インタフェース
２５５…ＬＡ／ＬＲＣ分離／結合部
２６０…ディスクバス２６０
２７０…ディスク装置群
２８０…ＭＰＵ
３００…キャッシュコントローラ
３４０…ＬＡ／ＬＲＣ付加／検査／削除部
【図１】
2004288078.tif 000003
【図２】
2004288078.tif 000004
【図３】
2004288078.tif 000005
【図４】
2004288078.tif 000006
【図５】
2004288078.tif 000007
【図６】
2004288078.tif 000008