説明

ライブラリシステム

【課題】複数のディスクに対して分散してデータを記録し、分散して記録されたデータを再生する際に、効率よくディスクへアクセスできるようにするスケジューリング処理を提供する。
【解決手段】本発明では、クライアント装置からのアクセス要求に基づいて、ディスク(記憶媒体)へのアクセス順序を規定したコマンド群(媒体アクセスコマンド群)を生成する。この媒体アクセスコマンド群に基づいた、実際のディスクアクセスが完了する前に、新規の媒体アクセスコマンド(群)が生成された場合、先の媒体アクセスコマンド群内に同じディスク(記憶媒体)面にアクセスするコマンドが存在すれば、そのコマンドの後に新規のコマンドが挿入される。存在しなければ、新規のコマンドは既存のコマンド群の末尾に追加される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ライブラリシステムに関し、例えば、クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得、或いは、記録媒体にデータを書き込み、取得したデータについてはクライアント装置に提供するライブラリシステムに関するものである。
【背景技術】
【0002】
近年、コンピュータ用情報のみならず、音声や静止画像、動画像などの情報を保存するための記録媒体として光情報記録媒体(光ディスク)が実用化されている。そして、光情報記録媒体は更なる高密度化や高速転送化に向けて開発が進められており、記録再生を行うドライブ装置の将来的な形としての薄型化や小型化、あるいは媒体収納時の軽量小型化等を見据えて、光情報記録媒体自体の厚みをより薄くする試みがなされている。例えば、特許文献1では、複数の薄型情報記録媒体を積層してカートリッジの内部に納め、記録再生時には、カートリッジから任意のディスクを取り出して、ディスク記録再生装置に装着することが開示されている。
【0003】
また、論理ボリュームが複数の光ディスクに跨って構成される場合、複数の光ディスクに並列にアクセスしなければならない。これを実現するために、例えば、特許文献2に開示されるようなライブラリ装置で光ディスクの読み出し及び書き込みをスケジューリングし、効率よくディスクへのアクセスできるように管理している。
【0004】
【特許文献1】特開2004−134019号公報
【特許文献2】特開平7−175601号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献2に記載のライブラリ装置では、ディスクのロードから、読み出し又は書き込みを経てアンロードするまでの一連の命令を繰り返し管理するだけであるので、例えば特許文献1に記載のディスクを記録再生用の媒体として構成した場合、特許文献2と同じような処理をディスクに適用しても必ずしもスムーズな読み出し、書き込み動作を実現することができず、効率のよいディスクへのアクセスを実現することができない可能性がある。
【0006】
本発明はこのような状況に鑑みてなされたものであり、複数のディスクに対して分散してデータを記録し、分散して記録されたデータを再生する際に、効率よくディスクへアクセスできるようにするスケジューリング処理を提供するものである。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明ではまず、クライアント装置からのアクセス要求に基づいて、ディスク(記憶媒体)へのアクセス順序を規定したコマンド群(媒体アクセスコマンド群)を生成する。この媒体アクセスコマンド群に基づいた、実際のディスクアクセスが完了する前に、新規の媒体アクセスコマンド(群)が生成された場合、先の媒体アクセスコマンド群内に同じディスク(記憶媒体)面にアクセスするコマンドが存在すれば、そのコマンドの後に新規のコマンドが挿入される。存在しなければ、新規のコマンドは既存のコマンド群の末尾に追加される。
【0008】
上記媒体アクセスコマンド群に従って、ディスク装置の複数のドライブ(表面用及び裏面用)をディスクに割り当てる場合、コマンドに適合するドライブがBusyのときにはこのコマンドをスキップするようにディスクのドライブへの割り当てがなされる(図7参照)。
【0009】
また、複数設けられたドライブのどれかに障害が発生した場合やメンテナンスで使用できなくなった場合に、当該ドライブを使用禁止し、当該ドライブに装填されていたディスクを別の空いているドライブに移動させる。
【0010】
ドライブ数がディスク分散枚数(分散記録数)以上である場合には、全てのディスクをドライブに配置することができるので問題ないが、ドライブ数がディスク分散枚数未満の場合には、データ再構成に必要なブロックデータを記録したディスクを同時にドライブに配置することができない。そのため、媒体アクセスコマンド群のうち最初のドライブ数に相当する数のコマンドに対応するディスクをドライブに配置してデータを読み出し、HDDにデータを再構成できるようになるまで一時的に蓄積する。
【0011】
即ち、本発明によるライブラリシステムは、クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得、或いは、記録媒体にデータを書き込み、取得したデータについては前記クライアント装置に提供するライブラリシステムであって、アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されている。そして、ライブラリシステムは、アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、ブロックアクセスコマンド群を生成するアクセスコマンド生成部と、ブロックアクセスコマンド群を、アクセス対象の記憶媒体情報に基づいて並べ替えてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群に変換するスケジューラ部と、アクセス要求がデータ読み出し要求の場合に、媒体アクセスコマンド群に従って、記憶媒体にアクセスして複数のブロックのデータを取得し、ブロックのデータを再構成して提供するデータ提供部と、アクセス要求がデータ書き込み要求の場合に、媒体アクセスコマンド群に従って、複数の記憶媒体に亘って分散記録する手段と、を備える。スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが媒体アクセスコマンド群に含まれる場合には、同一記憶媒体への既存の媒体アクセスコマンドの末尾に新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入する。また、スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが媒体アクセスコマンド群に含まれない場合には、媒体アクセスコマンド群の末尾に、新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入する。
【0012】
また、スケジューラ部は、媒体アクセスコマンド群の各コマンドに対応する記憶媒体を、複数のドライブの中で空いているドライブに振り分ける。ここで、複数のドライブは、それぞれ複数で同数の、記憶媒体の表面用ドライブと裏面用ドライブで構成される。そして、スケジューラ部は、複数のドライブの駆動状況に応じて、媒体アクセスコマンド群の各コマンドをスキップさせながら、各コマンドに対応する記憶媒体の振り分けを決定する。なお、複数のドライブに振り分けた記憶媒体の入れ替え要求に対応して、複数のドライブに振り分けた記憶媒体が取り出される。
【0013】
さらに、スケジューラ部は、複数のドライブの何れかがアクセス不可の場合は、当該アクセス不可のドライブを使用禁止状態に設定し、媒体アクセスコマンド群の各コマンドを当該アクセス不可のドライブに割り当てないようにする。また、スケジューラ部は、複数のドライブの何れかがアクセス不可の場合に、アクセス不可のドライブに装填されている記憶媒体を空いているドライブに移動させるように媒体ハンドリング機構に指示する。
【0014】
また、ドライブの数が前記データの分散記録数未満の場合、スケジューラ部は、媒体アクセスコマンドのうち最初のドライブ数分のコマンドを前記ドライブに割り当て、データ提供部は、ドライブに装填された記憶媒体から読み出されたブロックデータを記憶装置に一時的に蓄積し、この一時的に蓄積したブロックデータを再構成してアクセス要求に対応するデータを提供する。データ提供部は、一時的に蓄積したブロックデータのデータ量を、(記憶装置キャッシュ残容量)/(分散記録数)が上限となるように制御する。
【0015】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【0016】
本発明のスケジューリング処理によれば、複数のディスクに対して分散してデータを記録し、分散して記録されたデータを再生する際に、効率よくディスクへアクセスできるようになる。
【発明を実施するための最良の形態】
【0017】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【0018】
<ディスクライブラリシステムの構成>
図1は、本発明によるディスクライブラリシステム1の概略構成を示す機能ブロック図である。ディスクライブラリシステム1は、クライアントからのファイル読み出しコマンド/ファイル書き込みコマンド(両者を併せて「アクセス要求」或いは「アクセスコマンド」と言ってもよい。)を受信し、ディスクアクセスのスケジューリング処理を実行するスケジュール装置10と、複数のクライアント端末装置1乃至Nから構成されるクライアント端末装置群20と、ディスクから所望のデータを読み出してスケジュール装置10に引き渡す、或いはクライアントから入力されたデータをディスクに分散記録(ストライピング)するディスク装置30と、を備えている。
【0019】
スケジュール装置10は、各種処理を実行する処理部11と、クライアント端末装置1乃至Nとの接続を実現するためのインターフェースI/F12と、ファイル情報に対応したブロック情報を格納した、及び/又は書き込むべきファイルに対応したブロックを複数のディスクに亘ってどのように書き込むかを示す情報を格納した、ファイル管理テーブル13と、一時的にデータを保管するためのRAM(ランダム・アクセス・メモリ)14と、後述の処理プログラムやパラメータ等の情報を格納するROM(リード・オンリ・メモリ)15と、ディスク装置30との接続を実現するためのインターフェースI/F16と、を備えている。
【0020】
処理部11において、アクセス命令変換部111は、クライアント端末装置1乃至Nの何れかから入力されたファイルアクセスコマンドを取得し、ファイル管理テーブル13を参照して、対応するファイルがどのディスクのどのブロックで構成されているかの情報を取得する。当該システムでは、ファイルは複数のブロックに分割され、複数のディスクに分散して記録されるため、ブロック情報がないとディスクへのアクセスができないからである。或いは、クライアント装置1乃至Nの何れかからファイル(データ)の書き込み要求が入力されると、そのファイルを分割して得られるブロックがどのディスクのどこに記録されるかについての情報を取得する。スケジューラ112は、アクセス命令変換部111で取得されたブロック情報へのアクセス順序をスケジューリングする処理を実行する。基本的にはアクセスコマンドを受信した順番で処理されるが、後述のように、効率よくディスクへのアクセスを実現するための工夫がなされている。ファイル提供部113は、ディスク装置で読み出されたデータを1つのファイルに並び替え、そのファイルのアクセスを要求したクライアント端末装置にそのファイルを提供する。
【0021】
<ディスク装置の構成>
図2は、ディスクライブラリシステム1を構成するディスク装置30の概略構成を示す機能ブロック図である。ディスク装置30は、入出力部31と、制御部32と、ディスクドライブ33と、ディスクハンドリング機構34と、HDD35と、RAM(ランダム・アクセス・メモリ)36と、ROM(リード・オンリ・メモリ)37と、ディスクカートリッジ39を装着するためのカートリッジ装着部38と、を少なくとも備えている。
【0022】
図2において、入出力部31には、スケジュール装置10からのディスクアクセス情報や書き込むべきデータが入力されると共に、入出力部31から読み出されたデータがスケジュール装置10に出力される。
【0023】
制御部32は、CPUやMPUで構成されており、ROM37に格納されているプログラムに従って、ディスク装置1の各種動作を制御するようになっている。
【0024】
ディスクドライブ33は、複数のディスクが格納されたディスクカートリッジ39から取り出され、装着された各ディスクに対してデータ書き込み・読み出しを実行する。なお、ディスクドライブ33は基本的に複数台用意され、表面用ドライブと裏面用ドライブとを1組として1つのドライブを構成するようになっている。
【0025】
ディスクハンドリング機構34は、ディスクカートリッジ39から対象のディスクを取り出してディスクドライブ33に装着し、また、処理が終了したディスクをディスクドライブ33から取り出してディスクカートリッジ39の所定の位置にディスクを収納する。
【0026】
HDD35はハード・ディスク・ドライブであり、データの分散書き込みや読み出しの際に、データがここに一時的に格納される。
【0027】
RAM36は、データや制御情報を一時的に格納するメモリである。ROM37は、ディスク装置1の固定の動作パラメータや動作プログラム等を格納している。
【0028】
カートリッジ装着部38には、1つ又は複数のディスクカートリッジ39が装着される。ディスクカートリッジ39には両面にデータを記録することができる両面記録用光ディスク(両面ディスク)が複数枚格納されている。
【0029】
<ストライピング動作>
図3は、データの分散書き込み読み出し(ストライピング)動作を模式的に示した図である。
データを書き込む場合、図3(a)のように、書き込むべきデータ(ファイル)が入力される。入力されたデータは、図3(a)及び(b)のように分割され、また、分割されたデータは、図3(c)に示すようにグルーピングされる。そして、所定の書き込み順序に従って、図3(d)及び(e)のように、分割データが各ディスク面に書き込まれる。
【0030】
書き込みが終了すると、各ディスクは、ディスクカートリッジ39内の元の格納場所に収納され、書き込み処理が終了する。なお、ディスクカートリッジ39に収納せずに再生動作に移行することも可能である。
【0031】
一方、データ読み出し時は、所望のファイルを構成するブロックデータが記録されている複数のディスクから、図3(f)のよう分割データが読み出される。そして、図3(g)乃至(i)のように、読み出された分割データが再構成される。再構成されたデータは再生され、入出力部31からスケジューリング装置10に出力される。読み出しが終了したディスクは、ディスクカートリッジ39の元の位置に収納され、読み出し処理が終了する。
【0032】
<スケジュール装置による新規コマンド追加時の動作>
続いて、スケジューリング済のコマンドに対して新規コマンドが追加されたときの処理について説明する。図4は新規コマンドを追加するときの処理工程を示すフローチャートであり、図5はその処理の具体例を示す図である。なお、ここでは、クライアント端末装置1乃至Nからのコマンドを一旦スケジューリングした後の状態から新たなコマンドが入力された場合について説明する。
【0033】
ステップS401では、アクセス命令変換部111が、何れかのクライアント端末装置20から入力された新規ファイルアクセスコマンドをブロックアクセスコマンドに変換する。つまり、アクセス命令変換部111は、ファイル管理テーブル13を参照し、新規ファイルアクセスコマンドに対応するファイルを構成するブロック(複数ディスクに亘って分散記録されているブロック)の情報を取得し、それらにアクセスするためのブロックアクセスコマンドを取得する。
【0034】
ステップS402では、スケジューラ112が、ステップS401で取得した新規のブロックアクセスコマンドに、既にスケジューリングされたブロックアクセスコマンドがアクセス対象とするディスクと同じディスクをアクセス対象とするコマンドが含まれるか判断する。含まれる場合には、処理はステップS403に移行し、含まれない場合には処理はステップS404に移行する。
【0035】
ステップS403では、スケジューラ112が、スケジューリングされたブロックアクセスコマンドの中の、同じディスクにアクセスするコマンド群の末尾に当該新規コマンドを挿入する。一方、ステップS404では、スケジューラ112が、スケジューリング済のブロックアクセスコマンド群の末尾に新規コマンドを追加する。
【0036】
図5を参照して、新規コマンド追加動作の例について説明する。図5Aに示されるように、新規コマンドとしてディスクNo.2裏へのアクセスコマンドが新たに入力されたとする。この場合、ディスクNo.2裏へのアクセスコマンドがスケジューリング済のコマンド群に含まれるので、上述のステップS403の処理が実行されて、新規コマンドが、既に存在するディスクNo.2裏コマンド51の次に挿入される。
【0037】
一方、図5Bに示されるように、新規コマンドとしてディスクNo.9裏へのアクセスコマンドが新たに入力される。この場合、ディスクNo.9裏へのアクセスコマンドがスケジューリング済のコマンド群に含まれていないので、上述のステップS404の処理が実行されて、スケジューリング済のコマンド群の最後のコマンド52の次に追加される。
このようにスケジューリング済のコマンド群であっても新規コマンドの内容に基づいて柔軟に変更しているので、効率のよいディスクアクセスを実現することができるようになっている。尚、データ書き込みに関する新規のコマンドも同様に処理される。
【0038】
<ディスクのドライブへの割り当て処理>
図6は、スケジューリング済のコマンド群に対応するディスクを空いているドライブに割り当てる処理を説明するためのフローチャートである。図7は、ディスクのドライブへの割り当て処理の例を示す図である。
図6において、ステップS601では、スケジューラ112が、ディスク装置30内のドライブ(表用及び裏用)の全てがBusyか否か判断する。何れかのドライブに空きがあれば処理はステップS602に移行し、全てのドライブがBusyであれば処理はステップS606に移行する。
【0039】
ステップS602では、スケジューラ112が、さらにスケジューリングされたコマンドを全て走査(全コマンドについてドライブへ割り当てられるか否か判定)したか否か判断する。全て走査した場合には処理はステップS606に移行し、全て走査していない場合には処理はステップS603に移行する。
【0040】
ステップS603では、スケジューラ112が、コマンドに対応するドライブが空いているか判断する。例えば、コマンドがディスクNo.2裏へのアクセスであれば、ディスク裏面用ドライブ(ドライブ2裏である必要はない)が空いているか判断する。対応するドライブが空いていれば、ステップS604において、当該コマンドが空いているドライブに割り当てられる。対応するドライブが空いていなければ、ステップS605において、当該コマンドはスキップされ、処理はステップS601に戻る。
【0041】
ステップS601でドライブが全てBusy、或いはステップS602で全コマンド走査済と判断された場合、ステップS606において、スケジューラ112がコマンド群における全コマンドの割り当てが完了したか判断する(新たにコマンド群が入力された場合の判断も含む)。完了していれば割り当て処理は終了する。完了してなければ、処理はステップS607に移行し、そこでスケジューラ112が何れかのドライブのBusyが解除されたか判断する。何れのドライブも解除されていなければ、処理は再度ステップS601に戻り、全てのコマンド割り当てが終了するまで処理が繰り返される。何れかのドライブが解除されれば、処理はステップS602に移行し、ステップS602乃至S605の処理が繰り返される。なお、フローチャートには現れていないが、コマンド処理が完了したドライブについては、続けて同じディスクに対するアクセス要求が来る可能性があることを考慮して、入れ替え要求が来るまでディスクをドライブに挿入したままとする制御が行われている。
【0042】
図7を参照して、ディスク割り当て処理の例について説明する。図7に示されるように、コマンド群71乃至75に対応するディスクが割り当てられる前に、8つ設けられたドライブのうち、ドライブ1裏332−1、2表331−2、3表331−3及び4表331−4がBusyであったとする。このとき、コマンド71に対応するディスクについては、ドライブ1表331−1が空いているので、ドライブ1表331−1に割り当てられる。コマンド72は、ドライブ2裏332−2が空いているので、対応するディスクがそこに割り当てられる。そして、コマンド73はコマンド72と同じディスク面へのアクセス命令なので、コマンド72終了後に実行されるようになる。コマンド74については表用ドライブが全てBusyであるので、このコマンドの処理はスキップされる。何れかの表用ドライブが空いたらそこにコマンド74が割り当てられる。また、コマンド75については、裏用ドライブがドライブ3とドライブ4の2つが空いているので、何れのドライブを用いるようにしても良く、図7ではドライブ4裏332−4に割り当てられている。
【0043】
このようなコマンドの割り当て方をすれば、1つのコマンド処理が完了してから次のコマンドを処理する場合よりも効率よく全てのコマンドを実行することができる。例えばデータ読み出しの場合、先に実行されたコマンドに対応する読み出しデータはHDDに蓄積され、最終的にファイルが再構成されて出力されることになる。
【0044】
<ドライブ障害発生時のディスク割り当て処理>
図8は、ドライブに障害が発生したときの処理を説明するためのフローチャートである。図9は、ドライブ障害発生時のディスク割り当て処理の例を示す図である。
図8において、ステップS801では、スケジューラ112が、ディスク装置30からドライブ故障の通知を受け、当該故障したドライブにディスクが装填されているか判断する。装填されている場合には、処理はステップS805に移行し、そこで当該ドライブが閉鎖され使用禁止状態となる。当該ドライブにディスクが装填されている場合には、処理はステップS802に移行する。
【0045】
ステップS802では、スケジューラ112が、他のドライブに空きがあるか判断する。空きがなければドライブが空くまで待機状態に制御される(ステップS803)。
【0046】
ステップS802で他に空きドライブがあると判断されれば、ステップS804において、スケジューラ112が、ディスク装置30のディスクハンドリング機構34に指示を与えて、故障ドライブに装填されているディスクを空いているドライブに移動する。そして、ステップS805で、故障したドライブが閉鎖される。
【0047】
図9を参照して、ドライブ障害発生時の処理の例(ドライブ8つの場合)について説明する。図9に示されるように、ドライブ3表331−3に障害が発生したとする。表用ドライブでBusyでないものはドライブ1表331−1だけであるので、故障したドライブ3表331−3に装填されているディスクはドライブ1表331−1に移動させられる。なお、複数の表用ドライブも空いている場合、他にコマンド群が存在するときには、そのコマンドの内容を見て一番効率の良い(バッティングがなく、最短の時間で処理できる)ドライブを選択してディスクを移動するようにするとよい。
【0048】
以上のように、ドライブに故障が発生した場合に即座にディスク移動処理がなされるので、読み出し時間が多少長くなる可能性はあるものの、システム全体の稼動を止める必要がない。なお、ドライブ故障時に限らず、特定のドライブをメンテナンスする場合にも当該ドライブのみ停止すればいいので、柔軟にシステムを運用することができる。
【0049】
<ストライピング構成時のディスク割り当て処理>
アクセス対象の論理ボリュームがストライピング構成を採っている(複数のディスクに亘って分散記録されている)場合、ディスク分散枚数がドライブ以上である場合と、ドライブ未満である場合とでは処理が異なってくる。
【0050】
(1)ドライブ数≧ディスク分散枚数の場合
図10は、ドライブ数≧ディスク分散枚数の場合のディスクのドライブへの配置例を示している。図10に示されるように、この場合には、全てのコマンドに対応するディスクが各ドライブに装填されうるので、システム運用上問題はない。
【0051】
(2)ドライブ数<ディスク分散枚数の場合
しかしながら、この場合全てのストライピング構成ディスクを同時にドライブに配置することができない。そのため、データを再構成できるまで読み出したデータをHDD35に一時的に蓄積する必要がある。このとき、一時蓄積したデータでキャッシュが埋まらないように、データ転送量を調節する必要がある。例えば、各ディスクから一時蓄積するデータ量を(HDDキャッシュ残容量)/(ディスク分散枚数)と上限を設けることにより、一時蓄積したデータでキャッシュが埋まるのを防止することができる。なお、図11が、ドライブ数<ディスク分散枚数の場合のディスクのドライブへの配置例を示している。図11に示されるように、4つのコマンドに対応するディスクが各ドライブに配置され、読み出されたデータがHDD35に一時的に蓄積される。そして、最初の4つのコマンドの処理が完了するに従って、順次他のコマンドが処理される。また、HDDに一時的に蓄積されたデータを再構成しながら、順次再構成されたデータが出力される。
【0052】
(3)図12は、論理ボリュームがストライピング構成を採っているときにディスク割り当て処理を説明する場合(上記(1)及び(2)を含む)のフローチャートである。図12は、この場合のディスクのドライブへの配置例を示す図である。
【0053】
図12において、ステップS1201では、スケジューラ112が、ディスク装置30におけるドライブ数に関する情報を取得し、ストライピングの並列度(ディスク分散枚数)がドライブ数以上か否か判断する。並列度がドライブ数未満の場合には、上記(1)の場合であり、処理はステップS1205に移行する。並列度がドライブ数以上の場合には、上記(2)の場合であり、処理はステップS1202に移行する。
【0054】
ステップS1202では、ディスク装置30の制御部32が、スケジューラ112によってスケジューリングされたコマンドに従って、空いているドライブにディスクを配置し、読み出したデータをHDD35に蓄積する。
【0055】
そして、ステップS1203では、制御部32が、全てのストライピングディスクを読み終えたかを判断する。読み終えていない場合には、処理はステップS1202に移行し、読み終えている場合には処理はステップS1204に移行する。そして、ステップS1204では、制御部32が、HDD35からデータを再構成して再構成データを出力する。
【0056】
一方、ストライピング並列度がドライブ数未満の場合、ステップS1205において、制御部32が、空いているドライブはストライピングの並列度以上か否か判断する。ストライピングの並列度以上のドライブが空いていない場合にはドライブが空くまで処理を待機する(ステップS1206)。
【0057】
並列度以上のドライブが空いている場合には、ステップS1207において、制御部32が、空いているドライブに該当するディスクを配置し、データを読み出す。そして、ステップS1204で、制御部32がHDD35からデータを再構成して再構成データを出力する。
以上のようにして、ストライピングの並列度数の如何に限られずに、効率よくデータを再構成して提供することができる。
【0058】
<まとめ>
本実施形態では、クライアント装置からのアクセス要求に基づいて、ディスク(記憶媒体)へのアクセス順序を規定したコマンド群(媒体アクセスコマンド群)を生成する。この媒体アクセスコマンド群に基づいた、実際のディスクアクセスが完了する前に、新規の媒体アクセスコマンド(群)が生成された場合、先の媒体アクセスコマンド群内に同じディスク(記憶媒体)面にアクセスするコマンドが存在すれば、そのコマンドの後に新規のコマンドが挿入される。存在しなければ、新規のコマンドは既存のコマンド群の末尾に追加される。このようにすることにより、関連するディスクへのアクセスコマンドを連続して処理することができるので、ディスクへのアクセスを効率よく実行することができるようになる。
【0059】
また、上記媒体アクセスコマンド群に従って、ディスク装置の複数のドライブ(表面用及び裏面用)をディスクに割り当てる場合、コマンドに適合するドライブがBusyのときにはこのコマンドをスキップするようにディスクのドライブへの割り当てがなされる(図7参照)。このようにすることにより、1つのコマンドを処理できないだけでその後のコマンドを処理できなるという状態を回避することができ、効率よくディスクへのアクセスを実現することができる。
【0060】
また、複数設けられたドライブのどれかに障害が発生した場合やメンテナンスで使用できなくなった場合に、当該ドライブを使用禁止し、当該ドライブに装填されていたディスクを別の空いているドライブに移動させる。ドライブが故障等により使用禁止になっても残されたドライブを用いて実現できる最大限の効率でディスクにアクセスすることができる。
【0061】
ドライブ数がディスク分散枚数(分散記録数)以上である場合には、全てのディスクをドライブに配置することができるのでデータ再構成或いはデータ書き込み上問題はないが、ドライブ数がディスク分散枚数未満の場合には、データ再構成に必要なブロックデータを記録したディスクを同時にドライブに配置することができない。そのため、媒体アクセスコマンド群のうち最初のドライブ数に相当する数のコマンドに対応するディスクをドライブに配置してデータを読み出し、HDDにデータを再構成できるようになるまで一時的に蓄積する。このようにすることにより、ドライブ数の如何に拘わらず、効率よくディスクにアクセスでき、データを再構成することができる。
【0062】
なお、各実施形態の機能は、ソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ(登録商標)ディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0063】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【0064】
また、実施の形態の機能を実現するソフトウェアのプログラムコードがネットワークを介して配信され、システム又は装置のハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納され、そのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行することによって、達成されるようにしてもよい。
【図面の簡単な説明】
【0065】
【図1】本発明によるライブラリシステムの概略構成を示す機能ブロック図である。
【図2】ディスク装置の概略構成を示す機能ブロック図である。
【図3】ストライピングを説明するための図である。
【図4】新規コマンド追加時の処理を説明するためのフローチャートである。
【図5】新規コマンド追加時の処理例を示す図である。
【図6】媒体アクセスコマンド群に対応するディスクのドライブ割り当て処理を説明するためのフローチャートである。
【図7】媒体アクセスコマンド群に対応するディスクのドライブ割り当て処理の例を示す図である。
【図8】ドライブに障害が発生したときの処理を説明するためのフローチャートである。
【図9】ドライブに障害が発生したときの処理の例を示す図である。
【図10】ドライブ数≧ディスク分散枚数の場合のディスク配置例を示す図である。
【図11】ドライブ数<ディスク分散枚数の場合のディスク配置例を示す図である。
【図12】ストライピング構成時のディスク割り当て処理を説明するためのフローチャートである。

