IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特許7190421ストレージシステム及びボリューム複製方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-07
(45)【発行日】2022-12-15
(54)【発明の名称】ストレージシステム及びボリューム複製方法
(51)【国際特許分類】
   G06F 16/11 20190101AFI20221208BHJP
   G06F 3/06 20060101ALI20221208BHJP
   G06F 11/14 20060101ALI20221208BHJP
【FI】
G06F16/11
G06F3/06 304F
G06F11/14 648
【請求項の数】 11
(21)【出願番号】P 2019222253
(22)【出願日】2019-12-09
(65)【公開番号】P2021092915
(43)【公開日】2021-06-17
【審査請求日】2021-05-24
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】山賀 祐典
(72)【発明者】
【氏名】川口 智大
(72)【発明者】
【氏名】出口 彰
(72)【発明者】
【氏名】松下 貴記
(72)【発明者】
【氏名】仁科 匡人
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】国際公開第2017/009941(WO,A1)
【文献】米国特許第8805786(US,B1)
【文献】特開2013-257679(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 3/06
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
コントローラと、
前記コントローラによりサーバシステムに提供される提供ボリュームと、
前記提供ボリュームに格納されるデータを追記して格納する追記ボリュームと、を有し、
前記コントローラは、
サーバシステムから前記提供ボリュームの第1の論理アドレスへの更新データを受領すると、
前記第1の論理アドレスと、前記追記ボリューム内において更新データを格納する第2の論理アドレスとの関係を管理するように第1のアドレス変換情報を更新し、
前記第1の論理アドレスの更新前データを格納する前記追記ボリュームの第3の論理アドレスと、前記第1の論理アドレスとの関係を管理する履歴情報をアドレス変更履歴情報に追加し、
前記提供ボリュームの複製指示を受領すると、サーバシステムから前記提供ボリュームに対する更新データの格納処理を行いながら、
前記アドレス変更履歴情報に複製の開始時点を示す開始マーカを挿入し、
前記提供ボリュームの複製先となる複製先ボリュームを作成し、
前記複製先ボリュームの第2のアドレス変換情報として、前記第1のアドレス変換情報を複製し、
前記アドレス変更履歴情報の前記開始マーカと前記履歴情報とに基づいて、前記第2のアドレス変換情報に複製された、前記第1のアドレス変換情報の複製の開始から完了までの変更を、前記複製の開始時点に戻す、ことを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムにおいて、
前記第1のアドレス変換情報は、前記提供ボリュームの論理アドレスと、前記追記ボリュームの論理アドレスとの関係を管理するものであることを特徴とするストレージシステム。
【請求項3】
請求項2に記載のストレージシステムにおいて、
前記アドレス変更履歴情報は、前記第1のアドレス変換情報が更新された時点を示す情報と、前記第1のアドレス変換情報が更新された箇所を示す情報との関係を管理するものであることを特徴とするストレージシステム。
【請求項4】
請求項3に記載のストレージシステムにおいて、
前記コントローラは、前記第1のアドレス変換情報の前記第2のアドレス変換情報への複製の完了を示す完了マーカを、前記アドレス変更履歴情報に挿入することを特徴とするストレージシステム。
【請求項5】
請求項3に記載のストレージシステムにおいて、
前記コントローラは、前記アドレス変更履歴情報に前記開始マーカを挿入する代わりに、前記開始マーカを複製の開始時点を示す情報と共に管理することを特徴とするストレージシステム。
【請求項6】
請求項3に記載のストレージシステムにおいて、
前記コントローラは、処理対象の前記アドレス変更履歴情報の更新された時点を示す情報が、前記開始マーカが示す時点に到達していない場合、前記アドレス変更履歴情報の次に新しい更新された時点に対応する更新された箇所を示す情報を、復元アドレス管理情報として管理することを特徴とするストレージシステム。
【請求項7】
請求項6に記載のストレージシステムにおいて、
前記コントローラは、前記復元アドレス管理情報に格納された、更新された箇所を示す情報を、前記複製先ボリューム用の前記第2のアドレス変換情報に反映して、前記提供ボリュームの複製を前記複製先ボリュームとして生成することを特徴とするストレージシステム。
【請求項8】
サーバシステムに提供される提供ボリュームと、提供ボリュームに格納されるデータを追記して格納する追記ボリュームを構成するコントローラを有するストレージシステムのボリューム複製方法において、
前記コントローラは、
サーバシステムから前記提供ボリュームの第1の論理アドレスへの更新データを受領すると、
前記第1の論理アドレスと、前記追記ボリューム内において更新データを格納する第2の論理アドレスとの関係を管理するように第1のアドレス変換情報を更新し、
前記第1の論理アドレスの更新前データを格納する前記追記ボリュームの第3の論理アドレスと、前記第1の論理アドレスとの関係を管理する履歴情報をアドレス変更履歴情報に追加し、
前記提供ボリュームの複製指示を受領すると、
サーバシステムから前記提供ボリュームに対する更新データの格納処理を行いながら、
前記アドレス変更履歴情報に複製の開始時点を示す開始マーカを挿入し、
前記提供ボリュームの複製先となる複製先ボリュームを作成し、
前記複製先ボリュームの第2のアドレス変換情報として、前記第1のアドレス変換情報を複製し、
前記アドレス変更履歴情報の前記開始マーカと前記履歴情報とに基づいて、前記第2のアドレス変換情報に複製された、前記第1のアドレス変換情報の複製の開始から完了までの変更を、前記複製の開始時点に戻すことを特徴とするボリューム複製方法。
【請求項9】
請求項8に記載のボリューム複製方法において、
前記コントローラは、前記第1のアドレス変換情報が更新された時点を示す情報と、前記第1のドレス変換情報が更新された箇所を示す情報との関係を前記アドレス変更履歴情報として管理することを特徴とするボリューム複製方法。
【請求項10】
請求項9に記載のボリューム複製方法において、
前記コントローラは、処理対象の前記アドレス変更履歴情報の更新された時点を示す情報が、前記開始マーカが示す時点に到達していない場合、前記アドレス変更履歴情報の次に新しい更新された時点に対応する更新された箇所を示す情報を、復元アドレス管理情報として管理することを特徴とするボリューム複製方法。
【請求項11】
請求項10に記載のボリューム複製方法において、
前記コントローラは、前記復元アドレス管理情報に格納された、更新された箇所を示す情報を、前記複製先ボリューム用の前記第2のアドレス変換情報に反映して、前記提供ボリュームの複製を前記複製先ボリュームとして生成することを特徴とするボリューム複製方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムのボリューム複製技術に関する。
【背景技術】
【0002】
計算機システムの一例として、ストレージシステムがある。ストレージシステムは、例えば、アレイ状に配列した多数のドライブによるRAID(Redundant Array of Inexpensive Disks)のように、冗長構成となるように構成された装置である。ストレージシステムに搭載した多数のドライブにより提供される物理的な記憶領域から、少なくとも1つ以上の論理的な領域(以降、当該領域を論理ボリュームと称する)が形成され、この論理ボリュームがサーバシステムに提供される。
【0003】
近年、基幹業務に使われているストレージシステムの論理ボリュームを複製し、複製データをAnalyticsやTestDev等の2次的な目的で利用することが増えている。特許文献1には、基幹業務に使われている論理ボリューム(本番ボリューム)へのアクセスを継続したまま、所定の時点の本番ボリュームを複製することができるストレージシステムが記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特表2014-507693号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載されたストレージシステムによれば、基幹業務に使われている論理ボリューム(本番ボリューム)へのアクセスを継続したまま、本番ボリュームの複製が可能となる。しかしながら、サーバシステム等からの本番ボリュームのライト処理要求を契機として本番ボリュームのデータを退避するため、ライト処理に対する応答性能が悪化することが考えられる。
【0006】
そこで、本発明の目的は、ボリューム複製処理がオンデマンドに行われても、本番ボリュームの応答性能を維持することができるストレージシステム及びボリューム複製方法を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するため本発明のストレージシステムの一側面は、コントローラと、コントローラによりサーバシステムに提供される提供ボリュームと、提供ボリュームに格納されるデータを追記して格納する追記ボリュームと、を有する。コントローラは、サーバシステムから提供ボリュームの第1の論理アドレスへの更新データを受領すると、第1の論理アドレスと、追記ボリューム内において更新データを格納する第2の論理アドレスとの関係を管理するように第1のアドレス変換情報を更新し、第1の論理アドレスの更新前データを格納する追記ボリュームの第3の論理アドレスと、第1の論理アドレスとの関係を管理する履歴情報をアドレス変更履歴情報に追加する。さらにコントローラは、提供ボリュームの複製指示を受領すると、サーバシステムから提供ボリュームに対する更新データの格納処理を行いながら、アドレス変更履歴情報に複製の開始時点を示す開始マーカを挿入し、提供ボリュームの複製先となる複製先ボリュームを作成し、複製先ボリュームの第2のアドレス変換情報として、第1のアドレス変換情報を複製し、アドレス変更履歴情報の開始マーカと履歴情報とに基づいて、第2のアドレス変換情報に複製された、第1のアドレス変換情報の複製の開始から完了までの変更を、前記複製の開始時点に戻す。
【発明の効果】
【0008】
本発明によれば、ボリューム複製処理がオンデマンドに行われても、本番ボリュームの応答性能を維持することができるストレージシステムを提供することが可能になる。
【図面の簡単な説明】
【0009】
図1】実施例1に係るストレージシステムを含むシステムの構成例を示す図である。
図2】実施例1に係るメモリの構成と、メモリ内のプログラム及び管理情報との例を示す図である。
図3A】実施例1に係るストレージシステム内の論理構成の例を示す図である。
図3B】実施例1に係る提供ボリュームの複製の例を示す図である。
図4】ストレージシステムの動作概要を示す図である。
図5】実施例1に係るVOL管理テーブルの例を示す図である。
図6】実施例1に係るアドレス変換テーブルの例を示す図である。
図7】実施例1に係るアドレス変更履歴テーブルの例を示す図である。
図8】実施例1に係るページ変換テーブルの例を示す図である。
図9】実施例1に係るページ割り当て管理テーブルの例を示す図である。
図10】実施例1に係るサブブロック管理テーブルの例を示す図である。
図11】実施例1に係る追記先検索テーブルの例を示す図である。
図12】実施例1に係るマーカ管理テーブルの例を示す図である。
図13】実施例1に係る復元アドレス管理テーブルの例を示す図である。
図14】実施例1に係るリード処理の流れを示す図である。
図15】実施例1に係るフロントエンドライト処理の流れを示す図である。
図16】実施例1に係る追記処理の流れを示す図である。
図17】実施例1に係るボリューム複製処理の流れを示す図である。
図18】実施例2に係るメモリの構成と、メモリ内のプログラム及び管理情報との例を示す図である。
図19】実施例2に係るアドレス変更履歴テーブルの例を示す図である。
図20】実施例2に係るボリューム複製処理の流れを示す図である。
【発明を実施するための形態】
【0010】
以下の説明において、「インターフェース部」は、1以上のインターフェースでよい。この1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0011】
また、以下の説明において、「メモリ」は、1以上の主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【0012】
また、以下の説明において、「PDEV」は、1以上の補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
【0013】
また、以下の説明において、「記憶部」は、メモリ部とPDEV部の少なくとも一部とのうちの少なくとも1つ(典型的には少なくともメモリ部)である。
【0014】
また、以下の説明において、「プロセッサ」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
【0015】
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
【0016】
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
【0017】
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
【0018】
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。
【0019】
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0020】
また、以下の説明において、「計算機システム」は、1以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、I/O(Input/Output)要求を発行する計算機(例えばサーバシステム)として機能してもよいし、I/O要求に応答してデータのI/Oを行う計算機(例えばストレージ装置)として機能してもよい。
【0021】
すなわち、計算機システムは、I/O要求を発行する1以上のサーバであるサーバシステム、及び、I/O要求に応答してデータのI/Oを行う1以上のストレージ装置であるストレージシステムのうちの少なくとも1つでよい。少なくとも1つの物理的な計算機において、1以上の仮想的な計算機(例えばVM(Virtual Machine))が実行されてもよい。仮想的な計算機は、I/O要求を発行する計算機でもよいし、I/O要求に応答してデータのI/Oを行う計算機でもよい。
【0022】
また、計算機システムは、1以上(典型的には複数)の物理的なノード装置で構成された分散システムでよい。物理的なノード装置は、物理的な計算機である。
【0023】
また、物理的な計算機(例えばノード装置)が所定のソフトウェアを実行することにより、その物理的な計算機、又は、その物理的な計算機を含んだ計算機システムに、SDx(Software-Defined anything)が構築されてもよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)が採用されてもよい。
【0024】
例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、SDSとしてのストレージシステムが構築されてもよい。
【0025】
また、少なくとも1つの物理的な計算機(例えばストレージ装置)が、サーバシステムとしての1以上の仮想的な計算機と、ストレージシステムのストレージコントローラ(典型的には、I/O要求に応答してデータをPDEV部に対して入出力する装置)としての仮想的な計算機とが実行されてもよい。
【0026】
言い換えれば、このような少なくとも1つの物理的な計算機は、サーバシステムの少なくとも一部としての機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
【0027】
また、計算機システム(典型的にはストレージシステム)は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のノード装置での構成でもよいし、PDEV部の少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばノード装置)での構成でもよい。
【0028】
また、以下の説明において、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。
【0029】
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
【0030】
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
【0031】
例えば、記憶領域の単位である「ページ」を特に区別しないで説明する場合には、「ページ406」と記載し、個々のページを区別して説明する場合には、ページの番号を用いて「ページ#0」、「ページ#1」のように記載したり、参照符号を用いて「ページ406a」、「ページ406b」のように記載したりすることがある。
【実施例1】
【0032】
以下、本発明の実施例1について、図1図17を用いて説明する。
【0033】
図1は、ストレージシステム200を含む計算機システムの構成例を示す図である。ストレージシステム200は、複数(又は1つ)のPDEV220と、複数のPDEV220に接続されたコントローラ201とを有する。以下、コントローラ201は、機能的に理解しやすいため、ストレージコントローラとも呼ばれる。
【0034】
PDEV220は、上述の通り、物理的な記憶デバイス(Physical storage Device)を意味し、典型的には、複数の不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)により、冗長構成を持たせた記憶装置である。
【0035】
ストレージコントローラ201は、S-I/F214と、M-I/F215と、P-I/F213と、メモリ212と、プロセッサ211とを有する。S-I/F214、M-I/F215、及びP-I/F213が、インターフェース部の一例である。メモリ212が、記憶部の一例である。
【0036】
S-I/F214は、サーバシステム202とストレージコントローラ201との間のデータのやり取りを仲介する通信インターフェースデバイスである。S-I/F214に、FC(Fibre Channel)ネットワーク206を介して、サーバシステム202が接続される。
【0037】
サーバシステム202は、ストレージコントローラ201に対して、I/O(Input/output)要求先(例えばLUN(Logical Unit Number)のような論理ボリューム番号や、LBA(Logical Block Address)のような論理アドレス)を、指定したI/O要求(ライト要求又はリード要求)を送信する。
【0038】
M-I/F215は、管理システム208とストレージコントローラ201の間のデータのやり取りを仲介する通信インターフェースデバイスである。M-I/F215に、IP(Internet Protocol)ネットワーク207を介して、管理システム208とサーバシステム202が接続される。
【0039】
ネットワーク206及びネットワーク207は、同一の通信ネットワークでもよい。管理システム208は、ストレージシステム200を管理する。
【0040】
P-I/F213は、複数のPDEV220とストレージコントローラ201の間のデータのやり取りを仲介する通信インターフェースデバイスである。P-I/F213には、複数(又は1つ)のPDEV220が接続される。
【0041】
メモリ212は、プロセッサ211が実行するプログラムと、プロセッサ211が使用するデータを記憶する。プロセッサ211は、メモリ212に格納されているプログラムを実行する。実施例1では、例えば、メモリ212及びプロセッサ211の組が二重化されている。
【0042】
図2は、メモリ212の構成と、メモリ212内のプログラム及び管理情報との例を示す図である。メモリ212は、ローカルメモリ301、キャッシュメモリ302、及び共有メモリ304というメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリであってもよい。ローカルメモリ301は、このローカルメモリ301を含むメモリ212と同一組に属するプロセッサ211により使用される。
【0043】
ローカルメモリ301には、リードプログラム311、フロントエンドライトプログラム312、バックエンドライトプログラム313、ボリューム複製プログラム314、が格納される。これらのプログラムについては後述する。
【0044】
キャッシュメモリ302には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
【0045】
共有メモリ304は、この共有メモリ304を含むメモリ212と同一組に属するプロセッサ211、及び異なる組に属するプロセッサ211の両方により使用される。共有メモリ304には、管理情報が格納される。
【0046】
管理情報は、VOL管理テーブル321、アドレス変換テーブル322、アドレス変更履歴テーブル323、ページ変換テーブル324、ページ割当管理テーブル325、サブブロック管理テーブル326、プール管理テーブル327、追記先検索テーブル328、マーカ管理テーブル329、復元アドレス管理テーブル330を含む。
【0047】
これらのテーブルうち、プール管理テーブル327以外については、図を参照して後述する。プール管理テーブル327は、プール403に関する情報を保持するテーブルである。
【0048】
プール管理テーブル327は、例えば、プール403毎に、プール#(プール403の番号)、RG#(プール403の基になっている1以上のRAIDグループの番号)、プール容量(プール403の容量)、及びプール使用容量(プール容量のうち使用されている容量(典型的には、プール403のうちの割当て済ページの総容量))の情報を保持する。
【0049】
図3Aは、ストレージシステム200内の論理構成の例を示す図である。図3Aで示される記憶階層において、以下の説明では、n番目のレイヤを「レイヤn」と呼ぶ(nは自然数)。nが小さい程、上位のレイヤである。ストレージシステム200内の記憶階層には、提供ボリューム400、追記ボリューム401、プール403、及びRG404がある。また、提供ボリューム#m(VOL#が“m”の論理ボリューム(mは0以上の整数))に対応したアドレス変換テーブル322を、「アドレス変換テーブル#m」と言うことがある。
【0050】
提供ボリューム400は、レイヤ1の論理記憶領域であり、サーバシステム202に提供される(サーバシステム202から可視の)の論理ボリュームである。
【0051】
追記ボリューム401は、レイヤ2の論理記憶領域であり、提供ボリューム400に格納されるデータを追記して格納する追記用の論理ボリュームである。追記ボリュームには、提供ボリューム400の同一の論理アドレスに対する更新データと更新前データを、追記ボリュームの異なる論理アドレスに格納することで、提供ボリューム400に書き込まれたデータを追記する。1つの追記ボリューム401には、1つ又は複数の提供ボリューム400が関連付けられる。
【0052】
プール403は、レイヤ3の論理記憶領域であり、1以上のRG404に基づく論理記憶領域である。プール403は、複数のページ406で構成されている。なお、プール403は、少なくとも1つのRG404に代えて、又は加えて、ストレージシステム200の外部の記憶資源に基づいていてもよい。
【0053】
RG404は、レイヤ4の論理記憶領域であり、複数のPDEV220で構成されたRAIDグループの空間である。
【0054】
ストレージコントローラ201は、サーバシステム202からライト要求を受領すると、ライト対象のデータセットCを圧縮し、提供ボリューム400に対応した追記ボリューム401に割り当てられたページ406aに、圧縮されたデータセットC´を追記する。すなわち、ページ406aは、提供ボリューム400に対応した追記ボリューム401に割り当てられたページ406、言い換えれば、提供ボリューム400に間接的に割り当てられたページである。
【0055】
ページ406aには、追記的に圧縮後のデータセットC´が格納される。追記ボリューム401に割り当てられたページ(提供ボリューム400に間接的に割り当てられたページ)を「追記ページ」と言うことができる。
【0056】
ページ406aにおいて、圧縮後のデータセットが占める領域を、以下の説明では「サブブロック407」と言う。
【0057】
アドレス変換テーブル322は、提供ボリューム400毎に設けられている。提供ボリューム#0、#1及び#2があり、故に、アドレス変換テーブル#0、#1及び#2がある。アドレス変換テーブル#0、#1及び#2の各々では、データセットのライト先提供ブロック(提供ブロック408)の論理アドレス(第1の論理アドレス)の参照先が、追記ページにおけるサブブロック407(圧縮後データセットC´が存在するサブブロック407)の論理アドレス(第2の論理アドレス)であることを管理する。
【0058】
図3Bは、本番ボリュームである提供ボリューム#0の複製の例を示す図である。上半分が複製前のボリューム状態、下半分が複製後のボリューム状態である。
【0059】
ストレージコントローラ201は、ボリューム複製処理の有無にかかわらず、更新データの格納先アドレスの変更履歴をアドレス変更履歴テーブル323に記録する。ストレージコントローラ201は、複製指示を受領しても、ライト契機のデータセットの退避処理は実施しない。ライト契機のデータセットの退避処理を行うとサーバシステム202の複製元ボリュームへのライト処理に対する応答性能が劣化するためである。
【0060】
ストレージコントローラ201は、提供ボリューム#0の複製指示を受領すると、ボリューム複製プログラム314が、アドレス変更履歴テーブル323にマーカ(開始マーカ)を挿入する。アドレス変更履歴テーブル323は、提供ボリューム400毎に設けられる。開始マーカ挿入によって、複製指示された時点を示す情報をアドレス変更履歴テーブル323に記録する。その後、複製先の提供ボリューム#2を作成し、アドレス変換テーブル#0を提供ボリューム#2にコピーする(アドレス変換テーブル#0をコピーしたアドレス変換テーブル#2を作成する)。
【0061】
図4を用いて、実施形態のストレージシステムの動作概要について説明する。
ストレージコントローラ201は、ボリューム複製処理の有無にかかわらず、提供ボリューム400のメタデータ(アドレス変換テーブル322(図6参照))の更新履歴をアドレス変更履歴テーブル(図7参照)に記憶する。図4では、理解しやすいように、アドレス変更履歴テーブルを含むメタデータ323aを差分テーブルのように示している。
【0062】
ストレージコントローラ201は、提供ボリュームの内、本番ボリュームの複製指示を受領すると、ボリューム複製プログラム314が、本番ボリュームのメタデータ323a(アドレス変更履歴テーブル)に複製開始マーカを挿入する(410)。
【0063】
その後、複製先ボリューム(#2)を作成し、本番ボリュームのメタデータ(アドレス変換テーブル322)を、更新有無に関わらず複製先ボリュームにコピーする(420)。一方、本番ボリューム(#0)のフロントエンドライトプログラム312は、本番ボリュームへのライト要求を処理し続ける。本番ボリュームのフロントエンドライトプログラム312は、ボリューム複製有無に関わらず、処理動作が同じであるため、提供ボリュームの応答性能を維持できる。
【0064】
ボリューム複製プログラム314が、メタデータ(アドレス変換テーブル322)のコピーを完了する時刻には、追記処理によって本番ボリュームのメタデータ(アドレス変換テーブル322)が更新される(322b)。
【0065】
同時刻における複製先ボリュームのメタデータ(322c)は、本番ボリュームのメタデータ更新有無に関わらず、本番ボリュームのメタデータを複製先ボリュームにコピーするため、メタデータが1つの時点に対応していないデータ整合性がとれていない状態となる。即ち、複製指示を受領時点の本番ボリュームのメタデータ323aとメタデータコピー完了時点の複製先ボリュームのメタデータ(323c)が一致しない。
【0066】
ボリューム複製プログラム314は、複製開始マーカ挿入時点以降のメタデータ変更履歴(アドレス変更履歴テーブル323)を使用して、複製指示時点の本番ボリュームのメタデータの状態(322a)に復元(ロールバック)する。
【0067】
図3Bに戻り、提供ボリュームの複製動作を説明する。提供ボリューム#0はサーバシステム202からのアクセスを継続しているため、アドレス変換テーブル#0をコピーしたアドレス変換テーブル#2は、テーブル内のすべてのエントリが1つの時点の状態を表現しておらず、データ整合性がとれていない状態となる。アドレス変換テーブルのコピー中に、複製元提供ボリュームにライト処理を実行するため、アドレス変換テーブルの内、未コピーのVOL内アドレスに対して更新データを受領すると、更新データを格納する参照先VOL(追記ボリューム)内のアドレスが変更され、一つのアドレス変換テーブルが複数の時点の状態を表することになるからである。
【0068】
アドレス変換テーブル322のコピー処理が完了すると、ストレージシステム200は、提供ボリューム#0のアドレス変更履歴テーブル323を参照し、アドレス変換テーブル#2を整合性のとれた状態に復元(ロールバック)する。すなわち、開始マーカ挿入以後のアドレス変更履歴を基に、アドレス変換テーブルのコピー処理中に更新されてしまったアドレス変換テーブルを更新前の状態に戻すことで、複製指示された時点のアドレス変換テーブルの状態を復元する。
【0069】
以上の提供ボリュームの複製処理により、複製元の提供ボリュームのライト処理契機でデータセットの退避処理をしなくても、提供ボリュームのアクセスを継続したまま、複製指示した時点の提供ボリュームを複製することが可能になる。すなわち、本実施形態では、ライト契機のデータセット退避処理やアドレス変換テーブルの退避処理を実施しないため、提供ボリュームの応答性能を維持することが出来る。
【0070】
以下、管理情報について説明する。
【0071】
図5は、VOL管理テーブル321の例を示す図である。VOL管理テーブル321は、管理システム208からの指示により、ストレージコントローラ201が作成するボリュームを管理する情報である。実施例1では、提供ボリューム400のようにサーバシステム202に提供される論理ボリュームも、追記ボリューム401のようにサーバシステム202に提供されない論理ボリュームも、「VOL」と総称してもよい。また、ボリューム複製により、新たにサーバシステム202に提供される提供ボリューム#2も「VOL」である。
【0072】
VOL管理テーブル321は、VOLに関する情報を保持する。例えば、VOL管理テーブル321は、VOL毎にエントリを有する。各エントリは、VOL#3211、VOL属性3212、VOL容量3213、及びプール#3214といった情報を格納する。以下、1つのVOL(「対象VOL」と呼ぶ)を例に取って説明する。
【0073】
VOL#3211は、対象VOLの番号(識別情報)である。VOL属性3212は、対象VOLの属性の情報である(例えば、提供ボリュームは“提供”、追記ボリュームは“追記”)。VOL容量3213は、対象VOLの容量の情報である。プール#3214は、対象VOLに関連付けられているプール403の番号の情報である。
【0074】
図6は、アドレス変換テーブル322の例を示す図である。アドレス変換テーブル322は、提供ボリューム400毎に設定される。アドレス変換テーブル322は、参照元の論理アドレス(提供ボリューム400の論理アドレス)と参照先の論理アドレス(追記ボリューム401の論理アドレス)との関係を管理する情報であり、必ずしも、テーブル形式である必要はない。
【0075】
例えば、提供ボリューム400のデータが更新されると新たにエントリを追加し、更新データ(新データとも呼ぶ)の参照先の論理アドレスを記録する。各エントリは、VOL内アドレス3221、参照先VOL#3221、参照先VOL内アドレス3223、データサイズ3224といった情報を格納する。以下、1つのブロック408(「対象ブロック」と呼ぶ)を例に取って説明する。
【0076】
VOL内アドレス3221は、提供ボリューム400における対象ブロックの論理アドレス(例えば先頭論理アドレス)の情報である。参照先VOL#3222は、対象ブロックの参照先のVOL(追記ボリューム401)の番号の情報である。
【0077】
参照先VOL内アドレス3223は、対象ブロックの参照先のVOL(追記ボリューム)における対象ブロックに対応する論理アドレス(参照先VOL内の論理アドレス)の情報である。データサイズ3224は、対象ブロックをライト先としたデータセットの圧縮後データセットのサイズの情報である。
【0078】
図7は、アドレス変更履歴テーブル323の例を示す図である。アドレス変更履歴テーブル323は、提供ボリューム400毎に設定される。アドレス変更履歴情報は、アドレス変換テーブル322が更新された時点を示す情報3231と、アドレス変換テーブルが更新された箇所を示す情報3232との関係を、履歴情報として管理する。
【0079】
時刻3231は、アドレス変換テーブル322が更新された時点を示す情報である。
【0080】
更新前のアドレス変換テーブルエントリへのポインタ情報3232は、アドレス変換テーブルが更新された箇所を示す情報(例えば、アドレス変換テーブル322の各エントリを読み出すためのメモリのアドレスのような情報)である。ポインタ情報3232が示す更新前のアドレス変換テーブルエントリは、提供ボリューム400の論理アドレスと、更新前データを格納する追記ボリュームの論理アドレスとの関係を管理し、履歴情報を構成する。
【0081】
アドレス変更履歴テーブル323は、更にマーカが挿入された時刻3231とマーカ#3233の情報を管理される。アドレス変更履歴テーブル323は、一つのテーブル形式である必要はない。
【0082】
アドレス変更履歴テーブル323は、提供ボリューム400のアドレス変換テーブル322が更新されると、新たにエントリをテーブルに追加する。
【0083】
アドレス変更履歴テーブル323は、マーカの挿入指示を受け付けた場合、新たにエントリを追加する。各エントリは、マーカを挿入した時刻3231とマーカ#3233といった情報を格納する。マーカ#は、挿入されたマーカを一意に決定する為の番号である。
【0084】
尚、マーカには、複製の開始時点を示す開始マーカと、アドレス変換テーブル322のコピーの完了を示す完了マーカがある。開始マーカと完了マーカはマーカ#3233によって識別される。識別のために、管理情報として、メモリ212は、別途図示しないマーカ#と開始マーカ或いは完了マーカとの対応を管理するためのテーブルを格納しても良い。
【0085】
図8は、ページ変換テーブル324の例を示す図である。ページ変換テーブル324は、提供ボリューム400毎に、及び追記ボリューム401毎に、設定される。ページ変換テーブル324は、追記ボリューム401における領域(例えば、ページ406a)とプール403における所定領域であるページ406bとの関係に関する情報を保持する。
【0086】
例えば、ページ変換テーブル324は、追記ボリューム401における領域毎にエントリを有する。各エントリは、VOL内アドレス3241、割当フラグ3242、及びページ#3243といった情報を格納する。以下、1つの領域(「対象領域」と呼ぶ)を例に取って説明する。
【0087】
VOL内アドレス3241は、提供ボリューム400の対象領域の論理アドレス(例えば先頭論理アドレス)の情報である。割当フラグ3242は、対象領域にページ406bが割り当てられているか(“割当済”)、割り当てられていないか(“未割当”)の情報が格納される。ページ番号3243は、対象領域に割り当てられているプール403のページ406bの番号の情報である。
【0088】
図9は、ページ割当管理テーブル325の例を示す図である。プールのページと追記ボリュームとの関係を管理する。ページ割当管理テーブル325は、プール403毎に設定される。ページ割当管理テーブル325は、ページ406bとその割当先との関係に関する情報を保持する。例えば、ページ割当管理テーブル325は、ページ406b毎にエントリを有する。
【0089】
各エントリは、ページ#3251、割当フラグ3252、割当先VOL#3254、及び割当先VOL内アドレス3255といった情報を格納する。以下、1つのページ406(「対象ページ」と呼ぶ)を例に取って説明する。ページ#3251は、対象ページの番号の情報である。割当フラグ3252は、対象ページが追記ボリューム401に割り当てられているか(“割当済”)、割り当てられていないか(“未割当”)の情報である。
【0090】
割当先VOL#3254は、対象ページの割当先VOL(追記ボリューム401)の番号の情報である。割当先VOL内アドレス3255は、対象ページの割当先VOLにおける領域の論理アドレス(例えば先頭論理アドレス)の情報である。
【0091】
図10、サブブロック管理テーブル326の例を示す図である。サブブロック管理テーブル326は、追記ボリューム401毎に設定される。サブブロック管理テーブル326は、サブブロック407に関する情報を保持する。例えば、サブブロック管理テーブル326は、サブブロック407毎にエントリを有する。
【0092】
各エントリは、ページ#3261、ページ内アドレス3262、割当フラグ3263、VOL内アドレス3264、及びサブブロックサイズ3265といった情報を格納する。以下、1つのサブブロック407(「対象サブブロック」と呼ぶ)を例に取って説明する。
【0093】
ページ#3261は、対象サブブロックを含むページ406aの番号の情報である。ページ内アドレス3262は、ページ406aにおける対象サブブロックの論理アドレスの情報である。割当フラグ3263は、対象サブブロックが割り当てられているか(“割当済”)、割り当てられていないか(“未割当”)、言い換えれば、対象サブブロックが使用中か未使用かの情報である。
【0094】
VOL内アドレス3264は、対象サブブロックの割当先の論理アドレス(追記ボリューム401における領域の論理アドレス)の情報である。サブブロックサイズ3265は、対象サブブロックのサイズ(対象サブブロックに格納されている圧縮後データセットのサイズ)の情報である。なお、ページ内アドレス3262とVOL内アドレス3264は同じであってもよい。
【0095】
図11は、追記先検索テーブル328の例を示す図である。追記先検索テーブル328は、圧縮後データセットの追記先の情報を保持する。追記先検索テーブル328は、例えば、追記ボリューム401毎にエントリを有する。各エントリは、VOL#3281、追記先アドレス3282、及び終端アドレス3283といった情報を格納する。
【0096】
以下、1つの追記ボリューム401(「対象追記ボリューム」と呼ぶ)を例に取って説明する。VOL#3281は、対象追記ボリュームの番号の情報である。追記先アドレス3282は、対象追記ボリュームにおける追記先の論理アドレス(対象追記ボリュームに割り当てられた追記ページにおける追記先の論理アドレス)の情報である。
【0097】
ここで、追記先アドレス3282は、追記先の先頭の論理アドレスの情報となる。終端アドレス3283は、追記先となり得る論理アドレスの終端の論理アドレスの情報である。
【0098】
追記先の論理アドレスと終端の論理アドレスとの差に従うサイズが、圧縮後データサイズ未満の場合、追記不可のため、追記ページを回収する処理であるガベージコレクション処理を経て、対象追記ボリュームの先頭の論理アドレスが再度追記先とされてよい。
【0099】
具体的には、例えば、ストレージコントローラ201は、対象追記ボリュームの先頭の論理アドレスに近い追記ページから優先的にガベージコレクション処理を行ってもよい。それにより、対象追記ボリュームの先頭の論理アドレスに近い追記ページから優先的に、追記ページの割当が解除され、結果として、対象追記ボリュームの先頭の論理アドレスに近い領域から優先的に、未使用とされていってよい。
【0100】
図12は、マーカ管理テーブル329の例を示す図である。マーカ管理テーブル329は、プール403毎に設定される。マーカ管理テーブル329は、アドレス変更履歴テーブル323のマーカ挿入位置を管理する。
【0101】
例えば、マーカ管理テーブル329の各エントリは、マーカ#3291とアドレス変更履歴テーブルのマーカへのポインタ3292といった情報を格納する。エントリは、ボリューム複製プログラム314などによってアドレス変更履歴テーブルにマーカが挿入されると追加される。
【0102】
マーカ#3291は、プール403内でマーカを一意に識別する番号などの情報である。アドレス変更履歴テーブルのマーカへのポインタ3292は、マーカ#3291のアドレス変更履歴テーブル323の挿入位置のアドレスである。
【0103】
図13は、復元アドレス管理テーブル330の例を示す図である。復元アドレス管理テーブル330は、複製先提供ボリューム400のアドレス変換テーブル322の復元アドレス、すなわち複製元提供ボリューム400の更新前データ(旧データとも呼ぶ)の格納先アドレス3302を保持する。復元アドレス管理テーブル330は、提供ボリューム400毎に作成される。復元アドレス管理テーブル330により、複製元提供ボリュームの複製開始時点のデータを、複製先提供ボリュームとして参照することができる。
【0104】
各エントリは、複製先提供ボリューム400の更新対象のVOL内アドレス3301、復元すべき更新前の参照先VOL内アドレス3302といった情報を格納する。復元アドレス管理テーブル330は、開始マーカに最も近いエントリ(複製元提供ボリュームの特定のVOL内アドレスに対する、開始マーカ挿入直後の更新)をアドレス変更履歴テーブル323から探す際に使用する。
【0105】
参照先VOL内アドレス3302は、複製元アドレス変更履歴テーブル323の同一VOL内アドレス3221への更新履歴の内、最も開始マーカに近い(開始マーカ挿入直後)更新前の参照先VOL内アドレス3223が記録される。
【0106】
図14は、リードプログラム311の流れを示す図である。リードプログラムは、提供ボリューム400に対するリード要求を受け付けた場合に行われる。リードプログラム311は、提供ボリュームに対応したアドレス変換テーブル322を参照する(ステップS3111)。
【0107】
リードプログラム311は、提供ボリュームを構成する各ブロックを、アドレス変換テーブル322に基づいて特定する。その後、リードプログラム311は、特定したブロックに対応したページ406bを、ページ変換テーブル324を基に特定し(ステップS3112)、特定したページ406bから、特定したブロックに対応する圧縮後データセットを読み出し(ステップS3113)、圧縮後データセットを伸張し、伸張後データセットをキャッシュメモリ402に格納する(ステップS3114)。ステップS3114の後、リードプログラム311は、読み出したデータをリード要求に送信元に転送する(ステップS3115)。
【0108】
図15は、フロントエンドライト処理の流れの例を示す図である。フロントエンドライト処理は、提供ボリューム400に対するライト要求を受け付けた場合に行われる。
【0109】
フロントエンドライトプログラム312は、キャッシュヒットしたか否かを判定する(ステップS3121)。ライト要求について、「キャッシュヒット」とは、ライト要求に従うライト先に対応したキャッシュセグメント(キャッシュメモリ302における領域)が確保されていることを意味する。
【0110】
ステップS3121の判定結果が偽の場合(ステップS3121:NO)、フロントエンドライトプログラム312は、キャッシュメモリ302からキャッシュセグメントを確保する(ステップS3122)。
【0111】
ステップS3121の判定結果が真の場合(ステップS3121:YES)、又は、ステップS3122の後、フロントエンドライトプログラム312は、確保されているキャッシュセグメントに、ライト要求に従うライト対象データを書き込む(ステップS3123)。
【0112】
ステップS3123後、フロントエンドライトプログラム312は、GOOD応答(ライト完了報告)を、ライト要求の送信元に返す(ステップS3124)。
【0113】
ステップS3124後、フロントエンドライトプログラム312は、追記処理を行う(ステッS3125)。
【0114】
図16は、追記処理の流れ例を示す図である。フロントエンドライトプログラム312は、ライトデータセットを圧縮し、圧縮後データセットを例えばキャッシュメモ302に格納する(ステップS31251)。
【0115】
フロントエンドライトプログラム312は、圧縮後データセットのサイズ以上の空きが、ライト先ボリュームに対応した追記ボリューム401に割当済のページ406aに有るか否かを判定する(ステップS31252)。
【0116】
この判定をするために、例えば、追記ボリューム401に対応した追記先アドレス3282の情報として登録されたアドレスが特定され、特定されたアドレスが属する領域に割り当てられているページ406aの番号をキーとして、追記ボリューム401に対応したサブブロック管理テーブル326が参照されてもよい。
【0117】
ステップS31252の判定結果が偽の場合(ステップS31252:NO)、フロントエンドライトプログラム312は、ライト先ボリュームに対応した追記ボリューム401に、未割当のページ406を割り当てる(ステップS31253)。
【0118】
ステップ31252の判定結果が真の場合(ステップS31252:YES)、又は、ステップS31253の後、フロントエンドライト312は、追記先とするサブブロックを割り当てる(ステップS31254)。
【0119】
フロントエンドライトプログラム312は、ライトデータセットの圧縮後データセットを追記ボリューム401にコピーする、例えば、圧縮後データセットを、追記ボリューム401用の領域(キャッシュメモリ302における領域)にコピーする(ステップS31445)。
【0120】
フロントエンドライトプログラム312は、圧縮後データセットのライトコマンドをデステージダーティキューに登録し(ステップS31256)、ライト先ボリュームに対応したアドレス変換テーブル322を更新する(ステップS31257)。
【0121】
「デステージダーティキュー」とは、ダーティのデータセット(ページ406に未格納のデータセット)であり圧縮が不要なデータセットのライトコマンドが蓄積されるキューである。デステージダーティキューにあるライトコマンドは、バックエンドライトプログラム313によって、ライト先に関し割り当てられたページ406bに書き込まれる。
【0122】
アドレス変換テーブル322の更新(ステップS31257)は、具体的には、ライト先ブロックに対応した参照先VOL#3222の情報、及び、参照先VOL内アドレス3223の情報が、追記ボリューム401の番号、及び、ステップS31254で割り当てたサブブロックの論理アドレスに変更される。これにより、更新データについて、提供ボリューム400内の論理アドレスと、追記ボリュームの論理アドレスとの対応が管理される。
【0123】
ステップS31257の後、フロントエンドライトプログラム312は、アドレス変更履歴テーブル323を更新する。具体的には、新しいエントリにアドレス変換テーブルの更新時刻3231の情報、及び、更新前のアドレス変換テーブルエントリへのポインタを追加する。これにより、更新データによって書き換えられる旧データを格納する追記ボリュームのアドレス情報が変更履歴として管理される。
【0124】
図17は、ボリューム複製処理の流れの例を示す図である。この提供ボリューム複製処理は、例えば、いずれかの提供ボリューム400を指定したボリューム複製要求を受け付けた場合に行われる。ボリューム複製処理中においても、提供ボリューム400に対して、サーバシステム202からI/O要求は受け続ける。従って、図17で示した処理は、図14から図16に示した処理と並行して行われる。
【0125】
ボリューム複製プログラム314は、複製元として指定された提供ボリューム400のアドレス変更履歴テーブル323に開始マーカを挿入する(ステップS3141)。図4の動作概要では、「(1)マーカ挿入」にあたるステップである。開始マーカを挿入することで、その後に複製元提供ボリューム400に対する更新があっても、開始マーカの挿入後の更新をロールバックし、開始マーカ挿入時点の複製元提供ボリューム400のイメージを、複製先提供ボリュームに複製するためである。
【0126】
ボリューム複製プログラム314は、複製先の提供ボリューム400を作成する(ステップS3142)。具体的には、VOL管理テーブル321のVOL#3211に複製先の提供ボリューム400の番号、VOL属性3212に“提供”、VOL容量3213、及び、プール#に情報をそれぞれ設定し、複製先提供ボリューム400のアドレス変換テーブル322を作成する。図4の動作概要では、複製先ボリュームを作成するステップである。
【0127】
ボリューム複製プログラム314は、複製元提供ボリューム400のアドレス変換テーブル322の情報を、複製先提供ボリューム400用のアドレス変換テーブル322にコピーする(ステップS3143)。図4の動作概要では、「(2)メタデータコピー」にあたるステップである。ステップS3143完了した時点で、ボリューム複製プログラム314は、複製元提供ボリューム400のアドレス変更履歴テーブル323に完了マーカを挿入する(ステップS3144)。完了マーカを挿入することで、開始マーカと完了マーカの間のアドレス変更履歴テーブル323のエントリを特定することができる。つまり、処理対象となるアドレス変更履歴を少なくすることができる。
【0128】
尚、開始マーカと完了マーカは、アドレス変更履歴テーブル323とは別のテーブルにて管理されてもよい。つまり、複製開始後に複製元提供ボリュームに対する更新をアドレス変換テーブルによって特定するために挿入されるため、時刻情報と共に管理されていれば、アドレス変更履歴テーブル323に更新前のアドレス変換テーブルのエントリへのポインタと共に管理される必要はない。
【0129】
アドレス変換テーブルのコピー(ステップS3143)完了後の複製先提供ボリューム400のアドレス変換テーブル322は、複製元提供ボリューム400のアクセスを継続したままアドレス変換テーブル322をコピーするため、テーブル内のすべてのエントリが1つの時点の状態を表現しておらず、データ整合性がとれていない状態となる。
【0130】
ボリューム複製プログラム314は、上記状態の複製先提供ボリューム400のアドレス変換テーブル322を、複製要求を受け付けた時刻の状態に復元(ロールバック)する。図4の動作概要では、メタデータコピー完了時点の複製先ボリュームのメタデータを、リストア完了時点、すなわち、複製指示時点の本番ボリュームのメタデータ状態に復元(ロールバック)することである。
【0131】
ボリューム複製プログラム314は、開始マーカに最も近い(開始マーカの挿入直後)エントリをアドレス変更履歴テーブル323から探すために、復元アドレス管理テーブル330を作成する(ステップS3145)。すなわち、復元アドレス管理テーブル330は、複製元アドレス変更履歴テーブル323の同一VOL内アドレス3221への更新履歴の内、最も開始マーカに近い更新前の参照先VOL内アドレス3223が記録される。
【0132】
ボリューム複製プログラム314は、マーカ管理テーブル329を参照し、複製元アドレス変更履歴テーブルの完了マーカを参照する(ステップS3146)。完了後のアドレス変更履歴は考慮する必要がなく、処理されるべきエントリの数を限定するためである。
【0133】
ボリューム複製プログラムは、開始マーカに未到達か否か判定する(ステップS3147)。
【0134】
ステップS3147の判定結果が真の場合(ステップS3147:YES)、ボリューム複製プログラム314は、アドレス変更履歴テーブル323の更新時刻3231が次に古いアドレス変更履歴を選択する(ステップS3148)。尚、開始マーカと完了マーカの間の更新履歴を全て選択する代わりに、複製元アドレス変換テーブルと複製先アドレス変換テーブルとを比較し、共通する更新履歴について、ステップS3148を実行することもできる。この場合、処理すべきアドレス更新履歴を少なくすることができる。
【0135】
ボリューム複製プログラムは、ステップS3148で選択されたアドレス変更履歴テーブル323の更新前のアドレス変換テーブルエントリへのポインタ3232を参照し、複製元提供ボリューム400のアドレス変換テーブル322の参照先VOL内アドレス3223を復元アドレス管理テーブル330にコピーする(ステップS3149)。
【0136】
ステップS3147の判定結果が偽の場合(ステップS3147:NO)、複製元アドレス変更履歴テーブル323の開始マーカに到達したため、ボリューム複製プログラム314は、復元アドレス管理テーブル330の参照先VOL内アドレス3302を複製先アドレス変換テーブル322にコピーする。
【0137】
以上の通り、複製元提供ボリュームのアドレス変換テーブルをライト契機でデータ整合性を保ってコピーせず、複製元提供ボリュームのアドレス変換テーブルのコピーが完了してから、所定の時点の複製元提供ボリュームのアドレス変換テーブルの状態に復元することができる。
【実施例2】
【0138】
以下、本発明の実施例2について、図18図20を用いて説明する。
【0139】
実施例1では、ボリューム複製要求を受け付けた時刻(開始マーカを挿入した時刻)の複製元提供ボリュームの状態を復元した。実施例2では、アドレス変換テーブルのコピー(ステップ314-3)が完了した時点を復元する方法について説明する。
【0140】
図18は、メモリ212の構成と、メモリ212内のプログラム及び管理情報との例を示す図である。図2とは、ボリューム複製プログラム315とアドレス変更履歴テーブル331が異なる。
【0141】
ローカルメモリ301には、リードプログラム311、フロントエンドライトプログラム312、バックエンドライトプログラム313、ボリューム複製プログラム315、が格納される。
【0142】
キャッシュメモリ302には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
【0143】
共有メモリ304は、この共有メモリ304を含むメモリ212と同一組に属するプロセッサ211、及び異なる組に属するプロセッサ211の両方により使用される。共有メモリ304には、管理情報が格納される。
【0144】
管理情報は、VOL管理テーブル321、アドレス変換テーブル322、アドレス変更履歴テーブル331、ページ変換テーブル324、ページ割当管理テーブル325、サブブロック管理テーブル326、プール管理テーブル327、追記先検索テーブル328、マーカ管理テーブル329、復元アドレス管理テーブル330を含む。
【0145】
図19は、実施例2のアドレス変更履歴テーブル331の例を示す図である。
アドレス変更履歴テーブル331は、提供ボリューム400毎に設定される。アドレス変更履歴テーブル331は、提供ボリューム400のアドレス変換テーブル322が更新された時刻と更新後のアドレス変換テーブルエントリへのポインタ情報、及び、マーカが挿入された時刻3311とマーカ#3313の情報を保持する。
【0146】
図20は、実施例2のボリューム複製処理の流れの例を示す図である。ボリューム複製プログラム315は、複製元として指定された提供ボリューム400のアドレス変更履歴テーブル323に開始マーカを挿入する(ステップS3151)。
【0147】
ボリューム複製プログラム315は、複製先の提供ボリューム400を作成する。(ステップS3152)。
【0148】
ボリューム複製プログラム315は、複製元提供ボリューム400のアドレス変換テーブル322の情報を、複製先提供ボリューム400のアドレス変換テーブル322にコピーする(ステップS3153)。ステップS3153完了後、ボリューム複製プログラム315は、複製元提供ボリューム400のアドレス変更履歴テーブル323に完了マーカを挿入する(ステップS3154)。
【0149】
アドレス変換テーブルのコピー(ステップS3153)完了後の複製先提供ボリューム400のアドレス変換テーブル322は、複製元提供ボリューム400のアクセスを継続したままアドレス変換テーブル322をコピーするため、実施例1と同様、テーブル内のすべてのエントリが1つの時点の状態を表現しておらず、データ整合性がとれていない状態となる。
【0150】
ボリューム複製プログラム315は、上記状態の複製先提供ボリューム400のアドレス変換テーブル322をアドレス変換テーブルコピー(ステップS3153)完了時刻の状態に復元する。ボリューム複製プログラム315は、複製完了マーカに最も近いエントリをアドレス変更履歴テーブル331から探すために、復元アドレス管理テーブル330を作成する(ステップS3155)。すなわち、復元アドレス管理テーブル330は、複製元アドレス変更履歴テーブル323の同一VOL内アドレス3221への更新履歴の内、最も複製完了マーカに近い更新後の参照先VOL内アドレス3223が記録される。
【0151】
ボリューム複製プログラム315は、マーカ管理テーブル329を参照し、複製元アドレス変更履歴テーブルの完了マーカを参照する(ステップS3146)。
【0152】
ボリューム複製プログラム315は、複製完了マーカに未到達か否か判定する(Sステップ3157)。
【0153】
ステップS3157の判定結果が真の場合(ステップS3157:YES)、ボリューム複製プログラム315は、アドレス変更履歴テーブル323の更新時刻3231が次に新しいアドレス変更履歴を選択する(ステップS3158)。
【0154】
ボリューム複製プログラムは、ステップS3158で選択されたアドレス変更履歴テーブル323の更新後のアドレス変換テーブルエントリへのポインタ3232を参照し、複製元提供ボリューム400のアドレス変換テーブル322の参照先VOL内アドレス3223を復元アドレス管理テーブル330にコピーする(ステップS3159)。
【0155】
ステップS3157の判定結果が偽の場合(ステップS3157:NO)、複製元アドレス変更履歴テーブル323の完了マーカに到達したため、ボリューム複製プログラム315は、復元アドレス管理テーブル330の参照先VOL内アドレス330-2を複製先アドレス変換テーブル322にコピーする。
【0156】
以上、一実施形態を説明したが、これは本発明の1つの例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。例えば、上述の実施形態では、データの移動を伴わない仮想的なボリューム複製の処理を説明したが、仮想的に複製されたボリュームは、一般的にスナップショットとして利用される場合もある。
【0157】
スナップショットとはある時点のボリュームの状態を保存するものであるが、特にバックアップ用途でスナップショットを利用する場合は、必ずしも、複製先が提供ボリュームである必要はない。サーバシステム202からスナップショットデータの読み出し又は書き込みを行う時に、提供ボリュームが割当てられればよい。
【0158】
本発明は、他の種々の形態でも実施することが可能である。例えば、ライト要求のようなI/O要求の送信元(I/O元)は、上述の実施形態では、サーバシステム202であるが、ストレージシステム200における図示しないプログラム(例えば、VM上で実行されるアプリケーションプログラム)であってもよい。
【符号の説明】
【0159】
200:ストレージシステム
201:ストレージコントローラ
202:サーバシステム
206:ネットワーク
207:ネットワーク
208:管理システム
211:プロセッサ
212:メモリ
213:P-I/F
214:S-I/F
215:M-I/F
220:PDEV
301:ローカルメモリ
302:キャッシュメモリ
304:共有メモリ
400:提供ボリューム
401:追記ボリューム
403:プール
404:RG
406:ページ
407:サブブロック
408:ブロック
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20