以下、添付図面を参照して本発明の実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号で表示される場合もある。なお、添付図面は本発明の原理に則った具体的な実施形態と実装例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。
本実施形態では、当業者が本発明を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本発明の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
更に、本発明の実施形態は、後述されるように、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装しても良い。
なお、以後の説明では「テーブル」形式によって本発明の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
以下では「プログラム」を主語(動作主体)として本発明の実施形態における各処理について説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
本発明の各実施形態は、タスクの種類および稼働状態に応じてI/OモニタのON/OFFを制御し、高レスポンス要のタスクのデータが下位階層に配置されて性能が劣化することを防ぐことができる技術を提供する。また、各実施形態は、I/OモニタのON/OFF制御を実行する場合、ユーザがどのタスクについてI/OモニタのON/OFFを制御することを要するかについて、判断するための有効な情報を提示する。
(1)第1の実施形態
図1から図26、及び図32に基づいて、本発明による第1の実施形態について説明する。
<計算機システムの構成>
図1は、本発明の実施形態による計算機システム(ストレージシステム、ITシステムとも言う)の全体概要を示すブロック図である。
計算機システム10は、少なくとも1つのホスト計算機100(単に、「ホスト」ということもある)と、少なくとも1つの管理サーバ(「管理計算機」とも言う)200と、1つ以上のストレージ装置(「ストレージサブシステム」とも言う)400と、を有し、互いにLAN301で接続されている。また、ストレージ装置400とホスト計算機100は互いにSAN300で接続されている。なお、ホスト計算機は、複数存在してもよく、その場合は管理用のLAN301に加えてデータ転送用のLANでホスト計算機が互いに接続されていてもよい。
<ホスト計算機の内部構成>
図2Aは、ホスト計算機100の内部構成を示す図である。ホスト計算機100は、1つ以上のCPU110と、1つ以上のメモリ111と、1つ以上のSANアダプタ112と、1つ以上のLANアダプタ113と、1つ以上のストレージデバイス114と、を有し、それらは互いに内部バス115で接続されている。
ホスト計算機100は、SANアダプタ112を介してストレージ装置400と接続されている。また、ホスト計算機100は、LANアダプタ113を介して管理サーバ200に接続されている。なお、ストレージデバイス114は必ずしも備えなくてもよい。備えない場合は、ストレージ装置400内のボリュームをソフトウェアの記憶領域として用いるようにすると良い。
<管理サーバの内部構成>
図2Bは、管理サーバ200の内部構成を示す図である。管理サーバ200の内部構成はホスト計算機100と同様だが、必ずしもSANアダプタを備えていなくても良い。
管理サーバ200は、LANアダプタ212を介して、ストレージ装置400およびホスト計算機100と接続されている。
<ストレージ装置の内部構成>
図3は、ストレージ装置400の内部構成を示す図である。ストレージ装置400は、1つ以上のコントローラ410および1つ以上の物理ディスク411を有する。
コントローラ410は、1つ以上のCPU412と、1つ以上のメモリ413と、1つ以上のNVRAM414と、1つ以上のキャッシュメモリ415と、1つ以上のバックエンドインターフェース416および417と、1つ以上のLANアダプタ418と、1つ以上のSANアダプタ419と、を有し、それらは相互に内部バス420で接続されている。
コントローラ410は、バックエンドインターフェース416および417を介して物理ディスク411と接続されている。また、ストレージ装置400はLANアダプタ418を介して管理サーバ200と接続されている。また、ストレージ装置400はSANアダプタ419を介してホスト計算機100と接続されている。また、物理ディスク411はSAS (Serial Attached SCSI (Small Computer System Interface))ディスク、SATA (Serial Advanced Technology Attachment)ディスク、SSD (Solid State Drive)といった複数の種別のディスクから構成されていてもよい。
<計算機システムのソフトウェア構成>
図4は、本実施形態の計算機システム10のソフトウェア構成の概要を示すブロック図である。ホスト計算機100上では、あるアプリケーションによる1つ以上のタスク500と、1つ以上のOS(Operating System)501が動作する。これらソフトウェアはストレージデバイス114またはストレージ装置400に格納されており、メモリ111にロードされ、CPU110を用いて実行される。
また、管理サーバ200上では、管理ソフトウェア600が動作する。管理ソフトウェア600は、メモリ211にロードされ、CPU210を用いて実行される。
さらに、ストレージ装置400上には1つ以上のボリュームプール700があり、これらから作成された1つ以上の仮想ボリューム701(後述)がある。仮想ボリューム701は、SAN300を介してホスト計算機100に割り当てられている。なお、本システム構成として仮想ボリューム701だけでなく、後述の論理ボリューム(実ボリューム)が混在していてもよい。
OS501は、複数のタスク500を管理し、実行すると共に、仮想ボリューム701および論理ボリューム702を認識し、管理する。
管理ソフトウェア600は、ホスト計算機100およびストレージ装置400から構成情報を取得し、管理テーブルに格納する。管理ソフトウェア600の詳細については後述する。
<ストレージ装置のソフトウェア構成>
図5は、ストレージ装置400内のソフトウェア構成の概要を示す図である。ストレージ装置400上では、ストレージエージェント703、仮想ボリュームマネージャ704、及び論理ボリュームマネージャ705が動作している。これらは物理ディスク411またはNVRAM414に格納されており、メモリ413にロードされ、CPU412を用いて実行される。
論理ボリュームマネージャ705は、物理ディスク411から1つ以上の論理ボリューム702を作成し、論理ボリューム702と物理ディスク411の間のマッピングを管理するソフトウェアである。
仮想ボリュームマネージャ704は、ボリュームプール700に登録された論理ボリューム702から一つ以上の仮想ボリューム701を作成し、仮想ボリューム701と、論理ボリューム702の間のマッピングを管理するソフトウェアである。
仮想ボリュームマネージャ704は、仮想ボリューム701にデータの書き込みがあった際、論理ボリューム702から未使用の領域を仮想ボリューム701の書き込みがあった場所に割り当てるソフトウェアである。
<論理ボリュームと物理ディスクの関係>
図6は、論理ボリューム702と物理ディスク411の関係を示す概念図である。図6の例では、論理ボリューム702は4つの物理ディスク800、801、802、803から構成されているものとする。1−1、1−2、1−3…とラベル付けされた物理ディスク内の領域は、あらかじめ決められたサイズに区切られた領域であり、ストライプと呼ばれる。また、P1、P2…とラベル付けされた領域は、対応するストライプのパリティ情報を格納する領域であり、パリティストライプと呼ばれる。
論理ボリュームマネージャ705が、論理ボリューム702と物理ディスク411のマッピング関係を管理するために、ボリューム管理テーブルがストレージ装置400内に保持されている。ボリューム管理テーブルの詳細については後述する。
<ボリューム管理テーブル>
図7は、ストレージ装置400が保持するボリューム管理テーブルの構成例を示す図である。ボリューム管理テーブルは、論理ボリュームID列900と、ディスク列901と、RAIDレベル列902と、ストライプサイズ列903と、ディスク種別列904とによって構成される。
論理ボリュームID列900には、論理ボリュームマネージャ705が各ボリュームに割り当てられ、各ボリュームを特定・識別するための識別子(識別情報)が登録される。
ディスク列901には、論理ボリュームを構成する物理ディスクを特定・識別するための識別子(識別情報)が登録される。
RAIDレベル列902には、論理ボリュームの構成に使用されているRAIDレベルが登録される。
ストライプサイズ列には、論理ボリュームの構成に使用されているストライプのサイズが登録される。
ディスク種別列904には論理ボリュームを構成する物理ディスクの種別が登録される。
<仮想ボリュームと論理ボリュームの関係>
図8は、仮想ボリューム701と論理ボリューム702の関係を示す概念図である。多くの場合、仮想ボリュームへの領域割り当ては物理ディスクの領域を直接割り当てるのではなく、図8のように論理ボリュームを構成した後、論理ボリューム内の一部領域を割り当てる形態を取る。
また、仮想ボリュームマネージャ704(図5)は、仮想ボリューム701とボリュームプール700に含まれる論理ボリューム702との関係や、ボリュームプール内における論理ボリューム702の階層および使用状況を管理する。このため、仮想ボリューム管理テーブル1100、ボリュームプール管理テーブル1200、プール階層管理テーブル1300、未使用領域管理テーブル1400がストレージ装置400内に保持される。なお、仮想ボリューム管理テーブル1100、ボリュームプール管理テーブル1200、プール階層管理テーブル1300、未使用領域管理テーブル1400の詳細については後述する。
<仮想ボリューム管理テーブルの構成例>
図9は、ストレージ装置400が保持する仮想ボリューム管理テーブル1100の構成例を示す図である。仮想ボリューム管理テーブル1100は、仮想ボリュームID列1101と、開始LBA列1102と、終了LBA列1103と、プールID列1104と、ページID列1105と、によって構成される。
仮想ボリュームID列1101には、仮想ボリュームに付与され、それを特定・識別するための識別子(識別情報)が登録される。
開始LBA列1102には、仮想ボリューム内の領域の開始LBAが登録される。終了LBA列1103には、仮想ボリューム内の領域の終了LBAが登録される。
プールID列1104には、仮想ボリュームに対して領域を割り当てているボリュームプールを特定・識別するための識別子(識別情報)が登録される。
ページID列1105には、仮想ボリューム内の各領域(開始LBAと終了LBAで指定された領域)に対応するページ(詳細後述)を特定・識別するための識別子(識別情報)が登録される。
<ボリュームプール管理テーブル>
図10は、ストレージ装置400が保持するボリュームプール管理テーブル1200の構成例を示す図である。
ボリュームプール管理テーブル1200は、プールID列1201と、ページID列1202と、論理ボリュームID列1203と、開始LBA列1204と、終了LBA列1205と、ストレージI/O数列1206と、によって構成される。
プールID列1201には、ボリュームプールに付与され、それを特定・識別するための識別子(識別情報)が登録される。
ページID列1202には、ページに付与され、それを特定・識別するための識別子(識別情報)が登録される。なお、ここでページとは、仮想ボリューム701に対してボリュームプール700から割り当てられる領域の単位である。各ページは、ボリュームプール内のいずれかの論理ボリュームに配置される。
論理ボリュームID列1203には、ページの配置先の論理ボリュームを特定・識別するための識別子(識別情報)が登録される。
開始LBA列1204には、論理ボリューム内におけるページの開始LBAが登録される。また、終了LBA列1205には、論理ボリューム内におけるページの終了LBAが登録される。開始LBA及び終了LBAによって各ページのサイズを知ることができる。
一般的に、ページサイズは固定であるが、開始・終了LBAを適宜設定することにより、各ページを異なるサイズとして登録することもできる。
ストレージI/O数列1206には、各ページに対して発行されたI/O数が記録される。図10では、プール2についてはI/O数カウント不要と設定されているため、プール2のストレージI/O数1206は全て「0」となっている。ストレージI/O数1206の詳細については後述する。
<プール階層管理テーブル>
図11は、ストレージ装置400が保持するプール階層管理テーブル1300の構成例を示す図である。
プール階層管理テーブル1300は、プールID列1301と、階層列1302と、論理ボリュームID列1303と、によって構成される。
プールID列1301には、ボリュームプールを特定・識別するための識別子(識別情報)が登録される。
階層列1302には、ボリュームプール内に設定されている階層が登録される。なお、階層は、論理ボリュームのディスク種別やRAIDレベルに基づいて決定されるが、ユーザが定義してもよい。
論理ボリュームID列1303には、各階層に所属する論理ボリュームを特定・識別するための識別子(識別情報)が登録される。
図11からは、例えば、プール1が、Tier0とTier1の2つの階層から構成され、Tier0は論理ボリューム1及び2、Tier1は論理ボリューム0及び3から構成されていることが分かる。
<未使用領域管理テーブル>
図12は、ストレージ装置400が保持する未使用領域管理テーブル1400の構成例を示す図である。
未使用領域管理テーブル1400は、各論理ボリュームにおいて使用されていない領域を管理するテーブルであり、論理ボリュームID列1401と、開始LBA列1402と、終了LBA列1403と、によって構成される。
論理ボリュームID列1401には、ボリュームプール700に登録されている論理ボリュームを特定・識別するための識別子(識別情報)が登録される。
開始LBA列1402および終了LBA列1403には、論理ボリューム702の中で未使用の領域1004の開始LBAおよび終了LBA列がそれぞれ登録される。
通常、各論理ボリュームの領域はアドレス順に論理ボリュームに割り当てられて使用されていくが、使用中のボリュームが解放されて未使用領域になる場合もある。このため、図12に示されるように、未使用領域が不連続になる場合がある。
<仮想ボリュームI/OモニタON/OFF管理テーブル>
仮想ボリュームマネージャ704は、ホスト計算機100から、仮想ボリューム701を構成するページに対して発行されたI/O数(ストレージI/O数)を記録し、記録したストレージI/O数に基づいて定期的にページの配置先の階層を決定しページを移動する。本明細書では、ストレージI/O数を記録することをI/Oモニタ、ページの配置先の階層を決定しページを移動することをページ階層再配置(再配置処理)と呼ぶこととする。
仮想ボリュームマネージャ704は、I/Oモニタおよびページ階層再配置のため、前述の仮想ボリューム管理テーブル1100、ボリュームプール管理テーブル1200、プール階層管理テーブル1300、未使用領域管理テーブル1400に加え、ストレージ装置400に保持されている仮想ボリュームI/OモニタON/OFF管理テーブルを参照する。
図13は、仮想ボリュームI/OモニタON/OFF管理テーブル1500の構成例を示す図である。
仮想ボリュームI/OモニタON/OFF管理テーブル1500は、仮想ボリュームID列1501と、I/OモニタON/OFF列1502と、によって構成される。
仮想ボリュームID列1501には、仮想ボリュームを特定・識別するための識別子(識別情報)が登録される。
I/OモニタON/OFF列1502には、I/Oモニタ処理時に当該仮想ボリュームに対するI/O数を記録する(ON)か否(OFF)かが登録される。なお、このI/OモニタON/OFF列1502の情報に関しては、初期値としてデフォルト値が設定されているが、システムを順次運用していくうちに、後述の図19の処理によって値(ON/OFF)は変化するようになっている。
<I/Oモニタ処理>
図14は、仮想ボリュームマネージャ704によって実行されるI/Oモニタ処理を説明するためのフローチャートである。本処理はホスト計算機100からストレージ装置400内の仮想ボリューム701に対してI/Oが発行されたことを契機として開始される(ステップ1600)。以下、ステップごとに説明を記述する。
ステップ1601:仮想ボリュームマネージャ704は、仮想ボリュームI/OモニタON/OFF管理テーブル1500を参照し、I/O発行先の仮想ボリュームのI/OモニタがONになっているかを確認する。ONであれば(ステップ1601でYesの場合)、処理はステップ1602に移行する。OFFであれば(ステップS1601でNoの場合)、処理は終了(ステップ1603)する。
ステップ1602:仮想ボリュームマネージャ704は、ボリュームプール管理テーブル1200の、I/O発行先のページのページIDおよびボリュームプールのプールIDで決定される行のストレージI/O数列1206の数字を1つ増加させる。
なお、ストレージI/O数の最新の傾向を得るため、ストレージI/O数列1206は一定時間ごとに0にリセットされるが、このときリセット前のストレージI/O数を履歴として保持しておいてもよい。この場合、ボリュームプール管理テーブル1200はそのストレージI/O数が記録された時間帯情報を保持する。つまり、この場合、ボリューム管理テーブル1200は、図23のようになる。
また、I/OモニタのON/OFFは仮想ボリューム単位でなく、ホスト計算機100のSANアダプタ112の識別子であるWWN単位で実行してもよい。この場合、ステップ1601において、仮想ボリュームI/OモニタON/OFF管理テーブル1500の代わりに、仮想ボリュームI/OモニタON/OFF管理テーブル1500の仮想ボリュームID列1501をホストWWN列で置き換えたものを使用し、I/O発行元のWWNによってI/O記録の有無を判定する。つまり、I/O発行元のI/O数がカウントされることになる。
<ページ階層再配置処理>
図15は、仮想ボリュームマネージャ704によって実行されるページ階層再配置処理を説明するためのフローチャートである。本処理は一定時間の経過、あるいはユーザの手動実行を契機として、各ボリュームプールに対して実行開始される(ステップ1700)。以下、ステップごとに説明を記述する。
ステップ1701:仮想ボリュームマネージャ704は、ボリュームプール管理テーブル1200のストレージI/O数列1206に記録された、各ページのストレージI/O数に基づいて、各ページの配置先階層を決定する。
配置先階層の決定方法は、例えば、ストレージI/O数の大きい順に上位階層から配置先を割り振る方法でも良いし、ストレージI/O数の小さい順に下位階層から配置先を割り振る方法でもよい。また、ストレージI/O数としてストレージI/O数列1206に記録された最新の記録だけでなく、過去のストレージI/O数履歴も考慮して各ページの配置先の階層を決定しても良いし、またストレージI/O数だけでなくその他の指標を利用して決定しても良い。履歴を考慮する場合には、過去数時間分のI/O数の平均値を取るようにする。このように履歴を考慮すれば、瞬間的にI/O数が増加しているが、他の期間(時間帯)ではほとんどI/O数がカウントされていない場合に再配置しないようにすることができる。
さらに、例えば、ホスト計算機100からのリード/ライト回数の合計値(すなわちストレージI/O数)を考慮するのではなく、リード回数のみを考慮して配置先の階層を決定しても良い。また、ランダムアクセスの回数や、シーケンシャルリードの回数等の指標を考慮して、配置先の階層を決定しても良い。I/O数、ランダムアクセス数、シーケンシャルリード回数等を、まとめてアクセスの性質やアクセス特性ということができる。
なお、モニタOFFに設定されている仮想ボリュームのページであっても再配置処理の対象になる。当該ページについてはI/O数=0であるから、下位階層に移行される場合がある。
ステップ1702:仮想ボリュームマネージャ704は、ステップ1701で決定した各ページの階層配置に基づき、ページの移動(再配置)を実行する。この際、決定した階層と、現在配置されている階層とが異なるページのみ、移動の対象となる。なお、各ページの現在配置されている階層は、ボリュームプール管理テーブル1200およびプール階層管理テーブル1300を組み合わせることで確認できる。
ページの移動は、各ページに対する以下の3つのトランザクション処理からなる。つまり、(i)ページが現在配置されている論理ボリュームの領域(旧領域)のデータを、決定した階層に所属する論理ボリュームの未使用領域(新領域)にコピーすること、(ii)ボリュームプール管理テーブル1200の論理ボリュームID列1203、開始LBA列1204、終了LBA列1205を新領域の値に更新すること、(iii)再配置ページ管理テーブル(詳細後述)を更新すること、である。(i)〜(iii)の処理が全ての移動対象のページに対して適用された後、処理は終了する(ステップ1703)。
<再配置ページ管理テーブル>
図16は、ストレージ装置400が保持する再配置ページ管理テーブル1800の構成例を示す図である。
再配置ページ管理テーブル1800は、ページ階層再配置処理において階層を移動したページの移動履歴の情報を保持するテーブルであって、プールID列1801と、ページID列1802と、移動元階層1803と、移動先階層1804とによって構成される。
プールID列には、ボリュームプールを特定・識別するための識別子(識別情報)が登録される。
ページID列には、ページ階層再配置処理において階層を移動されたページを特定・識別するための識別子(識別情報)が登録される。
移動元階層列1803および移動先階層列1804にはそれぞれ、ページ階層再配置処理前後のページ配置先階層が記録される。移動先階層1804は、次の再配置処理時には、移動元階層1803となる。
なお、再配置ページ管理テーブル1800は、直前に実行したページ階層再配置処理の記録だけでなく、それより過去のページ階層再配置処理の履歴を保持してもよい。この場合、再配置ページ管理テーブル1800は、ページ階層再配置処理が実行された時刻を保持する。また、図16では、格上げ及び格下げのみ示されているが、階層が変化しない場合があっても良い。
<ホストボリューム管理テーブル>
ストレージエージェント703は、論理ボリューム702および仮想ボリューム701にストレージボリュームID(後述)を付与し、管理する。論理ボリューム702および仮想ボリューム701を総称してストレージボリュームと呼ぶ。
図17は、管理サーバ200が保持するホストボリューム管理テーブル1900の構成例を示す図である。
ホストボリューム管理テーブル1900は、管理ソフトウェア600がホスト計算機100から情報を取得し作成する。ホストボリューム管理テーブル1900は、ホストID列1901と、ホストWWN列1902と、ホストボリュームID列1903と、ストレージボリュームID列1904と、によって構成される。
ホストID列1901には、管理ソフトウェア600が付与する、ホスト計算機100を特定・識別するための識別子(識別情報)が登録される。
ホストWWN列1902には、ホスト計算機100のSANアダプタ112を特定・識別するための識別子(識別情報)が登録される。この情報は、WWN単位でI/O数をモニタするときに用いることができる。
ホストボリュームID列1903には、ホスト計算機100が認識し、付与するボリュームを特定・識別するための識別子(識別情報)が登録される。以降、ホスト計算機100が認識するボリュームをホストボリュームと呼ぶ。
ストレージボリュームID列1904には、ホストボリュームに対応するストレージボリュームを特定・識別するための識別子(識別情報)が登録される。当該ストレージボリュームIDは、各ストレージボリュームに対して、ストレージエージェント703によって付与される情報である。
なお、ストレージボリュームIDは、ストレージエージェント703が付与・保持する情報であるが、OS501は、例えば、SCSI Inquiryを利用してストレージ装置400から取得し、保持する。
簡単のため、図17においてストレージボリュームIDは、「仮想ボリューム0」「論理ボリューム3」といった形で表現しているが、実際には、多くの場合、ストレージエージェント703が仮想ボリュームと論理ボリュームの区別なく、通し番号で付与し、管理する。この場合、管理ソフトウェア600は、ストレージボリュームIDと、仮想ボリュームIDおよび論理ボリュームIDとの対応を、ストレージエージェント703に問い合わせることで取得できる。このように、ストレージボリュームIDと仮想ボリュームIDおよび論理ボリュームIDは容易に対応関係を特定できるため、以降「ストレージボリュームIDから特定した仮想ボリュームID」または「ストレージボリュームIDから特定した論理ボリュームID」と記載すべきところを、単に仮想ボリュームIDまたは論理ボリュームIDと表現することがある。
また、図17では、ホストボリュームとストレージボリュームが1対1に対応しているが、必ずしも1対1でなくても良く、1対多、多対1であっても良い。
<I/Oモニタ要否管理テーブル>
図18は、管理サーバ200が保持し、管理ソフトウェア600が参照するI/Oモニタ要否管理テーブル2000の構成例を示す図である。
I/Oモニタ要否管理テーブル2000は、ホストID列2001と、タスク名列2002と、タスク種別列2003と、I/Oモニタ要否列2004とによって構成される。
ホストID列2001には、管理ソフトウェア600が付与し、ホスト計算機100を特定・識別するための識別子(識別情報)が登録される。
タスク名列2002には、OS501上でタスク500を区別する名称が登録される。
タスク種別列2003には、タスク500の一般的な分類が登録される。
I/Oモニタ要否列2004には、各タスクが発行するI/O数を記録すべきか否かが登録される。この情報は、例えば、初期値としてデフォルトで全て「要」となっており(特定のタスクについてモニタの要否が最初から分かっている場合には、管理者が「要」或いは「否」に設定するようにしても良い)、計算機システム10を運用していくうちに、後述の図21の表示に基づいて、ユーザ(管理者)が決めるようにしても良いし、後述の図24や26の処理によって自動的にモニタ要否を「否」に決定するようにしても良い。
なお、I/Oモニタ要否管理テーブル2000は、ユーザが管理ソフトウェア600に入力して作成する方式でもよいし、管理ソフトウェア600がOS501上で稼働するタスク500を検出して自動的に作成する方式でもよい。また、I/Oモニタ要否管理テーブル2000はI/OモニタのON/OFF制御処理の前に作成される。
一般的に、夜間集計バッチ処理はモニタ不要になりやすいが、バッチ処理も時間通りに完了するとは限らないため、モニタを要する場合もある。例えば、バッチ処理で、ボリューム対するアクセス数が多く、終了予定時間に間に合わない可能性がある場合に、アクセススピードが遅い階層に各ページが配置されたままであると、不都合である。この場合には、モニタして再配置処理を可能にした方が効率的である。このように、I/Oモニタしなくても良いタスクは必ずしも表面上明らかでない場合もあり、本発明の処理が非常に有効となってくるのである。
<I/OモニタON/OFF制御処理>
図19は、管理サーバ200において、管理ソフトウェア600が実行するI/OモニタのON/OFF制御処理(例)を説明するためのフローチャートである。本処理は、定期的に、ホスト毎に実行開始される(ステップ2100)。ここで、「定期的」とは、周期的に実行する場合、各タスクの実行起動時、ユーザ設定された時間に実行する場合等を含み、等間隔で実行する場合だけでなく、任意のタイミングで実行する場合を含むものである。なお、ストレージI/O数だけでなくその他の指標のモニタON/OFFを制御するようにしても良い。例えば、ホスト計算機100からのリード/ライト回数の合計値(すなわちストレージI/O数)のモニタON/OFFを制御するのではなく、リード回数のみのモニタON/OFFを制御する。また、ランダムアクセスの回数や、シーケンシャルリードの回数等の指標のON/OFFであっても良い。つまり、本実施形態では、アクセスの性質或いはアクセス特性のモニタON/OFFを制御すると言うことが可能である。以下、I/OモニタのON/OFFの制御について、ステップごとに説明を記述する。
ステップ2101:管理ソフトウェア600は、各ホスト計算機100と通信し、ホスト計算機100上のOS501から、ホスト計算機100毎のタスク稼働情報2200(図20参照)を取得する。
ステップ2102:管理ソフトウェア600は、取得したタスク稼働情報において、「稼働状態2202がON」かつ「I/Oモニタ要否管理テーブル2000においてI/Oモニタ要否列2004の値が「否」である」ようなタスクが1つでも存在するかを判定する。これは、I/Oモニタすべきでないタスクが動いている仮想ボリュームについてはI/OモニタをOFFにする趣旨である。なお、モニタOFFの条件として「稼働状態2202がON」の代わりに「ホストI/O発行量2203が閾値以上であるもの」などとしてもよい。また「1つでも存在するかを判定する」としたが「閾値(例えば、「否」であるタスクが3つ)以上存在する」などとしても良く、また、全てのタスクが「否」でないとモニタOFFとしないようにしても良い。ステップ2102で判定結果がyesであった場合、処理はステップ2103に進み、判定結果がnoであった場合、処理はステップ2104に進む。
ステップ2103:管理ソフトウェア600は、ホスト計算機100に割り当てられた仮想ボリュームのI/OモニタをOFFにする。具体的には、まず、管理ソフトウェア600は、ホストボリューム管理テーブル1900(図17)からホスト計算機100に割り当てられた仮想ボリュームの仮想ボリュームIDを特定し、ストレージ装置400に対して仮想ボリュームIDおよびI/OモニタのOFF命令を送信する。そして、そのOFF命令を受信したストレージ装置400は、仮想ボリュームI/OモニタON/OFF管理テーブル1500(図13)の該当する仮想ボリュームIDのI/OモニタON/OFF列1502の値をOFFにする。
ステップ2104:管理ソフトウェア600は、ホスト計算機100に割り当てられた仮想ボリュームのI/Oモニタ1502をONにする。具体的には、まず、管理ソフトウェア600は、ホストボリューム管理テーブル1900からホスト計算機100に割り当てられた仮想ボリュームの仮想ボリュームIDを特定し、ストレージ装置400に対して仮想ボリュームIDを含むI/OモニタのON命令を送信する。そして、そのON命令を受信したストレージ装置400は、仮想ボリュームI/OモニタON/OFF管理テーブル1500の該当する仮想ボリュームIDのI/OモニタON/OFF列1502の値をONにする。
<タスク稼働情報>
図20は、ホスト計算機毎のタスク稼働情報2200の例を示す図である。タスク稼働情報2200は、タスク名2201と、稼働状態2202と、ホストI/O発行量2203とによって構成される。
タスク名2201は、OS501上でタスク500を区別する名称を特定するための情報である。
稼働状態2202は、各タスクが稼働している(ON)か否(OFF)かを示す情報である。
ホストI/O発行量2203は、各タスクがOS501上で発行している時間当たりI/O数を示す情報である。
なお、タスク稼働情報2200は、メモリ使用量等、他の情報を含んでいてもよい。
<I/OモニタON/OFF判断用情報表示画面(GUI)>
図21は、管理サーバ200において、管理ソフトウェア600が表示する、I/OモニタON/OFF判断用情報表示画面2300の構成例を示す図である。I/OモニタON/OFF判断用情報表示画面2300は、ユーザがI/Oモニタ要否管理テーブル2000を入力する際に、どのタスクのI/OモニタをOFFにすべきかを判断するために使用する画面である。図21は、仮想ボリューム701のプール毎に再配置発生量を管理するためのユーザインタフェースとなっている。なお、プール単位で再配置発生量をモニタするのは、第1の実施形態だけでなく、第2乃至第4の実施形態でも同様である。
I/OモニタON/OFF判断用情報表示画面2300は大きく分けて3つの構成要素からなる。すなわち、プール内再配置発生量グラフ2301と、ホスト内タスクI/O比率グラフ2306と、全ホスト階層格上げページI/O寄与率グラフ2307である。なお、以下の記述においてホスト内タスクI/O比率グラフ2306、及び全ホスト階層格上げページI/O寄与率グラフ2307は、特に階層格上げ(下位階層から上位階層への移動)に注目しているが、階層格下げ(上位階層から下位階層への移動)に関しても、以降で述べる計算により同様のグラフを表示してもよい。また、以降で述べる計算は一例であり、ユーザがプール内再配置発生量グラフ2301、ホスト内タスクI/O比率グラフ2306、全ホスト階層格上げページI/O寄与率グラフ2307の各グラフから、以降で述べるのと同等の判断をできるのであれば、別の計算方法でもよい。
(i)プール内再配置発生量グラフ2301
プール内再配置発生量グラフ2301は、ボリュームプール700の各時間帯でのページ階層再配置処理ごとに、階層格上げページ群(すなわち下位階層から上位階層に移動された一つ以上のページ)の合計容量(階層格上げ容量2304)およびそのページ群が割り当てられたホスト計算機の内訳2302を、ページ階層再配置処理が実行された時間帯ごとに表示する。また、階層格下げページ群(すなわち上位階層から下位階層に移動された1つ以上のページ)についても同様の情報を表示する(すなわち階層格下げ容量2305およびそのページ群が割り当てられたホスト計算機の内訳2303)。格上げページ或いは格下げページの別は再配置ページ管理テーブル1800(図16参照)から判断することができる。また、ボリュームプール管理テーブル1200(図10)から、各ページのLBAの範囲が分かるので、これに基づいて各ページの容量を算出することができる。また、どのページがどのホスト計算機に割り当てられているかは、仮想ボリューム管理テーブル1100(図9)を参照して、ページIDに対応する仮想ボリュームを特定し、その仮想ボリュームIDが割り当てられたホスト計算機を、ホストボリューム管理テーブル(図17)を参照して取得することにより、決定することができる。
ユーザ(管理者)は、プール内再配置発生量グラフ2301により、どのホスト計算機100が階層格上げおよび階層格下げの要因になっているかを判断できる。また、プール内再配置発生量グラフ2301は、再配置容量管理テーブル2400(図22参照)に基づいて表示される。
(ii)ホスト内タスクI/O比率グラフ2306
ホスト内タスクI/O比率グラフ2306は、例えば、プール内再配置発生量グラフ2301上の、確認したい時間帯におけるホスト計算機(例えば、24:00の「格上げのホスト3」)を選択することにより表示されるグラフである。
ホスト内タスクI/O比率グラフ2306は、ページ階層再配置処理の実行されたある時間帯における「各ホスト計算機100における各タスク500のホストI/O発行量の比率」を示すものである。
ユーザは、ホスト内タスクI/O比率グラフ2306により、ある時間帯のページ階層再配置処理において、各ホスト計算機100に対応するページ群の階層格上げの要因となったタスク500を判断できる。図21に示されるように、24:00のホスト3の再配置処理では、アンチウィルスAが要因で格上げとなったことが分かる。
ホストI/O発行量の比率については、当該ページ階層再配置処理のステップ1701において、管理ソフトウェア600が、ページの配置先階層の決定に用いたストレージI/O数を記録した時間帯における、各タスク500のホストI/O発行量に基づいて計算する。例えば、ステップ1701において、最新のストレージI/O数だけでなく、履歴として保持された過去のストレージI/O数も利用した場合、過去のストレージI/O数も計算に含まれる。ただし、多くの場合、過去のストレージI/O数は最新のストレージI/O数よりページ再配置処理における考慮の対象として重要性が低い。このため、仮想ボリュームマネージャ704はステップ1701実行時に、適当な定数(重み係数)を過去のストレージI/O数に乗算して、最新のストレージI/O数より寄与率を低くするようにしても良い。このような場合、管理ソフトウェア600が「各ホスト計算機100における各タスク500のホストI/O発行量の比率」を計算する際に、ステップ1701で仮想ボリュームマネージャ704が過去のストレージI/O数に対して乗算したのと同じ係数を、当該時間帯の各タスクのホストI/O発行量に乗算する。なお、「各ホスト計算機100における各タスク500のホストI/O発行量の比率」の計算は、タスク稼働情報管理テーブル2500(図23参照)に基づいて実行される。
ここで、タスク稼働情報管理テーブル2500を用いて「24時のhost3のホスト内タスクI/O比率グラフ2306の表示に用いる、ホストI/O発行量の比率」の計算の例を簡単に説明する。例えば、24時のページ階層再配置処理において、ステップ1701でページの配置先階層の決定に用いられたストレージI/O数が18時から24時に記録されているとする(なおストレージI/O数が記録された時間帯は仮想ボリュームマネージャ704から取得できる)。管理ソフトウェア600は、タスク稼働情報管理テーブル2500のhost3の各タスク、すなわちOLTP3とアンチウィルスAのそれぞれについて、18時から24時のホストI/O発行量を合計する。この合計値の比率が「24時のhost3のホスト内タスクI/O比率グラフ2306の表示に用いる、ホストI/O発行量の比率」となる。
(iii)全ホスト階層格上げページI/O寄与率グラフ2307
全ホスト階層格上げページI/O寄与率グラフ2307は、例えば、プール内再配置発生量グラフ2301上の、確認したい時間帯のホスト計算機(例えば、6:00の「格上げのホスト3」及び「格上げのホスト2」)を選択することにより表示されるグラフである。
全ホスト階層格上げページI/O寄与率グラフ2307は、ページ階層再配置処理の実行された時間帯ごとに、「全ホスト計算機100における各タスク500の階層格上げ寄与率」を示すものである。
ユーザは、全ホスト階層格上げページI/O寄与率グラフ2307を参照することにより、ある時間帯のページ階層再配置処理において、どのホスト計算機100のどのタスク500が階層格上げの要因になったかを判断できる。図21に示されるように、6:00の再配置処理では、ホスト2のOLTP2が支配的であり、これが格上げの要因となったことが分かる。従って、OLTP2の処理が重要であればI/Oモニタ要否を「要」のままにし、重要でなければ「否」に設定すれば良いことになる。なお、割合が少ないOLTP3やアンチウィルスAを「否」にしても、下位階層に配置されてしまうことを防止することによる性能劣化防止の効果は少ないと言える。
なお、全ホスト階層格上げページI/O寄与率グラフ2307で表示される「全ホスト計算機100における各タスク500の階層格上げ寄与率」は、ホスト内タスクI/O比率グラフ2306で表示する「各ホスト計算機100における各タスク500のホストI/O発行量の比率」と「階層格上げ容量2304のホスト計算機の内訳2302」とから、管理ソフトウェア600が計算する。すなわち、「階層格上げ容量2304のホスト計算機の内訳2302」の比率を「各ホスト計算機100における各タスク500のホストI/O発行量の比率」に対して、乗算したものが「全ホスト計算機100における各タスク500の階層格上げ寄与率」である。
ここで、「全ホスト計算機100における各タスク500の階層格上げ寄与率」の計算の例を示す。階層格上げ容量2304が100GBであり、その内訳がhost2:70GB、host3:30GBであった場合、「階層格上げ容量2304のホスト計算機の内訳2302」の比率は、host2:70%、host3:30%となる。「各ホスト計算機100における各タスク500のホストI/O発行量の比率」が、それぞれ、host2においてOLTP2:100%、host3においてアンチウィルスA:40%、OLTP3:60%である場合、「全ホスト計算機100における各タスク500の階層格上げ寄与率」は、OLTP2:70%(=70%×100%)、アンチウィルスA:12%(=30%×40%)、OLTP3:18%(=30%×60%)となる。
<再配置容量管理テーブル>
図22は、管理ソフトウェア600が作成し、管理サーバ200内に保持される、再配置容量管理テーブル2400の構成例を示す図である。
再配置容量管理テーブル2400は、プールID列2401と、ホストID列2402と、再配置時間帯列2403と、階層格上げ容量列2404と、階層格下げ容量列2405とによって構成される。
プールID列2401には、ボリュームプール700を特定・識別するための識別子(識別情報)が登録される。
ホストID列2402には、プールID列2401の値によって特定されるボリュームプールから作成された仮想ボリュームが割り当てられているホスト計算機を特定・識別するための識別子(識別情報)が登録される。
再配置時間帯列2403には、ストレージ装置400においてページ階層再配置処理が実行された時間帯を示す情報が登録される。
階層格上げ容量列2404および階層格下げ容量列2405には、ページ階層再配置処理において、下位階層から上位階層、および上位階層から下位階層に移動されたページ群の合計容量がそれぞれ登録される。
階層格上げ容量列2404および階層格下げ容量列2405の値については、管理ソフトウェア600が、ホストボリューム管理テーブル1900と、ストレージ装置400から取得する仮想ボリューム管理テーブル1100と、ボリュームプール管理テーブル1200と、再配置ページ管理テーブル1800とにより計算する。例えば「pool1のhost1の階層格上げ容量」を計算する場合、再配置ページ管理テーブル1800に登録されたpool1のページ群のうち、「移動先階層列1804の値が移動元階層列1803より上位」であり、かつ「対応する仮想ボリュームの割り当て先のホスト計算機がhost1であるもの」が特定される。この特定は仮想ボリューム管理テーブル1100およびホストボリューム管理テーブル1900を組み合わせることで実行できる。特定した各ページの容量をボリュームプール管理テーブル1200から取得し、合計することで「pool1のhost1の階層格上げ容量」を計算できる。
<タスク稼働情報管理テーブル>
図23は、管理サーバ200が保持する、タスク稼働情報管理テーブル2500の構成例を示す図である。
タスク稼働情報管理テーブル2500は、各ホスト計算機100のタスク稼働情報2200の履歴情報を保持しており、管理ソフトウェア600が各ホスト計算機100から定期的にタスク稼働情報2200を取得することにより、生成・更新されるテーブルである。
タスク稼働情報管理テーブル2500は、ホストID列2501と、タスク名列2502と、稼働状態列2503と、ホストI/O発行量列2504と、採取時刻列2505と、によって構成される。
ホストID列2501には、ホスト計算機100を特定・識別するための識別子(識別情報)が登録される。
タスク名列2502、稼働状態列2503、及びホストI/O発行量列2504に登録される情報は、タスク稼働情報2200における同名称の項目と同じであり、ここでは説明を省略する。
採取時刻列2505には、管理ソフトウェア600がタスク稼働情報2200を取得した時刻が登録される。
<I/OモニタOFF推奨表示処理(I)>
図24は、I/OモニタOFF推奨表示処理(例)を説明するためのフローチャートである。管理ソフトウェア600は、本処理により、ユーザに対してI/OモニタをOFFとすべきタスク500を自動的に提示する。図21では、表示された各グラフによりユーザ(管理者)がI/OモニタをOFFとするタスクを判断しているので、自動的に対象のタスクを提示する点で図21の場合と異なり、ユーザが判断しなくても良いという利点がある。
本処理によって提示される、I/OモニタをOFFとすべきタスク500は、階層格上げを発生させており、かつ一般的にI/OモニタをOFFとすべき種別のタスクである。また、本処理は、定期的あるいはユーザの指示を契機として、再配置容量管理テーブル2400のプール毎に実行される(ステップ2600)。ただしステップ2600の前に、少なくとも一度はページ階層再配置処理が実行されており、再配置容量管理テーブル2400やタスク稼働情報管理テーブル2500にデータが格納されている必要がある。ここで、「定期的」の意味については上述した通りである。以下、ステップごとに説明を記述する。
ステップ2601:管理ソフトウェア600は、再配置容量管理テーブル2400を参照し、階層格上げ容量列2404の値が所定の閾値を超過しているホスト計算機100およびその再配置時間帯を検索する。例えば、閾値を20GB(以上)とすると、再配置容量管理テーブル2400からは、20:00-24:00のホスト1、12:00-18:00のホスト2、6:00-12:00のホスト2、24:00-6:00のホスト3が検出される。
ステップ2602:管理ソフトウェア600は、ステップ2601の検索で見つかった各「ホスト計算機100および再配置時間帯」について、「各ホスト計算機100における各タスク500のホストI/O発行量の比率」を計算する。なお、「各ホスト計算機100における各タスク500のホストI/O発行量の比率」はホスト内タスクI/O比率グラフ2306の表示時に用いるものと同じである。
ステップ2603:管理ソフトウェア600は、ステップ2602の計算結果(各「ホスト計算機100および再配置時間帯」に対する「各ホスト計算機100における各タスク500のホストI/O発行量の比率」)を用いて、「タスク種別毎I/OモニタOFF候補管理テーブル2700(図25)にI/OモニタOFF候補として登録されている種別のタスクである」かつ「「各ホスト計算機100における各タスク500のホストI/O発行量の比率」が所定の閾値を超過している」ようなタスク500を検索する。
ステップ2604:管理ソフトウェア600は、ステップ2603の検索で得られたタスク500があれば、I/OモニタをOFFとすべきタスクとしてユーザに提示する。
なお、図32は、ステップ2604において提示されるI/Oモニタ制御設定推奨表示画面3400の構成例を示す図である。I/Oモニタ制御設定推奨表示画面3400は、ホスト名3401と、タスク名3402と、I/OモニタOFFチェックボックス3403と、実行ボタン3404と、キャンセルボタン3405とによって構成される。
ホスト名3401及びタスク名3402には、ステップ2603の検索で得た結果が表示される。
ユーザは、I/OモニタOFFチェックボックス3403にチェックを入れ、実行ボタン3404を押下することにより、当該タスクのI/OモニタをOFFにすることができるようになっている。すなわち、I/Oモニタ要否管理テーブル2000における当該タスクの行のI/Oモニタ要否列2004の値を「否」に変更できる。また、これ以外の情報を表示してもよい。さらに、本ステップにおいてユーザにI/OモニタをOFFとすべきタスクを提示するだけでなく、自動的にI/OモニタをOFFとしてもよい。
<タスク種別毎I/OモニタOFF候補管理テーブル>
図25は、管理サーバ200で保持され、管理ソフトウェア600が参照するタスク種別毎I/OモニタOFF候補管理テーブル2700の構成例を示す図である。
タスク種別毎I/OモニタOFF候補管理テーブル2700は、タスク種別列2701と、I/OモニタOFF候補列2702とにより構成される。
タスク種別列2701には、ホスト計算機100上で実行されるタスクの一般的な種別が登録される。
I/OモニタOFF候補列2702には、各タスク種別が、一般的にI/OモニタOFFとすべき(yes)か否(no)かが登録される。例えば、一般的にインデックス構築のタスクは、インデックスを構築するために多量のI/Oを発行するが、本来高レスポンスが不要なデータに対してもI/Oを発行するため、このI/Oは記録すべきではない(I/OモニタOFFとすべき)。なお、タスク種別毎I/OモニタOFF候補管理テーブル2700は管理ソフトウェア600が初めから固定値(Default値)として保持していてもよいし、ユーザが適宜入力してもよい。
<I/OモニタOFF推奨表示処理(II)>
図26は、図24とは別のI/OモニタOFF推奨表示処理を説明するためのフローチャートである。管理ソフトウェア600は本処理により、ユーザに対してI/OモニタをOFFとすべきタスク500を提示する。本処理によって提示される、I/OモニタをOFFとすべきタスク500(タスクA)は、あるページ階層再配置時間帯において所定の閾値以上の階層格上げを発生させており、かつ、その次のページ階層再配置時間帯においては別の1つ以上のタスク500(タスクB群)が大量の階層格上げを発生させているものである。つまり、2つ(必ずしも2つでなくても良い)の連続する時間帯のうちで所定閾値以上の再配置処理が実行された時間帯が検出される。これは単発的に階層格上げの発生量が増加した時間帯ではなく、ある程度定常的に階層格上げが発生している時間帯を処理対象とする趣旨である。このようなタスクAは、一時的にホストI/O発行量が増大し、ページ階層再配置処理においてタスクAで使用されるページ群を階層格上げさせ、結果としてタスクB群のページを階層格下げさせている可能性がある。本処理は、定期的あるいはユーザの指示を契機として、再配置容量管理テーブル2400のプール毎に実行される(ステップ2800)。「定期的」の意味については上述した通りである。なお、ステップ2800の処理の前に、少なくとも2度はページ階層再配置処理が実行されており、再配置容量管理テーブル2400やタスク稼働情報管理テーブル2500にデータが格納されている必要がある。以下、ステップごとに説明を記述する。
ステップ2801:管理ソフトウェア600は、再配置容量管理テーブル2400を参照し、着目する再配置時間帯(自再配置時間帯とも言う)およびその直後の再配置時間帯ともに、階層格上げ容量の全ホスト合計値が所定の閾値を超過しているような再配置時間帯を検索する。なお、「自再配置時間帯および直後の再配置時間帯」ではなく、「自再配置時間および直後のk個以内の再配置時間帯のいずれか」などとしてもよい(kは任意の自然数である)。例えば、24:00-6:00のホスト2とホスト3の階層格上げ容量の合計値(50GB)と、6:00-12:00のホスト2とホスト3の階層格上げ容量の合計値(40GB)の両方が所定の閾値(例えば、35GB)を超えているので、これらの時間帯がその後の処理を続行する対象として検出される。
ステップ2802:管理ソフトウェア600は、ステップ2801で得られた各再配置時間帯、およびその各々の直後の再配置時間帯について、「全ホスト計算機100における各タスク500の階層格上げ寄与率」を計算する。「全ホスト計算機100における各タスク500の階層格上げ寄与率」は全ホスト階層格上げページI/O寄与率グラフ2307の表示に用いる場合の情報と同じである。
ステップ2803:管理ソフトウェア600は、ステップ2802で計算した、任意の再配置時間帯における「全ホスト計算機100における各タスク500の階層格上げ寄与率」において寄与率が閾値を超過しているタスク500で、かつその直後の再配置時間帯における「全ホスト計算機100における各タスク500の階層格上げ寄与率」において寄与率が閾値を下回っているタスク500を取得する。例えば、アンチウィルスAについて、18:00-24:00の時間帯での寄与率が閾値を上回っているが、24:00-6:00の時間帯での寄与率がその閾値を下回っている場合には、そのアンチウィルスAが該当するタスクとして取得されることになる。
ステップ2804:管理ソフトウェア600は、ステップ2803の検索で得られたタスク500があれば、I/OモニタをOFFとすべきタスクとしてユーザに提示する。なお、ステップ2804において提示される情報は、上述の図32で示されるI/Oモニタ制御設定推奨表示画面3400と同様である。なお、ユーザにI/OモニタをOFFとすべきタスクを提示するだけでなく、自動的にI/OモニタをOFFとしてもよい。
図24および図26に示したI/OモニタOFF推奨表示処理は例であり、他にもI/OモニタOFF推奨表示処理がある。例えば、下記のようなタスク500をI/OモニタをOFFとすべきタスクとしてユーザに提示してもよい。つまり、あるページ階層再配置時間帯に大量の階層格上げを発生させているタスク500であり、かつその時に階層格上げされたページ群の多くが階層格上げ以降、あまりアクセスされていないようなタスク500である。このようなタスク500は、一時的にホストI/O発行量が増大して大量の階層格上げを発生させたが、それ以降はアクセスが減少し、結果として無意味な階層格上げを発生させた可能性が高い。なお、このようなタスク500は、ボリューム管理テーブル1100、再配置ページ管理テーブル1800、仮想ホストボリューム管理テーブル1900、再配置容量管理テーブル2400、タスク稼働情報管理テーブル2500を用いることで特定できる。
(2)第2の実施形態
次に、本発明の第2の実施形態による計算機システムについて、第1の実施形態で用いた図1から図12、図15から図18、及び図20から図26、さらに新たに図27から29を参照して、説明する。なお、第1及び第2の実施形態の違いは、I/OモニタのON/OFF制御の粒度である。すなわち、第1の実施形態では仮想ボリューム単位でI/OモニタのON/OFFを制御するが、第2の実施形態ではページ単位でI/OモニタのON/OFFを制御する。
第2の実施形態におけるシステム構成は、第1の実施形態において図1から図5を用いて説明したものと同様である。また図6から図12、図15から図18、図20から図26に示す概念図、管理テーブル、フローチャートは、本実施形態にも適用される。ただし、第2の実施形態では、仮想ボリューム701をそのままホストボリュームとして利用するのではなく、1つ以上の仮想ボリューム701上の、一部または複数の領域を、仮想的なホストボリュームとしてホスト計算機100上で利用するためのプログラム(ホストボリュームマネージャ)が、ホスト計算機100上や別の計算機上に存在してもよい。なお、ホストボリュームマネージャは、当該仮想的なホストボリュームと、当該一部または複数の領域の間のマッピング情報を保持する。また、ホスト計算機100として、物理マシンだけでなく、仮想マシンが存在してもよい。
<ページI/OモニタON/OFF管理テーブル>
図27は、ページI/OモニタON/OFF管理テーブル2900の構成例を示す図である。このテーブルは、ページ単位でI/OモニタのON及びOFFを管理するためのものであり、第1の実施形態における図13(仮想ボリューム単位でI/OモニタのON及びOFFを管理するテーブル)に対応する。
ページI/OモニタON/OFF管理テーブル2900は、プールID列2901と、ページID列2902と、I/OモニタON/OFF列2903と、によって構成される。
プールID列2901には、ボリュームプール700を特定・識別するための識別子(識別情報)が登録される。
ページID列2902には、各ボリュームプール700の各ページを特定・識別するための識別子(識別情報)が登録される。
I/OモニタON/OFF列2903にはI/Oモニタ処理時に当該ページに対するI/Oを記録する(ON)か否(OFF)かが登録される。なお、この情報は、図13におけるI/OモニタON/OFF列1502と同様に、初期値としてデフォルト値が設定されているが、システムを順次運用していくうちに、図29の処理によって値(ON/OFF)は変化するようになっている。
<I/Oモニタ処理>
図28は、第2の実施形態において、仮想ボリュームマネージャ704によって実行されるI/Oモニタ処理(例)を説明するためのフローチャートである。本処理はホスト計算機100からストレージ装置400内の仮想ボリューム701に対してI/Oが発行されたことを契機として開始される(ステップ3000)。
まず、仮想ボリュームマネージャ704は、ページI/OモニタON/OFF管理テーブル2900を参照し、I/O発行先のページのI/OモニタON/OFF列2903がONになっているかを確認する(ステップ3001)。このときI/OモニタON/OFF列2903がOFFであれば処理は終了する(ステップ3003)。I/OモニタON/OFF列2903がONであれば処理はステップ3002に移行する。
そして、仮想ボリュームマネージャ704は、ボリュームプール管理テーブル1200の、I/O発行先のページのページIDおよびボリュームプールのプールIDで決定される行のストレージI/O数列1206の数字を1増加させ(ステップ3002)、処理を終了する(ステップ3003)。
<I/OモニタのON/OFF制御処理>
図29は、管理ソフトウェア600が実行するI/OモニタのON/OFF制御処理(例)を説明するための示すフローチャートである。本処理は定期的に、ホスト計算機100毎に実行開始される(ステップ3100)。なお、「定期的」の意義については、第1の実施形態において上述した通りである。以下ステップごとに説明を記述する。
ステップ3101:管理ソフトウェア600は、ホスト計算機100上のOS501から、タスク稼働情報2200(図20参照)を取得する。
ステップ3102:管理ソフトウェア600は、ホスト計算機100に割り当てられたページ群を特定する。この処理では、まず管理ソフトウェア600が、ホスト計算機100上のOS501からホスト計算機100の使用する仮想ボリューム701上のLBA範囲を取得する。この場合、ホスト計算機100のOS501は、そのホスト計算機の使用する仮想ボリューム701上のLBA範囲を管理している。また、ホスト計算機100がホストボリュームマネージャにより仮想ボリューム701上の一部領域を仮想的なホストボリュームとして利用している場合は、管理ソフトウェア600は、当該領域に対応するLBA範囲をホストボリュームマネージャから取得する。次に、管理ソフトウェア600は、取得したLBA範囲を、仮想ボリューム管理テーブル1100(図9参照)を用いて照合することで、ホスト計算機100に割り当てられたページ群を特定することができる。
ステップ3103:管理ソフトウェア600は、ステップ3101で取得したタスク稼働情報2200において、「稼働状態2202がON」かつ「I/Oモニタ要否管理テーブル2000においてI/Oモニタ要否列2004の値が「否」である」ようなタスクが1つでも存在するかを判定する。ステップ3103の判定結果がyesの場合、処理はステップ3104に移行し、当該判定結果がnoの場合、処理はステップ3105に移行する。なお、条件として「稼働状態2202がON」の代わりに「ホストI/O発行量2203が閾値以上であるもの」としてもよい。また「1つでも存在するかを判定する」としたが「閾値以上存在するかを判定する」などとしてもよい。当該変形例については、第1の実施形態の場合と同様である。
ステップ3104:管理ソフトウェア600は、ステップ3102で特定したページ群のI/OモニタをOFFにする。すなわち、ストレージ装置400に対してボリュームプールの識別子およびページ群のページIDを含むI/OモニタのOFF命令を送信する。そして、それを受信したストレージ装置400が、ページI/OモニタON/OFF管理テーブル2900(図27)の該当するプールIDかつページIDのI/OモニタON/OFF列2903の値をOFFにする。
ステップ3105:管理ソフトウェア600は、ステップ3102で特定したページ群のI/OモニタをONにする。すなわち、ストレージ装置400に対してボリュームプールのプールIDおよびページ群のページIDを含むI/OモニタのON命令を送信する。そして、それを受信したストレージ装置400が、ページI/OモニタON/OFF管理テーブル2900の該当するプールIDかつページIDのI/OモニタON/OFF列2903の値をONにする。
(3)第3の実施形態
続いて、本発明の第3の実施形態による計算機システムについて、第1の実施形態で用いた図1から図18、及び図20から図26、さらに新たに図30を参照して、説明する。なお、第3の実施形態と第1の実施形態との違いは、I/OモニタのON/OFF制御処理が管理サーバ200の管理ソフトウェア600によって実行されるのではなく、各ホスト計算機100上のOS501によって、或いは、代表のホスト計算機のOS501によって実行されることである。従って、管理ソフトウェア600の役割は、ユーザに対してI/OモニタON/OFF判断用情報表示画面2300(図21)を提示することとなる。
本実施形態におけるシステム構成は、第1の実施形態において図1から図5を用いて説明したものと同様である。また図6から図18、図20から図26に示す概念図、管理テーブル、フローチャートは、本実施形態にも適用される。ただし、I/OモニタON/OFF判断用情報表示画面2300を提示する必要がない場合、管理ソフトウェア600は必ずしも必要ない。また、I/Oモニタ要否管理テーブル2000は、管理ソフトウェア600が保持するとともに、各々のホスト計算機100が各自ホストIDの部分情報(タスク名、タスク種別、I/Oモニタ要否)を保持する。管理ソフトウェア600の保持するI/Oモニタ要否管理テーブル2000と、各ホスト計算機100の保持するI/Oモニタ要否管理テーブルの部分情報は同期される。このため、I/Oモニタ要否管理テーブル2000をユーザが入力する場合、管理ソフトウェア600上で入力してもよいし、各ホスト計算機100上で入力してもよい。
<I/OモニタのON/OFF制御処理>
図30は、I/OモニタのON/OFF制御処理の一例を示すフローチャートである。本処理は定期的に、各ホスト計算機100上のOS501により実行開始される(ステップ3200)。「定期的」の意義については上述の通りである。以下ステップごとに説明を記述する。
ステップ3201:各ホスト計算機100上のOS501は、各ホスト計算機(自ホスト)のタスク稼働情報2200(図20)を参照する。
ステップ3202:各ホスト計算機100上のOS501は、タスク稼働情報2200において、「稼働状態2202がON」かつ「I/Oモニタ要否管理テーブル2000においてI/Oモニタ要否列2004の値が「否」である」ようなタスクが1つでも存在するかを判定する。ステップ3202の判定結果がyesの場合、処理はステップ3203に移行し、当該判定結果がnoの場合、ステップ3204に移行する。なお、タスクの前提条件として「稼働状態がON」の代わりに「ホストI/O発行量2203が閾値以上である」としてもよい。また「1つでも存在するかを判定する」としたが「閾値以上存在するかを判定する」などとしてもよい。当該変形例については、第1の実施形態の場合と同様である。
ステップ3203:各ホスト計算機100上のOS501は、該当する各ホスト計算機(自ホスト計算機)に割り当てられたボリュームのI/OモニタをOFFにする。この処理は、例えばSCSI Inquiryにより、仮想ボリュームIDを含むI/OモニタのOFF命令が、ストレージ装置400に発行される。そして、このOFF命令を受信したストレージ装置400は仮想ボリュームI/OモニタON/OFF管理テーブル1500(図13)の該当する仮想ボリュームIDのI/OモニタON/OFF列1502の値をOFFにする。
ステップ3204:各ホスト計算機100上のOS501は、該当する各ホスト計算機(自ホスト計算機)に割り当てられたボリュームのI/OモニタをONにする。この処理は、例えばSCSI Inquiryにより、仮想ボリュームIDを含むI/OモニタのON命令が、ストレージ装置400に発行される。そして、このON命令を受信したストレージ装置400は仮想ボリュームI/OモニタON/OFF管理テーブル1500の該当する仮想ボリュームIDのI/OモニタON/OFF列1502の値をONにする。
(4)第4の実施形態
さらに続いて、本発明の第4の実施形態による計算機システムについて、第1の実施形態で用いた図1から図12、図15から18、及び図20から図26、第2の実施形態で用いた図27及び28、さらに新たに図31を参照して、説明する。なお、第1の実施形態と第4の実施形態との違いは、「I/OモニタのON/OFF制御を管理ソフトウェア600が実行するのではなく、各ホスト計算機100上のOS501が実行すること」および「I/OモニタのON/OFF制御はページ単位で実行されること」である。つまり、第2の実施形態と第3の実施形態とを組み合わせたものとなっている。従って、管理ソフトウェア600の役割は、ユーザに対してI/OモニタON/OFF判断用情報表示画面2300を提示することとなる。
本実施形態におけるシステム構成は、第1の実施形態において図1から図5を用いて説明したものと同様である。また、図6から図18、図20から図26に示す概念図、管理テーブル、フローチャートは、本実施形態にも適用される。ただし、I/OモニタON/OFF判断用情報表示画面2300を提示する必要がない場合、管理ソフトウェア600は必ずしも必要ない。また、I/Oモニタ要否管理テーブル2000は、管理ソフトウェア600が保持するとともに、各々のホスト計算機100が各自ホストIDの部分情報(タスク名、タスク種別、I/Oモニタ要否)を保持することとなる。また、管理サーバ200が保持し、管理ソフトウェア600によって使用されるI/Oモニタ要否管理テーブル2000と、各ホスト計算機100が保持するI/Oモニタ要否管理テーブルの部分情報は同期される。このため、I/Oモニタ要否管理テーブル2000をユーザが入力する場合、管理サーバ200の管理ソフトウェア600上で入力してもよいし、各ホスト計算機100上で入力してもよい。さらに、仮想ボリューム701をそのままホストボリュームとして利用するのではなく、1つ以上の仮想ボリューム701上の、一部または複数の領域を、仮想的なホストボリュームとしてホスト計算機100上で利用するためのプログラム(ホストボリュームマネージャ)が、ホスト計算機100上や別の計算機上に存在してもよい。なお、ホストボリュームマネージャは、当該仮想的なホストボリュームと、当該一部または複数の領域の間のマッピング情報を保持する。
<I/OモニタのON/OFF制御処理>
図31は、第4の実施形態によるI/OモニタのON/OFF制御処理(例)を説明するためのフローチャートである。本処理は定期的に、各ホスト計算機100上のOS501により実行開始される(ステップ3300)。「定期的」の意義については、上述の通りである。以下ステップごとに説明を記述する。
ステップ3301:各ホスト計算機100上のOS501は、該当する各ホスト計算機(自ホスト計算機)のタスク稼働情報2200(図20)を参照する。
ステップ3302:各ホスト計算機100上のOS501は、タスク稼働情報2200において、「稼働状態2202がON」かつ「I/Oモニタ要否管理テーブル2000においてI/Oモニタ要否列2004の値が「否」である」ようなタスクが1つでも存在するかを判定する。ステップ3302の判定結果がyesの場合、処理はステップ3303に移行し、当該判定結果がnoの場合、処理はステップ3304に進む。なお、タスクの前提条件として「稼働状態がON」の代わりに「ホストI/O発行量2203が閾値以上である」としてもよい。また「1つでも存在するかを判定する」としたが「閾値以上存在するかを判定する」などとしてもよい。当該変形例については、第1の実施形態の場合と同様である。
ステップ3303:各ホスト計算機100上のOS501は、該当する各ホスト計算機(自ホスト計算機)に割り当てられた、仮想ボリューム701上の1つ以上の領域のI/OモニタをOFFにする。この処理では、例えばSCSI Inquiryにより、仮想ボリュームIDおよびLBA範囲を含んだI/OモニタOFF命令をストレージ装置400に送信する。このOFF命令を受信したストレージ装置400は、仮想ボリューム管理テーブル1100(図9)を参照して、指示された仮想ボリュームIDおよびLBA範囲に対応する、プールIDおよびページIDを特定し、この特定したプールIDおよびページIDをもとに、ページI/OモニタON/OFF管理テーブル2900(図27)のI/OモニタON/OFF列2903の値をOFFにする。この場合、OS501は、該当する各ホスト計算機(自ホスト計算機)が使用する仮想ボリューム701上のLBA範囲を管理している。なお、ホスト計算機100がホストボリュームマネージャにより仮想ボリューム701上の一部領域を仮想的なホストボリュームとして利用している場合は、ホスト計算機100上のOS501は、当該仮想的なホストボリュームに関するI/OモニタOFF命令を、ホストボリュームマネージャに対して発行する。ホストボリュームマネージャはこの命令を受信し、例えばSCSI Inquiryにより、仮想ボリュームID、および当該仮想的なホストボリュームに対応する仮想ボリューム701上のLBA範囲、を含んだI/OモニタOFF命令をストレージ装置400に送信する。
ステップ3304:各ホスト計算機100上のOS501は、該当する各ホスト計算機(自ホスト計算機)に割り当てられた、仮想ボリューム701上の1つ以上の領域のI/OモニタをONにする。この処理では、仮想ボリュームIDおよびLBA範囲を含んだI/OモニタON命令を、例えばSCSI Inquiryにより、ストレージ装置400に送信する。このON命令を受信したストレージ装置400は仮想ボリューム管理テーブル1100を参照して、指示された仮想ボリュームIDおよびLBA範囲に対応する、プールIDおよびページIDを特定し、この特定したプールIDおよびページIDをもとに、ページI/OモニタON/OFF管理テーブル2900のI/OモニタON/OFF列1502の値をONにする。この場合、OS501は、該当する各ホスト計算機(自ホスト計算機)が使用する仮想ボリューム701上のLBA範囲を管理している。なお、ホスト計算機100がホストボリュームマネージャにより仮想ボリューム701上の一部領域を仮想的なホストボリュームとして利用している場合は、ホスト計算機100上のOS501は、当該仮想的なホストボリュームに関するI/OモニタON命令を、ホストボリュームマネージャに対して発行する。ホストボリュームマネージャはこの命令を受信し、例えばSCSI Inquiryにより、仮想ボリュームID、および当該仮想的なホストボリュームに対応する仮想ボリューム701上のLBA範囲、を含んだI/OモニタON命令をストレージ装置400に送信する。
(5)まとめ
(i)本発明の各実施形態において、ストレージ装置では、複数の計算機(ホスト計算機)上で実行されるタスクに関するアクセス特性(例えば、I/O数)に基づいて再配置処理が実行される。この際、管理計算機或いはホスト計算機は、仮想論理ボリューム単位のI/O数、仮想ボリュームを構成するページ単位(仮想論理ボリュームの実記憶領域に対するアクセス単位)のI/O数、或いは、ホスト計算機で発行される(タスクを実行するホスト計算機によるストレージサブシステムに対するアクセス単位で)I/O数をモニタすることにより、再配置処理実行の有無を判断している。ここで、本実施形態では、I/Oモニタを実行するか否かを示すI/OモニタON/OFF管理情報(図13及び27参照)が設定される。そして、ストレージ装置は、このI/OモニタON/OFF管理情報を参照し、モニタされたホスト計算機からのI/O数に基づいて再配置処理を実行する。実施形態では、I/Oモニタをするか否かの情報(I/OモニタON/OFF管理情報)を設定しているが、I/O数(アクセス特性)をモニタしたとしてもそのI/O数を再配置処理の要否判断に用いなければ良いので、I/OモニタON/OFF管理情報ではなく、単に「再配置処理における移動先決定の判断基準として考慮するか否かを示す再配置基準情報を設定する」と表現することができる。このようにすることにより、所定の仮想ボリューム、ページやホストのボリュームについて再配置処理の要否判断に用いる必要がなくなるので、不必要な再配置処理を防止することができるようになる。
また、本発明の各実施形態では、管理計算機或いはホスト計算機は、複数のホスト計算機(各ホスト計算機が管理計算機の機能を有する場合(第3の実施形態)には自身のホスト計算機)で実行されるタスクが使用する記憶領域毎のデータの再配置発生量(少なくとも階層格上げの容量)を示す情報(再配置発生情報:ホスト内タスクI/O比率や全ホスト階層格上げページI/O寄与率を含む)を生成し、これを出力する(図21参照)ようにしている。このようにすることにより、ユーザ(管理者)は、出力された情報を参照して、各タスクについてI/Oモニタ要否(再配置処理の要否)を決定することができる。従って、各タスクの実行の傾向に合致して、ユーザはI/Oモニタ要否を決定できるため、ユーザにとって管理しやすい計算機システム(ストレージシステム)を提供することが可能となる。
一方、I/Oモニタ要否(再配置処理の要否)を自動的に設定、或いは、モニタOFFにすることが推奨されるタスクをユーザに提示するようにしても良い。このようにすることにより、I/Oモニタ要否判断に精通していないユーザも適切にストレージシステムを管理することができるようになる。なお、具体的には、モニタOFF推奨タスク表示は、図24及び26に示す処理を実行することにより、実現することができる。
(ii)本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
さらに、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本発明は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本発明を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがあることが解るであろう。例えば、記述したソフトウェアは、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
加えて、本技術分野の通常の知識を有する者には、本発明のその他の実装がここに開示された本発明の明細書及び実施形態の考察から明らかになる。記述された実施形態の多様な態様及び/又はコンポーネントは、データを管理する機能を有するコンピュータ化ストレージシステムに於いて、単独又は如何なる組み合わせでも使用することが出来る。明細書と具体例は典型的なものに過ぎず、本発明の範囲と精神は後続する請求範囲で示される。