以下図面について、本発明の一実施の形態を詳述する。
(1)本実施の形態による計算機システムの構成
図1において、1は全体として本実施の形態による計算機システムを示す。この計算機システム1は、複数のホスト装置2、管理装置3及びストレージ装置4がネットワーク5を介して接続されることにより構成されている。
ホスト装置2は、ストレージ装置4に対してI/Oアクセス(リードアクセス又はライトアクセス)を実行するコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション又はメインフレームなどから構成される。
管理装置3は、ストレージ装置4を管理するサーバ装置であり、CPU(Central Processing Unit)、ROM(Read Only Memory)及びRAM(Random Access Memory)等の情報処理資源を備えた汎用のサーバ装置から構成される。管理装置3は、ストレージ装置4に対して各種設定を行うためのUI(User Interface)画面や各種情報を表示する表示装置と、オペレータが各種操作や各種設定入力を行うためのキーボードやマウス等の入力装置と、ネットワーク5を介してストレージ装置4と通信を行うための通信装置とを備える。入力装置を介して入力された各種指令に基づいてCPUがROM等に格納されたプログラムを実行することにより、管理装置3全体としての各種処理が実行される。
ストレージ装置4は、基本筐体10と、1又は複数の増設筐体11とから構成される。
基本筐体10は、複数の記憶ドライブ20と、これら複数の記憶ドライブ20へのデータの入出力を制御する0系及び1系の2つのコントローラ21A,21Bとを備える。
記憶ドライブ20は、例えばSAS(Serial Attached SCSI)ディスク若しくはSATA(Serial AT Attachment)ディスク等のハードディスク装置や、SSD(Solid State Drive)等の半導体メモリ等から構成される。これらの記憶ドライブ20は、0系及び1系の各コントローラ21A,21BによりRAID(Redundant Arrays of Inexpensive Disks)方式で運用される。なおコントローラ21A,21Bは1つであっても良い。
0系及び1系のコントローラ21A,21Bは、それぞれ通信インタフェース部22A,22B、データ転送制御部23A,23B、ブリッジ24A,24B、CPU(Central Processing Unit)25A,25B、ローカルメモリ26A,26B、キャッシュメモリ27A,27B、ドライブインタフェース部28A,28B及びスイッチ29A,29Bを備える。
通信インタフェース部22A,22Bは、ネットワーク5に対するインタフェースであり、ネットワーク5を介してホスト装置2との間でデータ(ライトデータ又はリードデータ)やI/Oコマンドなどを送受する。
データ転送制御部23A,23Bは、通信インタフェース部22A,22B、ブリッジ24A,24B、キャッシュメモリ27A,27B及びドライブインタフェース部28A,28B間におけるデータの転送元及び転送先を切り替える機能を有するもので、例えばPCIe(PCI(Peripheral Component Interconnect)Express)スイッチから構成される。またデータ転送制御部23A,23Bは、他系(1系又は0系)のデータ転送制御部23B,23Aとバス30を介して接続されており、このバス30を通じて他系のデータ転送制御部23B,23Aとの間でコマンドやデータを送受することができるようになされている。
ブリッジ24A,24Bは、自系のCPU25A,25B及びローカルメモリ26A,26Bをそれぞれ自系のデータ転送制御部23A,23Bに接続する中継装置であり、通信インタフェース部22A,22B、データ転送制御部23A,23B、キャッシュメモリ27A,27B及びドライブインタフェース部28A,28B間を接続するバスを流れるデータのうちの対応するデータのみを抽出してCPU25A,25Bやローカルメモリ26A,26Bに転送する。
CPU25A,25Bは、ストレージ装置4全体の動作制御を司るプロセッサであり、例えば通信インタフェース部22A,22Bを介して送受信されるデータ、コマンド又は管理情報の入出力を制御する。またローカルメモリ26A,26Bは、主として各種制御プログラムや各種制御データを保持するために用いられる。ローカルメモリ26A,26Bに保持された制御プログラムをCPU25A,25Bが実行することにより、ストレージ装置4全体として後述のような各種処理が実行される。
キャッシュメモリ27A,27Bは、主として記憶ドライブ20からリードしたデータや、記憶ドライブ20にライトするデータを一時的に記憶保持するために用いられる。
ドライブインタフェース部28A,28Bは、記憶ドライブ20に対するインタフェースである。CPU25A,25Bは、通信インタフェース部22A,22Bを介して与えられるホスト装置2からのI/Oコマンドに基づいてドライブインタフェース部28A,28Bを介して対応する記憶ドライブ20を制御することにより、ライトデータやリードデータを対応する記憶ドライブ20内の対応するアドレス位置に読み書きする。
スイッチ29A,29Bは、0系及び1系の各コントローラ21A,21Bに対して複数の記憶ドライブ20を接続するための中継器であり、例えばエクスパンダから構成される。このスイッチ29A,29Bは、スイッチ29A,29B同士で木構造のトポロジで拡張して接続することができ、これにより0系及び1系の各コントローラ21A,21Bが、複数のスイッチ29A,29Bを介して多数の記憶ドライブ20を制御することができる。
増設筐体11は、基本筐体10の0系及び1系のコントローラ21A,21B内に設けられたスイッチ29A,29Bにそれぞれ対応させて配設された複数のスイッチ31A,31Bと、複数の記憶ドライブ20とから構成される。スイッチ31A,31Bは、基本筐体10のスイッチ29A,29Bと同様のものが適用され、これらスイッチ29A,29Bとそれぞれ直接又は前段の増設筐体11内の対応するスイッチ31A,31Bを介して間接的に接続される。
図2は、ストレージ装置4における記憶領域の論理構成を示す。本計算機システム1においては、ストレージ装置4内の1又は複数の記憶ドライブ20により1つのRAIDグループRGが構成され、1又は複数のRAIDグループRGが提供する記憶領域が1つのプールPLとして管理される。RAIDグループRGが提供する記憶領域は、そのRAIDグループRGを構成する記憶ドライブ20の性能に応じて複数種類のティア(記憶階層)に分けて管理される。仮想ボリュームへ割り当てられるページ(又はブロック)単位の記憶領域を階層間で変更するデータ管理を行う動作モード(以下、これを階層モードと呼ぶ)が設定されているプールPLは、それぞれ応答性能が異なる複数のティアにより構成される。各プールPLの記憶領域は、仮想ボリュームVVOLの論理ページと同じサイズの物理ページに区分して管理される。
各プールPLには、それぞれ1又は複数の仮想ボリュームVVOLが対応付けられ、これら仮想ボリュームVVOLがホスト装置2に提供される。
各仮想ボリュームVVOLには、それぞれ固有の識別子(以下、これをボリューム番号と呼ぶ)が付与される。また各仮想ボリュームVVOL内は、論理ブロックと呼ばれる所定大きさの記憶領域を単位として管理される。さらに仮想ボリュームVVOLは、所定大きさの論理ページに区分され、これら論理ページを単位として管理される。ここで、論理ページは複数個の論理ブロックにより構成される。本実施の形態の場合、ホスト装置2から仮想ボリュームVVOLに対するデータの読み書きは、その仮想ボリュームVVOLのボリューム番号と、当該仮想ボリュームVVOL内の各論理ブロックにそれぞれ付与されるその論理ブロックに固有の番号(以下、これをLBA(Logical Block Address)と呼ぶ)とを組み合わせたものを仮想アドレスとして、当該仮想アドレスを指定して行われる。
ホスト装置2より仮想ボリュームVVOLを対象とするデータのライトコマンドを受信した場合であって、当該仮想ボリュームVVOL内の当該データのライト先として指定された仮想アドレスに記憶領域が割り当てられていない場合には、その仮想アドレスの論理ブロックが含まれる論理ページにその仮想ボリュームVVOLと対応付けられたプールPLから物理ページ単位で必要量の記憶領域が割り当てられる。そしてホスト装置2からのライトデータは、これら論理ブロックに割り当てられた物理ページに書き込まれる。
(2)本実施の形態によるリアルタイムモニタリング機能
次に、本実施の形態によるストレージ装置4に搭載されたリアルタイムモニタリング機能について説明する。
図3は、かかるリアルタイムモニタリング機能に基づいて、階層モードがオン設定されたプールPLについてストレージ装置4において実行されるリアルタイムモニタリング処理の概要を示す。
この図3に示すように、ストレージ装置4は、階層モードがオン設定されたプールPLについて、所定のモニタリング周期でホスト装置2からのI/O要求(リード要求又はライト要求)を処理するホストI/O処理(リード処理又はライト処理)ST1と、各仮想ボリュームVVOLの論理ページのうち、アクセス頻度の高い又は低い論理ページに書き込まれたデータを、対応するプールPL内の現在の物理ページから当該物理ページが属するティアよりも上位又は下位のティアに属する物理ページに移動させるページ再配置処理ST4とを実行する。
またストレージ装置4は、これらホストI/O処理ST1及びページ再配置処理ST4に加えて、論理ページに書き込まれたデータを他のティアに移動するか否かを判定する際の判定基準となる閾値(以下、これをティア閾値と呼ぶ)をプールPLごとに算出するティア閾値算出処理ST2と、各仮想ボリュームVVOLの各論理ページについて、その論理ページに格納されたデータを格納すべき最適なティアを決定するティア決定処理ST3とを、それぞれその処理について設定された所定の周期(ST1とST4とは別の周期)で実行している。
この場合、かかるティア閾値算出処理ST2の実行周期は数分周期、ティア決定処理ST3の実行周期は数秒周期であるため、数ns周期であるホストI/O処理ST1及びページ再配置処理ST4の実行周期(モニタリング周期)に比べて極めて遅い。このため、かかるティア閾値算出処理ST2及びティア決定処理ST3の実行周期と、ホストI/O処理ST1及びページ再配置処理ST4との間のタイムラグにより、移動すべきデータを即座に適切なティアの物理ページに移動できない場合がある。
またかかるタイムラグを少なくするためにティア閾値算出処理ST2及びティア決定処理ST3をホストI/O処理ST1及びページ再配置処理ST4の実行周期と同じ周期で実行することも考えられるが、このようにした場合、これらティア閾値算出処理ST2及びティア決定処理ST3に対するオーバーヘッドの増加により本来期待される応答性能が得られなくなるという問題がある。
そこで本ストレージ装置4では、階層モードがオン設定されたプールPLと対応付けられた仮想ボリュームVVOLについては、ホストI/O処理ST1時に、ホスト装置2からのI/Oアクセスのあった論理ページに書き込まれたデータを対応するプールPL内の現在の物理ページから当該物理ページよりも上位のティアに属する物理ページに移動(プールPL内の現在の物理ページから当該物理ページよりも上位のティアに属する物理ページに移動することを以下、これをプロモーションと呼ぶ)すべきか否かを判定するプロモーション判定処理を実行し、プロモーションが必要と判定した場合には、そのホストI/O処理と同期してそのデータを対応するプールPL内の適切なティアの物理ページに移動させるページ再配置処理を実行する点を特徴の1つとしている。
なお、以下においては、ストレージ装置4内のプールPLに設定されるティアは第1〜第3のティアから構成される3階層構造とし、第1のティア(Tier1)は、最も性能が高い記憶ドライブ20(例えばSSD)から構成されるRAIDグループRGが提供する記憶領域、第2のティア(Tier2)は、次に性能が高い記憶ドライブ20(例えばSASディスク)から構成されるRAIDグループRGが提供する記憶領域、第3のティア(Tier3)が最も性能が低い記憶ドライブ20(例えばNL−SAS、SATAディスク)から構成されるRAIDグループRGが提供する記憶領域であるものとして説明を進める。
上述のような本実施の形態によるリアルタイムモニタリング処理を実現するための手段として、ストレージ装置4のローカルメモリ26A,26Bには、図4に示すように、仮想ボリュームインデックステーブル40、RAIDグループインデックステーブル41、ティア管理テーブル42、プールインデックステーブル43、ページアドレステーブル44、カウンタ値管理テーブル45、ページ再配置実行管理テーブル46及びカウンタ値遷移テーブル47が格納されている。
このうち仮想ボリュームインデックステーブル40は、ストレージ装置4内に設定された仮想ボリュームVVOLを管理するためのテーブルであり、図5に示すように、ボリューム番号欄40A、総ページ数欄40B、割当て済みページ数欄40C、割当て済チャンク数欄40D、所属プール欄40E、I/O同期プロモーション欄40F、前回割当てRAIDグループ番号欄40G及び階層モード欄40Hから構成される。
そしてボリューム番号欄40Aには、ストレージ装置4内に設定された各仮想ボリュームVVOLにそれぞれ付与された識別子(以下、これをボリューム番号と呼ぶ)が格納され、総ページ数欄40Bには、対応する仮想ボリュームVVOLに設定された論理ページの総数が格納される。
また割当て済ページ数欄40Cは、第1のティア欄40CA、第2のティア欄40CB及び第3のティア欄40CCから構成され、これら第1のティア欄40CA、第2のティア欄40CB及び第3のティア欄40CC内に、対応する仮想ボリュームVVOLに対して対応するプールPL内の第1〜第3のティアに属する物理ページからそれぞれ割り当てられている物理ページの総数がそれぞれ格納される。
割当て済チャンク数欄40Dも同様に、第1のティア欄40DA、第2のティア欄40DB及び第3のティア欄40DCから構成され、これら第1のティア欄40DA、第2のティア欄40DB及び第3のティア欄40DC内に、対応する仮想ボリュームVVOLに対して対応するプールPL内の第1〜第3のティアに属する物理ページからそれぞれ割り当てられているチャンクの総数がそれぞれ格納される。ここで、チャンクとは、仮想ボリュームVVOLに割り当てるためにプールPL上で一度に確保される記憶領域の単位であり、所定個数(本実施の形態においては32個)の物理ページから構成される。チャンクの詳細については後述する。なお、SSDの記憶領域である第1のティアは物理チャンクと物理ページの大きさが同じである。
所属プール欄40Eには、対応する仮想ボリュームVVOLが対応付けられたプールPLの識別子(以下、これをプール番号と呼ぶ)が格納され、I/O同期プロモーション欄40Fには、かかるホストI/O処理ST1(図3)に同期して、I/O対象のデータをプールPL内の上位のティアの物理ページに移動(格納)するか否かを判定し、I/O対象のデータを対応するプールPL内の上位のティアの物理ページに移動(格納)する処理を実行する動作モード(以下、これをI/O同期プロモーションモードと呼ぶ)が設定されているか否かを表す情報(設定されている場合には「ON」、設定されていない場合には「OFF」)が格納される。
さらに前回割当てRAIDグループ番号欄40Gには、対応する仮想ボリュームVVOLに対して最後に物理ページを割り当てたRAIDグループRGの識別番号(以下、これをRAIDグループ番号と呼ぶ)が格納され、階層モード欄40Hには、その仮想ボリュームVVOLが対応付けられたプールPLに対して階層モードが設定されているか否かを表す情報(設定されている場合には「ON」、設定されていない場合には「OFF」)が格納される。
なお、階層モードとは、上述のように階層型データ管理技術によりデータ管理を行う動作モードを指す。この階層モードが設定されているプールPLについては、複数のティアから構成され、仮想ボリュームVVOLの各論理ページへのアクセス頻度に基づき、必要に応じて、その論理ページに書き込まれたデータがそのときその論理ページと対応付けられていた物理ページからプールPL内の上位又は下位のティアに属する物理ページに移動される。
RAIDグループインデックステーブル41は、ストレージ装置4内に定義されたRAIDグループRGを管理するために利用されるテーブルであり、図6に示すように、RAIDグループ番号欄41A、プール番号欄41B、総チャンク数欄41C、使用チャンク数欄41D、ドライブ種別及びティア欄41E、所属仮想ボリューム欄41F、チャンクサイズ欄41G及びページサイズ欄41Hから構成される。
そしてRAIDグループ番号欄41Aには、ストレージ装置4内に作成された各RAIDグループRGのRAIDグループ番号が格納され、プール番号欄41Bには、対応するRAIDグループRGが属する(構成する)プールPLのプール番号が格納される。
また総チャンク数欄41Cには、対応するRAIDグループRGが提供する記憶領域の総チャンク数が格納され、使用チャンク数欄41Dには、かかる総チャンク数のうちの既にいずれかの仮想ボリュームVVOLに割り当てられているチャンクの総数が格納される。
さらにドライブ種別及びティア欄41Eには、そのRAIDグループRGを構成する記憶ドライブ20(図1)の種別と、当該記憶ドライブ20が提供する記憶領域が属するティアの識別番号(以下、これをティア番号と呼ぶ)が格納され、所属仮想ボリューム欄41Fには、そのRAIDグループRGが提供する物理ページが割り当てられた仮想ボリュームVVOLのボリューム番号が格納される。
さらにチャンクサイズ欄41Gには、そのRAIDグループRGが提供する記憶領域におけるチャンクのサイズが格納され、ページサイズ欄41Hには、そのRAIDグループRGが提供する記憶領域における物理ページのサイズが格納される。
一方、ティア管理テーブル42は、プールPLを構成する各ティア(第1〜第3のティア)を管理するためにプールPLごとに作成されるテーブルであり、図7に示すように、ティアインデックス欄42A、プール番号欄42B、所属RAIDグループ欄42C、総容量欄42D、使用容量欄42E、新規割当て用バッファ率欄42F及び再配置用バッファ率欄42Gから構成される。
そして各プール欄42Bには、対応するプールPLのプール番号がそれぞれ格納される。またティアインデックス欄42Aには、そのプールPLを構成する各ティア(第1〜第3のティア)のティア番号が格納され、所属RAIDグループ欄42Cには、対応するティアの記憶領域を提供するすべてのRAIDグループRGのRAIDグループ番号が格納される。
さらに総容量欄42Dには、対応するティアの総容量が格納され、使用容量欄42Eには、そのティアの総容量のうち、既にいずれかの仮想ボリュームVVOLに割り当てられている容量が格納される。さらに新規割当て用バッファ率欄42Fには、そのティアに新規に物理ページを割り当てる際のバッファとして確保しておくべき記憶容量の比率(総容量に対する比率であり、以下、これを新規割当て用バッファ率と呼ぶ)が格納される。同様に、再配置用バッファ率欄42Gには、そのティア内の物理ページに格納されたデータを他のティアの物理ページに移動する処理の際バッファとして確保しておくべき記憶容量の比率(総容量に対する比率であり、以下、これを再配置用バッファ率と呼ぶ)が格納される。
プールインデックステーブル43は、ストレージ装置4内に設定されたプールPLを管理するために利用されるテーブルであり、図8に示すように、プール番号欄43A、階層モード欄43B、所属RAIDグループ欄43C、所属仮想ボリューム欄43D、実行状態欄43E、ティア閾値欄43F、プロモーションライン(以下、これをプロモーション閾値とも呼ぶ場合もある)欄43G及びデモーションライン(以下、これをデモーション閾値とも呼ぶ場合もある)欄43Hから構成される。
そしてプール番号欄43Aには、ストレージ装置4内に作成された各プールPLにそれぞれ付与された識別番号(プール番号)が格納され、階層モード欄43Bには、そのプールPLについて階層モードが設定されているか否かを表す情報(階層モードが設定されている場合には「ON」、階層モードが設定されていない場合には「OFF」)が格納される。
また所属RAIDグループ欄43Cには、対応するプールPLに所属する(そのプールPLを構成する)RAIDグループRGのRAIDグループ番号が格納され、所属仮想ボリューム欄43Dには、そのプールPLと対応付けられたすべての仮想ボリュームVVOLのボリューム番号が格納される。
さらに実行状態欄43Eには、そのプールPLに階層モードが設定されている場合において、そのプールPLと対応付けられた各仮想ボリュームVVOL内の個々の論理ページについて、I/Oアクセス数をカウントする設定がなされているか否かを表す情報(カウントする設定がなされている場合には「採取」、カウントする設定がなされていない場合には「停止」)が格納される。
ティア閾値欄43Fは、第1及び第2のティア閾値欄43FA,43FBから構成される。そして第1のティア閾値欄43FAには、対応する仮想ボリュームVVOLの論理ページに書き込まれたデータを、対応するプールPL内の第1のティアに所属する物理ページから第2のティアに所属する物理ページに移動(デモーション)し、又は、第2のティアに所属する物理ページから第1のティアに所属する物理ページに移動(プロモーション)すべきか否かを判定する際の判定基準となるティア閾値(以下、これを第1のティア閾値と呼ぶ)が格納される。
また第2のティア閾値欄43FBには、かかる仮想ボリュームVVOLの論理ページに格納されたデータを、かかるプールPL内の第2のティアに所属する物理ページから第3のティアに所属する物理ページに移動(デモーション)し、又は、第3のティアに所属する物理ページから第2のティアに所属する物理ページに移動(プロモーション)すべきか否かを判定する際の判定基準となるティア閾値(以下、これを第2のティア閾値と呼ぶ)が格納される。これら第1及び第2のティア閾値の詳細については、後述する。
プロモーションライン欄43Gは、T3−T1プロモーションライン欄43GA、T2−T1プロモーションライン欄43GB及びT3−T2プロモーションライン欄43GCから構成される。
そしてT3−T1プロモーションライン欄43GAには、対応する仮想ボリュームVVOLの論理ページに格納されたデータを、対応するプールPL内の第3のティアに所属する物理ページから第1のティアに所属する物理ページに移動(プロモーション)すべきか否かを判定する際に、上述の第1のティア閾値と併せて判定基準として利用される当該論理ページへのアクセス頻度の閾値(以下、これをT3−T1プロモーションラインと呼ぶ)が格納される。第3のティアに所属する物理ページから第1のティアに所属する物理ページへのプロモーションは、対応する仮想ボリュームVVOLの対応する論理ページへのI/Oアクセス数が第1のティア閾値より規定される移動条件(第1のティア閾値よりも大きい)と、T3−T1プロモーションラインにより規定される移動条件(T3−T1プロモーションラインよりも大きい)という双方の移動条件を満たす場合に実行される。なお、第3のティアに所属する物理ページから第1のティアに所属する物理ページへのプロモーションは、第1のティア閾値を考慮せずに、T3−T1プロモーションラインにより規定される移動条件(T3−T1プロモーションラインよりも大きい)を満たす場合に実行してもよい。
同様に、T2−T1プロモーションライン欄43GBには、かかる仮想ボリュームVVOLの論理ページに格納されたデータを、かかるプールPL内の第2のティアに所属する物理ページから第1のティアに所属する物理ページに移動(プロモーション)すべきか否かを判定する際に、上述の第1のティア閾値と併せて判定基準として利用される当該論理ページへのアクセス頻度の閾値(以下、これをT2−T1プロモーションラインと呼ぶ)が格納される。第2のティアに所属する物理ページから第1のティアに所属する物理ページへのプロモーションは、対応する仮想ボリュームVVOLの対応する論理ページへのI/Oアクセス数が第1のティア閾値より規定される移動条件(第1のティア閾値よりも大きい)と、T2−T1プロモーションラインにより規定される移動条件(T2−T1プロモーションラインよりも大きい)という双方の移動条件を満たす場合に実行される。なお、第2のティアに所属する物理ページから第1のティアに所属する物理ページへのプロモーションは、第1のティア閾値を考慮せずに、T2−T1プロモーションラインにより規定される移動条件(T2−T1プロモーションラインよりも大きい)を満たす場合に実行してもよい。
さらにT3−T2プロモーションライン欄43GCには、かかる仮想ボリュームVVOLの論理ページに格納されたデータを、かかるプール内の第3のティアに所属する物理ページから第2のティアに所属する物理ページに移動(プロモーション)すべきか否かを判定する際に、上述の第2のティア閾値と併せて判定基準として利用される当該論理ページへのアクセス頻度の閾値(以下、これをT3−T2プロモーションラインと呼ぶ)が格納される。第3のティアに所属する物理ページから第2のティアに所属する物理ページへのプロモーションは、対応する仮想ボリュームVVOLの対応する論理ページへのI/Oアクセス数が第2のティア閾値より規定される移動条件(第2のティア閾値よりも大きい)と、T3−T2プロモーションラインにより規定される移動条件(T3−T2プロモーションラインよりも大きい)という双方の移動条件を満たす場合に実行される。なお、第3のティアに所属する物理ページから第2のティアに所属する物理ページへのプロモーションは、第2のティア閾値を考慮せずに、T3−T2プロモーションラインにより規定される移動条件(T3−T2プロモーションラインよりも大きい)を満たす場合に実行してもよい。
またデモーションライン欄43Hは、T1−T2デモーションライン欄43HA、T2−T3デモーションライン欄43HB及びT1−T3デモーションライン欄43HCから構成される。
そしてT1−T2デモーションライン欄43HAには、対応する仮想ボリュームVVOLの論理ページに格納されたデータを、対応するプールPL内の第1のティアに所属する物理ページから第2のティアに所属する物理ページに移動(デモーション)すべきか否かを判定する際に、上述の第1のティア閾値と併せて判定基準として利用される当該論理ページへのアクセス頻度の閾値(以下、これをT1−T2デモーションラインと呼ぶ)が格納される。第1のティアに所属する物理ページから第2のティアに所属する物理ページへのデモーションは、対応する仮想ボリュームVVOLの対応する論理ページへのI/Oアクセス数が第1のティア閾値より規定される移動条件(第1のティア閾値よりも小さい)と、T1−T2デモーションラインにより規定される移動条件(T1−T2デモーションラインよりも大きい)という双方の移動条件を満たす場合に実行される。つまり、I/Oアクセス数が第1のティア閾値より小さく、かつT1−T2デモーションラインより大きい場合に第1のティアに所属する物理ページから第2のティアに所属する物理ページへデモーションが実行される。
同様に、T2−T3デモーションライン欄43HBには、かかる仮想ボリュームVVOLの論理ページに格納されたデータを、かかるプールPL内の第2のティアに所属する物理ページから第3のティアに所属する物理ページに移動(デモーション)すべきか否かを判定する際に、上述の第2のティア閾値と併せて判定基準として利用される当該論理ページへのアクセス頻度の閾値(以下、これをT2−T3デモーションラインと呼ぶ)が格納される。第2のティアに所属する物理ページから第3のティアに所属する物理ページへの移動は、対応する仮想ボリュームVVOLの対応する論理ページへのI/Oアクセス数が第2のティア閾値より規定される移動条件(第2のティア閾値よりも小さい)と、T2−T3デモーションラインにより規定される移動条件(T2−T3デモーションラインよりも大きい)という双方の移動条件を満たす場合に実行される。つまり、I/Oアクセス数が第2のティア閾値より小さく、かつT2−T3デモーションラインより大きい場合に第2のティアに所属する物理ページから第3のティアに所属する物理ページへデモーションが実行される。
さらにT1−T3デモーションライン欄43HCには、かかる仮想ボリュームVVOLの論理ページに格納されたデータを、かかるプールPL内の第1のティアに所属する物理ページから第3のティアに所属する物理ページに再配置(デモーション)すべきか否かを判定する際に、上述の第2のティア閾値と併せて判定基準として利用される当該論理ページへのアクセス頻度の閾値(以下、これをT1−T3プロモーションラインと呼ぶ)が格納される。第1のティアに所属する物理ページから第3のティアに所属する物理ページへのデモーションは、対応する仮想ボリュームVVOLの対応する論理ページへのI/Oアクセス数が第2のティア閾値より規定される移動条件(第2のティア閾値よりも小さい)と、T1−T3デモーションラインにより規定される移動条件(T1−T3デモーションラインよりも大きい)という双方の移動条件を満たす場合に実行される。つまり、I/Oアクセス数が第2のティア閾値より小さく、かつT1−T3デモーションラインより大きい場合に第1のティアに所属する物理ページから第3のティアに所属する物理ページへデモーションが実行される。
ページアドレステーブル44は、物理ページの仮想ボリュームの論理ページへの割り当て状態を示すテーブルである。このページアドレステーブル44は、図9に示すように、ページ番号欄44A、RAIDグループ番号欄44B、ページ状態欄44C、ボリューム番号欄44D、再配置状態欄44E、前方キューポインタ又は仮想アドレス欄44F及び後方キューポインタ欄44Gから構成される。
そしてページ番号欄44Aには、対応するチャンクを構成する各物理ページに対してそれぞれ付与された識別番号(以下、これをページ番号と呼ぶ)が格納される。なお、このページ番号は、ストレージ装置4内においてその物理ページに固有のものであり、ストレージ装置4内のすべての物理ページに対してそれぞれ異なるページ番号が付与される。
RAIDグループ番号欄44Bには、対応する物理ページを提供するRAIDグループRGのRAIDグループ番号が格納される。
ページ状態欄44Cには、その物理ページが既にいずれかの仮想ボリュームVVOLの論理ページに割り当てられているか否かを表す情報(割り当てられている場合には「割当て済」、割り当てられていない場合には「未割当て」)が格納される。
ボリューム番号欄44Dには、対応するページ番号の物理ページが割り当てられた仮想ボリュームVVOLのボリューム番号が格納される。従って、未割り当ての物理ページには、仮想ボリュームVVOLのボリューム番号が格納されていない。
再配置状態欄44Eには、その物理ページに格納されたデータを他の物理ページに移動するページ再配置処理の実行状態が格納される。なお、「ページ再配置処理の実行状態」としては、ページ再配置処理を実行中であることを表す「移動中」と、ページ再配置処理を実行することが決まっているが、まだページ再配置処理を実行していない「待機中」などがある。
さらに前方キューポインタ又は仮想アドレス欄44Vには、対応する物理ページがいずれかの仮想ボリュームVVOLに割り当てられている場合には、その仮想ボリュームVVOLにおけるその物理ページが割り当てられている仮想アドレスが格納され、対応する物理ページがいずれの仮想ボリュームVVOLにも割り当てられていない場合には、未割当ての物理ページを管理するキュー内におけるその物理ページの直前に格納されている物理ページのページ番号が格納される。
さらに後方キューポインタ欄44Gには、上述した未割当ての物理ページを管理するキュー内におけるその物理ページの直後に格納されている物理ページのページ番号が格納される。
他方、カウンタ値管理テーブル45は、ストレージ装置4内に定義された各仮想ボリュームVVOL内の個々の論理ページに対するI/Oアクセス数を管理するために利用されるテーブルであり、図10に示すように、ページアドレス欄45A及びカウンタ値欄45Bから構成される。
そしてページアドレス欄45Aには、各論理ページにそれぞれ付与されたその論理ページの識別情報(ページアドレス)が格納され、カウンタ値欄45Bには、対応する論理ページへのI/Oアクセス数の疑似的なカウンタ値が格納される。このカウンタ値は、「0」〜「255」の範囲の値に制限されており、大きくなるほどI/Oアクセス数に応じてカウントアップする確率が減少する。このカウンタ値の詳細については、後述する。
またページ再配置実行管理テーブル46は、ページ再配置処理の実行状態を管理するために利用されるテーブルであり、図11に示すように、ボリューム番号欄46A、移動元ページ欄46B、移動先ページ欄46C、実行状態欄46D及び移動先ティア欄46Eから構成される。
そしてボリューム番号欄46Aには、ページ再配置処理の対象となっている論理ページのページ番号が格納される。また移動元ページ欄46Bには、その論理ページのデータが現在格納されている物理ページ(以下、これを移動元ページと呼ぶ)のページ番号が格納され、移動先ページ欄46Cには、そのデータの移動先の物理ページ(以下、これを移動先ページと呼ぶ)のページ番号が格納される。
さらに実行状態欄46Dには、ページアドレステーブル44(図9)内の対応する再配置状態欄44Eに格納されている情報と同じ情報が格納される。さらに移動先ティア欄46Eには、かかる移動先ページが属するティアのティア番号が格納される。
カウンタ値遷移テーブル47は、カウンタ値管理テーブル45(図10)のカウンタ値欄45Bに格納されたカウンタ値を1つ増加させる際のカウントアップ確率を管理するためのテーブルであり、図12に示すように、カウンタ値欄47A及びカウントアップ確率欄47Bから構成される。
そしてカウンタ値欄47Aには、カウンタ値管理テーブル45のカウンタ値欄45Bに格納されたカウンタ値のとり得る範囲内の各カウンタ値(「0」〜「255」)がそれぞれ格納され、カウントアップ確率欄47Bには、対応するカウンタ値の値を「1」増加させる際の確率(以下、これをカウントアップ確率と呼ぶ)が格納される。
なお、上述した仮想ボリュームインデックステーブル40、RAIDグループインデックステーブル41、ティア管理テーブル42、プールインデックステーブル43、ページアドレステーブル44及びカウンタ値管理テーブル45を含む各種テーブル相互間の関係を図13に示す。
図中「Vaddr Index」は、対応する仮想ボリュームVVOL内の各論理ブロックの仮想アドレスが昇順に格納された仮想アドレスインデックステーブル(詳細は図示せず)を表す。また「Vaddr Block」は、対応する論理ブロックを構成する各論理ページのページアドレスが格納された論理ブロック管理テーブル(詳細は図示せず)を表す。さらに「Chunk Index」は、チャンク用のマッピングテーブル(詳細は図示せず)を表す。
(3)本実施の形態によるリアルタイムモニタリング機能に関する各種処理
次に、かかる本実施の形態によるリアルタイムモニタリング機能に関連してストレージ装置4の0系又は1系のコントローラ21A,21B(図1)内のCPU25A,25B(図1)により実行される各種処理の具体的な処理内容について説明する。なお、以下の各種処理は、ローカルメモリ26A,26B(図1)に格納された図示しない制御プログラムに従って実行されることは言うまでもない。
(3−1)ホストI/O処理ST1
(3−1−1)リード処理
(3−1−1−1)リード処理
図14は、ホスト装置2からのリードコマンドを受領したストレージ装置4のCPU25A,25Bにより、図3のホストI/O処理ST1において実行されるリード処理の処理手順を示す。
CPU25A,25Bは、リードコマンドを受領すると、図3のホストI/O処理ST1において、この図14に示す処理手順に従って、リードコマンドにおいてリード先として指定された仮想ボリュームVVOL内の当該リードコマンドにおいてリード先として指定された論理ページからデータを読み出して当該リードコマンドの送信元のホスト装置2に転送する。
またCPU25A,25Bは、この際、I/O同期プロモーションモードがオン設定されている場合には、そのデータを対応するプールPL内の当該データが現在格納されている物理ページが属するティアよりも上位のティアに属する物理ページに移動させるか否かを判定し、必要に応じて対応するプールPL内の当該データが現在格納されている物理ページが属するティアよりも上位のティアに属する物理ページに移動させるページ再配置処理を実行する。
実際上、CPU25A,25Bは、かかるリードコマンドを受領するとこのリード処理を開始し、まず、受領したリードコマンドに応じたリード処理を実行するためのジョブ(以下、これをリードジョブと呼ぶ)を生成する(SP1)。
続いて、CPU25A,25Bは、生成したリードジョブを実行し、リード対象のデータがキャッシュメモリ27A,27B(図1)上に存在するか否かを判断する(SP2)。そしてCPU25A,25Bは、この判断で肯定結果を得ると、ステップSP9に進む。つまり、キャッシュヒットした場合には、I/O処理と同期して、カウント処理、プロモーション判定処理、ページ再配置処理、などは実行しない。
これに対してCPU25A,25Bは、ステップSP2の判断で否定結果を得ると、図10について上述したカウンタ値管理テーブル45内のそのデータが格納された論理ページに対応するカウンタ値欄45B(図10)に格納されたカウンタ値を更新するカウント処理を実行する(SP3)。なお、後述するようにカウンタ値処理では、カウンタ値が更新された場合にティア閾値とプロモーション・デモーションラインとを再計算する。この後、図5について上述した仮想ボリュームインデックステーブル40内の対応するI/O同期プロモーション欄40Fを参照して、リードコマンドにおいてリード先として指定されている仮想ボリュームVVOLに対してI/O同期プロモーションモードがオン設定されているか否かを判断する(SP4)。
CPU25A,25Bは、この判断で否定結果を得ると、データ転送制御部23A,23B(図1)、ドライブインタフェース部28A,28B(図1)等を制御することにより、リード対象のデータを記憶ドライブ20(図1)からキャッシュメモリ27A,27B(図1)に読み出させ(SP8)、この後ステップSP9に進む。
これに対してCPU25A,25Bは、ステップSP4の判断で肯定結果を得ると、カウンタ値管理テーブル45(図10)を参照して、リードコマンドにおいてリード対象として指定されたデータをプロモーションする必要があるか否かを判定するプロモーション判定処理を実行する(SP5)。
続いて、CPU25A,25Bは、ステップSP5で実行したプロモーション判定処理の処理結果に基づいて、リード対象のデータについて、プロモーションが必要か否かを判断する(SP6)。この判断は、図16について後述するプロモーション判定処理の返却値が「実行要」及び「実行不要」のうちの「実行要」であったか否かを判断することにより行われる。この返却値の詳細については、後述する。そしてCPU25A,25Bは、この判断で否定結果を得ると、リード対象のデータをキャッシュメモリ27A,27Bに読み出させ(SP8)、この後、ステップSP9に進む。
これに対してCPU25A,25Bは、ステップSP7の判断で肯定結果を得ると、リード対象のデータを、対応するプールPL内の対応する物理ページから上位のティアに属する物理ページに移動させるページ再配置処理を実行する(SP7)。そしてCPU25A,25Bは、この後、ステップSP9に進む。
そしてCPU25A,25Bは、ステップSP9に進むと、キャッシュメモリ27A,27Bに格納されたリード対象のデータをリードコマンドの送信元のホスト装置2に転送するためのDMA(Direct Memory Access)転送リストを設定し(SP9)、作成したDMA転送リストをデータ転送制御部23A,23B(図1)に送信する(SP10)。この結果、このDMA転送リストに従って、データ転送制御部23A,23Bによりリード対象のデータがキャッシュメモリ27A,27Bから読み出されてリードコマンドの送信元のホスト装置2に転送されることになる。
そしてCPU25A,25Bは、上述のようなリード対象のデータの転送が完了すると、その旨のステータスをかかるホスト装置2に送信し(SP11)、この後、ステップSP1において作成したリードジョブを削除した後(SP12)、このリード処理を終了する。
(3−1−1−2)カウント処理
図15は、かかるリード処理のステップSP3においてCPU25A,25Bにより実行されるカウント処理の具体的な処理手順を示す。
CPU25A,25Bは、リード処理のステップSP3に進むと、この図15に示すカウント処理を開始し、まず、仮想ボリュームインデックステーブル40(図5)を参照して、リードコマンドにおいてリード先として指定された仮想ボリュームVVOLと対応付けられたプールPLに対して階層モードがオン設定されているか否かを判断する(SP20)。そしてCPU25A,25Bは、この判断で否定結果を得るとこのカウント処理を終了してリード処理に戻る。
これに対してCPU25A,25Bは、ステップSP20の判断で肯定結果を得ると、カウンタ値管理テーブル45(図10)からリード対象のデータが格納されている論理ページのカウンタ値を取得する(SP21)。
続いて、CPU25A,25Bは、かかるカウンタ値の変更に必要な疑似乱数を更新する(SP22)。具体的に、CPU25A,25Bは、かかる疑似乱数をプールPL単位でグローバル変数として管理している。そしてCPU25A,25Bは、更新前の疑似乱数に単純に「100」を加算することによって疑似乱数を更新する。これにより1つの論理ページに関しては、順次更新される疑似乱数が結果的に乱数となる。
次いで、CPU25A,25Bは、カウンタ値遷移テーブル47(図12)を参照して、ステップSP21において取得したカウンタ値について予め設定されたカウントアップ確率を取得し、ステップSP22において更新した疑似乱数をそのカウントアップ確率で除算したときの余りの値が「100」よりも小さいか否かを判断する(SP23)。そしてCPU25A,25Bは、この判断で否定結果を得ると、このカウント処理を終了してリード処理に戻る。
これに対してCPU25A,25Bは、ステップSP23の判断で肯定結果を得ると、ステップSP21において取得したカウンタ値を1つ増加するようカウンタ値管理テーブル45(図10)を更新する(SP24)。そしてCPU25A,25Bは、この後、図31について後述する度数分布図を変更し、さらに後述するティア閾値(第1及び第2のティア閾値)及びプロモーションライン・デモーションラインを更新した後(SP25)、このカウント処理を終了してリード処理に戻る。
(3−1−1−3)プロモーション判定処理
図16は、リード処理(図14)のステップSP5においてCPU25A,25Bにより実行されるプロモーション判定処理の具体的な処理手順を示す。CPUは25A,25B、この図16に示す処理手順に従って、リード対象のデータをプロモーションすべきか否かを判定する。従って、I/O処理と同期させて実行される処理においては、リード対象のデータのみを判定対象とし、その他のデータについては判定対象としない。
すなわちCPU25A,25Bは、リード処理のステップSP5に進むと、このプロモーション判定処理を開始し、まず、プロモーション先のティアを現在のティアよりも1つ上位のティアとし(SP30)、この後、上述したカウント処理(図15)のステップSP21において取得したカウンタ値が、現在のティアからステップSP30においてプロモーション先としたティアにデータを再配置するためのティア閾値(第1又は第2のティア閾値)よりも大きいか否かを判断する(SP31)。そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP39に進む。なお、SP31のカウント値とティア閾値との比較は省略することも可能である。
これに対してCPU25A,25Bは、ステップSP31の判断で肯定結果を得ると、カウント処理(図15)のステップSP21において取得したカウンタ値が、現在のティアからステップSP30においてプロモーション先としたティアにプロモーションするための閾値である対応するプロモーションラインよりも大きいか否かを判断する(SP32)。
CPU25A,25Bは、この判断で否定結果を得ると、リード対象のデータをプロモーション可能であるかの判定を最上位のティアまで行ったか否かを判断する(SP33)。そしてCPU25A,25Bは、この判断で否定結果を得ると、プロモーション先を1つ上位のティアに設定した後にステップSP31に戻り、この後、ステップSP31以降を上述と同様に処理する。
なお、これ以降の処理では、ステップSP31において上述のカウンタ値と比較する対象として、現在のティアから直前のステップSP34においてプロモーション先としたティアにデータをプロモーションするためのティア閾値が用いられ、ステップSP32において上述のカウンタ値と比較する対象として、現在のティアから直前のステップSP34においてプロモーション先としたティアにデータをプロモーションするためのプロモーションラインが用いられる。また、本実施例では、リード対象のデータの現在の記憶階層より1つ上の記憶階層から最上位階層の記憶領域まで、SP31及びSP32の判断処理を実施するが、逆に、最上位階層の記憶領域から現在の記憶階層より1つ上の記憶階層まで、SP31及びSP32の判断処理を実施してもよい。
これに対してCPU25A,25Bは、ステップSP33の判断で肯定結果を得ると(このことは最上位のティアまで判定したが、リード対象のデータが格納された論理ページのアクセス頻度がプロモーションすべきアクセス頻度でなかったことを意味する)、プロモーションを実行する必要がないことを意味する「実行不要」を返却値に設定し(SP39)、この後、このプロモーション判定処理を終了してリード処理(図14)に戻る。かくして、この場合には、この後実行されるリード処理(図14)のステップSP6において否定結果が得られることになる。
一方、CPU25A,25Bは、ステップSP32の判断で肯定結果を得ると、ティア管理テーブル42(図7)を参照して、ステップSP30又は最後に実行したステップSP34においてプロモーション先として設定したティアに、リード対象のデータをプロモーションするだけの空き容量(例えばそのティアの総容量の1%以上)があるか否かを判断する(SP35)。
CPU25A,25Bは、この判断で肯定結果を得ると、プロモーションを実行すべきことを意味する「実行要」を返却値に設定し(SP38)、この後、このプロモーション判定処理を終了してリード処理に戻る。かくして、この場合には、この後実行されるリード処理(図14)のステップSP6において肯定結果が得られることになる。
これに対してCPU25A,25Bは、ステップSP35の判断で否定結果を得ると、仮想ボリュームインデックステーブル40(図5)を参照して、リードコマンドにおいてデータのリード先として指定された仮想ボリュームVVOLについて、I/O同期プロモーションモードが設定されているか否かを判断する(SP36)。
そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP39に進む。
これに対してCPU25A,25Bは、ステップSP36の判断で肯定結果を得ると、ステップSP30又は最後に実行したステップSP34においてプロモーション先として設定したティアに格納されているデータのうち、下位のティアに移動可能なデータをデモーションする緊急デモーション処理を実行する(SP37)。そしてCPU25A,25Bは、この後、ステップSP38に進んで当該ステップSP38を上述のように処理した後、このプロモーション判定処理を終了してリード処理に戻る。
ここで、上述のプロモーション判定処理(図16)のステップSP37において実行される緊急デモーション処理の詳細について説明する。
緊急デモーション処理は、そのとき対象としているデータ(上述の例ではリード対象のデータ)をプロモーションしたいが、プロモーション先のティアに当該データをプロモーションするだけの空き容量がない場合に、当該プロモーション先のティアの空き容量を増やすために実行される処理である。
そのための手段として、ストレージ装置4は、ティアごと(第1〜第3のティアごと)の例えば図17に示すようなLIFO(Last In Fast Out)50を保持している。なお、FIFO(Fast In Fast Out)ではなく、LIFOとした理由は、後述のようにティア閾値は逐次更新されるものであるため、最近判定されたデータの方がティア閾値の変動が少なく、デモーションできる可能性が高いという考え方である。
かかるLIFO50には、図44について後述するデモーション判定処理のステップSP153において、対応する仮想ボリュームVVOL内の論理ページのうち、ティア閾値の見地からはデモーション対象となるが、後述するデモーションラインの見地からはデモーション対象とはならないデータが格納された論理ページが登録される。
そしてプロモーション判定処理(図16)のステップSP35において、プロモーション先のティアに空き容量がないと判定された場合に、そのプロモーション先のティアと対応付けられたLIFO50の各エントリを最近登録されたものから順番に所定のエントリ数分だけ、そのエントリに対応する論理ページがデモーション対象となり得るか否かを判定する。そしてデモーション対象となり得る論理ページがあった場合には、その論理ページに格納されたデータを下位のティアにデモーションする。なお、この場合におけるエントリの最大チェック数は、チューニングにより変更できるようにしておく。
上述のティアごとのLIFO50は、ストレージ装置4における0系及び1系のコントローラ21A,21B(図1)のローカルメモリ26A,26B(図1)において保持する。これらのLIFO50は、各コアで占有して使用するため、ロックは不要である。LIFO50の各エントリには、対応する論理ページが割り当てられた仮想ボリュームVVOLのボリューム番号と、その論理ページに割り当てられた物理ページのページオフセット番号とが格納される(合計8〔Byte〕)。またLIFO50は、循環スタック構造として、LIFO50ごとにインデックスポインタを保持する。
図18は、かかる緊急デモーション処理の具体的な処理内容を示す。CPU25A,25Bは、プロモーション判定処理(図16)のステップSP37に進むと、この図18に示す緊急デモーション処理を開始し、まず、対応するLIFO50から当該LIFO50に登録された論理ページのうちの対象とする(この段階では最後に登録された論理ページ)を選択し、その論理ページに関する登録情報(ボリューム番号及びページオフセット番号等)を取得する(SP40)。
続いてCPU25A,25Bは、ステップSP40において選択した論理ページ(以下、これを対象論理ページと呼ぶ)のカウンタ値をカウンタ値管理テーブル45(図10)から取得し、取得したカウンタ値が、対象論理ページに割り当てられている物理ページが属するティアからデモーション先として設定されたティア(この段階では対象論理ページに割り当てられている物理ページが属するティアよりも1つ下位のティア)へのデモーションに対するティア閾値(第1又は第2のティア閾値)よりも小さいか否かを判断する(SP41)。
CPU25A,25Bは、この判断で否定結果を得ると、デモーション先のティアとして最下位のティアまで判断し終えたか否かを判断する(SP43)。そしてCPU25A,25Bは、この判断で否定結果を得ると、デモーション先をそれまでデモーション先として設定されていたティアよりも1つ下位のティアに設定し直し(SP44)、この後、ステップSP41以降を同様に処理する。
またCPU25A,25Bは、ステップSP41の判断で肯定結果を得ると、ティア管理テーブル42(図7)を参照して、デモーション先に空き容量があるか否かを判断する(SP42)。そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP43に進み、この後、ステップSP43以降を上述と同様に処理する。
これに対してCPU25A,25Bは、ステップSP42において肯定結果を得ると(このことは、対象論理ページのカウンタ値がデモーション先のティアのティア閾値よりも小さく、かつ、デモーション先のティアに空き容量があることを意味する)、対象論理ページに格納されているデータを、当該データのデモーション先として設定されたティアに移動させるページ再配置処理を実行する(SP45)。
続いてCPU25A,25Bは、対応するLIFO50に登録されたすべての論理ページについてステップSP40〜ステップSP45の処理を実行し終えたか否かを判断する(SP46)。そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP40に戻り、この後、ステップSP40において選択する対象論理ページを、直前のステップSP40〜ステップSP45の処理で対象論理ページとした論理ページよりも1つ前にLIFO50に登録された論理ページに順次切り替えながら、ステップSP40以降の処理を上述と同様に処理する。
そしてCPU25A,25Bは、やがてLIFO50に登録されたすべての論理ページについてステップSP40〜ステップSP45の処理を実行し終えることによりステップSP46において肯定結果を得ると、この緊急デモーション処理を終了する。
(3−1−1−4)ページ再配置処理
図19は、リード処理(図14)のステップSP7においてCPU25A,25Bにより実行されるページ再配置処理の具体的な処理手順を示す。CPU25A,25Bは、この図19に示す処理手順に従って、リード処理のステップSP5においてプロモーション対象として判定されたリード対象のデータを上位のティアに移動(プロモーション)する。
実際上、CPU25A,25Bは、リード処理のステップSP7に進むと、このページ再配置処理を開始し、まず、ティア管理テーブル42(図7)を参照して、そのとき対象としているデータ(ここではリード処理のステップSP5のプロモーション判定処理(図16)において決定したリード対象のデータであり、以下、これを対象データと呼ぶ)の移動先のティアに記憶領域を提供するRAIDグループRGの中から、かかる対象データの移動先とするRAIDグループ(以下、これを移動先RAIDグループと呼ぶ)RGを例えばラウンドロビン方式により1つ決定する(SP50)。
続いて、CPU25A,25Bは、ページアドレステーブル44(図9)を参照して、ステップSP50において決定したRAIDグループRGが提供する物理ページの中から対象データの移動先となる物理ページを決定し、予約する(SP51)。
次いで、CPU25A,25Bは、対象データをステップSP51において決定した物理ページに移動するためのジョブ(コピージョブ)を生成すると共に、かかる対象データの移動に関する必要な情報をページ再配置実行管理テーブル46(図11)に登録する(SP52)。
この後、CPU25A,25Bは、対象データがキャッシュメモリ27A,27B(図1)に保持されていないか否か(キャッシュミスか否か)を判断する(SP53)。
この場合、リード処理のステップSP7において実行されるページ再配置処理では、図14からも明らかなように、必ずこのステップSP53において肯定結果を得ることになる(リード処理のステップSP2参照)。かくして、このときCPU25A,25Bは、対象データをキャッシュメモリ27A,27Bに読み出す(ステージングする)ようデータ転送制御部23A,23B(図1)及びドライブインタフェース部28A,28B(図1)に指示を与える(SP54)。
そして、かかる指示を受けたドライブインタフェース部28A,28Bは、対象データを対応する記憶ドライブ20(図1)から読み出し、読み出した対象データをデータ転送制御部23A,23Bに転送する。またこの対象データを受信したデータ転送制御部23A,23Bは、当該対象データに付加されている保証コードを再配置先の記憶領域に応じたものに付け替えた後、図20に示すように、その対象データをキャッシュメモリ27A,27B内の再配置先のティアと対応付けられたライト用の記憶領域(以下、これをライト面側記憶領域と呼ぶ)27Cに書き込む(図20の矢印a1)。なお、保証コードとして、例えば、再配置先の記憶領域の論理アドレスなどがあげられる。
続いて、CPU25A,25Bは、ステップSP54においてキャッシュメモリ27A,27Bに読み出された対象データを、キャッシュメモリ27A,27B内の対応するライト面側記憶領域27Cから当該キャッシュメモリ27A,27B内の再配置先のティアと対応付けられたリード用の記憶領域(以下、これをリード面側記憶領域と呼ぶ)27Dにコピーするようデータ転送制御部23A,23Bに指示を与える(SP55)。かくして、かかる指示を受けたデータ転送制御部23A,23Bは、キャッシュメモリ27A,27B内のかかるライト面側記憶領域27Cにステージングされた対象データを、キャッシュメモリ27A,27B内の移動先のティアと対応付けられたリード面側記憶領域27Dにコピーする(図20の矢印a2)。そしてCPU25A,25Bは、この後ステップSP57に進む。
これに対して、後述するライト処理のステップSP81において実行されるページ再配置処理では、必ずこのステップSP53において否定結果を得ることになる(ライト処理のステップSP75参照)。つまり、ライト処理と同期して実行される再配置処理では、キャッシュメモリに格納されているライトデータを用いて、移行先のティアの記憶領域に格納される。CPU25A,25Bは、ステップSP53の判断で否定結果を得ると、キャッシュメモリ27A,27Bに保持されている対象データを、キャッシュメモリ27A,27B内の当該対象データが格納されているティアと対応付けられたライト面側記憶領域27Cから、キャッシュメモリ27A,27B内の移動先のティアと対応付けられたリード面側記憶領域27Dにコピーするようデータ転送制御部23A,23Bに指示を与える(SP56)。
かくして、かかる指示を受けたデータ転送制御部23A,23Bは、図21に示すように、キャッシュメモリ27A,27B内の対象データが格納されているティアと対応付けられたライト面側記憶領域27Cから、キャッシュメモリ27A,27B内の移動元のティアと対応付けられたリード面側記憶領域27Dに対象データをコピーする(図21の矢印4)。またデータ転送制御部23A,23Bは、かかるリード面側記憶領域27Dにコピーした対象データを、当該対象データに付加された保証コードを移動先の記憶領域に応じた保証コードに付け替えながら、キャッシュメモリ27A,27B内の移動先のティアと対応付けられたライト面側記憶領域27Cにコピーする(図21の矢印a5)。さらにデータ転送制御部23A,23Bは、かかる対象データを、移動先のティアと対応付けられたライト面側記憶領域27Cから、キャッシュメモリ27A,27B内の移動先のティアと対応付けられたリード面側記憶領域27Dにコピーする(図21の矢印a6)。
続いて、CPU25A,25Bは、対象データを、すべてキャッシュメモリ27A,27B内の移動先のティアと対応付けられたリード面側記憶領域27Dにコピーし終えたか否かを判断する(SP57)。そしてCPU25A,25Bは、この判断で否定結果を得ると、ステップSP53に戻り、この後、ステップSP53〜ステップSP57の処理を繰り返す。
そしてCPU25A,25Bは、やがて対象データをすべてキャッシュメモリ27A,27B内の移動先のティアと対応付けられたリード面側記憶領域27Dにコピーし終えることによりステップSP57で肯定結果を得ると、当該リード面側記憶領域27Dに格納されている対象データを対応する記憶ドライブ20(図1)に書き込む(デステージ)ようデータ転送制御部23A,23B及びドライブインタフェース部28A,28B(図1)に指示を与える(SP58)。
かくして、この指示を受領したデータ転送制御部23A,23Bは、図20及び図21に示すように、キャッシュメモリ27A,27B内の移動先のティアと対応付けられたリード面側記憶領域27Dから対象データを読み出し、これをドライブインタフェース部28A,28Bに転送する。またドライブインタフェース部28A,28Bは、データ転送制御部23A,23Bから与えられる対象データを対応する記憶ドライブ20に送信し、当該対象データをステップSP51において決定された移動先の物理ページに書き込む(図20の矢印a3、図21の矢印a7)。
続いてCPU25A,25Bは、ホスト装置2からみて上述の対象データが格納されていた仮想ボリュームVVOL内の論理ページのマッピング先を移動先の物理ページに切り替えるようページアドレステーブル44(図9)を更新する(SP59)。具体的に、CPU25A,25Bは、図22に示すように、ページアドレステーブル44上のかかる仮想ボリュームVVOLにおけるかかる論理ページの対応先(マッピング先)を、対象データの移動元の物理ページから移動先の物理ページに変更する。
次いで、CPU25A,25Bは、対象データの移動元の物理ページをフォーマットするフォーマット処理を実行し(SP60)、この後、このページ再配置処理を終了する。
(3−1−2)ライト処理
(3−1−2−1)ライト処理
図23は、ホスト装置2からのライトコマンドを受領したストレージ装置4のCPU25A,25Bにより、図3のホストI/O処理ST1において実行されるライト処理の処理手順を示す。
CPU25A,25Bは、ライトコマンドを受領すると、図3のホストI/O処理ST1において、この図23に示す処理手順に従って、当該ライトコマンドと共に転送されるライト対象のデータを、ライトコマンドにおいて指定された仮想ボリュームVVOL内の当該ライトコマンドにおいて指定された論理ページに書き込む。またCPU25A,25Bは、この際、かかる仮想ボリュームVVOLにI/O同期プロモーションモードがオン設定されている場合には、そのデータを必要に応じて上位のティアに移動させるページ再配置処理を実行する。
実際上、CPU25A,25Bは、ホスト装置2からのライトコマンドを受領するとこのライト処理を開始し、CPU25A,25Bは、ページアドレステーブル44(図9)を参照して、ライトコマンドにおいてライト先として指定された仮想ボリュームVVOL内の当該ライトコマンドにおいてライト先として指定された論理ページに対して既に物理ページが割り当てられているか否かを判断する(SP70)。そしてCPU25A,25Bは、この判断で肯定結果を得るとステップSP74に進む。
これに対して、CPU25A,25Bは、SP70で否定結果を得ると、受領したライトコマンドにおいてライト先として指定された仮想ボリュームVVOLに対して未使用の物理ページを有するチャンクが割り当てられているか否かを判断する(SP71)。ここで、該チャンクは、論理ページに最初に割り当てる物理ページを含むチャンクであって、本実施例では第2のティアに属するチャンクである。そしてCPU25A,25Bは、この判断で肯定結果を得るとステップSP73に進む。
これに対し、CPU25A,25Bは、SP71で否定結果を得ると、ライトコマンドにおいてライト先として指定された仮想ボリュームVVOLにチャンクを割り当てるチャンク割当て処理を実行する(SP72)。
次に、CPU25A,25Bは、ライトコマンドにおいてライト先として指定された仮想ボリュームVVOL内の当該ライトコマンドにおいてライト先として指定された論理ページに対して、使用中のチャンク又はSP71で割り当てられたチャンク内で未割り当ての物理ページを割り当てるページ割当て処理を実行する(SP73)。CPU25A,25Bは、以上の割り当て処理を実施してSP74に進む。
続いて、CPU25A,25Bは、ライト対象のデータを書き込むべきキャッシュメモリ27A,27B(図1)上の記憶領域を指定したDMA転送リストを作成し、作成したDMA転送リストをデータ転送制御部23A,23Bに送信する(SP74)。
次いで、CPU25A,25Bは、かかるライトコマンドを転送してきたホスト装置2に対してライト対象のデータの転送開始を要求する(SP75)。かくして、この結果として当該ホスト装置2から転送されてきたライト対象のデータがデータ転送制御部23A,23Bにより、キャッシュメモリ27A,27B内の上述のDMA転送リストにおいて指定されたアドレス位置に格納される。
そしてCPU25A,25Bは、やがてライト対象のデータをすべてキャッシュメモリ27A,27Bに格納し終えると、ライト処理が完了した旨のステータスをライトコマンドの送信元のホスト装置2に送信し(SP76)、この後、図15について上述したカウント処理を実行する(SP77)。
続いてCPU25A,25Bは、仮想ボリュームインデックステーブル40(図5)を参照して、ライトコマンドにおいてライト先として指定された仮想ボリュームVVOLについて、I/O同期プロモーションモードがオン設定されているか否かを判断する(SP78)。
そしてCPU25A,25Bは、この判断で否定結果を得ると、そのとき受信したライト対象のデータをライトコマンドにおいて指定された仮想ボリュームVVOL内の当該ライトコマンドにおいて指定された論理ページに割り当てられた物理ページを提供する記憶ドライブ20(図1)に書き込むデステージ処理を実行した後(SP82)、このライト処理を終了する。なお、ステップSP82のデステージ処理は、このタイミングで実行する必要はなく、このライト処理と非同期に実行するようにしても良い。
これに対してCPU25A,25Bは、ステップSP78の判断で肯定結果を得ると、図14について上述したリード処理のステップSP5〜ステップSP7と同様にステップSP79〜ステップSP81を処理する。この結果、リード処理時と同様に、このステップSP79〜ステップSP81の処理により、ライト対象のデータが必要に応じて現在のティアから上位のティアの物理ページに移動されることになる。そしてCPU25A,25Bは、この後、このライト処理を終了する。なおステップSP5〜ステップSP7は、リード対象のデータについて処理をしたが、ステップSP79〜ステップSP81では、ライト対象のデータに対して処理をする。
(3−1−2−2)チャンク割当て処理
次に、かかるライト処理(図23)のステップSP71においてCPU25A,25Bにより実行されるチャンク割当て処理について説明する。これに際して、まず、本ストレージ装置4におけるチャンクの割当て方式について説明する。
図24は、第1〜第3のティアのいずれのティアにおいても1チャンクを複数の物理ページ(例えば32個の物理ページ)で構成し、当該チャンク単位で記憶領域を仮想ボリュームVVOLに割り当てる方式の概要を示す。
この図24からも明らかなように、1つのチャンクを複数の物理ページにより構成するものとすると、図19について上述したページ再配置処理を繰り返し実行した場合に未使用の物理ページが点在するチャンクが増え(図24の第2のチャンク参照)、容量効率が低下する。これはすべてのティアにおいて言えることである。
かかる容量効率の低下を防止するための手法としては、1つのチャンクを構成する物理ページのページ数を減らすことが考えられる。しかしながら、ティアにチャンクを割り当てるチャンク割当て処理は、割当て対象のチャンクについて排他処理を行った上で実行する必要があるため、1つのチャンクを構成する物理ページのページ数を減らした場合、チャンク割当て処理の回数が増え、その分排他処理のオーバーヘッドにより性能が低下してしまう問題がある。
この場合、第2のティアや第3のティアについては、これらのティアを構成する記憶ドライブ20(図1)がそれほど高価なものではないため、性能を優先して1つのチャンクを相当数の物理ページから構成することに問題はないが、第1のティアについては、当該第1のティアを構成する記憶ドライブ20(SSD)が高価なものであり、それほど多くの記憶ドライブ20をストレージ装置4に搭載することができない。
そこで本実施の形態においては、第2及び第3のティアについては、1つのチャンクを32個の物理ページから構成する一方、第1のティアについては、図25に示すように、1つのチャンクを1個の物理ページにより構成する。また第1のティアについては、チャンク割当て処理時に第2及び第3のティアの1チャンクを構成する物理ページと同じ数のチャンク(32チャンク)をまとめて確保し、確保したチャンクの中から1チャンクずつ必要時に順次仮想ボリュームVVOLに割り当てる。なお、複数のチャンクをまとめて確保するようにした場合、無駄にチャンクが確保されてしまうが、使用されないチャンクについてはガベージコレクションにより定期的に回収すれば良い。なお、32チャンク分確保する処理を実行せずに、1チャンクを仮想ボリュームVVOLに割り当ててもよい。
以上のような本実施の形態によるチャンク割当て方式によれば、第1のティアのチャンクを仮想ボリュームVVOLに割り当てる際の排他処理の回数を減らしながら、ページ再配置処理を繰り返し実行することに起因する容量効率の低下を有効に防止することができる。
ただし、このように1つのチャンクを1個の物理ページからのみ構成するものとした場合、データ記憶用の記憶ドライブ数を「D」、パリティ記憶用の記憶ドライブ数を「P」として、RAIDグループRGの構成を5D+2P、13D+2P、17D+1PなどのRAIDグループ構成としたときに、図26のように各ストライプラインの境界と、物理ページ(32〔Mbyte〕)の最後とが一致せず、例えば図27のように1個のチャンクを複数の物理ページから構成する場合に比べていずれの物理ページにも属さない無駄な記憶領域(図26及び図27において斜線が引いていない領域)が多くなるという問題がある。
この点については、2D+2P、4D+1P、8D+2Pのように、データ記憶用の記憶ドライブ数を2,4,8又は16とすることで、各ストライプラインの境界と、各物理ページの最後とを一致させて無駄な記憶領域が発生するのを極力低減することができる。
図28は、以上のような本実施の形態によるチャンク割当て処理の具体的な処理手順を示す。CPU25A,25Bは、この図28に示す処理手順に従って、ライト処理(図23)のステップSP72において対応するティアにチャンクを割り当てる。
実際上、CPU25A,25Bは、ライト処理のステップSP72に進むと、このチャンク割当て処理を開始し、まず、プールインデックステーブル43(図8)の対応する階層モード欄43B(図8)を参照して、ライトコマンドにおいてライト先として指定された仮想ボリュームVVOLが対応付けられたプールPLに階層モードが設定されているか否かを判断する(SP90)。
CPU25A,25Bは、この判断で肯定結果を得ると、ライトコマンドにおいてライト先として指定された論理ページに割り当てられている物理ページを提供する記憶ドライブ20(図1)のドライブ種別が、第1のティアを構成する記憶ドライブ20として設定された記憶ドライブ20(以下、SSDとする)であるか否かを判断する(SP91)。
CPU25A,25Bは、この判断で肯定結果を得ると、第1のティアについて確保済みで未使用のチャンクがあるか否かを判断する(SP92)。そしてCPU25A,25Bは、この判断で肯定結果を得るとステップSP94に進む一方、ステップSP92において否定結果を得た場合には、第2及び第3のティアにおいて1個のチャンクを構成する物理ページのページ数と同じ数のチャンクをプールPL上に確保する(SP93)。
次いでCPU25A,25Bは、第1のティアについて確保されている未使用のチャンクを第1のティアに割り当て(SP94)、この後、このチャンク割当て処理を終了する。
これに対してCPU25A,25Bは、ステップSP90又はステップSP91の判断で否定結果を得ると、仮想ボリュームインデックステーブル40(図5)の前回割当てRAIDグループ番号欄40G(図5)を参照して、例えばラウンドロビン方式により次のRAIDグループRGを選択し、当該RAIDグループRGが提供する記憶領域上に定義されたチャンクを1個だけ確保する(SP95)。
続いてCPU25A,25Bは、仮想ボリュームインデックステーブル40の前回割当てRAIDグループ番号欄40GをステップSP95において確保したRAIDグループRGのグループIDに更新し(SP96)、この後、ステップSP95において確保したチャンクを対応するティア(第2又は第3のティア)に割り当てた後(SP97)、このチャンク割当て処理を終了する。
(3−2)ティア閾値算出処理ST2
(3−2−1)ティア閾値算出の考え方
本実施の形態によるリアルタイムモニタリング機能に基づく階層型データ管理方式は、ストレージ装置4全体のスループット性能の最大化だけでなく、ティアごとのレスポンス時間の平均(平均レスポンス時間)の最小化をも狙っている。図29は、このような本実施の形態の階層型データ管理方式のポリシを示す。
すなわち、本実施の形態のストレージ装置4では、図30に示すように、ストレージ装置4全体として、低負荷時には、できるだけ高性能のティアの物理ページを仮想ボリュームVVOLに割り当て(図30(A))、負荷が高くなるにつれて、段階的に各ティアの稼働率が100%に近づくように各ティアの稼働率を上げてゆく(図30(C))。各段階(以下、これを区間とも呼ぶ)においては、高性能のティアほど稼働率が高くなるように各ティアの稼働率をそれぞれ設定しておく。
このような階層型データ管理方式により、低負荷時には平均レスポンス時間を最小化することができ、高負荷時には平均レスポンスを最小化しながらスループット性能を最大化することができる。また負荷が高くなるにつれて、段階的に各ティアの稼働率が100%となるように各ティアの稼働率を上げてゆく階層制御を行うことにより、負荷の上昇に対して急激なデモーションの発生を抑止することができる。
ティア閾値(第1及び第2のティア閾値)の決定に際しては、ティアごとの配分容量及び配分性能を考慮する。ここで、ティアの「配分容量」とは、そのティアから仮想ボリュームVVOLに割り当て可能な物理ページの限界数を指す。またティアの「配分性能」とは、そのティアにおいて単位時間(例えば1時間)内に処理可能なI/Oアクセス数の限界数を指す。この配分性能は、そのティアの物理ページの総数に対する仮想ボリュームVVOLに割り当てられている物理ページの割合(以下、これをティア稼働率呼ぶ)によって変化する。あるティアについて、配分容量及び配分性能のいずれかの制約をオーバーするときがそのティアと、当該ティアの1つ下位のティアとの間のティア閾値(第1又は第2のティア閾値)として決定される。
例えば、図31(A)に示すように、1つの論理ページに対するI/Oアクセス数を縦軸にとり、あるプールPLと対応付けられた仮想ボリュームVVOLの各論理ページに対するI/Oアクセス数を大きい順に横軸方向にプロットした度数分布図では、横軸がページ数(容量)を表し、グラフと横軸との間の面積がI/Oアクセス数の総和(性能)を表す。
従って、この度数分布図の斜線で示す部分の横方向の長さが、第1のティアから仮想ボリュームVVOLに割当て可能な物理ページ数(配分容量)に達するか、又は、当該斜線で示す部分の面積が、第1のティアにおいて単位時間当たりに処理可能なI/Oアクセス数(配分性能)に達するところが第1及び第2のティア間の閾値(第1のティア閾値)となる。また図31(B)に示すように、同じ度数分布図中の当該図31(B)において斜線で示す部分の横方向の長さが第2のティアから割当て可能な物理ページ数(配分容量)に達するか、又は、当該斜線で示す部分の面積が第2のティアにおいて処理可能なI/Oアクセス数(配分性能)に達するところが第2及び第3のティア間の閾値(第2のティア閾値)となる。本実施の形態のようにティアが3階層構造の場合、第1及び第2のティア閾値は連続して算出する。
(3−2−2)ティア閾値算出処理の処理内容
(3−2−2−1)ティア閾値算出処理の概要
図32は、図3のティア閾値算出処理ST2において、ストレージ装置4の0系及び1系の各コントローラ21A,21B(図1)のCPU25A,25Bにより実行されるティア閾値算出処理の具体的な処理手順を示す。
CPU25A,25Bは、カウント処理にて計算する場合(図15のSP25)、又は所定周期(例えば数分周期)でこのティア閾値算出処理ST2を実行することにより、上述の第1及び第2のティア閾値のその時点における最適値と、各プロモーションライン(T3−T1プロモーションライン、T2−T1プロモーションライン、T3−T2プロモーションライン)及び各デモーションライン(T1−T2プロモーションライン、T2−T3プロモーションライン、T1−T3プロモーションライン)の最適値とをそれぞれ算出する。
実際上、CPU25A,25Bは、このティア閾値算出処理を開始すると、まず、ティア管理テーブル42(図7)を参照して、対応するプールPLの各ティアから当該プールPLと対応付けられた仮想ボリュームVVOLに対して割当て可能な物理ページの総数(以下、これをティア容量配分量と呼ぶ)を算出する(SP100)。このティア容量配分量は、そのティアの総容量(物理ページの総数)から、データ再配置処理や物理ページの割当て処理時に必要となるバッファ容量(バッファ用の物理ページ数)を引くことにより算出することができる。
続いて、CPU25A,25Bは、対応するプールPLに対するそのときの単位時間当たりのI/Oアクセス数を算出し、算出したI/Oアクセス数のうちの各ティアに配分すべきI/Oアクセス数(以下、これをティア性能配分量と呼ぶ)をそれぞれ算出する(SP101)。
次いで、CPU25A,25Bは、カウンタ値管理テーブル45(図10)を参照して、対応するプールPLに関する図31について上述した度数分布図を作成し、作成した度数分布図と、ステップSP100において算出したティアごとのティア容量配分量と、ステップSP101において算出したティアごとのティア性能配分量とに基づいて第1及び第2のティア閾値を算出する(SP102)。
この後、CPU25A,25Bは、対応するプールPLと対応付けられた仮想ボリュームVVOLについての移動量パラメータを算出する(SP103)。この移動量パラメータは、図3について上述したティア決定処理ST3の進捗状況に応じてティア間のデータ移動量を調整するためのパラメータであり、この移動量パラメータが大きいほどティア間で移動されるページ数が多くなり、当該移動量パラメータが小さいほどティア間で移動されるページ数が少なくなる。CPU25A,25Bは、この移動量パラメータを、図43について後述するティア決定処理の進捗状況に基づいて、ティア間でデータを移動させる際の負荷が大きいほど大きく、当該負荷が小さいほど小さくなるように設定する。
さらに、CPU25A,25Bは、ステップSP103において算出した移動量パラメータに基づいて、上述の各プロモーションライン(T3−T1プロモーションライン、T2−T1プロモーションライン及びT3−T2プロモーションライン)と各デモーションライン(T1−T2デモーションライン、T2−T3デモーションライン及びT1−T3デモーションライン)とをそれぞれ算出し(SP104)、この後、このティア閾値算出処理を終了する。
(3−2−2−2)ティア配分性能算出処理
図33は、上述のティア閾値算出処理のステップSP101において、CPU25A,25Bにより実行されるティア性能配分量算出処理の具体的な処理手順を示す。CPU25A,25Bは、この図33に示す処理手順に従って各ティアのティア性能配分量をそれぞれ算出する。
実際上、CPU25A,25Bは、ティア閾値算出処理のステップSP101に進むと、このティア性能配分量算出処理を開始し、ティアの稼働率(以下、これをそのティアのティア稼働率と呼ぶ)が100%のときに単位時間当たりにそのティアにおいて処理可能なI/Oアクセス数(以下、これをティア性能ポテンシャルと呼ぶ)をティアごとにそれぞれ算出する(SP110)。
ここで、ティア稼働率としては、リアルタイムティア稼働率と、移動平均ティア稼働率の2つがある。リアルタイムティア稼働率は、所定周期(例えば1分周期であり、以下、これをリアルタイムティア稼働率取得周期と呼ぶ)で採取される各ティアの稼働率であり、後述するプロモーションラインやデモーションラインの算出等に利用される。また移動平均ティア稼働率は、リアルタイムティア稼働率から移動平均を算出した稼働率であり、ティア性能ポテンシャルの決定に利用される。
性能モニタ機能によりCPU25A,25Bが取得するのはリアルタイムティア稼働率だけであり、移動平均稼働率については、取得した過去所定回数(X回)分のリアルタイムティア稼働率を利用して求める。具体的に、CPU25A,25Bは、前回の移動平均ティア稼働率をAORn−1、今回算出しようとする移動平均ティア稼働率をAORn、今回取得したリアルタイムティア稼働率をRORnとして、次式
により移動平均ティア稼働率AORn´を算出する。そしてCPU25A,25Bは、このとき算出した移動平均ティア稼働率AORn´と、今回取得したリアルタイムティア稼働率RORnとのうちの大きい方を今回の移動平均ティア稼働率AORnとする。
なお移動平均ティア稼働率を算出する目的は、リアルタイムティア稼働率の変動に起因するティア性能ポテンシャルの変動によってティア閾値の過度な変動が発生し、無駄なデータ移動が発生するのを抑制するためである。
一方、ティア性能ポテンシャルPnは、上述のようにして求めた今回の移動平均ティア稼働率AORnを利用し、今回のリアルタイムティア稼働率取得周期中におけるそのティアへのI/Oアクセスの総数をACI/Oとして、次式
により算出することができる。
続いて、CPU25A,25Bは、そのとき対象としているプールPLに対する単位時間当たりのI/Oアクセスの総数(以下、これをプールI/Oアクセス総数と呼ぶ)を算出する(SP111)。このプールI/Oアクセス総数は、カウンタ値管理テーブル45(図10)に登録されている各カウンタ値のうち、そのプールPLのいずれかのティアから物理ページが割り当てられている仮想ボリュームVVOLのすべての論理ページのカウント値を合算することにより算出することができる。
次いで、CPU25A,25Bは、区間ごとのI/Oアクセス数(以下、これを区間I/Oアクセス数と呼ぶ)を算出する(SP112)。
図30について上述したように、本ストレージ装置4においては、ストレージ装置4全体として低負荷時には、できるだけ高性能のティアの物理ページを論理ページに割り当て、負荷が高くなるにつれて、段階的に各ティアの稼働率が100%に近付くように各ティアの稼働率を上げてゆく階層型データ管理方式が採用されている。
このような階層型データ管理方式を実現するための手段として、ストレージ装置4は、図34に示すようなプールPLごとの区間I/Oアクセス管理テーブル60をローカルメモリ26A,26B(図1)に保持している。この区間I/Oアクセス管理テーブル60は、区間番号欄60A、区間I/Oアクセス数欄60Bおよびメディア毎稼働率水準欄60Cから構成されるもので、区間番号欄60Aには、上述の「段階的」の「段階」にそれぞれ対応する各区間(段階)に対して付与された区間番号が格納される。
またメディア毎稼働率水準欄60Cは、対応するプールPLに属する(そのプールPLの記憶領域を提供する)記憶ドライブ20(図1)の各ドライブ種別(SSD、SAS15K及びSATA等)にそれぞれ対応させて設けられた複数の稼働率水準欄60CA〜60CEから構成される。そして各稼働率水準欄60CA〜60CEには、それぞれ対応する区間における対応する記憶ドライブ20の稼働率の予め定められた水準(以下、これを稼働率水準)が万分率単位で格納される。この稼働率水準は、プールPLに対するI/Oアクセスの総数に対してどの記憶ドライブ20をどの程度の稼働率で稼働させるべきかという、図35に示すようなシステム設計者等により予め設定された設定値に従った数値である。
従って、図34では、そのプールPLには、「SSD」、「SAS15K」、「SAS10K」、「NL-SAS」及び「SATA」といったドライブ種別の各記憶ドライブ20が所属しており、区間として「0」〜「7」の8つが規定されていることが示されている。また図34では、区間「1」では、「SSD」のみを「8000」パーミルアドの稼働率で稼働させ、区間「2」では、「SSD」を「8089」パーミルアド、「SAS15K」を「6000」パーミルアドの稼働率で稼働させ、区間「3」では、「SSD」を「8267」パーミルアド、「SAS15K」を「6372」パーミルアド、「SAS10K」を「6000」パーミルアドでそれぞれ稼働させ、区間「4」では、「SSD」を「8311」パーミルアド、「SAS15K」を「6465」パーミルアド、「SAS10K」を「6103」パーミルアド、「NL-SAS」を「1000」パーミルアドでそれぞれ稼働させるべきことが示されている。
さらに図34では、区間「5」では、「SSD」を「8533」パーミルアド、「SAS15K」を「6930」パーミルアド、「SAS10K」を「6615」パーミルアド、「NL-SAS」を「6000」パーミルアド、「SATA」を「3750」パーミルアドでそれぞれ稼働させ、区間「6」では、「SSD」を「8667」パーミルアド、「SAS15K」を「7209」パーミルアド、「SAS10K」を「6923」パーミルアド、「NL-SAS」を「6364」パーミルアド、「SATA」を「6000」パーミルアドでそれぞれ稼働させ、区間「7」では、「SSD」、「SAS15K」、「SAS10K」、「NL-SAS」及び「SATA」のいずれも「10000」パーミルアドでそれぞれ稼働させるべきことが示されている。
さらに区間I/Oアクセス数欄60Bには、対応する区間において、そのプールPLに所属する各記憶ドライブ20をメディア毎稼働率水準欄60Cにおいて規定された稼働率水準で稼働させた場合にプールPL全体として処理可能なI/Oアクセス数(区間I/Oアクセス数)が格納される。この区間I/Oアクセス数は、記憶ドライブ20ごとに、その記憶ドライブ20が属するティアのティア性能ポテンシャルと、その区間におけるその記憶ドライブの稼働率水準とを乗算し、記憶ドライブ20ごとの乗算結果をすべて足し合わせることにより算出される。
つまりステップSP112では、このような区間ごとの区間I/Oアクセス数がそれぞれ算出される。そして、得られた区間ごとの区間I/Oアクセス数が区間I/Oアクセス管理テーブル60の対応する区間I/Oアクセス数欄60Bにそれぞれ格納される。
次いで、CPU25A,25Bは、ステップSP111において算出したプールI/Oアクセス総数と、ステップSP112で算出した区間I/Oアクセス管理テーブル112の各区間I/Oアクセス数欄60Bにそれぞれ格納されている区間ごとの区間I/Oアクセス数とに基づいて、そのときのプールI/Oアクセス総数が属する区間を決定する(SP113)。
具体的には、そのプールI/Oアクセス総数がその区間の区間I/Oアクセス数を超えず、かつ1つ下の区間の区間I/Oアクセス数以上の区間が、そのプールI/Oアクセス総数の区間として決定される。従って、例えば図34の例において、プールI/Oアクセス総数が「11362」〜「11268」の範囲内にある場合には、そのプールI/Oアクセス総数の区間は「3」に決定され、プールI/Oアクセス総数が「16000」〜「12729」の範囲内にある場合には、そのプールI/Oアクセス総数の区間は「7」に決定されることになる。
この後、CPU25A,25Bは、ティアごとの目標ティア稼働率をそれぞれ算出する(SP114)。この目標ティア稼働率は、区間I/Oアクセス管理テーブル60において規定されているステップSP113において決定した区間における各記憶ドライブ20の稼働率水準でこれらの記憶ドライブ20を稼働した場合の各ティアの稼働率である。
次いで、CPU25A,25Bは、ステップSP114において算出した各ティアの目標ティア稼働率に基づいて、ティアごとのティア性能配分量をそれぞれ算出する(SP115)。具体的に、CPU25A,25Bは、ティアごとに、ステップSP114において算出した目標ティア稼働率と、ステップSPに110おいて算出した対応するティア性能ポテンシャルとを掛け合わせることによりそのティア性能配分量を算出することになる。そしてCPU25A,25Bは、この後、このティア性能配分量算出処理を終了する。
(3−2−2−3)ティア閾値算出処理
図36は、ティア閾値算出処理(図32)のステップSP102において、CPU25A,25Bにより実行されるティア閾値算出処理の具体的な処理手順を示す。CPU25A,25Bは、プールごとにこの図36に示すティア閾値算出処理を実行することにより、そのプールについてのティア閾値(第1及び第2のティア閾値)をそれぞれ算出する。
具体的には、CPU25A,25Bは、この図36に従って、ティアごとに、I/Oアクセス数が多い物理ページから順番にI/Oアクセス数及び容量(物理ページ数)の累積数をそれぞれ求め、I/Oアクセス数の累計値が図31について上述したそのティアの配分性能(そのティアにおいて単位時間内に処理可能なI/Oアクセス数の限界数)をオーバーする直前又は容量の累積値が図31について上述したそのティアの配分容量(そのティアから仮想ボリュームVVOLに割り当て可能な物理ページの限界数)をオーバーする直前のI/Oアクセス数の累積値をそのティアと、当該ティアの1つ下位のティアとの間のティア閾値として求める。
実際上、CPU25A,25Bは、ティア閾値算出処理のステップSP102に進むと、このティア閾値算出処理を開始し、まず、後述するステップSP121以降の処理で利用するパラメータである後述の容量累計値及びI/Oアクセス数累計値をそれぞれ初期化する(SP120)。
続いて、CPU25A,25Bは、カウンタ値管理テーブル45(図10)を参照して、そのとき対象としているプールPLから物理ページが割り当てられている論理ページのうち、I/Oアクセス数が最大の論理ページのI/Oアクセス数を取得し、現在までの物理ページのページ数の累計値である容量累計値と、現在までのI/Oアクセス数の累計値であるI/Oアクセス数累計値とをそれぞれ算出する(SP121)。なお、この段階においては、容量累計値は「1」であり、I/Oアクセス数累計値はステップSP121において取得したI/Oアクセス数と同じである。
次いで、CPU25A,25Bは、ステップSP121において算出した容量累計値が配分容量以上であるか否かを判断する(SP122)。
ここで、ティアの配分容量DCは、上述したティア性能配分量算出処理(図33)のステップSP110において算出したティア性能ポテンシャルをPP、対応するティアにおいて除外され又は予約済みの物理ページ数分の単位時間当たりに予想されるI/Oアクセス数をAVI/O、ティア性能配分量算出処理(図33)のステップSP114において算出したそのティアの目標ティア稼働率をORとして、次式
により求めることができる。従って、CPU25A,25Bは、このステップSP122において、ステップSP121で算出した容量累計値が(3)式により算出したそのティアの配分容量DC以上であるか否かを判断することになる。
そしてCPU25A,25Bは、この判断で否定結果を得ると、ステップSP121において算出したI/Oアクセス数累計値がそのティアの配分性能以上であるか否かを判断する(SP123)。
ここで、ティアの配分性能DPは、そのティアの物理ページの総数をTAP、図7について上述した新規割当て用バッファ率及び再配置用バッファ率をそれぞれMR1、MR2、そのティアにおいて除外され又は予約済みの物理ページ数APとして、次式
により求めることができる。従って、CPU25A,25Bは、このステップSP123において、ステップSP121で算出したI/Oアクセス数累計値が(4)式により算出したそのティアの配分性能DP以上であるか否かを判断することになる。
そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP121に戻り、この後、ステップSP122又はステップSP123において肯定結果を得るまでステップSP121〜ステップSP123の処理を繰り返す。なお、これ以降、CPU25A,25Bは、ステップSP121において、直前のステップSP121において算出した容量累計値に「1」を加えたものを新たな容量累計値として算出する。またCPU25A,25Bは、そのとき対象としているプールPLから物理ページが割り当てられている論理ページのうち、直前のステップSP121において対象とした論理ページの次にI/Oアクセス数が多い論理ページのI/Oアクセスと、直前のステップSP121において算出したI/Oアクセス数累計値との加算結果を新たなI/Oアクセス数累計値として算出する。
そしてCPU25A,25Bは、やがてステップSP122において肯定結果を得た場合には、そのとき対象としているティアの配分性能を(3)式により再計算し(SP124)、この計算結果に基づいてそのティアと、当該ティアよりも1つ下位のティアとの間のティア閾値を決定する(SP125)。
またCPU25A,25Bは、ステップSP123において肯定結果を得た場合には、そのときのI/Oアクセス数累計値をそのとき対象としているティアと、当該ティアよりも1つ下位のティアとの間のティア閾値として決定する(SP125)。
続いて、CPU25A,25Bは、すべてのティア閾値を決定し終えたか否かを判断し(SP126)、否定結果を得ると、ステップSP120に戻って、この後、ステップSP120以降を同様に処理する。なお、この際、CPU25A,25Bは、ステップSP121において、新たに対象とするティア内での容量累計値及びI/Oアクセス累計値とを算出する。
そしてCPU25A,25Bは、やがてすべてのティア閾値を求めることによりステップSP126で肯定結果を得ると、このティア閾値算出処理を終了して図32のティア閾値算出処理に戻る。
(3−2−2−4)移動量パラメータ算出処理
上述のティア閾値算出処理(図32)のステップSP103において、CPU25A,25Bは、以下の手法により移動量パラメータを算出する。
すなわち、CPU25A,25Bは、チェック対象の論理ページの総数をCAP、チェック済みの論理ページのページ数をCPとして、次式
によりチェック対象の論理ページの総数CAPに対するチェック済みの論理ページのページ数CPの割合(以下、これをチェック済みページ数割合と呼ぶ)SRを算出する。なお、(5)式の右辺において「10000」を乗算しているのは、かかるページ数CPを万分率で算出するためである。
またCPU25A,25Bは、図43について後述するティア決定処理ST3(図3)の目標周期(例えば1時間)をF、ティア決定処理ST3の1周期の開始時刻をT1、現在時刻をT2として、次式
により、ティア決定処理ST3の目標周期Fに対する、今回のティア決定処理ST3を開始してから現在までの経過時間の割合(以下、これを経過時間割合と呼ぶ)TRを算出する。なお(6)式の右辺において「10」を乗算しているのは、(5)式と単位を合わせるためである。
続いて、CPU25A,25Bは、上述のように算出したチェック済みページ数割合SRと、経過時間割合TRとを比較する。そしてCPU25A,25Bは、次式
のように、チェック済みページ数割合SRよりも経過時間割合TRのほうが大きい場合(移動量パラーメータは0〜254)には、移動量パラメータを、現在の値に1加算した値として算出し、次式
のように、チェック済みページ数割合SRが経過時間割合TR以上の場合には(移動量パラメータは1〜255)には、移動量パラメータを、現在の値から1減算した値として算出する。
(3−2−2−5)PDライン算出処理
図37に、第1及び第2のティア閾値と、各プロモーションライン(T3−T1プロモーションライン、T2−T1プロモーションライン及びT3−T2プロモーションライン)及び各デモーションライン(T1−T2デモーションライン、T2−T3デモーションライン及びT1−T3デモーションライン)との関係を示す。
プロモーションライン及びデモーションラインは、仮想ボリュームVVOLの論理ページに格納されたデータを、上位のティアにプロモーション又は下位のティアにデモーションすることによって得られる各ティアのレスポンス性能の向上を目的として設定される、論理ページへのアクセス頻度の閾値である。
プロモーションラインは、仮想ボリュームVVOLの論理ページに格納されたデータを上位のティアにプロモーションすることによって得られる各ティアのレスポンス性能の向上を目的として設定される、論理ページへのアクセス頻度の閾値である。このプロモーションラインは、仮想ボリュームVVOLの論理ページに格納されたデータをプロモーションするか否かを判定する際に、第1及び第2のティア閾値と併せて利用される。なお、上述の通り、第1及び第2のティア閾値を考慮せず、プロモーションラインによって判定してもよい。
プロモーションラインが対応する第1又は第2のティア閾値と一致する場合に、プロモーションされるデータ量が最大となり、当該プロモーションラインが対応する第1又は第2のティア閾値から離れるほど、プロモーションされるデータ量が少なくなる。換言すれば、プロモーションラインが対応する第1又は第2のティア閾値から離れるほど、その論理ページに格納されたデータをプロモーションするで、より高い効果(ティアのレスポンス性能の向上のことであり、以下、これを移動効果と呼ぶ)が得られる論理ページを選定する度合いが強くなる。
またデモーションラインは、仮想ボリュームVVOLの論理ページに格納されたデータを下位のティアにデモーションすることによって得られる各ティアのレスポンス性能の向上を目的として設定される、論理ページへのアクセス頻度の閾値である。このデモーションラインは、仮想ボリュームVVOLの論理ページに格納されたデータをデモーションするか否かを判定する際に、第1及び第2のティア閾値と併せて利用される。上述の通り、第1及び第2のティア閾値より小さく、デモーションラインより大きいアクセス頻度の論理ページに割り当てられる物理ページを移動対象とするためである。
デモーションラインが対応する第1又は第2のティア閾値と一致する場合にデモーションされるデータ量が最小となり、当該デモーションラインが対応する第1又は第2のティア閾値から離れるほど、デモーションされるデータ量が多くなる。換言すれば、デモーションラインが対応する第1又は第2のティア閾値に近づくほど、第1又は第2のティア閾値より小さいアクセス頻度の中でも、よりアクセス頻度の高いデータを選定してデモーションすることができるため、より移動効果の得られる論理ページに格納されたデータをデモーションすることができる。
なお、図37は第1及び第2のティア閾値と、各プロモーションライン及び各デモーションラインとの関係の一例を示すだけのものであり、各プロモーションラインがすべて第1のティア閾値よりも上に設定されたり、各デモーションラインがすべて第2のティア閾値よりも下に設定されたりすることもある。
ここで、かかるプロモーションラインやデモーションラインは、ティア閾値(第1及び第2のティア閾値)と、常時監視している各ティアをそれぞれ構成する記憶ドライブ20の応答性能(レスポンス時間)とに基づいて決定される。
具体的には、まず、ティアごとの応答性能に基づいて、ティア間でデータをプロモーション又はデモーションさせたときの移動効果を、すべてのティア間について求める。本実施の形態においては、この移動効果E(s,d)を、移動元のティアの応答性能をRsp(S)とし、移動先のティアの応答性能をRsp(d)として、次式
により算出する。つまり、移動効果は、データをティア間で移動した場合に、移行元のティア(物理ページ)での応答性能(レスポンス時間)に対して移行先のティア(物理ページ)での応答性能(レスポンス時間)がどれだけよくなるか(短くなるか)を示す値である。
例えば図38(A)に示すように、第1及び第2のティア間に設定される第1のティア閾値が「100IOPH(Input Output Per Hour)」、第2及び第3のティア間に設定される第2のティア閾値が「10IOPH」であり、図38(B)に示すように、第1のティアに所属する記憶ドライブ20の平均ドライブレスポンス時間が「1ms」、第2のティアに所属する記憶ドライブ20の平均ドライブレスポンス時間が「9ms」及び第3のティアに所属する記憶ドライブ20の平均ドライブレスポンス時間が「12ms」であったものとする。
この場合、図38(C)に示すように、ティア間の組合せとしては、第1及び第2のティアと、第1及び第3のティアと、第2及び第3のティアとが考えられる。
そこで、第1及び第2のティア間については、第2のティアのデータを第1のティアにプロモーションした場合(「T2→T1」)の移動効果を、第2のティアを構成する記憶ドライブ20の平均レスポンス時間である「9ms」から第1のティアを構成する記憶ドライブ20の平均レスポンス時間である「1ms」を引いた「8ms」として算出する(図38(C)の1行目参照)。また第1及び第3のティア間については、第3のティアのデータを第1のティアにプロモーションした場合(「T3→T1」)の移動効果を、第3のティアを構成する記憶ドライブ20の平均レスポンス時間である「12ms」から第1のティアを構成する記憶ドライブ20の平均レスポンス時間である「1ms」を引いた「11ms」として算出する(図38(C)の2行目参照)。さらに第2及び第3のティア間については、第3のティアのデータを第2のティアにプロモーションした場合(「T3→T2」)の移動効果を、第3のティアを構成する記憶ドライブ20の平均レスポンス時間である「12ms」から第2のティアを構成する記憶ドライブ20の平均レスポンス時間である「9ms」を引いた「3ms」として算出する(図38(C)の3行目参照)。
同様に、第1及び第2のティア間について、第1のティアのデータを第2のティアにデモーションした場合(「T1→T2」)の移動効果を、第1のティアを構成する記憶ドライブ20の平均レスポンス時間である「1ms」から第2のティアを構成する記憶ドライブ20の平均レスポンス時間である「9ms」を引いた「-8ms」として算出する(図38(C)の4行目参照)。また第1及び第3のティア間について、第1のティアのデータを第3のティアにデモーションした場合(「T1→T3」)の移動効果を、第1のティアを構成する記憶ドライブ20の平均レスポンス時間である「1ms」から第3のティアを構成する記憶ドライブ20の平均レスポンス時間である「12ms」を引いた「-11ms」として算出する(図38(C)の5行目参照)。さらに第2及び第3のティア間について、第2のティアのデータを第3のティアにデモーションした場合(「T2→T3」)の移動効果を、第2のティアを構成する記憶ドライブ20の平均レスポンス時間である「9ms」から第3のティアを構成する記憶ドライブ20の平均レスポンス時間である「12ms」を引いた「-3ms」として算出する(図38(C)の6行目参照)。
そして上述のようにして算出した各ティア間の移動効果について、データのプロモーションについては、移動効果が正の値の場合(移動効果を得られる場合)には、移動量パラメータを移動量効果で割った商と、第1又は第2のティア閾値とのうちの大きい方を、そのティア間のプロモーションラインとし、移動効果が負の値の場合(移動効果が得られない場合)には、カウンタ値管理テーブル45(図10)において管理している各論理ページに対するアクセス数のカウント値の最大値(「255」)を、そのティア間のプロモーションラインとして設定する。つまり、プロモーションラインは、ティア間でデータを移動させることによる移動効果が大きいほど、対応する第1又は第2のティア閾値に近づき、移動効果が得られない場合には、対応する第1又は第2のティア閾値から大きく離れるように設定される。これによりプロモーションによる移動効果が得られるティア間については、これらティア間におけるプロモーションを促進することができ、移動効果が得られないティア間については、これらティア間におけるプロモーションを抑止することができる。
またデータのデモーションについては、移動効果が正の値の場合(移動効果を得られる場合)には、移動効果パラメータを移動効果で割った商と、第1又は第2のティア閾値とのうちの小さい方を、そのティア間のデモーションラインとし、移動効果が負の値の場合(移動効果が得られない場合)には、第1又は第2のティア閾値を、そのティア間のデモーションラインとして設定する。つまり、デモーションラインは、ティア間でデータを移動させることによる移動効果が大きいほど、対応する第1又は第2のティア閾値から離れ、移動効果が得られない場合には、対応する第1又は第2のティア閾値に近づくように設定される。これにより上述のプロモーションの場合と同様に、デモーションによる移動効果が得られるティア間については、これらティア間におけるデモーションを促進することができ、移動効果が得られないティア間については、これらティア間におけるデモーションを抑止することができる。
なお、図38(C)は、移動量パラメータが「2048」である場合における、アクセスが集中し性能ネックになっているティアがない場合の各プロモーションライン及び各デモーションラインの一例を示している。
この図38(C)からも明らかなように、アクセスが集中し性能ネックになっているティアがないため、なるべく性能の高い第1のティアを利用するように制御される。つまり、第3のティアから第2のティアにプロモーションするよりも、第3又は第2のティアから第1のティアにプロモーションする処理を優先する。従って、第3及び第2のティア間のプロモーションラインが第2のティア閾値から離れた値に設定される。
また図38の例の場合、図39からも明らかなように、第2及び第1のティア間のプロモーションラインから第1のティア閾値までの距離に比べて、第3及び第1のティア間のプロモーションラインから第1のティア閾値までの距離が近いため、第2のティアから第1のティアへのプロモーションに比べて、第3のティアから第1のティアへのプロモーションが多く行われることになる。
また図38の例の場合、デモーションラインについては、いずれも対応する第1又は第2のティア閾値と一致しているため、第1のティアから第2のティアへのデモーション、第1のティアから第3のティアへのデモーション及び第2のティアから第3のティアへのデモーションのいずれも行われることはない。
このようにアクセスが集中し性能ネックになっているティアがない(図38)場合には、第2又は第3のティアから第1のティアへのプロモーションは第3のティアから第2のティアへのプロモーションに優先して実行され、デモーションは基本的には実施されない。デモーションは、図16について上述したプロモーション判定処理のステップSP35においてプロモーション先に空き容量がない場合にのみ緊急デモーション処理(図18)として実行されるだけである。
一方、図40(C)は、移動量パラメータが「2048」である場合における、第2のティア(ティア2)に対してアクセスが集中し性能ネックとなっている場合の各プロモーションライン及び各デモーションラインの一例を示している。図38との違いは、図40(B)に示すように、第2のティアが高負荷状態となっている点である。
このような状況では、性能ネックとなっている第2のティア(ティア2)から第1のティア(ティア1)へのプロモーション及び、第2のティアから第3のティア(ティア3)へのデモーションの優先度が図38の例に比して上がる。
つまり、図40(C)からも明らかなように、第2及び第1のティア間でデータをプロモーションすることによる高い移動効果が得られるため、図41に示すように、第2及び第1のティア間のプロモーションラインも対応する第1のティア閾値と一致した値に設定される。従って、第2及び第1のティア間のプロモーションが多く行われることになる。
また図40の例の場合、図41からも明らかなように、第3及び第1ティア間のプロモーションラインは対応する第1のティア閾値から僅かに離れているため、第3及び第1のティア間のプロモーションが僅かに行われることになる。このように、図40のような状況のもとでは、第2のティアから第1のティアへのプロモーションが、第3のティアから第1のティアへのプロモーションに優先して実行されることになる。
また第3のティアから第2のティアへのプロモーションについては、第3及び第2のティア間のプロモーションラインがカウンタ値管理テーブル45(図10)においてカウンタ値がとり得る最大値(「255」)を表す「MAX」となっているため、行われることはない。
さらに図40の例の場合、デモーションラインについては、第1及び第2のティア間のデモーションラインと、第1及び第3のティア間のデモーションラインとが、それぞれ対応する第1又は第2のティア閾値と一致しているため(図41参照)、第1のティアから第2のティアへのデモーションと、第1のティアから第3のティアへのデモーションとのいずれも行われることはない。これに対して、第2及び第3のティア間のデモーションラインについては、対応する第2のティア閾値から少しだけ離れているため(図41参照)、第2のティアから第3のティアへのデモーションは僅かに行われることになる。
ここで、図42は、上述のティア閾値算出処理(図32)のステップSP104においてCPU25A,25Bにより実行されるPDライン算出処理の具体的な処理手順を示す。CPU25A,25Bは、この図42に示す処理手順に従って、各プロモーションライン及び各デモーションラインをそれぞれ算出する。
実際上、CPU25A,25Bは、ティア閾値算出処理のステップSP104に進むと、このPDライン算出処理を開始し、まず、常時監視している各記憶ドライブ20のレスポンス時間に基づいて、プール内のティアごとの平均レスポンス時間をそのティアの応答性能として算出する(SP130)。
続いて、CPU25A,25Bは、このとき算出した各ティアの応答性能に基づいて、各ティア間について、そのティア間でプロモーションした場合の移動効果と、デモーションした場合の移動効果とを(9)式によりそれぞれ算出する(SP131)。
次いで、CPU25A,25Bは、各ティア間のプロモーションラインを設定する(SP132〜SP135)。
具体的に、CPU25A,25Bは、ティア間を1つ選択し、ステップSP131において算出したそのティア間でプロモーションした場合の移動効果が「0」よりも大きいか否かを判断する(SP132)。
そしてCPU25A,25Bは、この判断で肯定結果を得ると、移動量パラメータを移動量効果で割った商と、第1又は第2のティア閾値とのうちの大きい方をそのティア間のプロモーションラインとして設定する(SP133)。ここで、プロモーションライン(T2→T1)は第1のティア閾値と比較し、プロモーションライン(T3→T2)は第2のティア閾値と比較し、プロモーションライン(T3→T1)は第1のティア閾値と比較する。これに対してCPU25A,25Bは、ステップSP132の判断で否定結果を得ると、カウンタ値管理テーブル45(図10)において管理している仮想ボリュームVVOLの各論理ページへのアクセス数のカウント値のうちの最大カウント値をそのティア間のプロモーションラインとして設定する(SP134)。
続いてCPU25A,25Bは、すべてのティア間についてプロモーションラインを算出し終えたか否かを判断する(SP135)。そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP132に戻り、この後、ステップSP132において選択する対象(ティア間)を順次未処理のティア間に切り替えながらステップSP132〜ステップSP135の処理を繰り返す。
そしてCPU25A,25Bは、やがてすべてのティア間についてプロモーションラインを算出し終えることによりステップSP135で肯定結果を得ると、この後、各ティア間のデモーションラインを設定する(SP136〜SP139)。
具体的に、CPU25A,25Bは、ティア間を1つ選択し、ステップSP131において算出したそのティア間でデモーションした場合の移動効果が「0」よりも大きいか否かを判断する(SP136)。
そしてCPU25A,25Bは、この判断で肯定結果を得ると、移動量パラメータを移動量効果で割った商と、第1又は第2のティア閾値とのうちの小さい方をそのティア間のプロモーションラインとして設定する(SP137)。ここで、デモーションライン(T1→T2)は第1のティア閾値と比較し、デモーションライン(T2→T3)は第2のティア閾値と比較し、デモーションライン(T1→T3)は第2のティア閾値と比較する。これに対してCPU25A,25Bは、ステップSP136の判断で否定結果を得ると、カウンタ値管理テーブル45(図10)において管理している仮想ボリュームVVOLの各論理ページへのアクセス数のカウント値のうちの第1又は第2の閾値をそのティア間のデモーションラインとして設定する(SP138)。
続いてCPU25A,25Bは、すべてのティア間についてデモーションラインを算出し終えたか否かを判断する(SP139)。そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP136に戻り、この後、この後、ステップSP136において選択する対象(ティア間)を順次未処理のティア間に切り替えながらステップSP136〜ステップSP139の処理を繰り返す。
そしてCPU25A,25Bは、やがてすべてのティア間についてデモーションラインを算出し終えることによりステップSP139で肯定結果を得ると、このPDライン算出処理を終了してティア閾値算出処理に戻る。
(3−3)ティア決定処理ST3
(3−3−1)ティア決定処理
図43は、図3のティア決定処理ST3において、ストレージ装置4の0系及び1系の各コントローラ21A,21BのCPU25A,25Bにより実行されるティア決定処理ST3(図3)の処理手順を示す。
CPU25A,25Bは、予め定められた所定時間内(例えば60分以内)にストレージ装置4内のすべての仮想ボリュームVVOL内のすべての論理ページについてチェック可能な所定周期(例えば数秒ごと)でこのティア決定処理を実行することにより、ストレージ装置4内のすべての論理ページについて、当該論理ページに割り当てる物理ページが属する最適なティアをそれぞれ決定する。
実際上、CPU25A,25Bは、このティア決定処理を開始すると、まず、予め設定されたティア決定処理を実行すべき時間をカウントダウン型のタイマにセットし(SP140)、この後、対象とすべき論理ページを選択する(SP141)。
続いて、CPU25A,25Bは、ステップSP141において選択した論理ページについて上述したプロモーション判定処理(図16)を実行する(SP142)。これによりCPU25A,25Bは、ステップSP141において選択した論理ページに格納されたデータを上位のティアにプロモーションする必要がある場合には、返却値に「実行要」を設定する一方、当該データを上位のティアにプロモーションする必要がない場合には、返却値に「実行不要」を設定する。
次いで、CPU25A,25Bは、ステップSP142において実行したプロモーション判定処理の返却値に「実行要」が設定されているか否かを判断する(SP143)。そしてCPU25A,25Bは、この判断で肯定結果を得ると、ステップSP145に進む。
これに対してCPU25A,25Bは、ステップSP143の判断で否定結果を得ると、デモーション判定処理(SP144)を実施し、この後、ステップSP145に進む。
そしてCPU25A,25Bは、この後、タイマのカウンタ値が「0」となったか否かを判断し(SP145)、この判断で否定結果を得るとステップSP141に戻り、この後、ステップSP141において選択する論理ページをラウンドロビン方式で順次他の論理ページに変更しながら、ステップSP141〜ステップSP145の処理を繰り返す。
そしてCPU25A,25Bは、やがてタイマのカウンタ値が「0」となることによりステップSP148で肯定結果を得ると、このティア決定処理を終了する。
(3−3−2)デモーション判定処理
図44は、ティア判定処理(図43)のステップSP144においてCPU25A,25Bにより実行されるデモーション判定処理の具体的な処理手順を示す。CPU25A,25Bは、この図44に示す処理手順に従って、ティア判定処理の直前のステップSP141で選択した論理ページに格納されたデータを下位のティアにデモーションすべきか否かを判定する。
すなわちCPU25A,25Bは、ティア判定処理のステップSP144に進むと、このデモーション判定処理を開始し、まず、デモーション先のティアを現在のティアよりも1つ下位のティアとする(SP150)。
続いてCPU25A,25Bは、カウンタ値管理テーブル45(図10)からかかる論理ページのカウンタ値を取得し、取得したカウンタ値が現在のティアからステップSP150においてデモーション先としたティアにデモーションするためのティア閾値(第1又は第2のティア閾値)よりも小さいか否かを判断する(SP151)。そしてCPU25A,25Bは、この判断で否定結果を得るとステップSP160に進む。
これに対してCPU25A,25Bは、ステップSP151の判断で肯定結果を得ると、ステップSP151においてカウンタ値管理テーブル45から取得したカウンタ値が、現在のティアからステップSP150においてデモーション先としたティアにデモーションする候補となるための対応するデモーションライン(第1〜第3のデモーションライン)よりも大きいか否かを判断する(SP152)。
CPU25A,25Bは、この判断で否定結果を得ると、図17について上述したLIFO50にその論理ページを登録し(SP153)、この後、かかる論理ページのデータをデモーション可能であるかの判定を最下位のティアまで行ったか否かを判断する(SP154)。そしてCPU25A,25Bは、この判断で否定結果を得ると、デモーション先を1つ下位のティアに設定する(SP160)。そしてCPU25A,25Bは、ステップSP151に戻り、この後、ステップSP151以降を同様に処理する。
なお、これ以降の処理では、ステップSP151において論理ページのカウンタ値と比較する対象として、現在のティアから直前のステップSP155においてデモーション先としたティアにデータをデモーションするためのティア閾値(第1又は第2のティア閾値)が用いられ、ステップSP152において上述のカウンタ値と比較する対象として、現在のティアから直前のステップSP155においてデモーション先としたティアにデータをデモーションするためのデモーションラインが用いられる。
これに対してCPU25A,25Bは、ステップSP154の判断で肯定結果を得ると(このことは最下位のティアまで判定したが、データが格納された論理ページのアクセス頻度がデモーションすべきアクセス頻度でなかったことを意味する)、ステップSP150又は最後に実行したステップSP155においてデモーション先としたティアに属する物理ページに格納されたデータを当該ティアよりも下位のティアにデモーションする優先再配置処理を実行する(SP157)。この優先再配置処理の具体的な処理内容は、図18について上述した緊急デモーション処理のステップSP40〜ステップSP44と同様である。
そしてCPU25A,25Bは、この後、この優先再配置処理によりステップSP151又は最後に実行したステップSP155においてデモーション先としたティアに属するいずれかの論理ページのデータを当該ティアよりも下位のティアにデモーションできたか否かを判断する(SP158)。
CPU25A,25Bは、この判断で肯定結果を得ると、返却値に「実行要」を設定し(SP159)、この後、このデモーション判定処理を終了してティア決定処理(図43)に戻る。かくして、この場合には、この後実行されるティア決定処理のステップSP145において肯定結果が得られることになる。
これに対してCPU25A,25Bは、ステップSP158の判断で否定結果を得ると、返却値に「実行不要」を設定し、この後、このデモーション判定処理を終了してティア決定処理に戻る。かくして、この場合には、この後実行されるティア決定処理のステップSP145において否定結果が得られることになる。
一方、CPU25A,25Bは、ステップSP156の判断で肯定結果を得ると、ティア管理テーブル42(図7)を参照して、ステップSP150又は最後に実行したステップSP155においてデモーション先としたティアに、そのとき対象としているページのデータをデモーションするだけの空き容量があるか否かを判断する(SP156)。
CPU25A,25Bは、この判断で否定結果を得るとステップSP157に進み、この後、ステップSP157以降を上述と同様に処理する。これに対してCPU25A,25Bは、ステップSP156の判断で肯定結果を得ると、返却値に「実行要」を設定し(SP159)、この後、このデモーション判定処理を終了してティア判定処理に戻る。
(3−4)ページ再配置処理ST4
図3のページ再配置処理ST4の具体的な処理内容は、図19について上述したページ再配置処理と同様であるため、ここでの説明は省略する。なお、図19の説明では、リード対象のデータについて再配置処理を実行したが、再配置処理が必要な他のデータについても再配置処理を実行する。
(4)本実施の形態の効果
以上のように本実施の形態による計算機システム1では、ホストI/O処理(リード処理及びライト処理)と同期して、ライト対象又はリード対象のデータを他のティアに移動する必要があるか否かのティア判定処理と、移動する必要がある場合のデータの移動処理であるページ再配置処理とを実行するため、アクセス頻度の高いデータを即座に高性能のティアに移動させることができる。かくするにつきストレージ装置4全体としての応答性能の向上をリアルタイムで図ることができる。
またこのようにホストI/O処理と同期してページ再配置処理を実行した場合、特にライト処理時には必ずキャッシュメモリ26A,26B内に移動対象のデータが格納されているため、当該データのステージングを行う必要がなく、その分、ホストI/O処理と非同期にページ再配置処理を実行する場合と比べて、ストレージ装置4の負荷を低減することができる。この結果、ホストI/O処理と非同期にページ再配置処理を実行することに起因する応答性能の低下を防止することができる。
(5)他の実施の形態
なお上述の実施の形態においては、本発明を図1のように構成されたストレージ装置に適用するようにした場合について述べたが、本発明はこれに限らず、要は、階層型データ管理技術が適用されたこの他種々の構成のストレージ装置に広く適用することができる。
また上述の実施の形態においては、ストレージ装置4内の記憶デバイス(記憶ドライブ20)として、SSD、SAS及びSATA等を適用するようにした場合について述べたが、本発明はこれに限らず、かかる記憶デバイスとして、例えばFC(Fibre Chanel)ディスク等のこの他のハードディスク装置や、光ディスクや光磁気ディスク等のディスク媒体、及びフラッシュメモリ等のSDD以外の半導体メモリ等を広く適用することができる。