【特許請求の範囲】
【請求項1】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得、或いは、記録媒体にデータを書き込み、前記取得したデータについては前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、ブロックアクセスコマンド群を生成するアクセスコマンド生成部と、
前記ブロックアクセスコマンド群を、アクセス対象の記憶媒体情報に基づいて並べ替えてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群に変換するスケジューラ部と、
前記アクセス要求がデータ読み出し要求の場合に、前記媒体アクセスコマンド群に従って、前記記憶媒体にアクセスして前記複数のブロックのデータを取得し、ブロックのデータを再構成して提供するデータ提供部と、
前記アクセス要求がデータ書き込み要求の場合に、前記媒体アクセスコマンド群に従って、複数の記憶媒体に亘って分散記録する手段と、を備え、
前記スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが前記媒体アクセスコマンド群に含まれる場合には、同一記憶媒体への既存の媒体アクセスコマンドの末尾に前記新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入することを特徴とするライブラリシステム。
【請求項2】
前記記録媒体は、ディスクカートリッジに複数枚格納されていることを特徴とする請求項1に記載のライブラリシステム。
【請求項3】
前記スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが前記媒体アクセスコマンド群に含まれない場合には、前記媒体アクセスコマンド群の末尾に、前記新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入することを特徴とする請求項1又は2に記載のライブラリシステム。
【請求項4】
前記スケジューラ部は、前記媒体アクセスコマンド群の各コマンドに対応する記憶媒体を、複数のドライブの中で空いているドライブに振り分けることを特徴とする請求項1乃至3の何れか1項に記載のライブラリシステム。
【請求項5】
前記複数のドライブは、それぞれ複数で同数の、前記記憶媒体の表面用ドライブと裏面用ドライブで構成され、
前記スケジューラ部は、前記複数のドライブの駆動状況に応じて、前記媒体アクセスコマンド群の各コマンドをスキップさせながら、各コマンドに対応する記憶媒体の振り分けを決定することを特徴とする請求項4に記載のライブラリシステム。
【請求項6】
前記スケジューラ部は、前記複数のドライブに振り分けた前記記憶媒体の入れ替え要求に対応して、前記複数のドライブに振り分けた記憶媒体取り出しを指示することを特徴とする請求項4又は5に記載のライブラリシステム。
【請求項7】
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合は、当該アクセス不可のドライブを使用禁止状態に設定し、前記媒体アクセスコマンド群の各コマンドが当該アクセス不可のドライブに割り当てないようにすることを特徴とする請求項4乃至6の何れか1項に記載のライブラリシステム。
【請求項8】
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合に、アクセス不可のドライブに装填されている記憶媒体を空いているドライブに移動させるように媒体ハンドリング機構に指示することを特徴とする請求項4乃至7の何れか1項に記載のライブラリシステム。
【請求項9】
前記ドライブの数が前記データの分散記録数未満の場合、前記スケジューラ部は、前記媒体アクセスコマンドのうち最初のドライブ数分のコマンドを前記ドライブに割り当て、
前記データ提供部は、前記ドライブに装填された記憶媒体から読み出されたブロックデータを記憶装置に一時的に蓄積し、この一時的に蓄積したブロックデータを再構成して前記アクセス要求に対応するデータを提供することを特徴とする請求項1乃至8に記載のライブラリシステム。
【請求項10】
前記データ提供部は、前記一時的に蓄積したブロックデータのデータ量を、(前記記憶装置キャッシュ残容量)/(前記分散記録数)が上限となるように制御することを特徴とする請求項9に記載のライブラリシステム。
【請求項11】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、ブロックアクセスコマンド群を生成するアクセスコマンド生成部と、
前記ブロックアクセスコマンド群を、アクセス対象の記憶媒体情報に基づいて並べ替えてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群に変換するスケジューラ部と、
前記媒体アクセスコマンド群に従って、前記記憶媒体にアクセスして前記複数のブロックのデータを取得し、ブロックのデータを再構成して提供するデータ提供部と、を備え、
前記スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが前記媒体アクセスコマンド群に含まれる場合には、同一記憶媒体への既存の媒体アクセスコマンドの末尾に前記新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入することを特徴とするライブラリシステム。
【請求項12】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、この情報に含まれるアクセス対象の記憶媒体情報に基づいてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群を生成するスケジューラ部、を備え、
前記スケジューラ部は、前記媒体アクセスコマンド群の各コマンドに対応する記憶媒体を、複数のドライブの中で空いているドライブに振り分けることを特徴とするライブラリシステム。
【請求項13】
前記複数のドライブは、それぞれ複数で同数の、前記記憶媒体の表面用ドライブと裏面用ドライブで構成され、
前記スケジューラ部は、前記複数のドライブの駆動状況に応じて、前記媒体アクセスコマンド群の各コマンドをスキップさせながら、各コマンドに対応する記憶媒体の振り分けを決定することを特徴とする請求項12に記載のライブラリシステム。
【請求項14】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、この情報に含まれるアクセス対象の記憶媒体情報に基づいてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群を生成するスケジューラ部と、
前記記憶媒体を駆動するための複数のドライブと、を備え、
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合は、当該アクセス不可のドライブを使用禁止状態に設定し、前記媒体アクセスコマンド群の各コマンドを当該アクセス不可のドライブに割り当てないようにすることを特徴とするライブラリシステム。
【請求項15】
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合に、アクセス不可のドライブに装填されている記憶媒体を空いているドライブに移動させるように媒体ハンドリング機構に指示することを特徴とする請求項14に記載のライブラリシステム。
【請求項16】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、この情報に含まれるアクセス対象の記憶媒体情報に基づいてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群を生成するスケジューラ部と、
前記記憶媒体を駆動するための複数のドライブと、を備え、
前記ドライブの数が前記データの分散記録数未満の場合、前記スケジューラ部は、前記媒体アクセスコマンドのうち最初のドライブ数分のコマンドを前記ドライブに割り当て、
前記データ提供部は、前記ドライブに装填された記憶媒体から読み出されたブロックデータを記憶装置に一時的に蓄積し、この一時的に蓄積したブロックデータを再構成して前記アクセス要求に対応するデータを提供することを特徴とするライブラリシステム。
【請求項17】
前記データ提供部は、前記一時的に蓄積したブロックデータのデータ量を、(前記記憶装置キャッシュ残容量)/(前記分散記録数)が上限となるように制御することを特徴とする請求項16に記載のライブラリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2009−48563(P2009−48563A)
【公開日】平成21年3月5日(2009.3.5)
【国際特許分類】
【出願番号】特願2007−216339(P2007−216339)
【出願日】平成19年8月22日(2007.8.22)
【出願人】(000005810)日立マクセル株式会社 (2,366)
【Fターム(参考)】