以下、種々の実施の形態につき図面を参照して説明する。
図1は、1つの実施形態に係るコンピュータシステムの典型的なハードウェア構成を示すブロック図である。図1に示されるコンピュータシステムは、階層化ストレージシステム10及びホストコンピュータ(以下、ホストと称する)20から構成される。つまりコンピュータシステムは、単一のホストを備えている。しかし、コンピュータシステムが、複数のホストを備えていても良い。
ホスト20は、階層化ストレージシステム10が提供する論理ディスクを自身の外部記憶装置として利用する。ホスト20は、例えば、ホストインタフェースバス21を介して階層化ストレージシステム10(より、詳細には、階層化ストレージシステム10のストレージコントローラ13)と接続されている。本実施形態においてホストインタフェースバス21は、ファイバチャネル(FC)である。しかしホストインタフェースバス21が、スモールコンピュータシステムインタフェース(SCSI)、シリアルアタッチドSCSI(SAS)、インターネットSCSI(iSCSI)、イーサネット(登録商標)、或いはシリアルATアタッチメント(SATA)のような、FC以外のインタフェースバスであっても構わない。またホスト20が、ネットワークを介して階層化ストレージシステム10と接続されていても良い。
ホスト20は、サーバ、或いはクライアントパーソナルコンピュータ(クライアントPC)のような物理計算機である。ホスト20内では、階層化ストレージシステム10が提供する論理ディスク内のデータにアクセスするためのアプリケーションプログラムが動作する。このアプリケーションプログラムに従い、ホスト20はホストインタフェースバス21を介して階層化ストレージシステム10を利用する。
階層化ストレージシステム10は、高速ストレージ装置(第1のストレージ装置)11と、低速ストレージ装置(第2のストレージ装置)12と、ストレージコントローラ13とを備えている。高速ストレージ装置11及び低速ストレージ装置12は、ストレージインタフェースバス22を介してストレージコントローラ13と接続されている。本実施形態においてストレージインタフェースバス22はFC(ファイバチャネル)である。しかしストレージインタフェースバス22が、ホストインタフェースバス21と同様に、FC以外のインタフェースバスであっても構わない。
高速ストレージ装置11は、例えば、ハードディスクドライブ(HDD)との互換性を有する単一のソリッドステートドライブ(SSD)から構成される。一方、低速ストレージ装置12は、アクセス応答性能及び記憶容量に関し、一定の条件(第1の条件)を満足するストレージ装置から構成される。第1の条件を満足するストレージ装置とは、高速ストレージ装置11と比較してアクセス応答性能は低い(つまり、アクセス速度が低速である)ものの記憶容量が大きいストレージ装置を指す。本実施形態では、低速ストレージ装置12は単一のHDDから構成される。以下の説明では、高速ストレージ装置11及び低速ストレージ装置12を、それぞれ、SSD11及びHDD12と表記する。
なお、SSD11に代えて、フラッシュメモリを搭載したフラッシュアレイストレージ或いはオールフラッシュアレイと呼ばれる高速ストレージ装置が用いられても構わない。同様に、HDD12に代えて、複数のHDDから構成されるアレイ構成の低速ストレージ装置が用いられても構わない。また、SSD11に代えて、FC用のHDDのような高速HDDが用いられ、HDD12に代えて、SATA用のHDDのような低速HDDが用いられても構わない。また、HDD12に代えて、ブルーレイディスク(登録商標)ドライブ、或いはDVD(登録商標)ドライブのような光学式ディスクドライブ、或いはテープ装置が用いられても構わない。また、HDD12に代えてテープ装置が用いられる場合、SSD11に代えて光学式ディスクドライブが用いられても構わない。
このように、高速ストレージ装置及び低速ストレージ装置には、種々のアクセス速度及び記憶容量を有する複数のストレージ装置から選択されたストレージ装置を用いることができる。但し、低速ストレージ装置は、前述のように、アクセス応答性能及び記憶容量に関し、第1の条件を満足する必要がある。なお、高速ストレージ装置が、アクセス応答性能及び記憶容量に関し、第2の条件を満足するストレージ装置から構成されても良い。第2の条件を満足するストレージ装置とは、低速ストレージ装置と比較して記憶容量は小さいもののアクセス応答性能が高い(つまり、アクセス速度が高速である)ストレージ装置を指す。
上述のように、図1に示される階層化ストレージシステム10には、SSD11及びHDD12が、アクセス速度の異なる2つのストレージ装置(つまり、高速ストレージ装置及び低速ストレージ装置)として存在する。この場合、SSD11は上位階層(高速階層、第1の階層)として、HDD12は下位階層(低速階層、第2の階層)として、それぞれ用いられる。なお、階層化ストレージシステム10が、HDD12よりも更に低速(低階層)で且つ大容量のストレージ装置(第3の階層のストレージ装置)を備えていても良い。
ストレージコントローラ13は、ホスト20から与えられる、論理アドレスを用いたアクセス(リードアクセスまたはライトアクセス)の要求(入出力要求)を受信して、要求された入出力(I/O)を実行する。このI/Oの実行に際し、ストレージコントローラ13は、周知のアドレス変換機能を用いて、論理アドレスを物理アドレスに変換する。論理アドレスは、ホスト20によって認識される論理ディスク内のアドレスを指す。物理アドレスは、SSD11またはHDD12に含まれていて、且つ論理アドレスに対応付けられている物理記憶領域の物理位置を示す。ストレージコントローラ13は、物理アドレスに基づいて、SSD11またはHDD12にアクセスする。
ストレージコントローラ13は、ホストインタフェースコントローラ(以下、HIFCと称する)131と、ストレージインタフェースコントローラ(以下、SIFCと称する)131と、メモリ133と、ローカルHDD134と、CPU135とを備えている。
HIFC131は、当該HIFC131とホスト20との間のデータ転送(データ転送プロトコル)を制御する。HIFC131は、ホストからのI/O(入出力)要求(リード要求またはライト要求)を受信し、当該I/O要求に対する応答を返信する。このI/O要求は、論理ディスクからデータをリードすること、或いは当該論理ディスクにデータをライトすることを指定する。HIFC131は、ホスト20からI/O要求を受信すると、当該I/O要求を、CPU135に伝達する。I/O要求を受け取ったCPU135は、当該I/O要求を処理する。
SIFC132は、CPU135が受信したホスト20からのI/O要求に対応するアクセス要求(より詳細には、SSD11またはHDD12に対する読み出し要求または書き込み要求)を、CPU135から受信する。SSD11及びHDD12それぞれの物理的な記憶領域は、物理ディスク(または物理ボリューム)とも呼ばれる。本実施形態では、SSD11及びHDD12それぞれの物理的な記憶領域全体が、物理ディスクとして定義される。しかし、SSD11及びHDD12それぞれの物理的な記憶領域の一部が、物理ディスクとして定義されても構わない。また、SSD11及びHDD12それぞれを用いて、複数の物理ディスクが定義されても構わない。上述のアクセス要求は、物理ディスクからデータをリードすること、或いは当該物理ディスクにデータをライトすることを指定する。SIFC132は、受信されたアクセス要求に応じて、SSD11またはHDD12へのアクセスを実行する。
メモリ133は、DRAMのような、書き換えが可能な揮発性メモリである。メモリ133の記憶領域の一部は、ローカルHDD134からロードされる制御プログラム321(図3)を格納するのに用いられる。メモリ133の記憶領域の他の一部は、ローカルHDD134からロードされるアドレス変換テーブル322(図3)を格納するのに用いられる。メモリ133の記憶領域の更に他の一部は、ローカルHDD134からロードされるアクセスカウンタテーブル323(図3)を格納するのに用いられる。
ローカルHDD134には、制御プログラム321(図3)が格納されている。CPU135は、ストレージコントローラ13が起動されたときにイニシャルプログラムローダ(IPL)を実行することにより、ローカルHDD134に格納されている制御プログラム321の少なくとも一部をメモリ133にロードする。IPLは、読み出し専用メモリ(ROM)またはフラッシュROM(FROM)のような不揮発性メモリに格納されている。
CPU135は、メモリ133にロードされた制御プログラム321に従い、システム管理部301、アクセスコントローラ302、レプリケーションコントローラ303、及び階層化コントローラ304(図3)として機能する。つまりCPU135は、メモリ133に格納されている制御プログラム321を実行することで、階層化ストレージシステム10全体(特にストレージコントローラ13内の各部)を制御する。
本実施形態においてストレージコントローラ13は、図1に示されているようにホスト20から独立して備えられている。しかし、ストレージコントローラ13が、ホスト20に内蔵されていても構わない。この場合、ストレージコントローラ13(より詳細には、ストレージコントローラ13の機能)が、ホスト20の有するオペレーティングシステム(OS)の機能の一部を用いて実現されていても構わない。
また、ストレージコントローラ13が、ホスト20のカードスロットに装着して用いられるカードに備えられていても構わない。また、ストレージコントローラ13の一部がホスト20に内蔵され、当該ストレージコントローラ13の残りがカードに備えられていても構わない。また、ホスト20と、ストレージコントローラ13と、SSD11及びHDD12の一部または全部とが、1つの筐体に収められていても構わない。
図2は、図1に示される階層化ストレージシステム10で適用される2つの論理ディスクの典型的な構成を説明するための図である。本実施形態において、階層化ストレージシステム10は、論理ディスク(LD)211及び212を、それぞれ、マスタLD及びサブLDとして用いる。このため、LD211及び212が、使用状態に応じて、マスタLD211及びサブLD212と称されることもある。
マスタLD211及びサブLD212の論理的な記憶領域は、管理のために、第1のサイズを有する複数の論理エクステントに分割される。つまり、マスタLD211及びサブLD212の各々は、複数の論理エクステントを備えている。本実施形態では、マスタLD211及びサブLD212の各々は、論理エクステント番号0乃至n−1を有するn個の論理エクステントを備えているものとする。一方、SSD11及びHDD12の物理的な記憶領域は、管理のために、論理エクステントと同一サイズ(第1のサイズ)を有する複数の物理エクステントに分割される。つまり、SSD11及びHDD12の各々は、複数の物理エクステントを備えている。以下の説明では、SSD11(上位階層のストレージ装置)内の物理エクステントが高速物理エクステント(または第1の種類の物理エクステント)と称され、HDD12(下位階層のストレージ装置)内の物理エクステントが低速物理エクステント(または第2の種類の物理エクステント)と称されることがある。第1の種類及び第2の種類は、それぞれ、前述の上位階層及び下位階層に対応する。この場合、高速物理エクステント及び低速物理エクステントを、それぞれ、上位階層の物理エクステント及び下位階層の物理エクステントと見なすこともできる。
SSD11内の物理エクステントの群に含まれるM1個の物理エクステントは、マスタLD211内のM1個の論理エクステントに割り当てられる。SSD11内の物理エクステントの群に含まれるM2個の物理エクステントは、サブLD212内のM2個の論理エクステントに割り当てられる。HDD12内の物理エクステントの群に含まれるN1個の物理エクステントは、マスタLD211内のN1個の論理エクステントに割り当てられる。HDD12内の物理エクステントの群に含まれるN2個の物理エクステントは、サブLD212内のN2個の論理エクステントに割り当てられる。
論理エクステント及び物理エクステントの各々は、管理のために、第2のサイズを有する小領域に分割される。この小領域は、ブロックまたはセクタと呼ばれる。SSD11及びHDD12は、いずれも、ブロック(またはセクタ)を単位としてアクセスが可能である。本実施形態において、第1のサイズは4キロバイト(KB)であり、第2のサイズは512Bである。つまり、第1のサイズは第2のサイズの8倍である。勿論、第1のサイズが、4KB以外、例えば4メガバイト(MB)であっても構わない。
図3は、図1に示されるストレージコントローラ13の典型的な機能構成を主として示すブロック図である。ストレージコントローラ13は、システム管理部301、アクセスコントローラ302、レプリケーションコントローラ303、及び階層化コントローラ304を備えている。これらの機能要素301乃至304は、図1に示されるストレージコントローラ13のCPU134が制御プログラム321を実行することにより実現されるソフトウェアモジュールである。しかし、機能要素301乃至304の少なくとも1つがハードウェアモジュールによって実現されても構わない。
システム管理部301は、ホスト20に提供される(つまり、ホスト20により認識可能な)論理ディスクを構築(定義)し、且つ管理する。システム管理部301は更に、ホスト20に提供される全ての論理ディスクにおける論理エクステント毎のマッピング状態(つまり、論理エクステントの論理アドレスと物理エクステントの物理アドレスとの対応)を、アドレス変換テーブル322を用いて管理する。システム管理部301は、アドレス変換テーブル322に基づいて、論理アドレスを物理アドレスに変換する。
アクセスコントローラ302は、論理アドレスから変換された物理アドレスに基づいて、SSD11またはHDD12にアクセスする。アクセスコントローラ302は更に、マスタLD211の論理エクステント毎のアクセス統計値を、アクセスカウンタテーブル323を用いて収集する。
レプリケーションコントローラ303は、マスタLD211及びサブLD212の内容を同一に保つための、いわゆるレプリケーション(同期レプリケーション)を制御する。同期レプリケーションを実現するには、レプリケーション初期化処理が必要である。レプリケーション初期化処理とは、例えば、独立に利用されていたLD211及び212を、マスタLD211及びサブLD212として用いて、当該マスタLD211及びサブLD212のデータを一致化させる処理を指す。
階層化コントローラ304は、マスタLD211及びサブLD212内のそれぞれの論理エクステントの階層化を制御する。階層化コントローラ304は特に、マスタLD211及びサブLD212の性能を最適化するために、マスタLD211及びサブLD212内のそれぞれの論理エクステントに割り当てられる階層を動的に変更する。階層化コントローラ304は、割り当てられる階層が変更されるべきマスタLD211及びサブLD212内の論理エクステントの組を、アクセスカウンタテーブル323に基づいて決定する。階層化コントローラ304は、決定された論理エクステントの組内のデータを再配置する。つまり階層化コントローラ304は、マスタLD211内の決定された論理エクステントに割り当てられていた物理エクステント内のデータを、当該物理エクステントが属する階層とは異なる階層の2つの物理エクステントに再配置する。
以下の説明では、マスタLD211及びサブLD212内のそれぞれの論理エクステントが、マスタ論理エクステント及びサブ論理エクステントと称されることもある。また、マスタ論理エクステント及びサブ論理エクステントにそれぞれ割り当てられる物理エクステントが、マスタ物理エクステント及びサブ物理エクステントと称されることもある。
メモリ132は、制御プログラム領域311及びテーブル領域312を含む。制御プログラム領域311は、CPU134によって実行される制御プログラム321の少なくとも一部を格納するのに用いられる。テーブル領域312は、アドレス変換テーブル322及びアクセスカウンタテーブル323を格納するのに用いられる。
HDD133は、制御プログラム321を予め格納するのに用いられる。またHDD133は、アドレス変換テーブル322及びアクセスカウンタテーブル323を保存するのに用いられる。制御プログラム321の少なくとも一部、アドレス変換テーブル322及びアクセスカウンタテーブル323は、例えばストレージコントローラ13の起動時に、HDD133からメモリ132の制御プログラム領域310、及びテーブル領域312にロードされて用いられる。メモリ132にロードされたアドレス変換テーブル322及びアクセスカウンタテーブル323は、適宜HDD133に保存される。つまり、メモリ132のテーブル領域312における情報の更新は、HDD133に保存されているアドレス変換テーブル322及びアクセスカウンタテーブル323に適宜反映される。但し、以降の説明では簡略化のために、アドレス変換テーブル322及びアクセスカウンタテーブル323は、HDD133に格納されている状態で用いられるものとする。
図4は、図3に示されるアドレス変換テーブル322のデータ構造の例を示す。アドレス変換テーブル322は、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bから構成される。マスタLDアドレス変換テーブル322aは、マスタLD211の論理アドレスを物理アドレスに変換するのに用いられるアドレス変換情報を保持し、サブLDアドレス変換テーブル322bは、サブLD212の論理アドレスを物理アドレスに変換するのに用いられるアドレス変換情報を保持する。
マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bの各々は、論理エクステント番号0乃至n−1を有するn個の論理エクステント0乃至n−1に対応付けられたn個のエントリ0乃至n−1を備えている。マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bの各エントリは、論理ディスク識別子(LDID)フィールド、論理アドレスフィールド、物理ディスク識別子(PDID)フィールド、物理アドレスフィールド、第1のフラグ(F1)フィールド、及び第2のフラグ(F2)フィールドから構成される。
エントリi(i=0,1,…,n−1)のLDIDフィールドは、LDのIDを示す。つまり、マスタLDアドレス変換テーブル322aのエントリ0乃至n−1のLDIDフィールドは、いずれもマスタLD211のIDを示し、サブLDアドレス変換テーブル322bのエントリ0乃至n−1のLDIDフィールドは、いずれもサブLD212のIDを示す。本実施形態において、マスタLD211のIDは0であり、サブLD212のIDは1である。
エントリiの論理アドレスフィールドは、当該エントリiと対応付けられた論理エクステントiの論理アドレス(より詳細には、論理エクステントiの先頭ブロックの論理アドレス)を示す。マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bの両エントリiの論理アドレスフィールドには、同一論理エクステントiの論理アドレスが設定される。
エントリiのPDIDフィールドは、論理エクステントiに割り当てられた物理エクステントを含むPD(物理ディスク)のIDを示す。エントリiの物理アドレスフィールドは、論理エクステントiに割り当てられた物理エクステントの物理アドレス(より詳細には、論理エクステントiに割り当てられた物理エクステントの先頭ブロックの物理アドレス)を示す。
エントリiのF1フィールドは、マスタ及びサブ論理エクステントiが同期化されているかを示すフラグF1を保持するのに用いられる。エントリiのF2フィールドは、論理エクステントiが読み出し専用領域に含まれているかを示すフラグF2を保持するのに用いられる。但し、エントリiのF2フィールドは、後述の変形例で用いられるため、本実施形態では必ずしも必要ない。
なお、F1及びF2フィールドが、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bの少なくとも一方(例えば、マスタLDアドレス変換テーブル322a)に用意されても構わない。また、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bを単一のアドレス変換テーブルにマージして、この単一のアドレス変換テーブルをアドレス変換テーブル322として用いても構わない。この場合、アドレス変換テーブル322が2n個のエントリを有し、当該2n個のエントリの各々に、論理エクステントの論理エクステント番号を示す論理エクステント番号フィールドを追加すれば良い。また、図4の例のように、アドレス変換テーブル322がマスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bから構成される場合、当該両テーブル322a及び322bの各エントリiが、必ずしもLDIDフィールドを有する必要はない。
図5は、図3に示されるアクセスカウンタテーブル323のデータ構造の例を示す。アクセスカウンタテーブル323はマスタLD211のLDIDに対応付けられており、当該マスタLD211の各論理エクステントへのアクセスの回数を示すアクセスカウンタ情報として用いられる。アクセスカウンタテーブル323は、論理エクステント番号0乃至n−1を有するn個の論理エクステント0乃至n−1に対応付けられたn個のエントリ0乃至n−1を備えている。
アクセスカウンタテーブル323のエントリiは、アクセスカウントACNT及びライトカウントWCNTを保持するのに用いられる。エントリiのアクセスカウントACNT及びライトカウントWCNTを、それぞれ、ACNTi及びWCNTiと表記する。アクセスカウントACNTiは、論理エクステントiへのアクセスの回数、つまりライトアクセスの回数とリードアクセスの回数の総和を示すアクセス統計値である。ライトカウントWCNTiは、論理エクステントiへのライトアクセスの回数を示すライトアクセス統計値である。アクセスカウンタテーブル323の各エントリが、マスタLD211のLDIDが設定されるLDIDフィールドを有していても構わない。
なお、ライトカウントWCNTiは変形例で用いられるため、本実施形態では必ずしも必要ない。また、2つのLD211及び212が、独立したLDとして用いられる場合、アクセスカウンタテーブル323と同様の2つのアクセスカウンタテーブルが、LD211及び212それぞれのLDIDに対応付けて用意される。
ここで、レプリケーションの状態遷移について説明する。まず、LD211及び212が、独立したLDとして、ストレージコントローラ13のシステム管理部301によってホスト20に提供されているものとする。この状態では、ホスト20は、LD211及び212を個々に認識して、当該LD211及び212に別々にアクセスすることができる。このような状態は、スプリット状態と呼ばれる。つまり、LD211及び212はスプリット状態にある。LD211及び212がスプリット状態にある場合、LD211及び212の、それぞれ、同一の論理エクステント番号iを有する論理エクステントiに割り当てられる物理エクステントは、必ずしも同一階層のストレージ装置に存在するとは限らない。
このようにスプリット状態にあるLD211及び212を、システム管理部301が、それぞれマスタLD211及びサブLD212として定義し直すものとする。この場合、レプリケーションコントローラ303は、LD211(サブLD212)の内容を、LD211(マスタLD211)の内容に一致させるレプリケーション初期化処理を、システム管理部301と協同して実行する。レプリケーション初期化処理が実行されている状態を、コピー状態と呼ぶ。また、レプリケーション初期化処理が完了して、サブLD212の内容がマスタLD211の内容に一致している状態を同期状態と呼ぶ。
マスタLD211及びサブLD212がコピー状態または同期状態にある場合、ホスト20は、マスタLD211及びサブLD212のうちのマスタLD211のみにアクセスする。アクセスコントローラ302は、コピー状態または同期状態にあるマスタLD211へのライトアクセスがホスト20によって要求された場合、マスタLD211及びサブLD212の双方にデータをライトする。
次に、本実施形態の動作について、レプリケーション初期化処理を例に、図6を参照して説明する。図6は、レプリケーション初期化処理の典型的な手順を説明するためのフローチャートである。まず、システム管理部301は、マスタLD211及びサブLD212から、レプリケーション初期化の対象となるマスタ及びサブ論理エクステントの組を選択する(ステップS1)。ここでは、論理エクステント番号i(例えば、i=0)を有するマスタ及びサブ論理エクステントi(第1及び第2の論理エクステント)の組が選択されるものとする。
次にシステム管理部301は、マスタ及びサブ論理エクステントiの組の論理エクステント番号iに基づいてアドレス変換テーブル322a及び322bを参照することにより、当該マスタ及びサブ論理エクステントiに割り当てられているマスタ及びサブ物理エクステント(第1及び第2の物理エクステント)を特定する(ステップS2)。つまりシステム管理部301は、マスタ及びサブ論理エクステントiに割り当てられているマスタ及びサブ物理エクステントのアドレス情報を取得する。取得されたマスタ物理エクステントのアドレス情報は、当該マスタ物理エクステントを備えたストレージ装置のPDID(物理ディスク識別子)と、当該マスタ物理エクステントの物理アドレスとを含む。取得されたサブ物理エクステントのアドレス情報は、当該サブ物理エクステントを備えたストレージ装置のPDIDと、当該サブ物理エクステントの物理アドレスとを含む。
システム管理部301は、ステップS2を実行すると、レプリケーションコントローラ303に制御を渡す。するとレプリケーションコントローラ303は、特定されたマスタ物理エクステント内のデータを、サブ論理エクステントiに現在割り当てられているサブ物理エクステント(つまり、特定されたサブ物理エクステント)または当該サブ論理エクステントiに新たに割り当てられる物理エクステントにコピーするための第1のコピー処理(ステップS3)を、システム管理部301と協同して次のように実行する。
まずレプリケーションコントローラ303は、特定されたマスタ物理エクステントがSSD11内に存在するかを、取得されたマスタ物理エクステントのアドレス情報中のPDIDに基づいて判定する(ステップS301)。もし、特定されたマスタ物理エクステントがSSD11内に存在するならば(ステップS301のYes)、つまり特定されたマスタ物理エクステントが高速物理エクステント(第1の種類の物理エクステント)であるならば、レプリケーションコントローラ303はステップS302に進む。これに対して、特定されたマスタ物理エクステントがSSD11内に存在しないならば(ステップS301のNo)、つまり特定されたマスタ物理エクステントが低速物理エクステント(第2の種類の物理エクステント)であるならば、レプリケーションコントローラ303はステップS303に進む。ステップS302及びS303のいずれにおいても、レプリケーションコントローラ303は、特定されたサブ物理エクステントがSSD11内に存在するかを、取得されたサブ物理エクステントのアドレス情報中のPDIDに基づいて判定する。
ステップS302の判定がNoの場合、レプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントがそれぞれ異なる階層のストレージ装置内に存在すると判断する。つまりレプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントの種類が異なると判断する。この場合、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiにそれぞれ割り当てられるマスタ及びサブ物理エクステントの種類を一致させるために、ステップS304に進む。ステップS304において、レプリケーションコントローラ303は、SSD11内の空き物理エクステント(つまり、特定されたマスタ物理エクステントと同種の空き物理エクステント)を確保する。空き物理エクステントとは、有効なデータが格納されていない物理エクステントを指す。
同様に、ステップS303の判定がYesの場合、レプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントがそれぞれ異なる種類のストレージ装置内に存在すると判断する。この場合、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiにそれぞれ割り当てられるマスタ及びサブ物理エクステントの種類を一致させるために、ステップS305に進む。ステップS305において、レプリケーションコントローラ303は、HDD12内の空き物理エクステント(つまり、特定されたマスタ物理エクステントと同種の空き物理エクステント)を確保する。
空き物理エクステントを管理する手法は、従来からよく知られている。これらの手法は、例えば、空き物理エクステントの物理エクステント番号(つまり、ID)の集合が保持される空き物理エクステントリストをストレージ装置毎に用いる手法を含む。なお、全てのストレージ装置(本実施形態では、SSD11及びHDD12)に共通の空き物理エクステントリストが用いられても良い。この場合、空き物理エクステントリストに保持される物理エクステント番号に、当該物理エクステント番号で示される物理エクステントを持つストレージ装置のPDIDが付加されれば良い。
レプリケーションコントローラ303は、ステップS304またはS305を実行すると、特定されたマスタ物理エクステント(第1の物理エクステント)内のデータを、確保された物理エクステント(第3の物理エクステント)にコピーする(ステップS306)。これにより、ステップS304に続いてステップS306が実行されたならば、SSD11に存在する、特定されたマスタ物理エクステント内のデータが、当該SSD11に存在する、確保された物理エクステントにコピーされる。これに対し、ステップS305に続いてステップS306が実行されたならば、HDD12に存在する、特定されたマスタ物理エクステント内のデータが、当該HDD12に存在する、確保された物理エクステントにコピーされる。
レプリケーションコントローラ303は、ステップS306を実行すると、システム管理部301に制御を返す。するとシステム管理部301は、サブLDアドレス変換テーブル322bを更新する(ステップS307)。即ちシステム管理部301は、サブLDアドレス変換テーブル322bにおいて、論理エクステント番号iに対応付けられたエントリiに設定されているPDID及び物理アドレスを、それぞれ、ステップS304またはS305で確保された物理エクステントのPDID及び物理アドレスに変更する。これにより、確保された物理エクステントは、特定されたマスタ物理エクステントに対応する新たなサブ物理エクステントとしてサブLDアドレス変換テーブル322bに登録される。
このときシステム管理部301は、ステップS2で特定されたサブ物理エクステントの物理エクステント番号(及びPDID)を空き物理エクステントリストに追加する。つまり、特定されたサブ物理エクステントは、空き物理エクステントとして空き物理エクステントリストに登録される。これにより、第1のコピー処理(ステップS3)は終了する。すると、システム管理部301はステップS4に進む。
一方、ステップS302の判定がYesの場合、レプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントがそれぞれ同一の階層(上位階層)のストレージ装置(つまり、SSD11)内に存在すると判断する。つまりレプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントの種類が同一(第1の種類)であると判断する。この場合、レプリケーションコントローラ303はステップS308に進む。
同様に、ステップS303の判定がNoの場合、レプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントがそれぞれ同一の階層(下位階層)のストレージ装置(つまり、HDD12)内に存在すると判断する。つまりレプリケーションコントローラ303は、特定されたマスタ及びサブ物理エクステントの種類が同一(第2の種類)であると判断する。この場合も、レプリケーションコントローラ303はステップS308に進む。
ステップS308においてレプリケーションコントローラ303は、特定されたマスタ物理エクステント(第1の物理エクステント)内のデータを、特定されたサブ物理エクステント(第2の物理エクステント)にコピーする。これにより、特定されたサブ物理エクステントが現在割り当てられているサブ論理エクステントiは、特定されたマスタ物理エクステントが現在割り当てられているマスタ論理エクステントiに同期化される。すると第1のコピー処理(ステップS3)は終了し、レプリケーションコントローラ303はシステム管理部301に制御を返す。これを受けて、システム管理部301はステップS4に進む。
ステップS4においてシステム管理部301は、現在選択されているマスタ及びサブ論理エクステントiの組が、マスタLD211及びサブLD212における最後の論理エクステントn−1の組であるかを判定する。もし、ステップS4の判定がNoであるならば、システム管理部301は論理エクステント番号iを1インクリメントした後、ステップS1に戻る。ステップS1においてシステム管理部301は、次のマスタ及びサブ論理エクステントi(i=i+1)の組を選択する。これに対し、ステップS4の判定がYesであるならば、システム管理部301はレプリケーション初期化処理を終了する。
さて、レプリケーション初期化処理が実行されているコピー状態においても、ホスト20からストレージコントローラ13にマスタLD211へのデータ書き込みが要求される。ここで、マスタLD211の論理エクステントx(xは0,1,…,n−1のいずれか)へのデータの書き込みが要求されたものとする。この場合、レプリケーションコントローラ303は、マスタLD211及びサブLD212の論理エクステントxの組にデータが書き込まれるように、アクセスコントローラ302を制御する。コピー状態におけるデータ書き込みの動作は、マスタLD211及びサブLD212それぞれの論理エクステントx(つまり、マスタ及びサブ論理エクステントx)の同期化が完了しているかによって異なる。マスタ及びサブ論理エクステントxの同期化が完了しているかは、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bにおいて、マスタ及びサブ論理エクステントxに対応付けられたエントリxのF1フィールドによって示される。
もし、同期化が完了している場合、アクセスコントローラ302は、マスタ及びサブ論理エクステントxに割り当てられているマスタ及びサブ物理エクステントの双方に、ホスト20によって指定されたデータを書き込む。ここで、サブ物理エクステントは、マスタ物理エクステントと同一の種類である。つまり、マスタ物理エクステントがSSD11内の高速物理エクステントであるならば、サブ物理エクステントもSSD11内の高速物理エクステントである。このため、マスタLD211及びサブLD212へのデータの書き込みの性能が、サブ物理エクステントへのデータの書き込みの性能に依存して低下するおそれはない。
一方、同期化が完了していない場合、アクセスコントローラ302は、マスタ論理エクステントxに割り当てられているマスタサブ物理エクステントのみにデータを書き込む。この書き込みの後、レプリケーションコントローラ303が、前述の第1のコピー処理(ステップS3)を実行する。これにより、マスタ及びサブ論理エクステントxへの書き込みデータの書き込みと同時に、マスタ及びサブ論理エクステントxが同期化される。この場合、システム管理部301は、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bにおいて、マスタ及びサブ論理エクステントxに対応付けられたエントリ中のF1フィールドに設定されているフラグF1を、同期状態を示すように更新する。
なお、第1のコピー処理(ステップS3)におけるステップS306に代えて、アクセスコントローラ302(またはレプリケーションコントローラ303)が、ホスト20によって指定されたデータを、確保された物理エクステントに書き込んでも構わない。同様に、第1のコピー処理(ステップS3)におけるステップS308に代えて、アクセスコントローラ302(またはレプリケーションコントローラ303)が、ホスト20によって指定されたデータを特定されたサブ物理エクステントに書き込んでも構わない。
ところでホスト20は、論理エクステントxの一部へのデータの書き込みを要求することがある。この場合、アクセスコントローラ302(またはレプリケーションコントローラ303)は、ホスト20によって指定されたデータ(書き込みデータ)と、特定されたマスタ物理エクステント内のデータとをマージして、そのマージされたデータを、確保されたマスタ物理エクステントまたは特定されたサブ物理エクステントに書き込めば良い。
ホスト20からの書き込み要求に伴うマスタ及びサブ論理エクステントxの同期化の後、前述のレプリケーション処理のステップS1で、当該マスタ及びサブ論理エクステントx(i=x)の組が選択されたものとする。この場合、第1のコピー処理(ステップS3)は必ずしも必要でない。そこで、前記実施形態と異なって、選択されたマスタ及びサブ論理エクステントxが同期化されているかを、例えばレプリケーションコントローラ303が判定しても良い。そして、選択されたマスタ及びサブ論理エクステントxが同期化されている場合、アクセスコントローラ302は、第1のコピー処理(ステップS3)を抑止しても良い。つまり、第1のコピー処理(ステップS3)をスキップしてステップS4が実行されても良い。
次に、本実施形態で適用される、マスタLD211及びサブLD212の性能の最適化を図るための階層変更処理について、図7を参照して説明する。図7は、階層変更処理の典型的な手順を説明するためのフローチャートである。階層変更処理は、例えば、ユーザによる指定に基づくホスト20からの要求に応じて起動される。この階層変更処理が、予め定められた階層変更スケジュールに基づくホスト20からの要求に応じて起動されても構わない。本実施形態では、階層変更処理は、マスタLD211及びサブLD212が同期している状態で起動されるものとする。この場合、例えばマスタ及びサブ論理エクステントiに割り当てられるマスタ及びサブ物理エクステントは、同一階層のストレージ装置内に存在する。
まず階層化コントローラ304は、階層変更の候補となるマスタ論理エクステントを、アクセスカウンタテーブル323に基づいて選択する(ステップS11)。即ち階層化コントローラ304は、アクセスカウンタテーブル323内で最大のアクセスカウントACNTを含むエントリzを探して、当該エントリzに対応付けられていて、且つマスタLD211に含まれているマスタ論理エクステントz(第3の論理エクステント)を、階層変更の候補として選択する。
階層化コントローラ304は、ステップS11を実行すると、システム管理部301に制御を渡す。するとシステム管理部301は、選択されたマスタ論理エクステントzの論理エクステント番号zに基づいてアドレス変換テーブル322aを参照することにより、当該マスタ論理エクステントzに割り当てられているマスタ物理エクステント(第3の物理エクステント)を特定する(ステップS12)。つまりシステム管理部301は、マスタ論理エクステントzに割り当てられているマスタ物理エクステントのアドレス情報を取得する。
システム管理部301はステップS12を実行すると、階層化コントローラ304に制御を返す。すると階層化コントローラ304は、選択されたマスタ論理エクステントzに割り当てられる階層の変更が必要であるかを、特定されたマスタ物理エクステントがHDD12内に存在するかに基づいて判定する(ステップS13)。
もし、特定されたマスタ物理エクステントがSSD11内に存在する高速物理エクステントである場合、階層化コントローラ304は、選択されたマスタ論理エクステントzに割り当てられている階層は上位階層であり、したがって階層変更は必要ないと判定する(ステップS13のNo)。この場合、階層が変更されるべき論理エクステントが選択されなかったのと等価であり、階層化コントローラ304は、次のステップS14(第1の再配置処理)をスキップしてステップS15に進む。第1の再配置処理は、マスタ論理エクステントzに割り当てられている階層を変更するために、当該マスタ論理エクステントzに現在割り当てられているマスタ物理エクステント(低速物理エクステント)内のデータを、マスタ及びサブ論理エクステントz(第3及び第4の論理エクステント)に新たに割り当てられるべき2つの高速物理エクステント(第4及び第5の物理エクステント)に再配置(コピー)する処理を含む。
これに対し、特定されたマスタ物理エクステントがHDD12内に存在する低速物理エクステントである場合、階層化コントローラ304は、選択されたマスタ論理エクステントzに割り当てられている階層は下位階層であり、したがって階層変更は必要であると判定する(ステップS13のYes)。この場合、階層が変更されるべき論理エクステントとして、マスタ論理エクステントzが選択されたのと等価であり、階層化コントローラ304は、第1の再配置処理(ステップS14)を、システム管理部301と協同して次のように実行する。
まず階層化コントローラ304は、データの再配置先のストレージ装置(つまり、SSD11)内の2つの空き物理エクステント(第4及び第5の物理エクステント)を確保する(ステップS141)。次に階層化コントローラ304は、特定されたマスタ物理エクステント内のデータを、確保された2つの物理エクステントにコピー(再配置)する(ステップS142)。
なお、SSD11内に2つの空き物理エクステントが存在しない場合、階層化コントローラ304は、新たに空き物理エクステントに変更すべきSSD11内の2つの物理エクステントを、マスタLDアドレス変換テーブル322a、サブLDアドレス変換テーブル322b及びアクセスカウンタテーブル323に基づいて、次のように決定する。まず階層化コントローラ304は、高速物理エクステントが割り当てられているマスタ論理エクステントの中で、アクセスカウントACNTが最小のマスタ論理エクステントyを、マスタLDアドレス変換テーブル322a及びアクセスカウンタテーブル323に基づいて探す。
次に階層化コントローラ304は、マスタ論理エクステントyに割り当てられているマスタ物理エクステント(高速物理エクステント)と、マスタ論理エクステントyと同一論理エクステント番号yを有するサブ論理エクステントyに割り当てられているサブ物理エクステント(高速物理エクステント)とを特定する。次に階層化コントローラ304は、特定されたマスタ物理エクステント内のデータを、HDD12内の2つの空き物理エクステント(つまり、低速物理エクステント)にコピーする。そして、データがコピーされた2つの物理エクステントを、マスタ及びサブ論理エクステントyに割り当てられる新たなマスタ及びサブ物理エクステントに変更するために、システム管理部301は、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bを更新する。これにより、階層化コントローラ304は、SSD11内に2つの空き物理エクステントを確保することができる。
階層化コントローラ304は、ステップS142を実行すると、システム管理部301に制御を返す。するとシステム管理部301は、マスタLDアドレス変換テーブル322aを更新する(ステップS143)。即ちシステム管理部301は、マスタLDアドレス変換テーブル322aにおいて、論理エクステント番号zに対応付けられたエントリzに設定されているPDID及び物理アドレスを、それぞれ、ステップS141で確保された例えば第4の物理エクステントのPDID及び物理アドレスに変更する。これにより、確保された第4の物理エクステントが、ステップS12で特定されたマスタ物理エクステント(第3の物理エクステント)に代わる新たなマスタ物理エクステントとしてマスタLDアドレス変換テーブル322aに登録される。
次にシステム管理部301は、サブLDアドレス変換テーブル322bを更新する(ステップS144)。即ちシステム管理部301は、サブLDアドレス変換テーブル322bにおいて、論理エクステント番号zに対応付けられたエントリzに設定されているPDID及び物理アドレスを、それぞれ、ステップS141で確保された例えば第5の物理エクステントのPDID及び物理アドレスに変更する。これにより、確保された第5の物理エクステントが、今回の第1の再配置処理の前にサブ論理エクステントzに割り当てられていたサブ物理エクステントに代わる新たなサブ物理エクステントとしてサブLDアドレス変換テーブル322bに登録される。なお、ステップS144が、ステップS143に先行して実行されても構わない。
システム管理部301は、ステップS143及びS144を実行すると、即ちステップS14を実行すると、階層化コントローラ304に制御を返す。すると階層化コントローラ304は、ステップS15に進む。
ステップS15において階層化コントローラ304は、現在選択されているマスタ論理エクステントzが、最後の階層変更候補であるかを、例えば次のように判定する。まず階層化コントローラ304は、階層変更処理において現在までに選択された階層変更候補の数を基準値と比較する。そして階層化コントローラ304は、選択された階層変更候補の数が基準値未満であるならば、マスタ論理エクステントzは最後の階層変更候補ではないと判定する(ステップS15のNo)。これに対し、選択された階層変更候補の数が基準値に一致しているならば、マスタ論理エクステントzは最後の階層変更候補であると判定する(ステップS15のYes)。
ステップS15の判定がNoである場合、階層化コントローラ304はステップS11に戻る。ステップS11において階層化コントローラ304は、アクセスカウンタテーブル323内で次に大きいアクセスカウントACNTを含むエントリzを探して、当該エントリzに対応付けられていて、且つマスタLD211に含まれている新たなマスタ論理エクステントzを、次の階層変更候補として選択する。つまり、階層化コントローラ304は、階層変更候補として未だ選択されていないマスタ論理エクステントの中で、最大のアクセスカウントACNTを持つ新たなマスタ論理エクステントzを、次の階層変更候補として選択する。以降の動作は、最初の階層変更候補が選択された場合と同様である。一方、ステップS15の判定がYesである場合、階層化コントローラ304は、階層変更処理を終了する。
本実施形態における階層配置処理によれば、マスタ論理エクステントに割り当てられる物理エクステントが低速物理エクステントから高速物理エクステントに変更される場合、サブ論理エクステントに割り当てられる物理エクステントも低速物理エクステントから高速物理エクステントに変更される。これにより、マスタLD211及びサブLD212へのデータの書き込みの性能が、サブ物理エクステントへのデータの書き込みの性能に依存して低下するおそれはない。
<変形例>
前記実施形態において、マスタLD211及びサブLD212それぞれの少なくとも一部の領域が読み出し専用領域として用いられる場合を想定する。また、マスタLD211及びサブLD212それぞれの読み出し専用領域内の論理エクステントが、論理エクステントi(つまり、マスタ及びサブ論理エクステントi)であるものとする。
この場合、マスタ及びサブ論理エクステントiに割り当てられているマスタ及びサブ物理エクステントにデータが書き込まれることはない。つまり、マスタLD211及びサブLD212それぞれの読み出し専用領域に関しては、同期化のためのデータ書き込みを考慮する必要はなく、したがって同期化のためのデータ書き込みに伴う性能の低下を考慮する必要はない。よって、例えば、SSD11内の物理エクステント(つまり、高速物理エクステント)が、マスタ論理エクステントiに既に割り当てられている(または新たに割り当てられる)としても、SSD11内の別の物理エクステントを、サブ論理エクステントiに必ずしも割り当てる必要はない。
本変形例の特徴は、マスタ及びサブ論理エクステントがマスタLD211及びサブLD212それぞれの読み出し専用領域に含まれている場合、サブ論理エクステントには常にHDD12内の物理エクステント(つまり、低速エクステント)が割り当てられることにある。以下、本変形例の動作について、レプリケーション初期化処理を例に、図8を参照して説明する。図8は、本変形例に係るレプリケーション初期化処理の典型的な手順を説明するためのフローチャートである。
まず、システム管理部301は、前記実施形態におけるステップS1と同様に、マスタ及びサブ論理エクステントi(第1及び第2の論理エクステント)の組を選択する(ステップS21)。次にシステム管理部301は、前記実施形態におけるステップS2と同様に、マスタ及びサブ論理エクステントiに割り当てられているマスタ及びサブ物理エクステント(第1及び第2の物理エクステント)を特定する(ステップS22)。そしてシステム管理部301は、レプリケーションコントローラ303に制御を渡す。このときシステム管理部301は、例えば、マスタLDアドレス変換テーブル322a及びサブLDアドレス変換テーブル322bにおいて、マスタ及びサブ論理エクステントiに対応付けられているエントリiのF2フィールドに設定されたフラグF2を、レプリケーションコントローラ303に渡す。
レプリケーションコントローラ303は、システム管理部301によって渡されたフラグF2に基づいて、選択されたマスタ及びサブ論理エクステントiが、マスタLD211及びサブLD212それぞれの読み出し専用領域内に存在するかを判定する(ステップS23)。なお、システム管理部301が、マスタLDアドレス変換テーブル322aまたはサブLDアドレス変換テーブル322bのいずれか一方において、論理エクステントiに対応付けられているエントリi中のフラグF2のみを、レプリケーションコントローラ303に渡しても構わない。
もし、選択されたマスタ及びサブ論理エクステントiが読み出し専用領域内に存在しないならば(ステップS23のNo)、レプリケーションコントローラ303はステップS24に進む。ステップS24においてレプリケーションコントローラ303は、論理エクステント番号iに対応付けられたライトカウントWCNTiが、閾値WCNTTH未満であるかを判定する。ライトカウントWCNTiは、アクセスカウンタテーブル323において、論理エクステント番号iに対応付けられたエントリiに設定されている。
もし、ライトカウントWCNTiが閾値WCNTTH未満でないならば(ステップS24のNo)、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiへのデータ書き込みの頻度は高いと判定する。この場合、レプリケーションコントローラ303は、前記実施形態におけるS3と同様に、システム管理部301と協同して第1のコピー処理を実行する(ステップS25)。
一方、選択されたマスタ及びサブ論理エクステントiが読み出し専用領域内に存在するならば(ステップS23のYes)、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiに関し、同期化のためのデータ書き込みを考慮する必要はないと判断する。この場合、レプリケーションコントローラ303はステップS26に進む。また、ライトカウントWCNTiが閾値WCNTTH未満である場合(ステップS24のYes)、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiへのデータ書き込みの頻度が低く、したがって同期化のためのデータ書き込みに伴う性能の低下を考慮する必要はないは判断する。そこで、この場合も、レプリケーションコントローラ303はステップS26に進む。
ステップS26においてレプリケーションコントローラ303は、システム管理部301と協同して第2のコピー処理を実行する。第2のコピー処理の内容は、第1のコピー処理と異なって、特定されたサブ物理エクステントがSSD11内に存在するかのみに依存する。つまり、第2のコピー処理の内容は、特定されたマスタ物理エクステントがSSD11内に存在するかには依存しない。以下、第2のコピー処理(ステップS26)について、図9を参照して説明する。図9は、第2のコピー処理の典型的な手順を説明するためのフローチャートである。
まずレプリケーションコントローラ303は、特定されたサブ物理エクステント(第1の物理エクステント)がSSD11内に存在するかを、当該サブ物理エクステントのアドレス情報中のPDIDに基づいて判定する(ステップS261)。もし、特定されたサブ物理エクステントがSSD11内に存在するならば(ステップS261のYes)、つまり特定されたサブ物理エクステントが高速物理エクステントであるならば、レプリケーションコントローラ303はステップS262に進む。ステップS262において、レプリケーションコントローラ303は、HDD12内の空き物理エクステント(つまり、特定されたサブ物理エクステントと異なる種類の空き物理エクステント)を確保する。
次にレプリケーションコントローラ303は、特定されたマスタ物理エクステント内のデータを、確保された物理エクステント(第4の物理エクステント)にコピーする(ステップS263)。これにより、特定されたマスタ物理エクステントがSSD11またはHDD12のいずれに存在するかに無関係に、当該特定されたマスタ物理エクステント内のデータは、確保された物理エクステント(つまり、HDD12内の物理エクステント)にコピーされる。
レプリケーションコントローラ303は、ステップS263を実行すると、システム管理部301に制御を返す。するとシステム管理部301は、サブLDアドレス変換テーブル322bを更新する(ステップS264)。即ちシステム管理部301は、サブLDアドレス変換テーブル322bにおいて、論理エクステント番号iに対応付けられたエントリiに設定されているPDID及び物理アドレスを、それぞれ、ステップS262で確保された物理エクステントのPDID及び物理アドレスに変更する。これにより、第2のコピー処理(ステップS26)は終了し、レプリケーションコントローラ303はシステム管理部301に制御を返す。すると、システム管理部301はステップS27に進む。
一方、特定されたサブ物理エクステントがSSD11内に存在しないならば(ステップS261のNo)、つまり特定されたサブ物理エクステントが低速物理エクステントであるならば、レプリケーションコントローラ303はステップS265に進む。ステップS265においてレプリケーションコントローラ303は、特定されたマスタ物理エクステント(第1の物理エクステント)内のデータを、特定されたサブ物理エクステント(第2の物理エクステント)にコピーする。このコピーにより、特定されたサブ物理エクステントが現在割り当てられているサブ論理エクステントiは、特定されたマスタ物理エクステントが現在割り当てられているマスタ論理エクステントiに同期化される。これにより、第2のコピー処理(ステップS26)は終了し、レプリケーションコントローラ303はシステム管理部301に制御を返す。すると、システム管理部301はステップS27に進む。
ステップS27においてシステム管理部301は、現在選択されているマスタ及びサブ論理エクステントiの組が、マスタLD211及びサブLD212における最後の論理エクステントn−1の組であるかを、前記実施形態におけるステップS4と同様に判定する。もし、ステップS27の判定がNoであるならば、システム管理部301は論理エクステント番号iを1インクリメントした後、ステップS21に戻る。ステップS21においてシステム管理部301は、次のマスタ及びサブ論理エクステントi(i=i+1)の組を選択する。これに対し、ステップS27の判定がYesであるならば、システム管理部301はレプリケーション初期化処理を終了する。
本変形例におけるレプリケーション初期化処理によれば、マスタ論理エクステントに割り当てられている物理エクステントが高速物理エクステントである場合でも、当該マスタ論理エクステントが読み出し専用領域に含まれているか、或いは当該マスタ論理エクステントへのデータ書き込みの頻度が低いならば、サブ論理エクステントに高速物理エクステントが割り当てられるのを抑止する。これにより、高価で小容量のSSD11のリソースを節約することができる。
次に、本変形例に係る階層変更処理について、図10を参照して説明する。図10は、階層変更処理の典型的な手順を説明するためのフローチャートである。本変形例においても、階層変更処理は前記実施形態と同様に、マスタLD211及びサブLD212が同期している状態で起動されるものとする。この場合、例えばマスタ及びサブ論理エクステントzに割り当てられるマスタ及びサブ物理エクステントは、同一階層のストレージ装置内に存在するとは限らない。但し、マスタ物理エクステントがHDD12内の物理エクステント(つまり、低速物理エクステント)である場合、サブ物理エクステントも低速物理エクステントである点に注意すべきである。
まず階層化コントローラ304は、前記実施形態におけるステップS11と同様に、階層変更の候補となるマスタ論理エクステントz(第3の論理エクステント)を、アクセスカウンタテーブル323に基づいて選択する(ステップS31)。階層化コントローラ304は、ステップS31を実行すると、システム管理部301に制御を渡す。するとシステム管理部301は、前記実施形態におけるステップS12と同様に、選択されたマスタ論理エクステントzに割り当てられているマスタ物理エクステント(第3の物理エクステント)を特定する(ステップS32)。
システム管理部301はステップS32を実行すると、階層化コントローラ304に制御を返す。すると階層化コントローラ304は、前記実施形態におけるステップS13と同様に、選択されたマスタ論理エクステントzに割り当てられる階層の変更が必要であるか判定する(ステップS33)。
もし、特定されたマスタ物理エクステントがSSD11内に存在する場合、階層化コントローラ304は、階層変更は必要ないと判定する(ステップS33のNo)。この場合、階層化コントローラ304は、前記実施形態におけるステップS15に相当するステップS38に進む。
これに対し、特定されたマスタ物理エクステントがHDD12内に存在する場合、階層化コントローラ304は、階層変更は必要であると判定する(ステップS33のYes)。この場合、階層化コントローラ304は、選択されたマスタ論理エクステントz及び当該マスタ論理エクステントzに対応付けられているサブ論理エクステントzが、マスタLD211及びサブLD212それぞれの読み出し専用領域内に存在するかを判定する(ステップS34)。
サブ論理エクステントzは、例えばシステム管理部301が、マスタ論理エクステントzの論理エクステント番号zに基づいてサブLDアドレス変換テーブル322b内のエントリzを参照することにより特定される。サブ論理エクステントzが割り当てられるサブ物理エクステントも、サブLDアドレス変換テーブル322b内のエントリzに基づいて特定される。また、ステップS34の判定は、本変形例におけるステップS23(図8)と同様に、マスタ及びサブ論理エクステントzに対応付けられているエントリzのF2フィールドに設定されたフラグF2に基づいて実行される。
もし、マスタ及びサブ論理エクステントzが読み出し専用領域内に存在しないならば(ステップS34のNo)、階層化コントローラ304は、ステップS35に進む。ステップS35において階層化コントローラ304は、論理エクステント番号zに対応付けられたライトカウントWCNTzが、閾値WCNTTH未満であるかを判定する。
もし、ライトカウントWCNTzが閾値WCNTTH未満でないならば(ステップS35のNo)、階層化コントローラ304はステップS36に進む。ステップS36において階層化コントローラ304は、前記実施形態におけるS14と同様に、システム管理部301と協同して第1の再配置処理を実行する。これにより、特定されたマスタ物理エクステント(第3の物理エクステント)のデータは、新たなマスタ及びサブ物理エクステントとして用いられるSSD11内の2つの空き物理エクステント(第4及び第5の物理エクステント)にコピー(再配置)される。すると階層化コントローラ304は、ステップS38に進む。
一方、選択されたマスタ及びサブ論理エクステントzが読み出し専用領域内に存在するならば(ステップS34のYes)、階層化コントローラ304はステップS37に進む。また、ライトカウントWCNTzが閾値WCNTTH未満である場合にも(ステップS35のYes)、階層化コントローラ304はステップS37に進む。
ステップS37において階層化コントローラ304は、システム管理部301と協同して第2の再配置処理を実行する。第2の再配置処理の特徴は、特定されたマスタ物理エクステント内のデータを、第1の再配置処理と異なって、マスタ論理エクステントzに新たに割り当てられるべき1つの高速物理エクステント(SSD11内の1つの空き物理エクステント)のみに再配置(コピー)する点にある。以下、第2の再配置処理(ステップS37)について、図11を参照して説明する。図11は、第2の再配置処理の典型的な手順を説明するためのフローチャートである。
まず階層化コントローラ304は、SSD11内の1つの空き物理エクステントを確保する(ステップS371)。次に階層化コントローラ304は、特定されたマスタ物理エクステント(第3の物理エクステント)内のデータを、確保された物理エクステント(第6の物理エクステント)にコピー(再配置)する(ステップS372)。
階層化コントローラ304は、ステップS372を実行すると、システム管理部301に制御を渡す。するとシステム管理部301は、マスタLDアドレス変換テーブル322aを更新する(ステップS373)。即ちシステム管理部301は、マスタLDアドレス変換テーブル322aにおいて、論理エクステント番号zに対応付けられたエントリzに設定されているPDID及び物理アドレスを、それぞれ、ステップS371で確保された物理エクステントのPDID及び物理アドレスに変更する。これにより、第2の配置処理(ステップS37)は終了し、システム管理部301は階層化コントローラ304に制御を返す。すると、階層化コントローラ304はステップS38に進む。
上述の第2の配置処理(ステップS37)によれば、ステップS371で確保された物理エクステント(第6の物理エクステント)が、ステップS32で特定されたマスタ物理エクステント(第3の物理エクステント)に代えてマスタ論理エクステントzに新たに割り当てられるマスタ物理エクステントとして、マスタLDアドレス変換テーブル322aに登録される。つまり、マスタ物理エクステントが、低速物理エクステントから高速物理エクステントに変更される。これに対し、サブ物理エクステントは低速物理エクステントに維持される。
ステップS38において階層化コントローラ304は、前記実施形態におけるステップS15と同様に、現在選択されているマスタ論理エクステントzが、最後の階層変更候補であるかを判定する。ステップS38の判定がNoである場合、階層化コントローラ304はステップS31に戻る。一方、ステップS38の判定がYesである場合、階層化コントローラ304は、階層変更処理を終了する。
本変形例における階層変更処理によれば、マスタ論理エクステントに割り当てられる物理エクステントが低速物理エクステントから高速物理エクステントに変更されても、当該マスタ論理エクステントが読み出し専用領域に含まれているか、或いは当該マスタ論理エクステントへのデータ書き込みの頻度が低いならば、サブ論理エクステントに高速物理エクステントが割り当てられるのを抑止する。これにより、高価で小容量のSSD11のリソースを節約することができる。
前記変形例で適用されるレプリケーション初期化処理及び階層変更処理は、制御プログラム321によって予め定められている。しかし、前記実施形態で適用されるようなレプリケーション初期化処理及び階層変更処理と、前記変形例で適用されるようなレプリケーション初期化処理及び階層変更処理のいずれを実行するかが、ユーザによる指定に基づくホスト20からの要求に応じて決定されても構わない。
以上説明した少なくとも1つの実施形態によれば、ホストによって認識される論理ディスクへのデータの書き込みの性能の低下を防止できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
実施形態によれば、階層化ストレージシステムは、第1のストレージ装置と、第2のストレージ装置と、ストレージコントローラとを具備する。前記第1のストレージ装置は、上位階層のストレージ装置として用いられ、且つ前記上位階層に対応する第1の種類の複数の物理エクステントを含む記憶領域を備える。第2のストレージ装置は、下位階層のストレージ装置として用いられ、且つ前記下位階層に対応する第2の種類の複数の物理エクステントを含む記憶領域を備える。前記ストレージコントローラは、前記第1及び第2のストレージ装置を制御し、システム管理部と、レプリケーションコントローラと、アクセスコントローラとを備える。前記前記システム管理部は複数の論理ディスクを管理する。前記複数の論理ディスクは、前記物理エクステントと同一サイズを有する複数の論理エクステントをそれぞれ含む。前記複数の論理ディスクには、前記第1及び第2のストレージ装置の前記記憶領域の少なくとも一部が前記物理エクステントを単位に割り当てられる。前記アクセスコントローラは、前記複数の論理ディスクそれぞれにおける前記複数の論理エクステントへのライトアクセスの状況をそれぞれ示すライトアクセス統計値を収集する。前記レプリケーションコントローラは、前記複数の論理ディスクに含まれる第1及び第2の論理ディスクを、それぞれマスタ及びサブ論理ディスクとして同期化するためのレプリケーション初期化処理において、前記第1の論理ディスク内の第1の論理エクステント及び前記第1の論理エクステントに対応する前記第2の論理ディスク内の第2の論理エクステントを、それぞれマスタ及びサブ論理エクステントとして同期化する場合、前記第2の論理エクステントに現在割り当てられている第2の物理エクステントの種類が、前記第1の論理エクステントに現在割り当てられている第1の物理エクステントの種類と異なるならば、前記第2の論理エクステントに割り当てられる物理エクステントの種類を前記第1の物理エクステントの種類に一致させるために、前記第1の物理エクステントと同一の種類の前記第1または第2のストレージ装置内の空きの第3の物理エクステントを確保して、前記第3の物理エクステントに前記第1の物理エクステント内のデータをコピーし、且つ前記第3の物理エクステントを前記第2の論理エクステントに新たに割り当てる。前記レプリケーションコントローラは更に、前記第1の論理エクステントのライトアクセス統計値が閾値未満である場合、前記第2の論理エクステントに割り当てられる物理エクステントとして、前記第2の物理エクステントの種類が前記第1の物理エクステントの種類と異なるかに無関係に、前記第2のストレージ装置内の物理エクステントを用いる。
一方、選択されたマスタ及びサブ論理エクステントiが読み出し専用領域内に存在するならば(ステップS23のYes)、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiに関し、同期化のためのデータ書き込みを考慮する必要はないと判断する。この場合、レプリケーションコントローラ303はステップS26に進む。また、ライトカウントWCNTiが閾値WCNTTH未満である場合(ステップS24のYes)、レプリケーションコントローラ303は、マスタ及びサブ論理エクステントiへのデータ書き込みの頻度が低く、したがって同期化のためのデータ書き込みに伴う性能の低下を考慮する必要はないと判断する。そこで、この場合も、レプリケーションコントローラ303はステップS26に進む。