(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023061253
(43)【公開日】2023-05-01
(54)【発明の名称】ストレージシステム、データコピー制御方法、及びデータコピー制御プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20230424BHJP
G06F 13/10 20060101ALI20230424BHJP
【FI】
G06F3/06 304Z
G06F3/06 301W
G06F3/06 304F
G06F3/06 305C
G06F13/10 340A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021171133
(22)【出願日】2021-10-19
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】藤田 翔太
(57)【要約】
【課題】パリティグループを構成する記憶デバイスのデータを、迅速且つパリティグループへの負荷を低減して交換先記憶デバイスにコピーできるようにする。
【解決手段】複数のドライブ90により構成されたパリティグループ81を有するストレージ装置20において、パリティグループ81を構成するドライブ90のデータの所定のデータ単位のハッシュ値と、パリティグループを構成するドライブ90以外の他ドライブに格納されているデータの所定のデータ単位のハッシュ値とを管理するハッシュ管理テーブル53(53A、53B)を記憶し、プロセッサ31は、ハッシュ値に基づいて、交換対象ドライブに格納されていたデータに含まれるデータ単位と同一のデータ単位が他ドライブに存在するか否かを判定し、同一のデータ単位が存在する場合に、他ドライブの同一のデータ単位を、交換先ドライブにコピーするように構成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の記憶デバイスを備え、複数の記憶デバイスにより構成された1以上のパリティグループを有するストレージシステムであって、
前記パリティグループを構成する記憶デバイスのデータの所定のデータ単位のハッシュ値と、前記パリティグループを構成する記憶デバイス以外の記憶デバイスである他記憶デバイスに格納されているデータの所定のデータ単位のハッシュ値とを管理するハッシュ管理情報を記憶し、
前記ストレージシステムのプロセッサは、
前記ハッシュ管理情報のハッシュ値に基づいて、前記パリティグループを構成する記憶デバイスの中の交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が前記他記憶デバイスに存在するか否かを判定し、
前記他記憶デバイスに、前記交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が存在する場合に、前記他記憶デバイスの前記同一のデータ単位を、前記交換対象記憶デバイスの交換先となる交換先記憶デバイスにコピーする
ストレージシステム。
【請求項2】
前記他記憶デバイスは、他の複数の記憶デバイスと前記パリティグループと異なるパリティグループを構成している
請求項1に記載のストレージシステム。
【請求項3】
1以上のパリティグループにより構成されるプールを複数有し、
前記ストレージシステムのプロセッサは、
それぞれのプールにおいて、同一のプールを構成する1以上のパリティグループのボリュームに格納されるデータについて所定のデータ単位でハッシュ値を算出し、算出したハッシュ値に基づいて同一のデータ単位を特定し、同一のデータ単位をプールにおいて重複して記憶しないようにする重複排除を行い、
前記重複排除を行うために算出されたハッシュ値を前記ハッシュ管理情報に記憶する
請求項2に記載のストレージシステム。
【請求項4】
前記ストレージシステムのプロセッサは、
前記重複排除において、重複するデータ単位のデータを、ホスト計算機から直接アクセスされる対象となる仮想ボリュームに残さずに、前記仮想ボリュームとは別のボリュームに格納する
請求項3に記載のストレージシステム。
【請求項5】
前記ストレージシステムのプロセッサは、
前記他記憶デバイスに、前記交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が存在しない場合に、このデータ単位について、前記パリティグループの前記交換対象記憶デバイス以外の記憶デバイスのデータによりコレクションコピーを行う
請求項1に記載のストレージシステム。
【請求項6】
前記ストレージシステムのプロセッサは、
交換対象記憶デバイスのデータ単位を含むボリュームが、プールから切り出される重複排除を行わないボリューム、又はプールから切り出されていないボリュームである場合には、コレクションコピーを行い、プールから切り出された重複排除を行うボリュームである場合には、このボリュームのデータ単位について、前記パリティグループの前記交換対象記憶デバイス以外の記憶デバイスのデータによりコレクションコピーを行う
請求項1に記載のストレージシステム。
【請求項7】
複数の記憶デバイスを備え、複数の記憶デバイスにより構成された1以上のパリティグループを有するストレージシステムによるデータコピー制御方法であって、
前記ストレージシステムは、前記パリティグループを構成する記憶デバイスのデータの所定のデータ単位のハッシュ値と、前記パリティグループを構成する記憶デバイス以外の記憶デバイスである他記憶デバイスに格納されているデータの所定のデータ単位のハッシュ値とを管理するハッシュ管理情報を記憶しており、
前記ストレージシステムは、
前記ハッシュ管理情報のハッシュ値に基づいて、前記パリティグループを構成する記憶デバイスの中の交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が前記他記憶デバイスに存在するか否かを判定し、
前記他記憶デバイスに、前記交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が存在する場合に、前記他記憶デバイスの前記同一のデータ単位を、前記交換対象記憶デバイスの交換先となる交換先記憶デバイスにコピーする
データコピー制御方法。
【請求項8】
複数の記憶デバイスを備え、複数の記憶デバイスにより構成された1以上のパリティグループを有するストレージシステムの少なくとも一部を構成するコンピュータに実行させるデータコピー制御プログラムであって、
前記ストレージシステムは、前記パリティグループを構成する記憶デバイスのデータの所定のデータ単位のハッシュ値と、前記パリティグループを構成する記憶デバイス以外の記憶デバイスである他記憶デバイスに格納されているデータの所定のデータ単位のハッシュ値とを管理するハッシュ管理情報を記憶し、
前記コンピュータに、
前記ハッシュ管理情報のハッシュ値に基づいて、前記パリティグループを構成する記憶デバイスの中の交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が前記他記憶デバイスに存在するか否かを判定させ、
前記他記憶デバイスに、前記交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が存在する場合に、前記他記憶デバイスの前記同一のデータ単位を、前記交換対象記憶デバイスの交換先となる交換先記憶デバイスにコピーさせる
データコピー制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パリティグループを構成する記憶デバイスのデータを交換先記憶デバイスにコピーする技術に関する。
【背景技術】
【0002】
データの消失を防止するために、データを、複数の記憶デバイスをRAID(Redundant Array of Indipendent (or Inexpensive) Disks)構成としたパリティグループ(PG)の記憶領域に格納することが行われている。このようにパリティグループの記憶領域にデータを格納することで、記憶デバイスの障害に対して耐久性を確保することができる。
【0003】
パリティグループを使用している場合には、例えば、いずれかの記憶デバイスに障害が発生したり、記憶デバイスの劣化が進んだりした場合には、記憶デバイスを交換する必要が生じる。パリティグループを構成する記憶デバイスを交換する場合には、交換対象の記憶デバイス(交換対象記憶デバイス)以外のパリティグループの記憶デバイスに格納されたデータ及びパリティデータを用いて、交換対象記憶デバイスのデータを生成して交換先の記憶デバイス(交換先記憶デバイス)にコピーするいわゆるコレクションコピーが行われる。
【0004】
また、データを復旧する技術として、特許文献1には、ストレージ装置において、同一のデータを記憶するように構成されている外部装置から要約値を示す他装置要約情報を受信し、他装置要約情報に基づいて、外部装置に格納されているが自装置に格納されていないデータを外部装置から取得する技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記した交換対象記憶デバイスのデータを生成して交換先記憶デバイスにコピーするコレクションコピーにおいては、パリティグループにおける交換対象記憶デバイス以外の記憶デバイスからデータ及びパリティを読出し、さらに、交換対象記憶デバイスのデータを生成する必要があり、処理に時間が掛かり、パリティグループを構成する記憶デバイスに負荷が掛かり、さらには、データを生成する処理を行うプロセッサに負荷が掛かるという問題がある。
【0007】
このため、コレクションコピー時には、パリティグループの記憶領域に格納されているデータを用いたホスト計算機からの入出力を停止しなくてはならなかったり、処理が遅くなったりする虞がある。
【0008】
本発明は、上記事情に鑑みなされたものであり、その目的は、パリティグループを構成する記憶デバイスのデータを、迅速且つパリティグループへの負荷を低減して交換先記憶デバイスにコピーすることのできる技術を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、一観点に係るストレージシステムは、複数の記憶デバイスを備え、複数の記憶デバイスにより構成された1以上のパリティグループを有するストレージシステムであって、前記パリティグループを構成する記憶デバイスのデータの所定のデータ単位のハッシュ値と、前記パリティグループを構成する記憶デバイス以外の記憶デバイスである他記憶デバイスに格納されているデータの所定のデータ単位のハッシュ値とを管理するハッシュ管理情報を記憶し、前記ストレージシステムのプロセッサは、前記ハッシュ管理情報のハッシュ値に基づいて、前記パリティグループを構成する記憶デバイスの中の交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が前記他記憶デバイスに存在するか否かを判定し、前記他記憶デバイスに、前記交換対象記憶デバイスに格納されていたデータに含まれるデータ単位と同一のデータ単位が存在する場合に、前記他記憶デバイスの前記同一のデータ単位を、前記交換対象記憶デバイスの交換先となる交換先記憶デバイスにコピーする。
【発明の効果】
【0010】
本発明によれば、パリティグループを構成する記憶デバイスのデータを、迅速且つパリティグループへの負荷を低減して交換先記憶デバイスにコピーすることができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、一実施形態に係る計算機システムの全体構成図である。
【
図2】
図2は、一実施形態に係るドライブコピーパターンリストの構成図である。
【
図3】
図3は、一実施形態に係るボリュームメタデータの構成図である。
【
図4】
図4は、一実施形態に係るハッシュ管理テーブルの構成図である。
【
図5】
図5は、一実施形態に係るコピー対象スロット管理テーブルの構成図である。
【
図6】
図6は、一実施形態に係るドライブコピー処理の概要を示す第1のシーケンス図である。
【
図7】
図7は、一実施形態に係るドライブコピー処理の概要を示す第2のシーケンス図である。
【
図8】
図8は、一実施形態に係るドライブコピー処理のフローチャートである。
【
図9】
図9は、一実施形態に係るドライブコピー処理の詳細を示す第1のシーケンス図である。
【
図10】
図10は、一実施形態に係るドライブコピー処理の詳細を示す第2のシーケンス図である。
【
図11】
図11は、一実施形態に係るドライブコピー処理の詳細を示す第3のシーケンス図である。
【発明を実施するための形態】
【0012】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0013】
なお、以下の説明では、「AAAテーブル」、「AAAリスト」、「AAAデータ」等の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」、「AAAリスト」、「AAAデータ」を「AAA情報」と呼ぶことができる。
【0014】
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェースデバイス(例えばNIC(Network Interface Card))を用いながら行うため、処理の主体がプログラムとされてもよい。プログラムを動作の主体として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機が行う処理としてもよい。
【0015】
図1は、一実施形態に係る計算機システムの全体構成図である。
【0016】
計算機システム1は、ホスト計算機10と、ストレージシステムの一例としてのストレージ装置20とを有する。ホスト計算機10と、ストレージ装置20とは、ネットワーク2を介して接続されている。ネットワーク2は、有線LAN(Local Area Network)、無線LAN、WAN(Wide Area Network)などである。
【0017】
ホスト計算機10は、例えば、アプリケーションプログラムを実行する計算機である。ホスト計算機10は、ストレージ装置20が提供する論理的な記憶領域(仮想ボリューム)にネットワーク2経由でアクセスする。ホスト計算機10は、ストレージ装置20に対して、I/O(Input/Output)要求であるリード要求やライト要求を発行することで、ストレージ装置20の仮想ボリュームに格納されたデータ(ユーザデータ)にアクセスする。
【0018】
ストレージ装置20は、例えば、コンピュータであり、1以上のストレージコントローラ30と、複数の記憶デバイスの一例としてのドライブ90とを備える。
【0019】
ドライブ90は、例えばハードディスクやフラッシュメモリなどであり、ホスト計算機10により利用されるデータ(ユーザデータ)を格納する。
【0020】
本実施形態では、ストレージ装置20においては、複数のドライブ90によりRAID構成のパリティグループ91を複数構成し、1以上のパリティグループ91の記憶領域をその記憶領域とする1以上のプール80を構成している。パリティグループ91は、RAID5の3D1Pの構成や、7D1Pの構成であってもよい。
【0021】
プール80は、記憶領域に基づく仮想ボリュームを有する。仮想ボリュームは、ホスト計算機10が直接アクセス可能なボリュームを提供してもよい。また、プール80においては、仮想ボリュームに格納されるデータの属性として、重複排除の対象(DRD)とするか、重複排除の対象としないか(非DRD)とするかを、ボリュームの所定のデータサイズであるスロットを単位として設定できる。
【0022】
また、パリティグループ91の記憶領域をプール80の記憶領域としなくてもよく、パリティグループ91の記憶領域に基づくボリュームを仮想ボリュームとしてホスト計算機10に提供するようにしてもよい。
【0023】
ストレージコントローラ30は、プロセッサ31と、フロントエンドインターフェース(FE I/F)32と、メモリ33と、ストレージインターフェース(ストレージI/F)34と、バックエンドインターフェース(BE I/F)35とを備える。プロセッサ31と、FE I/F32と、メモリ33と、ストレージI/F34と、BE I/F35とは、例えば、バス等の内部ネットワーク36を介して接続されている。
【0024】
プロセッサ31は、メモリ33に格納されているプログラムに従って各種処理を実行する。
【0025】
FE I/F32は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、ネットワーク2を介して他の装置(例えば、ホスト計算機10)と通信する。
【0026】
メモリ33は、例えば、RAM(RANDOM ACCESS MEMORY)又はRAMを含むメモリであり、プロセッサ31で実行されるプログラムや、必要な情報を記憶する。
【0027】
メモリ33は、プログラム領域40と、テーブル管理領域50と、バッファ領域60と、キャッシュ領域70とを含む。
【0028】
プログラム領域40には、データ送受信プログラム41、データ格納先検索プログラム42、ドライブコピー制御プログラム43、ハッシュデータ比較プログラム44、ドライブコピーパターン選択プログラム45、及びコピー対象データ属性判定プログラム46や、プール80において、ユーザデータの重複排除を実行する重複排除プログラム等が格納される。本実施形態では、データ送受信プログラム41、データ格納先検索プログラム42、ドライブコピー制御プログラム43、ハッシュデータ比較プログラム44、ドライブコピーパターン選択プログラム45、及びコピー対象データ属性判定プログラム46は、データコピー制御プログラムの一例である。
【0029】
重複排除プログラムは、プール80のそれぞれを対象に重複排除処理を行う。具体的には、重複排除プログラムは、プール内のボリュームにおける所定の重複排除を行う単位(重複排除単位:データ単位の一例)についてのハッシュ値を計算し、そのプールに同一のハッシュ値のデータが含まれている場合には、そのデータ(重複データ)を、ホスト計算機10が直接アクセスする仮想ボリュームから削除し、これとは別のボリュームに格納して管理する。このような重複排除プログラムの機能としては、特開2019―159605号公報に記載の計算機システムの機能を使用してもよい。
【0030】
テーブル管理領域50には、ドライブコピーパターンリスト51と、ボリュームメタデータ52と、ハッシュ管理テーブル53(プール#Xハッシュ管理テーブル53A、プール#Yハッシュ管理テーブル53B等)と、コピー対象スロット管理テーブル54とが格納される。
【0031】
バッファ領域60には、一時的に格納するデータが格納される。キャッシュ領域70には、ドライブ90から読み出したユーザデータや、ホスト計算機10から書き込まれたユーザデータが格納される。
【0032】
ストレージ I/F34は、他のストレージ装置と通信するためのインターフェースである。
【0033】
BE I/F35は、複数のドライブ90と接続され、複数のドライブ90と通信するためのインターフェースである。
【0034】
次に、ドライブコピーパターンリスト51について説明する。
【0035】
図2は、一実施形態に係るドライブコピーパターンリストの構成図である。
【0036】
ドライブコピーパターンリスト51は、ドライブをコピーする処理のパターン(コピーパターン)を管理するリストである。ドライブコピーパターンリスト51は、コピーパターンごとのエントリを格納する。ドライブコピーパターンリスト51のエントリは、コピーパターン51aと、データ属性51bと、ハッシュ一致51cとのフィールドを含む。
【0037】
コピーパターン51aには、エントリに対応するコピーパターンの識別名が格納される。データ属性51bには、エントリに対応するコピーパターンが対象とするデータ属性が格納される。データ属性としては、データが重複排除の対象であることを示すDRD(Data ReDuction)と、重複排除の対象でないことを示す非DRDとがある。ハッシュ一致51cには、エントリに対応するコピーパターンが対象とするハッシュ値の状態、すなわち、ハッシュ値が一致するか、不一致であるかが格納される。
【0038】
次に、ボリュームメタデータ52について説明する。
【0039】
図3は、一実施形態に係るボリュームメタデータの構成図である。
【0040】
ボリュームメタデータ52は、ボリュームの各スロットのデータ属性を管理するデータである。ボリュームメタデータ52は、ボリュームのスロット毎のエントリを格納する。ボリュームメタデータ52のエントリは、VOL#52aと、スロット#52bと、データ属性52cとのフィールドを含む。
【0041】
VOL#52aには、エントリに対応するスロットを含むボリュームの識別情報、例えば、ボリューム番号(ボリューム#)が格納される。スロット#52bには、エントリに対応するスロットの識別情報、例えば、スロット番号(スロット#)が格納される。データ属性52cには、エントリに対応するスロットのデータ属性が格納される。データ属性としては、データが重複排除の対象であることを示すDRDと、重複排除の対象でないことを示す非DRDとがある。
【0042】
次に、ハッシュ管理テーブル53について説明する。
【0043】
図4は、一実施形態に係るハッシュ管理テーブルの構成図である。
【0044】
ハッシュ管理テーブル53は、プール80ごとに作成され、プール80のボリュームにおける所定の重複排除単位のデータごとの情報を管理するテーブルである。ハッシュ管理テーブル53は、重複排除単位のデータに対応するエントリを格納する。ここで、重複排除単位は、ボリュームにおける所定のサイズであってもよい。ハッシュ管理テーブル53のエントリは、VOL#53aと、ハッシュ値53bと、データ格納先アドレス53cとのフィールドを含む。
【0045】
VOL#53aには、エントリに対応する重複排除単位のデータを格納しているボリュームの識別情報、例えば、ボリューム#が格納されている。ハッシュ値53bには、エントリに対応する重複排除単位のデータについてのハッシュ値が格納される。データ格納先アドレス53cには、エントリに対応する重複排除単位のデータが実際に格納されている位置を示す情報(データ格納先アドレス)が格納される。
【0046】
次に、コピー対象スロット管理テーブル54について説明する。
【0047】
図5は、一実施形態に係るコピー対象スロット管理テーブルの構成図である。
【0048】
コピー対象スロット管理テーブル54は、各スロットが交換先ドライブ(交換先記憶デバイス)へのコピー対象であるか否かを管理するテーブルである。コピー対象スロット管理テーブル54は、スロット毎のエントリを格納する。コピー対象スロット管理テーブル54のエントリは、PG#54aと、ドライブ#54bと、スロット#54cと、ドライブコピー対象54dとのフィールドを含む。
【0049】
PG#54aには、エントリに対応するスロットが格納されるパリティグループの識別情報、例えば、パリティグループ番号(PG#)が格納される。ドライブ#54bには、エントリに対応するスロットが格納されているパリティグループ内のドライブの番号(ドライブ#)が格納される。スロット#54cには、エントリに対応するスロットの識別情報、例えば、スロット番号(スロット#)が格納される。ドライブコピー対象54dには、エントリに対応するスロットのデータがコピー対象であるか否かを示す情報が格納される。ここで、ストレージ装置20のストレージコントローラ30は、いずれかのパリティグループのドライブの交換が必要であると判定した場合に、このドライブを交換対象ドライブとし、この交換対象ドライブに格納されているスロットに対応するエントリのドライブコピー対象54dの値をコピー対象に設定する。
【0050】
次に、ストレージ装置20において交換対象ドライブ(交換対象記憶デバイス)のデータを交換先ドライブ(交換先記憶デバイス)にコピーするドライブコピー処理の概要について説明する。
【0051】
図6は、一実施形態に係るドライブコピー処理の概要を示す第1のシーケンス図である。
図7は、一実施形態に係るドライブコピー処理の概要を示す第2のシーケンス図である。
【0052】
ドライブコピー処理は、例えば、ストレージ装置20において、パリティグループ91のいずれかのドライブ90を交換する必要が生じた場合、例えば、いずれかのドライブ90に障害が発生したことを検出した場合、又はいずれかのドライブ90が、交換が必要な状態に劣化したことを検出した場合に実行される。
【0053】
ストレージ装置20のストレージコントローラ30は、ドライブコピー処理を起動し(ステップS1)、ドライブコピーパターンリスト51を参照し(ステップS2)、ドライブコピーパターンを取得し(ステップS3)、ドライブコピーパターンをメモリ33のワークエリアに格納する(ステップS4)。
【0054】
次いで、ストレージコントローラ30は、ボリュームメタデータ52を参照し、コピー対象(交換対象)のドライブ(本例では、ドライブXとする)のスロットのデータ属性(コピー対象データ属性)を参照し(ステップS5)、コピー対象データ属性を取得し(ステップS6)、取得したコピー対象データ属性に基づいて、格納しているドライブコピーパターンの中から実行するドライブコピーパターンを選択する(ステップS7)。
【0055】
ここで、以下の処理は、コピー対象データ属性がDRDであり、ドライブコピーパターンリスト51のB又はCのドライブコピーパターンが選択されたものとして後続の処理について説明する。
【0056】
ストレージコントローラ30は、コピー対象のドライブXを含むPGで構成されるプール(この例では、プールX)のハッシュ管理テーブル53(プール#Xハッシュ管理テーブル53A)を参照し(ステップS8)、ドライブXのボリュームに含まれるデータのハッシュデータ(ハッシュ値及び格納先アドレス)を取得し(ステップS9)、取得したハッシュデータをメモリ33のワークエリアに格納する(ステップS10)。
【0057】
次いで、ストレージコントローラ30は、プールXとは別のプール(この例は、プールY)のハッシュ管理テーブル53(プール#Yハッシュ管理テーブル53B)を参照し(ステップS11)、プールYにあるデータの全てのハッシュデータ(ハッシュ値及び格納先アドレス)を取得し(ステップS12)、取得したハッシュデータ(プール#Yハッシュデータ)をメモリ33のワークエリアに格納する(ステップS13)。
【0058】
次いで、ストレージコントローラ30は、ドライブXのボリュームに含まれるデータのハッシュデータのハッシュ値と、プール#Yハッシュデータのハッシュ値とを比較し、ハッシュ値が一致するか否かを判定する(ステップS14)。
【0059】
次いで、ストレージコントローラ30は、ハッシュ値の比較結果に基づいて、B又はCのドライブコピーパターンのいずれかを選択する(ステップS15)。ここで、本例では、ハッシュ値が一致し、Cのドライブコピーパターンが選択されたものとする。
【0060】
次いで、ストレージコントローラ30は、プール#Yハッシュデータを参照して、一致するハッシュ値に対応する格納先アドレスを特定する(ステップS16)。
【0061】
次いで、ストレージコントローラ30は、特定された格納先アドレスのドライブ(ここでは、ドライブYとする)に一致したハッシュ値に対応するデータのリード要求を送信し(ステップS17)、ドライブYからリード要求の対象のデータを受信してキャッシュ領域70に格納し(ステップS18)、キャッシュ領域70に格納したデータを、コピー先ドライブ(交換先ドライブ)にコピーする(ステップS19)。
【0062】
ストレージコントローラ30は、交換先ドライブからデータ書き込み完了の通知を受信する(ステップS20)。ストレージコントローラ30は、ドライブXのボリュームのすべてのデータのコピーが完了した後、ドライブコピー処理を完了する(ステップS21)。
【0063】
次に、ドライブコピー処理の詳細について説明する。
【0064】
図8は、一実施形態に係るドライブコピー処理のフローチャートである。
【0065】
ストレージ装置20は、ドライブコピー処理を起動し(ステップS31)、ボリュームメタデータ52を参照し、コピー対象(交換対象)のドライブのスロットのデータ属性(コピー対象データ属性)を参照し(ステップS32)、コピー対象データ属性に基づいて、格納しているドライブコピーパターンの中から実行するドライブコピーパターンを選択する(ステップS33)。
【0066】
この結果、データ属性がDRD属性である際のドライブコピーパターンが選択されている場合(ステップS34:Yes)には、ストレージ装置20は、交換対象ドライブのデータのハッシュデータ(この例では、プール#Xハッシュデータ)と、交換対象ドライブにより構成されるプールとは別のプール(プール#Y)のデータについてのハッシュデータとを比較する(ステップS35)。なお、ステップS34~ステップS41の処理では、交換対象ドライブに格納されているボリュームの各スロットを対象に実行され、ステップS35~ステップS41の処理では、処理対象のスロットの全ての重複判定単位のデータのそれぞれを対象に実行される。
【0067】
次いで、ストレージ装置20は、ハッシュデータの比較結果に基づいて、実行するドライブコピーパターンを選択する(ステップS36)。
【0068】
この結果、交換対象ドライブのデータのハッシュ値と、他のプールのデータのハッシュ値とが一致する際のドライブコピーパターンが選択されている場合(ステップS37:Yes)には、ストレージコントローラ30は、一致するハッシュ値のデータの格納先を検索して格納先アドレスを特定し(ステップS38)、特定された格納先アドレスのドライブにデータのリード要求を送信し(ステップS39)、このドライブから対象のデータを受信して交換先ドライブにコピーする(ステップS40)。
【0069】
一方、データ属性がDRD属性でない際のドライブコピーパターンが選択されている場合(ステップS34:No)、又は、交換対象ドライブのデータのハッシュ値と、他のプールのデータのハッシュ値とが一致しない際のドライブコピーパターンが選択されている場合(ステップS37:No)には、ストレージ装置20は、交換対象ドライブのデータを、交換対象ドライブとPGを構成する他のドライブのデータ及びパリティデータを用いて生成し、交換先ドライブにコピーするコレクションコピーを実行する(ステップS41)。ストレージ装置20は、ステップS34~ステップS41の処理を交換対象ドライブに格納されているボリュームのすべてのスロットを対象に実行すると、ドライブコピー処理を終了する。
【0070】
次に、ドライブコピー処理におけるストレージ装置内の構成間の処理動作の詳細について説明する。
【0071】
図9は、一実施形態に係るドライブコピー処理の詳細を示す第1のシーケンス図である。
図10は、一実施形態に係るドライブコピー処理の詳細を示す第2のシーケンス図である。
図11は、一実施形態に係るドライブコピー処理の詳細を示す第3のシーケンス図である。
【0072】
ストレージ装置20のドライブコピー制御プログラム43(厳密には、ドライブコピー制御プログラム43を実行するプロセッサ31)は、ドライブコピー処理を起動し(ステップS51)、ドライブコピーパターン選択プログラム45にドライブコピーパターン選択指示を送信する(ステップS52)。ドライブコピーパターン選択プログラム45は、ドライブコピーパターンリスト51を参照し(ステップS53)、ドライブコピーパターンを取得し(ステップS54)、ドライブコピーパターンをメモリ33のワークエリアに格納する(ステップS55)。
【0073】
次いで、ドライブコピーパターン選択プログラム45は、コピー対象データ属性判定プログラム46にコピー対象データ判定指示を送信する(ステップS56)。
【0074】
コピー対象データ属性判定プログラム46は、ボリュームメタデータ52を参照し、コピー対象(交換対象)のドライブのスロットのデータ属性(コピー対象データ属性)を参照し(ステップS57)、コピー対象データ属性を取得し(ステップS58)、取得したコピー対象データ属性をドライブコピーパターン選択プログラム45に送信する(ステップS59)。
【0075】
ドライブコピーパターン選択プログラム45は、コピー対象データ属性を取得し、ドライブコピーパターンを選択する(ステップS60)。
【0076】
コピー対象データ属性が非DRD属性である場合には、ドライブコピーパターン選択プログラム45は、コレクションコピー実行指示をドライブコピー制御プログラム43に送信する(ステップS61)。コレクションコピー実行指示を受信したドライブコピー制御プログラム43は、コレクションコピーを実行する(ステップS62)。
【0077】
一方、コピー対象データ属性がDRD属性である場合には、ドライブコピーパターン選択プログラム45は、ハッシュデータ比較指示をドライブコピー制御プログラム43に送信する(ステップS63)。
【0078】
ハッシュデータ比較指示を受信すると、ドライブコピー制御プログラム43は、ハッシュデータ比較指示をハッシュデータ比較プログラム44に送信する(ステップS64)。ハッシュデータ比較プログラム44は、コピー対象のドライブXを含むPGで構成されるプール(この例では、プールX)のハッシュ管理テーブル53(プール#Xハッシュ管理テーブル53A)を参照し(ステップS65)、ドライブXのボリュームに含まれるデータのハッシュデータ(ハッシュ値及び格納先アドレス)を取得し(ステップS66)、取得したハッシュデータをメモリ33のワークエリアに格納する(ステップS67)。
【0079】
次いで、ハッシュデータ比較プログラム44は、プールXとは別のプール(この例は、プールY)のハッシュ管理テーブル53(プール#Yハッシュ管理テーブル53B)を参照し(ステップS68)、プールYにあるデータの全てのハッシュデータ(ハッシュ値及び格納先アドレス)を取得し(ステップS69)、取得したハッシュデータ(プール#Yハッシュデータ)をメモリ33のワークエリアに格納する(ステップS70)。
【0080】
次いで、ハッシュデータ比較プログラム44は、ドライブXのボリュームに含まれるデータのハッシュデータのハッシュ値と、プール#Yハッシュデータのハッシュ値とを比較し、ハッシュ値が一致するか否かを判定する(ステップS71)。なお、ステップS71~S87の処理は、ドライブXのボリュームに含まれる重複排除単位のデータのそれぞれを対象に実行される。
【0081】
次いで、ハッシュデータ比較プログラム44は、ハッシュ値の比較結果を、ドライブコピーパターン選択プログラム45に送信する(ステップS72)。
【0082】
次いで、ドライブコピーパターン選択プログラム45は、受信した比較結果に基づいて、B又はCのドライブコピーパターンのいずれかを選択する(ステップS73)。
【0083】
ここで、比較結果が、ハッシュ値が不一致である場合には、ドライブコピーパターン選択プログラム45は、Bのドライブコピーパターンを選択し、コレクションコピーの実行指示をドライブコピー制御プログラム43に送信する。
【0084】
ドライブコピー制御プログラム43は、コレクションコピーの実行指示を受信すると、
パリティグループの他のドライブのデータ及びパリティデータに基づいて、コピー対象のドライブXのデータを生成し、コピー先のドライブにコピーするコレクションコピーを行う(ステップS75)。
【0085】
一方、比較結果が、ハッシュ値が一致する場合には、ドライブコピーパターン選択プログラム45は、Cのドライブコピーパターンを選択し、データ格納先検索実行指示をドライブコピー制御プログラム43に送信する(ステップS76)。
【0086】
ドライブコピー制御プログラム43は、データ格納先検索実行指示を受信すると、データ格納先検索実行指示をデータ格納先検索プログラム42に送信する(ステップS77)。
【0087】
データ格納先検索プログラム42は、プールYのハッシュ管理テーブル53(プール#Yハッシュ管理テーブル53B)を参照し(ステップS78)、一致するハッシュ値に対応するデータが格納されている格納先(プール#Yデータ格納先)を取得する(ステップS79)。
【0088】
データ格納先検索プログラム42は、取得したプール#Yデータ格納先をドライブコピー制御プログラム43に送信する(ステップS80)。
【0089】
ドライブコピー制御プログラム43は、取得したプール#Yデータ格納先をデータ送受信プログラム41に送信し(ステップS81)、データ送受信プログラム41に、プール#Yデータ格納先のデータをコピー先のドライブにコピーする指示(ドライブコピー実行指示)を送信する(ステップS82)。
【0090】
データ送受信プログラム41は、プール#Yデータ格納先のデータをドライブYから読出し(ステップS83)、キャッシュ領域70にステージングし、このデータをコピー先のドライブX(ここでは、便宜的に、ドライブXの交換先のドライブもドライブXという)に書き込む(ステップS85)。ドライブXは、データ書き込み完了をデータ送受信プログラム41に通知する(ステップS86)。
【0091】
データ送受信プログラム41は、データ書き込み完了をドライブコピー制御プログラム43に通知する(ステップS87)。ドライブコピー制御プログラム43は、ドライブXのボリュームに含まれる全ての重複排除単位のデータについてのデータ書き込みが完了した場合に、ドライブコピー処理を終了する。
【0092】
上記実施形態によると、格納対象のドライブのデータと同じデータが、他のプールに格納されている場合に、そのデータを格納先のドライブに格納するようにしているので、コレクションコピーを実行せずに済み、処理負荷を低減でき、処理時間を短縮することができる。また、このデータについてコレクションコピーを実行せずに済むので、ドライブコピー時の格納対象のドライブを含むパリティグループの負荷を低減でき、このパリティグループに対するホスト計算機10からのI/O処理を適切に実行することができる。
【0093】
また、上記実施形態によると、プールごとに重複排除処理を行うために算出されているハッシュ値を利用して、格納対象のドライブのデータと、他のプールのデータとの一致を判定するようにしているので、新たにハッシュ値を算出する処理を実行しないで済み、処理負荷を低減することができる。
【0094】
なお、本発明は、上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【0095】
例えば、上記実施形態では、交換対象ドライブのデータと同じデータが格納されているかを判定する対象のドライブを、他のプールを構成する他のパリティグループのドライブとしていたが、本発明はこれに限られず、例えば、プールを構成していない他のパリティグループのドライブであってもよく、また、パリティグループを構成していないドライブであってもよい。
【0096】
また、上記実施形態では、重複排除処理で算出されているハッシュ管理テーブルを使用して、交換対象ドライブのデータと同じデータが、他のドライブに格納されているかを判定するようにしていたが、本発明はこれに限られず、例えば、他のドライブに格納されているデータについて、重複排除処理を実行せずに、重複排除単位と同じサイズのデータ単位のハッシュ値を算出しておき、そのハッシュ値を用いるようにしてもよい。
【0097】
また、上記実施形態において、プロセッサが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記録メディア(例えば可搬型の記録メディア)であってもよい。
【符号の説明】
【0098】
1…計算機システム、2…ネットワーク、10…ホスト計算機、20…ストレージ装置、30…ストレージコントローラ、31…プロセッサ、33…メモリ、53,53A,53B…ハッシュ管理テーブル、80…プール、90…ドライブ、91…パリティグループ