(57)【要約】【課題】複数のディスクに対して分散してデータを記録し、分散して記録されたデータを再生する際に、効率よくディスクへアクセスできるようにするスケジューリング処理を提供する。【解決手段】本発明では、クライアント装置からのアクセス要求に基づいて、ディスク（記憶媒体）へのアクセス順序を規定したコマンド群（媒体アクセスコマンド群）を生成する。この媒体アクセスコマンド群に基づいた、実際のディスクアクセスが完了する前に、新規の媒体アクセスコマンド（群）が生成された場合、先の媒体アクセスコマンド群内に同じディスク（記憶媒体）面にアクセスするコマンドが存在すれば、そのコマンドの後に新規のコマンドが挿入される。存在しなければ、新規のコマンドは既存のコマンド群の末尾に追加される。【選択図】図１
2009048563.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得、或いは、記録媒体にデータを書き込み、前記取得したデータについては前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、ブロックアクセスコマンド群を生成するアクセスコマンド生成部と、
前記ブロックアクセスコマンド群を、アクセス対象の記憶媒体情報に基づいて並べ替えてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群に変換するスケジューラ部と、
前記アクセス要求がデータ読み出し要求の場合に、前記媒体アクセスコマンド群に従って、前記記憶媒体にアクセスして前記複数のブロックのデータを取得し、ブロックのデータを再構成して提供するデータ提供部と、
前記アクセス要求がデータ書き込み要求の場合に、前記媒体アクセスコマンド群に従って、複数の記憶媒体に亘って分散記録する手段と、を備え、
前記スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが前記媒体アクセスコマンド群に含まれる場合には、同一記憶媒体への既存の媒体アクセスコマンドの末尾に前記新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入することを特徴とするライブラリシステム。
【請求項２】
前記記録媒体は、ディスクカートリッジに複数枚格納されていることを特徴とする請求項１に記載のライブラリシステム。
【請求項３】
前記スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが前記媒体アクセスコマンド群に含まれない場合には、前記媒体アクセスコマンド群の末尾に、前記新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入することを特徴とする請求項１又は２に記載のライブラリシステム。
【請求項４】
前記スケジューラ部は、前記媒体アクセスコマンド群の各コマンドに対応する記憶媒体を、複数のドライブの中で空いているドライブに振り分けることを特徴とする請求項１乃至３の何れか１項に記載のライブラリシステム。
【請求項５】
前記複数のドライブは、それぞれ複数で同数の、前記記憶媒体の表面用ドライブと裏面用ドライブで構成され、
前記スケジューラ部は、前記複数のドライブの駆動状況に応じて、前記媒体アクセスコマンド群の各コマンドをスキップさせながら、各コマンドに対応する記憶媒体の振り分けを決定することを特徴とする請求項４に記載のライブラリシステム。
【請求項６】
前記スケジューラ部は、前記複数のドライブに振り分けた前記記憶媒体の入れ替え要求に対応して、前記複数のドライブに振り分けた記憶媒体取り出しを指示することを特徴とする請求項４又は５に記載のライブラリシステム。
【請求項７】
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合は、当該アクセス不可のドライブを使用禁止状態に設定し、前記媒体アクセスコマンド群の各コマンドが当該アクセス不可のドライブに割り当てないようにすることを特徴とする請求項４乃至６の何れか１項に記載のライブラリシステム。
【請求項８】
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合に、アクセス不可のドライブに装填されている記憶媒体を空いているドライブに移動させるように媒体ハンドリング機構に指示することを特徴とする請求項４乃至７の何れか１項に記載のライブラリシステム。
【請求項９】
前記ドライブの数が前記データの分散記録数未満の場合、前記スケジューラ部は、前記媒体アクセスコマンドのうち最初のドライブ数分のコマンドを前記ドライブに割り当て、
前記データ提供部は、前記ドライブに装填された記憶媒体から読み出されたブロックデータを記憶装置に一時的に蓄積し、この一時的に蓄積したブロックデータを再構成して前記アクセス要求に対応するデータを提供することを特徴とする請求項１乃至８に記載のライブラリシステム。
【請求項１０】
前記データ提供部は、前記一時的に蓄積したブロックデータのデータ量を、（前記記憶装置キャッシュ残容量）／（前記分散記録数）が上限となるように制御することを特徴とする請求項９に記載のライブラリシステム。
【請求項１１】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、ブロックアクセスコマンド群を生成するアクセスコマンド生成部と、
前記ブロックアクセスコマンド群を、アクセス対象の記憶媒体情報に基づいて並べ替えてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群に変換するスケジューラ部と、
前記媒体アクセスコマンド群に従って、前記記憶媒体にアクセスして前記複数のブロックのデータを取得し、ブロックのデータを再構成して提供するデータ提供部と、を備え、
前記スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが前記媒体アクセスコマンド群に含まれる場合には、同一記憶媒体への既存の媒体アクセスコマンドの末尾に前記新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入することを特徴とするライブラリシステム。
【請求項１２】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、この情報に含まれるアクセス対象の記憶媒体情報に基づいてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群を生成するスケジューラ部、を備え、
前記スケジューラ部は、前記媒体アクセスコマンド群の各コマンドに対応する記憶媒体を、複数のドライブの中で空いているドライブに振り分けることを特徴とするライブラリシステム。
【請求項１３】
前記複数のドライブは、それぞれ複数で同数の、前記記憶媒体の表面用ドライブと裏面用ドライブで構成され、
前記スケジューラ部は、前記複数のドライブの駆動状況に応じて、前記媒体アクセスコマンド群の各コマンドをスキップさせながら、各コマンドに対応する記憶媒体の振り分けを決定することを特徴とする請求項１２に記載のライブラリシステム。
【請求項１４】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、この情報に含まれるアクセス対象の記憶媒体情報に基づいてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群を生成するスケジューラ部と、
前記記憶媒体を駆動するための複数のドライブと、を備え、
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合は、当該アクセス不可のドライブを使用禁止状態に設定し、前記媒体アクセスコマンド群の各コマンドを当該アクセス不可のドライブに割り当てないようにすることを特徴とするライブラリシステム。
【請求項１５】
前記スケジューラ部は、前記複数のドライブの何れかがアクセス不可の場合に、アクセス不可のドライブに装填されている記憶媒体を空いているドライブに移動させるように媒体ハンドリング機構に指示することを特徴とする請求項１４に記載のライブラリシステム。
【請求項１６】
クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得し、前記クライアント装置に提供するライブラリシステムであって、
前記アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されており、前記ライブラリシステムは、
前記アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、この情報に含まれるアクセス対象の記憶媒体情報に基づいてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群を生成するスケジューラ部と、
前記記憶媒体を駆動するための複数のドライブと、を備え、
前記ドライブの数が前記データの分散記録数未満の場合、前記スケジューラ部は、前記媒体アクセスコマンドのうち最初のドライブ数分のコマンドを前記ドライブに割り当て、
前記データ提供部は、前記ドライブに装填された記憶媒体から読み出されたブロックデータを記憶装置に一時的に蓄積し、この一時的に蓄積したブロックデータを再構成して前記アクセス要求に対応するデータを提供することを特徴とするライブラリシステム。
【請求項１７】
前記データ提供部は、前記一時的に蓄積したブロックデータのデータ量を、（前記記憶装置キャッシュ残容量）／（前記分散記録数）が上限となるように制御することを特徴とする請求項１６に記載のライブラリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライブラリシステムに関し、例えば、クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得、或いは、記録媒体にデータを書き込み、取得したデータについてはクライアント装置に提供するライブラリシステムに関するものである。
【背景技術】
【０００２】
近年、コンピュータ用情報のみならず、音声や静止画像、動画像などの情報を保存するための記録媒体として光情報記録媒体（光ディスク）が実用化されている。そして、光情報記録媒体は更なる高密度化や高速転送化に向けて開発が進められており、記録再生を行うドライブ装置の将来的な形としての薄型化や小型化、あるいは媒体収納時の軽量小型化等を見据えて、光情報記録媒体自体の厚みをより薄くする試みがなされている。例えば、特許文献１では、複数の薄型情報記録媒体を積層してカートリッジの内部に納め、記録再生時には、カートリッジから任意のディスクを取り出して、ディスク記録再生装置に装着することが開示されている。
【０００３】
また、論理ボリュームが複数の光ディスクに跨って構成される場合、複数の光ディスクに並列にアクセスしなければならない。これを実現するために、例えば、特許文献２に開示されるようなライブラリ装置で光ディスクの読み出し及び書き込みをスケジューリングし、効率よくディスクへのアクセスできるように管理している。
【０００４】
【特許文献１】特開２００４−１３４０１９号公報
【特許文献２】特開平７−１７５６０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献２に記載のライブラリ装置では、ディスクのロードから、読み出し又は書き込みを経てアンロードするまでの一連の命令を繰り返し管理するだけであるので、例えば特許文献１に記載のディスクを記録再生用の媒体として構成した場合、特許文献２と同じような処理をディスクに適用しても必ずしもスムーズな読み出し、書き込み動作を実現することができず、効率のよいディスクへのアクセスを実現することができない可能性がある。
【０００６】
本発明はこのような状況に鑑みてなされたものであり、複数のディスクに対して分散してデータを記録し、分散して記録されたデータを再生する際に、効率よくディスクへアクセスできるようにするスケジューリング処理を提供するものである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明ではまず、クライアント装置からのアクセス要求に基づいて、ディスク（記憶媒体）へのアクセス順序を規定したコマンド群（媒体アクセスコマンド群）を生成する。この媒体アクセスコマンド群に基づいた、実際のディスクアクセスが完了する前に、新規の媒体アクセスコマンド（群）が生成された場合、先の媒体アクセスコマンド群内に同じディスク（記憶媒体）面にアクセスするコマンドが存在すれば、そのコマンドの後に新規のコマンドが挿入される。存在しなければ、新規のコマンドは既存のコマンド群の末尾に追加される。
【０００８】
上記媒体アクセスコマンド群に従って、ディスク装置の複数のドライブ（表面用及び裏面用）をディスクに割り当てる場合、コマンドに適合するドライブがＢｕｓｙのときにはこのコマンドをスキップするようにディスクのドライブへの割り当てがなされる（図７参照）。
【０００９】
また、複数設けられたドライブのどれかに障害が発生した場合やメンテナンスで使用できなくなった場合に、当該ドライブを使用禁止し、当該ドライブに装填されていたディスクを別の空いているドライブに移動させる。
【００１０】
ドライブ数がディスク分散枚数（分散記録数）以上である場合には、全てのディスクをドライブに配置することができるので問題ないが、ドライブ数がディスク分散枚数未満の場合には、データ再構成に必要なブロックデータを記録したディスクを同時にドライブに配置することができない。そのため、媒体アクセスコマンド群のうち最初のドライブ数に相当する数のコマンドに対応するディスクをドライブに配置してデータを読み出し、ＨＤＤにデータを再構成できるようになるまで一時的に蓄積する。
【００１１】
即ち、本発明によるライブラリシステムは、クライアント装置からのアクセス要求に従って、記憶媒体から該当するデータを取得、或いは、記録媒体にデータを書き込み、取得したデータについては前記クライアント装置に提供するライブラリシステムであって、アクセス要求に対応するデータは複数のブロックに分割されて複数の記憶媒体に亘って分散記憶されている。そして、ライブラリシステムは、アクセス要求に対応するデータを構成する複数のブロックに関する情報を取得し、ブロックアクセスコマンド群を生成するアクセスコマンド生成部と、ブロックアクセスコマンド群を、アクセス対象の記憶媒体情報に基づいて並べ替えてアクセス処理をスケジューリングし、媒体にアクセスするための媒体アクセスコマンド群に変換するスケジューラ部と、アクセス要求がデータ読み出し要求の場合に、媒体アクセスコマンド群に従って、記憶媒体にアクセスして複数のブロックのデータを取得し、ブロックのデータを再構成して提供するデータ提供部と、アクセス要求がデータ書き込み要求の場合に、媒体アクセスコマンド群に従って、複数の記憶媒体に亘って分散記録する手段と、を備える。スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが媒体アクセスコマンド群に含まれる場合には、同一記憶媒体への既存の媒体アクセスコマンドの末尾に新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入する。また、スケジューラ部は、新規のブロックアクセスコマンドを取得すると、その新規のブロックアクセスコマンドに対応する記憶媒体へのアクセスコマンドが媒体アクセスコマンド群に含まれない場合には、媒体アクセスコマンド群の末尾に、新規のブロックアクセスコマンドに対応する媒体アクセスコマンドを挿入する。
【００１２】
また、スケジューラ部は、媒体アクセスコマンド群の各コマンドに対応する記憶媒体を、複数のドライブの中で空いているドライブに振り分ける。ここで、複数のドライブは、それぞれ複数で同数の、記憶媒体の表面用ドライブと裏面用ドライブで構成される。そして、スケジューラ部は、複数のドライブの駆動状況に応じて、媒体アクセスコマンド群の各コマンドをスキップさせながら、各コマンドに対応する記憶媒体の振り分けを決定する。なお、複数のドライブに振り分けた記憶媒体の入れ替え要求に対応して、複数のドライブに振り分けた記憶媒体が取り出される。
【００１３】
さらに、スケジューラ部は、複数のドライブの何れかがアクセス不可の場合は、当該アクセス不可のドライブを使用禁止状態に設定し、媒体アクセスコマンド群の各コマンドを当該アクセス不可のドライブに割り当てないようにする。また、スケジューラ部は、複数のドライブの何れかがアクセス不可の場合に、アクセス不可のドライブに装填されている記憶媒体を空いているドライブに移動させるように媒体ハンドリング機構に指示する。
【００１４】
また、ドライブの数が前記データの分散記録数未満の場合、スケジューラ部は、媒体アクセスコマンドのうち最初のドライブ数分のコマンドを前記ドライブに割り当て、データ提供部は、ドライブに装填された記憶媒体から読み出されたブロックデータを記憶装置に一時的に蓄積し、この一時的に蓄積したブロックデータを再構成してアクセス要求に対応するデータを提供する。データ提供部は、一時的に蓄積したブロックデータのデータ量を、（記憶装置キャッシュ残容量）／（分散記録数）が上限となるように制御する。
【００１５】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【００１６】
本発明のスケジューリング処理によれば、複数のディスクに対して分散してデータを記録し、分散して記録されたデータを再生する際に、効率よくディスクへアクセスできるようになる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１８】
＜ディスクライブラリシステムの構成＞
図１は、本発明によるディスクライブラリシステム１の概略構成を示す機能ブロック図である。ディスクライブラリシステム１は、クライアントからのファイル読み出しコマンド／ファイル書き込みコマンド（両者を併せて「アクセス要求」或いは「アクセスコマンド」と言ってもよい。）を受信し、ディスクアクセスのスケジューリング処理を実行するスケジュール装置１０と、複数のクライアント端末装置１乃至Ｎから構成されるクライアント端末装置群２０と、ディスクから所望のデータを読み出してスケジュール装置１０に引き渡す、或いはクライアントから入力されたデータをディスクに分散記録（ストライピング）するディスク装置３０と、を備えている。
【００１９】
スケジュール装置１０は、各種処理を実行する処理部１１と、クライアント端末装置１乃至Ｎとの接続を実現するためのインターフェースＩ／Ｆ１２と、ファイル情報に対応したブロック情報を格納した、及び／又は書き込むべきファイルに対応したブロックを複数のディスクに亘ってどのように書き込むかを示す情報を格納した、ファイル管理テーブル１３と、一時的にデータを保管するためのＲＡＭ（ランダム・アクセス・メモリ）１４と、後述の処理プログラムやパラメータ等の情報を格納するＲＯＭ（リード・オンリ・メモリ）１５と、ディスク装置３０との接続を実現するためのインターフェースＩ／Ｆ１６と、を備えている。
【００２０】
処理部１１において、アクセス命令変換部１１１は、クライアント端末装置１乃至Ｎの何れかから入力されたファイルアクセスコマンドを取得し、ファイル管理テーブル１３を参照して、対応するファイルがどのディスクのどのブロックで構成されているかの情報を取得する。当該システムでは、ファイルは複数のブロックに分割され、複数のディスクに分散して記録されるため、ブロック情報がないとディスクへのアクセスができないからである。或いは、クライアント装置１乃至Ｎの何れかからファイル（データ）の書き込み要求が入力されると、そのファイルを分割して得られるブロックがどのディスクのどこに記録されるかについての情報を取得する。スケジューラ１１２は、アクセス命令変換部１１１で取得されたブロック情報へのアクセス順序をスケジューリングする処理を実行する。基本的にはアクセスコマンドを受信した順番で処理されるが、後述のように、効率よくディスクへのアクセスを実現するための工夫がなされている。ファイル提供部１１３は、ディスク装置で読み出されたデータを１つのファイルに並び替え、そのファイルのアクセスを要求したクライアント端末装置にそのファイルを提供する。
【００２１】
＜ディスク装置の構成＞
図２は、ディスクライブラリシステム１を構成するディスク装置３０の概略構成を示す機能ブロック図である。ディスク装置３０は、入出力部３１と、制御部３２と、ディスクドライブ３３と、ディスクハンドリング機構３４と、ＨＤＤ３５と、ＲＡＭ（ランダム・アクセス・メモリ）３６と、ＲＯＭ（リード・オンリ・メモリ）３７と、ディスクカートリッジ３９を装着するためのカートリッジ装着部３８と、を少なくとも備えている。
【００２２】
図２において、入出力部３１には、スケジュール装置１０からのディスクアクセス情報や書き込むべきデータが入力されると共に、入出力部３１から読み出されたデータがスケジュール装置１０に出力される。
【００２３】
制御部３２は、ＣＰＵやＭＰＵで構成されており、ＲＯＭ３７に格納されているプログラムに従って、ディスク装置１の各種動作を制御するようになっている。
【００２４】
ディスクドライブ３３は、複数のディスクが格納されたディスクカートリッジ３９から取り出され、装着された各ディスクに対してデータ書き込み・読み出しを実行する。なお、ディスクドライブ３３は基本的に複数台用意され、表面用ドライブと裏面用ドライブとを１組として１つのドライブを構成するようになっている。
【００２５】
ディスクハンドリング機構３４は、ディスクカートリッジ３９から対象のディスクを取り出してディスクドライブ３３に装着し、また、処理が終了したディスクをディスクドライブ３３から取り出してディスクカートリッジ３９の所定の位置にディスクを収納する。
【００２６】
ＨＤＤ３５はハード・ディスク・ドライブであり、データの分散書き込みや読み出しの際に、データがここに一時的に格納される。
【００２７】
ＲＡＭ３６は、データや制御情報を一時的に格納するメモリである。ＲＯＭ３７は、ディスク装置１の固定の動作パラメータや動作プログラム等を格納している。
【００２８】
カートリッジ装着部３８には、１つ又は複数のディスクカートリッジ３９が装着される。ディスクカートリッジ３９には両面にデータを記録することができる両面記録用光ディスク（両面ディスク）が複数枚格納されている。
【００２９】
＜ストライピング動作＞
図３は、データの分散書き込み読み出し（ストライピング）動作を模式的に示した図である。
データを書き込む場合、図３（ａ）のように、書き込むべきデータ（ファイル）が入力される。入力されたデータは、図３（ａ）及び（ｂ）のように分割され、また、分割されたデータは、図３（ｃ）に示すようにグルーピングされる。そして、所定の書き込み順序に従って、図３（ｄ）及び（ｅ）のように、分割データが各ディスク面に書き込まれる。
【００３０】
書き込みが終了すると、各ディスクは、ディスクカートリッジ３９内の元の格納場所に収納され、書き込み処理が終了する。なお、ディスクカートリッジ３９に収納せずに再生動作に移行することも可能である。
【００３１】
一方、データ読み出し時は、所望のファイルを構成するブロックデータが記録されている複数のディスクから、図３（ｆ）のよう分割データが読み出される。そして、図３（ｇ）乃至（ｉ）のように、読み出された分割データが再構成される。再構成されたデータは再生され、入出力部３１からスケジューリング装置１０に出力される。読み出しが終了したディスクは、ディスクカートリッジ３９の元の位置に収納され、読み出し処理が終了する。
【００３２】
＜スケジュール装置による新規コマンド追加時の動作＞
続いて、スケジューリング済のコマンドに対して新規コマンドが追加されたときの処理について説明する。図４は新規コマンドを追加するときの処理工程を示すフローチャートであり、図５はその処理の具体例を示す図である。なお、ここでは、クライアント端末装置１乃至Ｎからのコマンドを一旦スケジューリングした後の状態から新たなコマンドが入力された場合について説明する。
【００３３】
ステップＳ４０１では、アクセス命令変換部１１１が、何れかのクライアント端末装置２０から入力された新規ファイルアクセスコマンドをブロックアクセスコマンドに変換する。つまり、アクセス命令変換部１１１は、ファイル管理テーブル１３を参照し、新規ファイルアクセスコマンドに対応するファイルを構成するブロック（複数ディスクに亘って分散記録されているブロック）の情報を取得し、それらにアクセスするためのブロックアクセスコマンドを取得する。
【００３４】
ステップＳ４０２では、スケジューラ１１２が、ステップＳ４０１で取得した新規のブロックアクセスコマンドに、既にスケジューリングされたブロックアクセスコマンドがアクセス対象とするディスクと同じディスクをアクセス対象とするコマンドが含まれるか判断する。含まれる場合には、処理はステップＳ４０３に移行し、含まれない場合には処理はステップＳ４０４に移行する。
【００３５】
ステップＳ４０３では、スケジューラ１１２が、スケジューリングされたブロックアクセスコマンドの中の、同じディスクにアクセスするコマンド群の末尾に当該新規コマンドを挿入する。一方、ステップＳ４０４では、スケジューラ１１２が、スケジューリング済のブロックアクセスコマンド群の末尾に新規コマンドを追加する。
【００３６】
図５を参照して、新規コマンド追加動作の例について説明する。図５Ａに示されるように、新規コマンドとしてディスクＮｏ．２裏へのアクセスコマンドが新たに入力されたとする。この場合、ディスクＮｏ．２裏へのアクセスコマンドがスケジューリング済のコマンド群に含まれるので、上述のステップＳ４０３の処理が実行されて、新規コマンドが、既に存在するディスクＮｏ．２裏コマンド５１の次に挿入される。
【００３７】
一方、図５Ｂに示されるように、新規コマンドとしてディスクＮｏ．９裏へのアクセスコマンドが新たに入力される。この場合、ディスクＮｏ．９裏へのアクセスコマンドがスケジューリング済のコマンド群に含まれていないので、上述のステップＳ４０４の処理が実行されて、スケジューリング済のコマンド群の最後のコマンド５２の次に追加される。
このようにスケジューリング済のコマンド群であっても新規コマンドの内容に基づいて柔軟に変更しているので、効率のよいディスクアクセスを実現することができるようになっている。尚、データ書き込みに関する新規のコマンドも同様に処理される。
【００３８】
＜ディスクのドライブへの割り当て処理＞
図６は、スケジューリング済のコマンド群に対応するディスクを空いているドライブに割り当てる処理を説明するためのフローチャートである。図７は、ディスクのドライブへの割り当て処理の例を示す図である。
図６において、ステップＳ６０１では、スケジューラ１１２が、ディスク装置３０内のドライブ（表用及び裏用）の全てがＢｕｓｙか否か判断する。何れかのドライブに空きがあれば処理はステップＳ６０２に移行し、全てのドライブがＢｕｓｙであれば処理はステップＳ６０６に移行する。
【００３９】
ステップＳ６０２では、スケジューラ１１２が、さらにスケジューリングされたコマンドを全て走査（全コマンドについてドライブへ割り当てられるか否か判定）したか否か判断する。全て走査した場合には処理はステップＳ６０６に移行し、全て走査していない場合には処理はステップＳ６０３に移行する。
【００４０】
ステップＳ６０３では、スケジューラ１１２が、コマンドに対応するドライブが空いているか判断する。例えば、コマンドがディスクＮｏ．２裏へのアクセスであれば、ディスク裏面用ドライブ（ドライブ２裏である必要はない）が空いているか判断する。対応するドライブが空いていれば、ステップＳ６０４において、当該コマンドが空いているドライブに割り当てられる。対応するドライブが空いていなければ、ステップＳ６０５において、当該コマンドはスキップされ、処理はステップＳ６０１に戻る。
【００４１】
ステップＳ６０１でドライブが全てＢｕｓｙ、或いはステップＳ６０２で全コマンド走査済と判断された場合、ステップＳ６０６において、スケジューラ１１２がコマンド群における全コマンドの割り当てが完了したか判断する（新たにコマンド群が入力された場合の判断も含む）。完了していれば割り当て処理は終了する。完了してなければ、処理はステップＳ６０７に移行し、そこでスケジューラ１１２が何れかのドライブのＢｕｓｙが解除されたか判断する。何れのドライブも解除されていなければ、処理は再度ステップＳ６０１に戻り、全てのコマンド割り当てが終了するまで処理が繰り返される。何れかのドライブが解除されれば、処理はステップＳ６０２に移行し、ステップＳ６０２乃至Ｓ６０５の処理が繰り返される。なお、フローチャートには現れていないが、コマンド処理が完了したドライブについては、続けて同じディスクに対するアクセス要求が来る可能性があることを考慮して、入れ替え要求が来るまでディスクをドライブに挿入したままとする制御が行われている。
【００４２】
図７を参照して、ディスク割り当て処理の例について説明する。図７に示されるように、コマンド群７１乃至７５に対応するディスクが割り当てられる前に、８つ設けられたドライブのうち、ドライブ１裏３３２−１、２表３３１−２、３表３３１−３及び４表３３１−４がＢｕｓｙであったとする。このとき、コマンド７１に対応するディスクについては、ドライブ１表３３１−１が空いているので、ドライブ１表３３１−１に割り当てられる。コマンド７２は、ドライブ２裏３３２−２が空いているので、対応するディスクがそこに割り当てられる。そして、コマンド７３はコマンド７２と同じディスク面へのアクセス命令なので、コマンド７２終了後に実行されるようになる。コマンド７４については表用ドライブが全てＢｕｓｙであるので、このコマンドの処理はスキップされる。何れかの表用ドライブが空いたらそこにコマンド７４が割り当てられる。また、コマンド７５については、裏用ドライブがドライブ３とドライブ４の２つが空いているので、何れのドライブを用いるようにしても良く、図７ではドライブ４裏３３２−４に割り当てられている。
【００４３】
このようなコマンドの割り当て方をすれば、１つのコマンド処理が完了してから次のコマンドを処理する場合よりも効率よく全てのコマンドを実行することができる。例えばデータ読み出しの場合、先に実行されたコマンドに対応する読み出しデータはＨＤＤに蓄積され、最終的にファイルが再構成されて出力されることになる。
【００４４】
＜ドライブ障害発生時のディスク割り当て処理＞
図８は、ドライブに障害が発生したときの処理を説明するためのフローチャートである。図９は、ドライブ障害発生時のディスク割り当て処理の例を示す図である。
図８において、ステップＳ８０１では、スケジューラ１１２が、ディスク装置３０からドライブ故障の通知を受け、当該故障したドライブにディスクが装填されているか判断する。装填されている場合には、処理はステップＳ８０５に移行し、そこで当該ドライブが閉鎖され使用禁止状態となる。当該ドライブにディスクが装填されている場合には、処理はステップＳ８０２に移行する。
【００４５】
ステップＳ８０２では、スケジューラ１１２が、他のドライブに空きがあるか判断する。空きがなければドライブが空くまで待機状態に制御される（ステップＳ８０３）。
【００４６】
ステップＳ８０２で他に空きドライブがあると判断されれば、ステップＳ８０４において、スケジューラ１１２が、ディスク装置３０のディスクハンドリング機構３４に指示を与えて、故障ドライブに装填されているディスクを空いているドライブに移動する。そして、ステップＳ８０５で、故障したドライブが閉鎖される。
【００４７】
図９を参照して、ドライブ障害発生時の処理の例（ドライブ８つの場合）について説明する。図９に示されるように、ドライブ３表３３１−３に障害が発生したとする。表用ドライブでＢｕｓｙでないものはドライブ１表３３１−１だけであるので、故障したドライブ３表３３１−３に装填されているディスクはドライブ１表３３１−１に移動させられる。なお、複数の表用ドライブも空いている場合、他にコマンド群が存在するときには、そのコマンドの内容を見て一番効率の良い（バッティングがなく、最短の時間で処理できる）ドライブを選択してディスクを移動するようにするとよい。
【００４８】
以上のように、ドライブに故障が発生した場合に即座にディスク移動処理がなされるので、読み出し時間が多少長くなる可能性はあるものの、システム全体の稼動を止める必要がない。なお、ドライブ故障時に限らず、特定のドライブをメンテナンスする場合にも当該ドライブのみ停止すればいいので、柔軟にシステムを運用することができる。
【００４９】
＜ストライピング構成時のディスク割り当て処理＞
アクセス対象の論理ボリュームがストライピング構成を採っている（複数のディスクに亘って分散記録されている）場合、ディスク分散枚数がドライブ以上である場合と、ドライブ未満である場合とでは処理が異なってくる。
【００５０】
（１）ドライブ数≧ディスク分散枚数の場合
図１０は、ドライブ数≧ディスク分散枚数の場合のディスクのドライブへの配置例を示している。図１０に示されるように、この場合には、全てのコマンドに対応するディスクが各ドライブに装填されうるので、システム運用上問題はない。
【００５１】
（２）ドライブ数＜ディスク分散枚数の場合
しかしながら、この場合全てのストライピング構成ディスクを同時にドライブに配置することができない。そのため、データを再構成できるまで読み出したデータをＨＤＤ３５に一時的に蓄積する必要がある。このとき、一時蓄積したデータでキャッシュが埋まらないように、データ転送量を調節する必要がある。例えば、各ディスクから一時蓄積するデータ量を（ＨＤＤキャッシュ残容量）／（ディスク分散枚数）と上限を設けることにより、一時蓄積したデータでキャッシュが埋まるのを防止することができる。なお、図１１が、ドライブ数＜ディスク分散枚数の場合のディスクのドライブへの配置例を示している。図１１に示されるように、４つのコマンドに対応するディスクが各ドライブに配置され、読み出されたデータがＨＤＤ３５に一時的に蓄積される。そして、最初の４つのコマンドの処理が完了するに従って、順次他のコマンドが処理される。また、ＨＤＤに一時的に蓄積されたデータを再構成しながら、順次再構成されたデータが出力される。
【００５２】
（３）図１２は、論理ボリュームがストライピング構成を採っているときにディスク割り当て処理を説明する場合（上記（１）及び（２）を含む）のフローチャートである。図１２は、この場合のディスクのドライブへの配置例を示す図である。
【００５３】
図１２において、ステップＳ１２０１では、スケジューラ１１２が、ディスク装置３０におけるドライブ数に関する情報を取得し、ストライピングの並列度（ディスク分散枚数）がドライブ数以上か否か判断する。並列度がドライブ数未満の場合には、上記（１）の場合であり、処理はステップＳ１２０５に移行する。並列度がドライブ数以上の場合には、上記（２）の場合であり、処理はステップＳ１２０２に移行する。
【００５４】
ステップＳ１２０２では、ディスク装置３０の制御部３２が、スケジューラ１１２によってスケジューリングされたコマンドに従って、空いているドライブにディスクを配置し、読み出したデータをＨＤＤ３５に蓄積する。
【００５５】
そして、ステップＳ１２０３では、制御部３２が、全てのストライピングディスクを読み終えたかを判断する。読み終えていない場合には、処理はステップＳ１２０２に移行し、読み終えている場合には処理はステップＳ１２０４に移行する。そして、ステップＳ１２０４では、制御部３２が、ＨＤＤ３５からデータを再構成して再構成データを出力する。
【００５６】
一方、ストライピング並列度がドライブ数未満の場合、ステップＳ１２０５において、制御部３２が、空いているドライブはストライピングの並列度以上か否か判断する。ストライピングの並列度以上のドライブが空いていない場合にはドライブが空くまで処理を待機する（ステップＳ１２０６）。
【００５７】
並列度以上のドライブが空いている場合には、ステップＳ１２０７において、制御部３２が、空いているドライブに該当するディスクを配置し、データを読み出す。そして、ステップＳ１２０４で、制御部３２がＨＤＤ３５からデータを再構成して再構成データを出力する。
以上のようにして、ストライピングの並列度数の如何に限られずに、効率よくデータを再構成して提供することができる。
【００５８】
＜まとめ＞
本実施形態では、クライアント装置からのアクセス要求に基づいて、ディスク（記憶媒体）へのアクセス順序を規定したコマンド群（媒体アクセスコマンド群）を生成する。この媒体アクセスコマンド群に基づいた、実際のディスクアクセスが完了する前に、新規の媒体アクセスコマンド（群）が生成された場合、先の媒体アクセスコマンド群内に同じディスク（記憶媒体）面にアクセスするコマンドが存在すれば、そのコマンドの後に新規のコマンドが挿入される。存在しなければ、新規のコマンドは既存のコマンド群の末尾に追加される。このようにすることにより、関連するディスクへのアクセスコマンドを連続して処理することができるので、ディスクへのアクセスを効率よく実行することができるようになる。
【００５９】
また、上記媒体アクセスコマンド群に従って、ディスク装置の複数のドライブ（表面用及び裏面用）をディスクに割り当てる場合、コマンドに適合するドライブがＢｕｓｙのときにはこのコマンドをスキップするようにディスクのドライブへの割り当てがなされる（図７参照）。このようにすることにより、１つのコマンドを処理できないだけでその後のコマンドを処理できなるという状態を回避することができ、効率よくディスクへのアクセスを実現することができる。
【００６０】
また、複数設けられたドライブのどれかに障害が発生した場合やメンテナンスで使用できなくなった場合に、当該ドライブを使用禁止し、当該ドライブに装填されていたディスクを別の空いているドライブに移動させる。ドライブが故障等により使用禁止になっても残されたドライブを用いて実現できる最大限の効率でディスクにアクセスすることができる。
【００６１】
ドライブ数がディスク分散枚数（分散記録数）以上である場合には、全てのディスクをドライブに配置することができるのでデータ再構成或いはデータ書き込み上問題はないが、ドライブ数がディスク分散枚数未満の場合には、データ再構成に必要なブロックデータを記録したディスクを同時にドライブに配置することができない。そのため、媒体アクセスコマンド群のうち最初のドライブ数に相当する数のコマンドに対応するディスクをドライブに配置してデータを読み出し、ＨＤＤにデータを再構成できるようになるまで一時的に蓄積する。このようにすることにより、ドライブ数の如何に拘わらず、効率よくディスクにアクセスでき、データを再構成することができる。
【００６２】
なお、各実施形態の機能は、ソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００６３】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００６４】
また、実施の形態の機能を実現するソフトウェアのプログラムコードがネットワークを介して配信され、システム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納され、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行することによって、達成されるようにしてもよい。
【図面の簡単な説明】
【００６５】
【図１】本発明によるライブラリシステムの概略構成を示す機能ブロック図である。
【図２】ディスク装置の概略構成を示す機能ブロック図である。
【図３】ストライピングを説明するための図である。
【図４】新規コマンド追加時の処理を説明するためのフローチャートである。
【図５】新規コマンド追加時の処理例を示す図である。
【図６】媒体アクセスコマンド群に対応するディスクのドライブ割り当て処理を説明するためのフローチャートである。
【図７】媒体アクセスコマンド群に対応するディスクのドライブ割り当て処理の例を示す図である。
【図８】ドライブに障害が発生したときの処理を説明するためのフローチャートである。
【図９】ドライブに障害が発生したときの処理の例を示す図である。
【図１０】ドライブ数≧ディスク分散枚数の場合のディスク配置例を示す図である。
【図１１】ドライブ数＜ディスク分散枚数の場合のディスク配置例を示す図である。
【図１２】ストライピング構成時のディスク割り当て処理を説明するためのフローチャートである。
【図１】
2009048563.tif 000003
【図２】
2009048563.tif 000004
【図３】
2009048563.tif 000005
【図４】
2009048563.tif 000006
【図５】
2009048563.tif 000007
【図６】
2009048563.tif 000008
【図７】
2009048563.tif 000009
【図８】
2009048563.tif 000010
【図９】
2009048563.tif 000011
【図１０】
2009048563.tif 000012
【図１１】
2009048563.tif 000013
【図１２】
2009048563.tif 000014