(57)【要約】  クラスタ・ストレージ・アレイが、１つまたは複数のストレージ・システムに結合された複数のノードからなる。ノードは、クライアントによるアクセスのためのＬＵＮデバイスを提供して、ＬＵＮデバイスは１つまたは複数のストレージ・システム上の記憶域に対応するソース論理ユニットにマッピングを行う。ターゲット論理ユニットは、１つまたは複数のストレージ・システム上の別の記憶域に対応する。ソース論理ユニットは、複数のノードによって、ターゲット論理ユニットに並列に移行される。
2008524724.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
クライアントによるアクセスのために、１つまたは複数のストレージ・システム上の記憶域に対応するソース論理ユニットにマッピングを行うＬＵＮデバイスを提供する、該１つまたは複数のストレージ・システムと共に動作する複数のノードと、
該複数のノードのうちの２つ以上のノードに、該ソース論理ユニットを、該１つまたは複数のストレージ・システム上の別の記憶域に対応するターゲット論理ユニットに並列に移行させるための各ノード上の機構と
を備える装置。
【請求項２】
各ノード上の前記機構が、
前記ソース論理ユニットから前記ターゲット論理ユニットに移動されるデータ・チャンクを定義するための論理と、
それぞれのチャンクについて１ビットを有するビット・マスクと、
該ビット・マスクを複数ビットのスプライスに分割するための論理と、
スプライスのロックを試みるための論理と、
該スプライスのロックが成功した場合、
該スプライス内の各ビットに対応する該データ・チャンクを前記ターゲット論理ユニットにコピーすること、
該コピーされたチャンクに対応する該ビット・マスク内の該ビットをセットすること、
該スプライス内の該ビットに対応する該チャンクがすべてコピーされた場合に該スプライスをロック解除すること
を実施するための論理と
を備える、請求項１に記載の装置。
【請求項３】
前記複数のノードがクラスタ・システムを備え、前記ソース論理ユニットおよびターゲット論理ユニットが、前記対応する記憶域にアクセスするために該クラスタ・システムを使用する論理エンティティであり、前記チャンクをコピーするための前記論理が該クラスタ・システム上で動作する、請求項２に記載の装置。
【請求項４】
任意のときに前記移行工程を取り消すための論理を、前記機構内にさらに備え、取り消しのための前記論理は、
前記クラスタ内のすべてのノード間で取消し要求を調整し、
前記ソース論理ユニットおよびその対応するＬＵＮデバイスを維持し、
前記ターゲット論理ユニットおよびビット・マスクを削除する
ための論理を備える、請求項３に記載の装置。
【請求項５】
それぞれがチェックサムに関連付けられた、前記クラスタ・システム内の前記ビット・マスクの複数のコピーと、
前記複数のノードのうちのいずれかのノードに障害が生じた場合、前記ビット・マスクの有効なコピーを識別するために残存ノードによって該チェックサムをチェックするように動作する論理と
をさらに備える、請求項４に記載の装置。
【請求項６】
所与の任意のときに１つのコピーだけが更新されていることを保証するために、それらのコピーへの同時の順次更新を実施するための論理をさらに備える、請求項５に記載の装置。
【請求項７】
前記複数のノードのいずれかに障害が生じた場合、前記ソース論理ユニットが、前記ターゲット論理ユニットにうまく移行される、請求項６に記載の装置。
【請求項８】
前記移行工程中にノードによってクライアントから前記ＬＵＮデバイスへの該Ｉ／Ｏアクセスを実施する論理であって、実施するための論理は、
Ｉ／Ｏアクセスが読出しアクセスである場合は、前記ソース論理ユニットから前記クライアントにデータを戻すための論理と、
Ｉ／Ｏアクセスが、書き込まれるデータを含む書込みアクセスである場合は、
データが書き込まれる前記チャンクを確認し、
前記チャンクを含む前記スプライスをロックし、
前記スプライス内の前記ビットのすべてがセットされた場合は、書き込まれる該データを前記ソース論理ユニットおよび前記ターゲット論理ユニットに書き込み、
前記スプライス内の前記ビットのすべてよりも少ないビットがセットされた場合は、前記スプライス内の前記データ・チャンクを前記ソース論理ユニットから読み出し、書き込まれる該データを読み出された前記データ・チャンクと組み合わせ、該組み合わされたデータを前記ターゲット論理ユニットおよびソース論理ユニットに書き込み、
前記コピーされたチャンクに対応する前記ビット・マスク内の前記ビットをセットし、
前記スプライスをロック解除すること
を実施するための論理と
の工程をさらに備える、請求項７に記載の装置。
【請求項９】
１つまたは複数のストレージ・システムと共に動作する複数のノードを提供する工程と、
クライアントによるアクセスのために、該ノードによって、該１つまたは複数のストレージ・システム上の記憶域に対応するソース論理ユニットにマッピングを行うＬＵＮデバイスを提供する工程と、
該複数のノードのうちの２つ以上のノードによって、該ソース論理ユニットを、該１つまたは複数のストレージ・システム上の別の記憶域に対応するターゲット論理ユニットに並列に移行する工程と
を備える方法。
【請求項１０】
前記移行工程が、
前記ソース論理ユニットから前記ターゲット論理ユニットに移動されるデータ・チャンクを定義すること、
それぞれのチャンクについて１ビットを有するビット・マスクを提供すること、
該ビット・マスクを複数ビットのスプライスに分割すること、
前記ソース論理ユニットが前記ターゲット論理ユニットに完全に移行されるまで、前記複数のノードのうちの前記２つ以上の各ノードによって、
スプライスのロックを試みる工程と、
該スプライスのロックが成功した場合、
該スプライス内の各ビットに対応する該データ・チャンクを前記ターゲット論理ユニットにコピーする工程と、
該コピーされたチャンクに対応する該ビット・マスク内の該ビットをセットする工程と
を繰り返し実施すること、
該スプライス内の該ビットに対応する該チャンクがすべてコピーされた場合、該スプライスをロック解除すること、
を備える、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、データ移行の分野に関し、より詳細には、並列データ移行を実現する方法に関する。
【背景技術】
【０００２】
今日のコンピューティング環境では、クライアント・コンピュータは一般に、ローカルにあることもあれば、チャネルまたはネットワークを介してリモートでアクセスされることもある、１つまたは複数のストレージ・システムへのアクセスを有する。クライアントが使用できるストレージは一般に、ボリュームまたは論理ユニットとして表される。
【０００３】
あるボリュームから別のボリュームへのデータの移動、すなわち「移行」がしばしば必要である。データ移行はクライアントに透過的である。すなわちクライアントは、ある物理的記憶位置から別の記憶位置にドライブのデータが移動されているにも拘らず、同じ論理ドライブにアクセスし続ける。移行は、新しく接続されたストレージにデータが移動されなければならない場合、またはノード障害が発生した場合に、あるいはストレージ空間の使用および／または性能を最適化するために必要である。データ移行は、ボリュームがかなり大きくなる傾向があるので、時間のかかる工程である。さらに、移行を制御するノードに障害が生じた場合、データが永久に失われることがある。したがって、移行は、影響を受けるシステムに対して、性能に悪影響を及ぼし得る。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
現在存在するものよりも性能の高いデータ移行の解決策が求められており、またノード障害に強いデータ移行の解決策がさらに求められている。
【課題を解決するための手段】
【０００５】
本発明の原理によれば、複数のノードが、１つまたは複数のストレージ・システムに結合され、またはそれに統合される。ノードは、クライアントによるアクセスのためにＬＵＮデバイスを提供し、ＬＵＮデバイスは１つまたは複数のストレージ・システム上の記憶域に対応するソース論理ユニットにマッピングを行う。ターゲット論理ユニットは、１つまたは複数のストレージ・システム上の別の記憶域に対応する。ソース論理ユニットは、複数のノードのうちの２つ以上によって、ターゲット論理ユニットに並列に移行される。
【０００６】
より詳細には、移行は、以下のように遂行される。ソース論理ユニットからターゲット論理ユニットに移動されるデータのチャンクが定義される。それぞれのチャンクについて１ビットを有するビット・マスクが提供される。それぞれのビットは、最初にリセットされる。ビット・マスクは、複数のビットのスプライスに分割される。次いで、以下の工程が、複数のノードのうちの２つ以上の各ノードにより、ソース論理ユニットがターゲット論理ユニットに完全に移行されるまで実施される。ノードは、スプライスをロックしようと試みる。ノードがスプライスのロックに成功した場合は、ノードは、スプライス内の各ビットに対応するデータ・チャンクをターゲット論理ユニットにコピーする。次いで、ノードは、コピーされたチャンクに対応するビット・マスク内のビットをセットする。次いで、ノードは、スプライス内のビットに対応するすべてのチャンクがコピーされたときに、スプライスをロック解除する。スプライスをロックできなかった場合は、別のノードがそれをロックしており、スプライスの対応するチャンクを移行している。
【０００７】
本発明のさらなる態様によれば、複数のノードは、クラスタ・システムを含む。ソース論理ユニットおよびターゲット論理ユニットは、対応する記憶域にアクセスするためにクラスタ・システムを使用する論理エンティティである。チャンクをコピーする工程は、クラスタ・システムを介して動作する。
【０００８】
本発明の別の態様によれば、移行動作は、いつでも取り消すことができる。ユーザがいずれかのノードに取消しコマンドをサブミットした場合、論理ユニット、およびそれにマッピングを行うＬＵＮデバイスは維持され、ターゲット論理ユニットおよびビット・マスクは削除される。
【０００９】
本発明のさらなる態様によれば、ビット・マスクは、クラスタ・システム内のノード間で共有される。移行は、すべてのデータが宛先にコピーされたときに完了し、したがってビット・マスク内のすべてのビットがセットされる。ビット・マスクのミラリングされた１つまたは複数のコピーが、クラスタ・システム内に維持される。ミラリングされたこれらのコピーは、いつでも１つのコピーだけが修正されていることを保証するため、順次更新される。このミラリングによって、ビット・マスクの耐故障性が向上する。
【００１０】
本発明の別の態様によれば、移行の間、Ｉ／Ｏアクセスは、クライアントによって、ＬＵＮデバイスに対して実施される。Ｉ／Ｏアクセスが読出しアクセスである場合は、データは、ソース論理ユニットからクライアントに返される。Ｉ／Ｏアクセスが、書き込まれるデータを含む書込みアクセスである場合、ノードはまず、データが書き込まれるチャンクを確認する。次いで、ノードは、チャンクを含むスプライスをロックする。スプライス内のすべてのビットがセットされた場合は、データは、ソース論理ユニットおよびターゲット論理ユニットに書き込まれる。スプライス内のすべてのビットより少ないビットがセットされた場合は、スプライス内のデータ・チャンクがソース論理ユニットから読み出され、書き込まれるデータと組み合わされ、組み合わされたデータが、ソースおよびターゲット論理ユニットに書き込まれる。スプライス内のチャンクのビットがセットされる。次いで、スプライスは、ロック解除される。
【発明の効果】
【００１１】
本発明の並列移行の手法は、従来使用可能なものより高性能の、より障害に強い移行解決策を提供する。
本発明についてのより十分な理解を促すために、次に添付の図面を参照する。これらの図面は、本発明を限定するものと解釈すべきでなく、例示するためのものにすぎない。
【発明を実施するための最良の形態】
【００１２】
本発明の原理によれば、複数のノードが、１つまたは複数のストレージ・システムに結合される。ノードに結合されたクライアントは、ストレージ・システム上の記憶域に対応するＬＵＮデバイスにアクセスすることができる。所与のＬＵＮデバイスが移行される必要がある場合、その対応する論理ユニットは、複数のノードのうちの少なくとも一部によってターゲット論理ユニットに並列に移行されるので、ソース論理ユニットになる。移行が複数のノード間で並列に行われるので、移行の速度は大きく向上され、それによって、システムの性能が全体的に向上される。さらに、移行動作は、ノードの障害に拘らず進行し、それによって、移行のための耐故障性の方策が提供される。
【００１３】
図１を参照すると、本発明が組み込まれたシステム１０が示されている。２つ以上のノード１２がネットワーク１４に結合されている。ネットワーク１４は、ＩＰネットワーク、ファイバ・チャンネルＳＡＮ、他の何らかの相互接続、またはそれらの組合せである。ネットワーク１４は、ノードをストレージ・システム１６に結合する。クライアント１８は、ネットワーク２０を介して各ノード１２に結合される。ネットワーク２０は、たとえばＩＰネットワーク、ファイバ・チャンネルＳＡＮ、他の何らかの相互接続、またはその組合せである。それぞれのノード１２は、クラスタ・システム・ソフトウェア２２を実装する。クラスタ・システム・ソフトウェア２２は、とりわけ、データへのアクセスを与えるノード間でデータ整合性を維持するために必要とされる。すなわち、複数のクライアント１８が同じデータにアクセスし書き込むとき、共有されたクラスタ・システム・ソフトウェア２２によって、データの整合性が取れていること、すなわちデータがすべてのクライアントに一貫して公開されることが保証される。クラスタ・システムはさらに、メタデータを使用し、このメタデータはとりわけ、データ整合性を保証するために使用される。クラスタ・システムは、ノード障害に対してメタデータの整合性をも保証する。多くのクラスタ・システムは、多くのタイプの共有ファイル・システム・ソフトウェアのうちの１つを使用する。ネットワーク・ファイル・システム（ＮＦＳ：Ｎｅｔｗｏｒｋ  ｆｉｌｅ  ｓｙｓｔｅｍ）は、共有ファイルを所有するサーバを介して複数のクライアントによって共有されたファイルにアクセスすることを可能にする。クラスタ・ファイル・システム（ＣＦＳ：ｃｌｕｓｔｅｒｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ）は、任意のノードを介したファイルへの同時共有アクセスを可能にし、ノード障害が生じる場合には、リソースのフェイルオーバを提供する。好ましい実施形態によれば、共有ファイル・システム２２は、ＣＦＳである。ＣＦＳの例は、レッド・ハット社（Ｒｅｄ  Ｈａｔ）からのＧＦＳ（Ｇｌｏｂａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ：グローバル・ファイル・システム）、アイブリックス社（ＩＢＲＩＸ）からのフュージョン（Ｆｕｓｉｏｎ）、およびアイビーエム社（ＩＢＭ）からのＧＰＦＳ（Ｇｅｎｅｒａｌ  Ｐａｒａｌｌｅｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ：一般並列ファイル・システム）である。図１のノード１２およびストレージ・システム１６は、たとえばサーバおよびストレージ・アレイとしてなど、別々に実装されるものとして示されている。しかし、ノード１２およびストレージ・システム１６は、１システム内に組み込まれてもよい。本明細書で述べる特定の適用例は、クラスタ・ファイル・システムを使用しているが、本明細書で述べる適用例は一般に、クラスタ・システムに適用可能であることに留意されたい。
【００１４】
本発明は、クラスタ・システムの利点を活用するブロック・ストレージ・デバイスのストレージ・アレイを提供することが非常に有利であると認識したことに一部起因する。こうしたシステムに結合されたクライアントは、論理ブロック・ストレージ・デバイス、すなわち論理ユニット（ＬＵＮ：ｌｏｇｉｃａｌ  ｕｎｉｔ）への同時共有アクセスを有する。クラスタ・システムは、それらの共有ＬＵＮ上のデータの整合性を保証する。クラスタ・システム内のノード１８は、「ＬＵＮデバイス」エンティティを介してクライアントにＬＵＮを提示する。単一のＬＵＮデバイスは、ストレージ・システム内に存在する単一の論理ユニットに対応する。したがって、本発明は、クラスタ・システム内で階層化されたクラスタ・ストレージ・アレイを実装するためのソフトウェアを提供する。このソフトウェアは、「ＳＣＡＤ」と呼ばれる。したがって、クラスタ・ストレージ・アレイを実装するためのＳＣＡＤソフトウェア２４が、図１に示されている。ＳＣＡＤソフトウェア２４を実装するノードは、本明細書ではＳＣＡＤノードと呼ばれる。
【００１５】
ＳＣＡＤソフトウェア２４は、図２に、より詳細に示されている。ＳＣＡＤソフトウェア２４は、ＣＦＳ  ２２の上で実行されるように構築されたＩ／Ｏソフトウェア・スタック２６である。ＳＣＡＤスタック２６は、高い可用性、および共有データの整合性を含む、ＣＦＳ  ２２の有利な特徴を活用して、クライアントに共有ＬＵＮを公開する。
【００１６】
スタックのフロントエンド・ドライバ２８は、クライアント１８にインターフェースするためのメディア・ドライバである。ＳＣＡＤ  ＡＰＩ  ３０は、フロントエンド２８にＳＣＡＤ「デバイス」を公開する。ＳＣＡＤデバイスは、そのバッキング・ストアとして、下にあるＣＦＳによって作成されたファイルを使用する、バイト・アドレス可能な論理ユニット（「ＬＵＮデバイス」）である。ＬＵＮデバイスは好ましくは、フロントエンド・ドライバ２８によってクライアント１８にＳＣＳＩ  ＬＵＮとして提示されるが、他のストレージ・メディアが実装され得る。ＳＣＡＤ  ＡＰＩの下は、ＬＵＮデバイスのために実施される様々なタイプの動作を実装するＳＣＡＤ階層化アプリケーション３２である。１つのＳＣＡＤ階層化アプリケーション３２は、さらに述べられるＳＣＡＤ移行アプリケーション３４である。ＳＣＡＤ層の下は、ＣＦＳである。ＳＣＡＤ内の層は、ＣＦＳとＳＣＡＤアプリケーションの間に常駐するメタデータ・マネージャ（ＭＤＢ：ｍｅｔａｄａｔａ  ｍａｎａｇｅｒ）３６である。ＭＤＢは、ＣＦＳによって提供されるロック機構を活用して、整合性の取れたクラスタ全体のデータ共有、およびＳＣＡＤメタデータの整合性を可能にする。このＳＣＡＤメタデータ３８は、ＳＣＡＤ移行アプリケーションをサポートする。さらに述べるように、ＭＤＢは、メタデータ３８を可用性の高いものにするために、それが管理するメタデータ３８をミラリングする。このミラリングは、ＭＤＢ上のＳＣＡＤ層に対して透過的である。
【００１７】
ＳＣＡＤ移行アプリケーション３４について、次にさらに詳細に説明する。図３を参照すると、ソース論理ユニット４０にマッピングされたＬＵＮデバイス３９が示されている。ＳＣＡＤ移行アプリケーション３４は、「ソース」論理ユニット４０の移行、すなわち「ターゲット」論理ユニット４２への透過的なオンライン・データ移行を可能にする。ターゲット論理ユニット４２は、移行層の下のＳＣＡＤ層によって通常のＬＵＮデバイスとして扱われ、上の層から隠蔽され続ける。すべてのクライアント１８は、移行の間、移行中のデバイスへのアクセスを有し続ける。移行が完了すると、クライアント１８は、そのデータが現在はターゲット論理ユニット４２に位置すること以外は、同じＬＵＮデバイス３９になるデバイスにアクセスする。本発明によれば、複数のノード１２は、任意の論理ユニットのバックグラウンド移行サービスを実施する役割を担う。すべてのノード１２が参加することも、或いは何らかの理由でノードに障害が生じるか、または優先タスクで使用中である場合、ノード１２の一部が参加することもある。複数のノードの参加によって、移行動作を実施する際に最大の並列性がもたらされ、それによってシステム性能が最大になり、あるレベル耐故障性動作を提供する。
【００１８】
ＳＣＡＤ移行のターゲット論理ユニットは、ソース論理ユニットと同じサイズである。ターゲット論理ユニットは、作成されるとき、それに割り当てられた移行「チャンク」サイズ、たとえば３２キロバイトを有する。ソース論理ユニットは、ノード１２によって、チャンク４４毎に、ターゲット論理ユニットに並列に移動される。
【００１９】
図４に示すように、メタデータ３８は、ターゲット論理ユニットに関連するビット・マスク４６を含むことが示される。ビット・マスク４６内の各ビット４８は、ソース論理ユニット４０からターゲット論理ユニット４２に書き込まれるチャンクに対応する。ビット・マスク４６は「スプライス」５０に分割され、各スプライス５０は、ビット・マスク４６内の固定数のビット４８である。移行動作の前に、ビット４８はすべてリセットされ、「０」と示されている。それぞれのＳＣＡＤノード１２は、各スプライス５０を順次にロックし、ロックに成功した各スプライス５０に対応するデータ・チャンク４４をソース論理ユニット４０からターゲット論理ユニット４２に移行しようと試みる。スプライス５０内の各チャンク４４についてデータ移行が完了した後、その対応するビット４８がセットされる。
【００２０】
２つのタイプの移行動作、すなわち本明細書ではフォアグラウンド移行動作と呼ばれるクライアントＩ／Ｏ駆動型の移行動作、およびバックグラウンド移行動作が存在する。バックグラウンド移行動作は、ＬＵＮデバイス４０の進行中の透過的移行セッションの間に行われる。各ＳＣＡＤノード上の別個のスレッドが、ＬＵＮデバイス３９のソース論理ユニット４０からターゲット論理ユニット４２にデータを移行するために生成される。図５を参照すると、各ノードによって行われる工程が示されている。まずビット・マスク４６の始めから、各ノードは、ビット・マスク・スプライス５０をロックしようと試みる（工程５２、５４）。ロック機構は好ましくは、ＩＥＥＥ  １００３．１規格に記載されるようにｆｃｎｔｌシステム・コールを介して、ＰＯＳＩＸレコード・ロッキングに従って実装される。ロックの試みが成功した場合は（工程５６）、スプライス５０の各チャンク４４が、ソース論理ユニット４０から読み出され、次いでターゲット論理ユニット４２に書き込まれる（工程５８）。次いで、チャンク４４に対応するビット・マスク４６内のビット４８がセットされる（工程６２）。すべてのチャンク４４がコピーされた場合は（工程６２）、スプライス・ロックが解放される（工程６４）。ロックの試みが失敗した場合は（工程５６）、これらのチャンク４４は、別のＳＣＡＤノード１２がロックを取得したに違いなく、また既にデータを移行しているので、スキップされる。最後のスプライス５０に到達しなかった場合は（工程６６）、ＳＣＡＤノード１２は、戻って次のスプライス５０のロックを試みる（工程６８、工程５４）。各スプライス５０がロックされ、その対応するチャンク４４が移行されると（工程６６）、ＭＤＢビット・マスク４６全体がロックされ（工程７０）、各ビット４８の状態がチェックされる（工程７２）。（後述の）フォアグラウンド移行動作の結果として残る、未セットのいずれかのビットに対応するチャンク４４が、ソース論理ユニット４０からターゲット論理ユニット４２にコピーされ（工程７４）、ビット４８がセットされる（工程７６）。
【００２１】
各ノード上での図３のバックグラウンド移行動作の実行結果の１例が、図４に示されている。第１のスプライス５０（「スプライス１」）内のビット４８に対応するチャンク４４は、第１のノード１２によってすべて移行されており、したがって、ビット４８がセットされ、この時点でスプライスはロック解除される。第２のスプライス５０（「スプライス２」）内のビット４８に対応するチャンク４４は、第２のノードによって移行されており、したがって、これらのビット４８はセットされ、このスプライス５０もロック解除される。第３のスプライス５０（「スプライス３」）内のビット４８に対応するチャンク４４は、すべてが移行されているわけではなく、したがってビット４８の一部はセットされず、よってこのスプライス５０は、ノードによって依然としてロックされている。最後の２つのスプライス５０（「スプライスｎ−１、」、「スプライスｎ」）内のビット４８に対応するチャンク４４の移行は開始しておらず、よってこれらのビット４８は、セットされず、これらのスプライス５０は、依然としてロック解除されている。
【００２２】
本発明のさらなる態様によれば、バックグラウンド移行動作は、移行中、ユーザによっていつでも取り消すことができる。図５に示されるように、移行中、ユーザは、複数のノード１８のうちの１つに取消しコマンドを発行することができる。取消しコマンドが受信されると（工程５３）、ノード１２は、そのピア・ノード間で取消し要求を調整するためクラスタ・システムを使用する。これが確立されると（工程７７）、ソース論理ユニット４０およびその対応するＬＵＮデバイス３９は維持され（工程７８）、ターゲット論理ユニット４２、および対応するビット・マスク４６は削除される（工程７９）。移行動作は、この時点で取り消される（工程８０）。フォアグラウンド移行動作は、バックグラウンド移行動作中、ＬＵＮデバイスへのクライアントＩ／Ｏアクセスによって促される移行動作である。
【００２３】
フォアグラウンド移行動作は、図６に示されるように処理される。クライアントＩ／Ｏアクセスが読出し要求である場合（工程８１）、ＳＣＡＤ移行動作アプリケーション３４は、ソース論理ユニット４０から読み出し、データを返して（工程８２）、動作を完了する（工程８３）。クライアントＩ／Ｏアクセスが書込み要求である場合、ターゲット論理ユニット４２内の書込みの論理的ブロック・アドレスにマッピングを行うチャンク４４が計算される（工程８４）。ビット・マスク４６内のその対応するスプライス５０はロックされる（工程８６）。ビット・マスク４６メタデータは、書込みアクセスのソース・データのどれほどがターゲット論理ユニット４２内にあるか確認するためチェックされる。すべてのスプライス・ビットがセットされた場合は（工程８８）、すべてのデータが、ソース論理ユニット４０からターゲット論理ユニット４２に既に移行されている。したがって、ビット・マスク４６は、変更されないままである。書込みアクセスは、ＳＣＡＤ移行から、下位層に、ソースとターゲットの両方の論理ユニット４０および４２に渡され（工程９０）、チャンクのビットがセットされ（工程９１）、スプライス・ロックが解放される（工程９２）。スプライス・ビットの一部がセットされたかまたはそのいずれもがセットされなかった場合は（工程８８）、データのうちの一部がターゲット論理ユニットに移行されているか、またはいずれもがそれに移行されていない。この場合、対応するチャンク４４は、ソースＬＵＮデバイス４０から読み出され（工程９６）、書込みデータと組み合わされ（工程９８）、次いでソースとターゲットの両方の論理ユニット４０および４２に書き込まれる（工程９０）。対応するチャンク・ビットがセットされ（工程９１）、スプライス・ロックが解放され（工程１０２）、動作が完了される（工程９３）。
【００２４】
本発明のさらなる態様によれば、ＳＣＡＤメタデータ３８の管理において、ノード障害を考慮してデータ保全性を保証するための工程が取り入れられる。ＭＤＢ  ３６が、ノードの障害時にＳＣＡＤメタデータ３８を改竄している場合、そのメタデータ３８を未知状態におく。これは、データの保全性を保証するにはメタデータの整合性が常に維持されなければならないので許容不可能である。したがって、メタデータ３８の可用性を向上させるため、ＭＤＢ  ３６は、図７に示すように、ビット・マスク４６の複数のコピー４６ａ〜４６ｎをディスク上に維持する。それは、それらのビット・マスク・コピーへの更新を同時シーケンスで実施する。これによって、現在修正中でない古いまたは更新された任意のメタデータの少なくとも１つのコピーが常にあることが保証される。ビット・マスク４６の任意の数のコピーが使用され、ちょうど２つを使用することが好都合であり得る。さらに、チェックサム１０４が計算され、各メタデータと共に格納される。ノードに障害が生じた場合、残存するノードは、ディスク上のメタデータのすべてのコピーを走査し、各メタデータについてどのコピーが最新の有効な情報を有しているか確認することができる。残存ノードは、ＭＤＢがその同時の順次更新を行うのと同じ順序でコピーをチェックする。各コピーのチェックサム１０４が計算され、ディスク上の値と比較される。一致するチェックサム１０４を有すると検出された第１のコピーが、メタデータ３８の有効なコピーと宣言され、すべての他のコピーが、それに同期される。
【００２５】
上で説明したＳＣＡＤ移行動作およびメタデータ管理によって、複数のエラー・シナリオに直面しても、ユーザ・データとメタデータの両方の正確さが保証される。以下のエラー・シナリオについて考慮されたい。
１．ビット・マスク・ロックの取得後であるが、移行書込みの完了前に、ＳＣＡＤノードに障害が生じる。
ａ．ユーザ・データ：ソース位置が修正されていないので完全な状態のままである。
ｂ．メタデータ：ビット・マスク４６は書き込まれておらず、したがって、それは、移行動作がまだ完了されなかった事実を反映している。したがって、この場合、ソース位置は依然として、ユーザ・データの有効な位置である。
２．移行動作の実施後であるが、ビット・マスク内の対応するビットを更新する前に、ＳＣＡＤノードに障害が生じる。
ａ．ユーザ・データ：ユーザ・データが、ソースと宛先の両方の位置に安全に存在する。
ｂ．メタデータ：ビット・マスク４６内のビット４８は、移行が実施されていないことを示しており、したがって、ソース位置は、データの真の位置として参照される。既に行われたユーザ・ブロックのコピーは、無視され、移行動作が再開される場合、再び実施される必要がある。
３．移行後、ビット・マスクの更新中に、ＳＣＡＤノードに障害が生じる。
ａ．ユーザ・データ：ユーザ・データは、ソースと宛先の両方の位置に存在する。
ｂ．メタデータ：ビット・マスク４６は、上記で述べた複数のコピーおよびチェックサムにより復元可能である。残存ノードは、複数のコピーおよびチェックサムを使用して、無効のメタデータを検出し、すべてのコピーの「修理」を、有効としてソースを参照する古い値または有効として宛先を参照する新しい値にそれが一致するように実施することができる。古い値は、上記のシナリオ２をもたらし、新しい値は、以下のシナリオ４をもたらす。
４．ビット・マスク内の適切なビットをセットした後であるが、ビット・マスク・ロックの解放前に、ＳＣＡＤノードに障害が生じる。
ａ．ユーザ・データ：ユーザ・データは、ソースと宛先の両方の位置に存在する。
ｂ．メタデータ：有効である。この場合、ＳＣＡＤスタックの下のＣＦＳは、ロックをクリアする役割を担う。
【００２６】
上記の革新的な機構のすべてが組み合わさって、従来知られている解決策より高性能の、より障害に強い移行解決策が提供される。上記で説明された機構は、ボリューム移行以外の動作を実施するために使用され得ることにさらに留意されたい。たとえば、上述の機構を使用して、ボリュームまたはボリュームの一部のスナップ・コピーを実施することもできる。この場合、ソース論理ユニットはターゲット論理ユニットにコピーされ、ソース論理がその現在のＬＵＮデバイスへのそのマッピングを維持し、ターゲット論理ユニットが、それ自体のＬＵＮデバイスにマッピングされた状態になることによって、クライアント・アクセスに使用できるようになる。
【００２７】
本発明は、本明細書で述べた具体的な諸実施形態によって範囲が限定されるものではない。実際に、本明細書で述べたものに加えて、本発明の様々な修正形態が、上記説明および添付の図面から当業者に明らかになろう。したがって、そのような修正形態は、本発明の範囲内に含まれるものである。さらに、本発明の諸態様について、本明細書では特定の目的のための特定の環境内の特定の実装の文脈で述べたが、その有用性は、それらに限定されず、本発明は、任意の数の目的のための任意の数の環境で有益に実装され得ることが当業者には理解されよう。
【図面の簡単な説明】
【００２８】
【図１】本発明が実施されるシステムの概略図。
【図２】本発明の移行アプリケーションを含むＩ／Ｏスタックを表す図。
【図３】本発明による、複数のノードを介したソース論理ユニットから宛先論理ユニットへのデータ・チャンクの並列移行を表す図。
【図４】スプライスに分割されたビット・マスク・メタデータを表す図。
【図５】バックグラウンド移行動作のフローチャート。
【図６】フォアグラウンド動作のフローチャート。
【図７】ビット・マスクの複数のコピーを表す図。
【図１】
2008524724.tif 000003
【図２】
2008524724.tif 000004
【図３】
2008524724.tif 000005
【図４】
2008524724.tif 000006
【図５】
2008524724.tif 000007
【図６】
2008524724.tif 000008
【図７】
2008524724.tif 000009
【手続補正書】
【提出日】平成19年7月2日(2007.7.2)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2008524724.tif 000010
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2008524724.tif 000011
【国際調査報告】
2008524724.tif 000012
2008524724.tif 000013
2008524724.tif 000014