JP2009211401A - ストレージ装置及びその制御方法 - Google Patents
ストレージ装置及びその制御方法 Download PDFInfo
- Publication number
- JP2009211401A JP2009211401A JP2008053729A JP2008053729A JP2009211401A JP 2009211401 A JP2009211401 A JP 2009211401A JP 2008053729 A JP2008053729 A JP 2008053729A JP 2008053729 A JP2008053729 A JP 2008053729A JP 2009211401 A JP2009211401 A JP 2009211401A
- Authority
- JP
- Japan
- Prior art keywords
- volume
- data
- controller
- cpu
- format
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1466—Management of the backup or restore process to make the backup process non-disruptive
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
- G06F11/2092—Techniques of failing over between control units
Abstract
【課題】本発明は、ユーザの使い勝手を向上させ得るストレージ装置を提案する。
【解決手段】ホスト装置から送信されるデータを格納する第1のボリュームを有し、当該第1のボリュームのバックアップを実施するストレージ装置において、前記ホスト装置から前記第1のボリュームのバックアップ指示を受信すると、前記第1のボリュームのバックアップボリュームである第2のボリュームを作成すると共に、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部を備える。
【選択図】図1
【解決手段】ホスト装置から送信されるデータを格納する第1のボリュームを有し、当該第1のボリュームのバックアップを実施するストレージ装置において、前記ホスト装置から前記第1のボリュームのバックアップ指示を受信すると、前記第1のボリュームのバックアップボリュームである第2のボリュームを作成すると共に、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部を備える。
【選択図】図1
Description
本発明は、ストレージ装置及びその制御方法に関し、例えば、データを格納するボリュームのバックアップを実施するストレージ装置に適用して好適なものである。
従来、ホスト装置から送信されるデータの消失等を未然かつ有効に防止するために、当該データを格納するボリュームのバックアップを実施するストレージ装置が広く知られており、これに関する種々の技術が提案されている。
例えば、特許文献1では、ストレージ装置で記憶ボリュームのデータについての複数の複製を作成する際に、処理装置から複数回の命令を発行する手間を削減し、その際に関連する複数の記憶ボリュームのデータ整合性を保障する技術を提供する。具体的に、特許文献1は、未コピーデータを退避領域に一時退避させる方式である。
特開2006-031579号公報
ところで、近年では、ボリュームのバックアップの実施形態として、マイクロソフト社(登録商標)のサーバOS(Operation System)(ホスト装置)に搭載された機能の1つであるVSS(Volume Shadow Copy Service)と連携することにより、低コストでユーザ負担の少ないバックアップ環境が提供することができるようになされている。
このようなVSS(ホスト装置)との連携では、VSSの仕様により、当該VSSがバックアップコマンドを送信してから完了応答を受信するまでの時間設定が短いため、バックアップコマンドのタイムアウトによるエラーを防止すべく、ストレージ装置においてバックアップについて以下のように運用していた。
すなわち、ストレージ装置では、すべてのボリュームについて予め同一のボリュームを作成しておき、当該ボリューム間のデータが同一になるように常にペア状態を維持しておく。そして、ストレージ装置では、VSSからのバックアップコマンドを受信すると、該当するボリュームのペア状態を解除してボリュームを切り離すことにより、バックアップを運用していた。
しかしながら、ストレージ装置では、このように運用した場合、バックアップを実施しないボリュームを含めすべてのボリュームについてペア状態を維持しておくため、初期設定の際にユーザに煩雑な作業をさせることとなると共に、実際に使用する記憶領域の2倍以上の記憶領域が必要となるという問題がある。
本発明は以上の点を考慮してなされたもので、ユーザの使い勝手を向上させ得るストレージ装置及びその制御方法を提案するものである。
かかる課題を解決するために本発明においては、ホスト装置から送信されるデータを格納する第1のボリュームを有し、当該第1のボリュームのバックアップを実施するストレージ装置において、前記ホスト装置から前記第1のボリュームのバックアップ指示を受信すると、前記第1のボリュームのバックアップボリュームである第2のボリュームを作成すると共に、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部を備える。
また、本発明においては、ホスト装置から送信されるデータを格納する第1のボリュームを有し、当該第1のボリュームのバックアップを実施するストレージ装置の制御方法において、制御部が、前記ホスト装置から前記第1のボリュームのバックアップ指示を受信すると、前記第1のボリュームのバックアップボリュームである第2のボリュームを作成する第1のステップと、制御部が、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する第2のステップとを備える。
従って、バックアップを実施しないボリュームを含めすべてのボリュームについてペア状態を維持することなく、スプリット指示を受信したボリュームのみその都度バックアップボリュームを作成するため、初期設定の際にユーザに煩雑な作業をさせることを未然かつ有効に防止することができると共に、実際に使用する記憶領域以上の記憶領域を不要とすることができる。
本発明によれば、ユーザの使い勝手を向上させ得るストレージ装置及びその制御方法を実現することができる。
以下、本発明の一実施の形態を、図面を参照して詳細に説明する。なお、これにより本発明が限定されるものではない。
図1は、本実施の形態によるストレージシステム1の構成の一例を示している。ストレージシステム1は、ホスト装置2及びストレージ装置3がネットワーク4を介して接続されることにより構成されている。
ホスト装置2は、例えば、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト装置2は、例えば、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置(図示せず)と、例えば、モニタディスプレイやスピーカー等の情報出力装置(図示せず)とを備えている。さらに、ホスト装置2には、例えば、ストレージ装置3が提供する記憶領域を使用するデータベースソフトウェア等のアプリケーションプログラムや、ストレージ装置3のボリューム(後述)のバックアップを実施するVSSプログラム、ネットワーク4を介してストレージ装置3にアクセスするためのアダプタ(図示せず)等が設けられている。
ネットワーク4は、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、専用回線、公衆回線等を場合に応じて適宜用いることができる。LANを介するデータ通信は、例えば、iSCSIや、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに従って行われる。ホスト装置2は、LANを介してストレージ装置3に接続される場合、ファイル名を指定してファイル単位でのデータ入出力を要求する。一方、ホスト装置2は、SANを介してストレージ装置3に接続される場合、ファイバチャネルプロトコルに従って、複数のディスク記憶装置(ディスク装置7(後述))により提供される記憶領域のデータ管理単位であるブロックを単位としてデータ入出力を要求する。ホスト装置2のアダプタは、ネットワーク4がLANである場合、例えば、LAN対応のネットワークカードである。一方、ホスト装置2のアダプタは、ネットワーク4がSANの場合、例えば、ホストバスアダプタである。
ストレージ装置3は、例えば、ディスクアレイシステムとして構成されるものである。この場合、ストレージ装置3は、コントローラ部5及び記憶部6により構成されている。ストレージ装置3は、コントローラ部5を最低1つ備えている必要がある。本実施の形態では、信頼性向上のため、コントローラ部5を2つ備えている。コントローラ部5は、当該ストレージ装置3全体を制御する。記憶部6は、ホスト装置2から送信されるデータを格納するディスク装置7から構成されている。
コントローラ部5は、上位インタフェース11、CPU12、キャッシュメモリ13、ローカルメモリ14及びドライブインタフェース15により構成されている。
上位インタフェース11は、ホスト装置2とネットワーク4を介して接続され、ホスト装置2から送信される各種コマンドやデータの送受信を制御する。上位インタフェース11は、ネットワーク4の種類に応じた種々のインタフェースを用いることができる。
CPU12は、コントローラ部5ごとに1つ備えられる。CPU12は、コントローラ部5全体を制御し、例えば、上位インタフェース11から送信されたコマンドを解釈して、各構成要素に指示を送信する。また、CPU12は、ディスク装置7に対して、RAID(Redundant Arrays of Independent Disks)制御を行うことにより、ストレージ装置3の信頼性、可用性及び性能を向上させることができる。
この場合、CPU12は、ディスク装置7をRAID方式で運用する。CPU12は、1又は複数のディスク装置7により提供される物理的な記憶領域(RAIDグループ)上に、1又は複数の論理的なボリューム(以下、これをボリュームと呼ぶ)を設定する。そして、データは、このボリューム内に所定の大きさのブロック(以下、これを論理ブロックと呼ぶ)単位で記憶される。
各ボリュームには、それぞれ固有の識別子(以下、これをLU(Logical Unit number)と呼ぶ)が付与される。本実施の形態の場合、データの入出力は、このLUと、各論理ブロックにそれぞれ付与されるその論理ブロックに固有の番号(LBA :Logical Block Address)とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
キャッシュメモリ13は、ホスト装置2から受信したデータを一時的に格納したり、ストレージ装置3内部で使用する各種テーブルを格納する。この場合、キャッシュメモリ13の一部は、他のコントローラ部5との共有メモリとして使用されており、一方のコントローラ部5が閉塞(故障)した場合に、正常な別のコントローラ部5に情報を引き継げるようになされている。
図2は、キャッシュメモリ13に格納されている各種テーブルの一例を示している。キャッシュメモリ13には、セグメント管理テーブル21、フォーマット管理ビットマップ22、コピー管理ビットマップ23及びオーナー権管理テーブル24が格納されている。なお、セグメント管理テーブル21、フォーマット管理ビットマップ22、コピー管理ビットマップ23及びオーナー権管理テーブル24の具体的な構成については、後述する。
ローカルメモリ14は、コントローラ部5内部で使用する各種プログラムや、各種テーブルを格納する。
図3は、ローカルメモリ14に格納されている各種プログラム及び各種テーブルの一例を示している。ローカルメモリ14には、ペア管理テーブル31、セグメント管理テーブル32、ホストコマンド管理テーブル33及び制御プログラム34が格納されている。なお、ペア管理テーブル31、セグメント確保テーブル32及びホストコマンド管理テーブル33の具体的な構成並びに制御プログラム34の具体的な処理については、後述する。
ドライブインタフェース15は、記憶部6のディスク装置7と接続され、ホスト装置2から送信されるデータの送受信を制御する。ドライブインタフェース15は、ファイバチャネル、SAS(Serial Attached SCSI)、SATA(Serial ATA)等の種類に応じた種々のインタフェースを用いることができる。
図4は、ストレージ装置3がライトデータを受信して、ディスク装置7に格納する仕組みを示している。CPU12は、ホスト装置2からライトコマンドを受信すると、ホスト装置2から送信されるライトデータをキャッシュメモリ13のライト面13Aに格納する(図4(1))。続いて、CPU12は、ライトデータをディスク装置7に格納する契機になったときに、当該ライトデータのパリティデータを作成し、ライトデータ及びパリティデータをキャッシュメモリ13のリード面13Bに格納する(図4(2))。また、CPU12は、当該ライトデータをキャッシュメモリ13のライト面13Aから削除する。続いて、CPU12は、その後、所定のタイミングで該当するディスク装置7にライトデータ及びパリティデータを格納する(図4(3))。
図5は、セグメント管理テーブル21の構成の一例を示している。セグメント管理テーブル21は、キャッシュメモリ13上で管理されるデータの最小単位であるセグメント単位で存在し、当該セグメントの状態や属性を管理する。セグメント管理テーブル21は、ライト面欄21A、リード面欄21B、書込み抑止欄21Cその他の欄により構成されている。
ライト面欄21Aは、セグメントがキャッシュメモリ13のライト面13Aに格納されているか否かを管理する。例えば、ライト面欄21Aには、セグメントがキャッシュメモリ13のライト面13Aに格納されている場合、「1」が格納される一方、セグメントがキャッシュメモリ13のライト面13Aに格納されていない場合、「0」が格納される。
リード面欄21Bは、セグメントがキャッシュメモリ13のリード面13Bに格納されているか否かを管理する。例えば、リード面欄21Bには、セグメントがキャッシュメモリ13のリード面13Bに格納されている場合、「1」が格納される一方、セグメントがキャッシュメモリ13のリード面13Bに格納されていない場合、「0」が格納される。
書込み抑止欄21Cは、セグメントをディスク装置7に格納するのを禁止するか否かを管理する。例えば、書込み抑止欄21Cには、セグメントをディスク装置7に格納するのを禁止する場合、「1」が格納される一方、セグメントをディスク装置7に格納するのを許可する場合、「0」が格納される。すなわち、CPU12は、書込み抑止欄21Cに「1」が格納されている場合、該当するセグメントをディスク装置7に格納しないようになされている。
セグメント管理テーブル21には、セグメントがキャッシュメモリ13のライト面13Aに格納されている場合、当該ライトデータ(セグメント)をディスク装置7に格納することができないため、ライト面欄21Aに「1」が格納されると共に、書込み抑止欄21Cに「1」が格納される。
また、セグメント管理テーブル21は、セグメントがキャッシュメモリ13のリード面13Bに移動した場合、ライト面欄21Aが「0」に変更されると共に、リード面欄21Bが「1」に変更され、書込み抑止欄21Cが「0」に変更される。
図6は、フォーマット管理ビットマップ22の構成の一例を示している。フォーマット管理ビットマップ22は、バックアップを実施した場合に、バックアップ先のボリューム(以下、これをセカンダリボリューム42(S−VOl)(図17等)と呼ぶ)のフォーマットが完了したか否かをセグメントごとに管理する。例えば、フォーマット管理ビットマップ22には、セカンダリボリューム42のボリュームのセグメントのフォーマットが完了した場合、該当するビットマップに「0」が格納される一方、セカンダリボリューム42のボリュームのセグメントのフォーマットが完了していない場合、該当するビットマップに「1」が格納される。
図7は、コピー管理ビットマップ23の構成の一例を示している。コピー管理ビットマップ22は、バックアップを実施した場合に、バックアップ対象のボリューム(以下、これをプライマリボリューム41(P−VOl)(図17等)と呼ぶ)からセカンダリボリューム42へのコピーが完了したか否かをセグメントごとに管理する。例えば、コピー管理ビットマップ22には、プライマリボリューム41からセカンダリボリューム42へのコピーが完了した場合、該当するビットマップに「0」が格納される一方、プライマリボリューム41からセカンダリボリューム42へのコピーが完了していない場合、該当するビットマップに「1」が格納される。
図8は、オーナー権管理テーブル24の構成の一例を示している。オーナー権管理テーブル24は、ボリュームのオーナー権(ボリュームを管理する権限)をどちらのコントローラ部5が有しているかをボリュームごとに管理する。オーナー権管理テーブル24は、LUN欄24A及びオーナー権欄24Bにより構成されている。
LUN欄24Aは、ボリュームのLUNを一意に識別するためのLUN番号を管理する。オーナー権欄24Bは、オーナー権を有するコントローラ部5を一意に識別するためのオーナー権番号を管理する。例えば、LUN番号が「0」のボリュームは、コントローラ番号が「0」のコントローラ部5により管理されていることとなる。
図9は、ペア管理テーブル31の構成の一例を示している。ペア管理テーブル31は、プライマリボリューム41とセカンダリボリューム42のペア状態を管理する。ペア管理テーブル31は、コントローラ部5ごとに管理されており、コントローラ部5に故障等が発生した場合、他方のコントローラ部5のペア管理テーブル31にペア状態がコピーされて処理を継続することができるようになされている。ペア管理テーブル31は、P−VOL欄31A、S−VOL欄31B及びペア状態欄31Cにより構成されている。
P−VOL欄31Aは、プライマリボリューム41を一意に識別するためのP−VOL番号を管理する。S−VOL欄31Bは、セカンダリボリューム42を一意に識別するためのS−VOL番号を管理する。ペア状態欄31Cは、プライマリボリューム41とセカンダリボリューム42のペア状態を管理する。例えば、ペア状態欄31Cには、プライマリボリューム41からセカンダリボリューム42にデータがコピーされている場合、「コピー状態」が格納される。また、ペア状態欄31Cには、プライマリボリューム41とセカンダリボリューム42とが分割されている場合、「スプリット状態」が格納される。さらに、ペア状態欄31Cには、プライマリボリューム41とセカンダリボリューム42とが分割されているが、バックグラウンドでコピー(後述)されている場合、「スプリット状態(コピー中)」が格納される。
図10は、セグメント確保テーブル32の構成の一例を示している。セグメント確保テーブル32は、データのセグメントがどのジョブにより実行(確保)されているかをセグメントごとに管理する。セグメント確保テーブル32は、セグメント番号欄32A及びジョブ番号欄32Bにより構成されている。セグメント番号欄32Aは、データのセグメントを一意に識別するためのセグメント番号を管理する。ジョブ番号欄32Bは、データのセグメントを実行(確保)しているジョブを一意に識別するためのジョブ番号を管理する。例えば、セグメント番号が「0」のセグメントは、ジョブ番号が「1」のジョブが実行されている。なお、ジョブ番号欄32Bには、セグメントに対してジョブが実行されていない場合、例えば、「未使用」が格納される。
図11は、ホストコマンド管理テーブル33の構成の一例を示している。ホストコマンド管理テーブル33は、ホスト装置2から送信されたコマンドについてのジョブが完了し、ホスト装置2に応答したか否かを示すステータスをコマンドごとに管理する。ホストコマンド管理テーブル33は、コマンド番号欄33A、ジョブ番号欄33B、コマンド種別欄33C及びステータス欄33Dにより構成されている。
コマンド番号欄33Aは、ホスト装置2から送信されたコマンドを一意に識別するためのコマンド番号を管理する。ジョブ番号欄32Bは、当該コマンドのジョブを一意に識別するためのジョブ番号を管理する。コマンド種別欄33Cは、当該コマンドのコマンド種別を管理する。例えば、コマンド種別欄33Cには、当該コマンドがライトコマンドジョブである場合、「ライト」が格納され、リードコマンドジョブである場合、「リード」が格納される。ステータス欄33Dは、当該コマンドについてのジョブが完了し、ホスト装置2に応答したか否かを管理する。例えば、ステータス欄33Dには、ジョブが完了し、ホスト装置2への応答が完了した場合、「完了」が格納され、ジョブが実行中である場合、「ホスト応答待ち」が格納される。
図12は、この記憶システム1におけるバックアップ処理に関する、ホスト装置2及びストレージ装置3の具体的な処理手順を示したシーケンスチャートの一例である。
ホスト装置2は、例えば、ホスト装置2のユーザの操作部(図示せず)の操作により、セカンダリボリューム42のLUNの登録指示を受信すると、VSSプログラムを実行することにより、図12に示すバックアップ処理手順RT1に従って、当該ユーザから指示されたセカンダリボリューム42のLUNを登録し(SP1)、例えば、ホスト装置2の表示部(図示せず)に表示する等により、登録完了応答をユーザに対して通知する。
続いて、ホスト装置2は、例えば、ホスト装置2のユーザの操作部(図示せず)の操作により、プライマリボリューム41を指定してバックアップ用ボリューム(セカンダリボリューム42)の作成指示を受信すると、指示されたプライマリボリューム41及びセカンダリボリューム42をストレージ装置3に通知して、当該プライマリボリューム41及びセカンダリボリューム42のペアのスプリット指示をストレージ装置3に送信する(SP2)。
続いて、ストレージ装置3は、ホスト装置2からの通知及びスプリット指示を受信すると、制御プログラム34を実行することにより、当該通知及びスプリット指示に基づいて、指示されたプライマリボリューム41に対応するセカンダリボリューム42を作成する(SP3)。続いて、ストレージ装置3は、当該セカンダリボリューム42のフォーマット管理ビットマップ22を作成して、セカンダリボリューム42のフォーマット状態の管理を開始する(SP4)。
続いて、ストレージ装置3は、通知されたプライマリボリューム41及びセカンダリボリューム42にてペア作成を開始する(SP5)。続いて、ストレージ装置3は、当該プライマリボリューム41及びセカンダリボリューム42をペア管理テーブル31に登録し、ペア状態を「コピー状態」に設定する(SP6)。
続いて、ストレージ装置3は、当該プライマリボリューム41のコピー管理ビットマップ23を作成して、プライマリボリューム41のコピー状態の管理を開始する(SP7)。続いて、ストレージ装置3は、通知されたプライマリボリューム41及びセカンダリボリューム42に対してスプリット処理を実行する(SP8)。
続いて、ストレージ装置3は、ペア管理テーブル31に登録したプライマリボリューム41及びセカンダリボリューム42のペア状態を「スプリット状態(コピー中)」に変更する(SP9)。続いて、ストレージ装置3は、スプリット指示の完了応答をホスト装置2に送信する。
やがて、ホスト装置2は、ストレージ装置3からスプリット指示に対する完了応答を受信すると、セカンダリボリューム42の作成指示の完了応答をユーザに対して通知し、この後、図12に示すバックアップ処理手順RT1を終了する。
この場合、ストレージシステム1では、セカンダリボリューム42のフォーマットの開始時点から、ホスト装置2からのデータのライト(書込み)が可能となるが、ストレージ装置3のスプリット処理の実行までライトをすることができないように抑止される。すなわち、ストレージシステム1では、セカンダリボリューム42のフォーマット前については、フォーマットがされていないため、データのライトをすることができない。その後、ストレージシステム1では、トレージ装置3のスプリット処理の実行後、データのライトの抑止が解除されて、ホスト装置2からのセカンダリボリューム42へのデータのライトが可能となる。なお、当該データのライトの抑止については、セグメント管理テーブル21の書込み抑止欄21Cに格納される書込み抑止フラグとは異なるものである。
図13は、このストレージシステム1におけるストレージ装置3のバックアップ処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。
本フローチャートでは、ホスト装置2がVSSプログラムを実行してバックアップ指示を行なった場合における、ストレージ装置3でのバックアップに用いるスナップショットを作成する手順について説明している。
従来のバックアップ方法では、使用されているボリュームから直接データをテープ装置等のバックアップ先ボリュームにコピーしていたため、使用中のファイルやロック中のファイルについてバックアップすることができない。また、従来のバックアップ方法では、バックアップのデータコピーには多くの時間を要することから、データをコピーするタイミングが異なるため、ボリューム内部での整合性がとれないという問題がある。
ホスト装置2がVSSプログラムを実行してバックアップ指示を行なった場合におけるバックアップ方法では、バックアップを採取したいボリュームから直接データをコピーせず、ある時点でのデータ(スナップショット)を採取し、そのスナップショットをテープ装置などのバックアップ先ボリュームにコピーする。ホスト装置2は、このスナップショットを採取する際に、VSSプログラム及びOSを連携して一時的にI/Oコマンドを停止させて、バックアップするデータを確定させる。
VSSプログラムでは、この一時的にI/Oコマンドを停止させる時間を30秒以内に設定している。すなわち、ストレージ装置3では、ホスト装置2がスプリット指示を送信してからスプリット指示の完了応答を受信するまでの処理を30秒以内に終わらせる必要がある。従って、当該バックアップ方法では、予めプライマリボリューム41と同じサイズのセカンダリボリューム42を作成して、ホスト装置2に通知しておき、ストレージ装置3側で常時プライマリボリューム41とセカンダリボリューム42のペア状態を維持しておき、スプリット指示があったときに、スプリット処理をすることで、30秒以内にバックアップ処理を終了させていた。
しかしながら、当該バックアップ方法では、バックアップを採取するボリュームと同じサイズのボリュームを用意することから2倍のサイズの記憶容量が必要となり、予め、ユーザがバックアップ用のボリュームを作成、フォーマット、そして、ペア作成するといった煩雑な作業が必要となっていた。
本実施の形態のストレージシステム1では、ホスト装置2からのスプリット指示があった後に、セカンダリボリューム42の作成、フォーマット、ペア作成及びスプリットを行なうようにする。すなわち、ストレージシステム1では、ホスト装置2に対して、予め、バックアップ採取時に使用可能なLUN番号を通知しておく。次に、ストレージシステム1では、ホスト装置2がVSSプログラムを実行してバックアップを行う場合、ストレージ装置3に対して、プライマリボリューム41のスプリット指示をストレージ装置3に送信する。このとき、ホスト装置2は、同時にプライマリボリューム41のLUN番号等についてストレージ装置3に通知する。
次に、ストレージシステム1では、ストレージ装置3において、通知されたLUN番号のプライマリボリューム41のサイズを取得し、セカンダリボリューム42を作成し、フォーマットを実施する。この場合、ストレージシステム1では、フォーマットについてはバックグラウンドにて実施することとし、当該フォーマットの実施中にプライマリボリューム41とセカンダリボリューム42にてペア作成を実施する。
ここで、通常では、プライマリボリューム41からセカンダリボリューム42へのデータコピーが行なわれて、データが一致した時点でペア作成が完了するが、本実施の形態のストレージシステム1では、データコピー中にペア作成が完了したこととして、バックグラウンドにてコピーを実施する。
そして、ストレージシステム1では、この時点で、ホスト装置2からのスプリット指示に対して完了応答を送信することで、ホスト装置2に即座にバックアップ処理を完了したと判断させることができるようになされている。以下、フローチャートに従って説明する。
CPU12は、例えば、ホスト装置2から上述の通知及びスプリット指示を受信すると、制御プログラム34を実行することにより、図13に示すバックアップ処理手順RT2に従って、指示されたプライマリボリューム41のサイズとLUN番号をもとに、セカンダリボリューム42となるボリューム(LU)を作成する(SP11)。なお、スプリット指示は、セカンダリボリューム42の作成指示である。また、ホスト装置2に通知されたプライマリボリューム41のLUN番号は、ストレージ装置3側で管理されるわけではなく、ホスト装置2において管理しておく。
続いて、CPU12は、セカンダリボリューム42のフォーマットを開始する(SP12)。すなわち、CPU12は、スプリット指示があったときに、キャッシュメモリ13上にフォーマット管理ビットマップ22を作成し、全ビットを「ON(1)」にしておき、フォーマットが完了すると、該当するビットを「OFF(0)」に変更する。なお、CPU12は、セカンダリボリューム42のフォーマットをバックグラウンドで実施するため、セカンダリボリューム42のフォーマットを未完了のままで次のステップに進む。
続いて、CPU12は、セカンダリボリューム42のフォーマットを未完了のままで、通知されたプライマリボリューム41及びセカンダリボリューム42にてペア作成を開始する(SP13)。この場合、CPU12は、当該プライマリボリューム41及びセカンダリボリューム42をペア管理テーブル31に登録し、ペア状態を「コピー状態」に設定する。
続いて、CPU12は、ペア状態を即座に「スプリット状態」に遷移する(SP14)。
この場合、CPU12は、ペア管理テーブル31に登録したプライマリボリューム41及びセカンダリボリューム42のペア状態を「スプリット状態(コピー中)」に変更し、ペア状態を「コピー状態」から「スプリット状態」に遷移させると共に、ストレージ装置3内部において、バックグラウンドにてプライマリボリューム41からセカンダリボリューム42へのデータのコピー処理を実施する。
この場合、CPU12は、ペア管理テーブル31に登録したプライマリボリューム41及びセカンダリボリューム42のペア状態を「スプリット状態(コピー中)」に変更し、ペア状態を「コピー状態」から「スプリット状態」に遷移させると共に、ストレージ装置3内部において、バックグラウンドにてプライマリボリューム41からセカンダリボリューム42へのデータのコピー処理を実施する。
この場合、CPU12は、コピー処理を開始するときに、キャッシュメモリ13上にコピー管理ビットマップ23を作成し、全ビットを「ON(1)」にしておき、コピーが完了すると、該当するビットを「OFF(0)」に変更する。なお、CPU12は、プライマリボリューム41からセカンダリボリューム42へのデータのコピーをバックグラウンドで実施するため、プライマリボリューム41からセカンダリボリューム42へのデータのコピーを未完了のままで次のステップに進む。またなお、CPU12は、バックグラウンドのデータのコピー処理が完了すると、ペア管理テーブル31に登録したプライマリボリューム41及びセカンダリボリューム42のペア状態を「スプリット状態」に変更する。
また、CPU12は、セカンダリボリューム42にデータをコピーする際、コピー管理ビットマップ23を参照する前に、フォーマット管理ビットマップ22の該当するビットを参照し、未フォーマット(ビットが「ON」のまま)であれば、先に該当するビットのフォーマットを実施する。そして、CPU12は、フォーマットが完了すると、コピー管理ビットマップ23を参照して、セカンダリボリューム42の該当箇所にデータをコピーする。
続いて、CPU12は、セカンダリボリューム42のフォーマット及びプライマリボリューム41からセカンダリボリューム42へのデータのコピーを未完了のままで、スプリット指示の完了応答をホスト装置2に送信する(SP15)。
やがて、CPU12は、この後、図13に示すバックアップ処理手順RT2を終了する(SP16)。
図14は、このストレージシステム1におけるストレージ装置3のセカンダリボリューム42のフォーマット処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。
CPU12は、例えば、セカンダリボリューム42となるボリュームを作成する(SP11)と、制御プログラム34を実行することにより、図14に示すセカンダリボリューム42のフォーマット処理手順RT3に従って、当該セカンダリボリューム42のフォーマット管理ビットマップ22をキャッシュメモリ13上に作成する(SP21)。
続いて、CPU12は、セカンダリボリューム42のフォーマット管理ビットマップ22のフラグ(ビット)をすべて「ON(1)」(フォーマット未完了)に設定する(SP22)。続いて、CPU12は、フォーマット管理サイズ(ビット)の領域のフォーマットを実施する(SP23)。
続いて、CPU12は、当該領域のフォーマットが完了するのを待機モードで待ち受ける(SP24)。やがて、CPU12は、当該領域のフォーマットが完了すると、フォーマット管理ビットマップ22のフォーマットが終了した領域のフラグを「OFF(0)」(フォーマット完了)に変更する(SP26)。
続いて、CPU12は、フォーマット管理ビットマップ22のフラグがすべて「OFF(0)」に変更されたか否かをチェックする(SP26)。そして、CPU12は、フォーマット管理ビットマップ22のフラグがすべて「OFF(0)」に変更されていない場合(SP26:NO)、ステップSP23に戻り、フォーマットされていないフォーマット管理サイズの領域のフォーマットを実施し(SP23)、この後、上述の場合と同様の処理を繰り返す(SP23〜SP26)。これに対して、CPU12は、フォーマット管理ビットマップ22のフラグがすべて「OFF(0)」に変更された場合(SP26:YES)、セカンダリボリューム42のフォーマットが完了したため、フォーマット管理ビットマップ22をキャッシュメモリ13から削除する(SP27)。
やがて、CPU12は、この後、図14に示すセカンダリボリューム42のフォーマット処理手順RT3を終了する(SP28)。
なお、CPU12は、セカンダリボリューム42の領域の中で未フォーマットの領域にプライマリボリューム41からデータがコピーされる場合、未フォーマットの領域に対してディスク装置7へのライトを行なわないようにチェックしている。CPU12は、未フォーマットである場合、当該領域をフォーマットするためのフォーマットデータをキャッシュメモリ13上に作成して、当該フォーマットデータをディスク装置7にライトする。その後、CPU12は、キャッシュメモリ13上にあるプライマリボリューム41からのセカンダリボリューム42のディスク装置7に該当するデータをライトする。
図15は、このストレージシステム1におけるストレージ装置3のプライマリボリューム41からセカンダリボリューム42へのデータコピー処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。
CPU12は、例えば、プライマリボリューム41及びセカンダリボリューム42にてペア作成を開始する(SP13)と、制御プログラム34を実行することにより、図15に示すプライマリボリューム41からセカンダリボリューム42へのデータコピー処理手順RT4に従って、キャッシュメモリ13上のペア管理テーブル31の該当するプライマリボリューム41及びセカンダリボリューム42のペア状態を「コピー状態」から「スプリット状態(コピー中)」に変更する(SP31)。この場合、ペア管理テーブル31は、コントローラ部5ごとに存在し、ペア作成を行なう際に、プライマリボリューム41及びセカンダリボリューム42が登録されている。
続いて、CPU12は、プライマリボリューム41のコピー管理ビットマップ23をキャッシュメモリ13上に作成する(SP32)。この場合、CPU12は、プライマリボリューム41のサイズに応じて、コピー管理ビットマップ23を作成する。CPU12は、1回のコピーサイズ単位にコピー管理ビットマップ23の1ビット分を割り当てる。続いて、CPU12は、プライマリボリューム41のコピー管理ビットマップ23のフラグ(ビット)をすべて「ON(1)」(コピー未完了)に設定する(SP33)。
続いて、CPU12は、プライマリボリューム41からセカンダリボリューム42への1回のコピーサイズ分のデータのコピーを実施する(SP34)。続いて、CPU12は、1回のコピーサイズ分のデータのコピーが完了するのを待機モードで待ち受ける(SP35)。やがて、CPU12は、1回のコピーサイズ分のデータのコピーが完了すると、コピー管理ビットマップ23のコピーが終了した領域のフラグを「OFF(0)」(コピー完了)に変更する(SP36)。
続いて、CPU12は、コピー管理ビットマップ23のフラグがすべて「OFF(0)」に変更されたか否かをチェックする(SP37)。そして、CPU12は、コピー管理ビットマップ23のフラグがすべて「OFF(0)」に変更されていない場合(SP37:NO)、ステップSP34に戻り、コピーされていないコピー管理サイズの領域の1回のコピーサイズ分のデータのコピーを実施し(SP34)、この後、上述の場合と同様の処理を繰り返す(SP34〜SP37)。これに対して、CPU12は、コピー管理ビットマップ23のフラグがすべて「OFF(0)」に変更された場合(SP37:YES)、プライマリボリューム41からセカンダリボリューム42へのデータコピーが完了したため、ペア管理テーブル31の該当するプライマリボリューム41及びセカンダリボリューム42のペア状態を「スプリット状態(コピー中)」から「スプリット状態」に変更する(SP38)。
やがて、CPU12は、この後、図15に示すプライマリボリューム41からセカンダリボリューム42へのデータコピー処理手順RT4を終了する(SP39)。
なお、プライマリボリューム41からセカンダリボリューム42へのデータコピー処理は、従来の処理の場合でも、本実施の形態に係る処理の場合でも、基本的には同一である。しかしながら、CPU12は、従来の処理の場合、プライマリボリューム41からセカンダリボリューム42へのデータコピー中であることをホスト装置2に対して提示するため、当該コピー中にホスト装置2からプライマリボリューム41へのライトがあれば、ライトしたデータを反映してセカンダリボリューム42にライトを行なう。
しかしながら、CPU12は、本実施の形態に係る処理の場合、プライマリボリューム41からセカンダリボリューム42へのデータコピーの完了応答をホスト装置2に送信するため、プライマリボリューム41へのデータのライトがあったときに、当該データがセカンダリボリューム42にコピーされていないのであれば、プライマリボリューム41へのデータのライトを抑止してセカンダリボリューム42にデータ(旧データ)をコピーする。
図16は、このストレージシステム1におけるストレージ装置3のスプリット指示への応答後のプライマリボリューム41へのライト処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。また、図17は、ストレージ装置3における当該プライマリボリューム41へのライト処理の流れを示す概念図の一例である。
本実施の形態におけるバックアップ方法では、ホスト装置2からのスプリット指示に対して、プライマリボリューム41からセカンダリボリューム42へのデータコピーが完了する前にスプリット指示の完了応答を行なうため、バックグラウンドにおいてプライマリボリューム41からセカンダリボリューム42へのデータコピーが行なわれており、セカンダリボリューム42へのデータ反映が完全に完了していない。
このため、本実施の形態におけるバックアップ方法では、スプリット指示の完了応答後にホスト装置2からプライマリボリューム41に対してライトコマンドが送信されたとき、ライトコマンドによってライトされる領域がすでにセカンダリボリューム42にコピーされているか否かを確認する必要がある。また、本実施の形態におけるバックアップ方法では、セカンダリボリューム42に関して、プライマリボリューム41からのデータのライトを行なう場合に、ライトされる領域のフォーマットが完了しているか否かを確認する必要がある。
本実施の形態のストレージシステム1では、プライマリボリューム41上のデータがセカンダリボリューム42にコピーされていない領域に、ライトコマンドによるデータのライトが行なわれる場合、受信したライトコマンドのデータをキャッシュメモリ13上からセカンダリボリューム42のディスク装置7にライトをすることを抑止する。そして、本実施の形態のストレージシステム1では、セカンダリボリューム42にプライマリボリューム41のディスク装置7からキャッシュメモリ13上にデータのリード(読出し)を行ない、セカンダリボリューム42のディスク装置7にライトを行なった後に、プライマリボリューム41のディスク装置7へのキャッシュメモリ13上のデータのライトを許可する。
また、本実施の形態のストレージシステム1では、プライマリボリューム41からセカンダリボリューム42へのデータコピーの反映状態をコピー管理ビットマップ23により管理し、セカンダリボリューム42にデータコピーを行なった時点でコピー管理ビットマップ23の該当するフラグを「OFF」に変更する。また、本実施の形態のストレージシステム1では、キャッシュメモリ13上のライトデータをプライマリボリューム41のディスク装置7にライトしないようにするために、データのセグメントごとに存在するセグメント管理テーブル21の書込み抑止欄21Cのフラグを「ON(1)」にすることで、当該セグメントのプライマリボリューム41のディスク装置7へのライトを未然かつ有効に防止し、キャッシュメモリ13上に格納し続けさせる。以下、フローチャートに従って説明する。
CPU12は、例えば、ホスト装置2からプライマリボリューム41へのライトコマンドを受信する(図17(1))と、制御プログラム34を実行することにより、図16に示すストレージ装置3のスプリット指示への応答後のプライマリボリューム41へのライト処理手順RT5に従って、受信したライトデータをキャッシュメモリ13上に格納する(SP41)(図17(2))。
続いて、CPU12は、当該ライトコマンドの処理を未完了のままで当該ライトコマンドの完了応答をホスト装置2に送信する(SP42)(図17(3))。続いて、CPU12は、コピー管理ビットマップ23を参照し、ライトデータを格納する領域のビットが「OFF(0)」(コピー済み)であるか否かをチェックする(SP43)。そして、CPU12は、ライトデータを格納する領域のビットが「OFF(0)」である場合(SP43:YES)、ステップSP52に進む。これに対して、CPU12は、ライトデータを格納する領域のビットが「OFF(0)」でない場合(SP43:NO)、ライトデータを格納する領域に対応するセグメントの制御情報を管理しているセグメント管理テーブル21の書込み禁止フラグを「ON(1)」に変更して、プライマリボリューム41のディスク装置7への当該ライトデータのライトを抑止する(SP44)。
続いて、CPU12は、プライマリボリューム41のディスク装置7からの該当する領域のデータをキャッシュメモリ13にリードし、セカンダリボリューム42へのライト用のデータを作成する(SP45)(図17(4)(5))。続いて、CPU12は、コピー管理ビットマップ23のライトデータを格納する領域のビットを「OFF(0)」に変更する(SP46)。続いて、CPU12は、ライトデータのセグメントを格納する領域のセグメント管理テーブル21の書込み禁止フラグを「OFF(0)」に変更する(SP47)。
続いて、CPU12は、セカンダリボリューム42のフォーマット管理ビットマップ22を参照し、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」(フォーマット済み)であるか否かをチェックする(SP48)。そして、CPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」である場合(SP48:YES)、ステップSP51に進む。これに対して、CPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」でない場合(SP48:NO)、当該領域のフォーマットを実施する(SP49)。
続いて、CPU12は、フォーマット管理ビットマップ22のセカンダリボリューム42へのライト用のデータを格納する領域のビットを「OFF(0)」(フォーマット済み)に変更する(SP50)。続いて、CPU12は、ライト用のデータをセカンダリボリューム42のディスク装置7にライトする(SP51)(図17(6))。続いて、CPU12は、ライトデータをプライマリボリューム41のディスク装置7に非同期にライトする(SP52)。
やがて、CPU12は、この後、図16に示すストレージ装置3のスプリット指示への応答後のプライマリボリューム41へのライト処理手順RT5を終了する(SP53)。
図18は、このストレージシステム1におけるストレージ装置3のスプリット指示への応答後のセカンダリボリューム42へのライト処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。また、図19は、ストレージ装置3における当該セカンダリボリューム42へのライト処理の流れを示す概念図の一例である。
CPU12は、例えば、ホスト装置2からセカンダリボリューム42へのライトコマンドを受信する(図19(1))と、制御プログラム34を実行することにより、図18に示すストレージ装置3のスプリット指示への応答後のセカンダリボリューム42へのライト処理手順RT6に従って、受信したライトデータをキャッシュメモリ13上に格納する(SP61)(図19(2))。
続いて、CPU12は、当該ライトコマンドの完了応答をホスト装置2に送信する(SP62)(図19(3))。続いて、CPU12は、コピー管理ビットマップ23を参照し、ライトデータを格納するセカンダリボリューム42の領域に対応する、プライマリボリューム41の領域のビットが「OFF(0)」(コピー済み)であるか否かをチェックする(SP63)。そして、CPU12は、当該領域のビットが「OFF(0)」である場合(SP63:YES)、ステップSP72に進む。これに対して、CPU12は、当該領域のビットが「OFF(0)」でない場合(SP63:NO)、ホスト装置2から受信したライトデータのセグメントごとに存在するセグメント管理テーブル21の書込み禁止フラグを「ON(1)」に変更して、セカンダリボリューム42のディスク装置7への当該ライトデータのライトを抑止する(SP64)。
続いて、CPU12は、プライマリボリューム41のディスク装置7の該当する領域のデータをキャッシュメモリ13にリードし、セカンダリボリューム42へのライト用のデータを作成する(SP65)(図19(4)(5))。続いて、CPU12は、コピー管理ビットマップ23のライトデータを格納するセカンダリボリューム42の領域に対応する、プライマリボリューム41の領域のビットを「OFF(0)」に変更する(SP66)。
続いて、CPU12は、セカンダリボリューム42のフォーマット管理ビットマップ22を参照し、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」(フォーマット済み)であるか否かをチェックする(SP67)。そして、CPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」である場合(SP67:YES)、ステップSP70に進む。これに対して、CPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」でない場合(SP67:NO)、当該領域のフォーマットを実施する(SP68)。
続いて、CPU12は、フォーマット管理ビットマップ22のセカンダリボリューム42へのライト用のデータを格納する領域のビットを「OFF(0)」(フォーマット済み)に変更する(SP69)。続いて、CPU12は、ライト用のデータをセカンダリボリューム42のディスク装置7にライトする(SP70)(図19(6))。続いて、CPU12は、ライトデータのセグメントを格納する領域のセグメント管理テーブル21の書込み禁止フラグを「OFF(0)」に変更する(SP71)。続いて、CPU12は、ライトデータをセカンダリボリューム42のディスク装置7に非同期にライトする(SP72)。
やがて、CPU12は、この後、図18に示すストレージ装置3のスプリット指示への応答後のセカンダリボリューム42へのライト処理手順RT6を終了する(SP73)。
図20は、このストレージシステム1におけるストレージ装置3のスプリット指示への応答後のプライマリボリューム41のリード処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。また、図21は、ストレージ装置3における当該プライマリボリューム41のリード処理の流れを示す概念図の一例である。
CPU12は、例えば、ホスト装置2からプライマリボリューム41のリードコマンドを受信する(図21(1))と、制御プログラム34を実行することにより、図20に示すストレージ装置3のスプリット指示への応答後のプライマリボリューム41のリード処理手順RT7に従って、キャッシュメモリ13上に当該リードコマンドに対応するデータが存在するか否かをチェックする(SP81)。そして、CPU12は、キャッシュメモリ13上に当該リードコマンドに対応するデータが存在する場合(SP82:YES)、ステップSP83に進む。これに対して、CPU12は、キャッシュメモリ13上に当該リードコマンドに対応するデータが存在しない場合(SP82:NO)、当該リードコマンドに対応するデータをプライマリボリューム41のディスク装置7からキャッシュメモリ13にリードする(SP82)(図21(2))。
続いて、CPU12は、キャッシュメモリ13に格納された当該リードコマンドに対応するデータをホスト装置2に送信する(SP83)(図21(3))。
やがて、CPU12は、この後、図20に示すストレージ装置3のスプリット指示への応答後のプライマリボリューム41のリード処理手順RT7を終了する(SP84)。
図22は、このストレージシステム1におけるストレージ装置3のスプリット指示への応答後のセカンダリボリューム42のリード処理に関する、ストレージ装置3のCPU12の具体的な処理手順を示したフローチャートの一例である。また、図23は、ストレージ装置3における当該セカンダリボリューム42のリード処理の流れを示す概念図の一例である。
本実施の形態のストレージシステム1では、プライマリボリューム41上のデータがセカンダリボリューム42にコピーされていない領域について、リードコマンドに対応するデータをリードする場合、当該データをプライマリボリューム41のディスク装置7からキャッシュメモリ13上にリードする。そして、本実施の形態のストレージシステム1では、セカンダリボリューム42へのライト用のデータを作成して、当該セカンダリボリューム42へのライト用のデータをリードコマンドに対応するデータとしてホスト装置2に送信し、セカンダリボリューム42へのライト用のデータをセカンダリボリューム42のディスク装置7にライトする。
また、本実施の形態のストレージシステム1では、プライマリボリューム41からセカンダリボリューム42へのデータコピーの反映状態をコピー管理ビットマップ23により管理し、セカンダリボリューム42にデータコピーを行なった時点でコピー管理ビットマップ23の該当するフラグを「OFF」に変更する。以下、フローチャートに従って説明する。
CPU12は、例えば、ホスト装置2からセカンダリボリューム42のリードコマンドを受信する(図23(1))と、制御プログラム34を実行することにより、図22に示すストレージ装置3のスプリット指示への応答後のセカンダリボリューム42のリード処理手順RT8に従って、当該リードコマンドに対応するセカンダリボリューム42のディスク装置7上のデータがプライマリボリューム41から反映済みであるか否かをチェックする(SP91)。
そして、CPU12は、当該データがプライマリボリューム41から反映済みである場合(SP91:YES)、当該データをホスト装置2に送信して(SP92)、この後、図22に示すストレージ装置3のスプリット指示への応答後のセカンダリボリューム42のリード処理手順RT8を終了する(SP98)。この場合、CPU12は、キャッシュメモリ13上にデータが存在する場合、当該データを送信し、存在しなければセカンダリボリューム42のディスク装置7から該当するデータをリードして、当該データを送信する。これに対して、CPU12は、当該データがプライマリボリューム41から反映済みでない場合(SP91:NO)、プライマリボリューム41のディスク装置7の該当する領域のデータをキャッシュメモリ13にリードし、セカンダリボリューム42へのライト用のデータを作成する(SP93)(図23(2)(3))。
続いて、CPU12は、当該セカンダリボリューム42へのライト用のデータをリードコマンドに対応するデータとしてホスト装置2に送信する(SP94)。
続いて、CPU12は、セカンダリボリューム42のフォーマット管理ビットマップ22を参照し、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」(フォーマット済み)であるか否かをチェックする(SP95)。そして、CPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」である場合(SP95:YES)、ステップSP97に進む。これに対して、CPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」でない場合(SP95:NO)、当該領域のフォーマットを実施して、当該領域のビットを「OFF(0)」(フォーマット済み)に変更する(SP96)。続いて、CPU12は、セカンダリボリューム42へのライト用のデータをセカンダリボリューム42のディスク装置7に非同期にライトする(SP97)。
やがて、CPU12は、この後、図22に示すストレージ装置3のスプリット指示への応答後のセカンダリボリューム42のリード処理手順RT8を終了する(SP98)。
図24は、キャッシュメモリ13の共有並びにプライマリボリューム41及びセカンダリボリューム42のオーナー権及びその引き継ぎの一例を示している。本実施の形態におけるストレージ装置3のキャッシュメモリ13には、データ用の領域と管理用の領域が存在する。また、キャッシュメモリ13は、ストレージ装置3に2つ存在するコントローラ部5のそれぞれに搭載されており、また、相互に他方のキャッシュメモリ13上の情報を共有することができるようにするため、キャッシュメモリ13上のデータや管理情報をライトする際には、ライトするコントローラ部5のキャッシュメモリ13のみでなく、他方のコントローラ部5のキャッシュメモリ13にもライトする。なお、以下においては、便宜のため、一方のコントローラ部5を、コントローラ0と呼び、他方のコントローラ部5をコントローラ1と呼ぶ。
すなわち、ストレージシステム1では、ホスト装置2からライトコマンドをコントローラ0に受信した場合、コントローラ0のCPU12の指示によりコントローラ0のキャッシュメモリ13の領域にデータをライトし、データの二重書きを目的としてコントローラ1のキャッシュメモリ13の対応する領域にライトする。
一方、本実施の形態におけるストレージシステム1では、プライマリボリューム41及びセカンダリボリューム42が同一のコントローラ部5の配下に存在し、プライマリボリューム41及びセカンダリボリューム42を、ともに同一のコントローラ0により制御する。すなわち、ストレージシステム1では、ホスト装置2からのコマンドにより、オーナー権をコントローラ1に移動するときには、プライマリボリューム41及びセカンダリボリューム42を双方とも移動する必要がある。それに伴い、ストレージシステム1では、コントローラ0のキャッシュメモリ13のプライマリボリューム41及びセカンダリボリューム42双方の管理データをコントローラ1に引き継ぐ。
しかしながら、本実施の形態におけるストレージシステム1では、プライマリボリューム41からセカンダリボリューム42にバックグラウンドでデータコピーを行なっていることから、コントローラ1に引き継ぐ際には、コントローラ0において、ある領域が完了した時点で一旦データコピーを中断した後に、オーナー権を引き継ぐ。そして、ストレージシステム1では、コントローラ1において、フォーマット管理ビットマップ22及びコピー管理ビットマップ23を参照し、データコピーを再開する。
また、本実施の形態におけるストレージシステム1では、ホスト装置2からのコマンドに関しても同様に、コマンドを受け取ったタイミングで対応が異なり、コマンド処理を行なっているものに関しては、当該コマンドの処理を終わらせるまで実施し、受信したが処理が行なわれていないものに関しては、当該コマンドの処理を行なわずに、引き継ぎが終わったタイミングで再開するようにする。
図25は、このストレージシステム1におけるストレージ装置3のプライマリボリューム41及びセカンダリボリューム42のオーナー権引き継ぎ処理に関する、ストレージ装置3のコントローラ1のCPU12の具体的な処理手順を示したフローチャートの一例である。
本実施の形態におけるストレージシステム1では、コントローラ0上において、プライマリボリューム41からセカンダリボリューム42へのコピーを制御している場合、コントローラ0にオーナー権があり、コントローラ1は、何らの制御を行なわない。ストレージシステム1では、この状態で、コントローラ0が故障等により障害となった場合には、当該制御をコントローラ1に引き継ぐ。
この場合、ストレージシステム1では、コントローラ0が障害発生したことを検出すると、コントローラ1において、例えば、コントローラ1のキャッシュメモリ13のコントローラ0情報から入手し、プライマリボリューム41及びセカンダリボリューム42の状態を引き継ぐ。具体的には、ストレージシステム1では、コントローラ1において、フォーマット管理ビットマップ22及びコピー管理ビットマップ23をコントローラ0の管理からコントローラ1の管理に変更して、当該プライマリボリューム41及びセカンダリボリューム42の状態を引き継ぐ。
なお、ストレージシステム1では、セカンダリボリューム42のフォーマットやプライマリボリューム41からセカンダリボリューム42へのコピーを、シーケンシャルに先頭から行なうが、ホスト装置2からライトコマンドを受信した場合には、該当する領域のみ先行してフォーマット及びコピーを行なう。
またなお、ストレージシステム1では、コントローラ0において、プライマリボリューム41のディスク装置7からコントローラ0のキャッシュメモリ13上にリードして、セカンダリボリューム42にライトする予定のデータを、データの信頼性の観点から破棄する。そして、ストレージシステム1では、コントローラ1において、コピー管理ビットマップ23の情報に従って、プライマリボリューム41のディスク装置7から再度コントローラ1のキャッシュメモリ13にリードするところから再開する。以下、フローチャートに従って説明する。
まず、ストレージシステム1では、例えば、コントローラ0においてプライマリボリューム41及びセカンダリボリューム42が管理されていると共に、バックグラウンドでコピー実施中であり、所定のタイミングでコントローラ0に故障が発生したことを前提とする。
コントローラ1のCPU12は、例えば、コントローラ0に故障が発生したことを検出すると、制御プログラム34を実行することにより、図25に示すプライマリボリューム41及びセカンダリボリューム42のオーナー権引き継ぎ処理手順RT9に従って、コントローラ1のキャッシュメモリ13上に格納されているコントローラ0のペア管理テーブル21のペア情報を、コントローラ1が管理しているペア情報管理テーブル21に追加する(SP101)。
続いて、コントローラ1のCPU12は、コントローラ1のキャッシュメモリ13上に格納されているコントローラ0のプライマリボリューム41のコピー管理ビットマップ23をコントローラ1の管理に移動する(SP102)。続いて、コントローラ1のCPU12は、コントローラ1のキャッシュメモリ13上に格納されているコントローラ0のセカンダリボリューム42のフォーマット管理ビットマップ22をコントローラ1の管理に移動する(SP103)。
続いて、コントローラ1のCPU12は、オーナー権管理テープル24のオーナー権がコントローラ0となっているボリュームを、すべてコントローラ1のオーナー権に変更する(SP104)。続いて、コントローラ1のCPU12は、ペア管理テーブル21を参照して、プライマリボリューム41及びセカンダリボリューム42のバックグラウンドにおけるコピーを再開する(SP105)。
やがて、CPU12は、この後、図25に示すプライマリボリューム41及びセカンダリボリューム42のオーナー権引き継ぎ処理手順RT9を終了する(SP106)。
図26は、このストレージシステム1におけるストレージ装置3のコントローラ0障害時のコントローラ1によるペア状態引き継ぎ処理に関する、ストレージ装置3のコントローラ1のCPU12の具体的な処理手順を示したフローチャートの一例である。また、図27は、ペア管理テーブル21のペア状態の追加を示す概念図の一例である。
まず、ストレージシステム1では、例えば、コントローラ0及びコントローラ1のローカルメモリ14に、図27(1)に示すペア管理テーブル21が格納されていることを前提とする。
コントローラ1のCPU12は、例えば、コントローラ0に故障が発生したことを検出すると(図27(2))、制御プログラム34を実行することにより、図26に示すコントローラ0障害時のコントローラ1によるペア状態引き継ぎ処理手順RT10に従って、コントローラ0のペア管理テーブル21にコピー情報があるか否かをチェックする(SP111)。そして、コントローラ1のCPU12は、コントローラ0のペア管理テーブル21にコピー情報がない場合(SP111:NO)、この後、図26に示すコントローラ0障害時のコントローラ1によるペア状態引き継ぎ処理手順RT10を終了する(SP106)。これに対して、コントローラ1のCPU12は、コントローラ0のペア管理テーブル21にコピー情報がある場合(SP111:YES)、コントローラ0のペア管理テーブル21の情報をコントローラ1のペア管理テーブル21に追加する(SP112)(図27(3))。
この場合、ストレージシステム1では、ペア管理テーブル21をコントローラ部5ごとに管理されており、コントローラ0に故障などが発生した場合、コントローラ1が、当該コントローラ1のペア管理テーブル21にペア状態をコピーする。
続いて、コントローラ1のCPU12は、コントローラ1にてペア状態をチェックして、プライマリボリューム41及びセカンダリボリューム42の処理を継続する(SP113)。
やがて、CPU12は、この後、図26に示すコントローラ0障害時のコントローラ1によるペア状態引き継ぎ処理手順RT10を終了する(SP114)。
図28は、このストレージシステム1におけるストレージ装置3のスプリット指示への応答後にコントローラ0に障害が発生した場合におけるプライマリボリューム41へのライト処理に関する、ストレージ装置3のコントローラ1のCPU12の具体的な処理手順を示したフローチャートの一例である。
本実施の形態におけるストレージシステム1では、スプリット指示への応答後にコントローラ0に障害が発生した場合に、ホスト装置2からのプライマリボリューム41へのライトコマンドに関して、コントローラ0が、ホスト装置2に対して完了応答を送信したか否かによって、プライマリボリューム41のディスク装置7へのライトを行なうか否かを判断する必要がある。この場合、ストレージシステム1では、コントローラ0が、既にホスト装置2に完了応答を送信した場合には、プライマリボリューム41のディスク装置7にライトすることを保証しなければならない。
本実施の形態におけるストレージシステム1では、コントローラ0に障害が発生した場合、コントローラ0のキャッシュメモリ13のデータ等については、コントローラ1に引き継ぎ、コントローラ1のCPU12が、データごとにホスト装置2への完了応答の送信が終了しているか否かをチェックして、当該データをディスク装置7にライトするか破棄するかの処理を実施する。以下、フローチャートに従って説明する。
コントローラ1のCPU12は、例えば、コントローラ0に故障が発生したことを検出すると、制御プログラム34を実行することにより、図28に示すスプリット指示への応答後にコントローラ0に障害が発生した場合におけるプライマリボリューム41へのライト処理手順RT11に従って、コントローラ0のキャッシュメモリ13及びローカルメモリ14に格納されている制御情報(例えば、フォーマット管理ビットマップ22、コピー管理ビットマップ23、ペア管理テーブル31等)をコピー等により引き継いで、コントローラ1のキャッシュメモリ13及びローカルメモリ14に格納する(SP121)。
続いて、コントローラ1のCPU12は、コントローラ0のキャッシュメモリ13に格納されているデータ(例えば、セグメント、セグメント管理テーブル21等)をコピー等により引き継いで、コントローラ1のキャッシュメモリ13に格納する(SP122)。
続いて、コントローラ1のCPU12は、コントローラ0から引き継いだデータのうちの1のセグメントを選択する(SP123)。
続いて、コントローラ1のCPU12は、選択したセグメントがホスト装置2に応答完了を送信したライトコマンドのデータであるか否かをチェックする(SP124)。この場合、コントローラ1のCPU12は、セグメント確保テーブル32を参照することで、当該セグメントがどのライトコマンドジョブに確保されていたかを判断し、そのライトコマンドジョブがどこまで処理していたかをステータス管理しているホストコマンド管理テーブル33により、ホスト装置2に応答完了を送信したか否かを判断する。そして、コントローラ1のCPU12は、選択したセグメントがホスト装置2に応答完了を送信したライトコマンドのデータでない場合(SP124:NO)、コントローラ1のキャッシュメモリ13上から当該セグメントを削除する(SP125)。
これに対して、コントローラ1のCPU12は、選択したセグメントがホスト装置2に応答完了を送信したライトコマンドのデータである場合(SP124:YES)、コピー管理ビットマップ23を参照し、選択したセグメントのライトデータを格納する領域のビットが「OFF(0)」(コピー済み)であるか否かをチェックする(SP126)。そして、コントローラ1のCPU12は、選択したセグメントのライトデータを格納する領域のビットが「OFF(0)」である場合(SP126:YES)、ステップSP135に進む。これに対して、コントローラ1のCPU12は、選択したセグメントのライトデータを格納する領域のビットが「OFF(0)」でない場合(SP126:NO)、選択したセグメントの制御情報を管理しているセグメント管理テーブル21の書込み禁止フラグを「ON(1)」に変更して、プライマリボリューム41のディスク装置7への当該ライトデータのライトを抑止する(SP127)。
続いて、コントローラ1のCPU12は、プライマリボリューム41のディスク装置7からの該当する領域のデータをキャッシュメモリ13にリードし、セカンダリボリューム42へのライト用のデータを作成する(SP128)。続いて、コントローラ1のCPU12は、コピー管理ビットマップ23のライトデータを格納する領域のビットを「OFF(0)」に変更する(SP129)。続いて、コントローラ1のCPU12は、ライトデータのセグメントを格納する領域のセグメント管理テーブル21の書込み禁止フラグを「OFF(0)」に変更する(SP130)。
続いて、コントローラ1のCPU12は、セカンダリボリューム42のフォーマット管理ビットマップ22を参照し、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」(フォーマット済み)であるか否かをチェックする(SP131)。そして、コントローラ1のCPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」である場合(SP131:YES)、ステップSP134に進む。これに対して、コントローラ1のCPU12は、セカンダリボリューム42へのライト用のデータを格納する領域のビットが「OFF(0)」でない場合(SP131:NO)、当該領域のフォーマットを実施する(SP132)。
続いて、コントローラ1のCPU12は、フォーマット管理ビットマップ22のセカンダリボリューム42へのライト用のデータを格納する領域のビットを「OFF(0)」(フォーマット済み)に変更する(SP133)。続いて、コントローラ1のCPU12は、ライト用のデータをセカンダリボリューム42のディスク装置7にライトする(SP134)。続いて、コントローラ1のCPU12は、ライトデータをプライマリボリューム41のディスク装置7に非同期にライトする(SP135)。
続いて、コントローラ1のCPU12は、他にコントローラ0から引き継いだデータが存在するか否かをチェックする(SP136)。そして、コントローラ1のCPU12は、他にコントローラ0から引き継いだデータが存在する場合(SP136:YES)、ステップSP123に戻り、コントローラ0から引き継いだデータのうちの1のセグメントを選択し(SP123)、この後、上述の場合と同様の処理を繰り返す(SP123〜SP136)。これに対して、CPU12は、他にコントローラ0から引き継いだデータが存在しない場合(SP136:NO)、この後、図28に示すスプリット指示への応答後にコントローラ0に障害が発生した場合におけるプライマリボリューム41へのライト処理手順RT11を終了する(SP137)。
なお、ストレージシステム1では、コントローラ1に故障が発生した場合には、コントローラ0のCPU12が同様の処理を行なうことは、言うまでもない。
図29は、このストレージシステム1におけるストレージ装置3のスプリット指示への応答後にコントローラ0に障害が発生した場合におけるセカンダリボリューム42へのリード処理に関する、ストレージ装置3のコントローラ1のCPU12の具体的な処理手順を示したフローチャートの一例である。
本実施の形態におけるストレージシステム1では、セカンダリボリューム42からデータをリードする場合、ストレージ装置3内部でのプライマリボリューム41からのデータリードやデータコピーについては、本来、プライマリボリューム41からセカンダリボリューム42にコピーしなければならないデータを先行してコピーするためのものである。このため、本実施の形態におけるストレージシステム1では、スプリット指示への応答後におけるセカンダリボリューム42のリードの処理中に、コントローラ0に障害が発生した場合であっても、引き継がれたプライマリボリューム41のコピー管理ビットマップ23を元に、コピーを再開する。
コントローラ1のCPU12は、例えば、コントローラ0のキャッシュメモリ13及びローカルメモリ14に格納されている制御情報及びデータをコピー等により引き継いで、コントローラ1のキャッシュメモリ13及びローカルメモリ14に格納すると(SP121、SP122)、制御プログラム34を実行することにより、図29に示すスプリット指示への応答後にコントローラ0に障害が発生した場合におけるセカンダリボリューム42のリード処理手順RT12に従って、コントローラ0から引き継いだデータのうちの1のセグメントを選択する(SP141)。
続いて、コントローラ1のCPU12は、プライマリボリューム41のコピー管理ビットマップ23を参照し、選択したセグメントを格納するセカンダリボリューム42の領域に対応する、プライマリボリューム41の領域のビットが「OFF(0)」(コピー済み)であるか否かをチェックする(SP142)。そして、CPU12は、当該領域のビットが「OFF(0)」である場合(SP142:YES)、当該セグメントを破棄する(SP143)。これに対して、CPU12は、当該領域のビットが「OFF(0)」でない場合(SP142:NO)、セカンダリボリューム42のフォーマット管理ビットマップ22を参照し、選択したセグメントを格納する領域のビットが「OFF(0)」(フォーマット済み)であるか否かをチェックする(SP144)。そして、コントローラ1のCPU12は、当該領域のビットが「OFF(0)」である場合(SP144:YES)、ステップSP147に進む。これに対して、コントローラ1のCPU12は、当該領域のビットが「OFF(0)」でない場合(SP144:NO)、当該領域のフォーマットを実施する(SP145)。
続いて、コントローラ1のCPU12は、フォーマット管理ビットマップ22の選択したセグメントを格納する領域のビットを「OFF(0)」(フォーマット済み)に変更する(SP146)。続いて、コントローラ1のCPU12は、選択したセグメントのデータをセカンダリボリューム42のディスク装置7にライトする(SP147)。
続いて、コントローラ1のCPU12は、他にコントローラ0から引き継いだデータが存在するか否かをチェックする(SP148)。そして、コントローラ1のCPU12は、他にコントローラ0から引き継いだデータが存在する場合(SP148:YES)、ステップSP141に戻り、コントローラ0から引き継いだデータのうちの1のセグメントを選択し(SP141)、この後、上述の場合と同様の処理を繰り返す(SP141〜SP148)。これに対して、CPU12は、他にコントローラ0から引き継いだデータが存在しない場合(SP148:NO)、この後、図29に示すスプリット指示への応答後にコントローラ0に障害が発生した場合におけるセカンダリボリューム42のリード処理手順RT12を終了する(SP149)。
なお、ストレージシステム1では、コントローラ1に故障が発生した場合には、コントローラ0のCPU12が同様の処理を行なうことは、言うまでもない。
このようにして、本実施の形態におけるストレージシステム1では、CPU12が、ホスト装置2からスプリット指示を受信すると、プライマリボリューム41のバックアップボリュームであるセカンダリボリューム42を作成すると共に、セカンダリボリューム42のフォーマット及びプライマリボリューム41からセカンダリボリューム42へのコピーが未完了のままでホスト装置2にスプリット指示の完了応答を送信する。
従って、バックアップを実施しないボリュームを含めすべてのボリュームについてペア状態を維持することなく、バックアップ指示を受信したボリュームのみその都度バックアップボリュームを作成するため、初期設定の際にユーザに煩雑な作業をさせることを未然かつ有効に防止することができると共に、実際に使用する記憶領域以上の記憶領域を不要とすることができる。
また、本実施の形態におけるストレージシステム1では、CPU12が、スプリット指示の完了応答を送信した後に、ホスト装置2からのコマンドを受信した場合、フォーマット管理ビットマップ22及びコピー管理ビットマップ23に基づいて、セカンダリボリューム42のフォーマット及びプライマリボリューム41からセカンダリボリューム42へのコピーを実施することにより、当該フォーマット及びコピーが未完了のままでホスト装置2にスプリット指示の完了応答を送信した場合にも、ホスト装置2からのコマンドの処理を実施することができる。また、未コピーデータを退避領域に一時退避させることなく、バックグラウンドでコピーするため、バッファ領域を必要とせずに、ホスト装置2からのコマンドの処理を実施することができる。
さらに、本実施の形態におけるストレージシステム1では、コントローラ0によりスプリット指示の完了応答を送信した後に、コントローラ0に障害が発生した場合、コントローラ0に格納されているデータ、コントローラ0のペア管理テーブル21、フォーマット管理ビットマップ22及びコピー管理ビットマップ23を引き継いで、セカンダリボリューム42のフォーマット及びプライマリボリューム41からセカンダリボリューム42へのコピーを再開することにより、当該フォーマット及びコピーが未完了のままでコントローラ0に障害が発生した場合にも、ホスト装置2からのコマンドの処理を実施することができる。
図30は、他実施の形態によるストレージシステム1の構成の一例を示している。他実施の形態によるストレージシステム1は、例えば、遠隔地にストレージ装置3と同一の構成の他のストレージ装置3を備えて構成される点を除いて、図1のストレージシステム1と同様に構成されている。なお、以下においては、便宜のため、一方のストレージ装置3を、ストレージ0と呼び、他方のストレージ装置3をストレージ1と呼ぶ。
他実施の形態によるストレージシステム1は、プライマリボリューム41及びセカンダリボリューム42により図12〜図29の処理を行なうと共に、ストレージ1にセカンダリボリューム43を有し、プライマリボリューム41及びセカンダリボリューム43により図12〜図29の処理を行なうようになされている。
図31は、他実施の形態によるストレージシステム1の構成の一例を示している。他実施の形態によるストレージシステム1は、例えば、遠隔地にストレージ装置3と同一の構成の他のストレージ装置3を備えて構成される点を除いて、図1のストレージシステム1と同様に構成されている。
他実施の形態によるストレージシステム1は、ストレージ1にセカンダリボリューム43を有し、プライマリボリューム41及びセカンダリボリューム43により図12〜図29の処理を行なうようになされていると共に、ストレージ1にセカンダリボリューム44を有し、カンダリボリューム43をプライマリボリュームとして、プライマリボリューム(セカンダリボリューム43)及びセカンダリボリューム44により図12〜図29の処理を行なうようになされている
図32は、このストレージシステム1におけるストレージ0のスプリット指示への応答後のセカンダリボリューム43のリード処理に関する、ストレージ1のCPU12の具体的な処理手順を示したフローチャートの一例である。
ストレージ1のCPU12は、例えば、ホスト装置2からセカンダリボリューム43のリードコマンドを受信すると、制御プログラム34を実行することにより、図32に示すストレージ0のスプリット指示への応答後のセカンダリボリューム43のリード処理手順RT13に従って、該当するセカンダリボリューム43のディスク装置7がフォーマット未完了であるか否かをチェックする(SP151)。そして、ストレージ1のCPU12は、該当するセカンダリボリューム43のディスク装置7がフォーマット未完了である場合(SP151:YES)、該当するセカンダリボリューム43のディスク装置7のフォーマットを実施して(SP152)、ステップSP153に進む。
これに対して、ストレージ1のCPU12は、該当するセカンダリボリューム43のディスク装置7がフォーマット未完了でない場合(SP151:NO)、該当するセカンダリボリューム44のディスク装置7がプライマリボリューム41からのデータコピーを完了しているか否かをチェックする(SP153)。
そして、ストレージ1のCPU12は、該当するセカンダリボリューム44のディスク装置7がプライマリボリューム41からのデータコピーを完了している場合(SP153:YES)、当該リードコマンドに対応するセカンダリボリューム42のディスク装置7上のデータをホスト装置2に送信して(SP154)、この後、図32に示すストレージ0のスプリット指示への応答後のセカンダリボリューム43のリード処理手順RT13を終了する(SP159)。この場合、ストレージ1のCPU12は、ストレージ1のキャッシュメモリ13上にデータが存在する場合、当該データを送信し、存在しなければセカンダリボリューム43のディスク装置7から該当するデータをリードして、当該データを送信する。
これに対して、ストレージ1のCPU12は、該当するセカンダリボリューム44のディスク装置7がプライマリボリューム41からのデータコピーを完了していない場合(SP153:NO)、プライマリボリューム41のディスク装置7の該当する領域のデータをストレージ1のキャッシュメモリ13にリードする(SP155)。続いて、ストレージ1のCPU12は、当該データをストレージ1のキャッシュメモリ13においてコピーして、セカンダリボリューム43へのライト用のデータを作成する(SP156)。
続いて、ストレージ1のCPU12は、当該セカンダリボリューム43へのライト用のデータをリードコマンドに対応するデータとしてホスト装置2に送信する(SP157)。続いて、ストレージ1のCPU12は、セカンダリボリューム43へのライト用のデータをセカンダリボリューム43のディスク装置7に非同期にライトする(SP158)。
やがて、CPU12は、この後、図32に示すストレージ0のスプリット指示への応答後のセカンダリボリューム43のリード処理手順RT13を終了する(SP159)。
このようにして、他実施の形態におけるストレージシステム1では、ストレージ0のCPU12がスプリット指示の完了応答を送信した後に、ホスト装置2からのコマンドを受信した場合、フォーマット管理ビットマップ22及びコピー管理ビットマップ23に基づいて、セカンダリボリューム43のフォーマット及びプライマリボリューム41からセカンダリボリューム43へのコピーを実施することにより、セカンダリボリューム43が他のストレージ装置3内に存在する場合にも、ホスト装置2からのコマンドの処理を実施することができる。
本発明は、データを格納するボリュームのバックアップを実施するストレージ装置に広く適用することができる。
1……ストレージシステム、2……ホスト装置、3……ストレージ装置、5……コントローラ部、6……記憶部、7……ディスク装置、12……CPU、13……キャッシュメモリ、14……ローカルメモリ、21……セグメント管理テーブル、22……フォーマット管理ビットマップ、23……コピー管理ビットマップ、24……オーナー権管理テーブル、31……ペア管理テーブル、32……セグメント確保テーブル、33……ホストコマンド管理テーブル、34……制御プログラム、41……プライマリボリューム、42、43、44……セカンダリボリューム
Claims (16)
- ホスト装置から送信されるデータを格納する第1のボリュームを有し、当該第1のボリュームのバックアップを実施するストレージ装置において、
前記ホスト装置から前記第1のボリュームのバックアップ指示を受信すると、前記第1のボリュームのバックアップボリュームである第2のボリュームを作成すると共に、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する制御部
を備えることを特徴とするストレージ装置。 - 前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第1のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記第2のボリュームのフォーマットを管理するフォーマット管理ビットマップ及び前記第1のボリュームから前記第2のボリュームへのコピーを管理するコピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第1のボリュームに書き込む
ことを特徴とする請求項1に記載のストレージ装置。 - 前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第2のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第2のボリュームに書き込む
ことを特徴とする請求項1に記載のストレージ装置。 - 前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第1のボリュームのリードコマンドを受信した場合、キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、当該データを前記ホスト装置に送信し、前記キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、対応する前記第2のボリュームから当該データを読み出して前記ホスト装置に送信する
ことを特徴とする請求項1に記載のストレージ装置。 - 前記制御部は、
前記バックアップ指示の完了応答を送信した後に、前記第2のボリュームのリードコマンドを受信した場合、当該リードコマンドに対応するデータが前記第2のボリュームにコピーされているか否かを判断し、コピーされていないときに、対応する第1のボリュームから当該データを読み出して前記ホスト装置に送信すると共に、前記フォーマット管理ビットマップに基づいて、当該データを前記第2のボリュームに書き込む
ことを特徴とする請求項1に記載のストレージ装置。 - 前記制御部は、
第1の制御部及び第2の制御部
を備え、
前記第2の制御部は、
前記第1の制御部により前記バックアップ指示の完了応答を送信した後に、前記第1の制御部に障害が発生した場合、前記第1の制御部に格納されているデータ、前記第1の制御部の前記第1のボリューム及び前記第2のボリュームのペア状態を管理するペア管理テーブル、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップを引き継いで、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーを再開する
ことを特徴とする請求項1に記載のストレージ装置。 - 前記第2の制御部は、
前記第1の制御部から引き継いだデータに対応する第1のボリュームへのライトコマンドの完了応答を、前記ホスト装置に送信したか否かを判断し、前記ホスト装置に送信した場合、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前期第1のボリュームに書き込む
ことを特徴とする請求項1に記載のストレージ装置。 - 前記第2の制御部は、
第2のボリュームのリードコマンドに対応する前記第1の制御部から引き継いだデータが、前記第2のボリュームにコピーされているか否かを判断し、コピーされていないときに、前記フォーマット管理ビットマップに基づいて、前記リードコマンドのデータを前記第2のボリュームに書き込む
ことを特徴とする請求項1に記載のストレージ装置。 - ホスト装置から送信されるデータを格納する第1のボリュームを有し、当該第1のボリュームのバックアップを実施するストレージ装置の制御方法において、
制御部が、前記ホスト装置から前記第1のボリュームのバックアップ指示を受信すると、前記第1のボリュームのバックアップボリュームである第2のボリュームを作成する第1のステップと、
制御部が、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーが未完了のままで前記ホスト装置に前記バックアップ指示の完了応答を送信するように制御する第2のステップと
を備えることを特徴とするストレージ装置の制御方法。 - 前記第2のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第1のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記第2のボリュームのフォーマットを管理するフォーマット管理ビットマップ及び前記第1のボリュームから前記第2のボリュームへのコピーを管理するコピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第1のボリュームに書き込む
ことを特徴とする請求項9に記載のストレージ装置の制御方法。 - 前記第2のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第2のボリュームへのライトコマンドを受信した場合、当該ライトコマンドの処理を未完了のままで完了応答を送信すると共に、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前記第2のボリュームに書き込む
ことを特徴とする請求項9に記載のストレージ装置の制御方法。 - 前記第2のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第1のボリュームのリードコマンドを受信した場合、キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、当該データを前記ホスト装置に送信し、前記キャッシュメモリに前記リードコマンドに対応するデータが存在する場合、対応する前記第2のボリュームから当該データを読み出して前記ホスト装置に送信する
ことを特徴とする請求項9に記載のストレージ装置の制御方法。 - 前記第2のステップでは、
前記バックアップ指示の完了応答を送信した後に、前記第2のボリュームのリードコマンドを受信した場合、当該リードコマンドに対応するデータが前記第2のボリュームにコピーされているか否かを判断し、コピーされていないときに、対応する第1のボリュームから当該データを読み出して前記ホスト装置に送信すると共に、前記フォーマット管理ビットマップに基づいて、当該データを前記第2のボリュームに書き込む
ことを特徴とする請求項9に記載のストレージ装置の制御方法。 - 前記第2のステップでは、
前記制御部の第1の制御部及び第2の制御部のうち、前記第1の制御部により前記バックアップ指示の完了応答を送信した後に、前記第1の制御部に障害が発生した場合、前記第2の制御部が、前記第1の制御部に格納されているデータ、前記第1の制御部の前記第1のボリューム及び前記第2のボリュームのペア状態を管理するペア管理テーブル、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップを引き継いで、前記第2のボリュームのフォーマット及び前記第1のボリュームから前記第2のボリュームへのコピーを再開する
ことを特徴とする請求項9に記載のストレージ装置の制御方法。 - 前記第2のステップでは、
前記第1の制御部から引き継いだデータに対応する第1のボリュームへのライトコマンドの完了応答を、前記ホスト装置に送信したか否かを判断し、前記ホスト装置に送信した場合、前記フォーマット管理ビットマップ及び前記コピー管理ビットマップに基づいて、前記ライトコマンドのデータを前期第1のボリュームに書き込む
ことを特徴とする請求項14に記載のストレージ装置の制御方法。 - 前記第2のステップでは、
第2のボリュームのリードコマンドに対応する前記第1の制御部から引き継いだデータが、前記第2のボリュームにコピーされているか否かを判断し、コピーされていないときに、前記フォーマット管理ビットマップに基づいて、前記リードコマンドのデータを前記第2のボリュームに書き込む
ことを特徴とする請求項14に記載のストレージ装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008053729A JP2009211401A (ja) | 2008-03-04 | 2008-03-04 | ストレージ装置及びその制御方法 |
US12/130,056 US8041910B2 (en) | 2008-03-04 | 2008-05-30 | Storage apparatus and control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008053729A JP2009211401A (ja) | 2008-03-04 | 2008-03-04 | ストレージ装置及びその制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009211401A true JP2009211401A (ja) | 2009-09-17 |
Family
ID=41054806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008053729A Pending JP2009211401A (ja) | 2008-03-04 | 2008-03-04 | ストレージ装置及びその制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8041910B2 (ja) |
JP (1) | JP2009211401A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5620614B1 (ja) * | 2014-04-21 | 2014-11-05 | 株式会社日立製作所 | ストレージシステム |
WO2016079804A1 (ja) * | 2014-11-18 | 2016-05-26 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JP7309025B2 (ja) | 2020-07-31 | 2023-07-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI514249B (zh) | 2009-01-23 | 2015-12-21 | Infortrend Technology Inc | 遠端非同步資料卷複製的方法及執行該方法的儲存系統 |
CN102088490B (zh) * | 2011-01-19 | 2013-06-12 | 华为技术有限公司 | 数据存储方法、设备和系统 |
JP5657801B2 (ja) * | 2011-05-31 | 2015-01-21 | 株式会社日立製作所 | ストレージシステムおよび記憶制御方法 |
US10146635B1 (en) * | 2015-06-30 | 2018-12-04 | EMC IP Holding Company LLC | Virtual machine backup |
US10503426B2 (en) * | 2017-07-12 | 2019-12-10 | International Business Machines Corporation | Efficient space allocation in gathered-write backend change volumes |
CN110058962B (zh) * | 2018-01-18 | 2023-05-23 | 伊姆西Ip控股有限责任公司 | 确定虚拟机快照的一致性级别的方法、设备和计算机程序产品 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544347A (en) * | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
JP4325849B2 (ja) * | 2003-06-27 | 2009-09-02 | 株式会社日立製作所 | 記憶システム、バックアップシステム及びバックアップ方法 |
JP4575059B2 (ja) * | 2004-07-21 | 2010-11-04 | 株式会社日立製作所 | ストレージ装置 |
US7702851B2 (en) * | 2005-09-20 | 2010-04-20 | Hitachi, Ltd. | Logical volume transfer method and storage network system |
US7617372B1 (en) * | 2006-09-28 | 2009-11-10 | Emc Corporation | Avoiding copy on first write |
-
2008
- 2008-03-04 JP JP2008053729A patent/JP2009211401A/ja active Pending
- 2008-05-30 US US12/130,056 patent/US8041910B2/en not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5620614B1 (ja) * | 2014-04-21 | 2014-11-05 | 株式会社日立製作所 | ストレージシステム |
US8943286B1 (en) | 2014-04-21 | 2015-01-27 | Hitachi, Ltd. | Storage system |
WO2015162663A1 (ja) * | 2014-04-21 | 2015-10-29 | 株式会社日立製作所 | ストレージシステム |
GB2539829A (en) * | 2014-04-21 | 2016-12-28 | Hitachi Ltd | Storage system |
US9632701B2 (en) | 2014-04-21 | 2017-04-25 | Hitachi, Ltd. | Storage system |
GB2539829B (en) * | 2014-04-21 | 2021-05-05 | Hitachi Ltd | Storage system |
WO2016079804A1 (ja) * | 2014-11-18 | 2016-05-26 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JPWO2016079804A1 (ja) * | 2014-11-18 | 2017-04-27 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JP7309025B2 (ja) | 2020-07-31 | 2023-07-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090228671A1 (en) | 2009-09-10 |
US8041910B2 (en) | 2011-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009211401A (ja) | ストレージ装置及びその制御方法 | |
JP4662548B2 (ja) | スナップショット管理装置及び方法並びにストレージシステム | |
JP5222617B2 (ja) | 情報システム及びi/o処理方法 | |
JP5124217B2 (ja) | ストレージ装置 | |
US7904684B2 (en) | System and article of manufacture for consistent copying of storage volumes | |
JP5603941B2 (ja) | 計算機システム及びデータ移行方法 | |
EP1818795A2 (en) | Storage system, data processing method and storage apparatus | |
JP2009211132A (ja) | 記憶システム及びデータ移行方法 | |
JP5963228B2 (ja) | ストレージシステム及びデータバックアップ方法 | |
JP2007122396A (ja) | ディスクアレイ装置及びその障害対応検証方法 | |
JP2007122531A (ja) | 負荷分散システム及び方法 | |
US7689786B1 (en) | Techniques for overriding device reservations | |
JP2006331158A (ja) | ストレージシステム | |
JP2006309447A (ja) | 記憶システム及びバックアップ方法 | |
JP2008140300A (ja) | ストレージシステム及びウィルス感染拡散防止方法並びにウィルス除去支援方法 | |
JP2009282800A (ja) | ストレージ装置及びその制御方法 | |
JP2009104488A (ja) | ストレージ装置及びその制御方法並びにストレージシステム | |
US7451283B2 (en) | Method, system, and program for copying tracks between a primary storage and secondary storage | |
JP2008234030A (ja) | コピーシステム及びコピー方法 | |
EP1837765A2 (en) | Backup apparatus and backup method | |
JP2007286806A (ja) | 記憶システム及びデータ保存方法 | |
JP4857055B2 (ja) | 記憶システム及びその制御方法並びに記憶制御装置 | |
WO2013076782A1 (en) | Storage apparatus and its control method | |
JP2013069096A (ja) | 制御装置、制御方法およびストレージ装置 | |
JP2008210045A (ja) | ストレージシステム並びに情報処理装置及び接続方法 |