以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態の計算機システムの構成のブロック図である。
計算機システムは、ホスト計算機1、ストレージ装置2、管理端末3、管理ネットワーク5及びSAN(Storage Area Network)6を備える。なお、本ブロック図には、ホスト計算機1及びストレージ装置2は、それぞれ2台ずつが図示されているが、計算機システムにいくつ備わっていてもよい。
SAN6は、ホスト計算機1とストレージ装置2とを接続するネットワークである。管理ネットワーク5は、ストレージ装置2と管理端末3とを接続するネットワークである。
ホスト計算機1は、CPU、メモリ及びインタフェースを備える計算機である。ホスト計算機1は、ストレージ装置2に読出要求及び書込要求を送信する。
管理端末3は、ストレージ装置2を管理する計算機である。なお、管理端末3については、図2で詳細を説明する。
ストレージ装置2は、制御装置20及びディスクドライブ28を備える。
制御装置20は、ディスクドライブ28に対するデータを読み書きを制御する。また、制御装置20は、ディスクドライブ28の記憶領域を、一つ以上の論理ボリューム(実LU)として設定する。ストレージ装置2は、実LUを、ホスト計算機1又は外部のストレージ装置2に提供する。なお、ストレージ装置2は、外部のストレージ装置2から提供された実LUを、外部LUとして認識する。
また、制御装置20は、ホストインタフェース(ホストIF)21、ディスクインタフェース(ディスクIF)22、管理インタフェース(管理IF)23、CPU24、主メモリ25、キャッシュメモリ26及び不揮発性メモリ200を備える。
ホストIF21は、SAN6を介してホスト計算機1に接続されるインタフェースである。ディスクIF22は、ディスクドライブ28に接続されるインタフェースである。管理IF23は、管理ネットワーク5を介して管理端末3に接続されるインタフェースである。
CPU24は、主メモリ25に記憶されるプログラムを実行することによって、各種処理を実行する。主メモリ25には、CPU24によって実行されるプログラム及びCPU24によって必要とされる情報などが一時的に記憶される。例えば、主メモリ25には、不揮発性メモリ200から読み出されたプログラム及びテーブルなどを含む各種情報が記憶される。
キャッシュメモリ26には、ディスクドライブ28に書き込まれるデータ及びディスクドライブ28から読み出されたデータなどが一時的に記憶される。
不揮発性メモリ200には、プログラム及びテーブルを含む各種情報が記憶される。例えば、不揮発性メモリ200には、管理端末通信プログラム201、TP(Thin Provisioning)プログラム202、外部ストレージ制御プログラム203、IO処理プログラム204、LU割当プログラム205、実LUテーブル206、外部ストレージテーブル207、外部LUテーブル208、プールテーブル209、TPLUテーブル210、マッピングテーブル211及びページテーブル212が記憶される。
管理端末通信プログラム201は、管理端末3と通信する。例えば、管理端末通信プログラム201は、管理端末3から各種要求を受信し、受信した要求に対応する処理を実行する。
TPプログラム202は、シン・プロビジョニングによって実現されたボリューム(シン・プロビジョニング・ボリューム:TPLU)を、ホスト計算機1又は外部のストレージ装置2に提供する。ストレージ装置2は、外部のストレージ装置2から提供されたTPLUを、外部LUとして認識する。つまり、ストレージ装置2は、外部のストレージ装置2から提供された実LU又はTPLUのいずれであっても、外部LUとして認識する。
TPLUは、当該TPLUに実際に割り当てられている記憶領域の容量よりも大きい仮想的な容量を持つボリュームとして認識される。
TPプログラム202は、TPLUへの書き込み要求を受信すると、当該書き込みを要求されたTPLUに、ストレージプールの未書込記憶領域を、ページ単位で割り当てる。なお、ストレージプールは、TPLUに割り当て可能な記憶領域から構成される。また、ストレージプールの未書込記憶領域は、ストレージプールに含まれるすべての記憶領域のうち、TPLUのいずれにも割り当てられていない記憶領域である。また、ページは、TPLUへ割り当てられる最小の記憶領域のことであり、例えば64KByteの記憶領域である。
外部ストレージ制御プログラム203は、当該外部ストレージ制御プログラム203を記憶するストレージ装置2に接続されるストレージ装置(外部のストレージ装置)2と通信する。
IO処理プログラム204は、実LU又はTPLUに対するIO要求を受信する。なお、IO要求は、書込要求又は読出要求のいずれかである。書込要求を受信すると、IO処理プログラムは、書き込みを要求されたデータを、実LU又はTPLUに書き込む。一方、読出要求を受信すると、IO処理プログラム204は、読み出しを要求されたデータを、実LU又はTPLUから読み出す。そして、IO処理プログラム204は、読み出したデータを、読出要求の送信元に送信する。
LU割当プログラム205は、LU割当要求を受信すると、LU割当要求の送信元のストレージ装置2(外部のストレージ装置2)に、実LU又はTPLUのいずれかを割り当てる。
実LUテーブル206は、当該実LUテーブル206を記憶するストレージ装置2の実LUに関する情報を示す。なお、実LUテーブル206については、図4で詳細を説明する。
外部ストレージテーブル207は、当該外部ストレージテーブル207を記憶するストレージ装置2と接続されるストレージ装置(外部のストレージ装置)2に関する情報を示す。なお、外部ストレージテーブル207については、図6で詳細を説明する。
外部LUテーブル208は、外部のストレージ装置2から提供されたLUに関する情報を示す。つまり、外部LUテーブル208は、当該外部LUテーブル208を記憶するストレージ装置2の外部LUに関する情報を示す。なお、外部LUテーブル208については、図7で詳細を説明する。
プールテーブル209は、当該プールテーブル209を記憶するストレージ装置2によって設定されるストレージプールに関する情報を示す。なお、プールテーブル209については、図8で詳細を説明する。
TPLUテーブル210は、当該TPLUテーブル210を記憶するストレージ装置2のTPLUに関する情報を示す。なお、TPLUテーブル210については、図10で詳細を説明する。
マッピングテーブル211は、当該マッピングテーブル211を記憶するストレージ装置2のTPLUへの書き込みを要求されたデータが実際に記憶されている位置を示す。なお、マッピングテーブル211については、図12で詳細を説明する。
ページテーブル212は、当該ページテーブル212を記憶するストレージ装置2の実LU又は外部LUに含まれるページ(実ページ)に関する情報を示す。なお、ページテーブル212については、図13で詳細を説明する。
図2は、本発明の第1の実施の形態の計算機システムに備わる管理端末3の構成のブロック図である。
管理端末3は、CPU31、主メモリ32、管理インタフェース(管理IF)33、ポインティング装置34、入力装置35、出力装置36及びディスクドライブ37を備える。
CPU31は、主メモリ32に記憶されるプログラムを実行することによって、各種処理を実行する。主メモリ32は、CPU31によって実行されるプログラム及びCPU31によって必要とされる情報などを記憶する。
主メモリ32には、CPU31によって実行されるプログラム及びCPU31によって必要とされる情報などが一時的に記憶される。例えば、主メモリ32には、ディスクドライブ37から読み出されたプログラム及びテーブルなどを含む情報が記憶される。
管理IF33は、管理ネットワーク5を介してストレージ装置2に接続されるインタフェースである。
ポインティング装置34及び入力装置35は、管理者から入力された情報をCPU31に送信する。例えば、ポインティング装置34はマウスであり、入力装置35はキーボードである。
出力装置36は、CPU31によって指示された情報を出力する。例えば、出力装置36は、液晶ディスプレイである。
ディスクドライブ37には、プログラム及びテーブルを含む各種情報が記憶される。例えば、ディスクドライブ37には、UI(user interface)制御プログラム301、ストレージ通信プログラム302及びストレージテーブル303を含む。
UI制御プログラム301は、ポインティング装置34、入力装置35及び出力装置36を制御する。ストレージ通信プログラム302は、ストレージ装置2と通信する。例えば、ストレージ通信プログラム302は、ストレージ装置2に各種要求を送信する。
ストレージテーブル303は、当該管理端末3に接続されるストレージ装置2に関する情報を示す。なお、ストレージテーブル303については、図14で詳細を説明する。
図3は、本発明の第1の実施の形態のボリュームの説明図である。
ストレージ装置2は、当該ストレージ装置2に備わるディスクドライブ28の記憶領域を一つ以上の実LU281として設定する。そして、ストレージ装置2は、設定した実LU281を、ホスト計算機1又は外部のストレージ装置2に提供する。
また、ストレージ装置2は、一つ以上のTPLU283を設定する。そして、ストレージ装置2は、TPLU283を、ホスト計算機1又は外部のストレージ装置2に提供する。
なお、ストレージ装置2は、外部のストレージ装置2から提供されたLUを、外部LU282として認識する。つまり、ストレージ装置2は、外部のストレージ装置2から提供された実LU281又はTPLU283のいずれであっても、外部LU282として認識する。
また、ストレージ装置2は、実LU281及び外部LU282のうちの少なくとも一方を含むストレージプール285を管理する。つまり、ストレージプール285は、実LU281だけを含んでいてもよいし、外部LU282だけを含んでいてもよいし、実LU281及び外部LU282の双方を含んでいてもよい。また、ストレージプール285に含まれる外部LU282は、当該外部LU282の提供元のストレージ装置2における実LU281又はTPLU283のいずれであってもよい。
また、一つのTPLU283は、一つのストレージプール285に対応付けられている。そして、ストレージ装置2は、TPLU283への書き込み要求を受信すると、当該TPLU283に対応するストレージプール285の未書込記憶領域を当該TPLU283に割り当てる。なお、ストレージプール285の未書込記憶領域は、ストレージプール285に含まれるすべての記憶領域のうち、TPLU283のいずれにも割り当てられていない記憶領域である。
このため、ストレージ装置2は、一つのTPLU283に、実LU281の記憶領域及び外部LU282の記憶領域の双方を割り当てることができる。この場合、TPLU283への書き込みを要求されたデータの一部が実LU281に記憶され、当該同一のTPLU283への書き込みを要求されたデータの残りが外部LU282に記憶される。
本説明図では、ストレージIDの「S01」によって識別されるストレージ装置2は、当該ストレージ装置2に備わるディスクドライブの記憶領域を、LUIDの「I00」によって識別される実LU281、LUIDの「I01」によって識別される実LU281、LUIDの「I02」によって識別される実LU281、LUIDの「I03」によって識別される実LU281、LUIDの「I04」によって識別される実LU281及びLUIDの「I05」によって識別される実LU281として設定する。
また、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「T00」によって識別されるTPLU283、LUIDの「T01」によって識別されるTPLU283及びLUIDの「T02」によって識別されるTPLU283を設定する。
そして、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「I01」によって識別される実LU281及びLUIDの「T00」によって識別されるTPLU283を、ホスト計算機1に提供する。
また、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「I00」によって識別される実LU281を、ストレージIDの「S00」によって識別されるストレージ装置2に提供する。すると、ストレージIDの「S00」によって識別されるストレージ装置2は、ストレージIDの「S01」によって識別されるストレージ装置2から提供された実LU281を、外部LU282として認識する。そして、ストレージIDの「S00」によって識別されるストレージ装置2は、当該外部LU282を含むストレージプール285を設定する。
また、ストレージIDの「S01」によって識別されるストレージ装置2は、ストレージIDの「S02」によって識別されるストレージ装置2から提供されたLUを、LUIDの「E00」によって識別される外部LU282及びLUIDの「E01」によって識別される外部LU282として認識する。なお、本実施の形態では、LUは、TPLU及び実LUの双方を含む。
具体的には、ストレージIDの「S01」によって識別されるストレージ装置2は、ストレージIDの「S02」によって識別されるストレージ装置2から提供された実LU281を、LUIDの「E00」によって識別される外部LU282として認識する。一方、ストレージIDの「S01」によって識別されるストレージ装置2は、ストレージIDの「S02」によって識別されるストレージ装置2から提供されたTPLU283を、LUIDの「E01」によって識別される外部LU282として認識する。
また、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「I02」によって識別される実LU281及びLUIDの「E00」によって識別される外部LU282を、プールIDの「P00」によって識別されるストレージプール285として設定する。つまり、プールIDの「P00」によって識別されるストレージプール285は、ストレージIDの「S01」によって識別されるストレージ装置2における実LU281及びストレージIDの「S02」によって識別されるストレージ装置2における実LU281を含む。
また、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「I05」によって識別される実LU281及びLUIDの「E01」によって識別される外部LU282を、プールIDの「P01」によって識別されるストレージプール285として設定する。つまり、プールIDの「P01」によって識別されるストレージプール285は、ストレージIDの「S01」によって識別されるストレージ装置2における実LU281及びストレージIDの「S02」によって識別されるストレージ装置2におけるTPLU283を含む。
また、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「T00」によって識別されるTPLU283又はLUIDの「T02」によって識別されるTPLU283への書き込み要求を受信すると、プールIDの「P00」によって識別されるストレージプール285の未書込記憶領域を当該TPLU283に割り当てる。同様に、ストレージIDの「S01」によって識別されるストレージ装置2は、LUIDの「T01」によって識別されるTPLU283への書き込み要求を受信すると、プールIDの「P01」によって識別されるストレージプール285の未書込記憶領域を当該TPLU283に割り当てる。
図4は、本発明の第1の実施の形態のストレージ装置2に記憶される実LUテーブル206の構成図である。
実LUテーブル206は、実LUID2061、サイズ2062、割当先種別2063及び割当先ID2064を含む。
実LUID2061は、当該実LUテーブル206を記憶するストレージ装置2の実LU281の一意な識別子である。サイズ2062は、当該レコードの実LUID2061によって識別される実LU281の記憶容量である。
割当先種別2063は、当該レコードの実LUID2061によって識別される実LU281の割当先の種類を示す。
具体的には、割当先種別2063は、当該実LU281が、外部のストレージ装置2、ホスト計算機1又はストレージプール285のいずれに割り当てられているかを示す。
割当先ID2064は、当該レコードの実LUID2061によって識別される実LU281の割当先の一意な識別子である。
なお、実LU281が外部のストレージ装置2に割り当てられている場合、ストレージ装置2は、当該実LU281を、当該外部のストレージ装置2に提供する。よって、割当先ID2064は、当該レコードの実LUID2061によって識別される実LU281の提供先となるストレージ装置2の一意な識別子となる。
また、実LU281がホスト計算機1に割り当てられている場合、ストレージ装置2は、当該実LU281を、当該ホスト計算機1に提供する。よって、割当先ID2064は、当該レコードの実LUID2061によって識別される実LU281の提供先となるホスト計算機1の一意な識別子となる。
また、実LU281がストレージプール285に割り当てられている場合、ストレージ装置2は、当該実LU281を含むストレージプール285を設定する。よって、割当先ID2064は、当該レコードの実LUID2061によって識別される実LU281を含むストレージプール285の一意な識別子となる。
割当先種別2063及び割当先ID2064は、当該レコードの実LUID2061によって識別される実LU281が未割当であること又は予備であることを示してもよい。
割当先種別2063及び割当先ID2064が未割当を示す場合、当該レコードの実LUID2061によって識別される実LU281は、ホスト計算機1、外部のストレージ装置2又はストレージプール285に割り当て可能であるが、いずれにも割り当てられていない状態である。
一方、割当先種別2063及び割当先ID2064が予備であることを示す場合、当該レコードの実LUID2061によって識別される実LU281は、ホスト計算機1又はストレージプール285に割り当て可能であるが、外部のストレージ装置2には割り当てることができない。
次に、実LU281の作成処理について説明する。管理者は、作成を要求する実LU281に関する情報を管理端末3に入力する。このとき、管理端末3は、実LU作成画面を表示する。
図5は、本発明の第1の実施の形態の管理端末3に表示される実LU作成画面311の説明図である。
実LU作成画面311は、ストレージID入力欄3111、実LUID入力欄3112、サイズ入力欄3113、割当禁止指定欄3114、OKボタン3115及びキャンセルボタン3116を含む。
ストレージID入力欄3111には、作成が要求される実LU281の作成先となるストレージ装置2の一意な識別子が管理者によって入力される。
実LUID入力欄3112には、作成が要求される実LU281の一意な識別子が管理者によって入力される。サイズ入力欄3113は、作成が要求される実LU281の記憶容量が管理者によって入力される。
割当禁止指定欄3114では、作成が要求される実LU281を外部のストレージ装置2へ割り当てることを禁止するか否かが管理者によって指定される。つまり、割当禁止指定欄3114では、作成が要求される実LU281を外部のストレージ装置2へ提供することを禁止するか否かが管理者によって指定される。
キャンセルボタン3116が管理者によって操作されると、管理端末3は、当該実LU作成画面311を閉じる。
一方、OKボタン3115が管理者によって操作されると、管理端末3は、実LU作成要求を、ストレージID入力欄3111に入力されたストレージIDによって識別されるストレージ装置2に送信する。
なお、当該実LU作成要求は、実LUID入力欄3112に入力された実LUID及びサイズ入力欄3113に入力されたサイズを含む。更に、当該実LU作成要求は、割当禁止指定欄3114において割当禁止が指定されたか否かを示す情報を含む。
ストレージ装置2は、実LU作成要求を受信すると、実LU281を作成する。具体的には、ストレージ装置2は、受信した実LU作成要求に含まれるサイズの実LU281を作成する。
更に、ストレージ装置2は、作成した実LU281に関する情報を、実LUテーブル206に格納する。
具体的には、ストレージ装置2は、実LUテーブル206に新たなレコードを作成する。次に、ストレージ装置2は、新たなレコードの実LUID2061に、受信した実LU作成要求に含まれる実LUIDを格納する。次に、ストレージ装置2は、新たなレコードのサイズ2062に、受信した実LU作成要求に含まれるサイズを格納する。
次に、ストレージ装置2は、受信した実LU作成要求に含まれる情報に基づいて、実LU作成画面311の割当禁止指定欄3114において割当禁止が指定されたか否かを判定する。
割当禁止が指定された場合、ストレージ装置2は、新たなレコードの割当先種別2063及び割当先ID2064に、予備であることを示す情報を格納する。一方、割当禁止が指定されていない場合、ストレージ装置2は、新たなレコードの割当先種別2063及び割当先ID2064に、未割当であることを示す情報を格納する。
以上のように、ストレージ装置2は、作成した実LU281に関する情報を、実LUテーブル206に格納する。
図6は、本発明の第1の実施の形態のストレージ装置2に記憶される外部ストレージテーブル207の構成図である。
外部ストレージテーブル207は、ストレージID2071及びアドレス2072を含む。
ストレージID2071は、当該外部ストレージテーブル207を記憶するストレージ装置2と接続されるストレージ装置(外部のストレージ装置)2の一意な識別子である。アドレス2072は、当該レコードのストレージID2071によって識別される外部のストレージ装置2にアクセスするためのアドレスである。例えば、アドレス2072は、当該レコードのストレージID2071によって識別される外部のストレージ装置2に割り当てられているIPアドレスである。なお、アドレス2072は、WWN(World Wide Name)などの別のアドレスであってもよい。
図7は、本発明の第1の実施の形態のストレージ装置2に記憶される外部LUテーブル208の構成図である。
外部LUテーブル208は、外部LUID2081、外部LU種別2082、サイズ2083、ストレージID2084、割当先種別2085及び割当先ID2086を含む。
外部LUID2081は、外部のストレージ装置2から提供されたLU282の一意な識別子である。つまり、外部LUID2081は、当該外部LUテーブル208を記憶するストレージ装置2の外部LU282の一意な識別子である。ストレージID2084は、当該レコードの外部LUID2081によって識別される外部LU282の提供元の外部のストレージ装置2の一意な識別子である。
外部LU種別2082は、当該レコードの外部LUID2081によって識別される外部LU282が、当該レコードのストレージID2084によって識別される外部のストレージ装置2において、実LU281又はTPLU283のいずれであるかを示す。
サイズ2083は、当該レコードの外部LUID2081によって識別される外部LU282の記憶容量である。なお、外部LU282が外部のストレージ装置2においてTPLU283の場合、サイズ2083は、TPLU283の仮想的な記憶容量となる。TPLU283の仮想的な記憶容量は、ストレージプール285から当該TPLU283に実際に割り当てられた記憶容量ではなく、当該TPLU283の提供先となるホスト計算機1又はストレージ装置2によって認識される記憶容量である。
割当先種別2085は、当該レコードの外部LUID2081によって識別される外部LU282の割当先の種類を示す。
具体的には、割当先種別2085は、当該外部LU282が、ホスト計算機1又はストレージプール285のいずれに割り当てられているかを示す。
割当先ID2086は、当該レコードの外部LUID2081によって識別される外部LU282の割当先の一意な識別子である。
なお、外部LU282がホスト計算機1に割り当てられている場合、ストレージ装置2は、当該外部LU282を、当該ホスト計算機1に提供する。よって、割当先ID2086は、当該レコードの外部LUID2081によって識別される外部LU282の提供先となるホスト計算機1の一意な識別子となる。
また、外部LU282がストレージプール285に割り当てられている場合、ストレージ装置2は、当該外部LU282を含むストレージプール285を設定する。よって、割当先ID2086は、当該レコードの外部LUID2081によって識別される外部LU282を含むストレージプール285の一意な識別子となる。
図8は、本発明の第1の実施の形態のストレージ装置2に記憶されるプールテーブル209の構成図である。
プールテーブル209は、プールID2091、外部LU種別2092、外部LUサイズ2093及び割当開始閾値2094を含む。
プールID2091は、当該プールテーブル209を記憶するストレージ装置2によって設定されるストレージプール285の一意な識別子である。
外部LU種別2092は、当該レコードのプールID2091によって識別されるストレージプール285に追加可能な外部LU282が、外部のストレージ装置2において、実LU281又はTPLU283のいずれであるかを示す。
外部LUサイズ2093は、当該レコードのプールID2091によって識別されるストレージプール285に追加可能な外部LU282の記憶容量の最小値を示す。
割当開始閾値2094は、当該レコードのプールID2091によって識別されるストレージプール285の未書込記憶領域が不足しているか否かを判定するための閾値である。ストレージ装置2は、ストレージプール285の未書込記憶領域の容量が割当開始閾値294未満になると、当該ストレージプール285の未書込記憶領域が不足していると判定する。ストレージプール285の未書込記憶領域が不足していると判定した場合、ストレージ装置2は、当該ストレージプール285に記憶容量を追加するための処理を実行する。
次に、ストレージプール285の作成処理について説明する。管理者は、作成を要求するストレージプール285に関する情報を管理端末3に入力する。このとき、管理端末3は、プール作成画面を表示する。
図9は、本発明の第1の実施の形態の管理端末3に表示されるプール作成画面312の説明図である。
プール作成画面312は、ストレージID入力欄3121、プールID入力欄3122、外部LU割当ポリシ入力領域、OKボタン3126及びキャンセルボタン3127を含む。
ストレージID入力欄3121には、作成が要求されるストレージプール285の作成先となるストレージ装置2の一意な識別子が管理者によって入力される。プールID入力欄3122には、作成が要求されるストレージプール285の一意な識別子が管理者によって入力される。
外部LU割当ポリシ入力領域は、外部LU種別選択欄3123、外部LUサイズ入力欄3124及び割当開始閾値入力欄3125を含む。
外部LU種別選択欄3123では、作成が要求されるストレージプール285に追加可能な外部LU282が、外部のストレージ装置2において、実LU281又はTPLU283のいずれであるかが管理者によって選択される。
外部LUサイズ入力欄3124には、作成が要求されるストレージプール285に追加可能な外部LU282の記憶容量の最小値が管理者によって入力される。割当開始閾値入力欄3125には、作成が要求されるストレージプール285の容量が不足しているか否かを判定するための閾値が管理者によって入力される。
キャンセルボタン3127が操作されると、管理端末3は、当該プール作成画面312を閉じる。
一方、OKボタン3126が操作されると、管理端末3は、プール作成要求を、ストレージID入力欄3121に入力されたストレージIDによって識別されるストレージ装置2に送信する。
なお、当該プール作成要求は、プールID入力欄3122に入力されたプールID、外部LUサイズ入力欄3124に入力された外部LUサイズ及び割当開始閾値入力欄3125に入力された割当開始閾値を含む。更に、当該プール作成要求は、外部LU種別選択欄3123において実LU281又はTPLU283のいずれが選択されたかを示す情報を含む。
ストレージ装置2は、プール作成要求を受信すると、プールテーブル209を更新する。
具体的には、ストレージ装置2は、プールテーブル209に新たなレコードを作成する。次に、ストレージ装置2は、新たなレコードのプールID2091に、受信したプール作成要求に含まれるプールIDを格納する。次に、ストレージ装置2は、受信したプール作成要求に含まれる情報に基づいて、プール作成画面312の外部LU種別選択欄3123において実LU281又はTPLU283のいずれが選択されたかを判定する。
外部LU種別選択欄3123において実LU281が選択されたと判定した場合、ストレージ装置2は、新たなレコードの外部LU種別2092に、実LU281を示す情報を格納する。一方、外部LU種別選択欄3123においてTPLU283が選択されたと判定した場合、ストレージ装置2は、新たなレコードの外部LU種別2092に、TPLU283を示す情報を格納する。
次に、ストレージ装置2は、新たなレコードの外部LUサイズ2093に、受信したプール作成要求に含まれるサイズを格納する。次に、ストレージ装置2は、新たなレコードの割当開始閾値2094に、受信したプール作成要求に含まれる割当開始閾値を格納する。
以上のように、ストレージ装置2は、プールテーブル209を更新する。
図10は、本発明の第1の実施の形態のストレージ装置2に記憶されるTPLUテーブル210の構成図である。
TPLUテーブル210は、TPLUID2101、サイズ2102、プールID2103、割当先種別2104及び割当先ID2105を含む。
TPLUID2101は、当該TPLUテーブル210を記憶するストレージ装置2のTPLU283の一意な識別子である。
サイズ2102は、当該レコードのTPLUID2101によって識別されるTPLU283の仮想的な記憶容量である。つまり、サイズ2102は、ストレージプール285から当該TPLU283に実際に割り当てられた記憶容量ではなく、当該TPLU283の提供先となるホスト計算機1又は外部のストレージ装置2によって認識される記憶容量である。
プールID2103は、当該レコードのTPLUID2101によって識別されるTPLU283に割り当てられる記憶領域を含むストレージプール285の一意な識別子である。
割当先種別2104は、当該レコードのTPLUID2101によって識別されるTPLU283の割当先の種類を示す。
具体的には、割当先種別2104は、当該TPLU283が、外部のストレージ装置2又はホスト計算機1のいずれに割り当てられているかを示す。
割当先ID2105は、当該レコードのTPLUID2101によって識別されるTPLU283の割当先の一意な識別子である。
なお、TPLU283が外部のストレージ装置2に割り当てられている場合、ストレージ装置2は、当該TPLU283を、当該外部のストレージ装置2に提供する。よって、割当先ID2105は、当該レコードのTPLUID2101によって識別されるTPLU283の提供先のストレージ装置2の一意な識別子となる。
また、TPLU283がホスト計算機1に割り当てられている場合、ストレージ装置2は、当該TPLU283を、当該ホスト計算機1に提供する。よって、割当先ID2105は、当該レコードのTPLUID2101によって識別されるTPLU283の提供先のホスト計算機1の一意な識別子となる。
割当先種別2104及び割当先ID2105は、当該レコードのTPLUID2101によって識別されるTPLU283が未割当であること又は予備であることを示してもよい。
割当先種別2104及び割当先ID2105が未割当を示す場合、当該レコードのTPLUID2101によって識別されるTPLU283は、ホスト計算機1、外部のストレージ装置2に割り当て可能であるが、いずれにも割り当てられていない状態である。
一方、割当先種別2104及び割当先ID2105が予備であることを示す場合、当該レコードのTPLUID2101によって識別されるTPLU283は、ホスト計算機1に割り当て可能であるが、外部のストレージ装置2には割り当てることができない。
次に、TPLU283の作成処理について説明する。管理者は、作成を要求するTPLU283に関する情報を管理端末3に入力する。このとき、管理端末3は、TPLU作成画面を表示する。
図11は、本発明の第1の実施の形態の管理端末3に表示されるTPLU作成画面313の説明図である。
TPLU作成画面313は、ストレージID入力欄3131、プールID入力欄3132、TPLUID入力欄3133、サイズ入力欄3134、割当禁止指定欄3135、OKボタン3136及びキャンセルボタン3137を含む。
ストレージID入力欄3131には、作成が要求されるTPLU283の作成先となるストレージ装置2の一意な識別子が管理者によって入力される。プールID入力欄3132には、作成が要求されるTPLU283に割り当て可能な記憶領域を含むストレージプール285の一意な識別子が管理者によって入力される。
TPLUID入力欄3133には、作成が要求されるTPLU283の一意な識別子が管理者によって入力される。サイズ入力欄3134は、作成が要求されるTPLU283の仮想的な記憶容量が管理者によって入力される。
割当禁止指定欄3135では、作成が要求されるTPLU283を外部のストレージ装置2へ割り当てることを禁止するか否かが管理者によって指定される。つまり、割当禁止指定欄3135では、作成が要求されるTPLU283を外部LU282として外部のストレージ装置2へ提供することを禁止するか否かが管理者によって指定される。
キャンセルボタン3137が管理者によって操作されると、管理端末3は、当該TPLU作成画面313を閉じる。
一方、OKボタン3136が管理者によって操作されると、管理端末3は、TPLU作成要求を、ストレージID入力欄3131に入力されたストレージIDによって識別されるストレージ装置2に送信する。
なお、当該TPLU作成要求は、プールID入力欄3132に入力されたプールID、TPLUID入力欄3133に入力されたTPLUID及びサイズ入力欄3134に入力されたサイズを含む。更に、当該TPLU作成要求は、割当禁止指定欄3135において割当禁止が指定されたか否かを示す情報を含む。
ストレージ装置2は、TPLU作成要求を受信すると、TPLUテーブル210を更新する。
具体的には、ストレージ装置2は、TPLUテーブル210に新たなレコードを作成する。次に、ストレージ装置2は、新たなレコードのTPLUID2101に、受信したTPLU作成要求に含まれるTPLUIDを格納する。次に、ストレージ装置2は、新たなレコードのサイズ2102に、受信したTPLU作成要求に含まれるサイズを格納する。次に、ストレージ装置2は、新たなレコードのプールID2103に、受信したTPLU作成要求に含まれるプールIDを格納する。
次に、ストレージ装置2は、受信したTPLU作成要求に含まれる情報に基づいて、TPLU作成画面313の割当禁止指定欄3135において割当禁止が指定されたか否かを判定する。
割当禁止が指定された場合、ストレージ装置2は、新たなレコードの割当先種別2104及び割当先ID2105に、予備であることを示す情報を格納する。一方、割当禁止が指定されていない場合、ストレージ装置2は、新たなレコードの割当先種別2104及び割当先ID2105に、未割当であることを示す情報を格納する。
以上のように、ストレージ装置2は、TPLUテーブル210を更新する。
図12は、本発明の第1の実施の形態のストレージ装置2に記憶されるマッピングテーブル211の構成図である。
マッピングテーブル211は、TPLUID2111、TPページ番号2112、LU種別2113、ストレージID2114、LUID2115及び実ページ番号2116を含む。
TPLUID2111は、当該TPLUテーブル210を記憶するストレージ装置2のTPLU283の一意な識別子である。TPページ番号2112は、当該レコードのTPLUID2111によって識別されるTPLU283に含まれるページ(TPページ)の一意な識別子である。
LU種別2113は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへ割り当てられた実ページが実LU281又は外部LU282のいずれに含まれているかを示す。つまり、LU種別2113は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへの書き込みを要求されたデータが実際には実LU281又は外部LU282のいずれに記憶されているかを示す。
また、LU種別2113は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページがアクセスされていないことを示してもよい。この場合、当該TPページへの書き込みを要求されたデータは存在しないので、当該TPページへ実ページが割り当てられていない。よって、ストレージID2114、LUID2115及び実ページ番号2116には値が格納されない。
ストレージID2114は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへ割り当てられた実ページを含む外部のストレージ装置2の一意な識別子である。つまり、ストレージID2114は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへの書き込みを要求されたデータが実際に記憶されている外部のストレージ装置2の一意な識別子である。なお、当該TPページへの書き込みを要求されたデータが実際には実LU281に記憶されている場合、ストレージID2114には値が格納されない。
LUID2115は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへ割り当てられた実ページを含む実LU281又は外部LU282の一意な識別子である。つまり、LUID2115は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへの書き込みを要求されたデータが実際に記憶されている実LU281又は外部LU282の一意な識別子である。
実ページ番号2116は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへ割り当てられた実ページの一意な識別子である。つまり、実ページ番号2116は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへの書き込みを要求されたデータが実際に記憶されている実ページの一意な識別子である。なお、実ページは、当該レコードのLUID2115によって識別される実LU281又は外部LU282に含まれるページである。
図13は、本発明の第1の実施の形態のストレージ装置2に記憶されるページテーブル212の構成図である。
ページテーブル212は、LU種別2121、ストレージID2122、LUID2123、実ページ番号2124及び状態2125を含む。
LUID2123は、当該ページテーブル212を記憶するストレージ装置2の実LU281又は外部LU282の一意な識別子である。LU種別2121は、当該レコードのLUID2123によって識別されるLUが、実LU281又は外部LU282のいずれであるかを示す。
ストレージID2122は、当該レコードのLUID2123によって識別される外部LU282を提供する外部のストレージ装置2の一意な識別子である。よって、当該レコードのLUID2123によって識別されるLUが実LU281の場合、ストレージID2122には値が格納されない。
実ページ番号2124は、当該レコードのLUID2123によって識別される実LU281又は外部LU282に含まれるページ(実ページ)の一意な識別子である。
状態2125は、当該レコードの実ページ番号2124によって識別される実ページにデータが既に書き込まれているか否かを示す。
図14は、本発明の第1の実施の形態の管理端末3に記憶されるストレージテーブル303の構成図である。
ストレージテーブル303は、ストレージID3031及びアドレス3032を含む。
ストレージID3031は、管理端末3に接続されるストレージ装置2の一意な識別子である。アドレス2072は、当該レコードのストレージID3031によって識別されるストレージ装置2にアクセスするためのアドレスである。例えば、アドレス3032は、当該レコードのストレージID3031によって識別されるストレージ装置2に割り当てられているIPアドレスである。
次に、本発明の第1の実施の形態の計算機システムの処理を説明する。
図15は、本発明の第1の実施の形態のストレージ装置2によって実行されるディスカバリ処理のフローチャートである。
ストレージ装置2に備わるCPU24は、外部ストレージ制御プログラム203を実行することによって、当該ディスカバリ処理を実行する。
なお、ストレージ装置2は、ディスカバリ処理をいかなるタイミングで実行してもよい。例えば、ストレージ装置2は、ディスカバリ処理を、定期的に実行してもよいし、後述する外部LU作成処理を実行する前に実行してもよいし、管理端末3からの指示に応じて実行してもよい。
まず、ストレージ装置2は、ディスカバリ要求をブロードキャスト又はマルチキャストで送信する(S1001)。これによってストレージ装置2は、計算機システムに備わるすべてのストレージ装置2のうち、ディスカバリ要求の送信元以外のストレージ装置2(外部のストレージ装置2)にディスカバリ要求を送信する。
外部のストレージ装置2は、ディスカバリ要求を受信する。すると、外部のストレージ装置2は、当該外部のストレージ装置2に割り当てられたストレージID及びIPアドレスを含むディスカバリ応答を、ディスカバリ要求の送信元のストレージ装置2に送信する。
一方、ストレージ装置2は、ディスカバリ要求を送信すると、ディスカバリ応答を受信したか否かを判定する(S1002)。ディスカバリ応答を受信していない場合、ストレージ装置2は、ディスカバリ応答を受信するまで待機する。
そして、ディスカバリ応答を受信すると、ストレージ装置2は、受信したディスカバリ応答に含まれるストレージIDと外部ストレージテーブル207のストレージID2071とが一致するレコードが、外部ストレージテーブル207に存在するか否かを判定する。
当該レコードが存在する場合、外部のストレージ装置2が計算機システムに新たに追加されていない。よって、ストレージ装置2は、外部ストレージテーブル207を更新せずに、当該ディスカバリ処理を終了する。
一方、当該レコードが存在しない場合、外部のストレージ装置2が計算機システムに新たに追加されている。そこで、ストレージ装置2は、外部ストレージテーブル207を更新する(S1003)。
具体的には、ストレージ装置2は、外部ストレージテーブル207に新たなレコードを作成する。次に、ストレージ装置2は、受信したディスカバリ応答に含まれるストレージIDを、新たなレコードのストレージID2071に格納する。次に、ストレージ装置2は、受信したディスカバリ応答に含まれるIPアドレスを、新たなレコードのアドレス2072に格納する。
以上のように、ストレージ装置2は、外部ストレージテーブル207を更新する。そして、ストレージ装置2は、当該ディスカバリ処理を終了する。
図16は、本発明の第1の実施の形態の計算機システムによって実行される処理の概要のシーケンス図である。
ストレージ装置2は、容量不足検出処理を定期的に実行する(S801)。なお、容量不足検出処理については、図17で詳細を説明する。
容量不足検出処理において、ストレージ装置2は、ストレージプール285の未書込記憶領域が不足しているか否かを判定する。
ストレージプール285の未書込記憶領域が不足してないと判定した場合、ストレージ装置2は、外部LU作成処理処理を実行しない。一方、ストレージプール285の未書込記憶領域が不足していると判定した場合、ストレージ装置2は、外部LU作成処理を実行する(S802)。なお、外部LU作成処理については、図18で詳細を説明する。
外部LU作成処理において、ストレージ装置2は、LU割当要求を、外部のストレージ装置2に送信する。外部のストレージ装置2は、LU割当要求を受信すると、LU割当処理を実行する(S803)。なお、LU割当処理については、図19A及び図19Bで詳細を説明する。
LU割当処理において、外部のストレージ装置2は、ストレージ装置2にLU割当応答を送信する。ストレージ装置2は、外部のストレージ装置2からLU割当応答を受信すると、外部LUテーブル208を更新する。これによって、ストレージ装置2は、ストレージプール285の未書込記憶領域の不足を解消する。
その後、ストレージ装置2が、ホスト計算機1から書込要求及び書込データを受信したとする。すると、ストレージ装置2は、受信した書込データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。そして、ストレージ装置2は、受信した書込要求の処理完了を通知するための書込応答を、ホスト計算機1に送信する。
次に、ストレージ装置2は、受信した書込要求による書込対象が、実LU281、外部LU282又はTPLU283のいずれであるかを判定する。
書込対象が実LU281の場合、ストレージ装置2は、キャッシュメモリ26に格納されている書込データを、書込対象の実LU281に書き込む。
一方、書込対象が外部LU282の場合、ストレージ装置2は、書込対象の外部LU282を備える外部のストレージ装置2に、書込要求を送信する。更に、ストレージ装置2は、キャッシュメモリ26に格納されている書込データを、当該外部のストレージ装置2に送信する。外部のストレージ装置2は、書込要求及び書込データを受信すると、受信した書込データを、書込対象の外部LU282(外部ストレージ装置2にとっては実LU281又はTPLU283)に書き込む。そして、外部のストレージ装置2は、書込応答をストレージ装置2に送信する。
一方、書込対象がTPLU283の場合、ストレージ装置2は、TPページ書込処理を実行する(S804)。なお、TPページ書込処理については、図20A及び図20Bで詳細を説明する。
TPページ書込処理において、ストレージ装置2は、データの書込対象となるTPページに割り当てられている実ページが外部LU282に含まれているか否かを判定する。TPページに割り当てられている実ページが外部LU282に含まれている場合、ストレージ装置2は、当該外部LU282を備える外部のストレージ装置2に、書込要求を送信する。更に、ストレージ装置2は、キャッシュメモリ26に格納されている書込データを、当該外部のストレージ装置2に送信する。外部のストレージ装置2は、書込要求及び書込データを受信すると、受信した書込データを、書込対象の外部LU282(外部ストレージ装置2にとっては実LU281又はTPLU283)に書き込む。そして、外部のストレージ装置2は、書込応答をストレージ装置2に送信する。
次に、ストレージ装置2が、ホスト計算機1から読出要求を受信したとする。すると、ストレージ装置2は、キャッシュヒット判定を実行する。具体的には、ストレージ装置2は、受信した読出要求によって読み出しを要求されたデータが、当該ストレージ装置2に備わるキャッシュメモリ26に格納されているか否かを判定する。
当該データがキャッシュメモリ26に格納されている場合、ストレージ装置2は、受信した読出要求によって読み出しを要求されたデータを、キャッシュメモリ26から読み出す。そして、ストレージ装置2は、読み出したデータ(読出データ)及び読出応答を、ホスト計算機1に送信する。
一方、当該データがキャッシュメモリ26に格納されていない場合、ストレージ装置2は、受信した読出要求による読出対象が、実LU281、外部LU282又はTPLU283のいずれであるかを判定する。
読出対象が実LU281の場合、ストレージ装置2は、読出対象の実LU281からデータを読み出す。そして、ストレージ装置2は、読出データ及び読出応答を、ホスト計算機1に送信する。
このとき、ストレージ装置2は、受信した読出要求の送信元がホスト計算機1であるか否かを判定する。言い換えると、ストレージ装置2は、読出対象の実LU281がホスト計算機1に割り当てられているか否かを判定する。
読出要求の送信元がホスト計算機1の場合、ストレージ装置2は、読出データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。このため、ストレージ装置2は、ホスト計算機1から読み出しを要求されたデータがキャッシュメモリ26に格納されている確率(キャッシュヒット率)を高めることができる。
一方、読出要求の送信元が外部のストレージ装置2の場合、ストレージ装置2は、読出データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納しない。これによって、同一のデータが複数のキャッシュメモリ26に格納されることを防止する。そのため、ストレージ装置2に備わるキャッシュメモリ26を有効に活用できる。
一方、読出対象が外部LU282の場合、ストレージ装置2は、読出対象の外部LU282を備える外部のストレージ装置2に、読出要求を送信する。外部のストレージ装置2は、読出要求を受信すると、受信した読出要求によって読み出しを要求されたデータを、当該外部LU282から読み出す。そして、外部のストレージ装置2は、読出データ及び読出応答をストレージ装置2に送信する。
このとき、外部のストレージ装置2は、読出要求の送信元がストレージ装置2であると判定する。そのため、外部のストレージ装置2は、読出データを、当該外部のストレージ装置2に備わるキャッシュメモリ26に格納しない。
ストレージ装置2は、読出データ及び読出応答を外部のストレージ装置2から受信すると、受信した読出データを、ホスト計算機1に送信する。更に、ストレージ装置2は、読出応答を、ホスト計算機1に送信する。
このとき、ストレージ装置2は、読出要求の送信元がホスト計算機1であると判定する。そのため、ストレージ装置2は、受信した読出データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。
一方、読出対象がTPLU283の場合、ストレージ装置2は、TPページ読出処理を実行する(S805)。なお、TPページ書込処理については、図21で詳細を説明する。
TPページ読出処理において、ストレージ装置2は、データの読出対象となるTPページに割り当てられている実ページが外部LU282に含まれているか否かを判定する。TPページに割り当てられている実ページが外部LU282に含まれている場合、ストレージ装置2は、当該外部LU282を備える外部のストレージ装置2に、読出要求を送信する。外部のストレージ装置2は、読出要求及び書込データを受信すると、受信した読出要求によって読み出しを要求されたデータを、当該外部LU282(外部ストレージ装置2にとっては実LU281又はTPLU283)から読み出す。そして、外部のストレージ装置2は、読出データ及び読出応答をストレージ装置2に送信する。
このとき、外部のストレージ装置2は、読出要求の送信元がストレージ装置2であると判定する。そのため、外部のストレージ装置2は、読出データを、当該外部のストレージ装置2に備わるキャッシュメモリ26に格納しない。
ストレージ装置2は、読出データ及び読出応答を外部のストレージ装置2から受信すると、受信した読出データを、ホスト計算機1に送信する。更に、ストレージ装置2は、読出応答を、ホスト計算機1に送信する。
このとき、ストレージ装置2は、読出要求の送信元がホスト計算機1であると判定する。そのため、ストレージ装置2は、受信した読出データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。
図17は、本発明の第1の実施の形態のストレージ装置2によって実行される容量不足検出処理のフローチャートである。
ストレージ装置2に備わるCPU24は、TPプログラム202を実行することによって、当該容量不足検出処理を所定の間隔で実行する。
まず、ストレージ装置2は、プールテーブル209に含まれるすべてのレコードを、上から順番に一つずつ選択する(S901)。
次に、ストレージ装置2は、選択したレコードごとに、ステップS902〜S907までの処理を実行する。
ストレージ装置2は、選択したレコードから、プールID2091及び割当開始閾値2094を抽出する。
次に、ストレージ装置2は、抽出したプールID2091と実LUテーブル206の割当先ID2064とが一致するすべてのレコードを、実LUテーブル206から選択する。次に、ストレージ装置2は、選択したすべてのレコードから、実LUID2061を抽出する。
ストレージ装置2は、抽出した実LUID2061によって識別される実LU281を、抽出したプールID2091によって識別されるストレージプール285に割り当てられているLUとして特定する(S902)。
次に、ストレージ装置2は、抽出したプールID2091と外部LUテーブル208の割当先ID2086とが一致するすべてのレコードを、外部LUテーブル208から選択する。次に、ストレージ装置2は、選択したすべてのレコードから、外部LUID2081及びストレージID2084を抽出する。
ストレージ装置2は、抽出したストレージID2084によって識別される外部のストレージ装置2に備わる、抽出した外部LUID2081によって識別される外部LU282を、抽出したプールID2091によって識別されるストレージプール285に割り当てられているLUとして特定する(S903)。
次に、ストレージ装置2は、ページテーブル212のストレージID2122に値が格納されていないすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、抽出した実LUID2061とページテーブル212のLUID2123とが一致するすべてのレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、ページテーブル212の状態2125が未書込を示すすべてのレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、選択したレコードの数を数える。
ストレージ装置2は、計数したレコード数を、ストレージプール285に割り当てられているLUとして特定した実LU281に含まれるページのうち、未書込のページの数として特定する。
次に、ストレージ装置2は、抽出したストレージID2084とページテーブル212のストレージID2122とが一致するすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、抽出した外部LUID2081とページテーブル212のLUID2123とが一致するすべてのレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、ページテーブル212の状態2125が未書込を示すすべてのレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、選択したレコードの数を数える。
ストレージ装置2は、計数したレコード数を、ストレージプール285に割り当てられているLUとして特定した外部LU282に含まれるページのうち、未書込のページの数として特定する。
次に、ストレージ装置2は、計数したレコード数の合計を算出する。ストレージ装置2は、合計の結果を、ストレージプール285に割り当てられているすべてのLUに含まれるページのうち、未書込のページの数として特定する(S904)。
次に、ストレージ装置2は、一つのページのサイズに、合計の結果を乗じる。これによって、ストレージ装置2は、ストレージプール285に含まれる未書込ページの合計サイズを算出する。次に、ストレージ装置2は、算出した合計サイズとステップS902で抽出した割当開始閾値2094とを比較する(S905)。
合計サイズが割当開始閾値2094以上の場合、ストレージ装置2は、当該ストレージプール285の未書込記憶領域が不足していないと判定する。よって、ストレージ装置2は、そのままステップS907に進む。
一方、合計サイズが割当開始閾値2094未満の場合、ストレージ装置2は、当該ストレージプール285の未書込記憶領域が不足していると判定する。この場合、ストレージ装置2は、外部LU作成処理を実行する(S906)。なお、外部LU作成処理については、図18で詳細を説明する。
次に、ストレージ装置2は、プールテーブル209に含まれるすべてのレコードをステップS901において選択したか否かを判定する(S907)。プールテーブル209に含まれるレコードのいずれか一つでも選択していない場合、ストレージ装置2は、ステップS901に戻る。そして、ストレージ装置2は、選択していないレコードをプールテーブル209から選択し、処理を繰り返す。
一方、プールテーブル209に含まれるすべてのレコードを選択した場合、ストレージ装置2は、当該容量不足検出処理を終了する。
図18は、本発明の第1の実施の形態のストレージ装置2によって実行される外部LU作成処理のフローチャートである。
ストレージ装置2に備わるCPU24は、外部ストレージ制御プログラム203を実行することによって、当該外部LU作成処理を実行する。なお、ストレージ装置2は、容量不足検出処理(図17)のステップS905において、ストレージプール285の未書込記憶領域が不足していると判定すると、当該外部LU作成処理を実行する。
まず、ストレージ装置2は、未書込記憶領域が不足しているストレージプール285に関するレコードを、プールテーブル209から選択する。なお、未書込記憶領域が不足しているストレージプール285に関するレコードは、容量不足検出処理(図17)のステップS901において選択されたレコードである。
次に、ストレージ装置2は、選択したレコードから、プールID2091、外部LU種別2092及び外部LUサイズ2093を抽出する(S1101)。
次に、ストレージ装置2は、以前のステップS1102において選択していないレコードのうちの一つを、外部ストレージテーブル207から選択する(S1102)。次に、ストレージ装置2は、選択したレコードから、ストレージID2071及びアドレス2072を抽出する。
次に、ストレージ装置2は、抽出した外部LU種別2092及び外部LUサイズ2093を含むLU割当要求を、抽出したアドレス2072宛てに送信する。これによって、ストレージ装置2は、LU割当要求を、抽出したストレージID2071によって識別される外部のストレージ装置2へ送信する(S1103)。
外部のストレージ装置2は、LU割当要求を受信すると、LU割当処理を実行する。なお、LU割当処理については、図19A及び図19Bで詳細を説明する。
LU割当処理において、外部のストレージ装置2は、LU割当応答を、LU割当要求の送信元であるストレージ装置2に送信する。なお、LU割当応答は、LU割当要求の送信元であるストレージ装置2へのLUの割り当てに成功したか否かを示す。また、LU割当応答がLUの割り当てに成功したことを示す場合、当該LU割当応答は、割り当てられたLUの識別子(LUID)及びサイズを含む。
一方、ストレージ装置2は、LU割当要求を送信すると、LU割当応答を受信したか否かを判定する(S1104)。LU割当応答を受信していない場合、ストレージ装置2は、LU割当応答を受信するまで待機する。
そして、LU割当応答を受信すると、ストレージ装置2は、受信したLU割当応答がLUの割り当てに成功したことを示すか否かを判定する(S1105)。
LU割当応答がLUの割り当てに成功したことを示す場合、ストレージ装置2は、外部LUテーブル208を更新する(S1106)。これによって、ストレージ装置2は、外部のストレージ装置2から割り当てられたLUを、外部LU282として認識する。
具体的には、ストレージ装置2は、外部LUテーブル208に新たなレコードを作成する。次に、ストレージ装置2は、新たなレコードの外部LUID2081に、受信したLU割当応答に含まれるLUIDを格納する。次に、ストレージ装置2は、新たなレコードの外部LU種別2082に、ステップS1101で抽出した外部LU種別2092を格納する。次に、ストレージ装置2は、新たなレコードのサイズ2083に、受信したLU割当応答に含まれるサイズを格納する。
次に、ストレージ装置2は、新たなレコードのストレージID2084に、ステップS1102で抽出したストレージID2071を格納する。次に、ストレージ装置2は、新たなレコードの割当先種別2085に、ストレージプール285に割り当てられていることを示す情報を格納する。次に、ストレージ装置2は、新たなレコードの割当先ID2086に、ステップS1101で抽出したプールID2091を格納する。
以上のように、ストレージ装置2は、外部LUテーブル208を更新する。そして、ストレージ装置2は、当該外部LU作成処理を終了する。
一方、LU割当応答がLUの割り当てに失敗したことを示す場合、ストレージ装置2は、外部ストレージテーブル207に含まれるすべてのレコードをステップS1102において選択したか否かを判定する。
外部ストレージテーブル207に含まれるレコードのいずれか一つでも選択していない場合、ストレージ装置2は、ステップS1107に戻る。そして、ストレージ装置2は、選択していないレコードを外部ストレージテーブル207から選択し、処理を繰り返す。
一方、外部ストレージテーブル207に含まれるすべてのレコードを選択した場合、ストレージ装置2は、ホスト計算機1又は管理端末3にエラーを通知し(S1108)、当該外部LU作成処理を終了する。
図19A及び図19Bは、本発明の第1の実施の形態の外部のストレージ装置2によって実行されるLU割当処理のフローチャートである。
外部のストレージ装置2に備わるCPU24は、LU割当プログラム205を実行することによって、当該LU割当処理を実行する。なお、外部のストレージ装置2は、外部LU作成処理(図18)のステップS1103においてLU割当要求を受信すると、当該LU割当処理を実行する。
まず、外部のストレージ装置2は、受信したLU割当要求から、外部LU種別2092及び外部LUサイズ2093を抽出する。次に、外部のストレージ装置2は、抽出した外部LU種別2092が実LU281又はTPLU283のいずれを示すかを判定する(S1201)。
外部LU種別2092がTPLU283を示す場合、当該LU割当要求は、TPLU283の割り当てを要求している。そこで、外部のストレージ装置2は、TPLUテーブル210の割当先種別2104及び割当先ID2105が未割当を示すすべてのレコードを、TPLUテーブル210から選択する。次に、外部のストレージ装置2は、TPLUテーブル210のサイズ2102が、抽出した外部LUサイズ2093以上であるレコードを、選択したレコードの中から選択する(S1202)。
次に、外部のストレージ装置2は、当該レコードをTPLUテーブル210から選択できたか否かを判定する(S1203)。
当該レコードを選択できた場合、受信したLU割当要求で指定された条件を満たし且つ未割当のTPLU283が存在する。
そこで、外部のストレージ装置2は、TPLUテーブル210を更新する(S1207)。
具体的には、外部のストレージ装置2は、選択したレコードの割当先種別2104に、ストレージ装置2を示す情報を格納する。次に、外部のストレージ装置2は、選択したレコードの割当先ID2105に、受信したLU割当要求の送信元のストレージ装置2の識別子を格納する。
これによって、外部のストレージ装置2は、受信したLU割当要求で指定された条件を満たし且つ未割当のTPLU283を、受信したLU割当要求の送信元のストレージ装置2に割り当てる。そして、外部のストレージ装置2は、ステップS1208に進む。
一方、当該レコードを選択できなかった場合、受信したLU割当要求で指定された条件を満たし且つ未割当のTPLU283が存在しない。そこで、外部のストレージ装置2は、受信したLU割当要求で指定された条件を満たすTPLU283を新たに作成する。
具体的には、外部のストレージ装置2は、プールテーブル209から一つのレコードを任意に選択する。例えば、外部のストレージ装置2は、未書込記憶領域の容量が最も大きいストレージプール285に関するレコードを、プールテーブル209から選択する(S1204)。次に、外部のストレージ装置2は、選択したレコードから、プールID2091を抽出する。
次に、外部のストレージ装置2は、TPLUテーブル210を更新する(S1205)。
具体的には、外部のストレージ装置2は、TPLUテーブル210に新たなレコードを作成する。次に、外部のストレージ装置2は、新たなレコードのTPLUID2101に、TPLUテーブル210に含まれるすべてのTPLUID2101と重複しない値を格納する。次に、外部のストレージ装置2は、新たなレコードのサイズ2102に、ステップS1201で抽出した外部LUサイズ2093を格納する。次に、外部のストレージ装置2は、新たなレコードのプールID2103に、抽出したプールID2091を格納する。
次に、外部のストレージ装置2は、新たなレコードの割当先種別2104に、ストレージ装置2を示す情報を格納する。次に、外部のストレージ装置2は、新たなレコードの割当先ID2105に、受信したLU割当要求の送信元のストレージ装置2の識別子を格納する。
これによって、外部のストレージ装置2は、受信したLU割当要求で指定された条件を満たしたTPLU283を新たに作成する。そして、外部のストレージ装置2は、作成した新たなTPLU283を、受信したLU割当要求の送信元のストレージ装置2に割り当てる。
次に、外部のストレージ装置2は、作成した新たなTPLU283に含まれるすべてのページに関する情報を、マッピングテーブル211に格納する。
具体的には、外部のストレージ装置2は、作成したTPLU283に含まれるページの数の新たなレコードを、マッピングテーブル211に作成する。
次に、外部のストレージ装置2は、新たなレコードのすべてのTPLUID2111に、TPLUテーブル210のTPLUID2101に格納した値を格納する。次に、外部のストレージ装置2は、新たなレコードのそれぞれのTPページ番号2112に、作成したTPLU283に含まれるページの識別子を重複しないように格納する。次に、外部のストレージ装置2は、新たなレコードのすべてのLU種別2113に、当該TPページが未アクセスであることを示す情報を格納する。なお、外部のストレージ装置2は、新たなレコードのストレージID2114、LUID2115及び実ページ番号2116には値を格納しない。
以上のように、外部のストレージ装置2は、マッピングテーブル211を更新する(S1206)。
次に、外部のストレージ装置2は、LU割当応答を、受信したLU割当要求の送信元のストレージ装置2に送信する(S1208)。なお、当該LU割当応答は、LU割当要求の送信元であるストレージ装置2へのLUの割り当てに成功したことを示す。更に、当該LU割当応答は、割り当てられたTPLU283の識別子(LUID)及びサイズを含む。
そして、外部のストレージ装置2は、当該LU割当処理を終了する。
一方、外部LU種別2092が実LU281を示す場合、当該LU割当要求は、実LU281の割り当てを要求している。そこで、外部のストレージ装置2は、実LUテーブル206の割当先種別2063及び割当先ID2064が未割当を示すすべてのレコードを、実LUテーブル206から選択する。次に、外部のストレージ装置2は、実LUテーブル206のサイズ2062が、抽出した外部LUサイズ2093以上であるレコードを、選択したレコードの中から選択する(S1301)。
次に、外部のストレージ装置2は、当該レコードを実LUテーブル206から選択できたか否かを判定する(S1302)。
当該レコードを選択できた場合、受信したLU割当要求で指定された条件を満たし且つ未割当の実LU281が存在する。
そこで、外部のストレージ装置2は、実LUテーブル206を更新する(S1305)。
具体的には、外部のストレージ装置2は、選択したレコードの割当先種別2063に、ストレージ装置2を示す情報を格納する。次に、外部のストレージ装置2は、選択したレコードの割当先ID2064に、受信したLU割当要求の送信元のストレージ装置2の識別子を格納する。
これによって、外部のストレージ装置2は、受信したLU割当要求で指定された条件を満たし且つ未割当の実LU281を、受信したLU割当要求の送信元のストレージ装置2に割り当てる。そして、外部のストレージ装置2は、ステップS1306に進む。
一方、当該レコードを選択できなかった場合、受信したLU割当要求で指定された条件を満たし且つ未割当の実LU281が存在しない。そこで、外部のストレージ装置2は、受信したLU割当要求で指定された条件を満たす実LU281を作成可能であるか否かを判定する。例えば、外部のストレージ装置2は、抽出した外部LUサイズ2093以上の空き容量がディスクドライブ28に存在するか否かに基づいて、実LU281を作成可能であるか否かを判定する。
実LU281を作成できないと判定した場合、外部のストレージ装置2は、LU割当応答を、受信したLU割当要求の送信元のストレージ装置2に送信する(S1307)。なお、当該LU割当応答は、LU割当要求の送信元であるストレージ装置2へのLUの割り当てに失敗したことを示す。
そして、外部のストレージ装置2は、当該LU割当処理を終了する。
一方、実LU281を作成可能と判定した場合、外部のストレージ装置2は、抽出した外部LUサイズ2093の実LU281を新たに作成する。
次に、外部のストレージ装置2は、実LUテーブル206を更新する(S1304)。
具体的には、外部のストレージ装置2は、実LUテーブル206に、新たなレコードを作成する。次に、外部のストレージ装置2は、新たなレコードの実LUID2061に、作成した実LU281の識別子を格納する。次に、外部のストレージ装置2は、新たなレコードのサイズ2062に、抽出した外部LUサイズ2093を格納する。
次に、外部のストレージ装置2は、新たなレコードの割当先種別2063に、ストレージ装置2を示す情報を格納する。次に、外部のストレージ装置2は、新たなレコードの割当先ID2064に、受信したLU割当要求の送信元のストレージ装置2の識別子を格納する。
以上のように、外部のストレージ装置2は、実LUテーブル206を更新する。
次に、外部のストレージ装置2は、LU割当応答を、受信したLU割当要求の送信元のストレージ装置2に送信する(S1306)。なお、当該LU割当応答は、LU割当要求の送信元であるストレージ装置2へのLUの割り当てに成功したことを示す。更に、当該LU割当応答は、割り当てられた実LU281の識別子(LUID)及びサイズを含む。
そして、外部のストレージ装置2は、当該LU割当処理を終了する。
図20A及び図20Bは、本発明の第1の実施の形態のストレージ装置2によって実行されるTPページ書込処理のフローチャートである。
ストレージ装置2に備わるCPU24は、TPプログラム202及びIO処理プログラム204を実行することによって、当該TPページ書込処理を実行する。なお、ストレージ装置2は、TPLU283に含まれるTPページへの書込要求を受信すると、当該TPページ書込処理を実行する。
まず、ストレージ装置2は、TPLU283に含まれるTPページへの書込要求をホスト計算機1から受信する。なお、書込要求には、データの書込対象のTPLU283のLUID、LBA(Logical Block Address)及び書込サイズを含む。ストレージ装置2は、受信した書込要求から、TPLU283のLUID、LBA及び書込サイズを抽出する。次に、ストレージ装置2は、抽出したLBA及び書き込みサイズに基いて、書込対象のTPページのページ番号を算出する。更に、ストレージ装置2は、当該TPページへ書き込まれるデータ(書込データ)を、ホスト計算機1から受信する。
すると、ストレージ装置2は、受信した書込データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。そして、ストレージ装置2は、受信した書込要求の処理完了を通知するための書込応答を、ホスト計算機1に送信する。
次に、ストレージ装置2は、抽出したLUIDとマッピングテーブル211のTPLUID2111とが一致するレコードを、マッピングテーブル211から選択する。次に、ストレージ装置2は、算出されたページ番号とマッピングテーブル211のTPページ番号2112とが一致するレコードを、選択したレコードの中から選択する。
次に、ストレージ装置2は、選択したレコードから、LU種別2113、ストレージID2114、LUID2115及び実ページ番号2116を抽出する(S1401)。
次に、ストレージ装置2は、抽出したLU種別2113が未アクセスを示すか否かを判定する。これによって、ストレージ装置2は、データの書込対象のTPページに実ページが既に割り当てられているか否かを判定する(S1402)。
LU種別2113が実LU281又は外部LU282を示す場合、ストレージ装置2は、データの書込対象のTPページに実ページが既に割り当てられていると判定する。この場合、ストレージ装置2は、データの書込対象のTPページに実ページを新たに割り当てる必要がない。よって、ストレージ装置2は、そのままステップS1501に進む。
一方、LU種別2113が未アクセスを示す場合、ストレージ装置2は、データの書込対象のTPページに実ページが未だ割り当てられていないと判定する。この場合、ストレージ装置2は、データの書込対象のTPページに実ページを割り当てる必要がある。
そこで、ストレージ装置2は、書込要求から抽出したLUIDとTPLUテーブル210のTPLUID2101とが一致するレコードを、TPLUテーブル210から選択する。次に、ストレージ装置2は、選択したレコードからプールID2103を抽出する。これによって、ストレージ装置2は、抽出したプールID2103によって識別されるストレージプール285を、データの書込対象のTPLU283に割り当て可能な記憶領域を含むストレージプール285として特定する(S1403)。
次に、ストレージ装置2は、抽出したプールID2103と実LUテーブル206の割当先ID2064とが一致するレコードを、実LUテーブル206から選択する。次に、ストレージ装置2は、選択したレコードから、実LUID2061を抽出する。これによって、ストレージ装置2は、抽出した実LUID2061によって識別される実LU281を、特定したストレージプール285に割り当てられている実LU281として特定する。
次に、ストレージ装置2は、抽出したプールIDと外部LUテーブル208の割当先ID2086とが一致するレコードを、外部LUテーブル208から選択する。次に、ストレージ装置2は、選択したレコードから、外部LUID2081及びストレージID2084を抽出する。これによって、ストレージ装置2は、抽出したストレージID2084によって識別されるストレージ装置2に備わる、抽出した外部LUID2081によって識別される外部LU282を、特定したストレージプール285に割り当てられている外部LU282として特定する(S1404)。
次に、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定する(S1405)。
具体的には、ストレージ装置2は、ページテーブル212のストレージID2122に値が格納されていないすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、抽出した実LUID2061とページテーブル212のLUID2123とが一致するすべてのレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、ページテーブル212の状態2125が未書込を示すレコードの一つを、選択したレコードの中から選択する。
次に、ストレージ装置2は、当該一つのレコードをページテーブル212から選択できたか否かを判定する。これによって、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定できたか否かを判定する(S1406)。
当該一つのレコードを選択できた場合、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定できたと判定する。そこで、ストレージ装置2は、そのままステップS1409に進む。
一方、当該一つのレコードを選択できなかった場合、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定できなかったと判定する。
そこで、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定する(S1407)。
具体的には、ストレージ装置2は、抽出したストレージID2084とページテーブル212のストレージID2122とが一致するすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、抽出した外部LUID2081とページテーブル212のLUID2123とが一致するすべてのレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、ページテーブル212の状態2125が未書込を示すレコードの一つを、選択したレコードの中から選択する。
次に、ストレージ装置2は、当該一つのレコードをページテーブル212から選択できたか否かを判定する。これによって、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定できたか否かを判定する(S1408)。
当該一つのレコードを選択できなかった場合、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定できなかったと判定する。この場合、ストレージ装置2は、TPページへの書き込みを要求されたデータを格納することができない。よって、ストレージ装置2は、書込エラーを、ホスト計算機1に通知する(S1411)。そして、ストレージ装置2は、当該TPページ書込処理を終了する。
一方、当該一つのレコードを選択できた場合、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定できたと判定する。
そこで、ストレージ装置2は、ページテーブル212を更新する(S1409)。
具体的には、ストレージ装置2は、ステップS1405又はステップS1407でページテーブル212から選択した一つのレコードの状態2125に、書込済を示す情報を格納する。次に、ストレージ装置2は、当該選択した一つのレコードから、LU種別2121、ストレージID2122、LUID2123及び実ページ番号2124を抽出する。
次に、ストレージ装置2は、マッピングテーブル211を更新する(S1410)。
具体的には、ストレージ装置2は、受信した書込要求から抽出したLUIDとマッピングテーブル211のTPLUID2111とが一致するレコードを、マッピングテーブル211から選択する。次に、ストレージ装置2は、算出されたページ番号とマッピングテーブル211のTPページ番号2112とが一致するレコードを、選択したレコードの中から選択する。
次に、ストレージ装置2は、選択したレコードのLU種別2113に、抽出したLU種別2121を格納する。次に、ストレージ装置2は、選択したレコードのストレージID2114に、抽出したストレージID2122に格納する。次に、ストレージ装置2は、選択したレコードのLUID2115に、抽出したLUID2123を抽出する。次に、ストレージ装置2は、選択したレコードの実ページ番号2116に、抽出した実ページ番号2124を格納する。
ストレージ装置2は、マッピングテーブル211を更新することによって、データの書込対象のTPページに実ページを割り当てる。
次に、ストレージ装置2は、データの書込対象となるTPページに割り当てられている実ページが外部LU282に含まれるか否かを判定する(S1501)。
具体的には、ストレージ装置2は、受信した書込要求から抽出したLUIDとマッピングテーブル211のTPLUID2111とが一致するレコードを、マッピングテーブル211から選択する。次に、ストレージ装置2は、算出されたページ番号とマッピングテーブル211のTPページ番号2112とが一致するレコードを、選択したレコードの中から選択する。
次に、ストレージ装置2は、選択したレコードから、LU種別2113を抽出する。次に、ストレージ装置2は、抽出したLU種別2113が外部LU282を示すか否かを判定する。
LU種別2113が実LU281を示す場合、ストレージ装置2は、データの書込対象となるTPページに割り当てられている実ページが実LU281に含まれると判定する。そこで、ストレージ装置2は、選択したレコードから、LUID2115及び実ページ番号2116を抽出する。次に、ストレージ装置2は、キャッシュメモリ26に格納されている書込データを、抽出したLUID2115によって識別される実LU281に含まれる、抽出した実ページ番号2116によって識別される実ページに書き込む。そして、ストレージ装置2は、当該TPページ書込処理を終了する。
一方、LU種別2113が外部LU282を示す場合、ストレージ装置2は、データの書込対象となるTPページに割り当てられている実ページが外部LU282に含まれると判定する。そこで、ストレージ装置2は、選択したレコードから、ストレージID2114、LUID2115及び実ページ番号2116を抽出する(S1502)。
次に、ストレージ装置2は、抽出したストレージID2114と外部ストレージテーブル207のストレージID2071とが一致するレコードを、外部ストレージテーブル207から選択する。次に、ストレージ装置2は、選択したレコードから、アドレス2072を抽出する(S1503)。
次に、ストレージ装置2は、抽出したアドレス2072宛てに、抽出したLUID2115、算出されたLBA及び書込サイズを含む書込要求を送信する。更に、ストレージ装置2は、抽出したアドレス2072宛てに、キャッシュメモリ26に格納されている書込データを送信する。これによって、ストレージ装置2は、抽出したストレージID2114によって識別される外部のストレージ装置2に、書込要求及び書込データを送信する(S1504)。なお、当該書込要求は、抽出したLUID2115によって識別される外部LU282に含まれる、抽出した実ページ番号2116によって識別される実ページへのデータの書き込みを要求する。
外部のストレージ装置2は、書込要求及び書込データを受信する。すると、外部のストレージ装置2は、受信した書込要求から、LUID2115、LBA及び書込サイズを抽出する。もし、抽出したLUID2115によって識別されるLUが実LU281の場合、外部のストレージ装置2は、抽出したLUID2115によって識別されるLUに含まれる、抽出したLBA及び書込サイズによって識別される記憶領域に、受信した書込データを書き込む。一方、抽出したLUID2115によって識別されるLUがTPLU283の場合、外部のストレージ装置2は、抽出したLBA及び書込サイズに基づいて、書込対象のTPページのページ番号を算出する。そして、外部のストレージ装置2は、抽出したLUID2115によって識別される外部LU282に含まれる、算出されたページ番号によって識別されるTPページに、受信した書込データを書き込む。そして、外部のストレージ装置2は、書込完了を通知するための書込応答を、書込要求の送信元のストレージ装置2に送信する。
一方、ストレージ装置2は、書込要求及び書込データを送信すると、書込応答を受信したか否かを判定する(S1505)。
書込応答を受信していない場合、ストレージ装置2は、書込応答を受信するまで待機する。そして、書込応答を受信すると、ストレージ装置2は、当該TPページ書込処理を終了する。
図21は、本発明の第1の実施の形態のストレージ装置2によって実行されるTPページ読出処理のフローチャートである。
ストレージ装置2に備わるCPU24は、TPプログラム202及びIO処理プログラム204を実行することによって、当該TPページ読出処理を実行する。なお、ストレージ装置2は、TPLU283に含まれるTPページからのデータの読み出しを要求する読出要求を受信すると、当該TPページ読出処理を実行する。
但し、当該読出要求によって読み出しを要求されたデータがキャッシュメモリ26に格納されている場合には、ストレージ装置2は、当該TPページ読出処理を実行しない。その代わりに、ストレージ装置2は、受信した読出要求によって読み出しを要求されたデータを、キャッシュメモリ26から読み出す。そして、ストレージ装置2は、読み出したデータ(読出データ)及び読出応答を、ホスト計算機1に送信する。
まず、ストレージ装置2は、TPLU283に含まれるTPページからのデータの読み出しを要求する読出要求をホスト計算機1から受信する。なお、読出要求には、データの読出対象のTPLU283のLUID、LBA及び読出サイズを含む。
すると、ストレージ装置2は、受信した読出要求から、LUID、LBA及び読出サイズを抽出する。次に、ストレージ装置2は、抽出したLBA及び読出サイズに基づいて、読出対象のTPページのページ番号を算出する。次に、ストレージ装置2は、抽出したLUIDとマッピングテーブル211のTPLUID2111とが一致するレコードを、マッピングテーブル211から選択する。次に、ストレージ装置2は、算出されたページ番号とマッピングテーブル211のTPページ番号2112とが一致するレコードを、選択したレコードの中から選択する。
次に、ストレージ装置2は、選択したレコードから、LU種別2113を抽出する(S1601)。次に、ストレージ装置2は、抽出したLU種別2113が未アクセス、実LU281又は外部LU282のいずれを示すかを判定する(S1602)。
LU種別2113が未アクセスを示す場合、データの読出対象のTPページにはデータが書き込まれていない。そこで、ストレージ装置2は、すべてが「0」の値を示す読出データを、ホスト計算機1に送信する(S1603)。更に、ストレージ装置2は、受信した読出要求の処理完了を通知するための読出応答を、ホスト計算機1に送信する(S1611)。そして、ストレージ装置2は、当該TPページ読出処理を終了する。
一方、LU種別2113が実LU281を示す場合、ストレージ装置2は、データの読出対象のTPページに割り当てられている実ページが実LU281に含まれていると判定する。そこで、ストレージ装置2は、選択したレコードから、LUID2115及び実ページ番号2116を抽出する。次に、ストレージ装置2は、抽出したLUID2115によって識別される実LU281に含まれる、抽出した実ページ番号2116によって識別される実ページから、データを読み出す(S1604)。
次に、ストレージ装置2は、読出データを、ホスト計算機1に送信する(S1605)。更に、ストレージ装置2は、受信した読出要求の処理完了を通知するための読出応答を、ホスト計算機1に送信する(S1611)。
このとき、受信した読出要求の送信元がホスト計算機1なので、ストレージ装置2は、読出データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。そして、ストレージ装置2は、当該TPページ読出処理を終了する。
一方、LU種別2113が外部LU282を示す場合、ストレージ装置2は、データの読出対象のTPページに割り当てられている実ページが外部LU282に含まれていると判定する。そこで、ストレージ装置2は、選択したレコードから、ストレージID2114、LUID2115及び実ページ番号2116を抽出する(S1606)。
次に、ストレージ装置2は、抽出したストレージID2114と外部ストレージテーブル207のストレージID2071とが一致するレコードを、外部ストレージテーブル207から選択する。次に、ストレージ装置2は、選択したレコードから、アドレス2072を抽出する(S1607)。
次に、ストレージ装置2は、抽出した実ページ番号2116に基づいて、LBA及び読出サイズを算出する。そして、ストレージ装置2は、抽出したアドレス2072宛てに、抽出したLUID2115、算出されたLBA及び読出サイズを含む読出要求を送信する。これによって、ストレージ装置2は、抽出したストレージID2114によって識別される外部のストレージ装置2に、読出要求を送信する(S1608)。なお、当該読出要求は、抽出したLUID2115によって識別される外部LU282に含まれる、抽出した実ページ番号2116によって識別される実ページからのデータの読み出しを要求する。
外部のストレージ装置2は、読出要求を受信する。すると、外部のストレージ装置2は、受信した読出要求から、LUID2115、LBA及び読出サイズを抽出する。もし、抽出したLUID2115によって識別されるLUが実LU281の場合、外部のストレージ装置2は、抽出したLUID2115によって識別されるLUに含まれる、抽出したLBA及び読出サイズによって識別される記憶領域から、データを読み出す。一方、抽出したLUID2115によって識別されるLUがTPLU283の場合、外部のストレージ装置2は、抽出したLBA及び読出サイズに基づいて、読出対象のTPページのページ番号を算出する。そして、外部のストレージ装置2は、抽出したLUID2115によって識別されるLUに含まれる、算出されたページ番号によって識別されるTPページから、データを読み出す。そして、外部のストレージ装置2は、読出データ及び読出応答を、読出要求の送信元のストレージ装置2に送信する。
このとき、受信した読出要求の送信元がストレージ装置2なので、外部のストレージ装置2は、読出データを、当該外部のストレージ装置2に備わるキャッシュメモリ26に格納しない。
一方、ストレージ装置2は、読出要求を送信すると、読出データ及び読出応答を受信したか否かを判定する(S1609)。
読出データ及び読出応答のうちいずれか一方でも受信していない場合、ストレージ装置2は、読出データ及び読出応答を受信するまで待機する。そして、読出データ及び読出応答を受信すると、ストレージ装置2は、受信した読出データを、ホスト計算機1に送信する(S1610)。更に、ストレージ装置2は、受信した読出要求の処理完了を通知するための読出応答を、ホスト計算機1に送信する(S1611)。
このとき、受信した読出要求の送信元がホスト計算機1なので、ストレージ装置2は、読出データを、当該ストレージ装置2に備わるキャッシュメモリ26に格納する。そして、ストレージ装置2は、当該TPページ読出処理を終了する。
以上のように、本発明の第1の実施の形態によれば、ストレージ装置2は、一つのTPLU283に、実LU281の記憶領域及び外部LU282の記憶領域の双方を割り当てることができる。
(第2の実施の形態)
本発明の第2の実施の形態では、ストレージ装置2は、アクセス状況に応じて、TPLU283へ書き込み要求されたデータの格納先を、実LU281から外部LU282に変更する。同様に、ストレージ装置2は、アクセス状況に応じて、TPLU283へ書き込み要求されたデータの格納先を、外部LU282から実LU281に変更する。
本発明の第2の実施の形態の計算機システムの構成は、ストレージ装置2に記憶されるマッピングテーブル211を除き、第1の実施の形態と同一である。同一の構成には、同一の番号を付して、説明を省略する。また、本発明の第2の実施の形態の計算機システムは、第1の実施の形態と同一の処理を実行する。同一の処理については、説明を省略する。更に、本発明の第2の実施の形態のストレージ装置2は、ページ移動処理を実行する。
図22は、本発明の第2の実施の形態のストレージ装置2に記憶されるマッピングテーブル211の構成図である。
マッピングテーブル211は、TPLUID2111、TPページ番号2112、LU種別2113、ストレージID2114、LUID2115、実ページ番号2116、最終アクセス時刻2117及びアクセス回数2118を含む。
TPLUID2111、TPページ番号2112、LU種別2113、ストレージID2114、LUID2115及び実ページ番号2116は、第1の実施の形態のマッピングテーブル211(図12)に含まれるものと同一なので、説明を省略する。
最終アクセス時刻2117は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへの最後のアクセスの日付け及び時刻を示す。アクセス回数2118は、当該レコードのTPLUID2111及びTPページ番号2112によって識別されるTPページへのアクセスの回数を示す。
本発明の第2の実施の形態では、ストレージ装置2は、TPページ書込処理(図20A及び図20B)のステップS1501において、マッピングテーブル211から選択したレコードの最終アクセス時刻2117に現在の時刻を格納する。更に、ストレージ装置2は、マッピングテーブル211から選択したレコードのアクセス回数2118に「1」を加算する。
つまり、ストレージ装置2は、TPページにデータを書き込む時に、当該データが書き込まれるTPページに関するレコードを、マッピングテーブル211から選択する。そして、ストレージ装置2は、選択したレコードの最終アクセス時刻2117及びアクセス回数2118を更新する。
また、本発明の第2の実施の形態では、ストレージ装置2は、TPページ読出処理(図21)のステップS1601において、マッピングテーブル211から選択したレコードの最終アクセス時刻2117に現在の時刻を格納する。更に、ストレージ装置2は、マッピングテーブル211から選択したレコードのアクセス回数2118に「1」を加算する。
つまり、ストレージ装置2は、TPページからデータを読み出す時に、当該データが読み出されるTPページに関するレコードを、マッピングテーブル211から選択する。そして、ストレージ装置2は、選択したレコードの最終アクセス時刻2117及びアクセス回数2118を更新する。
図23A、図23B及び図23Cは、本発明の第2の実施の形態のストレージ装置2によって実行されるページ移動処理のフローチャートである。
ストレージ装置2に備わるCPU24は、TPプログラム202を実行することによって、当該ページ移動処理を所定の間隔で実行する。
まず、ストレージ装置2は、マッピングテーブル211に含まれるすべてのレコードを、上から順番に一つずつ選択する(S1701)。
次に、ストレージ装置2は、選択したレコードごとに、以降の処理を実行する。
ストレージ装置2は、選択したレコードから、LU種別2113を抽出する。次に、ストレージ装置2は、抽出したLU種別2113が未アクセス、実LU281又は外部LU282のいずれを示すかを判定する(S1702)。
LU種別2113が未アクセスを示す場合、当該選択したレコードに対応するTPページにはデータが書き込まれていない。よって、ストレージ装置2は、そのままステップS1708に進む。
一方、LU種別2113が実LU281を示す場合、ストレージ装置2は、当該選択したレコードに対応するTPページに割り当てられている実ページが実LU281に含まれていると判定する。
そこで、ストレージ装置2は、選択したレコードから、最終アクセス時刻2117及びアクセス回数2118を抽出する。次に、ストレージ装置2は、現在の時刻から、最終アクセス時刻2117を減算する。これによって、ストレージ装置2は、最終アクセス時刻2117からの経過時間を算出する。
次に、ストレージ装置2は、算出した経過時間が、内部アクセス間隔閾値より大きいか否かを判定する(S1703)。なお、内部アクセス間隔閾値は、当該選択したレコードに対応するTPページへ書き込み要求されたデータを、実LU281から外部LU282へ移動するか否かを判定するための閾値である。また、内部アクセス間隔閾値は、管理者などによって予め設定される。
経過時間が内部アクセス間隔閾値より大きい場合、ストレージ装置2は、ステップS1801に進む。
一方、経過時間が内部アクセス間隔閾値以下の場合、ストレージ装置2は、抽出したアクセス回数2118を、当該ページ移動処理の実行間隔で割る。これによって、ストレージ装置2は、当該選択したレコードに対応するTPページへのアクセス頻度を算出する。
次に、ストレージ装置2は、算出したアクセス頻度が、内部アクセス頻度閾値より小さいか否かを判定する(S1704)なお、内部アクセス頻度閾値は、当該選択したレコードに対応するTPページへ書き込み要求されたデータを、実LU281から外部LU282へ移動するか否かを判定するための閾値である。また、内部アクセス頻度閾値は、管理者などによって予め設定される。
アクセス頻度が内部アクセス頻度閾値より小さい場合、ストレージ装置2は、ステップS1801に進む。
一方、アクセス頻度が内部アクセス頻度閾値以上の場合、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードのアクセス回数2118に「0」を格納する(S1707)。
次に、ストレージ装置2は、マッピングテーブル211に含まれるすべてのレコードをステップS1701において選択したか否かを判定する(S1708)。マッピングテーブル211に含まれるレコードのいずれか一つでも選択していない場合、ストレージ装置2は、ステップS1701に戻る。そして、ストレージ装置2は、選択していないレコードを、マッピングテーブル211から選択し、処理を繰り返す。
一方、マッピングテーブル211に含まれるすべてのレコードを選択した場合、ストレージ装置2は、当該ページ移動処理を終了する。
一方、ステップS1801に進むと、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードから、TPLUID2111を抽出する。
次に、ストレージ装置2は、抽出したTPLUID2111とTPLUテーブル210のTPLUID2101とが一致するレコードを、TPLUテーブル210から選択する。次に、ストレージ装置2は、選択したレコードから、プールID2103を抽出する。これによって、ストレージ装置2は、抽出したプールID2103によって識別されるストレージプール285を、抽出したTPLUID2111によって識別されるTPLU283に割り当てられる記憶領域を含むストレージプール285として特定する。
次に、ストレージ装置2は、抽出したプールID2103と外部LUテーブル208の割当先ID2086とが一致するレコードを、外部LUテーブル208から選択する。次に、ストレージ装置2は、選択したレコードから、外部LUID2081及びストレージID2084を抽出する。これによって、ストレージ装置2は、抽出したストレージID2084によって識別されるストレージ装置2に備わる、抽出した外部LUID2081によって識別される外部LU282を、特定したストレージプール285に割り当てられている外部LU282として特定する(S1802)。
次に、ストレージ装置2は、抽出したプールID2103と外部LUテーブル208の割当先ID2086とが一致するレコードを、外部LUテーブル208から選択できたか否かを判定する。これによって、ストレージ装置2は、特定したストレージプール285に割り当てられている外部LU282を特定できたか否かを判定する(S1803)。
当該レコードを外部LUテーブル208から選択できなかった場合、特定されたストレージプール285に割り当てられている外部LU282が存在しない。つまり、ストレージ装置2は、特定したストレージプール285に割り当てられている外部LU282を特定できない。そのため、ストレージ装置2は、マッピングテーブル211から選択したレコードに対応するTPページへ書き込み要求されたデータを、実LU281から外部LU282へ移動できない。そこで、ストレージ装置2は、そのままステップS1707に進む。
一方、当該レコードを外部LUテーブル208から選択できた場合、ストレージ装置2は、特定したストレージプール285に割り当てられている外部LU282を特定できたと判定する。そこで、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定する(S1804)。
具体的には、ストレージ装置2は、抽出したストレージID2084とページテーブル212のストレージID2122とが一致するすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、抽出した外部LUID2081とページテーブル212のLUID2123とが一致するすべてのレコードを選択したレコードの中から選択する。次に、ストレージ装置2は、ページテーブル212の状態2125が未書込を示すレコードの一つを、選択したレコードの中から選択する。
次に、ストレージ装置2は、当該一つのレコードをページテーブル212から選択できたか否かを判定する。これによって、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定できたか否かを判定する(S1805)。
当該一つのレコードを選択できなかった場合、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定できなかったと判定する。この場合、ストレージ装置2は、マッピングテーブル211から選択したレコードに対応するTPページへ書き込み要求されたデータを、実LU281から外部LU282へ移動できない。そこで、ストレージ装置2は、そのままステップS1707に進む。
一方、当該一つのレコードを選択できた場合、ストレージ装置2は、特定した外部LU282に含まれる実ページの中から、未書込の実ページを特定できたと判定する。
そこで、ストレージ装置2は、ページテーブル212を更新する(S1806)。
具体的には、ストレージ装置2は、ステップS1804でページテーブル212から選択した一つのレコードの状態2125に、書込済を示す情報を格納する。次に、ストレージ装置2は、当該選択した一つのレコードから、ストレージID2122、LUID2123及び実ページ番号2124を抽出する。
次に、ストレージ装置2は、抽出したストレージID2122と外部ストレージテーブル207のストレージID2071とが一致するレコードを、外部ストレージテーブル207から選択する。次に、ストレージ装置2は、選択したレコードから、アドレス2072を抽出する(S1807)。なお、抽出されたアドレス2072は、特定された未書込の実ページを含む外部LU282の提供元の外部のストレージ装置2のIPアドレスである。
次に、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードから、LUID2115及び実ページ番号2116を抽出する。次に、ストレージ装置2は、抽出したLUID2115によって識別される実LU281に含まれる、抽出した実ページ番号2116によって識別される実ページからデータを読み出す(S1808)。
次に、ストレージ装置2は、抽出した実ページ番号2116に基づいて、LBA及び書込サイズを算出する。そして、ストレージ装置2は、抽出したアドレス2072宛てに、抽出したLUID2123、算出されたLBA及び書込サイズを含む書込要求を送信する。更に、ストレージ装置2は、抽出したアドレス2072宛てに、実ページから読み出したデータを書込データとして送信する。つまり、ストレージ装置2は、外部のストレージ装置2に、書込要求及び書込データを送信する(S1809)。これによって、ストレージ装置2は、TPページへの書き込みを要求されたデータを、実LU281に含まれる実ページから外部LU282に含まれる実ページに移動する。
なお、当該書込要求は、抽出したLUID2123によって識別される外部LU282に含まれる、抽出した実ページ番号2124によって識別される実ページへのデータの書き込みを要求する。
外部のストレージ装置2は、書込要求及び書込データを受信する。すると、外部のストレージ装置2は、受信した書込要求から、LUID2123、LBA及び書込サイズを抽出する。もし、抽出したLUID2123によって識別されるLUが実LU281の場合、外部のストレージ装置2は、抽出したLUID2123によって識別されるLUに含まれる、抽出したLBA及び書込サイズによって識別される記憶領域に、受信した書込データを書き込む。一方、抽出したLUID2123によって識別されるLUがTPLU283の場合、外部のストレージ装置2は、抽出したLBA及び書込サイズに基づいて、書込対象のTPページのページ番号を算出する。そして、外部のストレージ装置2は、抽出したLUID2123によって識別されるLUに含まれる、算出されたページ番号によって識別されるTPページに、受信した書込データを書き込む。そして、外部のストレージ装置2は、書込完了を通知するための書込応答を、書込要求の送信元のストレージ装置2に送信する。
一方、ストレージ装置2は、書込要求及び書込データを送信すると、書込応答を受信したか否かを判定する(S1810)。
書込応答を受信していない場合、ストレージ装置2は、書込応答を受信するまで待機する。そして、書込応答を受信すると、ストレージ装置2は、マッピングテーブル211を更新する(S1811)。
具体的には、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードのLU種別2113に、外部LU282を示す情報を格納する。次に、ストレージ装置2は、当該選択したレコードのストレージID2114に、ステップS1806で抽出したストレージID2122を格納する。次に、ストレージ装置2は、当該選択したレコードのLUID2115に、ステップS1806で抽出したLUID2123を格納する。次に、ストレージ装置2は、当該選択したレコードの実ページ番号2116に、ステップS1806で抽出した実ページ番号2124を格納する。
これによって、ストレージ装置2は、TPページへの書き込みを要求されたデータの格納先を、実LU281に含まれる実ページから外部LU282に含まれる実ページに変更する。
次に、ストレージ装置2は、ページテーブル212を更新する(S1812)。
具体的には、ストレージ装置2は、ページテーブル212のストレージID2122に値が格納されていないすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、ステップS1808で抽出したLUID2115とページテーブル212のLUID2123とが一致するレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、ステップS1808で抽出した実ページ番号2116とページテーブル212の実ページ番号2124とが一致するレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、選択したレコードの状態2125に、未書込を示す情報を格納する。
これによって、ストレージ装置2は、データの移動元の実ページを未書込領域とする。そして、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードのアクセス回数2118に「0」を格納する(S1707)。
次に、ストレージ装置2は、マッピングテーブル211に含まれるすべてのレコードをステップS1701において選択したか否かを判定する(S1708)。マッピングテーブル211に含まれるレコードのいずれか一つでも選択していない場合、ストレージ装置2は、ステップS1701に戻る。そして、ストレージ装置2は、選択していないレコードを、マッピングテーブル211から選択し、処理を繰り返す。
一方、マッピングテーブル211に含まれるすべてのレコードを選択した場合、ストレージ装置2は、当該ページ移動処理を終了する。
一方、ステップS1702においてLU種別2113が外部LU282を示す場合、ストレージ装置2は、当該選択したレコードに対応するTPページに割り当てられている実ページが外部LU282に含まれていると判定する。
そこで、ストレージ装置2は、選択したレコードから、最終アクセス時刻2117及びアクセス回数2118を抽出する。次に、ストレージ装置2は、現在の時刻から、最終アクセス時刻2117を減算する。これによって、ストレージ装置2は、最終アクセス時刻2117からの経過時間を算出する。
次に、ストレージ装置2は、算出した経過時間が、外部アクセス間隔閾値より小さいか否かを判定する(S1705)。なお、外部アクセス間隔閾値は、当該選択したレコードに対応するTPページへ書き込み要求されたデータを、外部LU282から実LU281へ移動するか否かを判定するための閾値である。また、外部アクセス間隔閾値は、管理者などによって予め設定される。
経過時間が外部アクセス間隔閾値より小さい場合、ストレージ装置2は、ステップS1901に進む。
一方、経過時間が外部アクセス間隔閾値以上の場合、ストレージ装置2は、抽出したアクセス回数2118を、当該ページ移動処理の実行間隔で割る。これによって、ストレージ装置2は、当該選択したレコードに対応するTPページへのアクセス頻度を算出する。
次に、ストレージ装置2は、算出したアクセス頻度が、外部アクセス頻度閾値より大きいか否かを判定する(S1706)なお、外部アクセス頻度閾値は、当該選択したレコードに対応するTPページへ書き込み要求されたデータを、外部LU282から実LU281へ移動するか否かを判定するための閾値である。また、外部アクセス頻度閾値は、管理者などによって予め設定される。
アクセス頻度が外部アクセス頻度閾値より大きい場合、ストレージ装置2は、ステップS1901に進む。
一方、アクセス頻度が外部アクセス頻度閾値以下の場合、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードのアクセス回数2118に「0」を格納する(S1707)。
次に、ストレージ装置2は、マッピングテーブル211に含まれるすべてのレコードをステップS1701において選択したか否かを判定する(S1708)。マッピングテーブル211に含まれるレコードのいずれか一つでも選択していない場合、ストレージ装置2は、ステップS1701に戻る。そして、ストレージ装置2は、選択していないレコードを、マッピングテーブル211から選択し、処理を繰り返す。
一方、マッピングテーブル211に含まれるすべてのレコードを選択した場合、ストレージ装置2は、当該ページ移動処理を終了する。
一方、ステップS1901に進むと、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードから、TPLUID2111を抽出する。
次に、ストレージ装置2は、抽出したTPLUID2111とTPLUテーブル210のTPLUID2101とが一致するレコードを、TPLUテーブル210から選択する。次に、ストレージ装置2は、選択したレコードから、プールID2103を抽出する。これによって、ストレージ装置2は、抽出したプールID2103によって識別されるストレージプール285を、抽出したTPLUID2111によって識別されるTPLU283に割り当てられる記憶領域を含むストレージプール285として特定する。
次に、ストレージ装置2は、抽出したプールID2103と実LUテーブル206の割当先ID2064とが一致するレコードを、実LUテーブル206から選択する。次に、ストレージ装置2は、選択したレコードから、実LUID2061を抽出する。これによって、ストレージ装置2は、抽出した実LUID2061によって識別される実LU281を、特定したストレージプール285に割り当てられている実LU281として特定する(S1902)。
次に、ストレージ装置2は、抽出したプールID2103と実LUテーブル206の割当先ID2064とが一致するレコードを、実LUテーブル206から選択できたか否かを判定する。これによって、ストレージ装置2は、特定したストレージプール285に割り当てられている実LU281を特定できたか否かを判定する(S1903)。
当該レコードを実LUテーブル206から選択できなかった場合、特定されたストレージプール285に割り当てられている実LU281が存在しない。つまり、ストレージ装置2は、特定したストレージプール285に割り当てられている実LU281を特定できない。そのため、ストレージ装置2は、マッピングテーブル211から選択したレコードに対応するTPページへ書き込み要求されたデータを、外部LU282から実LU281へ移動できない。そこで、ストレージ装置2は、そのままステップS1707に進む。
一方、当該レコードを実LUテーブル206から選択できた場合、ストレージ装置2は、特定したストレージプール285に割り当てられている実LU281を特定できたと判定する。そこで、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定する(S1904)。
具体的には、ストレージ装置2は、ページテーブル212のストレージID2122に値が格納されていないレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、抽出した実LUID2061とページテーブル212のLUID2123とが一致するすべてのレコードを選択したレコードの中から選択する。次に、ストレージ装置2は、ページテーブル212の状態2125が未書込を示すレコードの一つを、選択したレコードの中から選択する。
次に、ストレージ装置2は、当該一つのレコードをページテーブル212から選択できたか否かを判定する。これによって、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定できたか否かを判定する(S1905)。
当該一つのレコードを選択できなかった場合、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定できなかったと判定する。この場合、ストレージ装置2は、マッピングテーブル211から選択したレコードに対応するTPページへ書き込み要求されたデータを、外部LU282から実LU281へ移動できない。そこで、ストレージ装置2は、そのままステップS1707に進む。
一方、当該一つのレコードを選択できた場合、ストレージ装置2は、特定した実LU281に含まれる実ページの中から、未書込の実ページを特定できたと判定する。
そこで、ストレージ装置2は、ページテーブル212を更新する(S1906)。
具体的には、ストレージ装置2は、ステップS1904でページテーブル212から選択した一つのレコードの状態2125に、書込済を示す情報を格納する。次に、ストレージ装置2は、当該選択した一つのレコードから、LUID2123及び実ページ番号2124を抽出する。
次に、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードから、ストレージID2114、LUID2115及び実ページ番号2116を抽出する。
次に、ストレージ装置2は、抽出したストレージID2114と外部ストレージテーブル207のストレージID2071とが一致するレコードを、外部ストレージテーブル207から選択する。次に、ストレージ装置2は、選択したレコードから、アドレス2072を抽出する(S1907)。なお、抽出されたアドレス2072は、当該TPページへ書き込み要求されたデータを記憶している実ページを含む外部LU282を備える外部のストレージ装置2のIPアドレスである。
次に、ストレージ装置2は、抽出した実ページ番号2116に基づいて、LBA及び読出サイズを算出する。次に、ストレージ装置2は、抽出したアドレス2072宛てに、抽出したLUID2115、算出されたLBA及び読出サイズを含む読出要求を送信する。これによって、ストレージ装置2は、外部のストレージ装置2に、読出要求を送信する(S1908)。なお、当該読出要求は、抽出したLUID2115によって識別される外部LU282に含まれる、抽出した実ページ番号2116によって識別される実ページからのデータの読み出しを要求する。
外部のストレージ装置2は、読出要求を受信する。すると、外部のストレージ装置2は、受信した読出要求から、LUID2115、LBA及び読出サイズを抽出する。もし、抽出したLUID2115によって識別されるLUが実LU281の場合、外部のストレージ装置2は、抽出したLUID2115によって識別されるLUに含まれる、抽出したLBA及び読出サイズによって識別される記憶領域から、データを読み出す。一方、抽出したLUID2115によって識別されるLUがTPLU283の場合、外部のストレージ装置2は、抽出したLBA及び読出サイズに基づいて、読出対象のTPページのページ番号を算出する。そして、外部のストレージ装置2は、抽出したLUID2115によって識別されるLUに含まれる、算出されたページ番号によって識別されるTPページから、データを読み出す。そして、外部のストレージ装置2は、読出データを、読出要求の送信元のストレージ装置2に送信する。更に、外部のストレージ装置2は、読出完了を通知するための読出応答を、読出要求の送信元のストレージ装置2に送信する。
一方、ストレージ装置2は、読出要求を送信すると、読出データ及び読出応答を受信したか否かを判定する(S1909)。
読出データ及び読出応答のうちいずれか一方でも受信していない場合、ストレージ装置2は、読出データ及び読出応答を受信するまで待機する。そして、読出データ及び読出応答を受信すると、ストレージ装置2は、受信した読出データを、抽出したLUID2123によって識別される実LU281に含まれる、抽出した実ページ番号2124によって識別される実ページに書き込む(S1910)。これによって、ストレージ装置2は、TPページへ書き込み要求されたデータを、外部LU282に含まれる実ページから実LU281に含まれる実ページに移動する。
次に、ストレージ装置2は、マッピングテーブル211を更新する(S1911)。
具体的には、ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードのLU種別2113に、実LU281を示す情報を格納する。次に、ストレージ装置2は、当該選択したレコードのストレージID2114に格納されている値を削除する。次に、ストレージ装置2は、当該選択したレコードのLUID2115に、ステップS1906で抽出したLUID2123を格納する。次に、ストレージ装置2は、当該選択したレコードの実ページ番号2116に、ステップS1906で抽出した実ページ番号2124を格納する。
これによって、ストレージ装置2は、TPページへ書き込み要求されたデータの格納先を、外部LU282に含まれる実ページから実LU281に含まれる実ページに変更する。
次に、ストレージ装置2は、ページテーブル212を更新する(S1912)。
具体的には、ストレージ装置2は、ステップS1907で抽出したストレージID2114とページテーブル212のストレージID2122とが一致するすべてのレコードを、ページテーブル212から選択する。次に、ストレージ装置2は、ステップS1907で抽出したLUID2115とページテーブル212のLUID2123とが一致するレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、ステップS1907で抽出した実ページ番号2116とページテーブル212の実ページ番号2124とが一致するレコードを、選択したレコードの中から選択する。次に、ストレージ装置2は、選択したレコードの状態2125に、未書込を示す情報を格納する。
これによって、ストレージ装置2は、データの移動元の実ページを未書込領域とする。そして、ストレージ装置2は、ステップS1707に進む。
ストレージ装置2は、ステップS1701でマッピングテーブル211から選択したレコードのアクセス回数2118に「0」を格納する(S1707)。
次に、ストレージ装置2は、マッピングテーブル211に含まれるすべてのレコードをステップS1701において選択したか否かを判定する(S1708)。マッピングテーブル211に含まれるレコードのいずれか一つでも選択していない場合、ストレージ装置2は、ステップS1701に戻る。そして、ストレージ装置2は、選択していないレコードを、マッピングテーブル211から選択し、処理を繰り返す。
一方、マッピングテーブル211に含まれるすべてのレコードを選択した場合、ストレージ装置2は、当該ページ移動処理を終了する。
なお、マッピングテーブル211の最終アクセス時刻2117は、読出要求による最終アクセス時刻及び書込要求による最終アクセス時刻を含んでいてもよい。また、マッピングテーブル211のアクセス回数2118は、読出要求によるアクセス回数及び書込要求によるアクセス回数を含んでいてもよい。
この場合、内部アクセス間隔閾値は、読出要求用の内部アクセス間隔閾値及び書込要求用の内部アクセス間隔閾値を含む。なお、読出要求用の内部アクセス間隔閾値は、書込要求用の内部アクセス間隔閾値より大きい値に設定されると効果的である。なぜならば、ホスト計算機1は、読出要求の処理の遅延については認識するが、書込要求の処理の遅延については認識しないからである。
ストレージ装置2は、ページ移動処理のステップS1703において、読出要求による最終アクセス時刻からの経過時間が、読出要求用の内部アクセス間隔閾値より大きいかどうかを判定する。更に、ストレージ装置2は、書込要求による最終アクセス時刻からの経過時間が、書込要求用の内部アクセス間隔閾値より大きいかどうかを判定する。
そして、ストレージ装置2は、これら二つの判定結果に基づいて、ステップS1704又はステップS1801のいずれに進むかを決定する。
また、内部アクセス頻度閾値は、読出要求用の内部アクセス頻度閾値及び書込要求用の内部アクセス頻度閾値を含む。なお、読出要求用の内部アクセス頻度閾値は、書込要求用の内部アクセス頻度閾値より小さい値に設定されると効果的である。なぜならば、ホスト計算機1は、読出要求の処理の遅延については認識するが、書込要求の処理の遅延については認識しないからである。
ストレージ装置2は、ページ移動処理のステップS1704において、読出要求によるアクセス頻度が、読出要求用の内部アクセス頻度閾値より小さいかどうかを判定する。更に、ストレージ装置2は、書込要求によるアクセス頻度が、書込要求用の内部アクセス頻度閾値より小さいかどうかを判定する。
そして、ストレージ装置2は、これら二つの判定結果に基づいて、ステップS1707又はステップS1801のいずれに進むかを決定する。
また、外部アクセス間隔閾値は、読出要求用の外部アクセス間隔閾値及び書込要求用の外部アクセス間隔閾値を含む。なお、読出要求用の外部アクセス間隔閾値は、書込要求用の外部アクセス間隔閾値より大きい値に設定されると効果的である。なぜならば、ホスト計算機1は、読出要求の処理の遅延については認識するが、書込要求の処理の遅延については認識しないからである。
ストレージ装置2は、ページ移動処理のステップS1705において、読出要求による最終アクセス時刻からの経過時間が、読出要求用の外部アクセス間隔閾値より小さいかどうかを判定する。更に、ストレージ装置2は、書込要求による最終アクセス時刻からの経過時間が、書込要求用の外部アクセス間隔閾値より小さいかどうかを判定する。
そして、ストレージ装置2は、これら二つの判定結果に基づいて、ステップS1706又はステップS1901のいずれに進むかを決定する。
また、外部アクセス頻度閾値は、読出要求用の外部アクセス頻度閾値及び書込要求用の外部アクセス頻度閾値を含む。なお、読出要求用の外部アクセス頻度閾値は、書込要求用の外部アクセス頻度閾値より小さい値に設定されると効果的である。なぜならば、ホスト計算機1は、読出要求の処理の遅延については認識するが、書込要求の処理の遅延については認識しないからである。
ストレージ装置2は、ページ移動処理のステップS1706において、読出要求によるアクセス頻度が、読出要求用の外部アクセス頻度閾値より大きいかどうかを判定する。更に、ストレージ装置2は、書込要求によるアクセス頻度が、書込要求用の外部アクセス頻度閾値より大きいかどうかを判定する。
そして、ストレージ装置2は、これら二つの判定結果に基づいて、ステップS1707又はステップS1901のいずれに進むかを決定する。
以上のように、本発明の第2の実施の形態によれば、ストレージ装置2は、アクセス状況に応じて、TPLU283へ書き込みが要求されたデータの格納先を、実LU281から外部LU282に変更する。例えば、ストレージ装置2は、アクセス頻度の低いデータの格納先を、実LU281から外部LU282に変更する。
また、ストレージ装置2は、アクセス状況に応じて、TPLU283へ書き込み要求されたデータの格納先を、外部LU282から実LU281に変更する。例えば、ストレージ装置2は、アクセス頻度の高いデータの格納先を、外部LU282から実LU281に変更する。
これによって、ストレージ装置2は、ホスト計算機1へのレスポンスタイムを減少させることができる。