(57)【特許請求の範囲】
【請求項１】
ホストコンピュータと、このホストコンピュータと通信手段を介して接続し、前記ホストコンピュータから送信された入出力要求を受信してこの要求に対応するデータ入出力処理を記憶手段に対して実行する記憶制御装置と、を含んで構成されるストレージシステムにおけるデータ検証方法であって、
ホストコンピュータが、記憶制御装置に記憶するデータを規定の仕様に従って編成し管理するアプリケーションプログラムを実行する工程と、
ホストコンピュータが、前記アプリケーションプログラムが使用する前記記憶手段の記憶領域の範囲を特定する領域管理データを記憶制御装置に送信する工程と、
記憶制御装置が、前記領域管理データを受信する工程と、
記憶制御装置が、前記アプリケーションプログラムの処理に起因してホストコンピュータから送信されるデータ入出力要求を受信して、そのデータ入出力要求の処理対象となるデータのうち前記領域管理データに基づいて特定される前記アプリケーションプログラムが使用する記憶領域に対して入出力されるデータについて、そのデータが前記規定の仕様に従って編成されているかどうかを検証する工程と、
を有することを特徴とするストレージシステムにおけるデータ検証方法。
【請求項２】
前記記憶制御装置が、前記ホストコンピュータで稼働する複数の前記アプリケーションプログラムのそれぞれについての前記検証を行う複数のプログラムを記憶する工程と、
前記記憶制御装置が、前記ホストコンピュータから送信されてくる前記領域管理データに基づいて前記各アプリケーションプログラムのそれぞれが使用する記憶領域を特定する工程と、
前記記憶制御装置が、前記各アプリケーションプログラムの処理に起因してホストコンピュータから送信されるデータ入出力要求を受信して、前記領域管理データに基づいて前記データ入出力要求に関わる前記アプリケーションプログラムを特定する工程と、
前記記憶制御装置が、前記データ入出力要求の処理対象となるデータのうち前記領域管理データで特定される記憶領域に入出力されるデータについて、そのデータが前記規定の仕様に従って編成されているかを、前記特定したアプリケーションプログラムに対応する前記プログラムにより検証する工程と、
を有することを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項３】
前記ホストコンピュータが、前記プログラムを前記ホストコンピュータから前記記憶制御装置に送信する工程と、
前記記憶制御装置が前記プログラムを受信して記憶する工程と、
を有することを特徴とする請求項２に記載のストレージシステムにおけるデータ検証方法。
【請求項４】
前記ホストコンピュータが、前記範囲が変更された場合に、その変更内容が反映された前記領域管理データを前記記憶制御装置に送信する工程を有することを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項５】
前記アプリケーションプログラムが使用する前記記憶手段の記憶領域は、前記ホストコンピュータ上で稼働する前記アプリケーションプログラムとは異なるソフトウエアにより付加される制御情報の使用領域を除いた領域であることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項６】
前記領域管理データには、前記記憶手段の前記記憶領域を用いて論理的に編成されたボリュームを単位として前記アプリケーションプログラムに提供される前記記憶領域の範囲を指定するデータが含まれることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項７】
前記ボリュームは、前記記憶手段の前記記憶領域をRAID方式で運用することにより編成されることを特徴とする請求項６に記載のストレージシステムにおけるデータ検証方法。
【請求項８】
前記記憶手段は、前記記憶制御装置に一体に設けられることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項９】
前記記憶領域は、ディスクドライブなどの物理的な記憶デバイスにより提供される記憶領域上に編成される論理的な記憶デバイスとして提供されることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項１０】
前記通信手段は、ＳＣＳＩ規格に準拠した通信方式によるものであることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項１１】
前記通信手段は、ＳＡＮであることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項１２】
前記通信手段は、ＬＡＮであることを特徴とする請求項１に記載のストレージシステムにおけるデータ検証方法。
【請求項１３】
ホストコンピュータと通信手段を介して接続し、前記ホストコンピュータから送信される入出力要求を受信して、前記入出力要求に対応するデータ入出力処理をディスクドライブに対して実行するディスクアレイ装置であって、
前記ディスクドライブが提供する記憶領域上に論理デバイスが編成され、
前記ホストコンピュータで動作するアプリケーションプログラムのＩＤであるアプリケーションＩＤと、前記アプリケーションプログラムが使用する前記論理デバイスのＩＤである論理デバイスＩＤとを対応付ける領域管理テーブルを前記ホストコンピュータから受信し、受信した前記領域管理テーブルを前記ディスクドライブに記憶し、
前記アプリケーションＩＤに対応付けて、前記論理デバイスに記憶されているデータが、前記アプリケーションプログラムに規定の仕様に従って編成されているかどうかを検証するデータ検証用プログラムを前記ディスクドライブに記憶し、
前記アプリケーションプログラムの処理に起因して前記ホストコンピュータから送信されるデータ入出力要求を受信し、
受信した前記データ入出力要求にセットされている前記論理デバイスＩＤに対応づけられているアプリケーションＩＤを調べ、調べた前記アプリケーションＩＤに対応する前記データ検証用プログラムを起動すること、
を特徴とするディスクアレイ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ検証方法およびディスクアレイ装置に関する。
【０００２】
【従来の技術】
ストレージの集約的運用などを目的として、ホストコンピュータとディスクアレイ装置などの記憶制御装置とを、ＳＡＮ（Storage Area Network）などのネットワークで結んだ形態のストレージシステムが注目されており、ＩＤＣ（Internet Data Center）などの多くの場所でこのような形態での運用が行われている。また、最近ではネットワークにＬＡＮ（Local Area Network）を利用し、ファイルシステムを搭載したＮＡＳ（Network Attached Storage）と呼ばれる記憶制御装置を用いるものも注目されている。
【０００３】
このような形態で運用されるストレージシステムにおいて、ホストコンピュータ上で稼働する、例えば、データベースソフトウエアなどのアプリケーションプログラムなどは、データが規定の仕様を具備していること（以下、「適合性」と呼ぶ）を要求するものが少なくない。そこで、アプリケーションプログラムの中には、処理の対象となるデータの適合性を検証するアルゴリズムを備えるものがある。
【０００４】
【発明が解決しようとする課題】
ところで、アプリケーションプログラムが前記のようなアルゴリズムを備えていたとしても、ホストコンピュータと記憶制御装置とを結ぶ、例えば、前述したＳＡＮなどの通信路や、記憶制御装置内部の処理によりデータの適合性が失われてしまうことがある。また、記憶制御装置は、複数のホストコンピュータに共用されていることも多く、この場合、他のホストコンピュータ上で動作するアプリケーションプログラムが誤って他のホストコンピュータ上で動作するアプリケーションプログラムのデータにアクセスしてしまい、データの適合性が損なわれてしまうということもある。
【０００５】
ここで、例えば、記憶制御装置への書き込み対象のデータについての適合性が、このようにアプリケーションプログラムが関知しないところで損なわれてしまったような場合には、記憶制御装置側では適合性が失われているかどうかを認知することができず、そのデータはそのまま記憶制御装置側に記憶されてしまうことになる。そして、この場合、アプリケーションプログラムはそのデータを読み込んだ際に初めて適合性が失われていることを事後的に認知することになり、そのデータの書き込み時から読み出し時までのタイムラグが長い場合には、修復が困難となることもある。
【０００６】
また、記憶制御装置側でバックアップ運用が行われている場合でも、バックアップされているデータが、既に適合性が損なわれているデータであった場合には、データを修復することもできない。さらに、このようにアプリケーションプログラムが関知しない範囲でデータの適合性が失われてしまった場合には、事後的な原因追求が難しいことが多く、障害復旧等の作業を困難にさせる要因ともなる。
【０００７】
そこで、記憶制御装置側でデータ検証を行うようにすることが考えられるが、一般にストレージシステムにおいては、アプリケーションプログラムが記憶制御装置に記憶するデータには、ホストコンピュータ上で稼働するオペレーティングシステム（以下、「ＯＳ」と記載する）が付加する情報やホストコンピュータ上で論理的に編成されたボリュームに関する情報などが付帯されている。また、アプリケーションプログラムが記憶制御装置に記憶するデータは、ＯＳやボリューム管理プログラムの都合などにより、ホストコンピュータ上でアプリケーションプログラムが参照する配置とは異なった配置で記憶されているが、記憶制御装置側では、前述のような情報や配置を知ることができない。つまり、現状のストレージシステムの仕組みでは、アプリケーションプログラムが行っているデータ検証を、記憶制御装置側では行うことができず、実施する場合には記憶制御装置は必要な情報を、アプリケーションプログラム及びＯＳやボリューム管理プログラムから取得する仕組みが必要である。
【０００８】
ところで、例えば、特開平８−２６３２２３号公報には、アプリケーションプログラムから磁気ディスクに対するデータの読み出し書き込みの際に行うＲＡＳ（Reliability Availability Serviceability）、すなわちデータの信頼性向上のためのデータチェックを容易に行えるようにする仕組みとして、アプリケーションプログラムからのＩ／Ｏを契機としてＣＰＵがＲＡＳデータを作成し、これを磁気ディスクに書き込もうとするデータに付帯させ、これにより磁気ディスク入出力チャネルおよび磁気ディスクコントローラがデータチェックを行うようにした仕組みが開示されている。
【０００９】
しかしながら、この公報の仕組みでは、前記のＲＡＳデータはあくまでＣＰＵによって独自に作成されてデータに付加されるものであるし、また、ＲＡＳデータはアプリケーションプログラムが要求するデータの適合性に関するものでは無い。また、前記の公報の仕組みは、このような情報や配置を認知するものでもなく、ホストコンピュータ上で稼働する個々のアプリケーションプログラムが要求する前記の適合性を検証するものでも無い。
【００１０】
この発明は、以上の観点からなされたもので、ストレージシステムにおいて、データの適合性を、より確実に検証し確保することができる、データ検証方法およびディスクアレイ装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
この目的を達成する、本発明の主たる発明は、ホストコンピュータと、このホストコンピュータと通信手段を介して接続し、前記ホストコンピュータから送信された入出力要求を受信してこの要求に対応するデータ入出力処理を記憶手段に対して実行する記憶制御装置と、を含んで構成されるストレージシステムにおけるデータ検証方法であって、
ホストコンピュータが、記憶制御装置に記憶するデータを規定の仕様に従って編成し管理するアプリケーションプログラムを実行する工程と、
ホストコンピュータが、前記アプリケーションプログラムが使用する前記記憶手段の記憶領域の範囲を特定する領域管理データを記憶制御装置に送信する工程と、
記憶制御装置が、前記領域管理データを受信する工程と、
記憶制御装置が、前記アプリケーションプログラムの処理に起因してホストコンピュータから送信されるデータ入出力要求を受信して、そのデータ入出力要求の処理対象となるデータのうち前記領域指定データに基づいて特定される前記アプリケーションプログラムが使用する記憶領域に対して入出力されるデータについて、そのデータが前記規定の仕様に従って編成されているかどうかを検証する工程と、
を有することを特徴とする。
【００１２】
【発明の実施の形態】
＝＝＝開示の概要＝＝＝
以下の開示により、少なくとも次のことが明らかにされる。
ホストコンピュータと、このホストコンピュータと通信手段を介して接続し、前記ホストコンピュータから送信された入出力要求を受信してこの要求に対応するデータ入出力処理を記憶手段に対して実行する記憶制御装置と、を含んで構成されるストレージシステムにおけるデータ検証方法であって、ホストコンピュータが、記憶制御装置に記憶するデータを規定の仕様に従って編成し管理するアプリケーションプログラムを実行する工程と、ホストコンピュータが、前記アプリケーションプログラムが使用する前記記憶手段の記憶領域の範囲を特定する領域管理データを記憶制御装置に送信する工程と、記憶制御装置が、前記領域管理データを受信する工程と、記憶制御装置が、前記アプリケーションプログラムの処理に起因してホストコンピュータから送信されるデータ入出力要求を受信して、そのデータ入出力要求の処理対象となるデータのうち前記領域指定データに基づいて特定される前記アプリケーションプログラムが使用する記憶領域に対して入出力されるデータについて、そのデータが前記規定の仕様に従って編成されているかどうかを検証する工程と、を有することを特徴とするストレージシステムにおけるデータ検証方法。
【００１３】
ここで前記ホストコンピュータから送信された入出力要求とは、例えば、記憶制御装置に含まれ、もしくは、外部接続するディスクドライブなどの前記記憶手段に対する、データ書き込み要求やデータ読み出し要求である。また、前記領域管理データとは、具体的には、後述する領域管理テーブルに登録されているデータである。このデータ検証方法では、アプリケーションプログラムが取り扱うデータが規定の仕様に従って編成されているかどうかを、記憶制御装置においても検証する。これにより、データの適合性を、より確実に検証し確保することができる。
【００１４】
また、前記データ検証方法は、前記記憶制御装置が、前記ホストコンピュータで稼働する複数の前記アプリケーションプログラムのそれぞれについての前記検証を行う複数の前記アルゴリズムを記憶する工程と、前記ホストコンピュータから送信されてくる前記領域管理データに基づいて前記各アプリケーションプログラムのそれぞれが使用する記憶領域を特定する工程と、前記各アプリケーションプログラムの処理に起因してホストコンピュータから送信されるデータ入出力要求を受信して、前記領域指定データに基づいて前記データ入出力要求に関わる前記アプリケーションプログラムを特定する工程と、前記データ入出力要求の処理対象となるデータのうち前記領域指定データで特定される記憶領域に入出力されるデータについて、そのデータが前記規定の仕様に従って編成されているかどうかを、前記特定したアプリケーションプログラムに対応する前記アルゴリズムにより検証する工程と、を有していてもよい。
【００１５】
これにより、複数のアプリケーションプログラムがホストコンピュータ上で稼働する場合にも、それぞれのアプリケーションプログラムが取り扱うデータについて記憶制御装置側でデータ検証を行うことができる。
【００１６】
また、前記データ検証方法は、前記ホストコンピュータが、前記アルゴリズムを前記ホストコンピュータから前記記憶制御装置に送信する工程と、前記記憶制御装置が前記アルゴリズムを受信して記憶する工程と、を有していてもよい。これによりデータ検証用のアルゴリズムの記憶制御装置への登録を簡便に行うことができる。
【００１７】
また、前記データ検証方法は、前記ホストコンピュータが前記範囲が変更された場合にその変更内容が反映された前記領域管理データを前記記憶制御装置に送信する工程を有していてもよい。これにより記憶制御装置側においても、アプリケーションプログラムが使用する前記記憶手段の記憶領域の範囲についての最新の情報を把握することができる。
【００１８】
また、前記アプリケーションプログラムが使用する前記記憶手段の記憶領域は、例えば、前記ホストコンピュータ上で稼働する前記アプリケーションプログラムとは異なるソフトウエアにより付加される制御情報の使用領域を除いた領域であってもよい。
【００１９】
また、前記領域管理データには、前記記憶手段の前記記憶領域を用いて論理的に編成されたボリュームを単位として前記アプリケーションプログラムに提供される前記記憶領域の範囲を指定するデータが含まれていてもよい。
【００２０】
また、前記ボリュームは、前記記憶手段の前記記憶領域をRAID方式で運用することにより編成されていてもよい。
【００２１】
また、前記記憶手段は、前記記憶制御装置に一体に設けられていてもよい。また、前記検証の結果記載したデータを前記ホストコンピュータに送信するようにしてもよい。また、例えば、前記記憶領域は、ディスクドライブなどの物理的な記憶デバイスにより提供される記憶領域上に編成される論理的な記憶デバイスとして提供される。また、規定の仕様は例えば、前記データの規定位置に規定のデータが挿入されていることである。また、前記ホストコンピュータと前記記憶制御装置とを通信可能に接続する手段は、例えば、ＳＣＳＩ規格に準拠した通信方式によるも、ＳＡＮ、ＬＡＮなどである。
【００２２】
また、前記ホストコンピュータによる前記領域管理データの前記記憶制御装置への前記送信は、前記通信手段を提供する通信路とは別の通信路を介して行われる構成としてもよい。これにより、例えば、通信負荷の分散が図られる。
【００２３】
＝＝＝実施例＝＝＝
図１に本発明の一実施例として説明するストレージシステムの構成を示す。  この図の記憶制御装置１０は、例えばディスクアレイ装置であり、ホストコンピュータ２０は、記憶制御装置１０を記憶資源として利用する汎用機やパソコンなどである。記憶制御装置１０とホストコンピュータ２０とは、通信手段４０を介して接続する。通信手段４０は、例えば、ＳＣＳＩ規格のインタフェースに準拠した通信線やＬＡＮ（Local Area Network）、もしくは、ＳＡＮ（Storage Area Network）である。
【００２４】
記憶制御装置１０は、当該装置１０内の各部の制御や各種処理プログラムの実行制御に用いられるＣＰＵ１１、各種の情報記憶用として利用される制御メモリ１２、記憶手段であるディスクドライブなどの物理デバイス（不図示）、ホストコンピュータ２０と接続するためのホストインタフェース１３、ホストコンピュータ２０から受信したデータ入出力要求に従い、物理デバイスに対するデータ入出力を制御するデータコントローラ１４、キャッシュメモリ１５、キャッシュメモリ１５に登録するデータを一時的に記憶しておくためのデータバッファ１６、データコントローラ１４からの命令に応じて物理デバイスを制御するディスクインタフェース１７などを備える。なお、ホストインタフェース１３は、一以上の接続ポート１３１を備える。また、ホストコンピュータ２０側の外部インタフェース２６は、例えば、チャネルインタフェースとしてのホストベースアダプタである。
【００２５】
記憶制御装置１０は、物理デバイスが提供する記憶領域上に、一以上の論理デバイス１８を編成している。編成した論理デバイスのそれぞれには固有の論理デバイスIDが付与され、ホストコンピュータ２０から記憶制御装置１０の記憶領域の指定を、この論理デバイスIDを用いてすることができる。なお、この実施例では、記憶制御装置１０にそれぞれＡ，Ａ'，Ｂ，Ｃ，Ｘの論理デバイスIDで指定される５つ論理デバイス１８が編成されているものとする。
【００２６】
ホストコンピュータ２０では、ＯＳ２１が稼働する。そして、このＯＳ２１上で、論理ボリューム管理プログラム２２、アプリケーションプログラム２３、領域管理プログラム２４が稼働する。
【００２７】
このうち論理ボリューム管理プログラム２２は、記憶制御装置１０の論理デバイス１８の記憶領域上に一以上の論理ボリューム２７を編成し、この論理ボリューム２７で指定される記憶領域をアプリケーションプログラム２３に提供している。論理ボリューム管理プログラム２２の具体例としては、記憶制御装置１０の論理デバイスが提供する記憶領域をソフトウエア的にRAID（Redundant Array of Inexpensive Disks）方式で運用し、これにより編成される論理ボリューム２７をアプリケーションプログラム２３に提供するいわゆるソフトレイドプログラムがあげられる。以下では、論理ボリューム管理プログラム２２はソフトレイドプログラムであるとして説明する。
【００２８】
アプリケーションプログラム２３は、例えば、データベースソフトウエアであり、記憶制御装置１０に記憶するデータを規定の仕様に従って編成し管理する仕組み、すなわち、データの適合性を検証する仕組みを備えたプログラムである。またアプリケーションプログラム２３は、処理対象となるデータが規定の仕様に従って編成されているか、すなわち、データが適合性を具備しているかどうかを検証するアルゴリズムを備える。
【００２９】
領域管理プログラム２４は、ホストコンピュータ２０のメモリ２８上に記憶される後述の領域管理テーブル２５を管理する。また、後述するように、領域管理プログラム２４は、領域管理テーブル２５を、適宜なタイミングで記憶制御装置１０に送信する機能を備える。
【００３０】
＝＝＝領域管理テーブル＝＝＝
図２は領域管理テーブル２５の一例である。領域管理テーブル２５は、論理ボリューム管理プログラム２２が編成する論理ボリューム２７ごとに生成される。領域管理プログラム２４は、例えば、論理ボリューム管理プログラム２２が論理デバイス１８と論理ボリューム２７との対応を変更した場合などにおいて、論理ボリューム管理プログラム２２やアプリケーションプログラム２３などから取得した情報に基づいて、適宜に領域管理テーブル２５を更新する。
【００３１】
図２において、論理ボリュームID２１０は、各論理ボリューム２７に固有に割り当てられる識別子であり、その領域管理テーブル２５がどの論理ボリューム２７についてのものであるかを示す。ＯＳ制御情報オフセット２１１およびＯＳ制御情報オフセットサイズ２１２は、論理デバイス１８や論理ボリューム２７の管理のためにＯＳ２１が付与するＯＳ制御情報の論理デバイス１８上の格納位置を示す。ＯＳ制御情報の具体例としては、ファイル制御情報などがあげられる。
【００３２】
論理ボリューム制御情報オフセット２１３および論理ボリューム制御情報オフセットサイズ２１４は、論理ボリューム２７の管理のために論理ボリューム管理プログラム２２が生成する論理ボリューム制御情報の論理デバイス１８上の格納位置を示す。論理ボリューム制御情報とは、論理ボリューム管理プログラム２２が論理デバイス１８の管理に用いる情報であり、その具体例としては、論理ボリューム管理プログラム２２が論理デバイス１８をRAID方式で運用している場合に必要となるストライプ構成情報などがあげられる。
【００３３】
論理デバイスID２１５は、その論理ボリューム２７を構成している論理デバイス１８のIDである。アプリケーションID２１６は、その論理ボリューム２７を使用しているアプリケーションプログラム２３のIDである。アプリケーションIDは、例えば、ユーザが、ホストコンピュータ２０のユーザインタフェースを操作して登録する。
【００３４】
アプリケーション取扱データサイズ２１７は、この論理ボリューム２７を使用するアプリケーションプログラム２３が、論理ボリューム２７に対してデータ入出力を行う際のデータサイズである。ストライプサイズ２１８は、論理ボリューム管理プログラム２２が論理デバイス１８にRAID方式でデータをストライピングして書き込む際のデータサイズである。また、全データサイズ２１９は、その論理ボリューム２７の総記憶容量を示す。
【００３５】
＝＝＝領域管理テーブルの送信＝＝＝
領域管理テーブル２５は、領域管理プログラム２４により適宜なタイミングでホストコンピュータ２０から記憶制御装置１０に送信される。ここで適宜なタイミングとは、例えば、ホストコンピュータ２０が起動された時や、領域管理テーブル２５が更新された時、領域管理プログラム２４のスケジュール機能に設定された時刻などである。
【００３６】
記憶制御装置１０は、ホストコンピュータ２０から送られてくる領域管理テーブル２５を受信すると、これを論理デバイス１８に記憶する。なお、この実施例では、領域管理テーブル２５は、論理デバイスIDが「Ｘ」の論理デバイス１８に記憶されるものとするが、制御メモリ１２などに記憶してもよい。
【００３７】
図３は、ホストコンピュータ２０から記憶制御装置１０に領域管理テーブル２５を送信する際に行われる処理を説明するフローチャートである。この処理には、大別して、領域管理プログラム２４が最新ポジションの領域管理テーブル２５を取得する処理と、取得した領域管理テーブル２５を送信する処理とが含まれる。
【００３８】
領域管理プログラム２４は、まず、処理中に使用するフラグ等の内容を初期化し（S310）、最新のＯＳ制御情報オフセット２１１およびＯＳ制御情報サイズ２１２をＯＳ２１に要求して取得する（S311）。つぎに、ホストコンピュータ２０のメモリ２８上に領域管理テーブル２５が既に存在しているかどうかを調べる（S312）。
【００３９】
ここで領域管理テーブル２５がメモリ上に存在しない場合には、メモリ２８上に領域管理テーブル２５を生成する（S313）。一方、既に領域管理テーブル２５がメモリ２８上に存在する場合には、領域管理テーブル２５のＯＳ制御情報オフセット２１１およびＯＳ制御情報サイズ２１２と、取得したＯＳ制御情報オフセット２１１および前記ＯＳ制御情報サイズ２１２とを比較し（S314）、領域管理テーブル２５のそれぞれの内容と異なっていれば、前記取得した内容に更新する（S315）。そして、更新を行った場合には、領域管理プログラム２４は更新フラグをオンにする（S316）。
【００４０】
つぎに、領域管理プログラム２４は、論理ボリューム制御情報オフセット２１３および論理ボリューム制御情報サイズ２１４についてもＯＳ２１から情報を取得してＯＳ制御情報の場合と同様の比較処理を行い、メモリ上の領域管理テーブル２５の内容と比較を行い（S317，S318）、その内容が異なっていればその内容に領域管理テーブル２５を更新し（S319）、更新を行った場合は更新フラグをオンにする（S320）。
【００４１】
以上により、メモリ２８上に最新の状態の領域管理テーブル２５が生成される。つぎに領域管理プログラム２４は、更新フラグを調べ（S321）、オンである場合には、メモリ２８に記憶している領域管理テーブル２５の内容を記憶制御装置１０に送信する（S322）。記憶制御装置１０は、領域管理テーブル２５を受信して、これを論理デバイスＸに記憶する。
【００４２】
以上に説明した、ホストコンピュータ２０から記憶制御装置１０への領域管理テーブル２５の送信に関する処理は、ＯＳ２１の起動時などにおいて、ＯＳ制御情報または論理ボリューム制御情報に変更があった場合や、論理ボリューム２７を構成する論理デバイス１８の増減されるなど論理ボリューム２７の構成要素が変更された場合に適宜に実行される。これにより記憶制御装置１０には、常に最新の状態の領域管理テーブル２５がセットアップされることになる。
【００４３】
＝＝＝論理デバイス管理テーブル＝＝＝
記憶制御装置１０の制御メモリ１２には、論理デバイス管理テーブル１２１が記憶されている。図４はその一例である。このテーブルには、論理デバイスID４１１に対応づけて、これに一意に対応するＬＵＮ（Logical Unit Number)４１２と、各論理デバイス１８の記憶容量４１３、各論理デバイス１８が接続するホストインタフェース１３のポート１３１のIDであるポートID４１４などが管理されている。論理デバイス管理テーブル１２１の内容は、例えば、記憶制御装置１０に接続する管理端末（不図示）に対するオペレータ操作により更新されたり、記憶制御装置１０が記憶している情報もしくはホストコンピュータ２０から送信されてくる情報などによる自動更新などにより最新の状態に維持される。
【００４４】
＝＝＝データの状態＝＝＝
つぎに、ホストコンピュータ２０上で稼働するアプリケーションプログラム２３から出力されたデータが、記憶制御装置１０の論理デバイス１８にどのようにして記憶されるかについて、データの構成に着目して説明する。
【００４５】
図５（ａ）は、アプリケーションプログラム２３が論理ボリューム２７にデータを入出力する際のデータ単位を示している。データ単位５１のデータサイズは、図２におけるアプリケーションプログラム取扱データサイズに一致する。
図５（ｂ）は、論理ボリューム管理プログラム２２が、記憶制御装置１０に対して入出力に際し、図５（ａ）のデータ単位５１をどのようにして分割するかを示しており、この図の例では、データ単位５１は、データ５２、データ５３、データ５４に３分割されている。
図５（ｃ）は、データ５２，データ５３、データ５４が、それぞれ論理デバイス１８上に記憶されている様子を示している。この図では、アプリケーションプログラム２３が指定する論理ボリュームID２１５が「001h」である論理ボリューム２７が、論理デバイスID２１５が「Ａ」および「Ａ'」の論理デバイス１８により編成されている場合である。分割されたデータのうち、データ５２，５３は、論理デバイスID２１５が「Ａ」の論理デバイス１８に、データ５４は、論理デバイスID２１５が「Ａ'」の論理デバイス１８にそれぞれ記憶されている。また、これら各論理デバイス１８の固定領域には、前述したＯＳ制御情報５５，５６や、論理ボリューム制御情報５７，５８が記憶されている。
【００４６】
一方、図６（ａ）は、図５（ａ）のデータ単位をＳＣＳＩ規格におけるデータフォーマットとして示したものであり、図６（ｂ）は、図５（ｂ）に示すデータについてのＳＣＳＩ規格レベルでのデータフォーマットを示したものである。
【００４７】
図６（ｂ）に示すように、コマンドフレームのオペコード欄６１１〜６１３には、この処理要求の種類を示すコマンドがセットされる。この例では書き込みコマンドがセットされる。ＬＵＮ６２１〜６２３の欄には、処理対象となる論理デバイスID２１５もしくはＬＵＮ（Logical Unit Number）がセットされる。この例では、ＬＵＮ６２１，６２２には「0001h」が、ＬＵＮ６２３には「0002h」がそれぞれセットされている。論理アドレス６３１〜６３３には、各データ５２〜５４が書き込まれる論理デバイス１８上の格納開始位置に対応するアドレスがセットされる。データ長６４１〜６４３には、各コマンドフレームに付帯する書き込みデータ５２〜５４のそれぞれに対応するデータ長がセットされる。
【００４８】
なお、以上はアプリケーションプログラム２３からのデータ書き込み要求が出力された場合であるが、データ読み出し要求が出力された場合には、前述のオペコード欄６１１〜６１３に読み出しコマンドがセットされる。また論理アドレス６３１〜６３３には、論理デバイス１８上のデータ読み出し開始位置を指定するアドレスがセットされ、データ長に読み出し対象となるデータのサイズがセットされることになる。
【００４９】
＝＝＝データ検証処理＝＝＝
つぎに、ホストコンピュータ２０から記憶制御装置１０にＳＣＳＩデータが送信された場合に記憶制御装置１０において行われる、データ検証処理について説明する。
【００５０】
データ検証処理は、記憶制御装置１０が制御メモリ１２に記憶している、データ検証用のプログラム１２２（アルゴリズム）を実行することで行われる。データ検証用プログラムは、ホストコンピュータ２０で動作するアプリケーションプログラム２３ごとに用意される。データ検証用プログラム１２２は、処理対象となるデータについての処理の実行に際し、事前に処理対象となるデータが規定の仕様を具備しているかどうかを検証する、ホストコンピュータ２０で稼働するアプリケーションプログラム２３が備える前述のアルゴリズムと同等以上の処理を実行する機能を備える。
【００５１】
データ検証用プログラム１２２は、例えば、ホストコンピュータ２０から送信されたり、記憶制御装置１０の管理端末（不図示）に対するオペレータ操作などにより、制御メモリ１２に記憶される。記憶される各データ検証用プログラム１２２には、それぞれ対応するアプリケーションプログラム２３のIDが付与される。
【００５２】
なお、データ検証処理は、処理対象となるデータが、アプリケーションプログラム２３が要求する規定の仕様を満たしているかどうかを検証するものであるから、論理デバイス１８の記憶領域に記憶されるデータのうち、アプリケーションプログラム２３から入出力されるデータが格納される領域のみを対象として行う。
【００５３】
つぎに、ホストコンピュータ２０上で稼働するアプリケーションプログラム２３から図６（ａ）に示すデータ５１を書き込みデータとするデータ書き込み要求が送信され、このデータ書き込み要求に対応する図６（ｂ）に示す書き込みコマンドの一つが記憶制御装置１０に送信された場合を例として、図７のフローチャートを用い、記憶制御装置１０において行われるデータ検証処理について説明する。なお、この処理は、例えば、記憶制御装置１０の制御メモリ１２などに記憶されているマイクロプログラムなどにより実行される。
【００５４】
記憶制御装置１０は、ホストコンピュータ２０から送られてくる書き込みコマンドのコマンドフレームを受信すると（S711）、そのコマンドフレームをデータバッファ１６に記憶する（S712）。つぎに、記憶制御装置１０は、論理デバイスIDが「Ｘ」である論理デバイス１８に記憶している領域管理テーブル２５を参照し、受信した前記データ書き込み要求にセットされている論理デバイスIDのＯＳ制御情報オフセット２１１およびＯＳ制御情報サイズ２１２、論理ボリューム制御情報オフセット２１３および論理ボリューム制御情報サイズ２１４を取得する（S713）。また、記憶制御装置１０は、論理デバイス管理テーブル１２１を参照し、前記論理デバイスIDに対応する論理デバイス１８の記憶容量４１３を取得する（S714）。
【００５５】
つぎに記憶制御装置１０は、前記論理デバイスIDに対応する論理デバイス１８の記憶領域のうち、前記ＯＳ制御情報オフセット２１１およびＯＳ制御情報サイズ２１２、および論理ボリューム制御情報オフセット２１３、論理ボリューム制御情報サイズ２１４で指定される領域を除いた領域を指定するアドレス（例えば、一以上のスタートアドレスとエンドアドレス）を記憶する（S715）。なお、以下、このアドレスで指定される記憶領域を検証対象候補領域と称することとする。
【００５６】
つぎに、記憶制御装置１０は、前記検証対象候補領域を指定するアドレスと、受信したコマンドフレームの論理アドレス６３１〜６３３の欄にセットされているアドレスとを比較する（S716）。ここでこのアドレスが前記検証対象候補領域に含まれない場合には、データ検証処理を終了する（S717）。一方、前記アドレスが検証対象候補領域内に含まれる場合には、記憶制御装置１０は、さらに、このアドレスと前記コマンドフレームのデータ長６４１〜６４３にセットされているデータ長とにより定まる、当該書き込みデータの書き込み先として指定される記憶領域の全体が、前記検証対象候補領域に含まるかどうかを調べる（S718）。ここで含まれる場合には、前記書き込み先として指定される記憶領域の全体をデータ検証の対象領域に設定し、この領域を指定するアドレス（例えば、この領域を指定するスタートアドレスとエンドアドレス）を記憶する（S719）。
【００５７】
一方、検証対象候補領域内に収まらない場合には、前記論理アドレスから前記検証対象候補の領域のエンドアドレスまでの領域をデータ検証の対象領域に設定し、この領域を指定するアドレス（例えば、この領域を指定するスタートアドレスとエンドアドレス）を記憶する（S720）。
【００５８】
以上のようにしてデータ検証の対象領域が設定されると、つぎに記憶制御装置１０は、書き込み対象となる論理デバイス１８に対応づけられているアプリケーションIDを調べる。ここで記憶制御装置１０は、アプリケーションIDと、各アプリケーションプログラム２３についてのデータ検証用プログラム１２２との対応付けを記憶しており、調べた前記アプリケーションIDに対応するデータ検証用プログラム１２２を起動する（S721）。
【００５９】
記憶制御装置１０は、データ検証用プログラム１２２の起動に伴い、データ検証用プログラム１２２に前記データ検証の対象領域を指定するアドレスを引き渡し、データ検証用プログラム１２２は、引き渡された前記アドレスで指定される論理デバイス１８上の記憶領域を対象として、データ検証処理を開始する（S722）。
【００６０】
ここでデータ検証用プログラムによるデータ検証処理において異常が検知された場合（S723）には、記憶制御装置１０は、その旨を記載したメッセージ（例えば、イリーガルリクエストやライトエラー等が記載されたもの）をホストコンピュータ２０に送信する（S724）。一方、異常が検知されない場合には、記憶制御装置１０は、データバッファ１６に記憶されているコマンドフレームの書き込み対象データをキャッシュメモリ１５に送信し、このデータを論理デバイス１８に書き込む（S725）。
【００６１】
ところで、以上の説明は、記憶制御装置１０が、ホストコンピュータ２０からデータ書き込み要求を受信した場合であったが、データ読み出し要求を受信した場合には、コマンドフレームのデータを検証する代わりに、読み出し対象のデータを記憶手段から読み出してデータバッファ１６に記憶し、書き込みコマンドの場合と同様の処理にてデータ検証を行う。ここでこのようにデータ読み出し要求が送られてきた場合にもデータ検証処理を行って、これにより異常が検知された場合にはその旨のメッセージがホストコンピュータ２０に通知されるようにすることで、例えば、読み出されたデータがアプリケーションプログラム２３に引き渡される前に、データの適合性が確保されていないことをアプリケーションプログラム２３に通知することができ、アプリケーションプログラム２３の誤動作や、データ喪失、破壊などを防ぐことができる。
【００６２】
以上のように、本発明によれば、データ検証を行うために必要な情報を記憶制御装置１０側でも取得する。従って、アプリケーションプログラム２３が行っているデータ検証処理を、記憶制御装置１０側でも実施することが可能となる。そして、記憶制御装置１０側でもデータ検証処理を実行することで、アプリケーションプログラム２３が要求するデータの適合性を満たすよう、より確実にデータが管理されることとなる。
【００６３】
＝＝＝その他＝＝＝
ところで、以上の説明において、論理ボリューム管理プログラム２２は必ずしも必須の構成要素では無い。
【００６４】
領域管理テーブル２５は、ホストコンピュータ２０から記憶制御装置１０に常にその全ての内容を送信する必要は無く、変更差分データのみを送信するようにしていもよい。
【００６５】
また、領域管理プログラム２４が初めて実行される際は、ホストコンピュータ２０上の領域管理テーブル２５は何も書き込まれていないが、この場合には、例えば、領域管理テーブ２５ルに対する変更があったものとして領域管理テーブル２５を記憶制御装置１０に送信するようにする。
【００６６】
また、ホストコンピュータ２０と記憶制御装置１０とを、例えば、ＬＡＮなどで接続し、領域管理テーブル２５の送信をＬＡＮ経由で行うことで、ホストコンピュータ２０から記憶制御装置１０に高速に送信できる。
【００６７】
【発明の効果】
本発明によれば、ストレージシステムにおいて、データの適合性を、より確実に検証し確保することができる、データ検証方法およびホストコンピュータおよび記憶制御装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施例として説明するストレージシステムの構成を示す図である。
【図２】本発明の一実施例として説明する領域管理テーブルを示す図である。
【図３】本発明の一実施例による、ホストコンピュータから記憶制御装置に領域管理テーブルを送信する際に行われる処理を説明するフローチャートを示す図である。
【図４】本発明の一実施例として説明する論理デバイス管理テーブルを示す図である。
【図５】（ａ）は、本発明の一実施例による、アプリケーションプログラムが論理ボリュームにデータを入出力する際のデータ単位を示す図であり、（ｂ）は、論理ボリューム管理プログラムが、記憶制御装置に対して入出力に際し（ａ）のデータ単位をどのようにして分割するかを示す図であり、（ｃ）は、分割されたデータが論理デバイス上に記憶されている様子を示す図である。
【図６】（ａ）は、図５（ａ）のデータ単位をＳＣＳＩ規格におけるデータフォーマットとして示した図であり、（ｂ）は図５（ｂ）のデータをＳＣＳＩ規格におけるデータフォーマットとして示した図である。
【図７】本発明の一実施例による、記憶制御装置におけるデータ検証処理を説明するフローチャートである。
【符号の説明】
１０  記憶制御装置
１２  制御メモリ
１５  キャッシュメモリ
１６  データバッファ
１８  論理デバイス
２０  ホストコンピュータ
２３  アプリケーションプログラム
２４  領域管理プログラム
２５  領域管理テーブル
２７  論理ボリューム
４０  通信手段
１２１  論理デバイス管理テーブル
１２２  データ検証用プログラム
２１１  ＯＳ制御情報オフセット
２１２  ＯＳ制御情報オフセットサイズ
２１３  論理ボリューム制御情報オフセット
２１４  論理ボリューム制御情報オフセットサイズ
【図１】
0004080227.tif 000002
【図２】
0004080227.tif 000003
【図３】
0004080227.tif 000004
【図４】
0004080227.tif 000005
【図５】
0004080227.tif 000006
【図６】
0004080227.tif 000007
【図７】
0004080227.tif 000008