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

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

▶ 日立ヴァンタラ株式会社の特許一覧

特許7570479計算機システム及び計算機システムの制御方法
<>
  • 特許-計算機システム及び計算機システムの制御方法 図1
  • 特許-計算機システム及び計算機システムの制御方法 図2
  • 特許-計算機システム及び計算機システムの制御方法 図3
  • 特許-計算機システム及び計算機システムの制御方法 図4
  • 特許-計算機システム及び計算機システムの制御方法 図5
  • 特許-計算機システム及び計算機システムの制御方法 図6
  • 特許-計算機システム及び計算機システムの制御方法 図7
  • 特許-計算機システム及び計算機システムの制御方法 図8
  • 特許-計算機システム及び計算機システムの制御方法 図9
  • 特許-計算機システム及び計算機システムの制御方法 図10
  • 特許-計算機システム及び計算機システムの制御方法 図11
  • 特許-計算機システム及び計算機システムの制御方法 図12
  • 特許-計算機システム及び計算機システムの制御方法 図13
  • 特許-計算機システム及び計算機システムの制御方法 図14
  • 特許-計算機システム及び計算機システムの制御方法 図15
  • 特許-計算機システム及び計算機システムの制御方法 図16
  • 特許-計算機システム及び計算機システムの制御方法 図17
  • 特許-計算機システム及び計算機システムの制御方法 図18
  • 特許-計算機システム及び計算機システムの制御方法 図19
  • 特許-計算機システム及び計算機システムの制御方法 図20
  • 特許-計算機システム及び計算機システムの制御方法 図21
  • 特許-計算機システム及び計算機システムの制御方法 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-10
(45)【発行日】2024-10-21
(54)【発明の名称】計算機システム及び計算機システムの制御方法
(51)【国際特許分類】
   G06F 3/06 20060101AFI20241011BHJP
   G06F 11/20 20060101ALI20241011BHJP
