(57)【特許請求の範囲】
【請求項１】
キャッシング対象となるディスク装置に対する書き込み方式としてライトバック方式を採るディスクキャッシュシステムにおいて、
内部エリアがブロック管理され、ブロックを基本単位として前記ディスク装置に対する書き込み要求のあったデータが書き込まれる不揮発性記憶手段と、
前記不揮発性記憶手段に対して書き込むべき通常のデータとデータ転送の正常性を判定するために使用する少なくとも１ブロック分の所定の診断データを転送すると共に、前記ブロック毎に、ブロックに書き込むべきデータに基づくチェックコードを生成して前記不揮発性記憶手段に書き込むデータ転送手段と、
前記データ転送手段によって転送された前記診断データに基づくチェックコードが、前記所定の診断データに応じたチェックコードとして正しいか否かを判定する診断データ判定手段と、
前記データ判定手段によって異常があることが判定された場合に通常の動作を禁止する制御手段と
を具備したことを特徴とするディスクキャッシュシステム。
【請求項２】
前記不揮発性記憶手段に設けられる前記ディスク装置に対するデータ転送用の領域とは別の領域と、システムに接続されたディスク装置の特定の領域に対して、システムに接続されたディスク装置を特定する装置情報を書き込む第１の書き込み手段と、
適時において前記第１の書き込み手段によって前記不揮発性記憶手段に記憶された装置情報と、この時点で実際にシステムに接続されているディスク装置の特定の領域に書き込まれた装置情報とを比較して、接続されたディスク装置が正しいか否かを判定する装置判定手段とをさらに具備し、
前記制御手段は、前記装置判定手段によって異常があることが判定された場合に通常の動作を禁止することを特徴とする請求項１記載のディスクキャッシュシステム。
【請求項３】
前記不揮発性記憶手段に設けられる前記ディスク装置に対するデータ転送用の領域とは別の領域と、システムに接続されたディスク装置の特定の領域に対して、前記不揮発性記憶手段に記憶されたデータの新旧を判断できる情報を書き込む第２の書き込み手段と、
適時において前記第２の書き込み手段によって前記不揮発性記憶手段に記憶された情報と、この時点で実際にシステムに接続されているディスク装置の特定の領域に書き込まれた情報とを比較して、情報の正当性を判定する判定手段とをさらに具備し、
前記制御手段は、前記判定手段によって情報が正当でないと判定された場合に通常の動作を禁止することを特徴とする請求項１記載のディスクキャッシュシステム。
【請求項４】
前記不揮発性記憶手段に書き込まれたデータをバックアップするための電池と、
前記不揮発性記憶手段における所定の領域に前記電池が交換された交換日付を書き込む書き込み手段と、
前記書き込み手段によって前記不揮発性記憶手段の所定の領域に書き込まれた交換日付を読み出して提示する読み出し手段と
をさらに具備したことを特徴とする請求項１記載のディスクキャッシュシステム。
【請求項５】
キャッシング対象となるディスク装置に対する書き込み方式としてライトバック方式を採るディスクキャッシュ方法において、
内部エリアがブロック管理され、ブロックを基本単位として前記ディスク装置に対する書き込み要求のあったデータが書き込まれる不揮発性記憶手段に対して、書き込むべき通常のデータとデータ転送の正常性を判定するために使用する少なくとも１ブロック分の所定の診断データと共に、前記ブロック毎に、ブロックに書き込むべきデータに基づいてチェックコードを生成して書き込み、
この書き込まれた前記診断データに基づいて生成されたチェックコードが、前記所定の診断データに応じたチェックコードとして正しいか否かを判定し、
この判定によって異常があることが判定された場合に通常の動作を禁止することを特徴とするディスクキャッシュ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ライトバック方式を採用するディスクキャッシュシステムに係わるもので、ライトバックキャッシュデータの保護に好適なディスクキャッシュシステム及びディスクキャッシュ方法に関する。
【０００２】
【従来の技術】
コンピュータシステムにおいては、ハードディスク装置等の外部の接続装置に対する実効的アクセス速度を向上させるためにディスクキャッシュが用いられている。ディスクキャッシュを用いることによって最近アクセスされたディスクのブロックデータを高速にアクセスできるメモリに保存され、次にアクセス要求があったデータがメモリに保存されていれば実際にディスクをアクセスすることなく直ちにデータを転送することができる。
【０００３】
近年、ディスクキャッシュとしてライトバック方式を採るディスクコントローラでは、ディスクキャッシュ用メモリの他に不揮発メモリを併用し、この不揮発メモリに対してもデータを保存することがある。着脱可能な不揮発性メモリを併用することで、例えばディスクコントローラに故障が発生した場合に、不揮発性メモリを正常なディスクコントローラに着装して交換することで、故障発生前の状態に戻せるといった保守が可能となる。
【０００４】
こうした目的を達成するための手頃な不揮発性メモリとして、ＪＥＩＤＡ（Japan Electronic Industry Development Assosiation ）（ＰＣＭＣＩＡ（Personal Computer Memory Card Interface ））規格のＳＲＡＭカードがあり、このメモリを不揮発メモリとしてライトバック方式のディスクキャッシュシステムが構成されることがあった。
【０００５】
【発明が解決しようとする課題】
このように従来のディスクキャッシュシステムでは、ディスクキャッシュ用メモリと併用して不揮発性メモリとしてＳＲＡＭカードを用いていた。
しかしながら、上記した従来技術においては、一般的なＪＥＩＤＡ（ＰＣＭＣＩＡ）規格のＳＲＡＭカードにはパリティビットがないことから、保存データの信頼性確保が一部システムの要求に対しては不十分であった。
【０００６】
また、ＳＲＡＭカードの電池寿命に関しては、電圧監視により交換時期が迫るとその旨の信号が出力されるため、その信号を監視することにより、電池が切れた場合にはライトバック動作を禁止することでデータの保護は可能である。しかし、それ以前に電池の残余時間を知るための信号がないことから、電池の交換時期が判りづらく、数ケ月に一度しか行われない定期保守期間が設定されている運用形態では、定期保守期間の間に電池切れが発生し、ライトバック動作が禁止された性能劣化状態での運用を強要されることがあった。
【０００７】
また、ＳＲＡＭカードを使用するライトバック方式のキャッシュシステムでは、コントローラに故障対応機能を盛り込むことが想定されるが、もとよりＳＲＡＭカード自体にはこのための何らの機能もなく、単純な適用では、保守作業を実施する作業員のミス等により、誤ったデータを装置に書き込んで本来のデータを破壊してしまう可能性がある等の問題があった。
【０００８】
本発明は前記の問題を解決するためになされたものであり、ディスクキャッシュにおいてキャッシュ用メモリと併用して使用される不揮発性メモリの保存データの信頼性の向上と確実な保護が可能なディスクキャッシュシステム及びディスクキャッシュ方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明は、キャッシング対象となるディスク装置に対する書き込み方式としてライトバック方式を採るディスクキャッシュシステムにおいて、内部エリアがブロック管理され、ブロックを基本単位として前記ディスク装置に対する書き込み要求のあったデータが書き込まれる不揮発性記憶手段と、前記不揮発性記憶手段に対して書き込むべき通常のデータとデータ転送の正常性を判定するために使用する少なくとも１ブロック分の所定の診断データを転送すると共に、前記ブロック毎に、ブロックに書き込むべきデータに基づくチェックコードを生成して前記不揮発性記憶手段に書き込むデータ転送手段と、前記データ転送手段によって転送された前記診断データに基づくチェックコードが、前記所定の診断データに応じたチェックコードとして正しいか否かを判定する診断データ判定手段と、前記データ判定手段によって異常があることが判定された場合に通常の動作を禁止する制御手段とを具備したことを特徴とする。
【００１０】
ブロック単位でデータに対するチェックコードを付加して、正当性のチェックを可能としたことにより、パリティ等のチェック機能を持たない不揮発性記憶手段、すなわちＪＥＩＤＡ／ＰＣＭＣＩＡ規格のＳＲＡＭカードであっても、チェックコード用に比較的少ないメモリ容量を必要とするのみで、ＳＲＡＭカードに格納されたデータの正常性のチェックが可能となり信頼性向上が図れる。
通常の転送データに所定の診断データを付加して転送することにより、診断データに対して生成されるチェックコードが既知であるので、診断データに対するチェックコードの判定により、システムのデータ転送系全般にわたる通常動作時の診断が可能となり、不揮発性記憶手段（ＳＲＡＭカード）に格納されたデータの信頼性向上が図れる。
【００１３】
また、前記不揮発性記憶手段に設けられる前記ディスク装置に対するデータ転送用の領域とは別の領域と、システムに接続されたディスク装置の特定の領域に対して、システムに接続されたディスク装置を特定する装置情報を書き込む第１の書き込み手段と、適時において前記第１の書き込み手段によって前記不揮発性記憶手段に記憶された装置情報と、この時点で実際にシステムに接続されているディスク装置の特定の領域に書き込まれた装置情報とを比較して、接続されたディスク装置が正しいか否かを判定する装置判定手段とをさらに具備し、前記制御手段は、前記装置判定手段によって異常があることが判定された場合に通常の動作を禁止することを特徴とする。
【００１４】
これにより、例えばシステムに障害が発生するなどして、原因追及等のためにディスク装置を取り外し、再立ち上げ時に誤ったディスク装置を接続してしまった場合や、使用すべき不揮発性記憶手段を誤ったとしても、実際にシステムに接続されているディスク装置を、不揮発性記憶手段とディスク装置に書き込まれているべき装置情報（例えばキャッシュシステム初期化時に格納された両者の間に一貫性をもつ接続装置のシリアル番号）から正当性を判定することができるため、誤った運用によりデータを破壊するおそれがない。
【００１５】
また、前記不揮発性記憶手段に設けられる前記ディスク装置に対するデータ転送用の領域とは別の領域と、システムに接続されたディスク装置の特定の領域に対して、システムに接続されたディスク装置を特定する装置情報を書き込む第１の書き込み手段と、適時において前記第１の書き込み手段によって前記不揮発性記憶手段に記憶された装置情報と、この時点で実際にシステムに接続されているディスク装置の特定の領域に書き込まれた装置情報とを比較して、接続されたディスク装置が正しいか否かを判定する装置判定手段とをさらに具備し、前記制御手段は、前記装置判定手段によって異常があることが判定された場合に通常の動作を禁止することを特徴とする。
【００１６】
これにより、不揮発性記憶手段（ＳＲＡＭカード）に記憶されたデータが使用すべきでないことが、データの新旧を判断できる情報（例えばキャッシュシステム初期化日時）から明確に判定されるため、例えばアクセス異常発生後の復旧作業時に誤ったＳＲＡＭカードを接続した場合であっても、データ破壊を回避することができる。
【００１７】
また、前記不揮発性記憶手段に書き込まれたデータをバックアップするための電池と、前記不揮発性記憶手段における所定の領域に前記電池が交換された交換日付を書き込む書き込み手段と、前記書き込み手段によって前記不揮発性記憶手段の所定の領域に書き込まれた交換日付を読み出して提示する読み出し手段とをさらに具備したことを特徴とする。
【００１８】
これにより、電池によりデータがバックアップされる不揮発性記憶手段（ＳＲＡＭカード）の電池残余寿命が判別し易くなり、例えば定期保守を実施する運用形態を採る場合には、次の保守期間までに電池寿命が切れることが明確に判断でき、予め電池交換をするなどの対処を施すことができる。従って、不揮発性記憶手段（ＳＲＡＭカード）に記憶されるデータが確実に保護できる。
【００１９】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図１は本実施形態に係わるディスクキャッシュシステムを有するコンピュータシステムの概略構成を示すブロック図である。本実施形態におけるディスクキャッシュシステムは、書き込み方式としてライトバック方式を採用している。
【００２０】
図１に示すように、コンピュータシステムは、ホストシステム１０、ディスクコントローラ１２、ハードディスク装置１４（ハードディスク装置（ＨＤＤ０〜ＨＤＤｎ）１４−０〜１４−ｎ）から構成されている。ホストシステム１０とディスクコントローラ１２は、接続用コネクタ１６を介して接続されている。接続用コネクタ１６は、例えばＰＣＩバスに相当する。
【００２１】
ホストシステム１０は、ＣＰＵ２０、ＣＰＵローカルメモリ２２、外部回路接続用バス変換回路２４等を含んで構成されている。
ＣＰＵ２０は、システム全体の制御を司るもので、ＣＰＵローカルメモリ２２に格納されたプログラム、データに基づいて動作する。本実施形態では、ＣＰＵ２０は、一定時間毎、及びアイドル状態となった時に、ディスクコントローラ１２におけるＳＲＡＭカード３８（後述する）に格納されたデータの正常性をチェックするための診断要求コマンドをデータ管理機構４４に対して発行する。また、ＣＰＵ２０は、ディスクコントローラ１２におけるＳＲＡＭカード３８の電池交換日時データを読み出すためのコマンドをデータ管理機構４４に対して発行する。
【００２２】
ＣＰＵローカルメモリ２２は、ＣＰＵ２０によってアクセスされるメモリであり、ＣＰＵ２０の動作を規定するＯＳ（オペレーティングシステム）、アプリケーションプログラムの他、各種データを格納する。ＣＰＵローカルメモリ２２には、ホストシステム１０からディスクコントローラ１２へのデータ転送が正常に行なわれたかをチェックするための診断データが含まれる。本実施形態では２種類の診断データＡ，Ｂが用意されているものとする。
【００２３】
外部回路接続用バス変換回路２４は、外部回路とのデータやコマンドの入出力のためのインタフェースであり、ＣＰＵローカルメモリ２２とディスクコントローラ１２のディスクキャッシュ用メモリ３６やハードディスク装置１４の間でデータ等を入出力するデータパスや、ＣＰＵ２０とディスクコントローラ１２のＣＰＵ３０との間のコマンド等を入出力するコマンドパスが設けられる。外部回路接続用バス変換回路２４は、接続用コネクタ１６を介して、ディスクコントローラ１２と接続される。
【００２４】
ディスクコントローラ１２は、ホストシステム１０からのハードディスク装置１４に対するアクセスを制御するもので、ＣＰＵ３０、Ｆ／Ｗ（ファームウェア）用メモリ３２、ＤＭＡ（Direct Memory Access）コントローラ３４、ディスクキャッシュ用メモリ３６、コネクタ３７、ＳＲＡＭカード３８、外部回路接続用バス変換回路４０、ＳＣＳＩ（Small Computer System Interface ）チップ４２を含んで構成されている。また、ＣＰＵ３０とＦ／Ｗ用メモリ３２によってデータ管理機構４４を構成し、ホストシステム１０からハードディスク装置１４へのアクセスに対するディスクキャッシュの機能を制御する。
【００２５】
ＣＰＵ３０は、ディスクコントローラ１２の制御を司るもので、Ｆ／Ｗ用メモリ３２に格納されたプログラムに基づいて、ホストシステム１０からのハードディスク装置１４に対するアクセスを制御する。
【００２６】
Ｆ／Ｗ用メモリ３２は、ＣＰＵ３０の動作を規定するプログラム等が格納されるもので、ホストシステム１０からのハードディスク装置１４に対するアクセス制御、及びディスクキャッシュの機能を実現するプログラムが含まれる。
【００２７】
ＤＭＡコントローラ３４（データ転送手段）は、データ管理機構４４（ＣＰＵ３０）による制御のもとで、ディスクキャッシュ用メモリ３６とＳＲＡＭカード３８に対するアクセスを制御するもので、外部回路接続用バス変換回路４０とＳＣＳＩチップ４２との間でデータの入出力を行なう。また、ＤＭＡコントローラ３４は、ＳＲＡＭカード３８に対する各ブロックデータの書き込み時に（データ領域）、ブロックデータに基づいてチェックコードを生成し、このチェックコードもＳＲＡＭカード３８に書き込む（チェックコード領域）。また、ＤＭＡコントローラ３４は、データ管理機構４４の制御のもとで、データ書き込み時に通常の転送データに加えて、１ブロック以上の診断データ（本実施形態では２ブロックの診断データＡ，Ｂ）をＳＲＡＭカード３８に書き込む（診断データ領域）。なお、本実施形態では、２５６バイトを転送の基本単位とするブロックとする。
【００２８】
データ管理機構４４（制御手段、書き込み手段）は、ホストシステム１０からの書き込みデータについての、ディスクキャッシュ用メモリ３６とＳＲＡＭカード３８への書き込み制御、ハードディスク装置１４に対するアクセスの他、電源やコントローラにおける障害発生時のデータ復旧（ディスクキャッシュ用メモリ３６に格納されたデータの復元）を行なう機能を有している。
【００２９】
また本実施形態における、データ管理機構４４は、立ち上げ時にＳＲＡＭカード３８に格納されたデータの正常性のチェックを含む各種チェックの他（装置判定手段）、ホストシステム１０からのコマンドに応じて、ライトコマンド受信時には診断データを用いたデータ転送の正常性のチェック（診断データ判定手段）、診断要求コマンド受信時にはＳＲＡＭカード３８に格納されたデータについてのチェックコマンドを用いた正常性のチェック（データ判定手段）等を制御する。
【００３０】
ディスクキャッシュ用メモリ３６は、ディスクキャッシュの機能において使用されるメモリであり、例えばＤＲＡＭによって構成される。
コネクタ３７は、ＳＲＡＭカード３８を接続するためのもので、例えばＪＥＩＤＡ（Japan Electronic Industry Development Assosiation ）（ＰＣＭＣＩＡ（Personal Computer Memory Card Interface ））規格に準拠した仕様によって構成されている。
【００３１】
ＳＲＡＭカード３８（不揮発性記憶手段）は、コネクタ３７によってシステムから取り外し可能な記憶媒体であり、ホストシステム１０からのデータ書き込みに用いられる。ＳＲＡＭカード３８は、データバックアップ用の電池が設けられた構成をしており、システムから取り外しても記憶しているデータを保持することが可能な高速不揮発性記憶媒体として用いられる。
【００３２】
外部回路接続用バス変換回路４０は、外部回路とのデータやコマンドの入出力のためのインタフェースであり、ディスクキャッシュ用メモリ３６やハードディスク装置１４とホストシステム１０のＣＰＵローカルメモリ２２との間でデータを入出力するデータパスや、ＣＰＵ３０とホストシステム１０のＣＰＵ２０との間のコマンド等を入出力するコマンドパスが設けられる。外部回路接続用バス変換回路４０は、接続用コネクタ１６を介して、ホストシステム１０と接続される。
【００３３】
ＳＣＳＩチップ４２は、ハードディスク装置１４を接続するためのインタフェースである。
ハードディスク装置１４は、データやプログラム等を保存するためのもので、通常の使用に用いられるキャッシングの対象となるディスク領域（以下、ユーザ領域とする）の他に、装置毎に設定されるシリアル番号やキャッシュシステムの初期化日時を格納するための専用ディスク領域（以下、コントローラ領域とする）が設けられる。本実施形態では、複数（ｎ台）のハードディスク装置１４−０〜１４−ｎ（ＨＤＤ０〜ＨＤＤｎ）が接続されているものとする。
【００３４】
次に、本実施形態における動作について説明する。
はじめに、図２に示すフローチャートを参照しながら、ホストシステム１０からのデータの書き込みの処理（ライトコマンド処理）の基本的な動作について説明する。図３にはホストシステム１０からの指示及びデータに対する処理についての概略を説明するための図を示している。
【００３５】
なお、本実施形態では、ディスクコントローラ１２において、ライトコマンドを受信した場合には図２のフローチャートに示す処理と共に、図８のフローチャートに示すようなデータ転送の正常性を判定する処理が実行される。詳細については後述する。
【００３６】
まず、ホストシステム１０のＣＰＵ２０からコマンドパスを介して、ＣＰＵローカルメモリ２２に格納されたデータのハードディスク装置１４に対する書き込み要求（ライトコマンド）があった場合、ディスクコントローラ１２のデータ管理機構４４（ＣＰＵ３０）は、データパスを介して得られるデータに対するライトコマンド処理を起動する。
【００３７】
データ管理機構４４は、ディスクキャッシュ用メモリ３６とＳＲＡＭカード３８の双方に対して、データを書き込むための領域を獲得できるか否かをチェックする（ステップＳ１）。
【００３８】
ここで、データを書き込むための領域が獲得できた場合（ステップＳ２）、データ管理機構４４は、ディスクキャッシュ用メモリ３６とＳＲＡＭカード３８の双方にデータの書き込みを行なう（ステップＳ３）。
【００３９】
この時、ディスクキャッシュ用メモリ３６に対する書き込みは、一般的なライトバック方式に従い、セグメント管理された複数の領域の中から、その後のサーチ処理（読み出し、書き込み時）に対する簡便さが考慮された適当なセグメントが選択されて実行される。
【００４０】
一方、ＳＲＡＭカード３８に対するデータの書き込みは、空いた領域から任意の領域が選択されて実行される。同時に、書き込みを行なったデータに対するディレクトリ情報、すなわちデータのハードディスク装置１４に対する書き込み位置（ディスク領域）を示すアドレスと、ディスクキャッシュ用メモリ３６に対して書き込みを行なった位置（メモリ領域）を示すアドレスからなるアドレス情報も書き込む。
【００４１】
また、ディレクトリ情報（あるいはデータ）には、データの有効性を保証するための処理に用いられるフラグが付加される。具体的には、データ書き込みを行なうための領域を獲得した際に、フラグをコマンド実行中を表わすように設定し、ホストシステム１０から正常にデータが転送されるとフラグをデータ有効を表わすように書き替える。
【００４２】
データ管理機構４４は、フラグ書き込みを正常に終了した後に、ホストシステム１０に対してライトコマンド処理の終了を通知する。
なお、ＳＲＡＭカード３８に対する書き込みは、ディスクキャッシュ用メモリ３６に対して適当なセグメントが選択されて書き込まれるのとは関係なく、ディスクへの書き込みを効率的にできる形式によって書き込まれる。例えば、書き込みデータをハードディスク装置１４に対して書き込みを行なう際のデータ単位（例えばセクタ単位）となる連続的なデータとする（ブロックデータ）。
【００４３】
一方、ステップＳ２において、データを書き込むための領域が獲得できなかった場合、データ管理機構４４は、書き込み要求のあったデータをハードディスク装置１４のユーザ領域における該当する領域に書き込み、書き込みが完了した後にホストシステム１０に対してライトコマンド処理の終了を通知する。
【００４４】
以上のようなライトコマンド処理が複数回行なわれる間に所定の状態となった時（アイドル時、もしくは一定時間が経過した時など）、通常のライトバック方式に従って、ディスクキャッシュ用メモリ３６に格納されたデータを、ハードディスク装置１４のユーザ領域中の書き込み要求アドレスに対して書き込む処理が実施される。
【００４５】
なお、本実施形態では、ディスクコントローラ１２において、ホストシステム１０からアイドル時、もしくは一定時間が経過した時などに発行される診断要求に応じて、図９のフローチャートに示すＳＲＡＭカード３８に格納されたデータの正常性を判定する処理が実行される。詳細については後述する。
【００４６】
図４にはＳＲＡＭカード３８内のデータ形態の一例を示している。図４に示すように、ＳＲＡＭカード３８のメモリ空間には、システム領域、データ領域、チェックコード領域が設けられ、それぞれブロック毎にデータが格納されている。また、データ領域の一部には診断データ領域が設けられる。
【００４７】
システム領域には、ＳＲＡＭカード３８のデータバックアップ用の電池を交換した日付を示すデータ（電池交換日付）、ハードディスク装置１４−１〜１４−ｎ（ＨＤＤ０〜ＨＤＤｎ）のそれぞれに設定されるＨＤＤシリアル番号、キャッシュシステムを初期化した日時を示すデータ（キャッシュシステム初期化日時）、ディレクトリ情報等のその他キャッシュ制御情報が含まれる。ディレクトリ情報には、データ領域に格納されるキャッシュデータの有効性を保証するための処理に用いられるフラグが付加される。
【００４８】
データ領域には、ブロック毎に複数のデータ（キャッシュデータ）が格納される（図４中では４つのキャッシュデータを示す）。また、データ領域には、２ブロック分の診断データ領域（診断データ１，２）が設けられている。
【００４９】
チェックコード領域には、システム領域とデータ領域におけるブロック管理された各ブロックのデータに対応するチェックコードが格納される。本実施形態におけるチェックコードは、データ転送時にＤＭＡコントローラ３４のチェックコード生成機能によって、対応するブロック中の全データを、初期値を“０”としてＸＯＲ（EXCLUSIVE-OR）演算することによって求められる。ただし、システム領域に格納されるデータについては、ＤＭＡコントローラ３４によるＤＭＡ（Direct Memory Access）の対象外であるため、同データに対応するチェックコードをデータ管理機構４４が必要に応じて適時に生成され、ＳＲＡＭカード３８のチェックコード領域に格納されるものとする。
【００５０】
図４においては、システム領域に対応するチェックコードは「code0 」、キャッシュデータ０に対応するチェックコードは「code1 」、診断データ２に対応するチェックコードは「code6 」となる。チェックコード領域中のチェックコードが格納されていない有効データ以外の領域を空き領域としているが、システム領域として割り当てることも可能である。
【００５１】
なお、図４に示すデータ形態は、説明を簡単にするために簡略化したデータ形態であり、実際にはＳＲＡＭカード３８の容量が１ＭＢ程度以上あり、ブロックが数千個存在する。このため、図４では、チェックコード領域が１ブロックしかないが、実際にはシステム領域とデータ領域に格納されるデータ量に応じたチェックコード分の複数ブロックがチェックコード領域として割り当てられる。また、システム領域についても、キャッシュ制御情報が容量的に大きいため複数ブロックが割り当てられる。これに対して、診断データ領域は、本実施形態では２つの診断データＡ，Ｂ（詳細については図４を用いて後述する）を用いるものとしているため２ブロック（診断データ１，２）の消費のみであり、全体容量に占める割合は少なくてよい。
【００５２】
図５には本実施形態における診断データＡ，Ｂの一例を示している。診断データＡ，Ｂは、データバスのあるビットが固定値しかとれない、または他のビットの状態に影響される場合に異常検出できるように配慮したデータパターンである。
【００５３】
例えば、図５（ａ）に示すように、診断データＡは、同データに対するチェックコードが図５（ｂ）に示すように、「ＡＡ」（１ワード＝１バイト、１６進表記）となるデータパターンである。また、図５（ｃ）に示すように、診断データＢは、同データに対するチェックコードが図５（ｄ）に示すように、「５５」（１ワード＝１バイト、１６進表記）となるデータパターンである。診断データＡと診断データＢは、「００」となるデータを除いて、同じバイト位置のデータが互いに各ビットの値が異なるデータであり、同時に使用することで異常検出の確率を向上させることができる。
【００５４】
診断データＡ，Ｂは、図６に示すように、ホストシステム１０からのデータ転送毎に、交互に診断データ１，２として転送順序を替えて送信される。すなわち、転送１では、診断データ１として診断データＡ、診断データ２として診断データＢを用い、転送２では、診断データ１として診断データＢ、診断データ２として診断データＡを用いる。同様にして、転送３以降についても、データ転送毎に診断データ１，２として、診断データＡ，Ｂを交互に順序を変更する。
【００５５】
次に、本実施形態におけるＳＲＡＭカード３８の保存データの信頼性の向上と確実な保護を行なうための動作についてフローチャートを参照しながら説明する。本発明に係わる主な動作は、立ち上げ処理中と通常動作中（ライトコマンド受信時、診断要求受信時）の２種に分けられ、それぞれの処理手順を図７、図８、図９に示している。
【００５６】
ただし、フローチャートにより特に図示しなかったが、本発明を実施するためには、キャッシュシステムの初期化処理が必要である。キャッシュシステムの初期化処理では、データ管理機構４４は、初期化時点でＳＣＳＩチップ４２を介して接続されている各接続装置（ハードディスク装置１４−０〜１４−ｎ）のシリアル番号と初期化日時とをＳＲＡＭカード３８のシステム領域に格納すると共に、ハードディスク装置１４−０〜１４−ｎのコントローラ領域にもシリアル番号と初期化日時とを書き込み、ＳＲＡＭカード３８内のデータと接続装置内のデータとを一致させておく。初期化日時のデータは、ホストシステム１０から取得しても良いし、データ管理機構４４において発生させても良い。
【００５７】
また、ＳＲＡＭカード３８の電池交換を実施した場合には、同様にＳＲＡＭカード３８上のシステム領域に交換日付を書き込む必要がある。例えば、電池交換後に、ホストシステム１０において、ディスクコントローラ１２の管理用プログラムを実行して、電池交換日付を示すデータをＳＲＡＭカード３８に書き込ませるコマンドを発行することで、データ管理機構４４によってＳＲＡＭカード３８のシステム領域中に電池交換日付を示すデータを格納する。
【００５８】
また、ＳＲＡＭカード３８に格納された電池交換日付のデータは、例えばホストシステム１０において、ＳＲＡＭカード３８の管理用プログラムが実行され、電池交換日付の表示の実行が要求されることによってデータ管理機構４４が読み出す。ホストシステム１０は、データ管理機構４４によって読み出された電池交換日付のデータに基づいて、電池交換日付を表示させる。
【００５９】
すなわち、任意の時点での要求に応じてＳＲＡＭカード３８のシステム領域に格納されたデータにから電池交換日付を表示できる機能を持たせることにより、その情報を取得した者が電池交換日付と電池の寿命（通常１、２年）とを比較することで残余期間を的確に判断することができる。
【００６０】
次に、データ管理機構４４の立ち上げ時の動作について、図７を参照しながら説明する。
ライトバック方式を用いるキャッシュシステムでは、通常動作中に（電源断・コントローラ障害等により）ハードディスク装置１４に対してデータの書き込みが出来なかった場合、データ管理機構４４は、次の立ち上げ時にＳＲＡＭカード３８に蓄えられたデータをハードディスク装置１４に書き込む処理の実行を試みる。
【００６１】
本発明では、この時にデータの信頼性を保障するために、図７のフローチャートに示すようにして各種のチェックを実施する。
まず、データ管理機構４４は、ＳＲＡＭカード３８上の全ブロックのそれぞれについて、チェックコードの正常性を判定する（ステップＡ１）。データ管理機構４４は、ＳＲＡＭカード３８のシステム領域とデータ領域に格納された各ブロックに格納されたデータからそれぞれチェックコードを生成し（ＸＯＲ演算による）、チェックコード領域に既に格納されている対象ブロックに対応するチェックコードとそれぞれ比較して同一であるか否かをチェックする。なお、データ転送中の電源断時には、システム領域・データ領域の１ブロックで不正が発生するが、そのブロックは正当であるものとみなす。
【００６２】
チェックコードの比較の結果、正常でないと判断できる場合には（ステップＡ２）、データ管理機構４４は、ホストシステム１０に対して、ＳＲＡＭカード３８に格納されたデータの不正を通知して停止する（ステップＡ３）。ホストシステム１０は、データ管理機構４４からの通知に応じて、図示せぬ表示装置においてＳＲＡＭカード３８に格納されたデータの不正を通知する旨を表示させる。
【００６３】
ＳＲＡＭカード３８のデータが不正であった場合には、人間系においてＳＲＡＭカード３８の点検が実施されることになる。作業員が適切な処置を施すことでデータの破壊を防止することができる。
【００６４】
一方、チェックコードによる正常性判定により正常と判断できた場合、データ管理機構４４は、ＳＲＡＭカード３８のシステム領域中に書き込まれている、キャッシュ制御情報中のディレクトリ情報に付加されたデータ有効を表すフラグを参照して、ハードディスク装置１４に吐き出すべきデータ（ライトバックデータ）の有無をチェックする（ステップＡ４）。ここで、ライトバックデータが存在しない場合には（ステップＡ５）、データ管理機構４４は、立ち上げ処理を終了する（ステップＡ６）。
【００６５】
ライトバックデータが存在する場合、データ管理機構４４は、ＳＲＡＭカード３８上のシステム領域中のＨＤＤシリアル番号をチェックして、実際に接続されているハードディスク装置１４−０〜１４−ｎ（ＨＤＤ０〜ＨＤＤｎ）の正当性を判定する（ステップＡ７）。すなわち、データ管理機構４４は、キャッシュシステムの初期化処理の際に、ＳＲＡＭカード３８のシステム領域に書き込まれたシリアル番号と、ハードディスク装置１４−０〜１４−ｎのコントローラ領域に格納されたシリアル番号とを比較し、シリアル番号が一致しているか否かを判断する。
【００６６】
この結果、シリアル番号が一致せずに、現在の接続装置が正当ではないと判断された場合には（ステップＡ８）、データ管理機構４４は、ホストシステム１０に対して、接続装置異常を通知して停止する（ステップＡ９）。ホストシステム１０は、データ管理機構４４からの通知に応じて、図示せぬ表示装置において接続装置異常を通知する旨を表示させる。
【００６７】
接続装置異常があった場合には、人間系において使用しているＳＲＡＭカード３８が正しいか否かの点検、及び現在接続されている接続装置（ハードディスク装置１４）が正しいか否かの点検が実施される。
【００６８】
一方、接続されたハードディスク装置１４が正当である場合、データ管理機構４４は、ＳＲＡＭカード３８上のシステム領域に書き込まれたキャッシュシステム初期化日時（タイムスタンプ）と、ハードディスク装置１４−０〜１４−ｎのコントローラ領域に格納された初期化日時（接続装置タイムスタンプ）とを比較し、初期化日時が一致しているか否かを判定する（ステップＡ１０）。
【００６９】
この結果、初期化日時が一致せずに、ＳＲＡＭカード３８に格納されたデータが正当でないと判断された場合、例えばデータが古い場合には（ステップＡ１１）、データ管理機構４４は、ホストシステム１０に対して、タイムスタンプ異常を通知して停止する（ステップＡ１２）。ホストシステム１０は、データ管理機構４４からの通知に応じて、図示せぬ表示装置においてタイムスタンプ異常を通知する旨を表示させる。
【００７０】
タイムスタンプ異常があった場合には、人間系において使用しているＳＲＡＭカード３８が正しいか否かの点検が実施される。
一方、使用されているＳＲＡＭカード３８に書き込まれた初期化日時が正当である場合、データ管理機構４４は、システム領域中のキャッシュ制御情報（ディレクトリ情報等）に基づいて、データ領域内に残っている有効データをハードディスク装置１４に吐き出すことで、ライトバックキャッシュ動作を完了させる（ステップＡ１３）。
【００７１】
こうして、データ管理機構４４の立ち上げ時には、ＳＲＡＭカード３８に書き込まれたデータ、すなわちチェックコード領域に書き込まれたチェックコード、システム領域中に書き込まれたキャッシュシステム初期化日時を用いて、ＳＲＡＭカード３８のデータ正常性をチェックすることができる。
【００７２】
また、ＳＲＡＭカード３８のシステム領域に電池交換日時を書き込み、任意に読み出して表示させることができるので、不用意に電池切れの状態を招いて、ライトバック動作が禁止された性能劣化状態での運用を回避することができる。
【００７３】
次に、通常動作中におけるライトコマンド受信時の動作を、図８に示すフローチャートを参照しながら説明する。
データ管理機構４４は、ホストシステム１０からコマンドパスを介して、ＣＰＵローカルメモリ２２に格納されたデータのハードディスク装置１４に対する書き込み要求（ライトコマンド）があった場合、ＤＭＡコントローラ３４に対して、通常のデータ転送後に診断データの転送を実行するように設定する（ステップＢ１）。
【００７４】
ＤＭＡコントローラ３４は、データ管理機構４４の制御のもとで、２５６バイトのブロックデータ転送を行なうと共に、チェックコード生成機能により１ブロックのデータ転送毎にＸＯＲ演算によりチェックコードを生成し、ＳＲＡＭカード３８のチェックコード領域に書き込む（ステップＢ２）。
【００７５】
通常のデータ転送後には２つの診断データ１，２が転送されるが、診断データ１，２についても同様にしてチェックコードが生成される。データ管理機構４４は、診断データ１，２に対するチェックコードをチェックして、データ転送の正常性を判定する（ステップＢ３）。
【００７６】
すなわち、図６を用いて説明したように、診断データＡと診断データＢは、データ転送毎に、交互に診断データ１，２として転送される。従って、正常にデータ転送が行なわれた場合の診断データ１，２に対するチェックコードの値が、それぞれ「ＡＡ」「５５」（図５参照）の何れであるか既知となっている。
【００７７】
データ管理機構４４は、２つの診断データ１，２に対応するチェックコードをＳＲＡＭカード３８のチェックコード領域から読出し、既知のチェックコードと比較することにより正常性を判定する。
【００７８】
データ管理機構４４は、診断データ１，２に対するチェックコードが、正当なチェックコードの値と同じあれば、ＤＭＡコントローラ３４のチェックコード生成機能、データバスの全ビット、アドレスラインなどを含めたシステム全体のデータ転送系全般に渡る通常動作が正常であるものと判断して処理を終了する（ステップＢ４）。
【００７９】
一方、診断データに対するチェックコードが一致せずに、正常でないものと判断された場合には、データ管理機構４４は、リトライ動作を実行させる。それでも正常とならない場合、データ管理機構４４は、ディスクキャッシュ用メモリ３６から有効データを吐き出し、通常動作を禁止する状態、すなわちライトバック動作を禁止した動作モードに移行する（ステップＢ５）。
【００８０】
さらに、データ管理機構４４は、ハードディスク装置１４−１〜１４−ｎのコントローラ領域に格納されている初期化日時（タイムスタンプ）のデータを更新して、ＳＲＡＭカード３８上のデータが古くなったことを明示するように変更する。
【００８１】
ここで、ハードディスク装置１４−１〜１４−ｎのコントローラ領域に格納されている初期化日時と、ＳＲＡＭカード３８のシステム領域に格納されたキャッシュシステム初期化日時とを不一致としておくことで、前述した図７における処理のステップＡ１０において、タイムスタンプ異常が検出されてデータの保護が可能となる。
【００８２】
次に、通常動作中における診断要求受信時の動作を、図９に示すフローチャートを参照しながら説明する。
ホストシステム１０は、一定時間毎、及びアイドル状態となった時に、ディスクコントローラ１２におけるＳＲＡＭカード３８に格納されたデータの正常性をチェックするための診断要求コマンドをデータ管理機構４４に対して発行する。
【００８３】
データ管理機構４４は、診断要求コマンドを受信すると、ＳＲＡＭカード３８のデータ領域から各ブロックのデータを読み込み、ＸＯＲ演算によって各ブロックに対応するチェックコードを生成する（ステップＣ１）。
【００８４】
データ管理機構４４は、ＳＲＡＭカード３８のチェックコード領域に格納された、データ転送時に書き込まれた各ブロックのデータに対応するチェックコードを読み込み、ステップＣ１において生成したチェックコードと各ブロック毎に比較する（ステップＣ３）。
【００８５】
各ブロックのチェックコードが一致している場合（ステップＣ４）、データ管理機構４４は、ＳＲＡＭカード３８に格納されているデータが正常であるものと判断して診断処理を終了する。
【００８６】
一方、チェックコードが一致していない場合（ステップＣ４）、データ管理機構４４は、ディスクキャッシュ用メモリ３６から有効データを吐き出し、通常動作を禁止する状態、すなわちライトバック動作を禁止した動作モードに移行する（ステップＣ５）。
【００８７】
さらに、データ管理機構４４は、ハードディスク装置１４−１〜１４−ｎのコントローラ領域に格納されている初期化日時（タイムスタンプ）のデータを更新して、ＳＲＡＭカード３８上のデータが古くなったことを明示するように変更する。この場合も前述したライトコマンド受信時の処理と同様に、図７における処理のステップＡ１０において、タイムスタンプ異常が検出されてデータの保護が可能となる。
【００８８】
このようにして、通常のデータ転送時に、診断用データの転送を付加し、診断用データにから求められるチェックコードの判定により、データ転送の正常性を検証するので信頼性を向上させることができる。
【００８９】
また、ＳＲＡＭカード３８に格納される各ブロックのデータに対してチェックコードを付加することにより、ホストシステム１０から、一定時間毎、及びアイドル状態となった時に明示的にデータに対する診断要求を出して、データの異常検出を行なうことができるので信頼性を向上させることができる。
【００９０】
以下、本発明の効果が発揮されると想定できる具体的状況の一例について説明する。
例えば、通常運用では、ディスクコントローラ１２に故障が発生した場合には、即時システム停止とし、正常なディスクコントローラ１２に交換した後、この交換したディスクコントローラ１２にＳＲＡＭカード３８を差し替えて再立ち上げを実行することで通常運用に復帰させる。この時、故障原因の追求のためにハードディスク装置１４−１〜１４−ｎから任意の装置を取り外すことがあるが、誤って間違ったハードディスク装置を再接続してしまうことが想定される。
【００９１】
また、ＳＲＡＭカード３８に対するアクセス異常がチェックコードによる診断で検出され、ライトバックキャッシュ動作を停止した状態でシステム運用を実施する。その後、故障原因追究のため、別のＳＲＡＭカードを用意してキャッシュ動作確認を実行した後、結局コントローラ側の問題であることが判明し、新規コントローラに元のＳＲＡＭカード３８を結合して再立ち上げを実行することが想定できる。
【００９２】
このような場合、本発明では再立ち上げ時に、図７のフローチャートに示すように各種チェックが施され、以上が検出されて処理が停止されるため、データ破壊が防止でき、エラー表示（図７中ステップＡ３，Ａ９，Ａ１０）から問題点が判定される。これにより、ＳＲＡＭカード３８の接続を正しくする、またはキャッシュシステムの再初期化を実施する等の対策を実施することで、通常運用に戻すことができる。
【００９３】
このようにして、パリティビットに代わる冗長コード（チェックコード）をＳＲＡＭカード３８に持たせ、このチェックコードを用いて書き込まれたデータの正当性をチェックすることで保存データの信頼性を向上させ、かつ、その冗長コードを使用して通常動作中のデータ転送の信頼性をも向上させることができる。
【００９４】
また、電池交換日付を明示的に表示させることにより電池交換時期を推測可能として、確実に電池切れに至る以前に電池交換を可能とすることにより、ライトバック動作の禁止期間を最小限に止どめることができる。
【００９５】
さらに、幾つかの保護機能を持たせることで、保守作業時の作業ミス等が発生した場合であっても異常通知がなされるので、人間系による点検を促し、データ保護を行なうことができる。
【００９６】
なお、前述した実施形態においては、キャッシング対象とする接続装置をハードディスク装置１４としているが、他の記憶媒体を用いる記憶装置であっても勿論良い。
【００９７】
【発明の効果】
以上詳述したように本発明によれば、ディスクキャッシュにおいてキャッシュ用メモリと併用して使用される不揮発性メモリの保存データの信頼性の向上と確実な保護が可能となるものである。
【図面の簡単な説明】
【図１】本発明の実施形態に係わるディスクキャッシュを有するコンピュータシステムの概略構成を示すブロック図。
【図２】本実施形態におけるホストシステム１０からのデータの書き込みの処理（ライトコマンド処理）の基本的な動作について説明するためのフローチャート。
【図３】本実施形態におけるホストシステム１０からの指示及びデータに対する処理についての概略を説明するための図。
【図４】本実施形態におけるＳＲＡＭカード３８内のデータ形態の一例を示す図。
【図５】本実施形態における診断データＡ，Ｂの一例を示す図。
【図６】本実施形態における診断データＡ，Ｂの転送順序を説明するための図。
【図７】本実施形態におけるデータ管理機構４４の立ち上げ時の動作について説明するためのフローチャート。
【図８】本実施形態における通常動作中におけるライトコマンド受信時の動作を説明するためのフローチャート。
【図９】本実施形態における通常動作中における診断要求受信時の動作を説明するためのフローチャート。
【符号の説明】
１０…ホストシステム
１２…ディスクコントローラ
１４，１４−０〜１４−ｎ…ハードディスク装置
１６…接続用コネクタ
２０，３０…ＣＰＵ
２２…ＣＰＵローカルメモリ
２４，４０…外部回路接続用バス変換回路
３２…Ｆ／Ｗ用メモリ
３４…ＤＭＡコントローラ
３６…ディスクキャッシュ用メモリ
３７…コネクタ
３８…ＳＲＡＭカード
３８、外部回路接続用バス変換回路
４２…ＳＣＳＩチップ
４４…データ管理機構
【図１】
0003923563.tif 000002
【図２】
0003923563.tif 000003
【図３】
0003923563.tif 000004
【図４】
0003923563.tif 000005
【図５】
0003923563.tif 000006
【図６】
0003923563.tif 000007
【図７】
0003923563.tif 000008
【図８】
0003923563.tif 000009
【図９】
0003923563.tif 000010