JP2014502738A - 記憶制御装置、及び記憶制御方法 - Google Patents

記憶制御装置、及び記憶制御方法 Download PDF

Info

Publication number
JP2014502738A
JP2014502738A JP2013528429A JP2013528429A JP2014502738A JP 2014502738 A JP2014502738 A JP 2014502738A JP 2013528429 A JP2013528429 A JP 2013528429A JP 2013528429 A JP2013528429 A JP 2013528429A JP 2014502738 A JP2014502738 A JP 2014502738A
Authority
JP
Japan
Prior art keywords
journal
controller
primary
real
virtual
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.)
Granted
Application number
JP2013528429A
Other languages
English (en)
Other versions
JP5649733B2 (ja
Inventor
崇政 佐藤
勝博 奥元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2014502738A publication Critical patent/JP2014502738A/ja
Application granted granted Critical
Publication of JP5649733B2 publication Critical patent/JP5649733B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2056Error 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 by mirroring
    • G06F11/2066Optimisation of the communication load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2056Error 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 by mirroring
    • G06F11/2071Error 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 by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/855Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

記憶制御装置間で非同期型リモートコピーを行うリモートコピーシステムにおける一方の記憶制御装置において、ジャーナルが書き込まれるジャーナルボリュームとして、シンプロビジョニングに従う仮想的な論理ボリュームが採用される。その一方の記憶制御装置におけるコントローラが、記憶装置に基づく実領域を、ジャーナルボリュームの全域に割り当てる場合よりも少なく割り当て、割り当てた実領域にジャーナルを追記する。コントローラは、新たなジャーナルを追記出来ない場合、割り当てた実領域における最も古いジャーナルをその新たなジャーナルで上書きするラップアラウンドを行う。
【選択図】図1

Description

本発明は、ジャーナルを利用した非同期リモートコピーに関する。
第1及び第2のストレージ装置間でのデータのコピーであるリモートコピーが知られている。リモートコピーとしては、例えば、同期リモートコピーと非同期リモートコピーがある。第1のストレージ装置がホストからライト要求を受信した場合、同期リモートコピーが採用されているならば、そのライト要求に従うデータが第1のストレージ装置から第2のストレージ装置に転送された後に、ライトの完了応答がホスト装置に送信される。一方、非同期リモートコピーが採用されているならば、そのライト要求に従うデータが第1のストレージ装置から第2のストレージ装置に転送されなくても、ライトの完了応答がホスト装置に送信される。
非同期リモートコピーが採用されたリモートコピーシステム(以下、非同期リモートコピーシステム)では、例えば、第1のストレージ装置が、第1のDVOL(データが格納される論理ボリューム)の他に、第1のJVOL(ジャーナル(以下、JNL)が格納される論理ボリューム)を有する。同様に、第2のストレージ装置が、第2のDVOLの他に、第2のJVOLを有する。第1のストレージ装置は、ライト要求を受信した場合、ライト要求に従うデータを第1のDVOLに格納し、且つ、そのデータを含んだJNLを第1のJVOLに格納する。
第1のストレージ装置が、第1のJVOL内のJNLを、第2のストレージ装置に転送し、第2のストレージ装置が、第1のストレージ装置からのJNLを、第2のJVOLに書き込む。その後、第2のストレージ装置が、第2のJVOL内のJNLが有するデータを、第2のDVOLに書き込む。これにより、第1のDVOLに書き込まれたデータが、第2のDVOLにコピーされたことになる。非同期リモートコピーとして、例えば、特許文献1に開示の技術が知られている。
特開2006−65629号公報
Thin Provisioning(Dynamic Provisioningとも言う)に従う仮想的な論理ボリューム(以下、VVOLという)が知られている。Thin Provisioningでは、複数の仮想ページを有するVVOLと、複数の実ページを有するプールとが備えられる。VVOLにデータが書かれる場合、データの書込み先の仮想ページにプールから実ページが割り当てられ、割り当てられた実ページにそのデータが書き込まれる。
VVOLを、第1及び第2のDVOLに採用する技術は知られている。しかし、VVOLを第1及び第2のJVOLに採用する技術は知られていない。VVOLを第1及び/又は第2のJVOLとして採用した場合、下記問題がある。
一般的に非同期リモートコピーでは、複数のJNLは、JVOLの先頭の領域から追記される。そして、JNLがJVOLの末尾の領域にまで書き込まれた後(JNLがJVOLの全領域にまで書き込まれた後)、新たなJNLが書き込まれる場合、JVOLにおける最も古いJNLが新たなJNLで上書きされる(ラップアラウンド)。しかしながら、JNLがJVOLの末尾の領域にまで書き込まれると、JVOLの全仮想ページに実ページが割り当てられたことになる。
JVOLの容量は、一般的にDVOLより大きく、例えば、一又は複数の観点(具体例として、そのJVOLを指定したライト要求を受ける頻度であるライト頻度(例えば単位はIOPS(Input output Per Second))、及びリモート回線が切られても耐えられる時間)に基づいて決定される。従って、JVOLの全域に実ページが割り当てられるとすると、使用される実ページの数は膨大となり易い。このため、多数の実ページが必要である。また、もし、プール内に実ページがJVOLだけでなくDVOLにも割り当てられるとすると、そのDVOLに割り当てられる実ページが不足する恐れがあり、これを解消するためには、一層大量の実ページが必要となってしまう。
従って、本発明の目的は、VVOLがJVOLに採用されても、使用される実ページの量を抑えられるようにすることにある。
JVOLとして、VVOL(シンプロビジョニングに従う仮想的な論理ボリューム)が採用されている。VVOLは複数の仮想領域で構成され、且つ、JNLのサイズは、仮想領域のサイズより小さい。第1の記憶制御装置(コピー元及びコピー先の記憶制御装置のうちの一方の記憶制御装置)は、JVOLにJNLを追記するようになっている。第1の記憶制御装置は、JVOLにJNLを書き込む場合、複数の実領域で構成されたプールから仮想領域に割り当てられた実領域に、そのJNLを書き込む。JVOLに割り当てられる実領域の数は、Nである。Nは、1以上の整数であり、且つ、JVOLの全域に割り当てられる実領域の数(典型的には、JVOLを構成する仮想領域の数)よりも小さい。第1の記憶制御装置は、JVOLに割り当てられたN個の実領域に新たにジャーナルを追記できない場合、ラップアラウンド(割り当て済みのN個の実領域における古いジャーナルに、書き込み対象のジャーナルを上書きすること)を行う。JVOLは、後述の正JVOLと副JVOLのいずれでも良い。
JVOLに割り当てられる実領域の数はNであるが、Nの全てに対して実領域を予め割り当てても良いし、Nの全てに対して実領域を動的に割り当てても良い。また、Nの一部分に対して実領域を予め割り当て、その他の部分に対して実領域を動的に割り当てても良い。
図1は、本発明の一実施例に係る記憶制御装置を含んだ非同期型リモートコピーシステムの処理の概要を示す。 図2は、正ストレージ装置20Aの構成例を示す。 図3Aは、正ストレージ装置20Aのメモリに記憶されている管理テーブル、及びプログラムの例を示す。図3Bは、副ストレージ装置20Bのメモリに記憶されている管理テーブル、及びプログラムの例を示す。 図4は、CM35Aのスロットの容量と、正JVOL22Aに割り当てられる実ページとの関係を示す。 図5は、各ページの容量と、各JNLの容量との関係を示す。 図6は、コントローラ30Aの処理の概要を示す。 図7Aは、正仮想ページビットマップ70Aの構成例を示す。図7Bは、JNLG使用状況管理テーブル700Aの構成例を示す。 図8Aは、正VOL管理テーブル341Aの構成例を示す。図8Bは、副VOL管理テーブル341Bの構成例を示す。 図9Aは、正JNLG管理テーブル342Aの構成例を示す。副JNLG管理テーブル342Bの構成例を示す。 図10は、JNLGペア管理テーブル343A、343Bの構成例を示す。 図11は、VOLペア管理テーブル344A、344Bの構成例を示す。 図12Aは、正VVOL管理テーブル345Aの構成例を示す。図12Bは、副VOL管理テーブル345Bの構成例を示す。 図13Aは、正仮想ページ割り当て管理テーブル346Aの構成例を示す。図13Bは、副仮想ページ割り当て管理テーブル346Bの構成例を示す。 図14は、正JNLステータス管理テーブル347Aの構成例を示す。 図15は、副JNLステータス管理テーブル347Bの構成例を示す。 図16Aは、正仮想ページステータス管理テーブル348Aの構成例を示す。図16Bは、副仮想ページステータス管理テーブル348Bの構成例を示す。 図17Aは、正プール管理テーブル349Aの構成例を示す。図17Bは、副プール管理テーブル349Bの構成例を示す。 図18は、JNLG同士でペアを形成する処理の流れの一例を示す。 図19は、正JVOL22Aから副JVOL22BにJNLをコピーする処理の流れの一例を示す。 図20は、副DVOL21Bにデータをリストアする処理の流れの一例を示す。 図21は、JNLGの自動定義をする処理の流れの一例を示す。 図22は、図21のS243の詳細の一例を示す。 図23は、図21のS246の詳細の一例を示す。 図24は、JVOLの使用率が閾値を超えた場合の処理の流れの一例を示す。 図25は、正JVOL22AにJNLを書き込む処理の流れの一例を示す。 図26は、JNLの転送単位の切り替えに関する処理の流れの一例を示す。
以下、本発明の一実施例を説明する。
なお、本発明に従う記憶制御装置は、複数の記憶デバイスを有するストレージ装置であっても良いし、そのストレージ装置が有するコントローラであっても良いし、ストレージ装置に接続されるインテリジェントなスイッチ装置であっても良い。本発明の一実施例に係る記憶制御装置は、ストレージ装置である。プールを構成する複数の実ページは、そのストレージ装置が有する複数の記憶デバイスに基づく記憶領域である。プールを構成する複数の実ページのうちの一部の実ページは、そのストレージ装置の外部のストレージ装置の記憶資源に基づく記憶領域であっても良い。
また、以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、要素を特定するための識別情報として、ID(識別子)が使用されるが、識別情報として、名前、番号などが使用されて良い。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、管理サーバ、及びラックマネージャ等に含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイス装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされても良い。プログラムを主語として説明された処理は、ストレージ装置或いはコントローラが行う処理としても良い。また、プロセッサは、CPUのようなマイクロプロセッサに代えて又は加えて、処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースからストレージ装置にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであっても良い。
また、管理計算機は、一以上の計算機で構成されて良い。例えば、管理計算機が情報を表示する場合、或いは、管理計算機が表示用情報を遠隔の計算機に送信する場合、一つの計算機が管理計算機である。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んで良い)が、管理計算機である。本実施例では、SVP(Service Processor)が管理計算機である。
また、以下の説明では、リモートコピーにおけるコピー元のストレージ装置を「正ストレージ装置」と言い、そのリモートコピーにおけるコピー先のストレージ装置を「副ストレージ装置」と言うことがある。また、正ストレージ装置が有する要素については、その要素の名称に、適宜、「正」を追加して言うことがあり、副ストレージ装置が有する要素については、その要素の名称に、適宜、「副」を追加して言うことがある。
また、以下の説明では、Thin Provisioning(Dynamic Provisioningとも言う)に従う仮想的な論理ボリュームである仮想ボリュームを、「VVOL」と言うことがある。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号のみを用いることとし、同種の要素を区別して説明する場合には、参照符号(共通符号と個別符号の組合せ)を用いる。また、以下の説明では、参照符号に代えて、要素に付された識別情報を用いることもある。
また、以下の説明では、番号を「#」という記号で表すことがある。
また、以下の説明では、ジャーナルボリュームを「JVOL」とし、データボリュームを「DVOL」とする。DVOLには、例えば、ホストコンピュータ(以下、「ホスト」と言う)からのデータが書き込まれる。JVOLには、DVOLに書き込まれるデータ、及びこのデータに関する管理情報を含むジャーナル(以下、「JNL」と言う)が書き込まれる。管理情報には、例えば、その管理情報を含むJNLが含むデータの格納先を表す情報と、DVOLにデータが書き込まれる度に更新される番号である更新番号(以下、「シーケンシャル番号」或いは「SEQ#」と言うこともある)とが含まれる。更新番号が小さいということは、そのJNLに含まれるデータがDVOLに早い段階で書き込まれた事を示す。また、更新番号が大きいということは、そのJNLに含まれるデータがDVOLに遅い段階で書き込まれた事を示す。つまり、この更新番号を参照することにより、各JNLに含まれるデータのDVOLに書き込まれた順序を知ることができる。
また、以下の説明では、第1のストレージ装置のJVOLを「正JVOL」と言い、第2のストレージ装置のJVOLを「副JVOL」と言うことがある。但し、非同期リモートコピーにおいて、正JVOLと副JVOLの両方が必ずしも必要なわけではない。例えば、正JVOLと副JVOLのどちらか一方が無くても、本発明を実現することができる。
また、以下の説明では、第1のストレージ装置のプールを「正プール」と言い、第2のストレージ装置のプールを「副プール」と言う。
図1は、本発明の一実施例に係る記憶制御装置を含んだ非同期型リモートコピーシステムの処理の概要を示す。
この非同期型リモートコピーシステムは、正ストレージ装置20Aと、副ストレージ装置20Bとを有する。正ストレージ装置20Aには、ホストコンピュータ(以下、「ホスト」と省略することがある)10及び副ストレージ装置20Bが接続されている。
正ストレージ装置20Aは、正DVOL21Aと、正JVOL22Aと、正プール23Aと、キャッシュメモリ(以下、「CM」と言うことがある)35Aとを有する。
正JVOL22Aは、Thin Provisioning(Dynamic Provisioningとも言う)に従う仮想的な論理ボリュームである仮想ボリューム(以下、正VVOLとする)である。正JVOL22Aは、複数の仮想領域(以下、仮想ページ)221Aで構成される。各JNL222Aのサイズは、各仮想ページ221Aのサイズよりも小さい。
正DVOL21Aは、ホスト10からのデータが書き込まれる論理ボリュームである。なお、図に示す例では、正DVOL21Aも、正JVOL22Aと同様に、Thin Provisioningに従うVVOLである。正VDVOL21Aと正JVOL22Aには、同一の正プール23Aが関連付けられており、故に、その同一の正プール23Aから実ページが割り当てられるようになっている。
正プール23Aは、図示省略の記憶装置(例えば、HDD(Hard Disk Drive))に基づく複数の実領域(以下、実ページ)で構成される。正JVOL22A(仮想ページ221A)、及び正DVOL21Aには、正プール23Aの実ページが動的に割り当てられる。
CM35Aは、複数のキャッシュ領域(以下、スロットと言うことがある)に分割して管理されている。CM35A内のスロットには、論理ボリューム(以下、VOL)に読み書きされるデータ、例えば、正DVOL21Aに読み書きされるデータ、及び正JVOL22Aに読み書きされるJNLが一旦書き込まれる。
副ストレージ装置20Bは、副DVOL21Bと、副JVOL22Bと、副プール23Bと、CM35Bとを有する。副ストレージ装置20Bの各構成の説明は、正ストレージ装置20Aと、実質的に同一であるため、説明を省略する。なお、以下の説明において、正JVOLを構成する仮想ページを、正仮想ページと言い、副JVOLを構成する仮想ページを、副仮想ページと言うことがあり、両者を特に区別しない場合、これらを単に仮想ページと言うことがある。また、副ストレージ装置のVVOLを副VVOLと言うことがある。
次に、ホスト10から送信されるライト対象のデータ(以下、「ライトデータ」と言うことがある)の流れについて説明する。本実施例では、正JVOL22Aに割り当てる実ページの数を、そのJVOL22Aを構成する全ての仮想ページの数よりも少なくする。図に示す例では、正JVOL22Aに割り当てられる実ページの数は1だけであるが、正JVOL22Aに割り当てる実ページの数は、これに限定されない。
なお、図では、細い黒矢印が、データの詳細な流れを示し、太い白矢印が、データの大まかな流れを示す。
ホスト10から送信されたライトデータは、CM35Aに一旦書き込まれてから、正DVOL21Aに書き込まれる(S1)。
正DVOL21Aに書き込まれたライトデータと、そのライトデータが書き込まれた順番に相当するSEQ#を有する管理情報とを含んだJNL222Aが、CM35Aに書き込まれてから、正JVOL22Aに書き込まれる。このJNL222Aは、仮想ページ221Aの一部分に書き込まれる(S2)。前述したように、1つのJNL222Aのサイズは、1つの仮想ページ221Aのサイズよりも小さく、故に、1つの正仮想ページ221Aには、複数のJNL222Aを書き込むことができる。
正JVOL22Aに書き込まれたJNL222Aは、正ストレージ装置20Aから副ストレージ装置20Bに送信され、CM35Bに書き込まれてから、副JVOL22Bに書き込まれる(S3)。なお、図に示す例によれば、正JVOL22Aに割り当てられる実ページの数と同様に、副JVOL22Bに割り当てられる実ページの数は、1つだけである。しかし、副JVOL22Aに割り当てられる実ページの数は、これに限定されない。
副JVOL22Bにおける複数の未反映のJNLのうち、更新順序が最も先である(SEQ#が最も小さい)JNLから、順に、副DVOL21Bに反映される。具体的には、副JVOL22BからCM35BにJNLが読み出され、そのJNL内のライトデータが、副DVOL21Bに書き込まれる(S4)。これにより、正DVOL21Aに書き込まれたライトデータが、副DVOL21Bにリモートコピーされたことになる。
正DVOL21Aを指定したライト要求に従うライトデータがホスト10から新たに送信された場合、そのライトデータについても、上述のS1〜S4の処理が行われる。その際、JNL222Aのサイズ以上の大きな空き領域が、割り当て済みの実ページにある場合、正ストレージ装置20A内のコントローラは、その空き領域にJNL222Aを書き込む。しかし、JNL222Aのサイズ以上の空き領域が、割り当て済みの実ページに無い場合、その実ページにおける最古のコピー済みJNL(副ストレージ装置20Bに転送済み且つ副ストレージ装置20Bで反映済みであり正JVOL22AにおいてSEQ#が最も小さいJNL)が書き込まれている領域に新たなJNLを上書きするラップアラウンドを行う。
図1を参照して、より具体的な説明をする。図に示す例では、正仮想ページ221Aに割り当て済みの実ページ、SEQ#1〜#24の24個のJNL222Aが書き込まれており、その実ページには、新たなJNL(SEQ#25以降のJNL)を追記できるほどの空き領域がない状態である。図に示す例では、SEQ#1のJNLにはデータ「A」が含まれ、SEQ#2のJNLにはデータ「C」が含まれ、SEQ#24のJNLにはデータ「D」が含まれている。実ページに書き込まれているJNLでは、SEQ#1のJNLが最も古く、SEQ#24のJNLが最も新しい。
SEQ#25のJNLを正JVOL22Aに新たに書き込む場合、割当て済み実ページには新たなJNLを記憶できるほどの空き領域が無いので、正ストレージ装置20Aは、SEQ#が最も小さいJNL(SEQ#1のJNL)が書き込まれている領域に、新たなJNL(SEQ#25のJNL)を上書きする。
この様に、本実施例では、正JVOL22Aを構成する仮想ページ221Aの数よりも少ない数の割当て済み実ページ(図に示す例では1個の実ページ)に新たなJNLを記憶可能な領域が無くなった場合に(JNLのサイズより大きな空き領域が無くなった場合に)、最古のコピー済みJNLが格納されている領域に新たなJNLが上書きされるラップアラウンドが行われる。つまり、本実施例では、正プール23Aから正JVOL22Aに割り当てる実ページの数を、正JVOL22Aを構成する仮想ページ222Aの数より少なくすることができる。よって、正JVOL22AとしてVVOLが採用されても、正プール23Aから使用される実ページの数を抑えることができる。
なお、図に示す例では、正JVOL22Aに正プール23Aから割り当てられる実ページは1個だけである。これは、正ストレージ装置20AのI/O(Input/Output)の性能の低下を防ぐことに貢献し得る。
すなわち、正JVOL22AにJNLを書き込む際、一旦、そのJNLはCM35Aに書き込まれるが、具体的には、正ストレージ装置20Aが、JNLを書き込み先とするキャッシュ領域(例えば、空きのキャッシュ領域、又は、VOLに格納済みのデータのみを記憶した、クリーンのキャッシュ領域)をCM35Aから確保し、確保したキャッシュ領域に、JNLを書き込む。従って、正ストレージ装置20Aは、JNLを正JVOL22Aに書き込むことになる都度に、キャッシュ領域を確保することを行う必要が有り得る。
しかし、図に示す例では、正JVOL22Aに割り当てられる実ページは1個だけなので、その実ページのためのキャッシュ領域が予めCM35Aに確保されても、CM35Aには未だ十分な容量の記憶領域が残っているため、格別の問題は無い。そして、その1個の実ページについて予めキャッシュ領域が確保されていれば、JNLを正JVOL22Aに書き込む都度にキャッシュ領域を確保する必要は無い。故に、正ストレージ装置20AのI/O(Input/Output)の性能の低下を防ぐことが期待できる。
なお、正JVOL22AについてCM35Aに予め確保しておくキャッシュ領域のサイズは、実ページ1個分に限られない。CM35Aの容量に応じて、K個(Kは1より大きく正JVOL22Aを構成する仮想ページの数より少ない)の実ページの総容量分のキャッシュ領域がCM35Aに予め確保されていても良い。この場合、正JVOL22Aには割り当てられる実ページの最大数はKで良い。
また、CM35Aに、正JVOL22Aについてキャッシュ領域は予め確保されていなくても良い。しかし、コントローラ30Aは、正JVOL22Aに割り当てた実ページについて一旦キャッシュ領域を確保したら、そのキャッシュ領域を解放せず確保したままとしておいても良い。これにより、以後、その実ページにJNLを書く際にキャッシュ領域を確保することが不要となる。
また、正ストレージ装置20AのI/O性能の低下を防ぐ観点から、予め、N個の実ページが正JVOL22Aに割り当てられていても良い。Nは、1以上の整数であり、正JVOL22Aの全域に割り当てられる実ページの数であるM(MはN<Mとなる整数)よりも小さい。Mは、仮想ページの数と同じ値である。
正ストレージ装置20Aについて述べた上述のことは、副ストレージ装置20Bについても同様とすることができる。すなわち、副JVOL22Bに割り当てられる実ページの数は、副JVOL22Bを構成する仮想ページの数よりも少なくすることができ(例えば、副JVOL22Bに割り当てられる実ページを1個だけとすることができ)、割当て済みの実ページにおいて、ラップアラウンドが行われる。副ストレージ装置20Bでも、通常、JNLを副JVOL22Bに書き込む際には、そのJNLを書き込むためのキャッシュ領域をCM35Bから確保することが行われるが、本実施例では、副JVOL22Bに割り当てられる実ページの数分のキャッシュ領域が予め確保されていても良い。
また、JVOL22A(及び/又は22B)に割り当てられる実ページの最大数のうちの一部についてのみ、予めキャッシュ領域がCM35A(及び/又は35B)から確保されていて、残りについては、JNLをJVOL22A(及び/又は22B)に書き込む際に確保されるようになっていても良い。
また、副ストレージ装置20B(例えばその装置20B内のコントローラ)は、JNLを正ストレージ装置20Aから受信しそのJNLをCM35B(又は副JVOL22B)に書き込む都度、そのJNLが転送済みであることを意味する応答(例えば、受信したJNLが有するSEQ#を含んだ応答)を、正ストレージ装置20Aに返して良い。正ストレージ装置20Aは、そのような応答を受信した場合、その応答に対応するJNL(正JVOL22AにおけるJNL)のステータスを、転送済みとして管理することができる。但し、正JVOL22AにおけるJNLは、副ストレージ装置20Bへの転送がされても、副DVOL21Bに反映されるまで、正JVOL22Aに残っていることが望ましい。なぜなら、副ストレージ装置20Bで障害が発生し、副DVOL21Bに未反映のJNLを副ストレージ装置20Bに再送することを正ストレージ装置20AがSVP50又は副ストレージ装置20B等から要求された場合、副DVOL21Bに未反映のJNLが正JVOL22Bに残っていないと、そのJNLを再送することができないからである。
また、副ストレージ装置20Bは、JNLを副JVOL22Bに反映する都度(JNL内のライトデータを副DVOL21Bに書き込む都度)、そのJNLが反映済みであることを意味する応答(例えば、そのJNLが有するSEQ#を含んだ応答)を、正ストレージ装置20Aに返して良い。正ストレージ装置20Aは、そのような応答を受信した場合、その応答に対応するJNL(正JVOL22AにおけるJNL)のステータスを、コピー済みとして管理することができる。副DVOL22Bに書き込まれたライトデータを含むJNLは、副JVOL22B及び正JVOL22Aの両方から削除されて良い。
また、JVOL(VVOL)に割り当てられる実ページの最大数を、JVOL(VVOL)を構成する仮想ページの数よりも少ない、ということを、正ストレージ装置20Aと副ストレージ装置20Bの一方だけで行われても良い。
以下、本実施例を詳細に説明する。その際、正ストレージ装置20Aに関する事項を詳細に説明し、その事項のほとんどが、副ストレージ装置20Aについても同様なので、副ストレージ装置20Aについては適宜説明を省略する。
図2は、正ストレージ装置20Aの構成例を示す。
正ストレージ装置20Aは、コントローラ30Aと、複数の記憶デバイス40Aとを有する。記憶デバイス40Aは、例えばHDD(Hard Disk Drive)である。複数の記憶デバイス40AでRAID(Redundant Array of Independent (or Inexpensive) Disks)グループが構成され、各RAIDグループを基に、実体的なVOL(以下、「実VOL」と言う)41Aが形成される。実VOL41は、ホスト10に提供されずプールの構成要素であっても良いし、ホスト10に提供されるDVOLとされても良い。前者の場合、実VOL41は複数の実ページに分割されて良い。なお、記憶デバイス40Aには、HDDに代えて、テープ、或いはフラッシュメモリ等の別の物理的な記憶デバイスが採用されても良い。
コントローラ30Aは、複数のフロントエンドインターフェイス装置(以下、FE−IF)31Aと、NIC(Network Interface Card)32Aと、CPU(Central Processing Unit)33Aと、メモリ34Aと、CM35Aと、バックエンドインターフェイス装置(以下、BE−IF)36Aとを有する。コントローラ30Aが行う処理は、CPU33Aが1以上のコンピュータプログラムを実行することにより行われて良いが、その処理の少なくとも一部が、ハードウェア回路によって行われても良い。
複数のFE−IF31Aに、ホスト10、及び副ストレージ装置20Bが接続される。コントローラ30A(CPU33A)は、FE−IF31Aを介して、ホスト10、及び副ストレージ装置20Bと通信する。
NIC32Aには、SVP(SerVice Processor)50が接続される。SVP50は、管理計算機の一例である。
CPU33Aは、コントローラ30Aの処理を制御する。メモリ34Aには、コントローラ30Aが、正ストレージ装置20Aを制御するために必要な各種情報、及びプログラムが記憶されている。CPU33Aは、メモリ34Aに記憶されている各種情報に基づいて、各種プログラムを実行することにより、各種機能を実現する。
CM35Aは、記憶デバイス40Aに書き込まれるデータ、及び、記憶デバイス40Aから読み出されたデータを記憶する。CM35Aはメモリ34Aと一体であっても良い。
BE−IF36Aに、記憶デバイス40Aが接続される。コントローラ30A(CPU33A)は、BE−IF36Aを介して、書込み先のVOL(例えば、正DVOL21A又は正JVOL22Aに割り当てられた実ページ)の基になっている記憶デバイス40Aにデータを書き込む。
以上が、正ストレージ装置20Aの構成の説明である。なお、コントローラ30Aは、図2に示す構成に限らず、他の構成を有していても良い。
なお、副ストレージ装置20Bの構成は、正ストレージ装置20Aの構成と実質的に同じであるため、副ストレージ装置20Bについての説明を省略する。
図3Aは、正ストレージ装置20Aのメモリ34Aに記憶されている管理テーブル、及びプログラムの例を示す。
メモリ34Aには、正VOL管理テーブル341Aと、正ジャーナルグループ(以下、「正JNLG」と言う)管理テーブル342Aと、JNLGペア管理テーブル343Aと、VVOLペア管理テーブル344Aと、正VVOL管理テーブル345Aと、正仮想ページ割り当て管理テーブル346Aと、正JNLステータス管理テーブル347Aと、正仮想ページステータス管理テーブル348Aと、正プール割り当て管理テーブル349Aと、制御プログラム350Aと、が記憶されている。
正VOL管理テーブル341Aは、正ストレージ装置20Aが有する全てのVOLを管理するテーブルである。VOLは、VVOL又は実VOLである。
正JNLG管理テーブル342Aは、正ストレージ装置20Aの正JNLGを管理するテーブルである。JNLGとは、データを格納する1個以上の論理VOLと、JNLを格納する論理VOLから構成されるボリュームの集合を示す。
JNLGペア管理テーブル343Aは、正JNLGと、副ストレージ装置20BのJNLG(以下、副JNLGとする)とのペアの状態を管理するテーブルである。
VVOLペア管理テーブル344Aは、正VVOLと、副VVOLとのペアの状態を管理するテーブルである。
正VVOL管理テーブル345Aは、正VVOLを管理するテーブルである。
正仮想ページ割り当て管理テーブル346Aは、正仮想ページに正プールからどの実ページが割り当てられているかを管理するテーブルである。
正JNLステータス管理テーブル347Aは、正ストレージ装置20Aで処理されるJNL(正JNL)のステータスを管理するテーブルである。
正仮想ページステータス管理テーブル348Aは、正仮想ページのステータスを管理するテーブルである。
正プール割り当て管理テーブル349Aは、正プールが、どの正JVOLに割り当てられているかを管理するテーブルである。
制御プログラム350Aは、CPU33Aが、正ストレージ装置20Aを制御するためのコンピュータプログラムである。
図3Bは、副ストレージ装置20Bのメモリ34Bに記憶されている管理テーブル、及びプログラムの例を示す。
メモリ34Bには、副VOL管理テーブル341Bと、副JNLG管理テーブル342Bと、JNLGペア管理テーブル343Bと、VVOLペア管理テーブル344Bと、副VVOL管理テーブル345Bと、副仮想ページ割り当て管理テーブル346Bと、副JNLステータス管理テーブル347Bと、副仮想ページステータス管理テーブル348Bと、副プール割り当て管理テーブル349Bと、制御プログラム350Bと、が記憶されている。
これらの管理テーブルは、第1のストレージ20Aのメモリ34Aに記憶されている管理テーブルと実質的に同一であるため、説明を省略する。
図4は、CM35Aのスロットの容量と、正JVOL22Aに割り当てられる実ページとの関係を示す。
CM35は、複数のスロット(キャッシュ領域)351Aで構成されている。1つの仮想ページ221A(1つの実ページ)の容量は、所定数(例えば168個)のスロット351Aの容量に等しい。図1にて説明したように、VOL(例えば、正DVOL21A及び正JVOL22A)に読み書きされるデータは、一旦CM35Aに書き込まれる。プール23Aは、複数の実VOLで構成されており、各実VOLが、複数の実ページに分割されており、実ページが、仮想ページに割り当てられる。
本実施例では、CM35Aにおける所定数のスロット(図1の例で言えば、1個のページと同じ容量分(168個)のスロット)351Aが、正JVOL22Aについて予め確保されている。例えば、K個(Kは1より大きく正JVOL22Aを構成する仮想ページの数より少ない)の仮想ページ221Aの容量分のスロットをCM35Aに予め確保する場合、(168×K)個のスロットが予め確保される。
このように、CM35Aのスロットを所定数の仮想ページ分だけ予め確保しておくと、JNLを正JVOL22Aに書き込む際に、CM35Aのスロットを確保する動作が省略される。故に、正ストレージ装置20Aの性能の低下を回避することが期待できる。また、図1に示したように、正JVOL22Aに割り当てる実ページの数を1個(抽象的には、正JVOL22Aの容量の所定割合以下のページ数分)とすると、予め確保しておくスロット数(キャッシュ容量)を節約することができる。
なお、副ストレージ装置20Bにおける、CM35Bのスロットの容量と副JVOL22Bに割り当てられるページとの関係は、CM35Aのスロットの容量と正JVOL22Aに割り当てられるページとの関係と実質的に同一であるため、説明を省略する。
図5は、各ページの容量と、各JNLの容量との関係を示す。ここでも、正ストレージ装置20Aを例に採り説明する。
図4で説明したように、1個の仮想ページ221Aの容量は、168個分のスロットの容量に等しい。1個の仮想ページ221Aの容量は、例えば2MBである。JNL222Aの容量は、例えば2KBである。
コントローラ30Aが、正仮想ページ221Aの先頭から、JNL222Aを書き込む。その際、仮想ページ221Aに割り当てられた実ページに空き領域があるものの、その空き領域の容量が、JNL222Aのサイズ未満の場合がある。この場合、できるだけ空き領域を使うために、JNL222A(図に示す例ではSEQ#100のJNL)の一部を、その実ページに書き、そのJNL222Aの残りを、別の実ページに書き込む事が考えられる。
しかし、本実施例では、そのように、1つのJNL222Aを2つの実ページに跨るように書くのではなく、コントローラ30Aは、空き領域が少ない実ページの割当先の仮想ページとは別の仮想ページにプール23Aから空きの実ページを割当て、その実ページの先頭から、JNL222Aを書き込む。その際、割当て済みの実ページの数が規定の数(正JVOLを構成する仮想ページの数未満の数)に達していれば、コントローラ30Aは、正JVOL22Aに割り当て済みの1以上の実ページのうち、最も古いコピー済みを記憶している領域に、新たな書き込み対象のJNLを上書きする(ラップアラウンド)。
以上の処理により、JNL222Aが、複数の実ページに跨って書き込まれるのを回避することができる。
図6は、コントローラ30Aの処理の概要を示す。なお、図6の説明では、正JVOL22Aに割り当てられる実ページの数が固定値ではなく可変値である。すなわち、図6は、正JVOL22Aに割り当てられる実ページの数が一定ではないことの一例を示す(但し、正JVOL22Aに割り当てられる実ページの数が、上記説明と同様、正JVOL22Aを構成する仮想ページの数より少ない)。
例えば、コントローラ30Aにより、仮想ページを単位として、JNL222Aのコピーが行われる。すなわち、1つの仮想ページ(正確には、その仮想ページに割り当てられている実ページ)に格納されているJNL群(仮想ページに格納されている全てのJNL)毎に、正ストレージ装置20Aから副ストレージ装置20Bにコピーが行われる。JNLは、副ストレージ装置20Bから正ストレージ装置20Aへ送られたリードコマンドに応答して正ストレージ装置20Aから副ストレージ装置20Bに送られるが、それに代えて、正ストレージ装置20Aから副ストレージ装置20Bへのライトコマンドと共に送られても良い。
コントローラ30Aは、正JVOL22Aにおける各仮想ページ221Aのステータスを管理している。
実ページが割り当てられていない仮想ページ221Aのステータスは、「未割当て」である。
コントローラ30Aは、「未割当て」の仮想ページ221Aに初めてJNLを書き込む場合、その仮想ページ221Aに実ページを割当て、割り当てた実ページにJNLを書き込み、その仮想ページ221Aのステータスを、「未コピー」に変更する。
コントローラ30Aは、「未コピー」の仮想ページから少なくとも1つのJNLを副ストレージ装置20Bに転送した場合、その仮想ページのステータスを「未コピー」から「コピー中」に変更する。「コピー中」は、仮想ページから少なくとも1つのJNLが副ストレージ装置20Bへ転送され始めたものの、その仮想ページに書き込まれた所定数(例えば実ページに書き込み可能なJNLの最大数)のJNLの全てが未だ副DVOL21Bに反映されていないこと、言い換えれば、その仮想ページに割り当てられている実ページに記憶されているJNLを未だ消去することができないこと、を意味する。従って、「コピー中」の仮想ページ221Aは、例えば、以下の(A)乃至(C)のうちの状況、
(A)仮想ページからいずれのJNLも副JVOL22Bに転送されていない状況、
(B)仮想ページから少なくとも1つのJNLが副JVOL22Bに転送されたがそのうちのいずれのJNLも副DVOL21Bに反映されていない状況、
(C)仮想ページから少なくとも1つのJNLが副JVOL22Bに転送され副DVOL21Bに反映されたが、未だ、その仮想ページにおける全てのJNLが副DVOL21Bに反映されていない状況、
のいずれも該当する。なお、上記(A)乃至(C)のうちのどの状況に該当するかが分かるよう、「コピー中」というステータスは、より複数の詳細なステータスに細分化されていても良い。
仮想ページ221Aに割り当てられた実ページには、JNL222Aが追記されていく。その実ページの空き容量がJNL222Aのサイズ未満になった場合、コントローラ30Aは、その実ページが割り当てられている仮想ページの次の仮想ページに、空きの実ページ231Aを新たに割り当て、その新たに割り当てた実ページ231Aに、JNL222Aを書き込む。新たに実ページが割り当てられた仮想ページのステータスは、その仮想ページから1つでもJNLが転送された場合に、図示の通り、「コピー中」というステータスにされる。
このようにして、或る時間(図示の第1の時間)が経過すると、正JVOL22Aに書き込まれるJNLが増えるので、正JVOL22Aに割り当てられる実ページが増え、且つ、ステータスが「コピー中」の仮想ページが増える。
そして、やがて(更に図示の第2の時間が経過すると)、最初にステータスが「コピー中」となった仮想ページのステータスが、「コピー済み」に変わる。「コピー済み」は、仮想ページ内の全てのJNLが副DVOL21Bに反映されたこと、言い換えれば、その仮想ページ内の全てのJNLが消されても良いことを意味する。
「コピー済み」の仮想ページがH個(例えばH=1)生じた時点以降で、コントローラ30Aは、正JVOL22Aに新たに実ページを割り当てることを中止する。すなわち、その時点以降、新たなJNL222Aを正JVOL22Aに書き込む場合、コントローラ30Aは、正JVOL22に最近割り当てた実ページにある空き領域が、JNL未満の容量であっても、別の仮想ページに新たな空きの実ページを割り当てない。コントローラ30Aは、「コピー済み」の仮想ページ221Aに割り当てられている実ページにおける最古のJNLが記憶されている領域に、書き込み対象のJNL222Aを書き込む。図示の例では、正JVOL22Aに割り当てられる実ページ231Aの数である5は、正JVOL22Aを構成する仮想ページ221Aの数よりも少ない。
なお、「コピー済み」の仮想ページの数である上記Hは、正JVOL22Aを構成する仮想ページ221Aの数よりも少なければ、1より大きな整数でも良い。
また、コントローラ20Aは、仮想ページ単位でJNLを副ストレージ装置20Bに転送することに代えて、JNL単位で副ストレージ装置20BにJNLを転送しても良い。例えば、コントローラ20Aは、副ストレージ装置20Bとの通信負荷が所低負荷未満の場合(例えば、正ストレージ装置20Aと副ストレージ装置20B間の帯域が所定値以上空いている、CPU33Aの使用率が所定値未満である、等)、仮想ページ単位でJNLを副ストレージ装置20Bに転送し、その通信負荷がその所定負荷以上になった場合に(例えばJNLの転送遅延が生じた場合に)、仮想ページ単位でJNLを副ストレージ装置20Bに転送することをやめて、JNL単位で副ストレージ装置20BにJNLを転送しても良い。通信負荷が所定負荷以上になった場合には、JNL単位で転送した方が、同じ時間内により多くのJNLを転送ることが期待でき、故に、コピー元の仮想ページのステータスとして、コピー済みのステータスをより早く得られることが期待でき、以って、正JVOL22Aに割り当てる実ページの数を減らすことが期待できる。
なお、JNL単位でのJNL転送を開始して仮想ページ単位のJNL転送に戻すまでの間(或いは、仮想ページ単位でのJNL転送を行っている間にも)、コントローラ20Aは、JNL毎のステータスを管理して良い。例えば、JNLが副ストレージ装置20に転送されたものの副DVOL21Bに未反映であれば、コントローラ20Aは、そのJNLのステータスを「コピー中」として管理し、そのJNLが副DVOL21Bに反映された場合には、そのJNLのステータスを「コピー済み」として管理して良い。「コピー済み」のJNLがJ個生じた時点以降で、コントローラ30Aは、正JVOL22Aに新たに実ページを割り当てることを中止してよい。Jの値は、例えば、1以上であり、且つ、(H×T)以下である(Tは、1つの仮想ページに格納されるJNLの数)。
また、仮想ページ単位とJNL単位のどちらの単位でJNLを転送するかは、副ストレージ装置20Bのコントローラが、通信負荷を監視し、その結果を基に、切り替えても良い。例えば、副ストレージ装置20Bは、仮想ページ単位でJNLをリードするための第1種のリードコマンドを正ストレージ装置20Aに送信し、通信負荷が所定負荷以上になったことを検出した後は、JNL単位でJNLをリードするための第2種のリードコマンドを正ストレージ装置20Aに送信して良い。
図7Aは、正仮想ページビットマップ70Aの構成例を示す。
正仮想ページビットマップ70Aは、メモリ34Aに記憶される。正仮想ページビットマップ70Aを参照することにより、CPU33Aは、どのJNLG(ジャーナルグループ)のどのJNLが副DVOL22Bにコピー済み(反映済み)であるかどうかを知ることができる。
正仮想ページビットマップ70Aは、JNLG#71Aごとに、複数のビット72を有する。各ビットは、JNLのSEQ#に対応している。SEQ#n(nは0以上の整数のうちのいずれか)がコピー済みであれば、n番目のビットがオン(例えば1)となる。CPU33Aは、JNLG#1のJNLGについて、SEQ#nのJNLを転送した後、副ストレージ装置20Bから、そのJNLを副DVOL21Bに反映済みであることを意味する通知を受けたとき、JNLG#1且つSEQ#nに対応するビットをオンにする。
なお、JNLGは、1以上のDVOLと1以上のJVOLとの集合である。JNLGとしては、正JNLGと副JNLGがある。正JNLGは、1以上の正DVOLと1以上の正JVOLとの集合である。副JNLGは、1以上の副DVOLと1以上の副JVOLとの集合である。
図7Bは、JNLG使用状況管理テーブル700Aの構成例を示す。
JNLG使用状況管理テーブル700Aは、メモリ34Aに記憶される。JNLG使用状況管理テーブル700Aは、JNLG毎に、JNLG#701Aと、使用率702Aと、全ページ数703Aと、使用ページ数704Aとを関連付けて記憶する。
JNLG#701Aは、JNLGを識別するための番号である。
使用率702Aは、JNLGの全容量に対する全JNLの容量の割合を示す情報である。
全ページ数703Aは、JNLGが有する全ページ数を示す情報である。
使用ページ数704Aは、JNLGが有する全ページのうちJNLが格納されているページの数を示す情報である。使用率702Aは、全ページ数703Aと使用ページ数704Aに基づいて算出される。
なお、副ストレージ装置20Bのメモリ34Bにも、副仮想ページビットマップ、及びJNLG使用状況管理テーブルが記憶されて良いが、それらは、それぞれ、正ストレージ装置21Aの正仮想ページビットマップ70A、及びJNLG使用状況管理テーブル700Aと、実質的に同一であるため、説明を省略する。
図8Aは、正VOL管理テーブル341Aの構成例を示す。
正VOL管理テーブル341Aは、正ストレージ装置20AのVOL毎に、VOL#81Aと、使用状況82Aと、JNLG#83Aと、VOL属性84Aと、エミュレーションタイプ85Aと、容量86Aとを関連付けて記憶する。
VOL#81Aは、正ストレージ装置20Aが有するVOLを識別するための番号である。
使用状況82Aは、VOLが使用されているかどうかを示す情報である。図に示す例では、VOLが使用されている場合は「使用中」と示され、VOLが使用されていない場合は「未使用」と示されているが、表記の仕方はこれに限定されない。
JNLG#83Aは、VOLが属しているJNLGの識別番号である。
VOL属性84Aは、VOLの用途を示す情報である。例えば、VOL属性84Aは、VOLがDVOLであれば「Data」であり、VOLがJVOLであれば「JNL」であり、VOLがプールVOL(プールの構成要素となるVOL)であれば「Pool VOL」と示される。なお、JNLGには、プールVOLは含まれない。
エミュレーションタイプ85Aは、VOLのエミュレーションタイプ(VOLにおけるデータ配置のフォーマットのタイプ)を示す情報である。後に詳しく説明するが、エミュレーションタイプが同じVOL(JVOL、DVOL)同士でペアが組まれてよい。
容量86Aは、VOLの容量を示す情報である。図に示す例では、容量の単位は「GB」(ギガバイト)であるが、単位はこれに限定されない。
図8Bは、副VOL管理テーブル341Bの構成例を示す。
副VOL管理テーブル341Bは、副ストレージ装置20BのVOL毎に、VOL#81Bと、使用状況82Bと、JNLG#83Bと、VOL属性84Bと、エミュレーションタイプ85Bと、容量86Bとを関連付けて記憶する。なお、副VOL管理テーブル341Bは、正VOL管理テーブル341Aと構成がほぼ同じであるため説明を省略する。
図9Aは、正JNLG管理テーブル342Aの構成例を示す。
正JNLG管理テーブル342Aは、正JNLGに属するVOL毎に、正JNLG#91Aと、VOL#92Aと、VOL属性93Aと、を関連付けて記憶する。
正JNLG#91Aは、VOLが属する正JNLGの識別番号である。VOL#92Aは、VOLの識別番号である。VOL属性93Aは、VOLの属性(DVOLであるかJVOLであるか)を示す情報である。
正JNLG管理テーブル342Aを参照することにより、CPU33Aが、どの正JNLGに属するどのVOLがどのようなVOL(JVOL、DVOL)であるかを判断することができる。
図9Bは、副JNLG管理テーブル342Bの構成例を示す。
副JNLG管理テーブル342Bは、副JNLGに属するVOL毎に、副JNLG#91Bに、VOL#92Bと、VOL属性93Bと、を関連付けて記憶する。副JNLG管理テーブル342Bは、正JNLG管理テーブル342Aと構成が実質的に同じであるため説明を省略する。
図10は、JNLGペア管理テーブル343Aの構成例を示す。
JNLGペア管理テーブル343Aは、JNLGペア毎に、正JNLG#101と、副JNLG#102と、ステータス103とを有する。
正JNLG#101は、JNGLペアにおける正JNLGの識別番号であり、副JNLG#102は、そのJNLGペアにおける副JNLGの識別番号である。
ステータス103は、JNLGペアのステータスを示す情報である。「PAIR」は、正JNLGと副JNLGとでデータが一致している(正DVOLと副DVOLとが一致している)ことを示す。「SIMP」は、正JNLGと副JNLGとでまだペアが組まれていないことを示す。「COPY」とは、正JNLGと副JNLGとで、ペアは組まれているものの、データが一致していないことを示す。
JNLGペア管理テーブル343Aを参照することにより、CPU33Aが、どの正JNLGがどの副JNLGとペアになっているか、及びそのJNLGペアの状態を判断することができる。
図11は、VOLペア管理テーブル344Aの構成例を示す
VOLペア管理テーブル344A、344Bは、VOLペア毎に、正VOL#111と、副VOL#112とを関連付けて記憶する。正VOL#111は、VOLペアにおける正VOLの識別番号であり、副VOL#112は、そのVOLペアにおける副VOLの識別番号である。
VVOLペア管理テーブル344Aを参照することにより、CPU33Aが、どの正VOLが、どの副VOLとペアになっているのかを判断することができる。
VVOLペア管理テーブル344B(図3B参照)は、VVOLペア管理テーブル344Aと構成が実質的に同じであるため説明を省略する。
図12Aは、正VVOL管理テーブル345Aの構成例を示す。
正VVOL管理テーブル345Aは、正VVOL毎に、正VVOL#121Aと、Pool#122Aと、容量123Aとを関連付けて記憶する。
正VVOL#121Aは、正VVOL(正DVOL又は正JVOL)の識別番号である。Pool#122Aは、正VVOLが関連付けられているプール(その正VVOLへの実ページの割当元となるプール)の識別番号である。容量123Aは、正VVOLの容量を示す。
図12Bは、副VVOL管理テーブル345Bの構成例を示す。
副VVOL管理テーブル345Bは、副VVOL毎に、副VVOL#121Bと、Pool#122Bと、容量123Bとを関連付けて記憶する。副VVOL管理テーブル345Bは、正VVOL管理テーブル345Aと構成が実質的に同じであるため説明を省略する。
図13Aは、正仮想ページ割り当て管理テーブル346Aの構成例を示す。
正仮想ページ割り当て管理テーブル346Aは、正VVOLごとに存在する。正仮想ページ割り当て管理テーブル346Aは、正仮想ページ毎に、仮想ページ#131Aと、実ページ#132Aとを関連付けて記憶する。仮想ページ#131Aは、仮想ページの識別番号であり、実ページ#132Aは、仮想ページに割り当てられている実ページの識別番号である。仮想ページに実ページが割り当てられていない場合、その仮想ページに対応する実ページ#132Aは、実ページが割り当てられていないことを示す値である。
正仮想ページ割り当て管理テーブル346A及び上述の正VVOL管理テーブル345Aを参照することにより、CPU33Aは、正仮想ページに実ページが割り当てられているか否か、及び、正仮想ページにどのプールからどの実ページが割り当てられているかを判断することができる。
図13Bは、副仮想ページ割り当て管理テーブル346Bの一例を示す。
副仮想ページ割り当て管理テーブル347Bは、副VVOLごとに存在する。副仮想ページ割り当て管理テーブル346Bは、副仮想ページ毎に、仮想ページ#131Bと、実ページ#132とを関連付けて記憶する。副仮想ページ割り当て管理テーブル346Bは、正VOL管理テーブル345Aと構成が実質的に同じであるため説明を省略する。
図14は、正JNLステータス管理テーブル347Aの構成例を示す。
正JNLステータス管理テーブル347Aは、正JVOLごとに存在する。正JNLステータス管理テーブル347Aは、正JVOLにおけるJNL毎に、正仮想ページ#141Aと、ステータス142Aと、ページ開始アドレス143Aと、ページ終了アドレス144Aと、JNL開始アドレス145Aと、JNL終了アドレス146Aと、SEQ#147Aとを関連付けて記憶する。
正仮想ページ#141Aは、JNLを格納している正仮想ページを識別する番号である。
ステータス142Aは、JNLのステータスを示す。例えば、ステータス142Aは、下記の通りである。
(*)「コピー済み」とは、副DVOL21BにJNLに含まれるデータがコピーされていること(つまり副DVOL21BにJNLが反映されたこと)を示す。
(*)「コピー中」とは、副ストレージ装置20BにJNLが転送されたがそのJNLが副DVOLに未反映であることを示す。
(*)「リード可」とは、正JVOL内のJNLが、副JVOLへ転送可能であることを示す。
(*)「未コピー」とは、正JVOL内のJNLが、副JVOLへまだ転送されていないことを示す。
(*)「未割当」とは、正仮想ページに実ページが割り当てられていないことを示す。
ページ開始アドレス143Aは、仮想ページの開始のアドレスを示す情報である。ページ終了アドレス144Aは、各仮想ページの終わりのアドレスを示す情報である。
JNL開始アドレス145Aは、JNLが仮想ページのどの領域から書き込まれているかを示す情報である。JNL終了アドレス146Aは、JNLが仮想ページのどの領域まで書き込まれているかを示す情報である。JNL開始アドレス145AとJNL終了アドレス146Aとを参照することにより、仮想ページにおけるJNLの位置が分かる。
SEQ#147Aは、JNLに含まれるSEQ#を表す。
正JNLステータス管理テーブル347Aを参照することにより、CPU33Aが、各JNLのステータスを判断することができる。
図15は、副JNLステータス管理テーブル347Bの構成例を示す。
副JNLステータス管理テーブル347Bは、副JVOLごとに存在する。副JNLステータス管理テーブル347Bは、副JVOLにおけるJNL毎に、副仮想ページ#141Bと、ステータス142Bと、ページ開始アドレス143Bと、ページ終了アドレス144Bと、JNL開始アドレス145Bと、JNL終了アドレス146Bと、SEQ#147Bと、を関連付けて記憶する。
副JNLステータス管理テーブル347Bは、正JNLステータス管理テーブル347Aと構成が実質的に同じであるため詳しい説明は省略する。
図16Aは、正仮想ページステータス管理テーブル348Aの構成例を示す。
正仮想ページステータス管理テーブル348Aは、正JVOL22Aごとに存在する。正仮想ページステータス管理テーブル348Aは、正仮想ページ毎に、正仮想ページ#161Aと、ステータス162Aとを関連付けて記憶する。
正仮想ページ#161Aは、仮想ページを識別する番号である。ステータス162Aは、仮想ページのステータスを示す情報である。ステータス162Aは、例えば下記の通りである。
(*)「コピー済み」とは、仮想ページ221A内の全てのJNLが副DVOL21Bに反映されたことを示す。
(*)「コピー中」とは、仮想ページ221A内の少なくとも1つのJNLが副ストレージ装置20Bに転送され、且つ、仮想ページ221A内の少なくとも1つのJNLが副DVOL21Bに未反映であることを示す。
(*)「リード可」とは、仮想ページ221A内の全てのJNLを副JVOL22Bへ転送可能であることを示す。
正仮想ページステータス管理テーブル348Aを参照することにより、CPU33Aが、各正仮想ページ221Aのステータスを判断することができる。
なお、仮想ページのステータスは、その仮想ページ内のJNLのステータスに依存して良い。例えば、1つの仮想ページにおける全てのJNLのステータスが「コピー済み」であれば、その仮想ページのステータスも「コピー済み」で良い。また、例えば、1つの仮想ページにおける少なくとも1つのJNLのステータスが「コピー中」であれば、その仮想ページのステータスも「コピー中」で良い。
図16Bは、副仮想ページステータス管理テーブル348Bの構成例を示す。
副仮想ページステータス管理テーブル348Bは、副JVOL22Bごとに存在する。副仮想ページステータス管理テーブル348Bは、副仮想ページ毎に、副仮想ページ#161Bと、ステータス162Bとを関連付けて記憶する。副仮想ページステータス管理テーブル348Bは、正仮想ページステータス管理テーブル348Aと構成が実質的に同じであるため説明を省略する。
図17Aは、正プール管理テーブル349Aの構成例を示す。
正プール管理テーブル349Aは、正プールごとに存在する。正プール管理テーブル349Aは、正実ページ毎に、Pool#171Aと、実ページ#172Aと、仮想ページ#173Aと、正VVOL#174Aとを関連付けて記憶する。
Pool#171Aは、実ページを有する正プールを識別する番号である。実ページ#172Aは、実ページを識別する番号である。仮想ページ#173Aは、実ページが割り当てられている仮想ページを識別する番号である。正VVOL#174Aは、実ページが割り当てられている仮想ページを含んだ正VVOLを識別する番号である。なお、空きの実ページに対応する仮想ページ#173A及び正VVOL#174Aは、その実ページが空きの実ページ(割り当て可能な実ページ)であることを意味する値で良い。
正プール管理テーブル349Aを参照することにより、CPU33Aは、どの実ページが空きの実ページ(割り当て可能な実ページ)であるか、及び、どの実ページがどのVVOLのどの仮想ページに割り当てられているかを判断することができる。
図17Bは、副プール管理テーブル349Bを示す。
副プール管理テーブル349Bは、副プールごとに存在する。副プール管理テーブル349Bは、副実ページ毎に、副Pool#171Bと、実ページ#172Bと、副仮想ページ#173Bと、副VVOL#174Bと、を関連付けて記憶する。副プール管理テーブル349Bは、正プール管理テーブル349Aと構成が実質的に同じであるため説明を省略する。
以下、本実施例で行われる処理を説明する。
図18は、JNLG同士でペアを形成する処理の流れの一例を示す。
正ストレージ装置20Aのコントローラ30Aは、図8Aの正VOL管理テーブル341Aを参照し「未使用」のステータスである空きVOLを、正プール23Aに割り当てる(S181)。コントローラ30Aは、空きプールに割り当てられたVOLのステータスを「使用中」とする。
コントローラ30Aは、正VVOLを作成する(S182)。正VVOLは、正DVOL21A又は正JVOL22Aである。
コントローラ30Aは、正プール23Aと正VVOLとを関連付ける(S183)。この処理は、コントローラ30Aが、図8Aの正VOL管理テーブル341Aの各VOL属性84Aを「Data」或いは「JNL」とすることにより行われる。
コントローラ30Aは、正VVOLを正JNLGとして登録する(S184)。この処理は、コントローラ30Aが、正JNLG管理テーブル342AのVOL#92Aのより特定されるVOLを、正JNLG91Aにより特定されるいずれかのJNLGに関連付けることにより行われる。この処理により、図8Aの管理テーブル311Aにて、VVOLとして登録された各VOLが、いずれかのJNLGに属することになる。
コントローラ30Aは、JNLG同士でペアを形成する(S185)。この処理は、コントローラ30Aにより、JNLGペア管理テーブル343Aにおける正JNLG#101により特定されるJNLGを、副JNLG#102により特定されるいずれかのJNLGに関連付けることにより行われる。この処理により、正DVOL21Aと副DVOL21Bとのペア、及び正JVOL22Aと副JVOL22Bとのペアが形成される(図11参照)。
その後、コントローラ30Aは、ホスト10からのI/Oコマンドを受け付け、そのI/Oコマンドに従い、正DVOLに対するリード又はライトの処理を行う(S186)。ここでは、正DVOL21Aと正JVOL22Aに同じプールが割り当てられたが、両VOLに異なるプールが割り当てられても良い。
なお、副ストレージ装置20Bにおけるコントローラ30Bも、コントローラ30Aと実質的に同じ処理(図18に示した処理)を行うことができる。
図19は、正JVOL22Aから副JVOL22BにJNLをコピーする処理の流れの一例を示す。この処理では、JNL単位でJNLが転送される。
コントローラ30Bは、正JNLステータス管理テーブル347Aが表す情報を参照して「リード可」となっている正仮想ページ221Aがあるかどうかを、先頭のページから(正仮想ページ#141Aが小さい方から)チェックする(S211)。
「リード可」となっている正仮想ページがない場合(S211:No)、コントローラ30Bは、次の正仮想ページ221Aをチェックする(S219)。
「リード可」となっている正仮想ページ221Aがある場合(S211:Yes)、コントローラ30Bは、コピー先となる副仮想ページ221Bのステータスを「コピー中」とする(S212)。この処理により「コピー中」のステータスとなった副仮想ページ221Bに、正仮想ページ221AからのJNLをコピーすることができるようになる。
コントローラ30Bは、正ストレージ装置20Aから、コピー対象の正仮想ページの、正仮想ページビットマップ(図7A参照)を表す情報を取得する(S213)。
次に、コントローラ30Bは、コントローラ30Aに、S211にてチェックした「リード可」のステータスである正仮想ページ221A内のJNLであって、ビットが「1」(オン)のJNLをリードするためのリードコマンドを送信する(S214)。
コントローラ30Bは、副仮想ページステータス管理テーブル347Bの、JNL開始アドレス145B、JNL終了アドレス146B、及びSEQ#147Bを、JNLごとに更新する(S215)。
コントローラ30Bは、更新したJNLに対応する、正仮想ページビットマップ70A(図7A参照)におけるビットを、「0」(オフ)に更新する(S216)。「0」となったJNLは、副JVOL22Bにコピーされたことを示す。コントローラ30Bは、この処理を、コピー対象の正仮想ページ221A内の全てのJNLに対して行う。
コントローラ30Bは、正仮想ページビットマップ70Aを表す情報を参照して、コピー対象の正仮想ページ内の全てのJNLに関して、全て「0」になっているかどうかをチェックする(S217)。この処理により、コントローラ30Bが、副JVOLに、正仮想ページが完全にコピーされたかどうかを判断することができる。
正仮想ページビットマップ70Aが全て「0」となっている場合(S217:Yes)、コントローラ30Bは、コピー先の副仮想ページ221Bに関するステータスを「リストア可」とする(S218)。この処理は、コントローラ30Bが、副仮想ページステータス管理テーブル347Bのステータス142Bを「コピー中」から「リストア可」に更新することにより行われる。
コントローラ30Bは、次の正仮想ページ221Aを参照する(S219)。そして、S211で、コントローラ30Aにより、その次の正仮想ページ221Aのステータスが「リード可」であるかがチェックされる。
一方、正仮想ページビットマップ70Aが全て「0」となっていない場合(S217:No)、コントローラ30Bは、正仮想ページビットマップが全て「0」となるまで(全てのJNLがコピーされるまで)S214以降の処理を行う。
以上の処理により、正JVOL22AからJNLが副JVOL22Bにコピーされる。
図20は、副DVOL21Bにデータをリストアする処理の流れの一例を示す。
コントローラ30Bは、副仮想ページステータス管理テーブル347Bを参照して、参照したページが「リストア可」のステータスである副仮想ページ221Bであるかどうかをチェックする(S231)。
そのページが「リストア可」の副仮想ページでない場合(S231:No)、コントローラ30Bは、次の副仮想ページ221Bが「リストア可」のページであるかをチェックする(S231)。
「リストア可」の副仮想ページ221Bである場合(S231:Yes)、コントローラ30Bは、この副仮想ページ221B内のJNL内のデータを、副DVOL21Bに書き込む処理を行う(S232)。この処理は、仮想ページ単位で行われても良いし、JNL単位で行われても良い。
コントローラ30Bは、この副仮想ページ内の全てのJNLがリストア済みとなったら、この副仮想ページ内のステータスを「コピー済み」とする(S233)。この処理は、コントローラ30Bにより、副仮想ページ管理テーブル347Bのステータス142Bを「コピー済み」とすることにより行われる。
コントローラ30Bは、正ストレージ装置のコントローラ30Aに対して、この副仮想ページ221Bのステータス142Bが「コピー済み」となったことを送信する(S234)。
図21は、JNLGの自動定義をする処理の流れを示す。
SVP50は、SVP50が表示したメンテナンス画面(例えばGUI(Graphical User Interface)画面)において、JNLGを定義するモードがユーザにより「ON」にされたかどうかをチェックする(S241)。
モードが「ON」にされていない場合(S241:No)、SVP50により、通常の処理に従って正JNLGと副JNLGとのペアの作成が行われる(S247)。
モードが「ON」にされている場合(S241:Yes)、SVP50は、GUI画面を介して、例えばURL(Uniform Resource Locator)の入力をユーザから受けて、正JNLGと副JNLGとのペアを作成する(S242)。
コントローラ30Aは、SVP50からの指示により、正VOL管理テーブル341Aを参照して「未使用」のステータスであるVOLを正プールに含める(S243)。
コントローラ30Aは、SVP50からの指示により、正VVOLを作成する(S244)。
コントローラ30Aは、正プールと、作成した正VVOLとを関連付ける(S245)。これは、正VVOL管理テーブル345A(正VVOL#121A、Pool#122A、容量123A)を更新することにより行われる。
コントローラ30Aは、正VVOLを正JNLGに含める(S246)。この処理は、コントローラ30Aにより、正JNLG管理テーブル342A(正JNLG#91A、VOL#92A、VOL属性93A)を更新することにより行われる。
以上の処理により、正JNLGと副JNLGとのペアが作成され、それにより、正JNLG内のVVOLと副JNLG内のVVOLにプールが割り当てられ、JNLGが定義される。
なお、コントローラ30Bも、コントローラ30Aと実質的に同じ処理(図21に示した処理)を行うことができる。
図22は、図21のS243の詳細の一例を示す。
コントローラ30A(30B)は、VOL管理テーブル341A(341B)を参照して、そのVOLが「未使用」のステータスかどうかをチェックする(S251)。
そのVOLが「未使用」のステータスでない場合(S251:No)、コントローラ30A(30B)は、次のVOLをチェックする(S254)。
VOLが「未使用」のステータスである場合(S251:Yes)、コントローラ30A(30B)は、そのVOLのエミュレーションタイプをチェックする(S252)。
このVOLが、プールを構成している何れのVOLともエミュレーションタイプが同じでない場合(S252:No)、コントローラ30A(30B)は、次のVOLをチェックする(S254)。
このVOLが、プールを構成しているVOLとエミュレーションタイプが同じである場合(S252:Yes)、コントローラ30A(30B)は、そのVOLを、そのプールに追加する(S253)。
図23は、図21のS246の処理の詳細の一例を示す。
コントローラ30Aは、JNLG#0から、この正JNLGが、未割り当てであるかどうかをチェックする(S261)。この処理は、コントローラ30Aが、正JNLG管理テーブル342Aの正JNLG#91Aに、VOL#92Aが関連付けられているかをチェックすることにより行われる。
正JNLGが、未割り当てでない場合(S261:No)、コントローラ30Aは、次の正JNLG(現在のJNLG#に1を加算することにより得られるJNGL#)が、未割り当てであるかどうかをチェックする(S263)。
この正JNLGが、未割り当てである場合(S261:Yes)、コントローラ30Aは、この正JNLGに正VVOLを登録する(S262)。この処理は、コントローラ30Aにより、正JNLG管理テーブル342Aを更新することにより行われる。
次に、コントローラ30Bは、JNLG#0から、この副JNLGが、未割り当てであるかどうかをチェックする(S264)。この副JNLGが、未割り当てでない場合(S264:No)、コントローラ30Bは、次の副JNLGが、未割り当てであるかどうかをチェックする(S266)。この処理は、コントローラ30Bが、正JNLG管理テーブル342B正JNLG#91Bに、VOL#92ABが関連付けられているかをチェックすることにより行われる。
副JNLGが、未割り当ててある場合(S264:Yes)、コントローラ30Bは、この副JNLGに副VVOLを登録する(S265)。この処理は、コントローラ30Bにより、副JNLG管理テーブル324Bを更新することにより行われる。
以上の処理により、プールから実ページが割り当てられたVVOL(DVOL、JVOL)が、いずれかのJNLGに属することになる。
図24は、JVOLの使用率が閾値を超えた場合の処理の流れを示す。
この処理は、正ストレージ装置20Aと副ストレージ装置20Bとで実質的に同じであるため、正ストレージ装置20Aの処理のみを説明する。また、以下の説明では、JNGLの使用率の閾値として、第1の閾値と、第1の閾値より大きい第2の閾値とがあり、第1の閾値は、90%であり、第2の閾値は、80%とするが、これらはこの例に限定されない。また、第1の閾値と第2の閾値のように別れておらず閾値は1つでも良い。
コントローラ30Aは、JNLGの使用率が80パーセント以上であるかをチェックする(S271)。
JNLGの使用率が80パーセント以上でない場合(S271:No)、コントローラ30Aは処理を終了する。
一方、JNLGの使用率が80パーセント以上である場合(S271:Yes)、コントローラ30Aは、そのJNLG内のVVOLに新たに割り当てられる実ページ(追加できる実ページ)があるかどうかをチェックする(S272)。この処理は、コントローラ30Aが、正JNLステータス管理テーブル347Aを参照し、ステータス142Aが「未割当」の実ページがあるかどうかをチェックすることにより行われる。
追加できる実ページがある場合(S272:Yes)、コントローラ30Aは、その実ページをJNLGに割り当て、その実ページの割当先の仮想ページのステータス142Aを「未コピー」に更新する(S272)。
追加できる実ページがない場合(S272:No)、コントローラ30Aは、追加できるVOLがあるかどうかをチェックする(S274)。追加できるVOLがある場合(S274:Yes)、コントローラ30Aは、図22の処理により、JNLGにVOLを追加する(S275)。
追加できるVOLがない場合(S274:No)、コントローラ30Aは、JNLGの使用率が90パーセント以上であるかをチェックする(S276)。
JNLGの使用率が90パーセント以上でない場合(S276:No)、コントローラ30Aは、処理を終了する。
JNLGの使用率が90パーセント以上である場合(S276:Yes)、コントローラ30Aは、S272を再度実行する。なお、コントローラ30Aは、S272を再度行うことに代えて、エラー処理(例えばエラーをSVP50に通知する処理)を行って、終了しても良い。
図25は、正JVOL22AにJNLを書き込む処理の流れの一例を示す。
副JVOL22BにJNLを書き込む処理の流れは、正JVOL22AにJNLを書き込む処理の流れと実質的に同じであるため、説明を省略する。
コントローラ30Aは、JNLのライト先の仮想ページに実ページが割当て済みか否かをチェックする(S281)。
コントローラ30Aは、実ページが既に割当て済みであれば(S281:Yes)、その実ページに、JNLのサイズ以上の空き領域があるか否かをチェックする(S282)。
JNLのサイズ以上の空き領域が実ページにあれば(S282:Yes)、コントローラ30Aは、その実ページにJNLを追記する(S291)。
JNLのサイズ以上の空き領域が実ページになければ(S282:No)、コントローラ30Aは、JVOLに新たに実ページを割り当てるか否かをチェックする(S283)。このチェックの結果は、例えば、次のいずれかとなる。
(A)JVOLに割り当てられる実ページの最大数が固定値の場合。
(a1)既に所定数の実ページがJVOLに割当て済みであれば、S283:Noが得られる。
(a2)未だ所定数の実ページがJVOLに割当てられていなければ、S283:Yesが得られる。
(B)JVOLに割り当てられる実ページの最大数が可変値の場合(但し、その最大数は、JVOLを構成する仮想ページの数より小さい)。
(b1)ステータスが「コピー済み」となった仮想ページ(又はJNL)の数が所定数(例えば1)に達していれば、S283:Noが得られる。
(b2)ステータスが「コピー済み」となった仮想ページ(又はJNL)の数が所定数(例えば1)に達していなければ、S283:Yesが得られる。
上記(B)のケースでは、どの時点で、ステータスが「コピー済み」となった仮想ページ(又はJNL)の数が所定数(例えば1)に達したかによって、JVOLに割当て済みの実ページの総数(最大数)は異なる。
S283:Yesの場合、コントローラ30Aは、ライト先の仮想ページに実ページを割当て、割り当てた実ページにJNLを書き込む(S293)。
S283:Noの場合、コントローラ30Aは、ラップアラウンド、すなわち、JVOLに割当て済みの1以上の実ページのうちの最古のコピー済みのJNLの領域に、新たなJNLを上書きする(S292)。
さて、実ページが割当て済みでなければ(S281:No)、コントローラ30Aは、S283と同様のチェックを行う(S287)。
S287:Yesの場合、コントローラ30Aは、S293を行う。
S283:Noの場合、コントローラ30Aは、S292を行う。
図26は、JNLの転送単位の切り替えに関する処理の流れを示す。
コントローラ30B(30A)は、原則、仮想ページ単位でJNLを転送する(S301)。コントローラ30A(30B)は、正仮想ページ221A内の全てのJNLが副DVOL21Bにコピーされた場合、その仮想ページのステータスを「コピー済み」に更新する。また、コントローラ30A(30B)は、正仮想ページ221A内のJNLが副DVOL21Bにコピーされる都度に、そのJNLのステータスを「コピー済み」に更新して良い。また、コントローラ30A(30B)は、仮想ページ単位でJNLが転送されるモード(期間)では、JNL毎のステータスを更新しないでも良い。
コントローラ30B(30A)は、定期的に或いは不定期的に、通信負荷が所定値以上になったか否か、例えば、仮想ページ221A単位のJNLの転送に遅延が発生しているかをチェックする(S302)。ここで、「転送に遅延が発生している」とは、例えば、ステータスが「コピー中」の仮想ページ(或いJNL)が、ストレージ装置20A(20B)に、一定数以上、存在している状態である。
通信負荷が所定値未満の場合(S302:No)、コントローラ30B(30A)は、仮想ページ単位でJNLを転送するモードを継続する(S301)。
一方、通信負荷が所定値以上の場合(S302:Yes)、コントローラ30B(30A)は、転送モードを、仮想ページ単位でJNLを転送するモードから、JNL単位でJNLを転送するモードに切替える(S303)。例えば、コントローラ30Bは、コントローラ30Bでは、仮想ページ単位でJNLをリードするリードコマンドを正ストレージ装置20Aに送信し、JNL単位でJNLを転送するモードでは、JNL単位でJNLをリードするリードコマンドを正ストレージ装置20Aに送信して良い。コントローラ30Aは、仮想ページ単位でJNLを副ストレージ装置20Bに送信し、JNL単位でJNLを転送するモードでは、JNL単位でJNLを副ストレージ装置20Aに送信して良い。
なお、このような切り替えが行われた時点から、コントローラ30B(30A)は、JNL毎のステータスを更新するようにしても良い。また、転送モードが、JNL単位でJNLを転送するモードに切り替わった場合、コントローラ30B(30A)は、仮想ページ毎のステータスを更新することを止めても良い。
コントローラ30B(30A)は、定期的に或いは不定期的に、通信負荷が所定値以上であることが解消されたか否か、例えば、転送の遅延が解消されているかをチェックする(S304)。具体的には、例えば、コントローラ30B(30A)は、ステータスが「コピー中」の仮想ページ(又はJNL)がある一定数未満になったかどうかをチェックする。
通信負荷が所定値以上であることが解消されていない場合(S304:No)、コントローラ30B(30A)間では、JNL単位でJNLを転送することが継続される(S303)。
通信負荷が所定値以上であることが解消されている場合(S304:Yes)、コントローラ30B(30A)は、転送モードを、JNL単位でJNLを転送するモードから、仮想ページ単位でJNLを転送するモードに切替える(S301)。
通信負荷が所定値以上である場合に、転送モードを上記のように切替えれば、仮想ページ或いはJNLについて、より早く「コピー済み」のステータスを得ることが期待できる。故に、より早く、JVOLに新たに実ページを割り当てることを中止することが期待でき、以って、実ページの消費を抑えることが期待できる。
以上、本発明の一実施例を説明したが、本発明はこれに限定されない。
例えば、DVOL21は、VVOLではなく、RAIDグループに基づくVOLである実VOLでも良いし、外部のストレージ装置に基づく仮想的なVOL(ストレージ仮想化技術に従う仮想的なVOL)でも良い。
例えば、仮想ページ及びJNLのうちの少なくとも一方について、ステータス「コピー済み」として、第1のコピー済みと、第2のコピー済み、があっても良い。第1のコピー済みは、副JVOLにJNLが格納された場合のステータスであり、第2のコピー済みは、副DVOLにJNLが反映された場合のステータスで良い。「第1のコピー済み」の仮想ページ又はJNLが所定数得られた時点で、JVOLに実ページを新規に割り当てる事が中止されれば、実ページの消費をより抑えることが期待できる。一方、「第2のコピー済み」の仮想ページ又はJNLが所定数得られた時点で、JVOLに実ページを新規に割り当てる事が中止されれば、JNLを保険としてより長い期間保持しつつ、実ページの消費を抑えることが期待できる。
10…ホストコンピュータ、20A…正ストレージ装置、20B…副ストレージ装置

Claims (15)

  1. プライマリの論理ボリュームに書き込まれるデータであるユーザデータを含むジャーナルを、コピー元の記憶制御装置からコピー先の記憶制御装置に送信し、前記ジャーナルに含まれる前記ユーザデータをセカンダリの論理ボリュームに書き込むことで前記ジャーナルを前記セカンダリの論理ボリュームに反映する非同期型リモートコピーを行う、リモートコピーシステムにおける、前記コピー元及びコピー先の記憶制御装置のうちの一方の記憶制御装置である第1の記憶制御装置であって、
    記憶装置に接続される第1のインターフェイスと、
    前記コピー元及びコピー先の記憶制御装置のうちの他方の記憶制御装置である第2の記憶制御装置に接続される第2のインターフェイスと、
    前記第1及び第2のインターフェイスに接続されるコントローラと、
    を有し、
    ジャーナルが書き込まれるジャーナルボリュームとして、シンプロビジョニングに従う仮想的な論理ボリュームである仮想ボリュームが採用されており、前記仮想ボリュームは複数の仮想領域で構成され、且つ、前記ジャーナルのサイズは、前記仮想領域のサイズより小さく、
    前記コントローラは、ジャーナルボリュームにジャーナルを追記するようになっており、
    前記コントローラは、ジャーナルボリュームにジャーナルを書き込む場合、前記記憶装置に基づく複数の実領域で構成されたプールから仮想領域に割り当てられた実領域に、そのジャーナルを追記し、
    ジャーナルボリュームに割り当てられる実領域の数は、Nであり、
    前記Nは、1以上の整数であり、且つ、ジャーナルボリュームの全域に割り当てられる実領域の数よりも小さく、
    前記コントローラは、前記ジャーナルボリュームに割り当てられたN個の実領域に新たにジャーナルを追記できない場合、割り当て済みの前記N個の実領域にコピー済みの古いジャーナルがある場合、その古ジャーナルに書き込み対象のジャーナルを上書きするラップアラウンドを行う、
    記憶制御装置。
  2. 請求項1記載の記憶制御装置であって、
    前記コントローラは、前記ジャーナルボリュームに新たに実領域を割り当て、新たに割り当てた実領域にジャーナルを追記するようになっており、
    前記コントローラは、
    (A)仮想領域から少なくとも1つのジャーナルを転送した場合に、その仮想領域のステータスを、第1のステータスとし、
    (B)1つの仮想領域について全てのジャーナルが前記第2の記憶制御装置により格納された又は前記セカンダリの論理ボリュームに反映された場合に、その仮想領域のステータスを、第2のステータスとし、
    前記コントローラは、X個の仮想領域のステータスが第2のステータスとなった第1の時点の後、前記ジャーナルボリュームに実領域を新たに割り当てることを止め(Xは1以上の整数)、
    前記Nは、前記第1の時点で前記ジャーナルボリュームに割り当て済みの実領域の数である、
    記憶制御装置。
  3. 請求項2記載の記憶制御装置であって、
    前記コントローラは、ジャーナルを仮想領域単位で転送し、前記第2の記憶制御装置との通信の負荷が所定負荷以上になった場合に、ジャーナルを仮想領域単位ではなくジャーナル単位で転送するようになっている、
    記憶制御装置。
  4. 請求項3記載の記憶制御装置であって、
    前記コントローラは、ジャーナル単位でジャーナルを転送することを開始した後、前記ジャーナルボリュームにおける各未転送のジャーナルについて、
    (a)ジャーナルを前記第2の記憶制御装置に転送した場合に、そのジャーナルのステータスを、第1のステータスとし、
    (b)ジャーナルが前記第2の記憶制御装置により格納された又は前記セカンダリの論理ボリュームに反映された場合に、そのジャーナルのステータスを、第2のステータスとし、
    前記コントローラは、第2のステータスのジャーナルの数がJとなった第2の時点の後、前記ジャーナルボリュームに実領域を新たに割り当てることを止め(J1以上の整数)、
    前記Nは、前記第2の時点で前記ジャーナルボリュームに割り当て済みの実領域の数である、
    記憶制御装置。
  5. 請求項1記載の記憶制御装置であって、
    前記コントローラは、キャッシュメモリを有し、キャッシュメモリからキャッシュ領域を確保し、論理ボリュームに入出力されるデータをその確保したキャッシュ領域に一旦格納するように構成されており、
    前記コントローラは、前記N個の実領域のうちの1以上の実領域について確保されたキャッシュ領域を確保したままとしておく、
    記憶制御装置。
  6. 請求項5記載の記憶制御装置であって、
    前記N個の実領域の全てについて、前記キャッシュ領域が確保されたままである、
    記憶制御装置。
  7. 請求項5記載の記憶制御装置であって、
    前記N個の実領域のうちの1以上の実領域について、前記キャッシュ領域が予め確保されている、
    記憶制御装置。
  8. 請求項5記載の記憶制御装置であって、
    前記N個の実領域が予め前記ジャーナルボリュームに割り当てられている、
    記憶制御装置。
  9. 請求項1記載の記憶制御装置であって、
    前記Nは1である、
    記憶制御装置。
  10. 請求項1記載の記憶制御装置であって、
    前記コントローラは、書込み先の実領域が空き領域を有するものの、その空き領域のサイズが1つのジャーナルのサイズ未満の場合、その実領域とは別の実領域にジャーナルを書き込む、
    記憶制御装置。
  11. 請求項2記載の記憶制御装置であって、
    Xは1である、
    記憶制御装置。
  12. 請求項1記載の記憶制御装置であって、
    前記コントローラは、前記ジャーナルボリュームにおけるジャーナルについて、
    (a)そのジャーナルが前記セカンダリの論理ボリュームに反映されていない場合に、そのジャーナルのステータスを、第1のステータスとし、
    (b)ジャーナルがコピー先の記憶制御装置により格納された又は前記セカンダリの論理ボリュームに反映された場合に、そのジャーナルのステータスを、第2のステータスとし、
    前記コントローラは、第2のステータスのジャーナルの数がJとなった時点の後、前記ジャーナルボリュームに実領域を新たに割り当てることを止め(J1以上の整数)、
    前記Nは、前記時点で前記ジャーナルボリュームに割り当て済みの実領域の数である、
    記憶制御装置。
  13. 請求項1記載の記憶制御装置であって、
    前記コントローラは、前記ジャーナルボリュームに新たに実領域を割り当て、新たに割り当てた実領域にジャーナルを追記するようになっており、
    前記コントローラは、
    (A)1つの仮想領域について少なくとも1つのジャーナルが前記セカンダリの論理ボリュームに反映されていない場合に、その仮想領域のステータスを、第1のステータスとし、
    (B)1つの仮想領域について全てのジャーナルがコピー先の記憶制御装置により格納された又は前記セカンダリの論理ボリュームに反映された場合に、その仮想領域のステータスを、第2のステータスとし、
    前記コントローラは、X個の仮想領域のステータスが第2のステータスとなった時点の後、前記ジャーナルボリュームに実領域を新たに割り当てることを止め(Xは1以上の整数)、
    前記Nは、前記時点で前記ジャーナルボリュームに割り当て済みの実領域の数である、
    記憶制御装置。
  14. プライマリの論理ボリュームに書き込まれるデータであるユーザデータを含むジャーナルを、コピー元の記憶制御装置からコピー先の記憶制御装置に送信し、前記ジャーナルに含まれる前記ユーザデータをセカンダリの論理ボリュームに書き込む非同期型リモートコピーを行う、リモートコピーシステムにおける、前記コピー元及びコピー先の記憶制御装置のうちの一方の記憶制御装置である第1の記憶制御装置の記憶制御方法であって、
    ジャーナルが書き込まれるジャーナルボリュームとして、シンプロビジョニングに従う仮想的な論理ボリュームである仮想ボリュームが採用されており、前記仮想ボリュームは複数の仮想領域で構成され、且つ、前記ジャーナルのサイズは、前記仮想領域のサイズより小さく、
    前記第1の記憶制御装置は、ジャーナルボリュームにジャーナルを追記する場合、記憶装置に基づく複数の実領域で構成されたプールから仮想領域に割り当てられた実領域に、そのジャーナルを追記し、
    ジャーナルボリュームに割り当てられる実領域の数は、Nであり、
    前記Nは、1以上の整数であり、且つ、ジャーナルボリュームの全域に割り当てられる実領域の数よりも小さく、
    前記コントローラは、前記ジャーナルボリュームに割り当てられたN個の実領域に新たにジャーナルを追記できない場合、割り当て済みの前記N個の実領域における古いジャーナルに、書き込み対象のジャーナルを上書きするラップアラウンドを行う、
    記憶制御方法。
  15. プライマリの論理ボリュームに書き込まれるデータであるユーザデータを含むジャーナルを、コピー元の記憶制御装置からコピー先の記憶制御装置に送信し、前記ジャーナルに含まれる前記ユーザデータをセカンダリの論理ボリュームに書き込む非同期型リモートコピーを行う、リモートコピーシステムであって、
    ジャーナルが書き込まれるジャーナルボリュームとして、シンプロビジョニングに従う仮想的な論理ボリュームである仮想ボリュームが採用されており、前記仮想ボリュームは複数の仮想領域で構成され、且つ、前記ジャーナルのサイズは、前記仮想領域のサイズより小さく、
    前記コピー元及びコピー先の記憶制御装置のうちの一方の記憶制御装置である第1の記憶制御装置は、ジャーナルボリュームにジャーナルを追記するようになっており、ジャーナルボリュームにジャーナルを書き込む場合、記憶装置に基づく複数の実領域で構成されたプールから仮想領域に割り当てられた実領域に、そのジャーナルを書き込み、
    ジャーナルボリュームに割り当てられる実領域の数は、Nであり、
    前記Nは、1以上の整数であり、且つ、ジャーナルボリュームの全域に割り当てられる実領域の数よりも小さく、
    前記第1の記憶制御装置は、前記ジャーナルボリュームに割り当てられたN個の実領域に新たにジャーナルを追記できない場合、割り当て済みの前記N個の実領域における古いジャーナルに、書き込み対象のジャーナルを上書きするラップアラウンドを行う、
    リモートコピーシステム。
JP2013528429A 2011-06-15 2011-06-15 記憶制御装置、及び記憶制御方法 Expired - Fee Related JP5649733B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/003420 WO2012172602A1 (en) 2011-06-15 2011-06-15 Storage control apparatus and storage control method

Publications (2)

Publication Number Publication Date
JP2014502738A true JP2014502738A (ja) 2014-02-03
JP5649733B2 JP5649733B2 (ja) 2015-01-07

Family

ID=47354674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013528429A Expired - Fee Related JP5649733B2 (ja) 2011-06-15 2011-06-15 記憶制御装置、及び記憶制御方法

Country Status (3)

Country Link
US (2) US8627034B2 (ja)
JP (1) JP5649733B2 (ja)
WO (1) WO2012172602A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US10642703B2 (en) 2017-11-30 2020-05-05 International Business Machines Corporation Configuring a secondary storage system for data mirroring
US10664368B2 (en) 2017-11-30 2020-05-26 International Business Machines Corporation Modifying aspects of a storage system associated with data mirroring
US10592362B2 (en) 2017-11-30 2020-03-17 International Business Machines Corporation Modifying journaling associated with data mirroring within a storage system
US11262922B1 (en) * 2020-08-07 2022-03-01 EMC IP Holding Company LLC Dynamic shared journal
US11409457B1 (en) * 2021-04-23 2022-08-09 Netapp, Inc. Co-located journaling and data storage for write requests

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004259079A (ja) * 2003-02-27 2004-09-16 Hitachi Ltd データ処理システム
JP2006065629A (ja) * 2004-08-27 2006-03-09 Hitachi Ltd データ処理システム及び方法
JP2008198184A (ja) * 2007-02-15 2008-08-28 Hitachi Ltd 連続的なデータ保護のためにジャーナル領域を調節するための方法および装置
JP2009093378A (ja) * 2007-10-05 2009-04-30 Hitachi Ltd ストレージシステム
JP2009123187A (ja) * 2007-10-24 2009-06-04 Hitachi Ltd ストレージシステム
JP2011013821A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd ストレージシステム、ストレージ制御装置及び方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005018510A (ja) * 2003-06-27 2005-01-20 Hitachi Ltd データセンタシステム及びその制御方法
US7395265B2 (en) 2004-08-27 2008-07-01 Hitachi, Ltd. Data processing system and storage subsystem provided in data processing system
JP4877962B2 (ja) * 2006-10-25 2012-02-15 株式会社日立製作所 暗号化機能を備えたストレージサブシステム
US8285953B2 (en) 2007-10-24 2012-10-09 Hitachi, Ltd. Storage system group
JP4958739B2 (ja) * 2007-11-09 2012-06-20 株式会社日立製作所 障害の発生した記憶装置に記憶されているデータを修復するストレージシステム
US8407436B2 (en) 2009-02-11 2013-03-26 Hitachi, Ltd. Methods and apparatus for migrating thin provisioning volumes between storage systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004259079A (ja) * 2003-02-27 2004-09-16 Hitachi Ltd データ処理システム
JP2006065629A (ja) * 2004-08-27 2006-03-09 Hitachi Ltd データ処理システム及び方法
JP2008198184A (ja) * 2007-02-15 2008-08-28 Hitachi Ltd 連続的なデータ保護のためにジャーナル領域を調節するための方法および装置
JP2009093378A (ja) * 2007-10-05 2009-04-30 Hitachi Ltd ストレージシステム
JP2009123187A (ja) * 2007-10-24 2009-06-04 Hitachi Ltd ストレージシステム
JP2011013821A (ja) * 2009-06-30 2011-01-20 Fujitsu Ltd ストレージシステム、ストレージ制御装置及び方法

Also Published As

Publication number Publication date
US20140108749A1 (en) 2014-04-17
WO2012172602A1 (en) 2012-12-20
US8627034B2 (en) 2014-01-07
JP5649733B2 (ja) 2015-01-07
US9009432B2 (en) 2015-04-14
US20120324163A1 (en) 2012-12-20

Similar Documents

Publication Publication Date Title
US7165163B2 (en) Remote storage disk control device and method for controlling the same
JP4282464B2 (ja) リモートコピーシステム
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
US8402236B2 (en) Computer system managing volume allocation and volume allocation management method
US7558916B2 (en) Storage system, data processing method and storage apparatus
US8219777B2 (en) Virtual storage systems, virtual storage methods and methods of over committing a virtual raid storage system
JP5142629B2 (ja) 仮想ボリュームのバックアップを行うストレージシステム及び方法
US7840766B2 (en) Storage system and method of producing recovery volume
JP5649733B2 (ja) 記憶制御装置、及び記憶制御方法
US8099569B2 (en) Storage system and data migration method
US7467241B2 (en) Storage control method and storage control system
US7130976B2 (en) Remote copy method and remote copy system to eliminate use of excess volume for copying data
JP4958673B2 (ja) ストレージシステム及びこれの管理方法
EP1624376A2 (en) Storage system and data processing system
US20140188957A1 (en) Hierarchical storage system and file management method
CN110413694A (zh) 元数据管理方法及相关装置
JP2007310448A (ja) 計算機システム、管理計算機、および、ストレージシステム管理方法
JP5272185B2 (ja) 計算機システム及びストレージシステム
JP2024030968A (ja) 情報処理システム及びバックアップ方法
CN118260222A (zh) 信息处理系统以及信息处理方法
WO2018055751A1 (ja) 計算機システム及び記憶制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140807

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141028

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141111

R150 Certificate of patent or registration of utility model

Ref document number: 5649733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees