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

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

Info

Publication number
JP5156518B2
JP5156518B2 JP2008190119A JP2008190119A JP5156518B2 JP 5156518 B2 JP5156518 B2 JP 5156518B2 JP 2008190119 A JP2008190119 A JP 2008190119A JP 2008190119 A JP2008190119 A JP 2008190119A JP 5156518 B2 JP5156518 B2 JP 5156518B2
Authority
JP
Japan
Prior art keywords
snapshot
difference
bitmap
information
copy
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.)
Expired - Fee Related
Application number
JP2008190119A
Other languages
English (en)
Other versions
JP2010026939A (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
Priority to JP2008190119A priority Critical patent/JP5156518B2/ja
Priority to US12/212,049 priority patent/US8271753B2/en
Publication of JP2010026939A publication Critical patent/JP2010026939A/ja
Priority to US13/587,049 priority patent/US8661215B2/en
Application granted granted Critical
Publication of JP5156518B2 publication Critical patent/JP5156518B2/ja
Priority to US13/956,413 priority patent/US8738874B2/en
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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Description

本発明は、スナップショットの取得及びコピーに関する。
データ保護機能として、例えば、スナップショット機能及びリモートコピー機能が知られている。
スナップショット機能は、或る時点の運用ボリューム(ストレージ装置の上位装置(例えばサーバ装置)からアクセスされ得る論理ボリューム)のイメージであるスナップショットを作成し維持する機能である。スナップショットの作成及び維持を実現する方法として、例えば、サーバ装置が有する論理ボリューム機能を利用する方法がある。論理ボリューム機能としては、例えば、Linuxカーネル(「Linux」は登録商標)のLogical Volume Manager(LVM)が挙げられる(非特許文献1参照)。LVMが運用ボリュームのスナップショットを作成する場合、別の論理ボリュームが、差分格納用の論理ボリューム(以下、「差分格納ボリューム」)として用意される。LVMは、スナップショット作成時点の後に、運用ボリュームで更新(書き込み)が発生すると、運用ボリューム内の更新前のデータを差分格納ボリュームにコピーする。これは、Copy On Write(COW)と呼ばれる処理である。LVMは、運用ボリューム内のデータと差分格納ボリューム内のデータとで構成するスナップショットを管理する機能を有する。この機能は、スナップショットを構成する各データが運用ボリュームと差分格納ボリュームのどちらに存在するかを表すスナップショット管理情報を保持することで実現可能である。
一方、リモートコピー機能は、プライマリサイトのストレージ装置からセカンダリサイトのストレージ装置へのデータのコピーであるリモートコピーを実行する機能である。
リモートコピーを、スナップショット単位で行う方法が知られている(例えば特許文献1や特許文献2)。特許文献1や特許文献2では、リモートコピー済みのスナップショットと、リモートコピー対象のスナップショットとの差異を示した差分ビットマップが作成され、その差分ビットマップに基づいて、データが転送される。
米国特許第7127578号明細書 米国特許出願公開第2003/0158869号明細書 AJ Lewis著「LVM HOWTO」http://ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/LVM-HOWTO.pdf
スナップショット間の差分ビットマップを構成する各ビットは、運用ボリュームの一又は複数のブロックに対応し、その一又は複数のブロックに差分があるか否かを表している。特許文献1及び2では、スナップショット間の差分ビットマップを基に転送用差分ビットマップが作成され、その転送用差分ビットマップを基に、リモートコピーが行われる。
特許文献1では、最新世代のスナップショットがセカンダリサイトにコピーされている最中に、運用ボリューム内のデータがセカンダリサイトにコピーされる場合には、スナップショット管理情報を用いて予め作成された第一の差分ビットマップと、最新のスナップショットが作成された後の、運用ボリュームにおける変更箇所を表した第二の差分ビットマップとがマージされることで、転送用差分ビットマップが作成される。
特許文献1によれば、第一の差分ビットマップは、スナップショット管理情報を用いて作成される。このため、第一の差分ビットマップが得られるまでに時間を要し、転送用差分ビットマップは、第一の差分ビットマップを基に作成されるので、転送用差分ビットマップの作成にも時間を要すると考えられる。特に、スナップショット管理情報が、ストレージ装置内の物理記憶デバイス(例えばハードディスクドライブ(HDD)などのディスク型記憶デバイス)にある場合は、スナップショット管理情報の読出しにも時間を要するため、転送用差分ビットマップの作成に一層の時間を要することになると考えられる。
特許文献2では、基点のスナップショット(セカンダリサイトへコピー済みのスナップショット)と未コピーのスナップショットとの差分が、常に、ビットマップ(以下、「COWビットマップ」と言う)で管理されており、そのビットマップの複製が転送用差分ビットマップとして使用される。このため、特許文献1と違って、転送用差分ビットマップの作成にスナップショット管理情報は不要である。
しかしながら、COWビットマップは、スナップショットの作成の都度に初期化される情報である。そのため、最新世代のスナップショットが作成されると、最新世代のスナップショットと基点スナップショットとの間の世代のスナップショットのリモートコピーに使用する差分ビットマップを高速に作成することはできない。すなわち、そのような差分ビットマップを作成するためには、特許文献1のようにスナップショット管理情報を使用する必要がある。それ故、最新世代のスナップショットと基点スナップショットとの間の世代のスナップショットのリモートコピーに使用する転送用差分ビットマップを作成するのに時間がかかる。
以上の問題点は、例えば、ビットマップと異なる形式の情報を使用してリモートコピーが行われる場合にも、同様に有り得る。また、以上の問題点は、リモートコピーに限らず、一つの装置内でコピー(例えばバックアップ)が行われる場合にも、同様に有り得る。
従って、本発明の目的は、任意世代のコピー対象のスナップショットについてのコピー用差分情報を高速に作成することにある。
記憶制御装置が、コピー済みである第一の時点のスナップショットから最新の時点となる第Nの時点のスナップショットまでのN個のスナップショットのうちの二つのスナップショット間の差分を表す差分情報を記憶部に取得する。記憶部には、二以上の差分情報が記憶される。二以上の差分情報には、第一の時点のスナップショットと、N個のスナップショットのうちの第一の時点のスナップショット以外のいずれかのスナップショットとの間の差分を表す差分情報が含まれている。記憶制御装置は、それらの二以上の差分情報を基に、第一の時点のスナップショットとN個のスナップショットのうちの指定されたスナップショットとの間の差分を表す情報であって、上記指定されたスナップショットのコピーで使用されるコピー用差分情報を生成する。
具体的には、記憶制御装置は、論理ボリュームと、記憶部(例えば揮発性又は不揮発性のメモリ)と、前記論理ボリュームのスナップショットを取得するスナップショット取得部と、コピー済みである第一の時点のスナップショットから最新の時点となる第Nの時点のスナップショットまでのN個のスナップショットのうち前記第一の時点のスナップショット以外の指定されたスナップショットをコピーするコピー制御部と(Nは三以上の整数)、前記N個のスナップショットのうちの二つのスナップショット間の差分を表す差分情報を前記記憶部に取得する差分情報取得部と、前記記憶部に記憶されている二以上の前記差分情報を基に、前記第一の時点のスナップショットと前記指定されたスナップショットとの間の差分を表す情報であるコピー用差分情報を生成するコピー用差分情報生成部と、を備える。前記コピー制御部は、前記コピー用差分情報を用いて、前記指定されたスナップショットのコピーを行う。
より具体的には、例えば、前述した二以上の差分情報として、COWビットマップと、COWビットマップの複製である差分ビットマップを採用することができる。スナップショットを作成する度に、リセット前のCOWビットマップの複製(つまり差分ビットマップ)を記憶部(例えばメモリ)に記憶させることで、複数個の差分ビットマップが記憶部に記憶される。各差分ビットマップは、スナップショットとその直前のスナップショット間の差分を表す。そして、コピー(例えばリモートコピー)の際には、第一の時点のスナップショットと指定されたスナップショットとの間に関わる二以上の差分ビットマップのビット論理和をとることで、転送用差分ビットマップが作成される。
好適な例としては、スナップショットの作成の度に、その時点のCOWビットマップが一つの差分ビットマップにマージされる(すなわち、ビット論理和が算出される)。この場合、第Nの時点のスナップショットが指定されたスナップショットであれば、マージ後の一つの差分ビットマップを転送用差分ビットマップとして利用することができる。また、この例であれば、記憶部の消費を抑えることができる。
別の好適な例として、例えばセカンダリサイトにコピーする必要のないスナップショットに関連付けられた差分ビットマップ(言い換えれば、例えば、コピー対象のスナップショット間に関わる差分ビットマップ)がマージされ、マージの基になった差分ビットマップは破棄される。この例であっても、記憶部の消費を抑えることができる。
なお、前述したスナップショット取得部、コピー制御部、差分情報取得部及びコピー用差分情報生成部のうちの少なくとも一つは、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
本発明の幾つかの実施形態を、図面を参照して詳細に説明する。
図1は、本発明の第一の実施形態におけるストレージシステムの構成例を示す。
ストレージシステムは、プライマリサーバ装置100と、プライマリストレージ装置110と、クライアント装置112と、セカンダリサーバ装置120と、セカンダリストレージ装置130とから構成される。
プライマリストレージ装置110は、ネットワーク109を介して、プライマリサーバ装置100に接続されている。同様に、セカンダリストレージ装置130は、別のネットワーク109を介して、セカンダリサーバ装置120に接続されている。いずれのネットワーク109も、例えばSAN(Storage Area Network)である。
クライアント装置112は、ネットワーク108を介して、プライマリサーバ装置100とセカンダリサーバ装置120に接続されている。ネットワーク108は、例えばLAN(Local Area Network)である。
プライマリサーバ装置100は、ネットワーク108を介して、セカンダリサーバ装置120と接続されている。プライマリサーバ装置100は、プライマリサーバ装置100の有するデータをセカンダリサーバ装置120へリモートコピーする。以降では、プライマリサーバ装置100とプライマリストレージ装置110を合わせて「プライマリサイト」と呼び、セカンダリサーバ装置120とセカンダリストレージ装置130をあわせて「セカンダリサイト」と呼ぶ場合がある。
次に、サーバ装置、ストレージ装置及びクライアント装置について、それぞれ説明する。
プライマリサーバ装置100とセカンダリサーバ装置120は、CPU(Central
Processing Unit)101、メモリ102、インタフェース106及びインタフェース107を備える。CPU101は、処理を行う制御部としての機能をもつ。メモリ102は、サーバ装置100又は120の処理に必要なデータ、及び、CPU101が実行するソフトウェアを保持する。インタフェース106は、プライマリサーバ装置100とセカンダリサーバ装置120とクライアント装置112とを接続してデータ転送を行うための接続装置である。インタフェース107は、プライマリサーバ装置100とプライマリストレージ装置110(及び、セカンダリサーバ装置120とセカンダリストレージ装置130)を接続してデータ転送を行うための接続装置である。
通常、サーバ装置100及び120上では、様々なプログラムが動作している。例えば、サーバ装置100及び120はNetwork Attached Storage(NAS)装置であり、その場合、サーバ装置100及び120で動作するプログラムとして、NFS(Network File System)サーバプログラムやDBMS(Database Management System)のような様々なプログラムが挙げられる。しかし、ここではリモートコピー機能とスナップショット機能を説明することに主眼を置くため、これらのプログラムは図示していない。
これらのプログラムに加えて、プライマリサーバ装置100とセカンダリサーバ装置120で動作するソフトウェアとして、メモリ102上には、リモートコピープログラム200とスナップショット管理プログラム300とブロックI/O管理プログラム105がある。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するCPU101によって処理が行われるものとする。
本実施形態では、プライマリサーバ装置100及びセカンダリサーバ装置120のうちプライマリサーバ装置100の方により特徴があるため、以下の説明では、プライマリサーバ装置100を主に説明する。具体的には、以下の説明におけるリモートコピープログラム200、スナップショット管理プログラム300及びブロックI/O管理プログラム105の説明は、特筆が無ければ、プライマリサーバ装置100で動作するプログラムの説明である。
リモートコピープログラム200は、プライマリサーバ装置100で管理されている論理ボリューム内のデータを、セカンダリサーバ装置120で管理されている論理ボリュームにネットワーク108を介してコピーするプログラムである。
スナップショット管理プログラム300は、例えば、LinuxカーネルではLVMに相当する。スナップショット管理プログラム300は、運用ボリューム、差分格納ボリューム及びスナップショットボリューム(以下、単に「スナップショット」とも表現する)等の論理ボリュームを管理し、クライアント装置112からのそれぞれの論理ボリュームへのアクセスを可能にする。さらに、スナップショット管理プログラム300は、リモートコピープログラム200で使用するための、スナップショット間の差分を管理する。
ブロックI/O管理プログラム105は、スナップショット管理プログラム300からの論理ボリュームへのアクセス要求を、プライマリストレージ装置110に対するアクセスコマンドへと変換して、そのアクセスコマンドをプライマリストレージ装置110に送信する。例えば、ブロックI/O管理プログラム105は、LinuxカーネルではブロックデバイスドライバやSCSIドライバに相当する。
プライマリストレージ装置110とセカンダリストレージ装置130は、データ保持機能としての少なくとも1つのディスクドライブ111と、プライマリサーバ装置100(又はセカンダリサーバ装置120)に接続してデータ転送を行うための接続装置であるインタフェース107とを備える。
ディスクドライブ111には、或る一定サイズのデータの管理単位であるブロック単位でアクセスすることが可能である。つまり、データの読み出しや書き込みといったデータアクセス時には、ブロック単位でアクセス先が指定される。ディスクドライブ111は、単体のディスクドライブ装置であってもよいし、ディスクドライブ装置が提供する記憶領域を構成する各サブ記憶領域(パーティションと呼ばれる領域)であってもよい。あるいは、ディスクドライブ111は、複数のディスクドライブ装置の集合であるRAID(Redundant Arrays of Inexpensive Disks)グループ又はそのRAIDグループが有する記憶空間を基に切り出された論理的な記憶デバイスであっても良い。本実施形態では、運用ボリューム及び差分格納ボリュームに、それぞれ1つずつディスクドライブ111が対応付けられているとする。なお、ディスクドライブ装置は、例えばハードディスクドライブ(HDD)であるが、DVD(Digital Versatile Disk)ドライブ或いはフラッシュメモリデバイスなど他種の物理記憶デバイスであっても良い。
クライアント装置112は、プライマリサーバ装置100やセカンダリサーバ装置120と接続してデータ転送を行うための接続装置であるインタフェース107を備える。クライアント装置112は、ネットワーク108を介してプライマリサーバ装置100やセカンダリサーバ装置120にアクセスし、サーバ装置が提供するNFSサーバプログラムなどを利用する。
図2は、リモートコピープログラム200の構成例について示した図である。以下、リモートコピーされた一以上のスナップショットのうち現在時刻から最も近い時刻に作成されたスナップショットを「基点スナップショット」と言う。また、基点スナップショットよりも後の世代のスナップショットでありリモートコピーの対象とされるスナップショットを「対象スナップショット」と言う。また、基点スナップショットを構成する各ブロック(記憶領域)を「基点ブロック」と言い、対象スナップショットを構成する各ブロックを「対象ブロック」と言う。
リモートコピープログラム200は、プライマリストレージ装置110に存在するスナップショットを、セカンダリサーバ装置120上のリモートコピープログラム200を利用することにより、ネットワーク108経由で、セカンダリストレージ装置130にコピーする。リモートコピープログラム200は、差分取得モジュール201と、データ転送モジュール202と、要求送信モジュール203と、要求受信モジュール204とを有し、転送用差分ビットマップ205を作成することができる。
差分取得モジュール201は、基点スナップショットと対象スナップショットとの差分の取得を行う。差分を取得する理由は、対象スナップショット全体ではなく基点スナップショットと対象スナップショットとの差分に相当するデータ(差分データ)のみをコピーすることで効率よくリモートコピーを行うためである。差分取得モジュール201は、スナップショット管理プログラム300の差分ビットマップ作成モジュール305を実行し、転送用差分ビットマップ205を作成する。転送用差分ビットマップ205は、基点スナップショットと対象スナップショットとの差分を表す。転送用差分ビットマップ205を構成する各ビットは、運用ボリューム又はスナップショットを構成する各ブロック(記憶領域)に対応する。説明を分かり易くするため、ビットとブロックは、1対1で対応しているとするが、各ビットに複数のブロックが対応付けられていても良い。
データ転送モジュール202は、転送用差分ビットマップ205に基づいて、リモートコピー対象データの集合である要求データを作成する。具体的には、転送用差分ビットマップ205における或るビットがオフ(「0」)であれば、そのビットに対応する、基点ブロックと対象ブロックとに、差分が無いことがわかる。従って、その或るビット「0」に対応するデータは、コピー対象とされない。一方、転送用差分ビットマップ205における或るビットがオン(「1」)であれば、そのビットに対応する、基点ブロックと対象ブロックとに、差分があることがわかる。この場合、データ転送モジュール202は、後述のCOW管理テーブル400を参照して、その或るビット「1」に対応する差分データの在り処を特定し、特定された在り処から差分データを読み出す。その読み出された差分データが、コピー対象のデータとされる。
要求送信モジュール203は、相手サイトのリモートコピープログラム200に対する要求データを、インタフェース106を介して送信する。例えば、プライマリサイトにおける要求送信モジュール203は、データ転送モジュール202が作成した要求データをセカンダリサイトへ送信する。
要求受信モジュール204は、相手サイトのリモートコピープログラム200から送信されてくる要求データを、インタフェース106を介して受信する。例えば、セカンダリサイトにおける要求受信モジュール204は、プライマリサイトから送信されてくる要求データを受信する。
図3は、スナップショット管理プログラム300の構成例について示した図である。
スナップショット管理プログラム300は、プライマリサーバ装置100内の各種プログラムからの運用ボリューム及び差分格納ボリュームに対するアクセスを制御し、スナップショット機能を実現するプログラムである。スナップショット管理プログラム300は、読み出し処理モジュール301と、書き込み処理モジュール302と、スナップショット作成モジュール303と、スナップショット削除モジュール304と、差分ビットマップ作成モジュール305とを有する。また、スナップショット管理プログラム300は、COW管理テーブル400、使用ブロックビットマップ500、COWビットマップ600、差分ビットマップ管理テーブル700及び最新スナップショットシーケンス番号306を管理する。
読み出し処理モジュール301は、COW管理テーブル400とCOWビットマップ600を用いて運用ボリューム内のデータやスナップショット内のデータを参照するために実行される。読み出し処理モジュール301が行う処理の詳細については、図11を用いて後述する。
書き込み処理モジュール302は、運用ボリュームへの書き込みを制御し、スナップショットを維持するために実行される。書き込み処理モジュール302は、運用ボリュームへの書き込みが発生する度に呼び出され、必要であれば、差分データを差分格納ボリュームへコピーし、COW管理テーブル400とCOWビットマップ600を更新した上で、書込み対象データの運用ボリュームへの書き込み行う。書き込み処理モジュール302が行う処理の詳細については、図12を用いて後述する。
スナップショット作成モジュール303は、運用ボリュームのスナップショットを作成するために実行される。スナップショット作成モジュール303が或る世代のスナップショットを作成した後、その或る世代のスナップショットへのアクセスが可能になる。スナップショット作成モジュール303は、COW管理テーブル400、COWビットマップ600及び差分ビットマップ管理テーブル700を更新する。スナップショット作成モジュール303が行う処理の詳細については、図9を用いて後述する。
スナップショット削除モジュール304は、作成したスナップショットを削除する際に実行される。スナップショット削除モジュール304は、COW管理テーブル400、使用ブロックビットマップ500及び差分ビットマップ管理テーブル700を更新し、差分格納ボリュームを構成する複数のブロックのうちの、削除するスナップショットの構成要素のデータを記憶しているブロックを開放する処理を行う。スナップショット削除モジュール304が行う処理の詳細については、図10を用いて後述する。
差分ビットマップ作成モジュール305は、リモートコピープログラム200の差分取得モジュール201が転送用差分ビットマップを要求してきた際に実行される。差分ビットマップ作成モジュール305は、差分ビットマップ管理テーブル700あるいはCOW管理テーブル400を参照し、転送用差分ビットマップを作成する。差分ビットマップ作成モジュール305が行う処理の詳細については、図13を用いて後述する。
図4は、COW管理テーブル400の一例を示す。以下の説明では、運用ボリュームを構成する各ブロックを、「運用ブロック」と言い、差分格納ボリュームを構成する各ブロックを、「差分ブロック」と言う。
COW管理テーブル400は、スナップショットを構成するデータの在り処を保存するテーブルである。このCOW管理テーブル400は、前述したスナップショット管理情報に相当する。
COW管理テーブル400は、スナップショット毎に、運用ブロックのアドレス(運用ボリュームブロックアドレス)401と、その運用ブロック内のデータのコピー先ブロックのアドレス402、403、…、40nとを保持する。加えて、COW管理テーブル400は、スナップショット毎に、スナップショットを一意に識別するためのシーケンス番号を保持する。本実施形態では、運用ブロック数がp個であり、スナップショットを最大n個まで作成可能であるとする。そのため、運用ボリュームブロックアドレスは、0からn−1までp行あり、スナップショットは、1からnまでn列ある。以下、ブロックアドレスkのブロックを「ブロックk」と記載する(kは0からn−1までの整数である)。
例えば、行411と列402が交わる箇所に、コピー先ブロックアドレス「32」が記録されている。すなわち、スナップショット1のブロック0を参照する際には、差分ブロック32を参照すればよいことがわかる。また、行411と列403の交わる箇所に、コピー先ブロックアドレス「0」が記録されている。コピー先ブロックアドレス「0」は、対応する運用ブロックについてCOWが発生していない(つまり差分が発生していない)ことを表す(本実施形態では、差分ブロック0はコピー先ブロックにはならない)。従って、スナップショット2のブロック0を参照する際には、運用ブロック0を参照すればよいことがわかる。また、スナップショットnに対応した列40nでは、全てのセルにおける値が、「-」(なし)になっている。これは、スナップショットnが作成されていない状態を表す。
また、行410は各スナップショットのシーケンス番号を示している。例えば、スナップショット1のシーケンス番号は、行410と列402の交わる箇所によれば、「1」である。COW管理テーブル400の各スナップショットの列には、スナップショットを一意に識別し管理するためにシーケンス番号が保持される。保持できるスナップショット数には制限があるため、古いスナップショットを削除して新しいスナップショットを作成した場合、スナップショットの世代を表す番号は再利用されるが、シーケンス番号は決して再利用されず、一意に管理される。したがって、シーケンス番号とスナップショットの世代を表す番号は、通常は異なるが、一時的に同じ場合もある。
なお、本実施形態では、このCOW管理テーブル400は、メモリ102に保持されるが、それに代えて、ディスクドライブ111に保持されてもよい。
図5は、使用ブロックビットマップ500の一例を示す。
使用ブロックビットマップ500は、各差分ブロックの使用状況を管理するビットマップである。本実施形態では、差分ブロック数がq個であるとする。使用ブロックビットマップ500は、それらのq個の差分ブロックのアドレスのそれぞれについて、使用しているか否かを表す使用状態フラグ(ビット)を保持する。使用状態フラグは、「1」の場合に、そのフラグに対応する差分ブロックが使用中であることを意味し、「0」の場合に、そのフラグに対応する差分ブロックが未使用であることを意味する。
図6は、COWビットマップ600の一例を示す。
COWビットマップ600は、運用ブロック内のデータを差分格納ボリュームにコピーする(退避する)必要があるか否かを管理するビットマップである。COWビットマップ600は、p個の運用ブロックのアドレスのそれぞれについて、その運用ブロックを差分格納ボリュームにコピーする必要があるか否かを表すCOW状態フラグ(ビット)を保持する。COW状態フラグは、「1」の場合に、そのフラグに対応する運用ブロックに更新が生じてもその運用ブロック内のデータを差分格納ボリュームにコピーすることが不要であることを意味し、「0」の場合に、そのフラグに対応する運用ブロックに更新が生じたならばその運用ブロック内のデータを差分格納ボリュームにコピーすることが必要であることを意味する。
なお、更新の発生した運用ブロック内のデータを差分格納ボリュームにコピーする必要があるか否かは、COW管理テーブル400からも特定することができる。COW管理テーブル400の最新世代のスナップショットの列において、コピー先ブロックアドレス「0」は、そのアドレスに対応した運用ブロックについてCOWが未だ発生していないことを表している。すなわち、COWビットマップ600において、その運用ブロックに対応したCOW状態フラグは「0」となっている。COWビットマップ600を保持する理由は、COW管理テーブル400からよりも、COWビットマップ600からの方が、所望の運用ブロックのCOW状態(コピー済みか否か)を高速に取得することができるからである。これは、COW管理テーブル400がメモリ102ではなくディスクドライブ111に存在する場合に一層効果的である。
COWビットマップ600及びCOW管理テーブル400のうち、対象スナップショット(リモートコピー対象のスナップショット)が、基点スナップショットと最新世代のスナップショットとの間の世代のスナップショットであれば、COW管理テーブル400が、リモートコピーの際に適宜に参照される。一方、対象スナップショットが、最新世代のスナップショットであれば、COWビットマップ600及びCOW管理テーブル400のうちの少なくともCOW管理テーブル400が、リモートコピーの際に、適宜に参照される。
具体的には、対象スナップショットが、基点スナップショットと最新世代のスナップショットとの間の世代のスナップショットである場合、転送用ビットマップ205の或るビットが「1」であれば、COW管理テーブル400内の、対象ビットマップに対応したカラムを参照することで、或るビット「1」に対応する差分データの在り処(運用ブロックまたは差分ブロックのブロックアドレス)が特定される。
一方、対象スナップショットが、最新世代のスナップショットである場合、転送用ビットマップ205の或るビットが「1」であれば、COWビットマップ600(及びCOW管理テーブル400)を参照することで、或るビット「1」に対応する差分データの在り処が特定される。例えば、或るビット「1」に対応する、COWビットマップ600におけるビットが「0」であれば、或るビット「1」に対応する運用ブロック(運用ボリューム内のブロック)に記憶されているデータが、コピー対象のデータである。一方、或るビット「1」に対応する、COWビットマップ600におけるビットが「1」であれば、そのビット「1」に対応する差分ブロック(差分格納ボリューム内のブロック)に記憶されているデータが、コピー対象のデータである。
図7は、差分ビットマップ管理テーブル700の一例を示す。
差分ビットマップ管理テーブル700は、スナップショット毎に、そのスナップショットとそれの一世代前のスナップショットとの差分を表す差分ビットマップを保持するテーブルである。差分ビットマップを構成する各ビットは、各運用ブロックに対応している。
具体的には、差分ビットマップ管理テーブル700は、運用ブロックのアドレス(運用ボリュームブロックアドレス)701と、その運用ブロックに対応したビット(差分ビットマップの構成要素)702、703、…、70nとを保持する。加えて、差分ビットマップ管理テーブル700は、COW管理テーブル400と同様に、行710に、スナップショット毎に、スナップショットを一意に識別するためのシーケンス番号を保持する。
或る世代のスナップショットn-1を作成した時点からスナップショットnを作成する時点までに、更新のあった運用ブロックについては、「1」というビットが設定され、更新のなかった運用ブロックについては、「0」というビットが設定される。
例えば、スナップショット1とスナップショット2との差分を表す差分ビットマップは、スナップショット2の列703に保持されている。例えば、行711と列703が交わる箇所には、ビット「1」が設定されている。このため、スナップショット1の作成時点からスナップショット2の作成時点までの間に、運用ブロック0に更新があったことがわかる。また、例えば、行712と列703が交わる箇所には、ビット「0」が設定されている。このため、スナップショット1の作成時点からスナップショット2の作成時点までの間に、運用ブロック1に更新がなかったことがわかる。また、列705を構成する全てのセルに値「-(なし)」が設定されている。これは、スナップショットnが作成されておらず、差分が確定していない状態を表す。
なお、差分ビットマップ管理テーブル700がどのようにして作成されるかは、図9を用いて後述する。
図3に示した最新スナップショットシーケンス番号306は、スナップショット管理プログラム300が管理するスナップショットのうち、どのスナップショットが最新であるかを保持するための情報である。最新スナップショットシーケンス番号306は、例えば整数である。最新スナップショットシーケンス番号306は、スナップショットが作成される都度に1インクリメントされ、1インクリメントされた後の番号306が、その作成された最新世代のスナップショットのシーケンス番号とされる。
以上が、スナップショット管理プログラム300の構成に関する説明である。
図8は、基点スナップショットと対象スナップショット間の差分ビットマップを作成する例を示す。この例では、基点スナップショットは「スナップショット1」であり、対象スナップショットは「スナップショット3」である。
列801は、運用ボリュームのブロックアドレスを表す。列802は、差分ビットマップ管理テーブル700の列703に保持されている差分ビットマップ(スナップショット1とスナップショット2との間の差分を表すビットマップ)を表す。列803は、差分ビットマップ管理テーブル700の列704に保持されている差分ビットマップ(スナップショット2とスナップショット3との間の差分を表すビットマップ)を表す。列804は、列802内の差分ビットマップと列803内の差分ビットマップとのビット論理和を表す。これが、スナップショット1とスナップショット3との間の差分を表すビットマップ、すなわち、スナップショット1の作成時点からスナップショット3の作成時点までにどの運用ブロックが更新されたかを示す差分ビットマップとなる。
例えば、運用ボリュームブロックアドレスが0である行811では、スナップショット1-2間の差分ビットマップ内のビットが「1」(差分あり)であり、スナップショット2-3間の差分ビットマップ内のビットが「0」(差分なし)である。すなわち、スナップショット1とスナップショット3との間で考えると、運用ブロック0には差分が存在するため、行811と列804が交わる箇所には、ビット「1」(差分あり)が設定される。また、運用ボリュームブロックアドレスが1である行812では、スナップショット1-2間の差分ビットマップ内のビットも、スナップショット2-3間の差分ビットマップ内のビットも、「0」(差分なし)である。すなわち、スナップショット1とスナップショット3との間でも、差分が存在しないため、行812と列804が交わる箇所には、ビット「0」(差分なし)が設定される。
後述するように、ビット論理和である差分ビットマップ(つまり列804に設定された差分ビットマップ)の複製が、リモートコピーの際に使用される転送用差分ビットマップ205である。
以下では、スナップショット管理プログラム300を構成する各モジュールが行う処理のフローを、図9から図13を用いて説明する。
図9は、スナップショット作成モジュール303の動作を表す処理フローの一例である。スナップショット作成モジュール303は、例えば、クライアント装置112(又はネットワーク108に接続されている図示しない管理装置)から、スナップショット作成指示(例えばスナップショット番号を含んだ作成指示)を受けた場合に実行される。作成するスナップショット番号は、他の方法でスナップショット作成モジュール303に指定されても良い。
まず、スナップショット作成モジュール303は、最新スナップショットシーケンス番号306を1インクリメントする(S901)。
次に、スナップショット作成モジュール303は、差分ビットマップ管理テーブル700の、指定されたスナップショット番号に対応する列に、COWビットマップ600をコピーし、且つ、その列に、S901でインクリメントされた後の最新スナップショットシーケンス番号306を設定する(S902)。差分ビットマップ管理テーブル700にコピーされたCOWビットマップ600では、COW済みの運用ブロック、すなわち、差分格納ボリュームにコピーされたデータを記憶していた運用ブロックについて、ビット「1」が設定されている。このCOW済みの運用ブロックは、直前世代のスナップショット作成後から現時点までに更新された運用ブロックと同義であるから、現時点のCOWビットマップ600は、直前世代のスナップショットと現在作成しようとしているスナップショットの間の差分ビットマップとして、特に変換処理などを行うことなく、そのまま差分ビットマップ管理テーブル700にコピーされればよい。
次に、スナップショット作成モジュール303は、COWビットマップ600を構成する全てのビットを「0」に設定する(S903)。つまり、COWビットマップ600がリセットされる。これにより、すべての運用ブロックのCOW状態が、更新が生じたならば差分格納ボリュームにデータのコピーが必要な状態になる。
そして、スナップショット作成モジュール303は、COW管理テーブル400の、実行時に指定されたスナップショット番号に対応する列において、すべての運用ボリュームブロックアドレスについて「0」を設定し、且つ、その列に、インクリメントされた後の最新スナップショットシーケンス番号306を設定する(S904)。
図10は、スナップショット削除モジュール304の動作を表す処理フローの一例である。スナップショット削除モジュール304は、例えば、クライアント装置112(又はネットワーク108に接続されている図示しない管理装置)から、削除対象のスナップショットを指定したスナップショット削除指示(例えば、スナップショットのシーケンス番号を含んだ削除指示)を受けた場合に実行される。削除対象のスナップショットは、他の方法でスナップショット削除モジュール304に指定されても良い。
まず、スナップショット削除モジュール304は、COW管理テーブル400の、削除対象のスナップショットに対応する列(指定されたスナップショットシーケンス番号を有する列)における全てのセルに、値「-(なし)」を設定する(S1001)。
次に、スナップショット削除モジュール304は、使用ブロックビットマップ500の状態フラグを更新する(S1002)。具体的には、スナップショット削除モジュール304は、使用ブロックビットマップ500における、削除対象のスナップショットを構成するデータを記憶している差分ブロックに対応した状態フラグ(ビット)を、未使用を意味する「0」に更新する。これにより、削除対象のスナップショットを構成するデータを記憶している差分ブロックが解放される。なお、削除対象のスナップショットを構成するデータを記憶している差分ブロックがどれであるかは、COW管理テーブル400を参照することにより、特定することができる。その際、その特定された差分ブロックが、他のスナップショットを構成するデータが記憶されている差分ブロックである場合には、スナップショット削除モジュール304は、その特定された差分ブロックについては、解放しない(すなわち、その差分ブロックに対応した状態フラグを「1」から「0」には変更しない)。つまり、スナップショット削除モジュール304は、削除対象のスナップショットを構成するデータを記憶している差分ブロックを解放するか否かを、COW管理テーブル306を参照した上で、決定する。
そして、スナップショット削除モジュール304は、差分ビットマップ管理テーブル700の、削除対象のスナップショットに対応する列の全てのセルに、「-(なし)」を設定する(S1001)。
図11は、読み出し処理モジュール301の動作を表す処理フローの一例である。読み出し処理は、運用ボリュームとスナップショットのいずれかに対して行われるとする。
まず、読み出し処理モジュール301は、読み出し要求を受け取り、その要求で指定されている論理ボリュームがスナップショットであるかを判定する(S1101)。読み出し要求は、例えば、上位のプログラム(例えばファイルシステム)から受ける。読み出し要求では、読み出し元の論理ボリューム及びその論理ボリューム内のブロックが指定されている。具体的には、例えば、読み出し要求には、論理ボリュームのIDと、ブロックのアドレスとが含まれている。
読み出し処理モジュール301は、読み出し要求でスナップショットが指定されていなければ(S1101:NO)、読み出し要求で指定されている運用ボリューム内の運用ブロックからデータを読み出して(S1103)、終了する。
一方、読み出し要求でスナップショットが指定されていれば(S1101:YES)、読み出し処理モジュール301は、そのスナップショットの、指定されているブロックに該当するCOW管理テーブル400の行を参照して、参照先のコピー先ブロックアドレスの値が「0」かどうかを判定する(S1102)。参照先のコピー先ブロックアドレスの値が「0」であれば(S1102:YES)、読出し対象のデータは、差分格納ボリュームではなく運用ボリュームに存在するため、読み出し処理モジュール301は、運用ボリュームの、指定されたブロックから、データを読み出して(S1103)、終了する。参照先のコピー先ブロックアドレスの値が「0」でなければ(S1102:NO)、読出し対象のデータは差分格納ボリュームにコピーされているので、参照先のコピー先ブロックアドレスから表す差分ブロックから、データを読み出して(S1104)、終了する。
図12は、書き込み処理モジュール302の動作を表す処理フローの一例である。書き込み処理では、運用ボリュームへのデータの書き込みが行われるが、必要に応じて、運用ボリュームへのデータの書き込みに先立って、書込み先の運用ブロックに記憶されているデータを差分格納ボリュームへコピーすることも行われる。
まず、書き込み要求を受け取ると、書き込み処理モジュール302は、COWビットマップ600を参照し、書き込む先の運用ブロックのCOW状態フラグが「0」であるかを判定する(S1201)。書き込み要求は、例えば、上位のプログラム(例えばファイルシステム)から受ける。書き込み要求では、書き込み先の運用ボリューム及び運用ブロックが指定されている。具体的には、例えば、書き込み要求には、運用ボリュームのIDと、運用ブロックのアドレスとが含まれている。
参照先のCOW状態フラグが「1」であれば(S1201:NO)、書き込み処理モジュール302は、書込み対象のデータの指定されている運用ブロックへの書き込みを実行し(S1207)、終了する。参照先のCOW状態フラグが「0」であれば(S1201:YES)、書き込み処理モジュール302は、スナップショットを維持するために運用ボリュームのデータのコピーが必要なため、続いて以下の処理を行う。
すなわち、書き込み処理モジュール302は、最新スナップショットシーケンス番号306を参照し、COW管理テーブル400における、最新スナップショットの列(参照先の最新スナップショットシーケンス番号306を含んだ列)を選択する(S1202)。次に、書き込み処理モジュール302は、使用ブロックビットマップ500を参照し、状態フラグが「0」(未使用)の差分ブロックを選択する(S1203)。次に、書き込み処理モジュール302は、書込み先の運用ブロック内のデータを、S1203で選択した差分ブロックへコピーし、その差分ブロックに対応した、使用ブロックビットマップ500の状態フラグを、「1」(使用済み)に変更する(S1204)。次に、書き込み処理モジュール302は、すべてのスナップショットについての、書込み先の運用ブロックに対応したコピー先ブロックアドレス(COW管理テーブル400におけるコピー先ブロックアドレス)のうち、コピー先ブロックアドレス「0」を、S1203で選択したブロック番号に変更する(S1205)。次に、書き込み処理モジュール302は、書込み先の運用ブロックに対応した、COWビットマップ600におけるCOW状態フラグを、「1」に変更する(S1206)。以上の処理を行った上で、書き込み処理モジュール302は、書込み先の運用ブロックへの書込み対象のデータの書き込みを実行し(S1207)、終了する。
図13は、差分ビットマップ作成モジュール305の動作を表す処理フローの一例である。差分ビットマップ作成モジュール305では、リモートコピープログラム200の差分取得モジュール201が転送用差分ビットマップを要求してきた際に、差分ビットマップ管理テーブル700あるいはCOW管理テーブル400を参照し、転送用差分ビットマップを作成する。差分ビットマップ作成モジュール305を実行する際は、差分を求めたい2つのスナップショットのシーケンス番号が、リモートコピープログラム200の差分取得モジュール201から差分ビットマップ作成モジュール305に指定される。それら2つのスナップショットのうちの一方は、基点スナップショットであり、他方は、対象スナップショット(すなわち、リモートコピー対象のスナップショット)である。例えば、基点スナップショットのシーケンス番号(及び/又は、他のスナップショットのシーケンス番号)は、リモートコピープログラム200で管理されていても良いし、リモートコピープログラム200がスナップショット管理プログラム300に問い合わせることで把握されても良い。
まず、差分ビットマップ作成モジュール305は、実行時に指定された2つのスナップショット間のすべてのスナップショットについて、差分ビットマップが存在しているかを判定する(S1301)。指定されたスナップショットのシーケンス番号が「1」と「3」であった場合の例について、図7を用いて説明する。シーケンス番号「1」のスナップショットとシーケンス番号「2」のスナップショットとの間の差分を表す差分ビットマップは、列703のシーケンス番号2のスナップショット2の列に保持されている。また、シーケンス番号「2」のスナップショットとシーケンス番号「3」のスナップショットとの間の差分を表す差分ビットマップは、列704のシーケンス番号「3」のスナップショット3の列に保持されている。よって、実行時に指定されたスナップショット(シーケンス番号「1」のスナップショットとシーケンス番号「3」のスナップショット)の間のすべてのスナップショットについて、差分ビットマップが存在している(S1301:YES)。
この場合(S1301:YES)、差分ビットマップ作成モジュール305は、スナップショット間のすべての差分ビットマップについて、ビット論理和を算出する(S1302)。ビット論理和を算出することで差分ビットマップを作成する方法については、図8を参照して前述したとおりである。
スナップショット間の差分ビットマップが存在しない場合(S1301:NO)、差分ビットマップ作成モジュール305は、COW管理テーブル400における、それら2つのスナップショットの2つの列を比較し、各運用ブロックアドレスについて、コピー先ブロックアドレスが等しければ「0」を設定し、異なれば「1」を設定することで、差分ビットマップを作成する(S1304)。なお、S1301:NOになるケースは、実行時に指定された2つのスナップショットの間に存在する複数のスナップショットのうちの少なくとも一つのスナップショットについて差分ビットマップが存在しない(例えば削除された)ケースである。
そして、差分ビットマップ作成モジュール305は、S1302またはS1304の処理によって作成した差分ビットマップを、転送用差分ビットマップ205が記憶される領域に、コピーする(S1303)。従って、その領域にコピーされた差分ビットマップが、リモートコピーの際に転送用差分ビットマップ205として使用される。
最後に、差分ビットマップ作成モジュール305は、差分ビットマップ管理テーブル700における、不要となった差分ビットマップ(S1302又はS1304の処理によって作成された差分ビットマップの基になった複数の差分ビットマップ)に対応する列を構成する全てのセルに、「-(なし)」を設定する(S1305)。つまり、転送用差分ビットマップ205が作成されてリモートコピーが完了すれば、その転送用差分ビットマップ205の作成に使用された複数の差分ビットマップは使用されない。したがって、それらの差分ビットマップが記憶されている複数の列に、それぞれ、「-(なし)」が設定されることで、記憶容量(典型的にはメモリの記憶容量)の消費を節約することができる。先と同様に、図7の例では、シーケンス番号「2」のスナップショットとシーケンス番号「3」のスナップショットとの間の差分を表す差分ビットマップが記憶されている列703及び列704に、「-(なし)」が設定されればよい。なお、作成された転送用差分ビットマップ205を使用したリモートコピーに失敗した場合などに備えて、リモートコピープログラム200の完了を待って、このような解放処理が行われてもよいし、スナップショット自体が削除されるまで、差分ビットマップが保持されていてもよい。
以上が、本実施形態の説明である。なお、本実施形態では、要求データを構成する各差分データが、セカンダリサイトに転送されるが、転送先は、例えば、プライマリサイトの運用ボリューム(プライマリボリューム)とボリュームペアを構成するセカンダリサイトの運用ボリューム(セカンダリボリューム)となる。セカンダリボリュームに差分データが書き込まれる場合、セカンダリボリューム内の書込み先のブロックに記憶されているデータが、セカンダリサイトにおける差分格納ボリュームに退避され(コピーされ)、その書込み先ブロックに、差分データが書き込まれる。
本実施形態によれば、スナップショットごとに、世代間(スナップショット間)の差分ビットマップが保持され、転送用差分ビットマップが、基点スナップショットと対象スナップショットとの間の一以上の差分ビットマップのビット演算で算出される。これにより、任意の世代の対象スナップショットについての転送用差分ビットマップを高速に作成することができる。言い換えれば、任意の世代の対象スナップショットについての転送用差分ビットマップを作成するのに、COW管理テーブル400を参照する必要が無い。これは、COW管理テーブル400がメモリ102ではなくディスクドライブ111に存在する場合には、より有効である。
次に、本発明の第二の実施形態について説明する。以下、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については、説明を省略または簡略する。
図14は、本実施形態におけるスナップショット管理プログラム1400の構成の一例を示す。
スナップショット管理プログラム1400には、第一の実施形態のスナップショット作成モジュール303、スナップショット作成モジュール304及び差分ビットマップ作成モジュール305と機能が異なるスナップショット作成モジュール1401、スナップショット作成モジュール1402及び差分ビットマップ作成モジュール1403が備えられている。スナップショット管理プログラム1400は、第一の実施形態で説明した差分ビットマップ管理テーブル700を管理しない。スナップショット管理プログラム1400は、マージ基点スナップショットシーケンス番号1404を管理し、適時に、マージ差分ビットマップ1500を作成する。
図15は、マージ差分ビットマップ1500の一例である。
マージ差分ビットマップ1500は、各運用ブロックについて、差分の有無を表す差分有無フラグ(ビット)を保持している。マージ差分ビットマップ1500は、スナップショット作成の度に、その時点のCOWビットマップ600とのマージ(ビット論理和)となる。転送用差分ビットマップ205が生成された時点での最新スナップショットシーケンス番号306を保持したものが、マージ基点スナップショットシーケンス番号1404である。
転送用差分ビットマップ205は、転送用差分ビットマップ205が記憶される領域にコピーされたマージ差分ビットマップ1500である。従って、転送用差分ビットマップ205は、基点スナップショットと最新世代のスナップショットとの間の差分を表す差分ビットマップである。従って、本実施形態では、対象スナップショットが最新世代のスナップショットの場合に、対象スナップショットについての転送用差分ビットマップを高速に作成することができる。
以下では、本実施形態における処理フローについて、図16から図18を用いて説明する。
図16は、スナップショット作成モジュール1401の動作を表す処理フローの一例である。
S1601〜S1604のうち、S1601、S1603及びS1604が、図9に示したS901、S903及びS904と同じである。本実施形態では、図9に示したS902に代えて、図16に示すS1602が行われる。
すなわち、スナップショット作成モジュール1401は、S1602において、その時点のCOWビットマップ600とマージ差分ビットマップ1500とのビット論理和を、新しいマージ差分ビットマップ1500とする点である。これにより、基点スナップショットの作成時点から最新スナップショット作成時点までの、運用ボリュームに更新があったブロックを保持することができる。
図17は、スナップショット削除モジュール1402の動作を表す処理フローの一例である。
S1701〜S1704のうち、S1701及びS1702が、図10に示したS1001及びS1002と同じである。本実施形態では、図10に示したS1003に代えて、図17に示すS1703及びS1704が行われる。
すなわち、S1703では、スナップショット削除モジュール1402は、指定された削除対象のスナップショットのシーケンス番号がマージ基点スナップショットシーケンス番号1404未満かどうかを判定する。S1703の判定の結果が肯定的の場合(S1703:YES)、スナップショット削除モジュール1402は、そのまま削除処理を終了する。その時点まで保持してきたマージ差分ビットマップ1500とは関係がないためである。
一方、S1703の判定の結果が否定的の場合(S1703:NO)、スナップショット削除モジュール1402は、マージ基点スナップショットシーケンス番号1404とマージ差分ビットマップ1500に「-(なし)」を設定する(S1704)。この結果、マージ差分ビットマップ1500を構成する各ビットが、「-(なし)」に設定される。マージ差分ビットマップ1500が実際の差分ビットマップと一致しなくなるためである。
図18は、差分ビットマップ作成モジュール1403の動作を表す処理フローの一例である。
差分ビットマップ作成モジュール1403は、リモートコピープログラム200の差分取得モジュール201が転送用差分ビットマップを要求してきた際に、マージ差分ビットマップ1500あるいはCOW管理テーブル400を参照し、転送用差分ビットマップを作成する。第一の実施形態と同様に、差分ビットマップ作成モジュール1403を実行する際は、差分を求めたい2つのスナップショット(基点スナップショットと対象スナップショット)のシーケンス番号が指定される。
まず、差分ビットマップ作成モジュール1403は、実行時に指定された2つのスナップショットのシーケンス番号が、マージ基点スナップショットシーケンス番号1404及び最新スナップショットシーケンス番号306と一致するかどうかを判定する(S1801)。
S1801の判定の結果が肯定的の場合(S1801:YES)、マージ差分ビットマップ1500が所望の差分ビットマップと一致するため、差分ビットマップ作成モジュール1403は、リモートコピープログラム200の転送用差分ビットマップ205の領域に、マージ差分ビットマップ1500をコピーする(S1802)。そして、差分ビットマップ作成モジュール1403は、マージ基点スナップショットシーケンス番号1404を、最新スナップショットシーケンス番号306と同じ番号に変更し(S1805)、終了する。
S1801の判定の結果が否定的の場合(S1801:NO)、マージ差分ビットマップ1500が所望の差分ビットマップと一致しないため、差分ビットマップ作成モジュール1403は、COW管理テーブル400を参照し、差分ビットマップを作成する(S1803)。すなわち、差分ビットマップ作成モジュール1403は、COW管理テーブル400の、指定された2つのスナップショットに対応した2列を比較し、コピー先ブロック番号が等しければ「0」を、異なれば「1」を設定することで、差分ビットマップを作成する。そして、差分ビットマップ作成モジュール1403は、作成した差分ビットマップを、リモートコピープログラム200の転送用差分ビットマップ205の領域にコピーする(S1804)。最後に、差分ビットマップ作成モジュール1403は、マージ基点スナップショットシーケンス番号1404を、最新スナップショットシーケンス番号306と同じ番号に変更し(S1805)、終了する。
以上が、第二の実施形態についての説明である。
本実施形態によれば、スナップショットの作成の都度に、作成された最新世代のスナップショットとの直前世代のスナップショットとの差分を表すCOWビットマップ400の内容が、マージ差分ビットマップ1500にマージされる。対象スナップショットが最新世代のスナップショットである場合に、マージ差分ビットマップ1500の複製が、転送用差分ビットマップ205とされる。これにより、第一の実施形態よりも記憶容量(メモリ容量)の消費を少なくしつつ、対象スナップショットについての転送用差分ビットマップを高速に作成することができる。
次に、本発明の第三の実施形態について説明する。以下、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については、説明を省略または簡略する。
図19は、本実施形態におけるスナップショット管理プログラム1900の構成の一例を示す。
スナップショット管理プログラム1900には、第一の実施形態のスナップショット作成モジュール303、スナップショット作成モジュール304及び差分ビットマップ作成モジュール305と機能が異なるスナップショット作成モジュール1901、スナップショット作成モジュール1902及び差分ビットマップ作成モジュール1903が備えられている。また、スナップショット管理プログラム1900には、差分ビットマップマージモジュール1904及び管理インタフェースモジュール1905が備えられている。スナップショット管理プログラム1900は、第一の実施形態で説明した差分ビットマップ管理テーブル700に代えて、マージ差分ビットマップ管理テーブル2000を管理する。マージ差分ビットマップ管理テーブル2000は、メモリ102で管理される。
差分ビットマップマージモジュール1904は、後述する管理インタフェースモジュール1905などを使用して、システム管理者がリモートコピーの対象とするスナップショットを選択した際に実行される。差分ビットマップマージモジュール1904は、リモートコピーの対象でないスナップショットに対応する差分ビットマップを、リモートコピーの対象となっているスナップショットに対応する差分ビットマップにマージする。これにより、記憶容量の消費(メモリ容量の消費)を節約することが可能である。
管理インタフェースモジュール1905は、プライマリサーバ装置100やクライアント112に接続された表示装置などに、システム管理者が操作を行うための画面(典型的にはGUI(Graphical User Interface))を表示する。
図20と図21は、マージ差分ビットマップ管理テーブル2000の一例である。図20は、差分ビットマップマージモジュール1904が実行される前のマージ差分ビットマップ管理テーブル2000を示し、図21は、差分ビットマップマージモジュール1904が実行された後のマージ差分ビットマップ管理テーブル2000を示している。
マージ差分ビットマップ管理テーブル2000は、差分ビットマップ管理テーブル700とほぼ同じ構成であるが、各スナップショットの列が2つのシーケンス番号を保持している点が異なる。右のシーケンス番号は、そのスナップショット自身のシーケンス番号を表し、左のシーケンス番号は、マージされたスナップショットのうち最も古い世代のスナップショットのシーケンス番号を表している。
以下では、システム管理者がリモートコピーの対象とするスナップショットを選択する際に実行される処理フローについて、図20から図23を用いて説明する。
まず、管理インタフェースモジュール1905が実行されると、対象スナップショットを選択する画面が表示される。図22は、その一例である。図22のコピー対象スナップショット選択画面2200は、スナップショットを選択するためのチェックボックス2201と、セカンダリサイトへコピーされていないスナップショット名の一覧である未コピースナップショット2202と、それらのスナップショットの作成日時2203の列、および、選択を決定するための決定ボタン2204と選択をキャンセルするためのキャンセルボタン2205を備える。なお、図22に表示される情報のうち、例えば、セカンダリサイトへコピーされていないスナップショット名の一覧である未コピースナップショット2202と、それらのスナップショットの作成日時2203は、COW管理テーブル400で管理されている。すなわち、図示していないが、COW管理テーブル400には、スナップショット毎に、リモートコピーされたか否かを表す情報や、スナップショットの名称や、スナップショットの作成日時が、記録される。なお、これらの情報は、スナップショットのシーケンス番号をIDとして、別のテーブルで管理されてもよい。
システム管理者が、任意のスナップショットにチェックをつけ、決定ボタン2204を押下すると、管理インタフェースモジュール1905は、選択されたスナップショット(対象スナップショット)のシーケンス番号を差分ビットマップマージモジュール1904に指定し、そのモジュール1904を実行させる。例えば、シーケンス番号が「26」と「28」のスナップショットが選択されたとする。選択されたシーケンス番号「26」と「28」は、差分ビットマップマージモジュール1904に指定される。指定されたシーケンス番号「26」と「28」は、シーケンス番号リスト(図示せず)に保持される。
図23は、差分ビットマップマージモジュール1904の動作を表す処理フローの一例である。
まず、差分ビットマップマージモジュール1904は、シーケンス番号リストに記録されている一以上のシーケンス番号のうち、最も小さいシーケンス番号のスナップショットを選択する(S2301)。この選択されたスナップショットの差分ビットマップが、マージ先の差分ビットマップとなる。先の例では、その差分ビットマップに、シーケンス番号「26」のスナップショットに対応する差分スナップショットが該当する。
次に、差分ビットマップマージモジュール1904は、マージ対象の全てのスナップショットについて差分ビットマップが存在しているかを判定する(S2302)。ここでは、S2301で選択したスナップショットの差分ビットマップにマージされる差分ビットマップがすべて存在しているかが判定される。最初にS2302を実行する際は、リモートサイトへコピーされていないスナップショットのうち、最も古い世代のスナップショットからS2301で選択したスナップショットまでの各スナップショットに対応した差分ビットマップの有無が判定される。先の例では、未コピーのスナップショットのうち最も古い世代のスナップショットのシーケンス番号は「25」であり、S2301で選択されたシーケンス番号は「26」である。これら2つのシーケンス番号に対応したスナップショット間の各スナップショットについて差分ビットマップの有無が判定される。
S2302の判定の結果が肯定的の場合(S2302:YES)、差分ビットマップマージモジュール1904は、スナップショット間の一以上の差分ビットマップのビット論理和をとり(S2303)、シーケンス番号を更新する(S2304)。先の例では、図20の列2003の内容が、図21の列2003’の内容に変更される。シーケンス番号「25」のスナップショットの差分ビットマップからシーケンス番号「26」のスナップショットの差分ビットマップまでの差分ビットマップが、シーケンス番号「26」のスナップショットの差分ビットマップにマージされる。その結果(つまり、マージ後の、シーケンス番号「26」のスナップショットの差分ビットマップ)が、列2003´に保持されている。
そして、S2304が終了した場合、或いは、S2302の判定の結果が否定的の場合(S2302でNO)、差分ビットマップマージモジュール1904は、シーケンス番号リストが空かどうかを判定する(S2305)。
シーケンス番号リストが空であった場合(S2305:YES)、差分ビットマップマージモジュール1904は、そのまま終了する。シーケンス番号リストが空でなかった場合(S2305:NO)、差分ビットマップマージモジュール1904は、再び、シーケンス番号リストに記録されている一以上のシーケンス番号のうち最も小さいシーケンス番号に対応するスナップショットを選択する(S2301)。
先の例では、実行時のシーケンス番号として、「26」と「28」が指定されているため、シーケンス番号「26」の処理が終わった後、シーケンス番号「28」についても処理が行われる。2回目以降、S2302を実行する場合は、前回マージ先とされた差分ビットマップに対応する世代のスナップショットの直後の世代のスナップショットから、処理対象のシーケンス番号のスナップショットまでの各スナップショットについて、差分ビットマップの有無が判定される。先の例で言えば、シーケンス番号「27」のスナップショットからシーケンス番号「28」のスナップショットまでの各スナップショットについて差分ビットマップが有るか否かが判定され、有るとの判定の結果になれば、シーケンス番号「28」のスナップショットの差分ビットマップに、シーケンス番号「27」のスナップショットの差分ビットマップがマージされる。
以上が、システム管理者がリモートコピーの対象とするスナップショットを選択する際に実行される処理フローについての説明である。
次に、第一の実施形態と本実施形態におけるスナップショット作成モジュール1901、スナップショット削除モジュール1902、差分ビットマップ作成モジュール1903の処理の違いについて説明する。
スナップショット作成モジュール1901は、図9におけるS902において、差分ビットマップ管理テーブル700ではなく、マージ差分ビットマップ管理テーブル2000に最新スナップショットシーケンス番号306を設定する。なお、この時点で差分ビットマップはマージされていないので、左右2箇所のシーケンス番号とも、最新スナップショットシーケンス番号306となる。
スナップショット削除モジュール1903は、図10におけるS1003において、差分ビットマップ管理テーブル700ではなく、マージ差分ビットマップ管理テーブル2000に「-(なし)」を設定する。
差分ビットマップ作成モジュール1904は、図13におけるS1301において、差分ビットマップが存在しているかを判定する。マージ差分ビットマップ管理テーブル2000では、マージされた差分ビットマップを管理しているため、差分ビットマップ作成モジュール1904は、各スナップショットが保持する2つのシーケンス番号を参照し、判定を行う。例えば、リモートサイトにコピー済みのスナップショットのシーケンス番号が「24」、コピー対象のスナップショットのシーケンス番号が「26」であったとすると、実行時には、差分ビットマップ作成モジュール1904に、シーケンス番号「24」と「26」が指定される。シーケンス番号「24」と「25」の間の差分ビットマップ(図20の列2002)は、図21の列2002’において「-(なし)」となっているが、シーケンス番号「26」のスナップショットの差分ビットマップにマージされているため、COW管理テーブル400を参照することなく、転送用差分ビットマップ205を作成することができる。具体的には、シーケンス番号「26」のスナップショットの差分ビットマップの複製を、転送用差分ビットマップ205とすることができる。しかし、実行時に指定されたシーケンス番号が「25」と「27」であった場合には、シーケンス番号「26」と「27」の間の差分ビットマップ(図20の列2004)が、シーケンス番号「28」のスナップショットの差分ビットマップにマージされているため(つまり存在しないため)、シーケンス番号「26」と「27」の間の差分ビットマップを作成するために、COW管理テーブル400を参照する必要がある。
次に、本発明の第四の実施形態について説明する。以下、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については、説明を省略または簡略する。
本実施形態は、ストレージ装置のCPUで、リモートコピープログラム、スナップショット管理プログラム、ブロックI/Oプログラムが実行される(例えば、ストレージ装置が、NASとしての機能を備える)。
図24は、本発明の第四の実施形態におけるストレージシステムの構成例を示す図である。
本実施形態におけるストレージシステムは、プライマリサーバ装置2400、プライマリストレージ装置2410、クライアント装置112、セカンダリサーバ装置2420及びセカンダリストレージ装置2430を備える。プライマリストレージ装置2410とセカンダリストレージ装置2430が、1つのネットワーク109を介して、プライマリサーバ装置2400とセカンダリサーバ装置2420と接続されている。また、プライマリストレージ装置2410とセカンダリストレージ装置2430では、メモリ9102に、リモートコピープログラム200、スナップショット管理プログラム300及びブロックI/O管理プログラム105が記憶されており、CPU9101で、それらのプログラム200、300及び105が実行される。また、ライマリストレージ装置2410とセカンダリストレージ装置2430には、CPU9101とディスクドライブ111との間にインタフェース2411が設けられている。
本実施形態の構成では、ストレージ装置2410及び2430のCPU9101が、リモートコピープログラム200やスナップショット管理プログラム300を実行し、ネットワーク109を介して、プライマリサイトのスナップショットをセカンダリサイトへリモートコピーする。ストレージ装置2410及び2430間のリモートコピーでは、ネットワーク108とは別の高速なネットワーク109を用いることができるため、高速なデータ転送が可能である。ここで、例えば、ネットワーク108は、IP(Internet Protocol)ネットワークであり、ネットワーク109は、例えばFC(Fibre Channel)ネットワークである。
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
本発明の第一の実施形態におけるストレージシステムの構成の一例を示す図である。 第一の実施形態におけるリモートコピープログラムの構成の一例を示す図である。 第一の実施形態におけるスナップショット管理プログラムの構成の一例を示す図である。 第一の実施形態におけるCOW管理テーブルの一例を示す図である。 第一の実施形態における使用ブロックビットマップの一例を示す図である。 第一の実施形態におけるCOWビットマップの一例を示す図である。 第一の実施形態における差分ビットマップ管理テーブルの一例を示す図である。 第一の実施形態における任意世代のスナップショット間の差分ビットマップの作成例を示す図である。 第一の実施形態におけるスナップショット作成モジュールの動作の一例を示すフローチャートである。 第一の実施形態におけるスナップショット削除モジュールの動作の一例を示すフローチャートである。 第一の実施形態における読み出し処理モジュールの動作の一例を示すフローチャートである。 第一の実施形態における書き込み処理モジュールの動作の一例を示すフローチャートである。 第一の実施形態における差分ビットマップ作成モジュールの動作の一例を示すフローチャートである。 第二の実施形態におけるスナップショット管理プログラムの構成の一例を示す図である。 第二の実施形態におけるマージ差分ビットマップの一例を示す図である。 第二の実施形態におけるスナップショット作成モジュールの動作の一例を示すフローチャートである。 第二の実施形態におけるスナップショット削除モジュールの動作の一例を示すフローチャートである。 第二の実施形態における差分ビットマップ作成モジュールの動作の一例を示すフローチャートである。 第三の実施形態におけるスナップショット管理プログラムの構成の一例を示す図である。 第三の実施形態におけるマージ前のマージ差分ビットマップ管理テーブルの一例を示す図である。 第三の実施形態におけるマージ後のマージ差分ビットマップ管理テーブルの一例を示す図である。 第三の実施形態におけるコピー対象スナップショット選択画面の一例を示す図である。 第三の実施形態における差分ビットマップ作成モジュールの動作の一例を示すフローチャートである。 第四の実施形態におけるストレージシステムの構成の一例を示す図である。
符号の説明
100…プライマリサーバ装置 110…プライマリストレージ装置 112…クライアント装置 120…セカンダリサーバ装置 130…セカンダリストレージ装置 200…リモートコピープログラム 201…差分取得モジュール 202…データ転送モジュール 205…転送用差分ビットマップ 300…スナップショット管理プログラム 301…読み出し処理モジュール 302…書き込み処理モジュール 303…スナップショット作成モジュール 304…スナップショット削除モジュール 305…差分ビットマップ作成モジュール 400…COW管理テーブル 500…使用ブロックビットマップ 600…COWビットマップ 700…差分ビットマップ管理テーブル 1404…マージ基点スナップショットシーケンス番号 1500…マージ差分ビットマップ 2000…マージ差分ビットマップ管理テーブル

Claims (14)

  1. 論理ボリュームと、
    記憶部と、
    前記論理ボリュームのスナップショットを取得するスナップショット取得部と、
    コピー済みである第一の時点のスナップショットから最新の時点となる第Nの時点のスナップショットまでのN個のスナップショットのうち前記第一の時点のスナップショット以外の指定されたスナップショットをコピーするコピー制御部と(Nは三以上の整数)、
    前記N個のスナップショットのうちの二つのスナップショット間の差分を表す差分情報を前記記憶部に取得する差分情報取得部と、
    前記記憶部に記憶されている二以上の前記差分情報を基に、前記第一の時点のスナップショットと前記指定されたスナップショットとの間の差分を表す情報であって、前記指定されたスナップショットのコピーで使用されるコピー用差分情報を生成するコピー用差分情報生成部と、を備え、
    前記二以上の差分情報には、前記第一の時点のスナップショットと、前記N個のスナップショットのうちの前記第一の時点のスナップショット以外のいずれかのスナップショットとの間の差分を表す差分情報が含まれており、
    前記コピー制御部は、前記コピー用差分情報を用いて、前記指定されたスナップショットのコピーを行う、
    記憶制御装置。
  2. 前記二以上の差分情報は、前記論理ボリューム又は前記スナップショットを構成する複数の記憶領域にそれぞれ対応した複数のビットで構成された下記の二つの差分ビットマップであり、
    (1)スナップショットが取得される時点毎にリセットされるビットマップであって、スナップショットが取得されてから次にスナップショットが取得されるまでの間に前記論理ボリュームの更新された記憶領域に対応するビットが更新される第一の差分ビットマップ、
    (2)リセット直前の第一の差分ビットマップのマージ先となる第二の差分ビットマップ、
    退避用の記憶資源と、
    前記論理ボリュームを構成する複数の記憶領域のうちのいずれかを指定したライト要求を受け、前記ライト要求から特定されるライト先記憶領域に対応した、前記第一の差分ビットマップにおけるビットが、未更新を表す値であれば、前記ライト先記憶領域に記憶されているデータを前記退避用の記憶資源に退避し、前記ライト要求に従うデータを、前記ライト先記憶領域に書込み、前記ライト先記憶領域に対応した、前記第一の差分ビットマップにおけるビットを、未更新を表す値から更新済みを表す値に更新するライト処理部と
    を更に備え、
    前記スナップショット取得部は、スナップショットが取得される都度に、その時点での前記第一の差分ビットマップを前記第二の差分ビットマップとの論理和を算出することで、その時点での前記第一の差分ビットマップを前記第二の差分ビットマップにマージし、前記第一の差分ビットマップをリセットし、
    前記指定されたスナップショットが前記第Nの時点のスナップショットである場合、前記コピー用差分情報は、前記第二の差分ビットマップ又はそれの複製である、
    請求項1記載の記憶制御装置。
  3. 前記第一の時点のスナップショットよりも後に作成されたスナップショットを削除する場合、前記第二の差分ビットマップを破棄するスナップショット削除部、を更に備える、
    請求項2記載の記憶制御装置。
  4. スナップショット管理情報が記憶される別の記憶部を備え、
    前記スナップショット管理情報には、スナップショット毎に、前記論理ボリュームを構成する各記憶領域についてのデータのアドレスが含まれており、
    前記ライト処理部は、前記論理ボリュームの前記ライト先記憶領域についての、前記スナップショット管理情報に含まれるアドレスを、前記ライト先記憶領域に記憶されているデータの退避先の記憶領域を表すアドレスに更新し、
    前記コピー用差分情報生成部は、前記指定されたスナップショットが前記第Nの時点のスナップショットでない場合、前記スナップショット管理情報を基に、前記コピー用差分情報を生成する、
    請求項2又は3記載の記憶制御装置。
  5. 前記二以上の差分情報は、前記論理ボリューム又は前記スナップショットを構成する複数の記憶領域にそれぞれ対応した複数のビットで構成された下記の二以上の差分ビットマップであり、
    (1)スナップショットが取得される時点毎にリセットされるビットマップであって、スナップショットが取得されてから次にスナップショットが取得されるまでの間に前記論理ボリュームの更新された記憶領域に対応するビットが更新される第一の差分ビットマップ、
    (2)各時点でのリセット直前の第一の差分ビットマップの複製である各第二の差分ビットマップ、
    退避用の記憶資源と、
    前記論理ボリュームを構成する複数の記憶領域のうちのいずれかを指定したライト要求を受け、前記ライト要求から特定されるライト先記憶領域に対応した、前記第一の差分ビットマップにおけるビットが、未更新を表す値であれば、前記ライト先記憶領域に記憶されているデータ要素を前記退避用の記憶資源に退避し、前記ライト要求に従うデータ要素を、前記ライト先記憶領域に書込み、前記ライト先記憶領域に対応した、前記第一の差分ビットマップにおけるビットを、未更新を表す値から更新済みを表す値に更新するライト処理部と、
    前記N個のスナップショットのうち前記第一の時点のスナップショット以外の複数個のコピー対象のスナップショットの指定をユーザから受け付ける受付部と、
    第二の差分ビットマップをマージする差分マージ部と
    を更に備え、
    前記スナップショット取得部は、スナップショットが取得される都度に、その時点での前記第一の差分ビットマップの複製として前記第二の差分ビットマップを前記記憶部に取得し、前記第一の差分ビットマップをリセットし、
    前記差分マージ部が、指定された各コピー対象のスナップショットについて、コピー対象のスナップショットと直前の時点のスナップショットとの差分を表す第二の差分ビットマップと、そのコピー対象のスナップショットと直前のコピー対象のスナップショット(直前のコピー対象のスナップショットが存在しない場合には前記第一の時点のスナップショット)との間に関わる一以上の第二の差分ビットマップとの論理和を算出することで、前記第二の差分ビットマップに前記一以上の第二の差分ビットマップをマージし、前記論理和の基になった前記一以上の第二の差分ビットマップを破棄する、
    請求項1記載の記憶制御装置。
  6. 前記受付部は、前記N個のスナップショットのうちのコピーの済んでいない複数個のスナップショットにそれぞれ付与されている識別情報を選択可能にユーザに知らせる、
    請求項5記載の記憶制御装置。
  7. 前記二以上の差分情報は、下記の二以上の差分情報であり、
    (1)スナップショットが取得される時点毎にリセットされる情報であって、スナップショットが取得されてから次にスナップショットが取得されるまでの間の前記論理ボリュームの差分を表す第一の差分情報、
    (2)各時点でのリセット直前の第一の差分情報の複製である各第二の差分情報、
    前記コピー用差分情報は、前記指定されたスナップショットとそれの直前の時点のスナップショットとの間の差分を表す前記第二の差分情報に、前記第一の時点のスナップショットと前記指定されたスナップショットとの間に関わる他の一以上の第二の差分情報がマージされた情報である、
    請求項1記載の記憶制御装置。
  8. 前記コピー用差分情報生成部は、前記第二の差分情報に前記他の一以上の第二の差分情報がマージされた後に前記他の一以上の第二の差分情報を破棄する、
    請求項7記載の記憶制御装置。
  9. 前記二以上の差分情報は、下記の二つの差分情報であり、
    (1)スナップショットが取得される時点毎にリセットされる情報であって、スナップショットが取得されてから次にスナップショットが取得されるまでの間の前記論理ボリュームの差分を表す第一の差分情報、
    (2)リセット直前の第一の差分情報のマージ先となる第二の差分情報、
    前記スナップショット取得部は、スナップショットが取得される都度に、その時点での前記第一の差分情報を前記第二の差分情報にマージし、前記第一の差分情報をリセットし、
    前記指定されたスナップショットが前記第Nの時点のスナップショットである場合、前記コピー用差分情報は、前記第二の差分情報又はそれの複製である、
    請求項1記載の記憶制御装置。
  10. 前記第一の時点のスナップショットよりも後に作成されたスナップショットを削除する場合、前記第二の差分ビットマップを破棄するスナップショット削除部、を更に備える、
    請求項9記載の記憶制御装置。
  11. 前記論理ボリュームを構成する各記憶領域についてのデータのアドレスをスナップショット毎に含んだスナップショット管理情報が記憶される別の記憶部と
    退避用の記憶資源と、
    前記論理ボリュームを構成する複数の記憶領域のうちのいずれかを指定したライト要求を受け、前記ライト要求から特定されるライト先記憶領域に記憶されているデータ要素を前記退避用の記憶資源に退避し、前記ライト要求に従うデータ要素を、前記ライト先記憶領域に書込み、前記ライト先記憶領域に対応した、前記第一の差分情報における情報要素を、未更新を表す値から更新済みを表す値に更新し、前記論理ボリュームのライト先記憶領域についての、前記スナップショット管理情報に含まれるアドレスを、前記ライト先記憶領域に記憶されているデータの退避先の記憶領域を表すアドレスに更新するライト処理部と
    を備え、
    前記コピー用差分情報生成部は、前記指定されたスナップショットが前記第Nの時点のスナップショットでない場合、前記スナップショット管理情報を基に、前記コピー用差分情報を生成する、
    請求項10記載の記憶制御装置。
  12. 前記二以上の差分情報は、下記の二以上の差分情報であり、
    (1)スナップショットが取得される時点毎にリセットされる情報であって、スナップショットが取得されてから次にスナップショットが取得されるまでの間の前記論理ボリュームの差分を表す第一の差分情報、
    (2)各時点でのリセット直前の第一の差分情報の複製である各第二の差分情報、
    前記N個のスナップショットのうち前記第一の時点のスナップショット以外の複数個のコピー対象のスナップショットの指定をユーザから受け付ける受付部と、
    第二の差分ビットマップをマージする差分マージ部と
    を備え、
    前記スナップショット取得部は、スナップショットが取得される都度に、その時点での前記第一の差分ビットマップの複製として前記第二の差分ビットマップを前記記憶部に取得し、前記第一の差分ビットマップをリセットし、
    前記差分マージ部が、指定された各コピー対象のスナップショットについて、コピー対象のスナップショットと直前の時点のスナップショットとの差分を表す第二の差分情報に、そのコピー対象のスナップショットと直前のコピー対象のスナップショット(直前のコピー対象のスナップショットが存在しない場合には前記第一の時点のスナップショット)との間に関わる一以上の第二の差分情報をマージし、前記一以上の第二の差分ビットマップを破棄する、
    請求項1記載の記憶制御装置。
  13. コピー済みである第一の時点のスナップショットから最新の時点となる第Nの時点のスナップショットまでのN個のスナップショットのうちの二つのスナップショット間の差分を表す差分情報を記憶部に取得し、
    前記第一の時点のスナップショットと、前記N個のスナップショットのうちの前記第一の時点のスナップショット以外のいずれかのスナップショットとの間の差分を表す差分情報を含んだ、前記記憶部に記憶されている二以上の前記差分情報を基に、前記第一の時点のスナップショットと前記N個のスナップショットのうちの指定されたスナップショットとの間の差分を表す情報であって、前記指定されたスナップショットのコピーで使用されるコピー用差分情報を生成する、
    記憶制御方法。
  14. コピー済みである第一の時点のスナップショットから最新の時点となる第Nの時点のスナップショットまでのN個のスナップショットのうちの二つのスナップショット間の差分を表す差分情報を記憶部に取得し、
    前記第一の時点のスナップショットと、前記N個のスナップショットのうちの前記第一の時点のスナップショット以外のいずれかのスナップショットとの間の差分を表す差分情報を含んだ、前記記憶部に記憶されている二以上の前記差分情報を基に、前記第一の時点のスナップショットと前記N個のスナップショットのうちの指定されたスナップショットとの間の差分を表す情報であって、前記指定されたスナップショットのコピーで使用される転送用差分管理データを生成する、
    コンピュータプログラム。
JP2008190119A 2008-07-23 2008-07-23 記憶制御装置及び方法 Expired - Fee Related JP5156518B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008190119A JP5156518B2 (ja) 2008-07-23 2008-07-23 記憶制御装置及び方法
US12/212,049 US8271753B2 (en) 2008-07-23 2008-09-17 Storage controller and storage control method for copying a snapshot using copy difference information
US13/587,049 US8661215B2 (en) 2008-07-23 2012-08-16 System and method of acquiring and copying snapshots
US13/956,413 US8738874B2 (en) 2008-07-23 2013-08-01 Storage controller and storage control method for snapshot acquisition and remote copying of a snapshot

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008190119A JP5156518B2 (ja) 2008-07-23 2008-07-23 記憶制御装置及び方法

Publications (2)

Publication Number Publication Date
JP2010026939A JP2010026939A (ja) 2010-02-04
JP5156518B2 true JP5156518B2 (ja) 2013-03-06

Family

ID=41569665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008190119A Expired - Fee Related JP5156518B2 (ja) 2008-07-23 2008-07-23 記憶制御装置及び方法

Country Status (2)

Country Link
US (3) US8271753B2 (ja)
JP (1) JP5156518B2 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5156518B2 (ja) 2008-07-23 2013-03-06 株式会社日立製作所 記憶制御装置及び方法
US8799597B2 (en) * 2009-09-02 2014-08-05 International Business Machines Corporation Data copying
JP2012014286A (ja) * 2010-06-29 2012-01-19 Toshiba Corp ストレージシステム、同システムにおけるデータバックアップ方法及びデータバックアッププログラム
JP5565157B2 (ja) * 2010-07-14 2014-08-06 富士通株式会社 データ処理装置、データ処理方法、データ処理プログラムおよびストレージ装置
US8909876B2 (en) 2010-10-28 2014-12-09 International Business Machines Corporation Snapshots in a hybrid storage device comprising a magnetic disk and a solid state disk
US8635187B2 (en) * 2011-01-07 2014-01-21 Symantec Corporation Method and system of performing incremental SQL server database backups
US8935484B2 (en) * 2011-03-31 2015-01-13 Hewlett-Packard Development Company, L.P. Write-absorbing buffer for non-volatile memory
JP6255336B2 (ja) * 2011-04-29 2017-12-27 中天安泰(北京)信息技▲術▼有限公司Antaios (Beijing) Information Technology Co., Ltd. 安全なデータ格納方法およびデバイス
US9026849B2 (en) 2011-08-23 2015-05-05 Futurewei Technologies, Inc. System and method for providing reliable storage
US9335931B2 (en) * 2011-07-01 2016-05-10 Futurewei Technologies, Inc. System and method for making snapshots of storage devices
US9229809B2 (en) 2011-09-11 2016-01-05 Microsoft Technology Licensing Llc Nonvolatile media journaling of verified data sets
US8456972B2 (en) 2011-09-12 2013-06-04 Microsoft Corporation Efficient access to storage devices with usage bitmaps
JP5776474B2 (ja) 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
US9529808B1 (en) 2012-07-16 2016-12-27 Tintri Inc. Efficient and flexible organization and management of file metadata
US9251231B2 (en) * 2012-10-17 2016-02-02 International Business Machines Corporation Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US9817835B2 (en) 2013-03-12 2017-11-14 Tintri Inc. Efficient data synchronization for storage containers
JP2015026112A (ja) 2013-07-24 2015-02-05 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
US10628378B2 (en) 2013-09-03 2020-04-21 Tintri By Ddn, Inc. Replication of snapshots and clones
JP2015079409A (ja) * 2013-10-18 2015-04-23 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 階層管理下の論理ボリュームのスナップショットの作成及び管理
JP6194784B2 (ja) * 2013-12-13 2017-09-13 富士通株式会社 ストレージ制御装置、制御方法および制御プログラム
US9665307B1 (en) * 2013-12-19 2017-05-30 EMC IP Holding Company LLC Incremental continuous data protection
US10176048B2 (en) 2014-02-07 2019-01-08 International Business Machines Corporation Creating a restore copy from a copy of source data in a repository having source data at different point-in-times and reading data from the repository for the restore copy
US11194667B2 (en) 2014-02-07 2021-12-07 International Business Machines Corporation Creating a restore copy from a copy of a full copy of source data in a repository that is at a different point-in-time than a restore point-in-time of a restore request
US10372546B2 (en) 2014-02-07 2019-08-06 International Business Machines Corporation Creating a restore copy from a copy of source data in a repository having source data at different point-in-times
US11169958B2 (en) 2014-02-07 2021-11-09 International Business Machines Corporation Using a repository having a full copy of source data and point-in-time information from point-in-time copies of the source data to restore the source data at different points-in-time
JP6287308B2 (ja) * 2014-02-18 2018-03-07 日本電気株式会社 レプリケーション制御システム、レプリケーション制御方法、及び、レプリケーション制御プログラム
US10387446B2 (en) * 2014-04-28 2019-08-20 International Business Machines Corporation Merging multiple point-in-time copies into a merged point-in-time copy
US10007602B2 (en) * 2014-05-06 2018-06-26 International Business Machines Corporation Flash copy relationship management
TWI559531B (zh) * 2014-08-20 2016-11-21 新唐科技股份有限公司 絕緣閘極雙極性電晶體及其製造方法
US9965216B1 (en) * 2014-09-26 2018-05-08 EMC IP Holding Company LLC Targetless snapshots
CN104506619B (zh) * 2014-12-22 2018-06-05 华为技术有限公司 一种数据备份、恢复方法及其装置、服务器
US9535799B2 (en) * 2015-01-06 2017-01-03 HGST Netherlands B.V. Apparatus, systems, and methods for data recovery
JP6413792B2 (ja) * 2015-01-22 2018-10-31 日本電気株式会社 ストレージシステム
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
JP6319583B2 (ja) * 2015-02-27 2018-05-09 京セラドキュメントソリューションズ株式会社 印刷データ送信装置、印刷データ送信プログラムおよびプルプリントシステム
JP2016162245A (ja) * 2015-03-02 2016-09-05 富士通株式会社 ストレージ制御装置、ストレージ制御方法、及びストレージ制御プログラム
US10108352B2 (en) 2015-03-03 2018-10-23 International Business Machines Corporation Incremental replication of a source data set
JP6202026B2 (ja) * 2015-03-19 2017-09-27 日本電気株式会社 データ管理装置、データ管理方法およびデータ管理プログラム
US10353780B1 (en) * 2015-03-31 2019-07-16 EMC IP Holding Company LLC Incremental backup in a distributed block storage environment
US9998537B1 (en) * 2015-03-31 2018-06-12 EMC IP Holding Company LLC Host-side tracking of data block changes for incremental backup
US9971696B2 (en) * 2015-05-21 2018-05-15 Dell Products L.P. File-based client side cache
US9304864B1 (en) * 2015-06-08 2016-04-05 Storagecraft Technology Corporation Capturing post-snapshot quiescence writes in an image backup
US9977716B1 (en) 2015-06-29 2018-05-22 Veritas Technologies Llc Incremental backup system
CN105335253B (zh) * 2015-10-28 2019-01-15 北京百度网讯科技有限公司 创建虚拟机系统盘快照的方法和装置
US10216939B2 (en) * 2016-04-29 2019-02-26 Wyse Technology L.L.C. Implementing a security solution using a layering system
US10162563B2 (en) * 2016-12-02 2018-12-25 International Business Machines Corporation Asynchronous local and remote generation of consistent point-in-time snap copies
US10423342B1 (en) 2017-03-30 2019-09-24 Amazon Technologies, Inc. Scaling events for hosting hierarchical data structures
US10635542B1 (en) * 2017-04-25 2020-04-28 EMC IP Holding Company LLC Support for prompt creation of target-less snapshots on a target logical device that has been linked to a target-less snapshot of a source logical device
US10331374B2 (en) * 2017-06-30 2019-06-25 Oracle International Corporation High-performance writable snapshots in data storage systems
US10223210B2 (en) 2017-07-29 2019-03-05 International Business Machines Corporation Asynchronous local and remote generation of consistent point-in-time snap copies in consistency groups
US10691551B2 (en) * 2018-07-24 2020-06-23 EMC IP Holding Company LLC Storage system with snapshot generation control utilizing monitored differentials of respective storage volumes
US10824513B1 (en) * 2019-04-30 2020-11-03 EMC IP Holding Company LLC Processing input/output operations while snapshot and extent copy operations are in progress for a logical storage volume
US10921986B2 (en) 2019-05-14 2021-02-16 Oracle International Corporation Efficient space management for high performance writable snapshots
CN110825521B (zh) * 2019-10-21 2022-11-25 新华三信息安全技术有限公司 一种内存使用管理方法、装置及存储介质
CN113220500A (zh) * 2020-02-05 2021-08-06 伊姆西Ip控股有限责任公司 基于逆向差异恢复的恢复方法、设备和程序产品
US11947827B2 (en) * 2020-05-15 2024-04-02 Vmware, Inc. Synchronizing a stale component of a distributed object using a delta component during maintenance
US11762807B2 (en) * 2021-01-21 2023-09-19 Dell Products, L.P. Method and apparatus for deterministically identifying sets of snapshots on a storage system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325140A (ja) * 2000-05-17 2001-11-22 Mitsubishi Electric Corp ファイル転送装置
JP3785074B2 (ja) * 2001-10-05 2006-06-14 富士通株式会社 データ処理システムのバックアップ制御装置及び方法
US7747576B2 (en) * 2002-02-20 2010-06-29 International Business Machines Corporation Incremental update control for remote copy
JP2004258944A (ja) * 2003-02-26 2004-09-16 Hitachi Ltd ストレージ装置およびその管理方法
US7325159B2 (en) * 2004-02-04 2008-01-29 Network Appliance, Inc. Method and system for data recovery in a continuous data protection system
JP4439960B2 (ja) * 2004-03-22 2010-03-24 株式会社日立製作所 ストレージ装置
JP2006209636A (ja) * 2005-01-31 2006-08-10 Hitachi Ltd スナップショット維持方法
JP4733431B2 (ja) * 2005-06-01 2011-07-27 株式会社日立製作所 リモートコピーの初期コピーシステムおよび初期コピー方法ならびに記憶装置
JP4662548B2 (ja) * 2005-09-27 2011-03-30 株式会社日立製作所 スナップショット管理装置及び方法並びにストレージシステム
JP4741371B2 (ja) * 2006-01-05 2011-08-03 株式会社日立製作所 システム、サーバ装置及びスナップショットの形式変換方法
JP4993913B2 (ja) * 2006-01-13 2012-08-08 株式会社日立製作所 記憶制御装置及びそのデータ管理方法
JP4800056B2 (ja) * 2006-02-09 2011-10-26 株式会社日立製作所 ストレージシステム及びその制御方法
JP4856955B2 (ja) * 2006-01-17 2012-01-18 株式会社日立製作所 Nasシステム及びリモートコピー方法
JP2007334709A (ja) * 2006-06-16 2007-12-27 Fujitsu Ltd ストレージ制御装置、ストレージ制御プログラム、ストレージ制御方法
JP4942418B2 (ja) * 2006-08-04 2012-05-30 株式会社日立製作所 計算機システム及びそのスナップショット作成方法
JP2008217209A (ja) * 2007-03-01 2008-09-18 Hitachi Ltd 差分スナップショット管理方法、計算機システム及びnas計算機
JP4972457B2 (ja) * 2007-05-11 2012-07-11 株式会社日立製作所 記憶制御装置、記憶制御装置の制御方法及び情報処理システム
US20090125692A1 (en) * 2007-10-24 2009-05-14 Masayuki Yamamoto Backup system and method
JP5410025B2 (ja) * 2008-03-07 2014-02-05 株式会社日立製作所 ストレージシステム及びその管理方法
JP5156518B2 (ja) 2008-07-23 2013-03-06 株式会社日立製作所 記憶制御装置及び方法

Also Published As

Publication number Publication date
US20100023716A1 (en) 2010-01-28
US8271753B2 (en) 2012-09-18
JP2010026939A (ja) 2010-02-04
US20120311284A1 (en) 2012-12-06
US20130318318A1 (en) 2013-11-28
US8661215B2 (en) 2014-02-25
US8738874B2 (en) 2014-05-27

Similar Documents

Publication Publication Date Title
JP5156518B2 (ja) 記憶制御装置及び方法
JP5775177B2 (ja) クローンファイル作成方法と、それを用いたファイルシステム
JP4550541B2 (ja) ストレージシステム
JP5037811B2 (ja) 遠隔コピー方法及び遠隔コピーシステム
US8762344B2 (en) Method for managing information processing system and data management computer system
US8204858B2 (en) Snapshot reset method and apparatus
US7213116B2 (en) Method and apparatus for mirroring objects between storage systems
JP4903461B2 (ja) 記憶システム及びデータ移行方法並びにサーバ装置
US20060047714A1 (en) Systems and methods for rapid presentation of historical views of stored data
US10169165B2 (en) Restoring data
JP5449524B2 (ja) 計算機とその処理方法および計算機システム
CN107615261B (zh) 多个云环境之间的共享存储的方法和装置
JP2006209636A (ja) スナップショット維持方法
JP6298903B2 (ja) 計算機システム、分散オブジェクト共有方法、エッジノード
US20140250075A1 (en) Using a file system interface to access a remote storage system
WO2012164627A1 (en) Information storage system, snapshot acquisition method, and data storage medium
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
JP2009064160A (ja) 計算機システム、管理計算機及びデータ管理方法
US20140215149A1 (en) File-system aware snapshots of stored data
US10503426B2 (en) Efficient space allocation in gathered-write backend change volumes
JP2006011811A (ja) 記憶制御システム及び記憶制御方法
JP4394467B2 (ja) ストレージシステム、サーバ装置及び先行コピーデータ生成方法
US10732840B2 (en) Efficient space accounting mechanisms for tracking unshared pages between a snapshot volume and its parent volume
JP6640991B2 (ja) データ処理システム及びデータ処理方法
JP6020296B2 (ja) ストレージ装置、コピー制御プログラムおよびコピー制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121005

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: 20121120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121210

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5156518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees