(57)【特許請求の範囲】
【請求項１】
可変長データ形式に従ったインタフェースを有する第一の計算機と、前記第一の計算機とネットワークを介して接続される、固定長ブロック形式に従ったインタフェースを有する第二の計算機と、記録媒体上に固定長ブロック形式に従って記録されたデータを保持し、前記第一の計算機と可変長データ形式に従うインタフェースにより接続され、また、前記第二の計算機と固定長ブロック形式に従うインタフェースにより接続される記憶装置とを有する計算機システムにおける記憶装置のアクセス制御方法であって、
前記第一の計算機が、前記第二の計算機に、前記ネットワークを介して、前記第二の計算機がデータを格納した前記記憶装置の領域に関する、格納開始アドレスを示すＬＢＡとブロック数を要求するステップと、
前記第二の計算機が、前記第一の計算機に、前記ネットワークを介して、前記ＬＢＡと前記ブロック数を送信するステップと、
前記第一の計算機が、前記第二の計算機から受信した前記ＬＢＡと前記ブロック数から、前記可変長データ形式に従ったインタフェースでデータをアクセスする際に用いる形式であるところの、アクセスするブロックを特定する情報と転送長を計算するステップと、
前記第一の計算機が、前記アクセスするブロックを特定する情報と前記転送長と及び固定長ブロック形式のデータに対するアクセスであることを示す情報を含む可変長データ形式に従ったアクセスコマンドを生成し、前記生成したアクセスコマンドを前記可変長データ形式に従ったインタフェースにより前記第一の計算機から前記記憶装置に送信するステップと、
前記記憶装置が、受信したアクセスコマンドを解析し、前記受信したアクセスコマンドに前記固定長ブロック形式に従って記録されたデータに対するアクセスであることを示す情報が含まれるとき、前記アクセスするブロックを特定する情報と前記転送長を計算して求めた前記格納開始アドレスを示すＬＢＡと前記ブロック数に基づいて前記固定長ブロック形式に従って記録された前記データへのアクセスを行うことを特徴とする記憶装置のアクセス制御方法。
【請求項２】
前記固定長ブロック形式に従って記憶されたデータに対するアクセスであることを示す情報は、可変長データ形式に従ったデータに対するアクセスを行うためのコマンドから区別されたコマンドとして実現されることを特徴とする請求項１記載の記憶装置のアクセス制御方法。
【請求項３】
前記固定長ブロック形式に従って記録されたデータへのアクセスに伴う前記第一の計算機と前記記憶装置との間でのデータの転送が、ブロック毎に実施されることを特徴とする請求項１乃至２いずれかに記載の記憶装置のアクセス制御方法。
【請求項４】
可変長データ形式に従ったインタフェースを有する第一の計算機と、前記第一の計算機とネットワークを介して接続され、固定長ブロック形式に従ったインタフェースを有する第二の計算機と、記録媒体上に固定長ブロック形式に従って記録されたデータを保持し、前記第一の計算機と可変長データ形式に従うインタフェースにより接続され、また、前記第二の計算機と固定長ブロック形式に従うインタフェースにより接続される記憶装置とを有する計算機システムであって、
前記第一の計算機が、前記第二の計算機に、前記ネットワークを介して、前記第二の計算機がデータを格納した前記記憶装置の領域に関する、格納開始アドレスを示すＬＢＡとブロック数を要求する手段を有し、
前記第二の計算機が、前記第一の計算機に、前記ネットワークを介して、前記ＬＢＡと前記ブロック数を送信する手段を有し、
前記第一の計算機が、前記第二の計算機から受信した前記ＬＢＡと前記ブロック数から、前記可変長データ形式に従ったインタフェースでデータをアクセスする際に用いる形式であるところの、アクセスするブロックを特定する情報と転送長を計算する手段と、前記第一の計算機が、前記アクセスするブロックを特定する情報と前記転送長と及び固定長ブロック形式のデータに対するアクセスであることを示す情報を含む可変長データ形式に従ったアクセスコマンドを生成する手段と、及び、前記生成したアクセスコマンドを前記可変長データ形式に従ったインタフェースにより前記第一の計算機から前記記憶装置に送信する手段とを有し、
前記記憶装置が、受信したアクセスコマンドを解析し、前記受信したアクセスコマンドに前記固定長ブロック形式に従って記録されたデータに対するアクセスであることを示す情報が含まれるとき、前記アクセスするブロックを特定する情報と前記転送長を計算して求めた前記格納開始アドレスを示すＬＢＡと前記ブロック数に基づいて前記固定長ブロック形式に従って記録された前記データへのアクセスを行う手段とを有することを特徴とする計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システムに用いられる記憶装置に係り、特に、複数の種類のインタフェースでコンピュータに接続することのできる記憶装置に関する。
【０００２】
【従来の技術】
近年、いわゆるメインフレームと呼ばれる大型のコンピュータで従来行われてきた業務が、パーソナルコンピュータ（パソコン）やワークステーションなど、小型のコンピュータで行われるようになってきている。これに伴い、異なる種類のコンピュータやオペレーティングシステムを用い、メインフレームやパソコンあるいは、ワークステーションなどが混在するコンピュータシステムを構築することが行われている。
【０００３】
このようなコンピュータシステムで用いられるディスクサブシステムとしては、そのＩ／Ｏインタフェースとして、メインフレームで一般に用いられているカウントキーデータ形式（ＣＫＤ形式）のインタフェースと、パソコンやワークステーションなど小型のコンピュータで用いられている固定長ブロック形式のインタフェースの両者を有するディスクサブシステムが使用されることが多い。このようなディスクサブシステムは、例えば、特開平９−３２５９０５号公報に開示されている。ここに開示されたディスクサブシステムは、ＣＫＤ形式のインタフェースで接続するホストコンピュータに対しては、データをＣＫＤ形式に変換して転送を行う。また、固定長ブロック形式のインタフェースで接続するホストコンピュータに対しては、データを固定長ブロック形式に変換して転送する。このようにすることで、異なるＩ／Ｏインタフェースを使用するホストコンピュータ間で、データの共用を可能にしている。
【０００４】
【発明が解決しようとする課題】
上述した特開平９−３２５９０５号公報に開示されるディスクサブシステムでは、データは、ディスクサブシステムに固定長ブロック形式で格納される。このデータに対し、ＣＫＤ形式のインタフェースで接続するホストコンピュータがリードやライトを行う場合、ディスクサブシステムは、固定長ブロック形式のデータをＣＫＤ形式に変換して転送する。このため、以下の理由により転送の効率すなわち実効転送速度が低下する。第一の理由は、固定長ブロック形式からＣＫＤ形式への変換に処理時間が必要となるためである。第二の理由は、ＣＫＤ形式ではデータをレコード集合として扱うため、変換処理において固定長ブロック形式のデータをレコードに分割し、各レコードを判別する情報を付加し、結果として転送量を増やさねばならないためである。
【０００５】
本発明の目的は、ディスクサブシステムに固定長ブロック形式で格納されているデータに対し、ＣＫＤ形式のインタフェースで接続するホストコンピュータからのリード／ライトにおけるデータ転送を高速化し、ホスト間での高速なデータ共用を実現させることにある。
【０００６】
また、本発明の他の目的は、インタフェース形式の異なるホスト間での効率的なデータバックアップやリストアを実現することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明による記憶装置のアクセス制御方法は、可変長データ形式に従ったインタフェースを有する計算機と、記録媒体上に固定長ブロック形式に従って記録されたデータを保持し、カウントキーデータ形式に従うインタフェースにより計算機と接続される記憶装置とを有する計算機システムにおいて、計算機により、記録媒体上に記録されたデータの転送に必要なパラメータ、及び固定長ブロック形式のデータに対するアクセスであることを示す情報を含む可変長データ形式に従ったアクセスコマンドを生成する。アクセスコマンドは、可変長データ形式に従ったインタフェースにより計算機から記憶装置に転送される。記憶装置では、受信したアクセスコマンドを解析し、受信したアクセスコマンドが固定長ブロック形式に従って記録されたデータに対するアクセスであることを示す情報が含まれるとき、パラメータに基づいて固定長ブロック形式に従って記録されたデータへのアクセスを行うことを特徴とする。
【０００８】
また、本発明の他の観点によれば、可変長データ形式に従う第１のインタフェースと、固定長ブロック形式に従う第２のインタフェースと、第１又は第２のインタフェースのいずれかに接続された計算機により利用されるデータを格納する記憶装置ユニットと、第１のインタフェースを介して第１の計算機から送られてくるコマンドを解析する手段であって、第１の計算機から送られてきたコマンドが記憶装置ユニットに固定長ブロック形式に従って記憶されたデータを対象とするものか否かを判別する手段を有するコマンド解析手段と、判別手段により第１の計算機から送られてきたコマンドが固定長ブロック形式で記録されたデータを対象とするものであると判別されたとき、記憶装置ユニットから読み出される固定長ブロック形式で記録されたデータ、または、記憶装置ユニットに記憶すべき固定長ブロック形式のデータを第１のインタフェースに規定のプロトコルに従って第１の計算機との間で転送する転送手段とを有することを特徴とする記憶装置が提供される。
【０００９】
【発明の実施の形態】
＜第１の実施の形態＞
図１は本発明が適用された計算機システムの一実施形態における機能構成を示すブロック図である。
【００１０】
図に示すように、本実施形態の計算機システムは、ホストコンピュータ（以下、ホストと略す）１００、ホスト２００、ディスクサブシステム３００、及び磁気テープ装置３０００を有する。ホスト１００及び２００は、相互にネットワーク４００を介して接続されている。ホスト１００とディスクサブシステム３００との間は、Ｉ／Ｏバス５００を介して、また、ホスト２００とディスクサブシステム３００との間は、Ｉ／Ｏバス６００を介して接続されている。磁気テープ装置は、Ｉ／Ｏバス５５０を介してホスト１００に接続されている。
【００１１】
ホスト１００は、ディスクサブシステム３００などの外部記憶装置とのインタフェースとして、可変長データ形式のインタフェースを備え、いわゆるメインフレームと呼ばれるコンピュータである。
【００１２】
ホスト１００は、ＣＫＤインターフェース１１０、ネットワークインターフェース１２０、及びコマンド発行手段１６０を有する。ＣＫＤインタフェース１１０は、Ｉ／Ｏバス５００を介してディスクサブシステム３００と、Ｉ／Ｏバス５５０を介して磁気テープ装置３０００と接続される。コマンド発行手段１６は、ＣＫＤインタフェース１１０を介してディスクサブシステムに対する各種のコマンドを発行する。ネットワークインタフェース１２０は、ネットワーク４００に接続されており、ネットワーク４００を介してホスト２００との間で通信を行う際に使用される。
【００１３】
ホスト１００は、また、図示しない中央処理装置（ＣＰＵ）により実行されるプログラムであるオペレーティングシステム１３０、ミドルウェアプログラム１４０、及びアプリケーションプログラム１５０を有する。これらのプログラムは図示しない主記憶装置に格納されており、ＣＰＵがこれらプログラムを実行することにより各種の処理が行われる。
【００１４】
ホスト２００は、固定長インターフェース２１０と、ネットワークインターフェース２２０を有する。固定長インタフェース２１０は、Ｉ／Ｏバス６００を介してディスクサブシステム３００と接続されている。ネットワークインタフェース２２０は、ネットワーク４００に接続されており、ネットワーク４００を介してホスト１００との間で通信を行う際に使用される。
【００１５】
ホスト２００は、ホスト１００と同様に、図示しないＣＰＵにより実行されるプログラムであるオペレーティングシステム２３０、ミドルウェアプログラム２４０、及びアプリケーションプログラム２５０を有する。これらのプログラムは、図示しない主記憶装置格納される。
【００１６】
ホスト２００としては、いわゆるパーソナルコンピュータや、ワークステーションなどのオープン系のコンピュータが用いられる。
【００１７】
ホスト１００およびホスト２００は、ディスクユニット３６０に格納されているデータの配置や内容などについての情報を、ネットワーク４００を介して必要に応じてやり取りすることができる。
【００１８】
ディスクサブシステム３００は、ディスクユニット３１０、３６０、ＣＫＤインタフェース３２０、ＣＫＤインタフェースコマンド処理手段３３０、ＣＫＤ転送手段３４０、固定長ブロック転送手段３５０、固定長ブロックインタフェース３７０、及び固定長ブロックインタフェースコマンド処理手段３８０を有する。ＣＫＤインタフェース３２０は、Ｉ／Ｏバス５００を介してホスト１００のＣＫＤインタフェース１１０と接続される。固定長ブロックインタフェース３７０は、Ｉ／Ｏバス６００を介してホスト２００の固定長ブロックインタフェース２１０に接続される。ディスクサブシステム３００としては、例えば、複数のディスク装置を並列動作させるディスクアレイシステムが用いられる
磁気テープ装置３０００は、記録媒体として、磁気テープを用いた記憶装置であり、ディスクサブシステム３００に格納されているデータをバックアップするために使用される。
【００１９】
ＣＫＤインタフェース１１０、及びＣＫＤインタフェース３２０は、例えば、いわゆるメインフレームコンピュータなどに用いられているチャネルインタフェースに代表される、可変長のデータアクセスを行うカウントキーデータ形式（ＣＫＤ形式）に従ったインタフェースである。また、固定長ブロックインタフェース２１０、固定長ブロックインタフェース３７０は、固定長のデータアクセスを行う固定長ブロック形式に従ったインタフェースであり、ＳＣＳＩやファイバチャネル（ＦＣ）といったインタフェースを用いることができる。
【００２０】
固定長ブロック形式では、データは、記憶媒体上でブロックと呼ばれる、例えば、５１２バイトの固定長領域に格納される。各ブロックには、ブロック番号（ＬＢＡ）が割り当てられ、ブロック番号を用いて各ブロックを指定することができる。
【００２１】
ＣＫＤ形式では、データは、記憶媒体上でレコードと呼ばれる可変長の領域に格納される。ＣＫＤ形式では、シリンダ番号（ＣＣ）、ヘッド番号（ＨＨ）、レコード番号（Ｒ）を指定して、任意のレコードが指定される。以下では、シリンダ番号、ヘッド番号、レコード番号で表され、レコードを指定するためのアドレスをＣＣＨＨＲと記す。また、シリンダ番号とヘッド番号のみで表されるレコードの集合（トラック）を指定するためのアドレスをＣＣＨＨと記す。レコードは、カウント部（Ｃ部）、キー部（Ｋ部）、データ部（Ｄ部）の３つの部分を有する。Ｃ部は固定長であり、ＣＣＨＨＲと、Ｋ部およびＤ部のそれぞれの長さを保持する。Ｋ部およびＤ部は可変長である。
【００２２】
ホスト１００は、ＣＫＤインタフェース１１０により、ＣＫＤ形式に従ってデータをディスクサブシステム３００のディスクユニット３１０に格納する。ホスト１００は、ディスクユニット３１０に格納されたデータのリード／ライトを行うとき、ディスクサブシステム３００に対し、ＣＫＤインタフェースコマンドとして規定されている通常のコマンドを発行する。ディスクサブシステム３００は、ホスト１００から送られるコマンドを解釈し処理を行う。
【００２３】
ホスト１００によりディスクユニット３１０に格納されるデータは、論理的にＣＫＤ形式となっていればよい。したがって、ディスクユニット３１０が物理的には固定長ブロック形式のディスク装置であって、ディスクサブシステム３００がホスト１００により書き込まれるデータを物理的に固定長ブロック形式のデータにマッピングしてディスクユニット３１０に格納するようにしてもよい。
【００２４】
ホスト２００は、固定長ブロックインタフェース２１０により、固定長ブロック形式でデータをディスクサブシステム３００のディスクユニット３６０に格納する。ディスク３６０は、固定長ブロック形式のディスク装置であって、ディスクサブシステム３００は、ホスト２００のデータをディスクユニット３６０に固定長ブロック形式で格納する。
【００２５】
ホスト２００は、ディスクユニット３６０に格納されたデータへのリード／ライトする際、ディスクサブシステム３００に対し、固定長ブロックインタフェースとして規定されているコマンドを発行する。ディスクサブシステム３００は、固定長ブロックインタフェースコマンド処理手段３８０によりこのコマンドを解釈し処理を実行する。
【００２６】
ホスト２００によりディスクユニット３６０に格納されたデータは、ホスト１００からアクセスすることが可能である。
【００２７】
図２は、ホスト１００によるディスクサブシステムからデータを読み出す際に実施されるリード処理のフローチャートである。
【００２８】
ホスト１００上のオペレーションシステム１３０またはミドルウェア１４０は、自身の要求またはアプリケーションプログラム１５０からディスクユニット３６０に格納されたデータのリード要求があると、その要求に基づき、コマンド発行手段１６０を使って固定長ブロック形式で格納されたデータに対するリードコマンドをディスクサブシステム３００に発行する。このとき発行されるリードコマンドは、ＣＫＤインタフェース１１０、３２０を介して固定長ブロック形式に従ってデータをリードするための特別なコマンドである。
【００２９】
このリードコマンドは、ＣＫＤ形式に従う通常のリードコマンドのバイト列を一部変更したバイト列からなる。このバイト列のあらかじめ決められた位置に、リードコマンドであることを示すコード、対象とするデータが固定長ブロック形式であることを示す予め決められたコード、読み出し対象のデータのブロックアドレス、及び、要求転送量（ブロック数）が設定される（ステップ１０１０）。
【００３０】
ディスクサブシステム３００は、受領したリードコマンドをＣＫＤインタフェースコマンド処理手段３３０で処理する。ＣＫＤインタフェースコマンド処理手段３３０は、コマンドのフォーマットおよび種別に関するコマンド種別情報７００を有しており、これを参照して受領したコマンドを解析し、対象のディスクユニット、コマンドの種別を判別する（ステップ１０２０）。
【００３１】
ＣＫＤインタフェースコマンド処理手段３３０は、判別の結果、ディスクユニット３６０を対象とした固定長ブロック形式のデータリードを要求するコマンドであった場合、リード対象データのブロックアドレスや要求転送量（ブロック数）を確認し（ステップ１０３０）、固定長ブロック転送手段３５０にデータ転送を指示する（ステップ１０４０）。データ転送の指示を受けた固定長ブロック転送手段３５０は、ディスクユニット３６０のデータをブロック毎にＣＫＤインタフェース１１０を介してホスト１００へ転送する（ステップ１０５０）。
【００３２】
ホスト１００では、オペレーションシステム１３０、またはミドルウェア１４０がホスト１００のメモリ上に確保したバッファに、ブロック毎に転送されてきたデータを格納していく（ステップ１０６０）。
【００３３】
固定長ブロック転送手段３５０は、要求されたデータを全てホスト１００に転送したか判別する（ステップ１０７０）。全てのデータの転送が完了していなければ、固定長ブロック転送手段３５０は、ステップ１０５０の処理に戻ってデータの転送を継続する。一方、全てのデータ転送が完了した場合、固定長ブロック転送手段３５０は、データ転送の完了をホスト１００に通知する（ステップ１０８０）。
【００３４】
オペレーションシステム１３０またはミドルウェア１４０は、データ転送完了の通知を受領してリード処理を終了する（ステップ１０９０）。実行されたリード処理が、アプリケーションプログラム１５０からの要求に基づくものであった場合、オペレーションシステム１３０またはミドルウェア１４０は、該当するアプリケーションプログラム１５０にリード処理の終了を通知する（ステップ１１００）。
【００３５】
オペレーションシステム１３０、ミドルウェア１４０、またはアプリケーションプログラム１５０は、読み出されたリードしたデータを、例えば、ディスクユニット３６０上のデータのバックアップデータとして保存することができる。また、これらのプログラムは、ホスト２００上のオペレーティングシステム２３０、ミドルウェア２４０、あるいはアプリケーションプログラム２５０が使用するデータを、ディスクユニット３６０から上記のように読み出して使用することができる。
【００３６】
ステップ１０２０において、受領したコマンドがディスクユニット３１０を対象とする、ＣＫＤ形式でのコマンドとして規定されている通常のコマンドであると判断された場合、ＣＫＤインタフェースコマンド処理手段３３０は、ＣＫＤ転送手段３４０に処理を指示する（ステップ１５１０）。ＣＫＤ転送手段３４０は、コマンドに従って、ホスト１００との間でＣＫＤ形式に従ったデータ転送を行う（ステップ１５２０）。
【００３７】
以上説明した処理により、ディスクサブシステム３００でのＣＫＤ形式への変換処理オーバヘッドおよび変換に伴う転送量増加を被らずに、ホスト１００はディスクユニット３６０に固定長ブロック形式で格納されたデータを読み出すことができる。
【００３８】
図３は、ホスト１００がディスクユニット３６０にデータを書き込む際に実施されるライト処理のフローチャートである。
【００３９】
ホスト１００上のオペレーションシステム１３０またはミドルウェア１４０は、自身の要求またはアプリケーションプログラム１５０からのディスクユニット３６０へのデータのライト要求があると、その要求に基づき、コマンド発行手段１６０を使ってディスクサブシステム３００にライトコマンドを発行する。このときディスクユニット３６０に書き込まれるデータは、ライト要求を出したプログラムにより、ホスト１００のメモリ上に確保されるバッファに、固定長ブロック形式で格納されている。ここで発行されるライトコマンドは、リードコマンドと同様に、固定長ブロック形式に従ってデータを書き込むための特別なコマンドである。ライトコマンドのバイト列は、あらかじめ決められた位置に、ライトコマンドであることを示すコード、対象とするデータが固定長ブロック形式であることを示す予め決められたコード、対象データのブロックアドレス、及び、転送量（ブロック数）を有している（ステップ２０１０）
ディスクサブシステム３００は、受領したライトコマンドをＣＫＤインタフェースコマンド処理手段３３０で処理する。ＣＫＤインタフェースコマンド処理手段３３０は、リードコマンドの場合と同じく、コマンド種別情報７００を参照してコマンドを解析し、対象のディスクユニット、コマンドの種別を判別する（ステップ２０２０）。
【００４０】
ライトコマンドが固定長ブロック形式のデータの書き込みを指示するものであった場合、ＣＫＤインタフェースコマンド処理手段３３０は、ライトコマンドの対象データのブロックアドレスや転送量（ブロック数）を確認し、固定長ブロック転送手段３５０へデータ転送を指示する（ステップ２０３０）。
【００４１】
固定長ブロック転送手段３５０は、ライトデータの転送指示に応答して、ＣＫＤインタフェース３２０を介してホスト１００にデータの転送を要求する（ステップ２０５０）。固定長ブロック転送手段３５０からの要求を受けたホスト１００のオペレーションシステム１３０またはミドルウェア１４０は、ライトデータをブロック毎にディスクサブシステム３００に転送する（ステップ２０６０）。
【００４２】
固定長ブロック転送手段３５０は、ホスト１００から転送されてくるデータを受領し、ディスクユニット３６０に格納する（ステップ２０７０）。
【００４３】
固定長ブロック転送手段３５０は、ライトコマンドで指定された全てのデータを受領したか判別する（ステップ２０８０）。全てのデータを受領していない場合、固定長ブロック転送手段３５０は、ステップ２０５０の処理に戻ってデータの転送を継続する。ライトコマンドで指定された全てのデータを受領していれば、固定長ブロック転送手段３５０は、転送完了をホスト１００に通知する（ステップ２０９０）。
【００４４】
オペレーションシステム１３０またはミドルウェア１４０は、ディスクサブシステム３００から転送完了の通知を受領すると、ライト処理を終了する（ステップ２１００）。ライト処理がアプリケーションプログラム１５０からの要求に基づくものであった場合、オペレーションシステム１３０またはミドルウェア１４０は、アプリケーションプログラム１５０にライト処理終了を通知する（２１１０）。
【００４５】
上述したライト処理によって、オペレーションシステム１３０、ミドルウェア１４０、またはアプリケーションプログラム１５０は、ホスト２００のオペレーティングシステム２３０、ミドルウェア２４０、あるいはアプリケーションプログラム２５０により使用されるデータをディスクユニット３６０に格納することができる。
【００４６】
ステップ２０３０において、受領したコマンドがディスク３１０を対象とする、ＣＫＤ形式でのコマンドとして規定されている通常のコマンドであると判断された場合、ＣＫＤインタフェースコマンド処理手段３３０は、ＣＫＤ転送手段３４０に処理を指示する（ステップ２５１０）。ＣＫＤ転送手段３４０は、コマンドに従ってホスト１００との間でＣＫＤ形式に従ったデータの転送を行う（ステップ２５２０）。
【００４７】
以上説明した処理によって、ディスクサブシステム３００でのＣＫＤ形式への変換処理オーバヘッドおよび変換に伴う転送量増加を被らずに、ホスト１００はデータをディスク３６０上に固定長ブロック形式で書き込むことができる。
【００４８】
以下に、上述したリード処理、ライト処理を利用して、ホスト２００によりディスクユニット３６０に格納されたデータを磁気テープ装置３０００にバックアップする処理について説明する。ここで説明するバックアップ処理は、ホスト１００、及びホスト２００上で動作するバックアッププログラムにより実施される。バックアッププログラムは、ホスト１００、ホスト２００上のアプリケーションプログラム１５０、２５０の一つとして提供される。
【００４９】
図４は、バックアップ処理の流れを示すフローチャートである。
【００５０】
ホスト１００上で動作するバックアッププログラムは、あらかじめ決められたスケジュールやユーザからの指示により、バックアップ処理を開始する。ホスト１００上のバックアッププログラムは、まず、ネットワーク４００を介して、ホスト２００上で動作するバックアッププログラムに、バックアップを行うファイルの位置情報を問い合わせる（ステップ４０００）。
【００５１】
ホスト２００上のバックアッププログラムは、自身で管理している情報、あるいは、ミドルウェア２４０やオペレーティングシステム２３０が管理している情報から、バックアップするファイルのディスクユニット３６０内での位置情報、具体的には、ＬＢＡおよびブロック数を取得し、ファイル位置情報をホスト１００上のバックアッププログラムに転送する（ステップ４０１０）。
【００５２】
ファイル位置情報には、ファイルが格納されているディスクユニット３６０の領域の開始アドレスを示すＬＢＡ（開始ＬＢＡ）とブロック数に関する情報が含まれる。ファイルがディスクユニット３６０内で複数の領域に格納されている場合には、それぞれの領域についての開始ＬＢＡとブロック数が含まれる。
【００５３】
ホスト１００上のバックアッププログラムは、ホスト２００上のバックアッププログラムから転送されたファイル位置情報に基づいてバックアップを行うファイルを上述したリード処理により読み出す。（ステップ４０２０）。バックアッププログラムは、ディスクユニット３６０から読み出したデータを磁気テープ装置３０００に記録する（ステップ４０３０）。
【００５４】
次に、ホスト１００上のバックアッププログラムは、ホスト２００から受け取ったファイル位置情報により示されるすべてのブロックのデータに関して、ステップ４０２０およびステップ４０３０の処理を実施し、バックアップ処理が完了したかどうか判定する。すべてのブロックに関して処理を完了している場合、バックアッププログラムは、バックアップ処理を終了する。処理していないブロックが残っている場合、バックアッププログラムは、ステップ４０２０に戻り、バックアップ処理を継続する(ステップ４０４０)。
【００５５】
以上の処理によりバックアップされたデータのリストア処理は、バックアップ処理と同様に行うことができる。まず、ホスト１００上で動作するリストアプログラムにより、ホスト２００上で動作するリストアプログラムからファイル位置情報を受領する。次に、ホスト１００上のリストアプログラムは、リストアしようとするファイルが格納されている磁気テープからデータを読み出し、ホスト２００から受け取ったファイル位置情報を元に、ディスク３６０ユニットに、磁気テープから読み出したデータを書き込む。
【００５６】
以上の説明において、バックアップ処理は、ホスト１００側のバックアッププログラムにより開始されるが、ホスト２００側のバックアッププログラムから処理を開始するようにしても構わない。この場合、バックアップ処理は、次のようにして行われる。
【００５７】
あらかじめ決められたスケジュールやユーザからの指示によりホスト２００上のバックアッププログラムが、バックアップ対象のファイルの位置情報を取得する。ホスト２００上のバックアッププログラムは、取得した位置情報に基づくファイル位置情報と共にバックアップ処理の開始をホスト１００上のバックアッププログラムに要求する。ホスト１００上のバックアッププログラム３０１０は、ホスト２００のバックアッププログラムからの要求に応答して、上述したステップ４０２０、ステップ４０３０およびステップ４０４０を実行する。
【００５８】
以上説明した実施形態によれば、ディスクサブシステムでのデータ形式の変換を行うことなく、ディスクサブシステムに固定長ブロック形式で格納されているデータをＣＫＤ形式のインタフェースを持つホストコンピュータからアクセスすることが可能となる。これによい、異なる形式のＩ／Ｏインタフェースを持つコンピュータ間での高速なデータ共用が実現できる。
【００５９】
また、ディスクサブシステムに固定長ブロック形式で格納されているデータのバックアップ処理を、可変長形式に従ったＩ／Ｏインタフェースを持つコンピュータにより実行することができる。
【００６０】
＜第２の実施の形態＞
図５は、本発明の第2の実施形態において、ホスト１００から固定長ブロック形式でディスクユニット３６０に格納されたデータをアクセスするためのアクセスプロトコルを示すシーケンス図である。本実施形態における計算機システムは、基本的に、図1に示される第1の実施形態における計算機システムと同様に構成される。従って、システムの構成について、ここではその説明を省略する。
【００６１】
本実施形態において、ホスト１００は、ディスクユニット３６０をアクセスするにあたって、ディスクサブシステム３００にシーク動作とライト動作の許容範囲などを規定するＤＥＦＩＮＥ  ＥＸＴＥＮＴコマンド５１００を発行する。ディスクサブシステム３００は、ＤＥＦＩＮＥ  ＥＸＴＥＮＴコマンド５１００を受領すると、コマンドを受領したことを報告するために、コマンド受領報告５１０１をホスト１００に通知する。
【００６２】
続いて、ホスト１００は、ディスクサブシステム３００に対して、ＤＥＦＩＮＥ  ＥＸＴＥＮＴコマンド５１００のコマンドパラメータであるＤＥＦＩＮＥ  ＥＸＴＥＮＴパラメータ５１０２を発行する。ディスクサブシステム５０１６は、ＤＥＦＩＮＥ  ＥＸＴＥＮＴパラメータ５１０２を受け取ると、そのパラメータにしたがった処理を実施し、コマンド実行完了報告５１０３を、ホスト５０１５に通知する。ＤＥＦＩＮＥ  ＥＸＴＥＮＴパラメータ５１０２は、従来のＣＫＤ形式におけるものと特に変わるものではなく、詳細な説明は省略する。
【００６３】
ディスクサブシステム３００からコマンド実行完了報告５１０３があると、ホスト１００は、ディスクサブシステム３００に対して、処理すべきデータの位置などを示すＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンド５１０４を発行する。ディスクサブシステム３００は、ＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンド５１０４を受領すると、コマンドを受領したことを報告するために、コマンド受領報告５１０５をホスト５０１５に通知する。
【００６４】
次に、ホスト１００は、ディスクサブシステム３００に対して、ＬＯＣＡＴＥＲＥＣＯＲＤコマンド５１０４のコマンドパラメータである、後述するＬＯＣＡＴＥ  ＲＥＣＯＲＤパラメータ５１０６を発行する。ディスクサブシステム３００は、ＬＯＣＡＴＥ  ＲＥＣＯＲＤパラメータ５１０６にしたがった処理を実施し、コマンド実行完了報告５１０７をホスト１００に通知する。
【００６５】
続いて、ホスト１００は、ディスクサブシステム３００に対して、ＲＥＡＤ  ＤＡＴＡコマンド５１０８を発行する。ディスクサブシステム３００は、ＲＥＡＤ  ＤＡＴＡコマンド５１０８を受領すると、まず、コマンド受領報告５１０９を通知し、続いて、ＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンド５１０４およびＬＯＣＡＴＥ  ＲＥＣＯＲＤパラメータ５１０６によって指定されたデータをホスト１００に転送する。その後、コマンド実行完了報告５１１１を通知する。この後、さらに１以上のＲＥＡＤ  ＤＡＴＡコマンドが続く場合もある。この場合、ディスクサブシステム３００は、順に次のデータをホスト１００に転送する。
【００６６】
ディスクユニット３６０にデータを書き込む場合には、ＲＥＡＤ  ＤＡＴＡコマンドに替えて、ＷＲＩＴＥ  ＤＡＴＡコマンドが、ホスト１００からディスクサブシステム３００に発行される。この場合、ディスクサブシステム３００は、ホスト１００から転送されるデータを、ＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンド５１０４によって指定された位置に書き込む。
【００６７】
図６は、ＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンドパラメータ５１０６のフォーマット図である。
【００６８】
ＬＯＣＡＴＥ  ＲＥＣＯＲＤパラメータ５１０６は、シークアドレス（ＣＣ）５２００、シークアドレス（ＨＨ）５２０１、サーチアドレス（ＣＣ）５２０２、サーチアドレス（ＨＨ）５２０３、サーチアドレス（Ｒ）５２０４、転送長５２０５を含んで構成される。
【００６９】
通常のＣＫＤ形式のレコードにアクセスする場合、シークアドレス（ＣＣ）５２００、シークアドレス（ＨＨ）５２０１、サーチアドレス（ＣＣ）５２０２、サーチアドレス（ＨＨ）５２０３、サーチアドレス（Ｒ）５２０４には、レコードを特定する値が格納され、転送長５２０５には転送するデータの長さ示す値が格納される。
【００７０】
本実施形態では、固定長ブロック形式のデータをアクセスするために、シークアドレス（ＣＣ）５２００、シークアドレス（ＨＨ）５２０１、サーチアドレス（Ｒ）５２０４に、アクセスするブロックを特定する情報が格納される。シークアドレス(ＣＣ)５２００、シークアドレス（ＨＨ）５２０１、サーチアドレス（Ｒ）５２０４には、転送されるデータのＬＢＡを用いて、
ＣＣ＝ＩＮＴ（ＬＢＡ／(９６＊１５)）＋１
ＨＨ＝ＩＮＴ（ＭＯＤ（ＬＢＡ，（９６＊１５））／９６
Ｒ＝ＭＯＤ（ＬＢＡ，９６）＋１
により求められる値が設定される。ここで、“ＩＮＴ(Ａ)”は、Ａを超えない最大の整数、“ＭＯＤ(Ａ，Ｂ)”は、ＡをＢで割った余りを示す関数である。
【００７１】
サーチアドレス（ＣＣ）５２０２、及びサーチアドレス（ＨＨ）５２０３には、コマンドを含む一連のコマンドが固定長ブロック形式のデータをアクセスする特別なコマンド群であることを示す所定の値が格納される。転送長５２０５は、アクセス対象となるブロックの個数を示す。転送長５２０５としては、転送されるデータの転送バイト数、あるいは、ブロック数などを用いることができる。
【００７２】
図７は、図6に示したホスト１００からの一連のコマンドに応答して、ディスクサブシステム３００のＣＫＤインタフェースコマンド処理手段３３０により実施される処理のフローチャートである。
【００７３】
ＣＫＤインタフェースコマンド処理手段３３０は、ＤＥＦＩＮＥ  ＥＸＴＥＮＴコマンド５１００を受けると、コマンド受領報告５１０１をホスト１００に通知する。ＣＫＤインタフェースコマンド処理手段３３０は、続いて送られて来るＤＥＦＩＮＥ  ＥＸＴＥＮＴパラメータ５１０２を受け取り、ホスト１００にコマンド実行完了報告５１０３を通知する（ステップ５４００）。
【００７４】
次に、ＣＫＤインタフェースコマンド処理手段３３０は、ＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンド５１０４を受けて、コマンド受領報告５１０５をホスト１００に通知する。その後、ホスト１００から送られてくるＬＯＣＡＴＥ  ＲＥＣＯＲＤパラメータ５１０６を受け取り、ホスト１００にコマンド実行完了報告５１０７を通知する（ステップ５４０１）。
【００７５】
次に、ステップ５４０１で受領したＬＯＣＡＴＥ  ＲＥＣＯＲＤパラメータ５１０６に含まれるサーチアドレス（ＣＣ）５２０２およびサーチアドレス（ＨＨ）５２０３として、固定長ブロック形式のデータをアクセスするときに用いられる所定の値が設定されているかどうかを確認する。サーチアドレス（ＣＣ）５２０２およびサーチアドレス（ＨＨ）５２０３として、固定長ブロック形式のデータをアクセスするときに用いられる所定の値が設定されていれば、シークアドレス（ＣＣ）５２００、シークアドレス（ＨＨ）５２０１およびサーチアドレス（Ｒ）５２０４として設定されている値から、
ＬＢＡ＝１５＊９６＊（ＣＣ−１）＋９６＊ＨＨ＋（Ｒ−１）
としてＬＢＡを計算する（ステップ５４０２）。
【００７６】
続いて、ＣＫＤインタフェースコマンド処理手段３３０は、ＬＯＣＡＴＥ  ＲＥＣＯＲＤ  パラメータ５１０６に続いて送られてきたコマンドの種別を判別する（ステップ５４０３）。
【００７７】
受領したコマンドがＷＲＩＴＥ  ＤＡＴＡコマンドの場合、ＣＫＤインタフェースコマンド処理手段３３０は、ホスト１００からライトデータを受領し、そのデータをステップ５４０２で算出したＬＢＡと転送長５２０５に対応するブロックに格納する（ステップ５４０４）。
【００７８】
ステップ５４０３でホスト１００から受け取ったコマンドがＲＥＡＤ  ＤＡＴＡコマンド５１０８の場合、ＣＫＤインタフェースコマンド処理手段３３０は、ステップ５４０２で求めたＬＢＡと転送長５２０５に基づいて、読み出し対象となるブロックのデータをディスクユニット３６０から読み出し、ホスト１００に転送する（ステップ５４０５）。
【００７９】
ＲＥＡＤ  ＤＡＴＡコマンド５１０８あるいはＷＲＩＴＥ  ＤＡＴＡコマンドが複数個発行された場合、ＣＫＤインタフェースコマンド処理手段３３０は、ステップ５４０４あるいはステップ５４０５の処理を複数回実行する。
【００８０】
本実施形態によれば、固定長ブロック形式でディスクユニットに格納されたデータを、ＣＫＤ形式に従ったＩ／Ｏ方式でアクセスできる。特に、１個のＲＥＡＤ  ＤＡＴＡコマンドまたはＷＲＩＴＥ  ＤＡＴＡコマンドで１個以上のブロックに格納されるデータにアクセスできる。したがって、連続したブロックに格納されているデータをアクセスする際に、ホストとディスクサブシステム間でコマンドのやりとりを繰り返す必要がなくなり、コマンド処理のオーバーヘッドを削減することができる。
【００８１】
＜第３の実施の形態＞
図８は、本発明の第３の実施形態における計算機システムの機能構成を示すブロック図である。
【００８２】
図に示すように、本実施形態における計算機システムは、３つのホスト６１００、６２００、６３００、及びディスクサブシステム６４００を有している。ホスト６１００とディスクサブシステム６４００との間は、メインフレームで一般に用いられるチャネルインタフェースで接続され、ホスト６２００、及びホスト６３００とディスクサブシステムとの間は、例えば、ファイバチャネルのような固定長ブロック形式のインタフェースで接続されている。
【００８３】
ディスクサブシステム６４００は、ホスト６１００、ホスト６２００、ホスト６３００から共有される記憶装置である。ディスクサブシステム６４００は、複数のディスクユニット６４１０、ネットワークインターフェイス６４２０、ＣＫＤチャネルインターフェイス６４３０、コントローラ６４５０、及びＦＢＡチャネルインターフェイス６４５０を有する。ディスクユニット６４１０は、固定長ブロック形式でデータを格納する記憶装置であり、媒体上にデータの記憶領域として複数個のブロックを備える。
【００８４】
各ホストからディスクユニット６４１０へのアクセスを制御するコントローラ６４４０は、コマンド実行部６４４１、ＬＵＮ・ＬＤＥＶ対応表６４４２を備える。コマンド実行部６４４１は、ＣＫＤ形式のコマンドをＦＢＡ形式のコマンドに置き換え、ディスクユニット６４１０に対するリード処理・ライト処理等を行う。
【００８５】
本実施形態において、ディスクサブシステム６４００は、複数のディスクユニット６４１０をまとめて１または複数の論理デバイスとしてホストに見せる。これら論理デバイスはＣＫＤチャネルインタフェース６４３０、ＦＢＡチャネルインタフェース６４５０のいずれからもアクセスできる。従って、ホスト６１００で使用するデバイス名とホスト６２００、ホスト６３００で使用するデバイス名を一致させる必要がある。
【００８６】
ＬＵＮ・ＬＤＥＶ対応表６４４２は、ディスクサブシステム６４００内部のディスクユニットの構成を示す論理デバイス番号（ＬＤＥＶ番号）とホスト６２００、６３００が論理デバイスを管理するために使用する論理ユニット番号（ＬＵＮ）の対応関係を保持するテーブルである。
【００８７】
ホスト６２００、６３００は、ディスクサブシステム６４００に対し、ＳＣＳＩのプロトコルにしたがってInquiryコマンドを発行することにより、ディスクサブシステム６４００に関する情報を取得することができる。本実施形態では、Inquiryコマンドに対する戻り値を拡張し、標準的なデバイスの製造者情報、製造番号、デバイスの種類等の情報に加え、あるＬＵＮに対応するディスクサブシステム６４００内のＬＤＥＶ番号を取得することができるようにしている。
【００８８】
図９は、ホストから発行されるInquiryコマンドの構成を示すデータフォーマット図である。
【００８９】
Inquiryコマンド６８００は、オペレーションコード６８１０、ＬＵＮ６８２０、ＥＶＰＤフラグ６８４０、ページコード６８５０、アロケーション長６８７０、及びコントロールバイト６８８０を有する。ホストからベンダ固有情報を含むＶＰＤ情報６９００を要求するには、ビット情報であるＥＶＰＤ６８４０のビットがセットされる。
【００９０】
図１０は、Inquiryコマンドに応答してディスクサブシステム６４００からホストに返されるＶＰＤ情報のデータフォーマット図である。
【００９１】
ＶＰＤ情報６９００は、クォリファイア６９１０、デバイスコードタイプ６９２０、ページコード６９３０、ページ長６９５０、及び、ＬＤＥＶ番号６９６０を有する。コントローラ６４４０は、ホストから受け取ったInquiryコマンド６８００内のＬＵＮ番号６８２０に対応するＬＤＥＶ番号をＬＵＮ・ＬＤＥＶ対応表６４４２を参照して取得し、ＬＤＥＶ番号６９６０として設定する。ホストは、戻されたＶＰＤ情報６９００内のＬＤＥＶパラメータよりＬＤＥＶ番号６９６０を取得する。
【００９２】
ホスト６１００は、ネットワークインタフェース（ネットワークＩ／Ｆ）６１１０、制御情報要求部６１２０、ＣＫＤチャネルインタフェース６１３０、アプリケーションプログラム（ＡＰＰ）６１４０、形式変換部６１５０、オペレーティングシステム（ＯＳ）６１６０、及びＩ／Ｏ発行部６１７０を備える。
【００９３】
制御情報要求部６１２０は、ホスト６１００とホスト６２００により共有されているディスクサブシステム６４００内のファイルへのリード処理・ライト処理をする際に必要な制御情報をホスト６３００に要求する機能を有する。制御情報には、ファイルが存在するディスクサブシステム６４００のボリューム情報、及び、ファイルの格納位置（ＬＢＡ）、容量などの情報を有するファイル管理情報が含まれる。制御情報要求部６１２０は、ディスクサブシステム６４００に格納されているファイルに対するリード・ライト処理の際、形式変換部６１５０と連携して動作する。
【００９４】
ＣＫＤチャネルインターフェイス６１３０は、ＣＫＤチャネルインタフェース６４３０と接続し、ホスト６１００のＩ／Ｏ処理を行う。アプリケーションプログラム６１４０は、ディスクサブシステム６４００内で共有されているファイルへのリード処理／ライト処理を行うソフトウエアである。
【００９５】
形式変換部６１５０は、ホスト６３００から与えられる制御情報内のＬＢＡをホスト６１００で利用できるように形式を変更する機能を有する。具体的には、制御情報内のＬＢＡをホスト６１００で取り扱われるＣＫＤ形式に変更する。
【００９６】
ホスト６２００は、ネットワークＩ／Ｆ６２１０、制御情報要求部６２２０、ＦＢＡチャネルインタフェース６２３０、アプリケーションプログラム６２４０、ＯＳ６２６０、及び、Ｉ／Ｏ発行部６２７０を有する。制御情報要求部６２２０は、ホスト６１００の制御情報要求部６１２０と同等の機能をもつ。但し、制御情報要求部６２２０は、形式変換部６１５０と連携して動作しない点でホスト６１００の制御情報要求部６１２０と異なる。
【００９７】
ホスト６３００は、ホスト６１００、ホスト６２００により使用されるディスクサブシステム６４００内のファイルを管理し、ホスト６１００とホスト６２００により共有されているディスクサブシステム６４００内のファイルのリード・ライト処理を制御する。ホスト６３００は、ネットワークＩ／Ｆ６３１０、制御情報応答部６３２０、チャネルインタフェース６３３０、ＯＳ６３５０、ストレージ管理部６３６０、ファイルアクセスリスト６３７０、及び、Ｉ／Ｏ発行部６３８０を備える。
【００９８】
制御情報応答部６３２０は、ホスト６１００、６２００の制御情報要求部６１２０、６２２０からのリード処理、ライト処理の要求に応答して制御情報を返す。制御情報には、ＯＳ６３５０が保持するファイルに関するファイル管理情報、ストレージ管理部６３６０により管理されるディスクサブシステム６４００内の論理ボリューム番号等が含まれる。ファイル管理情報には、ファイルの構成に関するファイル名、ＬＢＡ、ファイルの大きさ、ファイルの使用許可情報などが含まれる。
【００９９】
ストレージ管理部６３６０は、ホスト６２００、６３００により使用されるＬＵＮとディスクサブシステム６４００内部でのＬＤＥＶ番号の対応を管理する。
【０１００】
図１１は、ファイルアクセスリスト６３７０の一例を示すテーブル構成図である。ファイルアクセスリスト６３７０は、各行にファイル名７２１０、ホスト７２２０、状態７２３０の各項目を有する。ファイル名７２１０は、ホストからリード・ライト処理が行われているファイルの名称である。ホスト７２２０は、ファイルのリード・ライト処理を行っているホストを識別する名称である。状態７２３０は、ホストからファイルへのアクセス状態を示す。状態７２３０は、ホストによるリード処理中の場合は“Ｒｅａｄ”、ライト処理中の場合は“Ｗｒｉｔｅ”が設定される。
【０１０１】
ファイルアクセスリスト６３７０には、ホスト６１００、ホスト６２００からリード・ライト処理がある場合に情報が追加される。本実施形態では、ファイルアクセスリスト６３７０を使用することにより、ホスト６１００とホスト６２００により共有されるファイルに対するアクセスの排他処理が行われる。例えば、状態７２３０に“Ｗｒｉｔｅ”が設定されている場合、そのファイルに対する新たなライトあるいはリードの要求は行うことができない。そのような要求は、当該エントリが削除されるまで待たされるか、あるいは、拒絶される。
【０１０２】
一方、あるファイルについて、状態７２３０に“Ｒｅａｄ”が設定されたエントリが存在する場合、新たに発行されたリード要求は実行可能である。この場合、ファイルアクセスリスト６３７０には、後から発行されたリード要求に対応した新しいエントリが作成される。後から発行された要求がライト要求である場合は、先の場合と同様に、そのライト要求は、実行が待たされるか、あるいは、拒絶される。
【０１０３】
図１２は、ストレージ管理部が、ＬＵＮとＬＤＥＶ番号との対応関係を取得する際に実施される処理のフローチャートである。
【０１０４】
ストレージ管理部６３６０は、ＬＵＮとＬＤＥＶ番号との対応関係を取得する際、まず、ＯＳ６３５０よりファイルが存在する論理デバイスのＬＵＮを取得する（ステップ１０２１０）。次に、取得したＬＵＮに対応するディスクサブシステム６４００内のＬＤＥＶ番号を取得するためのInquiryコマンド６８００を生成し（ステップ１０２２０）、ディスクサブシステム６４００のコントローラ６４４０に送る（ステップ１０２３０）。
【０１０５】
ディスクサブシステム６４００のコントローラ６４４０は、ホスト６３００からInquiryコマンド６８００を取得すると（ステップ１０２４０）、ＬＵＮ・ＬＤＥＶ対応表を参照して、Inquiryコマンドに含まれるＬＵＮに対応するＬＤＥＶ番号を取得する（ステップ１０２５０）。コントローラ６４４０は、取得したＬＤＥＶ番号を含むＶＰＤ情報６９００作成し、そのＶＰＤ情報をホスト６３００に返す（ステップ１０２６０）。
【０１０６】
ストレージ管理部６３６０は、ディスクサブシステム６４００から返されたＶＰＮ情報９６００を受け取り（ステップ１０２７０）、ＶＰＤ情報６９００からＬＤＥＶ番号を取得する。ストレージ管理部６３６０は、取得したＬＤＥＶ番号をＬＵＮと対応付けて保管する。
【０１０７】
図１３は、ホスト６２００のアプリケーションプログラム６２４０がディスクサブシステム６４００に保管されているファイルを読み出す際に行われる処理のフローチャートである。
【０１０８】
制御情報要求部６２２０は、アプリケーションプログラム６２４０がディスクサブシステム６４００に格納されているデータを読み出そうとするときに発行するリード要求を受け取る（ステップ１０３１０）。制御情報要求部６３２０は、このリード要求に基づき、ホスト６３００の制御情報応答部６３２０に対して、ファイルのリード処理を行うための制御情報を要求する（ステップ１０３２０）。
【０１０９】
制御情報応答部６３２０は、ホスト６２００からの要求に応答して、要求されたファイルについてのファイル管理情報をＯＳ６３５０から取得する（ステップ１０３３０）。次に、制御情報応答部６３２０は、読み出しが要求されたファイルが存在する論理ボリュームの場所に関する情報をストレージ管理部６３６０から取得する（ステップ１０３４０）。
【０１１０】
制御情報応答部６３２０は、さらに、ファイルアクセスリスト６３７０を参照して、要求されたリード要求が実行可能か調べる。リード要求の実行が可能であれば、要求されたファイルがホスト６２００からＲｅａｄ状態であることを示す情報をファイルアクセスリスト６３７０に追加する（ステップ１０３５０）。これらの処理の後、制御情報応答部６３２０は、ファイル管理情報、ボリュームの場所に関する情報などを含む制御情報をホスト６２００の制御情報要求部６２２０に送信する（ステップ１０３６０）。
【０１１１】
ホスト６２００の制御情報要求部６２２０は、ホスト６３００の制御情報応答部６３２０から返される制御情報を取得すると、（ステップ１０３７０）。取得した制御情報に基づいてディスクサブシステム６４００からファイルを読み出す。読み出されたデータは、順次、アプリケーションプログラム６２４０に渡される（ステップ１０３８０）。制御情報要求部６２２０は、ファイルのリード処理が終了したか確認し、ファイルのリード処理が終了していなければ、ステップ１０３８０でファイルのリード処理を継続する（ステップ１０３９０）。ファイルのリード処理が終了すると、制御情報要求部６２２０は、ファイルのリード処理が完了したことをホスト６３００の制御情報応答部６３２０に伝える（ステップ１０４００）。
【０１１２】
ホスト６３００の制御情報応答部６３２０は、ステップ１０３５０でファイルアクセスリスト６３７０に追加された、ファイルへのリード要求に関する情報を削除する（ステップ１０４１０）。以上で、ホスト６２００からのリード処理が終了する。
【０１１３】
図１４は、ホスト６２００のアプリケーションプログラム６２４０によるディスクサブシステム６４００へのファイルのライト処理のフローチャートである。
【０１１４】
ホスト６２００の制御情報要求部６２２０は、アプリケーションプログラム６２４０がディスクサブシステム６４００にファイルデータを書き込むために発行するライト要求を受ける（ステップ１０５１０）。制御情報要求部６２２０は、受け付けたライト要求に基づいて、ホスト６３００の制御情報応答部６３２０へファイルの書き込みに必要な制御情報を要求する（ステップ１０５２０）。
【０１１５】
制御情報応答部６３２０は、制御情報要求部６２２０からの要求に応答して、ファイルを書き込むための領域をディスクサブシステム６４００のディスクユニット６４１０上に確保する。なお、一回目の領域確保の場合、この領域には一時的なファイル名（例えば、「ｔｅｍｐ」）を与える（ステップ１０５３０）。制御情報応答部６３２０は、次に、ステップ１０５３０で確保した領域に関するファイル管理情報をＯＳ６３５０から取得し（ステップ１０５４０）、確保された領域を有する論理ボリュームの場所に関する情報をストレージ管理部６３６０から取得する（ステップ１０５５０）。
【０１１６】
制御情報応答部６３２０は、さらに、ファイルアクセスリスト６３７０を参照して、要求されたライト要求が実行可能か調べる。ライト要求の実行が可能であれば、要求されたファイルがホスト６２００によるライト状態にあることを示す情報をファイルアクセスリスト６３７０に追加する（ステップ１０５６０）。これらの処理の後、制御情報応答部６３２０は、ファイル管理情報、ボリューム場所に関する情報などを含む制御情報をホスト６２００の制御情報要求部６２２０に送信する（ステップ１０５７０）。
【０１１７】
ホスト６２００の制御情報要求部６２２０は、制御情報応答部６３２０から返された制御情報を取得し（ステップ１０５８０）、この制御情報に基づいて、ファイルデータの書き込みを開始する（ステップ１０５９０）。制御情報要求部６２２０は、ファイルデータの書き込み中、適宜、ライト処理が完了したか判別する（ステップ１０６００）。ライト処理が完了していなければ、制御情報要求部６２２０は、さらに、ステップ１０５３０で確保された領域の容量をチェックし、ファイルデータの書き込み領域が残っているか確認する。領域の残りがない場合、制御情報要求部６２２０は、ステップ１０５２０の処理に戻り、領域の確保を再度行う。一方、領域が残っていれば、ステップ１０５９０の処理に戻り、ファイルデータの書き込みが継続される（ステップ１０６１０）。
【０１１８】
ステップ１０６００において、すべてのファイルデータの書き込みが完了していれば、ライト処理の終了がホスト６３００の制御情報応答部６３２０に通知される（ステップ１０６２０）。
【０１１９】
制御情報応答部６３２０は、ライト処理の終了の通知があると、ステップ１０５６０でファイルアクセスリスト６３７０に追加し情報を削除する。そして、一時的につけたファイル名をホスト６２００より与えられるファイル名に置き換える（ステップ１０６３０）。以上で、ホスト６２００によるファイルのライト処理が終了する。
【０１２０】
図１５は、ホスト６１００のアプリケーションプログラム６１４０によるファイルのリード処理のフローチャートである。
【０１２１】
ホスト６１００の制御情報要求部６１２０は、アプリケーションプログラム６１４０がデータを読み出すために発行するリード要求を受ける（ステップ２０１１０）。制御情報要求部６１２０は、アプリケーションプログラム６１４０が発行したリード要求に基づいて、ホスト６３００の制御情報応答部６３２０に、ファイルのリード処理に必要な制御情報を要求する（ステップ２０１２０）。
【０１２２】
制御情報応答部６３２０は、ホスト６１００からの要求に応答して、要求されたファイルについてのファイル管理情報をＯＳ６３５０から取得し、ファイルが格納されているＬＢＡを得る（ステップ２０１３０）。次に、制御情報応答部６３２０は、要求されたファイルを有するボリュームの場所に関する情報をストレージ管理部６３６０に要求する（ステップ２０１４０）。ストレージ管理部６３６０は、図１２により説明した処理により、ファイルが格納された論理ボリュームのＬＵＮからディスクサブシステム６４００内におけるＬＤＥＶ番号を得て（ステップ２０１５０）、制御情報応答部６３２０に渡す（ステップ２０１６０）。
【０１２３】
制御情報応答部６３２０は、ファイルアクセスリスト６３７０を参照し、リード要求が実行可能か調べる。リード要求の実行が可能であれば、リード要求の対象されたファイルが、ホスト６１００からリード状態であることを示す情報をファイルアクセスリスト６３７０に追加する（ステップ２０１７０）。この後、制御情報応答部６３２０は、ファイル管理情報、ＬＤＥＶ番号などを含む制御情報をホスト６１００の制御情報要求部６１２０に送信する（ステップ２０１８０）。
【０１２４】
制御情報要求部６１２０は、制御情報応答部６３２０から返された制御情報を取得し（ステップ２０１９０）、取得した制御情報に含まれる管理情報から得られるＬＢＡを、ＣＫＤ形式のアドレスに変換する（ステップ２０２００）。制御情報要求部６１２０は、変換されたアドレス及び、他の制御情報に基づいてディスクサブシステム６４００からファイルをリードする。このとき、ホスト６１００はＣＫＤ形式に従ったインタフェースでディスクサブシステム６４００内のデータをアクセスする（ステップ２０２１０）。制御情報要求部６１２０は、適宜、ファイルのリード処理が終了したか判別し、ファイルのリード処理が終了していなければ、ステップ２０２００、２０２１０の処理を繰り返し実行する。一方、ファイルのリード処理が終了していれば、その旨をホスト６３００の制御情報応答部６３２０に伝える（ステップ２０２２０）。
【０１２５】
制御情報応答部６３２０は、リード処理の終了の報告に応答して、ステップ２０１７０でファイルアクセスリスト６３７０に追加された情報を削除しリード処理が終了する（ステップ２０２３０）。
【０１２６】
図１６は、ホスト６１００のアプリケーションプログラム６１４０によるディスクサブシステム６４００へのファイルのライト処理のフローチャートである。
【０１２７】
ホスト６１００の制御情報要求部６１２０は、アプリケーションプログラム６１４０がファイルを書き込むために発行するライト要求を受ける（ステップ２０４１０）。制御情報要求部６１２０は、アプリケーションプログラム６１４０が発行したライト要求に基づいて、ホスト６３００の制御情報応答部６３２０に対し、ファイルの書き込みに必要な制御情報を要求する（ステップ２０４２０）。
【０１２８】
制御情報応答部６３２０は、制御情報要求部６２２０からの要求に応答して、ファイルを書き込むための領域をディスクサブシステム６４００のディスクユニット６４１０上に確保し、この領域に、一時的なファイル名を与える（ステップ２０４３０）。以下、制御情報応答部６３２０は、リード処理のときと同様にして、ＯＳよりファイル管理情報を取得し、確保した領域のＬＢＡを得て（ステップ２０４４０）、この領域を有するボリュームの場所に関する情報をストレージ管理部６３６０に要求する（ステップ２０４５０）。ストレージ管理部６３６０は、ディスクサブシステム６４００からファイルが格納された論理ボリュームのＬＵＮからディスクサブシステム６４００内におけるＬＤＥＶ番号を得て（ステップ２０４６０）、制御情報応答部６３２０に渡す（ステップ２０４７０）。
【０１２９】
制御情報応答部６３２０は、さらに、ファイルアクセスリスト６３７０を参照して、ライト要求が実行可能か調べる。ライト要求の実行が可能であれば、要求されたファイルがホスト６１００によるライト状態にあることを示す情報をファイルアクセスリスト６３７０に追加する（ステップ２０４８０）。これらの処理の後、制御情報応答部６３２０は、ファイル管理情報、ＬＤＥＶ番号などを含む制御情報をホスト６１００の制御情報要求部６１２０に送信する（ステップ２０４９０）。
【０１３０】
制御情報要求部６１２０は、制御情報応答部６３２０から返された制御情報を取得し（ステップ２０５００）、取得した制御情報に含まれる管理情報から得られるＬＢＡを、ＣＫＤ形式のアドレスに変換する（ステップ２０５１０）。制御情報要求部６１２０は、変換されたアドレス及び、他の制御情報に基づいてディスクサブシステム６４００に対するファイルのライト処理を実行する（ステップ２０５２０）。
【０１３１】
制御情報要求部６１２０は、適宜、ファイルのライト処理が終了したか判別する（ステップ２０５３０）。ライト処理が終了していなければ、制御情報要求部６１２０は、さらに、確保されているファイル領域に未使用の領域が存在するか調べ、残りの領域がない場合は、ステップ２０４２０以降の処理を繰り返し、ファイル領域に残りがある場合は、ステップ２０５１０に戻りライト処理を継続する（ステップ５０５４０）。
【０１３２】
ステップ２０５３０でライト処理が終了したと判断された場合、制御情報要求部６１２０は、ライト処理の終了をホスト６３００の制御情報応答部６３２０に通知する。制御情報応答部６３２０は、この通知に応答して、ステップ２０４８０でファイルアクセスリスト６３７０に追加した情報を削除する。以上で、ライト処理が終了する（ステップ２０５５０）。
【０１３３】
以上説明した第３の実施形態においても、ＣＫＤ形式でディスクにアクセスするホストと、ＦＢＡ形式でディスクにアクセスするホストとの間で、双方に接続されたディスクサブシステム内のファイルを共有することが可能である。
【０１３４】
これまで説明した実施形態によれば、固定長ブロック形式で記憶装置に格納されているデータを、ホストコンピュータからＣＫＤ形式のＩ／Ｏインタフェースを使って、１つのコマンドにより１又は複数のブロックに対するアクセスを実現することができる。特に、ブロック単位のアクセスが可能であり、余計なデータ転送を生じず、ホスト、ディスクサブシステムおよび転送パスなどの資源を有効に利用できる。
【０１３５】
また、複数個のブロックからなる大きなデータを１つのコマンドでアクセスできるため、ホストのコマンド発行処理、およびディスクサブシステムのコマンド実行にかかる処理のオーバヘッドを削減できる。
【０１３６】
【発明の効果】
本発明によれば、ディスクサブシステムに固定長ブロック形式で格納されているデータに対し、ＣＫＤ形式のインタフェースで接続するホストコンピュータからのリード／ライトにおけるデータ転送を高速化し、ホスト間での高速なデータ共用を実現することができる。
【図面の簡単な説明】
【図１】本発明が適用された計算機システムの一実施形態における機能構成を示すブロック図である。
【図２】ディスクサブシステムからデータを読み出す際に実施されるリード処理のフローチャートである。
【図３】ディスクユニットにデータを書き込む際に実施されるライト処理のフローチャートである。
【図４】バックアップ処理の流れを示すフローチャートである。
【図５】本発明の第2の実施形態において、ホストから固定長ブロック形式でディスクユニットに格納されたデータをアクセスするためのアクセスプロトコルを示すシーケンス図である。
【図６】ＬＯＣＡＴＥ  ＲＥＣＯＲＤコマンドパラメータのフォーマット図である。
【図７】ホストからの一連のコマンドに応答して、ディスクサブシステムのＣＫＤインタフェースコマンド処理手段により実施される処理のフローチャートである。
【図８】本発明の第３の実施形態における計算機システムの機能構成を示すブロック図である。
【図９】  Inquiryコマンドの構成を示すデータフォーマット図である。
【図１０】  Inquiryコマンドに応答してディスクサブシステムからホストに返されるＶＰＤ情報のデータフォーマット図である。
【図１１】ファイルアクセスリストの一例を示すテーブル構成図である。
【図１２】ストレージ管理部が、ＬＵＮとＬＤＥＶ番号との対応関係を取得する際に実施される処理のフローチャートである。
【図１３】ホスト６２００のアプリケーションプログラム６２４０がディスクサブシステムに保管されているファイルを読み出す際に行われる処理のフローチャートである。
【図１４】ホスト６２００のアプリケーションプログラム６２４０によるディスクサブシステムへのファイルのライト処理のフローチャートである。
【図１５】ホスト６１００のアプリケーションプログラム６１４０によるファイルのリード処理のフローチャートである。
【図１６】ホスト６１００のアプリケーションプログラム６１４０によるディスクサブシステム６４００へのファイルのライト処理のフローチャートである。
【符号の説明】
１００、２００・・・ホストコンピュータ
１１０・・・ＣＫＤインタフェース
１２０、２２０・・・ネットワークインタフェース
１３０、２３０・・・オペレーティングシステム
１４０、２４０・・・ミドルウェア
１５０、２５０・・・アプリケーションプログラム
１６０・・・コマンド発行手段
２１０・・・固定長ブロックインタフェース
３００・・・ディスクサブシステム
３１０、３６０・・・ディスクユニット、
３２０・・・ＣＫＤインタフェース
３３０・・・ＣＫＤインタフェースコマンド処理手段
３４０・・・ＣＫＤ転送手段
３５０・・・固定長ブロック転送手段
３７０・・・固定長ブロックインタフェース
３８０・・・固定長ブロックインタフェースコマンド処理手段
【図１】
0003800903.tif 000002
【図２】
0003800903.tif 000003
【図３】
0003800903.tif 000004
【図４】
0003800903.tif 000005
【図５】
0003800903.tif 000006
【図６】
0003800903.tif 000007
【図７】
0003800903.tif 000008
【図８】
0003800903.tif 000009
【図９】
0003800903.tif 000010
【図１０】
0003800903.tif 000011
【図１１】
0003800903.tif 000012
【図１２】
0003800903.tif 000013
【図１３】
0003800903.tif 000014
【図１４】
0003800903.tif 000015
【図１５】
0003800903.tif 000016
【図１６】
0003800903.tif 000017