(57)【特許請求の範囲】
【請求項１】
複数モジュールからなる分散システムの１つモジュールとの関連付けのためのプロセッサ・ノードにおいて、前記複数モジュールのうちの少なくとも複数個がネットワーク内で相互接続された関連プロセッサ・ノードを有し、
関連モジュールを操作するための処理装置と、
前記ネットワーク内の前記プロセッサ・ノードの通信を可能にするためのプロセッサ・インターフェースと、
前記関連モジュールを操作するための前記処理装置用のプログラム・コードを保管し、前記ネットワーク内の他のプロセッサ・ノードの少なくとも１つの他の処理装置用のバックアップ・プログラム・コードを保管するための不揮発性メモリであって、前記バックアップ・プログラム・コードが前記他のプロセッサ・ノードの関連モジュールを操作するためのものであり、前記バックアップ・プログラム・コードが前記複数のモジュールに関する完全なコード・イメージの一部分を形成する不揮発性メモリと、を備え、前記処理装置が、
前記関連モジュールを操作するためのプログラム・コードのタイプおよび／またはレベルのＩＤを維持し、
復元信号に応答して、前記バックアップ・プログラム・コードのタイプおよび／またはレベルのＩＤについて要求を送信し、
前記バックアップ・プログラム・コードのタイプおよび／またはレベルのＩＤを受信したことに応答して、前記受信したＩＤと前記維持されたＩＤとを比較し、
前記比較の結果、前記受信したＩＤが前記プログラム・コードの置き換えに有効であることが示されたことに応答して、前記バックアップ・プログラム・コードを要求し、
前記バックアップ・プログラム・コードを受信して、前記プログラム・コードの少なくとも一部分を、前記バックアップ・プログラム・コードで置き換えて前記プログラム・コードを復元する、プロセッサ・ノード。
【請求項２】
前記不揮発性メモリがさらに、前記ネットワーク内の他のプロセッサ・ノードの複数の他の処理装置用のバックアップ・プログラム・コードを保管するためのものであり、前記バックアップ・プログラム・コードが前記他のプロセッサ・ノードの関連モジュールを操作するためのものである、請求項１に記載のプロセッサ・ノード。
【請求項３】
前記処理装置がさらに、前記プロセッサ・インターフェースで受信したバックアップ・プログラム・コードに関する要求に応答して、前記プロセッサ・インターフェースで前記バックアップ・プログラム・コードを提供するためのロジックを有する、請求項１に記載のプロセッサ・ノード。
【請求項４】
前記処理装置がさらに、前記バックアップ・プログラム・コードのタイプおよび／またはレベルのＩＤを維持し、前記プロセッサ・インターフェースで受信した前記ＩＤに関する要求に応答して、前記プロセッサ・インターフェースで前記ＩＤを提供するためのロジックを有する、請求項１に記載のプロセッサ・ノード。
【請求項５】
前記処理装置がさらに、前記関連モジュールを操作するためのバックアップ・プログラム・コードを有する少なくとも１つの他のプロセッサ・ノードのＩＤを維持し、復元信号に応答して、前記バックアップ・プログラム・コードについて前記少なくとも１つの他のプロセッサ・ノードに前記プロセッサ・インターフェースで要求を送信するロジックを有する、請求項１に記載のプロセッサ・ノード。
【請求項６】
前記処理装置がさらに、前記バックアップ・プログラム・コードのレベルのＩＤを維持し、前記バックアップ・プログラム・コードの更新の後で、前記ネットワーク上の前記プロセッサ・インターフェースで前記更新の通知を送信するロジックをさらに有する、請求項１に記載のプロセッサ・ノード。
【請求項７】
ネットワーク内で相互接続された複数モジュールからなる分散システム用のモジュールにおいて、
モジュールの機能を実行するためのシステムと、
前記モジュールに関連する請求項１ないし６のいずれかに記載のプロセッサ・ノードと、を有するモジュール。
【請求項８】
ネットワークと、
請求項７に記載のタイプの複数のモジュールと、
を有する、複数モジュールからなる分散システム。
【請求項９】
プログラマブル・コンピュータ・プロセッサで使用可能なコンピュータ・プログラムにおいて、前記プログラマブル・コンピュータ・プロセッサが複数モジュールからなる分散システムの１つモジュールとの関連付けのためのものであり、前記複数モジュールのうちの少なくとも複数個がネットワーク内で相互接続された関連プロセッサ・ノードを有し、
関連モジュールを操作するためのプログラム・コードを前記プログラマブル・コンピュータ・プロセッサに保管させるコンピュータ可読プログラム・コードと、
前記ネットワーク内の他のプロセッサ・ノードの少なくとも１つの他の処理装置用のバックアップ・プログラム・コードを前記プログラマブル・コンピュータ・プロセッサに保管させるコンピュータ可読プログラム・コードであって、前記バックアップ・プログラム・コードが前記他のプロセッサ・ノードの関連モジュールを操作するためのものであり、前記バックアップ・プログラム・コードが前記複数のモジュールに関する完全なコード・イメージの一部分を形成するコンピュータ可読プログラム・コードと、を有し、
前記コンピュータ・プログラムが、前記関連モジュールを操作するための処理装置に対して、
前記関連モジュールを操作するためのプログラム・コードのタイプおよび／またはレベルのＩＤを維持させ、
復元信号に応答して、前記バックアップ・プログラム・コードのタイプおよび／またはレベルのＩＤについて要求を送信させ、
前記バックアップ・プログラム・コードのタイプおよび／またはレベルのＩＤを受信したことに応答して、前記受信したＩＤと前記維持されたＩＤとを比較させ、
前記比較の結果、前記受信したＩＤが前記プログラム・コードの置き換えに有効であることが示されたことに応答して、前記バックアップ・プログラム・コードを要求させ、
前記バックアップ・プログラム・コードを受信させ、前記プログラム・コードの少なくとも一部分を、前記バックアップ・プログラム・コードで置き換えて前記プログラム・コードを復元させる、コンピュータ・プログラム。
【請求項１０】
自動データ・ストレージ・ライブラリであって、前記自動データ・ストレージ・ライブラリが、
ネットワークと、
請求項７に記載のタイプの複数のモジュールと、
を有する、自動データ・ストレージ・ライブラリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数モジュールからなる分散システムに関し、より具体的には、ネットワーク内で相互接続された関連プロセッサ・ノードを有するモジュールのうちの少なくとも複数個に関し、そのプロセッサ・ノードは関連モジュールを操作するためのコードを有する。
【背景技術】
【０００２】
分散システムは複数のモジュールを有することができ、そのうちの少なくともいくつかはネットワーク内で相互接続された関連プロセッサ・ノードを有する。プロセッサ・ノードは概して、関連モジュールを操作するための処理装置と、ネットワーク内のプロセッサ・ノードの通信を可能にするためのプロセッサ・インターフェースとを有する。処理装置は、関連モジュールを操作するために、不揮発性メモリなどのメモリに保管可能な、コンピュータ可読プログラム・コードなどのコードを実行する。モジュールおよび関連プロセッサは、埋込みシステムと呼ぶことができる。
【０００３】
分散システムの一例は、ストレージ・シェルフ（storageshelf）にリムーバブル・データ・ストレージ・メディアを保管する自動データ・ストレージ・ライブラリを有し、リムーバブル・データ・ストレージ・メディア上でデータの読取りあるいは書込みまたはその両方を行うために少なくとも１つのデータ・ストレージ・ドライブを有する。アクセサ・ロボット（accessor robot）は、データ・ストレージ・ドライブとストレージ・シェルフとの間で、カートリッジの形になっている可能性のあるリムーバブル・データ・ストレージ・メディアを移送する。オペレータ・パネルはオペレータがライブラリと通信できるようにするものであり、オペレータ・パネルは、ドアの開放ならびにカートリッジの挿入またはライブラリからのカートリッジの取外しなど、ライブラリとのその他の対話も感知する。また、コントローラは、ホストとデータ・ストレージ・ドライブとの間の対話を含む可能性のある、ライブラリとのホスト対話も制御する。
【０００４】
ＩＢＭ３５８４ウルトラスケーラブル・テープ・ライブラリ（UltraScalable Tape Library）という例では、アクセサ・ロボット・モジュールのために２つのプロセッサ・ノードが設けられ、アクセス・コントローラ（accessor controller）は、グリッパによるカートリッジ処理、アクセサ作業キューイング（accessor work queueing）、カートリッジ・ラベルの読取りなどを含む基本アクセス機能（basic assessor function）を制御し、ＸＹコントローラはアクセサ・ロボットのＸおよびＹ運動を制御する。オペレータ・パネル・コントローラ・プロセッサ・ノードは、表示出力、キーボード入力、入出力装置（I/O station）センサおよびロックなどを含む、基本オペレータ・パネル・モジュール機能を制御する。メディア・チェンジャ（medium changer）コントローラ・プロセッサ・ノードは、ホスト通信、ドライブ通信、「イーサネット」通信を含むホスト対話と、パワー・マネージメントなどを含む、コントローラ・モジュール機能を制御する。プロセッサ・ノードは、マルチドロップ・ネットワークを含む、ＣＡＮ（コントローラ・エリア・ネットワーク（Controller Area Network））などのネットワークによって相互接続される。その他のアクセサ・ロボット・モジュールおよびオペレータ端末（operator station）モジュールを追加することができ、それぞれが関連プロセッサ・ノードを備えている。
【０００５】
分散システムのその他の例は、産業用制御システムならびに自動車および航空機マルチプロセッサ・システムを含む。
【０００６】
２００１年１月５日に出願され、本出願人に譲渡された米国特許出願第０９／７５５８３２号の分散システムでは、いずれかのモジュールを操作するために実行可能なコードを提供するプロセッサ・ノードのそれぞれに完全なコード・イメージが提供される。２０００年１２月１３日に出願され、本出願人に譲渡された米国特許出願第０９／７３４９１７号の分散システムでは、不揮発性ストアを有する可能性があり、電源オフされた任意のプロセッサ・ノードの揮発性メモリをリフレッシュするために使用可能な、マスタ・ソースによってマスタ・コード・イメージが提供される。
【０００７】
対処すべき問題は、バックアップ・コードまたはそのコード・イメージを復元する必要があるプロセッサ・ノードによって使用可能なコードの問題である。たとえば、１つのプロセッサ・ノードに関するコード・イメージは動作中に何らかの点で損なわれたものになる可能性があり、プロセッサ・ノードによって使用されるコード・イメージは部分的に消去される可能性があり、モジュールは交換される可能性があり、プロセッサ・ノード・コード・イメージが間違っており、あるいは、他のプロセッサ・ノードのうちの１つまたは複数が更新されたときに、あるノードのプロセッサがネットワークなどから使用不能になる可能性がある。その場合、プロセッサ・ノードは、オペレータ介入を必要とする可能性のあるエラー状態に入る可能性がある。その場合、誤ったプロセッサ・ノードのモジュールの機能を復元するために、そのコードのバックアップ・コピーを突き止めて使用しなければならない。オペレータは、すべてのプロセッサ・ノードに関するコードを含む完全なコード・イメージを他のプロセッサ・ノードから選択するか、またはマスタ不揮発性ストアからマスタ・コード・イメージを選択することができるが、まず、そのコード・イメージが正しいものであり、システム・バックアップとして機能できることが保証されなければならない。各プロセッサ・ノードまたはマスタ・ノードで複製された完全なコード・イメージの使用を妨げる障害は、コードの全量のための不揮発性メモリの要件と、あるプロセッサ・ノード・モジュールに関するコードのみが実際に更新された場合でも完全なコード・イメージまたはマスタ・コード・イメージを更新する必要があることである。異なるプロセッサ・ノードに異なるレベルの完全なコードが存在する場合、あるプロセッサ・ノードにおけるダウンレベル（downlevel）の完全なコードは正しくないか、または他のプロセッサ・ノード用の潜在的なバックアップとして使えない可能性がある。
【特許文献１】米国特許出願第０９／７５５８３２号
【特許文献２】米国特許出願第０９／７３４９１７号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の諸態様による分散システム、分散システム用のプロセッサ・ノード、分散システム用のモジュール、自動データ・ストレージ・ライブラリ、およびコンピュータ・プログラムは、分散システムのプロセッサ・ノードにバックアップ・コードを提供する。
【課題を解決するための手段】
【０００９】
一実施形態では、複数モジュールからなる分散システムは１つのネットワークと複数のモジュールとを有し、１つのモジュールは少なくとも１つの関連プロセッサ・ノードを有する。その関連プロセッサ・ノードは、関連モジュールを操作するための処理装置と、ネットワーク内のプロセッサ・ノードの通信を可能にするためのプロセッサ・インターフェースと、関連モジュールを操作するための処理装置用のコードを保管し、ネットワーク内の他のプロセッサ・ノードの少なくとも１つの他の処理装置用のバックアップ・コードを保管するための不揮発性メモリとを有し、そのバックアップ・コードは当該他のプロセッサ・ノードの関連モジュールを操作するためのものである。したがって、プロセッサ・ノードのバックアップ・イメージは、ひとまとめにして考えると、システム集合体（system aggregate）の一部または全部を形成する。バックアップ・コード・イメージとオペレーティング・コード（operating code）イメージから結果として得られるシステム集合体は、各プロセッサ・ノードにおいて、システム集合体全体に必要な全空間量のわずかな部分のみを要する。その結果として、すべてのモジュールに関する完全なコード・イメージが各モジュールで複製されるシステムと比較して、不揮発性メモリの相当な記憶空間が節約される。
【００１０】
他の一実施形態では、モジュール処理ノードの処理装置は、プロセッサ・インターフェースで受信したバックアップ・コードに関する要求に応答して、そのプロセッサ・インターフェースでバックアップ・コードを提供する。その結果として、バックアップ・コードは、要求側プロセッサ・ノードに提供され、要求側プロセッサ・ノードに関連するモジュールを操作するためのコードを復元するために使用することができる。
【００１１】
他の実施形態では、処理装置はさらに、バックアップ・コードのタイプのＩＤ（identification）を維持する。たとえば、バックアップ・コードのタイプは、そのバックアップ・コードが操作することが意図されているモジュールのタイプに関連する可能性がある。処理装置は、プロセッサ・インターフェースで受信したＩＤに関する要求に応答して、そのプロセッサ・インターフェースでＩＤを提供する。
【００１２】
さらに他の一実施形態では、そのコードの復元を要求する処理装置は、たとえば、復元信号に応答して、バックアップ・コードについてプロセッサ・インターフェースで要求を送信し、そのバックアップ・コードは関連モジュールを操作するための処理装置用のコードを有する。
【００１３】
さらに、処理装置は、関連モジュールを操作するためのコードのタイプのＩＤを維持することができ、そのコードの復元を要求する際に、バックアップ・コードのタイプのＩＤについてプロセッサ・インターフェースで要求を送信する。次に、プロセッサ・インターフェースでその要求に対する応答を受信したことに応答して、処理装置は、受信したＩＤを維持されているＩＤと比較し、その比較の結果、関連モジュールを操作するためのコードの置き換えのためにそのＩＤが有効であることが示されたことに応答して、バックアップ・コードを受信し、関連モジュールを操作するためのコードの少なくとも一部分をバックアップ・コードで置き換える。
【００１４】
他の実施形態では、処理装置はさらに、関連モジュールを操作するためのバックアップ・コードを有する少なくとも１つの他のプロセッサ・ノードのＩＤを維持し、復元信号に応答して、バックアップ・コードについて当該他のプロセッサ・ノードにプロセッサ・インターフェースで要求を送信するロジックを有する。さらに、処理装置は、関連モジュールを操作するためのコードのレベルのＩＤを維持することができ、復元信号に応答して、当該他のプロセッサ・ノードのバックアップ・コードのレベルのＩＤを受信したことに応答して、受信したＩＤを維持されているＩＤと比較し、その比較の結果、関連モジュールを操作するためのコードの置き換えのためにそのＩＤが有効であることが示されたことに応答して、関連モジュールを操作するためのコードの少なくとも一部分をバックアップ・コードで置き換えるロジックを有する。
【００１５】
他の一実施形態では、プロセッサ・ノードの処理装置はさらに、バックアップ・コードのレベルのＩＤを維持し、バックアップ・コードの更新に応答して、ＩＤを更新し、ネットワーク上のプロセッサ・インターフェースで更新の通知を送信するロジックをさらに有する。
【００１６】
次に、添付図面に関連して、一例としてのみ、本発明の諸実施形態について説明する。
【発明を実施するための最良の形態】
【００１７】
図１を参照すると、システムのノードにプロセッサを備えた複数のモジュール１０１、１０２、１０３、１０４と、システムのモジュール同士を相互接続する働きをするネットワーク１１０とを有する、分散システム１００の一実施形態が図示されている。「ネットワーク」は、直接または間接を問わず、２つまたはそれ以上のノード間の通信を含むものとして定義され、１つまたは複数のサブネットワークを有することができる。図示したモジュールのそれぞれは、少なくとも１つの関連プロセッサ・ノードを有する。関連プロセッサ・ノードは、処理装置１１１、１１２、１１３、１１４として示した関連モジュールを操作するための処理装置と、インターフェース１２１、１２２、１２３、１２４として示したネットワーク１１０内のプロセッサ・ノードの通信を可能にするためのプロセッサ・インターフェースと、不揮発性メモリ１３１、１３２、１３３、１３４として示した関連モジュールを操作するための処理装置用のコードを保管するための不揮発性メモリとを有する。図１の例では、後述する通り、モジュール１０１の処理ノードに追加の不揮発性メモリ１３５が設けられている。この不揮発性メモリとしては、ＮＶＲＡＭ（不揮発性ランダム・アクセス・メモリ）、ＰＲＯＭ（プログラマブル読取り専用メモリ）、ＲＯＭ（読取り専用メモリ）、フラッシュ・メモリ、ＥＥＰＲＯＭ（電気消去可能プログラマブル読取り専用メモリ）、バッテリ・バックアップ付きＲＡＭ（ランダム・アクセス・メモリ）、ハードディスク・ドライブなどを含むことができる。代わって、不揮発性メモリは処理装置内に配置することもできる。処理装置１１１、１１２、１１３、１１４は、モジュールおよびそのコンポーネントを操作するためのプログラマブル・プロセッサを有し、それにより、システムを操作する。モジュール・コンポーネントは、コンポーネント１４１、１４２、１４３、１４４として示されている。処理装置は、当技術分野で知られている任意のマイクロプロセッサ・デバイスを有することができ、そのコードが、たとえば、ライブラリを構成するモジュール・ハードウェアに関連するので、しばしば「ファームウェア」と呼ばれるプログラム・コードの制御下で動作する。このコードは、処理装置がシステムのコンポーネントを操作するようになっているものである。このコードは概して不揮発性メモリ内に維持されるが、このコードの一部または全部は、処理装置を操作するために処理装置の高速ＲＡＭ（ランダム・アクセス・メモリ）に転送することができ、必要に応じて不揮発性メモリからアクセスすることができる。
【００１８】
図１、図２、図３、図４、および図５を参照すると、本発明の一実施形態によれば、不揮発性メモリ１３１、１３２、１３３、１３４は、関連モジュールを操作するための処理装置用のコード１５１、１５２、１５３、１５４を保管し、ネットワーク内の他のプロセッサ・ノードの少なくとも１つの他の処理装置用のバックアップ・コードを保管し、そのバックアップ・コードは当該他のプロセッサ・ノードの関連モジュールを操作するためのものである。
【００１９】
一例として、図１および図２の不揮発性メモリ１３５は、モジュール１０２の処理ノードの処理装置１１２用のバックアップ・コード１６２を保管する。モジュール１０２のプロセッサ・ノードに関する図１および図３のコード・イメージ１５２が動作中に何らかの点で損なわれたものになるか、部分的に消去されるか、モジュールが交換されて、コード・イメージが間違っているか、あるいは、他のプロセッサ・ノードのうちの１つまたは複数が更新されたときに、あるノードのプロセッサがネットワークなどから使用不能になる可能性がある場合、処理装置１１２は復元プロセスを開始し、バックアップ・コード１６２に関する要求を送信する。
【００２０】
図１、図２、図３、図４、および図５を参照すると、モジュール１０２のプロセッサ・ノードの不揮発性メモリ１３２は、モジュール１０１を操作するための処理ノードの処理装置１１１用のバックアップ・コード１６１を保管し、モジュール１０３を操作するためにモジュール１０３の処理ノードの処理装置１１３用のバックアップ・コードのコピー１６３を保管する。モジュール１０３のプロセッサ・ノードの不揮発性メモリ１３３は、モジュール１０４を操作するための処理ノードの処理装置１１４用のバックアップ・コード１６４を保管する。モジュール１０４のプロセッサ・ノードの不揮発性メモリ１３４は、モジュール１０３を操作するための処理ノードの処理装置１１３用のバックアップ・コードの第２のコピー１７３を保管する。
【００２１】
バックアップおよび復元プロセスを実行するための本発明によるコードは、オペレーティング・コード１５１など、そのモジュール用のオペレーティング・コードとして実施するか、処理装置１１２などの処理装置内に維持されるコードとして実施するか、または不揮発性メモリ１３３のコード１７７など、不揮発性メモリ内に別個に保管することができる。
【００２２】
このため、本明細書では「不揮発性メモリ」という用語は、不揮発性方式でコードを保管でき、プロセッサから分離しているかまたはプロセッサの一部を形成する１つまたは複数のデバイスを含む。
【００２３】
バックアップ・コード・イメージあるいはオペレーティング・コード・イメージまたはその両方がシステム集合体の一部または全部を形成するように、バックアップ・コード・イメージは分散方式で保管されるので、各バックアップ・コード・イメージはシステム集合体の一部分を形成する。その結果として、すべてのモジュールに関する完全なコード・イメージが各モジュールで複製されるシステムと比較して、不揮発性メモリの相当な記憶空間が節約される。
【００２４】
たとえば、分散システム用のすべてのコード・イメージが図２、図３、図４、図５によって示されている場合、不揮発性メモリ１３５に保管されているモジュール１０２の処理装置１１２用のバックアップ・コード１６２は、システム集合体の非常にわずかな部分のみを占有する。たとえば、集合体の一部分としての不揮発性メモリ１３５を、システムのすべてのモジュール用の従来技術の完全なオペレーティング・コード・イメージを各モジュールで複製するために必要な不揮発性メモリと比較する。
【００２５】
一連の個別コード・ロードではなく集合コード・ロードでシステムのファームウェアを更新することが望ましい場合がある。さらに、互換レベルの集合コード・ロードの一部または全部を備えることが望ましい場合もある。システム・コード・ロードが集合体として更新されない場合でも、個別コード・ロードを集合体と見なすことができる。
【００２６】
本発明によるバックアップおよび復元プロセスの一実施形態では、処理装置（たとえば、処理装置１１１）は、関連モジュールを操作するためのコードのタイプのＩＤを維持することができ、そのコードの復元を要求する際に、バックアップ・コードのタイプのＩＤについてプロセッサ・インターフェースで要求を送信する。バックアップ・コードのタイプは、本明細書では、そのバックアップ・コードが操作することが意図されているモジュールの種類を表すものとして定義される。ＩＤ（identifier）は、バックアップおよび復元コードの一部として設定され維持される場合もあれば、そのプロセッサ・ノードとともにモジュール・インターフェースの一部である場合もある。このため、「維持される」という用語は、ＩＤにアクセスできるものとして定義される。ＩＤの一例は、ワード内で「１」状態に設定されるビット位置を含む。また、処理装置は、関連不揮発性メモリ内に保管されたバックアップ・コードのタイプのＩＤも維持することができる。ＩＤは、バックアップおよび復元コードの一部として設定され維持される場合もあれば、不揮発性メモリ内に保管されたバックアップ・コードの一部を含む場合もある。したがって、この場合も、「維持される」という用語は、ＩＤにアクセスできるものとして定義される。したがって、不揮発性メモリ１３２内に保管されたバックアップ・コード１６１のタイプは、モジュール１０１を含む種類のモジュールを操作するためのものである。処理装置は、プロセッサ・インターフェースで受信したＩＤに関する要求に応答し、プロセッサ・インターフェースでそのＩＤを提供する。たとえば、モジュール１０１用のオペレーティング・コードが復元を必要とする場合、関連インターフェース１２２、１２３、１２４でＩＤに関する要求を受信した処理装置１１２、１１３、１１４のそれぞれは、関連不揮発性メモリ内に保管されたバックアップ・コードのＩＤ、すなわち、それぞれ、モジュール１０１を操作するためのバックアップ・コード１６１、モジュール１０３を操作するためのバックアップ・コード１６３、モジュール１０４を操作するためのバックアップ・コード１６４、およびモジュール１０３を操作するためのバックアップ・コード１７３のＩＤで応答する。任意選択で、オペレーティング・コードは他の同様のモジュール用のバックアップ・コードとして使用することができ、またはバックアップ・コードおよびオペレーティング・コードは、後述する通り、単一ユニットを有することもできる。
【００２７】
次に、プロセッサ・インターフェース（たとえば、プロセッサ・インターフェース１２１）でその要求に対する応答を受信したことに応答して、要求側処理装置（たとえば、処理装置１１１）は、受信したＩＤを維持されているＩＤと比較し、関連モジュールを操作するためのコードの置き換えのためにＩＤ（たとえば、モジュール１０２に保管され、バックアップ・コード１６１について受信したＩＤ）が有効であることをその比較が示したことに応答して、バックアップ・コードを要求し、バックアップ・コード（たとえば、バックアップ・コード１６１）を受信し、関連モジュールを操作するためのコード（たとえば、コード１５１）の少なくとも一部分をバックアップ・コードで置き換える。同じ機能の他の実施形態としては、要求側プロセッサ・ノードは、プロセッサ・インターフェースで所望のタイプのバックアップ・コードとともに要求を送信する。この事例では、所望のタイプのバックアップ・コードが関連不揮発性メモリに保管されている処理装置のみが、バックアップ・コードのタイプのＩＤで応答する（たとえば、モジュール１０２の処理装置１１２がバックアップ・コード１６１のタイプのＩＤを送信する）。
【００２８】
他の実施形態では、処理装置はさらに、その処理装置に関連するモジュールを操作するためのバックアップ・コードを有する少なくとも１つの他のプロセッサ・ノードのＩＤを維持する。これは、たとえば、モジュール１０１の処理装置１１１が、モジュール１０１を操作するためのバックアップ・コード１６１を有するものとして、モジュール１０２の処理ノードのＩＤを維持することを意味する。この例では、処理装置１１１は、復元信号に応答して、バックアップ・コードについてモジュール１０２のプロセッサ・ノードにプロセッサ・インターフェースで要求を送信し、処理装置１１２は、不揮発性メモリ１３２内のバックアップ・コードをルックアップし、インターフェース１２２によりモジュール１０１のプロセッサ・ノードにバックアップ・コード１６１を送信する。
【００２９】
さらに、処理装置（たとえば、処理装置１１１）は、関連モジュールを操作するためのコードのレベルのＩＤを維持することができ、復元信号に応答して、当該他のプロセッサ・ノードのバックアップ・コード（たとえば、バックアップ・コード１６１）のレベルのＩＤを受信したことに応答して、受信したＩＤを維持されているＩＤと比較し、関連モジュールを操作するためのコードの置き換えのためにそのＩＤが有効であることをその比較が示したことに応答して、関連モジュールを操作するためのコード（たとえば、コード１５１）の少なくとも一部分をバックアップ・コード（たとえば、バックアップ・コード１６１）で置き換えるロジックを有する。
【００３０】
他の一実施形態では、バックアップ・コードを、たとえば、新しいレベルに更新することができる。プロセッサ・ノードの処理装置はさらに、バックアップ・コードのレベルのＩＤを維持し、バックアップ・コードの更新に応答して、ＩＤを更新し、ネットワーク上のプロセッサ・インターフェースで更新の通知を送信するロジックをさらに有する。この通知は、他のすべてのプロセッサ・ノードにブロードキャストするか、またはそのコードを復元するためにバックアップ・コードを使用すると考えられるプロセッサ・ノードに直接送信することができる。たとえば、モジュール１０４の不揮発性メモリ１３４に保管されたバックアップ・コード１７３の更新に応答して、処理装置１１４は、バックアップ・コードのレベルのそのＩＤを更新し、モジュール１０３のプロセッサ・ノードにその更新のＩＤの通知を送信する。モジュール１０３のプロセッサ・ノード用のバックアップ・コードの他のコピー１６３が更新されず、オペレーティング・コード１５３が更新された場合、バックアップ・コードのコピー１７３のみが有効になるであろう。逆に、オペレーティング・コード１５３がバックアップ・コード・コピー１６３と同じレベルであった場合、バックアップ・コードのコピー１６３のみが有効になるであろう。
【００３１】
図６と、図１、図２、図３、図４、および図５とを参照すると、ステップ１９９から始まる復元プロセスの一実施形態が図示されている。ステップ１９９は、「復元信号」と呼ぶことができるが、プロセッサ・ノードを操作するためのコード・イメージが、前述の通り、何らかの点で損なわれたものになったかまたは損なわれたものになっているという任意の検出として定義される。したがって、「復元信号」は、エラー状態を含むかまたは任意の形式またはフォーマットの信号を表すことができる。任意選択のステップ２０１は、そのコードが復元されるプロセッサ・ノードの処理装置が、プロセッサ・ノード用のバックアップ・コードを有する処理装置を把握しているかどうかを示す。たとえば、モジュール１０１の処理装置１１１は、モジュール１０２の処理ノードのＩＤを、モジュール１０１を操作するためのバックアップ・コード１６１を有するものとして維持し、ステップ２０１の「ＹＥＳ」を意味する。次にプロセスはステップ２０５に続く。バックアップ・コードを備えた処理装置が、そのコードが復元されるプロセッサ・ノードに知られていない場合、「ＮＯ」であり、プロセスはステップ２０６に続く。ステップ２０１は一般的なバックアップおよび復元プロセス内の１つのステップであり、そのコードは、バックアップ・コード位置が分かっているバックアップおよび復元プロセスの場合にその代わりにステップ２０５に直接アクセスするようにプログラミングするか、バックアップ・コード位置が分かっていないバックアップおよび復元プロセスの場合にその代わりにステップ２０６に直接アクセスするようにプログラミングすることができる。そうである場合、もう一方のレグ（leg）のプロセス・ステップをプロセスから削除することができる。
【００３２】
ステップ２０６では、そのコードが復元されるプロセッサ・ノードの処理装置は、バックアップ・コードのタイプあるいはレベルまたはその両方のＩＤについて関連プロセッサ・インターフェースで要求を送信する。前述の通り、ある代替例では、他のプロセッサ・ノードのすべてに対し、その要求のみが提供され、同じ機能の他の実施形態のように、要求側プロセッサ・ノードは、プロセッサ・インターフェースで所望のタイプあるいはレベルまたはその両方のバックアップ・コードとともに要求を送信する。この第２の事例では、関連不揮発性メモリに保管された所望のタイプあるいはレベルまたはその両方のバックアップ・コードを有する処理装置のみが、バックアップ・コードのタイプあるいはレベルまたはその両方のＩＤで応答する（たとえば、モジュール１０１の処理装置１１１が、モジュール１０１を操作するバックアップ・コードのタイプに関する要求を送信する場合、モジュール１０２の処理装置１１２のみがバックアップ・コード１６１のタイプで応答する）。第１の事例では、他のプロセッサ・ノードのそれぞれは、その関連不揮発性メモリに保管されたバックアップ・コードの各コピーのＩＤで応答する（たとえば、関連インターフェース１２２、１２３、１２４でＩＤに関する要求を受信した処理装置１１２、１１３、１１４のそれぞれは、関連不揮発性メモリに保管されたバックアップ・コードのＩＤ、すなわち、それぞれ、モジュール１０１を操作するためのバックアップ・コード１６１、モジュール１０３を操作するためのバックアップ・コード１６３、モジュール１０４を操作するためのバックアップ・コード１６４、およびモジュール１０３を操作するためのバックアップ・コード１７３のＩＤで応答する）。
【００３３】
さらに、処理装置（たとえば、処理装置１１１）は、関連モジュールを操作するためのコードのレベルのＩＤを維持することができ、復元信号に応答して、応答側処理ノードによって提供されるバックアップ・コードのレベルを要求するロジックを有する。
【００３４】
ステップ２０８では、要求側プロセッサ・ノードは、要求に応答して１つまたは複数のＩＤを受信し、その１つまたは複数のＩＤはバックアップ・コードのタイプあるいはレベルまたはその両方を含む。たとえば、要求が所望のバックアップ・コードのタイプを含んでいた場合、応答は、事実上、タイプのＩＤを含み、どの要求に対して応答するかのみを示すことができる。次に、ステップ２１０では、プロセッサ・インターフェース（たとえば、プロセッサ・インターフェース１２１）で要求に対する応答を受信したことに応答して、要求側処理装置（たとえば、処理装置１１１）は、受信したＩＤ（タイプあるいはレベルまたはその両方）を維持されているＩＤと比較する。ステップ２１１で、関連モジュールを操作するためのコードの置き換えのためにＩＤ（たとえば、バックアップ・コード１６１について受信したＩＤ）が有効であることをステップ２１０の比較が示す場合、そのコードが復元される処理装置は、ステップ２１５でバックアップ・コードを要求する。
【００３５】
比較ステップ２１０は、すべての応答（２つ以上ある場合）のＩＤを一度に比較する場合もあれば、たとえば、ステップ２０８で受信した通り、応答を１つずつ比較する場合もある。ＩＤを１つずつ比較する場合、そのＩＤが有効ではないことをステップ２１１が示した後で、ステップ２１７は、すべてのＩＤが比較されたかどうかをテストする。これは、すべての潜在的な応答が受信されたことを保証するために、ステップ２０８で待ち時間を必要とする可能性がある。すべての受信したＩＤが維持されているＩＤと比較されたわけではない場合、ステップ２１７はステップ２１０に戻ってプロセスを反復し、ステップ２０８で別個に受信される可能性のある次のＩＤを比較する。すべてのＩＤが比較されたが有効なＩＤがない場合、復元プロセスを実行することができず、ステップ２１８でエラーが示される。
【００３６】
ステップ２２０では、ステップ２１５で要求されたバックアップ・コード（たとえば、バックアップ・コード１６１）が受信され、ステップ２２３では、処理装置がそのバックアップ・コードをインストールし、関連モジュールを操作するためのコード（たとえば、コード１５１）の少なくとも一部分をそのバックアップ・コードで置き換える。
【００３７】
ステップ２０５の実施形態では、処理装置はさらに、関連モジュールを操作するためのバックアップ・コードを有する少なくとも１つの他のプロセッサ・ノードのＩＤを維持する（たとえば、モジュール１０１の処理装置１１１は、モジュール１０１を操作するためのバックアップ・コード１６１を有するものとしてモジュール１０２の処理ノードのＩＤを維持する）。復元されるプロセッサ・ノードの処理装置（たとえば、処理装置１１１）は、復元信号に応答して、ステップ２０５で、バックアップ・コードについてモジュール１０２のプロセッサ・ノードにプロセッサ・インターフェースで要求を送信する。要求を受信する処理装置（たとえば、処理装置１１２）は、不揮発性メモリ（たとえば、不揮発性メモリ１３２）内のバックアップ・コードをルックアップし、プロセッサ・インターフェース（たとえば、プロセッサ・インターフェース１２２）により要求側プロセッサ・ノード（たとえば、モジュール１０１のプロセッサ・ノード）にバックアップ・コード（たとえば、バックアップ・コード１６１）を送信する。
【００３８】
ステップ２３０では、そのコードが復元される処理装置は、それに対して要求が行われた当該他の処理ノードの処理装置からバックアップ・コードを受信する。
【００３９】
前述の通り、処理装置（たとえば、処理装置１１１）は、関連モジュールを操作するためのコードのレベルのＩＤを維持することができ、復元信号に応答して、ステップ２３０で当該他のプロセッサ・ノードのバックアップ・コード（たとえば、バックアップ・コード１６１）のレベルのＩＤを受信したことに応答して、ステップ２３３で受信したＩＤを維持されているＩＤと比較するロジックを有する。関連モジュールを操作するためのコードの置き換えのためにそのＩＤが有効であることをその比較が示したことに応答して、そのコードが復元される処理装置（たとえば、処理装置１１１）は、ステップ２２３で、そのバックアップ・コードをインストールし、関連モジュールを操作するためのコード（たとえば、コード１５１）の少なくとも一部分をそのバックアップ・コード（たとえば、バックアップ・コード１６１）で置き換える。
【００４０】
受信したバックアップ・コードまたはそのレベルが有効ではないことをステップ２３３が示す場合、ステップ２３５は、任意の他のプロセッサ・ノードがバックアップ・コードのコピーを有するかどうかを決定する。たとえば、プロセッサ・ノード１０２の不揮発性メモリ１３２はモジュール１０３のプロセッサ・ノード用のバックアップ・コードの１つのコピー１６３を有し、プロセッサ・ノード１０４の不揮発性メモリ１３４はモジュール１０３のプロセッサ・ノード用のバックアップ・コードの他のコピー１７３を有する。他のコピーが存在する場合、ステップ２３５はステップ２０５に戻ってプロセスを反復し、バックアップ・コードの次のコピーを要求する。受信したバックアップ・コードまたはそのレベルが有効ではないことをステップ２３３が示し、バックアップ・コピーを備えた他のプロセッサ・ノードがまったく存在しないとステップ２３５が決定した場合、ステップ２３９でエラーが示される。
【００４１】
当業者であれば、図６の諸ステップの代替配置を想像することができる。加えて、ステップは除去または追加することができる。たとえば、ステップ２３３、２３５、および２３９は除去することができ、ステップ２３０はステップ２２３に直接導かれる。
【００４２】
図７は、ステップ２４０から始まり、プロセッサ・ノードがＩＤに関する要求またはバックアップ・コードに関する要求を受信するプロセスの一実施形態を表している。ステップ２４１は、その要求がＩＤのみに関するものであるかどうかを決定するものであり、そのＩＤはバックアップ・コードのタイプ（複数も可）あるいはバックアップ・コードのレベル（複数も可）またはその両方に関するものである可能性がある。そうである場合、プロセッサ・ノードの処理装置は、ステップ２４５で要求されたタイプ（複数も可）およびレベル（複数も可）の要求されたＩＤ（複数も可）をルックアップし、ステップ２４６でそのＩＤ（複数も可）を送信する。図１および図３をさらに参照すると、たとえば、プロセッサ・ノード１０２の処理装置１１２は、バックアップ・コード１６１およびバックアップ・コード１６３に関するＩＤを送信する。
【００４３】
その要求がＩＤに関するものではないと図７のステップ２４１が決定した場合、ステップ２４７は、その要求がバックアップ・コードに関するものであるかどうかを決定する。そうではない場合、他の要求が行われており、ステップ２４８に導かれる。
【００４４】
代替例として、ステップ２４１、２４７、および２４８は、どの要求が受信されたかを決定するためのルックアップを含むことができる。
【００４５】
受信した要求がバックアップ・コードに関するものであるとステップ２４７が決定した場合、プロセッサ・ノードの処理装置は、ステップ２５１で要求されたバックアップ・コードをルックアップし、ステップ２５３でそのバックアップ・コードを送信する。図１、図２、および図３をさらに参照すると、たとえば、処理装置１１１による要求に応答して、プロセッサ・ノード１０２の処理装置１１２はバックアップ・コード１６１を送信する。
【００４６】
当業者であれば、図７の諸ステップの代替配置を想像することができる。たとえば、どのプロセッサ・ノード（複数も可）がバックアップ・コードを有しているかに関する情報を要求側プロセッサ・ノードが維持している場合、ステップ２４１、２４５、および２４６は不要である。
【００４７】
図８は、他のプロセッサ・ノード用のバックアップ・コードが、たとえば、新しいレベルに更新されるプロセッサ・ノードのプロセスの一実施形態を表している。プロセッサ・ノードの処理装置はさらに、バックアップ・コードのレベルのＩＤを維持する。バックアップ・プロセスはステップ２６０から始まる。ステップ２６１は、そのプロセスがバックアップ・コードへの更新であるかどうかを決定し、そうではない場合、他のプロセスが関与していることをステップ２６３で示す。そうである場合、ステップ２６５は、更新されたバックアップコードまたはバックアップ・コードの更新された部分を不揮発性メモリにロードし、ステップ２６６で、バックアップ・コードのＩＤを新しいレベルに更新する。次に、ステップ２６７では、処理装置は、ネットワーク上のプロセッサ・インターフェースで更新の通知を送信する。この通知は、他のすべてのプロセッサ・ノードにブロードキャストするか、またはそのコードを復元するためにバックアップ・コードを使用する可能性があるプロセッサ・ノードに直接送信することができる。図１および図５をさらに参照すると、たとえば、モジュール１０４の不揮発性メモリ１３４に保管されたバックアップ・コード１７３への更新に応答して、処理装置１１４は、バックアップ・コードのレベルのそのＩＤを更新し、モジュール１０３のプロセッサ・ノードにその更新のＩＤの通知を送信する。
【００４８】
当業者であれば、図８の諸ステップの代替配置を想像することができる。たとえば、ＩＤ（複数も可）がバックアップ・コード・イメージの一部である場合、ステップ２６６を除去することができる。
【００４９】
図９および図１０は、本発明による分散システムを実現可能な自動データ・ストレージ・ライブラリ１０の一実施形態を図示している。このライブラリは、少なくとも１つの外部ホスト・システムからのコマンドに応答してデータ・ストレージ・メディア（図示せず）にアクセスするために配置されており、データ・ストレージ・メディアを保管するための複数のストレージ・シェルフ１６と、データ・ストレージ・メディアに対してデータの読取りあるいは書込みまたはその両方を行うための少なくとも１つのデータ・ストレージ・ドライブ１５と、複数のストレージ・シェルフ１６とデータ・ストレージ・ドライブ（複数も可）１５との間でデータ・ストレージ・メディアを移送するための少なくとも１つのロボット・アクセサ（robot accessor）１８とを有する。また、このライブラリは、オペレータ・パネル２３またはＷｅｂベース・インターフェースなどのその他のユーザ・インターフェースも有することができ、これによりユーザはこのライブラリと対話することができる。ライブラリ１０は、それぞれがロボット・アクセサ１８によってアクセス可能なストレージ・シェルフ１６を有する、１つまたは複数のフレーム１１〜１３を有することができる。ロボット・アクセサ１８は、１つまたは複数のデータ・ストレージ・メディアをつかむためのグリッパ・アセンブリ２０を有し、データ・ストレージ・メディアに関する識別情報を「読み取る」ためにグリッパ２０上に取り付けられたバーコード・スキャナ２２またはスマート・カード・リーダあるいは同様のシステムなどの読取りシステムを含むことができる。
【００５０】
図１１は、本発明により複数のプロセッサ・ノードを備えた複数モジュールからなる分散システムを使用する、図９および図１０のデータ・ストレージ・ライブラリ１０の一実施形態を図示している。本発明を実現可能なデータ・ストレージ・ライブラリの一例は、ＩＢＭ３５８４ウルトラスケーラブル・テープ・ライブラリである。このライブラリは、ベース・フレーム１１を有し、１つまたは複数の拡張フレーム１２をさらに有することができ、高可用性フレーム（high availability frame）１３を有することもできる。
【００５１】
ライブラリ１０のベース・フレーム１１は、１つまたは複数のデータ・ストレージ・ドライブ１５と、１つのロボット・アクセサ１８とを有する。前述の通り、ロボット・アクセサ１８は、グリッパ・アセンブリ２０を有し、データ・ストレージ・メディアに関する識別情報を「読み取る」ために読取りシステム２２を含むことができる。データ・ストレージ・ドライブ１５は、たとえば、光ディスク・ドライブまたは磁気テープ・ドライブにすることができ、データ・ストレージ・メディアは、それぞれ、光あるいは磁気テープ・メディアまたは任意のその他のリムーバブル・メディアと、関連ドライブとを有することができる。例として、データ・ストレージ・ドライブは、ＩＢＭ  ＬＴＯ  Ｕｌｔｒｉｕｍドライブなどを有することができる。さらに、ホストとライブラリの間で通信するように動作し、たとえば、ホストからコマンドを受信し、そのコマンドをライブラリに転送するが、データ・ストレージ・ドライブではない制御ポートを設けることができる。
【００５２】
拡張フレーム１２は、追加のストレージ・シェルフを有し、追加のデータ・ストレージ・ドライブ１５を有することもできる。また、高可用性フレーム１３は、追加のストレージ・シェルフとデータ・ストレージ・ドライブ１５とを有することもでき、第２のロボット・アクセサ２８を有し、このロボット・アクセサはグリッパ・アセンブリ３０を含み、バーコード・スキャナ３２またはその他の読取り装置と、オペレータ・パネル２８０またはその他のユーザ・インターフェースを含むことができる。ロボット・アクセサ１８またはそのグリッパ２０などの障害またはその他の使用不可状態が発生した場合、第２のロボット・アクセサ２８が引き継ぐことができる。
【００５３】
例示的なライブラリでは、それぞれのロボット・アクセサ１８、２８は、水平「Ｘ」方向と垂直「Ｙ」方向という少なくとも２つの方向にそのグリッパを移動して、ストレージ・シェルフ１６でデータ・ストレージ・メディアを取り出してつかむかまたは引き渡して離し、データ・ストレージ・ドライブ１５でデータ・ストレージ・メディアをロードしてアンロードする。
【００５４】
例示的なライブラリ１０は、１つまたは複数のホスト・システム４０、４１、または４２からコマンドを受信する。ホスト・サーバなどのホスト・システムは、たとえば、パス８０上で、１つまたは複数の制御ポート（図示せず）により、あるいはパス８１、８２上で１つまたは複数のデータ・ストレージ・ドライブ１５により、ライブラリと直接通信し、特定のデータ・ストレージ・メディアにアクセスし、たとえば、ストレージ・シェルフとデータ・ストレージ・ドライブとの間でそのメディアを移動するためのコマンドを提供する。このコマンドは概して、メディアあるいはそのメディアにアクセスするための論理位置またはその両方を識別する論理コマンドである。
【００５５】
例示的なライブラリは、ホストから論理コマンドを受信し、必要なアクションを決定し、そのアクションをロボット・アクセサ１８、２８の物理的移動に変換する分散制御システムによって制御される。
【００５６】
例示的なライブラリでは、分散制御システムは、それぞれが１つまたは複数のプロセッサを有する、複数のプロセッサ・ノードを有する。分散制御システムの一例では、通信プロセッサ・ノード５０は、ベース・フレーム１１内に配置することができる。この通信プロセッサ・ノードは、たとえば、ライン８０に結合された少なくとも１つの外部インターフェースを介して、直接またはドライブ１５により、ホスト・コマンドを受信するための通信リンクを提供する。通信プロセッサ・ノード５０は、データ・ストレージ・ドライブ１５と通信するための通信リンク７０をさらに提供することができる。
【００５７】
通信プロセッサ・ノード５０は、データ・ストレージ・ドライブ１５に接近して、フレーム１１内に配置することができる。さらに、分散プロセッサ・システムの一例では、１つまたは複数の追加の作業プロセッサ・ノード（work processor node）が設けられ、その作業プロセッサ・ノードは、たとえば、ロボット・アクセサ１８に配置することができ、ネットワーク６０を介して通信プロセッサ・ノード５０に結合される作業プロセッサ・ノード５２を有することができる。各作業プロセッサ・ノードは、任意の通信プロセッサ・ノードから作業プロセッサ・ノードにブロードキャストされた受信したコマンドに応答することができ、作業プロセッサ・ノードは、移動コマンドを提供して、ロボット・アクセサの動作を指図することもできる。ＸＹプロセッサ・ノード５５を設けることができ、これはロボット・アクセサ１８のＸＹシステムに配置することができる。ＸＹプロセッサ・ノード５５は、ネットワーク６０に結合され、移動コマンドに応答して、グリッパ２０を位置決めするようにＸＹシステムを操作する。
【００５８】
また、オペレータ・パネル２３と通信プロセッサ・ノード５０、作業プロセッサ・ノード５２、およびＸＹプロセッサ・ノード５５との間で通信するためのインターフェースを提供するために、オペレータ・パネル２３にオペレータ・パネル・プロセッサ・ノード５９を設けることもできる。
【００５９】
たとえば、共通バス６０を有するネットワークが設けられ、様々なプロセッサ・ノードを結合する。このネットワークは、たとえば、ドイツ連邦共和国Ｄ−９１０５８エルランゲン、アム・ヴァイヒ・ゼルガルテン２６のＣＡＮ  ｉｎ  Ａｕｔｏｍａｔｉｏｎ  ＡｓｓｏｃｉａｔｉｏｎであるＣｉＡによって定義された標準のアクセス・プロトコルおよび配線規格を有するマルチドロップ・ネットワークである市販のＣＡＮ（コントローラ・エリア・ネットワーク）バス・システムなどの堅固な配線網を有することができる。当業者に知られているように、このライブラリでは、イーサネットなどのその他の同様のネットワークまたはＲＦあるいは赤外線などのワイヤレス・ネットワーク・システムを使用することもできる。
【００６０】
通信プロセッサ・ノード５０は、ライン７０を介してベース・フレーム１１のデータ・ストレージ・ドライブ１５のそれぞれに結合され、ドライブならびにホスト・システム４０、４１、および４２と通信する。代わって、ホスト・システムは、入力８０で通信プロセッサ・ノード５０に、またはドライブ／ライブラリ・インターフェースと同様のライブラリ・インターフェースを備えたホスト・システム（複数も可）にライブラリを接続する制御ポート・デバイス（図示せず）に、直接結合することができる。当業者に知られているように、ホストならびにデータ・ストレージ・ドライブとの通信のために、様々な通信配置を使用することができる。図１１の例では、ホスト接続８０および８１はＳＣＳＩバスである。バス８２は、高速シリアル・データ・インターフェースであるファイバ・チャネル・アービトレーテッド・ループの一例を含み、ＳＣＳＩバス・システムより長い距離の伝送を可能にする。
【００６１】
データ・ストレージ・ドライブ１５は、通信プロセッサ・ノード５０に極めて接近している可能性があり、ＳＣＳＩなどの短距離通信方式またはＲＳ−４２２などのシリアル接続を使用することができる。したがって、データ・ストレージ・ドライブ１５は、ライン７０により通信プロセッサ・ノード１５に個別に結合される。
【００６２】
拡張フレーム１２を設けることができ、この拡張フレーム１２は拡張ネットワーク１５７によってネットワーク１５７、６０に結合することができる。通信プロセッサ・ノード５０と同様の他の通信プロセッサ・ノード１５５は、拡張フレーム内に配置することができ、たとえば、入力１５６でホストと通信することができ、また、たとえば、ライン１７０を介して拡張フレーム１２内のデータ・ストレージ・ドライブ１５と通信することができる。通信プロセッサ・ノード１５５はネットワーク１５７、６０に結合され、コマンドがベース・フレームの作業プロセッサ・ノード５２にリンクされるように、通信プロセッサ・ノード１５５はネットワーク１５７、６０に対するコマンド用の通信リンクを提供する。
【００６３】
通信プロセッサ・ノード１５５は、拡張フレーム１２の結合されたデータ・ストレージ・ドライブ１５に緊密に隣接して、拡張フレーム１２内に取り付けることができ、ドライブならびに接続されたホスト・システムと通信する。また、データ・ストレージ・ドライブ１５は、ライン１７０により通信プロセッサ・ノード１５５にも個別に結合される。
【００６４】
同一の通信プロセッサ・ノード１５５、ストレージ・シェルフ、データ・ストレージ・ドライブ１５、および拡張ネットワーク１５７を備えた追加の拡張フレームを設けることができ、そのそれぞれは隣接拡張フレームに結合される。
【００６５】
さらに、データ・ストレージ・ライブラリ１０は、たとえば、高可用性フレーム１３内に他のロボット・アクセサ２８をさらに有することができる。ロボット・アクセサ２８は、データ・ストレージ・メディアにアクセスするためのグリッパ３０と、ロボット・アクセサを移動するためのＸＹシステム２５５とを有することができる。高可用性フレームは、拡張フレーム１２に隣接するかまたはベース・フレーム１１に隣接することができ、ロボット・アクセサ２８は、ロボット・アクセサ１８と同じ水平機械経路上または隣接経路上で移動することができる。この例示的な制御システムは、拡張フレームのネットワーク１５７またはベース・フレームのネットワーク６０に結合されたネットワークを形成する拡張ネットワーク２００をさらに有する。他の通信プロセッサ・ノード２５０を設けることができ、これも通信プロセッサ・ノード５０と同様のものであり、入力２５６で直接、制御ポート（図示せず）により、またはデータ・ストレージ・ドライブ１５およびライン２７０により、たとえば、入力２５６でホストからコマンドを受信するために高可用性フレーム１３内に配置することができる。通信プロセッサ・ノード２５０は、高可用性フレーム・ネットワーク２００に結合され、ネットワークへの通信リンクを提供する。
【００６６】
通信プロセッサ・ノード２５０は、高可用性フレーム１３の結合されたデータ・ストレージ・ドライブ１５に緊密に隣接して取り付けることができ、ドライブならびに接続されたホスト・システムと通信する。また、データ・ストレージ・ドライブ１５は、ライン２７０により通信プロセッサ・ノード２５０にも個別に結合され、ＲＳ−４２２などのインターフェースを使用する。
【００６７】
本発明を実現するコンピュータ・プログラムは、プロセッサ・ノードのうちの１つ、たとえば、作業プロセッサ５２、または任意選択でプロセッサ５０、プロセッサ１５５、あるいはプロセッサ２５０に設けられる場合もあれば、プロセッサ・ノードのうちの複数個または全部に実現される場合もある。
【００６８】
図１２、図１３、図１４、および図１５をさらに参照すると、本発明の一実施形態によれば、モジュールのうちのいくつかまたは全部の不揮発性メモリは、関連モジュールを操作するための処理装置用のコードを保管し、ネットワーク内の他のプロセッサ・ノードの少なくとも１つの他の処理装置用のバックアップ・コードを保管し、そのバックアップ・コードは当該他のプロセッサ・ノードの関連モジュールを操作するためのものである。たとえば、通信プロセッサ・ノード５０、通信プロセッサ・ノード１５５、および通信プロセッサ・ノード２５０のうちの１つまたはそれぞれの不揮発性メモリ３３１は、関連モジュールを操作するための処理装置用のコード３５１を保管し、オペレータ・パネル・プロセッサ・ノード５９あるいはオペレータ・パネル・プロセッサ・ノード２５９またはその両方の処理装置用のバックアップ・コード３６２を保管する。オペレータ・パネル・プロセッサ・ノード５９およびオペレータ・パネル・プロセッサ・ノード２５９のうちの１つまたはそれぞれの不揮発性メモリ３３２は、関連モジュールを操作するための処理装置用のコード３５２を保管し、通信プロセッサ・ノード５０、通信プロセッサ・ノード１５５、あるいは通信プロセッサ・ノード２５０またはそれらの組合せの処理装置用のバックアップ・コード３６１を保管する。作業プロセッサ・ノード５２および作業プロセッサ・ノード２５２のうちの１つまたはそれぞれの不揮発性メモリ３３３は、関連モジュールを操作するための処理装置用のコード３５３を保管し、ＸＹプロセッサ・ノード５５あるいはＸＹプロセッサ・ノード２５５またはその両方の処理装置用のバックアップ・コード３６４を保管する。ＸＹプロセッサ・ノード５５およびＸＹプロセッサ・ノード２５５のうちの１つまたはそれぞれの不揮発性メモリ３３４は、関連モジュールを操作するための処理装置用のコード３５４を保管し、作業プロセッサ・ノード５２および作業プロセッサ・ノード２５２の処理装置用のバックアップ・コード３６３を保管する。
【００６９】
したがって、前述の通り、プロセッサ・ノードの処理装置は、要求に応答して、要求側プロセッサ・ノードに関連するモジュールを操作するためのコード３５１、３５２、３５３、３５４を復元するために使用される要求側プロセッサ・ノードに、その不揮発性メモリ３３１、３３２、３３３、３３４のバックアップ・コード３６２、３６１、３６４、３６３を提供する。
【００７０】
不揮発性メモリ３３１、３３２、３３３、３３４は、本発明のコンピュータ・プログラムなどの共通コードあるいはすべてのプロセッサ・ノードに共通する何らかの通信コードまたはその両方なども別個に保管することもできる。さらに、不揮発性メモリ３３１、３３２、３３３、３３４は、複数のプロセッサ・ノード用のバックアップ・コードを保管する場合もあれば、いかなるバックアップ・コードも保管しない場合もある。コードを復元するためのプロセス、要求に応答するためのプロセス、およびバックアップ・コードを更新するためのプロセスは前述の通りである。
【００７１】
オペレーティング・コードとバックアップ・コードは別々のものとして述べてきたが、それらは単一ユニットとして結合することができる。たとえば、図１２のコード・イメージは、通信プロセッサ・ブロック３５１とオペレータ・パネル・ブロック３６２とを有し、各ブロックによって提供される機能を有する単一ブロックに結合することができる。この例では、オペレーティング・コード３５１とバックアップ・コード３６２との間に区別はまったく存在しない。この単一結合ブロックは、通信プロセッサ・ノードまたはオペレータ・パネル・ノードをバックアップするために使用されるであろう。代わって、オペレーティング・コード３５１、３５２、３５３、３５４は、前述の通り、同様のモジュールのためのバックアップ・コードとして機能することもできる。
【００７２】
本発明の好ましい諸実施形態について詳細に例証してきたが、当業者であれば、特許請求の範囲に示した本発明の範囲を逸脱せずに、これらの実施形態に対する変更および適応が思い浮かぶ可能性があることは明らかであるはずである。
【図面の簡単な説明】
【００７３】
【図１】本発明を実現する複数モジュールおよび処理ノードからなる分散システムの一実施形態のブロック図である。
【図２】図１の処理ノードの不揮発性メモリの概略表現である。
【図３】図１の処理ノードの不揮発性メモリの概略表現である。
【図４】図１の処理ノードの不揮発性メモリの概略表現である。
【図５】図１の処理ノードの不揮発性メモリの概略表現である。
【図６】本発明のコンピュータ実現方法の諸実施形態を描写するフローチャートである。
【図７】本発明のコンピュータ実現方法の諸実施形態を描写するフローチャートである。
【図８】本発明のコンピュータ実現方法の諸実施形態を描写するフローチャートである。
【図９】本発明による分散システムの一実施形態を実現可能な自動データ・ストレージ・ライブラリの等角図である。
【図１０】本発明による分散システムの一実施形態を実現可能な自動データ・ストレージ・ライブラリの等角図である。
【図１１】本発明による分散システムを使用する、図９および図１０の自動データ・ストレージ・ライブラリの一実施形態を示すブロック図表現である。
【図１２】図１１の処理ノードのうちの４つの処理ノードの不揮発性メモリの概略表現である。
【図１３】図１１の処理ノードのうちの４つの処理ノードの不揮発性メモリの概略表現である。
【図１４】図１１の処理ノードのうちの４つの処理ノードの不揮発性メモリの概略表現である。
【図１５】図１１の処理ノードのうちの４つの処理ノードの不揮発性メモリの概略表現である。
【図１】
0004464956.tif 000002
【図２】
0004464956.tif 000003
【図３】
0004464956.tif 000004
【図４】
0004464956.tif 000005
【図５】
0004464956.tif 000006
【図６】
0004464956.tif 000007
【図７】
0004464956.tif 000008
【図８】
0004464956.tif 000009
【図９】
0004464956.tif 000010
【図１０】
0004464956.tif 000011
【図１１】
0004464956.tif 000012
【図１２】
0004464956.tif 000013
【図１３】
0004464956.tif 000014
【図１４】
0004464956.tif 000015
【図１５】
0004464956.tif 000016