(57)【特許請求の範囲】
【請求項１】
プロセッサにより不揮発性ストレージ（ＮＶＳ）データを暗号化して少なくとも１つの共用ストレージ・デバイスに書き込むことによって当該ＮＶＳデータを保護する方法であって、
電力損失事象を検知することに応じて、第１のバッファ・モジュールを使用して前記ＮＶＳデータの第１の部分を暗号化するステップと、
しかる後、第２のバッファ・モジュールを使用して前記ＮＶＳデータの第２の部分を暗号化しながら前記ＮＶＳデータの前記第１の部分を少なくとも１つの共用ストレージ・デバイスに転送し、しかる後、前記ＮＶＳデータの前記第２の部分を前記少なくとも１つの共用ストレージ・デバイスに転送するステップと、
を含み、前記ＮＶＳデータの前記第１の部分を転送するステップおよび前記ＮＶＳデータの前記第２の部分を暗号化するステップが重畳する、前記方法。
【請求項２】
前記第１のバッファ・モジュールを使用して前記ＮＶＳデータの第３の部分を暗号化するステップ
を更に含み、
前記ＮＶＳデータの前記第２の部分を転送するステップおよび前記ＮＶＳデータの前記第３の部分を暗号化するステップが重畳する、
請求項１に記載の方法。
【請求項３】
前記ＮＶＳデータのすべての部分が処理されてしまうまで、前記ＮＶＳデータの更なる部分の更なる暗号化および前記ＮＶＳデータの更なる部分の更なる転送を行うステップ
を更に含む、請求項１又は２に記載の方法。
【請求項４】
前記第１のバッファ・モジュールを使用して前記ＮＶＳデータの前記第１の部分を暗号化するステップおよび前記ＮＶＳデータの前記第１の部分を前記少なくとも１つの共用ストレージ・デバイスに転送するステップはファイア・ホース・ダンプ（ＦＨＤ）オペレーションの一部分を含む、
請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記ＮＶＳデータの前記第１の部分を少なくとも１つの共用ストレージ・デバイスに転送するステップの後に前記第１のバッファ・モジュールをクリアするステップ
を更に含む、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記第１のバッファ・モジュールをクリアするステップの後にＮＶＳアドレス・ポインタをインクリメントするステップ
を更に含む、請求項５に記載の方法。
【請求項７】
プロセッサにより不揮発性ストレージ（ＮＶＳ）データを暗号化して少なくとも１つの共用ストレージ・デバイスに書き込むことによって当該ＮＶＳデータを保護するためのシステムであって、
前記プロセッサによって並行して動作し得る第１および第２のバッファ・モジュールを含み、
電力損失事象を検知することに応じて、前記第１のバッファ・モジュールを使用して前記ＮＶＳデータの第１の部分を暗号化するように適応し、
しかる後、前記第２のバッファ・モジュールを使用して記ＮＶＳデータの第２の部分を暗号化しながら前記ＮＶＳデータの前記第１の部分を少なくとも１つの共用ストレージ・デバイスに転送し、しかる後、前記ＮＶＳデータの前記第２の部分を前記少なくとも１つの共用ストレージ・デバイスに転送するように適応し、
前記ＮＶＳデータの前記第１の部分の転送および前記ＮＶＳデータの前記第２の部分の暗号化が重畳するように適応する、
前記システム。
【請求項８】
前記第１のバッファ・モジュールを使用して前記ＮＶＳデータの第３の部分を暗号化するように更に適応し、
前記ＮＶＳデータの前記第２の部分の転送および前記ＮＶＳデータの前記第３の部分の暗号化は重畳するように更に適応する、
請求項７に記載のシステム。
【請求項９】
前記ＮＶＳデータのすべての部分が処理されてしまうまで、前記ＮＶＳデータの更なる部分の更なる暗号化および前記ＮＶＳデータの更なる部分の更なる転送を行うように更に適応する、
請求項７又は８に記載のシステム。
【請求項１０】
前記第１のバッファ・モジュールを使用して前記ＮＶＳデータの前記第１の部分を暗号化する動作および前記ＮＶＳデータの前記第１の部分を前記少なくとも１つの共用ストレージ・デバイスに転送する動作はファイア・ホース・ダンプ（ＦＨＤ）オペレーションの一部分を含む、
請求項７〜９のいずれか一項に記載のシステム。
【請求項１１】
前記ＮＶＳデータの前記第１の部分を前記少なくとも１つの共用ストレージ・デバイスに転送した後に前記第１のバッファ・モジュールをクリアするように更に適応する、
請求項７〜１０のいずれか一項に記載のシステム。
【請求項１２】
前記第１のバッファ・モジュールをクリアした後にＮＶＳアドレス・ポインタをインクリメントするように更に適応する、
請求項１１に記載のシステム。
【請求項１３】
プロセッサにより不揮発性ストレージ（ＮＶＳ）データを暗号化して少なくとも１つの共用ストレージ・デバイスに書き込むことによって当該ＮＶＳデータを保護するコンピュータ・プログラムであって、プロセッサに、請求項１〜６のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コンピュータに関し、詳しく云えば、メモリ・デバイスとのコミュニケーションにおいて不揮発性ストレージ（ＮＶＳ）のデータをプロセッサにより保護するための方法、システム、およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ディスクのようなストレージ・デバイスは今日の社会では極一般的なものである。コントローラのようなデバイスは、読み取りおよび書き込みリクエストに応答してストレージ・デバイスに対するアクセスを制御する。ストレージ・コントローラは、予備およびバックアップの目的でデータを種々のストレージ・デバイスにミラーリングし、データを種々のストレージ・デバイスに散在させる。ストレージ・コントローラは、いくつかの新磁気ディスク制御機構（ＲＡＩＤ）セキュリティ・レベルの１つに従ってデータを格納し得る。一般に、ＲＡＩＤレベルが高くなるほどデータ・ストレージの冗長度は大きくなる。共用ストレージ・デバイスは、記憶容量を増加させて、回復およびバックアップ・サービスを提供するために使用され得る。
【０００３】
IBMEnterprise Storage Server（ESS）のようなストレージ・サーバも極一般的ものになっている（IBMおよびEnterpriseStorage Serverは、米国のインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である）。１つのIBM ESSストレージ・サーバは、プロセッサおよび関連のハードウェアから成る２個のクラスタを含む。一般に、各クラスタには複数のプロセッサが存在する。各ストレージ・コントローラは、ＲＡＩＤアレイにおけるグループ化された複数のストレージ・デバイスを制御する。或る環境では、ファイバ・チャネル・ホスト・バス・アダプタ（ＨＢＡ）を備えたクライアントがファイバ・チャネルを介してスイッチに結合される。そのスイッチもファイバ・チャネルＨＢＡによってストレージ・サーバに結合される。１つのクライアント当たり複数のストレージ・サーバが存在し得る。各クライアントは、ＲＡＩＤアレイにおいてグループ化されたストレージ・デバイス上の物理ロケーションにマップされたストレージ「ボリューム」を割り当てられ、または割り付けられる。従って、クライアントは、それらの割り振られたボリューム内のデータに関して、ストレージ・サーバにデータ・アクセス・リクエスト（読み取りおよび書き込み）を行い、ストレージ・サーバは、そのリクエストを満たすためにキャッシュ・ストレージにおけるマップされたロケーションをアクセスするか、或いは、データがキャッシュ・ストレージに存在しない場合にはディスクからそのデータをアクセスする。
【０００４】
或るIBM ESSは、２つのクラスタを有し且つ１つのクラスタ当たり４つのプロセッサを有するストレージ・コントローラを含む。各クラスタは、クラスタ内のすべてのプロセッサによって共用されるそれ自身のキャッシュ（半導体）メモリを有する。各クラスタは、更に、クラスタ内のすべてのプロセッサによって共有されるバッテリ・バックアップの不揮発性ストレージ（ＮＶＳ）を有する。更に、各クラスタは、それ自身のキャッシュ・ストレージを有する。キャッシュ・メモリは、メモリからの読み取りデータ・アクセス・リクエストをサービスするべく、および修正されたデータのバッファリングを行うべく、外部ストレージからインページされたデータへの迅速なアクセスのために使用される。すべての書き込みリクエストは、所与のボリュームを管理するクラスタにおけるキャッシュに書き込まれ、他のクラスタ上の不揮発性メモリにおいてミラーリングされる。
【０００５】
ESSのようなストレージ・システムは、キャッシュおよびＮＶＳの両方への書き込みデータの転送の完了に続いて且つ書き込みデータがディスクに書き込まれる前に、接続されたデータ・ホストにコミット・メッセージを送る。そのコミット・メッセージが受け取られた後、ホストは、最早この書き込みデータのコピーを保存する必要がない。或るシステムでは、電力損失の場合、ＮＶＳはデータを保持するように機能せず、むしろ、バッテリ・バックアップ・コンポーネントの助けによりハード・ディスク上にデータをデステージすることによって不揮発性を得ている。
【０００６】
電力損失時にＮＶＳがデータを保持しないでディスクへのデータのデステージングを促すという態様では、バックアップ・バッテリ・システムの容量を最小化することを可能にするためにＮＶＳデータをできるだけ速く書き込むことが望ましい。そのようなデータの暗号化は、データの盗難に対して更なるセキュリティを施す。電力損失事象の場合、ＮＶＳデータをディスク（共用ストレージ・デバイスのような）に書き込むことに関する解決方法は存在するが、迅速な方法でデータ転送を完了させながらそのようなデータに暗号化機能を提供するための解決方法は存在しない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、電力損失事象に続くメモリ・デバイスとのコミュニケーションにおいてプロセッサにより不揮発性ストレージ（ＮＶＳ）のデータを保護するための方法を提供することにある。
【課題を解決するための手段】
【０００８】
ＮＶＳデータの第１の部分が第１のバッファ・モジュール内に暗号化される。第１のデータ・バッファ内にデータを暗号化した後、第１のデータ・バッファが共用ストレージ・デバイスに転送され、それと同時に、ＮＶＳデータの第２の部分が第２のバッファ・モジュール内に暗号化される。望ましくは、このプロセスは、その後、すべてのＮＶＳデータが一方のバッファ・モジュールまたは他方のバッファ・モジュール内に暗号化されてディスクに転送されるまで、第１および第２のバッファ・モジュールの間で交互に繰り返す。ＮＶＳデータの第１の部分が第１のバッファ・モジュール内に暗号化された後、一方のバッファに対する暗号化オペレーションが他方のバッファによる共用ディスクへの転送に重畳する。換言すれば、一方のバッファからの暗号化オペレーションのすべてまたは一部分が、他方のバッファによる共用ディスクへの転送のすべてまたは一部分と同時に（即ち、同じ時間に）実行される。
【０００９】
本発明の更なる態様は、電力損失事象に続くメモリ・デバイスとコミュニケーションにおいてプロセッサにより不揮発性ストレージ（ＮＶＳ）のデータを保護するためのシステムを提供する。第１のバッファ・モジュールおよび第２のバッファ・モジュールが提供される。ＮＶＳデータの第１の部分が第１のバッファ・モジュール内に暗号化される。第１のデータ・バッファ内にデータを暗号化することに続いて、第１のデータ・バッファが共用ストレージ・デバイスに転送され、それと同時に、ＮＶＳデータの第２の部分が第２のバッファ・モジュール内に暗号化される。望ましくは、このプロセスは、その後、すべてのＮＶＳデータが一方または他方のバッファ・モジュール内に暗号化されてディスクに転送されるまで、第１および第２のバッファ・モジュールの間で交互に繰り返す。ＮＶＳデータの第１の部分が第１のバッファ・モジュール内に暗号化された後、一方のバッファに対する暗号化オペレーションが他方のバッファによる共用ディスクへの転送に重畳する。
【００１０】
本発明の更なる態様は、メモリ・デバイスとのコミュニケーションにおいてプロセッサにより不揮発性ストレージ（ＮＶＳ）のデータを保護するためのコンピュータ・プログラムを提供する。そのコンピュータ・プログラムは、コンピュータ可読プログラム・コード部分を格納したコンピュータ可読ストレージ媒体に含まれる。コンピュータ可読プログラム・コード部分は下記事項を遂行するためのいくつかの実行可能な部分を含む。ＮＶＳデータの第１の部分が第１のバッファ・モジュール内に暗号化される。第１のデータ・バッファ内にデータを暗号化することに続いて、第１のデータ・バッファが共用ストレージ・デバイスに転送され、それと同時に、ＮＶＳデータの第２の部分が第２のバッファ・モジュール内に暗号化される。望ましくは、このプロセスは、その後、すべてのＮＶＳデータが一方または他方のバッファ・モジュール内に暗号化されてディスクに転送されるまで、第１および第２のバッファ・モジュールの間で交互に繰り返す。ＮＶＳデータの第１の部分が第１のバッファ・モジュール内に暗号化された後、一方のバッファに対する暗号化するオペレーションが他方のバッファによる共用ディスクへの転送と重畳する。
【図面の簡単な説明】
【００１１】
【図１】以下の説明および「特許請求の範囲」の記載の要旨を具現化し得るストレージ・サーバおよびストレージ管理サーバを含む分散コンピュータ・システムのブロック図である。
【図２】図１におけるストレージ・サーバの１つのブロック図である。
【図３】電力損失事象に従ってＮＶＳデータを保護する例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１２】
図示の実施例は、電力損失事象に従って更なるセキュリティを提供するためにデータを暗号化することおよび共用ストレージにデータを書き込むことを含む、ＮＶＳデータを保護するための機構を提供する。以下の説明および「特許請求の範囲」の記載を通して、「電力損失事象（powerloss event）」という用語は、当業者には明らかなように、電力の変動を含む多くの状況を指し得る。従って、本明細書で使用されるような電力損失事象は、ＮＶＳデータが共用ストレージ・デバイスに書き込まれることが望ましい任意の状況を指し得る。更に、本明細書で使用されるようなＮＶＳデータは、ディスクに限定されない任意の顧客データを指し得る。
【００１３】
明らかなように、図示の実施例は、ＮＶＳデータの一部分をストレージ・デバイスに並行して同時に書き込むことおよび暗号化することによって、電力損失事象に応じてＮＶＳデータを保護する。即ち、ＮＶＳデータの１つの部分が暗号化されている間、前に暗号化された更なる部分がストレージ・デバイスに書き込まれる。その結果、ＮＶＳデータをストレージ・デバイスに書き込むために通常必要とする時間とほぼ同じ時間で、ＮＶＳデータが更なる安全のために暗号化される。
【００１４】
１つの実施例では、ＮＶＳにおけるデータを暗号化して共用ストレージ・デバイスに書き込むために２つのバッファ・モジュールが並列に構成される。その２つのバッファ（本明細書ではバッファＡおよびバッファＢと呼ばれる）は、データを暗号化して書き込むために交互に使用される。バッファＡがデータを暗号化している間、バッファＢはストレージ・デバイスへの暗号化されたデータの書き込みにビジーである。バッファＢがストレージ・デバイスへの書き込みを終ると、バッファＡは、それが保持している暗号化されたデータの書き込みを開始し、バッファＢはＮＶＳデータの次のブロックを暗号化し始める。
【００１５】
どの時点においても、一方のバッファがデータを暗号化しており、他方のバッファがディスクに書き込みをしている。従って、バッファＡおよびバッファＢは、データを暗号化することおよびストレージ・デバイスに書き込むことを並行して行う。並行して働くことによって、ＮＶＳデータはストレージ・デバイスに書き込まれるのみならず、同じ量の時間で暗号化される。並行して作業を行うためにバッファを使用することは、１つ又は複数のストレージ・コントローラへの電力の損失のような電力損失事象の間、暗号化されたデータをストレージ・デバイスに書き込むことを可能にする。
【００１６】
図示の実施例は、顧客ディスクに固定化されない顧客データを処理するすべての実施態様に適用可能である。ファイア・ホース・ダンプ（ＦＨＤ）または同様の方法によって保存される如何なるデータも本発明の実施例のうちの１つまたは複数個を使用して処理され得る。
【００１７】
図１は、本発明の実施例の機構を具現化し得るミラーリングされたデータ・ストレージ・システム・アーキテクチャの部分の一例を提供する。しかし、図１が単に例示的なものであり、本実施例の例示的な側面を具現化し得る特定のアーキテクチャに関して如何なる限定も明示又は示唆することを意図するものではないことは明らかであろう。図１に示されたアーキテクチャに対する多くの修正が、以下の説明および「特許請求の範囲」の主題の技術的範囲および主旨から逸脱することなく行なわれ得る。
【００１８】
図１は、本発明を含む全体的に１０として指定された例示的な分散コンピュータ・システムを示す。システム１０は、クラスタ（各クラスタにおけるＣＰＵ編成に関しては下記の図２を参照されたい）当たりＣＰＵ４０Ａ、４０Ｂ、４０Ｃ、キャッシュ４４Ａ、４４Ｂ、４４Ｃ、不揮発性ストレージ（ＮＶＳ）４６Ａ、４６Ｂ、４６Ｃ、オペレーティング・システム（Ｏ／Ｓ）４８Ａ、４８Ｂ、４８Ｃ、Ｉ／Ｏユニット５０Ａ、５０Ｂ、５０Ｃ、およびＴＣＰ／ＩＰアダプタ・カード５２Ａ、５２Ｂ、５２Ｃを有する複数の同様のストレージ・サーバ／コントローラ１４Ａ、１４Ｂ、１４Ｃを含む。ストレージ・サーバ１４Ａ、１４Ｂ、１４Ｃの各々は、クライアント４０、４１、４２によって、それぞれ、複数のストレージ・デバイス（ディスクのような）３０Ａ１−ＡＮ、３０Ｂ１−ＢＮ、３０Ｃ１−ＣＮへのストレージ割り振りおよびアクセスを管理する。
【００１９】
クライアント４０、４１、および４２は、ファイバ・チャネルのような通信パス５３Ａ、５３Ｂ、５３Ｃを介してスイッチ５５に接続するためのファイバ・チャネル・アダプタ・カードのようなアダプタ・カード（ＨＢＡ）５０、５１、および５２を有する。スイッチ５５は、ホスト・バス５４Ａ、５４Ｂ、５４Ｃを介してストレージ・サーバ１４Ａ、１４Ｂ、１４Ｃに接続され得るし、クライアント４０、４１、または４２のうちのいずれかからのリクエストを、そのクライアントに関して構成されたストレージ・サーバ１４Ａ、１４Ｂ、１４Ｃのいずれかに送り得る。アドミニストレータが、クライアント４０、４１、および４２の各々に多数のストレージ「ボリューム」を割り付けておく。「ストレージ・アレイ」が、１つ又は複数のストレージ・デバイスを含み得るし、ＲＡＩＤ５、ＲＡＵＤ１０のような種々のＲＡＩＤレベル、または単純ディスク束（Just Bunch of Disks：一般的にＪＢＯＤと呼ばれる）で構成され得る。
【００２０】
図２に示された例示的な実施例では、ストレージ・コントローラ１４Ａ（および同様にストレージ・コントローラ１４Ｂおよび１４Ｃ）がＣＰＵ６８Ａおよび７８Ａ、キャッシュ６６Ａおよび７６Ａ、ＮＶＳ６９Ａおよび７９Ａ、並びに任意の数のデバイス・アダプタのペア（クラスタ当たり６２Ａ−(Ｎ)Ａ〜７２Ａ−(Ｎ)Ａ）から成る２つの同じのクラスタ６１Ａおよび７１Ａを含む。各クラスタ６１Ａおよび７１Ａに対して、それぞれ共有キャッシュ（半導体）メモリ６６Ａおよび７６Ａが存在する。各クラスタは、バッテリ・バックアップされたストレージ（ＮＶＳとも呼ばれる）６９Ａおよび７９Ａを含む。図２において、「Ｄ」はデータ・ディスクを表わし、「Ｐ」は、データ・ディスクにおけるデータのためのパリティ・ビットを格納するためのパリティ・ディスクを表わし、「Ｓ」は、データ・ディスクまたはパリティ・ディスクの障害の場合の予備ディスクを表わす。各クラスタは、ストレージ・アレイ上の対応する物理的ロケーションに各ストレージ・ボリュームを相関させる、各クライアントに対するストレージ割り振りのマッピングを維持する。
【００２１】
図２に示されるような１つまたは複数のディスクが、ファイア・ホース・ダンプ（ＦＨＤ）ディスク６５Ａおよび７５Ａであるように適応し、ファイア・ホース・ダンプ・オペレーションによってデータを格納するために利用され得る。一般に、ＦＨＤデータは、ＡＩＸオペレーティング・システムのブート・ディスクのようなブート・ディスク上に保存される（ＡＩＸは、米国のＩＢＭ社の商標である）。これらのブート・ディスクは、本来、非暗号化／未暗号化のものである。非暗号化ストレージ・デバイス上にキャッシュ・データを書き込むことは本質的に望ましくないので、本発明の実施例は、出来る限り短時間でキャッシュ・データを（更に説明されるような暗号化を使って）保護する方法として働く。従って、（前述のブート・ディスクのような装置上の）停止時のＦＨＤデータは安全である。
【００２２】
ＮＶＳ６９Ａおよび７９Ａは、それぞれ通信リンク６０Ａおよび７０Ａを介してディスク６５Ａおよび７５Ａに相互接続される。或る実施例では、通信リンク６０Ａおよび７０Ａは、ＲＳ−２３２またはＲＳ−４２２のような直列相互接続、イーサネット相互接続、ＳＣＳＩ相互接続、ファイバ・チャネル相互接続、ＥＳＣＯＮ相互接続、ＦＩＣＯＮ相互接続、ローカル・エリア・ネットワーク（ＬＡＮ）、専用広域ネットワーク（ＷＡＮ）、公衆広域ネットワーク、ストレージ・エリア・ネットワーク（ＳＡＮ）、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、インターネット、およびそれらの組み合わせから選択され得る。
【００２３】
或る実施例では、ディスク６５Ａおよび７５Ａは、１つ又は複数の光学的ストレージ・メディア、１つ又は複数の磁気ストレージ・メディア、１つ又は複数の電子ストレージ・メディア、およびそれらの組み合わせを含む。或る実施例では、ディスク６５Ａおよび７５Ａは、クラスタ６１Ａおよび７１Ａの外部にある。或る実施例では、ディスク６５Ａおよび７５Ａは、クラスタ６１Ａおよび７１Ａの内部にある。
【００２４】
クライアントがストレージへのアクセスをリクエストするとき、即ち、クライアントに割り振られたボリュームの１つからデータを読み取るかまたはそのボリュームの１つにデータを書き込むようにリクエストするとき、そのボリュームを管理するストレージ・クラスタはそのリクエストを処理する、即ち、ペアになったクラスタ上のキャッシュ・メモリおよびＮＶＳにクライアント更新を一時的に格納する。更新リクエストに関しては、Ｉ／Ｏ完了通知がＮＶＳ記憶装置上のクライアントに送られる。保留の書き込みに対する内部閾値に達すると、クラスタは、クライアント・リクエストを物理的ロケーションにマップし、しかる後、そのマップされたリクエストをキャッシュ・ストレージから適切なストレージ・アレイに送るであろう。読み取りリクエストに関しては、データがキャッシュ・メモリから満たされるかまたは（キャッシュ・ミスのために）ディスク・アクセスを要求する。読み取りリクエストに対するキャッシュ・ミスは、ストレージ・アレイ上の物理ロケーションにクライアント・リクエストをマップすることおよびクライアントＩ／Ｏリクエストを満たすそのアレイ上の物理ロケーションからキャッシュ・メモリにデータを転送することをクラスタに要求する。
【００２５】
図１を再び参照すると、システム１０は、本発明に従って、フェイルオーバの発生を検知し、前述の保存されたメモリ・キャッシュをインプリメントし、保持されたトラックを処理するために、ストレージ管理サーバ９１内にストレージ管理プログラム（ＳＭＰ）モジュール９０を更に含む。図示の実施例では、コンピュータ９１は、ＳＡＮネットワークを介してストレージ・サーバ１４Ａ、１４Ｂ、１４Ｃに結合される。或いは、モジュール９０の個別のインスタンスが、各ストレージ・サーバ／コントローラ１４Ａ、１４Ｂ、１４Ｃにおいて実行され、ＴＣＰ／ＩＰネットワークを介して他のストレージ・サーバにおけるプログラム９０の他のインスタンスとコミュニケーションを行うことも可能である。当業者には、ストレージ・サブシステム全体とのコミュニケーションによるＳＭＰモジュールの種々の実施態様が考えられるということは明らかであろう。
【００２６】
図２を再び参照すると、各クラスタに対して４つのバッファ・モジュール６７Ａ、６７Ｂおよび７７Ａ、７７Ｂを含むサーバ１４Ａが示される。バッファ・モジュール６７Ａ、６７Ｂおよび７７Ａ、７７Ｂは、以下で更に説明されるように、本発明に従って機能を遂行するように適応し得る。バッファ・モジュール６７Ａ、６７Ｂおよび７７Ａ、７７Ｂは、クラスタ６１Ａおよび７１Ａに組み込まれて図示されているが、バッファ・モジュール６７Ａ、６７Ｂおよび７７Ａ、７７Ｂは物理的に他の位置に設置され得るし、図示のストレージ・コントローラ、キャッシュ・メモリ、ＮＶＳ等とのコミュニケーション状態のままであるということは当業者には明らかであろう。バッファ・モジュール６７Ａ、６７Ｂおよび７７Ａ、７７Ｂは、例えば、電力損失事象に従ってＮＶＳデータの一部分を暗号化してそれをディスクに格納するように適応し得る。この機能および更なる機能が以下で更に説明される。
【００２７】
次に図３は、電力損失事象に従って共用ストレージへのＮＶＳデータを保護するための例示的な方法１００を示す。当業者には明らかなように、方法１００における種々のステップは、特定の応用例に適するように種々の過程を通して具現化され得る。更に、上記の方法は、ハードウェア、ソフトウェア、ファームウェア、またはそれの組み合わせのような様々な手段よって、ストレージ環境において作動可能に或いはストレージ環境に関連して具現化され得る。例えば、その方法は、コンピュータ可読プログラム・コード部分を格納したコンピュータ可読ストレージ・メディアを含むコンピュータ・プログラム製品として、部分的にまたは全体的に具現化され得る。コンピュータ可読ストレージ・メディアは、ディスク・ドライブ、フラッシュ・メモリ、ディジタル多用途ディスク（ＤＶＤ）、コンパクト・ディスク（ＣＤ）、および他のタイプのストレージ・メディアを含み得る。
【００２８】
当業者には明らかであるように、データの一部分が読み取られ、暗号化され、そして共用ストレージ・デバイスに書き込まれるので、方法１００によるフローは一般に幾つもの反復を通して進行する。図示の実施例で説明されたプロセスは、ＮＶＳデータがファイア・ホース・ダンプ（ＦＨＤ）オペレーションを介してＦＨＤディスクに移るＦＨＤオペレーションのすべての部分又は一部分を含み得る。
【００２９】
次に、図３に説明を移すと、方法１００が開始し（ステップ１０２）、電力損失事象を検知する（ステップ１０４）。例えば、電力損失事象は、１つ又は複数のストレージ・コントローラへの電力の一時的または恒久的損失であってもよい。制御は、ステップ１０６に移り、そこでは、ＮＶＳアドレス・ポインタがＮＶＳメモリの開始点を指し、両方のバッファ・モジュール（ここでは「１」および「２」と呼ばれる）の内容が空であり且つ非アクティブである。
【００３０】
ＮＶＳデータがまだ処理されていないので（ステップ１０８）、方法１００は、第１のバッファがアクティブであるかどうかを照会する（ステップ１１２）。それが否定される場合、バッファ１がアクティブにされる（ステップ１１４）。ＮＶＳアドレス・ポインタによって指定されたアドレスから始まるＮＶＳデータの一部が読み取られる。この場合、そのアドレスは、ステップ１０６に記述されたようなメモリの開始点と一致するアドレスである。データのその部分は１つ又は複数のデータ・ブロックによって構成され得る。当業者には明らかなように、その部分は特定の実施態様（例えば、バッファのサイズ）に依存して変わり得る。
【００３１】
バッファ１に読み込まれたＮＶＳデータが暗号化される（ステップ１１６）。次のステップとして、方法１００は、バッファ２がディスクにデータを転送する過程にあるかどうかを照会する（ステップ１１８）。それが肯定される場合、そのプロセスが完了するまで、方法１００はステップ１１８に戻り（待機し）、やがてバッファ２はインアクティブになる（ステップ１２０）。この時点で、バッファ１の暗号化された内容がディスクに転送され、バッファ１がクリアされ（ステップ１２２）、ＮＶＳポインタが、まだ読み取られてないデータにおける次の部分の始めにインクリメントされる（ステップ１２４）。しかる後、方法１００はステップ１０８に戻る。
【００３２】
処理されるべきＮＶＳデータがまだ残っている場合（再度のステップ１０８）、方法１００は、バッファ１がアクティブであるかどうか再び照会する（再度のステップ１１２）。それが肯定される場合、バッファ２はアクティブにされ（ステップ１２６）、ＮＶＳデータがバッファ２に読み込まれ、ステップ１１６におけるように暗号化される（ステップ１２８）。しかる後、方法１００は、バッファ１が現在ディスクにデータを転送する過程にあるかどうかを照会する（ステップ１３０）。それが肯定される場合、その過程が完了するまで、方法１００はステップ１３０に戻り（待機し）、やがてバッファ１はインアクティブになる（ステップ１３２）。この時点で、バッファ２の暗号化された内容がディスクに転送されて、バッファ２がクリアされ（ステップ１３４）、ＮＶＳポインタが、まだ読み取られてないデータにおける次の部分の始めにインクリメントされる（ステップ１３６）。
【００３３】
しかる後、方法１００はステップ１０８に戻る。再び、方法１００は、ＮＶＳデータがすべて処理されたかどうかを照会する。ＮＶＳデータがすべて処理された場合、方法１００は終了する（ステップ１１０）。
【００３４】
本明細書に記述された機能ユニットのうちのいくつかは、それらの実施態様の主体性を特に強調するためにモジュールとしてラベル付けされた。例えば、モジュールは、カスタム超大規模集積回路（ＶＬＳＩ）回路もしくはゲート・アレイ、論理チップ、トランジスタのような既製の半導体、または他の個別のコンポーネントを含むハードウェア回路として具現化され得る。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル論理デバイスなどのようなプログラム可能なハードウェア・デバイスによって具現化され得る。
【００３５】
モジュールは、様々なタイプのプロセッサによる実行のためにソフトウェアにおいても具現化され得る。実行可能なコードの識別されたモジュールは、例えば、オブジェクト、手続き、または機能として構成され得る、例えば、コンピュータ命令の１つ又は複数の物理的または論理的ブロックを含み得る。それにもかかわらず、識別されたモジュールの実行ファイルは物理的に位置指定される必要がなく、論理的に結合されたとき、モジュールを含み且つモジュールに対する前述の目的を達成する種々のロケーションに格納された異種の命令を含み得る。
【００３６】
実際には、実行可能なコードのモジュールは、単一の命令または複数の命令であってもよく、いくつもの異なるコード・セグメントにわたって、様々なプログラム間で、およびいくつものメモリ・デバイスにまたがって分布されてもよい。同様に、操作上のデータは、モジュール内で識別および説明され得るし、任意の適切な形式で具体化され、任意の適切なタイプのデータ構造内に編成され得る。操作上のデータは、単一のデータ・セットとして収集され得るし、或いは、異なるストレージ・デバイスにわたってまたは異なるロケーションにわたって分布され得るし、少なくとも部分的にシステムまたはネットワーク上の電子信号として存在し得る。
【００３７】
本発明の１つ又は複数の実施例を詳細に説明したが、「特許請求の範囲」に記載されているような本発明の技術的範囲から逸脱することなく、それらの実施例に対する修正およびアダプテーションが行われ得るということは当業者には明らかであろう。
【図１】
0005574451.tif 000002
【図２】
0005574451.tif 000003
【図３】
0005574451.tif 000004