(57)【特許請求の範囲】
【請求項１】
データ記憶媒体を収納する複数のストレージシェルフと、少なくとも１つのデータストレージドライブと、ワークリクエストに応じて、データ記憶媒体にアクセスして、前記ストレージシェルフと少なくとも１つのデータストレージドライブとの間を移動させる少なくとも１つのアクセサとを有する自動化データストレージライブラリの動作方法であって、
前記自動化データストレージライブラリは、ワークリクエストを受信して、該ワークリクエストの同報通信を行う通信プロセッサノードと、前記通信プロセッサノードに接続され、かつ相互接続され、各々が同報通信されたワークリクエストに応答する複数のワークプロセッサノードとを含み、
前記通信プロセッサノードによりワークリクエストを受信するステップと、
前記通信プロセッサノードから前記複数のワークプロセッサノードに前記ワークリクエストを同報通信するステップと、
同報通信されたワークリクエストに応じて、各ワークプロセッサノードによりジョブのワークキューを作成するステップと、
少なくとも１つのワークプロセッサノードにより、前記少なくとも１つのアクセサに対して、ワークキュー中から少なくとも１つのジョブを選択するステップと、
前記アクセサに各選択ジョブの実行を指示するステップと、
各ワークキューを同期させるステップと、
を含む、自動化データストレージライブラリの動作方法。
【請求項２】
前記同期させるステップが、ジョブ選択に関する情報を他のワークプロセッサノードへ同報通信するステップを含む、請求項１に記載の方法。
【請求項３】
前記同期させるステップにおいて、さらに各ワークプロセッサノードが、それぞれのワークキューから同報通信された選択ジョブを削除する、請求項２に記載の方法。
【請求項４】
前記ジョブ選択に関する情報の同報通信ステップにおいて、前記選択するステップでジョブ選択を行ったワークプロセッサノードにより、指示を受けたアクセサによる選択ジョブの完了に応じ、選択ジョブの完了時に選択ジョブの識別情報が同報通信される、請求項３に記載の方法。
【請求項５】
前記ジョブ選択に関する情報の同報通信ステップにおいて、前記選択するステップでジョブ選択を行ったワークプロセッサノードにより、前記選択するステップにおけるジョブの選択時に選択ジョブの識別情報が同報通信される、請求項３に記載の方法。
【請求項６】
前記ジョブ選択に関する情報の同報通信ステップにおいて、前記指示するステップにおいてジョブの指示を行ったワークプロセッサノードにより前記指示するステップに関する情報が同報通信され、他のワークプロセッサノードにより同報通信情報が監視されジョブ選択が決定される、請求項３に記載の方法。
【請求項７】
前記ライブラリが前記アクセサを複数有し、さらに前記ワークプロセッサノードにより前記複数のアクセサのうちの１つが活動アクセサとして指定されるステップを含み、前記選択するステップおよび前記指示するステップが、前記活動アクセサに対して実行される、請求項１に記載の方法。
【請求項８】
前記ライブラリが前記アクセサを複数有し、さらに前記ワークプロセッサノードが前記アクセサを前記ライブラリ内の異なるゾーンへ割り当てるステップを含み、各ゾーンが前記ストレージシェルフおよび前記データストレージドライブの選択されたものを含み、前記選択するステップおよび前記指示するステップが、前記ワークキューにあるジョブのうち、前記アクセサのゾーン内にある選択されたジョブに対して、前記ワークプロセッサノードにより実行される、請求項１に記載の方法。
【請求項９】
前記ワークリクエストを受信するステップおよび同報通信するステップにおいて、前記ワークリクエストが少なくとも１つの通信プロセッサノードにより受信され、前記複数のワークプロセッサノードに同報通信される、請求項１に記載の方法。
【請求項１０】
ワークリクエストが前記データストレージドライブの少なくとも１つにより受信され、前記ワークリクエストを受信するステップにおいて、前記通信プロセッサノードが前記少なくとも１つのデータストレージドライブから該リクエストを受信する、請求項９に記載の方法。
【請求項１１】
前記ワークリクエストを同報通信するステップおよび前記ジョブ選択に関する情報を他のワークプロセッサノードへ同報通信するステップが、前記通信プロセッサノードを前記複数のワークプロセッサノードの全てに接続するコモンバスを介して実行される、請求項２に記載の方法。
【請求項１２】
データ記憶媒体を収納する複数のストレージシェルフと、少なくとも１つのデータストレージドライブと、ワークリクエストに応じて、データ記憶媒体にアクセスして、前記ストレージシェルフと少なくとも１つのデータストレージドライブとの間を移動させる少なくとも１つのアクセサとを有する自動化データストレージライブラリのワークキューイング装置であって、
ワークリクエストを受信して、該ワークリクエストの同報通信を行う通信プロセッサノードと、
前記通信プロセッサノードに接続され、かつ相互接続され、各々が同報通信されたワークリクエストに応答する複数のワークプロセッサノードとを含み、
各ワークプロセッサノードが同報通信されたワークリクエストに応じてジョブのワークキューを作成し、少なくとも１つのワークプロセッサノードが、前記少なくとも１つのアクセサに対して、ワークキューから少なくとも１つのジョブを選択して前記アクセサに各選択ジョブの実行を指示し、前記ワークプロセッサノードがそれぞれのワークキューを同期させる、自動化データストレージライブラリのワークキューイング装置。
【請求項１３】
さらに前記複数のワークプロセッサノード同士を接続するコモンバスを有し、前記ワークプロセッサノードがジョブ選択に関する情報を前記コモンバス上で同報通信してそれぞれのワークキューを同期させる、請求項１２に記載のワークキューイング装置。
【請求項１４】
各ワークプロセッサノードが、それぞれのワークキューから選択ジョブを削除して、該ワークキューを同期させる、請求項１３に記載のワークキューイング装置。
【請求項１５】
前記ジョブを選択したワークプロセッサノードが、指示を受けたアクセサによる指示ジョブの完了に応じて、選択ジョブの完了時に前記コモンバス上で選択ジョブの識別情報を同報通信する、請求項１４に記載のワークキューイング装置。
【請求項１６】
前記ジョブを選択したワークプロセッサノードが、ジョブ選択時に前記コモンバス上で選択ジョブの識別情報を同報通信する、請求項１４に記載のワークキューイング装置。
【請求項１７】
前記コモンバスがさらに前記アクセサに接続され、選択ジョブの実行を前記アクセサに指示したワークプロセッサノードが該選択ジョブに関する情報を前記コモンバス上で同報通信し、他のワークプロセッサノードが前記コモンバス上の同報通信情報を監視してジョブ選択を決定する、請求項１４に記載のワークキューイング装置。
【請求項１８】
前記ライブラリが前記アクセサを複数有し、前記ワークプロセッサノードはさらに前記複数のアクセサのうちの１つを活動アクセサとして指定し、該活動アクセサに対してのみジョブ選択を行う、請求項１２に記載のワークキューイング装置。
【請求項１９】
前記ライブラリが前記アクセサを複数有し、前記ワークプロセッサノードはさらに前記アクセサを、各々が前記ストレージシェルフおよび前記データストレージドライブの選択されたものを含む、前記ライブラリ内の異なるゾーンへ割り当て、前記ワークプロセッサノードはさらに前記アクセサに対して、前記ワークキューにあるジョブのうち、前記アクセサに割り当てられたゾーン内にあるジョブを選択する、請求項１２に記載のワークキューイング装置。
【請求項２０】
さらに前記通信プロセッサノードに前記複数のワークプロセッサノードの全てを接続し、前記ワークリクエストの同報通信を行うコモンバスを有する、請求項１２に記載のワークキューイング装置。
【請求項２１】
前記通信プロセッサノードが前記データストレージドライブに接続され、ワークリクエストが少なくとも１つのデータストレージドライブにより受信され、前記通信プロセッサノードが該リクエストを前記少なくとも１つのデータストレージドライブから受信する、請求項１２に記載のワークキューイング装置。
【請求項２２】
前記通信プロセッサノードはワークプロセッサノードを構成し、前記通信プロセッサノードはワークリクエストを受信し、該ワークリクエストを他のワークプロセッサノードへ同報通信する、請求項１２に記載のワークキューイング装置。
【請求項２３】
ワークリクエストを受信する前記通信プロセッサノードを複数有し、各通信プロセッサノードが前記ワークプロセッサノードに接続されて該ワークリクエストが同報通信される、請求項１２に記載のワークキューイング装置。
【請求項２４】
ワークリクエストに応じてデータ記憶媒体を収納、アクセスする自動化データストレージライブラリであって、
データ記憶媒体を収納する複数のストレージシェルフと、
少なくとも１つのデータストレージドライブと、
データ記憶媒体にアクセスして、前記ストレージシェルフと少なくとも１つのデータストレージドライブとの間を移動させる少なくとも１つのアクセサと、
ワークリクエストを受信して該ワークリクエストの同報通信を行う通信プロセッサノードと、
前記通信プロセッサノードに接続され、かつ相互接続され、各々が同報通信されたワークリクエストに応答する複数のワークプロセッサノードとを含み、
各ワークプロセッサノードが前記同報通信されたワークリクエストに応じてジョブのワークキューを作成し、前記複数のワークプロセッサノードの少なくとも1つが、前記少なくとも１つのアクセサに対して、ワークキューから少なくとも１つのジョブを選択して前記アクセサに選択ジョブの実行を指示し、前記ワークプロセッサノードがそれぞれのワークキューを同期させる、自動化データストレージライブラリ。
【請求項２５】
さらに前記複数のワークプロセッサノード同士を接続するコモンバスを有し、前記ワークプロセッサノードがジョブ選択に関する情報を前記コモンバス上で同報通信してそれぞれのワークキューを同期させる、請求項２４に記載の自動化データストレージライブラリ。
【請求項２６】
各ワークプロセッサノードがそれぞれのワークキューから選択ジョブを削除して、該ワークキューを同期させる、請求項２５に記載の自動化データストレージライブラリ。
【請求項２７】
ジョブ選択を行ったワークプロセッサノードが、指示を受けたアクセサによる指示ジョブの完了に応じて、選択ジョブの完了時に選択ジョブの識別情報を前記コモンバス上で同報通信する、請求項２６に記載の自動化データストレージライブラリ。
【請求項２８】
ジョブ選択を行ったワークプロセッサノードが、前記ジョブの選択時に選択ジョブの識別情報を前記コモンバス上で同報通信する、請求項２６に記載の自動化データストレージライブラリ。
【請求項２９】
前記コモンバスがさらに前記アクセサに接続され、前記アクセサに選択ジョブの実行を指示するワークプロセッサノードが選択ジョブに関する情報を前記コモンバス上で同報通信し、他のワークプロセッサノードがさらに前記コモンバス上の同報通信情報を監視してジョブ選択を決定する、請求項２６に記載の自動化データストレージライブラリ。
【請求項３０】
前記アクセサが複数設けられ、前記ワークプロセッサノードがさらに前記複数のアクセサのうちの１つを活動アクセサとして指定し、ジョブ選択を該活動アクセサに対してのみ行う、請求項２４に記載の自動化データストレージライブラリ。
【請求項３１】
前記アクセサが複数設けられ、前記ワークプロセッサノードがさらに前記アクセサを、各々が前記ストレージシェルフおよび前記データストレージドライブの選択されたものを含む、前記ライブラリ内の異なるゾーンへ割り当て、前記ワークプロセッサノードはさらに前記アクセサに対して、前記ワークキューにあるジョブのうち、前記アクセサに割り当てられたゾーン内にあるジョブを選択する、請求項２４に記載の自動化データストレージライブラリ。
【請求項３２】
さらに前記通信プロセッサノードと前記複数のワークプロセッサノードの全てとを接続し、前記ワークリクエストの同報通信を行うコモンバスを有する、請求項２４に記載の自動化データストレージライブラリ。
【請求項３３】
前記通信プロセッサノードが前記データストレージドライブに接続され、ワークリクエストが少なくとも１つのデータストレージドライブにより受信され、前記通信プロセッサノードが該リクエストを前記少なくとも１つのデータストレージドライブから受信する、請求項２４に記載の自動化データストレージライブラリ。
【請求項３４】
前記通信プロセッサノードはワークプロセッサノードを構成し、前記通信プロセッサノードはワークリクエストを受信し、該ワークリクエストを他のワークプロセッサノードへ同報通信する、請求項２４に記載の自動化データストレージライブラリ。
【請求項３５】
ワークリクエストを受信する前記通信プロセッサノードを複数有し、各通信プロセッサノードが前記ワークプロセッサノードに接続されて、該ワークリクエストが同報通信される、請求項２４に記載の自動化データストレージライブラリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は自動化データストレージライブラリに関し、特にライブラリに対する受信ワークリクエスト（作業要求）のキューイング（待ち行列化）に関するものである。
【０００２】
【従来の技術】
通常、自動化データストレージライブラリはデータ記憶媒体にアクセスするグリッパを備えたアクセサを有し、該アクセサをX方向およびY方向に移動させてデータ記憶媒体にアクセスしてストレージシェルフとデータストレージドライブとの間で媒体を移動させている。
【０００３】
また、通常、ホストサーバ等のホストシステムは、直接あるいは１つ以上のデータストレージドライブを介したライブラリのセントラルコントローラとの通信により、特定のデータ記憶媒体にアクセスして、ストレージシェルフとデータストレージドライブ、および入出力シェルフとパススルースロットとの間で該媒体を移動させるコマンド（指令）を発する。コマンドは、媒体、および該媒体をアクセスするための論理位置または物理位置を識別する論理コマンドでもよい。セントラルコントローラは、コマンドを受信してライブラリのワークキュー（作業待ち行列）を作成するプロセッサを有する。ワークキューを処理すると、プロセッサはコマンドをアクセサの物理的移動に変換し、サーボモータ作動信号を送信する。
【０００４】
追加ストレージシェルフおよびデータストレージドライブと、第２のアクセサを設けて、ライブラリを拡張可能にすることが望ましい。例えば、IBM３４９４自動化データストレージライブラリは、それぞれがアクセサを備えた２つのエンドフレームの間に、最大１４個のストレージシェルフ拡張フレームを設けて拡張が可能である。通常、何れのアクセサもストレージシェルフとデータストレージドライブに沿って同様の経路で移動する。従って、セントラルプロセッサは一方のアクセサを起動し他方のアクセサを休止させ、起動中のアクセサのみを作動させて両者の干渉を回避している。休止中のアクセサは、起動中のアクセサが故障を起こした場合や、点検の際に取り外された場合にバックアップとして作動する。あるいは、セントラルプロセッサはライブラリをストレージシェルフとデータストレージドライブのゾーンに区切り、各ゾーンでアクセサを個別に作動させて記憶媒体にアクセスするようにしても良い。
【０００５】
【発明が解決しようとする課題】
しかしながら、セントラルプロセッサおよびそのアクセサへの通信線は、何れも単一故障ポイントを含み、1つでも故障すればライブラリが使用不可能になってしまう。
【０００６】
【課題を解決するための手段】
既存のホストソフトウェアを変更することなくライブラリの可用性を高める自動化データストレージライブラリのワークキューイング装置および方法を開示する。該ライブラリはデータ記憶媒体を収納する複数のストレージシェルフと、少なくとも１つのデータストレージドライブと、ワークリクエストに応じて、データ記憶媒体にアクセスして、ストレージシェルフとデータストレージドライブとの間を移動させる少なくとも1つのアクセサとを有する。ワークキューイング装置は通信プロセッサノードを有し、該通信プロセッサノードはワークリクエストを受信し、該通信プロセッサノードに接続され、かつ相互接続された複数のワークプロセッサノードに対し、例えばコモンバスネットワーク上でワークリクエストの同報通信を行う。各ワークプロセッサノードは同報通信されたワークリクエストに応じてジョブのワークキューを作成する。ワークプロセッサノードの少なくとも1つがアクセサに対してワークキューからジョブを選択する。該ワークプロセッサノードはアクセサに選択ジョブの実行を指示し、他のプロセッサノードにジョブの完了等の選択ジョブに関する情報を同報通信して各ワークキューの同期を維持する。
【０００７】
ワークキューの同期を維持するために、同報通信によるジョブ情報を受信すると、他のワークプロセッサノードはさらに、各々がそれぞれのワークキューから選択ジョブを削除する。
【０００８】
本発明は、添付図面を参照した以下の詳細な記載を参照すれば十分理解されるであろう。
【０００９】
【発明の実施の形態】
以下図面を参照し本発明の好ましい実施形態を説明する。図面中、同一数字は同一または類似要素を示す。本発明の目的を実現する最も好ましい実施形態を説明するが、本発明の精神および範囲内で、本発明の教示から種々の変更が実行できることは当業者によって了承される。
【００１０】
図１および図３に自動化データストレージライブラリ１０を示す。自動化データストレージライブラリ１０はストレージシェルフ１６内で、データ記憶媒体１４の収納および検索を行う。本発明が実施可能な自動化データストレージライブラリの例として、IBM３４９４テープライブラリが挙げられる。該ライブラリはベースフレーム１１を含み、さらに１つ以上の拡張フレーム１２、および高可用性フレーム１３を有していても良い。
【００１１】
ライブラリ１０のベースフレーム１１は、１つ以上のデータストレージドライブ１５とアクセサ１８とから構成される。アクセサ１８はグリッパアセンブリ２０を備え、バーコードスキャナ２２あるいはスマートカードリーダや類似装置等の読取り装置をグリッパ２０に搭載し、データ記憶媒体１４の識別情報の読取りを行っても良い。例えばデータストレージドライブ１５は光ディスクドライブや磁気テープドライブであり、この場合のデータ記憶媒体１４はそれぞれ光媒体と磁気テープ媒体である。あるいはその他の取り外し可能媒体と対応ドライブであっても良い。また、該ライブラリは、ユーザとライブラリとの対話を可能にするオペレータパネル２３やウェブインターフェイス等の他のユーザインターフェイスを有していても良い。
【００１２】
拡張フレーム１２は追加ストレージシェルフから構成され、追加データストレージドライブ１５を有していても良い。高可用性フレーム１３は、追加ストレージシェルフおよびデータストレージドライブ１５から構成されても良く、第２のアクセサ２８を有している。第２のアクセサ２８はグリッパアセンブリ３０を備え、バーコードスキャナ３２あるいはその他の読取り装置、およびオペレータパネル２８０あるいはその他のユーザインターフェイスを有していても良い。アクセサ１８やそのグリッパ２０等が故障や他の要因で使用不可能となった場合に、第２のアクセサ２８が処理を引き継ぐ。
【００１３】
２０００年５月１９日付け米国特許出願第０９、５７３５３１号に記載されているように、アクセサ１８、２８はいずれもグリッパを水平X方向および垂直Y方向の少なくとも２方向に移動させ、ストレージシェルフ１６においてデータ記憶媒体１４の検索・把持、あるいは送出・把持解除を行い、データストレージドライブ１５へのデータ記憶媒体のロード・アンロードを行う。
【００１４】
図３にライブラリ１０が１つ以上のホストシステム４０、４１、４２からコマンドを受信する様子を示す。ホストサーバ等のホストシステムが、例えば経路８０上で直接、あるいは１つ以上のデータストレージドライブ１５を介してライブラリと通信し、特定のデータ記憶媒体にアクセスして、例えばストレージシェルフとデータストレージドライブとの間で該媒体を移動させるコマンドを発する。通常、コマンドは、媒体および該媒体をアクセスするための論理位置を識別する論理コマンドである。
【００１５】
前記米国特許出願にも記載されているように、ライブラリの制御は、セントラルコントローラよりもむしろ論理コマンドを受信し該コマンドをアクセサ１８、２８の物理的移動に変換する分散型コントロールシステムにより実施される。
【００１６】
分散型コントロールシステムは、例えばベースフレーム１１内に配置される通信プロセッサノード５０から構成される。通信プロセッサノードは、ホストコマンドを直接またはドライブ１５を介して受信するための通信リンクを提供する。通信プロセッサノード５０は、さらにデータストレージドライブ１５を作動するための通信リンクを提供することもできる。通信プロセッサノード５０はフレーム１１内でデータストレージドライブ１５の近傍に配置される。本発明では、アクセサ１８に配置され、通信プロセッサノード５０に接続されたワークプロセッサノード５２から構成される冗長ワークプロセッサノードが設置される。後述するように、各ワークプロセッサノードは、通信プロセッサノードからワークプロセッサノードへ同報通信される受信コマンドに応じてワークキューを作成する。またワークプロセッサノードはアクセサの作動を指示して移動コマンドを発するようにしても良い。ＸＹプロセッサノード５５をアクセサ１８のＸＹ装置に配置しても良い。ＸＹプロセッサノード５５はワークプロセッサノード５２に接続されており、移動コマンドに応じてＸＹ装置を作動させてグリッパ２０の位置決めを行う。
【００１７】
また、オペレータパネルプロセッサノード５９をオペレータパネル２３に設けて、オペレータパネル２５と、通信プロセッサノード５０、ワークプロセッサノード５２、およびＸＹプロセッサノード５５と間の通信インターフェイスを提供するようにしても良い。
【００１８】
前記米国特許出願にも記載されているように、コモン（共通）バス６０を設けて、通信プロセッサノード５０とワークプロセッサノード５２、およびワークプロセッサノードとＸＹプロセッサノード５５とを接続しても良い。また、オペレータパネルプロセッサノード５９をコモンバス６０に接続しても良い。コモンバスは市販のＣＡＮバス方式等の冗長配線ネットワークから構成され、例えばＣｉＡ（ＣＡＮ  ｉｎ  Ａｕｔｏｍａｔｉｏｎ  Ａｓｓｏｃｉａｔｉｏｎ）、ドイツのＡｍ  Ｗｅｉｃｈ  ｓｅｌｇａｒｔｅｎ  ２６，  Ｄ−９１０５８  Ｅｒｌａｎｇｅｎにより定義される標準アクセスプロトコルおよび配線基準を有するマルチドロップネットワークである。本発明は類似のバスネットワークを使用しても実施可能である。あるいは、コモンバス６０は当業者には公知のＲＦや赤外線等の無線ネットワークシステムから構成されていても良い。
【００１９】
本発明は、コモンバスおよび分散型コントロールシステムを使用し、既存のホストソフトウェアを変更することなくライブラリの可用性を高める自動化データストレージライブラリのワークキューイング装置および方法を提供するものである。
【００２０】
各プロセッサノードは、ＣＡＮプロトコルに基づきコモンバス上の各メッセージの識別子を認識しても良いし、例えばＳＣＳＩバス方式で公知の通り各メッセージによりアドレス指定されても良い。
【００２１】
各プロセッサノードは、当業者には公知のように、各々が特定の用途別に設計された専用の論理回路やマイクロプロセッサ装置から構成されても良いし、各々がプロセッサノード作動用の専用ファームウェアを有する類似のマイクロプロセッサ装置から構成されても良い。
【００２２】
図２に自動化データストレージライブラリ１０の構成要素の制御および動作に使用するプロセッサノード６５の一実施形態を示す。通常マイクロプロセッサ装置７０は、例えばインテルやＡＭＤの市販マイクロプロセッサと、マイクロプロセッサ作動用のファームウェアを記憶する非揮発性メモリとから構成される。マイクロプロセッサは複数のローカル制御回路７２に接続され、各ローカル制御回路７２はセンサからデジタル信号７３を受信し、デジタル信号７４を送信してサーボモータ等の接続アクチュエータを作動させ、またマイクロプロセッサ装置７０との通信を行う。上記ローカル制御回路の例は、当業者には公知である。
【００２３】
当業者には公知であるが、上述のコモンバス方式のプロトコルによれば、１つ以上のトランシーバ７５、７６と、１つ以上のバス制御論理回路７７、７８を使用して、マイクロプロセッサ装置７０とコモンバス６０との通信が行われる。トランシーバおよびバス制御論理回路は、コモンバス６０上のメッセージの識別子またはアドレスに応じて、マイクロプロセッサ装置７０にメッセージを供給し、またマイクロプロセッサ装置からのメッセージを組み立て、識別子またはアドレスを付加してコモンバス６０へ供給する。
【００２４】
マイクロプロセッサ装置７０のファームウェアは、トランシーバ７５、７６およびバス制御論理回路７７、７８から供給されるメッセージ、およびローカル制御回路７２から供給される信号に応じて、ローカル制御回路７２へ信号を、トランシーバ７５、７６およびバス制御論理回路７７、７８へメッセージを供給し、コモンバス上での通信を行い、選択された機能を実行する。
【００２５】
図３に示す通り、プロセッサノードの何れか１つを通信プロセッサノード５０として使用し、ベースフレーム１１の各データストレージドライブ１５に接続して、ドライブおよびホストシステム４０、４１、４２との通信を行う。あるいは、ホストシステムを直接通信プロセッサノード５０に接続しても良い。当業者には公知の通り、ホストとデータストレージドライブ間の通信には種々の構成が適用可能である。図３の例においては、ホスト接続８０、８１はＳＣＳＩバスである。バス８２は、高速シリアルデータインターフェイスであるファイバチャネルアービトレートループ（ＦＣＡＬ）から構成して、ＳＣＳＩバス方式よりも遠距離の送信が行えるようにする。データストレージドライブ１５を通信プロセッサノード５０と近接させても良く、ＳＣＳＩ等の短距離通信法やＲＳ−４２２等のシリアル接続を使用しても良い。
【００２６】
図３に示す通り、拡張フレーム１２を設け、拡張コモンバス１５２によりベースフレームコモンバス６０に接続しても良い。新たな通信プロセッサノード１５５を拡張フレーム内に設け、ホストおよびフレーム１２内のデータストレージドライブ１５の両方との通信を、例えば入力１５６で行っても良い。従って、ホストからのコマンドは、直接あるいはデータストレージドライブを介して受信される。通信プロセッサノード１５５は拡張コモンバス１５２に接続され、通信プロセッサノードが拡張コモンバス１５２へのコマンドの通信リンクを提供し、それにより、後述するようにコマンドがベースフレームコモンバス６０およびワークプロセッサノード５２にリンクされる。拡張コモンバス１５２は、ベースフレーム内のベースフレームコモンバス６０に接続されたフレキシブルケーブル接続とマルチドロップバスネットワークとから構成され得る。
【００２７】
通信プロセッサノード１５５は拡張フレーム１２内に搭載され、拡張フレーム１２の接続データストレージドライブ１５に隣接させてドライブおよび接続ホストシステムとの通信を行うようにしても良い。
【００２８】
同一の通信プロセッサノード１５５、ストレージシェルフ１６、データストレージドライブ１５、および拡張バス１５２を有する複数の追加拡張フレームを設け、各々を隣接の拡張フレームに接続しても良い。
【００２９】
さらに、図３に示す通り、自動化データストレージライブラリ１０は、例えば高可用性フレーム１３内に新たなアクセサ２８を有している。アクセサ２８は、データ記憶媒体にアクセスするグリッパ３０と、アクセサを移動させるＸＹ装置２５５とから構成される。高可用性フレームは、拡張フレーム１２またはベースフレーム１１に隣接し、アクセサ２８がアクセサ１８と同じ機械経路またはその隣接経路を走行するようにしても良い。分散型コントロールシステムはさらに、拡張フレームの拡張コモンバス１５２またはベースフレームのコモンバス６０に接続された拡張コモンバス２００を有している。また新たな通信プロセッサノード２５０を高可用性フレーム１３内に配置し、ホストからのコマンドを直接あるいはデータストレージドライブ１５を介して、例えば入力２５６で受信しても良い。後述するように、通信プロセッサノード２５０は高可用性フレーム拡張コモンバス２００に接続され、コマンドの拡張コモンバスへの通信リンクを提供する。本発明では、ワークプロセッサノード２５２がアクセサ２８に配置され、高可用性フレーム拡張コモンバス２００に接続される。従って、ワークプロセッサノード５２、２５２は冗長ワークプロセッサノードの一実施形態を構成している。
【００３０】
あるいは、本発明によると、通信プロセッサノード５０、１５５、２５０は、追加ワークプロセッサノードを構成するか、またはワークプロセッサノード５２、２５２の１つとして構成されるようにプログラムしても良い。さらに、追加ワークプロセッサノードを、フレーム１１、１２、１３の何れか、またはアクセサ１８、２８の何れかに搭載しても良い。各プロセッサノードはコモンバス６０、１５２、２００の何れかに接続される。
【００３１】
図３に示す通り、本発明の実施形態によると、ワークキューイング装置は通信プロセッサノード５０、１５５、２５０の何れか１つを含み、例えば入力１５６、２５６でホスト４０〜４２から受信したコマンドのための通信リンクを提供し、該コマンドを適宜解釈、変換し、通信プロセッサノードに接続された複数のワークプロセッサノード５２、２５２へ、例えばコモンバスネットワーク６０、１５２、２００を介してワークリクエストを同報通信する。ＣＡＮバス方式の場合、上述の様に全てのプロセッサノードがコモンバスに接続されているので、各ワークプロセッサノードが同報通信されたメッセージが自己宛か否かを認識する。各ワークプロセッサノード５２、２５２は同報通信されたワークリクエストに応じてジョブのワークキューを作成する。ライブラリではワークプロセッサノードまたはワークキューが１つ故障すると、他のノードまたはワークキューへの自動フェイルオーバーが生じるという点で、冗長ワークプロセッサノードおよび冗長ワークキューはライブラリの可用性を高める。少なくとも１つのワークプロセッサノードが、アクセサ１８、２８の何れか一方に対してワークキューから次のジョブを選択する。一方のワークプロセッサノード５２、２５２は、コモンバス６０、１５２、２００を介して他のワークプロセッサノード５２、２５２にジョブ選択に関する情報を同報通信し、ワークキューの同期を維持する。選択を行ったワークプロセッサノード（選択ワークプロセッサノード）は関連するアクセサに選択ジョブの実行を指示するが、コモンバスを使用しても良い。好ましい実施形態としては、ジョブ選択を行ったワークプロセッサノード５２、２５２が、ジョブ完了時に選択ジョブの識別情報を同報通信する。他の実施形態においては、ジョブ選択を行ったワークプロセッサが、ジョブ選択時に選択ジョブの識別情報を同報通信する。また、選択ジョブの完了を同報通信しても良い。さらなる実施形態においては、選択ワークプロセッサノードがコモンバスを介して、関連アクセサを指示する情報を該アクセサに供給する。ワークプロセッサノードはコモンバス６０、１５２、２００を監視し、ＸＹネットワークトラフィックを検出する。コモンバス６０、１５２、２００上のＸＹネットワークトラフィックを監視している選択を行わなかったワークプロセッサノード（非選択ワークプロセッサノード）は、どのワークが開始され完了されたかを決定し、ジョブの選択または完了を決定する。以下では、上記および他の代替実施形態は、ジョブ選択に関する情報の同報通信として一般的に特徴づけられる。
【００３２】
図４にワークキュー３００の例を示す。上述のように、ホストからのワークリクエストは、媒体、および該媒体にアクセスして、例えばストレージシェルフとデータストレージドライブと間を移動させるための論理位置を識別する論理コマンドを含む。通信プロセッサノードはコマンドを受信すると、各コマンドを単に同報通信したり、個々の移動コマンドを選択的に結合したり、あるいは複雑なコマンドを分離したりすることができる。その結果得られたコマンドは通信プロセッサノード５０、１５５、２５０により冗長ワークプロセッサノード５２、２５２へ同報通信され、各ワークプロセッサノードは受信コマンドをそれぞれのワークキュー３００へ配置する。ワークプロセッサは、例えばソース（源）およびデスティネーション（宛先）の論理位置を使用してコマンドをワークキュー内に配置するか、または論理位置を物理位置へ変換する。ワークキューは、例えばジョブ識別子（ＩＤ）３０２、ジョブタイプ３０３、ならびに移動に関するソース３０４およびデスティネーション３０５を含む。キューの位置は識別子３０６により識別しても良いし、あるいは単にポインタやキュー内の位置で識別しても良い。
【００３３】
両アクセサ１８、２８が同時にアクティブである場合、ワークプロセッサノードは、各アクセサをライブラリの異なるゾーンへ割り当てる。ここで、各ゾーンは、選択されたストレージシェルフとデータストレージドライブとから構成されている。ゾーンの編成は、当業者に公知の方法で実施され得る。さらに、通常の動作では、少なくとも１つのワークプロセッサノードが各アクセサに関連づけられている。従って、各ワークプロセッサノードは、全ての論理位置を物理位置に変換して、ゾーンを評価し、さらに関連アクセサがワークキュー３００中の次のジョブに対応するゾーンに割り当てられているか否かを評価する。ワークプロセッサノードの何れか１つが故障した場合、残りのワークプロセッサノードが複数のアクセサを制御する。
【００３４】
ワークプロセッサノード５２、２５２は同報通信コマンドに応じて、アクセサに対するコマンドを選択し、アクセサにジョブの実行を指示するようプログラムされている。そのため、ワークプロセッサノードからＸおよびＹ移動コマンドが発せられる。当業者には公知のように、ワークプロセッサノードは、図５および図６に示すようなテーブルを用いて移動コマンドを生成する。例えば、図５に示すテーブル１４０は、受信コマンドのストレージシェルフの論理識別子１４１と、ライブラリ１０内のストレージシェルフ１６（図１）の物理的Ｘ位置１４３および物理的Ｙ位置１４４との対応付けを行う。図６のテーブル１５０は、受信コマンドのデータストレージドライブの論理識別子１５１と、ライブラリ１０内のデータストレージドライブ１５の物理的Ｘ位置１５３および物理的Ｙ位置１５４との対応付けを行う。ワークプロセッサノード５２、２５２は、テーブルを利用してデータ記憶媒体を検索する物理位置およびデータ記憶媒体を送出する物理位置を決定するが、ワークキュー３００中の情報を利用しても良い。ジョブ選択時に、ワークプロセッサノードは、ソースからデスティネーションまでのX方向およびY方向の移動距離を計算する。次にワークプロセッサノードは、ＸＹプロセッサノードに移動コマンドを発し、アクセサ１８、２８に選択ジョブの実行を指示する。
【００３５】
図７〜図９に本発明による方法の実施形態を示す。図７に示す通り、ステップ３１０においてホスト４０〜４２の何れか１つがワークリクエストを発する。ステップ３１１において、通信プロセッサノード５０、１５５、２５０の何れか１つがワークリクエストを受信し、適宜コマンドを解釈し、変換する。ステップ３１５において、受信通信プロセッサノードは、受信ワークリクエストがアクセサ宛か、ライブラリの他の要素宛かを決定する。ワークリクエストがアクセサに関連のない場合、該リクエストはステップ３１６で他の装置へ向けられる。ワークリクエストがアクセサと関連がある場合、ステップ３１８において受信通信プロセッサノード５０、１５５、２５０がワークリクエストを、例えばコモンバスネットワーク６０、１５２、２００を介して、通信プロセッサノードに接続された複数のワークプロセッサノード５２、２５２に同報通信する。ステップ３２０、３２１において、各ワークプロセッサノード５２、２５２がワークリクエストの同報通信に応じてワークキュー３００を作成し、ジョブをワークキューに追加する。このように、本発明に従って冗長ワークプロセッサノードおよび冗長ワークキューを設けることで、ライブラリの可用性がホストソフトウェアを変更することなく高められる。
【００３６】
図８に、ワークプロセッサノード５２、２５２がアクセサの可用性を決定する様子をステップ３２５から示す。該決定は初期化時に行う事が望ましいが、周期的あるいはジョブ毎に行っても構わない。ステップ３２７において、ワークプロセッサノードは２つ以上のアクセサ１８、２８が活動中であるかを決定する。１つのアクセサのみが利用可能である場合、ステップ３２８でワークプロセッサはアクセサ１８、２８の何れが活動中であるかを決定する。例えば、ベースフレームアクセサ１８が主たるアクセサであれば、高可用性フレームのワークプロセッサノード２５２は、ベースフレームアクセサ１８が利用不可能であるか否かを決定し、ベースフレームアクセサが利用不可能である場合にアクセサ２８を起動させるようにプログラムされる。または、ベースフレームの通信プロセッサノード５０と高可用性フレームの通信プロセッサノード２５０を共に、ベースフレームアクセサ１８が利用不可能であるか否かを決定し、利用不可能な場合にアクセサ２８の起動を決定するようにプログラムしても良い。本発明によると、何れか１つの活動ワークプロセッサノードに高い優先度を与え、他のワークプロセッサノードがバックアップとして作動しながら、全てのワークプロセッサノードに該方法を並列実行させて冗長性を保証するようにしても良い。当業者には公知であるが、アクセサ１８の収納用のガレージを設けても良く、高可用性フレーム１３はアクセサ２８の収納用に、ガレージを有するか、あるいはストレージシェルフまたはデータストレージドライブを省いても良い。
【００３７】
２つ以上のアクセサが活動中の場合、少なくとも１つのワークプロセッサが各アクセサに関連づけられる。従って、ステップ３２７での決定の結果、ステップ３３０で各ワークプロセッサが、アクセサ１８、２８のゾーンへの割り当てを決定する。例えば、各ゾーン、つまり割り当てられたアクセサは、特定の範囲を付与される。あるいは、当業者に公知のように、ゾーンは、ワークキュー中の実行すべき一連のジョブに基づいて決定されるような動的ゾーンであっても良い。次にステップ３３３でジョブが選択される。
【００３８】
図９に、ワークプロセッサノード５２、２５２がワークキュー３００からジョブを選択する様子をステップ３３３から示す。例として示す図９の方法は、ワークプロセッサノード５２、２５２のうち優先度が高くワークプロセッサノードＡとして示される何れか一方により実施され、他方のワークプロセッサノードＢはワークプロセッサノードＡからの同報通信を受信する。あるいは、両ワークプロセッサノードが並列動作し、優先度の高いノードのみが出力を与えるようにしても良い。ステップ３３５では、ワークプロセッサノードがワークキュー３００中の次のジョブを決定する。ステップ３３６では、ワークプロセッサノードは、ライブラリに対し複数のアクセサが異なるゾーンで活動中であるか、あるいは１つのアクセサのみが活動中であるかを決定する。複数のアクセサが異なるゾーンで活動中の場合、ワークプロセッサノードは、上述の様にジョブの全ての論理位置を物理位置に変換し、ステップ３３７でゾーンの評価を行い、ステップ３３８では、関連アクセサがワークキュー３００中のジョブのゾーンに割り当てられているかを決定する。関連アクセサがジョブのゾーンに割り当てられていない場合、関連ワークプロセッサノード５２、２５２はステップ３３５へ戻り、ワークキュー中の次のジョブを決定する。ワークキューの同期を維持する為に、ワークプロセッサノードＡは、もう一方のワークプロセッサノードＢがジョブを選択し、関連アクセサを作動させるまで待機しても良い。また、ゾーンを固定すると、複数のゾーンにまたがるワークがあった場合に困るので、ゾーンを可変にすることによって、ワークを遂行させ衝突を回避するようにしても良い。
【００３９】
ワークプロセッサノード５２、２５２の何れかが利用不可能な場合、本発明においては、利用可能なワークプロセッサノードが両アクセサに関連づけられ、ステップ３３８において、ゾーンに割り当てられたアクセサにジョブを割りふる。その結果、冗長ワークプロセッサノードおよび冗長ワークキューにより、ホストソフトウェアを変更することなくライブラリの可用性が高められる。
【００４０】
１つのアクセサのみが活動中の場合、つまりステップ３３６において「NO」の場合、またはジョブがワークプロセッサノードＡと関連するアクセサのゾーン内にある場合、つまりステップ３３８において「ＹＥＳ」の場合、ステップ３４０において、ワークプロセッサノードが該ジョブを選択し、ステップ３４１で関連アクセサに選択ジョブの実行を指示する。上述のように、ワークプロセッサノードから、関連アクセサ１８、２８のＸＹ装置のＸＹプロセッサノード５５、２５５に対し移動コマンドを発しても良い。
【００４１】
本発明においては、ジョブ選択後、ステップ３５０において、ワークプロセッサノードＡ（５２または２５２）はジョブ選択に関する情報を他のワークプロセッサノードＢ（２５２または５２）に同報通信し、ワークキューの同期を維持する。１つの実施形態では、ステップ３４０でジョブ選択を行ったワークプロセッサノード、例えばワークプロセッサノードＡは、ステップ３５３で該ジョブを自身のワークキュー３００から削除する。上述の様に、ワークプロセッサノード同士はコモンバスにより接続されている。従って、他のワークプロセッサノードＢは、ステップ３５５で、ワークプロセッサノードＡから同報通信されたジョブ選択に関する情報を受信し、ステップ３５６で該ジョブを自身のワークキュー３００から削除する。あるいは好ましくは、ワークプロセッサノードＡが自身のキューからジョブを削除し、ジョブ完了後にのみ選択ジョブの識別情報を同報通信するようにしても良い。さらには、ステップ３４0でジョブが選択されると同時に、ワークプロセッサノードＡが自身のキューから該ジョブを削除し、選択ジョブの識別などのジョブ選択を同報通信しても良い。選択ジョブの識別は、図４に示すジョブ識別子３０２で可能である。さらには、ステップ３４１において、テーブル１４０および１５０からの情報等の指示情報を選択ワークプロセッサノードによりコモンバスネットワークを介して同報通信し、ワークプロセッサノードによりコモンバスネットワークを監視するようにしても良い。非選択ワークプロセッサノードは、監視情報からジョブの選択または完了を決定することができる。従って、ステップ３５０および３５５が連続して異なる位置で図９に示すステップ順で実施される。
【００４２】
従って、各ワークプロセッサノード５２、２５２のそれぞれのワークキュー３００が同期する。その結果、万が一ワークプロセッサノードのうち１つが故障あるいは通信不可能になったとしても、本発明の装置が自動的に他のワークプロセッサノードに切り替え、切り替えたプロセッサノードのワークキューのみを使用して動作を継続するので、装置の可用性が高められる。
【００４３】
本発明の好ましい実施形態を詳細に説明したが、請求項記載の範囲内で、種々の変更や修正が実行できることは当業者によって了承される。
【図面の簡単な説明】
【図１】本発明の一実施形態を示す自動化データストレージライブラリの斜視図である。
【図２】図１に示す自動化データストレージライブラリの構成要素の制御および作動に使用されるプロセッサノードの一実施形態を示すブロック図である。
【図３】図２に示すプロセッサノードを使用した図１に示す本発明による自動化データストレージライブラリの分散型コントロールシステムの一実施形態を示すブロック図である。
【図４】本発明に使用されるワークキューを例示する図である。
【図５】図１および図３に示す自動化データストレージライブラリにおけるデータ・ストレージシェルフのマップを例示する図である。
【図６】図１および図３に示す自動化データストレージライブラリにおけるデータストレージドライブのマップを例示する図である。
【図７】本発明によるワークリクエストの同報通信方法の一実施形態を説明するフローチャートである。
【図８】本発明によるアクセサの可用性決定方法の一実施形態を説明するフローチャートである。
【図９】本発明による図４に示すワークキューからのジョブ選択、およびジョブ選択の同報通信方法の一実施形態を説明するフローチャートである。
【図１】
0003798650.tif 000002
【図２】
0003798650.tif 000003
【図３】
0003798650.tif 000004
【図４】
0003798650.tif 000005
【図５】
0003798650.tif 000006
【図６】
0003798650.tif 000007
【図７】
0003798650.tif 000008
【図８】
0003798650.tif 000009
【図９】
0003798650.tif 000010