以下に、本願の開示する情報処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理装置の制御方法が限定されるものではない。
図1は、光ディスクライブラリシステムの構成図である。光ディスクライブラリシステム100は、図1に示すように、ホストコンピュータ1、管理装置2及び光ディスクライブラリ装置3を有する。
ホストコンピュータ1は、ネットワーク4を介して管理装置2に接続する。ホストコンピュータ1は、管理装置2に対してデータの読み出し及び書き込みの命令をネットワーク4を介して行う。書込命令の場合、ホストコンピュータ1は、書き込み完了の応答を管理措置2からネットワーク4を介して受信する。また、読出命令の場合、ホストコンピュータ1は、命令で指定したデータを管理装置2からネットワーク4を介して受信する。
光ディスクライブラリ装置3は、管理装置2と接続される。光ディスクライブラリ装置3は、例えば、6台のドライブ31〜36を有する。以下の説明では、それぞれのドライブ31〜36を区別しない場合、単に「ドライブ30」という。ここで、本実施例では、光ディスクライブラリ装置3は、6台のドライブ30を有する場合で説明するが、ドライブ30の数に特に制限は無い。また、光ディスクライブラリ装置3は、ディスク搬送用ロボット302及びマガジン303を有する。
マガジン303は、複数の光ディスク301を格納するケースである。例えば、マガジン303は、12枚の光ディスク301を格納可能である。光ディスクライブラリ装置3は、例えば、76本のマガジン303を搭載する。
ディスク搬送用ロボット302は、管理装置2の読書管理部21からの指示を受けて、マガジン303に格納された光ディスク301を取り出し、指定されたドライブ30へ搭載する。
ディスク搬送用ロボット302は、ドライブ30による読み出し又は書き込みが完了すると、読書管理部21からの指示を受けて、ドライブ30から光ディスク301を取り出す。また、故障が発生した場合にも、故障が発生したドライブ30からの取り出しの指示を読書管理部21から受けて、ディスク搬送用ロボット302は、故障が発生したドライブ30から光ディスク301を取り出す。
ドライブ30は、セットされた光ディスク301に対するデータの読み出し及び書き込みを行う。ドライブ31〜36は、それぞれ独立しており、並行して読み出し又は書き込みの処理を実行することができる。また、ドライブ30は、光ディスク301の表裏の両面に対して並行してデータの読み出し又は書き込みが可能である。すなわち、ドライブ31〜36は、一度に12面に対してデータの読み出し又は書き込みを行うことができる。
ここで、光ディスク301は一度書き込まれたデータの変更が行われずデータの喪失などの故障が発生し難い媒体である。一方、ドライブ30は、光ディスク301に比べると故障の発生する確率が高いといえる。そのため、光ディスクライブラリ装置3での故障は主にドライブ30の故障と言える。ドライブ30は、故障すると、光ディスク301に対する表裏の両面への読み出し又は書き込みが困難となる。このドライブ30が、「データ処理機構」の一例にあたる。また、光ディスク301が、「可搬記憶媒体」の一例にあたる。
管理装置2は、例えば、サーバなどのコンピュータである。管理装置2は、光ディスクライブラリ装置3におけるデータの記憶媒体への読み出し及び書き込みを管理する。管理装置2は、読書管理部21及びキャッシュ22を有する。キャッシュ22は、一時的な記憶領域であり、例えば、HDD(Dard Disk Drive)又はSSD(Solid State Drive)などである。
読書管理部21は、ホストコンピュータ1からの命令を受ける。読出命令の場合、読書管理部21は、ドライブ30を用いて指定された格納データを光ディスク301から読み出し、キャッシュ22に格納する。そして、読書管理部21は、光ディスクライブラリ装置3のRAID構成を用いて、キャッシュ22に格納された格納データから読出データを生成する。そして、読書管理部21は、生成した読出データをネットワーク4を介してホストコンピュータ1へ送信する。
また、書込命令の場合、読書管理部21は、書込データをキャッシュ22へ格納する。そして、読書管理部21は、キャッシュ22に格納された受信データを光ディスクライブラリ装置3のRAID構成に分割して格納データを生成する。その後、読書管理部21は、格納データの光ディスク301への書き込みをドライブ30に行わせる。格納データの書き込みが完了すると、読書管理部21は、書き込み完了の通知をネットワーク4を介してホストコンピュータ1へ送信する。この管理装置2及び光ディスクライブラリ装置3が、「情報処理装置」の一例にあたる。
次に、図2を参照して、管理装置2によるデータの書き込み及び読み出しの処理についてより詳細に説明する。図2は、管理装置のブロック図である。
図2に示すように、管理装置2の読書管理部21は、故障ドライブテーブル201、データ送受信部202、故障管理部203、読書制御部204及びRAID管理部205を有する。
データ送受信部202は、書込命令の場合、書込データをホストコンピュータ1から受信する。そして、データ送受信部202は、受信した書込データをキャッシュ22に格納する。
また、データ送受信部202は、読出命令の場合、RAID管理部205から読出データの入力を受ける。そして、データ送受信部202は、読出データをホストコンピュータ1へ送信する。
RAID管理部205は、書込命令の場合、光ディスクライブラリ装置3のRAID構成に応じた格納データの生成の指示を読書制御部204から受ける。ここで、RAID構成に応じた格納データとは、例えば、RAID0であればパリティなしのストライピングセットであり、書込データをドライブ30の数の書き込み単位に分割したデータである。また、RAID5の場合、1つのパリティを生成して、パリティと合わせて書込データをドライブ30の数の書き込み単位に分割したデータである。また、RAID6の場合、2重のパリティを生成して、2重のパリティと合わせて書込データをドライブ30の数の書き込み単位に分割したデータである。以下では、格納データを、単に「書込データを分割したデータ」と言う場合がある。RAID管理部205は、生成した格納データを読書制御部204へ出力する。
また、読出命令の場合、RAID管理部205は、読出データの生成の指示を読書制御部204から受ける。そして、RAID管理部205は、光ディスクライブラリ装置3のRAID構成を用いてキャッシュ22に格納された格納データから読出データを生成する。これに加えて、読出命令であってドライブ30のうち1台が故障している場合、RAID管理部205は、格納データを用いてRAIDによるデータの再構築を行った上で読出データを生成する。そして、RAID管理部205は、読出データをデータ送受信部202へ出力する。
読書制御部204は、光ディスクライブラリ装置3におけるドライブ30による光ディスク301への書き込み及び読み出しを制御する。読書制御部204は、読出命令又は書込命令の入力をホストコンピュータ1から受ける。
ここで、命令処理の流れには、例えば、書込処理において書込データを処理するのに複数の書込処理が行われる場合や、既に書込処理を行っている状態で新しい書込命令を受ける場合などがある。その場合、読書制御部204は、各書込処理についての各ドライブ30に対する処理要求を蓄積し、順次各処理要求を処理する。これは、読出処理においても同様である。そのような、読書制御部204が、蓄積する1回の各ドライブ30に対する処理要求を「キュー」と呼ぶ。読書制御部204は、最初のキューで書き込み又は読出しが指定される格納データを各ドライブ30に割り当てる。そして、読書制御部204は、割り当てた各格納データを書き込み又は読み出しの対象となる光ディスク301を特定する。その後、読書制御部204は、各格納データに対応する光ディスク301を、それぞれの格納データを処理させるドライブ30に搭載させる処理をディスク搬送用ロボット302に指示する。
次に、読書制御部204は、各ドライブ30の故障検出を故障管理部203に依頼する。その後、読書制御部204は、故障ドライブテーブル201を確認して、ドライブ30のうちの故障が発生した故障ドライブを特定する。
故障ドライブが存在しない場合、書込命令であれば、読書制御部204は、RAID構成となるように生成された格納データをキャッシュ22から取得する。そして、読書制御部204は、光ディスクライブラリ装置3のディスク搬送用ロボット302に光ディスク301の各ドライブ30への搭載指示を行う。さらに、読書制御部204は、格納データを送信して各ドライブ30への光ディスク301に対して各納データの書き込みを指示する。その後、書込処理が完了すると、読書管理部21は、書き込みの完了をホストコンピュータ1へ通知する。
これに対して、故障ドライブが存在せず且つ読出命令の場合、読書制御部204は、指定された読出データの格納データが格納された光ディスク301の各ドライブ30への搭載をディスク搬送用ロボット302に指示する。次に、読書制御部204は、搭載された光ディスク301からの格納データの読み出しを各ドライブ30に指示する。そして、読書制御部204は、読み出された格納データをキャッシュ22に格納する。その後、読書制御部204は、RAID管理部205に読出データの生成を指示する。
一方、故障ドライブが存在する場合、読書制御部204は、書込命令であれば、同じドライブ30を複数回使用して故障ドライブを補う処理の実施に移行する。これは、RAID構成がRAID0,5、6の何れであっても、データの書き込みは故障ドライブの処理を他のドライブ30が肩代わりすることになるためである。以下では、同じドライブ30を複数回使用して故障ドライブを補う処理を、「故障ドライブ補完処理」という。
一方、故障ドライブが存在し且つ読出命令の場合、読書制御部204は、読み出す対象の格納データの格納時のRAID構成が、RAID6か否かを判定する。ここで、ドライブ30が1台故障すると、搭載された光ディスク301の合計面数のうちの2面に対する処理が行えなくなる。そのため、1台のドライブ30故障した場合にRAIDによるデータの再構築を行うためには、2つのパリティが用いられる。そこで、読書制御部204は、RAID6以外のRAID0又は5の場合、パリティを用いたデータの再構築が困難と判定して、故障ドライブ補完処理の実施に移行する。
これに対して、RAID6の場合、故障ドライブが1台であるか否かを判定する。故障ドライブが1台の場合、読書制御部204は、パリティを用いたデータの再構築が可能と判定する。そして、読書制御部204は、稼働可能なドライブ30を用いて光ディスク301からデータの読み出しを行い、キャッシュ22に格納する。その後、読書制御部204は、読出データの生成をRAID管理部205に依頼する。一方、故障ドライブが2台以上の場合、読書制御部204は、パリティを用いたデータの再構築が困難と判定して、故障ドライブ補完処理の実施に移行する。
次に、読書制御部204による故障ドライブ補完処理について説明する。故障ドライブ補完処理において、書込処理又は読出処理を行わせるドライブ30の選択の手順については、書込処理及び読出処理のいずれも同様であるので、以下では、書込処理及び読出処理をまとめた単に「データ処理」として説明する。また、ドライブ30がデータ処理を行う場合、その前にディスク搬送用ロボット302による光ディスク301のドライブ30への搭載処理が存在するが、以下の説明では、ディスク搬送用ロボット302による処理を省いて説明する。すなわち、ドライブ30のデータ処理といった場合、そのデータ処理に対応する光ディスク301のディスク搬送用ロボット302によるドライブ30への搭載処理も含まれるものとする。
読書制御部204は、故障管理部203により作成される故障ドライブが登録された故障ドライブテーブル201を参照して、故障していないドライブ30である稼働可能ドライブを特定する。そして、読書制御部204は、最初のキューにおいて各稼動可能ドライブに割り当てられた格納データの処理、すなわち搭載された光ディスク301に対するデータ処理を各稼動可能ドライブに実行させる。
ここで、各稼動可能ドライブがデータ処理を実行する間にも、読書制御部204は、周期的にドライブ30の故障検出を故障管理部203に実行させる。すなわち、この間に故障ドライブが検出された場合も、読書制御部204は、その故障ドライブを除いて故障ドライブ補完処理を行わせる。
その後、稼働可能ドライブのデータ処理が完了すると、読書制御部204は、最初のキューにおいて各故障ドライブに割り当てられた格納データのデータ処理を可動可能ドライブに割り当てる。以下の説明では、故障ドライブに割り当てられた格納データのデータ処理であって、処理が完了していないデータ処理に対応する光ディスク301を、「未処理の光ディスク301」という。
未処理の光ディスク301の数が稼働可能ドライブの数以上の場合、読書制御部204は、全ての稼働可能ドライブに各故障ドライブに割り当てられた格納データのデータ処理を割り当てる。そして、読書制御部204は、最初のキューにおい各故障ドライブに割り当てられた格納データの処理を各稼動可能ドライブに実行させる。読書制御部204は、未処理の光ディスク301が稼動可能ドライブの数よりも少なくなるまで、全ての稼働可能ドライブに各故障ドライブに割り当てられた格納データのデータ処理を行わせることを繰返す。
未処理の光ディスク301の数が稼動可能ドライブよりも少ない場合、読書制御部204は、次のキューがあるか否かを判定する。次のキューがある場合、読書制御部204は、全ての稼働可能ドライブの数から残りの未処理の光ディスク301の数を除いた数の稼働可能ドライブを次のキューのデータ処理に回す。ここでは、次のキューのデータ処理に回された稼働可能ドライブを、「次キュー処理稼働可能ドライブ」という。
そして、読書制御部204は、次キュー稼働可能ドライブ以外の稼働可能ドライブに、残りの未処理の光ディスク301を用いて行うデータ処理を実行させる。また、読書制御部204は、各ドライブ30に次のキューにおけるデータ処理を割り当てる。そして、読書制御部204は、次のキューにおける次キュー稼動可能ドライブに割り当てたデータ処理を次キュー稼動可能ドライブに実行させる。これに対して、次のキューが無ければ、読書制御部204は、次のキューのデータ処理に稼働可能ドライブを回す処理は行わず、単に、残りの未処理の光ディスク301を用いて行うデータ処理を可動可能ドライブに実行させる。
読書制御部204は、全てのキューの未処理の光ディスク301が無くなるまで、各稼動可能ドライブに、各キューにおけるそれぞれのデータ処理の割り当て繰り返す。そして、読書制御部204は、割り当てた次キューのデータ処理及び現在のキューの各故障ドライブに割り当てた残りのデータ処理を稼動可能ドライブに実行させることを繰返す。ここで、各稼動可能ドライブが割り当てた次キューのデータ処理及び現在のキューの各故障ドライブに割り当てた残りのデータ処理を実行する間にも、読書制御部204は、周期的にドライブ30の故障検出を故障管理部203に実行させる。すなわち、この間に故障ドライブが検出された場合も、読書制御部204は、その故障ドライブを除いて故障ドライブ補完処理を行わせる。読書制御部204は、全てのキューのデータ処理が完了すると、故障ドライブ補完処理を終了する。この読書制御部204が、「制御部」の一例にあたる。
故障管理部203は、故障検出の依頼を読書制御部204から受ける。そして、故障管理部203は、ドライブ30のエラーチェックを行う。いずれかのドライブ30にエラーが検出された場合、故障管理部203は、エラーが検出されたドライブ30を故障ドライブとして故障ドライブテーブル201に登録する。その後、故障管理部203は、光ディスクライブラリ装置3のディスク搬送用ロボット302に故障ドライブからの光ディスク301の取り出しを指示する。さらに、故障管理部203は、故障ドライブの動作を停止させる。
図3は、故障ドライブテーブルの一例の図である。本実施例では、ドライブ31〜36に順番にドライブ番号Nとして1〜6を振り、故障管理部203は、故障ドライブテーブル201にドライブ番号を登録することで、故障ドライブの登録を行う。図3では、分かり易いようにドライブ番号の後にドライブ31〜36を表す情報を付加したが、この情報はなくてもよい。さらに、故障管理部203は、故障ドライブの合計を故障ドライブテーブル201に登録する。これにより、読書制御部204は、故障ドライブの数及び稼働可能ドライブの数を容易に把握することができる。この故障管理部203が、「故障検出部」の一例にあたる。この故障ドライブテーブル201が、「故障情報」の一例にあたる。
ここで、図4〜6を参照して、故障ドライブ補完処理における各ドライブ30が実行するデータ処理の一例について説明する。図4は、2台のドライブが壊れた場合の故障ドライブ補完処理の一例の図である。図5は、3台のドライブが壊れた場合の故障ドライブ補完処理の一例の図である。図6は、4台のドライブが壊れた場合の故障ドライブ補完処理の一例の図である。ドライブ31〜36の横に並べられた光ディスク301が、それぞれのドライブ31〜36がデータ処理を行う光ディスク301を表す。
ここでは、管理装置2は、書込データをRAID6の構成にデータ分割し、2つのキュー311及び312を処理する。すなわち、管理装置2は、光ディスク301の10面に実データを格納し、光ディスク301の2面にパリティを格納する。
図4は、ドライブ35及び36が故障した場合を表す。この場合、読書制御部204は、1回目の書き込み処理で、稼働可能ドライブであるドライブ31〜34に割り当てたキュー311のデータ処理である光ディスク301に対する書込処理を行わせる。この段階で、キュー311のデータ処理のうちドライブ35及び36に割り当てられたデータ処理が残る。
そこで、読書制御部204は、キュー311におけるドライブ35及び36に割り当てられたデータ処理を、ドライブ31及び32に割り当てる。さらに、読書制御部204は、次キューであるキュー312のデータ処理をドライブ33及び34に割り当てる。そして、読書制御部204は、2回目の書込処理で、キュー311の残りの2つのデータ処理及びキュー312の2つのデータ処理に応じた光ディスク301への書込処理をドライブ31〜34のそれぞれに行わせる。この段階で、キュー312のデータ処理のうち4つのデータ処理が残る。
そこで、読書制御部204は、キュー312の残りのデータ処理をドライブ31〜34に割り当てる。そして、読書制御部204は、3回目の書き込み処理で、キュー312の残りのデータ処理に応じた光ディスク301への書込処理をドライブ31〜34のそれぞれに行わせる。これにより、管理装置2は、キュー311及び312に含まれる全てのデータ処理を光ディスクライブラリ装置3に実行させることができる。
図5は、ドライブ34〜36が故障した場合を表す。この場合、読書制御部204は、1回目の書き込み処理で、稼働可能ドライブであるドライブ31〜33に割り当てたキュー311のデータ処理である光ディスク301に対する書込処理を行わせる。この段階で、キュー311のデータ処理のうちドライブ34〜36に割り当てられたデータ処理が残る。
そこで、読書制御部204は、キュー311におけるドライブ34〜36に割り当てられたデータ処理を、ドライブ31〜33に割り当てる。この場合、稼働可能ドライブの残りが無いので、読書制御部204は、次キューであるキュー312の割り当ては行わない。そして、読書制御部204は、2回目の書込処理で、キュー311の残りの3つのデータ処理に応じた光ディスク301への書込処理をドライブ31〜33のそれぞれに行わせる。
次に、読書制御部204は、キュー312における3つのデータ処理をドライブ31〜34に割り当てる。そして、読書制御部204は、3回目の書き込み処理で、キュー312の3つのデータ処理に応じた光ディスク301への書込処理をドライブ31〜34のそれぞれに行わせる。この段階で、キュー312のデータ処理のうち3つのデータ処理が残る。
そこで、読書制御部204は、キュー312における残りの3つのデータ処理を、ドライブ31〜33に割り当てる。そして、読書制御部204は、4回目の書込処理で、キュー311の残りの3つのデータ処理に応じた光ディスク301への書込処理をドライブ31〜33のそれぞれに行わせる。これにより、管理装置2は、キュー311及び312に含まれる全てのデータ処理を光ディスクライブラリ装置3に実行させることができる。
図6は、ドライブ33〜36が故障した場合を表す。この場合、読書制御部204は、1回目の書き込み処理で、稼働可能ドライブであるドライブ31及び32に割り当てたキュー311のデータ処理である光ディスク301に対する書込処理を行わせる。この段階で、キュー311のデータ処理のうちドライブ33〜36に割り当てられたデータ処理が残る。
そこで、読書制御部204は、キュー311におけるドライブ33〜36に割り当てられたデータ処理のうち2つのデータ処理を、ドライブ31及び32に割り当てる。そして、読書制御部204は、2回目の書込処理で、キュー311の2つのデータ処理に応じた光ディスク301への書込処理をドライブ31及び32のそれぞれに行わせる。この段階で、キュー311のデータ処理のうちドライブ33〜36に割り当てられたデータ処理のうち2つが残る。
そこで、読書制御部204は、キュー311におけるドライブ33〜36に割り当てられたデータ処理のうち残りの2つのデータ処理を、ドライブ31及び32に割り当てる。この場合、稼働可能ドライブの残りが無いので、読書制御部204は、次キューであるキュー312の割り当ては行わない。そして、読書制御部204は、3回目の書込処理で、キュー311の残りの2つのデータ処理に応じた光ディスク301への書込処理をドライブ31及び32のそれぞれに行わせる。
次に、読書制御部204は、キュー312における2つのデータ処理をドライブ31及び32に割り当てる。そして、読書制御部204は、4回目の書き込み処理で、キュー312の2つのデータ処理に応じた光ディスク301への書込処理をドライブ31及び32のそれぞれに行わせる。この段階で、キュー312のデータ処理のうち4つのデータ処理が残る。
そこで、読書制御部204は、キュー312における残りの4つのデータ処理のうち2つのデータ処理を、ドライブ31及び32に割り当てる。そして、読書制御部204は、5回目の書込処理で、キュー312の2つのデータ処理に応じた光ディスク301への書込処理をドライブ31〜33のそれぞれに行わせる。この段階で、キュー312のデータ処理のうち2つのデータ処理が残る。
そこで、読書制御部204は、キュー312における残りの2つのデータ処理を、ドライブ31及び32に割り当てる。そして、読書制御部204は、6回目の書込処理で、キュー312の2つのデータ処理に応じた光ディスク301への書込処理をドライブ31〜33のそれぞれに行わせる。これにより、管理装置2は、キュー311及び312に含まれる全てのデータ処理を光ディスク装置3に実行させることができる。
次に、図7を参照して、ドライブ30に故障が発生した場合の故障ドライブ補完処理の実行の判定処理の流れについて説明する。図7は、故障ドライブ補完処理の実行の判定処理のフローチャートである。
読書制御部204は、ドライブ30の故障の発生が故障管理部203により検出されると、実行するデータ処理が書込処理か否かを判定する(ステップS1)。書込処理の場合(ステップS1:肯定)、読書制御部204は、故障ドライブ補完処理を実行する(ステップS5)。
これに対して、実行するデータ処理が読出処理の場合、(ステップS1:否定)、読書制御部204は、読出データに対応する格納データがRAID6で構成されているか否かを判定する(ステップS2)。RAID0又は5で構成されている場合(ステップS2:否定)、読書制御部204は、故障ドライブ補完処理を実行する(ステップS5)。
これに対して、読出データに対応する格納データがRAID6で構成されている場合、(ステップS2:肯定)、読書制御部204は、故障ドライブの数が1以下か否かを判定する(ステップS3)。故障ドライブの数が1より大きい場合(ステップS3:否定)、読書制御部204は、故障ドライブ補完処理を実行する(ステップS5)。
これに対して、故障ドライブの数が1以下の場合(ステップS3:肯定)、読書制御部204は、RAIDによる再構築処理をRAID管理部205に行わせる(ステップS4)。
次に、図8を参照して、実施例1に係る故障ドライブ補完処理の流れについて説明する。図8は、実施例1に係る故障ドライブ補完処理のフローチャートである。ここでは、1つのキューに対する故障ドライブ補完処理を例に説明する。またここでは、ドライブ31〜36のそれぞれにドライブ番号としてN=1〜6が振られた場合で説明する。ここでは、ドライブ番号Nのドライブ30をドライブNと表す。
読書制御部204は、全てのドライブ30に光ディスク301を搭載させる(ステップS101)。
次に、読書制御部204は、ドライブ番号であるNを0に設定する(ステップS102)。
読書制御部204は、ドライブ番号であるNを1つインクリメントする(ステップS103)。
次に、読書制御部204は、故障ドライブテーブル201を参照して、ドライブNが故障ドライブとして既に故障ドライブテーブル201に登録されており使用不可か否かを判定する(ステップS104)。ドライブNが既に故障ドライブテーブル201に登録されている場合(ステップS104:否定)、既にドライブNに対する対応は完了しているので、処理は、ステップS110へ進む。
これに対して、ドライブNが使用可能である場合(ステップS104:肯定)、読書制御部204は、ドライブNの故障検知を故障管理部203に実行させる(ステップS105)。
その後、故障管理部203は、ドライブNの故障検知を行い、ドライブNに故障が発生したか否かを判定する(ステップS106)。ドライブNに故障が発生していない場合(ステップS106:否定)、処理は、ステップS110へ進む。
これに対して、ドライブNに故障が発生した場合(ステップS106:肯定)、故障管理部203は、ドライブNの処理を停止させる(ステップS107)。次に、故障管理部203は、ドライブNから光ディスク301を取り出してマガジン303に戻す処理をディスク搬送用ロボット302に行わせる(ステップS108)。
次に、故障管理部203は、ドライブNを故障ドライブとして故障ドライブテーブル201に登録して動作を停止させる(ステップS109)。その後、処理は、ステップS110へ進む。
読書制御部204は、ドライブ番号Nが6であるか否かを判定する(ステップS110)。ドライブ番号Nが6でない場合(ステップS110:否定)、処理は、ステップS103へ戻る。
これに対して、ドライブ番号Nが6の場合(ステップS110:肯定)、読書制御部204は、搭載された光ディスク301を用いたデータ処理を稼働可能ドライブに実行させる(ステップS111)。
そして、読書制御部204は、稼働可能ドライブの処理が完了したか否かを判定する(ステップS112)。稼働可能ドライブの処理が完了していない場合(ステップS112:否定)、読書制御部204は、ステップS102に戻る。
これに対して、稼働可能ドライブの処理が完了した場合(ステップS112:肯定)、読書制御部204は、光ディスク301を稼動可能ドライブから取り出させる(ステップS113)。
次に、読書制御部204は、未処理の光ディスク301があるか否かを判定する(ステップS114)。
未処理の光ディスク301が存在する場合(ステップS114:肯定)、読書制御部204は、未処理の光ディスク301の数をB、故障ドライブの数をM、稼働可能ドライブの数をDとする(ステップS115)。ここで、読書制御部204は、故障ドライブの数であるMを故障ドライブテーブル201から取得する。また、読書制御部204は、未処理の光ディスク301の数を故障ドライブの数とする。すなわち、M=Bである。また、読書制御部204は、ドライブ30の全体の数から故障ドライブの数を減算したものを稼動可能ドライブの数とする。すなわち、D=6−Mである。
次に、読書制御部204は、D≧Bか否かを判定する(ステップS116)。D≧Bの場合(ステップS116:肯定)、読書制御部204は、未処理の光ディスク301を稼動可能ドライブに搭載させる(ステップS117)。
次に、読書制御部204は、D及びBを1つずつデクリメントする(ステップS118)。
次に、読書制御部204は、D=0か否かを判定する(ステップS119)。D=0でない場合(ステップS119:否定)、読書制御部204は、ステップS117へ戻る。これに対して、D=0の場合(ステップS119:肯定)、読書制御部204は、ステップS111へ戻る。
一方、D≧Bでない場合(ステップS116:否定)、読書制御部204は、未処理の光ディスク301を稼動可能ドライブに搭載させる(ステップS120)。
次に、読書制御部204は、Bを1つずつデクリメントする(ステップS121)。
次に、読書制御部204は、B=0か否かを判定する(ステップS122)。B=0でない場合(ステップS122:否定)、読書制御部204は、ステップS120へ戻る。これに対して、B=0の場合(ステップS122:肯定)、読書制御部204は、ステップS111へ戻る。
一方、未処理の光ディスク301が無い場合(ステップS114:否定)、読書制御部204は、故障ドライブ補完処理を終了する。
ここで、図8では、管理装置2が、1つのキューに対して故障ドライブ補完処理を実行する場合について説明した。ただし実際には、管理装置2は、ステップS102からS110で示すドライブ30の故障の判断の後に、図7に示す故障ドライブ補完処理を実行するか否かの判断を行い、その結果に応じて故障ドライブ補完処理の実行に移る。
次に、図9を参照して、複数のキューを処理する場合の管理装置2による故障ドライブ補完処理における各キューの処理手順について説明する。図9は、複数のキューを処理する場合の各キューの処理手順のフローチャートである。ここでは、故障ドライブ補完処理を実行する場合を説明する。また、ここでは、最初のキューをキュー#1とし、2番目のキューをキュー#2とし、3番目のキューをキュー#3とする。
故障管理部203は、ドライブ30の中から故障ドライブを検出する(ステップS201)。そして、故障管理部203は、検出した故障ドライブを故障ドライブテーブル201に登録する。
読書制御部204は、故障ドライブテーブル201を確認する。そして、読書制御部204は、故障ドライブ数が3以上か否かを判定する(ステップS202)。
故障ドライブ数が3未満の場合(ステップS202:否定)、読書制御部204は、故障ドライブ数が2か否かを判定する(ステップS203)。
故障ドライブ数が2でない場合(ステップS203:否定)、読書制御部204は、故障ドライブ数が1か否かを判定する(ステップS204)。
故障ドライブ数が1でない場合(ステップS204:否定)、読書制御部204は、故障ドライブが無いと判定して、通常のデータ処理を6つのドライブ30に実行させる(ステップS205)。
これに対して、故障ドライブが1の場合(ステップS204:肯定)、読書制御部204は、稼働可能ドライブが5つあると判定する。そして、読書制御部204は、1回目の処理でキュー#1のうち5つのデータ処理を、稼働可能ドライブである5つのドライブ30に実行させる(ステップS206)。
2回目の処理で、読書制御部204は、次の処理を稼動可能ドライブに実行させる。読書制御部204は、キュー#1のうちの残りの2つのデータ処理を稼働可能ドライブのうちの2つのドライブ30に実行させる。また、読書制御部204は、キュー#2のうちの3つのデータ処理を稼働可能ドライブのうちの残りの3つのドライブ30に実行させる(ステップS207)。
3回目の処理で、読書制御部204は、次の処理を稼動可能ドライブに実行させる。読書制御部204は、キュー#2のうちの残りの2つのデータ処理を稼働可能ドライブのうちの2つのドライブ30に実行させる。また、読書制御部204は、キュー#3のうちの3つのデータ処理を稼働可能ドライブのうちの残りの3つのドライブ30に実行させる(ステップS208)。
以降、読書制御部204は、各キューの5分の6ずつのデータ処理の実行を5つのドライブ30に繰り返させ(ステップS209)、全てのキューのデータ処理を実行させることで故障ドライブ補完処理によるデータ処理を完了する。
これに対して、故障ドライブが2の場合(ステップS203:肯定)、読書制御部204は、稼働可能ドライブが4つあると判定する。そして、読書制御部204は、1回目の処理でキュー#1のうち4つのデータ処理を、稼働可能ドライブである4つのドライブ30に実行させる(ステップS210)。
2回目の処理で、読書制御部204は、次の処理を稼動可能ドライブに実行させる。読書制御部204は、キュー#1のうちの残りの2つのデータ処理を稼働可能ドライブのうちの2つのドライブ30に実行させる。また、読書制御部204は、キュー#2のうちの2つのデータ処理を稼働可能ドライブのうちの残りの2つのドライブ30に実行させる(ステップS211)。
3回目の処理で、読書制御部204は、次の処理を稼動可能ドライブに実行させる。読書制御部204は、キュー#2のうちの残りの4つのデータ処理を稼働可能ドライブのうちの4つのドライブ30に実行させる(ステップS212)。
以降、読書制御部204は、各キューの3分の2ずつのデータ処理の実行を4つのドライブ30に繰り返させ(ステップS213)、全てのキューのデータ処理を実行させることで故障ドライブ補完処理によるデータ処理を完了する。
これに対して、故障ドライブ数が3以上の場合(ステップS202:肯定)、読書制御部204は、故障ドライブ数が3か否かを判定する(ステップS214)。
故障ドライブ数が3の場合(ステップS214:肯定)、読書制御部204は、稼働可能ドライブが3つあると判定する。そして、読書制御部204は、1回目の処理でキュー#1のうち3つのデータ処理を、稼働可能ドライブである3つのドライブ30に実行させる(ステップS215)。
2回目の処理で、読書制御部204は、キュー#1のうちの残りの3つのデータ処理を稼働可能ドライブである3つのドライブ30に実行させる(ステップS216)。
3回目の処理で、読書制御部204は、キュー#2のうちの3つのデータ処理を稼働可能ドライブである3つのドライブ30に処理させる(ステップS217)。
以降、読書制御部204は、各キューの半分ずつのデータ処理の実行を3つのドライブ30に繰り返させ(ステップS218)、全てのキューのデータ処理を実行させることで故障ドライブ補完処理によるデータ処理を完了する。
これに対して、故障ドライブ数が3でない場合(ステップS214:否定)、読書制御部204は、故障ドライブ数が4か否かを判定する(ステップS219)。
故障ドライブ数が4の場合(ステップS219:肯定)、読書制御部204は、稼働可能ドライブが2つあると判定する。そして、読書制御部204は、1回目の処理でキュー#1のうち2つのデータ処理を、稼働可能ドライブである2つのドライブ30に実行させる(ステップS220)。
2回目の処理で、読書制御部204は、キュー#1のうちの残りの4つのデータ処理のうち2つを稼働可能ドライブである2つのドライブ30に実行させる(ステップS221)。
3回目の処理で、読書制御部204は、キュー#1のうちの残りの2つのデータ処理を稼働可能ドライブである2つのドライブ30に実行させる(ステップS222)。
4回目の処理で、読書制御部204は、キュー#2のうちの2つのデータ処理を稼働可能ドライブである2つのドライブ30に処理させる(ステップS223)。
以降、読書制御部204は、各キューの3分の1ずつのデータ処理の実行を2つのドライブ30に繰り返させ(ステップS224)、全てのキューのデータ処理を実行させることで故障ドライブ補完処理によるデータ処理を完了する。
これに対して、故障ドライブ数が4でない場合(ステップS219:否定)、読書制御部204は、故障ドライブ数が5か否かを判定する(ステップS225)。
故障ドライブ数が5の場合(ステップS225:肯定)、読書制御部204は、稼働可能ドライブが1つであると判定する。そして、読書制御部204は、1回目の処理でキュー#1のうち1つのデータ処理を、稼働可能ドライブである1つのドライブ30に実行させる(ステップS226)。
2回目の処理で、読書制御部204は、キュー#1のうちの残りの5つのデータ処理のうち1つを稼働可能ドライブである1つのドライブ30に実行させる(ステップS227)。
3回目の処理で、読書制御部204は、キュー#1のうちの残りの4つのデータ処理のうち1つを稼働可能ドライブである1つのドライブ30に実行させる(ステップS228)。
4回目の処理で、読書制御部204は、キュー#1のうちの残りの3つのデータ処理のうち1つを稼働可能ドライブである1つのドライブ30に実行させる(ステップS229)。
5回目の処理で、読書制御部204は、キュー#1のうちの残りの2つのデータ処理のうち1つを稼働可能ドライブである1つのドライブ30に実行させる(ステップS230)。
6回目の処理で、読書制御部204は、キュー#1のうちの残りの1つのデータ処理を稼働可能ドライブである1つのドライブ30に実行させる(ステップS231)。
7回目の処理で、読書制御部204は、キュー#2のうちの1つのデータ処理を稼働可能ドライブである1つのドライブ30に処理させる(ステップS232)。
以降、読書制御部204は、各キューの6分の1ずつのデータ処理の実行を1つのドライブ30に繰り返させ(ステップS233)、全てのキューのデータ処理を実行させることで故障ドライブ補完処理によるデータ処理を完了する。
これに対して、故障ドライブ数が5でない場合(ステップS225:否定)、読書制御部204は、稼働可能ドライブが無いと判定して光ディスク301に対するデータ処理を終了する。
以上に説明したように、本実施例に係る管理装置は、RAID構成により救済できない光ディスクライブラリ装置のドライブの故障が発生した場合に、稼働可能ドライブを用いて故障ドライブを補完してデータ処理を完了させる。これにより、稼働継続性を維持することができる。また、キューの処理中に新たなキューが発生したような複数のキューを実行する場合にも、使用していないドライブを稼動することでキューの処理を開始することができ、稼動継続性を維持するとともに処理時間を短縮することができる。
次に、実施例3について説明する。本実施例に係る管理装置も図2のブロック図で示される。以下の説明では、実施例1と同様の各部の処理については説明を省略する場合がある。
本実施例に係る故障管理部203は、故障ドライブに対して保守交換などの復旧作業が行われたか否かを判定する。ここで、故障ドライブの復旧作業が行われた場合、管理者は、管理装置2に付属したパネルなどを用いて故障ドライブの復旧を故障管理部203に通知する。故障管理部203は、故障ドライブの復旧の通知を受信したか否かにより、故障ドライブに対して復旧作業が行われたか否かを判定できる。
そして、故障ドライブに対する復旧作業が行われた場合、故障管理部203は、故障ドライブであったドライブ30を初期化して稼動可能か否かを判定する。故障ドライブであったドライブ30が稼働可能でなければ、故障管理部203は、そのドライブ30をそのまま故障ドライブとして扱う。
これに対して、故障ドライブであったドライブ30が稼働可能な場合、故障管理部203は、そのドライブ30の情報を故障ドライブテーブル201から削除する。
読書制御部204は、故障ドライブであったドライブ30の情報が故障ドライブテーブル201から削除されると、そのドライブ30に対して光ディスク301を搭載させて、稼動可能ドライブとしてそのドライブ30にデータ処理を実行させる。
次に、図11を参照して、実施例3に係る故障ドライブ補完処理の流れについて説明する。図11は、実施例3に係る故障ドライブ補完処理のフローチャートである。
読書制御部204は、全てのドライブ30に光ディスク301を搭載させる(ステップS401)。
次に、読書制御部204は、ドライブ番号であるNを0に設定する(ステップS402)。
読書制御部204は、ドライブ番号であるNを1つインクリメントする(ステップS403)。
次に、読書制御部204は、故障ドライブテーブル201を参照して、ドライブNが故障ドライブとして既に故障ドライブテーブル201に登録されており使用不可か否かを判定する(ステップS404)。
ドライブNが使用可能である場合(ステップS404:肯定)、読書制御部204は、ドライブNの故障検知を故障管理部203に実行させる(ステップS405)。
その後、故障管理部203は、ドライブNの故障検知を行い、ドライブNに故障が発生したか否かを判定する(ステップS406)。ドライブNに故障が発生していない場合(ステップS406:否定)、処理は、ステップS414へ進む。
これに対して、ドライブNに故障が発生した場合(ステップS406:肯定)、故障管理部203は、ドライブNの処理を停止させる(ステップS407)。次に、故障管理部203は、ドライブNから光ディスク301を取り出してマガジン303に戻す処理をディスク搬送用ロボット302に行わせる(ステップS408)。
次に、故障管理部203は、ドライブNを故障ドライブとして故障ドライブテーブル201に登録して動作を停止させる(ステップS409)。その後、処理は、ステップS414へ進む。
一方、ドライブNが既に故障ドライブテーブル201に登録されている場合(ステップS404:否定)、読書制御部204は、ドライブNの復旧の確認を故障管理部203に指示する。故障管理部203は、読書制御部204からの指示を受けて、ドライブNの復旧作業が行われたか否かを判定する(ステップS410)。復旧作業が行われていない場合(ステップS410:否定)、処理は、ステップS414へ進む。
これに対して、復旧作業が行われた場合(ステップS410:肯定)、故障管理部203は、ドライブNを初期化して稼動可能か否かを判定する(ステップS411)。ドライブNが稼動可能でない場合(ステップS411:否定)、処理は、ステップS414へ進む。
ドライブNが稼働可能な場合(ステップS411:肯定)、故障管理部203は、ドライブNが稼働可能な場合、故障管理部203は、ドライブNの故障ドライブとしての登録を故障ドライブテーブル201から削除する(ステップS412)。
読書制御部204は、故障ドライブであったドライブ30の情報が故障ドライブテーブル201から削除されると、ドライブNを稼動可能ドライブと判定し、ドライブNに対して光ディスク301を搭載させる(ステップS413)。
その後、読書制御部204は、ドライブ番号Nが6であるか否かを判定する(ステップS414)。ドライブ番号Nが6でない場合(ステップS414:否定)、処理は、ステップS403へ戻る。
これに対して、ドライブ番号Nが6の場合(ステップS414:肯定)、読書制御部204は、搭載された光ディスク301を用いたデータ処理を稼働可能ドライブに実行させる(ステップS415)。
そして、読書制御部204は、稼働可能ドライブの処理が完了したか否かを判定する(ステップS416)。稼働可能ドライブの処理が完了していない場合(ステップS416:否定)、読書制御部204は、ステップS402に戻る。
これに対して、稼働可能ドライブの処理が完了した場合(ステップS416:肯定)、読書制御部204は、光ディスク301を稼動可能ドライブから取り出させる(ステップS417)。
次に、読書制御部204は、未処理の光ディスク301があるか否かを判定する(ステップS418)。
未処理の光ディスク301が存在する場合(ステップS418:肯定)、読書制御部204は、未処理の光ディスク301の数をB、故障ドライブの数をM、稼働可能ドライブの数をDとする(ステップS419)。
次に、読書制御部204は、D≧Bか否かを判定する(ステップS420)。D≧Bの場合(ステップS420:肯定)、読書制御部204は、未処理の光ディスク301を稼動可能ドライブに搭載させる(ステップS421)。
次に、読書制御部204は、D及びBを1つずつデクリメントする(ステップS422)。
次に、読書制御部204は、D=0か否かを判定する(ステップS423)。D=0でない場合(ステップS423:否定)、読書制御部204は、ステップS421へ戻る。これに対して、D=0の場合(ステップS423:肯定)、読書制御部204は、ステップS415へ戻る。
一方、D≧Bでない場合(ステップS420:否定)、読書制御部204は、未処理の光ディスク301を稼動可能ドライブに搭載させる(ステップS424)。
次に、読書制御部204は、Bを1つずつデクリメントする(ステップS425)。
次に、読書制御部204は、B=0か否かを判定する(ステップS426)。B=0でない場合(ステップS426:否定)、読書制御部204は、ステップS424へ戻る。これに対して、B=0の場合(ステップS426:肯定)、読書制御部204は、ステップS415へ戻る。
一方、未処理の光ディスク301が無い場合(ステップS418:否定)、読書制御部204は、故障ドライブ補完処理を終了する。
以上に説明したように、本実施例に係る管理装置は、故障ドライブの復旧作業が行われた場合に、そのドライブを初期化して動作確認し、動作可能な場合には稼働可能ドライブに組み込んでデータ処理を行わせる。このように、復旧されたドライブが自動的に稼働可能ドライブとして組み込まれることで、稼働を中断せずに処理速度を向上させることができる。
図12は、実施例4に係る光ディスクライブラリシステムの構成図である。本実施例に係る光ライブラリ装置3は、図12に示すように、予備ドライブ41及び42を有する。ここで、図12では予備ドライブ41及び42の2つを図示したが、この数に特に制限は無い。また、本実施例に係る管理装置2も、図2のブロック図で示される。以下の説明では、実施例1と同様の各部の処理については説明を省略する場合がある。また、以下の説明では、予備ドライブ41及び42を区別しない場合、予備ドライブ40と呼ぶ。この予備ドライブ40が、「予備データ処理機構」の一例にあたる。
本実施例に係る故障管理部203は、故障検出を行う際に、光ディスクライブラリ装置3が予備ドライブ40を有するか否かの判定を実行する。そして、故障管理部203は、予備ドライブ40が存在する場合、各予備ドライブ40で故障が発生しているか否かをチェックする。
予備ドライブ40で故障していない稼動可能な予備ドライブ40が存在する場合、故障管理部203は、稼動可能な予備ドライブを図13に示すような予備ドライブテーブル210に登録する。
図13は、予備ドライブテーブルの一例の図である。本実施例では、予備ドライブ41及び42に順番に予備ドライブ番号Sとして1及び2を振り、故障管理部203は、予備ドライブテーブル210に予備ドライブ番号を登録することで、予備ドライブ40の登録を行う。図13では、分かり易いように予備ドライブ番号の後に予備ドライブ41又は42を表す情報を付加したが、この情報はなくてもよい。さらに、故障管理部203は、予備ドライブ40の合計を予備ドライブテーブル210に登録する。これにより、読書制御部204は、予備ドライブ40の数を容易に把握することができる。
また、故障管理部203は、故障検知により故障ドライブを検出した場合、予備ドライブテーブル210を確認して、稼動可能な予備ドライブ40が1台以上あるか否かを判定する。そして、故障管理部203は、稼動可能な予備ドライブ40を検出した故障ドライブと交換して、稼動可能な予備ドライブ40をデータ処理を実行する稼働可能ドライブに割り当てる。また、交換する予備ドライブ40が足りない場合、故障管理部203は、足りない分の故障ドライブを故障ドライブテーブル201に登録する。その後、故障管理部203は、稼動可能ドライブとして新たに割り当てた予備ドライブ40の情報を読書制御部204に通知する。
読書制御部204は、稼動可能ドライブとして新たに割り当てられた予備ドライブ40の情報を故障管理部203から取得する。そして、読書制御部204は、新たに割り当てられた予備ドライブ40を稼動可能ドライブの1つとして組み込んだうえで、データ処理を光ディスクライブラリ装置3に実行させる。
次に、図14を参照して、実施例4に係る故障ドライブ補完処理の流れについて説明する。図14は、実施例4に係る故障ドライブ補完処理のフローチャートである。
読書制御部204は、全てのドライブ30に光ディスク301を搭載させる(ステップS501)。
次に、読書制御部204は、ドライブ番号であるNを0に設定する(ステップS502)。
読書制御部204は、ドライブ番号であるNを1つインクリメントする(ステップS503)。
次に、故障管理部203は、予備ドライブ40が1台以上存在するか否かを判定する(ステップS504)。この場合、既に故障ドライブの代わりに稼働可能ドライブとして割り当てられた予備ドライブ40は、判定の対象から外される。
次に、故障管理部203は、全ての予備ドライブ40で故障が発生しているか否かを判定する(ステップS505)。予備ドライブ40が全て故障の場合(ステップS505:肯定)、故障管理部203は、ステップS507へ進む。
これに対して、故障が発生していない予備ドライブ40が存在する場合(ステップS505:否定)、故障管理部203は、故障が発生していない予備ドライブ40を予備ドライブテーブル210に登録する(ステップS506)。
次に、読書制御部204は、故障ドライブテーブル201を参照して、ドライブNが故障ドライブとして既に故障ドライブテーブル201に登録されており使用不可か否かを判定する(ステップS507)。ドライブNが既に故障ドライブテーブル201に登録されている場合(ステップS507:否定)、既にドライブNに対する対応は完了しているので、処理は、ステップS517へ進む。
これに対して、ドライブNが使用可能である場合(ステップS507:肯定)、読書制御部204は、ドライブNの故障検知を故障管理部203に実行させる(ステップS508)。
その後、故障管理部203は、ドライブNの故障検知を行い、ドライブNに故障が発生したか否かを判定する(ステップS509)。ドライブNに故障が発生していない場合(ステップS509:否定)、処理は、ステップS517へ進む。
これに対して、ドライブNに故障が発生した場合(ステップS509:肯定)、故障管理部203は、ドライブNの処理を停止させる(ステップS510)。
次に、故障管理部203は、稼動可能ドライブとして割り当て可能な予備ドライブ数をRとして、Rが1以上か否かを判定する(ステップS511)。
Rが未満、すなわち稼働可能ドライブに割り当て可能な予備ドライブが無い場合(ステップS511:否定)、故障管理部203は、ドライブNから光ディスク301を取り出してマガジン303に戻す処理をディスク搬送用ロボット302に行わせる(ステップS512)。
次に、故障管理部203は、ドライブNを故障ドライブとして故障ドライブテーブル201に登録して動作を停止させる(ステップS513)。その後、処理は、ステップS517へ進む。
これに対して、Rが1以上の場合(ステップS511:肯定)、故障管理部203は、予備ドライブ40をドライブNと交換して稼働可能ドライブに割り当てる処理を実行する(ステップS514)。
次に、故障管理部203は、Rを1つインクリメントする(ステップS515)。その後、故障管理部203は、稼動可能ドライブに割り当てた予備ドライブ40の情報を読書制御部204に通知する。
読書制御部204は、稼動可能ドライブに割り当てた予備ドライブ40の情報の通知を故障管理部203から受ける。そして、読書制御部204は、ドライブNから光ディスク301を取り出させて、稼動可能ドライブとして割り当てられた予備ドライブ40に取り出した光ディスク301を搭載させる(ステップS516)。図14では、稼動可能ドライブとして割り当てられた予備ドライブ40を割当予備ドライブとした。
その後、読書制御部204は、ドライブ番号Nが6であるか否かを判定する(ステップS517)。ドライブ番号Nが6でない場合(ステップS517:否定)、処理は、ステップS503へ戻る。
これに対して、ドライブ番号Nが6の場合(ステップS517:肯定)、読書制御部204は、搭載された光ディスク301を用いたデータ処理を稼働可能ドライブに実行させる(ステップS518)。
そして、読書制御部204は、稼働可能ドライブの処理が完了したか否かを判定する(ステップS519)。稼働可能ドライブの処理が完了していない場合(ステップS519:否定)、読書制御部204は、ステップS502に戻る。
これに対して、稼働可能ドライブの処理が完了した場合(ステップS519:肯定)、読書制御部204は、光ディスク301を稼動可能ドライブから取り出させる(ステップS520)。
次に、読書制御部204は、未処理の光ディスク301があるか否かを判定する(ステップS521)。
未処理の光ディスク301が存在する場合(ステップS521:肯定)、読書制御部204は、未処理の光ディスク301の数をB、故障ドライブの数をM、稼働可能ドライブの数をDとする(ステップS522)。
次に、読書制御部204は、D≧Bか否かを判定する(ステップS523)。D≧Bの場合(ステップS523:肯定)、読書制御部204は、未処理の光ディスク301を稼動可能ドライブに搭載させる(ステップS524)。
次に、読書制御部204は、D及びBを1つずつデクリメントする(ステップS525)。
次に、読書制御部204は、D=0か否かを判定する(ステップS526)。D=0でない場合(ステップS526:否定)、読書制御部204は、ステップS524へ戻る。これに対して、D=0の場合(ステップS526:肯定)、読書制御部204は、ステップS518へ戻る。
一方、D≧Bでない場合(ステップS523:否定)、読書制御部204は、未処理の光ディスク301を稼動可能ドライブに搭載させる(ステップS527)。
次に、読書制御部204は、Bを1つずつデクリメントする(ステップS528)。
次に、読書制御部204は、B=0か否かを判定する(ステップS529)。B=0でない場合(ステップS529:否定)、読書制御部204は、ステップS527へ戻る。これに対して、B=0の場合(ステップS529:肯定)、読書制御部204は、ステップS518へ戻る。
一方、未処理の光ディスク301が無い場合(ステップS521:否定)、読書制御部204は、故障ドライブ補完処理を終了する。
以上に説明したように、本実施例に係る管理装置は、故障ドライブと交換可能な予備ドライブが存在する場合、故障ドライブの代わりに予備ドライブを稼動可能ドライブに割り当ててデータ処理を実行させる。これにより、動作継続性をより向上させることができる。
(ハードウェア構成)
図15は、管理装置のハードウェア構成図である。図15に示すように、管理装置2は、CPU(Central Processing Unit)291、メモリ292及びキャッシュ293を有する。さらに、管理装置2は、LAN(Local Area Network)インタフェース294、データ送受信インタフェース295及びUSB(Universal Serial Bus)インタフェース296を有する。
CPU291は、メモリ292及びキャッシュ293とバスで接続される。また、CPU291は、LANインタフェース294、データ送受信インタフェース295及びUSBインタフェース296とバスで接続される。
LANインタフェース294は、ネットワーク4に接続してホストコンピュータ1との間でデータ通信及び制御用通信を行うためのインタフェースである。CPU291は、LANインタフェース294を介して、ホストコンピュータ1と通信を行う。
データ送受信インタフェース295は、ドライブ30との間のデータ通信用のインタフェースである。CPU291は、データ送受信用インタフェース295を介して、ドライブ30との間でデータの送受信を行う。
USBインタフェース296は、ディスク搬送用ロボット302との間の制御通信用のインタフェースである。CPU291は、USBインタフェース296を介して、ディスク搬送用ロボット302に制御信号を送信する。
キャッシュ293は、図1に示したキャッシュ22の機能を実現する。
メモリ292は、図2に例示した、故障ドライブテーブル201を格納する。また、メモリ292は、図2例示した、データ送受信部202、故障管理部203、読書制御部204及びRAID管理部205の機能を実現するためのプログラムを含む各種プログラムを格納する。
CPU291は、メモリ292から各種プログラムを読み出してメモリ292上に展開して実行することで、図2例示した、データ送受信部202、故障管理部203、読書制御部204及びRAID管理部205の機能を実現する。