【FI】
G06F3/06 304F
G06F3/06 301W
G06F3/06 301X
G06F11/20 666
【請求項の数】 14
(21)【出願番号】P 2023141244
(22)【出願日】2023-08-31
(62)【分割の表示】P 2021031882の分割
【原出願日】2021-03-01
(65)【公開番号】P2023155450
(43)【公開日】2023-10-20
【審査請求日】2023-08-31
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】出口 彰
(72)【発明者】
【氏名】横井 伸浩
(72)【発明者】
【氏名】井原 央翔
【審査官】田名網 忠雄
(56)【参考文献】
【文献】米国特許出願公開第2008/0040402(US,A1)
【文献】米国特許第07797358(US,B1)
【文献】特開2014-142913(JP,A)
【文献】特開2018-129074(JP,A)
【文献】国際公開第2019/213058(WO,A1)
【文献】特開2008-269050(JP,A)
【文献】特表2012-519318(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
G06F 16/10-16/188
G06F 11/10-11/20
(57)【特許請求の範囲】
【請求項1】
正ボリュームを有する正ストレージシステムと、
前記正ボリュームとボリュームペアを構成する副ボリュームを有する副ストレージシステムと
を備え、
前記正ストレージシステムが、複数個のジャーナルデータの圧縮であるまとめ圧縮を行い、
まとめ圧縮されたデータであるまとめ圧縮データと、当該まとめ圧縮データに対応したメタデータとが、前記正ストレージシステムから前記副ストレージシステムへの転送対象であり、
ジャーナルは、ジャーナルデータと、当該ジャーナルデータに関連付けられたメタデータとで構成されており、
ジャーナルデータは、前記正ボリュームに格納されるデータの複製であり、
前記副ストレージシステムが、一個以上のまとめ圧縮データを伸張することで複数個のジャーナルデータを取得し、当該複数個のジャーナルデータを前記副ボリュームにライトする、
計算機システム。
【請求項2】
前記副ストレージシステムが、前記複数個のジャーナルデータを、複数個のメタデータそれぞれが表すライト順番に従い前記副ボリュームにライトする、
請求項1に記載の計算機システム。
【請求項3】
前記正ストレージシステムと副ストレージシステムとの一方または両方は、クラウド上のシステムである、
請求項1に記載の計算機システム。
【請求項4】
前記正ストレージシステムと前記副ストレージシステムの少なくとも一方は、前記正ストレージシステムと前記副ストレージシステムの間の転送を行うネットワークインタフェースを有し、
前記ネットワークインタフェースが、前記圧縮または前記伸張の少なくともいずれかを行う、
請求項1に記載の計算機システム。
【請求項5】
ジャーナルI/O要求毎に、前記正ストレージシステムから前記副ストレージシステムに、N個のジャーナルにおけるN個(Nは以上の整数)のメタデータと、前記まとめ圧縮データの少なくとも一部であり前記N個のメタデータに対応したデータとが転送され、
ジャーナルI/O要求は、前記副ストレージシステムから前記正ストレージシステムへのジャーナルのリード要求と、前記正ストレージシステムから前記副ストレージシステムへのジャーナルのライト要求とのいずれかである、
請求項1に記載の計算機システム。
【請求項6】
ジャーナルI/O要求毎に、前記正ストレージシステムが、N個のジャーナルデータをリードし、当該N個のジャーナルデータをまとめ圧縮し、
前記N個のメタデータに対応したデータは、当該まとめ圧縮されたN個のジャーナルデータである、
請求項5に記載の計算機システム。
【請求項7】
前記正ストレージシステムが、前記副ストレージシステムへの転送の都度に、前記副ストレージシステムへ未転送の複数個のジャーナルを特定し、当該特定された複数個のジャーナルについて前記まとめ圧縮を行い、
前記まとめ圧縮が行われた各転送について、前記転送対象における前記複数個のメタデータの各々が、圧縮がされていることを意味する情報と、前記まとめ圧縮データのサイズである圧縮後サイズを表す情報とを含み、
前記転送対象におけるメタデータが、圧縮がされていることを意味する情報を含んでいる場合、前記副ストレージシステムが、当該メタデータが表す圧縮後サイズのまとめ圧縮データを伸張する、
請求項1に記載の計算機システム。
【請求項8】
前記正ストレージシステムの圧縮機能が受け付け可能なデータサイズの上限である受付サイズが決まっており、
前記正ストレージシステムが、前記複数個のジャーナルデータを、前記受付サイズ以下のサイズである分割サイズで分割し、
前記圧縮機能が、前記複数個のジャーナルデータが前記分割サイズで分割されることにより得られた複数個のデータセグメントをそれぞれ圧縮することで複数個の圧縮データセグメントを出力し、
前記まとめ圧縮データは、前記複数個の圧縮データセグメントで構成されたデータである、
請求項1に記載の計算機システム。
【請求項9】
圧縮データセグメントに対応したメタデータが、当該圧縮データセグメントの圧縮後サイズを表し、
前記副ストレージシステムが、前記まとめ圧縮データを、圧縮データセグメントのメタデータから特定される圧縮後サイズで分割することにより、前記複数個の圧縮データセグメントを取得し、当該複数個の圧縮データセグメントの各々を伸張する、
請求項8に記載の計算機システム。
【請求項10】
前記圧縮機能は、圧縮のアクセラレータである、
請求項9に記載の計算機システム。
【請求項11】
前記正ボリュームに前記副ボリュームがペア相手として関連付けられた場合に、前記副ボリュームの内容を前記正ボリュームの内容に一致させる形成コピーが行われるようになっており、
前記形成コピーにおいて、前記正ストレージシステムから前記副ストレージシステムへの転送の都度に、前記アクセラレータが、各データセグメントを圧縮する、
請求項10に記載の計算機システム。
【請求項12】
前記正ストレージシステムが、前記正ボリュームを指定したライト要求毎に、当該ライト要求に付随するデータを前記正ボリュームにライトすることと、当該データの複製であるジャーナルデータと当該ジャーナルデータのライト順番を含むメタデータとを格納することとを含んだライト処理を行い、
前記正ストレージシステムが、前記正ボリュームを指定した各ライト要求について、当該ライト要求の完了応答を、当該ライト要求に付随するデータのジャーナルデータの格納及びまとめ圧縮を待たずに行う、
請求項1に記載の計算機システム。
【請求項13】
前記副ストレージシステムが、ジャーナルリード要求を正ストレージシステムに送信し、
当該ジャーナルリード要求に応答して、前記正ストレージシステムから前記転送対象が前記副ストレージシステムに転送され、
前記転送対象における前記複数個のメタデータの各々が、圧縮がされていることを意味する情報を含み、
前記副ストレージシステムが、前記転送対象が圧縮されている場合、前記まとめ圧縮データを伸張し、伸張されたデータを、前記副ボリュームにライトする、
請求項1に記載の計算機システム。
【請求項14】
正ボリュームを有する正ストレージシステムと、前記正ボリュームとボリュームペアを構成する副ボリュームを有する副ストレージシステムとが行う、計算機システムの制御方法であって、
前記正ストレージシステムにより、複数個のジャーナルデータの圧縮であるまとめ圧縮を行い、
まとめ圧縮されたデータであるまとめ圧縮データと、当該まとめ圧縮データに対応した複数個のメタデータとが、前記正ストレージシステムから前記副ストレージシステムへの転送対象であり、
ジャーナルは、ジャーナルデータと、当該ジャーナルデータに関連付けられたメタデータとで構成されており、
ジャーナルデータは、前記正ボリュームに格納されるデータの複製であり、
前記副ストレージシステムにより、一個以上のまとめ圧縮データを伸張することで複数個のジャーナルデータを取得し、当該複数個のジャーナルデータを前記副ボリュームにライトする、
計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、正ストレージシステムから副ストレージシステムへのデータのリモートコピーに関する。
【背景技術】
【0002】
正ストレージシステムから副ストレージシステムへのデータのリモートコピーに関する技術が知られている。リモートコピーのためにストレージシステム間で転送されるデータの量が少ないことが好ましい。一例として、ストレージシステム間の通信帯域の基になるリソース削減に貢献することができるためである。
【0003】
特許文献1に開示の技術によれば、転送対象のデータが、圧縮データである。具体的には、正ストレージシステムが、ライト対象のデータを圧縮して格納し、格納された圧縮データを伸張することなく副ストレージシステムに転送する。
【先行技術文献】
【特許文献】
【0004】
【文献】特表2014-524601号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示の技術によれば、正ストレージシステムにおいて圧縮される単位も転送される単位もライト単位である。このため、RPO(Recovery Point Objective)が短いことが期待されるが、転送対象データの削減効果(圧縮効果)が高いとは限らない。
【0006】
転送されるデータの量が削減されたリモートコピーとして、差分リモートコピーがある。具体的には、正ストレージシステムが、周期的に、副ストレージシステムとの間での差分データのみを副ストレージシステムに転送する。所定の周期において正ストレージシステムにデータが複数回書き込まれても、書き込まれたデータのライト先とサイズが同じであれば、転送対象のデータは、最後に書き込まれたデータのみでよい。このため、転送対象のデータの削減効果が高い(正ストレージシステムに書き込まれたデータの総容量に対する副ストレージへ転送したデータの総容量の割合である削減率が小さい)ことが期待されるが、RPOが、データ転送の周期に依存するため悪化することが懸念される。周期的に、正ストレージでスナップショットを取得しスナップショット間の差分データを正ストレージシステムと副ストレージシステムの差分データとして転送することもできる。
【課題を解決するための手段】
【0007】
ボリュームを有する正ストレージシステムと、正ボリュームとボリュームペアを構成する副ボリュームを有する副ストレージシステムとが備えられる。正ストレージシステムが、複数個のジャーナルにおける複数個のジャーナルデータの少なくとも一部であり一個のジャーナルデータのサイズより大サイズのデータの圧縮であるまとめ圧縮を行う。まとめ圧縮されたデータであるまとめ圧縮データが、正ストレージシステムから副ストレージシステムへの転送対象である。ジャーナルは、ジャーナルデータと、当該ジャーナルデータのライト順番を含むメタデータとを含む。ジャーナルデータは、正ボリュームにライトされたデータの複製である。副ストレージシステムが、一個以上のまとめ圧縮データを伸張することで複数個のジャーナルデータを取得し、当該複数個のジャーナルデータを、複数個のメタデータそれぞれが表すライト順番に従い副ボリュームにライトする。
【発明の効果】
【0008】
本発明によれば、短いRPOの維持と転送対象データの削減効果向上との両方を実現することができる。
【図面の簡単な説明】
【0009】
図1】第1の実施形態に係るシステム全体の構成例を示す。
図2】ストレージシステムと保守端末の構成例を示す。
図3】正ストレージシステムから副ストレージシステムへのリモートコピーの概要の一例を示す。
図4】ストレージシステムのメモリの構成例を示す。
図5】SEQ#テーブルの構成例を示す。
図6】JNCBの構成例を示す。
図7】距離テーブルの構成例を示す。
図8】必要多重度テーブルの構成例を示す。
図9】正ストレージシステムが行うライト処理の処理フローを示す。
図10】方式1に従うJNL転送処理の処理フローを示す。
図11】距離入力プログラムの処理フローを示す。
図12】JNLリードスケジュールプログラムの処理フローを示す。
図13】方式2に従うJNL転送処理の処理フローを示す。
図14】JNL圧縮プログラムの処理フローを示す。
図15】リストアプログラムの処理フローを示す。
図16】SmartNICの構成例を示す。
図17】第2の実施形態に係るJNL転送処理の処理フローを示す。
図18】JNCBと圧縮後のデータとの関係の一例を示す。
図19】第3の実施形態に係るJNCBの構成例を示す。
図20】第3の実施形態に係るJNL転送処理の処理フローを示す。
図21】第3の実施形態に係る形成コピーの処理フローを示す。
図22】ケースとJNCB内の情報との関係を示す。
【発明を実施するための形態】
【0010】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0011】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0012】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
【0013】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【0014】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0015】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0016】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0017】
また、「ボリューム」(VOL)は、論理的な記憶領域である。ボリュームは、実体的なボリューム(RVOL)であってもよいし、仮想的なボリューム(VVOL)であってもよい。「RVOL」は、記憶装置に基づくVOLでよく、「VVOL」は、容量仮想化技術(典型的にはThin Provisioning)に従うボリュームでよい。
【0018】
また、「ストレージシステム」は、複数の記憶デバイスと複数の記憶デバイスに対するデータのI/Oを行うコントローラとを備えたシステムでもよいし、一つ以上の物理的な計算機を含んだシステムでよい。後者のシステムは、例えば、一つ以上の物理的な計算機の各々が所定のソフトウェアを実行することにより、当該一つ以上の物理的な計算機がSDx(Software-Defined anything)として構築されてもよい。SDxとしては、例えば、SDS(Software-Defined Storage)又はSDDC(Software-defined Datacenter)を採用することができる。
【0019】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。
[第1の実施形態]
【0020】
図1は、第1の実施形態に係るシステム全体の構成例を示す。
【0021】
正ホスト100Aがネットワーク220A(例えばフロントエンドのネットワーク)を介して正ストレージシステム200Aに接続されている。副ホスト100Bがネットワーク220B(例えばフロントエンドのネットワーク)を介して副ストレージシステム200Bに接続されている。正ストレージシステム200Aと副ストレージシステム200Bがネットワーク220C(例えばバックエンドのネットワーク)を介して接続されている。ネットワーク220A~220Cのうちの二つ以上のネットワークが共通でもよいし、ネットワーク220A~220Cのうちの少なくとも一つが専用線でもよい。
【0022】
正サイト(正ホスト100A及び正ストレージシステム200Aを含んだサイト)と副サイト(副ホスト100B及び副ストレージシステム200Bを含んだサイト)は、地理的に離れていてよい。正ホスト100Aは、インターフェース装置51A、メモリ52A及びCPU(Central Processing Unit)53Aを有する計算機である。副ホスト100Bは、インターフェース装置51B、メモリ52B及びCPU53Bを有する計算機である。なお、正ホスト100Aが、仮想的な装置(例えば、VM(Virtual Machine)又はコンテナ)であってもよい。同様に、副ホスト100Bが、仮想的な装置であってもよい。また、正ホスト100Aが、仮想的な装置であり正ストレージシステム200Aに備えられてよいし、同様に、副ホスト100Bが、仮想的な装置であり副ストレージシステム200Bに備えられてよい(つまり、ストレージシステム200A及び200Bの少なくとも一つが、いわゆるハイパーコンバージドのストレージシステムでもよい)。また、副ホスト100Bはなくてもよい。また、例えばストレージシステム200A及び200B間の距離が短い場合、正ホスト100Aが正ストレージシステム200Aに加えて副ストレージシステム200Bに接続されていてもよい。副ホスト100Bが副ストレージシステム200Bに加えて正ストレージシステム200Aに接続されてもよい。ストレージシステム200A、200Bの両方、または、片方が、コロケーションに設置されたシステムでもよいし、クラウドコンピューティングサービス(ストレージサービス)を提供するクラウド上のシステムでもよい。
【0023】
正ホスト100Aが、業務処理を実行するソフトウェア(例えばDBMS(DataBase Management System))を実行し、データのライト要求を正ストレージシステム200Aに送信する。正ストレージシステム200Aが、当該ライト要求に従いデータを格納する。ストレージシステム200A及び200B間でリモートコピーが行われる。すなわち、副ストレージシステム200Bが、正ストレージシステム200Aからデータを受信し受信したデータを格納する。正ホスト100A又は正ストレージシステム200Aに障害があったときにディザスタリカバリが行われる。これにより、副ホスト100Bは、副ストレージシステム200B内のデータを利用して正ホスト100Aの業務処理を継続することができる。なお、リモートコピーシステムは、ストレージシステム200A及び200Bを含んだシステムである。
【0024】
ネットワーク220Cに接続された保守端末270が存在する。保守端末270は、ストレージシステム200の保守又は管理のために、ストレージシステム200A及び200Bの少なくとも一つと通信する。保守端末270はネットワーク220Aに接続され、正ストレージシステム200Aを保守してもよい。また、別の保守端末270がネットワーク200Bに接続され、ストレージシステム200Bを保守してもよい。
【0025】
図2は、ストレージシステム200と保守端末270の構成例を示す。
【0026】
ストレージシステム200は、ドライブ群(複数のドライブ218)と、ドライブ群に対してデータのI/Oを行う冗長化されたコントローラ210とを有する。ドライブ218は、永続記憶デバイスの一例である。ドライブ群が、一つ以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成してよい。ドライブ群に基づきボリューム26が提供される。
【0027】
コントローラ210は、FE-IF(フロントエンドインターフェース)211と、BE-IF(バックエンドインターフェース)214と、M-IF(管理インターフェース)215と、アクセラレータ217と、メモリ213と、それらに接続されたプロセッサ212とを備える。IF211、214及び215が、インターフェース装置の一例である。
【0028】
FE-IF211は、ホスト100と通信するインターフェースデバイスである。FE-IF211は、複数のポート(例えば、Fibre Channelポート、iSCSIポート)を有してよい。リモートコピーのパス(転送対象のデータが経由するパス)が、正ストレージシステム200AのFE-IF211のポートと、副ストレージシステム200BのFE-IF211のポートとを含んだパスでよい。FE-IF200とは別にリモートコピー用のインターフェースデバイスが備えられてもよい。
【0029】
BE-IF214は、各ドライブ218と通信するインターフェースデバイスである。
【0030】
M-IF215は、保守端末270と通信するインターフェースデバイスである。M-IF215が有するポートが、FE-IF211が有するポートに代えて、リモートコピーのパスに含まれてよい。
【0031】
メモリ213は、プログラムやデータを格納する。メモリ213は、例えば、データが一時的に格納されるキャッシュメモリ領域を有してよい。プロセッサ212は、メモリ213に格納されたプログラムを実行する。アクセラレータ217は、プロセッサ212の処理の一部(例えば、データの圧縮又は伸張)を実行するハードウェア回路(例えば、FPGA又はASIC)である。アクセラレータ217は、プロセッサ212を含む広義のプロセッサの一部でよい。アクセラレータ217がなくても本発明は実施可能である。
【0032】
保守端末270は、IF275と、I/O部274と、メモリ272と、それらに接続されたCPU271とを備えた計算機である。IF275は、ネットワーク220に接続されるポートを有するインターフェースデバイスである。I/O部274は、キーボード、ポインティングデバイス及び表示デバイスのようなユーザインターフェースデバイスである。メモリ272は、プログラム(例えば保守プログラム273)及びデータを格納する。CPU271は、保守プログラム273を実行することにより、ストレージシステム200の保守を行う。例えば、保守プログラム273を実行するCPU271は、I/O部274を介してユーザから情報(例えば、ストレージシステム200A及び200B間の距離を表す情報、又は、後述の必要多重度を表す情報)を受け付け、受け付けた情報をIF275経由でストレージシステム200に設定してよい。
【0033】
図3は、正ストレージシステム200Aから副ストレージシステム200Bへのリモートコピーの概要の一例を示す。
【0034】
本実施形態に係るリモートコピーは、PVOL26Aを指定したライト要求に従う処理とは非同期に行われる(ライト要求に付随したライト対象データがSVOL26Bにコピーされていなくてもライト要求が完了する)非同期リモートコピーである。非同期リモートコピーでは、後述するJNL(ジャーナル)が使用される。
【0035】
正ストレージシステム200Aは、PVOL(Primary Volume)26Aと、PVOL26Aに格納されたデータがJNLデータとして格納されるJVOL(Journal Volume)26JAといったボリューム26を有する。副ストレージシステム200Bは、JVOL26JAに格納されたJNLの転送先であるJVOL26JBと、JVOL26JBに格納されたJNL内のJNLデータが格納されるSVOL(Secondary Volume)26Bといったボリューム26を有する。
【0036】
PVOL26AとSVOL26BでVOLペアが構成されている。PVOL26Aに格納されたデータのSVOL26Bへのリモートコピーは、JVOL26JA及び26JB経由で実現される。いずれのボリューム26も、ドライブ群に基づいてよいが、JVOL26Jの少なくとも一部が、コントローラ210におけるメモリ213(例えば、キャッシュメモリ領域)に基づいてよい。また、ストレージシステム200A及び200Bの少なくとも一つにおいて、複数のVOLペアにつき、一つのJVOL26Jが存在してもよい。また、一つのVOLペアにつき、JVOL26Jが複数存在してもよい。また、ストレージシステム200A及び200B間で、一つのVOLペアにつき、JVOL26Jの数が異なっていてもよい。
【0037】
JNLは、JNLデータ2524とJNCB(Journal Control Block)2523とで構成される。
【0038】
JNLデータ2524は、PVOL26Aに書き込まれたライト対象のデータと同じデータ(ライト対象のデータの複製)である。
【0039】
JNCB2523は、JNLデータ2524のメタデータの一例である。具体的には、例えば、JNCB2523は、JNLデータ2524の格納先のアドレス(例えば、LBA(Logical Block Address))、JNLデータ2524の元のライト対象データの格納先のアドレス(PVOL26Aにおけるアドレス)、元のライト対象データが格納されたPVOLのID(及び/又は、当該PVOLとVOLペアを構成するSVOLのID)、及び、シーケンス番号(元のライト対象データが付随したライト要求の順番)といった情報を含む。シーケンス番号(以下、SEQ#)は、ライト順番の一例である。ライト順番の別の例は、タイムスタンプでもよい。
【0040】
JVOL26Jは、JNCB2523が格納される領域であるJNCB領域2521と、JNLデータ2524が格納される領域であるJNLデータ領域2522とを有する。図3が示すように、JNCB2523からJNLデータ2524の格納先が特定可能である(JNCB2523からJNLデータ2524へ延びた矢印を参照)。例えば、JNCB領域2521には、SEQ#の順に、JNCB2523が格納される。
【0041】
リモートコピーの概要は、例えば通りである。すなわち、正ストレージシステム200Aが、正ホスト100Aからのライト要求に従い、当該ライト要求に付随するライト対象データをPVOL26Aに格納し、当該ライト対象データの複製としてのJNLデータと、当該JLNデータのメタデータであるJNCBとを含んだJNLをJVOL26JAに格納して、ライト完了を正ホスト100Aに報告する。正ストレージシステム200Aが、ライト要求に応答して行う処理とは非同期に、副ストレージシステム200BからのJNLリード要求に応答して(又は、当該JNLリード要求無しに自発的に)、副ストレージシステム200Bへ転送対象のJNLを転送する。副ストレージシステム200Bが、JNLを受信し、受信したJNLをJVOL26JBに格納する。副ストレージシステム200Bが、JNL内のJNCBを基に、当該JNL内のJNLデータをSVOL26Bに格納する。これにより、正ストレージシステム200AのPVOL26Aから副ストレージシステム200BのSVOL26Bへのデータがリモートコピーされたことになる。
【0042】
以下の説明では、便宜上、「JNLデータ」は、可算名詞とする。JNLデータは、可算名詞としての「JNL」(ジャーナル)に含まれる一まとまりのデータであるためである。例えば、N個のJNLがあれば(Nは2以上の整数)、JNLデータはN個である。本実施形態では、転送対象のJNLがN個の場合、正ストレージシステム200AによりN個のJNLデータが圧縮される。なお、JNLデータを可算名詞とするため、JNLデータの元のデータであるライト対象データも、可算名詞とすることができる。また、N個のJNLデータを圧縮することを、以下、「まとめ圧縮」と呼ぶことがある。
【0043】
図4は、メモリ213の構成例を示す。
【0044】
メモリ213は、管理領域221と、プログラム領域222と、キャッシュメモリ領域223とを有する。
【0045】
管理領域221には、管理情報が格納される。管理情報は、SEQ#テーブル2210と、距離テーブル2211と、必要多重度テーブル2212と、ペアテーブル2213とを含む。情報2210~2212については後述する。ペアテーブル2213は、VOLペア毎に、PVOLのIDとSVOLのID、コピー相手であるストレージシステム200のIDとを含む。また、ペアテーブル2213は、コピー処理の一時停止状態、正常、異常などを管理するためのペア状態なども管理してもよい。
【0046】
プログラム領域222には、プログラムが格納される。格納されるプログラムとして、例えば、ホストからのI/O要求に応答してPVOL(又はSVOL)に対しデータのI/Oを行うためのI/Oプログラム2221と、JNLデータを作成するためのJNL作成プログラム2222と、JNLを転送する正JNLリードプログラム22Aと、転送されたJNLを受信する副JNLリードプログラム22Bと、JNLデータのリードスケジュールを決定するためのJNLリードスケジュールプログラム2226と、ストレージシステム200A及び200B間の距離を表す情報を入力するための距離入力プログラム2227と、JNLデータの圧縮を行うためのJNL圧縮プログラム2228と、データをリストアするためのリストアプログラム2229とがある。なお、本実施形態では、リモートコピーの方式として後述するように方式1~3があり、説明の簡単のために、正JNLリードプログラム22A及び副JNLリードプログラム22Bの各々は方式1~3に共通であるが、方式1~3の各々について、当該方式に専用のプログラムが用意されてもよい。
【0047】
キャッシュメモリ領域223には、データが一時的に格納される。
【0048】
このメモリ213を有するストレージシステム200は、正ストレージシステム200Aと副ストレージシステム200Bの一方又は両方のストレージシステムとして機能することができる。例えば、このストレージシステム200がPVOL26Aを有するがSVOL26Bを有しない場合、このストレージシステム200は正ストレージシステム200Aとして機能する。このストレージシステム200がPVOL26Aを有しないがSVOL26Bを有する場合、このストレージシステム200は副ストレージシステム200Bとして機能する。このストレージシステム200が第1のVOLペアにおけるSVOL26Bを有し第2のVOLペアにおけるPVOL26Aを有する場合、このストレージシステム200は正ストレージシステム200Aとしても副ストレージシステム200Bとしても機能する。
【0049】
図5は、SEQ#テーブル2210の構成例を示す。
【0050】
コピー元について、SEQ#テーブル2210は、最新のJNL(最も遅くに作成されたJNL)のSEQ#を表す情報を含む。これにより、次に作成するJNLに含めるSEQ#の特定が可能である。例えば、次に作成されるJNLに含まれるSEQ#は、現在のSEQ#テーブル2210が表すSEQ#の次の番号(例えば、1インクリメントされた番号)である。なお、コピー元について、SEQ#テーブル2210は、コピー先に未転送のJNLのうちの最古のJNL(ライト受信時刻が最も古いライト対象データのJNLデータを含んだJNL)のSEQ#を表す情報を含んでもよい。これにより、次の転送対象のJNLの特定が可能である。
【0051】
一方、コピー先について、SEQ#テーブル2210は、SVOLに未反映のJNLのうちの最古のJNLのSEQ#を表す情報を含む。これにより、次に反映されるJNLに含まれるSEQ#の特定が可能である。なお、コピー先について、SEQ#テーブル2210は、コピー元から未受信のJNLのうちの最古のJNLのSEQ#を表す情報を含んでもよい。これにより、次に正ストレージシステム200Aへ要求すべきJNLの特定が可能である。
【0052】
図6は、JNCB2523の構成例を示す。
【0053】
JNCB2523は、後述の方式1~3のいずれにも使用可能な構成のJNCBである。本実施形態では、方式1~3のいずれかが選択的に採用可能でよいが、方式1~3のいずれかが固定で採用されてもよい。方式1~3のいずれかが固定で採用される場合、図6に例示の情報2240~2251の一部の情報が無くてもよい。
【0054】
JNCB2523は、SEQ#2240と、PVOLアドレス2241と、JNLデータサイズ2242と、JVOL格納開始アドレス2243と、圧縮ビット2244と、圧縮後サイズ2245と、分割ビット2246と、分割データサイズ2247と、圧縮開始SEQ#2248と、圧縮終了SEQ#2250といった情報を含む。
【0055】
SEQ#2240は、JNCB2523が管理するJNLに割り当てられたSEQ#を表す。PVOLアドレス2241は、PVOL26Aのアドレス(例えば、PVOL26AのIDとPVOL26の領域のLBA)を表す。JNLデータサイズ2242は、当該JNCB2523と同JNL内のJNLデータ2524のサイズを表す。JVOL格納開始アドレス2243は、JVOL26JAにおける領域のアドレスであって、当該JNLデータ2524が格納される領域の開始アドレスを表す。
【0056】
圧縮ビット2244は、JVOL26JAに格納された当該JNLデータ2524が圧縮されているか否かを表す。なお、圧縮(JNLデータの単体の圧縮、又は、まとめ圧縮)を常時実行する場合、圧縮ビット2244は無くてよい。更に、正ストレージシステム200Aと副ストレージシステム200Bの間で、圧縮を実施することを相互に認識する場合、JNCB2242内に圧縮ビット2244を設ける必要がない。
【0057】
圧縮後サイズ2245は、圧縮ビット2244が“ON”(圧縮を意味する値)の場合に有効な情報であり、JNLデータの圧縮後のサイズを表す。まとめ圧縮された場合、圧縮後サイズ2245は、まとめ圧縮データ(まとめ圧縮されたN個のJNLデータ)のデータサイズであるまとめ圧縮後サイズを表す。まとめ圧縮されたN個のJNLデータにそれぞれ対応したN個のJNCBの各々に、圧縮ビット2244“ON”及び同一のまとめ圧縮後サイズが格納されてよい。
【0058】
情報2246及び2247は、圧縮ビット2244が“ON”であり且つ後述の方式3において有効な情報である(言い換えれば、方式3が採用されることが無い場合、情報2246及び2247は無くてよい)。分割ビット2246は、まとめ圧縮データがp個(pは2以上の整数)のデータセグメント(以下、各データセグメントを「圧縮データセグメント」)に分割されているか否かを表す。分割データサイズ2247は、圧縮データセグメントのサイズを表す。
【0059】
情報2248及び2250は、圧縮ビット2244が“ON”であり且つ後述の方式3において有効な情報である(言い換えれば、方式3が採用されることが無い場合、情報2246及び2247は無くてよい)。また、情報2248及び2250は、第3の実施形態に記載する方式において、活用することができる。圧縮開始SEQ#2248は、まとめ圧縮されたN個のJNLデータにそれぞれ対応したN個のSEQ#のうちの最古(先頭)のSEQ#を表す。圧縮終了SEQ#2250は、まとめ圧縮されたN個のJNLデータにそれぞれ対応したN個のSEQ#のうちの最新(最後)のSEQ#を表す。すなわち、情報2248及び2250は、どのSEQ#のデータをまとめて圧縮しているかを示す情報である。この情報2248及び2250を用いて、圧縮されたデータを伸張するとき等に、どのJNLをまとめて処理する必要があるかを把握することができる。なお、ケースとJNCB2523内の情報との関係を図22に示す。各ケース(方式又は実施形態)において、チェックマークが対応付けられた情報が必須である。第3の実施形態では、JNCB2523は、開始オフセット2249及び終了オフセット2251といった情報を含むことができる。但し、図22が示すように、第3の実施形態では、情報2248~2251は無くてもよい。
【0060】
図7は、距離テーブル2211の構成例を示す。
【0061】
距離テーブル2211は、正副ストレージシステム200A及び200Bのペア毎に、コピー元ID22111、コピー先ID22112、距離22113及び帯域22114といった情報を保持する。
【0062】
コピー元ID22111は、正ストレージシステム200AのIDを表す。コピー先ID22112は、副ストレージシステム200BのIDを表す。距離22113は、正副ストレージシステム200A及び200B間の地理的な距離を表す。帯域22114は、正ストレージシステム200A及び200Bの間のデータ転送帯域を表す。本値は、正ストレージシステム200Aと副ストレージシステム200Bの間のデータ転送処理の必要多重度を計算するための情報である。このため、正ストレージシステム200Aと副ストレージシステム200Bの間の往復通信時間でも代用できる。また、後述する図8の必要多重度を距離や応答時間を確定できるのであれば、本テーブルは不要である。
【0063】
図8は、必要多重度テーブル2212の構成例を示す。
【0064】
必要多重度テーブル2212は、正副ストレージシステム200A及び200Bのペア毎に、コピー元ID22121、コピー先ID22122及び必要多重度22123といった情報を保持する。
【0065】
コピー元ID22121は、正ストレージシステム200AのIDを表す。コピー先ID22122は、副ストレージシステム200BのIDを表す。必要多重度22123は、正副ストレージシステム200A及び200B間で必要とされるデータ転送処理の多重度を表す。
【0066】
図9は、正ストレージシステム200Aが行うライト処理の処理フローを示す。
【0067】
I/Oプログラム2221が、正ホスト100Aからライト要求を受信する(S101)。I/Oプログラム2221は、受信したライト要求に付随したライト対象データをPVOL26Aにライトし(S102)、JNL作成プログラム2222をコールして(S103)、JNL作成プログラム2222の完了を待つ(S104)。ライト対象データは、キャッシュメモリ領域223に一時格納されてからPVOL26Aにライトされてもよいし、キャッシュメモリ領域223に格納されること無しにPVOL26Aにライトされてもよい。
【0068】
コールされたJNL作成プログラム2222は、最新のSEQ#(現在の最新のSEQ#のインクリメント後のSEQ#)を確保する(S201)。JNL作成プログラム2222は、JNLデータの格納先アドレス(例えばJVOL格納開始アドレス)を決定し(S202)、S102でライトされたデータ(例えばキャッシュメモリ領域223上のデータ)の複製としてのJNLデータを作成し、当該JNLデータを、S202で決定したアドレスが指す領域(例えば、キャッシュメモリ領域223又はJNLデータ領域2522)に格納する(S203)。また、JNL作成プログラム2222は、JNCBの格納先アドレスを決定し(S204)、S201で確保したSEQ#を含むJNCBを作成し、当該JNCBを、S204で決定したアドレスが指す領域(例えば、キャッシュメモリ領域223又はJNCB領域2521)に格納する(S205)。JNL作成プログラム2222は、処理の完了をI/Oプログラム2221に通知する(S206)。
【0069】
I/Oプログラム2221は、JNL作成プログラム2222から完了通知を受けた場合、正ホスト100A(ライト要求の送信元の一例)へライト完了を報告する(S105)。ライト完了の報告は、ジャーナルデータの格納やまとめ圧縮の完了を待たずに行われる。言い換えれば、まとめ圧縮が、ライト処理と非同期に行われる。
【0070】
このライト処理において、JNCB及びJNLデータが正ストレージシステム200Aのキャッシュメモリ領域223に格納された場合、後に、JNCB及びJNLデータがキャッシュメモリ領域223からJVOL26Aに格納されてよい。JVOL26Aがキャッシュメモリ領域223に基づく領域の場合、キャッシュメモリ領域223への格納がJVOL26Aへの格納に相当してよい。
【0071】
本実施形態では、方式1~3のいずれかに従い、JNLデータが正ストレージシステム200Aから副ストレージシステム200Bへ転送される。以下、方式1~3の各々を説明する。
【0072】
<方式1の説明>
【0073】
図10は、方式1に従うJNL転送処理の処理フローを示す。
【0074】
方式1によれば、まとめ圧縮されたN個のJNLデータが転送対象である。
【0075】
副ストレージシステム200Bの副JNLリードプログラム22Bは、JNLのリード要求であるRDJNL(ジャーナルリード要求)を正ストレージシステム200Aに送信し(S601)、正ストレージシステム200Aからの応答を待つ(S602)。
【0076】
正ストレージシステム200Aの正JNLリードプログラム22Aは、副ストレージシステム200Bからの受信したRDJNLに応答して、未転送のN個のJNCB2523をJVOL26JAからリードし(S501)、N個のJNCB2523の各々のJVOL格納開始アドレス2243を特定する(S502)。正JNLリードプログラム22Aが、S502で特定された各アドレスからJNLデータをリードし(S503)、リードされたN個のJNLデータのまとめ圧縮を行う(S504)。正JNLリードプログラム22Aは、当該N個のJNLデータにそれぞれ対応したN個のJNCB2523の各々を更新する(S505)。S505で更新された後の各JNCB2523では、圧縮ビット2244が“ON”であり、圧縮後サイズ2245がまとめ圧縮後サイズを表す。正JNLリードプログラム22Aは、まとめ圧縮データ(まとめ圧縮されたN個のJNLデータ)と、更新後のN個のJNCB2523とを副ストレージシステム200Bに転送する(S506)。各JNCB2523の圧縮ビット2244及び圧縮後サイズ2245を更新するのでなく、例えば、転送対象JNLの中で最も小さいSEQ#を有するJNCB2523の情報のみ更新してもよい。正JNLリードプログラム及び副JNLリードプログラムが、最も小さいSEQ#を有するJNCB2523の情報を用いて各JNLを処理する。
【0077】
副ストレージシステム200Bの副JNLリードプログラム22Bが、正ストレージシステム200AからN個のJNCB2523と、まとめ圧縮データとを受信する(S603)。副JNLリードプログラム22Bが、N個のJNCB2523の各々から圧縮ビット2244“ON”を特定し(S604)、まとめ圧縮データをN個のJNLデータに伸張する(S605)。伸張は、副JNLリードプログラム22Bにより行われてもよいが、副ストレージシステム200Bのアクセラレータにより行われてもよい。副JNLリードプログラム22Bが、各JNLデータについて、格納先アドレス(例えばJVOL格納開始アドレス)を決定し、当該JNLデータを、決定したアドレスが指す領域(例えば、キャッシュメモリ領域223又はJNLデータ領域2522)に格納する(S606)。伸張したデータと、N個のJNCB2523に格納されているJNLデータサイズ2242を用いることで、各JNCB2523に対応するJNLデータを特定することができる。具体的には、伸張したデータを、SEQ#の小さい順にJNLデータサイズ2242で分割する。副JNLリードプログラム22Bが、N個のJNCB2523の各々を更新する(S607)。S607で更新された後の各JNCB2523では、JVOL格納開始アドレス2243がJVOL26JBにおける領域のアドレスであり、圧縮ビット2244が“OFF”であり、圧縮後サイズ2245は無効な値である。副JNLリードプログラム22Bが、S607で更新された各JNCBの格納先アドレスを決定し(S608)、各JNCBを、S607で決定したアドレスが指す領域(例えば、キャッシュメモリ領域223又はJNCB領域2521)に格納する(S609)。
【0078】
また、圧縮データの伸張を、図15で説明するリストアプログラムにおいて実行してもよい。その場合、S604及びS605はスキップする。S606は、圧縮されたデータを格納する。S607では、JVOL格納開始アドレス2243がJVOL26JBにおける領域のアドレスへ変更される。圧縮ビット2244と圧縮後サイズ2245は変更されない。
【0079】
方式1によれば、全ライト対象データが転送対象であるため、短いRPOが維持される。また、転送対象が、N個のJNLデータがまとめ圧縮された後のデータであるため、転送対象データの削減効果向上が期待される。
【0080】
なお、下記のうちの少なくとも一つが採用されてもよい。
・S604~S609に代えて、まとめ圧縮データとN個のJNCBがJVOL26JBに格納されてよい。JNLのSVOL26Bへの反映の際に(つまりリストア処理の際に)、まとめ圧縮データをN個のJNLデータに伸張することと、伸張されたN個のJNLデータをSVOL26Bへライトすることとが行われてよい。また、JNLをSVOL26Bへ反映する処理が、一つのJNLリードプログラムが転送したJNLを処理する必要がある。例えば、JNLリードプログラムが1回目の処理で、SEQ#1~50のJNLを転送し、2回目の処理でSEQ#51~100を転送する場合を考える。リストア処理も、SEQ#1~50を対象に処理する必要がある。なぜならば、SEQ#1~50のJNLデータがまとめて圧縮されているからである。圧縮開始SEQ#2248と圧縮終了SEQ#2250をJNCB2523に格納しておくことで、リストア処理が、SEQ#1~50がまとめて圧縮されていることを認識できる。
・非同期リモートコピーに従う形成コピー(初期にPVOL26AとSVOL26Bとを一致させるためのコピー)も、図10に例示の処理と同様の処理を含んでよい。その際、S503では、JNLデータは、JVOL26JAに代えてPVOL26Aからリードされる。
【0081】
<方式2の説明>
【0082】
JNL転送処理の多重度は、ストレージシステム200A及び200B間の回線の効率に影響する。例えば、多重度が“1”の場合、回線にデータが転送されていない期間が増加し、回線の利用効率が低下する。例えば、正ストレージシステム200Aにおいて、RDJNLをプロセッサ212が処理中(例えば、JNCBの更新中、又は、JNLデータの転送中)やRDJNLのコマンドが送信されている間など、回線にデータが転送されない。あるRDJNLが回線にデータを転送していない間、別のRDJNLが回線にデータを転送することができれば回線の利用効率が向上する。このため、“1”より大きいRDJNLの多重度が必要となる。
【0083】
N個のJNLデータのまとめ圧縮について、Nの値が大きい程、圧縮効果が高い(元のデータのサイズに対する圧縮後のデータのサイズの割合である圧縮率が小さい)ことが期待される。しかし、Nの値が大き過ぎると、JNL転送処理の多重度が下がってしまう。例えば、一個のRDJNLの処理で多くのJNLデータがまとめ圧縮の対象になると、当該RDJNLの処理中に次のRDJNLを正ストレージシステム200Aが受けても当該正ストレージシステム200Aに転送対象のJNLデータが存在しない可能性がある。
【0084】
そこで、方式2では、多重度と、まとめ圧縮の対象となるJNLデータの数Nとが最適化される。例えば、多重度を必要多重度(必要最低限の多重度)以上に維持し、一個のRDJNLに応答してまとめ圧縮されるJNLデータの数を増やすことが期待される。
【0085】
必要多重度について説明する。必要多重度は例えば以下の(式1)の通りに算出されてよい。
必要多重度=(RDJNLコマンドの往復時間-データ転送時間)÷データ転送時間+1・・・(式1)
【0086】
(RDJNLコマンドの往復時間-データ転送時間)は、RDJNLコマンドでデータが転送される時間以外の時間を意味する。RDJNLコマンドでデータが転送される時間以外の時間に、別のデータ転送を行うRDJNLコマンドが何個必要であるかを上述の式1にて計算できる。例えば、リードJNLコマンドの往復時間=1500μs、データ転送時間=300μsと仮定した時、(リードJNLコマンドの往復時間-データ転送時間)=1200μsとなる。この場合、1200μsの時間にデータ転送を行う別のRDJNLコマンドがあることが望ましい。1つのRDJNLコマンドのデータ転送時間が300μsなので、4RDJNLあれば、1200μsの時間に、隙間(空き時間)なくデータ転送を行うことができる。すなわち、合計5多重あれば回線帯域を使い切ることができる。
【0087】
また、RDJNLコマンドの往復時間は、下記の時間、
・データ転送時間
・正ストレージシステム内処理時間
・副ストレージシステム内処理時間
・RDJNLコマンド転送時間
に分解される。
【0088】
「正ストレージシステム内処理時間」は、正ストレージシステム200Aのプロセッサが処理を行っている時間(プロセッサ処理時間)や正ストレージシステム200A内部でデータを転送している時間(システム内転送時間)などの合計値である。「副ストレージシステム内処理時間」は、副ストレージシステム200Bのプロセッサが処理を行っている時間(プロセッサ処理時間)や副ストレージシステム200B内部でデータを転送している時間(システム内転送時間)などの合計値である。「RDJNLコマンド転送時間」は、副ストレージシステム200BがRDJNLコマンドを発行し、正ストレージシステム200AがRDJNLコマンドを受領するまでの時間である。これらの時間、当該RDJNLコマンドに対応するデータ転送は行われない。
【0089】
「プロセッサ処理時間」は、RDJNLの処理にプロセッサ212が要する時間でよい。「システム内転送時間」は、RDJNLに応答してストレージシステム200内でデータ転送(例えば、キャッシュメモリ領域223又はドライブ218へのデータ転送)に要する時間でもよいし、RDJNLの処理においてプロセッサ212が使用されていない時間でもよい。プロセッサ処理時間もシステム内転送時間も、管理者から保守端末270経由で入力されてもよいし、ストレージシステム200内部での計測値でもよい。
【0090】
次に、これらの時間の決定方法について述べる。保守端末270を介して直接指定する方法、保守端末270を介して指定された情報を用いて計算する方法、及び、ストレージシステムが計算する方法が考えられる。上述した時間(例えば、RDJNLコマンドの往復時間の要素としての複数種類の時間)の少なくとも一部の時間が、これらの方法のうちのいずれの方法で決定されてもよい。
【0091】
保守端末270を介して直接指定する方法では、必要多重度が、管理者から保守端末270経由で入力されてもよい。
【0092】
保守端末270を介して指定された情報を用いて計算する方法では、例えば、距離情報、正ストレージシステムと副ストレージシステムの間のネットワーク帯域情報を、保守端末270を介して受け取る。距離情報を用いて、RDJNLコマンド転送時間を算出し、ネットワーク帯域を用いて、データ転送時間を算出できる。ストレージシステム内処理時間は、予めストレージシステムのメモリに記憶しておいてもよいし、後述する方法で観測してもよい。
【0093】
ストレージシステムが計算する方法では、下記のうちの少なくとも一つが採用されてよい。ストレージシステムが計算することにより、ストレージシステムやネットワークの遅延などが変化した場合へ多重度を変更し対処することができる。
・リードJNLコマンドの往復時間を観測してもよい。これは、図13のS900の開始から図13のS609の終了までの時間でよい。
・正ストレージシステム内処理時間は、正ストレージシステムがRDJNLコマンド受領からデータ転送開始までの時間を観測してもよい。これは、図13のS901の開始から図13のS506の終了までの時間でよい。
・副ストレージシステム内処理時間は、副ストレージシステムがプログラム起動からRDJNLコマンド受領までの時間と、RDJNLコマンドの応答受領から、プログラム終了までの時間を観測し、合計した値でよい。これは、図13のS900の開始から図13のS602の終了までの時間と、図13のS603の開始から図13のS609の終了までの時間の合計値でよい。
・RDJNLコマンド転送時間は、正ストレージシステムと副ストレージシステムによる、ハートビートなどの時間を観測してもよい。
・データ転送時間は、RDJNLコマンドの往復時間から正ストレージシステム内処理時間、副ストレージシステム内処理時間、RDJNLコマンド転送時間を減算することで計算される。
【0094】
必要多重度は、ストレージシステム200A及び200B間の距離(距離22113が表す値)及びネットワーク帯域(帯域22114が表す値)の少なくとも一つを基に算出されてよい。
【0095】
図11は、距離入力プログラム2227の処理フローを示す。
【0096】
距離入力プログラム2227は、管理者から保守端末270経由で距離情報(ストレージシステム200A及び200Bとの間の距離を表す情報)とネットワーク帯域情報(ストレージシステム200A及び200Bとの間のネットワーク帯域を表す情報)を受け付ける(S701)。
【0097】
距離入力プログラム2227は、受信した距離情報及びネットワーク帯域情報を含むエントリを距離テーブル2211に追加する(S702)。
【0098】
距離入力プログラム2227は、当該距離情報が表す距離と当該ネットワーク帯域情報が表す帯域とのうちの少なくとも一つを基に、必要多重度を算出し、算出された必要多重度を含むエントリを必要多重度テーブル2212に追加する(S703)。例えば、前述した通り、データ転送時間、正ストレージシステム内処理時間、副ストレージシステム内処理時間、及び、RDJNLコマンド転送時間を基に、必要多重度が計算される。S701で受領した距離情報からRDJNLコマンド転送時間が計算され、ネットワーク帯域情報からデータ転送事案が計算される。(式1)に示した計算により必要多重度が計算される。正ストレージシステム内処理時間、副ストレージシステム内処理時間は、事前にストレージのメモリに格納しておくか、上述したとおり内部的に観測することで値を決定することができる。必要多重度を計算する方法は、説明した以外の方法にも考えられる。必要多重度を計算するために必要となる情報の取得方法は、説明した以外の方法も考えられる。どのような方法により必要多重度を計算してもよい。
【0099】
ストレージシステムが計算する方法の場合、本プログラムは不要でよい。代わりに、ストレージシステムが、各種情報を観測し必要多重度を決定する処理が必要となる。ストレージシステムは、定期的に必要多重度を計算し見直してもよい。
【0100】
また、多重度情報や必要多重度を計算するための情報をユーザに入力させる場合、ストレージシステム側でも各種情報を観測し必要多重度を決定する処理を実行してもよい。両方の計算結果の乖離が所定の閾値以上であれば、ユーザに入力情報の見直しを通知してもよい。
【0101】
図12は、JNLリードスケジュールプログラム2226の処理フローを示す。
【0102】
副ストレージシステム200B(又は正ストレージシステム200A)において、JNLリードスケジュールプログラム2226は、必要多重度テーブル2212を参照し、RDJNL数(処理中のRDJNLの数)が必要多重度未満か否かを判定する(S711)。
【0103】
S711の判定結果が真の場合(S711:Yes)、JNLリードスケジュールプログラム2226は、副JNLリードプログラム22Bをコールする(S712)。これにより、副JNLリードプログラム22BからRDJNLが送信され、結果、RDJNL数が増える。S711の判定は、必要多重度テーブル2212にアクセスし必要多重度を取得することで実現される。
【0104】
図13は、方式2に従うJNL転送処理の処理フローを示す。以下、方式1に従うJNL転送処理との相違点を主に説明し、方式1に従うJNL転送処理との共通点については説明を省略又は簡略する。図13の例では、副ストレージシステムが必要多重度を計算し、RDJNLコマンドで必要多重度を正ストレージシステムに通知する方法を前提に説明する。正ストレージが必要多重度を計算してもよい。
【0105】
副ストレージシステム200Bの副JNLリードプログラム22Bが、副ストレージシステム200Bにより算出されている必要多重度を指定したRDJNLを送信する(S900)。
【0106】
正ストレージシステム200Aの正JNLリードプログラム22Aが、副JNLリードプログラム22BからRDJNLを受信し、RDJNLコマンドに指定された必要多重度を取得する(S901)。
【0107】
正JNLリードプログラム22Aが、S901で取得した必要多重度を基に、転送JNL数(まとめ圧縮の対象とされるJNLデータの数N)を決定する(S902)。例えば、正JNLリードプログラム22Aは、転送JNL数=(最大多重度)÷(RDJNLで指定されている必要多重度)×(最大多重度時の転送JNL数)を算出する。例えば、必要多重度“32”ではN=64と仮定されている場合、多重度が“16”であると、N=128(=32÷16×64)である。「最大多重度」とは、許容されている多重度のうちの最大値を意味する。(最大多重度)×(最大多重度時の転送JNL数)で計算されるJNL数が、並列に転送されるJNL数の合計値(以下、「合計JNL数」と呼ぶ)である。合計JNL数は、回線の利用効率を高く維持できるように設計されていると想定される。このため、多重度を減らした時も、合計JNL数を維持することで、回線の利用効率を高く維持できることが期待できる。
【0108】
その後、S501~S506及びS603~S609が行われる。
【0109】
<方式3の説明>
【0110】
方式1又は2では、一個のRDJNLに応答してまとめ圧縮されて転送されるJNLデータの数はNであるが、方式3では、M個のRDJNLそれぞれに応答してリードされるN個のJNLデータがまとめ圧縮の対象となる。つまり、方式3では、まとめ圧縮されて転送される対象が、(M×N)個のJNLデータである。これにより、転送対象データの圧縮効果の一層の向上が期待される。
【0111】
図14は、JNL圧縮プログラム2228の処理フローを示す。本処理は、定期的に実行される。
【0112】
JNL圧縮プログラム2228は、まとめ圧縮JNL数を算出する(S800)。まとめ圧縮JNL数の値Kは、例えば、下記(式3)の通りに算出される。Mは、必要多重度を意味し、Nは、転送JNL数を意味する。
K=M×N・・・(式3)
【0113】
「必要多重度」は、方式2を前提とする場合、例えば、必要多重度テーブル2212から特定された必要多重度でよい。「必要多重度」は、方式1を前提とする場合、予め決められた多重度でよい。以降の方式3の説明においては、方式2を前提とする場合の必要多重度、方式1を前提とする場合の多重度を区別することなく単に「多重度」と呼ぶことにする。「転送JNL数」は、多重度に対応付けられたJNLデータの数N(一個のRDJNLに応答してリードされるJNLデータの数N)でよい。「多重度」は、定期的に又は不定期的に副ストレージシステム200Bから通知されてもよいし、定期的に又は不定期的に正ストレージシステム200Aにおいて算出されてもよい。
【0114】
JNL圧縮プログラム2228は、SEQ#mからSEQ#(m+(K-1))のJNCB(K個のJNCB)をリードする(S801)。「SEQ#m」は、まとめ圧縮されていないJNLデータのSEQ#のうち最古のSEQ#である。
【0115】
JNL圧縮プログラム2228は、リードされたK個のJNCB2523の各々について、JVOL格納開始アドレス2243を特定し(S802)、当該アドレス2243が指す領域からJNLデータをリードする(S803)。JNL圧縮プログラム2228は、リードされたK個のJNLデータをまとめ圧縮する(S804)。
【0116】
JNL圧縮プログラム2228は、まとめ圧縮データ(まとめ圧縮されたK個のJNLデータ)の圧縮後サイズを算出し、分割データサイズ(=(圧縮後サイズ)÷(多重度))算出する(S805)。分割データサイズの算出方法は一例であり、これ以外でもよい。上記の計算式を用いることで、各RDJNLが転送するデータ量を同一にすることができる。これにより、リモートコピー用のパスが複数本存在する場合などに、各パスの稼働率を均等にすることができる。パスの稼働率の偏りに伴う効率悪化を回避することができる。JNL圧縮プログラム2228は、まとめ圧縮データを分割データサイズで分割する(S806)。これにより、まとめ圧縮データが、それぞれが分割データサイズと同じデータサイズであるp個(pは2以上の整数)の圧縮データセグメントに分割されたことになる。JNL圧縮プログラム2228は、p個の圧縮データセグメントをJVOL26JA(又はバッファといった他の領域)に格納する(S807)。JNL圧縮プログラム2228は、S801でリードされたK個のJNCB2523の各々について、当該JNCBを更新し(当該JNCBに、0個以上の圧縮データセグメントを紐付け)、更新後のJNCBを、JVOL26Aにおける当該JNCBに上書きする(S808)。JNCBの更新は、JVOL格納開始アドレス、圧縮ビット、圧縮後サイズ、分割ビット、分割データサイズ、圧縮開始SEQ#、及び、圧縮終了SEQ#の更新である。
・JVOL格納開始アドレスは、当該JNCBを基にリードされる圧縮データセグメントのJVOL格納開始アドレス(例えば、バッファ又はJVOL26JAのアドレス)である。各RDJNLのJNCBが更新される。各RDJNLで対応する圧縮データセグメントが異なるため、各RDJNLのJNCBが格納するJVOL格納開始アドレスは異なるアドレスとなる。
・圧縮ビットは、方式1や方式2と同じ意味であり、“ON”が格納される。各RDJNLのJNCBが更新される。
・圧縮後サイズは、方式1や方式2と同じ意味であり、K個のJNLデータの圧縮後サイズが格納される。各RDJNLのJNCBが更新される。
・分割ビットは、圧縮データセグメントに分割されているか否かを示す情報であり、“ON”が格納される。すなわち、方式3であるか否かを示す情報である。各RDJNLのJNCBが更新される。
・分割データサイズは、上述した計算式によって算出されるサイズである。各RDJNLのJNCBが更新される。
・圧縮開始SEQ#2248及び圧縮終了SEQ#2250は、K個のJNLデータの先頭SEQ#及び末尾SEQ#を表す。全JNCB(K個)の圧縮開始SEQ#2248及び圧縮終了SEQ#2250が更新される。これにより、まとめ圧縮されているJNLがどれであるかを決定することができる。どのJNLデータがまとめ圧縮されているかを特定するための情報であれば、圧縮開始SEQ#2248及び圧縮終了SEQ#2250以外でもよい。例えば、まとめ圧縮カウンタなどでもよい。
【0117】
JNL圧縮プログラム2228は、S801でリードされたK個のJNCB2523の各々について、当該JNCBに対応した非圧縮のJNLデータが格納されている領域を解放する(S809)。解放された領域には別のJNLデータ(又は圧縮データセグメント)をライトすることが可能となる。つまり、解放された領域が空き領域となる。
【0118】
図14が示す処理において、K=M×Nでもよいが(Mは、RDJNLの数であり、Nは、一個のRDJNLに応答して転送されるJNLデータの数である)、Kは、M×Nの一部でもよい。
【0119】
方式3に従うJNL転送処理は、図10に示す正ストレージシステムでは、JNL転送処理のうちS504及びS505を含まない処理である。図13に示す副ストレージシステムでは、S604、S605はスキップする。S606は、圧縮されたデータを格納する。S607では、JVOL格納開始アドレス2243がJVOL26JBにおける領域のアドレスへ変更される。圧縮ビット2244と圧縮後サイズ2245は変更されない。すなわち、正JNLリードプログラム22Aは、JNCBが示すJVOL格納開始アドレスからリードされる圧縮データセグメント(まとめ圧縮データの一部)を転送する。また、S503でリードされる「JNLデータ」は、方式3では「圧縮データセグメント」である。つまり、方式3では、N個のJNLデータがまとめ圧縮されたまとめ圧縮データに代えて、p÷M個の圧縮データセグメントが転送される。副JNLリードプログラム22Bは圧縮を伸張することなくJVOL26JBに格納する。説明では、定期的に実行されるJNL圧縮プログラムがS800からSS809を実行するとしたが、I/Oプログラムや、JNL作成プログラムが実行してもよい。例えば、S105の後や、S205の後に実行することが考えられる。この他のプログラムや契機で実行されてもよい。
【0120】
図15は、リストアプログラム2229の処理フローを示す。
【0121】
副ストレージシステム200Bにおいて、リストアプログラム2229は、JVOL26JBに格納されているJNCBをチェックし(S300)、SVOL26Bに未反映のJNLのうちの最古のSEQ#からSEQ#が連続した範囲を特定し(S301)、特定した範囲の最新SEQ#を特定する(S302)。リストアプログラム2229は、SEQ#の連続範囲における各SEQ#について、当該SEQ#を含むJNCBにおいて、圧縮ビット2244が“ON”で分割ビット2246が“ON”であるか否かを判定する(S303)。
【0122】
S303の判定結果が偽の場合(S303:No)、リストアプログラム2229は、S311を行う。S311では、下記が行われる。
・圧縮ビット2244が“ON”で分割ビット2246が“OFF”の場合、リストアプログラム2229は、まとめ圧縮に対応したN個のJNCB(例えば、圧縮開始SEQ#及び圧縮終了SEQ#が同一のN個のJNCB)を特定し、当該N個のJNCBを基に、まとめ圧縮データをJVOL26Bからリードして伸張することでN個のJNLデータを取得する。リストアプログラム2229は、当該N個のJNCBの各々について、当該JNCBに対応したJNLデータを、当該JNCBが表すPVOLアドレスに対応したアドレスが表すSVOL内領域にライトする。
・圧縮ビット2244が“OFF”の場合、リストアプログラム2229は、SVOL26Bに未反映の最古のJNLにおけるJNCBを特定し、当該JNCBを基に、JNLデータをJVOL26JBからリードする。リストアプログラム2229は、リードされたJNLデータを、当該JNCBが表すPVOLアドレスに対応したアドレスが表すSVOL内領域にライトする。
【0123】
S303の判定結果が真の場合(S303:Yes)、リストアプログラム2229は、まとめ圧縮に対応したK個のJNCB(例えば、圧縮開始SEQ#及び圧縮終了SEQ#が同一のK個のJNCB)を特定し(S304)、各JNCBを基に圧縮データセグメントをJVOL26JBからリードする(S305)。リストアプログラム2229は、リードされたp個の圧縮データセグメントを結合し(S306)、結合されたp個の圧縮データセグメントであるまとめ圧縮データをK個のJNLデータに伸張する(S307)。伸張したデータと、N個のJNCB2523に格納されているJNLデータサイズ2242を用いることで、各JNCB2523に対応するJNLデータを特定することができる。具体的には、リストアプログラム2229は、伸張したデータを、SEQ#の小さい順にJNLデータサイズ2242で分割する。リストアプログラム2229は、K個のJNLデータの各々について、SEQ#順にSVOL26B(JNCBが表すPVOLアドレスに対応したアドレスが表すSVOL内領域)にライトする(S308)。
【0124】
なお、SVOL26Bへのリストアは、複数のジョブにより並列に実行されてもよい。SVOL26Bの同一アドレスがリストア先となるリストアは同一ジョブが担当すれば、全体としてSEQ#順にリストアがされなくても、SEQ#がより新しいJNLデータがSEQ#がより古いJNLデータに書き換えられるといったいわゆる先祖返りを回避することができる。
【0125】
以上が、方式1~3の説明である。なお、本実施形態において、「リモートコピー処理」は、PVOL26Aにライトされたデータの複製であるJNLデータがJVOL26JA及び26JB経由でSVOL26Bに反映されるまでの処理である。リモートコピー処理が、JNL転送処理及びリストア処理を含む。「JNL転送処理」は、JNLの転送のための処理が開始されてから転送されたJNLの格納が終了するまでの処理であり、本実施形態では、副ストレージシステム200BがRDJNLの送信を開始してから当該RDJNLに対する応答(正ストレージシステム200Aからの応答)に含まれるJNLが副ストレージシステム200Bに格納されるまでの処理である。「リストア処理」は、副ストレージシステム200BにおいてJNLデータがSVOL26Bにライトされる処理であり、具体的には、例えば、後述の図15が示す処理である。また、本実施形態では、副ストレージシステム200BからのRDJNLに応答してデータが転送されるが、正ストレージシステム200AからWRJNL(JNLのライト要求)が副ストレージシステム200Bに送信され、当該WRJNLに応答して、当該WRJNLに付随するデータ(複数個のJNCBとまとめ圧縮データの少なくとも一部)が格納されてよい。また、RDJNLで圧縮の指定があってよく、RDJNLに圧縮の指定があるが故にまとめ圧縮がされてよい。また、RDJNLに方式1~3のいずれかの指定があってよく、指定された方式に従う転送処理のための圧縮が行われてよい。RDJNLに圧縮の指定が無い場合、非圧縮のJNLデータが転送対象でよい。また、説明を簡単にするために、以下の説明では、圧縮及び伸張は、プロセッサ212によって行われるが、圧縮及び伸張は、アクセラレータ217によって行われてもよい。図6に示した情報は、JNCBに格納するとしたが、WRJNLやRDJNLのコマンドのパラメタとして格納及び転送されてもよい。また、JNCBは、ジャーナルのメタデータの一例であるが、メタデータが、WRJNLやRDJNLのコマンドのパラメタとして関連付けられてもよい。
[第2の実施形態]
【0126】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する(この点は、第2の実施形態以外の後述の実施形態についても同様である)。
【0127】
図16は、SmartNICの構成例を示す。
【0128】
SmartNIC1601が、アクセラレータ217及びFE-IF211のうちの少なくともアクセラレータ217として採用される。つまり、SmartNIC1601は、圧縮(及び伸張)のアクセラレータの一例である。SmartNIC1601が、ポート1605、圧縮回路1604、メモリ1603及びそれらに接続されたプロセッサ1602を有する。メモリ1603は、正IF圧縮プログラム16A及び副IF圧縮プログラム16Bを格納しており、プロセッサ1602がプログラムを実行することにより圧縮機能が実現される。プロセッサ1602は、圧縮処理の少なくとも一部を実行するハードウェア回路を含んだ広義のプロセッサでもよい。
【0129】
メモリ1603には、プロセッサ1602により実行されるプログラムとして、IF圧縮プログラム16の他に、上述したプログラム22A、22B、2221、2222及び2226~2229のうちの少なくとも一つが格納されてもよい。
【0130】
正ストレージシステム200AのSmartNIC1601と副ストレージシステム200BのSmartNIC1601が互いに通信可能に(例えばネットワーク経由で)接続される。
【0131】
図17は、第2の実施形態に係るJNL転送処理の処理フローを示す。ここでは、方式1~3のうち方式1を例に取る。
【0132】
副ストレージシステム200Bの副JNLリードプログラム22Bは、副IF圧縮プログラム16Bに対して、RDJNLの指示(又はRDJNLそれ自体)を送信する(S1701)。副IF圧縮プログラム16Bは、副JNLリードプログラム22BからRDJNLの指示(又はRDJNLそれ自体)を受信した場合、RDJNLを送信する(S1702)。RDJNLに含まれる情報は、副JNLリードプログラム22Bからの指示に含まれていてよい。
【0133】
正IF圧縮プログラム16Aが、受信した情報がRDJNLであることを特定し(S1703)、正JNLリードプログラム22Aを起動させる(S1704)。起動した正JNLリードプログラム22Aは、図10のS501~S506(S504を除く)を実行する。
【0134】
正IF圧縮プログラム16Aが、N個のJNCBとまとめ圧縮対象のN個のJNLデータを受信し、当該N個のJNLデータをまとめ圧縮し(S1705)、N個のJNCBとまとめ圧縮データを、副IF圧縮プログラム16Bに転送する(S1706)。
【0135】
副IF圧縮プログラム16Bは、N個のJNCBとまとめ圧縮データとを受信し(S1707)、受信したまとめ圧縮データをN個のJNLデータに伸張する(S1708)。副IF圧縮プログラム16Bは、副JNLリードプログラム22Bを起動させ、N個のJNCBとN個のJNLデータとを副JNLリードプログラム22Bに転送する(S1709)。
【0136】
副JNLリードプログラムは、図10のS603~S609(S604及びS605を除く)を実行する。
【0137】
なお、図17に例示の処理において、副JNLリードプログラム22B及び正JNLリードプログラム22Aがそれぞれ圧縮の要否を判定してもよい。圧縮が要の場合、圧縮指示が出され、正IF圧縮プログラム16Aが、当該圧縮指示を受けた場合にまとめ圧縮を行ってもよい。
【0138】
第2の実施形態によれば、コントローラ210のプロセッサ212の処理負担の一部(例えばまとめ圧縮)をSmartNIC1601にオフロードすることができる。
[第3の実施形態]
【0139】
第3の実施形態において、圧縮機能が受け付け可能なデータサイズの上限である受付サイズが決まっており、圧縮機能が、サイズT毎のデータを圧縮する。サイズTは、受付サイズ以下であり一個のJNLデータのサイズよりも大きい。例えば、ストレージシステムがアクセラレータ217を搭載し、当該アクセラレータ217が圧縮を行う場合などに受付サイズの上限があることが考えられる。以降の説明では、圧縮機能としてアクセラレータ217を想定して説明するが、アクセラレータ以外の圧縮機能でもよい。例えば、プロセッサが圧縮を実行するでもよい。アクセラレータを用いることで、プロセッサ212を用いた圧縮及び伸張の処理に比べ、処理時間を短縮することができる。更に、プロセッサ212で実行した場合、処理時間が長すぎるため、実用的でないような圧縮率の高い圧縮アルゴリズムを使用できる。この場合、転送データの削減率を向上することができる。また、圧縮及び伸張のためにプロセッサ212を用いる必要がなくなり、プロセッサ212が処理するその他の処理(I/O処理など)への影響を最小化することもできる。
【0140】
図18は、JNCBと圧縮後のデータとの関係の一例を示す。
【0141】
第3の実施形態において、アクセラレータ217が受け付け可能なデータサイズである受付サイズTが決まっている。N個のJNLデータがそれぞれ受付サイズTのq個(qは1以上の整数)のデータセグメントに区切られ、各データセグメントがアクセラレータ217により圧縮される。この様に、アクセラレータの受付サイズにデータを分割することで、アクセラレータを用いた圧縮及び伸張が可能となる。
【0142】
図18が示す例によれば、N個のJNCBに対しq個のデータセグメントがそれぞれ圧縮されるため、圧縮後は、N個のJNCBに、圧縮データセグメントが紐付けられるJNCBと圧縮データセグメントが紐付けられないJNCBとが混在する。
【0143】
N個のJNCBにq個の圧縮データセグメントを対応付ける方法について説明する。圧縮データセグメントaについては、圧縮前のデータセグメントの先頭アドレスのデータを管理していたJNCBによって管理する方法が考えられる。図18に示すJNCBから圧縮データセグメントへの破線矢印がこの関係を示している。JNLデータサイズが大きい場合など複数個の圧縮データセグメントが一つのJNCBに対応付くこともある。
【0144】
図19は、第3の実施形態に係るJNCBの構成例を示す。
【0145】
JNCB2523は、下記情報2249及び2251を更に含む。また、圧縮開始SEQ#2248及び終了開始SEQ#2250の定義が下記の通りとなる。
・圧縮開始SEQ#2248は、受付サイズTのデータの開始部分に対応したSEQ#を表す。
・開始オフセット2249は、圧縮開始SEQ#2248が表すSEQ#に対応したJNLデータの先頭からのオフセットを表す。
・圧縮終了SEQ#2250は、受付サイズTのデータの終了部分に対応したSEQ#を表す。
・終了オフセット2251は、圧縮終了SEQ#2250が表すSEQ#に対応したJNLデータの先頭からのオフセットを表す。
【0146】
第3の実施形態において、圧縮開始SEQ#2248、開始オフセット2249、圧縮終了SEQ#2250、終了オフセット2251は伸張したデータをJNCBに対応付けるために用いる。具体的には、圧縮データセグメントaを伸張しデータセグメントaとし、圧縮データセグメントbを伸張しデータセグメントbとしたときに、データセグメントaとデータセグメントbの一部を結合しJNLデータを回復することがある。圧縮開始SEQ#2248、開始オフセット2249、圧縮終了SEQ#2250、終了オフセット2251を用いて、各SEQ#に対応する圧縮前のデータの容易に特定することができる。
【0147】
一方で、圧縮開始SEQ#2248、開始オフセット2249、圧縮終了SEQ#2250、終了オフセット2251を使用しない方法も考えられる。具体例を説明する。全ての圧縮データセグメントを伸張し、伸張されたデータセグメントをSEQ#順に結合する。そして、結合したデータセグメントをJNCBに格納されているJNLデータサイズで分けることで、各JNCBのJNLデータを特定することができる。よって、図6に示したJNCBで第3の実施形態を実現することも可能である。
【0148】
図20は、第3の実施形態に係るJNL転送処理の処理フローを示す。ここでは、方式1~3のうち方式1を例に取る。
【0149】
図10のS504に代えてS2001~S2003が行われる。すなわち、正JNLリードプログラム22Aが、サイズTを決定し(S2001)、N個のJNLデータをサイズTで分割する(S2002)。これにより、それぞれがサイズTのq個のデータセグメントが得られる。正JNLリードプログラム22Aが、各データセグメントをアクセラレータ217に圧縮させる(S2003)。これにより、q個の圧縮データセグメントが得られる。なお、サイズTは、受付サイズ以下のサイズである分割サイズの一例でよい。N個のJNLデータが、分割サイズで分割される。本実施形態では、分割サイズと受付サイズは同じである。また、典型的には、受付サイズ及び分割サイズは、1個のJNLデータのサイズより大きい。このため、典型的には、qは、Nより小さい。
【0150】
S505では、正JNLリードプログラム22Aが、圧縮データセグメントに対応付けられたJNCBの圧縮後サイズを更新する。すなわち、N個のJNCBのうち、q個の圧縮データセグメントに対応したq個のJNCBの圧縮後サイズが更新される。典型的にはqはNより小さいため、N個のJNCBのうち、いずれの圧縮データセグメントにも関連付けられないJNCBもある。正JNLリードプログラム22Aは、N個のJNCBの各々の圧縮ビットをONしてもよい。副ストレージシステム200Bは、転送されたJNLデータ(q個の圧縮データセグメントで構成されたデータ)を、当該JNLデータに関連付けられているq個のJNCBの各々が表す圧縮後データサイズで分割することで、伸張対象となるq個の圧縮データセグメントを特定できる。圧縮開始SEQ#2248、開始オフセット2249、圧縮終了SEQ#2250、終了オフセット2251が使用される場合は、q個のJNCBの当該情報が更新される。
【0151】
S506では、N個のJNCBとq個の圧縮データセグメントが転送される。S605では、q個の圧縮データセグメントがそれぞれ副ストレージシステム200Bにおけるアクセラレータ217により伸張される。伸張処理において、副JNLリードプログラムは、q個のJNCBに格納されている圧縮後データサイズを取得する。転送されたJNLデータを圧縮後データサイズで分割し、分割した各JNLデータに対して伸張処理を実行する。伸張したデータを各JNCBに対応付ける処理は、第1の実施形態で説明した方法と同様である。
【0152】
第3の実施形態では、形成コピーにおける圧縮もアクセラレータ217により行われてよい。例えば、正ストレージシステム200Aに形成コピーソースプログラム21Aが備えられ、副ストレージシステム200Bに形成コピーターゲットプログラム21Bが備えられる。これらのプログラム21A及び21Bにより、PVOL26AからSVOL26Bへの形成コピーが行われる。なお、「形成コピー」とは、PVOL26AとSVOL26Bとのボリュームペアが構成された場合に、SVOL26Bの内容をPVOL26Aの内容と一致させるためにPVOL26AからSVOL26Bに行われる初期のデータコピーである。例えば、PVOL26Aに対して新たなSVOLがペア相手として関連付けられた場合に、PVOL26Aと新たなSVOLとの間で形成コピーが行われてよい。
【0153】
図21は、第3の実施形態に係る形成コピーの処理フローを示す。
【0154】
形成コピーソースプログラム21Aは、形成コピーの対象となるデータを決定し(S2101)、決定されたデータをPVOL26Aからリードする(S2102)。形成コピーソースプログラム21Aは、サイズTを決定し(S2103)、S2102でリードしたデータ全体をサイズTで分割し(S2104)、分割により得られた各データセグメントをアクセラレータ217に圧縮させる(S2105)。形成コピーソースプログラム21Aは、各データセグメントの圧縮後サイズをリストし(S2106)、圧縮後サイズのリストと、転送圧縮データ(複数の圧縮データセグメントから成るデータ)とが関連付けられた形成コピー要求を、副ストレージシステム200Bに転送する(S2107)。
【0155】
形成コピーターゲットプログラム21Bが、形成コピー要求を受信し(S2108)、当該形成コピー要求に応答して次の処理を行う。すなわち、形成コピーターゲットプログラム21Bが、圧縮後サイズのリストを基に転送圧縮データを各圧縮データセグメントに分割し(S2109)、各圧縮データセグメントを伸張し(S2110)、伸張されたデータをSVOL26Bにライトし(S2111)、完了を正ストレージシステム200Aに報告する(S2112)。
【0156】
図21の転送処理は、上述したようにRDJNLによって実現してもよいし、正ストレージシステムが副ストレージシステムへデータをライトすることによって実現してもよい。さらに、JNCBに各種情報(情報2240~2251の少なくとも一部)が格納されてもよい。ライト方式の場合、ライトコマンドのパラメタとして各種情報(情報2240~2251の少なくとも一部)がライトコマンドに関連付けられてもよい。
【0157】
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
<表現1>
正ボリュームを有する正ストレージシステムと、
前記正ボリュームとボリュームペアを構成する副ボリュームを有する副ストレージシステムと
を備え、
前記正ストレージシステムが、複数個のジャーナルにおける複数個のジャーナルデータの少なくとも一部であり一個のジャーナルデータのサイズより大サイズのデータの圧縮であるまとめ圧縮を行い、
まとめ圧縮されたデータであるまとめ圧縮データと、当該まとめ圧縮データに対応した複数個のメタデータとが、前記正ストレージシステムから前記副ストレージシステムへの転送対象であり、
ジャーナルは、ジャーナルデータと、当該ジャーナルデータのライト順番を含み当該ジャーナルデータに関連付けられたメタデータとで構成されており、
ジャーナルデータは、前記正ボリュームにライトされたデータの複製であり、
前記副ストレージシステムが、一個以上のまとめ圧縮データを伸張することで複数個のジャーナルデータを取得し、当該複数個のジャーナルデータを、複数個のメタデータそれぞれが表すライト順番に従い前記副ボリュームにライトする、
リモートコピーシステム。
<表現2>
ジャーナルI/O要求毎に、前記正ストレージシステムから前記副ストレージシステムに、N個のジャーナルにおけるN個(Nは2以上の整数)のメタデータと、前記まとめ圧縮データの少なくとも一部であり前記N個のメタデータに対応したデータとが転送され、
ジャーナルI/O要求は、前記副ストレージシステムから前記正ストレージシステムへのジャーナルのリード要求と、前記正ストレージシステムから前記副ストレージシステムへのジャーナルのライト要求とのいずれかである、
表現1に記載のリモートコピーシステム。
<表現3>
ジャーナルI/O要求毎に、前記正ストレージシステムが、N個のジャーナルデータをリードし、当該N個のジャーナルデータをまとめ圧縮し、
前記N個のメタデータに対応したデータは、当該まとめ圧縮されたN個のジャーナルデータである、
表現2に記載のリモートコピーシステム。
<表現4>
Nの値は、ジャーナル転送処理の必要最低限の多重度である必要多重度に基づいて決定された値であり、
前記ジャーナル転送処理は、ジャーナルI/O要求の送信の開始から副ストレージシステムにおいて当該ジャーナルI/O要求に従うデータが格納されるまでの処理である、
表現3に記載のリモートコピーシステム。
<表現5>
Nの値は、前記ジャーナル転送処理の多重度が前記必要多重度以上の範囲で最大の値である、
表現4に記載のリモートコピーシステム。
<表現6>
前記必要多重度は、前記正ストレージシステムと前記副ストレージシステム間の地理的な距離と帯域とのうちの少なくとも一つに基づく、
表現4に記載のリモートコピーシステム。
<表現7>
前記正ストレージシステムが、まとめ圧縮された複数個のジャーナルデータであるまとめ圧縮データを複数個のデータセグメントである複数個の圧縮データセグメントに分割し、
ジャーナルI/O要求毎に、前記正ストレージシステムから前記副ストレージシステムに、前記N個のメタデータと、前記まとめ圧縮データの少なくとも一部であり前記N個のメタデータに対応したN個の圧縮データセグメントとが転送され、
前記副ストレージシステムが、前記複数個の圧縮データセグメントを結合することで前記まとめ圧縮データを取得する、
表現2に記載のリモートコピーシステム。
<表現8>
まとめ圧縮されるジャーナルデータの数は、ジャーナル転送処理の多重度と、ジャーナルデータI/O要求一個当たりのジャーナルデータの数との積に基づき、
前記ジャーナル転送処理は、ジャーナルI/O要求の送信の開始から副ストレージシステムにおいて当該ジャーナルI/O要求に従うデータが格納されるまでの処理である、
表現7に記載のリモートコピーシステム。
<表現9>
各圧縮データセグメントのサイズは、まとめ圧縮データのサイズを前記ジャーナル転送処理の多重度で割ることにより算出される値に基づく、
表現8に記載のリモートコピーシステム。
<表現10>
前記正ストレージシステムが、前記副ストレージシステムへの転送の都度に、前記副ストレージシステムへ未転送の複数個のジャーナルを特定し、当該特定された複数個のジャーナルについて前記まとめ圧縮を行い、
前記まとめ圧縮が行われた各転送について、前記転送対象における前記複数個のメタデータの各々が、圧縮がされていることを意味する情報と、前記まとめ圧縮データのサイズである圧縮後サイズを表す情報とを含み、
前記転送対象におけるメタデータが、圧縮がされていることを意味する情報を含んでいる場合、前記副ストレージシステムが、当該メタデータが表す圧縮後サイズのまとめ圧縮データを伸張する、
表現1に記載のリモートコピーシステム。
<表現11>
前記正ストレージシステムの圧縮機能が受け付け可能なデータサイズの上限である受付サイズが決まっており、
前記正ストレージシステムが、前記複数個のジャーナルデータを、前記受付サイズ以下のサイズである分割サイズで分割し、
前記圧縮機能が、前記複数個のジャーナルデータが前記分割サイズで分割されることにより得られた複数個のデータセグメントをそれぞれ圧縮することで複数個の圧縮データセグメントを出力し、
前記まとめ圧縮データは、前記複数個の圧縮データセグメントで構成されたデータである、
表現1に記載のリモートコピーシステム。
<表現12>
圧縮データセグメントに対応したメタデータが、当該圧縮データセグメントの圧縮後サイズを表し、
前記副ストレージシステムが、前記まとめ圧縮データを、圧縮データセグメントのメタデータから特定される圧縮後サイズで分割することにより、前記複数個の圧縮データセグメントを取得し、当該複数個の圧縮データセグメントの各々を伸張する、
表現11に記載のリモートコピーシステム。
<表現13>
前記圧縮機能は、圧縮のアクセラレータである、
表現12に記載のリモートコピーシステム。
<表現14>
前記正ボリュームに前記副ボリュームがペア相手として関連付けられた場合に、前記副ボリュームの内容を前記正ボリュームの内容に一致させる形成コピーが行われるようになっており、
前記形成コピーにおいて、前記正ストレージシステムから前記副ストレージシステムへの転送の都度に、前記アクセラレータが、各データセグメントを圧縮する、
表現13に記載のリモートコピーシステム。
<表現15>
前記正ストレージシステムが、前記正ボリュームを指定したライト要求毎に、当該ライト要求に付随するデータを前記正ボリュームにライトすることと、当該データの複製であるジャーナルデータと当該ジャーナルデータのライト順番を含むメタデータとを格納することとを含んだライト処理を行い、
前記正ストレージシステムが、前記正ボリュームを指定した各ライト要求について、当該ライト要求の完了応答を、当該ライト要求に付随するデータのジャーナルデータの格納及びまとめ圧縮を待たずに行う、
表現1に記載のリモートコピーシステム。
<表現16>
前記副ストレージシステムが、ジャーナルリード要求を正ストレージシステムに送信し、
当該ジャーナルリード要求に応答して、前記正ストレージシステムから前記転送対象が前記副ストレージシステムに転送され、
前記転送対象における前記複数個のメタデータの各々が、前記まとめ圧縮データのサイズである圧縮後サイズを表す情報を含み、
前記副ストレージシステムが、前記転送対象における複数個のメタデータの各々が表す圧縮後サイズの前記まとめ圧縮データを伸張し、伸張されたデータを、前記副ボリュームにライトする、
表現1に記載のリモートコピーシステム。
<表現17>
正ボリュームを有する正ストレージシステムと、前記正ボリュームとボリュームペアを構成する副ボリュームを有する副ストレージシステムとが行うリモートコピー方法であって、
前記正ストレージシステムにより、複数個のジャーナルにおける複数個のジャーナルデータの少なくとも一部であり一個のジャーナルデータのサイズより大サイズのデータの圧縮であるまとめ圧縮を行い、
まとめ圧縮されたデータであるまとめ圧縮データと、当該まとめ圧縮データに対応した複数個のメタデータとが、前記正ストレージシステムから前記副ストレージシステムへの転送対象であり、
ジャーナルは、ジャーナルデータと、当該ジャーナルデータのライト順番を含み当該ジャーナルデータに関連付けられたメタデータとで構成されており、
ジャーナルデータは、前記正ボリュームにライトされたデータの複製であり、
前記副ストレージシステムにより、一個以上のまとめ圧縮データを伸張することで複数個のジャーナルデータを取得し、当該複数個のジャーナルデータを、複数個のメタデータそれぞれが表すライト順番に従い前記副ボリュームにライトする、
リモートコピー方法。
【符号の説明】
【0158】
200A:正ストレージシステム、200B:副ストレージシステム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22