JP2006331100A - 差分ビットマップ管理方法、ストレージ装置及び情報処理システム - Google Patents
差分ビットマップ管理方法、ストレージ装置及び情報処理システム Download PDFInfo
- Publication number
- JP2006331100A JP2006331100A JP2005154126A JP2005154126A JP2006331100A JP 2006331100 A JP2006331100 A JP 2006331100A JP 2005154126 A JP2005154126 A JP 2005154126A JP 2005154126 A JP2005154126 A JP 2005154126A JP 2006331100 A JP2006331100 A JP 2006331100A
- Authority
- JP
- Japan
- Prior art keywords
- entry
- bit
- layer
- identification information
- difference
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/2056—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 by mirroring
- G06F11/2069—Management of state, configuration or failover
Abstract
【課題】 大容量の記憶領域に対応する差分ビットマップが必要とするメモリ量を削減する。
【解決手段】 差分ビットマップ27を階層化する。2段目のエントリ320のビット321で差分を表現する。1段目のエントリ310に、2段目のエントリへのポインタ311と代表ビット313を設け、対応するビット321の値が全て代表ビット313の値と等しい場合、2段目のエントリ320を不要とする。
【選択図】 図3
【解決手段】 差分ビットマップ27を階層化する。2段目のエントリ320のビット321で差分を表現する。1段目のエントリ310に、2段目のエントリへのポインタ311と代表ビット313を設け、対応するビット321の値が全て代表ビット313の値と等しい場合、2段目のエントリ320を不要とする。
【選択図】 図3
Description
本発明は、ストレージ装置およびその制御方法に関し、特に、ストレージ装置内において、ボリューム間の差分を記録する差分ビットマップ管理方法、ストレージ装置及び情報処理システムに関する。
従来、ストレージ装置内におけるボリュームの差分をビットマップで管理する方法については、例えば特許文献1に開示されているように、ストレージ装置は、内部のメモリにビットマップを持ち、あるボリュームについて、差分データの取得を行うスナップショット取得後にホストプロセッサが書き込んだブロックがどれかを特定していた。さらに、特許文献1によれば、そのビットマップの各ビットはブロックと1:1に対応していた。
また、このストレージ装置内におけるキャッシュメモリをディレクトリで管理する方法においては、キャッシュディレクトリ(キャッシュメモリを管理するディレクトリ)はキャッシュメモリ上の領域を制御するための情報を有していた。
米国特許第6,618,794号特許明細書
しかし、上述した特許文献1に記載のビットマップ管理方法では、差分を記録するためのビットマップ(以下、「差分ビットマップ」と呼ぶ)のためのメモリ領域を、差分を記録したいボリュームのサイズに比例した分だけ、ストレージ装置に用意する必要がある。そのため、差分を記録したいボリュームの総量が多くなれば、それだけ多くのメモリが必要になるという不都合があった。
そこで、本発明は、差分ビットマップに必要なメモリサイズを削減することを課題とするものである。
上記課題を解決し、本発明の目的を達成するため、本発明の差分ビットマップ管理する方法では、差分ビットマップは、1階層目のテーブルのエントリと2階層目のテーブルのエントリとの2階層のテーブルの組み合わせで表現し、1階層目のテーブルのエントリで示される差分の有無は、2階層目のテーブルのエントリに格納する第1のビットの値で表現し、1階層目のテーブルのエントリは2階層目のテーブルのエントリを指定する第1の識別情報と、2階層目のテーブルのエントリの存在有無を表す第2の識別情報とを格納し、2階層目のテーブルのエントリの第1のビットが、全てあらかじめ定めた値と等しい場合に、対応する1階層目のテーブルのエントリに格納する第2の識別情報に、2階層目のテーブルのエントリが存在しないことを記録することを特徴とするものである。
本発明は、少なくともメモリとプロセッサを内蔵したストレージ装置を用いて構成される。
差分ビットマップは少なくとも2階層のテーブルで構成する。差分の有無は、第1のビットの値(例えば0(差分なし)または1(差分あり))で示す。第1のビットは差分を記録すべき第1のボリューム上の1個あるいはあらかじめ定めた個数のブロックに対応する。第1のビットはビット列として、第2のエントリに格納する。
1階層目のテーブルの第1のエントリは、少なくとも第2のエントリへのポインタと、該ポインタが有効か無効かを示す第2のビットを持つ。2階層目のテーブルの第2のエントリは少なくとも第1のビットの、あらかじめ定めた個数の列を含む。
差分ビットマップは少なくとも2階層のテーブルで構成する。差分の有無は、第1のビットの値(例えば0(差分なし)または1(差分あり))で示す。第1のビットは差分を記録すべき第1のボリューム上の1個あるいはあらかじめ定めた個数のブロックに対応する。第1のビットはビット列として、第2のエントリに格納する。
1階層目のテーブルの第1のエントリは、少なくとも第2のエントリへのポインタと、該ポインタが有効か無効かを示す第2のビットを持つ。2階層目のテーブルの第2のエントリは少なくとも第1のビットの、あらかじめ定めた個数の列を含む。
第1のエントリは、先頭からその順番に第1のボリューム上の複数のブロックと対応しており、そのブロック数は第2のエントリ1個が対応するブロック数と同じである。さらに、第2のビットが無効を示すとき、対応すべき第1のビット列が例えば全て1または0のいずれかを表すとあらかじめ定めておく(例えばここでは0とする)。すると、第1のビットが例えば全て0となっている第2のエントリは全て解放することができるため、差分ビットマップ上で例えば0が多い場合、差分ビットマップに必要なメモリ量を削減することができる。
さらに、第2のビットが無効である場合に、第1のエントリに対応すべき第1のビット列の値を格納するための第3のビットを第1のエントリに備える。これにより、第1のエントリごと、すなわち第1のボリュームの一部分の領域ごとに第1のビットが例えば全て0の場合でも全て1の場合でも、第2のエントリが不要になる。そのため、差分ビットマップに必要なメモリ量を削減できる機会が増える。
さらなる効果として、差分ビットマップに必要なメモリ量が足りなくなった場合に、第1のエントリに相当する第1のビットを差分ありのビット(例えば1)で連続して塗りつぶすことによって、(無駄なコピーが発生し得るかわりに)メモリの枯渇を回避できる。具体的には、第2のエントリの割り当てが不可能になったときに、他の適当な第2のエントリを探し、対応する第3のビットを1に、対応する第2のビットを無効に設定し、解放可能になった第2のエントリを新たに使用する。
さらに、差分ビットマップをキャッシュディレクトリに格納する。これによって、差分ビットマップ参照の際に、ディレクトリ検索の一部が行えるため、メモリアクセスを削減でき、性能を向上に寄与する。
さらに、差分ビットマップをキャッシュディレクトリに格納する。これによって、差分ビットマップ参照の際に、ディレクトリ検索の一部が行えるため、メモリアクセスを削減でき、性能を向上に寄与する。
本発明によれば、差分ビットマップ上で同じ値のビットが連続する場合に、これらに対して割当てるメモリ領域を削減するため、差分ビットマップに必要なメモリ容量を削減することができる。
さらに、差分ビットマップをキャッシュディレクトリに格納することによって、差分ビットマップ参照とディレクトリ検索の一部を同時に行うことができるため、メモリアクセスを削減でき、性能を向上することができる。
以下、本発明の実施形態を、図面を用いて説明するが、本発明は以下に説明する実施形態に限定されるものではないことは言うまでもない。
まず、図1から図4を用いて本発明を適用した情報処理システムの第1の実施の形態例を説明する。
図1は、第1の実施の形態例のストレージ装置の全体構成を示す図である。
このシステムは、少なくとも1台のホストプロセッサ12、少なくとも1台のストレージ装置13、SAN(ストレージ・エリア・ネットワーク)リンク17を備える。
ホストプロセッサ12は、ストレージ装置13に格納されたデータを使用する計算機である。ホストプロセッサ12はSANインタフェース(SAN I/F)171を内蔵している。SAN I/F171はホストプロセッサ12がSANリンク17を介してストレージ装置13とデータを入出力するためのアダプタであり、より具体的には、ファイバー・チャネル(Fibre Channel(FC))のホスト・バス・アダプタ(HBA)である。但し、ホストプロセッサ12とストレージ装置13との間の接続には、SCSI、iSCSI、InfiniBandなど、他のプロトコルを使用してもよく、SAN I/F171はそれぞれのプロトコルに対応したアダプタであればよい。また、SANリンク17は単一のリンクである必要は無く、FCスイッチを介したSANであってもよい。
まず、図1から図4を用いて本発明を適用した情報処理システムの第1の実施の形態例を説明する。
図1は、第1の実施の形態例のストレージ装置の全体構成を示す図である。
このシステムは、少なくとも1台のホストプロセッサ12、少なくとも1台のストレージ装置13、SAN(ストレージ・エリア・ネットワーク)リンク17を備える。
ホストプロセッサ12は、ストレージ装置13に格納されたデータを使用する計算機である。ホストプロセッサ12はSANインタフェース(SAN I/F)171を内蔵している。SAN I/F171はホストプロセッサ12がSANリンク17を介してストレージ装置13とデータを入出力するためのアダプタであり、より具体的には、ファイバー・チャネル(Fibre Channel(FC))のホスト・バス・アダプタ(HBA)である。但し、ホストプロセッサ12とストレージ装置13との間の接続には、SCSI、iSCSI、InfiniBandなど、他のプロトコルを使用してもよく、SAN I/F171はそれぞれのプロトコルに対応したアダプタであればよい。また、SANリンク17は単一のリンクである必要は無く、FCスイッチを介したSANであってもよい。
ストレージ装置13は、制御装置132及びハードディスクドライブ等のディスク装置133を有するストレージサブシステムである。また、ストレージ装置13は、少なくとも1つの論理ボリューム131を有する。論理ボリューム131は、ストレージ装置13が有する物理的な記憶領域から構成されている論理的な記憶領域である。論理ボリューム131は、ホストプロセッサ12などストレージ装置13に対して入出力を行う装置には、論理的に独立した1つのストレージ装置として認識される。
制御装置132はCPU134、メモリ135、SAN I/F172を内蔵している。メモリ135はIO処理プログラム211とペア制御プログラム212、初期化プログラム213、コピープログラム214、差分ビットマップ(BM)制御プログラム215を格納しており、それぞれをCPU134が処理する。さらにメモリ135はペア管理テーブル25、少なくとも1個の差分ビットマップ(BM)27を含む。差分ビットマップ27は論理ボリューム131の差分、すなわち、ある時点からホストプロセッサ12が書き込みを行ったブロック(群)の位置を記録するビットマップであり、差分を記録したいボリュームごとに備える。差分ビットマップ27の構造は後に詳しく説明する。
差分ビットマップ制御プログラム215は論理ボリューム131上のアドレスに対応する差分ビットマップ27上のビットの値を検査またはセットまたはクリアするためのプログラムである。差分ビットマップ制御プログラム215は後に詳しく説明する。
差分ビットマップ制御プログラム215は論理ボリューム131上のアドレスに対応する差分ビットマップ27上のビットの値を検査またはセットまたはクリアするためのプログラムである。差分ビットマップ制御プログラム215は後に詳しく説明する。
ところで、第1の実施の形態例のストレージ装置13は論理ボリューム131aと論理ボリューム131bとを有している。ペア制御プログラム212は、論理ボリューム131aと論理ボリューム131bを内容を一致させるためのペアとして定義することと、その定義の抹消、ペアの分離、再同期化を行うためのプログラムである。これらの処理内容、および初期化プログラム213、コピープログラム214の処理内容は、ペア管理テーブル25の説明とあわせて後で説明する。
IO処理プログラム211は、ホストプロセッサ12が発行した読み書きの要求を処理するためのプログラムである。IO処理プログラム211の処理は、後に図9を用いて説明する。
SAN I/F172はSANリンク17を介して、ホストプロセッサ12がデータを入出力するためのアダプタである。
また、上述した構成のほかに、このシステムは管理端末15を備えていて、管理端末15はSANリンク17を介してストレージ装置13に対してペア定義、ペア定義抹消、ペア分離、ペア再同期化の要求をすることができるように構成されている。なお、管理端末15とストレージ装置13との接続は、LAN(ローカルエリアネットワーク)またはシリアルケーブルなど、互いに通信を可能にできれば他の方法でも良い。さらに、管理端末15はホストプロセッサ12と同じ計算機とし、管理端末15の機能をホストプロセッサ12が内部に格納したソフトウエアで実現しても良い。
また、上述した構成のほかに、このシステムは他のストレージ装置14を備えていて、ペアの状態となるストレージ装置13のディスク装置133に設けられる論理ボリューム131から他のストレージ装置14のディスク装置141に設けられる論理ボリューム142に対するリモートコピーを図示しない回線を介してすることができるように構成されている。
SAN I/F172はSANリンク17を介して、ホストプロセッサ12がデータを入出力するためのアダプタである。
また、上述した構成のほかに、このシステムは管理端末15を備えていて、管理端末15はSANリンク17を介してストレージ装置13に対してペア定義、ペア定義抹消、ペア分離、ペア再同期化の要求をすることができるように構成されている。なお、管理端末15とストレージ装置13との接続は、LAN(ローカルエリアネットワーク)またはシリアルケーブルなど、互いに通信を可能にできれば他の方法でも良い。さらに、管理端末15はホストプロセッサ12と同じ計算機とし、管理端末15の機能をホストプロセッサ12が内部に格納したソフトウエアで実現しても良い。
また、上述した構成のほかに、このシステムは他のストレージ装置14を備えていて、ペアの状態となるストレージ装置13のディスク装置133に設けられる論理ボリューム131から他のストレージ装置14のディスク装置141に設けられる論理ボリューム142に対するリモートコピーを図示しない回線を介してすることができるように構成されている。
図2は第1の実施の形態例において、ストレージ装置13内に設けられるペア管理テーブル25の内容を示す構成図である。
ペア管理テーブル25は複数のエントリ250からなり、それぞれのエントリ250は1組の論理ボリューム131のペアに対応する。エントリ250は正ボリューム識別子251、副ボリューム識別子252、ペア状態253、正BMアドレス254、副BMアドレス255を含む。正ボリューム識別子251および副ボリューム識別子252は論理ボリューム131を特定するための識別子であり、正ボリューム識別子251はペアの正側の論理ボリューム131a、副ボリューム識別子252はペアの副側の論理ボリューム131bに対応する。正副論理ボリューム131に対するCPU134の処理内容は後に示すペア状態253によって変わる。正BMアドレス254、副BMアドレス255はともに差分ビットマップ27を指すアドレスである。
ペア管理テーブル25は複数のエントリ250からなり、それぞれのエントリ250は1組の論理ボリューム131のペアに対応する。エントリ250は正ボリューム識別子251、副ボリューム識別子252、ペア状態253、正BMアドレス254、副BMアドレス255を含む。正ボリューム識別子251および副ボリューム識別子252は論理ボリューム131を特定するための識別子であり、正ボリューム識別子251はペアの正側の論理ボリューム131a、副ボリューム識別子252はペアの副側の論理ボリューム131bに対応する。正副論理ボリューム131に対するCPU134の処理内容は後に示すペア状態253によって変わる。正BMアドレス254、副BMアドレス255はともに差分ビットマップ27を指すアドレスである。
ペア状態253は、少なくとも同期、分離の2状態のいずれかを表す。ペア状態253が同期の場合は、正側の論理ボリューム131aに対するホストプロセッサ12からの書き込みが、論理ボリューム131bに対しても反映されることを意味する。また、ペア状態253が分離の場合は、正側の論理ボリューム131aに対するホストプロセッサ12からの書き込みは、論理ボリューム131bに対する差分として、更新されたブロック(群)の位置を、正BMアドレス254が指す差分ビットマップ27が記憶することを意味している。ホストプロセッサ12から論理ボリューム131bに対する書き込みも同様に副BMアドレス255が指す差分ビットマップ27が記憶する。なお、差分ビットマップ27の更新は、実際にはCPU134が差分ビットマップ制御プログラム215を実行することにより行う。
図3は第1の実施の形態例において、ストレージ装置13内に設けられる差分ビットマップ27の内容を示す構成図である。
差分ビットマップ27は制御情報270、L1テーブル271、L2テーブル272を含む。制御情報270には粒度301、L2サイズ302、L1サイズ303を含む。
L2テーブル272は複数のL2エントリ320からなる。L2エントリ320はL2サイズ302で示す個数のビット321からなる。ビット321の1個は、論理ボリューム131上の、粒度301で示す個数のブロックに対応する。L2エントリ320の1個に対応する論理ボリューム131上のブロック数は、粒度301の値にL2サイズ302の値を乗じた数である。
差分ビットマップ27は制御情報270、L1テーブル271、L2テーブル272を含む。制御情報270には粒度301、L2サイズ302、L1サイズ303を含む。
L2テーブル272は複数のL2エントリ320からなる。L2エントリ320はL2サイズ302で示す個数のビット321からなる。ビット321の1個は、論理ボリューム131上の、粒度301で示す個数のブロックに対応する。L2エントリ320の1個に対応する論理ボリューム131上のブロック数は、粒度301の値にL2サイズ302の値を乗じた数である。
L1テーブル271は、L1サイズ303が示す個数のL1エントリ310からなる。L1エントリ310はL1テーブル271内の順に、論理ボリューム131のブロック(群)に対応する。なお、L1エントリ310の1個が対応する論理ボリューム131上のブロック数はL2エントリ320の1個が対応するブロック数と同数である。
L1エントリ310は対応するL2エントリのアドレス311とアドレス311が有効か無効かを示すL2有効ビット312、代表ビット313を含む。
L1エントリ310は対応するL2エントリのアドレス311とアドレス311が有効か無効かを示すL2有効ビット312、代表ビット313を含む。
ビット321の値が、全て代表ビット313の値と同じ場合は、L2有効ビット312を無効(0)にクリアして、L2アドレスが指すL2エントリを解放することができる。逆に言えば、L2有効ビット312を無効にする場合、対応するビット321の値は代表ビット313の値と同じとみなすようにしている。
このように、差分ビットマップ27をL1エントリ310とL2エントリ320の2階層にすることで、L2エントリ320に対応するビット321が全て同じ値であるときにメモリ容量を削減することができる。また、L1エントリ310に代表ビット313を持つことで、差分ビット中で連続するビット列として0の列と1の列が混在しても、L2エントリ320の割り当てを回避することができ、メモリ容量を削減できる機会が増える。
次に図4から図7を用いて、ストレージ装置13内に設けられるビットマップ27を操作する際のCPU134の処理を説明する。
図4は第1の実施の形態例において、ストレージ装置13内に設けられる差分ビットマップ制御プログラム215の処理を示すフローチャートである。
差分ビットマップ制御プログラム215においてCPU134は、操作の対象となる論理ボリューム131上のブロックに対応するビットの値を検査する(ステップS1〜ステップS5)。各ステップにおいてCPU134は、まず操作の対象となる論理ボリューム131上のブロックに対応するL1エントリ310を読み出す(ステップS1)。
図4は第1の実施の形態例において、ストレージ装置13内に設けられる差分ビットマップ制御プログラム215の処理を示すフローチャートである。
差分ビットマップ制御プログラム215においてCPU134は、操作の対象となる論理ボリューム131上のブロックに対応するビットの値を検査する(ステップS1〜ステップS5)。各ステップにおいてCPU134は、まず操作の対象となる論理ボリューム131上のブロックに対応するL1エントリ310を読み出す(ステップS1)。
具体的には、操作の対象となる論理ボリューム131上のブロックアドレスをL1エントリ310の1個が対応するブロック数で除し、その商をインデクスとしてL1テーブル271を参照してL1エントリ310を特定する。次にCPU134は、ステップS1で読み出したL1エントリ310中のL2有効ビット312を検査し、有効なら(判断ステップS2のY分岐)L2エントリのアドレス311が指すL2エントリ320を読み出し(ステップS3)、操作の対象となる論理ボリューム131上のブロックアドレスに対応するビット321の値を読み出す(ステップS4)。一方ステップS2でL2有効ビット312が無効なら(判断ステップS2のN分岐)CPU134は代表ビット313の値を読み出し(ステップS5)、ステップS4で読み出したビット321又はステップS5で読み出した代表ビット313の値を差分ビットの値とする。
さらにCPU134は、差分ビットマップ制御プログラム215がどの制御を行うかの要求種別に従って分岐する(ステップS11)。要求種別が検査の場合、CPU134は何も処理せず、ステップS1〜ステップS5で検査した差分ビットの値を呼び出し元に返し、処理を終了する。
要求種別がセットまたはクリアの場合、CPU134は、ブロックに対応するビットの値を設定する。すなわちCPU134は、要求種別がセットの場合は1を(ステップS12)、要求種別がクリアの場合は0を設定する(ステップS13)。さらに、CPU134は、ステップS12、ステップS13で設定した値と、ステップS1〜ステップS5で検査した差分ビットの値とを比較し、一致していた場合(判断ステップS14のY分岐)は設定しようとしている値とビット321の現在値とが等しい場合であるため、特に処理が必要ないのでそのまま終了する。
ステップS14で一致しない場合は、ビット321の値を更新する必要があるので、CPU134は、ステップS2で検査したL2有効ビット312を検査し、有効なら(判断ステップS15のY分岐)、ステップS30〜ステップS34を実行して、ビット321の更新と、L2エントリ320の解放試行を行う。
すなわちCPU134は、ステップS4で読み出したビット321に、ステップS12、ステップS13で設定した値を設定する(ステップS30)。さらに、CPU134はL2エントリ320に含まれる全てのビット321が一致するか検査し、一致する場合(ステップS31)は対応する代表ビット313をビット321の値に設定し(ステップS32)、対応するL2有効ビット312をクリアし(ステップS33)、L2エントリ320を解放する(ステップS34)。L2有効ビット312を検査し、無効なら(判断ステップS15のN分岐)未使用のL2エントリ320を、ステップS1で読み出したL1エントリ310に対して割当てる(ステップS20)。
具体的には、L2テーブル272から未使用のL2エントリを検出して、そのアドレスをL2エントリのアドレス311に格納する。なお、L2エントリ320の使用・未使用の管理は、差分ビットマップ27上に空きL2エントリキューのアドレスリストを用意して管理しても良いし、L2エントリ間をポインタでつないでポインタをたどることで空きL2エントリを管理するなど任意の方法でよい。さらに、CPU134は、割当てたL2エントリ320の内容を設定する。まず、CPU134はL2エントリ320を対応する代表ビット313の値で連続して塗りつぶし(ステップS21)、操作の対象となる論理ボリューム131上のブロックアドレスに対応するビット321の値に、ステップS12、ステップS13で設定した値を設定する(ステップS22)。そして、対応するL2有効ビット312をセットする(ステップS23)。
CPU134は、ステップS1〜ステップS5に示した方法によって、差分ビットマップ27からのL2エントリ320のビット321又はL1エントリ310の代表ビット313により差分ビットの値の読み取りが可能となり、ステップS20〜ステップS23に示した方法により、L2エントリ320が割当てられていない領域に対するビット321の値の設定が可能となる。さらに、ステップS30〜ステップS34に示した方法により、CPU134はビット321を設定した後、L2エントリ320の全ビット321が一致することにより集約可能になった場合、L2エントリ320の解放を可能とする。以上述べた方法により、CPU134は差分ビットマップ27に対する読み書きを正常に行うことができる。すなわち、差分ビットマップ27はL1エントリ310およびL2エントリ320との2階層の構成をとり、さらにL2エントリ320を論理ボリュームのすべてに対して用意する必要がなく、その一部で足りる構成をとることができ、メモリ容量を削減することができる。
次に、図5を用いて本発明の第2の実施の形態例について説明する。
図5は第2の実施の形態例において、ストレージ装置13内に設けられる差分ビットマップ制御プログラム215の処理内容を示すフローチャートである。
図5は図4と異なり、判断ステップS15のN分岐とステップS20の間に、ステップS41〜ステップS45を設けている。
ステップS41でCPU134は、未使用のL2エントリ320に空きがないか否かを検査する。空きがある場合はステップS20に戻り、以降図4の処理と共通である。当該L2エントリに空きがない場合(判断ステップS41のN分岐)、CPU134は他の適当な空きL2エントリ320を選択して、その中のビット321が全て1(差分が蓄積されている状態)に連続して同じ値に塗りつぶす。これにより、他の空きL2エントリ320を開放してステップS20のL2エントリ320の割当に利用する。
図5は第2の実施の形態例において、ストレージ装置13内に設けられる差分ビットマップ制御プログラム215の処理内容を示すフローチャートである。
図5は図4と異なり、判断ステップS15のN分岐とステップS20の間に、ステップS41〜ステップS45を設けている。
ステップS41でCPU134は、未使用のL2エントリ320に空きがないか否かを検査する。空きがある場合はステップS20に戻り、以降図4の処理と共通である。当該L2エントリに空きがない場合(判断ステップS41のN分岐)、CPU134は他の適当な空きL2エントリ320を選択して、その中のビット321が全て1(差分が蓄積されている状態)に連続して同じ値に塗りつぶす。これにより、他の空きL2エントリ320を開放してステップS20のL2エントリ320の割当に利用する。
すなわちCPU134は、他の適当なL2エントリ320を選択して(ステップS42)、対応する代表ビット313に1を設定する(ステップS43)。続いて、対応するL2有効ビット312を無効に設定し(ステップS44)、他のL2エントリ320を解放して(ステップS45)、ステップS20に戻る。以後の処理は図4の処理と共通である。ステップS42で選択される他のL2エントリ320は、ステップS41で検査される当該L2エントリ320とは異なる他のL2エントリ320である。
ステップS43の処理は、他のL2エントリ320のビット321を1で連続して同じ値に塗りつぶすことに相当するが、これは対応する論理ボリューム131に(本来書き込んでいない)差分が蓄積されたことを意味し、これにより余分なコピー処理が必要になる可能性がある。しかし、それと引き換えに、L2エントリ320の枯渇を防止することができる。つまり、当該L2エントリ320が枯渇した場合でも、直前のステップS45により他のL2エントリを解放しているのでステップS20では、CPU134はL2エントリ320を必ず割当てることができる。
次に、図6から図8を用いて、本発明の第3の実施の形態例について説明する。
図6は第3の実施の形態例のストレージ装置13の全体構成を示す図である。
図6は図1と異なり、このストレージ装置13は、メモリ135内にキャッシュセグメント49とキャッシュディレクトリ40を含む。また、メモリ135内に差分ビットマップ27(図1参照。)を持たない。図1に示す差分ビットマップ27の内容は、キャッシュディレクトリ40内に格納されている。キャッシュセグメント49は論理ボリューム131上のデータを、ホストプロセッサ12からの読み書きに備えて保持しておくためのバッファであり、セグメントと呼ぶ小領域の集合である。それぞれのセグメントは独立に、論理ボリューム131上のデータを保持する。キャッシュディレクトリ40はキャッシュセグメント49を制御するための構造体である。IO処理プログラム211は、このキャッシュディレクトリを検索して、ホストプロセッサ12が要求した入出力先のデータが、キャッシュセグメントにあるか否かを判別する処理を含む。キャッシュディレクトリ40の構成は次に詳しく説明する。
図6は第3の実施の形態例のストレージ装置13の全体構成を示す図である。
図6は図1と異なり、このストレージ装置13は、メモリ135内にキャッシュセグメント49とキャッシュディレクトリ40を含む。また、メモリ135内に差分ビットマップ27(図1参照。)を持たない。図1に示す差分ビットマップ27の内容は、キャッシュディレクトリ40内に格納されている。キャッシュセグメント49は論理ボリューム131上のデータを、ホストプロセッサ12からの読み書きに備えて保持しておくためのバッファであり、セグメントと呼ぶ小領域の集合である。それぞれのセグメントは独立に、論理ボリューム131上のデータを保持する。キャッシュディレクトリ40はキャッシュセグメント49を制御するための構造体である。IO処理プログラム211は、このキャッシュディレクトリを検索して、ホストプロセッサ12が要求した入出力先のデータが、キャッシュセグメントにあるか否かを判別する処理を含む。キャッシュディレクトリ40の構成は次に詳しく説明する。
エラー! 参照元が見つかりません。図7は、ストレージ装置13内に設けられるキャッシュディレクトリ40の構成図である。
キャッシュディレクトリ40は、L1ディレクトリ41、L2ディレクトリ42、L3ディレクトリ43、セグメント管理ブロック44の4階層からなる。
L1ディレクトリ41は、有効ビット411とポインタ412との組が、複数並んだ構造をなしている。ポインタ412はL2ディレクトリ42のアドレスを格納しており、有効ビット411はポインタ412が有効か無効かを示している。
キャッシュディレクトリ40は、L1ディレクトリ41、L2ディレクトリ42、L3ディレクトリ43、セグメント管理ブロック44の4階層からなる。
L1ディレクトリ41は、有効ビット411とポインタ412との組が、複数並んだ構造をなしている。ポインタ412はL2ディレクトリ42のアドレスを格納しており、有効ビット411はポインタ412が有効か無効かを示している。
L2ディレクトリ42は、ポインタ422、有効ビット421、L2有効ビット312、代表ビット313の組が、複数並んだ構造をなしている。ポインタ422はL3ディレクトリ43のアドレスを示している。有効ビット412およびL2有効ビット312の機能は後述する。
L3ディレクトリ43は、ビット321の列と、有効ビット431、ポインタ432の組が、複数並んだ構造をなしている。
L3ディレクトリ43は、ビット321の列と、有効ビット431、ポインタ432の組が、複数並んだ構造をなしている。
有効ビット421はポインタ422が指すL3ディレクトリ43の、有効ビットおよび有効ビットが1のときはポインタ432もともに有効であることを示す。L2有効ビット312はビット321の列が有効であることを示す。
ここで、ポインタ422は、有効ビット421あるいはL2有効ビット312のいずれかが1のとき有効である。
ここで、ポインタ422は、有効ビット421あるいはL2有効ビット312のいずれかが1のとき有効である。
また、ポインタ432はセグメント管理ブロック44のアドレスを格納しており、有効ビット431はポインタ432が有効か無効かを示している。
セグメント管理ブロック44は、制御フラグ441およびポインタ442を含む。ポインタ442はキャッシュセグメント49のアドレスを格納し、制御フラグ441はポインタ442が有効か無効かを示すビット、およびキャッシュセグメント49の状態、少なくともデータが格納されているか否かを含む。
セグメント管理ブロック44は、制御フラグ441およびポインタ442を含む。ポインタ442はキャッシュセグメント49のアドレスを格納し、制御フラグ441はポインタ442が有効か無効かを示すビット、およびキャッシュセグメント49の状態、少なくともデータが格納されているか否かを含む。
本発明の第3の実施の形態例では、ビット321の検査を行うと、それと同時に、L3ディレクトリ43の参照まで可能になる。ところで、例えばビット321が副ボリューム131bから転送すべきデータの存在を示している場合には、差分ビット321の参照とディレクトリ40の参照を同時に行う必要がある。本発明の第3の実施例では、このような場合にメモリアクセスの回数を削減できるため、IO処理の高速化に寄与する。
図8は第3の実施の形態例において、ストレージ装置13内に設けられる差分ビットマップ制御プログラム215の処理の内容を示すフローチャートである。
図8は図5と異なり、ステップS20の代わりに、ステップS50、ステップS51を、ステップS34の代わりに、ステップS52、ステップS53を、ステップS41、ステップS42の代わりに、ステップS54、ステップS55を、ステップS45の代わりに、ステップS56、ステップS57を設けている。
図8は図5と異なり、ステップS20の代わりに、ステップS50、ステップS51を、ステップS34の代わりに、ステップS52、ステップS53を、ステップS41、ステップS42の代わりに、ステップS54、ステップS55を、ステップS45の代わりに、ステップS56、ステップS57を設けている。
ステップS50では、CPU134はL3ディレクトリが存在しないかを確認し、存在しない場合(判断ステップS50のY分岐)のみ、L3ディレクトリの割当を行う(ステップS51)。これは、L3ディレクトリ自体は、先に接続されるセグメント管理ブロック44のために既に割り当てられている可能性があり、その場合には割当が不要であるためである。
ステップS52では、CPU134は有効ビット421が無効かどうかを検査し、無効であるときのみ(判断ステップS52のY分岐)、L3ディレクトリ43を解放する(ステップS53)。
ステップS52では、CPU134は有効ビット421が無効かどうかを検査し、無効であるときのみ(判断ステップS52のY分岐)、L3ディレクトリ43を解放する(ステップS53)。
ステップS54では、CPU134はL3ディレクトリに空きがあるかどうかを検査し、空きがない場合(判断ステップS54のY分岐)、L3ディレクトリ43を解放する(ステップS55)。破棄可能なL3ディレクトリ43とは、対応するセグメント49が存在しないL3ディレクトリ43か、存在しても破棄可能なデータ(ディスク装置133上に同じデータが存在する、いわゆるクリーンデータ)を格納しているセグメント49にのみ対応づいているL3ディレクトリ43である。
ステップS56では、CPU134は有効ビット421をクリアし、さらにL3ディレクトリ43を解放する(ステップS57)。その他の処理は本発明の第2の実施の形態例と共通である。
ステップS56では、CPU134は有効ビット421をクリアし、さらにL3ディレクトリ43を解放する(ステップS57)。その他の処理は本発明の第2の実施の形態例と共通である。
次に、図4、図5及び図8に示した差分ビットマップ制御プログラム215の呼び出し元となる図9〜図11のフローチャートについて説明する。図9〜図11のフローチャートは、差分ビットマップ27の内容に書替えの必要が生じる契機となる処理を含むものである。
図9は、IO処理プログラム211の処理を示すフローチャートである。
図9は、ホストプロセッサ12からストレージ装置13に対してデータのライトやリードなどのIO要求があったとき、ストレージ装置13のIO処理プログラム211が実行する処理を示すものである。
図9は、IO処理プログラム211の処理を示すフローチャートである。
図9は、ホストプロセッサ12からストレージ装置13に対してデータのライトやリードなどのIO要求があったとき、ストレージ装置13のIO処理プログラム211が実行する処理を示すものである。
図9において、IO処理対象のビットが含まれるボリュームが他のボリュームとペア定義済みかつ処理するIOがライトであるか否かを判断する(ステップS60)。具体的には、IO処理プログラム211は図2に示したペア管理テーブル25のIO処理対象のビットが含まれるボリューム上のブロックに対応するエントリ250をチェックすることによりペア定義の判断をし、コマンドによりIOのライトの判断をする。
判断ステップS60でペア定義済みかつ処理するIOがライトであるときは、ペア状態が分離か又は同期であるか否かを判断する(ステップS61)。具体的には、IO処理プログラム211は図2に示したペア管理テーブル25のペア状態253からIO処理対象のビットが含まれるボリュームが同期、分離のいずれかの状態であるかを判断する。
判断ステップS60でペア定義済みかつ処理するIOがライトであるときは、ペア状態が分離か又は同期であるか否かを判断する(ステップS61)。具体的には、IO処理プログラム211は図2に示したペア管理テーブル25のペア状態253からIO処理対象のビットが含まれるボリュームが同期、分離のいずれかの状態であるかを判断する。
ここで、分離の状態では、以下の差分ビットマップ制御プログラム215の呼び出しの処理が実行される。
判断ステップS61でペア状態が分離のときは、差分ビットマップ制御プログラム215を呼び出し、要求種別をセットとしてビットマップのIOに対応するビットに1をセットする(ステップS62)。具体的には、ペア状態253が分離の場合は、正側のIO処理対象のビットが含まれるボリュームに対するホストプロセッサ12からの書き込みは、副側の論理ボリュームに対する差分として、更新されたブロック(群)の位置を、正BMアドレス254が指す差分ビットマップ27に記憶するため、IO処理プログラム211は要求種別をセットとして差分ビットマップ制御プログラム215を呼び出し、差分ビットマップ制御プログラム215はビットマップのIOに対応するビットに1をセットする処理をする。
そして、IO処理プログラム211はコマンドによりIOのライトの処理をする(ステップS63)。
判断ステップS61でペア状態が分離のときは、差分ビットマップ制御プログラム215を呼び出し、要求種別をセットとしてビットマップのIOに対応するビットに1をセットする(ステップS62)。具体的には、ペア状態253が分離の場合は、正側のIO処理対象のビットが含まれるボリュームに対するホストプロセッサ12からの書き込みは、副側の論理ボリュームに対する差分として、更新されたブロック(群)の位置を、正BMアドレス254が指す差分ビットマップ27に記憶するため、IO処理プログラム211は要求種別をセットとして差分ビットマップ制御プログラム215を呼び出し、差分ビットマップ制御プログラム215はビットマップのIOに対応するビットに1をセットする処理をする。
そして、IO処理プログラム211はコマンドによりIOのライトの処理をする(ステップS63)。
また、判断ステップS61でペア状態が同期のときは、IO処理プログラム211はIO処理をした後に(ステップS64)、コピープログラム214を呼び出し、コピーを実行する(ステップS65)。具体的には、ペア状態253が同期の場合は、正側のIO処理対象のビットが含まれるボリュームに対するホストプロセッサ12からの書き込みが、副側の論理ボリュームに対して反映される。
また、判断ステップS60でペア定義済みかつ処理するIOがライトでないときは、IO処理プログラム211はIO処理のみをする(ステップS66)。
また、判断ステップS60でペア定義済みかつ処理するIOがライトでないときは、IO処理プログラム211はIO処理のみをする(ステップS66)。
図10は、ペア制御プログラム212の処理を示すフローチャートである。
図10は、管理端末15からストレージ装置13に対してペア定義、ペア定義抹消、ペア分離、ペア再同期化のペア制御要求があったとき、ストレージ装置13のペア制御プログラム212が実行する処理を示すものである。
図10において、まず、制御対象のボリューム上のブロックに対する要求種別がペア定義であるか否かを判断する(ステップS80)。具体的には、ペア制御プログラム212は管理端末15からのペア制御要求のコマンドによりペア定義の判断をする。判断ステップS80で要求種別がペア定義であるときは、初期化プログラムの呼び出しを実行する(ステップS81)。具体的には、ペア制御プログラム212は初期化プログラム213により正側のボリュームに対応する正側ビットマップと副側のボリュームに対応する副側ビットマップとの間に差分がない状態であって、正側のボリュームと副側のボリュームとがペア状態である初期化状態にする。初期化プログラム213は後述する図11で説明する。
図10は、管理端末15からストレージ装置13に対してペア定義、ペア定義抹消、ペア分離、ペア再同期化のペア制御要求があったとき、ストレージ装置13のペア制御プログラム212が実行する処理を示すものである。
図10において、まず、制御対象のボリューム上のブロックに対する要求種別がペア定義であるか否かを判断する(ステップS80)。具体的には、ペア制御プログラム212は管理端末15からのペア制御要求のコマンドによりペア定義の判断をする。判断ステップS80で要求種別がペア定義であるときは、初期化プログラムの呼び出しを実行する(ステップS81)。具体的には、ペア制御プログラム212は初期化プログラム213により正側のボリュームに対応する正側ビットマップと副側のボリュームに対応する副側ビットマップとの間に差分がない状態であって、正側のボリュームと副側のボリュームとがペア状態である初期化状態にする。初期化プログラム213は後述する図11で説明する。
判断ステップS80で要求種別がペア定義でないときは、制御対象のボリューム上のブロックに対する要求種別がペア定義抹消であるか否かを判断する(ステップS82)。具体的には、ペア制御プログラム212は管理端末15からのペア制御要求のコマンドによりペア定義抹消の判断をする。判断ステップS82で要求種別がペア定義抹消であるときは、ペア管理テーブルのエントリのクリアを実行する(ステップS83)。具体的には、ペア制御プログラム212は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250を消去する。
さらに、正副ビットマップに割り当てられていたメモリ領域を開放する(ステップS84)。具体的には、ペア制御プログラム212は正側及び副側で割り当てられていた図3に示した差分ビットマップ27のメモリ領域を開放する。
さらに、正副ビットマップに割り当てられていたメモリ領域を開放する(ステップS84)。具体的には、ペア制御プログラム212は正側及び副側で割り当てられていた図3に示した差分ビットマップ27のメモリ領域を開放する。
判断ステップS82で要求種別がペア定義抹消でないときは、制御対象のボリューム上のブロックに対する要求種別がペア分離であるか否かを判断する(ステップS85)。具体的には、ペア制御プログラム212は管理端末15からのペア制御要求のコマンドによりペア分離の判断をする。
判断ステップS85で要求種別がペア分離であるときは、ペア管理テーブルのエントリの更新を実行する(ステップS86)。具体的には、ペア制御プログラム212は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を分離の状態にする。
判断ステップS85で要求種別がペア分離であるときは、ペア管理テーブルのエントリの更新を実行する(ステップS86)。具体的には、ペア制御プログラム212は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を分離の状態にする。
判断ステップS85で要求種別がペア分離でないときは、制御対象のボリューム上のブロックに対する要求種別がペア再同期化であるか否かを判断する(ステップS87)。具体的には、ペア制御プログラム212は管理端末15からのペア制御要求のコマンドによりペア再同期化の判断をする。
判断ステップS87で要求種別がペア再同期化であるときは、ペア管理テーブルのエントリの更新を実行する(ステップS88)。具体的には、ペア制御プログラム212は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を再同期の状態にする。
判断ステップS87で要求種別がペア再同期化であるときは、ペア管理テーブルのエントリの更新を実行する(ステップS88)。具体的には、ペア制御プログラム212は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を再同期の状態にする。
ここで、再同期の状態では、以下の差分ビットマップ制御プログラム215の呼び出しの処理が実行される。
まず、正ビットマップに対して要求種別を検査として、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS89)。具体的には、ペア制御プログラム212は差分ビットマップ制御プログラム215を呼び出し、差分ビットマップ制御プログラム215は制御対象のボリューム上のブロックに対応して、再同期によりペア状態となる正側のボリュームに対応する正側ビットマップに対する検査を行う。
次に、副ビットマップに対して要求種別を検査として、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS90)。具体的には、ペア制御プログラム212は差分ビットマップ制御プログラム215を呼び出し、差分ビットマップ制御プログラム215は制御対象のボリューム上のブロックに対応して、再同期によりペア状態となる副側のボリュームに対応する副側ビットマップに対する検査を行う。
まず、正ビットマップに対して要求種別を検査として、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS89)。具体的には、ペア制御プログラム212は差分ビットマップ制御プログラム215を呼び出し、差分ビットマップ制御プログラム215は制御対象のボリューム上のブロックに対応して、再同期によりペア状態となる正側のボリュームに対応する正側ビットマップに対する検査を行う。
次に、副ビットマップに対して要求種別を検査として、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS90)。具体的には、ペア制御プログラム212は差分ビットマップ制御プログラム215を呼び出し、差分ビットマップ制御プログラム215は制御対象のボリューム上のブロックに対応して、再同期によりペア状態となる副側のボリュームに対応する副側ビットマップに対する検査を行う。
正側ビットマップ又は副側ビットマップのいずれかが1となっているか否かを判断する(ステップS91)。具体的には、ペア制御プログラム212は検査の結果により正側ビットマップ又は副側ビットマップのいずれかのビットが1であるブロックを検出する。
判断ステップS91で正側ビットマップ又は副側ビットマップのいずれかが1であるときは、コピープログラム214を呼び出し、コピーを実行する(ステップS92)。具体的には、ペア制御プログラム212はコピープログラム214を呼び出し、コピープログラム214は検査の結果により正側ビットマップ又は副側ビットマップのいずれかのビットが1であるブロックについて、正側のボリュームから副側のボリュームへのコピーを実行する。この場合、副側のボリュームから正側のボリュームへのリストアは実行しない。
判断ステップS91で正側ビットマップ又は副側ビットマップのいずれかが1であるときは、コピープログラム214を呼び出し、コピーを実行する(ステップS92)。具体的には、ペア制御プログラム212はコピープログラム214を呼び出し、コピープログラム214は検査の結果により正側ビットマップ又は副側ビットマップのいずれかのビットが1であるブロックについて、正側のボリュームから副側のボリュームへのコピーを実行する。この場合、副側のボリュームから正側のボリュームへのリストアは実行しない。
そして、正側ビットマップ及び副側ビットマップに対して要求種別をクリアとして、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS93)。具体的には、ペア制御プログラム212は差分ビットマップ制御プログラム215を呼び出し、コピーにより正側ビットマップ及び副側ビットマップの差分が解消されたので、正側ビットマップ又は副側ビットマップのビットが1であるブロックについて、ビットを0にする。
制御対象のボリューム上の全てのブロックについてステップS89〜ステップS93までの処理及び判断を繰り返す(ステップS94)。なお、判断ステップS91で正側ビットマップ又は副側ビットマップのいずれかが1でないときは、ステップS94で未処理の他のブロックについて判断される。
制御対象のボリューム上の全てのブロックについてステップS89〜ステップS93までの処理及び判断を繰り返す(ステップS94)。なお、判断ステップS91で正側ビットマップ又は副側ビットマップのいずれかが1でないときは、ステップS94で未処理の他のブロックについて判断される。
図11は、初期化プログラム213の処理を示すフローチャートである。
図11は、管理端末15からストレージ装置13に対してペア定義のペア制御要求があったとき、ストレージ装置13の初期化プログラム213が実行する正側のボリュームに対応する正側ビットマップと副側のボリュームに対応する副側ビットマップとの間に差分がない状態であって、正側のボリュームと副側のボリュームとがペア状態である初期化状態にする処理を示すものである。
まず、ペア状態を分離に設定する(ステップS110)。具体的には、初期化プログラム213は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を分離の状態にする。
図11は、管理端末15からストレージ装置13に対してペア定義のペア制御要求があったとき、ストレージ装置13の初期化プログラム213が実行する正側のボリュームに対応する正側ビットマップと副側のボリュームに対応する副側ビットマップとの間に差分がない状態であって、正側のボリュームと副側のボリュームとがペア状態である初期化状態にする処理を示すものである。
まず、ペア状態を分離に設定する(ステップS110)。具体的には、初期化プログラム213は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を分離の状態にする。
ここで、分離の状態では、以下の差分ビットマップ制御プログラム215の呼び出しの処理が実行される。
副側ビットマップに対して要求種別をクリアとして、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS111)。具体的には、初期化プログラム213は差分ビットマップ制御プログラム215を呼び出し、正側ビットマップ及び副側ビットマップの差分を解消するために、副側ビットマップのビットが1であるブロックについて、ビットを0にする。
副側ビットマップに対して要求種別をクリアとして、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS111)。具体的には、初期化プログラム213は差分ビットマップ制御プログラム215を呼び出し、正側ビットマップ及び副側ビットマップの差分を解消するために、副側ビットマップのビットが1であるブロックについて、ビットを0にする。
そして、正側ビットマップに対して要求種別をセットとして、差分ビットマップ制御プログラム215を呼び出しを実行する(ステップS112)。具体的には、初期化プログラム213は差分ビットマップ制御プログラム215を呼び出し、初期化中にもIO処理があっても正側ビットマップに差分を蓄えるために、正側ビットマップのビットが0であるブロックについて、ビットを1にする。
制御対象のボリューム上の全てのブロックについてステップS111〜ステップS112の処理を繰り返す(ステップS113)。
制御対象のボリューム上の全てのブロックについてステップS111〜ステップS112の処理を繰り返す(ステップS113)。
判断ステップS113で全てのブロックについて終了したときは、コピープログラム214を呼び出し、コピーを実行する(ステップS92)。具体的には、初期化プログラム213はコピープログラム214を呼び出し、コピープログラム214はセットの結果により正側ビットマップのビットが1であるブロックについて、正側のボリュームから副側のボリュームへのコピーを実行する。この場合、副側のボリュームから正側のボリュームへのリストアは実行しない。
そして、正側ビットマップ及び副側ビットマップに対して要求種別をクリアとして、差分ビットマップ制御プログラム215の呼び出しを実行する(ステップS115)。具体的には、初期化プログラム213は差分ビットマップ制御プログラム215を呼び出し、コピーにより正側ビットマップ及び副側ビットマップの差分が解消されたので、正側ビットマップ又は副側ビットマップのビットが1であるブロックについて、ビットを0にする。
制御対象のボリューム上の全てのブロックについてステップS114〜ステップS115までの処理を繰り返す(ステップS116)。
その後、ペア状態を同期に設定する(ステップS117)。具体的には、初期化プログラム213は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を同期の状態にする。
その後、ペア状態を同期に設定する(ステップS117)。具体的には、初期化プログラム213は図2に示したペア管理テーブル25の制御対象のボリューム上のブロックに対応するエントリ250のペア状態253を同期の状態にする。
上述した本発明の実施の形態に限らず、本発明の特許請求の範囲内であれば、適宜、構成を変更しうることはいうまでもない。
12…ホストプロセッサ、13…ストレージ装置、131…論理ボリューム、134…CPU、215…差分ビットマップ制御プログラム、27…差分ビットマップ、310…1段目のエントリ、311…2段目のエントリへのポインタ、313…代表ビット、320…2段目のエントリ、321…ビット
Claims (20)
- ストレージ装置内の論理ボリュームに対応するボリュームの差分を差分ビットマップで管理する差分ビットマップ管理方法において、
前記差分ビットマップは、1階層目のテーブルのエントリと2階層目のテーブルのエントリとの2階層のテーブルの組み合わせで表現し、
前記1階層目のテーブルのエントリで示される差分の有無は、前記2階層目のテーブルのエントリに格納する第1のビットの値で表現し、
前記1階層目のテーブルのエントリは前記2階層目のテーブルのエントリを指定する第1の識別情報と、前記2階層目のテーブルのエントリの存在有無を表す第2の識別情報とを格納し、
前記2階層目のテーブルのエントリの第1のビットが、全てあらかじめ定めた値と等しい場合に、対応する1階層目のテーブルのエントリに格納する第2の識別情報に、2階層目のテーブルのエントリが存在しないことを記録する
ことを特徴とする差分ビットマップ管理方法。 - 請求項1に記載の差分ビットマップ管理方法において、
前記差分ビットマップの管理のための処理は、前記ストレージ装置内のビットマップ制御プログラムが実行する
ことを特徴とする差分ビットマップ管理方法。 - 請求項1に記載の差分ビットマップ管理方法において、
前記第1のビットの値は、連続する同じ値である
ことを特徴とする差分ビットマップ管理方法。 - 請求項1に記載の差分ビットマップ管理方法において、
前記第1の識別情報は、前記2階層目のテーブルのエントリのアドレスを示す2階層アドレスビットである
ことを特徴とする差分ビットマップ管理方法。 - 請求項1に記載の差分ビットマップ管理方法において、
前記第2の識別情報は、前記2階層目のテーブルのエントリに格納されるビットを有効としてこのビットを全部使うか、または前記2階層目のテーブルのエントリに格納されるビットを無効として連続する同じ値を使うかを判断するための2階層有効ビットである
ことを特徴とする差分ビットマップ管理方法。 - 請求項1に記載の差分ビットマップ管理方法において、
前記1階層目のテーブルのエントリに、第3のビットを格納し、
前記2階層目のテーブルのエントリの第1のビットが、全て第3のビットの値と等しい場合に、対応する1階層目のテーブルのエントリに格納する第2の識別情報に、前記2階層目のテーブルのエントリが存在しないことを記録する
ことを特徴とする差分ビットマップ管理方法。 - 請求項6に記載の差分ビットマップ管理方法において、
前記第3のビットは、前記2階層目のテーブルのエントリに格納される連続する同じ値が前記1階層目のテーブルのエントリに代表して格納される代表ビットである
ことを特徴とする差分ビットマップ管理方法。 - 請求項6に記載の差分ビットマップ管理方法であって、
前記2階層目のテーブルのエントリを解放する場合に、第3のビットにあらかじめ定められた値を格納して、対応する1階層目のテーブルのエントリに格納する第2の識別情報に、2階層目のテーブルの存在しないことを記録する
ことを特徴とする差分ビットマップ管理方法。 - 請求項1に記載の差分ビットマップ管理方法であって、
前記1階層目のエントリと前記2階層目のエントリを、前記ストレージ装置内の入出力処理に使用されるキャッシュメモリを管理するディレクトリに格納する
ことを特徴とする差分ビットマップ管理方法。 - 論理ボリュームの差分を管理する差分ビットマップを有するストレージ装置において、
前記差分ビットマップの1階層目のテーブルを格納する1階層格納部と、
前記差分ビットマップの2階層目のテーブルを格納する2階層格納部と、
前記2階層のテーブルのエントリに差分の有無を表す第1のビットを格納する第1ビット格納部と、
前記1階層目のテーブルのエントリに前記2階層目のテーブルのエントリを指定する第1の識別情報と、前記2階層目のテーブルの存在有無を表す第2の識別情報とを格納する第1及び第2識別情報格納部と、
前記2階層目のテーブルのエントリの第1のビットが、全てあらかじめ定めた値と等しい場合に、対応する前記1階層目のテーブルのエントリに格納する第2の識別情報に、前記2階層目のテーブルのエントリが存在しないことを記録する第2識別情報更新部と
を有することを特徴とするストレージ装置。 - 請求項10に記載のストレージ装置において、
前記差分ビットマップの管理をする前記1階層格納部、前記2階層格納部、前記第1ビット格納部、前記第1及び第2識別情報格納部及び前記第2識別情報更新部の各機能は、
ビットマップ制御プログラムが実行する
ことを特徴とするストレージ装置。 - 請求項10に記載のストレージ装置において、
前記第1のビットの値は、連続する同じ値である
ことを特徴とするストレージ装置。 - 請求項10に記載のストレージ装置において、
前記第1の識別情報は、前記2階層目のテーブルのエントリのアドレスを示す2階層アドレスビットである
ことを特徴とするストレージ装置。 - 請求項10に記載のストレージ装置において、
前記第2の識別情報は、前記2階層目のテーブルのエントリに格納されるビットを有効としてこのビットを全部使うか、または前記2階層目のテーブルのエントリに格納されるビットを無効として連続する同じ値を使うかを判断するための2階層有効ビットである
ことを特徴とするストレージ装置。 - 請求項10に記載のストレージ装置であって、
前記1階層目のテーブルのエントリに、第3のビットを格納する第3ビット格納部と、
前記2階層目のテーブルのエントリの第1のビットが、全て第3のビットの値と等しい場合に、対応する前記1階層目のテーブルのエントリに格納する第2の識別情報に、前記2階層目のテーブルのエントリが存在しないことを記録する第2識別情報更新部と
を有することを特徴とするストレージ装置。 - 請求項15に記載のストレージ装置において、
前記第3のビットは、前記2階層目のテーブルのエントリに格納される連続する同じ値が前記1階層目のテーブルのエントリに代表して格納される代表ビットである
ことを特徴とするストレージ装置。 - 請求項10に記載のストレージ装置であって、
前記1階層目のエントリと前記2階層目のエントリを、入出力処理に使用されるキャッシュメモリを管理するディレクトリに格納する
ことを特徴とするストレージ装置。 - ホスト計算機からの入出力指令に基づいてストレージ装置の論理ボリュームに対する入出力処理を行うために論理ボリュームの差分を管理する差分ビットマップを用いる情報処理システムにおいて、
前記ストレージ装置は、
前記差分ビットマップの1階層目のテーブルを格納する1階層格納部と、
前記差分ビットマップの2階層目のテーブルを格納する2階層格納部と、
前記2階層のテーブルのエントリに差分の有無を表す第1のビットを格納する第1ビット格納部と、
前記1階層目のテーブルのエントリに2階層目のテーブルのエントリを指定する第1の識別情報と、前記2階層目のテーブルの存在有無を表す第2の識別情報とを格納する第1及び第2識別情報格納部と、
前記2階層目のテーブルのエントリの第1のビットが、全てあらかじめ定めた値と等しい場合に、対応する前記1階層目のテーブルのエントリに格納する第2の識別情報に、前記2階層目のテーブルのエントリが存在しないことを記録する第2識別情報更新部と
を有することを特徴とする情報処理システム。 - 請求項18に記載の情報処理システムにおいて、
前記第1の識別情報は、前記2階層目のテーブルのエントリのアドレスを示す2階層アドレスビットである
ことを特徴とする情報処理システム。 - 請求項18に記載の情報処理システムにおいて、
前記第2の識別情報は、前記2階層目のテーブルのエントリに格納されるビットを有効としてこのビットを全部使うか、または前記2階層目のテーブルのエントリに格納されるビットを無効として連続する同じ値を使うかを判断するための2階層有効ビットである
ことを特徴とする情報処理システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005154126A JP2006331100A (ja) | 2005-05-26 | 2005-05-26 | 差分ビットマップ管理方法、ストレージ装置及び情報処理システム |
US11/197,194 US7409507B2 (en) | 2005-05-26 | 2005-08-03 | Difference bit map management method, storage apparatus, and information processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005154126A JP2006331100A (ja) | 2005-05-26 | 2005-05-26 | 差分ビットマップ管理方法、ストレージ装置及び情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006331100A true JP2006331100A (ja) | 2006-12-07 |
Family
ID=37464814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005154126A Pending JP2006331100A (ja) | 2005-05-26 | 2005-05-26 | 差分ビットマップ管理方法、ストレージ装置及び情報処理システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7409507B2 (ja) |
JP (1) | JP2006331100A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008225699A (ja) * | 2007-03-09 | 2008-09-25 | Fujitsu Ltd | 複製作成装置および複製作成方法 |
JP2009122850A (ja) * | 2007-11-13 | 2009-06-04 | Toshiba Corp | ブロックデバイス制御装置及びアクセス範囲管理方法 |
JP2010146450A (ja) * | 2008-12-22 | 2010-07-01 | Fujitsu Ltd | ストレージスイッチ、ストレージシステム、データコピー方法 |
JP2014038551A (ja) * | 2012-08-20 | 2014-02-27 | Fujitsu Ltd | データ記憶装置、データ記憶装置の制御方法、及びデータ記憶装置の制御プログラム |
WO2018169040A1 (ja) * | 2017-03-17 | 2018-09-20 | Necプラットフォームズ株式会社 | 差分管理装置、ストレージシステム、差分管理方法及びプログラム |
JP2019159536A (ja) * | 2018-03-09 | 2019-09-19 | 富士通株式会社 | ストレージ管理装置、ストレージシステム、及びストレージ管理プログラム |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5147570B2 (ja) | 2008-07-02 | 2013-02-20 | 株式会社日立製作所 | ストレージシステム及びリモートコピー復旧方法 |
US9110594B2 (en) * | 2009-11-04 | 2015-08-18 | Seagate Technology Llc | File management system for devices containing solid-state media |
JP2016099703A (ja) * | 2014-11-19 | 2016-05-30 | 富士通株式会社 | ストレージ制御装置,コピー制御方法及びコピー制御プログラム |
JP6561765B2 (ja) * | 2015-10-23 | 2019-08-21 | 富士通株式会社 | ストレージ制御装置およびストレージ制御プログラム |
US10353885B2 (en) * | 2016-07-29 | 2019-07-16 | International Business Machines Corporation | Storing data records |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618794B1 (en) | 2000-10-31 | 2003-09-09 | Hewlett-Packard Development Company, L.P. | System for generating a point-in-time copy of data in a data storage system |
JP2005258850A (ja) * | 2004-03-12 | 2005-09-22 | Hitachi Ltd | 計算機システム |
-
2005
- 2005-05-26 JP JP2005154126A patent/JP2006331100A/ja active Pending
- 2005-08-03 US US11/197,194 patent/US7409507B2/en not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008225699A (ja) * | 2007-03-09 | 2008-09-25 | Fujitsu Ltd | 複製作成装置および複製作成方法 |
JP2009122850A (ja) * | 2007-11-13 | 2009-06-04 | Toshiba Corp | ブロックデバイス制御装置及びアクセス範囲管理方法 |
JP2010146450A (ja) * | 2008-12-22 | 2010-07-01 | Fujitsu Ltd | ストレージスイッチ、ストレージシステム、データコピー方法 |
JP4615595B2 (ja) * | 2008-12-22 | 2011-01-19 | 富士通株式会社 | ストレージスイッチ、ストレージシステム、データコピー方法 |
JP2014038551A (ja) * | 2012-08-20 | 2014-02-27 | Fujitsu Ltd | データ記憶装置、データ記憶装置の制御方法、及びデータ記憶装置の制御プログラム |
WO2018169040A1 (ja) * | 2017-03-17 | 2018-09-20 | Necプラットフォームズ株式会社 | 差分管理装置、ストレージシステム、差分管理方法及びプログラム |
JP2019159536A (ja) * | 2018-03-09 | 2019-09-19 | 富士通株式会社 | ストレージ管理装置、ストレージシステム、及びストレージ管理プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20060271750A1 (en) | 2006-11-30 |
US7409507B2 (en) | 2008-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006331100A (ja) | 差分ビットマップ管理方法、ストレージ装置及び情報処理システム | |
US8595461B2 (en) | Management of recycling bin for thinly-provisioned logical volumes | |
KR100439675B1 (ko) | 대용량 공유 저장장치를 위한 효율적인 스냅샷 수행방법 | |
US8924664B2 (en) | Logical object deletion | |
KR101137299B1 (ko) | 스냅샷을 제공하는 파일 시스템에 대한 계층적 저장 관리 | |
JP4943081B2 (ja) | ファイル格納制御装置及び方法 | |
US8447941B2 (en) | Policy based data migration control method for storage device | |
US8200631B2 (en) | Snapshot reset method and apparatus | |
US7933938B2 (en) | File storage system, file storing method and file searching method therein | |
JP5290287B2 (ja) | ネットワークブートシステム | |
EP1876519A2 (en) | Storage system and write distribution method | |
US8650381B2 (en) | Storage system using real data storage area dynamic allocation method | |
US20060047926A1 (en) | Managing multiple snapshot copies of data | |
US20070239803A1 (en) | Remote mirroring method between tiered storage systems | |
US8001324B2 (en) | Information processing apparatus and informaiton processing method | |
US20100036896A1 (en) | Computer System and Method of Managing Backup of Data | |
US8161008B2 (en) | Information processing apparatus and operation method thereof | |
US8769147B2 (en) | Method, apparatus and system to dynamically manage logical path resources | |
JP2005038071A (ja) | ストレージの容量を最適化する管理方法 | |
JP2008152695A (ja) | 電子的な保護対象に要求される保護能力で該保護対象を保護する記憶制御装置 | |
US8732422B2 (en) | Storage apparatus and its control method | |
US20100223442A1 (en) | Computer system and data erasing method | |
JP2009294699A (ja) | ストレージ装置 | |
JPWO2016103356A1 (ja) | 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法 | |
KR100541530B1 (ko) | 메모리 기반의 스냅샷 상태 테이블을 이용한 대용량 공유저장장치의 스냅샷 수행방법 |