(57)【特許請求の範囲】
【請求項１】
コントローラの交換の方法を実行するための命令を格納した機械実行可能コードを有する機械読み取り可能媒体を含むメモリと、
前記メモリに結合されたプロセッサと
を有するネットワークストレージコンピューティングデバイスであって、
前記プロセッサは、前記機械実行可能コードを実行し、前記プロセッサに対して、
複数のストレージデバイスに関連するコントローラコンピューティングデバイスからシステム識別子データを受信させ、前記受信したシステム識別子データは、前記複数のストレージデバイスに対する所有権を示し、
前記受信したシステム識別子データと相手のシステム識別子データとを比較させ、
前記受信したシステム識別子データと前記相手のシステム識別子データとの間の比較が、前記受信したシステム識別子データが前記相手のシステム識別子データに一致しないことを示す場合、前記相手のシステム識別子データを第２のコントローラコンピューティングデバイスに送信させ、
前記相手のシステム識別子データを送信した後に、復旧手順が前記第２のコントローラコンピューティングデバイスで開始されているときを決定するために、前記第２のコントローラコンピューティングデバイスにポーリングさせ、前記復旧手順は、前記コントローラコンピューティングデバイスから前記第２のコントローラコンピューティングデバイスに前記複数のストレージデバイスの所有権を移すことを有し、
前記復旧手順が開始された後に、前記受信したシステム識別子データでコントローラの状態を更新させ、前記更新されたコントローラの状態は、前記第２のコントローラコンピューティングデバイスによる前記複数のストレージデバイスの所有権を示すように構成されるネットワークストレージコンピューティングデバイス。
【請求項２】
前記コントローラの状態の前記更新は、前記第２のコントローラコンピューティングデバイスがオンラインで利用可能な状態の間に実行され、前記第２のコントローラコンピューティングデバイスは、前記オンラインで利用可能な状態のときにコマンドを受信可能である、請求項１に記載のデバイス。
【請求項３】
機械実行可能コードを有し、方法を実行するための命令を格納した機械読み取り可能媒体であって、
前記機械実行可能コードは、少なくとも１つの機械により実行された場合、前記機械に対して、
複数のストレージデバイスに関連するコントローラコンピューティングデバイスからシステム識別子データを受信させ、前記受信したシステム識別子データは、前記複数のストレージデバイスに対する所有権を示し、
前記受信したシステム識別子データと相手のシステム識別子データとを比較させ、
前記受信したシステム識別子データと前記相手のシステム識別子データとの間の比較が、前記受信したシステム識別子データが前記相手のシステム識別子データに一致しないことを示す場合、前記相手のシステム識別子データを第２のコントローラコンピューティングデバイスに送信させ、
前記相手のシステム識別子データを送信した後に、復旧手順が前記第２のコントローラコンピューティングデバイスで開始されているときを決定するために、前記第２のコントローラコンピューティングデバイスにポーリングさせ、前記復旧手順は、前記コントローラコンピューティングデバイスから前記第２のコントローラコンピューティングデバイスに前記複数のストレージデバイスの所有権を移すことを有し、
前記復旧手順が開始された後に、前記受信したシステム識別子データでコントローラの状態を更新させ、前記更新されたコントローラの状態は、前記第２のコントローラコンピューティングデバイスによる前記複数のストレージデバイスの所有権を示す機械読み取り可能媒体。
【請求項４】
前記コントローラの状態の前記更新は、前記第２のコントローラコンピューティングデバイスがオンラインで利用可能な状態の間に実行され、前記第２のコントローラコンピューティングデバイスは、前記オンラインで利用可能な状態のときにコマンドを受信可能である、請求項３に記載の媒体。
【請求項５】
ネットワークストレージコンピューティングデバイスにより、複数のストレージデバイスに関連するコントローラコンピューティングデバイスからシステム識別子データを受信するステップであり、前記受信したシステム識別子データは、前記複数のストレージデバイスに対する所有権を示すステップと、
前記ネットワークストレージコンピューティングデバイスにより、前記受信したシステム識別子データと相手のシステム識別子データとを比較するステップと、
前記ネットワークストレージコンピューティングデバイスにより、前記受信したシステム識別子データと前記相手のシステム識別子データとの間の比較が、前記受信したシステム識別子データが前記相手のシステム識別子データに一致しないことを示す場合、前記相手のシステム識別子データを第２のコントローラコンピューティングデバイスに送信するステップと、
前記ネットワークストレージコンピューティングデバイスにより、前記相手のシステム識別子データを送信した後に、復旧手順が前記第２のコントローラコンピューティングデバイスで開始されているときを決定するために、前記第２のコントローラコンピューティングデバイスにポーリングするステップであり、前記復旧手順は、前記コントローラコンピューティングデバイスから前記第２のコントローラコンピューティングデバイスに前記複数のストレージデバイスの所有権を移すことを有するステップと、
前記ネットワークストレージコンピューティングデバイスにより、前記復旧手順が開始された後に、前記受信したシステム識別子データでコントローラの状態を更新するステップであり、前記更新されたコントローラの状態は、前記第２のコントローラコンピューティングデバイスによる前記複数のストレージデバイスの所有権を示すステップと
を有する方法。
【請求項６】
前記ネットワークストレージコンピューティングデバイスにより、前記第２のコントローラコンピューティングデバイスから相手のコントローラの状態を取得するステップであり、前記相手のコントローラの状態は、前記復旧手順が開始されていること又は前記第２のコントローラコンピューティングデバイスが前記復旧手順を待っていることを有する、請求項５に記載の方法。
【請求項７】
前記コントローラの状態の前記更新は、前記第２のコントローラコンピューティングデバイスがオンラインで利用可能な状態の間に実行され、前記第２のコントローラコンピューティングデバイスは、前記オンラインで利用可能な状態のときにコマンドを受信可能である、請求項５に記載の方法。
【請求項８】
前記ネットワークストレージコンピューティングデバイスにより、前記システム識別子データが前記相手のシステム識別子データに一致する場合、システム識別子データの少なくとも１つの問い合わせを前記第２のコントローラコンピューティングデバイスに送信するステップを更に有する、請求項５に記載の方法。
【請求項９】
前記ネットワークストレージコンピューティングデバイスにより、前記システム識別子データを前記第２のコントローラコンピューティングデバイスに送信した後に、前記第２のコントローラコンピューティングデバイスから承認を取得するステップを更に有する、請求項５に記載の方法。
【請求項１０】
前記複数のストレージデバイスは、前記コントローラコンピューティングデバイスによる前記複数のストレージデバイスの所有権を示すストレージ所有権データを有し、
前記ネットワークストレージコンピューティングデバイスにより、前記複数のストレージデバイスが前記第２のコントローラコンピューティングデバイスにより所有されることを示すように、前記複数のストレージデバイスの前記ストレージ所有権データを更新するステップであり、前記ストレージ所有権データは、前記複数のストレージデバイスのそれぞれの個々のデバイスデータ又は前記複数のストレージデバイスのアグリゲーションのRAID（Redundant  Array  of  Independent  Disks）データを有するステップを更に有する、請求項５に記載の方法。
【請求項１１】
前記プロセッサは、
前記第２のコントローラコンピューティングデバイスから相手のコントローラの状態を取得し、前記相手のコントローラの状態は、前記復旧手順が開始されていること又は前記第２のコントローラコンピューティングデバイスが前記復旧手順を待っていることを有するように、
前記メモリに格納されたプログラム命令を有するプログラム命令を実行可能であるように更に構成される、請求項１に記載のデバイス。
【請求項１２】
前記プロセッサは、
前記システム識別子データが前記相手のシステム識別子データに一致する場合、システム識別子データの少なくとも１つの問い合わせを前記第２のコントローラコンピューティングデバイスに送信するように、
前記メモリに格納されたプログラム命令を有するプログラム命令を実行可能であるように更に構成される、請求項１に記載のデバイス。
【請求項１３】
前記プロセッサは、
前記システム識別子データを前記第２のコントローラコンピューティングデバイスに送信した後に、前記第２のコントローラコンピューティングデバイスから承認を取得するように、
前記メモリに格納されたプログラム命令を有するプログラム命令を実行可能であるように更に構成される、請求項１に記載のデバイス。
【請求項１４】
前記複数のストレージデバイスは、前記コントローラコンピューティングデバイスによる前記複数のストレージデバイスの所有権を示すストレージ所有権データを有し、
前記プロセッサは、
前記複数のストレージデバイスが前記第２のコントローラコンピューティングデバイスにより所有されることを示すように、前記複数のストレージデバイスの前記ストレージ所有権データを更新し、前記ストレージ所有権データは、前記複数のストレージデバイスのそれぞれの個々のデバイスデータ又は前記複数のストレージデバイスのアグリゲーションのRAID（Redundant  Array  of  Independent  Disks）データを有するように、
前記メモリに格納されたプログラム命令を有するプログラム命令を実行可能であるように更に構成される、請求項１に記載のデバイス。
【請求項１５】
機械実行可能コードを有し、方法を実行するための命令を更に格納し、
前記機械実行可能コードは、少なくとも１つの機械により実行された場合、前記機械に対して、
前記第２のコントローラコンピューティングデバイスから相手のコントローラの状態を取得させ、前記相手のコントローラの状態は、前記復旧手順が開始されていること又は前記第２のコントローラコンピューティングデバイスが前記復旧手順を待っていることを有する、請求項３に記載の媒体。
【請求項１６】
機械実行可能コードを有し、方法を実行するための命令を更に格納し、
前記機械実行可能コードは、少なくとも１つの機械により実行された場合、前記機械に対して、
前記システム識別子データが前記相手のシステム識別子データに一致する場合、システム識別子データの少なくとも１つの問い合わせを前記第２のコントローラコンピューティングデバイスに送信させる、請求項３に記載の媒体。
【請求項１７】
機械実行可能コードを有し、方法を実行するための命令を更に格納し、
前記機械実行可能コードは、少なくとも１つの機械により実行された場合、前記機械に対して、
前記システム識別子データを前記第２のコントローラコンピューティングデバイスに送信した後に、前記第２のコントローラコンピューティングデバイスから承認を取得させる、請求項３に記載の媒体。
【請求項１８】
前記複数のストレージデバイスは、前記コントローラコンピューティングデバイスによる前記複数のストレージデバイスの所有権を示すストレージ所有権データを有し、
機械実行可能コードを有し、方法を実行するための命令を更に格納し、
前記機械実行可能コードは、少なくとも１つの機械により実行された場合、前記機械に対して、
前記複数のストレージデバイスが前記第２のコントローラコンピューティングデバイスにより所有されることを示すように、前記複数のストレージデバイスの前記ストレージ所有権データを更新させ、前記ストレージ所有権データは、前記複数のストレージデバイスのそれぞれの個々のデバイスデータ又は前記複数のストレージデバイスのアグリゲーションのRAID（Redundant  Array  of  Independent  Disks）データを有する、請求項３に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してネットワークストレージシステムに関し、特にネットワークストレージシステムにおけるコントローラの交換に関する。
【背景技術】
【０００２】
ストレージエリアネットワーク（SAN：storage  area  network）環境は、しばしばデュアルコントローラモデルを使用することにより動作する複数のストレージデバイスを含む。多くの場合、このようなストレージデバイスは、ディスクの少なくとも１つのアレイを含むことがあり、これはRAID（redundant  array  of  independent  disks）として分類され得る。コントローラがしばしば高可用性（HA：High  Availability）ペアと呼ばれるこのようなデュアルコントローラモデル構成のもとで、個々のコントローラは、ストレージデバイスの様々なボリューム又はアレイの主コントローラ又は“オーナー（owner）”としてシステムノードを動作させるように割り当てられ得る。これらのコントローラはまた、故障又はコントローラを交換する他の理由の場合に、代替又はペアのコントローラからストレージデバイスのボリュームを引き継ぐ。
【０００３】
HAペアにおけるシステムコントローラの交換又はスワップアウト（取り替え）は、一般的に周知であり、典型的には、コントローラヘッド、NVRAMカード及び／又は或る場合には全体のコントローラの交換を含む。このような手順は、しばしば“ヘッドスワップ（headswap）”と呼ばれ、HA及びRAIDが属し得る大きいSANでなくても、しばしば少なくともHAペア及びこれに割り当てられたRAIDの全体の動作のかなりの中断を生じる。例えば、ヘッドスワップに対する一般的な手法は、スワップにより影響を受けたシステムノードをメンテナンスモードにブートし、ディスク再割り当て動作を実行することを含む。これは有効であるが、影響を受けたノードにより保持されるストレージがこの処理の間に一般的に利用不可能になるという点で中断がある。
【０００４】
ヘッドスワップに対する他の手法は、あまり中断しない結果になる可能性がある。例えば、HAペアのコントローラにおけるヘッドスワップは、交換されていないシステムコントローラによる交換ノードの引き継ぎを含む。このように、影響を受けたノードにより保持されるストレージのボリューム及びデバイスは、残りのコントローラにより引き継がれ、ヘッドスワップ処理中に少なくとも利用可能になる。除去するコントローラを新たにインストールされるコントローラにスワップアウトするために、複数のステップが手動で実行される。古いコントローラのこのスワップアウトが終了した後に、手動のディスク再割り当て動作が実行され、残りのシステムコントローラから新たにインストールされたコントローラへ影響を受けたノードの復旧が提供される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
不都合なことに、このような無停止であるが主に手動の処理から生じ得る複数の問題が存在する。HAペアのシステムによるヘッドスワップの検出は、しばしば、アグリゲート（aggregate）がフォーリン（foreign）であるというRAIDアシミレーション（assimilation）検出に依存し、ディスク所有権を一致させるためのアグリゲートの所有権のクリーンアップはこのような場合にのみ生じる。或る場合には、このことはヘッドスワップ検出を信頼性の低いものにする可能性がある。更に、このような手動のヘッドスワップ手順は、ユーザによる新たなコントローラシステムの識別子の正確な入力に依存する。この手動のID登録処理中に何らかのエラーが発生した場合、ヘッドスワップは失敗し、交換ノードは完全にリブートされなければならない。更に、コントローラ及びストレージ動作からの復旧が同時に行われる場合、問題が生じる可能性があり、ディスクが動作中に再割り当てされる場合、マルチディスクのパニックが生じる可能性があり、一般的には複数のヘッドスワップに対するサポートは存在しない。
【０００６】
ヘッドスワップのための多くのネットワークストレージシステム、デバイス及び方法は、一般的には過去にうまく機能してきたが、常に改善の要求が存在する。特に、要求されるものは、前述の問題を克服する自動の無停止且つ高信頼性の方法でシステムコントローラにおけるヘッドスワップ手順を提供することができるネットワークストレージシステム及び方法である。
【課題を解決するための手段】
【０００７】
ネットワークに基づくストレージシステムにおいてより良いヘッドスワップを実現する改善したシステム及び方法を提供することが、この開示の利点である。このような改善したシステム及び方法は、HAペアのコントローラヘッド、NVRAMカード及び／又は全体のシステムコントローラを自動的、無停止且つ高信頼性の方法で交換することができる。特に、開示の実施例は、コントローラがヘッドスワップ処理を認識し、それに応じてヘッドスワップを行うように、HAペアのコントローラがブート又はヘッドスワップ処理の早期にこれらのシステム識別子を交換する更に自動的なヘッドスワップ手順を含む。更に、復旧は、交換コントローラが円滑にブートアップ及び一体化することができるように、適切なシステム識別子を反映するためにディスク及びRAID所有権を迅速に更新することを含む。
【０００８】
この開示の様々な実施例では、ネットワークに基づくストレージシステムは、複数の物理ストレージデバイスと、複数のシステムコントローラとを含んでもよい。複数の物理ストレージデバイスは、少なくともストレージデバイスの第１及び第２のアグリゲートを含み、各ストレージデバイスは、属するシステムコントローラを示すように構成されたその所有権部分を含む。複数のシステムコントローラは、それぞれと、複数のストレージデバイスと、別のホストサーバとそれぞれ通信する少なくとも第１及び第２のシステムコントローラを含んでもよく、システムコントローラのそれぞれは、ストレージデバイスのそれぞれのアグリゲートを制御し、別のホストサーバから受信したコマンドに基づいて複数のストレージデバイスに読み書きするシステムノードとして指定されるように適合されてもよい。特に、第１のシステムコントローラは、第１のシステムノードを制御し、後に第２のシステムノードを制御する別の第３のシステムコントローラで、元々は第２のシステムノードを制御する第２のシステムコントローラの自動ホットスワップ交換を実現するように構成されてもよい。第１のシステムコントローラは、第２のコントローラの自動ホットスワップ交換の間に第２のシステムノードの制御を引き継いでもよい。更に、第１のシステムコントローラはまた、自動ホットスワップ交換の間に自動的に別の第３のコントローラとシステム識別子を交換してもよい。
【０００９】
様々な他の実施例では、冗長ストレージアレイ環境で動作するように適合された第１のネットワークに基づくストレージシステムコントローラは、複数のモジュールを含んでもよい。第１のモジュールは、別のホストサーバから受信したコマンドに基づいて、第１のアグリゲートに構成された第１の複数のストレージデバイスのそれぞれへの読み書きを制御する第１のシステムノードの動作を実現するように適合されてもよい。第２のモジュールは、高可用性ペアの構成において別の第２のコントローラとの相互作用を実現するように適合されてもよく、別の第２のコントローラは、別のホストサーバから受信したコマンドに基づいて、第２のアグリゲートに構成された第２の複数のストレージデバイスのそれぞれへの読み書きを制御する第２のシステムノードの動作を実現する。第３のモジュールは、後に第２のシステムノードを動作させる別の第３のコントローラで、別の第２のコントローラの自動ホットスワップ交換を実現するように適合されてもよい。これは、第１のシステムコントローラが別の第２のシステムコントローラの自動ホットスワップ交換の間に第２のシステムノードの制御を引き継ぐことを第３のモジュールが実現することにより実現されてもよい。更に、第２又は第３のモジュールのうち少なくとも１つは、自動ホットスワップ交換の間に自動的にシステム識別子を別の第３のコントローラと交換するように更に適合されてもよい。
【００１０】
更に別の実施例では、ネットワークに基づくストレージシステムにおいてコントローラを無停止で交換する様々な方法が提供される。このような方法は、交換コントローラにおいて自動ホットスワップ交換手順の存在を検出し、元のシステムコントローラにおいて自動ホットスワップ交換手順の存在を検出し、ただし、元のシステムコントローラと交換コントローラは、コントローラの高可用性ペアとして動作するように構成され、ストレージデバイスのアグリゲートの各ストレージデバイスが交換コントローラにより所有されることを反映するように、ストレージデバイスのアグリゲートの各ストレージデバイスの第１の所有権部分を更新し、交換コントローラをブートアップし、それぞれのストレージデバイスの更新された第１の所有権部分を一致させるように、ストレージデバイスのアグリゲートの各ストレージデバイスの第２の所有権部分を更新することを含んでもよい。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施例によるHAコントローラペア及び複数のストレージデバイスを有する例示的なネットワークに基づくストレージシステムのブロック図
【図２】本発明の一実施例による複数のモジュールを有する例示的なHAコントローラのブロック図
【図３】本発明の一実施例に従って引き継ぎ及び復旧手順を受けているHAコントローラペアによるストレージデバイスの所有権の指定の例示的な処理のブロック図及びテーブル
【図４】本発明の一実施例に従ってヘッドスワップを受けているHAコントローラペアによるストレージデバイスの所有権の指定の例示的な処理のブロック図及びテーブル
【図５】本発明の一実施例に従ってヘッドスワップを受けているHAコントローラペアによるストレージデバイスの所有権の指定の例示的な別の処理のブロック図及びテーブル
【図６】本発明の一実施例に従って影響を受けたHAペアの残りのコントローラの観点からネットワークに基づくストレージシステムにおいてコントローラを交換する例示的な無停止の方法のフローチャート
【図７】本発明の一実施例に従って新たなコントローラの観点からネットワークに基づくストレージシステムにおいてコントローラを交換する例示的な無停止の方法のフローチャート
【図８】本発明の一実施例に従ってネットワークに基づくストレージシステムにおいてコントローラを交換する例示的な無停止の全体の方法のフローチャート
【発明を実施するための形態】
【００１２】
本発明の他の装置、方法、特徴及び利点は、以下の図面及び詳細な説明の考察から当業者に明らかになる。全てのこのような更なるシステム、方法、特徴及び利点は、この説明に含まれ、本発明の範囲内にあり、特許請求の範囲により保護されることを意図する。
【００１３】
含まれる図面は説明目的のものであり、ネットワークに基づくストレージシステムにおいて無停止のコントローラ交換を実現する開示された発明のデバイス、システム及び方法の可能な構成及び配置の例を提供するためのものである。これらの図面は、本発明の要旨及び範囲から逸脱することなく当業者により本発明に対して行われ得る形式及び詳細における変更を制限するものではない。
【００１４】
本発明による装置及び方法の例示的な用途がこの部分に記載される。これらの例は、単に背景を追加し、本発明の理解を役立てるために提供される。従って、これらの特定の詳細の一部又は全部なしに本発明が実施されてもよいことは、当業者に明らかである。他にも、不要に本発明を曖昧にすることを回避するため、周知の処理ステップは詳細には記載されていない。他の用途も可能であるため、以下の説明は限定として解釈されるべきではない。
【００１５】
以下の詳細な説明では、説明の一部を形成し、本発明の特定の実施例を例示により示す添付図面に参照が行われる。これらの実施例は、当業者が本発明を実施することを可能にするのに十分に詳細に記載されるが、これらの例は限定的ではないことが分かる。このため、他の実施例が使用されてもよく、本発明の要旨及び範囲を逸脱することなく変更が行われてもよい。
【００１６】
この開示は、ネットワークに基づくストレージシステムにおいて無停止のコントローラ交換を実現するデバイス、システム及び方法に関する。好ましくは、このようなデバイス、システム及び方法は、HAペアのコントローラヘッド、NVRAMカード及び／又は全体のシステムコントローラを自動的、無停止且つ高信頼性の方法で交換することができる。様々な実施例では、更に自動的なヘッドスワップ手順は、全てのコントローラがヘッドスワップ処理を認識し、それに応じて動作するように、HAペアのコントローラがブート又はヘッドスワップ処理の早期にこれらのシステム識別子を交換することを含む。更に、新たな交換コントローラへの復旧は、交換コントローラが円滑にブートアップ及び一体化することができるように、適切なシステム識別子を反映するためにディスク及びRAID所有権を迅速に更新することを含んでもよい。ここに開示された様々な例は、HAペア内のヘッドスワップの特定の側面に着目するが、ここに開示された様々な原理及び実施例は、必要に応じて、ネットワークに基づくストレージアプリケーション及びシステムの他のコントローラ構成にも適用可能であることが分かる。
【００１７】
図１を参照すると、HAコントローラペア及び複数のストレージデバイスを有する例示的なネットワークに基づくストレージシステムがブロック図形式で示されている。システム100は、複数のコントローラ120へのリンク113、115を通じた通信を実現する複数のポート112、114を有するホスト又はサーバ110を含んでもよい。コントローラ120は、ホスト100との通信を実現するポート122、124と、ストレージデバイス130とのリンク136、138を通じた通信を実現する更なるポート136、138とを有するコントローラ120A、120BのHAペアを含んでもよい。内部接続又はリンク121は、HAコントローラ120A、120のポート125A、125Bの間の通信を実現してもよい。ストレージデバイス130は、HAコントローラペア120により制御されるアグリゲート又はRAIDに構成されてもよく、複数のストレージデバイス又はボリューム130A、130Bを含んでもよい。特に、HAコントローラ120Aは、ストレージデバイス又はボリューム130Aのセットのオーナー又はコントローラとして指定され得る第１のシステムノードを動作させてもよく、HAコントローラ120Bは、ストレージデバイス又はボリューム130Bの別のセットのオーナー又はコントローラとして指定され得る第２のシステムノードを動作させてもよい。容易に分かるように、HAコントローラのコントローラ及びストレージデバイス構成に関する他の特徴及び詳細も含まれてもよい。
【００１８】
次に図２に進むと、複数のモジュールを有する例示的なHAコントローラが同様にブロック図形式で示されている。コントローラ220は、図１に前述したHAペアのようなHAペアの一部でもよい。複数のポート及びリンクは、コントローラ220を複数の他のシステムコンポーネントに結合してもよい。例えば、ポート221及び関連するリンク225は、別の相手又はペアのHAコントローラに結合してもよく、ポート222及び関連するリンク213は、別のホストに結合してもよく、ポート226及び関連するリンク227は、別のストレージアレイ又はストレージデバイスのアグリゲートに結合してもよい。HAコントローラ220内の複数のモジュール240、250、260、270は、無停止の自動ヘッドスワップ手順に関連するものを含む複数の機能を実現してもよい。それぞれのモジュール240、250、260、270は、必要に応じて、他のモジュール及び／又は様々な別のシステム構成要素と通信又は相互作用するように適合されてもよい。
【００１９】
例えば、第１のモジュール240は、別のホストサーバから受信したコマンドに基づいて第１のアグリゲート又はボリュームに構成された第１の複数のストレージデバイスのそれぞれへの読み書きを制御する第１のシステムノードの動作を実現するように適合されてもよい。第２のモジュール250は、高可用性ペアの構成において別の第２のコントローラとの相互作用を実現するように適合されてもよい。この場合も同様に、別の第２のコントローラは、別のホストサーバから受信したコマンドに基づいて、第２のアグリゲート又はボリュームに構成された第２の複数のストレージデバイスのそれぞれへの読み書きを制御する第２のシステムノードを動作させるように構成されてもよい。第３のモジュール260は、後に第２のシステムノードを動作させる別の第３のコントローラで、別の第２のコントローラの自動ホットスワップ交換を実現するように適合されてもよい。これは、第３のシステムコントローラが別の第３のコントローラとの別の第２のコントローラの自動ホットスワップ交換の間に第２のシステムノードの制御を引き継ぐことにより少なくとも部分的に実現される。更に、第２又は第３のモジュールのうち少なくとも１つは、自動ホットスワップ交換の間に自動的にシステム識別子を別の第３のコントローラと交換するように更に適合されてもよい。第４のモジュール270は、別の第３のコントローラが自動ホットスワップの間に故障した場合、自動ホットスワップ交換を中止し、ストレージユニットの第２のアグリゲート又はボリュームの全ての制御を第１のシステムコントローラに戻すことを実現するように適合されてもよい。モジュール240、250、260、270の様々な詳細及び特徴は、以下に詳細に提供される。
【００２０】
分かるように、HAコントローラペアを有する典型的なネットワークに基づくストレージシステムは、一般的に、ディスクがコントローラにより動作されるノードに割り当てられたときに、適切なコントローラの“nvram_system_ID”又は他の適切なシステム識別子をそのディスクの所有権部分又は領域に書き込むことにより動作する。ディスクのこの所有権部分又は領域は、特に如何なる数の適切な方法で呼ばれてもよいが、ここでは、説明の目的でディスクの“SANOWN”領域又は部分と呼ばれる。この処理は、割り当てられたディスクについて行われ、どのノード又はコントローラがディスクを所有しているかのマッピングを確立するのに役立てることができる。この同じ情報はまた、アグリゲートのオーナーを識別するRAIDラベルにキャッシュされる。従って、NVRAMカード、コントローラヘッド及び／又は全体のコントローラが交換（すなわち、ヘッドスワップ）されると常に、これらのディスク上の所有権も変更する。
【００２１】
コントローラのフェイルオーバ（CFO：controller  failover）、ストレージのフェイルオーバ（SFO：storage  failover）又は双方を含んでもよいヘッドスワップを行う１つの手法は、まず交換ノードをメンテナンスモードにブートすることである。これは、典型的には、新たなコントローラのNVRAM  ID又は他の識別子はディスクに格納された識別子とは異なるため、交換されたコントローラが通常の動作で有効にブートアップできない理由で行われる。交換ノード及び新たなコントローラはメンテナンスモード及びオフラインであるため、ディスク再割り当て動作は、古い交換されるコントローラにより所有されるディスクのリストを取得し、新たなコントローラの識別子を反映するようにそれぞれのSANOWNを変更するように実行されてもよい。前述のように、この処理は、影響を受けたディスクのストレージが全体の処理の間に利用不可能であるという点で中断がある。
【００２２】
このような中断は、例えばHAペアの残りのコントローラに対して、交換されている除去するコントローラにより所有されたストレージデバイス又はボリュームを引き継がせることにより、回避されてもよい。例えば、コントローラのHAペアがコントローラA及びBを含み、コントローラBは、新たなコントローラCに交換される場合、Aは、BがCにより交換されている間に、Bにより所有されたストレージの引き継ぎを実行する。BからCへのディスク再割り当ては、Aが対象のストレージを制御している間に実行され、その後、復旧がAからCに実行される。前述のように、この処理は、自分のセットの問題を生じ得る。
【００２３】
例えば、SANOWNは、ディスク所有権を扱う役目をする主モジュールでもよく、RAIDもディスク所有権をキャッシュしてもよい。所有権の不一致に対処するために、これらの２つのレイヤの間にプロトコルが展開されている。ディスクの所有権が変更すると常に、SANOWNは、そのディスクの偽の削除及び追加イベントをエミュレートし、また、通知をRAIDに送信する。RAIDは、このような通知を受信すると、適切な動作を行う。典型的には、RAIDプロトコルは、アグリゲートに属するディスクが同じノードにより所有されることを要求する。これらのディスクの１つのディスク所有権が変更すると、そのディスクはアグリゲートから除去されるべきである。或るシーケンスでは、ディスク再割り当ては、相手のディスクの所有権をBからCに変更させ、次に、アグリゲートの一部であるものも含む、ディスクの削除及び追加イベントを生成する。これは、RAIDに対して、アグリゲートがそのディスクの全てを見失うことを想定させてもよく、Aにおけるパニックを生じる可能性がある。これは、元の基本的な処理よりも大きい中断を生じる可能性がある。
【００２４】
この特定の問題は、ディスク再割り当て処理の間に通知を送信しないことにより回避され得るが、このような回避は、SANOWN及びRAID所有権の値が異なるという実質的又は完全に不一致の状態にする。異なる所有権の値が実現されているため、RAIDによる内部スキャンを起動するいずれかの動作がシステムパニックを生じるという点で、この不一致の状態は不安定になる可能性がある。更に、前述の回避はまた、ユーザが手動で新たなコントローラのシステム識別子を入力するというような、かなりの量の手動の介入を必要とする。このような処理は、不便あり、新たなシステムの誤入力によるユーザエラーの傾向もある。これは、試みられたヘッドスワップ処理の故障を生じる。何れの場合であっても、更に自動の高信頼性の無停止の更に良いヘッドスワップ手法が好ましい。
【００２５】
このような改善した手法は、所有権をRAIDレイヤにキャッシュし続けつつ、所有権の不一致を改善した方法で調整する。これらの手法は、一般的に、ヘッドスワップ処理の早期にシステム識別子を交換すること、アグリゲートがオフラインのときに所有権を更新すること、２つの相手が存在する過渡的な条件に対処するノードの機能、及び更に信頼性の高いエラー回復機構により特徴付けられ得る。特定の例では、改善したヘッドスワップ手順は、次の５つの一般的な順序のステップを含んでもよい。
・コントローラCでのヘッドスワップ検出
・コントローラAでのヘッドスワップ検出
・CFO復旧の間の所有権の更新
・CFO復旧の後のコントローラCのブートシーケンス
・SFO復旧の間の所有権の更新
この場合も同様に、これらのステップにおいて、コントローラ“A”及び“B”がHAペアを構成するシステムを反映し、システムコントローラ“B”は新たな又は交換システムコントローラ“C”により交換されており、次に、システムコントローラ“C”は新たなHAペアを形成するように“A”とペアになる。
【００２６】
コントローラCでのヘッドスワップ検出に関して、新たにインストールされたシステムコントローラCがブートアップし、コントローラCにより所有されるコントローラCに取り付けられた何らかのディスクが存在するか否かを検出するために、SANOWNを調べる。取り付けられたディスクがコントローラCにより所有されていない場合、この新たなコントローラは通常通りリブートする。しかし、改善したヘッドスワップ手順では、コントローラCは、リブートの決定を行う前に、そのHA相手のコントローラ（すなわち、コントローラA）の状態を検査する。従って、コントローラCは、相互接続を介してコントローラAの状態を読み取り、コントローラA（すなわち、そのHA相手）が引き継ぎモードにあるか否かを決定する。相互接続がダウンしている場合又はコントローラAが引き継ぎモードではない場合、コントローラCは通常通りリブートする。
【００２７】
コントローラAが引き継ぎモードにあると決定された場合、コントローラCは、“復旧待ち”状態になり、リブートしない。コントローラAからの復旧を待機しつつ、新たなコントローラCは、相互接続を介してそのシステム識別子をコントローラAに送信し続ける。コントローラCが復旧を待機している間、コントローラAは、Aにより引き継がれる前にどのコントローラがAにとってHA相手のコントローラであったかを示すシステム識別子をコントローラCに送信してもよい。コントローラAにより送信されたこのシステム識別子がコントローラCのシステム識別子に一致しない場合、コントローラCは、除去されたコントローラBの交換コントローラであり、ヘッドスワップ検出手順が進行中であることを決定することができる。
【００２８】
コントローラAでのヘッドスワップ検出に関して、コントローラAが引き継ぎモードにある間に、残りのシステムコントローラAは、相互接続リンクでそのHA相手の状態を繰り返しポーリングする。従って、コントローラAは、相互接続を介してコントローラCの状態を読み取り、コントローラC（すなわち、そのHA相手）が“復旧待ち”モードにあるか否かを決定する。コントローラCにとってのHA相手（すなわち、この場合のコントローラC）は、“復旧待ち”モード又は状態にあることが決定された場合、且つ、HA相手が元のHA相手（すなわち、古いコントローラB）の識別子に一致しないシステム識別子を送信した場合、コントローラAは、その現在のHA相手のコントローラが交換コントローラであり、ヘッドスワップ手順が進行中であることを決定することができる。
【００２９】
次に、新たなコントローラCがその“復旧待ち”モード又は状態にある間に、残りのコントローラAは、復旧手順を開始する。この復旧手順は、除去されたコントローラBにより元々は所有されており、現時点で残りのコントローラAにより引き継がれているストレージデバイス又はボリュームを受け取り、これらのストレージユニットをコントローラCに提供するように定められる。この復旧は２つの段階に分割されてもよい。まず、復旧のCFO段階は、CFOアグリゲートがコントローラAでオフラインにされ、コントローラCに復旧されることを含んでもよく、その後、コントローラCが更にブートアップする。コントローラCが完全にブートアップすると、復旧の次のSFO段階は、SFOアグリゲートがコントローラAでオフラインにされ、コントローラCに復旧されることを含んでもよい。
【００３０】
CFO復旧の間の所有権の更新に関して、コントローラAは、Bにより所有されたCFOアグリゲートをオフラインにし、復旧処理を開始する。この処理において、コントローラAは、CFOアグリゲートディスクのSANOWN所有権をBからCに変更し、コントローラA自体のHA相手のシステム識別子をCに更新する。重要なことに、コントローラAがコントローラB及びコントローラCの双方により現在所有されているディスクの混合（mixture）に対処することができるように、コントローラAは、古いコントローラBのシステム識別子の認識を保持する。このブートアップの間に、コントローラCは、ローカルのヘッドスワップ状態にあることを認識するようになり、CFOアグリゲートディスクのRAID所有権もCに更新される。
【００３１】
CFO復旧後のコントローラCのブートシーケンスに関して、コントローラCは、そのHA相手（すなわち、コントローラA）が引き継ぎモードから出た後に、コントローラCのシステム識別子を反映する所有権の値を有するディスクを見つけ続ける。コントローラCは、何も発見されなくなるまでこのようなディスクを見つけ続ける。ローカルのヘッドスワップ処理が進行中のブートアップの間に、コントローラCは、RAID所有権をそのシステム識別子に更新する。これが完了した後に、影響を受けたストレージデバイス又はボリュームは、オンラインに戻されてもよく、コントローラCのブートアップが続いてもよい。コントローラCが完全にブートアップすると、適用可能ないずれかのSFOアグリゲートディスクを受け入れる用意ができる。
【００３２】
最後に、SFO復旧の間の所有権の更新に関して、コントローラCが完全にブートアップすると、SFO復旧が起動される。これは、コントローラAがコントローラBにより前に所有されていたSFOアグリゲートを１つずつオフラインにし、SFOアグリゲートの全てのディスクのSANOWN及びRAID所有権をCに更新することを含んでもよい。コントローラAが全てのSFOアグリゲートディスクをその新たなHA相手のコントローラCに復旧した後で、Aは、その古い相手のコントローラBのシステム識別子について忘れる。コントローラAは、相手のヘッドスワップ情報をクリアし、コントローラCは、ローカルのヘッドスワップ情報をクリアし、ヘッドスワップが完了する。
【００３３】
この場合も同様に、コントローラAは、第１のアグリゲートに構成された第１の複数のストレージデバイスのそれぞれへの読み書きを制御する第１のシステムノードの動作を実現するように適合された第１のモジュールと、高可用性ペアの構成における別の第２のコントローラとの相互作用を実現するように適合された第２のモジュールとを含むような、多くの方法における典型的なHAペアのコントローラでもよい。前述のように、コントローラAの第３のモジュールは、別の第２のコントローラの自動ホットスワップ交換の間に第２のシステムノードの制御を引き継ぐことにより、別の第３のコントローラで別の第２のコントローラの自動ホットスワップ交換を実現するように適合されてもよい。
【００３４】
改善したヘッドスワップ手順の様々な利点が実現されてもよい。１つの利点は、ほとんど又は実質的に全てのヘッドスワップ手順が自動化されることを提供し、これは、手動のユーザ介入及びこのような行為から生じ得る可能性のあるエラーを低減又は除去し得る。このことは、ヘッドスワップ処理におけるHAコントローラの間のシステム識別子の早期の交換により少なくとも部分的に実現されてもよい。更に、ストレージオブジェクト又はアグリゲートが短い間にオフラインであるときにディスク所有権の変更が実行され、このことは、データ信頼性を改善しつつエラーを最小化する。他の利点は、古いコントローラシステムの識別子及び新たなコントローラシステムの識別子が永続的にシステムに記憶されることを提供し、このことは、ヘッドスワップ手順の間のいずれかのノードにおける故障が正常に扱われ得るという点で改善したエラー回復を可能にする。
【００３５】
このようなエラー回復は、ヘッドスワップ手順の間にいずれかのノードにおける故障が永続的なデータ停止を生じないことを確保し得る。このようなエラー回復のための適切なプロトコル又はルールは、例えば、コントローラCがCFO復旧の後であるがヘッドスワップが完了する前に故障することを含んでもよい。このような状況において、コントローラAは、影響を受けたノードの引き継ぎを再び実行し、SANOWN／RAID所有権の全てを一貫した状態に戻してもよい。従って、一貫した状態は、所有権をBに戻すことを含み、引き継ぎ及びデータが再びコントローラAにより提供される。ある時間の後に、コントローラC又は他の交換コントローラがインストールされ、ブートアップされる。そのときに、新規のヘッドスワップ周期が行われる。コントローラAに関して、このようなエラー回復は、例えば、コントローラCが自動ホットスワップの間に故障したときに、自動ホットスワップ交換を中断し、影響を受けたアグリゲートの全ての制御をコントローラAに戻すことを実現するように適合された第４のモジュールにより制御されてもよい。
【００３６】
他のエラー回復の例として、コントローラAは、CFO復旧の後であるがヘッドスワップが完了する前に、場合によっては故障することがある。このような状況では、新たなコントローラCが引き継いでもよい。コントローラCは、引き継ぎの一部として、唯一の相手（すなわち、コントローラA）のみに対処する必要があるため、コントローラCは、古いコントローラBにより前に所有されていた残りのアグリゲートの所有権のクリーンアップを行う（すなわち、ディスク所有権をBからCに変更する）。
【００３７】
次に図３Ａ〜３Ｃを参照すると、引き継ぎ及び復旧手順を受けているHAコントローラペアによるストレージデバイスの所有権の指定の例示的な処理が、ブロック図及びテーブル形式で示されている。図３Ａは、引き継ぎ前の構成300を示しており、A及びBは、HAペアの２つのノードであり、AがBを引き継ぐ。引き継ぎ前のBのCFO及びSFOアグリゲートの所有権は、全ての値について“B”としてテーブルに反映されている。次に、図３Ｂは、引き継ぎ後の構成302を示しており、AがBのボリュームを引き継いでいる。図示のように、SFOアグリゲートのSANOWN現在オーナー及びRAIDオーナーは、BからAに変更している。次に、図３Ｃは、AからBへの復旧中の構成304を示している。このような復旧は２段階の処理であり、必要に応じて、全てのCFOアグリゲートが一緒に復旧され、必要に応じて、SFOアグリゲートが１つずつ復旧されることが続く。この特定の構成304から分かるように、CFOアグリゲートの所有権に変更は存在しないが、CFOアグリゲートはAからBに変更される。
【００３８】
図４Ａ〜４Ｃは、ヘッドスワップを受けているHAコントローラペアによるストレージデバイスの所有権の指定の例示的な処理をブロック図及びテーブル形式で示している。容易に分かるように、図４Ａ〜４Ｃに示す図及びフォーマットは、除去するコントローラBが新たなコントローラCによりヘッドスワップされる通常の処理を反映する。図４Ａは、Bに属するディスクの所有権を新たなコントローラCに変更するためにコントローラAで“ディスク再割り当て”を実行することを含む構成400を示している。図４Ｂは、図４Ａによりディスクが再割り当てされた後に復旧を発行することを含む構成402を示している。特に、ブートアップしている新たなコントローラは、SANOWN及びRAID所有権の間の不一致を検出してもよく、SANOWN所有権を一致させるようにRAID所有権を更新してもよい。従って、コントローラCでの所有権の変更は、RAID所有権の値がBからCに更新されることを含む。図４Ｃは、引き継ぎコントローラがSANOWN及びRAID所有権を相互に一致させるように更新するSFO復旧の構成404を示している。この場合、SFO所有権の値はAからCに変更される。
【００３９】
次に図５Ａ〜５Ｂに続き、別の実施例によるヘッドスワップを受けているHAコントローラペアによるストレージデバイスの所有権の指定の例示的な別の処理が同様にブロック図及びテーブル形式で示されている。５つの一般的なステップ及びその詳細における前述の改善したヘッドスワップ処理により、図５Ａは、改善した復旧手順を含む構成500を提供する。この手順において、SANOWN及びRAID所有権は復旧中に変更される。図示のように、コントローラAでの復旧中に、SANDOWNホーム及び現在オーナーはBからCに変更される。また、コントローラCでのブートアップ中に、RAIDオーナーはBからCに変更される。図５Ｂは、コントローラCが完全にブートアップした後にSFOアグリゲートが復旧する構成502を示している。図示のように、SANOWN及びRAID所有権は、全てCを反映するように変更される。
【００４０】
この場合も同様に、前述の改善したヘッドスワップ手順は、無停止であり、自動的であり、信頼性が高い。これらの全ては、HAペアのコントローラの間のシステム識別子の早期の交換、HAペアのコントローラがヘッドスワップが進行中であることを認識できること、及び識別子の不一致又は他の問題が生じたときにコントローラを単にリブートすることの拒否に少なくとも部分的によるものである。
【００４１】
次に図６〜８を参照すると、前述の改善した処理及び特徴に従ってヘッドスワップを実行する様々な方法が提供される。まず、図６は、影響を受けたHAペアの残りのコントローラの観点からネットワークに基づくストレージシステムにおいてコントローラを交換する例示的な無停止の方法のフローチャートを提供する。特に、このような方法は、前述に詳細に提供される様々なネットワーク、システム、コントローラ、ストレージデバイス及びこれらの様々な特徴のいずれかの使用を含んでもよい。更に、このフローチャートに示す各方法のステップは必ずしも必要であるとは限らず、ここに示されない更なるステップが含まれてもよいことが容易に分かる。更に、或る実施例では、ステップの順序は、必要に応じて再配置されてもよい。例えば、或る場合には、ステップ610は、ステップ612の後に行われてもよく、ステップ612と同時に行われてもよい。
【００４２】
開始ステップ600で始まり、処理ステップ602において、HAペアの第１のコントローラは、引き継ぎモードで動作する。次の判断ステップ604において、第１のコントローラが属するHAペアからの相手のコントローラからシステム識別子が受信されたか否かの調査が行われる。そうでない場合、方法は処理ステップ602に戻り、第１のコントローラは引き継ぎモードで動作し続ける。しかし、ステップ604においてペアのコントローラからシステム識別子が受信された場合、方法は判断ステップ606に進み、受信したシステム識別子が第１のシステムコントローラのファイル上に既にある相手のシステム識別子と一致するか否かの調査が行われる。システム識別子が一致した場合、方法は処理ステップ608に進み、ヘッドスワップが行われていないことが決定され、古いHAペアのコントローラへの通常の復旧手順が行われる。次に、方法はステップ608から終了ステップ624に進む。
【００４３】
しかし、受信したシステム識別子が判断ステップ606においてファイル上に既にあるものと一致しない場合、方法は処理ステップ610に進み、ヘッドスワップ処理又はモードが進行中であることが認識又は“検出”される。処理ステップ612において、古い交換されたコントローラからのシステム識別子は、新たなコントローラに送信され、その後、判断ステップ614において、復旧手順が開始されたか否かについて調査が行われる。そうでない場合、復旧が実際に開始されるまで、方法はステップ614にループバックする。復旧が開始された後に、方法はステップ616に進み、新たなコントローラのシステム識別子が第１のコントローラの相手のメールボックス又は同様のエントリに書き込まれる。その後、処理ステップ618において、第１のコントローラは、新たなシステム識別子の影響を受けたディスク所有権を更新する。第１のコントローラの状態は、古い交換されたコントローラにより前に所有されたディスク又はボリュームの復旧を受けたものとして、新たなコントローラの存在及びその状態を反映するように適切に更新される。処理ステップ622においてヘッドスワップモードを出て、HAコントローラペアの通常の動作及びそれぞれ制御されるボリュームが行われる。方法は終了ステップ624で終了する。
【００４４】
次に、図７は、新たなコントローラの観点からネットワークに基づくストレージシステムにおいてコントローラを交換する例示的な無停止の方法のフローチャートを提供する。この場合も同様に、この方法は、前述に詳細に提供される様々なネットワーク、システム、コントローラ、ストレージデバイス及びこれらの様々な特徴のいずれかの使用を含んでもよい。示される各ステップは必ずしも必要であるとは限らず、更なるステップが含まれてもよく、或る実施例ではステップの順序が必要に応じて再配置されてもよいことが容易に分かる。開始ステップ700で始まり、処理ステップ702において、新たなコントローラ又は交換コントローラは、その新たな位置でブートアップし始める。ブート処理の早期に、判断ステップ704において、実際に新たなコントローラにより所有されている新たなコントローラに取り付けられた何らかのディスクが存在するか否かの調査が行われる。そうである場合、方法は処理ステップ706に進み、RAIDアシミレーション及び通常のブート処理が行われる。この時点で引き継ぎ又は普及は生じず、方法はステップ706から終了ステップ730に進む。
【００４５】
判断ステップ704においてコントローラにより所有されるディスクが実際に存在しない場合、方法は判断ステップ708に進み、HAペアの相手のコントローラが引き継ぎモードであるか否かについて調査が行われる。そうでない場合、方法は処理ステップ702に戻り、ステップ702〜704が繰り返される。判断ステップ708において相手のコントローラが引き継ぎモードであると決定された場合、方法は処理ステップ710に進み、新たなコントローラは、そのシステム識別子をペアの相手のコントローラに送信する。ステップ712において、システム識別子がそれに応じて相手のコントローラから返信されたか否かの調査が行われる。そうでない場合、システム識別子が相手のコントローラから実際に返信されるまで、方法は処理ステップ710にループバックする。この場合も同様に、相手のコントローラからのこのシステム識別子は、引き継ぎモードが生じる前に、現在の引き継ぎモードにある相手のコントローラとペアになっていたコントローラのシステム識別子を表す。
【００４６】
システム識別子がステップ712において受信された後に、以下の判断ステップ714において、受信したシステム識別子がブートアップ中のコントローラのシステム識別子と一致するか否かの調査が行われる。システム識別子が一致する場合、ブートアップ中のコントローラは、それが元の相手のコントローラであり、ヘッドスワップは行われていないことを認識し、方法は処理ステップ702に戻る。しかし、システム識別子が一致しない場合、方法は処理ステップ716に進み、ヘッドスワップが進行中であることが認識又は“検出”される。そして復旧が待機される。次の処理ステップ718において、復旧処理が開始され、方法は処理ステップ720に進み、全てのディスクが発見される。次の処理ステップ722において、アグリゲートの所有権がディスク所有権に一致するように変更され、その後、処理ステップ724においてヘッドスワップが完了し、ヘッドスワップモードを出る。方法は終了ステップ726で終了する。
【００４７】
最後に図８を参照すると、ネットワークに基づくストレージシステムにおいてコントローラを交換する例示的な無停止の全体の方法のフローチャートが提供される。特に、このような方法は、前述の様々なネットワークに基づくストレージシステムコントローラ又は他のコンポーネントの使用又は動作を含んでもよい。この場合にも同様に、このフローチャートに示す各方法のステップは必ずしも必要であるとは限らず、ここに示されない更なるステップが含まれてもよいことが容易に分かる。更に、ステップの正確な順序は様々な用途に応じて変更されてもよい。例えば、ステップ802及び804は逆になってもよく、同時に実行されてもよい。
【００４８】
開始ステップ800で始まり、処理ステップ802において、ヘッドスワップ又はシステムコントローラのホットスワップの存在が新たに導入された（例えば、交換）HAペアのコントローラで検出される。処理ステップ804において、ヘッドスワップ又はホットスワップの存在は、元のHAペアのコントローラでも検出され、その後、処理ステップ806において、元のコントローラは、新たに導入された相手のコントローラにその状態をポーリングする。以下の処理ステップ808において、元のコントローラは、復旧待ちとして新たな相手のコントローラの状態を検出し、その後、処理ステップ810において、元のコントローラは、新たな相手のコントローラのシステム識別子を受信する。
【００４９】
次の処理ステップ812において、ストレージデバイスのアグリゲートにおける各ストレージデバイスの第１の所有権部分は、アグリゲートの各ストレージデバイスが新たに導入されたコントローラ又は交換コントローラにより現在所有されていることを反映するように更新される。処理ステップ814において、新たに導入されたコントローラはブートアップされ、その後、処理ステップ816において、ストレージデバイスのそれぞれの第２の所有権部分が、新たに導入されたコントローラの所有権を反映するように更新される。方法は終了ステップ818で終了するように進む。示されていない更なるステップが含まれてもよい。例えば、元のコントローラが古い交換されたコントローラの識別子を新たに導入されたコントローラに送信すること及び／又はヘッドスワップ又は復旧手順を開始する前に受信した識別子が格納された識別子に一致するか否かを決定することが含まれてもよい。他の方法のステップは、必要に応じて、図６及び７に示す方法からの前述のステップの１つ以上を含んでもよい。
【００５０】
前述の発明は、明瞭性及び理解の目的で例示として詳細に記載されているが、前述の発明は、本発明の要旨又は基本的特徴を逸脱することなく、複数の他の特定の変形例及び実施例に具現されてもよいことが分かる。様々な変更及び変形が行われてもよく、本発明は、前述の詳細により限定されず、むしろ特許請求の範囲により規定されることが分かる。
【図１】
0006001773.tif 000002
【図２】
0006001773.tif 000003
【図３】
0006001773.tif 000004
【図４】
0006001773.tif 000005
【図５】
0006001773.tif 000006
【図６】
0006001773.tif 000007