(57)【要約】【課題】ランダムアクセス型の記憶媒体であるランダム媒体を仮想的なシーケンシャルアクセス型の記憶媒体である仮想シーケンシャル媒体にエミュレートするエミュレータの上位プログラムに影響を与えずに、ランダム媒体の容量効率を高める。【解決手段】エミュレータが、仮想シーケンシャル媒体に不要なデータオブジェクトがある場合、その不要なデータオブジェクトが記憶されているランダム媒体部分を、別のデータを記憶できるよう無効化する。エミュレータは、上位プログラムに、その不要なデータオブジェクトを提供する場合、その不要なデータオブジェクトの代わりに、その不要なデータオブジェクトよりもサイズの小さい所定の制御情報を提供する。【選択図】図１
2010282383.tif 000002
【特許請求の範囲】
【請求項１】
ランダムアクセス型の記憶媒体であるランダム媒体を有するストレージシステムに接続された計算機システムであって、
記憶資源と、
前記記憶資源に接続されたプロセッサと
を有し、
前記記憶資源は、
前記ランダム媒体を仮想的なシーケンシャルアクセス型の記憶媒体である仮想シーケンシャル媒体にエミュレートするエミュレータと、
前記エミュレータの上位のコンピュータプログラムであって前記仮想シーケンシャル媒体を使用する上位プログラムと
を記憶し、
前記プロセッサは、前記エミュレータ及び前記上位プログラムを実行し、
前記上位プログラムが、前記シーケンシャル媒体からの読み出しを指示し、
前記エミュレータが、前記読み出しの指示に応答して、前記仮想シーケンシャル媒体内の複数のデータオブジェクトを、前記仮想シーケンシャル媒体に並んでいる順に前記ランダム媒体から読み出し、読み出した順に前記上位プログラムに提供し、
前記上位プログラムは、シーケンシャル媒体を部分的に無効にすることができないように構成されており、
前記エミュレータは、
（ａ）前記仮想シーケンシャル媒体に不要なデータオブジェクトがある場合、その不要なデータオブジェクトが記憶されているランダム媒体部分を、別のデータを記憶できるよう無効化し；
（ｂ）その不要なデータオブジェクトを前記上位プログラムに提供する場合、その不要なデータオブジェクトの代わりにその不要なデータオブジェクトよりもサイズの小さい所定の制御情報を前記上位プログラムに提供する；
計算機システム。
【請求項２】
前記ランダム媒体は、磁気ディスクであり、
前記仮想シーケンシャル媒体は、仮想的な磁気テープである仮想テープであり、
前記データオブジェクトは、ファイルであり、
前記所定の制御情報は、ファイルを構成するデータ要素の数がゼロであることを意味するＥＯＦ（End Of File）を含んだＥＯＦデータであり、
前記記憶資源は、管理情報を記憶し、
前記管理情報は、どの仮想テープにどのファイルが格納されているかを表すテープ／ファイル情報と、どのファイルがどの磁気ディスクに格納されているかを表すファイル／ディスク情報と、ファイル毎に有効／無効を表す有効／無効情報とを含み、
磁気ディスクに格納されているファイルは、仮想テープに格納されるファイルを構成するデータブロック毎に、制御情報を含み、
前記上位プログラムが、不要なファイルを前記エミュレータに通知し、
前記エミュレータは、
前記（ａ）において、前記上位プログラムから通知された不要なファイルに対応する前記有効／無効情報を、有効を表す情報から無効を表す情報に更新し、その不要なファイルのＥＯＦを磁気ディスクに格納し、
前記（ｂ）において、ファイルを前記上位プログラムに提供する場合、そのファイルが不要なファイルであることを、そのファイルに対応した前記有効／無効情報から特定し、その不要なファイルのＥＯＦデータを前記磁気ディスクから読み出し、前記不要なファイルの代わりにそのＥＯＦデータを前記上位プログラムに提供する、
請求項１記載の計算機システム。
【請求項３】
前記上位プログラムは、ファイルの世代を管理しており、世代ｎのファイルを前記仮想テープに格納した場合、世代（ｎ−ｋ）のファイルより古い世代のファイルを前記不要なファイルとして前記エミュレータに通知する、
請求項２記載の計算機システム。
【請求項４】
前記記憶資源は、データオブジェクト毎に有効／無効を表す有効／無効情報を記憶し、
前記エミュレータは、前記（ｂ）において、提供するデータオブジェクトが有効か無効かを、そのデータオブジェクトに対応した有効／無効情報から判定する、
請求項１記載の計算機システム。
【請求項５】
前記エミュレータは、前記（ａ）において、不要なデータオブジェクトに対応する前記有効／無効情報を、有効を表す情報から無効を表す情報に更新する、
請求項４記載の計算機システム。
【請求項６】
前記上位プログラムが、不要なデータオブジェクトを前記エミュレータに通知し、
前記（ａ）における不要なデータオブジェクトは、前記上位プログラムから通知されたデータオブジェクトである、
請求項１、４又は５記載の計算機システム。
【請求項７】
前記上位プログラムは、データオブジェクトの世代を管理しており、世代ｎのデータオブジェクトを前記仮想テープに格納した場合、世代（ｎ−ｋ）のデータオブジェクトより古い世代のデータオブジェクトを前記不要なデータオブジェクトとして前記エミュレータに通知する、
請求項６記載の計算機システム。
【請求項８】
前記所定の制御情報は、データオブジェクトの終端を意味するデータを含んだデータである、
請求項１、４乃至７のうちのいずれかに記載の計算機システム。
【請求項９】
ランダムアクセス型の記憶媒体であるランダム媒体を仮想的なシーケンシャルアクセス型の記憶媒体である仮想シーケンシャル媒体にエミュレートするコンピュータプログラムであって、
前記仮想シーケンシャル媒体に不要なデータオブジェクトがある場合、その不要なデータオブジェクトが記憶されているランダム媒体部分を、別のデータを記憶できるよう無効化し、
シーケンシャル媒体を部分的に無効にすることができないように構成されている上位プログラムに、その不要なデータオブジェクトを提供する場合、その不要なデータオブジェクトの代わりに、その不要なデータオブジェクトよりもサイズの小さい所定の制御情報を前記上位プログラムに提供する、
ことをコンピュータに実行させるためのコンピュータプログラム。
【請求項１０】
ランダムアクセス型の記憶媒体であるランダム媒体を仮想的なシーケンシャルアクセス型の記憶媒体である仮想シーケンシャル媒体にエミュレートするエミュレータが、前記仮想シーケンシャル媒体に不要なデータオブジェクトがある場合、その不要なデータオブジェクトが記憶されているランダム媒体部分を、別のデータを記憶できるよう無効化し、
前記エミュレータが、シーケンシャル媒体を部分的に無効にすることができないように構成されている上位プログラムに、その不要なデータオブジェクトを提供する場合、その不要なデータオブジェクトの代わりに、その不要なデータオブジェクトよりもサイズの小さい所定の制御情報を前記上位プログラムに提供する、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランダムアクセス型の記憶媒体であるランダム媒体を仮想的なシーケンシャルアクセス型の記憶媒体である仮想シーケンシャル媒体にエミュレートする技術に関する。
【背景技術】
【０００２】
この種の技術として、例えば、特許文献１に、磁気ディスクを仮想的な磁気テープである仮想テープにエミュレートする技術が開示されている。仮想テープに対するアクセスは、実際には、磁気ディスクに対して行われる。これにより、実際の磁気テープ（以下、実テープ）よりも高速にアクセスすることが可能となる。
【０００３】
なお、特許文献１には、磁気ディスクの容量効率の低下（空き記憶領域の減少）を解消するために、磁気ディスクに記憶されているデータが実テープに退避される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１２３４４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この種の技術では、通常、磁気ディスクを仮想テープにエミュレートするエミュレータは、実テープを使用するコンピュータプログラムの下位のプログラムとなる。これにより、エミュレータの上位のコンピュータプログラム（以下、上位プログラム）が、仮想テープを使用することになる。
【０００６】
上位プログラムは、仮想テープであることの影響を受けない。すなわち、上位プログラムは、実テープに対するアクセスと同様のアクセスを行う。結果として、上位プログラムは、仮想テープにシーケンシャルにデータを書き込んだり、仮想テープからシーケンシャルにデータを読み出したりすることができる。
【０００７】
通常、上位プログラムは、実テープを部分的に無効にすることができない。具体的には、例えば、上位プログラムは、実テープ内に不要なデータオブジェクトがあっても、そのデータオブジェクトのみを削除することはできない。別の言い方をすれば、上位プログラムは、実テープに記憶されている全てのデータオブジェクトが不要にならないと、実テープ内のデータオブジェクトを削除することはできない。
【０００８】
仮想テープは実テープのように扱われる。このため、仮想テープ内に不要なデータオブジェクトがあっても、上位プログラムは、実テープと同様、その不要なデータオブジェクトだけを削除することはできない。この結果、磁気ディスクに、不要なデータオブジェクトが残り、そのデータオブジェクトが記憶されている記憶領域を有効に使用することができない。つまり、容量効率が損なわれる。
【０００９】
何らかの方法で不要なデータオブジェクトだけを磁気ディスクから削除できたとしても、上位プログラムが影響を受けることになる。具体的には、仮想テープからシーケンシャルリードで読み出されるはずのデータオブジェクトが読み出されないこととなり、その結果、上位プログラムがエラーを検出する。
【００１０】
このような問題は、ランダムアクセス型の記憶媒体が磁気ディスクであるケース以外のケースでも存在し得る。
【００１１】
そこで、本発明の目的は、ランダム媒体を仮想シーケンシャル媒体にエミュレートするエミュレータの上位プログラムに影響を与えずに、ランダム媒体の容量効率を高めることにある。
【課題を解決するための手段】
【００１２】
エミュレータが、仮想シーケンシャル媒体に不要なデータオブジェクトがある場合、その不要なデータオブジェクトが記憶されているランダム媒体部分を、別のデータを記憶できるよう無効化する。エミュレータは、上位プログラムに、その不要なデータオブジェクトを提供する場合、その不要なデータオブジェクトの代わりに、その不要なデータオブジェクトよりもサイズの小さい所定の制御情報を提供する。
【００１３】
エミュレータ及び上位プログラムのうちの少なくとも一方は、遠隔のサーバからインストールされても良いし、記憶媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disk）などの可搬型の記憶媒体）からインストールされても良い。
【００１４】
エミュレータ及び上位プログラムは、計算機システム内の記憶資源に記憶され、その計算機システム内のプロセッサに実行される。計算機システムは、１又は複数の計算機を含んだシステムである。エミュレータを実行するプロセッサと、上位プログラムを実行するプロセッサは別々であっても良い。また、それらのプロセッサは、別々の装置（例えば、計算機或いはスイッチ装置）に存在しても良い。
【００１５】
計算機システムに接続されているストレージシステムが、ランダム媒体を有する。ストレージシステムは、１又は複数のストレージ装置を含む。少なくとも１つのストレージ装置が、ランダム媒体を有することができる。
【００１６】
データオブジェクトとしては、ファイル或いは仮想テープ全体など、どんなの種類のオブジェクトが採用されて良い。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の一実施形態に係るデータ処理システムを示す。
【図２】図２Ａは、装置管理プログラム１３０の機能ブロックを示す。図２Ｃは、エミュレータ１４０の機能ブロックを示す。
【図３】図３Ａは、仮想テープ２００内でのファイルと磁気ディスク１５６内でのファイルとの関係を示す。図３Ｂは、ファイル管理テーブル１４４の構成を示す。図３Ｃは、仮想テープ管理テーブル１４５の構成を示す。
【図４】図４Ａは、仮想テープ（ＶＴＡＰＥ１）でのファイルＶＴ１〜ＶＴ４の並びを示す。図４Ｂは、仮想テープ（ＶＴＡＰＥ２）でのファイルＶＴ５〜ＶＴ７の並びを示す。図４Ｃは、ファイルＶＴ１〜ＶＴ７を格納している磁気ディスク（ＤＩＳＫ１）〜（ＤＩＳＫ４）を示す。図４Ｄは、ファイル（ＶＴＡＰＥ１．ＤＳ１）が不要である場合の更新後のファイル管理テーブル１４４を示す。
【図５】図５Ａは、ファイル（ＶＴＡＰＥ１．ＤＳ１）が不要である場合の更新後の仮想テープ管理テーブル１４５を示す。図５Ｂは、不要なファイルが記憶されている記憶領域のうちＥＯＦデータ以外のデータが記憶されている記憶領域部分が無効化されたことを示す。図５Ｃは、エミュレータ１４０が行う処理の流れを示す。
【図６】図６Ａは、ファイルの世代管理の一例を示す。図６Ｂは、世代４のファイルが仮想テープに格納された時点で世代１のファイルが不要なファイルになったことを示す。図６Ｃは、上位プログラム７００がエミュレータ１４０に不要なファイルを通知する機能を有していることを示す。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本発明の一実施形態を説明する。なお、以後の説明では、「ｘｘｘテーブル」といった表現で情報が表現されるが、情報は、テーブルのデータ構造以外で表現されていてもよい。
【００１９】
図１は、本発明の一実施形態に係るデータ処理システムを示す。
【００２０】
通信ネットワーク１８０に、ホスト計算機１００、テープライブラリ装置１７０及びストレージ装置１５０が接続されている。装置１００、１７０及び１５０は、それぞれ１つのみ示されているが、それらのうちの少なくとも１つが複数個あっても良い。
【００２１】
通信ネットワーク１８０は、１以上のスイッチ装置１６０で構成されている。通信ネットワーク１８０は、例えば、ＦＣ（Fibre Channel）ネットワーク又はＩＰ（Internet Protocol）ネットワークである。
【００２２】
テープライブラリ装置１７０は、例えば、複数の実テープ（実際の磁気テープ）１７３と、実テープ１７３の複数のドライブ１７２と、ロボット１７１とを有する。ロボット１７１は、複数の実テープ１７３から選択された実テープ１７３を、複数のドライブ１７２のうちの選択されたドライブ１７２にセットする。例えば、ドライブ１７２にセットされた実テープ１７３に記憶されている全て又は一部のデータオブジェクトが、いずれかの仮想テープにロードされる。また、例えば、ドライブ１７２にセットされた実テープ１７３に、仮想テープ内の全て又は一部のデータオブジェクトがコピーされる。
【００２３】
ストレージ装置１５０は、コントローラ１５５と、磁気ディスク群１５７とを有する。
【００２４】
磁気ディスク群１５７は、複数の磁気ディスク（例えばハードディスクドライブ）１５６を有する。１つの仮想テープ（仮想的な磁気テープ）に格納される１又は複数のファイルが、実際には、１以上の磁気ディスク１５６に格納される。なお、磁気ディスグ群１５７は、複数のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループを有しても良い。各ＲＡＩＤグループは、二以上の磁気ディスク１５６を有する。ＲＡＩＤグループを基に、１又は複数の論理ボリュームが形成される。１つの仮想テープに格納される１又は複数のファイルが、１以上の論理ボリュームに格納されても良い。
【００２５】
コントローラ１５５は、ホスト計算機１００から磁気ディスク１５６へのアクセスを制御する。コントローラ１５５は、例えば、ＣＰＵやメモリを含んだ回路基板である。
【００２６】
ホスト計算機１００は、メモリ１２０と、メモリ１２０に接続されたＣＰＵ（Central Processing Unit）１１０とを有する。メモリ１２０は、テープ使用プログラム１２１、ファイル使用プログラム１２２、装置管理プログラム１３０及びエミュレータ１４０を記憶する。これらのコンピュータプログラム１２１、１２２、１３０及び１４０が、ＣＰＵ１１０で実行される。以下の説明において、コンピュータプログラムが行う処理は、実際には、そのコンピュータプログラムを実行するＣＰＵによって行われる。
【００２７】
テープ使用プログラム１２１は、ファイルを意識せずに仮想テープ全体を使用する一つの業務プログラムである。
【００２８】
ファイル使用プログラム１２２は、仮想テープ内のファイルを使用する一つの業務プログラムである。
【００２９】
装置管理プログラム１３０は、ホスト計算機１００に接続されている装置に関わる各種制御を行うプログラムである。装置管理プログラム１３０は、図２Ａに示すように、複数のモジュール、例えば、装置割当てモジュール１３１及び入出力モジュール１３２を有する。また、装置管理プログラム１３０は、装置管理テーブル１３３を管理する。
【００３０】
装置割当てモジュール１３１は、ストレージ装置１５０への割当て処理を行なう。
【００３１】
入出力処理モジュール１３２は、仮想テープへの入出力（アクセス）を行なう。
【００３２】
装置管理テーブル１３３は、ホスト計算機１００に接続されている装置に関する情報を含む。
【００３３】
前述したテープ使用プログラム１２１、ファイル使用プログラム１２２及び装置管理プログラム１３０が、エミュレータ１４０の上位プログラムに含まれる。具体的には、プログラム１２１又は１２２が、装置管理プログラム１３０に、所望の仮想テープ又は仮想テープ内のファイルを指定した入出力指示を出す。プログラム１３０内の入出力モジュール１３２が、プログラム１２１又は１２２からその入出力指示を受け、その指示に応答して、仮想テープ又はファイルを指定した入出力指示を出力する。出力された入出力指示は、エミュレータ１４０が受ける。
【００３４】
エミュレータ１４０は、磁気ディスク群１５７のうちの１以上の磁気ディスク１５６を複数（又は１つ）の仮想テープにエミュレートし、ストレージ装置１５０に関わる各種制御を行う（ストレージ装置１５０は、仮想テープの基になるため、「仮想テープ装置」と表現されても良い）。エミュレータ１４０は、図２Ｂに示すように、複数のモジュール、例えば、制御モジュール１４１、排他処理モジュール１４２及び入出力変換モジュール１４３を有する。また、エミュレータ１４０は、ファイル管理テーブル１４４、仮想テープ管理テーブル１４５及びディスク管理テーブル１４６を管理する。
【００３５】
制御モジュール１４１は、無効化処理を行う。
【００３６】
排他処理モジュール１４２は、仮想テープ又はファイルに対する排他制御を行う。具体的には、例えば、排他処理モジュール１４２は、或る仮想テープ内の不要ファイルを無効化している間、その仮想テープを排他対象に設定し、それにより、その仮想テープに対する入出力が行われないようにする（不要ファイルの無効化が終了した場合、その仮想テープを排他対象から外す）。
【００３７】
入出力変換モジュール１４３は、仮想テープに対する入出力を磁気ディスク１５６に対する入出力に変換する。具体的には、例えば、入出力変換モジュール１４３は、装置管理プログラム１３０から出力された入出力指示に応答し、その指示で指定されている仮想テープ又はファイルが排他の対象になっていなければ、その仮想テープ又はファイルに対応した磁気ディスク１５６を指定した入出力指示をストレージ装置１５０に送信する。これにより、ストレージ装置１５０内のコントローラ１５５が、その入手力指示に応答して、その指示で指定されている磁気ディスク１５６に対して入出力を行う。
【００３８】
ファイル管理テーブル１４４は、どのファイルがどの磁気ディスクに格納されているかを表す情報を含む。ファイル管理テーブル１４４は、いずれかの磁気ディスク１５６内のファイル管理簿１５２に格納されており、ストレージ装置１５０を使用する際にメモリ１２０に読み込まれる。
【００３９】
仮想テープ管理テーブル１４５は、どのファイルがどの仮想テープに格納されているかを表す情報を含む。仮想テープ管理テーブル１４５は、いずれかの磁気ディスク１５６内の仮想テープ管理簿１５３に格納されており、ストレージ装置１５０を使用する際にメモリ１２０に読み込まれる。
【００４０】
ディスク管理テーブル１４６は、各磁気ディスク１５６に関する情報（例えば、どの磁気ディスク１５６が仮想テープの基になるか、どの磁気ディスク１５６にどの管理簿１５２、１５３又は１５４が格納されているか）を表す情報を含む。ディスク管理テーブル１４６は、いずれかの磁気ディスク１５６内のディスク管理簿１５４に格納されており、ストレージ装置１５０を使用する際にメモリ１２０に読み込まれる。
【００４１】
ホスト計算機１００から磁気ディスク１５６への書込みは以下の通りである。装置管理プログラム１３０が、プログラム１２１又は１２２から、書込み先仮想テープを指定した書込み指示と書込み対象のファイルとを受ける。プログラム１３０内の入出力モジュール１３２が、その書込み指示と書込み対象ファイルとをエミュレータ１４０に渡す。エミュレータ１４０内の入出力変換モジュール１４３が、書込み先の磁気ディスク１５６を指定した書込み要求と、書込み対象のファイルとをストレージ装置１５０に送信する。ストレージ装置１５０内のコントローラ１５５が、その書込み要求に応答して、指定されているディスク装置１５６に、書込み対象のファイルを格納する。
【００４２】
図３Ａは、仮想テープ２００内でのファイルと磁気ディスク１５６内でのファイルとの関係を示す。以下、磁気ディスク１５６に格納されるファイルを「仮想テープファイル」と言うことがある。
【００４３】
仮想テープ２００では、複数のファイル２０１がシーケンシャルに並んでいる。各テープブロック２０２には、ファイル２０１を構成するデータ要素（ＤＥ）が格納される。
【００４４】
ファイル２０１が、磁気ディスク１５６に仮想テープファイル１５１として格納される。仮想テープファイル１５１は、データ要素（ＤＥ）毎に制御情報（ＣＩ）を有する。つまり、仮想テープファイル１５１は、複数のデータセット（データ要素（ＤＥ）と制御情報（ＣＩ）とのセット）を有する。制御情報（ＣＩ）は、その制御情報（ＣＩ）を有するデータセット内のデータ要素（ＤＩ）に関する情報（例えば、そのデータ要素（ＤＩ）が格納されているテープブロック２０２のＩＤ（例えば番号））を含む。各制御情報（ＣＩ）は、入出力変換モジュール１４３によって生成され、磁気ディスク１５６に格納される。
【００４５】
本実施形態では、ディスクブロック２１０のサイズが、テープブロック２０２のサイズより大きく、一つのディスクブロック２１０に、複数のデータセット（データ要素（ＤＩ）と制御情報（ＣＩ）とのセット）が格納される。しかし、格納形式は、それに限られない。例えば、１つのデータセットが複数のディスクブロック２１０に跨って格納されても良い。また、例えば、制御情報（ＣＩ）が付加されることなくファイルが磁気ディスク１５６に格納されても良い。また、ディスクブロック２１０のサイズ及びテープブロック２０２のサイズのうちの一方が他方の整数倍（例えば等倍）であっても良い（この場合、制御情報（ＣＩ）が付加されなくても良い）。
【００４６】
図３Ｂは、ファイル管理テーブル１４４の構成を示す。
【００４７】
ファイル管理テーブル１４４は、ファイル毎に、ファイル名３００、格納先ディスク情報３０１、格納先テープ情報３０２及び有効／無効フラグ３０３を有する。以下、一つのファイル（図３Ｂの説明で「対象ファイル」と言う）を例に採り、これらの要素３００〜３０３を説明する。
【００４８】
ファイルＩＤ３００は、対象ファイルを識別するための情報である。ファイルＩＤ３００は、例えば、ファイル名を含む。
【００４９】
格納先ディスク情報３０１は、対象ファイルの格納先に関する情報のうち磁気ディスクに関する情報である。情報３０１は、例えば、対象ファイルの格納先の磁気ディスクの名称を含む。情報３０１は、磁気ディスクのどこに対象ファイルが記憶されているかに関する情報、例えば、対象ファイルが記憶されているディスクブロック群のうちの先頭のディスクブロックのＩＤ（例えばアドレス）、対象ファイルが記憶されているディスクブロック群を構成するディスクブロックの数などを含んでも良い。
【００５０】
格納先テープ情報３０２は、対象ファイルの格納先に関する情報のうち仮想テープに関する情報である。情報３０２は、例えば、対象ファイルの格納先の仮想テープの名称を含む。情報３０２は、仮想テープのどこに対象ファイルが記憶されているかに関する情報、例えば、対象ファイルが記憶されているテープブロック群のうちの先頭のテープブロックのＩＤ（例えば番号）、対象ファイルが記憶されているテープブロック群を構成するテープブロックの数などを含んでも良い。
【００５１】
有効／無効フラグ３０３は、対象ファイルが有効か無効かを表すフラグである。
【００５２】
図３Ｃは、仮想テープ管理テーブル１４５の構成を示す。
【００５３】
仮想テープ管理テーブル１４５は、仮想テープ毎に、テープＩＤ３１０、仮想テープファイルＩＤ３１１及び有効／無効フラグ３１２を有する。以下、一つの仮想テープ（図３Ｃの説明で「対象仮想テープ」と言う）を例に採り、これらの要素３１０〜３０２を説明する。
【００５４】
テープＩＤ３１０は、対象仮想テープを識別するための情報である。テープＩＤ３１０は、例えば、仮想テープの名称を含む。
【００５５】
仮想テープファイルＩＤ３１１は、対象仮想テープに格納されている各ファイルに対応した仮想テープファイル毎に存在する。仮想テープファイルＩＤ３１１は、仮想テープファイルの名称を含む。本実施形態では、仮想テープファイルの名称は、仮想テープに格納されているファイルの名称と同じ名称であるが、そのファイルの名称と異なる名称であっても良い。
【００５６】
有効／無効フラグ３１２は、対象仮想テープに格納されているファイル毎に存在する。フラグ３１２は、前述した有効／無効フラグ３０３と同様である。
【００５７】
図３Ｂ及び図３Ｃに示したテーブル１４４及び１４５において、複数のファイルＩＤ３００の順序、及び、複数の仮想テープファイルＩＤ３１１の順序は、仮想テープにおける仮想テープファイルの並びの順序と同じである。具体的には、図４Ａに示すように、仮想テープ（ＶＴＡＰＥ１）には、４つの仮想テープファイルＶＴ１〜ＶＴ４が先頭からシーケンシャルに格納されており、図４Ｂに示すように、仮想テープ（ＶＴＡＰＥ２）には、３つの仮想テープファイルＶＴ５〜ＶＴ７が先頭からシーケンシャルに格納されている（各仮想テープファイル内の文字列は、仮想テープファイルのファイル名である）。そして、図３Ｂに示したテーブル１４４によれば、ファイルＶＴ１〜ＶＴ７は、図４Ｃに示すように、磁気ディスク（ＤＩＳＫ１）〜（ＤＩＳＫ４）に格納されている。
【００５８】
このような格納（ファイルの振り分け）は、エミュレータ１４０が行う。
【００５９】
例えば、エミュレータ１４０が、仮想テープ（ＶＴＡＰＥ１）が指定された書込み指示と、４つの書込み対象ファイルとを装置管理プログラム１３０内の入出力モジュール１３２から受ける。エミュレータ１４０内の入出力変換モジュール１４３は、書込み対象のファイル毎に、下記の処理：
（Ｗ１）書込み対象のファイルを、一つ以上のデータ要素に分割し、データ要素毎に制御情報が付加された仮想テープファイルに変換する；
（Ｗ２）変換後のデータ要素及び制御情報を任意の磁気ディスクに書き込む（具体的には、書込み先の磁気ディスクを指定した書込み要求と仮想テープファイルとをストレージ装置１５０に送信する）；
（Ｗ３）テーブル１４４及び１４５を更新する（その際、格納した仮想テープファイルに対応する有効／無効フラグの値は有効を意味する値とする）；
を行う。ここでは、仮想テープファイルＶＴ１が、磁気ディスク（ＤＩＳＫ１）に格納され、仮想テープファイルＶＴ２が、磁気ディスク（ＤＩＳＫ３）に格納され、仮想テープファイルＶＴ３が、磁気ディスク（ＤＩＳＫ４）に格納され、仮想テープファイルＶＴ４が、磁気ディスク（ＤＩＳＫ２）に格納される。
【００６０】
読み出しは、例えば次のように行われる。
【００６１】
例えば、エミュレータ１４０が、仮想テープ（ＶＴＡＰＥ１）が指定された読出し指示を装置管理プログラム１３０内の入出力モジュール１３２から受ける。エミュレータ１４０内の入出力変換モジュール１４３は、下記の処理：
（Ｒ１）テーブル１４５を参照して、仮想テープ（ＶＴＡＰＥ１）から未だ読み出しておらず且つ先頭に最も近い場所にあるファイルを特定する；
（Ｒ２）テーブル１４４を参照して、（Ｒ１）で特定されたファイルが実際にどこに格納されているかを特定する；
（Ｒ３）特定された場所（磁気ディスク）から、（Ｒ１）で特定されたファイルを読み出し、装置管理プログラム１３０に渡す；
（Ｒ４）読み出し対象のファイルを全て読み出したか否かを判断する；
（Ｒ５）（Ｒ４）での判断の結果が否定的であれば、（Ｒ１）を行い、（Ｒ４）での判断の結果が肯定的であれば、処理を終了する；
を行う。これにより、ＶＴ１、ＶＴ２、ＶＴ３及びＶＴ４の順に仮想テープファイルが読み出され、装置管理プログラム１３０に渡される。装置管理プログラム１３０内の入出力モジュール１３０が、読出しの指示元（例えばテープ使用プログラム１２１）に、仮想テープファイルを読み出された順に渡す。
【００６２】
さて、上述した仮想テープファイルＶＴ１〜ＶＴ７のうちのファイルＶＴ１が不要になったことが検出されたとする。この場合、エミュレータ１４０内の制御モジュール１４１が、図４Ｄ及び図５Ａに示すように、ファイルＶＴ１（ＶＴＡＰＥ１．ＤＳ１）に対応した有効／無効フラグ３０３及び３１２の値を、“有効”という値から“無効”という値に更新する。
【００６３】
有効／無効フラグ３０３及び３１２の値を“無効”という値に更新した契機で、エミュレータ１４０内の制御モジュール１４１が、図５Ｂに示すように、ファイルＶＴ１（ＶＴＡＰＥ１．ＤＳ１）が記憶されている記憶領域のうち、必要最小限のデータ（ＮＩ）以外のデータが記憶されている記憶領域部分を無効化する（解放する）。これにより、その記憶領域部分には、別のデータ（例えば、別の仮想テープファイル又はその一部分）を格納することが可能になる。
【００６４】
「必要最小限のデータ」とは、ファイル読出し元（例えばプログラム１２１又は１２２）が不要なファイルＶＴ１の代わりに受けてもエラーを検出することのないデータとしてサイズが最小のデータである。この種のデータとしては、例えば、ファイルＶＴ１のＥＯＦ（End Of File）を含んだＥＯＦデータである。ＥＯＦデータは、ＥＯＦそれ自体でも良い。さらに、必要最小限のデータとして、ファイルに対するラベル情報が含まれても良い。ラベル情報の一例としては、ファイルの名前であったり、ファイルを利用する上位アプリケーションに有用な情報であったりすることが考えられるが、これ以外の情報であってもよい。
【００６５】
不要なファイルＶＴ１が読出し対象の読出し指示をエミュレータ１４０が受けた場合、エミュレータ１４０内の入出力変換モジュール１４３が、テーブル１４４及び／又は１４５を参照し、ファイルＶＴ１が有効か無効かを判断する。ファイルＶＴ１が無効のため、モジュール１４３は、ファイルＶＴ１の代わりに、必要最小限データを、装置管理プログラム１３０に提供する。その必要最小限データは、装置管理プログラム１３０から、読出し指示元（プログラム１２１又は１２２）に送信される。
【００６６】
制御モジュール１４１は、不要なファイルＶＴ１を記憶している記憶領域の全てを無効化しても良い。このケースでは、例えば、制御モジュール１４１は、必要最小限データを、ファイルＶＴ１が格納されている磁気ディスク（ＤＩＳＫ１）とは別の磁気ディスクに格納しても良い。或いは、そのケースでは、例えば、必要最小限データはいずれの磁気ディスクに格納されなくても良い。この場合、例えば、エミュレータ１４０は、不要なファイルＶＴ１が読出し対象である読出し指示を受けた場合、磁気ディスクにアクセスすることなく、必要最小限データを、ファイルＶＴ１の代わりに装置管理プログラム１３０に提供することができる。必要最小限データは、装置管理プログラム１３０に提供する都度に生成されて提供されても良いし、ホストコンピュータ１００内の特定の場所（例えばメモリ１２０）に予め用意されていてその場所から提供されても良い。
【００６７】
図５Ｃは、エミュレータ１４０が行う処理の流れを示す。なお、以下の説明では、上述の必要最小限データはＥＯＦデータであるとする。
【００６８】
エミュレータ４０１は、上位プログラムから何らかの指示を受ける。その指示は、装置管理プログラム１３０、ファイル使用プログラム１２２及びテープ使用プログラム１２１のうちのいずれかから受ける。なお、入出力指示（書込み／読出し指示）は、プログラム１２１又は１２２から装置管理プログラム１３０を通じてエミュレータ４０１に送られる。
【００６９】
エミュレータ４０１は、受領した指示を基に、どんな操作を行うか判断する（ステップ４０１）。操作が読出しであれば、ステップ４１０が行われ、操作が書込みであれば、ステップ４２０が行われ、操作が無効化であれば、ステップ４３０が行われる。
【００７０】
ステップ４１０で、エミュレータ４０１は、読み出し対象のファイルに対応した有効／無効フラグ３０３及び／又は３１２を参照し、そのファイルが有効か無効かを判断する。有効と判断された場合（ステップ４１０：ＹＥＳ）、エミュレータ１４０は、そのファイルを磁気ディスクから読み出して上位プログラムに渡す（ステップ４１２）。一方、無効と判断された場合（ステップ４１０：ＮＯ）、エミュレータ１４０は、ファイルの代わりに必要ＥＯＦデータを上位プログラムに渡す（ステップ４１１）。
【００７１】
ステップ４２０で、エミュレータ４０１は、書込み対象のファイルに対応した有効／無効フラグ３０３及び／又は３１２を参照し、そのファイルが有効か無効かを判断する。有効と判断された場合（ステップ４２０：ＹＥＳ）、エミュレータ１４０は、そのファイルを磁気ディスクに書き込む（ステップ４２１）。一方、無効と判断された場合（ステップ４２０：ＮＯ）、エミュレータ１４０は、エラーを上位プログラムに返す（ステップ４２２）。
【００７２】
ステップ４３０で、エミュレータ４０１は、無効化処理を行う。具体的には、エミュレータ４０１は、下記の処理：
（Ｉ１）不要なファイルに対応した有効／無効フラグ３０３及び３１２の値を“無効”という値に更新する；
（Ｉ２）テーブル１４４及び／又は１４５を参照して、不要なファイルを格納している仮想テープを特定し、排他対象がその仮想テープであることを設定する；
（Ｉ３）不要なファイルが記憶されている記憶領域（磁気ディスク内の記憶領域）のうち、ＥＯＦデータ以外のデータが記憶されている記憶領域部分を無効化する；
（Ｉ４）上記（Ｉ２）での設定を解除する（排他の設定を解除する）；
を行う。
【００７３】
なお、不要なファイルは、上位プログラム（プログラム１２１、１２２及び１３０のうちの少なくとも１つ）からエミュレータ１４０に通知される。具体的には、例えば、図６Ａに示すように、上位プログラムが、ファイルの世代を管理している。上位プログラムは、例えば、世代ｎのファイルを仮想テープに格納した場合、世代（ｎ−ｋ）のファイルより古い世代のファイルを不要なファイルとしてエミュレータ１４０に通知する。図６Ｂの例によれば、ｎ＝４であり、ｋ＝２である。すなわち、世代４のファイルが格納された場合、世代１のファイルが不要なファイルとして検出される。図６Ｃに示すように、上位プログラム７００は、不要通知モジュール１２２１を有しており、そのモジュール１２２１が、検出された不要なファイル（世代１のファイル）に関する情報（例えばファイルＩＤ）をエミュレータ１４０に通知する。エミュレータ１４０は、通知された情報から特定されるファイル（世代１のファイル）を、不要なファイルとして、前述した無効化処理を行う。
【００７４】
上述した実施形態によれば、不要なファイルが記憶されている記憶領域のうち、必要最小限データ以外のデータが記憶されている記憶領域部分が無効化され（解放され）、それにより、その記憶領域部分は、別のデータを記憶することができる。また、読み出しの際には、不要なファイルの代わりに必要最小限データがエミュレータ１４０から上位プログラム７００に提供されるので、上位プログラム７００がエラーを検出する事が無い。以上のことから、上位プログラム７００に影響を与えることなく、磁気ディスクの容量効率を高めることができる。
【００７５】
以上、本発明の一つの実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００７６】
１４０…エミュレータ
【図１】
2010282383.tif 000003
【図２】
2010282383.tif 000004
【図３】
2010282383.tif 000005
【図４】
2010282383.tif 000006
【図５】
2010282383.tif 000007
【図６】
2010282383.tif 000008