JP2008004090A - トランザクションモニタリング能力を有するストレージシステム - Google Patents
トランザクションモニタリング能力を有するストレージシステム Download PDFInfo
- Publication number
- JP2008004090A JP2008004090A JP2007152903A JP2007152903A JP2008004090A JP 2008004090 A JP2008004090 A JP 2008004090A JP 2007152903 A JP2007152903 A JP 2007152903A JP 2007152903 A JP2007152903 A JP 2007152903A JP 2008004090 A JP2008004090 A JP 2008004090A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- data
- volume
- storage system
- log
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】ストレージシステムにおいてアプリケーションプログラムのトランザクションを管理し、任意の時点でのデータをリカバリ処理する方法を提供する。
【解決手段】ストレージシステムはトランザクションの開始を示す命令を受信し、トランザクションに対するデータを受信するために少なくとも一つの一次ボリュームを決定する。ストレージシステムはまたトランザクションに関連した一次ボリュームに対して指定された書き込みデータを最初に保存するためにログボリュームを提供する。トランザクションが首尾よく完了すると、トランザクションに対してログボリューム内に保存されたデータは一次ボリュームに適用される。
【選択図】図3
【解決手段】ストレージシステムはトランザクションの開始を示す命令を受信し、トランザクションに対するデータを受信するために少なくとも一つの一次ボリュームを決定する。ストレージシステムはまたトランザクションに関連した一次ボリュームに対して指定された書き込みデータを最初に保存するためにログボリュームを提供する。トランザクションが首尾よく完了すると、トランザクションに対してログボリューム内に保存されたデータは一次ボリュームに適用される。
【選択図】図3
Description
本発明は、一般的にはストレージシステムに、および、より具体的には、データ保護を可能にしながら複数のデータアクセス要求を同時に扱う方法に関係する。
継続的データ保護(CDP)
継続的データ保護(CDP)は、いかなる変更がデータになされる時にもいつもデータがバックアップ処理されるシステムを提供する。継続的データ保護(CDP)は、ユーザがリストアオペレーションを実行するための実際の用意ができるまでユーザがデータをリカバリ処理したいと思う時点をユーザが特定する必要がない点で従来のデータバックアップとは異なる。従来のデータバックアップシステムは、一時間、一日、一週間などの、バックアップが行われたある不連続な時点へデータをリストア処理することだけが可能である。しかし、継続的データ保護では、バックアップのスケジュールは存在しない。むしろ、データがディスクに書き込まれる時に、ネットワーク上の他のストレージシステムのような第二の位置にも非同期に書き込まれる。これはディスク書き込みオペレーションになんらかのオーバヘッドをもたらすが、しかし夜間にスケジュールされたバックアップ処理などの必要性を削除する。
従って、CDPの基本的目的は、データがリカバリ処理されることが必要になる任意の求められるまたは不可欠な時点のデータのリカバリ処理を可能にすることである。実際に、CDPは、ストレージスナップショット全体、すなわちデータ修正が発生する時点ごとに一つのストレージスナップショットの、継続的なジャーナルまたはログを生成する。CDPの方法において、ストレージシステム、ホストコンピュータ内のバックアップソフトウエア、または他のハードウエアかソフトウエアはホストコンピュータファイルシステムからの書き込みI/Oを捕らえ、ログ(時には“ジャーナル”と呼ばれる)として書き込みI/Oの全てを記録する。またCDPが開始される時に、システムは最初プロダクションボリューム(すなわち、ユーザがデータをバックアップ処理されるようにしたいと思うボリューム)のスナップショットコピーを保持し、これはCDPが開始される時のボリュームの初期イメージである。データをリカバリ処理する時に、ボリュームの初期イメージに対してジャーナルを適用することによって、CDPの方法は、書き込みI/Oが一次ボリュームに作成された任意の時点のデータのリカバリを可能にする。
CDPシステムはブロック−ベースまたはファイル−ベースのシステムであることができる。ブロック−ベースシステムは論理デバイスのブロックレベルで動作し、データブロックが一次ストレージボリュームに書き込まれる時に、書き込まれるデータのコピーがタイムスタンプとなんらかの形の位置データと共にジャーナルに保存される。アプリケーション−レベルの統合はAPI(OracleまたはSQLサーバのような、Application Programming Interfaces)を通してである。APIを通しての統合は通常データコンシステンシに対して必要である。
ファイル−ベースの解決方法はブロック−ベースの解決方法と同様な方法で動作する。しかし、ファイル−ベースCDPの解決方法はボリューム全体をリカバリ処理しなければならないよりもファイルレベルでデータをリカバリ処理することがしばしば可能である。さらに、全てのプラットフォームに亘る共通のファイルレベルの解決方法は存在しない、従って、ファイルレベルシステムは特定のアプリケーションとプラットフォームだけに適用可能である。
従って、CDPの主要な利点はストレージシステム内に生じる全てのトランザクションが記録されることである。さらに、もしもストレージシステムがウイルスで汚染されると、またはもしもシステム内のファイルが破損されるか誤って削除され、問題がしばらく後まで発見されないと、ユーザはファイルの最も近い、破損されていないバージョンにリカバリ処理可能である。さらに、ディスクアレイストレージシステム上に設定されたCDPシステムは数秒でのデータリカバリを可能にし、これはテープのバックアップまたはアーカイブで見込まれるより非常に短時間である。
アプリケーションプログラムトランザクション
アプリケーションプログラムは通常別々の作業単位を一緒に作り上げるいくつかの要求またはデータ更新または他のタスクを含むオペレーションを実行する。これらの別々の作業単位のそれぞれは“トランザクション”と呼ばれる場合がある。トランザクションは典型的には全体でグループとして成功するかまたは失敗するはずの論理オペレーションのグループである。従って、首尾よく実行されるトランザクションに対しては、トランザクションの部分を形成する複数のタスクの各タスクは首尾よく実行されなければならない。例えば、ATM(automated teller machine)からのお金の引き出しは顧客には単一のオペレーションに見えるかもしれないが、これは実際には二つの主要なオペレーションを有するトランザクションとして考えられることが可能である。(1)お金が支払われなければならない。および(2)顧客の銀行口座は支払われた額を差し引かれなければならない。もしもお金が、顧客の口座で差し引く事無く支払われると、銀行はお金を失う。従って、実行されるトランザクションに対して両方のオペレーションが行われなければならない。さらに、これらの二つの主要なオペレーションのそれぞれはいくつかのサブオペレーションを含む。従って、これらのサブオペレーションの全部もまたトランザクションが成功であるように実行されなければならない。
トランザクションの各タイプは、各アプリケーションプログラム内で、すなわち、アプリケーションプログラムのそれぞれが動作する一つのホストコンピュータまたは一組のホストコンピュータ内で特別に定義された概念であるので、ストレージシステムは通常、I/Oオペレーションが特定のアプリケーションプログラムに対してトランザクションの始め、中間、または終わりかを区別できない。従って、ストレージシステムが、CDPによってのような、各I/Oにおいてデータをリカバリ処理する能力を有している時さえも、トランザクションの終わりまたはトランザクションの始めにおけるその状態に従ってデータがリカバリ処理されないと、リカバリ処理されたデータは使い物にならないかも知れない。
以下の米国特許出願公開公報は、基本機能がストレージシステム内で実行されるCDP概念と方法を教示しており、これらの資料の開示内容はそのまま全体を参照してここに組み込まれる。US2004/0268067、Yamagami、名称が“Method and Apparatus for Backup and Recovery System using Storage Based Journaling”;US2005/0015416、Yamagami、名称が“Method and Apparatus for Data Recovery using Storage Based Journaling”;US2005/0022213、Yamagami、名称が“Method and Apparatus for Synchronizing Applications for Data Recovery using Storage Based Journaling”;US2005/0028022、Amano、名称が“Method and Apparatus for Data Recovery System using Storage Based Journaling”;およびUS2005/0235016、Amano他、名称が“Method and Apparatus for Avoiding Journal Overflow on Backup and Recovery System using Storage Based Journaling”。しかし、これらの出願のどれも、複数のアプリケーションプログラムによる複数の要求または動作で構成されるトランザクションを管理する方法を開示していない。
複数のアプリケーションプログラムが動作している環境において、データコンシステンシを完全に扱うために、データを扱う二つの方法がある。1)全てのアプリケーションプログラムはデータコンシステンシを扱うことが可能であり、全てのアプリケーションプログラムはトランザクションを管理するために互いに協力する、または2)ストレージシステムはトランザクションを扱う能力を有する。第一の選択(1)の下で、全てのアプリケーションプログラムは互いに適合するために修正されなければならないので、第二の選択(2)を採用し、ストレージシステムがデータコンシステンシを管理可能にすることが望ましい。しかし、一つ以上のホストコンピュータが存在し、複数のアプリケーションプログラムが動作している環境で、ストレージシステムは通常どのI/Oオペレーションがアプリケーションプログラムに対するトランザクションの開始または終わりであるかを知らない。従って、トランザクションの開始または終わりでデータをリカバリ処理する能力に対する必要性がある。
一つの側面の下で、本発明は、ストレージシステムにおいてトランザクションを管理し、およびアプリケーションプログラムの観点からトランザクションの開始または終了からの任意の時点でストレージシステム内のデータをリカバリ処理する方法を提供する。
本発明のストレージシステムは複数のアプリケーションプログラムからトランザクションの開始および/またはトランザクションの終了に関する情報を受信する手段を含む。ストレージシステムがトランザクションの開始を示す通知を受信した時に、更新I/Oオペレーションがログディスクに記録される。ストレージシステムがトランザクションの終了の通知を受信した時に、ログディスク内の記録されたデータが作業ボリューム内に適用される。
本発明のこれらのおよび他の特徴と利点は好適な実施例の後述の詳細な説明を考慮してこの技術に通常程度に精通した人達に明らかになる。
添付の図面は、上記の一般的な説明、および下記の好適な実施例の詳細な説明と関連して、ここで考慮する本発明の最善の好適な実施例の原理を図示し説明するのに役に立つ。
本発明の後述の詳細な説明において、開示内容の一部分を形成する添付の図面が参照され、ここで本発明が実施される特定の実施例が図示により示されるが、限定するものではない。図面において、同じ番号はいくつかの図を通して実質的に同様の要素を説明する。さらに、図面、前述の議論、後述の説明は典型的および説明的なだけであり、いかなる意味でも本発明の範囲を限定する意図はない。
第一の実施例―システム構成
図1は本発明の方法と装置が適用されるシステムの例を示す。システムは一つ以上のホストコンピュータ1(ここ以後で“ホスト1”と呼ばれる)、およびストレージシステム2で構成される。ホスト1は、直接接続27経由で、またはストレージエリアネットワーク28の部分としてファイバチャネル(FC)スイッチ(FC−SW)4経由で、ストレージシステム2とコミュニケーションのために接続されることができる。さらに、ホスト1はLANスイッチ6を含むローカルエリアネットワーク(LAN)29経由で互いにコミュニケーションを行うことが可能である。LANスイッチ6の物理インタフェースはこの実施例においてはイーサネット(登録商標)であるが、ネットワーキングプロトコールの他のタイプであることもできる。
ホスト1はUNIX(登録商標)またはWindows(登録商標)のオペレーティングシステムを実行するPC/AT互換のコンピュータまたはワークステーションであることができる。他の実施例において、ホスト1はIBMのOS/390(登録商標)またはz/OS(登録商標)のオペレーティングシステムを実行するメインフレームコンピュータであることができる。ホスト1は少なくともCPU11、メモリ13、ネットワークインタフェースコントローラ(NIC)14、およびHBA(host bus adapter)12で構成される。ホスト1はHBA12経由でストレージシステム2内にデータを保存し、アクセスする。
ディスクストレージシステム2は、ハードディスクドライブのような、少なくとも一つの物理デバイス30に接続されるディスクコントローラ20を含む。ディスクコントローラ20は少なくともCPU21、メモリ23、キャッシュメモリ25、NVRAM(nonvolatile random access memory)26、一つ以上のファイバチャネル(FC)インタフェース24および一つ以上のディスクインタフェース22を含む。これらの要素は以下のように機能する。
CPU21はホストI/O要求を処理し、物理デバイス30との間でデータを保存しおよび取り出す、などのためのソフトウエアプログラムを実行する。本発明に関係のある特定のプログラムの詳細は以下に説明される。
メモリ23はCPU21で実行されるソフトウエアプログラムを保存するために使用されるコンピュータで読み出し可能な媒体であり、物理デバイス30内に保存されるデータを保存しおよび管理するために必要な情報を保存するために使用される。
キャッシュメモリ25はホスト1から書き込まれるデータを一時的に保存するために使用され、またはホスト1へのストレージシステム2の応答時間を短縮するためにホスト1によって読み出されるデータを保存するために使用される。もしもストレージシステム2が障害をおこしてもデータが保持されるように、キャッシュメモリ25はバッテリーバックアップメモリである場合がある。
NVRAM26は、ストレージシステムが最初に電源投入された時に機能するブートプログラムを保存するために使用される。ストレージシステム2がブート処理を開始する時に、NVRAM26内のプログラムはメモリ23内にロードされ、CPU21によって実行される。
FCインタフェース(FCI/F)24はホスト1とのコミュニケーションのためにストレージシステムを接続する。代わりに、FCI/F24は、イーサネット(登録商標)インタフェース、またはストレージシステム2がホスト1とデータをコミュニケーションすることが可能な他のインタフェースである場合がある。
ディスクインタフェース22は少なくとも一つの物理デバイス30をコントローラ20に接続するために使用される。本実施例において、ディスクインタフェース22(ここ以後では“ディスクI/F22”と呼ばれる)はファイバチャネルインタフェースであり、物理デバイス30はファイバチャネルプロトコルに従ってディスクコントローラ20によってアクセスされるファイバチャネルディスクデバイスである。他の実施例において、ディスクI/F22はATAインタフェースであることができる。このケースでは、ディスクI/F22に接続される物理デバイス30は、ATAプロトコルに従ってディスクコントローラ20によってアクセスされるATA(シリアルATAまたはパラレルATA)ディスクデバイスである。
この開示内容において、ストレージデバイスを参照する時に、物理デバイス、論理デバイス、および仮想デバイスのようないくつかの異なる用語が使用される。これらの用語は以下のように一般的に定義されることができる。
物理デバイス:物理デバイス30は好ましくはデータを保存するためのハードディスクドライブであり、好ましい実施例においてはFCディスクドライブであるが、SATAディスクドライブまたは他のタイプのディスクドライブも使用されることができる。代わりに、あるアプリケーションでは、物理デバイス30は半導体メモリ、光ディスク、または他のマスストレージデバイスである場合がある。
論理デバイス:ディスクコントローラ20は複数の物理デバイスを使用する少なくとも一つの論理デバイスを構築する。図2は論理デバイス31の概念図を示す。図2内の論理デバイス31は四つの物理デバイス30(ディスク30−1、30−2、30−3および30−4)で構成される。1,1;2,1;などとラベル付けされた各領域は“ストライプ”と呼ばれる。P1、P2、などのラベル付けされた領域は“パリティストライプ”と呼ばれ、これは対応するストライプのパリティデータを保存するために使用される。図2は一つの論理デバイス31が複数の物理デバイス30から生成される例を示す。他の実施例では、一つより多い論理デバイスが複数の物理デバイスから定義される場合があり、または一つより多い論理デバイスが一つの物理デバイスから定義される場合がある。
仮想デバイス:ディスクコントローラ20は少なくとも一つの論理デバイスを使用する少なくとも一つの仮想デバイスを構築する。仮想デバイスは論理デバイスのスナップショットイメージを生成するために構築される。これの追加の詳細は以下で説明される。
機能図
図3は図1に示されるシステムの機能図を示す。ホスト1およびディスクコントローラ20内のメモリ13と23のそれぞれに、本発明を実現するための複数のソフトウエアモジュールが存在する。CPU11はホスト1内のこれらのソフトウエアモジュールを実行し、CPU21はコントローラ20内のソフトウエアモジュールを実行する。これらのソフトウエアモジュールは、実行される時に、好ましくはメモリ13と23内に保存されるが、これらはまたハードディスク、光ディスク、または他のコンピュータで読み出し可能な媒体上に、ローカル的にまたは遠隔的に、全体でまたは部分的に保存される場合がある。ホスト1上で実行されるソフトウエアモジュールはアプリケーションプログラム133、オペレーティングシステム132、およびトランザクションI/Oドライバ131を含む。これらのソフトウエアモジュールのそれぞれの目的と機能は以下のようである。
アプリケーションプログラム133:アプリケーションプログラム133(ここ以後は“アプリケーション133”または“AP133”と呼ばれる)はリレーショナルデータベース管理システム(RDBMS)、ワールドワイドウエブサーバなどのような、望みの機能を実行するためにホスト1上で動作するプログラムである。
オペレーティングシステム132:オペレーティングシステム132はAP133が実行されることを可能にする基本的基盤を提供する。
トランザクションI/Oドライバ131:これは、AP133がトランザクションを扱う時にAP133によって使用されるデバイスドライバモジュールである。他の実施例では、トランザクションI/Oドライバ131はOS132の一部分である場合がある。さらに他の実施例では、トランザクションI/Oドライバ131は、AP133が必要に応じてトランザクションI/Oドライバ131にリンク可能となるように、動的または静的リンクライブラリプログラムとして提供される場合がある。
CPU21によってコントローラ20内で実行されるソフトウエアモジュールは論理デバイスマネジャ231、トランザクションモニタ232、およびI/Oプロセス233を含む。これらのソフトウエアモジュールのそれぞれの目的と機能は以下のようである。
論理デバイスマネジャ231:このソフトウエアモジュールは一つ以上の物理デバイス30から一つ以上の論理デバイス(図2の論理デバイス31のような)を定義する。論理デバイスマネジャ231はまた特定された論理デバイスのスナップショットイメージを生成することが可能である。
トランザクションモニタ232:トランザクション処理命令がトランザクションI/Oドライバ131経由でホスト1から受信される時に、このモジュールは動作する。トランザクションモニタ232は以下でより詳細に説明される。
I/Oプロセス233:このモジュールはホスト1からのI/O要求を扱う。以下でより詳細に説明されるように、トランザクション処理命令が受信される時に、I/Oプロセス233はトランザクション処理を扱うためにトランザクションモニタ232をコールする。
さらに、図3に示される以下のタイプの論理と仮想デバイスおよびボリュームが本発明を実行するために使用される。
一次ボリューム311:これは、AP133が、AP133の特定の機能に依存して、データベーステーブル、などのようなデータを保存するために使用する論理デバイスである。さらに、AP133が一つより多い一次ボリュームを使用する場合があり、または複数のアプリケーションプログラム133が同じ一次ボリュームの一つまたは複数個を使用する場合がある。
ログディスク312:ログディスクまたはログボリュームは少なくとも一つの論理デバイスで構成され、以下でさらに説明される方法でトランザクションモニタ232によって使用される。
スナップショットボリューム313:一次ボリューム311の時点イメージはスナップショットボリューム313内に保存される。スナップショットボリューム313は、トランザクションが失敗した時にデータをリカバリ処理するために使用される。ローカルミラーリングまたはコピーオンライトスナップショット技術のような、スナップショットボリュームを生成するための技術を説明するいくつかの従来の技術がある。本実施例において、ストレージシステム2はスナップショットを保持するためにコピーオンライトスナップショット技術を使用する。この技術の下で、ストレージシステム2がスナップショットを取得する必要がある時点で、コントローラ20はスナップショットを保存するために一次ボリューム311に対応する仮想デバイスを生成する。任意の書き込み要求が一次ボリューム311に来る時に、書き込み要求で指定された領域を更新する前に、領域内のデータは最初に未使用論理デバイスに保存される。コピーオンライトスナップショットオペレーションの更なる詳細は、例えば、米国特許5,649,152、Ohran他内に開示されており、この開示内容は参照して本明細書に組み入れられる。
ホストが論理デバイスをアクセスする方法
各論理デバイスは、ユニークな識別番号を論理デバイスに割り当てることによって、論理デバイスマネジャ231によって管理される。このユニークな識別番号は“論理デバイス番号”(LDEV番号)と呼ばれる。また、ホスト1が論理デバイスをアクセスする時に、ポートアドレスとLUN(Logical Unit Number)を指定する。従って、ホスト1が論理デバイスをアクセスすることを可能にするために、ポートアドレスとLUNのセットがホスト1からアクセス可能である必要がある各論理デバイスに割り当てられる。
図4はストレージシステム2によって保持されるLUマッピングテーブル400を示す。LUマッピングテーブル400は、互いに対応するポートアドレス(PORT)401、LUN402、およびLDEV番号403の組み合わせを保持する。本実施例において、ポートアドレス401のそれぞれは図1内のFCインタフェース24の一つに関連するので、ファイバチャネルプロトコル内のワールドワイドネーム(WWN)が各ポートアドレス401に割り当てられる。LUマッピングテーブル400を使用することによって、ストレージシステム2がポートとLUNを指定するI/Oコマンドを受信する時に、アクセスされる論理デバイスのLDEV番号はユニークに決定されることが可能である。
トランザクションリスト
図5は本実施例のトランザクションリストを示す。“トランザクション”はアプリケーション133内で実行されるオペレーションの単位である。本実施例において、トランザクションはアプリケーション133によって定義される。トランザクションの開始時、AP133は、トランザクションが何時開始するかをストレージシステム2に知るようにさせるための要求をストレージシステム2に発行する(すなわち、“RequestTransaction”機能)。ストレージシステム2がトランザクションの開始を示す要求を受信する時に、任意の後続の書き込みI/O要求とそれに続く書き込みデータは最初、一次ボリューム311を更新する代わりにログディスク312に保存される。AP133が以下に説明される“コミット”コマンドを使用してトランザクションを完了することをストレージシステム2に命令する時に、ログディスク312内の書き込みデータは一次ボリューム311に適用される。
トランザクションリスト500はキャッシュメモリ25またはメモリ23内に保存される。書き込みI/Oがストレージシステム2によって受信される時に、書き込みデータは連続してログディスク312に保存され、書き込みデータに関する情報はトランザクションリスト500に保存される。トランザクションリスト500は以下の情報を保存するためのフィールドを含む。
ID501:各トランザクションはID501に対するフィールド内に保存される“トランザクションID”と呼ばれるユニークな識別番号または識別子を有する。
SEQ#502:トランザクションモニタ232は、トランザクションが開始した後にストレージシステムによって受信される各書き込み要求(および書き込みデータ)の書き込み順序を保持し記録を付ける必要がある。従って、本実施例の下で、0から開始して連続的に増えるシーケンス番号が本実施例内の各書き込み要求に割り当てられる。シーケンス番号は各トランザクションに対してSEQ#502のフィールド内に保存される。他の実施例の下で、他の番号付けまたは記録付けシステムが使用される場合がある。
DEV#503:このフィールドは、データを保存するために意図した受け手として書き込み要求内に指定された論理デバイス(すなわち、一次ボリューム311)のLDEV番号を含む。
HEAD504:このフィールドは、データを保存するためにターゲットLBAとして書き込み要求内に指定された一次ボリューム311内のアドレス(論理ブロックアドレスすなわちLBA)を含む。
LENGTH505:このフィールドは書き込み要求内に指定された書き込みデータの長さを示す。
LOGDEV506:このフィールドは特定のSEQ#502に対応する書き込みデータが保存されるログディスク312の論理デバイス番号を示す。
LOGADDR507:このフィールドは特定のSEQ#502に対応する書き込みデータが保存されるログディスク内のLBAを示す。従って、LOGDEV506とLOGADDR507の組み合わせは、特定のSEQ#502で特定された書き込み要求に対応する書き込みデータが保存される、ログディスク312内の位置を特定するために使用されることが可能である。
図18はログディスク312内に保存されるデータのフォーマットを示す。各データ182はHEADER181とFOOTER183に伴われる。HEADER181は書き込みコマンド情報を含み、これはトランザクションリスト500’。内のSEQ#502、DEV#503、HEAD504、およびLENGTH505を含む。FOOTER183はエラー訂正符号(ECC)と何らかのパッディングデータ(HEADER181、データ182、およびFOOTER183のサイズが標準ディスクブロックのサイズ(すなわち、512バイト)の倍数であるように)を含む。MARKER184もまた、コミットコマンド(以下に説明)が発行される時に、ログディスク312内に更新データと共に保存される。MARKER184は、コミットコマンドがトランザクションに対して発行されたこと、およびそのトランザクションに関係するデータが今は作業ボリュームに適用されることができることの表示として役立つ。
トランザクション管理テーブル
図6はストレージシステム2内に保持されるトランザクション管理テーブル600を示す。RequestTransaction機能(以下に説明)から変換されたコマンドがストレージシステム2によって受信される時に、コントローラ20はユニークなトランザクションIDを生成し、コマンドによって特定された各論理ボリュームは生成されたトランザクションIDでトランザクション管理テーブル600上に登録される。トランザクション管理テーブル600は、トランザクションID601と、ID601によって特定される特定のトランザクションによって書き込みデータがそれらに指定されたLDEVのデバイス番号(DEV#)602を含む。
トランザクション処理API
図7はトランザクションI/Oドライバ131によって提供されるトランザクション処理API(Application Programming Interface)のリスト700を示し、これは本実施例においてC−プログラミング機能として提供される。AP133はトランザクションを管理するため、およびトランザクションの間に一次ボリュームをアクセスするためにこれらのAPIを使用する。トランザクションI/Oドライバ131がこれらのAPI経由でAP133から要求を受信する時に、トランザクションI/Oドライバ131は各API機能要求をストレージシステム2へのコマンドに変換する。本実施例において、READまたはWRITEのような標準FCP−SCSIコマンドをベースにした特有なコマンドがトランザクションI/Oドライバ131とストレージシステム2の間で使用される。本発明で使用されるAPI機能は以下のようである。
int RequestTransaction(char**DEVLIST)701:AP133がトランザクションを起動する時に、AP133はストレージシステム2へのRequestTransaction機能をコールする。応答で、ストレージシステム2は、特定のトランザクションを特定するために使用される、ストレージシステム2内で定義されるトランザクション番号を返す。DEVLISTは、トランザクションが動作している間にAP133がアクセスする必要がある一次ボリューム311のリストをストレージシステム2に示す入力パラメータである。DEVLISTの部分として、デバイスファイル名のリストが特定されるべきである。さらに、図8に示されるように、複数のホスト1が一つのトランザクションを共有する時に、RequestTransaction機能によって渡されたリスト800内の各行は、図8で示されるように、コロンで接続されたホスト名とデバイスファイル名(“/dev/rdsk/c3t0d0”のような)で構成される。トランザクションI/Oドライバ131がコールされる時に、それはデバイスファイル名のリストを一次ボリュームのポートアドレスとLUNのセットに変換し、この情報(一次ボリュームのポートアドレスとLUN)をストレージシステム2に送る。ストレージシステム2において、RequestTransactionから変換されたコマンドが来る時に、トランザクションI/Oドライバ131はユニークなトランザクションIDを生成し、コマンドによって特定される各論理ボリュームは生成されたトランザクションIDでトランザクション管理テーブル600(図6)上に登録される。
int TP_Open(int transaction,const char*pathname,int flags)702:このコマンドは、AP133が一次ボリューム311の一つをアクセスする前に使用される。第一の入力パラメータ“トランザクション”はトランザクションIDを特定するためのパラメータである。TP_Open機能は、それが成功する時にファイル記述子(fd)を返し、これはTP_ReadまたはTP_Write機能のような、続く機能に対して使用される。TP_Open機能内で使用される他のパラメータ(パス名とフラッグ)は標準C−プログラミングシステムコール内のオープンシステムコール機能と同じである。パス名は、RequestTransaction機能内で指定されるような、デバイスファイル名の一つである場合があり、または、もしもOS132またはAP133が論理デバイス上にファイルシステムを生成し、論理デバイスがRequestTransaction機能によって登録されたものであると、パス名は論理デバイス内のファイル名の一つであることが可能である。一つより多いTP_Open機能がトランザクションごとにコールされることが可能であることに注意すべきである。
off_t TP_Lseek(int transaction,int fd,off_t offset,int whence)703:この機能は、トランザクションIDが第一のパラメータとして特定される必要がある以外は、標準lseekシステムコールと同様である。AP133が一次ボリュームまたはファイルを読み出すかまたは書き込む位置を再位置付けする時に、TP_Lseek機能はTP_ReadまたはTP_Write機能コールと共に使用される。再位置付けは後述のようなパラメータ“whence”に従って実行される。(これは標準lseekシステムコールと同じである。)
SEEK_SET:データを読み出し/書き込みする位置は一次ボリューム311またはファイルの先頭において“オフセット”バイトに設定される。
SEEK_CUR:位置は現在の位置プラス“オフセット”バイトに設定される。
SEEK_END:位置はファイルまたはボリュームのサイズプラス“オフセット”バイトに設定される。三つの全ての“whence”パラメータに対して、位置は各ファイル記述子“fd”を有するトランザクションI/Oドライバ131によって管理される。
ssize t TP_Read(int transaction,int fd,void*buf,size_t count)704:この機能は、トランザクションIDが第一のパラメータとして特定される以外は、標準読み出しシステムコールと同様である。AP133がトランザクションIDによって特定されるトランザクションの間に一次ボリュームからデータを読み出す時に、TP_Read機能は使用される。トランザクションI/Oドライバ131がTP_Read機能のコールを受信する時に、データ読み出し位置(ファイル記述子“fd”で管理される)と読み出しデータカウント(“カウント”パラメータ)は一次ボリュームから読み出されるブロックのLBAと数に変換され、READコマンドとトランザクションIDが組み合わされるFCP−SCSIベースのコマンドが発行される。
ssize t TP_Write(int transaction,int fd,void*buf,size_t count)705:この機能は、トランザクションIDが第一のパラメータとして特定される以外は、標準書き込みシステムコールと同様である。AP133がトランザクションIDで特定されるトランザクションの間に一次ボリュームにデータを書き込む時に、TP_Write機能が使用される。トランザクションI/Oドライバ131がTP_Write機能のコールを受信する時に、データ書き込み位置(ファイル記述子“fd”で管理される)と書き込みデータカウント(“カウント”パラメータ)はデータが一次ボリューム内に書き込まれるブロックのLBAと数に変換され、FCP−SCSIベースのコマンドが、WriteコマンドとトランザクションIDを含み、発行される。ストレージシステム2内において、書き込みデータはログディスク312内に保存され、一次ボリューム311に書き込まれない、しかしAP133が、TP_Read機能704を使用して書き込みデータと同じLBAを特定する一次ボリューム上のデータを読み出す時に、書き込みデータが取り出される(すなわち、データが一次ボリューム上に書き込まれているようにAP133には見える。)
int Commit(int transaction)706:AP133は、特定のトランザクションに関連する全てのタスクが完了した後でトランザクションの終わりにこの機能をコールする。トランザクションIDは入力パラメータとして特定される必要がある。コミット機能がコールされる時に、ログディスク312内の特定されたトランザクションIDに関連する書き込みデータは一次ボリュームに適用される。ストレージシステム2内の一次ボリュームにデータを適用するオペレーションが首尾よく実行される時に、コミット機能はAP133に値“0”を返す。何らかの理由で失敗すると、エラーがコミットオペレーションの間に発生したことを示すために“−1”が返される。機能がAP133によってコールされる時に、もしもストレージシステム2にまだ書き込まれていない書き込みデータが存在すると、トランザクションI/Oドライバ131は最初にトランザクションIDに関連する全てのデータをストレージシステム2内に書き込み、次に一次ボリューム311にデータを適用する命令をストレージシステム2に発行する。
int TP_Close(int transaction,int fd)707:トランザクションIDが特定される以外は標準C−プログラミングシステムコールのクローズ機能と同じである。TP_Close機能はパラメータ“fd”で特定されるファイルをクローズするために使用される。
void DeleteTransaction(int transaction)708:AP133がトランザクションを停止し(トランザクションパラメータで特定された)、トランザクションをロールバックしたい時に、AP133はこの機能をコールする。DeleteTransaction機能がコールされる時点までストレージシステム2に書き込まれるデータはストレージシステム2によって捨てられる。
処理フロー − RequestTransaction
図9は、RequestTransaction701機能がホスト1においてコールされる時のストレージシステム2内のオペレーションの処理フローを示す。最初に、ホスト1内のトランザクションI/Oドライバ131はAP133から受信されたRequestTransaction701機能をFCベースのコマンドに変換し、変換されたコマンドをストレージシステム2に送る。次に、以下のステップがストレージシステム2によって実行される。
ステップ1000:ストレージシステム2において、I/Oプロセス233は変換されたコマンドを受信する。I/Oプロセス233は受信されたコマンドが上記で説明されたトランザクション管理コマンドの一つであるかを決定し、肯定的な決定をすると、コマンドをトランザクションモニタ232に渡す。
ステップ1001:トランザクションモニタ232がI/Oプロセス233からコマンドを受信すると、トランザクションモニタ232はトランザクション管理テーブル600をチェックすることによって未使用トランザクションIDを生成する。
ステップ1002:トランザクションモニタ232は、受信された論理デバイス番号のリストのどれかが他のトランザクションに既に割り当てられているかを確認するために、コマンドと共に受信された論理デバイス番号のリストをチェックする。これはトランザクション管理テーブル600を検索することによって行われることが可能である。もしもコマンドによって特定される論理デバイスの一つが他のトランザクションに既に割り当てられていると、処理は異常終了し、エラーを返す。もしもコマンド内で特定される論理デバイスのどれも他のトランザクションにまだ割り当てられていないと、処理はステップ1003に進む。
ステップ1003:トランザクションモニタ232はコマンド内の論理デバイス番号のリストをステップ1001で生成されたトランザクションIDでトランザクション管理テーブル600に登録する。
ステップ1004:トランザクションモニタ232はホスト1にトランザクションIDを返し、処理は完了する。
処理フロー − TP_Write Request
図10はTP_Write Request705の処理フローを示し、これは次のステップを含む。
ステップ1101:I/Oプロセス233は、コマンドがトランザクション管理コマンドか、およびコマンドがトランザクションIDを含むかを決定する。もしも決定が肯定的であると、処理はステップ1102に進む。もしも決定が否定的であると、コマンドは本発明または特定のトランザクションのトランザクション管理方法に関係していなく(すなわち、これはWRITEのような標準FCP−SCSIコマンドである)、処理はステップ1111に進む。
ステップ1102:トランザクションモニタ232は、指定された論理デバイス(すなわち、一次ボリューム)が指定されたトランザクションIDでトランザクション管理テーブル600内に登録されているかを決定するために、コマンドと共に来るパラメータをチェックする。もしもトランザクション管理テーブル600が特定のトランザクションIDに登録された指定された論理デバイスを含むと、処理はステップ1103に進む。もしもそうでないと、処理は異常終了し、エラーを返す。
ステップ1103:トランザクションモニタ232は特定の論理デバイスがロックされているかをチェックする。もしも特定の一次ボリュームがロックされていると、処理は論理デバイスがアンロックされるまで待つ。具体化の他の方法では、処理は、特定の論理デバイスがアンロックされるのを待たないで終了し、デバイスがロックされていることをホスト1に通知する場合があり、または処理は予め決められた時間だけ待った後にホストにロックされているとの通知を返す場合がある。
ステップ1104:トランザクションモニタ232は書き込みデータが書き込まれるログディスク312のエリアを割り当てる(すなわち、使用可能なスペースの一つ以上のブロック)。このステップは、他のホストコンピュータ内の他のアプリケーションプログラムからのような他の書き込みI/O処理がこのステップにおいて割り当てられたエリアにデータを上書きしないようにする、一種のロック処理である。
ステップ1105:トランザクションモニタ232は書き込みデータをログディスク312に保存する。
ステップ1106:トランザクションモニタ232は、ステップ1104と1105で実行された書き込み要求に関する情報をトランザクションリスト500に加え、次に処理は終了する。
ステップ1111:I/Oプロセス233は、書き込み要求によって指定されたデバイスがトランザクション管理テーブル600に登録されているかを決定する。もしもデバイスがトランザクション管理テーブル600内に登録されていると、これはデバイスがトランザクションの部分であるが、しかしトランザクションIDが書き込み要求に含まれていなかったことを意味するので、処理は異常終了し、エラーを返す。もしもデバイスがトランザクション管理テーブル600内に登録されていないと、処理はステップ1112に進む。
ステップ1112:I/Oプロセス233は通常の書き込みI/O処理を実行し、処理は終了する。他の実施例において、通常のWRITEコマンドが来る時に、指定された論理デバイスがトランザクション管理テーブル600内に登録されているまたはいないに関係なく、書き込み要求は実行される場合がある。しかし、このようなケースでは、書き込みデータのコンシステンシは保持されることができない。
処理フロー − TP_Read Request
図11はTP_Read Requestがストレージシステム内で受信される時の処理フローを示し、次のステップを含む。
ステップ1201:I/Oプロセス233は、コマンドがトランザクション管理コマンドか、およびコマンドがトランザクションIDを含むかを決定する。もしも決定が肯定的であると、処理は1202に進む。もしも決定が、コマンドがトランザクション管理コマンドではない(すなわち、これはREADのような標準FCP−SCSIコマンドである)とのことであると、処理は1211に進む。
ステップ1202:トランザクションモニタ232は、指定された論理デバイス(すなわち、一次ボリューム)がコマンド内で特定されたトランザクションIDでトランザクション管理テーブル600内に登録されているかを決定するために、コマンドに含まれるパラメータをチェックする。もしも指定された論理デバイスが登録されていると、処理は1203に進む。もしもそうでないと、処理は異常終了し、エラーがホスト1に返される。
ステップ1203:トランザクションモニタ232は、論理デバイスがロックされているかを決定する。もしも特定の論理デバイスがロックされていると、処理は論理デバイスがアンロックされるまで待つ。具体化の他の方法では、処理は論理デバイスがアンロックされるのを待つこと無く終了し、論理デバイスがロックされていることをホスト1に通知するか、または処理は、デバイスがロックされていることをホストに通知する前に予め決められた期間だけ待つ場合がある。
ステップ1204:トランザクションモニタ232は、TP_Readコマンドで指定された領域(LBA)がTP_Writeコマンドによって以前に上書きされたかを決定する。もしもこのケースであると、読み出し要求によって要求された更新データは一次ボリューム311内ではなくログディスク312内に存在する。データはトランザクションリスト500の内容を検索することによって見つけられることが可能である。もしも更新データがログディスク312内に存在すると、処理はステップ1205に進む。もしもそうでないと、処理はステップ1211に進む。
ステップ1205:トランザクションリスト500を使用して、処理は、そのHEAD504が読み出し要求内で特定されるLBAと一致する最新の更新データを見つける。次にトランザクションモニタ232は、読み出し要求内で特定されるLBAにトランザクションリスト500内で対応するLBA(LOGADDR507)においてログディスク312からデータを読み出すことをI/Oプロセス233に命令する読み出し要求をI/Oプロセス233に送る。
ステップ1206:I/Oプロセス233はホスト1に読み出しデータを返す。
ステップ1211:I/Oプロセス233は指定されたブロックを読み出し、読み出されたデータをホスト1に返す。
処理フロー − コミット機能
図12はコミット機能を実行するための処理を示し、これは次のステップを含む。
ステップ1301:トランザクションモニタ232は、特定のトランザクションIDに従ってコミット機能によって指定された特定のトランザクションに関係する一次ボリューム311をロックする。
ステップ1302:トランザクションモニタ232は一つ以上の一次ボリュームのスナップショットを取得する。このオペレーションは選択的であり、上記で議論されたCOW技術を使用することができる。選択的スナップショットを取得する利点は、もしもコミット機能がアプリケーションプログラムまたはトランザクションモニタ232に直接には関係しない何らかのエラー(例えば、ストレージシステム内の電源障害または他の理由)のために実行の間に失敗すると、データのリカバリを可能にすることである。
ステップ1303:トランザクションモニタ232は、ログディスク312内に保存された書き込みデータをトランザクションリスト500内の書き込み要求情報(要素503、504、505、506、507)に従って一次ボリューム311に適用する。書き込み順序を正しく保つために、書き込みオペレーションは各書き込みに対してシーケンス番号SEQ#502に従って行われる。
ステップ1304:もしも書き込みデータが適用されている間にエラーが発生すると、処理は異常終了し、エラーが返される。もしも一次ボリューム312にデータを適用することが首尾よく終了すると、処理はステップ1305に進む。
ステップ1305:トランザクションモニタ232はI/Oプロセス233に一次ボリューム311をアンロックすることを命令する。
ステップ1306:トランザクションモニタ232はトランザクションリスト500内の指定されたトランザクションIDに関係するエントリを削除し、処理を正常に終了する。すなわち、トランザクションID501フィールドが指定されたトランザクションIDに等しい全てのエントリはリストから削除される。エントリを削除した後に、対応するトランザクションIDに関係する書き込みデータが保存されているログディスク312内のエリアは他のトランザクションに対してデータを保存するために使用される。また、本実施例において、トランザクションIDはステップ1306の後でストレージシステム2内で削除され、他のRequestTransactionコマンドがストレージシステム2によって受信される時に、削除されたトランザクションIDは再使用されることができる。
コミット機能が失敗すると、またはAP133がコミット機能を発行する前にトランザクションの間になされた変更をロールバックしたいと思う時に、DeleteTransaction機能708が使用される。トランザクションモニタ232がトランザクションI/Oドライバ131からDeleteTransaction要求を受信する時に、トランザクションモニタ232はトランザクションリスト500内の指定されたトランザクションIDに関係するエントリを削除し、これは図12内で述べられたコミット機能内のステップ1306と同じである。またトランザクションIDそれ自身も削除される。さらに、もしもコミット機能がコミット機能を実行している間に失敗すると、トランザクションリスト500内のエントリを削除することに加えて、コミット機能が実行される前にデータをリカバリ処理するために、トランザクションモニタ232はスナップショットボリューム313内の内容で一次ボリューム311内の内容を更新する。
本実施例において、各トランザクションによって管理されるディスク領域はボリュームごとに定義される。しかし、他の実施例では、各トランザクションによって管理されるディスク領域は部分的ボリューム(ボリューム内の二つのLBAによって特定される領域内で一つまたは複数の隣接するディスクブロックを定義することによってなど)として定義されることが可能である。
第二の実施例
第二の実施例内のハードウエアとソフトウエアは第一の実施例に関して上記で説明されたものと同じである。第一の実施例からの第二の実施例の違いは、以下のように、各トランザクションの管理方法とトランザクションAPIの使用方法にある。
int RequestTransaction(char**DEVLIST):AP133がRequestTransaction機能をコールする時に、ストレージシステム2は、第一の実施例に関して上記で説明されたように、ストレージシステム2内で定義されたトランザクション番号を返す。AP133によるRequestTransaction機能のコール動作の処理とストレージシステム2の応答は、図9内のような、第一の実施例で上記に説明されたものと、第二の実施例とは同じである。
int open(const char*pathname,int flags):上記に説明されたTP_Open機能702の代わりに、標準C−プログラミングシステムコールが第二の実施例に対して使用される。
off_t lseek(int fd,off_t offset,int whence):上記に説明されたTP_Lseek機能703の代わりに、標準C−プログラミングシステムコールが第二の実施例に対して使用される。
ssize_t read(int fd,void*buf,size_t count):上記に説明されたTP_Read機能704の代わりに、標準C−プログラミングシステムコールが第二の実施例に対して使用される。従って、第二の実施例の下で、ストレージシステム2内で、もしもREADコマンドがRequestTransaction機能によって登録された論理デバイスをターゲットにし、FC−SCSIのREADコマンドが、データがログディスク312内に保存されているLBAを含むと、データはログディスク312から読み出される。
ssize_t write(int fd,void*buf,size_t count):上記に説明されたTP_Write機能705の代わりに、標準C−プログラミングシステムコールが第二の実施例内において使用される。従って、第二の実施例の下で、書き込みシステムコールはFC−SCSIのWRITEコマンドに変換され、ストレージシステム2に発行される。ストレージシステム2内で、もしもWRITEコマンドがRequestTransaction機能によってトランザクション管理テーブル600内に登録された論理デバイスをターゲットにすると、書き込みデータはログディスク312内に保存され、コミット機能が発行されるまで一次ボリューム311に書き込まれない。
int Commit(int transaction):第二の実施例内のコミット機能は第一の実施例に関して上記に説明されたものと同様である。第一の実施例からの違いはトランザクションIDが、コミット機能が実行された後にトランザクションリスト500から削除されないことである。
int close(int fd):上記に説明されたTP_Close機能707の代わりに、標準C−プログラミングシステムコールが第二の実施例内で使用される。
void DeleteTransaction(int transaction):第二の実施例内のDeleteTransaction機能は第一の実施例に関して上記に説明されたものと同様である。わずかな違いが以下の論議で説明される。
処理フロー − 書き込み要求
図13は本発明の第二の実施例内の書き込みオペレーションの処理フローを示す。第一の実施例からの違いは、第一の実施例内のステップ1101が図13内に存在せず、ステップ1102はステップ1102’で置き換えられることである。
ステップ1102’において、トランザクションモニタ232は、書き込み要求がRequestTransaction機能によって指定された論理デバイスの一つをターゲットにするか、またはそうでないかを決定する。もしも決定が肯定的であると、処理はステップ1103に進み、第一の実施例内の図10に関して上記に説明されたものと同じ書き込みオペレーションを実行する。もしも書き込み要求がRequestTransaction機能によって指定された論理デバイスをターゲットにしないと、書き込みオペレーションはトランザクションの部分として管理される必要は無く、処理はステップ1112に進み、第一の実施例内の図10に関して上記に説明されたように、通常の書き込みI/Oオペレーションを実行する。図13の残りは図10に対して上記に説明されたものと同じであり、ここで繰り返される必要は無い。
処理フロー − 読み出し要求
図14は第二の実施例内の読み出しオペレーションの処理フローを示す。第一の実施例からの違いは、第一の実施例内のステップ1201は図14内に存在せず、ステップ1202はステップ1202’で置き換えられることである。
ステップ1202’において、トランザクションモニタ232は、読み出し要求がRequestTransaction機能によって指定された論理デバイスをターゲットにするか、またはそうでないかを決定する。もしも決定が肯定的であると、処理はステップ1203に進み、第一の実施例内の図11に関して上記に説明されたものと同じ読み出しオペレーションを実行する。しかし、もしも読み出し要求がRequestTransaction機能によって指定された論理デバイスをターゲットにしないと、処理はステップ1211に進み、これもまた上記に説明されたように、通常の読み出しI/Oオペレーションを実行する。図14の残りは図11に対して上記に説明されたものと同じであり、ここで繰り返される必要は無い。
コミット機能
第二の実施例内のコミット機能は、トランザクションIDがステップ1306においてストレージシステム2内で削除されないこと以外、図12に関して上記に説明された、第一の実施例内とほとんど同じである。第二の実施例内において、DeleteTransaction機能がコールされる時だけ、トランザクションIDは削除される。従って、第二の実施例内において、ユーザまたはAP133は、特定のアプリケーションプログラムが完了点に達する前は同じトランザクションIDを再使用し、特定のアプリケーションプログラムが完了点に達する時にはコミット機能の後でDeleteTransaction機能をコールする。
第三の実施例
前述の内容から、本発明は複数のアプリケーションプログラムが協同で動作する情報システムに対して有用であり、アプリケーションプログラムにおいてトランザクションの開始または終了で一貫した状態でデータをリカバリ処理する時に特に有用であることは明らかである。第三の典型的な実施例として、図15は複数のアプリケーションプログラムが本発明の技術を使用して一緒に動作できる方法の例を示す。
第三の実施例のシステム構成は、二次ストレージシステム2−2が一次ストレージシステム2−1に接続されていること以外は、第一と第二の実施例のそれと同様である。一次ストレージシステム2−1と二次ストレージシステム2−2のハードウエア構成は、第一の実施例において上記に説明されたストレージシステム2のそれと同じであることができる。しかし、追加のリンク7は一次ストレージシステム2−1から二次ストレージシステム2−2にデータをコピーするために提供されることができる。リンク7はファイバチャネルリンク、イーサネット(登録商標)、または他のデータコミュニケーション媒体であることができる。さらに、ストレージシステム2−1、2−2とホスト1−1、1−2に対するソフトウエア構成に関して、ソフトウエアモジュールは第一の実施例に関して上記に説明されたものと同様である。しかし、ストレージシステム2−1、2−2のそれぞれは、ミラーリングの目的などで、一次ストレージシステム1−1上の一次ボリューム311−1から二次ストレージシステム2−2上の二次ボリューム314への複製を制御するために、複製マネジャ234−1、234−2をそれぞれ含む。さらに、ホスト1−1はホスト1−2上に含まれるサブAP2 134−2と異なることができるサブ−アプリケーションプログラム(サブAP1)134−1を含み、これは以下でより詳細に説明される。ホスト1−1とホスト1−2のハードウエア構造は第一の実施例に関して上記に説明されたホスト1と同じであることができる。
図16は、以下のように、ホスト1−1と1−2上のソフトウエアモジュールの間の機能的関係を示す。
メインAppプログラム(AP)133−1と133−2:これは、ウエブベースアプリケーションプログラム、ERP(Enterprise Resource planning)プログラムなどのような、この実施例の基本的アプリケーションプログラムである。AP133はユーザの要求を管理し、ユーザの要求などに従ってI/Oを処理するためにサブAP1 134−1またはサブAP2 134−2を呼び出す。またAP133は一次ストレージシステム2−1上の一次ボリューム311−1aと311−1b内などのデータのコンシステンシを制御し、サブ−アプリケーションプログラムを呼び出す。従って、AP133−1と133−2はまた“スケジューラ”またはタスクスケジューラ部分を有すると呼ばれる場合がある。
サブAP1 134−1とサブAP2 134−2:これらのプログラムはAP133のスケジューラによって呼び出され、一次ストレージシステム2−1への読み出し/書き込み要求を処理する。本実施例において、これらのプログラムは一般的には商用のRDBMSプログラムのようなトランザクション処理能力を有さない。
AP133のスケジューラがユーザから購買注文(例えば、もしもAP133−1、AP133−2のスケジューラとサブAP1 134−1とサブAP2 134−2がオンラインショッピングアプリケーションを構成する場合)のような要求を受信する時に、ホスト1−1と1−2上のAP133−1とAP133−2が、それぞれ、在庫表のチェック、在庫の更新、勘定データベースの更新などのような要求を処理することをサブAP1 134−1またはサブAP2 134−2に、それぞれ、命令する(いくつかのケースでは、ホスト1−1または1−2の一方のAP133がAP1 134−1とAP2 134−2の両方に命令する場合がある)。サブAP1 134−1とサブAP2 134−2のそれぞれが要求を終了する時に、トランザクションの処理の特定の要求またはステップが終了したとの通知をAP133のスケジューラに返す。
本実施例において、AP133のスケジューラはサブAP134−1、134−2がデータを保存するために使用する論理デバイス(または論理デバイスの部分)を知っている。従って、AP133のスケジューラがサブAP134に要求を発行する前に、それはサブAP134が使用する論理デバイス(または論理デバイスの部分)の識別情報で一次ストレージシステム2−1にRequestTransaction機能を発行する。サブAP134がその要求またはタスクを終了した後に、AP133のスケジューラはコミット要求を一次ストレージシステム2−1に発行する。従って、図16内に示される機能性は、サブAP1 134−1からデータを保存する一次ボリューム1 311−1a、およびサブAP2 134−2からデータを保存する一次ボリューム2 311−1bで示される二つの一次ボリュームがある以外は、第一と第二の実施例に対して上記に説明された処理と同様である。
一次ストレージシステム2−1において、第一の実施例または第二の実施例に対して上記に説明されたように、RequestTransaction機能を受信した後に、ストレージシステム2−1は特定のトランザクションに関連した任意の書き込みデータをログディスク312−1内に保存する。トランザクションに関連する全てのタスクが首尾よく完了した時に、およびAP133からコミット要求を受信した後に、ストレージシステム2−1はログディスク312−1内の書き込みデータを一次ボリューム311−1(311−1aおよび/または311−1b)内に適用する。サブAP134−1、134−2の一方またはAP133のスケジューラがトランザクションの間に失敗する時に、AP133のスケジューラはDeleteTransaction要求を一次ストレージシステム2−1に発行する。一次ストレージシステム2−1がDeleteTransaction要求を受信する時に、それは削除要求で特定されるトランザクションIDに対応するログディスク312内の書き込みデータを捨てる。さらに、システム内に異なるスケジューラとサブAP134を有するAP133の複数のセットがあることが可能である。
リモートバックアップ/リストア
第三の実施例において、システムはまた一次ストレージシステム2−1内のデータをミラーリングするために二次ストレージシステム2−2を含むことができる。一次と二次ストレージシステム2−1と2−2は複製マネジャモジュール234−1と234−2をそれぞれ有する。一次ストレージシステム2−1または一次サイト(すなわち、一次サイトには一次ストレージシステム2−1と少なくとも一つのホスト1を含む)が故障すると、二次サイト(すなわち、二次サイトには二次ストレージシステム2−2と少なくとも一つのホスト1を含む)は、フェイルオーバ処理技術の下で処理を引き継ぐことができる。
図17と21は複製マネジャモジュール234−1と234−2の処理フローを示す。複製マネジャモジュール234−1と234−2は各トランザクション内に存在し共存する。例えば、二つのトランザクションが一次ストレージシステム2−1内で定義されている時に、二つの複製マネジャモジュール234−1は一次ストレージシステム2−1内で動作し、二つの複製マネジャモジュール234−2は二次ストレージシステム2−2内で動作する。リモートミラーリングオペレーションは二つのコピーオペレーション、初期コピーおよび更新コピーから成る。図17は複製マネジャモジュール234−1の初期コピーオペレーションの処理フローを示し、図21は、複製マネジャモジュール234−2が更新されたコピーデータを受信した時の処理フローを示す。
リモートミラーリングが開始された時に、システムのユーザは、トランザクションID、一次ストレージシステム2−1内の一つ以上の一次ボリューム311−1、および二次ストレージシステム2−2内の一次ボリューム311−1内のデータがミラーリングされる一つ以上の行き先または二次ボリューム314(ここ以後は二次ボリューム314と呼ばれる)を特定して、二次ストレージシステム2−2内にミラーを生成するためにトランザクションI/Oドライバ131経由でリモートコピーコマンドを発行する。二次ストレージシステム2−2内の二次ボリューム314が、第一と第二の実施例内において上記で説明されたように、本発明の下で、一次ボリューム311と同様に扱われるけれども、二次ボリュームはホスト1上のAP131からよりも、一次ストレージシステムからデータを受信することに注意すべきである。各二次ボリューム314の容量はミラーリングする一次ボリューム311のそれと同じか、より大きいので、ユーザは最初二次ボリューム314を手動で選択/割り当てをすることができる。他の実施例において、ユーザがミラーを生成するコマンドを発行する時に、複製マネジャモジュール234−1と234−2の一方は、二次ボリューム214として役立つ適切な論理デバイスを二次ストレージシステム2−2内に見つけることが可能である。
処理フロー − 初期コピー
図17に示されるように、ミラーを生成する要求が受信される時に、一次ストレージシステム2−1内の複製マネジャ234−1は次のステップを実行する。
ステップ3001:複製マネジャ234−1はミラーを生成する要求をホスト1から受信する。複製マネジャ234−1が、各一次ボリューム311−1内のデータが二次ストレージシステム2−2内のどの論理デバイスにコピーされるべきかを決定可能なように、要求は少なくともトランザクションIDと、一次ボリューム311−1と二次ボリューム314から成る少なくとも一対のペア情報を含む。
ステップ3002:複製マネジャ234−1は、特定の一次ボリューム311−1のそれぞれのスナップショットを取得するためにスナップショットボリューム313−1を生成する。結果として、一次ボリューム311−1のそれぞれの内のデータの時点イメージがスナップショットボリューム313−1内に保存される。本実施例において、第一の実施例と同様に、コピーオンライトスナップショット技術はスナップショットを取得するために使用されることができ、従って、スナップショットデータはスナップショットボリューム313内に仮想的に保存される。
ステップ3003:複製マネジャ234はスナップショットボリューム313から二次ボリューム314にデータをコピーすることを開始する。コピー処理はスナップショットボリューム313の先頭のLBAから最後尾まで連続的に発生する。
ステップ3004:もしも全てのデータがコピー処理を終了すると、処理はステップ3005に進む。もしもそうでないと、処理は全てのデータがコピーされるまで待つ。
ステップ3005:複製マネジャ234−1はスナップショットボリューム313−1を削除し、初期コピーのステップは完了する。
ステップ3006:全てのデータをコピーした後に、複製マネジャ234−1は更新コピーオペレーションを開始する。この実施例内の更新コピーオペレーションは、ログディスク312−1内のデータを二次ストレージシステム2−2内の二次ログディスク312−2にコピーすることによって実行されることが可能である。
二次ストレージシステム2−2内の初期コピー処理は複製マネジャ234−2によって管理される。複製マネジャ234−2は一次ストレージシステム2−1から初期コピーデータを受信し、初期コピーデータを二次ボリューム314に保存する。
一次ストレージシステム2−1内の更新コピーオペレーションはまた、ログディスク312−1内のデータを二次ストレージシステム2−2に定期的に送ることによって複製マネジャ234−1によって実行される。トランザクションモニタ232によって削除されたログディスク312−1内のデータを有することを避けるために、図20に関して以下に説明されるように、ログディスク312−1内のデータが複製マネジャ234によってストレージシステム2内の二次ログディスク312−2にコピーされた後に、データがログディスク312−1から削除されることを複製マネジャ234が許可する場合だけ、ログデータ削除処理が実行される。
図19は本実施例で使用されるトランザクションリスト500’を示す。第一の実施例からのトランザクションリスト500’の違いはFLAG508列が追加されていることである。もしもFLAG508の値が“1”であると、これは、ログディスク312−1内の対応するデータが既に更新コピーオペレーションによって二次ストレージシステム2−2に送信されていることを意味する。もしもデータがまだ二次ストレージシステム2−2に送信されていないと、FLAG508の値は“0”であり、データは、それが送信されるまで削除から保護される。
処理フロー − 一次ストレージシステム内の更新コピー
図20は一次ストレージシステム2−1内の更新コピーの処理フローを示す。処理は定期的に動作し(一分に一回のように)、次のステップを含む。
ステップ3501:複製マネジャ234は、二次ストレージシステム2−2にまだ送られていないデータがあるかを決定するためにトランザクションリスト500’をチェックする。このデータは、FLAG508が“0”かまたは“1”かをチェックすることによって見つけられることが可能である。もしもFLAG508が“0”のエントリがあると、処理はステップ3502に進む。もしもそうでないと、新しいデータがログディスク313−1に書き込まれたかを決定するために次のサイクルまで、処理は待つ。
ステップ3502:複製マネジャ234は“0”のFLAG508を有するデータを二次ストレージシステム2−2に送る。複数の書き込みデータが二次ストレージシステム2−2に送られることは可能であるが、FLAG508が“0”の全てのデータが同時に送られる必要はない。送られる多くのデータエントリがある時に、データは複数の更新コピーオペレーションによって送られる場合がある。さらに、データはそのシーケンス番号(SEQ#502)に従って通常は送られるが、各書き込みデータを送る順序は維持される必要はない。
ステップ3503:データが二次ストレージシステム2−2に送られ、複製マネジャ234−1が二次ストレージシステム2−2から確認通知を受信する時に、複製マネジャ234−1はストレージシステム2−2に送られたトランザクションリスト500’の各エントリ内でFLAG508を“1”に設定する。
データが二次ストレージシステム2−2に送られる時に、書き込みコマンド情報もまた送られる。図18は二次ストレージシステム2−2内のログディスク312−2内に保存されるデータのフォーマットを示す。上記に説明されたログディスク312と同様に、各データ182はHEADER181とFOOTER183に伴われる。HEADER181は書き込みコマンド情報を含み、これはトランザクションリスト500’内のSEQ#502、DEV#503、HEAD504、およびLENGTH505を含む。しかし、DEV#503に関しては、DEV#503フィールド内にある値それ自身は送られない。代わりに、二次ボリューム314(二次ストレージシステム2−2内のボリューム、これは一次ボリューム311とペアの関係にあり、一次ストレージシステム2−1から来るデータがここに書き込まれる)内の対応する論理デバイス番号が送られる。コミットコマンドが発行される時に、MARKER184もまたログディスク312−2内に更新データと共に保存される。MARKER184は、コミットコマンドがトランザクションに対して発行されたこと、およびこのトランザクションに関係するデータが今は作業ボリュームに適用されることができ、このケースではこれは二次ボリューム314であることの表示として役立つ。
上記に述べられたように、二次ボリューム314は手動でユーザによって割り当てられることができる。他の実施例では、二次ボリューム314は、既知のリモートコピー技術を使用して一次ストレージシステム2−1または二次ストレージシステム2−2によって自動的に決定される場合がある。
処理フロー − 二次ストレージシステム内の更新コピー
図21は二次ストレージシステム2−2内の更新コピーの処理フローを示す。二次ストレージシステム内の処理もまた定期的に実行され、次のステップを含む。
ステップ4001:複製マネジャ234−2は一次ストレージシステム2−1から更新データを受信し、ログディスク312−2内にデータを保存する。
ステップ4002:もしも複製マネジャ234−2がステップ4001においてMARKER184を受信すると、処理はステップ4003に進む。もしもそうでないと、処理は追加のデータを待つためにステップ4001に戻る。
ステップ4003:複製マネジャ234−2は特定のトランザクションの開始からの全てのデータと特定のトランザクションの終了(MARKER184を含む)が受信されたかをチェックする。もしも全てのデータが受信されていると、処理はステップ4004に進む。もしもそうでないと、処理は、二次ストレージシステム2−2に到着していないデータを再び送ることを一次ストレージシステム2−1に要求するためにステップ4011に進む。
ステップ4004:もしも二次ストレージシステム2−2が他のタスクを実行していてビジーであると、処理はステップ4001に戻る。もしもそうでないと、処理はステップ4005に進む。
ステップ4005:複製マネジャ234−2は、二次ログディスク312−2内のデータを二次ボリューム314に適用することをトランザクションモニタ232−2に命令する。
ステップ4006:複製マネジャ234−2は、二次ボリューム314に適用された二次ログディスク312−2内のデータを削除することをトランザクションモニタ232−2に命令する。
ステップ4011:もしもトランザクションの部分を形作る全てのデータが受信されていないと、複製マネジャ234−2は二次ストレージシステム2−2に到着していないデータを再び送る要求を一次ストレージシステム2−1に送る。
一次サイトが障害の時に、典型的なフェイルオーバ処理手順の下で、ユーザは二次サイトでアプリケーションプログラムを再開することを試みる。二次サイトで、アプリケーションプログラムを再開する前に、ユーザは二次サイトのホスト1−3、1−4の一方から二次ストレージシステム2−2にコミット機能を発行する。二次ストレージシステム2−2が要求を受信する時に、もしも二次ボリューム314にまだ適用されていないログディスク312−2内のデータがあると、二次ストレージシステム2−2はログディスク312−2内のデータを二次ボリューム314に連続的に適用する。しかし二次ボリューム314に適用されるデータは、トランザクションの開始からトランザクションの終わりまでの全てのデータがログディスク312−2に到着しているトランザクションデータに限定される。トランザクションが不完全なログディスク312−2内の他のデータは捨てられる。この処理手順の下で、二次サイトでアプリケーションプログラムを再開する時に、アプリケーションプログラムは、一次サイトが障害となった時に完全でなかったトランザクションのちょうど開始点でデータをアクセス可能である。
従って、前述の内容から、本発明のストレージシステムはトランザクションの開始とトランザクションの終わりに関する情報をアプリケーションプログラムから受信する手段を有すると見ることができる。ストレージシステムがトランザクションの開始を示す通知を受信する時に、更新I/Oオペレーションはログディスクに記録され、ストレージシステムがトランザクションの終わりの通知を受信する時に、ログディスク内に記録されたデータは作業ボリュームに委ねられることができる。この手段で、本発明は、ストレージシステム内のI/Oトランザクションを扱い、トランザクションを管理するためにアプリケーションプログラムに対して基本的基盤を提供する方法を提供する。
さらに、特定の実施例がこの明細書の中で示され、説明されたが、この技術に通常程度に精通する人達は、同じ目的を達成することを意図する任意の脚色が開示された特定の実施例に置き換えられることができることを理解する。この開示内容は本発明の任意のおよび全ての適応または変化を包括することを意図しており、上記の説明は説明的な形で行われたが、限定的なものではないことが理解される。従って、本発明の範囲は、添付の特許請求項に関して、この特許請求項が権利を有する同等物の全範囲と共に、適切に決定されるべきである。
Claims (20)
- ストレージシステムにおいてアプリケーションプログラムのトランザクションを管理する方法において、
(a)前記のストレージシステムにおいて、第一のトランザクションの開始を示す命令を受信するステップと、
(b)前記の第一のトランザクションに対するデータを受信するために少なくとも一つの一次ボリュームを決定するステップと、
(c)前記の第一のトランザクションに対する前記の一次ボリュームに対して指定された書き込みデータを最初に保存するためのログボリュームを提供するステップと、
(d)前記の第一のトランザクションの完了を示す命令を前記のストレージシステムにおいて受信するステップと、
(e)ステップ(d)の後で、前記の第一のトランザクションに対する前記のログボリューム内に保存された前記のデータを前記の少なくとも一つの一次ボリュームに書き込むステップと、
から成ることを特徴とする方法。 - もしも前記の少なくとも一つの一次ボリュームのデータへの読み出し要求が、前記のログボリューム内に保存されたが、まだ前記の少なくとも一つの一次ボリュームに書き込まれていないデータに対応すると、データがあたかも前記の少なくとも一つの一次ボリューム内に含まれているかのようにアプリケーションプログラムに示されるように、前記のログボリューム内に保存された前記の対応するデータが取り出されるステップをステップ(d)の前にさらに含むことを特徴とする請求項1に記載の方法。
- 前記の第一のトランザクションに対して要求された任意の論理デバイスが既に処理中の第二のトランザクションによって使用されているかの通知を返すステップをステップ(a)の後にさらに含むことを特徴とする請求項1に記載の方法。
- 書き込み要求が、トランザクション識別子が前記の書き込み要求に含まれているかを決定することによって、前記の第一のトランザクションに対するものかあるいは通常の書き込み要求に対するものかを決定するステップをステップ(a)の後にさらに含むことを特徴とする請求項1に記載の方法。
- 書き込み要求が、前記の書き込み要求内で指定された論理デバイスが前記の第一のトランザクションに対する書き込みターゲットとして特定されているかを決定することによって、前記の第一のトランザクションに対するものかあるいは通常の書き込み要求に対するものかを決定するステップをステップ(a)の後にさらに含むことを特徴とする請求項1に記載の方法。
- 前記のログボリューム内の前記のデータの実際のストレージ位置を前記の第一の一次ボリューム内の前記のデータのターゲットストレージ位置と関連させるために前記のログボリュームへの各書き込みに続く情報を更新するステップをステップ(c)の後にさらに含むことを特徴とする請求項1に記載の方法。
- ステップ(e)を開始する前に前記の一次ボリュームのスナップショットを生成するステップをステップ(d)の後にさらに含むことを特徴とする請求項1に記載の方法。
- 第一の一次ボリューム、第二の一次ボリューム、および少なくとも一つのログディスクを有する第一のストレージシステム内にデータを保存する方法において、
そこでの実行のための第一のアプリケーションプログラムを有する少なくとも一つのホストが前記のストレージシステムとコミュニケーションを行い、
トランザクションに対してトランザクション識別子を生成するステップと、
前記の第一のアプリケーションプログラムによって呼び出され、前記の第一の一次ボリュームにデータを送る第一のサブアプリケーションから前記のトランザクションに対する第一の書き込みデータを前記の第一のストレージシステムによって受信するステップと、
前記のアプリケーションプログラムによって呼び出され、前記の第二の一次ボリュームにデータを送る第二のサブアプリケーションから前記のトランザクションに対する第二の書き込みデータを前記の第一のストレージシステムによって受信するステップと、
前記の第一の書き込みデータと前記の第二の書き込みデータをログボリューム内に保存するステップと、
前記のトランザクションが完了していることを示す命令を受信するステップと、
前記のトランザクションの完了に続いて、前記の第一の書き込みデータを前記の第一の一次ストレージボリュームに、および前記の第二の書き込みデータを前記の第二の一次ストレージボリュームに適用するステップと、
から成ることを特徴とする方法。 - 前記のトランザクションが完了していることを示す前記の命令を受信する前に読み出し要求を受信するステップと、
前記の読み出し要求がまだ完了していない前記のトランザクションに対するものであるかを決定するステップと、
をさらに含み、
もしも前記の読み出し要求がまだ完了していない前記のトランザクションに対するものであると、およびもしも要求されたデータに対するアドレスが、前記のトランザクションの開始から更新された前記の第一または第二の一次ボリューム内の位置を指し示すと、前記の要求されたデータの最も新しいバージョンが前記のログボリュームから読み出され、前記の読み出し要求への応答で返されることを特徴とする請求項8に記載の方法。 - 前記のトランザクション識別子が前記の読み出し要求に含まれていたかを決定するステップによって、および/または
前記の読み出し要求によってターゲットにされた論理デバイスが前記のトランザクションに対して指定されるかを決定するステップによって、
前記の読み出し要求が前記のトランザクションに対するものであるかを決定するステップをさらに含むことを特徴とする請求項9に記載の方法。 - 前記の第一または第二の一次ボリュームの少なくとも一つのリモートコピーを受信するための少なくとも一つの二次ボリュームと少なくとも一つの二次ログボリュームを有し、前記の第一のストレージシステムとコミュニケーションを行う第二のストレージシステムを提供するステップと、
前記のログボリュームから前記の二次ログボリュームに更新データを送るステップと、
前記のトランザクションの完了の通知を受信すると、前記のトランザクションに関係する前記の二次ログボリューム内のデータを前記の二次ボリュームに適用するステップと、
をさらに含むことを特徴とする請求項8に記載の方法。 - もしも障害が前記の第一のストレージシステムの位置で発生すると、前記の第二のストレージシステムへのアクセスを有する第二のホスト上の第二のアプリケーションプログラムを再開するステップと、
完了していないトランザクションに対するデータを前記の二次ログボリュームから削除するステップと、
完了しているトランザクションに対する前記の二次ログボリュームからのデータを前記の二次ボリュームに適用するステップと、
をさらに含むことを特徴とする請求項11に記載の方法。 - 各一次ボリュームのスナップショットを生成することによって、前記の少なくとも一つの一次ボリュームから前記の少なくとも一つの二次ボリュームにデータの初期コピーを実行するステップと、
前記のスナップショットボリュームから前記の一次ボリュームとミラーペアを形成する二次ボリュームにデータをコピーするステップと、
をさらに含むことを特徴とする請求項11に記載の方法。 - データが前記のログボリュームから前記の二次ログボリュームにコピーされたかを追跡するステップと、
前記のトランザクションの完了に続いて前記のトランザクションに対する全てのデータが前記の二次ログボリュームにコピーされるまで前記のトランザクションに関係する情報の削除を防止するステップと、
をさらに含むことを特徴とする請求項11に記載の方法。 - 前記のストレージシステムが、前記の書き込み要求が前記のトランザクションに対するものであることを決定可能であるために、前記のトランザクションに関係する各書き込み要求と共に前記のトランザクション識別子を含むステップをさらに含むことを特徴とする請求項8に記載の方法。
- ターゲットの論理デバイスが前記のトランザクションに対して指定されているかを決定することによって、各書き込み要求が前記のトランザクションに関係するかを前記の第一のストレージシステムによってチェックするステップをさらに含むことを特徴とする請求項8に記載の方法。
- コントローラと少なくとも一つのストレージデバイスを含む第一のストレージシステムと、
第一のホスト上で動作する第一のアプリケーションを含み、前記の第一のストレージシステムとコミュニケーションを行う前記の第一のホストと、
を備え、
前記のホスト上で動作する第一のモジュールが、前記のアプリケーションによって起動されるトランザクションに対するトランザクション識別子を生成することを、前記のストレージシステムに要求し、
前記のストレージシステム上で動作する第二のモジュールが、書き込み要求が前記のトランザクションに対するものかを決定し、
第一の書き込み要求が前記のトランザクションに対するものである時に、前記の第二のモジュールが第一の書き込みデータを前記の第一の書き込み要求のターゲットである第一の一次ボリュームの代わりにログボリュームに最初は保存されるようにし、
複数のタスクが実行され前記のトランザクションが首尾よく完了した時に、前記の第二のモジュールが、前記のトランザクションに対する前記の第一の書き込みデータを前記のログボリュームから前記の第一の一次ボリュームに適用する通知を前記の第一のモジュールから受信することを特徴とするシステム。 - 前記のトランザクションの部分として呼び出され、第二のホスト上で動作する第二のアプリケーションを有し、前記の少なくとも一つのストレージシステムとコミュニケーションを行う前記の第二のホストをさらに含み、
前記の第二のホストによって書き込まれるデータのターゲットとして前記の第一のストレージシステム上の第二の一次ボリュームをさらに含み、
前記の第二のホストが前記のトランザクションの部分として前記のストレージシステムに第二の書き込み要求を発行する時に、前記の第二のストレージシステムが第二の書き込みデータを前記のログボリュームに保存し、
前記のトランザクションが首尾よく完了する時に、前記の第二のモジュールが、前記のトランザクションに対する前記の第二の書き込みデータを前記のログボリュームから前記の第二の一次ボリュームに適用する通知を前記の第一のモジュールから受信することを特徴とする請求項17に記載のシステム。 - 前記の第二のモジュールが前記のトランザクションに対する読み出し要求を受信する時に、前記の第二のモジュールが、読み出されることを要求されたデータが前記のトランザクションの部分として更新され、前記のログボリュームに保存されたかを決定し、
もしも前記の要求されたデータが前記のログボリュームに保存されたならば、前記の第二のモジュールが前記の要求されたデータの最も最近のバージョンを前記のログボリュームから読み出されるようにし、前記の要求に応答して返されるようにすることを特徴とする請求項17に記載のシステム。 - 二次ボリュームと二次ログボリュームを含み、前記の第一のストレージシステムとコミュニケーションを行う第二のストレージシステムをさらに含み、
リモートコピー機能が前記の第一のストレージシステム上の前記の第一の一次ボリュームと前記の二次ストレージシステム上の前記の二次ボリュームの間で確立され、
前記の第一のストレージシステム上の前記のログディスク上の更新データが前記の第二のストレージシステム上の前記の二次ログディスクにコピーされ、
前記のトランザクションの完了の通知を受信すると、前記のトランザクションに対する前記の二次ログディスク上の前記の更新データが前記の二次ボリュームに適用されることを特徴とする請求項17に記載のシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/471,558 US20070300013A1 (en) | 2006-06-21 | 2006-06-21 | Storage system having transaction monitoring capability |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008004090A true JP2008004090A (ja) | 2008-01-10 |
Family
ID=38874772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007152903A Pending JP2008004090A (ja) | 2006-06-21 | 2007-06-08 | トランザクションモニタリング能力を有するストレージシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070300013A1 (ja) |
JP (1) | JP2008004090A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009251764A (ja) * | 2008-04-02 | 2009-10-29 | Nec Corp | ジョブ管理システム、ジョブ制御方法、及びジョブ制御プログラム |
JP2009282752A (ja) * | 2008-05-22 | 2009-12-03 | Hitachi Systems & Services Ltd | ストレージデバイス及びファイルシステムの記録方法 |
JP2012018449A (ja) * | 2010-07-06 | 2012-01-26 | Fujitsu Ltd | スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ |
JP2012507097A (ja) * | 2008-10-30 | 2012-03-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ストレージ・デバイス上のデータ書き込みを実行する方法、システム、及びコンピュータ・プログラム |
US8560789B2 (en) | 2010-09-07 | 2013-10-15 | Nec Corporation | Disk apparatus, data replicating method onto disk apparatus and program recording medium |
WO2014196077A1 (ja) * | 2013-06-07 | 2014-12-11 | 株式会社日立製作所 | ファイルストレージ装置及びデータ管理方法 |
WO2016038722A1 (ja) * | 2014-09-11 | 2016-03-17 | 株式会社日立製作所 | ストレージシステム及びデータ書込み方法 |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008065392A (ja) * | 2006-09-04 | 2008-03-21 | Hitachi Ltd | ストレージ装置及びこれを用いたデータのバックアップ方法 |
JP4961997B2 (ja) * | 2006-12-22 | 2012-06-27 | 富士通株式会社 | ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム |
KR101336258B1 (ko) * | 2007-05-29 | 2013-12-03 | 삼성전자 주식회사 | 비휘발성 메모리의 데이터 처리 장치 및 방법 |
US8825870B1 (en) * | 2007-06-29 | 2014-09-02 | Symantec Corporation | Techniques for non-disruptive transitioning of CDP/R services |
US8122268B2 (en) * | 2007-07-18 | 2012-02-21 | International Business Machines Corporation | Reducing power consumption of mirrored RAID subsystems |
JP2009093378A (ja) * | 2007-10-05 | 2009-04-30 | Hitachi Ltd | ストレージシステム |
US8019953B2 (en) * | 2008-07-01 | 2011-09-13 | Lsi Corporation | Method for providing atomicity for host write input/outputs (I/Os) in a continuous data protection (CDP)-enabled volume using intent log |
US8214404B2 (en) * | 2008-07-11 | 2012-07-03 | Avere Systems, Inc. | Media aware distributed data layout |
KR101833464B1 (ko) * | 2010-02-02 | 2018-02-28 | 시게이트 테크놀로지 인터내셔날 | 디스크 장치와 외부 저장 매체 사이의 데이터 전송 방법 및 그 방법을 이용하는 시스템 |
KR20110094764A (ko) * | 2010-02-17 | 2011-08-24 | 삼성전자주식회사 | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 |
US8671265B2 (en) | 2010-03-05 | 2014-03-11 | Solidfire, Inc. | Distributed data storage system providing de-duplication of data using block identifiers |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US20130191497A1 (en) * | 2012-01-25 | 2013-07-25 | International Business Machines Corporation | Storage and Transmission of Log Data In a Networked System |
US20130198447A1 (en) * | 2012-01-30 | 2013-08-01 | Infinidat Ltd. | Storage system for atomic write which includes a pre-cache |
US20130198446A1 (en) * | 2012-01-30 | 2013-08-01 | Infinidat Ltd. | Storage system for atomic write of one or more commands |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9098466B2 (en) * | 2012-10-29 | 2015-08-04 | International Business Machines Corporation | Switching between mirrored volumes |
US9152327B2 (en) * | 2013-05-28 | 2015-10-06 | Netapp, Inc. | System and method for detecting failure of storage object images on a storage system and initiating a cleanup procedure |
US9280423B1 (en) * | 2013-06-27 | 2016-03-08 | Emc Corporation | Mounting block level backup images |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US9513829B1 (en) * | 2015-06-29 | 2016-12-06 | EMC IP Holding Company LLC | Transaction logging using round-robin block allocation and I/O size based partitions |
US20170097771A1 (en) * | 2015-10-01 | 2017-04-06 | Netapp, Inc. | Transaction log layout for efficient reclamation and recovery |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
CN107870727B (zh) * | 2016-09-23 | 2021-01-01 | 伊姆西Ip控股有限责任公司 | 用于存储数据的方法和设备 |
US11061909B2 (en) * | 2018-07-19 | 2021-07-13 | Sap Se | Generating a single transactional data stream from multiple database logs |
CN112805949B (zh) * | 2018-10-01 | 2022-08-09 | 华为技术有限公司 | 处理快照创建请求的方法以及存储设备 |
US11334434B2 (en) * | 2020-02-19 | 2022-05-17 | Seagate Technology Llc | Multi-level erasure system with cooperative optimization |
US11372553B1 (en) | 2020-12-31 | 2022-06-28 | Seagate Technology Llc | System and method to increase data center availability using rack-to-rack storage link cable |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07175700A (ja) * | 1993-12-20 | 1995-07-14 | Fujitsu Ltd | データベース管理方式 |
US5649152A (en) * | 1994-10-13 | 1997-07-15 | Vinca Corporation | Method and system for providing a static snapshot of data stored on a mass storage system |
FI109620B (fi) * | 1999-10-26 | 2002-09-13 | Tellabs Oy | Menetelmä ja järjestely atomaaristen päivitysten toteuttamiseksi loogista flashmuistilaitetta käyttäen |
US6678809B1 (en) * | 2001-04-13 | 2004-01-13 | Lsi Logic Corporation | Write-ahead log in directory management for concurrent I/O access for block storage |
US7398422B2 (en) * | 2003-06-26 | 2008-07-08 | Hitachi, Ltd. | Method and apparatus for data recovery system using storage based journaling |
US7111136B2 (en) * | 2003-06-26 | 2006-09-19 | Hitachi, Ltd. | Method and apparatus for backup and recovery system using storage based journaling |
US20050015416A1 (en) * | 2003-07-16 | 2005-01-20 | Hitachi, Ltd. | Method and apparatus for data recovery using storage based journaling |
US20050022213A1 (en) * | 2003-07-25 | 2005-01-27 | Hitachi, Ltd. | Method and apparatus for synchronizing applications for data recovery using storage based journaling |
US20050081099A1 (en) * | 2003-10-09 | 2005-04-14 | International Business Machines Corporation | Method and apparatus for ensuring valid journaled file system metadata during a backup operation |
US7167880B2 (en) * | 2004-04-14 | 2007-01-23 | Hitachi, Ltd. | Method and apparatus for avoiding journal overflow on backup and recovery system using storage based journaling |
US7587573B2 (en) * | 2006-01-18 | 2009-09-08 | International Business Machines Corporation | System and computer program product for shrinking a file system |
-
2006
- 2006-06-21 US US11/471,558 patent/US20070300013A1/en not_active Abandoned
-
2007
- 2007-06-08 JP JP2007152903A patent/JP2008004090A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009251764A (ja) * | 2008-04-02 | 2009-10-29 | Nec Corp | ジョブ管理システム、ジョブ制御方法、及びジョブ制御プログラム |
JP2009282752A (ja) * | 2008-05-22 | 2009-12-03 | Hitachi Systems & Services Ltd | ストレージデバイス及びファイルシステムの記録方法 |
US8904127B2 (en) | 2008-10-30 | 2014-12-02 | International Business Machines Corporation | Performing a data write on a storage device |
JP2012507097A (ja) * | 2008-10-30 | 2012-03-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ストレージ・デバイス上のデータ書き込みを実行する方法、システム、及びコンピュータ・プログラム |
JP2013242921A (ja) * | 2008-10-30 | 2013-12-05 | Internatl Business Mach Corp <Ibm> | ストレージ・デバイス上のデータ書き込みを実行する方法、システム、及びコンピュータ・プログラム |
US8904130B2 (en) | 2008-10-30 | 2014-12-02 | International Business Machines Corporation | Performing a data write on a storage device |
US9448891B2 (en) | 2008-10-30 | 2016-09-20 | International Business Machines Corporation | Performing a data write on a storage device |
US9940067B2 (en) | 2008-10-30 | 2018-04-10 | International Business Machines Corporation | Performing a data write on a storage device |
JP2012018449A (ja) * | 2010-07-06 | 2012-01-26 | Fujitsu Ltd | スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ |
US8560789B2 (en) | 2010-09-07 | 2013-10-15 | Nec Corporation | Disk apparatus, data replicating method onto disk apparatus and program recording medium |
WO2014196077A1 (ja) * | 2013-06-07 | 2014-12-11 | 株式会社日立製作所 | ファイルストレージ装置及びデータ管理方法 |
WO2016038722A1 (ja) * | 2014-09-11 | 2016-03-17 | 株式会社日立製作所 | ストレージシステム及びデータ書込み方法 |
US9952805B2 (en) | 2014-09-11 | 2018-04-24 | Hitachi, Ltd. | Storage system and data write method using a logical volume to either store data successfully onto a first memory or send a failure response to a server computer if the storage attempt fails |
Also Published As
Publication number | Publication date |
---|---|
US20070300013A1 (en) | 2007-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008004090A (ja) | トランザクションモニタリング能力を有するストレージシステム | |
JP5156682B2 (ja) | ストレージシステムにおけるバックアップ方法 | |
CN114341792B (zh) | 存储集群之间的数据分区切换 | |
JP3974538B2 (ja) | 情報処理システム | |
JP4551096B2 (ja) | ストレージサブシステム | |
US7111137B2 (en) | Data storage systems and processes, such as one-way data mirror using write mirroring | |
US7672979B1 (en) | Backup and restore techniques using inconsistent state indicators | |
JP4800031B2 (ja) | ストレージシステム及びスナップショット管理方法 | |
JP5008991B2 (ja) | データのリカバリを制御する装置及び方法 | |
JP4321705B2 (ja) | スナップショットの取得を制御するための装置及び記憶システム | |
JP5705309B2 (ja) | バックアップ・プロセスを処理する方法、システム、及びコンピュータ・プログラム | |
US8745344B2 (en) | Storage system using thin provisioning pool and snapshotting, and controlling method of the same | |
US20050149683A1 (en) | Methods and systems for data backups | |
KR101091235B1 (ko) | 볼륨들의 볼륨 그룹에 대한 백업 동작 수행 | |
US7185048B2 (en) | Backup processing method | |
US7216210B2 (en) | Data I/O system using a plurality of mirror volumes | |
JP2007334877A (ja) | 継続的データ保護環境においてボリューム間の整合性を管理するためのシステムおよび方法 | |
JP2005031716A (ja) | データバックアップの方法及び装置 | |
JP2008065525A (ja) | 計算機システム、データ管理方法及び管理計算機 | |
KR20110086690A (ko) | 저장 장치에 데이터 쓰기를 실행하는 방법 및 시스템 | |
US7487310B1 (en) | Rotation policy for SAN copy sessions of ISB protocol systems | |
KR100819022B1 (ko) | 하나의 타겟 볼륨과 하나의 소스 볼륨 사이의 관계 관리 | |
JP2008242744A (ja) | Cdpに従うリカバリを実行するストレージ装置の管理装置及び方法 | |
JP2006011811A (ja) | 記憶制御システム及び記憶制御方法 | |
US20050149554A1 (en) | One-way data mirror using write logging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090216 |