(57)【特許請求の範囲】
【請求項１】
第１のフォーマットに従ったデータへのアクセスコマンドを発行するプロセッサと、メモリと、を備えた計算機であって、
他の計算機から、前記第１のフォーマットとは異なる第２のフォーマットに従ったデータへのアクセスコマンドを受け取るインターフェースと、
前記プロセッサが発行した、前記第１のフォーマットに従ったデータへのライトコマンドに基づいて、前記データを受け取り、前記メモリに格納する第１のコマンド処理手段と、
前記インターフェースを介して受け取った前記他の計算機が発行した、前記第２のフォーマットに従ったデータへのリードコマンドに基づいて、前記第１のコマンド処理手段で格納したデータを前記メモリから読み出し、前記他の計算機に転送する第２のコマンド処理手段と、を有すること
を特徴とする計算機。
【請求項２】
第１のフォーマットに従ったデータへのアクセスコマンドを発行するプロセッサと、メモリと、を備えた計算機であって、
他の計算機から、前記第１のフォーマットとは異なる第２のフォーマットに従ったデータへのアクセスコマンドを受け取る他計算機用インターフェースと、
前記第２のフォーマットに従ったデータを格納する第２の記憶装置を接続するための第２の記憶装置用インターフェースと、
前記第２の記憶装置と前記メモリとを用いて、前記第１のフォーマットに従ったデータを格納する論理第１の記憶装置をエミュレートし、前記プロセッサが発行する前記第１のフォーマットに従ったデータへのアクセスコマンドを処理する第１のコマンド処理手段と、
前記第２の記憶装置と前記メモリとを用いて、前記第２のフォーマットに従ったデータを格納する論理第２の記憶装置をエミュレートし、前記他計算機用インターフェースを介して受け取った前記他の計算機が発行する前記第２のフォーマットに従ったデータへのアクセスコマンドを処理する第２のコマンド処理手段と、を有し
前記第１のコマンド処理手段は、
前記プロセッサが発行したアクセスコマンドが、前記論理第１の記憶装置の所定領域へのライトコマンドである場合、書込み対象データを、前記所定領域に対応する前記第２の記憶装置の記憶領域へ書き込み、かつ、前記メモリ上に常駐させること
を特徴とする計算機。
【請求項３】
請求項２記載の計算機であって、
前記第１のフォーマットに従ったデータを格納する第１の記憶装置を接続するための第１の記憶装置用インターフェースをさらに備え、
前記プロセッサは、
前記第１の記憶装置からデータを読み出し、必要に応じて所定形式に変換して、前記論理第１の記憶装置の所定領域に対する当該データのライトコマンドを前記第１のコマンド処理手段に発行すること
を特徴とする計算機。
【請求項４】
請求項３記載の計算機であって、
前記プロセッサは、
前記ライトコマンドが書込みを要求する前記論理第１の記憶装置の所定領域に対応する前記第２の記憶装置の記憶領域に対応する、前記論理第２の記憶装置の領域を、前記他の計算機が特定するための情報を、前記他の計算機に通知すること
を特徴とする計算機。
【請求項５】
可変長フォーマットのデータを扱う計算機と、固定長フォーマットのデータを格納する固定長記憶装置と、を有する計算機システムであって、
前記計算機は、
可変長フォーマットのデータのアクセスコマンドを発行するプロセッサと、
固定長フォーマットのデータを扱う他の計算機と接続し、該他の計算機と該固定長フォーマットのデータの送受信を行う接続手段と、
前記固定長記憶装置用のディスクキャッシュと、
前記ディスクキャッシュへのデータのキャッシュ制御を行うディスクキャッシュ制御手段と、
前記固定長記憶装置と前記ディスクキャッシュを用いて、可変長フォーマットのデータを格納する論理可変長記憶装置をエミュレートし、前記プロセッサが発行する可変長フォーマットのデータへのアクセスコマンドを処理する論理可変長記憶装置提供手段と、
前記固定長記憶装置と前記ディスクキャッシュを用いて、前記固定長フォーマットのデータを格納する論理固定長記憶装置をエミュレートし、前記接続手段に接続された他の計算機が発行する固定長フォーマットのデータへのアクセスコマンドを処理する論理固定長記憶装置提供手段と、
前記論理可変長記憶装置の記憶領域の少なくとも一部をディスクキャッシュ常駐領域に設定する常駐領域設定手段と、を有し、
前記ディスクキャッシュ制御手段は、
前記プロセッサが、前記常駐領域設定手段によりディスクキャッシュ常駐領域に設定されている前記論理可変長記憶装置の記憶領域へのデータのライトコマンドを発行した場合に、当該データを前記論理可変長記憶装置の記憶領域に対応する前記固定長記憶装置の記憶領域へ書き込み、かつ、前記ディスクキャッシュ上に常駐させること
を特徴とする計算機システム。
【請求項６】
請求項５記載の計算機システムであって、
可変長フォーマットでデータを格納する可変長記憶装置をさらに備え、
前記プロセッサは、
前記可変長記憶装置からデータを読み出し、必要に応じて所定形式に変換して、前記常駐領域設定手段によりディスクキャッシュ常駐領域に設定されている前記論理可変長記憶装置の記憶領域に対する当該データのライトコマンドを前記論理可変長記憶装置提供手段に発行することを特徴とする計算機システム。
【請求項７】
請求項６記載の計算機システムであって、
前記プロセッサは、
前記ライトコマンドが書込みを要求する前記論理可変長記憶装置の記憶領域に対応する前記固定長記憶装置の記憶領域に対応する、前記論理固定長記憶装置の領域を、前記他の計算機が特定するための情報を、前記他の計算機に通知し、
前記書込みを要求する論理可変長記憶装置の記憶領域は、前記常駐領域設定手段によりディスクキャッシュ常駐領域として設定されている領域であること
を特徴とする計算機システム。
【請求項８】
固定長フォーマットのデータを格納する固定長記憶装置が自装置上のプロセスに対して適用される第１の計算機に、可変長フォーマットのデータを格納する可変長記憶装置が適用される第２の計算機が保持するデータを転送するデータ転送方法であって、
前記第２の計算機において、当該第２の計算機上のある記憶領域を、前記第２の計算機上のプロセスに対しては論理可変長記憶装置としてエミュレートし、前記第１の計算機に対しては論理固定長記憶装置としてエミュレートするステップと、
前記第２の計算機において、前記第１の計算機に転送するデータを、前記論理可変長装置に書き込むステップと、
前記第１の計算機において、前記論理固定長記憶装置に対する読み込み要求を発行するステップと、
前記第２の計算機において、前記読み込み要求に従い、前記論理可変長装置に書き込まれたデータを読み込むステップと、を有すること
を特徴とするデータ転送方法。
【請求項９】
請求項８記載のデータ転送方法であって、
前記ある記憶領域とは、前記第２の計算機の一次記憶装置上の領域であること
を特徴とするデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、それぞれ異なるフォーマットでデータを記憶する記憶装置が用いられるホスト装置間でのデータ転送技術に関する。
【０００２】
【従来の技術】
メインフレームホストには、外部記憶装置として、可変長レコードのデータフォーマットでデータを記憶する磁気ディスク装置が用いられている。従来のこの種の磁気ディスク装置は、可変長レコードのデータアクセスを可能とするCKD(Count Key Data)インタフェースを有している。つまり、従来、可変長レコードフォーマットのデータは、CKDインタフェースを有する磁気ディスク装置上に物理的に実現されていた。
【０００３】
しかし、近年になって、可変長レコードのデータの記憶装置として、パーソナルコンピュータやワークステーションといったオープン系ホストで用いられているる、比較的安価な、固定長ブロック（FBA:Fixed Block Architecture）フォーマットでデータを記憶する磁気ディスク装置が用いられるようになってきている。例えば、このような磁気ディスク装置を複数用いて構成されるRAID（Redundant Array of Inexpensive Disks)が広く使われるようになってきている。RAIDは、シカゴのイリノイ大学で開かれたACM SIGMOD会議において発表された論文「D.Patterson,G.Gibson, and R.H.Kartz; A Case for Redundant Arrays of Inexpensive Disks(RAID), ACM SIGMOD Conference, Chicago, IL, (June 1988), pp.109-116」に記載されているように、比較的安価で信頼性の低いディスク装置を複数台接続し、データを複数のディスク装置に分配して配置することで、データ転送の並列化による性能向上や、冗長データを保持することによる高可用性を実現するものである。
【０００４】
ところで、ホストが認識するディスク装置は、実際のディスク装置あるいは複数のディスク装置で構成されたRAIDに格納される、見せかけのディスク装置である。以後、これらの二階層のディスク装置を区別するため、ホストから認識されるディスク装置を論理ディスク装置と呼び、CKDインタフェースを有しCKDフォーマットデータを格納する実際のディスク装置や、FBAフォーマットでデータを記憶する実際のディスク装置を物理ディスク装置と呼ぶこととする。
【０００５】
また、メインフレームホストで用いられる可変長レコードフォーマットのことをCKDフォーマットと呼び、CKDインタフェースを有しCKDフォーマットでデータを記憶するディスク装置をCKDディスク装置と呼び、そして、FBAフォーマットでデータを記憶するディスク装置をFBAディスク装置と呼ぶこととする。
【０００６】
また、ホストから認識されるCKDディスク装置を論理CKDディスク装置と呼び、ホストから認識されるFBAディスク装置を論理FBAディスク装置と呼ぶこととする。さらに、実際のCKDディスク装置を物理CKDディスク装置と呼び、実際のFBAディスク装置を物理FBAディスク装置と呼ぶこととする。
【０００７】
また、論理FBAディスク装置と物理FBAディスク装置とを区別しない場合には、単にFBAディスク装置と呼び、論理CKDディスク装置と物理CKDディスク装置とを区別しない場合には、単にCKDディスク装置と呼ぶこととする。ここで、論理FBAディスク装置と物理FBAディスク装置、および、論理CKDディスク装置と物理CKDAディスク装置は、それぞれ一致していてもよい。
【０００８】
さて、上述したように、RAIDに用いられる物理FBAディスク装置は、SCSI等のインタフェースを有し、FBAフォーマットでデータを記憶する。したがって、メインフレームホストに接続して、CKDインタフェースからCKDフォーマットのデータを受け取り、FBAフォーマットの物理ディスク装置に書き込む記憶装置サブシステムでは、CKDフォーマットからFBAフォーマットへの変換およびその逆変換機構を、内部に備えることが必要となる。
【０００９】
例えば、「メインフレーム’９８」、日経BP社、p53-54には、SCSIインタフェースを有し、FBAディスク装置を筐体に内蔵するメインフレームについて記載されている。このメインフレームでは、CPUからCKDフォーマットデータアクセスのコマンド群（CCW:Channel Command Word)として発行される入出力要求を、内蔵ディスク装置の入出力制御を専門に担当する制御プロセッサが受信/解釈し、FBAフォーマットデータアクセスのコマンド群(SCSIコマンド)に変換して、FBAディスク装置への入出力を行う。この変換機構により、従来CKDディスク装置を前提とするアプリケーションプログラムやOSなどを変更することなく、メインフレームコンピュータの外部記憶装置として、FBAディスク装置を利用することが可能となる。なお、この種のフォーマットの変換機構の別の例としては、例えば特開平6-150557号公報記載のものが知られている。
【００１０】
ところで、昨今、販売実態の把握や市場ニーズの解析による経営上の意思決定支援を目的として、メインフレームホストを使用する基幹系情報システムが保持する業務データに対するOLAPやデータマイニングのニーズが高まっている。これに従い、メインフレームコンピュータのCKDディスク装置を利用したデータベース等に蓄えた基幹業務データを、PCやワークステーションへ転送し、流用するといったデータ連携機能が重要となっている。
【００１１】
そして、このようなメインフレームコンピュータのCKDディスク装置に記憶されたデータを、オープン系ホストへ転送する方法の一つとしては、LAN等のネットワークを介してホスト同士で転送する方法が考えられる。しかし、この方法では、両ホストやネットワークに負荷がかかり、他業務の実行速度低下等の悪影響を及ぼす可能性がある。そこで、特開平9-258908号公報記載の技術では、次のようにして、このようなデータ転送を行っている。
【００１２】
物理FBAディスク装置と記憶装置コントローラよりなる記憶装置を、メインフレームホストとオープン系ホストの双方にそれぞれ接続する。この記憶装置は、記憶装置コントローラの動作により、物理FBAディスク装置を、メインフレームホストに対しては論理CKDディスク装置Aと認識させ、オープン系ホストに対しては論理FBAディスク装置Bと認識させる。
【００１３】
まず、メインフレームホストは、他のCKDディスク装置に格納されている転送対象データを読み出し、中間データを作成して、論理CKDディスク装置Aに格納する。このとき、記憶装置コントローラは、メインフレームホストからの論理CKDディスク装置への転送データ書き込み要求に応じ、転送データをCKDフォーマットからFBAフォーマットへ変換して、物理FBAディスク装置へ書き込む。この変換は、変換後のFBAフォーマットのデータ中に、CKDフォーマットのカウント部やデータ部を含んだままの態様で行われる。
【００１４】
次に、オープン系ホストが、中間データが書き込まれた論理FBAディスク装置Bの中間データに対してアクセスを要求する。記憶装置コントローラは、物理FBAディスク装置から、アクセスを要求された中間データを読み出し、FBAフォーマットのままオープン系ホストに転送する。
【００１５】
オープン系ホストは、転送されたFBAフォーマットデータに含まれるCKDフォーマットデータを認識して、カウント部等を含まない必要なデータのみの抽出や、漢字コード変換などの処理を行ったのち、そのデータを利用する。
【００１６】
【発明が解決しようとする課題】
上述の特開平9-258908号公報記載の技術によれば、メインフレームホストのCKDディスク装置に記憶されたデータを、オープン系ホストへ転送するために、CKDディスク装置から読み出した転送対象データの物理FBAディスク装置への書き込みと、前記転送対象データの前記物理FBAディスク装置からの読み出しとの合計２回の入出力が必要となる。このため、データ転送に時間がかかる。
【００１７】
そこで、本発明は、それぞれ異なるフォーマットのデータを扱うホスト装置間でのデータ転送を、より高速に行うことを課題とする。
【００１８】
【課題を解決するための手段】
前記課題達成のために、本発明では、第１のフォーマットに従ったデータへのアクセスコマンドを発行するプロセッサと、メモリと、を備えた計算機に以下の構成を採用する。
【００１９】
すなわち、他の計算機から、前記第１のフォーマットとは異なる第２のフォーマットに従ったデータへのアクセスコマンドを受け取るインターフェースと、前記プロセッサが発行した、前記第１のフォーマットに従ったデータのライトコマンドに従い、前記データを受け取って、前記メモリに格納する第１のコマンド処理手段と、前記他の計算機が発行した、前記第２のフォーマットに従ったデータのリードコマンドに従い、前記第１のコマンド処理手段で格納したデータを前記メモリから読み出して、前記他の計算機に転送する第２のコマンド処理手段と、を設ける。
【００２０】
このような計算機によれば、本計算機から他の計算機へのデータ転送は、本計算機において、プロセッサが発行した第１のフォーマット（例えば可変長フォーマット）に従ったデータのライトコマンドにより、当該データをメモリに格納し、他の計算機が発行した第２のフォーマット（例えば固定長フォーマット）に従ったデータのリードコマンドにより、前記メモリに格納したデータを転送することにより実現される。
【００２１】
すなわち、本計算機のプロセッサは、転送対象データの入手後、物理的な記憶装置と入出力する必要がない。したがって、より高速なデータ転送が可能となる。また、このような、本計算機のプロセッサによるメモリへのデータ書き込みと、他の計算機によるメモリからのデータ読み込みとは、その発行元が元々対応している記憶装置向け形式のアクセスにより実現されるので、その発行元に関してアーキテクチャ上の修正の必要がない。したがって、既存の資源を活用することができる。
【００２２】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
【００２３】
まず、本発明の第１実施形態について説明する。
【００２４】
図１に、本発明の第１実施形態に係る計算機システムの構成を示す。
【００２５】
図示するように、本実施形態の計算機システムは、メインフレームホスト１００と、メインフレームホスト１００に接続されたFBAディスク装置１５０と、メインフレームホスト１００に接続されたCKDディスク装置１５１と、オープン系ホスト１６０と、オープン系ホスト１６０に接続されたFBAディスク装置１５２と、を有する。
【００２６】
メインフレームホスト１００は、少なくとも１つのCPU１０１と、少なくとも１つの記憶制御プロセッサ１０２と、主記憶１０３と、少なくとも１つのFBAデータアクセス部１０４と、少なくとも１つのCKDデータアクセス部１０５と、少なくとも１つのFBAデータアクセス受信部１０６と、を有する。
【００２７】
オープン系ホスト１６０は、CPU１２０を有する。CPU１２０上では、アプリケーションプログラムによるアプリケーションプロセスとOSが動作する。OSは、アプリケーションプロセスが動作する際のメモリ割り当て等の制御やファイルシステム等の管理を行う。アプリケーションプロセスからの外部記憶装置へのアクセスは、このOSを介して行われる。本実施形態では、アプリケーションプロセスの１つとして、フォーマット変換処理部１２５を含む転送データ転送処理部１２４がCPU１０１上に構築される。
【００２８】
オープン系ホスト１６０およびメインフレームホスト１００は、FBAアクセス通信線１７０と通信線１４０とにより、互いに接続している。ここで、FBAアクセス通信線１７０は、例えばSCSIバスであり、通信線１４０はLAN等である。
【００２９】
さて、メインフレームホスト１００において、CPU１０１上では、データベースマネージメントシステム等のアプリケーションプログラムによるアプリケーションプロセスとOSが動作する。OSは、アプリケーションプロセスが動作する際のメモリ割り当て等の制御やファイルシステム等の管理を行う。アプリケーションプロセスからの外部記憶装置へのアクセスは、このOSを介して行われる。本実施形態では、アプリケーションプロセスの１つとして、転送データ作成処理部１２１がCPU１０１上に構築される。
【００３０】
主記憶１０３は、各CPU１０１が使用するデータやプログラムを格納する領域、および、FBAディスク装置１５０との入出力に用いるディスクキャッシュ領域１０７が割り当てられる。また、主記憶１５０には、ディスクキャッシュ１０７上のデータを管理するキャッシュ管理情報１０８と、各ディスク装置を管理する記憶装置管理情報１０９とを格納する。
【００３１】
記憶制御プロセッサ１０２は、OS等のホストプログラムに対して、FBAディスク装置１５０を論理CKDディスク装置としてエミュレートするCKDコマンド処理部１２２を有する。
【００３２】
通常、ホストプログラムからはCKDディスク装置しか扱えない。このため、CKDコマンド処理部１２２は、ホストプログラムがFBAディスク装置１５０を論理CKDディスク装置としてアクセスできるようするために、ディスクキャッシュ１０７と、FBAディスク装置１５０と、後述する記憶装置管理情報１０９と、を用いて、論理CKDディスク装置をエミュレートする。
【００３３】
具体的には、CKDコマンド処理部１２２は、CKDディスク装置へのアクセス要求の受領、後述するディスクキャッシュ１０７を利用したFBAディスク装置１５０との入出力の他、論理CKDディスク装置とFBAディスク装置１５０とのマッピング管理等も行う。
【００３４】
また、記憶制御プロセッサ１０２は、オープン系ホスト１６０に対して、FBAディスク装置１５０を論理FBAディスク装置としてエミュレートするFBAコマンド処理部１２３を有する。FBAコマンド処理部１２３は、FBAアクセス受信部１０６を介してオープン系ホスト１６０から論理FBAディスク装置へのアクセス要求を受け付け、後述するディスクキャッシュ１０７を利用したFBAディスク装置１５０との入出力を行う。
【００３５】
また、記憶制御プロセッサ１０２は、ディスクキャッシュ１０７上のデータの無効化を制御する無効化処理部１２９を有する。
【００３６】
FBAデータアクセス部１０４は、メインフレームホスト１００とFBAディスク装置１５０とを接続し、その間のFBAフォーマットのアクセスインタフェースコマンドおよびデータの転送を行う。
【００３７】
CKDデータアクセス部１０５は、メインフレームホスト１００とCKDディスク装置１５１とを接続し、その間のCKDフォーマットのアクセスインタフェースコマンドおよびデータの転送を行う。
【００３８】
FBAデータアクセス受信部１０６は、オープン系ホスト１６０とメインフレームホスト１００とを接続し、オープン系ホスト１６０から送信されるFBAフォーマットのアクセスインタフェースコマンドを受信し、記憶制御プロセッサ１０２に引き渡す。また、メインフレームホスト１００およびオープン系ホスト１６０間におけるアクセス対象データの転送を制御する。
【００３９】
通信線１４０は、メインフレートホスト１００とオープン系ホスト１６０との間で通信を行うために用いられる。本実施形態では、中間データ生成完了通知等、イベント通知にのみ用いる。このため、特に高速なものや広帯域なものを適用する必要はない。
【００４０】
FBAアクセス通信線１７０は、FBAデータアクセス部１０４とFBAディスク装置１５０との間や、FBAデータアクセス受信部１０６とオープン系ホスト１６０との間や、オープン系ホスト１６０とFBAディスク装置１５２との間を接続する通信線である。この通信線１７０上で、FBAディスク装置用のSCSIなどの通信プロトコルを用いた通信が行われる。
【００４１】
CKDアクセス通信線１７１は、CKDデータアクセス部１０５とCKDディスク装置１５１との間を接続する通信線である。この通信線１７１上で、CKDディスク装置用の通信プロトコルを用いた通信が行われる。
【００４２】
なお、FBAアクセス通信線１７０およびCKDアクセス通信線１７１は、メタルケーブルを用いたパラレルチャネルでも、あるいは、光ファイバ等を用いたシリアルチャネルでもよい。
【００４３】
次に、FBAディスク装置１５０の記録フォーマットであるFBAフォーマットと、FBAディスク装置１５０を用いてエミュレートされる論理CKDディスク装置の記録フォーマットであるCKDフォーマットとの関係について説明する。
【００４４】
図２（ａ）に示すように、論理CKDディスク装置の記憶領域は、固定長の複数のCKDトラックで構成される。各CKDトラックは１個のホームアドレス（HA）５１０と１個以上のレコード５００とで構成される。HA５１０は、各CKDトラックの先頭に位置する最初のフィールドである。
【００４５】
各レコード５００は１個以上のフィールド、すなわちカウント部５０１と、データ部５０２と、さらに場合によってはデータ部の前にキー部（図示せず）とが存在する。カウント部５０１は、固定長のフィールドで、そのレコード５００のアドレスや後続するフィールド（上記のデータ部５０２とキー部）の長さなどが格納される。各レコード５００は、可変長であること、つまりデータ部５０２の長さがレコード５００毎に異なっていてもよいことが許されている。このため、カウント部５０１に、そのレコードのデータ部５０２およびキー部の長さが格納され、このカウント部５０１を見れば、そのレコード５００の各フィールドの長さが判るようになっている。レコード５００のアドレスは、シリンダ番号とヘッド番号とレコード番号の組、すなわちトラック先頭から付与されたシーケンシャルな番号の組みで示される。
【００４６】
一方、図３に示すように、FBAディスク装置１５０の記憶領域は、複数のFBAトラックで構成される。各FBAトラックは、あらかじめ定められた固定長の領域であるブロック６００で構成されており、各ブロック６００は、FBAディスク装置１５０内で一意に番号付けされている。したがって、FBAディスク装置１５０のある領域にアクセスする際には、その領域の先頭ブロック６００の番号と、それに後続するブロック６００の個数とを指定すればよい。
【００４７】
さて、本実施形態では、このようなFBAディスク装置１５０で論理CKDディスク装置をエミュレートする。このために、論理CKDディスク装置上の各CKDトラックに、FBAフォーマット上のブロック６００をCKDトラック容量分割り当て、この割り当てたブロック６００それぞれに、対応するCKDトラックの内容を記憶する。
【００４８】
この割り当ては次のように行う。
【００４９】
まず、図２（ｂ）に示すように、CKDトラックを固定長のブロック６００の大きさと等しい領域に分割し、番号０で示される先頭のブロック６００に、シリンダ番号０とヘッド番号０とで示される先頭CKDトラックの先頭領域を割り当てる。以降、後続するブロック６００にCKDトラック上の後続する領域を割り当てていき、先頭のCKDトラックの全領域が割り当てられると、後続するブロック６００には次トラック、すなわちシリンダ番号０とヘッド番号１とで示されるCKDトラックの先頭領域を割り当てる。以下、同様にして、各CKDトラックの全領域を各ブロック６００に対応付ける。
【００５０】
この場合、各CKDトラックの長さは、論理CKDディスク装置のタイプによって固定的に定めらるので、以下の数式を用いれば、トラックアドレスからそのCKDトラックを格納している先頭のブロック６００番号と、トラック当りのブロック数とを求めることができる。
【００５１】
0003753598.tif 000002
ここで＜x＞は、x以上の最小の整数である。例えば、ブロック６００の容量を２０４８バイト、CKDトラックの容量を５２キロバイト、そして、ヘッド数を１５とすると、トラック当たりのブロック数は、＜25.39…＞であるから２６となる。また、シリンダ番号０とヘッド番号１とで示されるCKDトラックの先頭ブロック番号は２６となり、シリンダ番号１００とヘッド番号５とで示されるCKDトラックの先頭ブロック番号は３９１３０となる。
【００５２】
以下では、１つのCKDトラックが割り当てられたブロック６００の組をブロックグループと呼ぶ。
【００５３】
次に、メインフレームホスト１００の主記憶１０３上のディスクキャッシュ領域１０７、キャッシュ管理情報１０８および記憶装置管理情報１０９について説明する。
【００５４】
まず、記憶装置管理情報１０９について説明する。
【００５５】
記憶装置管理情報１０９は、FBAディスク装置１５０と論理CKDディスク装置との対応等を示す情報を保持する。具体的には、各論理CKDディスク装置について、当該論理CKDディスク装置に割り当てられているFBAディスク装置１５０の番号と容量、当該CKDディスク装置の機器種別、トラック長、シリンダ数およびヘッド数等の情報を格納する。逆に、各FBAディスク装置１５０について、当該FBAディスク装置１５０に割り当てている論理CKDディスク装置の番号を格納する。なお、論理CKDディスク装置が割り当てられていないFBAディスク装置１５０のエントリには、未割当を示す情報が格納される。
【００５６】
前述したように、このような記憶装置管理情報１０９に基づいて、CKDコマンド処理部１２２は、FBAディスク装置１５０を論理CKDディスク装置としてエミュレートする。
【００５７】
次に、ディスクキャッシュ１０７について説明する。
【００５８】
ディスクキャッシュ１０７には、FBAディスク装置１５０からリードしたデータや、FBAディスク装置１５０へのライトデータ等を一時的に格納する。
【００５９】
図４に、ディスクキャッシュ１０７の構成例を示す。
【００６０】
図示した例では、ディスクキャッシュ１０７は、セグメント２００と呼ばれる固定長の小領域に等分割される。１つのセグメント２００は、１ブロックグループ（CKDトラック）を格納する。
【００６１】
次に、キャッシュ管理情報１０８について説明する。
【００６２】
キャッシュ管理情報１０８は、ディスクキャッシュ１０７を管理するために用いる情報で、各ブロックグループへのセグメント２００割り当て状態等の管理情報を格納する。
【００６３】
図５にキャッシュ管理情報１０８に含まれるキャッシュ割り当て情報３００を、そして、図６にキャッシュ管理情報１０８に含まれるセグメント管理情報４１０を示す。
【００６４】
図５において、キャッシュ割り当て情報３００は、FBAディスク装置１５０の各ブロックグループに対してセグメント２００を割り当て済みかを示す、全ブロックグループ数分のセグメント管理情報ポインタ３０１からなる。セグメント２００未割当てのブロックグループのセグメント管理情報ポインタ３０１には、NULL値が設定され、セグメント２００割り当て済みのブロックグループのセグメント管理情報ポインタ３０１には、当該セグメント２００の、後述するセグメント管理情報４１０の位置をポイントする。
【００６５】
有効セグメント管理情報キューポインタ３０２、空きセグメント管理情報キューポインタ３０３および常駐セグメント管理情報キューポインタ３０４は、それぞれのキューのルートポインタである。ここで、有効セグメント管理情報キューは、ブロックグループに割り当て済みのセグメント管理情報４１０をセグメント管理情報４１０中のポインタにより順次ポイントすることで構成されるキューであり、空きセグメント管理情報キューは、ブロックグループに未割り当てのセグメント管理情報４１０をセグメント管理情報４１０中のポインタにより順次ポイントすることで構成されるキューである。また、常駐セグメント管理情報キューは、ブロックグループに割り当て済みで且つ当該ブロックグループが常駐指定されているセグメント管理情報４１０を、セグメント管理情報４１０中のポインタにより順次ポイントすることで構成されるキューである。
【００６６】
キャッシュ常駐情報３０５は、各ブロックグループについてキャッシュ常駐を指示されているか否かを示す情報である。ここで、キャッシュ常駐とは、所定期間あるいはキャッシュ常駐情報３０５で指定される期間、ディスクキャッシュ１０７に保持されることを意味する。なお、キャッシュ常駐情報３０５は、各ブロックグループつまり各CKDトラック毎に、指示有無を示すフラグとしてもよい。あるいは、キャッシュ常駐を指示されている範囲毎に、そのブロックグループに割り当てられているCKDトラックの先頭トラックアドレスとトラック数を示すものとしてもよい。本実施形態では、キャッシュ常駐情報３０５は、CPU１０１上で動作するアプリケーションプロセスからのチャネルコマンド等を用いた常駐指示や、サービスプロセッサからの常駐指示などに従って、記憶制御プロセッサ１０２が設定する。この常駐指示では、常駐の対象とするブロックグループの範囲に対応するCKDトラックの範囲を、論理CKDディスク装置番号と対象範囲を示す先頭CKDトラックアドレスおよびトラック数等とにより、常駐範囲として指定する。なお、常駐範囲の解除も、CPU１０１上で動作するアプリケーションプロセスからのチャネルコマンド等を用いた常駐指示や、サービスプロセッサからの常駐指示などに従って、記憶制御プロセッサ１０２がキャッシュ常駐情報３０５を変更することにより行う。
【００６７】
図６において、セグメント管理情報４１０は、ディスクキャッシュ１０７の各セグメント２００に対応して、それぞれ設けられる。セグメント管理情報４１０中の割当てブロックグループ４００は、対応するセグメント２００を割当てたブロックグループに割り当てらているCKDトラックのCKDディスク装置番号および当該ディスク装置内アドレスを格納する。セグメントポインタ４０１は、対応するセグメント２００のディスクキャッシュ１０７内アドレスを格納する。バリッドフラグ４０２は、当該セグメント２００に格納しているデータが有効か否かを示す。FBAディスク装置１５０からリードしたブロックグループを当該セグメント２００に格納したときなどに、このバリッドフラグ４０２をオンに設定し、当該セグメント２００のキャッシュ割り当てを解除するときにオフに設定する。未反映フラグ４０３は、当該セグメント２００に格納しているブロックグループに対して行った変更（ライト）を実行中であること、あるいは、当該変更が障害等の何らかの理由によりFBAディスク装置１５０に未反映であることを示す。セグメントキューポインタ４０４は、実際には、有効セグメント管理情報キューポインタ、空きセグメント管理情報キューポインタおよび常駐セグメント管理情報キューポインタよりなり、前述した有効セグメント管理情報キューや空きセグメント管理情報キューなどを構成するため、各キュー中で次に位置するセグメント管理情報４１０の位置を示すポインタである。常駐フラグ４０５は、そのセグメント２００に対して常駐指示がなされているか否かを表す。
【００６８】
さて、以上のような、ディスクキャッシュ１０７とキャッシュ管理情報１０８を用い、無効化処理部１２９は、各セグメント管理情報４１０を監視する。そして、常駐フラグ４０５で常駐が指示されているセグメント管理情報４１０に対応するセグメント２００へのライトに対し、ライトデータをディスク装置に書き込んだ後も、所定期間あるいはキャッシュ常駐情報３０５で指定される期間、当該データをディスクキャッシュ１０７から破棄せずに常駐させる。一方、常駐フラグ４０５で常駐が指示されていないセグメント管理情報４１０に対応するセグメント２００へのライトに対しては、ライトデータをディスク装置に書き込んだ後、LRU方式など周知の方法で当該データのキャッシュ滞留期間を制御する。
【００６９】
次に、このような構成におけるFBAディスク装置１５０またはFBAディスク装置１５０に対応する論理CKDディスク装置と、CKDディスク装置１５１へのアクセス動作について説明する。
【００７０】
なお、以下では、CKDディスク装置１５１やFBAディスク装置１５０がエミュレートする論理CKDディスクのアクセスインタフェースのコマンドがCCWであり、FBAディスク装置１５０のアクセスインタフェースのコマンドがSCSIコマンドであるとして説明する。
【００７１】
また、以下では、説明の明瞭化のため、メインフレームホスト１００上のホストプログラムのFBAディスク装置１５０に対応する論理CKDディスク装置へのアクセス単位をCKDトラックとし、オープン系ホスト１６０のFBAディスク装置１５０へのアクセス単位をブロックグループとした場合について説明する。
【００７２】
まず、メインフレームホスト１００上のホストプログラムが、CKDディスク装置１５１へアクセスする場合、CPU１０１から直接CKDデータアクセス部１０５を介してCKDディスク装置１５１にリード要求のCCWが送られ、CKDフォーマットデータへのアクセスが行われる。すなわち、リードアクセスの場合はCKDディスク装置１５１からCKDフォーマットデータを読み出してアクセス要求元に転送し、ライトの場合はアクセス要求元から受け取ったCKDフォーマットデータのCKDディスク装置１５１へ書込む。
【００７３】
次に、メインフレームホスト１００上のホストプログラムがFBAディスク装置１５０によってエミュレートされる論理CKDディスク装置へアクセスする場合、記憶制御プロセッサ１０２のCKDコマンド処理部１２２が、CPU１０１からリード/ライト要求のCCWを受領する。これを受領した、CKDコマンド処理部１２２は、図７に示す処理を行う。
【００７４】
すなわち、まず、ステップ８０１で、CPU１０１から受領したリード/ライト要求のCCWに対して、アクセス対象CKDトラックが割り当てられているFBAディスク装置１５０上のブロックグループのアドレスを算出する。具体的には、アクセス位置として指定された論理CKDディスク装置番号と記憶装置管理情報１０９により、論理CKDディスク装置に対応するFBAディスク装置１５０上の先頭位置を求める。そして、これを基準とし、アクセス位置として指定されたCKDトラックサイズとCKDトラック番号とにより、前述した（式２）に従いアクセス対象CKDトラックが割り当てられているブロックグループを求める。以下、アクセス対象CKDトラックが割り当てられているブロックグループをアクセス対象ブロックグループと呼ぶこととする。
【００７５】
ステップ８０２では、アクセスコマンド種別を判定する。リードコマンドであるならばステップ８０３へ移行し、ライトコマンドであるならステップ８２０へ移行する。
【００７６】
ステップ８０３では、アクセス対象ブロックグループに対してセグメント２００が割り当てられているか否かを、キャッシュ管理情報１０８を参照してチェックする。そして、未割り当ての場合はステップ８０４へ移行し、セグメント２００を割り当てる。セグメント割り当ては、空きセグメント管理情報キューに接続しているセグメント管理情報４１０を１つ選んで、有効セグメント管理情報キューへ移し、キャッシュ割当情報３００のセグメント管理情報ポインタ３０１に、当該セグメント管理情報４１０のアドレスを登録することにより行う。
【００７７】
ステップ８０５では、キャッシュ管理情報１０８よりアクセス対象ブロックグループが常駐指定範囲であるか否かをチェックする。常駐指定範囲内であるならば、ステップ８０６へ移行して、アクセス対象ブロックグループに割り当てたセグメント管理情報４１０の常駐フラグ４０５をONにし、このセグメント管理情報４１０を常駐セグメント管理情報キューに接続する。
【００７８】
ステップ８０７では、アクセス対象ブロックグループに割り当てたセグメント２００のセグメント管理情報３０１内のバリッドフラグ４０２がONであるか否かをチェックし、当該セグメント２００内にアクセス対象ブロックグループが格納されているか否かを判定する。格納されている場合をキャッシュヒット状態、格納されていない状態をキャッシュミス状態と呼ぶこととする。キャッシュミス状態の場合は、ステップ８０８に移行して、アクセス対象ブロックグループをリードするリード要求のSCSIコマンドを、FBAディスク装置１５０に発行する。これにより、当該アクセス対象ブロックグループをFBAディスク装置１５０から読み出して、アクセス対象ブロックグループに割り当てたセグメント２００へ格納する。そして、このセグメント２００のセグメント管理情報３０１のバリッドフラグ４０２をONにする。
【００７９】
ステップ８０９では、当該セグメント２００に格納されているデータをCPU１０１がデータ領域として使用している主記憶１０３上の領域に転送する。
【００８０】
ステップ８１０では、CPU１０１から要求された入出力処理の完了をCPU１０１に報告する。なお、CPU１０１に対する報告は、CPU１０１へ完了を示す割り込みを発行することで行う。
【００８１】
一方、ステップ８０２でライト要求と判定された場合、まず、ステップ８２０〜ステップ８２４の処理フローを行う。ステップ８２０〜ステップ８２３は、リード処理のステップ８０３〜ステップ８０６と同じである。
【００８２】
ステップ８２４では、アクセス対象ブロックグループに割り当てられたセグメント２００に対して、ライトデータを転送し格納して、未反映フラグ４０３とバリッドフラグ４０２をONにする。ステップ８２５では、当該セグメント２００に格納されたライトデータをアクセス対象ブロックグループへライトするライト要求のSCSIコマンドをFBAディスク装置１５０に発行する。そして、ライトデータの書き込みが完了すると、当該セグメント管理情報４１０の未反映フラグ４０３をOFFにする。最後に、ステップ８１０で、CPU１０１から要求された入出力処理の完了をCPU１０１に報告する。
【００８３】
次に、オープン系ホスト１６０がFBAディスク装置１５０によりエミュレートされる論理FBAディスク装置にアクセスする場合、FBAアクセス受信部１０６は、オープン系ホスト１６０からリード/ライトアクセス要求のSCSIコマンドを受信し、これを記憶制御プロセッサ１００のFBAコマンド処理部１２３に渡す。これを受領したFBAコマンド処理部１２３は、図８に示す処理を行う。
【００８４】
すなわち、まず、ステップ９０１では、SCSIコマンドが指定するブロック番号からFBAディスク装置１５０のアクセス対象ブロックグループを求める。本実施形態では、FBAディスク装置１５０によりエミュレートされる論理FBAディスク装置のあるブロック番号のブロックは、FBAディスク装置１５０の同ブロック番号のブロックにマッピングするものとする。この場合、SCSIコマンドが指定するブロック番号から、直接、FBAディスク装置１５０のアクセス対象ブロックグループが求まる。なお、ステップ９０２〜ステップ９０８は、第７図のステップ８０２〜ステップ８０８と同じなので、説明は省略する。
【００８５】
ステップ９０９では、セグメント２００に格納されている、あるいは、ステップ９０８でセグメント２００に格納したアクセス対象ブロックグループのデータを、オープン系ホストへ転送する。
【００８６】
ステップ９１０では、オープン系ホスト１６０に対して要求入出力処理の完了を報告する。報告は、FBAデータアクセス受信部１０６を介して行われる。
【００８７】
ステップ９２０〜ステップ９２５は、第７図のステップ８２０〜ステップ８２５と同じなので、説明は省略する。
【００８８】
以下、このような計算機システムにおいて、メインフレームホスト１００からオープン系ホスト１６０にCKDディスク装置１５１のデータを転送する動作について説明する。
【００８９】
この転送は、メインフレームホスト１００のCPU１０１が転送データ生成処理部１２１を用いてその結果をオープン系ホスト１６０に通知し、通知を受けたオープン系ホスト１６０のCPU120が、データ転送処理を行うことによりなされる。
【００９０】
まず、転送データ生成処理部１２１での処理について説明する。
【００９１】
なお、転送データ生成処理部１２１での処理の前提として、前述した常駐指示により、FBAディスク装置１５０によってエミュレートされる論理CKDディスク装置の全体、あるいは、後述する中間データを格納するのに使うCKDトラックの範囲を、常駐範囲として、あらかじめ指定することにより、これに対応するブロックグループの常駐を設定しておく。
【００９２】
転送データ生成処理部１２１は、図９に示すように、まず、ステップ７０１で、転送対象となるデータが格納されたCKDディスク装置１５１から転送対象データを読み出して、主記憶１０３に格納する。このとき、転送データ生成処理部１２１は、リード要求のCCWを発行し、CKDアクセス部１０５を介してCKDディスク装置１５１からCKDフォーマットの対象データを読み出す。
【００９３】
ステップ７０２では、主記憶１０３に読みこんだCKDフォーマットのデータ１３０を元に、CKDフォーマットの中間データを生成する。中間データは、CKDフォーマットのデータ１３０のレコード部５００を汎用形式に変換したものである。このような変換が必要ない場合には、読みこんだCKDフォーマットのデータ１３０をそのまま中間データとしてもよい。
【００９４】
ステップ７０３では、FBAディスク装置１５０によってエミュレートされる論理CKDディスク装置の常駐指示で指定された常駐範囲中のCKDトラックへの、生成した中間データのライト要求のCCWを発行する。これを受けて、CKDコマンド処理部１２２は、FBAディスク装置１５０によってエミュレートされる論理CKDディスク装置にCKDフォーマットの中間データを書込む。
【００９５】
ステップ７０４では、対象となるデータ全てについて以上の処理が完了したかをチェックして未完の場合はステップ７０１から処理を繰り返す。全領域に対してステップ７０１〜７０３の処理が完了した場合はステップ７０５へ進む。
【００９６】
ステップ７０５では、転送データ生成完了をオープン系ホスト１６０へ通知する。この通知には、中間データを格納した論理CKDディスク装置番号やトラックサイズ、その他のオープン系ホスト１６で中間データの論理CKDディスク装置内アドレスを特定するための情報を含める。ここでは、論理CKDディスク装置内アドレスを特定可能な情報としては、中間データを格納する先頭トラック番号とトラック数を用いる。
【００９７】
次に、このような通知を受けたオープン系ホスト１６０では、データ転送処理部１２４が以下の処理を行う。
【００９８】
すなわち、データ転送処理部１２４は、図１０に示すように、まず、ステップ１００１で、メインフレームホスト１００から送られてきた、中間データを格納する論理CKDディスク装置番号および論理CKDディスク装置内での中間データ位置特定情報を元に、当該中間データの、FBAディスク装置１５０によってエミュレートされる論理FBAディスク装置でのアドレスを算出する。
【００９９】
具体的には、たとえば、論理CKDディスク装置のFBAディスク装置１５０上の先頭位置を求める。そして、これを基準としてトラックサイズと先頭トラック番号により、前述した（式２）に従って中間データが記憶されているFBAディスク装置１５０上の先頭ブロックのアドレスを求める。また、トラック数より、前述した（式１）に従って中間データが記憶されているFBAディスク装置１５０上でのブロック数を求める。本実施形態では、FBAディスク装置１５０によりエミュレートされる論理FBAディスク装置のあるブロック番号のブロックは、FBAディスク装置１５０の同ブロック番号のブロックにマッピングするものとしているので、FBAディスク装置１５０のアドレスが、FBAディスク装置１５０によってエミュレートされる論理FBAディスク装置でのアドレスとなる。なお、以上のような中間データを格納する論理CKDディスク装置番号、および、論理CKDディスク装置内での中間データ位置特定情報を元に、FBAディスク装置１５０によってエミュレートされる論理FBAディスク装置での中間データのアドレスを算出する上で必要となるその他の情報は、あらかじめ、オープン系ホストに設定しておくか、メインフレームホストからオープン系ホストに、論理CKDディスク装置番号とトラックサイズ、および、その他の論理CKDディスク装置内アドレスを特定するための情報と共に通知するようにする。
【０１００】
ステップ１００２では、求めた論理FBAディスク装置でのアドレスを対象とするリード要求のSCSIコマンドをメインフレームホスト１００に発行する。このリード要求は、メインフレームホスト１００のFBAデータアクセス部１０６を介して記憶制御プロセッサ１０２に渡され、その結果、メインフレームホスト１００より中間データがデータ転送処理部１２４に転送される。
【０１０１】
次に、ステップ１００３では、フォーマット変換部１２５により、転送された中間データに含まれるカウント部５０１を検索して、データ部５０２を特定し、データ部５０２のみを切り出す。このとき、オープン系ホスト１６０でデータ部５０２を利用するために必要となる漢字コードの変換などを同時に実行してもよい。そして、ステップ１００４では、ステップ１００３で切り出しコード変換を施したデータをFBAディスク装置１５２へライトする。
【０１０２】
ステップ１００５では、中間データを全て処理したかを判定し、完了の場合は処理を終了し、未完の場合はステップ１００２へ戻る。
【０１０３】
さて、ここで、以上のような転送処理の流れをまとめると、次のようになる。
【０１０４】
すなわち、まず、CPU１０１の転送データ生成処理部１２１により、CKDディスク装置１５１から対象データを読み上げ、中間データ１３１を生成して、これを、FBAディスク装置１５０によりエミュレートされる論理CKDディスク装置上の、あらかじめ常駐が設定された範囲に書き込む。この論理CKDディスク装置への書き込みには、記憶制御プロセッサ１０２のCKDコマンド処理部１２２が行う。このとき、CKDコマンド処理部１２２は、あらかじめなされた常駐指示による設定に従い、当該中間データをディスクキャッシュ１０７に常駐させる。中間データ１３１を生成したら、転送データ生成処理部１２１は、生成完了をオープン系ホスト１６０へ通知する。オープン系ホスト１６０では、転送データ生成処理部１２１からの通知を受けて、データ転送処理部１２４が起動する。データ転送処理部１２４は、メインフレームホスト１００に対して、FBAディスク装置１５０がエミュレートする論理FBAディスク装置に対する中間データのリード要求を行う。このリード要求は、FBAデータアクセス受信部１０６により受信され、記憶制御プロセッサ１０２へ渡される。記憶制御プロセッサ１０２では、FBAコマンド処理部１２３によりリード処理が行われ、ディスクキャッシュ１０７に常駐しているデータがディスクキャッシュ１０７より読み出されて、オープン系ホスト１６０へ転送される。
【０１０５】
以上、本発明の第１実施形態について説明した。
【０１０６】
以下、本発明の第２の実施形態について説明する。
【０１０７】
本実施形態は、上記の第１実施形態ではオープン系ホスト１６０で行っていた、中間データ１３１からのデータ部５０２の切り出しや漢字コード変換を、メインフレームホスト１００側で行うようにしたものである。
【０１０８】
すなわち、図１１に示すように、本実施形態では、まず、上記の第１実施形態と同様に、CPU１０１の転送データ作成処理部１１１０により、中間データ１３１を作成して論理CKDディスク装置へ書き込む。そして、記憶制御プロセッサ１０２のCKDコマンド処理部１２２により、中間データ１３１をディスクキャッシュ１０７へ常駐させる。その後、記憶制御プロセッサ１０２に設けたフォーマット処理部１１２０により、CKDフォーマットで格納されている中間データ１３１からデータ部５０２を切り出し、かつ漢字コード変換などを施して、変換済みデータ１１３０を生成する。それから、別途、ディスクキャッシュ１０７上に常駐させる。この処理が完了したならば、フォーマット処理部１１２０は、変換済みデータ１１３０のアドレスをオープン系ホスト１６０へ通知する。オープン系ホスト１６０では、データ転送処理１２４により、変換済データをリードする。
【０１０９】
より具体的には、本実施形態では、転送データ作成処理部１１１０で、図１２に示す処理を行う。
【０１１０】
すなわち、ステップ１２０１〜１２０４を、上記の第１実施形態に係る図９のステップ７０１〜７０４の処理と同様に行った後、ステップ１２０５で、中間データ生成完了を記憶制御プロセッサ１０２へ通知し、フォーマット変換処理部１１２０を起動させる。この完了通知には、中間データ１３１を格納した論理CKDディスク装置番号やトラックサイズ、および、中間データを特定可能な情報が付加される。
【０１１１】
また、記憶制御プロセッサ１０２に設けたフォーマット処理部１１２０により、図１３に示す処理を行う。
【０１１２】
すなわち、まず、ステップ１３０１で、転送データ作成処理部１１１０から送られてきた中間データ位置情報を元に、対象論理CKDディスク装置とアドレスを算出する。そして、ステップ１３０２で、対象となる中間データ１３１が、ディスクキャッシュ１０７に存在しない場合には、これをディスクキャッシュ１０７へリードする。
【０１１３】
次に、ステップ１３０３で、ディスクキャッシュ１０７上の中間データ１３１に対して、カウント部５０１を検索してデータ部５０２を特定し、データ部５０２のみを切り出す。このとき、漢字コードの変換などを同時に実行してもよい。
【０１１４】
そして、ステップ１３０４で、ステップ１３０３で切り出しコード変換等を施した変換済み中間データ１１３０を、論理CKDディスク装置に割り当てられていない別のFBAディスク装置１５０ｂへライトする。このとき、当該FBAディスク装置１５０ｂの全体あるいは当該データ１１３０を格納する領域分を、ディスクキャッシュ１０７へ常駐させる。なお、中間データ１３１をディスクキャッシュ１０７から読み出してフォーマット変換したものを、直接、FBAディスク装置１５０bに割り当てられたディスクキャッシュ１０７へ格納してもよい。
【０１１５】
次に、ステップ１３０５では、中間データを全て処理したかを判定し、完了の場合はステップ１３０６へ、未完の場合はステップ１３０２へ、それぞれ移行する。
【０１１６】
ステップ１３０６では、転送データ作成処理部１１１０に、変換済み中間データ１１３０の生成完了をオープン系ホスト１６０へ通知させ、データ転送処理部１１６０を起動させる。この完了通知には、変換済み中間データ１１３０を格納した論理FBAディスク装置１５０ｂの番号と先頭ブロック番号およびサイズとが付加される。
【０１１７】
オープン系ホスト１６０のデータ転送処理部１１６０では以下の処理を行う。
【０１１８】
すなわち、図１４に示すように、まず、ステップ１４０１で、転送データ作成処理部１１１０より通知されたFBAディスク装置１５０ｂ上の変換済みデータのアドレスに従い、変換済みデータ１１３０へのリードをメインフレームホスト１００に発行する。これにより、変換済みデータ１１３０をリードする。このリード要求は、メインフレームホスト１００のFBAデータアクセス部１０６を介して記憶制御プロセッサ１０２に渡され、処理されて、その結果、変換済みデータ１１３０がオープン系ホスト１６０に転送される。ステップ１４０２では、リードしたデータをオープン系ホスト１６０に接続したFBAディスク装置１５２へライトする。そして、ステップ１４０３では、中間データを全て処理したかを判定し、完了の場合は本処理を終了、未完の場合はステップ１４０１へ移行する。
【０１１９】
以上、第２実施形態について説明した。
【０１２０】
上記の各実施形態によれば、CKDディスク装置１５１に格納されている転送対象データを、FBAディスク装置１５０によりエミュレートされる論理CKDディスク装置へのライトにより、ディスクキャッシュに存在せしめ、オープン系ホスト１６０からの、FBAディスク装置１５０によりエミュレートされる論理FBAディスク装置へのリードにより、転送対象データを、ディスクキャッシュからオープン系ホスト１６０に転送する。
【０１２１】
したがって、実際の物理的なディスク装置への入出力はCKDディスク装置１５１からの読み出しの１回で済む。よって、従来に比べ、高速な転送が可能となる。また、このような転送に際して、常駐制御を含めたディスクキャッシュ制御およびFBAデータアクセスインタフェースからのFBAアクセス要求を受信/解析/処理するのは、記憶制御プロセッサであり、このような転送に際して、CPUで動作するアプリケーションおよびOSは単に、FBAディスク装置１５０によりエミュレートされる論理CKDディスク装置への転送対象データのライトを行っているにすぎない。したがって、アプリケーションおよびOSに特段の変更を加える必要はない。
【０１２２】
なお、本発明は上記の実施形態に限定されず、その要旨の範囲内で数々の変形が可能である。
【０１２３】
例えば、上記の各実施形態では、メインフレームホスト１００からオープン系ホスト１６０のデータを転送する場合について説明したが、この転送と逆の手順により、本実施形態に係るディスクキャッシュ１０７を利用して、オープン系ホスト１６０からメインフレームホスト１００にデータを転送するようにしてもよい。
【０１２４】
すなわち、例えば、オープン系ホスト１６０は、FBAディスク装置１５０によりエミュレートされる論理FBAディスク装置の、あらかじめ通知された常駐が設定されている範囲に、転送データをライトする。
【０１２５】
このとき、FBAコマンド処理部１２３は、予め発行された常駐指示による設定に従い、当該中間データをディスクキャッシュ１０７に常駐させる。次に、メインフレームホスト１００の転送データ作成処理部１２１は、FBAディスク装置１５０がエミュレートする論理CKDディスク装置からの転送データのリード要求を発行して、CKDコマンド処理１２２によりディスクキャッシュ上に常駐している転送データを読み出して、CKDフォーマットに変換し、CKDディスク装置１５１にライトする。ここで、常駐領域や転送データ格納領域の、論理FBAディスク装置や論理CKDディスク装置上での位置の認識に必要な情報は、例えばオープン系ホスト１６０とメインフレームホスト１００との間で適宜交換することにより、それぞれ得られるようにする。
【０１２６】
また、上記の各実施形態では、中間データのアクセス単位をトラックとしたが、これはレコードとしてもよい。ただし、この場合、CKDコマンド処理部１２２、FBAコマンド処理部１２３等において、対象レコード位置を算出し、個々のレコードに対して、ライト、リードの処理を行う必要がある。また、レコードが可変長であるときには、対象レコード位置は、カウント部に従って算出するようにする。また、この場合、レコードのライトに先立ち、そのレコードを含むブロックグループをディスクキャッシュに読み込む必要がある。
【０１２７】
また、上記の各実施形態では、転送の対象とするデータがCKDディスク装置１５１に保持されている場合を例にとり説明したが、対象データはFBAディスク装置１５０によりエミュレートされる論理CKDディスク装置上のものであってもよい。この場合、転送データ作成処理部１２１は、CKDディスク装置１５１に代えて、FBAディスク装置１５０によりエミュレートされる論理CKDディスク装置より対象データをリードする。また、FBAディスク装置１５０は、RAIDによりエミュレートされた論理FBAディスク装置であってもよい。また、この場合、RAIDによる論理FBAディスク装置のエミュレート、すなわち、論理FBAディスク装置とRAIDを構成する物理FBAディスク装置とのマッピング管理や、個々の物理FBAディスク装置へのアクセス制御などは、記憶制御情報１０７として記憶制御プロセッサが行ってもよいし、RAIDへ搭載した制御プロセッサが行ってもよい。
【０１２８】
また、上記の各実施形態において、メインフレームホスト１００からオープン系ホスト１６０に通知する、中間データの論理CKDディスク装置内アドレスを特定するための情報としては、特開平9-258908号公報に記載されているようなデータセット名を用いてもよい。この場合、オープン系ホスト１６０で、前記公報に記載のように設けられる当該論理CKDディスク装置のデータセット管理情報を参照して、当該データセットの論理CKDディスク装置上のアドレスおよびサイズを求め、このアドレスをFBAアクセス用のアドレスに変換する。
【０１２９】
また、上記の各実施形態では、ディスクキャッシュ１０７へのライトとFBAディスク装置１５０への書き込みとを同期させて行う、いわゆるストアスルー方式を適用した場合を例にとり説明した。しかし、本発明は、ディスクキャッシュ１０７へのライトとFBAディスク装置１５０への書き込みとを非同期で行う、いわゆるストアバック方式に対しても適用できる。この場合、論理CKDディスク装置あるいは論理FBAディスク装置へのライトが常駐指定されている範囲に対するものであるときは、周知のストアバック方式と同様の方法で、例えば所定のイベント発生によりライトデータをこれらのディスク装置をエミュレートするFBAディスク装置へ書き込んだ後も、所定期間あるいはキャッシュ常駐情報３０５で指定される期間、当該データをディスクキャッシュ１０７から破棄せずに常駐させるようにすればよい。なお、ストアバック方式をとる場合、未反映データが消失しないようにディスクキャッシュ１０７を二重化したり、バッテリーによる不揮発化などの可用性向上を図るか、あるいは、未反映データを消失した場合に、これを検出できるよう、チェックコード等の付加したりすることが望ましい。
【０１３０】
また、上記の各実施形態では、FBAディスク装置１５０を設けていたが、FBAディスク装置１５０を用いてエミュレートする論理CKDディスク装置をオープン系ホスト１６０とのデータ転送にのみ用いる場合には、FBAディスク装置１５０を実際に設けずに、主記憶上の領域や別途設けたメモリの記憶領域のみを用いて、上記の各実施形態でFBAディスク装置１５０を用いてエミュレートしていた論理可変長記憶装置や論理固定長記憶装置を、エミュレートするようにしてもよい。
【０１３１】
【発明の効果】
以上のように、本発明によれば、それぞれ異なるフォーマットのデータを扱うホスト装置間でのデータ転送を、より高速に行うことができる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係る計算機システムの構成を示すブロック図である。
【図２】本発明で用いるCKDデータフォーマットを示す図である。
【図３】本発明で用いるFBAデータフォーマットを示す図である。
【図４】本発明の第１実施形態に係るディスクキャッシュの構成例を示す図である。
【図５】本発明の第１実施形態に係るキャッシュ割り当て情報の構成例を示す図である。
【図６】本発明の第１実施形態に係るセグメント管理情報の構成例を示す図である。
【図７】本発明の第１実施形態に係るCKDコマンド処理の処理手順を示したフロー図である。
【図８】本発明の第１実施形態に係るFBAコマンド処理の処理手順を示したフロー図である。
【図９】本発明の第１実施形態に係る転送データ生成処理の処理手順を示したフロー図である。
【図１０】本発明の第１実施形態に係るデータ転送処理の処理手順を示したフロー図である。
【図１１】本発明の第１実施形態に係る計算機システムの構成を示すブロック図である。
【図１２】本発明の第２実施形態に係る転送データ作成処理部の処理手順を示したフロー図である。
【図１３】本発明の第２実施形態に係るフォーマット処理部の処理手順を示したフロー図である。
【図１４】本発明の第２実施形態に係るデータ転送処理部の処理手順を示したフロー図である。
【符号の説明】
１００…メインフレームホスト
１０１…CPU
１０２…記憶制御プロセッサ
１０３…主記憶
１０４…FBAデータアクセス部
１０５…CKDデータアクセス部
１０６…FBAデータアクセス受信部
１０７…ディスクキャッシュ
１０８…キャッシュ管理情報
１０９…記憶制御管理情報
１２１、１１１０…転送データ作成部
１２２…CKDコマンド処理部
１２３…FBAコマンド処理部
１２４、１１６０…データ転送処理部
１２５…フォーマット変換部
１２９…無効化処理部
１４０…通信線
１５０…FBAディスク装置
１５１…CKDディスク装置
１６０…オープン系ホスト
１７０…FBAアクセス通信線
１１２０…フォーマット処理部
【図１】
0003753598.tif 000003
【図２】
0003753598.tif 000004
【図３】
0003753598.tif 000005
【図４】
0003753598.tif 000006
【図５】
0003753598.tif 000007
【図６】
0003753598.tif 000008
【図７】
0003753598.tif 000009
【図８】
0003753598.tif 000010
【図９】
0003753598.tif 000011
【図１０】
0003753598.tif 000012
【図１１】
0003753598.tif 000013
【図１２】
0003753598.tif 000014
【図１３】
0003753598.tif 000015
【図１４】
0003753598.tif 000016