(57)【特許請求の範囲】
【請求項１】
第１の記録媒体に格納されている複数のデータセットを複数の第２の記録媒体を利用してバックアップする装置であって、
上記第１の記録媒体から上記複数のデータセットを読み出す読出し手段と、
その読出し手段により読み出された複数のデータセットを上記複数の第２の記録媒体に書き込むための複数の書込み処理を並列的に実行する書込み手段と、
複数のデータセットを上記複数の第２の記録媒体を利用してバックアップするために要した時間を各データセットについてそれぞれ検出する検出手段と、
過去に上記検出手段により検出されたデータセット毎のバックアップ時間に基づいて、それらのデータセットを上記書込み手段により並列的に実行される複数の書込み処理に割り当てる割当て手段と、を有し、
上記割当て手段は、
上記複数のデータセットを、上記検出手段により検出されたバックアップ時間の長い順に、上記複数の第２の記録媒体のそれぞれに順番に割り当てる第１の手順、
上記第１の手順に続いて、上記複数のデータセットを、上記検出手段により検出されたバックアップ時間の長い順に、上記第１の手順とは逆の順番で上記複数の第２の記録媒体のそれぞれに割り当てる第２の手順、
全データセットが割り当てられるまで上記第１および第２の手順を交互に繰り返す第３の手順、
上記第３の手順の後に、上記第１の手順の１つ飛ばしの順番に、上記第２の記録媒体の書込み実行順序を反転させる第４の手順、を実行する
ことを特徴とするバックアップ装置。
【請求項２】
請求項１に記載のバックアップ装置であって、
上記割当て手段は、上記並列的に実行される複数の書込み処理の処理時間が均一または略均一になるように、上記複数のデータセットをそれらの書込み処理に割り当てる
ことを特徴とするバックアップ装置。
【請求項３】
請求項１に記載のバックアップ装置であって、
上記割当て手段は、
過去にバックアップ処理が実行されたデータセットについて、過去に上記検出手段により検出されたバックアップ時間に基づいて、次回のバックアップ処理に要するであろう予測時間を算出する第１の算出手段と、
過去にバックアップ処理が実行されていないデータセットについて、そのデータセットのデータ量に基づいて、次回のバックアップ処理に要するであろう予測時間を算出する第２の算出手段を含み、
上記第１および第２の算出手段により算出される各データセットについての予測時間に基づいて、それらのデータセットを上記並列的に実行される複数の書込み処理に割り当てる
ことを特徴とするバックアップ装置。
【請求項４】
第１の記録媒体に格納されている複数のデータセットを複数の第２の記録媒体を利用してバックアップする装置であって、
上記第１の記録媒体から上記複数のデータセットを読み出す読出し手段と、
その読出し手段により読み出された複数のデータセットを上記複数の第２の記録媒体に書き込むための複数の書込み処理を並列的に実行する書込み手段と、
上記複数のデータセットの各データ量を検出する検出手段と、
その検出手段により検出されたデータセット毎のデータ量に基づいて、それらのデータセットを上記書込み手段により並列的に実行される複数の書込み処理に割り当てる割当て手段と、を有し、
上記割当て手段は、
上記複数のデータセットを、上記検出手段により検出されたデータ量の大きい順に、上記複数の第２の記録媒体のそれぞれに順番に割り当てる第１の手順、
上記第１の手順に続いて、上記複数のデータセットを、上記検出手段により検出されたデータ量の大きい順に、上記第１の手順とは逆の順番で上記複数の第２の記録媒体のそれぞれに割り当てる第２の手順、
全データセットが割り当てられるまで上記第１および第２の手順を交互に繰り返す第３の手順、
上記第３の手順の後に、上記第１の手順の１つ飛ばしの順番に、上記第２の記録媒体の書込み実行順序を反転させる第４の手順、を実行する
ことを特徴とするバックアップ装置。
【請求項５】
第１の記録媒体に格納されている複数のデータセットを複数の第２の記録媒体を利用してバックアップする方法であって、
上記第１の記録媒体から上記複数のデータセットを読み出す読出し手順と、
読み出された複数のデータセットを上記複数の第２の記録媒体に書き込むための複数の書込み処理を並列的に実行する書込み手順と、
複数のデータセットを上記複数の第２の記録媒体を利用してバックアップするために要した時間を各データセットについてそれぞれ検出する検出手順と、
過去に検出されたデータセット毎のバックアップ時間に基づいて、それらのデータセットを上記書込み手順により並列的に実行される複数の書込み処理に割り当てる割当て手順、を有し、
上記割当て手順は、
上記複数のデータセットを、上記検出手順により検出されたバックアップ時間の長い順に、上記複数の第２の記録媒体のそれぞれに順番に割り当てる第１の手順、
上記第１の手順に続いて、上記複数のデータセットを、上記検出手順により検出されたバックアップ時間の長い順に、上記第１の手順とは逆の順番で上記複数の第２の記録媒体のそれぞれに割り当てる第２の手順、
全データセットが割り当てられるまで上記第１および第２の手順を交互に繰り返す第３の手順、
上記第３の手順の後に、上記第１の手順の１つ飛ばしの順番に、上記第２の記録媒体の書込み実行順序を反転させる第４の手順、を含む
ことを特徴とするバックアップ方法。
【請求項６】
第１の記録媒体に格納された複数のデータセットを複数の第２の記録媒体を利用してバックアップするために使用するコンピュータを、
上記第１の記録媒体から上記複数のデータセットを読み出す読出し手段、
その読出し手段により読み出された複数のデータセットを上記複数の第２の記録媒体に書き込むための複数の書込み処理を並列的に実行する書込み手段、
複数のデータセットを上記複数の第２の記録媒体を利用してバックアップするために要した時間を各データセットについてそれぞれ検出する検出手段、
過去に上記検出手段により検出されたデータセット毎のバックアップ時間に基づいて、それらのデータセットを上記書込み手段により並列的に実行される複数の書込み処理に割り当てる割当て手段、として機能させるプログラムであって、
上記割当て手段は、
上記複数のデータセットを、上記検出手段により検出されたバックアップ時間の長い順に、上記複数の第２の記録媒体のそれぞれに順番に割り当てる第１の手順、
上記第１の手順に続いて、上記複数のデータセットを、上記検出手段により検出されたバックアップ時間の長い順に、上記第１の手順とは逆の順番で上記複数の第２の記録媒体のそれぞれに割り当てる第２の手順、
全データセットが割り当てられるまで上記第１および第２の手順を交互に繰り返す第３の手順、
上記第３の手順の後に、上記第１の手順の１つ飛ばしの順番に、上記第２の記録媒体の書込み実行順序を反転させる第４の手順、を実行する
ことを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データをバックアップする装置および方法に係わる。特に、複数のデータセットを複数の記録媒体を用いてバックアップする際の効率を向上させる技術に係わる。
【０００２】
【従来の技術】
様々な分野において情報化が進み、それに伴って大量のデータを蓄積するための装置が必要不可欠になってきている。また、それらのデータの中には、しばしば重要な情報が含まれているので、大量のデータをバックアップするための技術も実用化されている。
【０００３】
大量のデータは、一般に、複数の記憶装置に分散して格納される。この場合、記憶装置としては、たとえば、磁気ディスク装置等のＤＡＳＤ（Direct Access Storage Device）が用いられる。一方、バックアップ用記憶装置としては、しばしば磁気テープ記録媒体が用いられる。そして、格納すべきデータ量が大きい場合には、このバックアップ用の磁気テープ記録媒体も複数必要となる。
【０００４】
複数の記録媒体を用いてデータをバックアップする場合は、そのバックアップ時間を短縮するために、通常、それらの記録媒体へデータを書き込むための複数の書込み処理が並列的に実行される。すなわち、上述の例においては、複数の磁気ディスク装置から読み出されたデータは、複数の磁気テープ記録媒体に並列に書き込まれる。この並列処理は、例えば、磁気ディスク装置からデータ読み出して所定の磁気テープ記録媒体に書き込むジョブを磁気ディスク装置毎に（あるいは、論理ボリューム毎に）作成し、それらのジョブを並列に実行することにより実現される。
【０００５】
【発明が解決しようとする課題】
ところで、各磁気ディスク装置に格納されているデータの量は、一般に、均一ではない。このため、上述の並列処理により実行されるジョブの組合せが適切でないと、バックアップ時間が必要以上に長くなってしまう。例えば、第１〜第３の磁気ディスク装置にそれぞれ格納されているデータを第１の磁気テープ記録媒体に書き込む処理と、第４〜第６の磁気ディスク装置にそれぞれ格納されているデータを第２の磁気テープ記録媒体に書き込む処理とを並列して実行する場合を考える。この場合、もし第１〜第３の磁気ディスク装置に格納されているデータ量が第４〜第６の磁気ディスク装置に格納されているデータの量よりも大きかったとすると、第２の磁気テープ記録媒体にデータを書き込む処理が終了した後、しばらくの間、第１の磁気テープ記録媒体にデータを書き込む処理が続くことになる。これにより、全体のバックアップ時間が必要以上に長くなってしまう。
【０００６】
全体のバックアップ時間を短縮するためには、上述の並列処理により実行されるジョブの組合せが適切でなければならない。しかし、従来は、上述のジョブを自動的に適切に組み合わせる手法は考えられておらず、ユーザがマニュアルでジョブの組合せを設定（チューニング処理）していた。したがって、ジョブ数が多くなると、それらのジョブを適切に組み合わせることが困難であった。また、任意の磁気ディスク装置にデータが追加されたり、あるいは任意の磁気ディスク装置からデータが削除された場合には、その都度、ユーザがマニュアルでジョブの組合せを変更する必要があった。
【０００７】
なお、この問題は、磁気ディスク装置に格納されているデータを磁気テープ記録媒体を用いてバックアップする場合に限らず、任意の記録媒体に格納されているデータを他の記録媒体を利用してバックアップする際に発生し得る。
【０００８】
本発明の課題は、複数の記録媒体を利用してデータをバックアップする際の処理時間を自動的に短くする装置および方法を提供することである。
【０００９】
【課題を解決するための手段】
本発明のバックアップ装置は、第１の記録媒体に格納されている複数のデータセットを複数の第２の記録媒体を利用してバックアップする構成を前提とし、第１の記録媒体から上記複数のデータセットを読み出す読出し手段と、その読出し手段により読み出された複数のデータセットを複数の第２の記録媒体に書き込むための複数の書込み処理を並列的に実行する書込み手段と、複数のデータセットを複数の第２の記録媒体を利用してバックアップするために要した時間を各データセットについてそれぞれ検出する検出手段と、過去に検出手段により検出されたデータセット毎のバックアップ時間に基づいて、それらのデータセットを上記並列的に実行される複数の書込み処理に割り当てる割当て手段とを有する。
【００１０】
上記構成において、各書込み処理の処理時間は、基本的に、それぞれその書込み処理に割り当てられているデータセットのバックアップ時間の合計値として表される。ここで、各データセットをバックアップするための時間は、検出手段により過去に検出された時間から推測することができる。したがって、過去に検出手段により検出されたデータセット毎のバックアップ時間に基づいてそれらのデータセットを複数の書込み処理に割り当てるようにすれば、各書込み処理の処理時間を調整することができる。本発明のバックアップ装置は、これを利用し、全体のバックアップ時間が短くなるように、複数のデータセットを上記複数の書込み処理に割り当てる。
【００１１】
割当て手段は、例えば、上記複数の書込み処理の処理時間が均一または略均一になるように、上記複数のデータセットをそれらの書込み処理に割り当てるようにしてもよい。これにより、処理時間が必要以上に長くなる書込み処理がなくなるので、全体のバックアップ時間が短くなる。
【００１２】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照しながら説明する。
図１は、本発明の実施形態のシステム構成図である。以下の実施例では、ＤＡＳＤ（Direct Access Storage Device）に格納されているデータを磁気テープ装置を用いてバックアップする場合を想定する。なお、ＤＡＳＤは、ここでは、磁気ディスク装置とする。
【００１３】
ホストコンピュータ１０は、複数の磁気ディスク装置（ＤＡＳＤ）２０を１つの記憶装置として利用することができる。即ち、ホストコンピュータ１０は、所望のデータを１または複数の磁気ディスク装置２０から取り出すことができ、また、データを所望の１または複数の磁気ディスク装置２０に格納することができる。なお、磁気ディスク装置２０からデータを読み出す処理および磁気ディスク装置２０へデータを書き込む処理は、ホストコンピュータ１０からの指示に従って、コントローラ３０により実行される。
【００１４】
また、ホストコンピュータ１０は、複数の磁気テープ装置（ＣＭＴ）４０を１つの記憶装置として利用することができる。すなわち、ホストコンピュータ１０は、データを所望の１または複数の磁気テープ装置４０に格納できる。この実施例のバックアップ処理では、磁気ディスク装置２０から読み出した１または複数のデータセットが１または複数の磁気テープ装置４０に格納される。そして、当然のことではあるが、ホストコンピュータ１０は、磁気テープ装置４０に格納されているデータを読み出すことができる。なお、磁気テープ装置４０へデータを書き込む処理および磁気テープ装置４０からデータを読み出す処理は、ホストコンピュータ１０からの指示に従って、コントローラ５０により実行される。
【００１５】
バックアップ処理においては、基本的に、すべての磁気ディスク装置２０にそれぞれ格納されているデータが読み出され、それらのデータが複数の磁気テープ装置４０に書き込まれる。ただし、一部の磁気ディスク装置２０に格納されているデータについてバックアップ処理を行うこともできる。
【００１６】
バックアップ処理は、例えば、ボリューム単位で実行される。なお「ボリューム」は、一般には、磁気ディスクや磁気テープ等の１つの着脱可能な記録装置を指すことが多いが、ここでは、仮想的なボリュームを想定する。すなわち、１台の磁気ディスク装置を１つのボリュームを考えてもよいし、或いは、１台の磁気ディスク装置の中に複数のボリュームが存在するものとしてバックアップ処理を実行してもよい。
【００１７】
本実施形態のバックアップ処理においては、各ボリュームに格納されているデータを読み出してそれを所定の磁気テープ装置４０に書き込む処理を「ジョブ」と呼ぶことにする。また、各ジョブを実行することによりバックアップされる１かたまりのデータを「データセット」と呼ぶことがある。
【００１８】
ホストコンピュータ１０は、複数のジョブを並列的に実行する。この場合、ホストコンピュータ１０は、バックアップ処理に係わるジョブを複数のグループに振り分け、それら複数のグループに属するジョブを並列的に実行していく。ここで、ホストコンピュータ１０は、バックアップ処理に要する総時間（すなわち、すべてのジョブが実行されるまでの時間）が出来るだけ短くなるようにジョブの組合せを最適化する。
【００１９】
図２は、時間管理テーブルの例である。この時間管理テーブルは、図１に示すホストコンピュータ１０が備えるメモリ上に設けられ、バックアップ処理に要する総時間が短くなるようにジョブの組合せを決定するために利用される。なお、ここでは、９つのボリューム（Ａ０１〜Ａ０３、Ｂ０１〜Ｂ０３、Ｃ０１〜Ｃ０３）にそれぞれ格納されているデータのバックアップを実行するものとする。このとき、各ボリューム毎に対応してジョブが作成されるものとする。
【００２０】
時間管理テーブルにおいて、「データ量」は、各ボリュームに格納されているデータの量を表す。図２に示す例では、例えば、ボリュームＡ０１に１．５Ｇバイトのデータが格納されており、ボリュームＡ０２に１．１Ｇバイトのデータが格納されている。この値は、各ボリュームのデータが更新されたとき（データの追加、削除、変更を含む）に更新される。なお、各ボリュームに格納されているデータの量を検出する方法は、既知の技術なので、具体的な方法についての説明は省略する。
【００２１】
「バックアップ回数」は、各ボリュームに格納されているデータについてバックアップを実行した回数を表す。なお、この値は、対応するボリュームのデータが更新されたときに「０」に戻る。
【００２２】
「当日の実績時間」は、バックアップ処理が実行されたときに、そのバックアップ処理に要した時間を表す。この値は、例えば、該当するボリュームからデータを読み出す処理が開始されたときから、そのデータが所定の磁気テープ装置に書き込まれるまでの時間を計測することにより得られる。
【００２３】
「前日までの平均時間」は、過去に実行したバックアップ処理に要した時間の平均値である。図２に示す例では、たとえば、ボリュームＡ０１について「１５分」が得られており、ボリュームＡ０２について「１２分」が得られている。なお、この値を算出する方法は、後述する。
【００２４】
「当日の予測時間」は、各ボリュームに格納されているデータをバックアップするために要するであろう時間を表す。この値は、「前日までの平均時間」が算出されている場合には、その値がそのまま使用される。一方、「前日までの平均時間」が算出されていない場合、即ち、あるボリュームのデータが更新された後の第１回目のバックアップ処理においては、そのボリュームについては、「データ量」に基づいて算出される。なお、新たに設けられたボリュームについても、「当日の予測時間」は「データ量」に基づいて算出される。図２に示す例では、ボリュームＡ０１〜Ａ０３、Ｂ０１〜Ｂ０３、Ｃ０１〜Ｃ０２については、「当日の予測時間」として「前日までの平均時間」がそのまま設定されており、ボリュームＣ０３については、「当日の予測時間」として「データ量」に基づいて算出された値が設定されている。
【００２５】
図３は、新規ボリュームが追加された際、あるいは任意のボリュームのデータが更新された際の動作を説明するフローチャートである。このフローチャートの処理は、新たなボリュームが追加されたとき、あるいは既存のボリュームの中の任意のボリュームのデータが更新されたときに実行される。ここで、データ更新は、データの追加、データの削除、データを変更を含む。
【００２６】
ステップＳ１では、新たに追加されたボリューム、或いはデータが更新されたボリュームに格納されているデータの量を検出する。ステップＳ２では、ステップＳ１で検出したデータ量を、時間管理テーブル内の対応するフィールドの「データ量」に設定する。なお、新たにボリュームが追加された場合には、時間管理テーブル内にそのボリュームに対応するフィールドを生成し、そのフィールドの「データ量」に検出した値が設定される。この後、ステップＳ３において、対応するフィールドの「バックアップ回数」に「０」を設定する。上記処理により、時間管理テーブルにおいて、対応するボリュームについての「データ量」が更新されると共に、「バックアップ回数」がリセットされる。
【００２７】
図４は、バックアップ処理のフローチャートである。このフローチャートの処理は、バックアップ処理が起動されたときに、ホストコンピュータ１０により実行される。
【００２８】
ステップＳ１１では、時間管理テーブルから任意のボリュームに対応するフィールドのデータを抽出する。ステップＳ１２では、ステップＳ１１で抽出したデータの中の「バックアップ回数」が「０」であるか否かを調べる。「バックアップ回数」が「０」であった場合は、ステップＳ１３へ進み、そうでない場合にはステップＳ１４へ進む。
【００２９】
ステップＳ１３では、ステップＳ１１で抽出したデータの中の「データ量」に基づいて「当日の予測時間」を算出する。この算出においては、「バックアップ能力」も参照される。ここで、「バックアップ能力」は、ホストコンピュータ１０、磁気ディスク装置２０、磁気テープ装置４０の性能などにより決まる。このため、もし、磁気ディスク装置２０の性能が互いに同じでなかったとすると、あるボリュームについての「バックアップ能力」と他のボリュームについての「バックアップ能力」とが異なることになる。したがって、磁気ディスク装置２０の性能が均一でない場合には、時間管理テーブルに「バックアップ能力」を設定するためのレコードを設け、各ボリューム毎にその値を予め設定しておく必要がある。
【００３０】
ステップＳ１３において、「当日の予測時間」は、例えば下記の式により求められる。ここで、「バックアップ能力」の単位は、例えば、「メガバイト／秒」である。
「当日の予測時間」＝「データ量」／「バックアップ能力」
ステップＳ１４では、ステップＳ１１で抽出したデータの中の「前日までの平均時間」をそのまま「当日の予測時間」に設定する。
【００３１】
ステップＳ１５は、時間管理テーブルに登録されているすべてのボリュームについて上記ステップＳ１２〜Ｓ１４の処理を実行するために設けられている。すなわち、未処理のボリュームが残っている場合には、ステップＳ１１に戻って次のボリュームに対応するフィールドのデータを抽出する。
【００３２】
ステップＳ１６では、各ボリュームに対応するジョブを並列的に処理する際のジョブの組合せを決定する。図２に示す例では、時間管理テーブルに９つのボリュームが登録されており、９つのジョブが作成される。ここで、図１に示すシステムにおいて、コントローラ５０ａ〜５０ｃが互いに並列的にデータ書込み処理を実行できるものとする。この場合、各ジョブは、コントローラ５０ａ〜５０ｃの中のいずれか１つに割り当てられることになる。なお、ジョブの組合せを決定する方法については、後述詳しく説明する。
【００３３】
ステップＳ１７では、ステップＳ１６において決定された組合せに従って、並列的にバックアップ処理を実行する。ステップＳ１８では、各ジョブの処理時間を検出することにより、各ボリュームごとにバックアップ時間を検出する。このステップＳ１８の処理は、ステップＳ１７の処理と並列に実行される。
【００３４】
ステップＳ１９では、バックアップ処理の結果に従って、時間管理テーブルを更新する。具体的には、まず、ステップＳ１８において検出した各ボリューム毎のバックアップ時間を、それぞれ対応する「当日の実績時間」に設定する。続いて、各ボリューム毎に、過去の実績を参照してバックアップ処理に要した時間の平均値を算出する。この平均時間は、例えば、下記の式により求められる。
「平均時間」＝（「前日までの平均時間」×「バックアップ回数」＋「当日の実績時間」）／（「バックアップ回数」＋１）
ここで、「前日までの平均時間」「バックアップ回数」「当日の実績時間」および「バックアップ回数」は、それぞれ時間管理テーブルに設定されている値を用いる。例えば、図２に示す例において、ボリュームＡ０３のバックアップ処理のために２１分を要したとすると、平均時間は、下記の値となる。
0004064033.tif 000002
上述のようにしてボリューム毎に算出された「平均時間」は、時間管理テーブル内の対応する「前日までの平均時間」にそれぞれ設定される。更に、この後、時間管理テーブルにおいて各ボリュームの「バックアップ回数」に「１」が加算される。
【００３５】
このように、本実施形態においては、バックアップ処理を開始する前に、各ジョブの処理時間の予測値を予め求めておき、これらの予測値に従ってジョブが適切に並べ替えられて並列的に実行される。このとき、これらのジョブは、全体のバックアップ時間が短くなるように、或いは並列に実行される複数の処理シーケンスの実行時間が均一または略均一になるように、並べ替えられる。以下、複数のジョブを複数の処理シーケンスに振り分ける方法の実施例を説明する。
【００３６】
図５は、複数のジョブを複数の処理シーケンスに振り分ける方法の実施例であり、図４のステップＳ１６に対応する。ここでは、図２に示した時間管理テーブルに基づいてバックアップ処理が実行されるものとする。また、複数の磁気テープ装置４０へデータを書き込むための３つの処理シーケンス（図５に示す処理１〜処理３）が並列的に実行されるものとする。
【００３７】
この実施例の方法では、まず、各ジョブは、対応するボリュームの「当日の予測時間」が長い順番に並べられる。ここでは、図２に示す時間管理テーブルに従って、ジョブ（Ａ０３）、ジョブ（Ｂ０１）、ジョブ（Ａ０１）、ジョブ（Ｃ０１）、ジョブ（Ｂ０２）、ジョブ（Ａ０２）、ジョブ（Ｃ０３）、ジョブ（Ｂ０３）、ジョブ（Ｃ０２）の順番に並べられる。
【００３８】
続いて、上述のようにして並べられたジョブは、図５に示すように、１つずつ順番に実行順序管理テーブルに設定されていく。このとき、これらのジョブは、まず昇り順（処理１、処理２、処理３の順番）に１つずつ順番に割り当てられ、次に、下り順（処理３、処理２、処理１の順番）に１つずつ順番に割り当てられる。以降、昇り順／下り順を交互に繰り返しながら、ジョブが１つずつ対応する処理シーケンスに割り当てられていく。これにより、図５に示す実行順序管理テーブルが得られる。
【００３９】
この後、処理番号が偶数の処理シーケンスにおいて、ジョブの実行順序を反転させる。例えば、図５に示す例では、この処理により、「処理２」において、第１番目にジョブ（Ｂ０３）、２番目にジョブ（Ｂ０２）、３番目にジョブ（Ｂ０１）が設定されることになる。
【００４０】
この処理は、本実施形態の方法において必須ではないが、並列処理の弊害を小さくする上で有効である。たとえば、大規模な磁気テープ装置の中には、多数の磁気テープを収容する収容棚および複数の書込み／読出し装置を備え、ロボットが、指定された磁気テープをその収容棚から取り出して指定された書込み／読出し装置定にマウントするものが知られている。このような構成の磁気テープ装置においては、あるジョブが終了して次のジョブが開始される際に、書込み／読出し装置から磁気テープを取り出して他の磁気テープをその装置にマウントする処理が発生する。このとき、複数のジョブが並列的に実行される環境においては、上述のマウント動作が競合する場合がある。ここで、マウントの競合が発生すると、各処理シーケンスのマウント動作は、他の処理シーケンスのマウント動作が終了するまで待たされることになる。よって、上記並列処理環境においては、あるジョブが終了して次のジョブが開始されるタイミングが互いに重なり合わないことが望ましい。
【００４１】
ところが、本実施形態の方法で複数のジョブを複数の処理シーケンスに振り分けると、バックアップ処理の終了間際に実行時間の短いジョブが集中し、あるジョブが終了して次のジョブが開始されるタイミングが互いに重なり合う可能性が高くなってしまう。このため、処理番号が偶数の処理シーケンスにおいてジョブの実行順序を反転させることにより、上述の問題による弊害を軽減している。
【００４２】
この後、ホストコンピュータ１０は、上述のようにして作成した実行順序管理テーブルに従ってバックアップ処理を実行する。すなわち、ジョブ（Ａ０３）、ジョブ（Ａ０２）、ジョブ（Ｃ０３）を順番に実行する処理シーケンス１、ジョブ（Ｂ０３）、ジョブ（Ｂ０２）、ジョブ（Ｂ０１）を順番に実行する処理シーケンス２、およびジョブ（Ａ０１）、ジョブ（Ｃ０１）、ジョブ（Ｃ０２）を順番に実行する処理シーケンス３を並列的に実行する。
【００４３】
図６は、複数のジョブを複数の処理シーケンスに振り分ける処理のフローチャートであり、図４のステップＳ１６に対応する。ここでは、複数の磁気テープ装置４０へデータを書き込むためのｎ個の処理シーケンスが並列的に実行されるものとする。
【００４４】
ステップＳ２１では、時間管理テーブルに設定されている「当日の予測時間」の長い順番にジョブをソートし、ジョブ列を作成する。ステップＳ２２では、ステップＳ２１で作成したジョブ列の先頭からｎ個のジョブを抽出する。ステップＳ２３では、ステップＳ２２で抽出したｎ個のジョブを、ｎ個の処理シーケンスに対して昇り順に割り当てる。ステップＳ２４では、ステップＳ２１で作成したジョブ列に未処理のジョブが残っているか否かを調べる。そして、未処理のジョブが残っている場合には、ステップＳ２５へ進み、そうでない場合にはステップＳ２８へ進む。
【００４５】
ステップＳ２５では、上記ジョブ列の先頭から未だ抽出されていないｎ個のジョブを抽出する。ステップＳ２６では、ステップＳ２５で抽出したｎ個のジョブを、ｎ個の処理シーケンスに対して下り順に割り当てる。ステップＳ２７では、ステップＳ２１で作成したジョブ列に未処理のジョブが残っているか否かを調べる。そして、未処理のジョブが残っている場合には、ステップＳ２２に戻り、そうでない場合にはステップＳ２８へ進む。なお、ステップＳ２２またはＳ２５において、上記ジョブ列に残っているジョブの数がｎ個未満のときは、それらのジョブをすべて抽出する。この後、ステップＳ２８において、処理シーケンス番号が偶数の処理シーケンスにおいて、ジョブの実行順序を反転させる。
【００４６】
なお、上記実施例では、「当日の予測時間」の長い順番にジョブを各処理シーケンスに振り分けているが、「当日の予測時間」の短い順番にジョブを各処理シーケンスに振り分けるようにしてもよい。
【００４７】
図７は、上記実施例による効果を説明する図である。ここでは、図２に示す時間管理テーブルに登録されている９つのボリュームについてバックアップ処理を行う場合を想定し、並列的に実行される３つの処理シーケンスについて、それぞれ「当日の予測時間」の合計値を示す。
【００４８】
図７(a) は、本実施形態の方法を使用せずに、ボリュームの識別番号の並び順に従って９つのジョブを単純に３つの処理シーケンスに割り当てた場合を示している。この場合、処理シーケンス２、３については、実行時間が比較的短くなることが期待されるが、処理シーケンス１の実行時間はかなり長くなるものと予想される。このように、幾つかの処理シーケンスが比較的早く終了したとしても、実行時間の長い処理シーケンスが１つでも含まれていると、すべてのバックアップ処理が終了するまでの時間は結果として長くなってしまう。
【００４９】
従来は、この問題を解決しようとした場合、ユーザが手作業で、ジョブの組合せを変更していた。たとえば、実行時間が最も長かった処理シーケンスの所定のジョブと実行時間が最も短かった処理シーケンスの所定のジョブとを入れ替えてバックアップ処理を実行し、その結果に基づいてさらにジョブの入れ替えが必要か否かを判断しながらジョブの入れ替え作業を繰り返していた。このため、ジョブ数が多くなった場合、あるいは並列に実行される処理シーケンスの数が多くなった場合には、そのような入れ替え作業は困難であった。また、各ボリュームのデータ量が変わった場合、あるいは新たなボリュームが追加された場合には、ジョブを組み合わせる作業をやり直す必要があり、ユーザの負担が重かった。
【００５０】
図７(b) は、本実施形態の方法を使用した場合のバックアップ処理の予測時間を示す。このグラフは、図５に示した実行順序管理テーブルに従っている。
このように、本実施形態の方法を使用すると、本実施形態の方法を使用しない場合と比べて、処理シーケンス間のばらつきが小さくなると共に、実行時間の最大値が小さくなっている。これにより、すべてのバックアップ処理が終了するまでの時間が短くなる。
【００５１】
図８は、複数のジョブを複数の処理シーケンスに振り分ける方法の他の実施例であり、図４のステップＳ１６に対応する。ここでも、図２に示した時間管理テーブルに基づいてバックアップ処理が実行されるものとする。また、複数の磁気テープ装置４０へデータを書き込むための３つの処理シーケンス（図５に示す処理１〜処理３）が並列的に実行されるものとする。
【００５２】
この実施例の方法においても、まず、各ジョブは、図５〜図６に示した実施例の方法と同様に、対応するボリュームの「当日の予測時間」が長い順番に並べられる。
【００５３】
続いて、各処理シーケンスの「目標バックアップ時間」を算出する。この「目標バックアップ時間」は、下記の式により算出される。
「目標バックアップ時間」＝Σ「当日の予測時間」／「並列に実行される処理シーケンスの数」
例えば、図２に示した例では、下記のようになる。
0004064033.tif 000003
そして、上述のようにして並べられたジョブは、図８に示すように、１つずつ順番に実行順序管理テーブルに設定されていく。このとき、これらのジョブは、各処理シーケンスの実行時間が「目標バックアップ時間」に対して一定の範囲内に収まるように適切に選択されて対応する処理シーケンスに振り分けられる。図８に示す例では、一定の範囲として「±２０％」が設定されている。
【００５４】
具体的に説明する。まず、始めに、処理シーケンス１に割り当てるべきジョブを決定する。この場合、まず、時間管理テーブルに登録されているボリュームの中で「当日の予測時間」が最も長いボリュームに対応するジョブを処理シーケンス１に割り当てる。ここでは、処理シーケンス１にジョブ（Ａ０３）が割り当てられる。そして、このジョブの「当日の予測時間」が「目標範囲」に入っているか否を調べる。なお、「目標範囲」は、「目標バックアップ時間±２０％」、すなわち３２分〜４８分であるものとする。ここでは、ジョブ（Ａ０３）の「当日の予測時間」は「２０分」であり、上記目標範囲には入っていない。
【００５５】
この場合、処理シーケンス１に、「当日の予測時間」が２番目に長いボリュームに対応するジョブを割り当てる。ここでは、処理シーケンス１にジョブ（Ｂ０１）が割り当てられる。そして、このジョブ（Ｂ０１）及び先に処理シーケンス１に割り当てられているジョブ（Ａ０３）の「当日の予測時間」の和が、目標範囲に入っているか否かを調べる。ここでは、ジョブ（Ｂ０１）の「当日の予測時間」は「１８分」なので、上記２つのジョブの「当日の予測時間」の和は「３８分」である。すなわち、これら２つのジョブの「当日の予測時間」の和は、目標範囲に入っている。したがって、処理シーケンス１にジョブを割り当てる作業を終了する。
【００５６】
以下、処理シーケンス２、３についても、同様の手順でジョブが割り当てられる。これにより、図８に示す実行順序管理テーブルが得られる。
なお、目標範囲を変更すると、ジョブの割当てが変わることがある。例えば、目標範囲として、「目標バックアップ時間±５％」、すなわち、３８分〜４２分とした場合の例を図９に示す。このとき、もし、処理シーケンス２に対して、ジョブ（Ａ０１）およびジョブ（Ｃ０１）を割り当てた後にジョブ（Ｂ０２）を割り当てると、それらのジョブの「当日の予測時間」の合計値は、「４４分」となり、目標範囲を越えてしまう。したがって、この場合は、処理シーケンス２に対して、ジョブ（Ａ０１）およびジョブ（Ｃ０１）を割り当てた後に、「当日の予測時間」がジョブ（Ｂ０２）よりも短いジョブを選択して、それを処理シーケンス２に割り当てる。ここでは、処理シーケンス２にジョブ（Ａ０２）が割り当てられている。これにより、処理シーケンス２の予測時間は、「４２分」になり、目標範囲に収まることになる。
【００５７】
図１０は、図８または図９に示す実施例の動作を説明するフローチャートであり、図４のステップＳ１６に対応する。
ステップＳ３１では、図６に示した図２１と同様に、時間管理テーブルに設定されている「当日の予測時間」の長い順番にジョブをソートし、ジョブ列を作成する。ステップＳ３２では、時間管理テーブルを参照し、並列に実行すべき処理シーケンス処理についての「目標バックアップ時間」を算出する。そして、ステップＳ３３において、ステップＳ３２で算出した「目標バックアップ時間」に基づいて目標範囲を設定する。
【００５８】
ステップＳ３４では、１以上のジョブが割り当てられるべき処理シーケンスを１つ抽出する。ステップＳ３５では、ステップＳ３４で抽出した処理シーケンスに割り当てるべきジョブを１つ抽出する。ステップＳ３６では、ステップＳ３４で抽出したジョブの「当日の予測時間」の合計値を算出する。すなわち、ステップＳ３５〜Ｓ３７、Ｓ４１〜Ｓ４３の処理が繰り返し実行されると、複数のジョブが抽出されることになるので、その場合に、それら複数のジョブの「当日の予測時間」の合計値を算出する。もっとも、第１番目のジョブが抽出された時点では、その抽出されたジョブの「当日の予測時間」がステップＳ３６により算出された合計値として扱われる。
【００５９】
ステップＳ３７では、ステップＳ３６で算出した合計値がステップＳ３３で設定した目標範囲内であるか否かを調べる。そして、その合計値が目標範囲内であれば、ステップＳ３８において、抽出された１以上のジョブを、ステップＳ３４で抽出した処理シーケンスに割り当てる。
【００６０】
ステップＳ３９は、並列に実行されるすべての処理シーケンスについて上記ステップＳ３５〜Ｓ３８の処理を実行するために設けられている。すなわち、未処理の処理シーケンスが残っていれば、ステップＳ３４に戻って次の処理シーケンスを選択する。
【００６１】
すべての処理シーケンスについて上記ステップＳ３５〜Ｓ３８を実行すると、ステップＳ４０において、いずれの処理シーケンスにも割り当てられていないジョブが残ってないかを調べる。このとき、もし、ジョブが残っていれば、ステップＳ５１においてエラー処理を実行する。
【００６２】
ステップＳ３６で算出した合計値がステップＳ３３で設定した目標範囲外であった場合（ステップＳ３７：Ｎｏ）には、ステップＳ４１において、いずれの処理シーケンスにも割り当てられていないジョブ或いは未だ抽出されていないジョブが残っているか否かを調べる。そして、もし、ジョブが残っていなければ、当該処理シーケンスの処理時間を目標範囲内にすることができないものとみなし、ステップＳ５１のエラー処理を実行する。
【００６３】
一方、ジョブが残っている場合（ステップＳ４１：Ｙｅｓ）には、ステップＳ３６で算出した合計値が上記目標範囲に達していないのか、或いはそれを越えてしまっているのかを調べる。そして、その合計値が目標範囲に達していないのであれば、ステップＳ３５に戻って次のジョブを抽出する。また、その合計値が目標範囲を越えてしまっていた場合には、ステップＳ４３において直前に抽出したジョブをジョブ列に戻し、その後にステップＳ３５において次のジョブを抽出する。
【００６４】
ステップＳ５１のエラー処理は、例えば、ステップＳ３３に戻って目標範囲を変更する処理である。このようなエラー処理を導入する場合には、初期段階において、目標範囲の幅を狭く設定する。このとき、もし、各処理シーケンスの実行時間がそのような目標範囲に収まれば、それらの処理シーケンスの実行時間のばらつきは小さくなり、全体のバックアップ時間は論理的に可能な最短時間に近くなる。一方、各処理シーケンスの実行時間がそのような目標範囲に収まらなかった場合には、目標範囲を少しずつ広げていく。このような構成とすれば、処理シーケンス間のばらつきが必要以上に大きくなることはなく、また、全体のバックアップ時間が必要以上に長くなることもない。
【００６５】
なお、上記実施例では、ステップＳ３１において「当日の予測時間」が長い順番にジョブをソートし、その順番に従ってジョブを対応する処理シーケンスに割り当てているが、本発明はこれに限定されるものではない。すなわち、例えば、「当日の予測時間」が短い順番にジョブを対応する処理シーケンスに割り当てる手順でもよい。また、図１０のフローチャートにおいて、ステップＳ３１の処理を省略し、任意の順番でジョブが抽出されてステップＳ３４以降の処理が実行されるような手順であってもよい。
【００６６】
図１１は、図８〜図１０を参照しながら説明した実施例による効果を説明する図である。図１１(a) は、目標範囲として「目標バックアップ時間±２０％」が設定された場合を示し、図１１(b) は、目標範囲として「目標バックアップ時間±５％」が設定された場合を示している。このように、目標範囲の幅を狭くすると、各処理シーケンスの処理時間が均一化され、必要以上に処理時間が長くなる処理シーケンスがなくなるので、全体のバックアップ時間を短くすることができる。
【００６７】
なお、図２〜図１１に示した実施例では、バックアップ処理が実行される際、その都度、各ジョブ毎にバックアップ時間が計測される。そして、並列的に実行される複数の処理シーケンスにジョブを振り分ける際、それらのジョブの過去のバックアップ時間に基づいて次回のバックアップ処理に要するであろう時間を予測し、それらの予測時間を参照していた。しかし、本発明はこの方法に限定されるものではない。すなわち、例えば、バックアップ処理の実行時に各ジョブのバックアップ時間を計測することなく、各ボリュームに蓄積されているデータの量およびバックアップ能力のみに基づいて、並列的に実行される複数の処理シーケンスに振り分けるべきジョブを決定してもよい。
【００６８】
また、上述の実施例では、磁気ディスク装置などのＤＡＳＤに格納されているデータを磁気テープ装置を用いてバックアップするケースを示したが、本発明はこの構成に限定されるものではなく、任意の記録媒体に格納されているデータを任意の記録媒体を用いてバックアップする場合に適用可能である。
【００６９】
上述したバックアップ処理を実行する機能は、コンピュータを用いて上述のフローチャートに示した処理を記述したプログラムを実行することにより実現される。上述の実施例では、このプログラムは、ホストコンピュータ１０により実行される。
【００７０】
図１２は、ホストコンピュータ１０のブロック図である。ＣＰＵ１０１は、上述のフローチャートに示した処理を記述したプログラムを記憶装置１０２からメモリ１０３にロードして実行する。記憶装置１０２は、たとえばハードディスクであり、上記プログラムを格納する。一方、メモリ１０３は、例えば半導体メモリであり、ＣＰＵ１０１の作業領域として使用される。なお、時間管理テーブルおよび実行順序管理テーブルは、このメモリ１０３に作成される。
【００７１】
記録媒体ドライバ１０４は、ＣＰＵ１０１の指示に従って可搬性記録媒体１０５にアクセスする。可搬性記録媒体１０５は、例えば、半導体デバイス（ＰＣカード等）、磁気的作用により情報が入出力される媒体（フロッピーディスク、磁気テープなど）、光学的作用により情報が入出力される媒体（光ディスクなど）を含む。通信制御装置１０６は、ＣＰＵ１０１の指示に従って網との間でデータを送受信する。
【００７２】
図１３は、本発明に係わるソフトウェアプログラムなどの提供方法を説明する図である。本発明に係わるプログラムは、例えば、以下の３つの方法の中の任意の方法により提供される。
【００７３】
(a) ホストコンピュータ１０にインストールされて提供される。この場合、プログラム等は、たとえば、出荷前にプレインストールされる。
(b) 可搬性記録媒体に格納されて提供される。この場合、可搬性記録媒体１０５に格納されているプログラム等は、基本的に、記録媒体ドライバ１０４を介して記憶装置１０２にインストールされる。
【００７４】
(c) 網上のサーバから提供される。この場合、基本的には、ホストコンピュータ１０がサーバに格納されているプログラム等をダウンロードすることによってそのプログラム等を取得する。
【００７５】
【発明の効果】
本発明によれば、バックアップ手順が最適化されるので、バックアップ時間が短くなる。また、このバックアップ手順の最適化処理は、コンピュータにより実行されるので、ユーザに負担がかかることはない。
【図面の簡単な説明】
【図１】本発明の実施形態のシステム構成図である。
【図２】時間管理テーブルの例である。
【図３】新規ボリュームが追加された際、あるいは任意のボリュームのデータが更新された際の動作を説明するフローチャートである。
【図４】バックアップ処理のフローチャートである。
【図５】複数のジョブを複数の処理シーケンスに振り分ける方法の実施例である。
【図６】図５に示す実施例の動作を説明するフローチャートである。
【図７】  (a) は、本実施形態の方法を使用しない場合、(b) は、本実施形態を使用した場合のバックアップ処理の予測時間を示す図である。
【図８】複数のジョブを複数の処理シーケンスに振り分ける方法の他の実施例である。
【図９】目標範囲を狭くした場合の例である。
【図１０】図８に示す実施例の動作を説明するフローチャートである。
【図１１】  (a) は、目標範囲の幅が広い場合、(b) は、目標範囲の幅が狭い場合の例である。
【図１２】本発明の機能を記述したプログラムを実行するコンピュータのブロック図である。
【図１３】本発明に係わるソフトウェアプログラムなどの提供方法を説明する図である。
【符号の説明】
１０  ホストコンピュータ
２０  磁気ディスク装置（ＤＡＳＤ）
４０  磁気テープ装置
【図１】
0004064033.tif 000004
【図２】
0004064033.tif 000005
【図３】
0004064033.tif 000006
【図４】
0004064033.tif 000007
【図５】
0004064033.tif 000008
【図６】
0004064033.tif 000009
【図７】
0004064033.tif 000010
【図８】
0004064033.tif 000011
【図９】
0004064033.tif 000012
【図１０】
0004064033.tif 000013
【図１１】
0004064033.tif 000014
【図１２】
0004064033.tif 000015
【図１３】
0004064033.tif 000016