(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024179710
(43)【公開日】2024-12-26
(54)【発明の名称】ストレージシステム及び記憶制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20241219BHJP
G06F 13/10 20060101ALI20241219BHJP
G06F 13/12 20060101ALI20241219BHJP
G06F 11/14 20060101ALI20241219BHJP
【FI】
G06F3/06 301W
G06F3/06 301X
G06F3/06 304F
G06F13/10 340A
G06F13/12 340C
G06F11/14 648
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023098762
(22)【出願日】2023-06-15
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】小関 英通
(72)【発明者】
【氏名】出口 彰
(72)【発明者】
【氏名】藤井 裕大
(57)【要約】
【課題】対象の圧縮方式がストレージシステムにサポートされていなくても、格納又は転送の対象データを当該圧縮方式で圧縮又は伸長する。
【解決手段】コントローラを備えたストレージシステムへデータを格納又は転送する場合、圧縮又は伸長のオフロード先とされ得る一つ又は複数のオフロードインスタンスであり、対象の圧縮方式をサポートしているインスタンスである選択オフロードインスタンスに、コントローラが、格納又は転送の対象データの圧縮又は伸長を実行させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コントローラを備えたストレージシステムにおいて、
当該ストレージシステムへデータを格納又は転送する場合に、
圧縮又は伸長のオフロード先とされ得る一つ又は複数のオフロードインスタンスであり、対象の圧縮方式をサポートしているインスタンスである選択オフロードインスタンスに、前記コントローラが、前記格納又は転送の対象データの圧縮又は伸長を実行させる、
ストレージシステム。
【請求項2】
前記ストレージシステムは、クラウド環境におけるストレージシステムであり、
前記コントローラは、他のストレージシステムとの間での転送対象データのデータ転送を行い、
前記コントローラは、前記データ転送において、
前記転送対象データの圧縮又は伸長に使用される圧縮方式が、自ストレージシステムでサポートされている圧縮方式ではない場合、前記選択オフロードインスタンスに、前記転送対象データの圧縮又は伸長を実行させる、
請求項1に記載のストレージシステム。
【請求項3】
前記転送対象データが、メタ部分とデータ部分で構成されたデータであり、
前記データ部分は、nの圧縮データであり(nは1以上の整数)、
前記nの圧縮データの各々は、転送対象データが圧縮されたデータであり、
前記メタ部分は、転送対象データの圧縮に使用された圧縮方式を表す情報を含み、
前記転送対象データを受信したコントローラは、
前記転送対象データのメタ部分から、前記転送対象データのnの圧縮データの伸長に必要な圧縮方式を特定し、
そのnの圧縮データの各々がその特定された圧縮方式で伸長されたデータを格納する、
請求項2に記載のストレージシステム。
【請求項4】
前記転送対象データは、前記他のストレージシステムから前記ストレージシステムに転送されるデータであり、
前記オフロードインスタンスは、圧縮された前記転送対象データの伸長を行う
請求項2に記載のストレージシステム。
【請求項5】
前記ストレージシステムの前記コントローラから前記他のストレージシステムにデータが転送され、
前記オフロードインスタンスは、圧縮された転送対象データの伸長を行う
請求項1に記載のストレージシステム。
【請求項6】
前記他のストレージシステムは、前記対象の圧縮方式をサポートしておらず、
前記ストレージシステム及び前記他のストレージシステムのそれぞれが、それぞれのオフロードインスタンスを用いて転送対象データの圧縮又は伸長を行う
請求項1に記載のストレージシステム。
【請求項7】
前記ストレージシステムは、クラウド環境におけるストレージシステムであり、
ホストからデータ入出力要求を受けてデータを格納又は転送する場合に、前記コントローラが、前記選択オフロードインスタンスに、格納しているデータの圧縮又は伸長を実行させる
請求項1に記載のストレージシステム。
【請求項8】
前記ストレージシステムは、クラウド環境におけるストレージシステムであり、
前記データを格納又は転送とは非同期で、前記コントローラが、前記選択オフロードインスタンスに、格納しているデータの圧縮又は伸長を実行させて、再格納する
請求項1に記載のストレージシステム。
【請求項9】
前記他のストレージシステムが、コピー元ボリュームとしての正ボリュームを有し、
前記ストレージシステムが、コピー先ボリュームとしての副ボリュームを有し、
前記データ転送は、前記正ボリュームに対するデータのライトのライト処理とは非同期に行われる非同期リモートコピーであり、
前記転送対象データは、ジャーナルであり、
前記nの圧縮データの各々は、前記正ボリュームにライトされるデータの複製としてのジャーナルデータが圧縮されたデータである圧縮ジャーナルデータであり、
前記メタ部分は、nのジャーナルデータ毎のメタデータであり、ジャーナルデータの圧縮に使用された圧縮方式を表す情報を含み、
前記圧縮/伸長判定の結果が偽の場合、前記選択オフロードインスタンスは、前記メタ部分が表す圧縮方式がサポートされているオフロードインスタンスである、
請求項3に記載のストレージシステム。
【請求項10】
前記他のストレージシステムは、前記非同期リモートコピーが通常コピーの場合、前記のストレージシステムでサポートされている複数の圧縮方式のうち、前記他のストレージシステムと前記ストレージシステムに共通の圧縮方式で転送対象のジャーナルデータを圧縮し、
前記通常コピーは、形成コピーの後に前記正ボリュームにライトされるデータを前記副ボリュームにコピーすることであり、
前記形成コピーは、前記正ボリュームの全てのデータを前記副ボリュームにコピーすることである、
請求項9に記載のストレージシステム。
【請求項11】
前記他のストレージシステムは、前記非同期リモートコピーが通常コピーの場合、
ジャーナルデータの蓄積率が閾値以下か否かを判定し、
前記蓄積率が前記閾値以下の場合、前記他のストレージシステムでサポートされている複数の圧縮方式のうちの第1の圧縮方式で、転送対象のジャーナルデータを圧縮し、
前記蓄積率が前記閾値を超えている場合、前記複数の圧縮方式のうち、前記第1の圧縮方式より圧縮率が高い第2の圧縮方式で、転送対象のジャーナルデータを圧縮し、
前記通常コピーは、形成コピーの後に前記正ボリュームにライトされるデータを前記副ボリュームにコピーすることであり、
前記形成コピーは、前記正ボリュームの全てのデータを前記副ボリュームにコピーすることであり、
前記蓄積率は、ジャーナルデータが記憶される記憶領域の容量に対する、その記憶領域におけるジャーナルデータの総容量の割合である、
請求項9に記載のストレージシステム。
【請求項12】
前記圧縮/伸長判定の結果が偽の場合、
前記選択オフロードインスタンスは、前記メタ部分が表す圧縮方式の他に、前記他のストレージシステムと前記ストレージシステムに共通の圧縮方式もサポートしているオフロードインスタンスであり、
前記コントローラは、前記選択オフロードインスタンスから、前記メタ部分が表す圧縮方式で伸長され前記共通の圧縮方式で圧縮されたデータを受信し、その圧縮されたデータを前記副ボリュームに格納する、
請求項9に記載のストレージシステム。
【請求項13】
前記コントローラは、
他のストレージシステムとの間でのデータ転送の前に、前記一つ又は複数のオフロードインスタンスを起動し、
前記データ転送の完了後、起動されたオフロードインスタンスを停止する、
請求項1に記載のストレージシステム。
【請求項14】
前記コントローラは、前記一つ又は複数のオフロードインスタンスのうちそれぞれ起動中のオフロードインスタンスである一つ以上の起動中インスタンスのプロセッサ負荷に基づき、起動中インスタンスの数を変更する、
請求項1に記載のストレージシステム。
【請求項15】
ストレージシステムへデータを格納又は転送する場合に、圧縮又は伸長のオフロード先とされ得る一つ又は複数のオフロードインスタンスであり、対象の圧縮方式をサポートしているインスタンスである選択オフロードインスタンスに、前記ストレージシステムのコントローラにより、前記格納又は転送の対象データの圧縮又は伸長を実行させる、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、記憶制御に関する。
【背景技術】
【0002】
ストレージ間(ストレージシステム間)のデータ転送として、例えば、圧縮リモートコピー(圧縮データのリモートコピー)がある。圧縮リモートコピーに関して、特許文献1に開示の技術が知られている。特許文献1によれば、第1のストレージは、第2のストレージが実行可能な圧縮方式でデータを圧縮し、圧縮データを第2のストレージに転送する。つまり、第1及び第2のストレージにおいて共通の圧縮方式がサポートされている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、クラウドストレージ(クラウド環境(典型的にはパブリッククラウド環境)に実現されたストレージシステム)にデータをコピーするケースが増えている。このデータコピーが、圧縮リモートコピーであることが考えられる。
【0005】
しかし、コピー元ストレージ(コピー元のストレージシステム)でサポートされている圧縮方式がクラウドストレージでサポートされているとは限らない。
【0006】
例えば、オンプレミスストレージ(コピー元ストレージの一例)の正ボリュームからクラウドストレージの副ボリュームにデータをコピーすることが行われる。クラウドストレージには圧縮方式Aがサポートされており、オンプレミスストレージには、圧縮方式Aの他に、圧縮方式Aよりもデータの圧縮率が高い圧縮方式Bもサポートされているとする。オンプレミスストレージにおいて、正ボリュームからのコピー対象のデータは、圧縮方式Bにより圧縮されることが望ましい。転送されるデータの総量を削減でき、以って、コピーに要する時間の短縮及びネットワークの負荷軽減や消費電力低減が期待されるためである。しかし、圧縮方式Bがクラウドストレージでサポートされていない場合、圧縮方式Bに従い圧縮されたデータが副ボリュームにコピーされても、クラウドストレージは、副ボリューム内の圧縮データを伸長して提供することができない。
【0007】
このように、圧縮リモートコピーの実現のためには、コピー元ストレージとコピー先ストレージに共通の圧縮方式がサポートされている必要がある。
【0008】
この種の課題は、クラウドストレージがコピー先ストレージである場合に限らず、例えば、クラウドストレージがコピー元ストレージである場合も同様である。また、この種の課題は、データ転送がリモートコピーである場合に限らず、例えば、クラウドストレージが、バックアップされたデータのリストア先ストレージである場合も同様である。
【0009】
また、上述の背景や課題は、リモートコピーを例に取ったものであるが、リモートコピーのようなデータ転送以外の用途でも、この種の課題があり得る。例えば、ホストからのデータ入出力の場合において、対象の圧縮方式がストレージにサポートされていなくても、格納の対象データを当該圧縮方式で圧縮又は伸長することが望ましいケースがあり得る。
【課題を解決するための手段】
【0010】
コントローラを備えたストレージシステムへデータを格納又は転送する場合、圧縮又は伸長のオフロード先とされ得る一つ又は複数のオフロードインスタンスであり、対象の圧縮方式をサポートしているインスタンスである選択オフロードインスタンスに、コントローラが、格納又は転送の対象データの圧縮又は伸長を実行させる。
【発明の効果】
【0011】
本発明によれば、対象の圧縮方式がストレージシステムにサポートされていなくても、格納又は転送の対象データを当該圧縮方式で圧縮又は伸長することができる。上記した以外の課題、構成及び効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施形態に係るデータ転送システムを含むシステム全体の構成例を示す。
【
図7】C-JNL(圧縮JNL)とP-JNL(平文JNL)との対応関係の例を示す。
【
図11】オフロードインスタンス管理テーブルの構成例を示す。
【
図21】オフロードリソース量調整処理の流れを示す。
【
図22】第2の実施形態に係るアルゴリズム選択テーブルの構成例を示す。
【
図23】第4の実施形態に係るリモートコピーの例の概要を模式的に示す。
【
図26】第5の実施形態に係るオフロードインスタンスの構成例を示す。
【発明を実施するための形態】
【0013】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。その一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0014】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0015】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
【0016】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0017】
また、以下の説明では、処理の実行主体をプログラムとして処理を説明することがあるが、プログラムはプロセッサによって実行されるため(典型的には、プログラムがプロセッサに実行されることによって行われる処理は、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため)、プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各プログラムの説明は一例であり、複数のプログラムが1つのプログラムにまとめられたり、1つのプログラムが複数のプログラムに分割されたりしてもよい。
【0018】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られるデータを説明することがあるが、そのデータは、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxxデータ」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0019】
「VOL」は、論理ボリュームの略であり、提供される論理的な記憶領域である。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを提供するストレージが有する物理的な記憶資源(例えば、一つ以上のPDEV)に基づくVOLでよい。「VVOL」は、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。「PDEV」は、物理的な記憶デバイス(例えば、永続記憶デバイス)でよい。
【0020】
また、以下の説明では、要素の識別情報として、ID又は番号が採用されるが、識別情報の例はそれらに限られないでよい。
【0021】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
【0022】
図1は、第1の実施形態に係るデータ転送システムを含むシステム全体の構成例を示す。
【0023】
本実施形態に係るデータ転送システムは、リモートコピーシステムであり、正ストレージ110Pと、副ストレージ110Sとを有する。クラウド102に、一つ又は複数のオフロードインスタンス150が備えられる。
【0024】
正ストレージ110Pは、オンプレミスDC(データセンタ)101におけるオンプレミスのストレージシステムである。正ストレージ110Pをクラウドストレージで構成してもよい。正ストレージ110Pは、PCTL11P及びPVOL10Pを有する。PCTL11Pは、正ストレージ110Pのコントローラであり、例えばメモリ及びCPUを含む。PCTL11Pには、C-Algo1とC-Algo2がサポートされている。「C-Algo」は、圧縮アルゴリズム(圧縮方式の一例)である。C-Algo2の圧縮率は、C-Algo1の圧縮率よりも高い。PVOL10Pは、コピー元のVOLである。
【0025】
副ストレージ110Sは、クラウド102にある。クラウド102は、クラウド環境であり、典型的には、パブリッククラウド環境である。このため、副ストレージ110Sは、クラウド102におけるSDS(Software Defined Storage)である。副ストレージ110Sは、SCTL11S及びSVOL10Sを有する。SCTL11Sは、副ストレージ110Sのコントローラとしての機能であり、例えば仮想的なメモリ及び仮想的なCPUを含む。SCTL11Sには、C-Algo1がサポートされている。SVOL10Sは、コピー先のVOLである。
【0026】
オフロードインスタンス150は、クラウド102のコンピュートサービスである。本実施形態において、オフロードインスタンス150は、圧縮及び/又は伸長用のインスタンスであり、任意のC-Algoをサポートしている。オフロードインスタンス150は、典型的には、副ストレージ110Sの機能を補完する機能であり、このため、副ストレージ110SでサポートされていないC-Algo(例えばC-Algo2)をサポートしている。
【0027】
正ストレージ110PのPVOL10Pと副ストレージ110SのSVOL10Sが、リモートコピーの関係にある(VOLペアを構成する)。正ストレージ110Pと副ストレージ110S間でC-Algoの互換性はない。具体的には、副ストレージ110Sでは、正ストレージ110PでサポートされているC-Algo1はサポートされているものの、正ストレージ110PでサポートされているC-Algo2(C-Algo1より圧縮率の高いC-Algo)はサポートされていない。
【0028】
PVOL10Pにおけるリモートコピー対象の平文30Pは、正ストレージ110Pで圧縮されることにより圧縮文30Cとされ、通信ネットワーク50(例えばインターネット)を介して副ストレージ110Sに転送される。圧縮文30Cは、メタデータとデータ本体とを含む。データ本体は、平文30Pにおける平文データの圧縮データである。メタデータは、圧縮文30Cに関する情報を含み、例えば、下記を含む。
・cmd:リモートコピー(例えば後述の形成コピー)を意味する情報。
・algo:圧縮に使用されたC-Algoの識別情報。
・Vol#:SVOL10S(及び/又はPVOL10P)のVOL番号。
・LBA:SVOL10Sにおけるコピー先領域(及び/又はPVOL10Pにおけるコピー元領域)を表すLBA(Logical Block Address)。
・P-len:平文データのデータ長。
・C-len:圧縮データのデータ長。
【0029】
図1に例示のオフロードインスタンス150は、例えば、管理端末2から設定されてよい。管理端末2は、クラウド102やオンプレミスDC101の管理コンソール(例えばクライアント)と通信する計算機でよい。
【0030】
本実施形態に係るリモートコピーの流れの概要は、例えば以下の通りである。
【0031】
管理端末2が、リモートコピー指示を、正ストレージ110P及び/又は副ストレージ110Sに送信する。正ストレージ110P及び副ストレージ110Sの各々は、リモートコピー指示を、管理端末2から、別のストレージ経由又は非経由で受ける。正ストレージ110P及び副ストレージ110Sは、リモートコピー指示を受けて、形成コピー(PVOL10PからSVOL10Sへの初期コピー)を開始する。
【0032】
このとき、正ストレージ110PのPCTL11Pは、C-Algo2(例えば、最も圧縮率に優れるC-Algo)で、PVOL10Pの平文30Pを圧縮し、圧縮文30Cを副ストレージに転送する(S101)。なお、圧縮文30Cの転送に先立ち、正ストレージ110Pは、副ストレージ110Sに対して、形成コピーの開始と使用C-Algoの識別情報を通知してよい。副ストレージ110Sは、このような通知を受領した後、使用C-Algoをサポートしているオフロードインスタンス150を起動してよい。
【0033】
副ストレージ110SのSCTL11Sは、圧縮文30Cを受信し、圧縮文30Cのメタデータのalgoから、副ストレージ110S自身で圧縮データの伸長が可能か否かを判定する(S102)。ここでは、S102の判定結果は偽である。algoから同定されるC-Algo2は、副ストレージ110SでサポートされていないC-Algoであるからである。
【0034】
S102の判定結果が偽の場合、SCTL11Sが、algoから同定されるC-Algo2をサポートしているオフロードインスタンス150に、圧縮文30Cが関連付けられた伸長依頼を送信する(S103)。その伸長依頼を受けたオフロードインスタンス150は、その伸長依頼に関連付いている圧縮文30Cの圧縮データをC-Algo2で伸長し、伸長データである平文30Pを、副ストレージ110Sに転送する(S104)。
【0035】
副ストレージ110SのSCTL11Sが、自身が備えるC-Algo1で平文30Pを圧縮してSVOL10Sに圧縮データを格納する(S105)。なお、S105において、圧縮はされず、平文データがSVOL10Sに格納されてもよい。
【0036】
以下、本実施形態を詳細に説明する。
【0037】
【0038】
正ストレージ110Pは、PCTL11Pと、複数のドライブ220とを有する。ドライブ220は、永続記憶デバイスの一例である。
【0039】
PCTL11Pは、冗長化されたコントローラ201を有する。コントローラ201は、FE-IF212、BE-IF214、M-IF213、アクセラレータ211、メモリ215及びそれらに接続されたCPU216を有する。
【0040】
FE-IF212は、フロントエンドのインターフェースデバイスであり、ホスト51と通信する。ホスト51は、I/O要求の送信元の一例でよく、物理的な計算機でもよいし論理的な計算機(例えば仮想マシン)でもよい。BE-IF214は、バックエンドのインターフェースデバイスであり、各ドライブ220と通信する。M-IF213は、管理端末2と通信するインターフェースデバイスである。アクセラレータ211は、C-Algoを用いた圧縮及び伸長を実行するハードウェアである。メモリ215は、ドライブ220に格納されるデータを一時的に記憶したり、CPU216に実行されるプログラムを記憶したりする。CPU216は、プログラムを実行することで、VOLへのI/Oや副ストレージ110Sへのリモートコピーを行う。アクセラレータ211が無くてもよく、その場合、圧縮及び伸長はCPU216により実行されてよい。
【0041】
複数のドライブ220に基づくPVOL10PのようなVOLがPCTL11Pにより管理される。例えば、CPU216が、PVOL10Pをホスト51に提供する。CPU216が、PVOL10Pを指定したI/O(Input/Output)要求をFE-IF212通じて受信し、そのI/O要求に従うデータのI/OをPVOL10P(PVOL10Pの基になっている複数のドライブ220)に対し行う。CPU216は、I/O対象のデータをメモリ215にキャッシュしてよい。また、CPU216は、形成コピーにおいて、PVOL10Pのデータをアクセラレータ211により任意のC-Algoで圧縮させ副ストレージ110Sに圧縮文を転送する。また、CPU216は、通常コピー(更新コピー)において、PVOL10Pへのライトデータ(ライト対象のデータ)を、アクセラレータ211により任意のC-Algoで圧縮させ副ストレージ110Sに圧縮文を転送する。
【0042】
【0043】
副ストレージ110Sは、一つ以上のノード(典型的には論理的なノード)で構成されたスケールアウト型のストレージである。一つ以上のノードは、コントローラノード385とストレージノード351とに大別される。
【0044】
ストレージノード351は、クラウドストレージサービス352(例えばブロックストレージサービス又はオブジェクトストレージサービス)である。クラウドストレージサービス352は、ドライブ353を提供する。一つ以上のクラウドストレージサービス352の一つ以上のドライブ353に基づく論理的な記憶領域が、SVOL10SのようなVOLでよい。
【0045】
SCTL11Sとして、一つ以上のコントローラノード385を有する。コントローラノード385は、クラウドコンピュートサービス310(インスタンス)である。クラウドコンピュートサービス310は、インターフェース349、メモリ301、及び、それらに接続されたCPU302を含む。インターフェース349、メモリ301及びCPU302は、クラウド102の物理的なインターフェース装置、メモリ及びプロセッサに基づく論理的なコンポーネントでよい。
【0046】
インターフェース349は、例えば、別のコントローラノード385、ストレージノード351及びオフロードインスタンス150と通信する。メモリ301は、一つ以上のテーブルであるTables312と、一つ以上のプログラムであるPrograms311とを含む。Programs311がCPU302により実行される。CPU302が、ホスト51(
図2参照)又は別のホストからSVOL10S(又はその複製VOL)を指定したI/O要求を受け、そのI/O要求に従うデータのI/Oを、そのI/O要求で指定されたVOL(一つ以上のクラウドストレージサービス352の一つ以上のドライブ353に基づくVOL)に対し行ってよい。CPU302は、リード対象のデータが圧縮データの場合、圧縮データを、副ストレージ110SでサポートされているC-Algoで伸長して(又はオフロードインスタンス150に圧縮データの伸長を実行させて)、伸長データをホストに提供してよい。
【0047】
図4は、オフロードインスタンス150の構成例を示す。
【0048】
オフロードインスタンス150は、一つ以上のクラウドコンピュートサービス400である。クラウドコンピュートサービス400は、インターフェース449、メモリ401、及び、それらに接続されたCPU402を含む。インターフェース449、メモリ401及びCPU402は、クラウド102の物理的なインターフェース装置、メモリ及びプロセッサに基づく論理的なコンポーネントでよい。
【0049】
インターフェース449は、例えば副ストレージ110S(例えばコントローラノード385)と通信する。メモリ401は、オフロード処理プログラム413と、サポートされているC-Algoを実行する圧縮プログラム411及び伸長プログラム412とを有する。オフロード処理プログラム413は、副ストレージ110Sから圧縮又は伸長の指示を受け付けて圧縮プログラム411又は伸長プログラム412を呼び出すインターフェースプログラムでよい。CPU402が、それらのプログラム411~413を実行する。
【0050】
【0051】
正ストレージ110Pが、バッファ501P1及び501P2と、PVOL10Pと、JVOL10JPとを有する。バッファ501P1及び501P2の各々は、PCTL11P内の記憶領域(例えばメモリ215)に設けられる。バッファ501P1には、平文データやP-JNL(平文JNL)が格納される。バッファ501P2には、C-JNL(圧縮JNL)が格納される。JVOL10JPは、JNL(ジャーナル)が格納されるVOLである。なお、P-JNLが、
図1に示した平文30Pの一例であり、C-JNLが、
図1に示した圧縮文30Cの一例である。JNLは、N個(Nは1以上の整数)のデータセットを含む。データセットは、JNCB(Journal Control Block)とJNLデータで構成される。JNCBは、メタデータの一例である。JNLデータは、データ本体の一例である。
【0052】
副ストレージ110Sが、バッファ501Sと、SVOL10Sと、JVOL10JSとを有する。バッファ501Sは、SCTL11S内の記憶領域(例えばメモリ301)に設けられる。バッファ501Sには、平文データやP-JNLやC-JNLが格納される。JVOL10JSは、JNL(JNCB及びJNLデータ)が格納されるVOLである。
【0053】
オフロードインスタンス150が、バッファ5010を有する。バッファ5010は、オフロードインスタンス150内の記憶領域(例えばメモリ401)に設けられる。バッファ5010には、P-JNLやC-JNLが格納される。
【0054】
本実施形態において、リモートコピーは、いわゆる非同期リモートコピーである。具体的には、例えば、ホスト51からのライト要求に従いPVOL10Pにライトされるデータが副ストレージ110SのSVOL10Sにライトされていなくても(コピーされていなくても)、正ストレージ110Pがホスト51にライト要求に対する完了応答を返す。リモートコピーの対象データは、JVOL10JP及び10JSを経由してSVOL10Sにコピーされる。JVOL10JP及び10JSの一方が無くてもよい。或いは、JVOL10JP及び10JSの少なくとも一つとしての領域がメモリに設けられてもよい。JVOL10JPは、一つ以上のPVOL10Pに共有されてよく、JVOL10JSは、一つ以上のSVOL10Sに共有されてよい。
【0055】
PCTL11Pが、PVOL10PにライトされるデータをJNLデータとしてJVOL10JPに格納し、そのJNLデータのメタデータとしてのJNCBもJVOL10JPに格納する。
【0056】
リモートコピーでは、PCTL11Pが、JVOL10JPから、N個のデータセット(JNCBとJNLデータ)をリードし、N個のデータセットで構成されたP-JNLをバッファに501P1に作成する。PCTL11Pは、P-JNLのデータ部分(N個のデータセットにおけるJNLデータ)を、任意のC-Algoで圧縮してC-JNLをバッファ501P2に作成する。PCTL11Pは、C-JNLを副ストレージ110Sに転送する。C-JNLのメタ部分(典型的にはN個のJNCB)には、使用されたC-Algoの識別情報が記録される。
【0057】
C-JNLを受け取った副ストレージ110SのSCTL11Sは、C-JNLをバッファ501Sに格納し、C-JNLのメタ部分からC-Algoを同定し、同定されたC-Algoが副ストレージ110Sでサポートされているか否かを判定する。この判定の結果が偽の場合、SCTL11Sは、同定されたC-Algoがサポートされているオフロードインスタンス150に、C-JNLを関連付けた伸長依頼(C-JNLのデータ部分の伸長の依頼)を送信する。オフロードインスタンス150が、その伸長依頼に応答して、その伸長依頼に関連付いているC-JNLをバッファ5010に格納し、C-JNLのデータ部分を、自身にサポートされているC-Algoで伸長する。オフロードインスタンス150は、C-JNLのメタ部分と、伸長されたデータ部分とを含んだP-JNLをバッファ5010に格納し、伸長依頼に対する応答として、そのP-JNLを副ストレージ110Sに返す。
【0058】
副ストレージ110SのSCTL11Sは、オフロードインスタンス150からのP-JNLをバッファ501Sに格納する。SCTL11Sは、P-JNLにおけるN個のデータセット(JNCB及び伸長されたJNLデータ)をJVOL10JSに格納する。その後、SCTL11Sは、JNCBの内容に従って、JNLデータをSVOL10Sに格納する。これにより、PVOL10PにライトされるデータのSCTL11Sへのリモートコピーが完了する。なお、PVOL10P、及び/又は、SVOL10Sには、圧縮されたデータが格納されてもよい。JVOL10JP及び10JSの各々には、伸長されたデータが格納されてよい。
【0059】
【0060】
JOVL10Jは、JNCBが格納されるJNCBエリア601と、JNLデータが格納されるJNLデータエリア602とを有する。JNCBとJNLデータが1対1に対応する。
【0061】
【0062】
JNCB651は、JNCB#611、PVOLアドレス612、JNLデータサイズ613、JVOL格納開始アドレス614、圧縮ビット615、圧縮後サイズ616、C-Algo#617、及び、有効/無効ビット618といった情報を有する。
【0063】
JNCB#611は、JNCBの識別番号を表す。JNCB#611は、例えば、JNCBの通し番号又はタイムスタンプでよい。JNCB#611の順序で(例えばPVOL10Pにデータが格納された順序と同じ順序で)、JVOL10JSからデータがSVOL10Sに格納されてよい。
【0064】
PVOLアドレス612は、PVOL10PのVOL番号と、PVOL10Pにおけるコピー元領域のLBAとを表す。JNLデータサイズ613は、対応するJNLデータ(平文データ)のサイズ(データ長)を表す。JVOL格納開始アドレス614は、JNLデータエリア602における格納領域(対応するJNLデータが格納される領域)の開始アドレス(LBA)を表す。圧縮ビット615は、対応するJNLデータが圧縮されているか否かを表す。圧縮後サイズ616は、対応するJNLデータの圧縮データのサイズ(データ長)を表す。C-Algo#617は、対応するJNLデータの圧縮に使用されたC-Algoの識別情報を表す。有効/無効ビット618は、このJNCBが有効か無効かを表す。有効/無効ビット618について、“有効”は、このJNCBとこのJNCBに対応のJNLデータが副ストレージ110Sへの転送対象であることを意味する。このJNCBとこのJNCBに対応のJNLデータが副ストレージ110Sへ転送された場合、PCTL11Pが、このJNCBの有効/無効ビット618を“有効”から“無効”に更新してよい。
【0065】
図7は、C-JNLとP-JNLとの対応関係の例を示す。
【0066】
C-JNL及びP-JNLの各々は、メタ部分とデータ部分とに論理的に区別される。JNCBとJNLデータは入れ子構造でもよい。メタ部分は、N個のJNCBの集合であり、データ部分は、N個のJNLデータの集合である。JNCBとJNLデータが1:1に対応している。
【0067】
P-JNLのうちデータ部分が圧縮対象である。すなわち、圧縮の前後において、メタ部分のサイズは変わらないが、データ部分のサイズは、各JNLデータが圧縮されるため変わる。すなわち、圧縮後、PCTL11Pが、JNCBの圧縮ビット615を“1”(圧縮済を意味する値)に更新し、圧縮後サイズ616を、対応するC-Data(圧縮されたJNLデータ)のサイズを表す値に更新し、C-Algo#617を、その圧縮に使用されたC-Algoの識別情報に更新する。
【0068】
以下、幾つかのテーブルを説明する。
【0069】
【0070】
ペア管理テーブル800は、正ストレージ110Pのメモリ215に格納されるテーブルである。ペア管理テーブル800は、どのVOLがどのVOLとVOLペアを構成しているかを表す。例えば、ペア管理テーブル800は、VOLペア毎にレコードを有する。レコードは、コピー元VOL#801、コピー先ストレージID802、コピー先VOL#803及びペア状態804といった情報を有する。
【0071】
コピー元VOL#801は、PVOL10PのVOL番号を表す。コピー先ストレージID802は、SVOL10Sを有するストレージのIDを表す。コピー先VOL#803は、SVOL10SのVOL番号を表す。
【0072】
ペア状態804は、VOLペアの状態を表す。例えば、“SMPL”は、形成コピー前の状態を意味する。“COPY”は、形成コピー中の状態を意味する。“PAIR”は、形成コピー完了後の状態(通常コピー状態(ホストから受領したライトデータのみをコピーすることになっている状態))を意味する。
【0073】
図9は、アルゴリズム管理テーブル900の構成例を示す。
【0074】
アルゴリズム管理テーブル900は、正ストレージ110Pのメモリ215に格納されるテーブルである。アルゴリズム管理テーブル900は、正ストレージ110Pと副ストレージ110Sとのペア毎に用意されてもよい。アルゴリズム管理テーブル900は、JNL圧縮時に使用されるC-Algoを表す。例えば、アルゴリズム管理テーブル900は、形成コピー901及び通常コピー902といった情報を有する。
【0075】
形成コピー901は、形成コピーにおいて使用されるC-Algoの識別情報を表す。通常コピー902は、通常コピーにおいて使用されるC-Algoの識別情報を表す。
【0076】
図10は、VOL管理テーブル1000の構成例を示す。
【0077】
VOL管理テーブル1000は、正ストレージ110Pのメモリ215に格納されるテーブルである。VOL管理テーブル1000は、PVOL10P内のどの領域まで形成コピーが完了したかを表す。例えば、VOL管理テーブル1000は、PVOL10P毎にレコードを有し、レコードは、PVOL10PのVOL番号を表す情報であるVOL#1001の他に、スロット毎のサブレコードを有する。サブレコードは、スロット#1002、開始LBA1003及びコピー状態1004といった情報を有する。
【0078】
「スロット」とは、VOLにおける単位領域(所定サイズ(例えば256KB)の領域)である。スロット#1002は、スロットの番号を表す。開始LBA1003は、PVOL10Pの先頭LBAからのオフセットを表す。コピー状態1004は、スロット内のデータのコピーが済んだか否かを表す。
【0079】
例えば、形成コピーは、スロット単位でスロット#の若い順にデータが転送される。副ストレージ110Sへの転送が完了したスロットに対応のコピー状態1004は、“未”から“済”に更新される。PVOL10Pの全スロットのコピー状態1004が“未”の場合、ペア状態804が“SMPL”である。PVOL10Pについて、コピー状態1004“未”とコピー状態1004“済”が混在している場合、ペア状態804が“COPY”である。PVOL10Pの全スロットのコピー状態1004が“済”の場合、ペア状態804が“PAIR”である。
【0080】
図11は、オフロードインスタンス管理テーブル1100の構成例を示す。
【0081】
オフロードインスタンス管理テーブル1100は、Tables312(
図3参照)に含まれるテーブルである。オフロードインスタンス管理テーブル1100は、管理端末2から設定されてよい。オフロードインスタンス管理テーブル1100は、副ストレージ110Sが使用可能なオフロードインスタンス150の一覧である。例えば、オフロードインスタンス管理テーブル1100は、オフロードインスタンス150毎にレコードを有する。レコードは、インスタンスID1101、IPアドレス1102、CPUタイプ1103、コア数1104、メモリサイズ1105、C-Algo#1106及び状態1107といった情報を有する。
【0082】
インスタンスID1101は、オフロードインスタンス150のIDを表す。IPアドレス1102は、オフロードインスタンス150のIPアドレスを表す。CPUタイプ1103は、オフロードインスタンス150のCPU402(具体的には、例えば、CPU402の基になる物理的なCPU)のタイプ(例えば性能)を表す。コア数1104は、オフロードインスタンス150のCPU402のCPUコア(具体的には、例えば、CPU402の基になる物理的なCPUコア)の数を表す。メモリサイズ1105は、オフロードインスタンス150のメモリ401(具体的には、例えば、メモリ401の基になる物理的なメモリ)のサイズを表す。C-Algo#1106は、オフロードインスタンス150でサポートされている一つ以上のC-Algoの各々の識別情報を表す。
【0083】
状態1107は、オフロードインスタンス150が起動しているか停止しているかを表す。状態1107“起動”は、オフロードインスタンス150が起動状態(稼働状態)であり、故に、そのオフロードインスタンス150について課金がされている状態(例えば、オフロードインスタンス150に基づく物理的なリソースが消費されている状態)を意味する。状態1107“停止”は、オフロードインスタンス150が停止状態であり、故に、そのオフロードインスタンス150について課金が生じていない状態(例えば、オフロードインスタンス150に基づく物理的なリソースが消費されていない状態)を意味する。
【0084】
図12は、サポート管理テーブル1200の構成例を示す。
【0085】
サポート管理テーブル1200のTables312(
図3参照)に含まれるテーブルである。サポート管理テーブル1200は、副ストレージ110Sと副ストレージ110Sが使用可能な一つ以上のオフロードインスタンス150でサポートされているC-Algoの一覧を表す。例えば、サポート管理テーブル1200は、C-Algo毎にレコードを有する。レコードは、C-Algo#1201、圧縮率1202、CPU負荷1203及びサポート先1204といった情報を有する。
【0086】
C-Algo#1201は、C-Algoの識別情報を表す。圧縮率1202は、C-Algoの圧縮率(例えば、低、中又は高といった圧縮率レベル、或いは、圧縮率の平均値)を表す。任意の値が採用されてよい。CPU負荷1203は、C-Algoの実行にかかるCPU負荷の大きさ(例えば、小、中又は大といった負荷レベル、或いは、CPU使用率の平均値)を表す。サポート先1204は、C-Algoをサポートしているコントローラノード385の識別情報及び/又はオフロードインスタンス150の識別情報を表す。
【0087】
以下、本実施形態で行われる処理の例を説明する。
【0088】
【0089】
PCTL11Pは、PVOL10Pを指定したライト要求をホスト51から受信した場合(S1301:Yes)、ライト要求に従うデータをメモリ215にキャッシュし(S1302)、ホスト51に完了応答を返す(S1303)。
【0090】
PCTL11Pは、PVOL10Pを指定したリード要求をホスト51から受信した場合(S1301:No且つS1304:Yes)、リード要求に従うデータをPVOL10Pからメモリ215にリードし、メモリ215にリードされたデータをホスト51に応答(転送)する(S1305)。
【0091】
S1303の後、S1305の後、又は、S1304:Noの場合(PCTL11Pがライト要求もリード要求も受信していない場合)、リモートコピー処理が行われる(S1306)。リモートコピー処理は、コピー準備処理(S1351)、JNL作成処理(S1352)、JNL転送処理(S1353)及び応答刈取り処理(S1354)を含む。
【0092】
S1306の後、PCTL11Pは、メモリ215におけるダーティデータ(PVOL10Pに未格納のキャッシュされているデータ)をPVOL10Pに格納する(S1307)。正ストレージ110Pの停止要求が無ければ(S1308:No)、処理がS1301に戻る。PCTL11Pは、正ストレージ110Pの停止要求を受けた場合(S1308:Yes)、正ストレージ110Pを停止する(S1309)。
【0093】
図14は、コピー準備処理(
図13のS1351)の流れを示す。
【0094】
PCTL11Pは、新規のリモートコピー指示を受信した場合(S1401:Yes)、副ストレージ110Sに、サポートされているC-Algoの問合せを送信する(S1402)。「新規のリモートコピー指示」とは、未だ形成コピーが行われたことが無いVOLペアについてのリモートコピー指示でよい。リモートコピー指示では、PVOL10Pの情報(例えば、PVOL10Pを有する正ストレージ110PのID、及び、PVOL10PのVOL番号を表す情報)と、SVOL10Sの情報(例えば、SVOL10Sを有する副ストレージ110SのID、及び、SVOL10SのVOL番号を表す情報)とが指定されてよい。この段落で言う「副ストレージ110S」は、このリモートコピー指示で指定されたSVOL10Sを有する副ストレージ110Sである。
【0095】
副ストレージ110SのSCTL11Sは、その問合せを受けて、サポート管理テーブル1200を、問合せ元のPCTL11Pに返す(S1403)。
【0096】
PCTL11Pは、サポート管理テーブル1200を受け、そのサポート管理テーブル1200を基に、新規のリモートコピー指示で指定されたVOLペアに関し、形成コピー及び通常コピーの各々について、使用するC-Algoを決定する(S1404)。例えば、形成コピーで使用されるC-Algoとして、副ストレージ110S又はいずれかのオフロードインスタンス150と正ストレージ110Pとの両方でサポートされているC-Algoのうち、圧縮率1202“高”に対応したC-Algo(圧縮率が最も高いC-Algo)が決定されてよい。一方、通常コピーで使用されるC-Algoとして、副ストレージ110Sと正ストレージ110Pとの両方でサポートされているC-Algoのうち、圧縮率1202及びCPU負荷1203に基づく評価値が最も優れたC-Algo(例えば、圧縮率が最も高いC-Algo、CPU負荷が最も小さいC-Algo、又は、圧縮率とCPU負荷のバランスが優れたC-Algo)が決定されてよい。
【0097】
PCTL11Pは、新規のリモートコピー指示で指定されたPVOL10P及びSVOL10S間の形成コピーの開始要求を、そのSVOL10Sを有する副ストレージ110Sに送信する(S1405)。その要求には、形成コピーで使用されるC-Algo(S1404で決定されたC-Algo)の識別情報(C-Algo#)が関連付けられる。
【0098】
SCTL11S(例えばオフロード処理プログラム413)は、その開始要求を受け、サポート管理テーブル1200を参照し、自身で伸長可能か否かを判定する(S1406)。S1406の判定は、その開始要求に関連付けられているC-Algo#に対応のサポート先1204が、この副ストレージ110Sにおけるいずれかのコントローラノード385の識別情報を含んでいるか否かの判定である。
【0099】
S1406の判定結果が偽の場合(S1406:No)、SCTL11Sは、オフロードインスタンス150を起動する(S1407)。具体的には、SCTL11Sは、開始要求に関連付けられているC-Algo#に対応のサポート先1204から、いずれかのオフロードインスタンス150を特定する。SCTL11Sは、オフロードインスタンス管理テーブル1100を参照し、特定したオフロードインスタンス150を起動する(例えば、オフロードインスタンス150に対応のIPアドレス1102を基に起動する)。また、SCTL11Sは、そのオフロードインスタンス150に対応の状態1107を“起動”に更新する。なお、開始要求に関連付けられているC-Algo#に対応のサポート先1204が複数のオフロードインスタンス150を表している場合、各オフロードインスタンス150のCPUタイプ1103、コア数1104及びメモリサイズ1105を基に、一つのオフロードインスタンス150が選択されてもよい。
【0100】
S1406の判定結果が真の場合(S1406:Yes)、又は、S1407の後、SCTL11Sは、転送開始OKを、PCTL11Pに返す(S1408)。
【0101】
PCTL11Pは、転送開始OKを受け、新規のリモートコピー指示で指定されたVOLペアに対応のペア状態804(
図8参照)を“COPY”に更新する(S1409)。
【0102】
図15は、JNL作成処理(
図13のS1352)の流れを示す。
【0103】
PCTL11Pは、JVOL10JPに空きがあるか否かを判定する(S1501)。例えば、少なくとも一つのJNCBの有効/無効ビット618が“無効”であれば、S1501の判定結果は真でよい。
【0104】
S1501の判定結果が真の場合(S1501:Yes)、PCTL11Pは、メモリ215にダーティデータがあるか否かを判定する(S1502)。S1502の判定結果が真の場合(S1502:Yes)、PCTL11Pは、そのダーティデータが形成コピー済か否か(そのダーティデータの格納先スロットに対応のコピー状態1004が“済”か否か)を判定する(S1503)。
【0105】
S1503の判定結果が真の場合(S1503:Yes)、PCTL11Pは、ダーティデータをJNLデータとしてJVOL10JPに格納する(S1504)。
【0106】
S1503の判定結果が偽の場合(S1503:No)、PCTL11Pは、ダーティデータの格納先スロットからデータをリードし、リードされたデータにダーティデータを上書きし(S1505)、ダーティデータが上書きされたデータをJNLデータとしてJVOL10JPに格納する(S1506)。
【0107】
S1504の後、又は、S1506の後、PCTL11Pは、形成コピー中か否かを判定する(S1507)。S1507の判定は、コピー元のPVOL10Pについて、コピー状態1004“済”とコピー状態1004“未”が混在しているか否かの判定である。
【0108】
S1507の判定結果が真の場合(S1507:Yes)、PCTL11Pは、各コピー未完スロット(コピー状態1004“未”に対応のスロット)内のデータをJVOL10JPに格納する(S1508)。
【0109】
【0110】
JVOL格納処理は、
図15のS1504、S1506及びS1508の各々の詳細である。すなわち、PCTL11Pは、JNLデータ(JVOL10JPへの格納対象のデータ)のアドレスを決定する(S1601)。決定されるアドレスは、例えば、有効/無効ビット618“無効”を有するJNCBにおけるJVOL格納開始アドレス614が表すアドレスでよい。JNLデータのサイズはスロットのサイズと同じでよい。
【0111】
PCTL11Pは、S1601で決定したアドレスが表す領域(JVOL10JPにおける領域)にJNLデータを格納する(S1602)。
【0112】
また、PCTL11Pは、JNCBのアドレスを決定する(S1603)。決定されるアドレスは、例えば、有効/無効ビット618“無効”を有するJNCBのアドレスでよい。PCTL11Pは、S1603で決定したアドレスにJNCBを格納する(S1604)。具体的には、例えば、PCTL11Pは、そのJNCBについて、PVOLアドレス612を、S1602で格納されたJNLデータに対応のPVOLスロット(PVOL10Pにおけるスロット)のアドレスとし、JNLデータサイズ613を、格納対象のデータのサイズ(例えばスロットサイズ)とし、圧縮ビット615を“0”(未圧縮)とし、圧縮後サイズ616及びC-Algo#617をそれぞれブランクとし、有効/無効ビット618を“有効”としてよい。
【0113】
図17は、JNL転送処理(
図13のS1353)の流れを示す。
【0114】
副ストレージ110S(又は管理端末2)は、定期的に、又は、JVOL10JSの空き容量が所定以上の場合に、正ストレージ110Pに、JNL転送要求を送信するようになっている。PCTL11Pは、副ストレージ110S(又は管理端末2)からJNL転送要求を受けた場合(S1701:Yes)、N個のJNCBをJVOL10JPからリードする(S1702)。例えば、N個のJNCBは、有効/無効ビット618が“有効”でありJNCB#611が若いNJNCBである。
【0115】
PCTL11Pは、S1702でリードされたN個のJNCBの各々について、JVOL格納開始アドレス614を特定し(S1703)、N個のJNLデータをリードする(S1704)。PCTL11Pは、アルゴリズム管理テーブル900から特定されるC-Algoで、S1704でリードされたN個のJNLデータをそれぞれ圧縮し、S1702でリードされたN個のJNCBをそれぞれ更新する(S1706)。PCTL11Pは、N個のJNCBとN個の圧縮データとで構成されたC-JNLを、副ストレージ110Sに転送する。
【0116】
図18は、応答刈取り処理(
図13のS1354)の流れを示す。
【0117】
PCTL11Pは、C-JNLの転送に対して完了応答を副ストレージ110Sから受信した場合(S1801:Yes)、JVOL10JP内のJNCBを解放する(S1802)。具体的には、PCTL11Pは、JVOL10JPのうち、転送されたC-JNLのN個のJNCBの各々について、有効/無効ビット618を“無効”にする。
【0118】
形成コピー中の場合(S1803:Yes)、PCTL11Pは、形成コピーが完了したか否か、具体的には、PVOL10Pについて全てのコピー状態1004“済”か否かを判定する(S1804)。
【0119】
S1804の判定結果が真の場合(S1804:Yes)、PCTL11Pは、PVOL10Pに対応のペア状態804を“COPY”に更新し(S1805)、副ストレージ110Sに形成コピー完了を通知する(S1806)。
【0120】
【0121】
副コピー処理は定期的に開始されてよい。SCTL11Sは、C-JNL(圧縮ビット615“1”を持つJNCBを含むJNL)を受信した場合(S1901:Yes)、自身で伸長可能か否か、具体的には、C-JNLのJNCBのC-Algo#617と同じC-Algo#に対応するサポート先1204が、SCTL11Sのいずれかのコントローラノード385の識別情報を含んでいるか否かを判定する(S1902)。なお、
図19~
図21の説明において、C-JNLのJNCBのC-Algo#617から同定されるC-Algoを、「対象C-Algo」と言う。また、対象C-Algoをサポートしておりサポート先1204から選択されたコントローラノード385を「選択コントローラノード385」と言う。また。対象C-Algoをサポートしておりサポート先1204から選択されたオフロードインスタンス150を「選択オフロードインスタンス150」と言う。
【0122】
S1902の判定結果が真の場合(S1902:Yes)、SCTL11Sのうちの選択コントローラノード385が、対象C-Algoで、C-JNLの各圧縮データを伸長する(S1903)。SCTL11Sが、各伸長データ(JNLデータ)を含むP-JNLをJVOL10JSに格納する(S1905)。SCTL11Sが、JVOL10Jにおける各JNLデータ(JNCBの有効/無効ビット618が“有効”のJNLデータ)をSVOL10Sに格納する(S1906)。
【0123】
S1902の判定結果が偽の場合(S1902:No)、SCTL11Sが、選択オフロードインスタンス150に、C-JNLが関連付いた伸長依頼を送信する(S1904)。SCTL11Sは、選択コントローラノード385から、伸長依頼に対し伸長データを含むP-JNLを含んだ応答を受けた場合(S1907:Yes)、そのP-JNLをJVOL10JSに格納し(S1905)、JVOL10Jにおける各JNLデータをSVOL10Sに格納する(S1906)。
【0124】
その後、SCTL11Sは、受信したC-JNLに対し完了応答を正ストレージ110Pに返す(S1908)。なお、S1906(JNLデータのSVOL10Sへの反映)は、S1908の後に任意のタイミングで行われてもよい。
【0125】
SCTL11Sは、例えば、S1908から一定時間経過後(又は、副コピー処理が開始されて一定時間経過後)、JNL転送要求を正ストレージ110Pに送信する(S1909)。SCTL11Sは、オフロードインスタンス150のリソース量の調整であるオフロードリソース量調整を行う(S1910)。なお、S1910は、副コピー処理と非同期の処理(別の処理)でよい。
【0126】
【0127】
伸長依頼処理は、
図19のS1904の詳細である。SCTL11Sが、対象C-Algoに対応したサポート先120からオフロードインスタンス150を選択する(S2001)。SCTL11Sは、C-JNLが関連付いた伸長依頼を作成し(S2002)、伸長依頼を選択オフロードインスタンス150に送信する。伸長依頼では、対象C-Algoが指定される。
【0128】
選択オフロードインスタンス150(例えばオフロード処理プログラム413)が、伸長依頼を受信し(S2004)、その伸長依頼を解釈する(S2005)。選択オフロードインスタンス150は、C-JNLから各圧縮データを取得し(S2006)、各圧縮データを対象C-Algoで伸長し(S2007)、各伸長データを含んだP-JNLを副ストレージ110Sに返す(S2008)。
【0129】
SCTL11Sは、P-JNLを選択オフロードインスタンス150から受信する(S2009)。
【0130】
なお、SCTL11Sは、C-JNLのうちの各圧縮データを選択オフロードインスタンス150に送信し、選択オフロードインスタンス150から各伸長データを受信し、受信した各伸長データを含むP-JNLを生成してもよい。
【0131】
図21は、オフロードリソース量調整処理の流れを示す。
【0132】
オフロードリソース量調整処理は、
図19のS1910の詳細である。SCTL11Sは、各起動中インスタンス150のCPU負荷(例えばCPU稼働率)が第1閾値以上か否かを判定する(S2101)。「起動中インスタンス150」とは、状態1107が“起動”であるオフロードインスタンス150である。
【0133】
S2101の判定結果が真の場合(S2101:Yes)、SCTL11Sは、起動中インスタンス150を一つ増やす(S2102)。つまり、SCTL11Sは、いずれかの状態1107“停止”を“起動”に変更する。
【0134】
S2101の判定結果が偽の場合(S2101:No)、SCTL11Sは、各起動中インスタンス150のCPU負荷が第2閾値以下か否かを判定する(S2103)。第2閾値は、第1閾値より小さい。
【0135】
S2103の判定結果が真の場合(S2103:Yes)、SCTL11Sは、二つ以上の起動中インスタンス150があるか否かを判定する(S2104)。
【0136】
S2104の判定結果が真の場合(S2104:Yes)、SCTL11Sは、起動中インスタンス150を一つ減らす(S2105)。つまり、SCTL11Sは、いずれかの状態1107“起動”を“停止”に変更する。
【0137】
SCTL11Sは、形成コピーの完了通知を正ストレージ110Pから受信した場合、全オフロードインスタンス150の状態1107を“停止”にする(S2107)。
[第2の実施形態]
【0138】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する(これは後の第3~第5の実施形態についても同様)。
【0139】
図22は、第2の実施形態に係るアルゴリズム選択テーブル2200の構成例を示す。
【0140】
アルゴリズム選択テーブル2200は、正ストレージ110Pのメモリ215に格納されるテーブルである。アルゴリズム選択テーブル2200は、JNLデータ圧縮の際に使用するC―Algoを表す。アルゴリズム選択テーブル2200は、JVOL10JPの蓄積率の閾値Xと、蓄積率>閾値Xの場合に選択されるC-Algoの識別情報と、蓄積率≦閾値Xの場合に選択されるC-Algoの識別情報とを表す。
【0141】
「蓄積率」とは、有効/無効ビット618が“有効”である全JNCBに対応のJNLデータのサイズの合計値が、JNLデータエリア602のサイズに占める割合である。
【0142】
アルゴリズム選択テーブル2200は、形成コピーと通常コピーのいずれにも適用されてよいが、本実施形態では、通常コピーに適用される。通常コピーにおいて、蓄積率>閾値Xが検出された場合には、転送の加速が必要であり、故に、高圧縮のC-Algoが選択される。一方、蓄積率≦閾値Xが検出された場合には、転送の加速は不要であり、共通のC-Algo(正ストレージ110Pと副ストレージ110Sの両方でサポートされているC-Algo)が選択される。
【0143】
具体的には、通常コピーでのJNL転送処理(
図17参照)において、PCTL11Pは、S1705で、JVOL10JPの蓄積率を算出し、蓄積率と閾値Xとの比較の結果に応じて、C-Algoを選択し、そのC-Algoで、S1704でリードされたN個のJNLデータをそれぞれ圧縮する。
[第3の実施形態]
【0144】
第3の実施形態では、オンプレミスストレージ→クラウドストレージのコピー方向に代えて又は加えて、逆のコピー方向、すなわち、クラウドストレージ→オンプレミスストレージが採用される。この場合、クラウドストレージが、正ストレージの機能、PVOL及びJVOLを有し、オンプレミスストレージが、副ストレージの機能、SVOL及びSVOLを有する。
【0145】
オンプレミスストレージでサポートされているがクラウドストレージでサポートされていないC-Algoであって、クラウドストレージでサポートされているC-Algoよりも高い圧縮率のC-Algoである高圧縮C-Algo(例えばC-Algo2)がある場合、クラウドストレージは、形成コピーにおいて、高圧縮C-Algoをサポートしているオフロードインスタンス150に、高圧縮C-Algoで、P-JNLにおける各JNLデータの圧縮を圧縮させる。そして、クラウドストレージは、オフロードインスタンス150により圧縮された各圧縮データを含むC-JNLを、オンプレミスストレージに転送する。オンプレミスストレージが、C-JNLの各圧縮データを、オンプレミスストレージでサポートされている高圧縮C-Algoで伸長し、各伸長データを含むP-JNLをJVOLに格納し、JVOL内の各JNLデータをSVOLに格納する。
[第4の実施形態]
【0146】
図23は、第4の実施形態に係るリモートコピーの例の概要を模式的に示す。
【0147】
オンプレミスDC101に、ネットワーク70P(例えば一つ以上のスイッチで構成されたネットワーク)と管理端末2302がある。ネットワーク70Pを介して、管理端末2302、ホスト51及び正ストレージ110Pが通信する。
【0148】
クラウド102に、ネットワーク70S(例えば一つ以上のスイッチで構成されたネットワーク)とオブジェクトストレージ(オブジェクトストレージサービス)2350がある。ネットワーク70Sを介して、オブジェクトストレージ2350、オフロードインスタンス150及び副ストレージ110S(ブロックストレージサービスとしてのストレージノードを含んだストレージ)が通信する。
【0149】
図23において、実線矢印は、バックアップの流れを示し、破線矢印は、リストアの流れを示す。つまり、本実施形態では、正ストレージ110Pからオブジェクトストレージ2350にVOL10がバックアップされ、オブジェクトストレージ2350から副ストレージ110Sにバックアップがリストアされる。PCTL11P及びSCTL11Sの各々が、データブロックとオブジェクト(データオブジェクト)間の変換機能を有する。
【0150】
PCTL11Pが、VOL10X(PVOL10Pに相当)のバックアップとして、VOL10XのスナップショットであるスナップショットVOL10Yを取得する。一つのVOL10Xにつき、一つ以上のスナップショットVOL10Yが用意される。
【0151】
PCTL11Pが、スナップショットVOL10Yにおけるm個のデータブロック(mは1以上の整数)を、それぞれ任意のC-Algoで圧縮する。スナップショットVOL10Yが、VOL10Xの全データであり、且つ、オブジェクトストレージ2350へのバックアップがいわゆるフルバックアップの場合、使用されるC-Algoは、形成コピーに対応のC-Algoでよい。一方、スナップショットVOL10Yが、VOL10Xの差分データ(過去のスナップショットとの差分に相当するデータ)であり、且つ、オブジェクトストレージ2350へのバックアップがいわゆる差分バックアップの場合、使用されるC-Algoは、形成コピーに対応のC-Algoまたは、通常コピーに対応のC-Algoでよい。
【0152】
PCTL11Pが、m個の圧縮データブロックをx個のオブジェクト2372に変換する(xは1以上の整数、且つ、x≦m)。オブジェクト2372は、n個の圧縮データブロック(nは1以上の整数、且つ、n≦x≦m)と、圧縮データブロック毎のJNCBとを含む。PCTL11Pが、カタログ情報2371と、x個のオブジェクト2327とを含んだスナップショットVOL2370を、オブジェクトストレージ2350に格納する。スナップショットVOL10Y毎にスナップショットVOL2370が格納されてよい。カタログ情報2371がスナップショットVOL2370に含まれることは、カタログ情報2371がスナップショットVOL2370に関連付けられることの一例でよく、カタログ情報2371はスナップショットVOL2370の外にあってもよい。
【0153】
例えば、管理者が、管理端末2302を介して、リストア対象のスナップショットVOL2370(例えば、リストア対象の世代のID)と、リストア先とする副ストレージ110Sとを、リストア先の副ストレージ110S(又はオブジェクトストレージ2350)に指定したとする。管理端末2302は、オンプレミスDC101の外に存在してもよい。
【0154】
この指定に応答して、SCTL11Sが、オブジェクトストレージ2350の指定されたスナップショットVOL2350から、VOL10Xと同じデータであるVOL10Qを副ストレージ110Sにリストアする。具体的には、SCTL11Sが、スナップショットVOL2370におけるカタログ情報2371を基に、x個のオブジェクト2372の各々を取得し、各オブジェクト2372をn個の圧縮データブロックに変換する。SCTL11Sが、圧縮データブロック毎に、その圧縮データブロックのJNCBに基づき、圧縮データブロックを伸長する。SCTL11Sは、JNCBから特定されるC-Algoが自身にサポートされていれば自身で伸長する。SCTL11Sは、JNCBから特定されるC-Algoが自身にサポートされておらずオフロードインスタンス150でサポートされていれば、オフロードインスタンス150に伸長を依頼する。
【0155】
SCTL11Sは、各伸長データブロックを、リストア先のVOL10Qに格納する。全データのリストアが終わった場合、SCTL11Sは、全オフロードインスタンス150を停止状態にしてよい。
【0156】
【0157】
カタログ情報2371は、バックアップID2401、バックアップ元ストレージID2402、バックアップ元VOL#2403、バックアップ元VOLサイズ2404、親バックアップID、取得日時2406、オブジェクトキー2407及びオブジェクトサイズ2408といった情報を有するエントリを有する。
【0158】
バックアップID2401は、バックアップID、例えば、世代IDとしてのスナップショットIDでよく、スナップショットIDは、スナップショットVOL10YのVOL番号に相当してよい。
【0159】
バックアップ元ストレージID2402は、バックアップ元VOLとしてのVOL10Xを有る正ストレージ110PのIDを表す。バックアップ元VOL#2403は、VOL10XのVOL番号を表す。バックアップ元VOLサイズ2404は、VOL10Xのサイズ(容量)を表す。
【0160】
親バックアップIDは、スナップショットVOLに対応の世代の親世代(一つ前の世代)のスナップショットのバックアップIDを表す。取得日時2406は、スナップショットの取得日時(VOL10Yの作成日時)を表す。
【0161】
オブジェクトキー2407は、オブジェクト2372の格納先(例えばアドレスやID)を表す。オブジェクトサイズ2408は、オブジェクト2372のサイズを表す。
【0162】
カタログ情報2371の情報量は、スナップショットの世代が新しい程、多くてよい。例えば、
図24に例示のカタログ情報2371は、3番目の世代(SS 2)に対応のスナップショットVOL2370に関連付いたカタログ情報2371でよい。2番目の世代(SS 1)に対応のスナップショットVOL2370に関連付いたカタログ情報2371は、
図24に例示のカタログ情報2371から、バックアップ元ID2401“SS 2”に対応した情報が除かれた情報でよい。
【0163】
図24が示す例によれば、最初の世代のVOL10Xに対応のスナップショットVOL2370(バックアップID2401“SS 0”)は、VOL10Xについての全ての圧縮データブロックを含んだ複数のオブジェクト2372を含む。次の世代のVOL10Xに対応のスナップショットVOL2370(バックアップID2401“SS 1”、親バックアップID2405“SS 0”)は、最初の世代のVOL10Xの後にVOL10Xに格納されたデータブロックの圧縮データブロックを含んだ二つのオブジェクト2372を含む。
【0164】
【0165】
オブジェクト2372の構成は、C-JNLと同様である。すなわち、オブジェクト2372は、1個以上の圧縮データブロックを含み、圧縮データブロック毎にJNCBを含む。
【0166】
JNCBは、LBA2501、データサイズ2502、圧縮ビット2503、C-Algo#2504及び圧縮後サイズ2505といった情報を有する。LBA2501は、バックアップ元VOL(VOL10X)における領域のアドレスであって、圧縮データブロックに対応の平文データブロックが格納されているアドレスを表す。データサイズ2502は、その平文データブロックのサイズ(又は任意のサイズ)を表す。圧縮ビット2503は、データが圧縮されているか否かを表す。C-Algo#2504は、データブロックの圧縮に使用されたC-Algoの識別情報を表す。圧縮後サイズ2505は、圧縮データブロックのサイズを表す。
【0167】
PCTL11Pが、スナップショットVOL10Yから取得される平文データブロックをC-Algoで圧縮する都度に、圧縮データブロックに対応のJNCBを更新する(例えば、使用したC-AlgoのC-Algo#をJNCBに記録する)。また、PCTL11Pが、スナップショットVOL2370の格納の都度に、そのスナップショットVOL2370の世代の親世代に対応のカタログ情報2371を取得し更新する(世代が最初の世代の場合にはカタログ情報2371を新規に作成する)。
【0168】
リストアにおいて、SCTL11Sは、指定された世代に対応のスナップショットVOL2370に関連付いたカタログ情報2371を参照し、古い世代から指定された世代まで、順次に、オブジェクト2372の取得、オブジェクト2372からn個の圧縮データブロックへの変換、n個の圧縮データブロックの各々に対応のJNCBを基に圧縮データブロックの伸長を自身で行えるか否かの判定、圧縮データブロックのSCTL11S又はオフロードインスタンス150による伸長、及び、伸長されたデータブロックのVOL10Qへの格納を行う。
[第5の実施形態]
【0169】
図26は、第5の実施形態に係るオフロードインスタンスの構成例を示す。
【0170】
クラウド102に拡張副ストレージ2600が構築される。拡張副ストレージ2600は、副ストレージ110Sの他に、オフロードインスタンスとしてのクラウドコンピュートサービス、具体的には、オフロード専用のコントローラノード385Xを有する。
【0171】
コントローラノード385Xは、オフロードインスタンス150と同じ機能を有する。すなわち、コントローラノード385Xは、クラウドコンピュートサービス310Xであり、クラウドコンピュートサービス310Xは、インターフェース349X、メモリ301X及びCPU302Xを有する。インターフェース349Xは、例えば副ストレージ110S(例えばコントローラノード385)と通信する。メモリ301Xは、コントローラノード385XでサポートされているC-Algoで圧縮する圧縮プログラム411、コントローラノード385XでサポートされているC-Algoで伸長する伸長プログラム412、及び、伸長依頼を受け付けるオフロード処理プログラム413を有する。CPU302Xがそれらのプログラム411~413を実行する。なお、コントローラノード385Xは、副ストレージ110Sの稼働中に、副ストレージ110Sにより、動的に、起動又は停止させられてよい。
【0172】
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、オフロードインスタンスを用いて圧縮伸長を行うという観点で、他の種々の形態でも実行することが可能である。例えば、第1~第5の実施形態では、リモートコピーの送信側または受信側の一方がオフロードインスタンスが行う圧縮方式に対応し、他方が対応せずにオフロードインスタンスで圧縮又は伸長を行っているが、送信側及び受信側の両方がクラウドであり当該圧縮方式に対応しておらず、両方のストレージシステムがオフロードインスタンスを使用してもよい。すなわち、送信側ストレージシステムがオフロードインスタンスによって転送するデータを圧縮し、受信側ストレージシステムがオフロードインスタンスによって受信したデータを伸長する。
【0173】
また、リモートコピー以外の用途で、オフロードインスタンスによる圧縮又は伸長が行われてもよい。例えば、ホストからのデータ入出力の場合に、オフロードインスタンスによる圧縮又は伸長が行われてもよい。すなわち、ホストからライト要求があった場合に、ストレージシステムが、オフロードインスタンスを使用して、自身のストレージシステムでは対応していない圧縮方式にて圧縮してストレージシステムに格納し、ホストからそのデータに対してリード要求があった場合に、オフロードインスタンスを使用して、自身のストレージシステムでは対応していない圧縮方式の圧縮データを伸長してしてホストに応答してよい。
【0174】
また、データ入出力要求やリモートコピーとは非同期で、ストレージシステムが、当該ストレージシステムに格納しているデータをオフロードインスタンスによって圧縮又は伸長し圧縮又は伸長されたデータを格納してもよい。
【0175】
また、以上の説明を、例えば、下記のように総括することができる。下記の総括は、上述の補足説明や変形例の説明を含んでよい。
【0176】
データ転送システムは、ストレージシステムである第1のストレージ(例えばオンプレミスストレージ)と、クラウド102におけるストレージシステムである第2のストレージ(クラウドストレージ)とを備える。第1のストレージ及び第2のストレージは、第1のストレージ及び第2のストレージ間での転送対象データのデータ転送を行う。第2のストレージは、そのデータ転送において、転送対象データの圧縮又は伸長に使用される圧縮方式が、第1のストレージと第2のストレージとの両方でサポートされている圧縮方式か否かの判定である圧縮/伸長判定(例えばS1902)を行う。圧縮/伸長判定の結果が偽の場合、第2のストレージが、クラウド102に存在し圧縮又は伸長のオフロード先とされ得る一つ又は複数のオフロードインスタンス150のうち、上記使用される圧縮方式をサポートしているオフロードインスタンスである選択オフロードインスタンス150に、転送対象データの圧縮又は伸長を実行させる(例えばS1904)。
【0177】
これにより、第1ストレージ及び第2ストレージでサポートされている圧縮方式が異なっていても、圧縮リモートコピーを実現してネットワーク負荷軽減とネットワーク消費電力低減をすること、具体的には、第1のストレージと第2のストレージ間で転送された圧縮データを、その圧縮データを受信したストレージが伸長することができる。
【0178】
なお、第1のストレージでサポートされているが第2のストレージでサポートされていない圧縮方式がある場合、一比較例として、第2のストレージのコントローラインスタンスを、その圧縮方式が既存の圧縮方式の他にサポートされたコントローラインスタンスに差し替えることが考えられる。しかし、差し替え後のコントローラインスタンスの方がより多くのリソース量を必要とすることが考えられ、また、第2のストレージの稼働中は典型的にはコントローラインスタンスも稼働している必要があるため、より多くのリソース量の消費が生じてしまい得る。
【0179】
「圧縮方式」とは、圧縮アルゴリズム(C-Algo)でよく、例えば、LZ4、ZIP、LZMA、LZO又はGZIP等がある。圧縮方式は、圧縮アルゴリズムに代えて又は加えて、圧縮又は伸長に使用されるモデル(例えば機械学習モデル)を含んでもよい。また、圧縮は、可逆圧縮でも非可逆圧縮でもよい。非可逆圧縮が採用される場合、「伸長することができる」とは、伸長されたデータの誤差が所定値以下であること、又は、精度が一定値以上のモデルを使用して圧縮データを伸長することであってもよい。
【0180】
また、第1のストレージは、オンプレミスストレージでよいが、オンプレミスストレージ外のストレージシステム、例えば、クラウド102とは別のクラウド環境におけるストレージシステムでもよいし、ニアクラウドストレージでもよい。
【0181】
第1のストレージと第2のストレージ間で転送されるデータである転送対象データは、メタ部分とデータ部分で構成されたデータでよい。データ部分は、nの圧縮データであり(nは1以上の整数)でよい。nの圧縮データの各々は、転送対象データが圧縮されたデータでよい。メタ部分は、転送対象データの圧縮に使用された圧縮方式を表す情報を含んでよい。第1のストレージ及び第2のストレージのうち、転送対象データを受信したストレージは、転送対象データのメタ部分から、転送対象データのnの圧縮データの伸長に必要な圧縮方式を特定し、そのnの圧縮データの各々がその特定された圧縮方式で伸長されたデータを格納してよい。このように、転送対象データが、圧縮に使用された圧縮方式を表すメタ部分を含むため、転送対象データを受信したストレージが、転送対象データにおけるデータ部分の伸長に必要な圧縮方式を特定することができる。
【0182】
転送対象データは、第1のストレージから第2のストレージに転送されるデータでよい。第2のストレージでサポートされていない圧縮方式が第1のストレージにより使用され転送対象データが転送されても第2のストレージはオフロードインスタンス150を使用してその転送対象データのデータ部分を伸長できる。このため、第1のストレージは、第2のストレージでサポートされているか否かに関わらず自身でサポートされている圧縮方式のうち最も圧縮率が高い圧縮方式を使用でき、以って、データ転送に要する時間の短縮が期待できる。
【0183】
第1のストレージが、コピー元VOLとしてのPVOL10Pを有する正ストレージ110Pでよい。第2のストレージが、コピー先VOLとしてのSVOL10Sを有する副ストレージ110Sでよい。データ転送が、PVOL10Pに対するデータのライトのライト処理とは非同期に行われる非同期リモートコピーでよい。転送対象データは、JNLでよい。nの圧縮データの各々は、圧縮JNLデータ(PVOL10Pにライトされるデータの複製としてのJNLデータが圧縮されたデータ)でよい。メタ部分は、nのJNLデータ毎のメタデータであり、JNLデータの圧縮に使用された圧縮方式を表す情報を含んでよい。圧縮/伸長判定の結果が偽の場合、選択オフロードインスタンスは、メタ部分が表す圧縮方式がサポートされているオフロードインスタンスでよい。これにより、副ストレージ110Sでサポートされていない圧縮方式が正ストレージ110Pにより使用され転送対象データが転送されても副ストレージ110Sは選択オフロードインスタンス150を使用してそのJNLのデータ部分を伸長できる。また、非同期リモートコピーで転送されるJNLは、一般に、JNLデータ毎のメタデータ(例えばJNCB)を含むメタ部分を有するが、そのメタ部分を、正ストレージ110Pで使用した圧縮方式を副ストレージ110Sに知らしめることに利用することができる。また、第1のストレージがクラウド102に無いストレージシステムであると(リモートコピーがハイブリッド環境(異なる種類の環境間)でのリモートコピーであると)、ストレージ間の距離が物理的に遠く、リモートコピーに時間がかかる。このため、ライト処理に伴う同期リモートコピーが採用されると(ライト処理の完了にリモートコピーの完了を必要とされると)、ライト処理の完了に時間かかる。このため、リモートコピーが非同期リモートコピーであることは好ましい。
【0184】
正ストレージ110Pは、非同期リモートコピーが形成コピー(PVOL10Pの全てのデータをSVOL10Sにコピーすること)の場合、正ストレージ110Pでサポートされている複数の圧縮方式のうち、最も圧縮率が高い圧縮方式で転送対象のJNLデータを圧縮してよい。これにより、形成コピーに要する時間の短縮が期待できる。
【0185】
一方、正ストレージ110Pは、非同期リモートコピーが通常コピー(形成コピーの後にPVOL10PにライトされるデータをSVOL10Sにコピーすること)の場合、正ストレージ110Pでサポートされている複数の圧縮方式のうち、正ストレージ110Pと副ストレージ110Sに共通の圧縮方式で転送対象のJNLデータを圧縮してよい。正ストレージ110Pから副ストレージ110Sへの転送に使用される通信帯域(ネットワーク帯域)に基づきPVOL10Pへの流入量(単位時間当たりにPVOL10Pにライトされるデータの量)が定められていることがあり、そのため、通常コピーが、形成コピーよりも、通信帯域を圧迫する可能性は低い。そこで、通常コピーでは、正ストレージ110Pは、転送対象のJNLデータの圧縮に、共通の圧縮方式を使用し、以って、オフロードインスタンス150に伸長をオフロードするオーバヘッドを削減し、時間短縮が期待できる。なお、上述の実施形態では、正ストレージ110P及び副ストレージ110Sの各々にJVOL10Jが設けられ、JVOL10JにJNLが蓄積されるが、正ストレージ110P及び副ストレージ110Sの両方又は一方は、必ずしもJVOL10Jを有さないでよい。その場合、JNLは、メモリに一時格納され、メモリから、圧縮JNLデータが取得されてよい。
【0186】
正ストレージ110Pは、非同期リモートコピーが通常コピーの場合、JNLデータの蓄積率(JNLデータが記憶される記憶領域(例えばJNLデータエリア602)の容量に対する、その記憶領域におけるJNLデータの総容量の割合)が閾値以下か否かを判定してよい。蓄積率が閾値以下の場合、正ストレージ110Pは、正ストレージ110Pでサポートされている複数の圧縮方式のうちの第1の圧縮方式で、転送対象のJNLデータを圧縮してよい。一方、蓄積率が閾値を超えている場合、正ストレージ110Pは、複数の圧縮方式のうち、第1の圧縮方式より圧縮率が高い第2の圧縮方式で、転送対象のJNLデータを圧縮してよい。通常コピーでは、一時的に、ライト要求の送信元(例えば、ホスト51やアプリケーション)の負荷が増え、結果として、PVOL10Pの流入量が増えることがあり得る。この場合、転送遅延が生じ得る。そこで、正ストレージ110Pは、蓄積率に応じて、使用する圧縮方式を切り替えてよい。これにより、通常コピーに要する時間の短縮が期待できる。
【0187】
圧縮/伸長判定の結果が偽の場合、選択オフロードインスタンス150は、メタ部分が表す圧縮方式の他に、正ストレージ110Pと副ストレージ110Sに共通の圧縮方式もサポートしているオフロードインスタンス150でよい。副ストレージ110Sは、選択オフロードインスタンス150から、メタ部分が表す圧縮方式で伸長され共通の圧縮方式で圧縮されたデータを受信し、その圧縮されたデータをSVOL10Sに格納してよい。これにより、圧縮データのSVOL10Sへの格納を、副ストレージ110Sの負担少なく実現することができる。なお、SVOL10Sに圧縮データが格納されることで、SVOL10Sの消費容量を削減することができる。副ストレージ110Sが、選択オフロードインスタンス150から伸長データを受信し、伸長データを、共通の暗号方式で圧縮して、圧縮データをSVOL10Sに格納してもよい。
【0188】
転送対象データは、第1のストレージからクラウド102(又は、クラウド102とは別のクラウド環境)におけるオブジェクトストレージ2350経由で第2のストレージに転送されるオブジェクト2372でよい。第1のストレージが、バックアップ元VOL10XのスナップショットVOL10Y(スナップショット)を取得してよい。バックアップ元VOL10XのスナップショットVOL10Y毎に、第1のストレージが、一つ以上のデータブロックを、第1のストレージでサポートされている圧縮方式で圧縮し、一つ以上の圧縮データブロックを含んだ一つ以上のオブジェクト2372を、オブジェクトストレージ2350にバックアップしてよい。第2のストレージが、リストア対象のスナップショットVOL2370に対応の一つ以上のオブジェクト2372を、そのリストア対象のスナップショットVOL2370に関連付いておりその一つ以上のオブジェクト2372の各々の格納先に関する情報を含んだ情報であるカタログ情報2371を基に、オブジェクトストレージ2350から取得してよい。その取得された一つ以上のオブジェクト2372の各々について、第2のストレージが、そのオブジェクト2372のメタ部分から特定された圧縮方式でnの圧縮データブロックが伸長されたnのデータブロックをリストアしてよい(そのリストアにおいても、上述の圧縮/伸長判定が実施され、その判定結果が偽の場合には選択オフロードインスタンス150により伸長が実施されてよい)。第2のストレージがオブジェクトストレージ以外のストレージ(例えばブロックストレージ)である場合、第2のストレージのデータ記憶に関するコストは、オブジェクトストレージ2350のそれに比べて大きい可能性がある。そこで、オブジェクトストレージ2350にデータをバックアップしておき、オブジェクトストレージ2350にバックアップされたデータのうちの必要なデータを第2のストレージにリストアすることで、データ記憶に関するコストの削減が期待される。
【0189】
第2のストレージは、データ転送の前に、一つ又は複数のオフロードインスタンス150を起動し(例えばS1407)、そのデータ転送の完了後、起動したオフロードインスタンス150を停止してよい(例えばS2107)。これにより、オフロードインスタンス150を不必要に長い時間起動中の状態としておくことで不必要にリソースを消費すること(例えば、クラウド102の物理的なリソース(例えばメモリやCPU)を消費すること)を避けることができる。なお、この段落で言う「データ転送」は、典型的には形成コピーでよいが、形成コピー以外のデータ転送、例えば通常コピーや、スナップショットVOL10Yのオブジェクトストレージ2350へのバックアップでもよい。
【0190】
第2のストレージは、一つ又は複数のオフロードインスタンス150のうちそれぞれ起動中のオフロードインスタンスである一つ以上の起動中インスタンス150のプロセッサ負荷に基づき、起動中インスタンス150の数を変更してよい(例えばS2101~S2105)。これにより、必要なスループットに応じて起動中インスタンス150の数をデータ転送において動的に調整すること、具体的には、処理速度とリソース消費の適正化を図ることができる。なお、第2のストレージは、増やす又は減らす起動中インスタンス150を、一つ又は複数のオフロードインスタンス150の各々について当該オフロードインスタンス150の基になっているリソース量を表す情報(例えばオフロードインスタンス管理テーブル1100の情報1103~1105)を基に決定してよい。これにより、処理速度とリソース消費の一層の適正化が期待される。
【0191】
転送対象データは、第2のストレージから第1のストレージに転送されるデータでよい。これにより、第2のストレージ(クラウドストレージ)から第1のストレージ(例えばオンプレミスストレージ)へのデータ転送(例えばコピー)において、第1のストレージでサポートされているが第2のストレージでサポートされていない圧縮方式を使用した圧縮を、選択オフロードインスタンス150(第1のストレージでサポートされている圧縮方式をサポートしているオフロードインスタンス150)にオフロードすることができる。また、egressコストの削減が期待される。
【0192】
クラウド102に備えられるオフロードインスタンス150としては、圧縮方式をサポートしているオフロードインスタンス150に代えて又は加えて、圧縮方式以外の機能をサポートしているオフロードインスタンス150が採用されてもよい。「圧縮方式以外の機能」は、暗号化又は復号化の方式(例えば、アルゴリズムや鍵)である暗号方式でもよいし、保証コードの演算機能でもよいし。機能互換性のないストレージ間のデータ転送において、オフロードインスタンス150を活用し、 一時的な機能補完が実現されてよい。オフロードインスタンス150は、圧縮方式に代えて又は加えて、圧縮方式以外の機能(例えば暗号方式)をサポートしていてよい。
【0193】
ストレージシステム(ストレージ)の観点から、例えば以下のような表現も可能である。
【0194】
すなわち、コントローラを備えたストレージシステムにおいて、当該ストレージシステムへデータを格納又は転送する場合に、圧縮又は伸長のオフロード先とされ得る一つ又は複数のオフロードインスタンスであり、対象の圧縮方式をサポートしているインスタンスである選択オフロードインスタンスに、コントローラが、格納又は転送の対象データの圧縮又は伸長を実行させてよい。
【0195】
ストレージシステムは、クラウド環境におけるストレージシステムでよく、コントローラが、他のストレージシステムとの間での転送対象データのデータ転送を行ってよい。コントローラは、データ転送において、転送対象データの圧縮又は伸長に使用される圧縮方式が、自ストレージシステムでサポートされている圧縮方式ではない場合、選択オフロードインスタンスに、転送対象データの圧縮又は伸長を実行させてよい。
【0196】
転送対象データが、メタ部分とデータ部分で構成されたデータでよく、データ部分は、nの圧縮データでよく(nは1以上の整数)、nの圧縮データの各々は、転送対象データが圧縮されたデータでよい。メタ部分は、転送対象データの圧縮に使用された圧縮方式を表す情報を含んでよい。転送対象データを受信したコントローラは、当該転送対象データのメタ部分から、転送対象データのnの圧縮データの伸長に必要な圧縮方式を特定し、そのnの圧縮データの各々がその特定された圧縮方式で伸長されたデータを格納してよい。転送対象データは、他のストレージシステムからストレージシステムに転送されるデータでよい。オフロードインスタンスは、圧縮された転送対象データの伸長を行ってよい。
【0197】
ストレージシステムのコントローラから他のストレージシステムにデータが転送され、オフロードインスタンスは、圧縮された転送対象データの伸長を行ってよい。
【0198】
他のストレージシステムは、対象の圧縮方式をサポートしておらず、ストレージシステム及び他のストレージシステムのそれぞれが、それぞれのオフロードインスタンスを用いて転送対象データの圧縮又は伸長を行ってよい。
【0199】
ストレージシステムは、クラウド環境におけるストレージシステムでよく、ホストからデータ入出力要求を受けてデータを格納又は転送する場合に、コントローラが、選択オフロードインスタンスに、格納しているデータの圧縮又は伸長を実行させてよい。
【0200】
ストレージシステムは、クラウド環境におけるストレージシステムでよく、データを格納又は転送とは非同期で、コントローラが、選択オフロードインスタンスに、格納しているデータの圧縮又は伸長を実行させて、再格納してよい。
【0201】
他のストレージシステムが、コピー元ボリュームとしての正ボリュームを有してよい。ストレージシステムが、コピー先ボリュームとしての副ボリュームを有してよい。データ転送は、正ボリュームに対するデータのライトのライト処理とは非同期に行われる非同期リモートコピーでよい。転送対象データは、ジャーナルでよい。nの圧縮データの各々は、正ボリュームにライトされるデータの複製としてのジャーナルデータが圧縮されたデータである圧縮ジャーナルデータでよい。メタ部分は、nのジャーナルデータ毎のメタデータであり、ジャーナルデータの圧縮に使用された圧縮方式を表す情報を含んでよい。圧縮/伸長判定の結果が偽の場合、選択オフロードインスタンスは、メタ部分が表す圧縮方式がサポートされているオフロードインスタンスでよい。
【0202】
他のストレージシステムは、非同期リモートコピーが形成コピーの場合、他のストレージシステムでサポートされている複数の圧縮方式のうち、最も圧縮率が高い圧縮方式で転送対象のジャーナルデータを圧縮してよい。形成コピーは、正ボリュームの全てのデータを前記副ボリュームにコピーすることでよい。
【0203】
他のストレージシステムは、非同期リモートコピーが通常コピーの場合、のストレージシステムでサポートされている複数の圧縮方式のうち、他のストレージシステムとストレージシステムに共通の圧縮方式で転送対象のジャーナルデータを圧縮してよい。通常コピーは、形成コピーの後に正ボリュームにライトされるデータを副ボリュームにコピーすることでよい。形成コピーは、正ボリュームの全てのデータを副ボリュームにコピーすることでよい。
【0204】
他のストレージシステムは、非同期リモートコピーが通常コピーの場合、ジャーナルデータの蓄積率が閾値以下か否かを判定し、蓄積率が前記閾値以下の場合、他のストレージシステムでサポートされている複数の圧縮方式のうちの第1の圧縮方式で、転送対象のジャーナルデータを圧縮してよい。他のストレージシステムは、蓄積率が閾値を超えている場合、複数の圧縮方式のうち、第1の圧縮方式より圧縮率が高い第2の圧縮方式で、転送対象のジャーナルデータを圧縮してよい。通常コピーは、形成コピーの後に正ボリュームにライトされるデータを副ボリュームにコピーすることでよい。形成コピーは、正ボリュームの全てのデータを副ボリュームにコピーすることでよい。蓄積率は、ジャーナルデータが記憶される記憶領域の容量に対する、その記憶領域におけるジャーナルデータの総容量の割合でよい。
【0205】
圧縮/伸長判定の結果が偽の場合、選択オフロードインスタンスは、メタ部分が表す圧縮方式の他に、他のストレージシステムとストレージシステムに共通の圧縮方式もサポートしているオフロードインスタンスでよい。ストレージシステムのコントローラは、選択オフロードインスタンスから、メタ部分が表す圧縮方式で伸長され共通の圧縮方式で圧縮されたデータを受信し、その圧縮されたデータを副ボリュームに格納してよい。
【0206】
転送対象データは、他のストレージシステムからクラウド環境におけるオブジェクトストレージ経由で第2のストレージに転送されるオブジェクトでよい。他のストレージシステムが、バックアップ元ボリュームのスナップショットを取得し、バックアップ元ボリュームのスナップショット毎に、一つ以上のデータブロックを、第1のストレージでサポートされている圧縮方式で圧縮し、一つ以上の圧縮データブロックを含んだ一つ以上のオブジェクトを、オブジェクトストレージにバックアップしてよい。ストレージシステムのコントローラが、リストア対象のスナップショットに対応の一つ以上のオブジェクトを、そのリストア対象のスナップショットに関連付いておりその一つ以上のオブジェクトの各々の格納先に関する情報を含んだ情報であるカタログ情報を基に、オブジェクトストレージから取得してよい。コントローラが、その取得された一つ以上のオブジェクトの各々について、そのオブジェクトのメタ部分から特定された圧縮方式でnの圧縮データブロックが伸長されたnのデータブロックをリストアしてよい。
【0207】
ストレージシステムのコントローラは、他のストレージシステムとの間でのデータ転送の前に、一つ又は複数のオフロードインスタンスを起動し、当該データ転送の完了後、起動されたオフロードインスタンスを停止してよい。
【0208】
ストレージシステムのコントローラは、一つ又は複数のオフロードインスタンスのうちそれぞれ起動中のオフロードインスタンスである一つ以上の起動中インスタンスのプロセッサ負荷に基づき、起動中インスタンスの数を変更してよい。
【0209】
ストレージシステムのコントローラはは、増やす又は減らす起動中インスタンスを、一つ又は複数のオフロードインスタンスの各々について当該オフロードインスタンスの基になっているリソース量を表す情報を基に決定してよい。
【符号の説明】
【0210】
110P:正ストレージ 110S:副ストレージ