以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るディスクアレイサブシステム1の構成を示すブロック図である。このディスクアレイサブシステム1は、少なくとも1台のディスクアレイ装置、例えば2台のディスクアレイ装置10-1及び10-2を有するストレージシステム(自律データ再配置ストレージシステム)として実現されている。
ディスクアレイ装置10-1及び10-2は、当該ディスクアレイ装置10-1及び10-2を利用する少なくとも1台のホスト装置、例えばホスト装置20とネットワーク31を介して接続されている。ディスクアレイ装置10-1及び10-2はまた、ネットワーク32によって相互接続されている。ネットワーク31及び32は、例えばファイバチャネル(Fibre Channel: FC)、或いはインターネットSCSI(Internet SCSI: iSCSI)を用いて構成される。
ディスクアレイ装置10-1は少なくとも1つのディスクアレイ(アレイ)、例えば3つのアレイ11-1(#1),11-2(#2)及び11-3(#3)を有しているものとする。一方、ディスクアレイ装置10-2は、少なくとも1つのディスクアレイ(アレイ)、例えば3つのアレイ11-A(#A),11-B(#B)及び11-C(#C)を有しているものとする。
アレイ11-1〜11-3及び11-A〜11-Cは、それぞれ少なくとも1台のHDD(ディスク装置)、例えば6台のHDD110から構成されるものとする。但し、図1では、アレイ11-1〜11-3及び11-A〜11-Cは、作図の都合で、それぞれ3台のHDD110から構成されているように示されている。本実施形態におけるアレイ11-i(i=1,2,3,A,B,C)は、例えばRAID5(RAID5レベル)を適用するRAID(Redundant Array of Independent DisksまたはRedundant Array of Inexpensive Disks)である。アレイ11-iの領域は、当該アレイ11-iを構成するHDD110を組み合わせて、これらのHDD110の記憶領域を連続した1つの領域として定義される。ディスクアレイ装置10-1及び10-2内の各HDD110には、当該ディスクアレイ装置10-1及び10-2内で固有の識別番号(HDD番号)が割り当てられる。
ディスクアレイ装置10-1は、ホスト装置20からの要求に応じてアレイ11-1〜11-3へのアクセスを制御するアレイコントローラ12-1を有する。ディスクアレイ装置10-2は、ホスト装置20からの要求に応じてアレイ11-A〜11-Cへのアクセスを制御するアレイコントローラ12-2を有する。アレイコントローラ12-1及び12-2は、ネットワーク31を介してホスト装置20と接続されている。
アレイコントローラ12-1及び12-2は、それぞれ、アレイ11-1〜11-3及び11-A〜11-Cの全領域を、ある一定サイズの物理エクステントに区切って(分割して)管理する。アレイコントローラ12-1及び12-2は、1つ以上の物理エクステント(例えば複数の物理エクステント)を用いることによってホスト装置20から認識(アクセス)される論理ボリューム(論理ディスク)を構成する。即ちアレイコントローラ12-1及び12-2は、論理ボリュームを構成する論理エクステントを、その論理エクステントと同数の物理エクステントに割り付ける。
論理エクステントと物理エクステントとの対応付けはマッピングテーブルによって管理される。例えば、論理エクステントLE1に対応付けられる物理エクステントを物理エクステントPE1から物理エクステントPE2に変更する場合、マッピングテーブルにおけるLE1とPE1との対応を表すマッピング情報が、LE1とPE2との対応を表すマッピング情報に更新される。このような論理エクステントと物理エクステントとの対応付けを管理する手法は従来から良く知られている。このため以下では、論理エクステントに対応付けられる物理エクステントの変更についての説明は省略する。また、以下では物理エクステントについて述べ、物理エクステントと論理エクステントとを区別する必要がある場合を除き、物理エクステントを単にエクステントと表現する。
エクステントのうち、各HDD110に対応する(属する)領域をエクステントチャンクと呼ぶ。図2は、エクステントとエクステントチャンクとの関係をアレイ11-i(i=1,2,3,A,B,C)で代表させて示す。
本実施形態において、ディスクアレイ装置10-1及び10-2の各々のHDD110の総数は18、各HDD110の容量は300GBである。各アレイ11-iのエクステントのサイズは1GBに固定されている。また、各アレイ11-iは前記したように6台のHDD110から構成され(図では便宜的に3台のHDD110のみが示されている)、RAID5を適用するRAIDである。
各アレイ11-iの実質的なデータ容量は、当該アレイ11-iがRAID5を適用することから、HDD5台分の容量となる。この場合、エクステントチャンクサイズは1GB/5=0.2GBとなる。したがって、HDD1台当たりのエクステントチャンク総数(アレイ当たりのエクステント総数)は、300GB/0.2GB=1500となる。
アレイコントローラ12-1及び12-2は、前記したように、ホスト装置20からアクセスされる論理ボリュームと当該論理ボリュームを構成する論理エクステントとの対応関係、及び当該論理エクステントと当該論理エクステントがマッピングされる物理エクステントとの対応関係を管理する。アレイコントローラ12-1及び12-2は、データの物理的な配置を、当該アレイコントローラ12-1及び12-2にそれぞれ対応するディスクアレイ装置10-1及び10-2内で、またはディスクアレイ装置10-1及び10-2をまたがって自律的に再配置する。更に具体的に述べるならば、アレイコントローラ12-1及び12-2は、エクステント間のデータコピーを行うことによって、データを保持したまま、データの物理エクステントを、ディスクアレイ装置10-1及び10-2内で、またはディスクアレイ装置10-1及び10-2をまたがって再配置する。このようなエクステントの入れ替えによるデータの再配置をエクステントマイグレーションと呼ぶ。
ここで、本実施形態で適用される特別の用語について説明する。本実施形態では、代表HDD、実行中I/O、同時I/O存在率、HDDI/O存在率及びエクステントチャンクI/O存在率が定義されている。
<代表HDD>
代表HDDは、アレイ11-i(i=1,2,3,A,B,C)を構成する6台のHDD110のうちの特定の1つを指す。ここでは、アレイ11-iを構成するHDD110のうちHDD番号が最も小さいHDDが代表HDDとして用いられる。
<実行中I/O>
実行中I/Oは、アレイコントローラ12-j(j=1,2)からHDD110に発行されて未完了のアクセス要求(リード/ライトのためのディスクI/O要求)を指す。つまり、実行中I/Oは、HDD110内のエクステントチャンクへのアクセスが現在実行されているアクセス要求だけでなく、エクステントチャンクへのアクセスの実行待ち状態にあるアクセス要求をも指す。エクステントチャンクへのアクセスが実行されている、或いはエクステントチャンクへのアクセスの実行待ち状態にあるI/O要求(実行中I/O、未完了I/O)が存在することを、「実行中I/Oがエクステントチャンクに存在する」、または「エクステントチャンクに対する実行中I/Oが存在する」と表現する。アクセス要求(I/O要求)は、HDD110のI/Oキュー(I/Oキューバッファ)にキューリストとして保持され、当該要求の指定するアクセスが完了すると当該キューから削除される。
<同時I/O存在率>
同時I/O存在率(第1の存在率)は、HDD110(代表HDD110)内の複数のエクステントチャンクに同時に実行中I/Oが存在する度合いを指す。この同時I/O存在率は、エクステントチャンク毎に算出される。つまり同時I/O存在率は、着目するエクステントチャンクとHDD110(代表HDD110)内の他のエクステントチャンクに同時に実行中I/Oが存在する度合いを指す。アレイ11-1〜11-3及び11-A〜11-Cは一般にRAIDストライプ単位、即ちエクステントを構成する各エクステントチャンクに対して均等にアクセスされることが多い。したがって、代表HDD110内のエクステントチャンクの同時I/O存在率は、そのエクステントチャンクが属するエクステントの同時I/O存在率を表すと見なすことができる。また、例えばRAID1の場合で、リードデータがペアHDDの一方から読み出されるような場合は、リードデータを読み出すHDDを代表HDDとするといった、アレイのI/O状態を反映したHDDを代表HDDに選ぶと良い。
<エクステントチャンクI/O存在率>
エクステントチャンクI/O存在率(第3の存在率)は、代表HDD110内のエクステントチャンク毎に算出される、当該エクステントチャンクに実行中I/O(少なくとも1つの実行中I/O)が存在する度合いを指す。
<HDDI/O存在率>
HDDI/O存在率(第2の存在率)は、代表HDD110毎に算出される、当該代表HDD110に実行中I/O(少なくとも1つの実行中I/O)が存在する度合いを指す。
アレイコントローラ12-1及び12-2は、上述のエクステントマイグレーションを、次に述べる第1のアレイの第1のエクステント及び第2のアレイの第2のエクステントの間で行う。
第1のエクステントは、あるアレイ(第1のアレイ)を構成する代表HDD110(第1の代表HDD110)内の同時I/O存在率が一定レベルよりも高いエクステントチャンクが属する、当該第1のアレイ内のエクステントを指す。第2のアレイは、第1のアレイとは別のアレイであって、当該第2のアレイの代表HDD(第2の代表HDD110)に実行中I/Oが存在する度合い(つまりHDDI/O存在率)が一定レベルよりも低いアレイを指す。第2のエクステントは、第2のアレイ内のエクステントのうち、当該第2のアレイ内の第2の代表HDD110において実行中I/Oが存在する度合い率が最も低いエクステントチャンク(つまりエクステントチャンクI/O存在率が最も低いエクステントチャンク)が属するエクステントを指す。
本実施形態において、アレイコントローラ12-1及び12-2は同一の構成を有している。そこで、アレイコントローラ12-1及び12-2の構成について、アレイコントローラ12-j(j=1,2)で代表させて説明する。
図3は、アレイコントローラ12-jの構成を示すブロック図である。必要ならば、以下の説明においてアレイコントローラ12-jをアレイコントローラ12-1または12-2に適宜読み替えられたい。
アレイコントローラ12-jは、ホストドライバ121と、ホストマネージャ122と、キャッシュ123と、キャッシュコントローラ124と、RAIDマネージャ125と、HDDドライバ126と、メモリ127とから構成される。
ホストドライバ121は、ホスト装置20との間でデータ・コマンドを入出力する。ホストマネージャ122は、ホスト装置20によって認識される論理ボリュームを提供するアレイ(図1ではアレイ11-1〜11-3またはアレイ11-A〜11-C)を管理する。キャッシュ123は、ホスト装置20とアレイとの間で入出力されるデータを一時格納する。キャッシュコントローラ124は、キャッシュ123に対するアクセスを制御する。
RAIDマネージャ125は、ホスト装置20によって認識される論理ボリュームを提供するアレイとエクステントとの対応関係、及びエクステントとHDD110内のエクステントチャンクとの対応関係を管理する。RAIDマネージャ125は、同時I/O存在率、HDDI/O存在率及びエクステントチャンクI/O存在率を算出する機能と、これらの存在率に基づいて上述のエクステントマイグレーションを実行する機能とを有する。
HDDドライバ126は、アレイを構成する各HDD110へのアクセス(ディスクI/O)を実行する。HDDドライバ125は、代表HDD110毎のHDDI/O数N1及び当該代表HDD110内のエクステントチャンク毎のエクステントチャンクI/O数N2を計測する。HDDI/O数N1は、代表HDD110内での実行中I/Oの数、つまり代表HDD110に存在する未完了のI/Oの数を表す。エクステントチャンクI/O数N2は、エクステントチャンクでの実行中I/Oの数、つまりエクステントチャンクに存在する未完了のI/Oの数を表す。
メモリ127は、上述のN1及びN2を計測するためのカウンタ(N1カウンタ及びN2カウンタ)を含む種々のカウンタ(のカウント値)を保持する。これらのカウンタはソフトウェアカウンタである。
本実施形態において、ホストドライバ121、ホストマネージャ122、キャッシュコントローラ124、RAIDマネージャ125及びHDDドライバ126は、アレイコントローラ12-jが、所定のプログラムを記憶媒体から読み込んで実行することにより実現される。この記憶媒体は、例えば、HDDに搭載されている磁気ディスク媒体、光ディスクドライブに装着して用いられる光ディスク媒体、或いはROMである。また、上記プログラムが例えばネットワーク31を介してアレイコントローラ12-jにダウンロードされても構わない。
次に、例えばアレイコントローラ12-1(内のRAIDマネージャ125)によるエクステントマイグレーションについて、図4を参照して説明する。
図4において、代表HDD110(#1)は第1のアレイ11-1(#1)の代表HDD110を表す。この代表HDD110(#1)内のエクステントチャンク41〜43の各々は、当該エクステントチャンクを含む複数のエクステントチャンクに同時に実行中I/Oが存在する度合い(同時I/O存在率)が一定レベルよりも高いエクステントチャンクであるものとする。つまり、エクステントチャンク41〜43は同時I/O存在率が高いエクステントチャンクの組であるものとする。ここでは、実行中I/O数が2以上となる度合いが高いエクステントチャンクが、同時I/O存在率が高いエクステントチャンクとして扱われる。このようなエクステントチャンクはレスポンスが良くない。
一方、代表HDD110(#2)はアレイ11-1(#1)とは別の第2のアレイ、例えばアレイ11-2(#2)の代表HDD110を表す。この代表HDD110(#2)は、代表HDD110(#1)に比べて実行中I/Oが存在する度合い(HDDI/O存在率)が低く、したがってHDD利用率(活用率)が低いものとする。代表HDD110(#2)内のエクステントチャンク44は、実行中I/Oが存在する度合い(エクステントチャンクI/O存在率)が当該代表HDD110(#2)内のエクステントチャンクの中で最も低いものとする。
アレイコントローラ12-1(内のRAIDマネージャ125)は、エクステントチャンク41〜43のうちのいずれか、例えばエクステントチャンク41が属するアレイ11-1(#1)内のエクステント(第1のエクステント)と、エクステントチャンク44が属するアレイ11-2(#2)内のエクステント(第2のエクステント)との間でエクステントマイグレーション(アレイ間エクステントマイグレーション)45を行う。
このエクステントマイグレーション45により、代表HDD110(#1)内の(同時I/O存在率が高い)エクステントチャンク41のデータD1は、(HDDI/O存在率が低い)代表HDD110(#2)内の(エクステントチャンクI/O存在率が最も低い)エクステントチャンク44に、エクステントチャンク44のデータD2はエクステントチャンク41に、それぞれ再配置される。このエクステントマイグレーション45では、エクステントチャンク41が属するエクステント(第1のエクステント)に含まれている他のエクステントチャンクのデータが、エクステントチャンク44が属するエクステント(第2のエクステント)に含まれている他のエクステントチャンクに、第2のエクステントに含まれている他のエクステントチャンクのデータが第1のエクステントに含まれている他のエクステントチャンクに、それぞれ再配置される。
つまり、エクステントマイグレーション45では、上述の第1のエクステントのデータが第2のエクステントに、第2のエクステントのデータが第1のエクステントに再配置される。ここで、第1及び第2のエクステント(物理エクステント)が、エクステントマイグレーション45の実行前に、それぞれ第1及び第2の論理エクステントと対応付けられているものとする。この場合、エクステントマイグレーション45の実行に伴い、前述のマッピングテーブルが更新されて、第1及び第2のエクステント(物理エクステント)が、それぞれ第2及び第1の論理エクステントと対応付けられる。このエクステントマイグレーションの実行に伴うマッピングテーブルの更新(マッピングの変更)自体は従来から良く知られているため、以下の新たなエクステントマイグレーションに関する説明では省略する。
エクステントマイグレーション45によるデータ再配置46の結果、アレイ11-1(#1)を構成するHDD110内の複数のエクステントチャンクに同時にアクセス要求(I/O要求)が発生する度合いが下げられる。つまり、アレイ11-1(#1)を構成するHDD110において同時に存在する実行中I/Oの数、つまりHDD I/Oキューにつながれている実行中I/O(未完了のI/O要求の数)が低減される。これにより、アレイ11-1(#1)を構成するHDD110の利用効率(稼働率)を上げて、当該HDD110の性能を可能な限り活用することができる。
以下、上述のエクステントマイグレーションを更に具体的に説明する。
図4の例では、アレイ11-1(#1)を構成するHDD110(代表HDD110(#1))に、同時I/O存在率が高いエクステントチャンク41〜43の組が存在する。このようなHDD110では、同時I/O数(HDD I/Oキューつながれている実行中I/O数)が2以上となる度合いが高い。HDD110では、同時に複数のI/O要求を処理できないことから、同時I/O数が2以上となる場合、レスポンスは低下する傾向にある。
一方、アレイ11-2(#2)を構成するHDD110(代表HDD110(#2))のHDDI/O存在率は低い。このようなアレイ11-2(#2)が存在する場合、そのアレイ11-2(#2)を構成するHDD110はアイドル状態となっている割合が高い。つまり、アレイ11-2(#2)を構成するHDD110の性能を十分に活用できていない。
本実施形態では、上述した2つのアレイ11-1(#1)及び11-2(#2)の間でのエクステントマイグレーション45により、アレイ11-1(#1)内の同時I/O存在率が高いエクステント組に含まれている1つのエクステントと、他のアレイ11-2(#2)(つまりHDDI/O存在率が低いHDD110によって構成されるアレイ11-2(#2))内のエクステントチャンクI/O存在率が最も低いエクステントチャンクが属するエクステントとの間で、データが入れ替えられる(再配置される)。これにより、ディスクアレイ装置10-1内の各HDD110における同時I/O存在率を均等化して、当該HDD110の性能を可能な限り活用することができる。
次に、エクステントマイグレーションの対象となるエクステントを決定するのに、エクステントチャンクのアクセス頻度ではなくて同時I/O存在率を用いる理由について図5を参照して説明する。図5は、エクステントマイグレーションで性能向上が期待できないHDD110のアクセスパターン例を、アレイ11-iの代表HDD110について示す。
図5(a)の例は、代表HDD110内のある1つのエクステントチャンク51のみにアクセス(アクセス要求)が集中している場合を想定している。つまり、アレイ11-iにおいて、ある1つのエクステントのみにアクセスが集中しているものとする。
図5(a)の代表HDD110では、エクステントチャンク51以外のエクステントチャンクへのアクセスは殆ど発生しない。つまり図5(a)の代表HDD110は、エクステントチャンク51のみに対するアクセスの集中によってアクセス頻度が高くても、アイドル状態となっている度合いが高い。このため、エクステントチャンク51が属するエクステント(のデータ)を再配置しても、アレイ11-iを構成するHDD110のアクセス頻度は下げられるものの、利用効率を向上することは期待できない。
図5(b)の例は、代表HDD110において、アクセス頻度は高いものの、同時に複数のエクステントチャンク(ここではエクステントチャンク52及び53)にアクセスが発生することが少ない場合を想定している。つまり、アレイ11-iはアクセス頻度が高く高負荷であっても、同時に複数のエクステントに対してアクセスが発生することが少ないものとする。このような例として、エクステントチャンク52が属するエクステントとエクステントチャンク53が属するエクステントとが交互にアクセスされる場合が挙げられる。
図5(b)の代表HDD110では、エクステントチャンク52及び53へのアクセスは時間的に分散している。したがって、エクステントチャンク52または53が属するエクステントを再配置(分散)しても、アレイ11-iを構成するHDD110のアクセス頻度は下げられるものの、利用効率を向上することは期待できない。
以上の点を考慮して、本実施形態では、エクステントマイグレーションの対象となる高負荷アレイと当該アレイ内のエクステント(第1のエクステント)の判定に、代表HDDのエクステントチャンクに関する同時I/O存在率が用いられる。
また本実施形態では、エクステントマイグレーションの相手となるアレイ内のエクステント(第2のエクステント)として、HDDI/O存在率が低い別のアレイ(第2のアレイ)の、代表HDD内でエクステントチャンクI/O存在度合いが最も低いエクステントチャンクが属するエクステントが用いられる。このようなエクステントがエクステントマイグレーションの相手となるアレイの低負荷エクステントとして用いられる2つの理由について説明する。
まず第1の理由について説明する。、HDDI/O存在率が低いHDD110(代表HDD110)はアイドル率が高い。このため、このようなHDD110によって構成されるアレイを、同時I/O存在率の高いエクステントとの間のエクステントマイグレーションの相手(引受先)となる第2のアレイとして選択的に利用することによって、当該HDD110の稼働率を上げ、当該HDD110の性能を活用できる。
次に第2の理由について説明する。まず、第1の理由に基づいて選択された第2のアレイ内のエクステントのうち、代表HDD内でエクステントチャンクI/O存在率が最も低いエクステントチャンクが属するエクステントが、第1のアレイ内の第1のエクステントとの間のエクステントマイグレーションの相手となる第2のエクステント(低負荷エクステント)として用いられるものとする。この場合、エクステントマイグレーション実行後の、第1のアレイ(負荷を減らしたいアレイ)に実行中I/Oが存在する度合いをできるだけ増加させないようにできる。
次に本実施形態において、代表HDD110内の複数のエクステントチャンクに実行中I/Oが同時に存在する度合い(同時I/O存在率)を表す指標となる情報を取得する手法について、図6を参照して説明する。
図6(a)は、アレイ11-iの代表HDD110の記憶領域が複数のエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に分割して管理されることを示す。
図6(b)は、あるサンプル周期(サンプリング周期)毎にサンプリングされる代表HDD110の各エクステントチャンクに存在する実行中I/O数(つまり未完了の実行中I/O数)の一例を示す。図6(b)はまた、代表HDD110のエクステントチャンク毎の同時I/O存在率を算出するのに用いられるカウンタ(同時I/O存在率算出用カウンタ、第1のカウンタ)61-0,61-1,61-2,…のカウント値の変化例を、同時I/O存在率(X)と対応付けて示す。サンプル周期には、一定時間周期、ランダム時間周期、或いは一定時間周期及びランダム周期の組み合わせで決まる周期を用いることができる。
カウンタ61-0,61-1,61-2,…は、アレイコントローラ12-j(j=1,2)のメモリ127内に、各アレイ11-iの代表HDD110のエクステントチャンク毎に、つまりエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に対応付けて設けられる。
アレイコントローラ12-j(内のHDDドライバ126)は、代表HDD110内のエクステントチャンク毎に当該エクステントチャンクに存在する実行中I/O数N2をN2カウンタにより計測する。ここでは、エクステントチャンク毎の実行中I/O数N2(N2カウンタのカウント値)は、当該エクステントチャンクに対するI/O要求が代表HDD110に発行される都度1インクリメント(+1)され、当該I/O要求の実行が完了される都度1デクリメント(−1)される。
アレイコントローラ12-j(内のRAIDマネージャ125)は、あるサンプル周期で、代表HDD110内のエクステントチャンク毎に当該エクステントチャンクに存在する実行中I/O数(メモリ127に保持されているN2カウンタのカウント値)をサンプリングする。アレイコントローラ12-j(内のRAIDマネージャ125)は、このサンプリングの結果、エクステントチャンク0(EC-0),1(EC-1),2(EC-2),…を含む複数のエクステントチャンクに実行中I/Oが同時に存在することが検出された場合、カウンタ61-0,61-1,61-2,…を1インクリメント(+1)する。
図6の例では、第1サンプル周期(第1サンプル)で、エクステントチャンク1(EC-1),2(EC-2),3(EC-3)及び4(EC-4)に実行中I/Oが存在した結果、矢印62で示されるように、カウンタ61-1,61-2,61-3及び61-4が+1されて、いずれもカウント値が1となった様子が示されている。
同様に図6の例では、第3サンプル周期で、エクステントチャンク2(EC-2)及び3(EC-3)に実行中I/Oが存在した結果、矢印63で示されるように、カウンタ61-2及び61-3が+1されて、いずれもカウント値が2となった様子が示されている。同様に図6の例では、第4サンプル周期で、エクステントチャンク1(EC-1)及び2(EC-2)に実行中I/Oが存在した結果、矢印64で示されるように、カウンタ61-1及び61-2が+1されて、それぞれカウント値が2及び3となった様子が示されている。
アレイコントローラ12-j(内のRAIDマネージャ125)は、代表HDD110のエクステントチャンク1(EC-1),2(EC-2),3(EC-3),…に対応するカウンタ61-0,61-1,61-2,…のカウント値をサンプル数(サンプリング回数)で除した値を、当該エクステントチャンク1(EC-1),2(EC-2),3(EC-3),…の同時I/O存在率として取得する。図6の例(5回のサンプリングの例)では、同時I/O存在率が最も高いエクステントチャンクは、エクステントチャンク2(EC-2)、つまりエクステント2のエクステントチャンクである。
次に本実施形態において、アレイ11-iの代表HDD110に実行中I/Oが存在する度合い(HDDI/O存在率)を表す指標となる情報を取得する手法について、図7を参照して説明する。ここでは、図6(a)に示されているように、アレイ11-iの代表HDD110の記憶領域がエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に分割して管理されるものとする。
図7は、あるサンプル周期毎にサンプリングされる代表HDD110の各エクステントチャンクに存在する実行中I/O数の一例を、I/O存在カウンタ(第2のカウンタ)70のカウント値の変化例と対応付けて示す。I/O存在カウンタ70は、アレイコントローラ12-j(j=1,2)のメモリ127内に、各アレイ11-iの代表HDD110毎に設けられる。
アレイコントローラ12-j(内のRAIDマネージャ125)は、あるサンプル周期で、代表HDD110内のエクステントチャンク毎に当該エクステントチャンクに存在する実行中I/O数をサンプリングする。アレイコントローラ12-j(内のRAIDマネージャ125)は、このサンプリングの結果、エクステントチャンク0(EC-0),1(EC-1),2(EC-2),…のいずれかに実行中I/Oが存在することが検出された場合、つまり代表HDD110に少なくとも1つの実行中I/Oが存在することが検出された場合、当該代表HDD110に対応するI/O存在カウンタ70を1インクリメント(+1)する。図7の例では、第0サンプル周期、第1サンプル周期及び第3サンプル周期の3つの周期で、代表HDD110に少なくとも1つの実行中I/Oが存在することが検出されて、その都度I/O存在カウンタ70が+1される。
アレイコントローラ12-j(内のRAIDマネージャ125)は、I/O存在カウンタ70のカウント値をサンプル数(サンプリング回数)で除した値を、代表HDD110に実行中I/Oが存在する度合い(HDDI/O存在率)として算出する。図7の例(5回のサンプリングの例)では、代表HDD110のHDDI/O存在率として、3/5が算出される。
次に本実施形態において、アレイ11-iの代表HDD110に含まれている各エクステントチャンクに実行中I/Oが存在する度合い(エクステントチャンクI/O存在率)を表す指標となる情報を取得する手法について、図8を参照して説明する。ここでは、図6(a)に示されているように、アレイ11-iの代表HDD110の記憶領域がエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に分割して管理されるものとする。
図8は、あるサンプル周期毎にサンプリングされる代表HDD110の各エクステントチャンクに存在する実行中I/O数の一例を示す。図8はまた、代表HDD110のエクステントチャンク毎のエクステントチャンクI/O存在率を算出するのに用いられるカウンタ(エクステントチャンクI/O存在率算出用カウンタ、第3のカウンタ)81-0,81-1,81-2,…のカウント値の変化例を、エクステントチャンクI/O存在率(Y)と対応付けて示す。
カウンタ81-0,81-1,81-2,…は、アレイコントローラ12-j(j=1,2)のメモリ127内に、各アレイ11-iの代表HDD110のエクステントチャンク毎に、つまりエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に対応付けて設けられる。
アレイコントローラ12-j(内のRAIDマネージャ125)は、あるサンプル周期で、代表HDD110内のエクステントチャンク毎に当該エクステントチャンクに存在する実行中I/O数(メモリ127に保持されているN2カウンタのカウント値)をサンプリングする。アレイコントローラ12-j(内のRAIDマネージャ125)は、このサンプリングの結果、エクステントチャンク0(EC-0),1(EC-1),2(EC-2),…にそれぞれ実行中I/O(少なくとも1つの実行中I/Oが)が存在することが検出された場合、カウンタ81-0,81-1,81-2,…を1インクリメント(+1)する。
図8の例では、第0サンプル周期で、エクステントチャンク0(EC-0)に実行中I/Oが存在した結果、矢印82で示されるように、カウンタ81-0が+1されて、カウント値が1となった様子が示されている。
同様に、図8の例では、第1サンプル周期で、エクステントチャンク1(EC-1),2(EC-2),3(EC-3)及び4(EC-4)に実行中I/Oが存在した結果、矢印83で示されるように、カウンタ81-1,81-2,81-3及び81-4が+1されて、いずれもカウント値が1となった様子が示されている。また図8の例では、第2サンプル周期で、エクステントチャンク1(EC-1)に実行中I/Oが存在した結果、矢印84で示されるように、カウンタ81-1が+1されて、カウント値が2となった様子が示されている。
同様に、図8の例では、第4サンプル周期で、エクステントチャンク2(EC-2)及び3(EC-3)に実行中I/Oが存在した結果、矢印85で示されるように、カウンタ81-2及び81-3が+1されて、いずれもカウント値が2となった様子が示されている。また図8の例では、第5サンプル周期で、エクステントチャンク1(EC-1)及び2(EC-2)に実行中I/Oが存在した結果、矢印86で示されるように、カウンタ81-1及び81-2が+1されて、いずれもカウント値が3となった様子が示されている。
アレイコントローラ12-j(内のRAIDマネージャ125)は、代表HDD110のエクステントチャンク1(EC-1),2(EC-2),3(EC-3),…に対応するカウンタ81-0,81-1,81-2,…のカウント値をサンプル数(サンプリング回数)で除した値を、当該エクステントチャンク1(EC-1),2(EC-2),3(EC-3),…に実行中I/Oが存在する度合い(つまりエクステントチャンクI/O存在率)(Y)として取得する。
次に本実施形態で適用される、アレイ間のエクステントマイグレーション(によるエクステント再配置)を実行する条件について説明する。
本実施形態において、アレイコントローラ12-j(内のRAIDマネージャ125)は、次の4つの条件
1)最後にエクステント再配置をしてからの経過時間が一定時間以上
2)ディスクアレイ装置10-j内のエクステント再配置の候補(最適化の候補)として予め定められたアレイグループ(RAIDグループ)に属する全てのアレイの代表HDD110のHDDI/O存在率のうち最大値と最小値の差分が一定値以上
3)上記RAIDグループに属する全てのアレイの代表HDD110のHDDI/O存在率の最小値が一定値以下
4)上記RAIDグループに属する全てのアレイの代表HDD110の複数のエクステントチャンクに同時に実行中I/Oが存在する度合い(同時I/O存在率)の最大値が一定値以上
の全てが成立した場合にエクステント再配置を実行する。
以上の条件を設定した理由は次の通りである。まず、エクステントマイグレーションは、ディスクアレイサブシステム(ストレージシステム)内部のHDD I/Oを伴う。このため、エクステントマイグレーションを実行している間、ディスクアレイサブシステムとしての性能が低下する可能性がある。このディスクアレイサブシステムとしての性能低下を極力防止するには、不必要なエクステントマイグレーションを避ければ良い。そこで本実施形態では、上記1)〜4)の条件によって、あまり効果が期待できない不必要なエクステントマイグレーションを避けるようにしている。これにより、安定した自律データ再配置が可能となる。
ここで、条件1)における「一定時間」、即ちエクステント再配置の実行周期として、RAIDグループに属するアレイの代表HDD110のHDDI/O存在率の最大値と最小値の差分Δに応じて実行周期Tを一意に決定する関数f(Δ)を用い、差分が一定レベル以上大きい場合にはエクステント再配置の周期を短くすると良い。このようにすると、効率良く性能向上を図ることができる。関数f(Δ)としては、例えばΔが一定レベル未満ではf(Δ)が第1の実行周期T1を示し、Δが一定レベル以上ではf(Δ)が第1の実行周期T1より短い第2の実行周期T2を示すものを用いれば良い。また、Δが一定レベル以上では、当該Δが大きくなるほど短くなるように決定される関数f(Δ)を用いることも可能である。
次に、上述の3種のI/O存在率、即ちHDDI/O存在率、エクステントチャンクI/O存在率及び同時I/O存在率の算出の詳細について説明する。HDDI/O存在率、エクステントチャンクI/O存在率及び同時I/O存在率は、上述したように、それぞれI/O存在カウンタ70、エクステントチャンクI/O存在率算出用カウンタ81-0,81-1,81-2,…及び同時I/O存在率算出用カウンタ61-0,61-1,61-2,…のカウント値に基づいて算出される。
カウンタ70のカウント値、即ち各アレイ11-iの代表HDD110毎に設けられるカウンタ70のカウント値を、P[AID]で表す。AIDは、アレイ11-i(ディスクアレイ装置10-1ではi=1,2,3、ディスクアレイ装置10-2ではi=A,B,C)を管理するための識別番号(以下、アレイ管理番号と称する)である。本実施形態において、アレイ管理番号AIDには、0から始まるシリアル番号が用いられる。カウント値P[AID]は、アレイ管理番号がAIDのアレイの代表HDD110に未完了I/O(実行中I/O)が存在したサンプル(サンプル周期)数(HDDI/O存在サンプル数)を表す。
カウンタ81-0,81-1,81-2,…のカウント値、即ち各アレイ11-iの代表HDD110のエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に対応付けて設けられるカウンタ81-0,81-1,81-2,…のカウント値を、Q[AID][EID]で表す。EIDは、アレイ11-iを構成するエクステントを管理するための識別番号(以下、アレイ内エクステント管理番号と称する)である。本実施形態において、アレイ内エクステント管理番号EIDには、0から始まるシリアル番号が用いられる。カウント値Q[AID][EID]は、アレイ管理番号がAIDのアレイを構成するアレイ内エクステント管理番号がEIDのエクステントに属する、代表HDD110内のエクステントチャンクにI/Oが存在したサンプル数(エクステントチャンクI/O存在サンプル数)を表す。
カウンタ61-0,61-1,61-2,…のカウント値、即ち各アレイ11-iの代表HDD110のエクステントチャンク0(EC-0),1(EC-1),2(EC-2),…に対応付けて設けられるカウンタ61-0,61-1,61-2,…のカウント値を、R[AID][EID]で表す。カウント値R[AID][EID]は、アレイ管理番号がAIDのアレイを構成するアレイ内エクステント管理番号がEIDのエクステントに属する、代表HDD110内のエクステントチャンクを含む複数のエクステントチャンクに同時にI/Oが存在したサンプル数(同時I/O存在サンプル数)を表す。
次に、HDDI/O存在率、エクステントチャンクI/O存在率及び同時I/O存在率をそれぞれ算出するのに用いられる、HDDI/O存在サンプル数P[AID]、エクステントチャンクI/O存在サンプル数Q[AID][EID]及び同時I/O存在サンプル数R[AID][EID]の収集の詳細について説明する。
図9はアレイコントローラ12-j(j=1,2)内のRAIDマネージャ125の主要な構成を当該アレイコントローラ12-j内の他の要素と関連付けて示すブロック図である。RAIDマネージャ125は、I/O統計情報収集モジュール125a、エクステントマイグレーション実行モジュール125b及び自律最適化制御エンジン125cを含む。
I/O統計情報収集モジュール125aは、HDDドライバ126によって計測される、代表HDD110毎のHDDI/O数N1及び当該代表HDD110内のエクステントチャンク毎のエクステントチャンクI/O数N2をサンプル周期でサンプリングする。前記したように、HDDI/O数N1は、代表HDD110に存在する未完了のI/Oの数を表す。エクステントチャンクI/O数N2は、代表HDD110内のエクステントチャンクに存在する未完了のI/Oの数を表す。I/O統計情報収集モジュール125aは、代表HDD110毎のHDDI/O数N1のサンプリング結果に基づき、I/O存在カウンタ70を用いて、当該代表HDD110に未完了I/Oが存在したサンプル(サンプル周期)数(HDDI/O存在サンプル数)P[AID]をカウントする。
I/O統計情報収集モジュール125aはまた、エクステントチャンク毎のエクステントチャンクI/O数N2に基づき、エクステントチャンクI/O存在率算出用カウンタ81-0,81-1,81-2,…を用いて、当該エクステントチャンクに未完了I/Oが存在したサンプル数(エクステントチャンクI/O存在サンプル数)Q[AID][EID]をカウントする。I/O統計情報収集モジュール125aは更に、エクステントチャンク毎のエクステントチャンクI/O存在サンプル数Q[AID][EID]のカウント結果に基づき、同時I/O存在率算出用カウンタ61-0,61-1,61-2,…を用いて、代表HDD110内のエクステントチャンク毎に、当該エクステントチャンクを含む複数のエクステントチャンクに同時にI/Oが存在したサンプル数(同時I/O存在サンプル数)R[AID][EID]をカウントする。
I/O統計情報収集モジュール125aは算出手段として機能して、HDDI/O存在サンプル数P[AID]に基づいてHDDI/O存在率Pr[AID]を算出する。I/O統計情報収集モジュール125aはまた算出手段として機能して、エクステントチャンクI/O存在サンプル数Q[AID][EID]に基づいてエクステントチャンクI/O存在率Qr[AID][EID]を算出する。I/O統計情報収集モジュール125aは更に算出手段として機能して、同時I/O存在サンプル数R[AID][EID]に基づいて同時I/O存在率Rr[AID][EID]を算出する。
エクステントマイグレーション実行モジュール125bは、エクステントマイグレーションを実行する。自律最適化制御エンジン125cは選択手段として機能して、I/O統計情報収集モジュール125aによって算出されたHDDI/O存在率Pr[AID]、エクステントチャンクI/O存在率Qr[AID][EID]及び同時I/O存在率Rr[AID][EID]に基づいて、エクステントマイグレーション(ここではアレイ間のエクステントマイグレーション)の対象となるエクステント(第1及び第2のエクステント)を選択する。自律最適化制御エンジン125cは、選択され第1及び第2のエクステントの間のエクステントマイグレーション実行モジュール125bによるマイグレーション(エクステントマイグレーション)の実行を制御することで、RAIDグループの最適化(自律最適化)のための制御を行う。
次に、I/O統計情報収集モジュール125aによって実行される、HDDI/O存在サンプル数P[AID]、エクステントチャンクI/O存在サンプル数Q[AID][EID]及び同時I/O存在サンプル数R[AID][EID]を収集する処理の1サンプル(サンプル周期)における手順について、図10のフローチャートを参照して説明する。
まずモジュール125aは、サンプル周期毎の処理に先立ち、初期化処理を行う。この初期化処理では、AIDの最大値をMaxAIDとすると、AID=0〜MaxAIDの全てのP[AID](カウンタ70)が初期値0に設定される。また、EIDの最大値をMaxEIDとすると、AID=0〜MaxAID及びEID=0〜MaxEIDの全ての組み合わせのQ[AID][EID](カウンタ81-0,81-1,…)と、AID=0〜MaxAID及びEID=0〜MaxEIDの全ての組み合わせのR[AID][EID](カウンタ61-0,61-1,…)とが初期値0に設定される。
モジュール125aは、サンプル周期毎に、例えば各サンプル周期の終端が到来するタイミングで、アレイ管理番号AIDを初期値0に設定する(ステップS1)。そしてモジュール125aは、HDDドライバ126によって計測されている、アレイ管理番号がAIDのアレイの代表HDD110における現サンプル周期の未完了I/O数(HDDI/O数)N1をサンプリングする(ステップS2)。
次にモジュール125aは、サンプリングされたHDDI/O数N1が0より大きいかを判定する(ステップS3)。もし、HDDI/O数N1が0より大きいならば、モジュール125aはP[AID]を1インクリメントする(ステップS4)。そしてモジュール125aは、アレイ内エクステント管理番号EIDを初期値0に設定すると共に(ステップS5)、テンポラリカウンタCNTを初期値0に設定する(ステップS6)。テンポラリカウンタCNTは、メモリ127に設けられる。
モジュール125aは、HDDドライバ126によって計測されている、アレイ管理番号がAIDのアレイの代表HDD110における、アレイ内エクステント管理番号がEIDのエクステントに属するエクステントチャンクに対応する現サンプル周期の未完了I/O数(エクステントチャンクI/O数)N2をサンプリングする(ステップS7)。以下の説明では、煩雑な表現を避けるために、EIDのエクステントチャンクまたはEIDで示されるエクステントチャンクと表現する。
次にモジュール125aは、サンプリングされたエクステントチャンクI/O数N2が0より大きいかを判定する(ステップS8)。もし、エクステントチャンクI/O数N2が0より大きいならば、モジュール125aはQ[AID][EID]を1インクリメントすると共に(ステップS9)、CNTを1インクリメントする(ステップS10)。
次にモジュール125aは、インクリメント後のCNTの値が1より大きいかを判定する(ステップS11)。この判定は、AIDで示される現アレイ内の複数のエクステントチャンクでエクステントチャンクI/O数N2が0より大きいと判定されたかをチェックすることと等価である。
CNTの値が1より大きくない場合(ステップS11)、つまりCNTの値が1の場合、モジュール125aはAID及びEIDで示される現アレイのエクステントチャンクが、当該現アレイ内でN2>0であると初めて判定されたエクステントチャンクであることを認識する。この場合、モジュール125aは現EIDを特別のEID(以下、EIDxと表現する)としてメモリ127に格納する(ステップS12)。そしてモジュール125aは、EIDを1インクリメントする(ステップS13)。
これに対し、CNTの値が1より大きいならば(ステップS11)、モジュール125aはCNTの値が2であるかを判定する(ステップS14)。もし、CNTの値が2である場合、モジュール125aはAID及びEIDで示される現アレイのエクステントチャンクが、当該現アレイ内でN2>0であると2番目に判定されたエクステントチャンクであることを認識する。この場合、モジュール125aは、現AID及び先のステップS12でメモリ127に格納されたEIDxで特定されるR[AID][EIDx]を1インクリメントする(ステップS15)。このときモジュール125aは、EIDxをメモリ127から削除する。更にモジュール125aは、R[AID][EID]を1インクリメントする(ステップS16)。そしてモジュール125aは、EIDを1インクリメントする(ステップS13)。
一方、CNTの値が2でない場合(ステップS14)、つまりCNTの値が2より大きい場合、モジュール125aはAID及びEIDで示される現アレイのエクステントチャンクが、当該現アレイ内でN2>0であると3番目以降に判定されたエクステントチャンクであることを認識する。この場合、モジュール125aは、R[AID][EID]を1インクリメントする(ステップS16)。そしてモジュール125aは、EIDを1インクリメントする(ステップS13)。
モジュール125aはステップS13を実行すると、インクリメント後のEIDがMaxEID以下であるかを判定する(ステップS17)。もし、EIDがMaxEID以下であるならば、モジュール125aは上記ステップS7に戻る。これに対し、EIDがMaxEID以下でないならば、即ちEIDがMaxEIDを超えたならば、モジュール125aはAIDで示されるアレイの全てのエクステントについて処理をし終えたものと判定する。この場合、モジュール125aはAIDを1インクリメントする(ステップS18)。
またモジュール125aは、サンプリングされたHDDI/O数N1が0より大きくない場合(ステップS3)、つまりN1=0の場合には、当該ステップS3からステップS18に進んで、AIDを1インクリメントする。
モジュール125aはステップS18を実行すると、インクリメント後のAIDがMaxAID以下であるかを判定する(ステップS19)。もし、AIDがMaxAID以下であるならば、モジュール125aは上記ステップS2に戻る。これに対し、AIDがMaxAID以下でないならば、即ちAIDがMaxAIDを超えたならば、モジュール125aは現サンプル周期での収集処理を終了する。
モジュール125aは、上述のようにして収集されたP[AID]、Q[AID][EID]及びR[AID][EID]を、これらを収集するのに用いられたサンプル数(サンプル周期数)で除する。これによりモジュール125aは、HDDI/O存在率Pr[AID]、エクステントチャンクI/O存在率Qr[AID][EID]及び同時I/O存在率Rr[AID][EID]を取得する。
[第1の変形例]
次に上記実施形態の第1の変形例について図11を参照して説明する。この第1の変形例の特徴は、エクステントマイグレーションの対象となる第1のアレイ及び第1のエクステントと、エクステントマイグレーションの相手となる第2のアレイ及び第2のエクステントとを選択する条件が上記実施形態と一部異なる点にある。
まず、アレイ11-1(#1),11-2(#2)及び11-3(#3)をエクステントマイグレーションによるデータ再配置の候補(最適化候補)であるものとする。これらの最適化候補からなるグループ(前述のRAIDグループに相当)を、最適化対象グループ(またはデータ再配置対象グループ)と呼ぶ。第1のエクステントには、最適化対象グループに含まれるアレイ11-1(#1)〜11-3(#3)の代表HDD110(#1)〜110(#3)の中で、同時I/O存在率が最も高いエクステントチャンクが属するエクステントが用いられる。したがって、第1のアレイには、第1のエクステントが属するアレイが用いられる。
図11の例では、アレイ11-1(#1)〜11-3(#3)の代表HDD110(#1)〜110(#3)の中で、同時I/O存在率が最も高いエクステントチャンクは代表HDD110(#1)内のエクステントチャンク111である。つまり、代表HDD110(#1)〜110(#3)の中で、同時I/O存在率が最も高いエクステントチャンク111を含む代表HDDは、アレイ11-1(#1)の代表HDD110(#1)である。第1のエクステントはエクステントチャンク111が属するアレイ11-1(#1)内のエクステント114である。
第2のアレイには、アレイ11-1(#1)〜11-3(#3)の代表HDD110(#1)〜110(#3)の中で、HDDI/O存在率が最も低い代表HDD110を含むアレイ(つまりHDD活用率が最低のアレイ)が用いられる。第2のエクステントには、上述の第2のアレイ内のエクステントのうち、当該第2のアレイの代表HDD110においてエクステントチャンクI/O存在率が最も低いエクステントチャンクが属するエクステントが用いられる。
図11の例では、HDDI/O存在率が最も低い代表HDD110は、アレイ11-2(#2)の代表HDD110(#2)であり、したがって第2のアレイはアレイ11-2(#2)である。また、アレイ11-2(#2)の代表HDD110(#2)においてエクステントチャンクI/O存在率が最も低いエクステントチャンクはエクステントチャンク115であり、第2のエクステントは当該エクステントチャンク115が属するアレイ11-1(#2)内のエクステント116である。
このような条件を満たす、第1のアレイ11-1(#1)内の第1のエクステント114と第2のアレイ11-2(#2)の第2のエクステント116との間でエクステントマイグレーション117を行うことにより、上記実施形態に比べてより効果的にストレージシステムの最適化を行うことができる。
[第2の変形例]
次に上記実施形態の第2の変形例について説明する。第2の変形例の特徴は、HDD110の性能向上のために、上記実施形態と異なって、アレイ内エクステントマイグレーションが行われる点にある。以下、このアレイ内エクステントマイグレーションについて図12を参照して説明する。
図12において、アレイ11-iの代表HDD110にエクステントチャンク131及び132が含まれている。エクステントチャンク131及び132には、それぞれ、データD1及びD2が格納されている。ここでは、エクステントチャンク131及び132は、共に実行中I/Oが存在する度合い(エクステントチャンクI/O存在率)が一定レベルよりも高いものとする。この場合、代表HDD110において、エクステントチャンク131からエクステントチャンク132に、またはその逆の方向にヘッドを移動するシーク動作が発生する度合いは高い。
ところが、エクステントチャンク131及び132間が代表HDD110のディスク媒体上で物理的に離れているために、エクステントチャンク131及び132間のシーク動作でヘッドが移動する距離(シーク距離)が長く、したがってシーク動作に要する時間(シーク時間)も長いものとする。このような状態では、HDD110の性能は、頻繁に発生するエクステントチャンク131及び132間のシーク動作により低下する。
そこでアレイコントローラ12-j(内のRAIDマネージャ125)は、エクステントチャンクI/O存在率が高いエクステントチャンク131及び132の一方が属するエクステント、例えばエクステントチャンク132が属するエクステントをアレイ内エクステントマイグレーションの対象として選択する。またアレイコントローラ12-j(内のRAIDマネージャ125)は、エクステントチャンク131及び132のうちの他方のエクステントチャンク131の近傍の、例えばエクステントチャンク131に隣接する、当該エクステントチャンク132よりもエクステントチャンクI/O存在率が低いエクステントチャンク133が属するエクステントを、エクステントチャンク132が属するエクステントとの間のアレイ内エクステントマイグレーションの対象として選択する。
ここで、エクステントチャンク131及び133(が属するエクステント)相互の代表HDD110(アレイ11-i)内の位置は、エクステントチャンク131及び132(が属するエクステント)相互の代表HDD110(アレイ11-i)内の位置よりも近くなっていることに注意されたい。
アレイコントローラ12-j(内のRAIDマネージャ125)は、選択された1対のエクステント、即ちエクステントチャンク132が属するエクステントと、(エクステントチャンク131に隣接する)エクステントチャンク133が属するエクステントとの間で、アレイ内エクステントマイグレーション134を行う。
アレイ内エクステントマイグレーション134によるデータ再配置135の結果、代表HDD110内のエクステントチャンク132のデータD2は、当該代表HDD110内のエクステントチャンク133に再配置される。このエクステントマイグレーション134では、エクステントチャンク132が属するエクステント(第3のエクステント)に含まれている他のエクステントチャンクのデータが、エクステントチャンク133が属するエクステント(第4のエクステント)に含まれている他のエクステントチャンクに再配置される。
第2の変形例においては、アレイ内エクステントマイグレーション134によるデータ再配置135の結果、つまりデータD2がエクステントチャンク132からエクステントチャンク131に隣接するエクステントチャンク133に再配置された結果、データD2が格納されているエクステントチャンクの位置は、データ再配置135の実行前に比べて、データD1が格納されているエクステントチャンク131にHDD110上で近接する。これにより、データD1が格納されているエクステントチャンクの位置とデータD2が格納されているエクステントチャンクの位置との間のシーク距離は短くなる。即ち、上記データD1が格納されているエクステントチャンクからデータD2が格納されているエクステントチャンクに、またはその逆の方向に、ヘッドを移動するのに要するシーク時間を短縮できる。このことは、データ再配置135の実行前に、データD1及びD2がそれぞれ格納されていたエクステントチャンク131及び132間のシーク距離が短くなって、エクステントチャンク131及び132間のヘッド移動に要するシーク時間を短縮することと等価である。このことは、エクステントチャンク131及び132がそれぞれ属するエクステントに含まれている他のエクステントチャンクについても同様である。この結果、アレイ11-i内の各HDD110での性能が向上する。
次に、第2の変形例で適用される、アレイ内エクステントマイグレーション(によるエクステント再配置)を実行する条件について説明する。
本変形例において、アレイコントローラ12-j(内のRAIDマネージャ125)は、次の2つの条件
1)最後にエクステント再配置してからの経過時間が一定時間以上
2)アレイ内エクステントマイグレーションの候補となる1対のエクステントに含まれる1対のエクステントチャンクであって、当該1対のエクステントが属するアレイの代表HDDに含まれる1対のエクステントチャンクのエクステントチャンクI/O存在率の差分が一定値以上
の全てが成立した場合にエクステント再配置を実行する。
ここで、条件1)における「一定時間」、即ちエクステント再配置の実行周期として、上述のエクステントチャンクI/O存在率の差分Δに応じて実行周期Tを一意に決定する関数f(Δ)を用い、差分が一定レベル以上大きい場合にはエクステント再配置の周期を短くすると良い。このようにすると、効率良く性能向上を図ることができる。関数f(Δ)としては、例えばΔが一定レベル未満ではf(Δ)が第1の実行周期T1を示し、Δが一定レベル以上ではf(Δ)が第1の実行周期T1より短い第2の実行周期T2を示すものを用いれば良い。また、Δが一定レベル以上では、当該Δが大きくなるほど短くなるように決定される関数f(Δ)を用いることも可能である。
上述のように、アレイ内エクステントマイグレーションは行われるものの、アレイ間エクステントマイグレーションは行われない第2の変形例では、自律最適化制御に同時I/O存在率は不要である。この場合、RAIDマネージャ125内のI/O統計情報収集モジュール125aは、HDDI/O存在率Pr[AID]及びエクステントチャンクI/O存在率Qr[AID][EID]を算出するだけで良い。したがってモジュール125aは、HDDI/O存在サンプル数P[AID]及びエクステントチャンクI/O存在サンプル数Q[AID][EID]を収集するだけで良い。
このHDDI/O存在サンプル数P[AID]及びエクステントチャンクI/O存在サンプル数Q[AID][EID]を収集する処理の1サンプル(サンプル周期)における手順を図13に示す。図13において、図10と同様の部分には同一符号を付してある。
なお、上記第2の変形例では、アレイ11-iの代表HDD110内でエクステントチャンクI/O存在率が一定レベルよりも高いエクステントチャンクの個数Nが2である場合を前提としている。しかし、Nが3以上の場合にも同様に適用できる。即ち、N個のエクステントチャンクが属するN個のエクステントのうちのN−1個のエクステントと、残りの1個のエクステントチャンクの近傍のN−1個のエクステントチャンクとの間で、それぞれアレイ内エクステントマイグレーションを行えば良い。また、次の第3の変形例のように、エクステントチャンクI/O存在率が高いN個のエクステントチャンクが属するN個のエクステントの全てをアレイ内エクステントマイグレーションの対象とすることも可能である。
[第3の変形例]
次に上記実施形態の第3の変形例について図14を参照して説明する。第3の変形例の第1の特徴は、アレイ11-iの代表HDD110においてエクステントチャンクI/O存在率が高い複数のエクステントチャンクがそれぞれ属するエクステントを対象として、当該複数のエクステントチャンク間のシーク距離が等価的により短くなるようにアレイ内エクステントマイグレーションが行われる点にある。第3の変形例の第2の特徴は、アレイ内エクステントマイグレーションの対象となる各エクステント(内の複数のエクステントチャンク)が、当該エクステントに含まれている代表HDD110内のエクステントチャンクのエクステントチャンクI/O存在率の降順に、アレイ11-iを構成する各HDD110(に搭載されているディスク媒体)の外周から順に再配置される点にある。一般にHDD110では、ディスク媒体の外周側ほど、論理ブロックアドレス(Logical Block Address: LBA)が小さくなる。
図14において、アレイ11-iの代表HDD110に含まれているエクステントチャンク141及び142は、それぞれエクステントチャンクI/O存在率が代表HDD110内で第1位及び第2位であるものとする。
アレイコントローラ12-j(内のRAIDマネージャ125)は、まずアレイ11-iの代表HDD110内でエクステントチャンクI/O存在率が第1位のエクステントチャンク141が属するエクステントと、代表HDD110内(に搭載されているディスク媒体)の最外周に位置するエクステントチャンク143が属するエクステントとの間で、アレイ内エクステントマイグレーション145を行う。
次にアレイコントローラ12-j(内のRAIDマネージャ125)は、代表HDD110内でエクステントチャンクI/O存在率が第2位のエクステントチャンク142が属するエクステントと、代表HDD110内のエクステントチャンク143に隣接し、且つ当該エクステントチャンク143よりも代表HDD110の内周側に位置するエクステントチャンク144が属するエクステントとの間で、アレイ内エクステントマイグレーション146を行う。
このようなアレイ内エクステントマイグレーション145及び146により、代表HDD110内でエクステントチャンクI/O存在率が高いエクステントチャンク141及び142が属するエクステント(内の複数のエクステントチャンク)は、当該エクステントに含まれている代表HDD110内のエクステントチャンクのエクステントチャンクI/O存在率の降順に、アレイ11-iを構成する各HDD110(に搭載されているディスク媒体)の最外周から順に再配置される。例えば代表HDD110内では、エクステントチャンクI/O存在率が第1位のエクステントチャンク141のデータが当該代表HDD110の最外周(のエクステントチャンク143)に再配置され、エクステントチャンクI/O存在率が第2位のエクステントチャンク142のデータが、エクステントチャンク141の再配置先に隣接する位置(エクステントチャンク144)に再配置される。
第3の変形例においては、アレイ内エクステントマイグレーション145及び146により、等価的に、エクステントチャンクI/O存在率が上位のエクステントチャンク141及び142間のシーク距離が短くなり、エクステントチャンク141及び142間のシーク時間を短縮することができる。このことは、エクステントチャンク141及び142がそれぞれ属するエクステントに含まれている他のエクステントチャンクについても同様である。しかも第3の変形例においては、エクステントチャンクI/O存在率がより高いエクステントチャンクほど、HDD110に搭載されているディスク媒体の外周側に再配置される。一般にHDD110に搭載されているディスク媒体は、外周側ほどトラック当たりのセクタ数が多く、したがって性能が高くなる。このため第3の変形例においては、上述のアレイ内エクステントマイグレーションにより、HDD110のI/O性能をより一層向上できる。
次に、アレイ11-iの代表HDD110内でエクステントチャンクI/O存在率が上位のエクステントチャンク群の中に、当該I/O存在率が等しい複数のエクステントチャンクが存在する場合について、図15を参照して説明する。
図15において、エクステントチャンク151及び152は、エクステントチャンクI/O存在率が代表HDD110内で等しく、例えば共に第1位であるものとする。また、エクステントチャンク151及び152のうち、エクステントチャンク151の方が代表HDD110の外周側に配置されているものとする。更に、アレイ11-iを構成するエクステント(内のエクステントチャンク)は、エクステント番号が小さいエクステントほど、HDD110の外周側に物理的に配置されるものとする。
アレイコントローラ12-j(内のRAIDマネージャ125)は、エクステントチャンクI/O存在率が等しい複数のエクステントチャンクの各々が属するエクステントがアレイ内エクステントマイグレーションの対象に含まれている場合、これらのエクステントのアレイ内エクステントマイグレーションを次のような順序で実行する。即ちアレイコントローラ12-j(内のRAIDマネージャ125)は、エクステント番号が大きいエクステント(HDD110の外周からより離れているエクステント)ほど優先的にアレイ内エクステントマイグレーションを行う。
図15の例では、まずアレイコントローラ12-j(内のRAIDマネージャ125)は、エクステントチャンク151及び152のうちのエクステントチャンク152が属するエクステントと、代表HDD110内のより外周側(ここでは最外周)に位置するエクステントチャンク153が属するエクステントとの間で、アレイ内エクステントマイグレーション155を行う。次にアレイコントローラ12-j(内のRAIDマネージャ125)は、エクステントチャンク151が属するエクステントと、代表HDD110内のエクステントチャンク153に隣接するエクステントチャンク154が属するエクステントとの間で、アレイ内エクステントマイグレーション156を行う。ここで、エクステントチャンク152が属するエクステントは、エクステントチャンク151が属するエクステントよりもI/O性能が低くなる位置(HDD110の内周寄りの位置)に配置されている。したがって、エクステントチャンク152のアレイ内エクステントマイグレーションを優先させることにより、I/O性能の一層の向上が可能となる。
第3の変形例においても、第2の変形例と同様に、図13のフローチャートに従って、HDDI/O存在サンプル数P[AID]及びエクステントチャンクI/O存在サンプル数Q[AID][EID]を収集する処理が行われる。
次に、第3の変形例におけるアレイ内エクステントマイグレーションについて、図16を参照して更に詳細に説明する。図16においてアレイ11-iは複数のHDD110(例えば前記実施形態と同様に6台のHDD110)から構成されている。アレイ11-iの記憶領域は複数のエクステント(例えば前記実施形態と同様に1500個のエクステント)に分割して管理される。ここでは、複数のエクステントに対して、HDD110の外周側からEIDが0,1,…の順に割り当てられている。
第3の変形例では、AIDで示されるアレイ内の代表HDD110におけるエクステントチャンク毎のエクステントチャンクI/O存在率Qr[AID][EID]が、その存在率の降順にソートされる。このソートは例えばRAIDマネージャ125内の自律最適化制御エンジン125cによって行われる。代表HDD110におけるエクステントチャンクの総数をn(つまりMaxEID=n−1)、ソート後のN番目(N=0,1,…,n−1)のQr[AID][EID]のEIDをXNで表すと、n個のQr[AID][EID]、即ちQr[AID][X0],Qr[AID][X1],…,Qr[AID][Xn-1]の大小関係は、
Qr[AID][X0]≧Qr[AID][X1]≧…≧Qr[AID][Xn-1]
となる。
今、アレイ内エクステントマイグレーションの実行対象となるエクステントの対(エクステントマイグレーション実行ペア)が、図16に示されるように第3のエクステント161及び第4のエクステント162であるものとする。第3のエクステント161及び第4のエクステント162は次のように定義される。
まず、第4のエクステント162は、代表HDD110(に搭載されているディスク媒体)の外周からk番目のエクステントチャンクが属するエクステント(つまりEID=kのエクステント)である。第3のエクステント161は、代表HDD110内のk番目に大きいエクステントチャンクI/O存在率Qr[AID][Xk]のエクステントチャンクが属するエクステント(EID=Xkのエクステント)である。
第3のエクステント161と第4のエクステント162との間でアレイ内エクステントマイグレーションが実行される条件(エクステントマイグレーション実行条件)は、前記第2の変形例で挙げた条件から明らかなように、
1)最後にエクステント再配置してからの経過時間が一定時間以上
2)第3及び第4のエクステントが属するアレイの代表HDDにおけるエクステントチャンクのエクステントチャンクI/O存在率Qr[AID][Xk]及びQr[AID][k]の差分(Qr[AID][Xk]−Qr[AID][k])が一定値以上
である。
RAIDマネージャ125内の自律最適化制御エンジン125cは、上記のエクステントマイグレーション実行条件が成立する1対のエクステント(物理エクステント)161及び162、即ちEID=Xkの第3のエクステント161及びEID=kの第4のエクステント162について、当該エクステント161及び162の間のエクステントマイグレーションをエクステントマイグレーション実行モジュール125bに指示する。この指示を受けて、モジュール125bは、EID=Xkの第3のエクステント161及びEID=kの第4のエクステント162の間のアレイ内エクステントマイグレーションを行う。このエクステントマイグレーションは、第3のエクステントがQr[AID][Xk]の降順に選択されることにより逐次行われる。
[第4の変形例]
次に上記実施形態の第4の変形例について図17を参照して説明する。第4の変形例の特徴は、上記実施形態または第1の変形例で適用されたアレイ間のエクステントマイグレーションと、上記第2または第3の変形例で適用されたアレイ内のエクステントマイグレーションとを組み合わせた点にある。
例えばアレイコントローラ12-1(内のRAIDマネージャ125)は、第1のステップとして、アレイ11-1(#1),11-2(#2)及び11-3(#3)間のエクステントマイグレーション171によるエクステント再配置を行う。このエクステント再配置により、アレイコントローラ12-1(内のRAIDマネージャ125)は、アレイ11-1(#1),11-2(#2)及び11-3(#3)の各々の代表HDD110のHDDI/O存在率を一定レベルまで均等化する。
次にアレイコントローラ12-1(内のRAIDマネージャ125)は、第2のステップとして、アレイ11-1(#1),11-2(#2)及び11-3(#3)に対して、それぞれアレイ内エクステントマイグレーション172-1,172-2及び172-3によるエクステント再配置を行う。このエクステント再配置により、アレイコントローラ12-1(内のRAIDマネージャ125)は、アレイ11-1(#1),11-2(#2)及び11-3(#3)を構成する各HDD110のシーク時間短縮を図る。
[第5の変形例]
次に上記実施形態の第5の変形例について図18及び図19を参照して説明する。第5の変形例の特徴は、上記実施形態または第1の変形例で適用されたアレイ間のエクステントマイグレーションを、異なるディスクアレイ装置間に適用した点にある。
アレイコントローラ12-1(内のRAIDマネージャ125)は第1のステップとして、図18(a)に示すように、ディスクアレイ装置10-1内のアレイ11-1(#1),11-2(#2)及び11-3(#3)間のエクステントマイグレーション181-1によるエクステント再配置を行う。このエクステント再配置により、アレイコントローラ12-1(内のRAIDマネージャ125)は、アレイ11-1(#1),11-2(#2)及び11-3(#3)の各々の代表HDD110のHDDI/O存在率を一定レベルまで均等化する。
一方、アレイコントローラ12-2(内のRAIDマネージャ125)も第1のステップとして、図18(a)に示すように、ディスクアレイ装置10-2内のアレイ11−A(#A),11-B(#B)及び11-C(#C)間のエクステントマイグレーション181-2によるエクステント再配置を行う。このエクステント再配置により、アレイコントローラ12-2(内のRAIDマネージャ125)は、アレイ11−A(#A),11-B(#B)及び11-C(#C)の各々の代表HDD110のHDDI/O存在率を一定レベルまで均等化する。
このように第1のステップでは、ディスクアレイ装置10-1及び10-2において、それぞれアレイ間のエクステントマイグレーション181-1及び181-2が行われ、当該ディスクアレイ装置10-1及び10-2内の最適化が行われる。
次にアレイコントローラ12-1及び12-2(内のRAIDマネージャ125)は第2のステップとして、相互に通信を行い、図18(b)に示すように、ディスクアレイ装置10-1内のアレイ11-1(#1),11-2(#2)及び11-3(#3)と、ディスクアレイ装置10-2内のアレイ11−A(#A),11-B(#B)及び11-C(#C)との間で、つまりディスクアレイ装置10-1及び10-2間で、ネットワーク32を介してアレイ間のエクステントマイグレーション182によるエクステント再配置を行う。このエクステント再配置により、アレイコントローラ12-1及び12-2(内のRAIDマネージャ125)は、ディスクアレイ装置10-1内のアレイ11-1(#1),11-2(#2)及び11-3(#3)と、ディスクアレイ装置10-2内のアレイ11−A(#A),11-B(#B)及び11-C(#C)の各々の代表HDD110のHDDI/O存在率を一定レベルまで均等化する。
このように第2のステップでは、ディスクアレイ装置10-1及び10-2の間でアレイ間のエクステントマイグレーション182が行われ、当該ディスクアレイ装置10-1及び10-2の間の最適化が行われる。
この第2のステップの後に、アレイコントローラ12-1(内のRAIDマネージャ125)は、第3のステップとして、図19に示すように、アレイ11-1(#1),11-2(#2)及び11-3(#3)に対して、それぞれアレイ内エクステントマイグレーション191-1,191-2及び191-3によるエクステント再配置を行う。
一方、アレイコントローラ12-2(内のRAIDマネージャ125)も第3のステップとして、図19に示すように、アレイ11−A(#A),11-B(#B)及び11-C(#C)に対して、それぞれアレイ内エクステントマイグレーション191-A,191-B及び191-Cによるエクステント再配置を行う。なお、第3のステップが省略されても構わない。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、HDD単位及びエクステントチャンク単位での実行中I/O存在率の代わりに、アレイ単位及びエクステント単位の実行中I/O存在率を用いても良い。即ち、第1の存在率として、当該アレイ内の複数のエクステントに同時に実行中I/Oが存在する度合いを用い、第2の存在率として、当該アレイに実行中I/Oが存在する度合いを用い、第3の存在率として、当該エクステントに実行中I/Oが存在する度合いを用いることもできる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
1…ディスクアレイサブシステム、10-1,10-2…ディスクアレイ装置、11-1〜11-3,11-A〜11-C…アレイ、12-1,12-2,12-j…アレイコントローラ、20…ホスト装置、31,32…ネットワーク、110…HDD、125…RAIDマネージャ、125a…I/O統計情報収集モジュール、125b…エクステントマイグレーション実行モジュール、125c…自律最適化制御エンジン、126…HDDドライバ、127…メモリ。