図面 (/)

技術 ストレージシステム及び記憶領域の割当方法

出願人 株式会社日立製作所
発明者 圷弘明大平良徳江口賢哲山本政行
出願日 2015年9月24日 (4年9ヶ月経過) 出願番号 2015-187000
公開日 2016年1月7日 (4年5ヶ月経過) 公開番号 2016-001507
状態 特許登録済
技術分野 デバッグ/監視 計算機におけるファイル管理 検索装置 エラー時の再試行 外部記憶装置との入出力
主要キーワード 負荷指標 指数テーブル 測定周期毎 階層配置 ネック状 カウンタ番号 容量効率 反映データ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年1月7日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

周期モニタ測定周期を設定した場合には、短周期でのプロモーションを実施できず、通常業務の数分から数時間単位のI/O数の変動に対して、たとえI/O数が非常に多かったとしても、数週間待ったあと、ページがプロモーションされることになる。本来上位階層で受けられるはずの数週間分のI/Oを下位階層で受けてしまうことになり、性能上の効率が悪い。長周期の視点で、特定のページの一時的なI/O数低下によるデモーションを抑止しつつ、特定のページのI/O数の上昇に対して、迅速なプロモーションを可能とするモニタ方式を実現する。

解決手段

周期的にカウントした記憶領域毎のI/O数により、長周期の観点で規定された負荷指標値と短周期の観点で規定された負荷指標値とを更新していく。これらの負荷指標値から算出した値に基づき、プロモーションやデモーションを実施する。

概要

背景

従来の自動階層管理機能の技術(特許文献1および特許文献2)は、一定の周期内測定周期)で、ページのI/O頻度が高い場合に、ページを上位階層へ移動(プロモーションと呼ぶ)し、ページのI/O頻度が低い場合に、ページを下位階層に移動(デモーションと呼ぶ)する。

上述の技術について、例えば平日(月〜金)は稼働し、週末(土日)は稼働しないバッチジョブを考える。モニタの測定周期を短く(数時間に)した場合、週末にI/O数が低下すると、そのバッチジョブの対象ページはデモーションされる。すると、再びI/O数が上昇する毎週曜日に、毎回性能が低下してしまう現象が発生する。上述のような現象に対して、従来技術では、ページをデモーションさせないために、モニタの測定周期を数週間と長くし、長周期のI/O数の頻度を採ることで、I/O数を平滑化し、週末のデモーションを回避させている。

概要

長周期にモニタの測定周期を設定した場合には、短周期でのプロモーションを実施できず、通常業務の数分から数時間単位のI/O数の変動に対して、たとえI/O数が非常に多かったとしても、数週間待ったあと、ページがプロモーションされることになる。本来上位階層で受けられるはずの数週間分のI/Oを下位階層で受けてしまうことになり、性能上の効率が悪い。長周期の視点で、特定のページの一時的なI/O数低下によるデモーションを抑止しつつ、特定のページのI/O数の上昇に対して、迅速なプロモーションを可能とするモニタ方式を実現する。周期的にカウントした記憶領域毎のI/O数により、長周期の観点で規定された負荷指標値と短周期の観点で規定された負荷指標値とを更新していく。これらの負荷指標値から算出した値に基づき、プロモーションやデモーションを実施する。

目的

再配置要否を確認とは、具体的に説明すると、対象のプールのプール度数分布テーブル306のTier割り当て閾値208から、現在いるTierのままでよいか異なるTierに移動すべきかを判定することである

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数の記憶媒体と、ホスト計算機に複数の仮想ボリュームを提供し、前記複数の記憶媒体に基づき構成される、複数の実記憶領域を有するプールを管理するプロセッサと、を備え、前記仮想ボリュームのそれぞれは、複数の仮想記憶領域を有し、前記プロセッサは、前記仮想ボリュームが有する前記仮想記憶領域に対し、前記ホスト計算機からのライトリクエスト受領した場合、前記複数の実記憶領域のうち1以上の実記憶領域を、当該仮想記憶領域に割り当て、前記仮想ボリューム単位で、当該仮想ボリュームが有する前記複数の仮想記憶領域の前記I/O数度数分布を作成し、前記複数の仮想ボリュームについての前記仮想ボリューム単位の前記度数分布を合計して、前記プールにおける前記I/O数の度数分布を作成する、ストレージシステム

請求項2

前記複数の記憶媒体は複数の種類からなり、前記複数の実記憶領域は、前記複数の種類の記憶媒体のうち何れかの種類の記憶媒体に基づくものである、請求項1記載のストレージシステム。

請求項3

前記プロセッサは、割り当てられた前記仮想記憶領域に対する一定の周期アクセス数に基づき、第1の周期でのアクセス数と第2の周期でのアクセス数を含む異なる周期の2以上の負荷指標値を算出して、メモリに記録し、前記異なる周期の2以上の負荷指標値に基づき、前記仮想記憶領域のI/O数を算出する、請求項1記載のストレージシステム。

請求項4

前記プロセッサは、前記仮想ボリュームの前記複数の仮想記憶領域のうちの第1の仮想記憶領域について、前記プールにおける前記I/O数の度数分布と前記第1の仮想記憶領域のI/O数とを基に、前記複数の種類の記憶媒体のうち、前記第1の仮想記憶領域に割り当てた実記憶領域と異なる種類の記憶媒体に基づく第2の実記憶領域を、前記第1の仮想記憶領域に割り当てる、請求項2記載のストレージシステム。

請求項5

前記第1の周期でのアクセス数を測定する第1のカウンタと、前記第2の周期でのアクセス数を測定する第2のカウンタと、を備える、請求項3に記載のストレージシステム。

請求項6

前記プロセッサは、前記プールにおける前記I/O数の度数分布と前記複数の種類の記憶媒体の容量またはポテンシャルに基づき、閾値を決定し、前記閾値と前記第1の仮想記憶領域の前記I/O数とに基づき、前記第1の仮想記憶領域に割り当てた実記憶領域と異なる種類の記憶媒体に基づく第2の実記憶領域を、前記第1の仮想記憶領域に割り当てる、請求項4に記載のストレージシステム。

請求項7

前記仮想記憶領域のI/O数は、前記異なる周期の2以上の負荷指標値の平均値または最大値である、請求項6に記載のストレージシステム。

請求項8

前記プロセッサは、前記仮想記憶領域のI/O数が前記閾値より大きい場合と、前記仮想記憶領域のI/O数が前記閾値より小さい場合と、の少なくともいずれかの場合に、前記第1の仮想記憶領域に割り当てた実記憶領域と異なる種類の記憶媒体に基づく第2の実記憶領域を、前記第1の仮想記憶領域に割り当てる、請求項6に記載のストレージシステム。

請求項9

前記仮想記憶領域のI/O数は、前記異なる周期の2以上の負荷指標値のそれぞれに重み付けした値の平均値または最大値である、請求項7に記載のストレージシステム。

請求項10

前記複数の種類の記憶媒体は、SSD(SolidStateDrive)とハードディスクドライブ外部接続された記憶媒体とのうち、少なくともいずれかを含む、請求項2に記載のストレージシステム。

請求項11

複数の記憶媒体と、ホスト計算機に複数の仮想ボリュームを提供し、前記複数の記憶媒体に基づき構成される、複数の実記憶領域を有するプールを管理するプロセッサと、を備え、前記仮想ボリュームのそれぞれは、複数の仮想記憶領域を有するストレージシステムにおける記憶領域の割当方法であって、前記プロセッサにより、前記仮想ボリュームが有する前記仮想記憶領域に対し、前記ホスト計算機からのライトリクエストを受領した場合、前記複数の実記憶領域のうち1以上の実記憶領域が、当該仮想記憶領域に割り当てられるステップと、前記仮想ボリューム単位で、当該仮想ボリュームが有する前記複数の仮想記憶領域の前記I/O数の度数分布が作成されるステップと、前記複数の仮想ボリュームについての前記仮想ボリューム単位の前記度数分布を合計して、前記プールにおける前記I/O数の度数分布が作成されるステップと、を有する、ストレージシステムにおける記憶領域の割当方法。

請求項12

複数の記憶媒体に基づき構成される複数の実記憶領域を有するプールを管理し、仮想ボリュームのそれぞれが複数の仮想記憶領域を有するようにした、ストレージシステムのためのプログラムであって、コンピュータに、前記仮想ボリュームが有する前記仮想記憶領域に対し、前記ホスト計算機からのライトリクエストを受領した場合、前記複数の実記憶領域のうち1以上の実記憶領域を、当該仮想記憶領域に割り当てる機能と、前記仮想ボリューム単位で、当該仮想ボリュームが有する前記複数の仮想記憶領域の前記I/O数の度数分布を作成する機能と、前記複数の仮想ボリュームについての前記仮想ボリューム単位の前記度数分布を合計して、前記プールにおける前記I/O数の度数分布を作成する機能と、を実現させる前記プログラム。

請求項13

請求項12に記載のプログラムを記録した、コンピュータが読取可能な記憶媒体。

技術分野

0001

本発明は、ストレージシステム及び記憶領域の割当方法に関し、複数の階層を持つストレージシステムの自動階層配置機能における、ボリューム内の小領域(ページ)単位の階層配置を効率化するストレージシステム及び記憶領域の割当方法に関する。

背景技術

0002

従来の自動階層管理機能の技術(特許文献1および特許文献2)は、一定の周期内測定周期)で、ページのI/O頻度が高い場合に、ページを上位階層へ移動(プロモーションと呼ぶ)し、ページのI/O頻度が低い場合に、ページを下位階層に移動(デモーションと呼ぶ)する。

0003

上述の技術について、例えば平日(月〜金)は稼働し、週末(土日)は稼働しないバッチジョブを考える。モニタの測定周期を短く(数時間に)した場合、週末にI/O数が低下すると、そのバッチジョブの対象ページはデモーションされる。すると、再びI/O数が上昇する毎週曜日に、毎回性能が低下してしまう現象が発生する。上述のような現象に対して、従来技術では、ページをデモーションさせないために、モニタの測定周期を数週間と長くし、長周期のI/O数の頻度を採ることで、I/O数を平滑化し、週末のデモーションを回避させている。

先行技術

0004

米国特許出願公開第2009/00705412号明細書
米国特許第7613945号明細書
米国特許第7228380号明細書

発明が解決しようとする課題

0005

しかし従来技術では、長周期にモニタの測定周期を設定した場合には、短周期でのプロモーションを実施できず、通常業務の数分から数時間単位のI/O数の変動に対して、たとえI/O数が非常に多かったとしても、数週間待ったあと、ページがプロモーションされることになる。したがって、本来上位階層で受けられるはずの数週間分のI/Oを下位階層で受けてしまうことになり、性能上の効率が悪化するという問題があった。
本発明は以上の点を考慮してなされたもので、長周期の視点で、特定のページの一時的なI/O数低下によるデモーションを抑止しつつ、特定のページのI/O数の上昇に対して、迅速なプロモーションを可能とするストレージシステム及び記憶領域の割当方法を提案しようとするものである。

課題を解決するための手段

0006

かかる課題を解決するために本発明においては、複数の記憶媒体と、ホスト計算機に複数の仮想ボリュームを提供し、前記複数の記憶媒体に基づき構成される、複数の実記憶領域を有するプールを管理するプロセッサと、を備え、前記仮想ボリュームのそれぞれは、複数の仮想記憶領域を有し、前記プロセッサは、前記仮想ボリュームが有する前記仮想記憶領域に対し、前記ホスト計算機からのライトリクエスト受領した場合、前記複数の実記憶領域のうち1以上の実記憶領域を、当該仮想記憶領域に割り当て、前記仮想ボリューム単位で、当該仮想ボリュームが有する前記複数の仮想記憶領域の前記I/O数の度数分布を作成し、前記複数の仮想ボリュームについての前記仮想ボリューム単位の前記度数分布を合計して、前記プールにおける前記I/O数の度数分布を作成する、ストレージシステムが提供される。

0007

上記構成によれば、周期的にカウントした記憶領域毎のI/O数により、長周期の観点で規定された負荷指標値と短周期の観点で規定された負荷指標値とを更新していく。これらの負荷指標値から算出した値に基づき、プロモーションやデモーションを実施することができる。

発明の効果

0008

本発明によれば、長周期の視点で、一時的なI/O数低下によるデモーションを抑止しつつ、I/O数の上昇に対して、迅速なプロモーションを可能とすることができ、高速な上位階層のドライブで多くのI/Oを処理することができるようになり、下位階層でのボトルネックを解消し、ストレージシステムの性能を向上させることができる。

図面の簡単な説明

0009

本発明の第一実施形態に係る計算機システムの構成例を示す図である。
同実施形態に係るストレージシステムの論理構成を示す図である。
共有メモリ111に配置するテーブルの種類を示す図である。
ローカルメモリ118に配置するプログラムの種類を示す図である。
ダイナミックマッピングテーブル301の構造を示す図である。
論理物理アドレス変換テーブル308の構造を示す図である。
ページ毎モニタテーブル302の構造を示す図である。
プール度数分布テーブル306と、仮想ボリューム度数分布テーブル305の構造を示す図である。
プール加重指数テーブル303の構造を示す図である。
仮想ボリューム加重指数テーブル307の構造を示す図である。
ページ加重指数テーブル304の構造を示す図である。
ホストI/O処理プログラム401のフローチャートである。
デステージ処理プログラム404のフローチャートである。
度数分布作成処理プログラム402のフローチャートである。
ページ再配置処理プログラム405のフローチャートである。
加重平均算出用カウンタ1(703A)値、加重平均算出用カウンタ2(703B)値、およびI/Oカウンタ値702の算出式の例を示す図である。
加重平均算出処理プログラム403のフローチャートである。
プール単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
仮想ボリューム単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
ページ単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。
本発明で算出した各種I/O数の時間的な変化を示す図である。

実施例

0010

本発明の実施形態について、図面を参照して説明する。尚、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。

0011

図1は、本発明の第一実施形態に係る計算機システムの構成例を示す図である。

0012

ホスト101は、例えば一般的なサーバにより構成され、ネットワーク103を介してストレージシステム104のポート106に接続する。ホスト101は、ストレージシステム104に対してデータのリードライト命令発行し、ストレージシステム104がその命令に応じてデータの読み込みや書き込みを実行する。ネットワーク103は、例えばSAN(Storage Area Network)や、イーサネット登録商標)などにより構成する。また、管理サーバ102は、ネットワーク103を介して、ストレージシステム104の保守I/F107またはポート108に接続する。ストレージ管理者が、管理サーバ102を用いて、ストレージシステム104に対して、ストレージシステムを運用する上で必要な各種設定や管理のための命令を送信する。外部ストレージ105は、ストレージシステム104のポート108に接続される。この外部ストレージ105接続の際に、ネットワーク103を経由してストレージシステム104のポート108に接続してもよい。外部ストレージ105はストレージシステムにおいて、ストレージシステム内部のボリュームと同様に扱うことができる。この具体的な方法については、特許文献3に記載されているため、詳細は割愛する。

0013

次にストレージシステム104の内部構成について説明する。ストレージシステム104の内部では、内部ネットワーク112を介してポート106、保守I/F107、プロセッサパッケージ109、キャッシュメモリ110、共有メモリ111、ポート108、ドライブ113、ドライブ114を接続する。キャッシュメモリ110は、ストレージシステム104のI/O処理のスループットレスポンスを向上させるために、データを一時的なキャッシュとして格納するための高速アクセスが可能なメモリである。プロセッサパッケージ109は、ローカルメモリ118とプロセッサ119により構成する。プロセッサ119はホスト101からのリードやライト命令を処理するために、ドライブ115、116、外部ストレージ105とキャッシュメモリ110間のデータの転送処理などを実行する。共有メモリ111は、プロセッサ119がリードやライト命令を処理し、またストレージの機能(ボリュームのコピー機能など)を実行する上で、必要な制御用の情報を格納するメモリであり、複数のプロセッサパッケージ109A,B間のプロセッサ119で共有している情報を格納するメモリである。ローカルメモリ118は、プロセッサ119がリードやライト命令を処理し、またストレージの機能を実行する上で、必要な制御用の情報を格納するメモリであり、プロセッサ119が占有して使用できる領域である。ローカルメモリ118には、例えばプロセッサ119により実行するプログラムなどを格納する。ドライブ113、114は例えばFC(Fibre Channel),SAS(Serial AttachedSCSI),SATA(Serial Advanced Technology Attachment)などのインターフェイスを持つハードディスクドライブや、SSD(Solid State Drive)などにより構成する。

0014

前述したさまざまな種類のドライブは、性能が異なる。例えば、ハードディスクドライブと比較し、SSDはI/Oスループット性能が高い。ストレージシステム104は、前述した複数の種類のドライブによって構成する。これらの複数の種類のドライブを、近い性能を持つドライブに分類したものが階層(Tier)115、116、117である。階層間の関係は性能の上下関係により定義される。この階層については、詳細は特許文献2に記載されているため、詳細は割愛する。

0015

図2は、本発明の第一実施形態に係るストレージシステムの論理構成を示す図である。
仮想ボリューム201は、ホスト101から認識される論理的な記憶領域であり、ホスト101からリード又はライト命令が発行される際に対象となるボリュームである。プール206は、1個以上のプールボリューム203により構成される。プールボリューム204はドライブ113,114,外部ストレージ105によって構成される。具体的には、プールボリューム204の論理アドレスと、ドライブ113,114,外部ストレージ105の物理アドレス対応関係を管理することにより、論理的なプールボリューム204を構成する。詳細については、後説する。

0016

ストレージ管理者は、管理サーバ102からの指示により、プール206上に、複数の仮想ボリューム201を作成することが出来る。

0017

ストレージシステム104は、仮想ボリューム201に対して、ホスト101がWrite命令を発行した記憶領域のみ、実際の記憶領域を割り当てる。具体的には、仮想ボリューム201のページ202Aに、初めてホスト101がWrite命令を発行した際に、未使用のプールボリューム203の領域と対応づけ(205A)、次回のホスト101からの同じページへのRead/Write命令に対しても、前記対応づけに基づき、ストレージシステム104が対応するプールボリューム203の領域に対してI/O処理を実行することにより、あたかもホスト101が仮想ボリュームに対してI/O処理を実行しているように処理することができる。以上のように、仮想ボリューム201を用いて、使用する部分のみプールボリューム203の領域を割り当てることにより、限られた記憶容量を効率的に使用できることが可能となる。

0018

プール206は、複数の階層115,116,117を持ち、階層115、116、117によって、プールボリューム203を分類する。本実施例では、SSDの階層115(プールボリューム203Aに対応)と、SASの階層116(プールボリューム203B,203Cに対応)と、外部接続の階層117(プールボリューム203D,203Eに対応)の3個の階層を持つ。

0019

各仮想ボリュームのページ202には、一般的にホストからのI/O処理の特性が存在する。例えば、一般的にはI/Oの頻度が高いページと低いページが存在することが多い(これをアクセスローカリティと呼ぶ)。この場合、I/Oの頻度が高いページを上位の階層に配置したほうが、システム全体の性能を向上することができる場合がある。

0020

例えば、100IOPSを処理できるSSDの階層(115)と、10IOPS処理できるSASの階層(116)がプール206に存在する場合で、50IOPSの特性を持つページ202Cと、20IOPSの特性を持つページ203Aがあった場合、ページ202Cが現在SASに割当たっているとすると、SASの階層は最大で10IOPSの性能しか発揮できないため、ストレージシステム104は、全体として10+20=30IOPSの性能しか発揮できない(この状態をネック状態と呼ぶ)。ページ202Cが現在割当たっているSASから、SSDの階層へプロモーションすることができれば、ストレージシステム104は、全体として50+20=70IOPSの性能を発揮できる。以上のように、I/Oの頻度が高いページを上位の階層に配置(これを「階層に割り当てる」と呼ぶ)したほうが、システム全体の性能を向上することができる場合があることが分かる。

0021

上述のプロモーションは、具体的には、ページ204Cのデータを未使用のページ204Bにコピーし、仮想ボリューム201Aのページ202Cとプールボリューム203Bのページ204Cとの対応づけ(205C)を、仮想ボリューム201Aのページ202Cとプールボリューム203Aのページ204Bとの対応づけ(205B)に変更することにより実行する。デモーションも同様に実施可能である。詳細は特許文献2(US7613945)に記載されているため、詳細は割愛する。

0022

度数分布207は、各ページのI/O数の分布を表す。グラフ209は、I/O数の多い順番にページを並べたときの、各ページのI/O数を表す線である。つまり、I/O数の多いページが左側に、I/O数が少ないページが右側に並んでいる。Tier割り当て閾値208は、どのI/O数のページをどの階層に割り当てるかを決める閾値である。前述した通り、I/Oの頻度が高いページを上位の階層に配置したほうが、システム全体の性能を向上することができる場合があることから、I/O数の高い順番で上位階層から順番に割り当てる。

0023

例えば、Tier割り当て閾値208Aと度数分布のグラフ209の交点から、最も性能の高いページの、範囲210Aに属するページは、SSDの階層115に割り当てる。また、Tier割り当て閾値208Aと度数分布のグラフ209の交点から、Tier割り当て閾値208Bと度数分布のグラフ209の交点までの、範囲210Bに属するページは、SASの階層116に割り当てる。また、Tier割り当て閾値208Bと度数分布のグラフ209の交点から、最小のI/O数のページまでを、外部ストレージの階層117に割り当てる。以上のようにして、I/O数の高い順番で上位階層から順番に割り当てることができる。

0024

Tier割り当て閾値208はストレージ管理者が値を指定してもよいし、ストレージシステム104が算出してもよい。

0025

度数分布207の詳細(作成方法など)については、後述するので、ここでは割愛する。

0026

図3にて、共有メモリ111に配置するテーブルの種類を示す。各テーブルの詳細な構造は後述する。尚、本明細書には必要最小限のテーブルのみ記載しており、該共有メモリ上に他のテーブルが存在しても構わない。

0027

ダイナミックマッピングテーブル301は、仮想ボリュームの各ページと、プールボリュームの領域と、モニタ情報との対応関係とを管理するテーブルである。論理物理アドレス変換テーブル308は、プールボリュームと、プールボリュームのデータを格納する物理ディスクアドレスとの対応関係を管理するテーブルである。ページ毎モニタテーブル302は、I/O数を含む、各ページのモニタ情報を管理するテーブルである。仮想ボリューム度数分布テーブル305は、仮想ボリュームに関する、I/O数範囲毎のページ数の分布を管理するテーブルである。プール度数分布テーブル306は、プールに関する、I/O数範囲毎のページ数の分布を管理するテーブルである。プール加重指数テーブル303は、プール毎の、算出用カウンタ計算に使用する各種パラメータを管理するテーブルである。仮想ボリューム加重指数テーブル307は、仮想ボリューム毎の、算出用カウンタ計算に使用する各種パラメータを管理するテーブルである。ページ加重指数テーブル304は、ページ毎の、算出用カウンタ計算に使用する各種パラメータを管理するテーブルである。

0028

また、ページ毎モニタテーブル302や、プール度数分布テーブル306、仮想ボリューム加重指数テーブル307は、本実施例では共有メモリ111上に配置しているが、ホスト101や管理サーバ102上にデータを配置してもよい。

0029

図4にて、ローカルメモリ118に配置するプログラムの種類を示す。各プログラムの詳細なフローは後述する。尚、これらのプログラムは各ローカルメモリ118に配置してもよいし、共有メモリ111に配置してもよい。また、本明細書には必要最小限のプログラムのみ記載しており、該ローカルメモリ上に他のプログラムが存在しても構わない。

0030

ホストI/O処理プログラム401は、ホストから受領した、仮想ボリュームに対するRead/Write要求を処理するプログラムである。デステージ処理プログラム404は、キャッシュメモリ上の物理ディスク未反映データを、物理ディスクに格納するプログラムである。度数分布作成処理プログラム402は、採取したページ毎のI/O数を基に度数分布を作成し、Tier割り当て閾値を計算するプログラムである。加重平均算出処理プログラム403は、度数分布作成処理プログラム中で使用することを目的の1つとしたプログラムであり、各種算出用カウンタを基にページのI/O数を算出するプログラムである。ページ再配置処理プログラム405は、ページ毎のI/O数と、Tier割り当て閾値を基に、適切なTierにページを再配置するプログラムである。

0031

次に上述したプログラムが動作するタイミングについて説明する。ホストI/O処理プログラム401は、ホストI/Oの受領時に動作する。デステージ処理プログラム404は、ホストI/Oとは別に、周期的に動作する。度数分布作成処理プログラム402は、周期的に動作し、例えば、1時間毎に動作する。この周期はユーザが設定可能であってもよい。この周期の間に採取したモニタ情報について、度数分布作成処理プログラム402の対象となる。度数分布作成処理プログラム402は、加重平均算出処理プログラム403をその動作の過程で動作させる。度数分布作成処理プログラム402の動作が終了したら、プロセッサ109はページ再配置処理プログラム405を起動する。以上のように、度数分布作成処理プログラム402、加重平均算出処理プログラム403、ページ再配置処理プログラム405は、周期的に動作する。

0032

ページ毎モニタテーブル302や、プール度数分布テーブル306、仮想ボリューム加重指数テーブル307をホスト101や管理サーバ102上に配置する場合は、度数分布作成処理プログラム402はホスト101や管理サーバ102上で動作する。

0033

図5にて、ダイナミックマッピングテーブル301の構造を示す。ダイナミックマッピングテーブルの1つのエントリは、プール206と仮想ボリューム202と、仮想ボリューム202の各ページとプールボリューム204の領域と、該ページのモニタ情報との対応関係を示している。対応関係を管理するにあたり、仮想ボリュームの各ページは、仮想ボリューム番号501と、該仮想ボリューム内の該ページの開始論理アドレス502とで識別する。また、プールボリュームの各領域は、プールボリューム番号503と、プールボリューム内の該領域の開始論理アドレス504とで識別する。一方、モニタ情報は、モニタ情報インデックス番号505で識別する。該モニタ情報インデックス番号は、ページ毎モニタテーブル302の、モニタ情報インデックス番号701に対応する。いずれも、他の識別方法であって構わない。

0034

また、ダイナミックマッピングテーブル301は、プール内の空き領域とデフォルト値ページを管理しており、サーバから仮想ボリューム501の論理アドレス502にデータの書き込みが一度も無かった場合は、仮想ボリューム501の論理アドレス502に対応するプールボリューム番号と論理アドレスには、デフォルト値ページのアドレスが格納されている。

0035

またダイナミックマッピングテーブル301で、プール内の空きページのプールボリューム番号と論理アドレスを管理しており、サーバから仮想ボリューム501の論理アドレス502にデータの書き込みが一度も無かった箇所に初めてデータの書き込みがあった場合は、前記空きページのプールボリューム番号と論理アドレスを仮想ボリューム501の論理アドレス502に対応づけられる。

0036

また、各仮想ボリュームは、プールに属し、プール番号506により、どの仮想ボリュームが所属しているか、仮想ボリューム番号501との対応をダイナミックマッピングテーブル301で管理する。

0037

図6にて、論理物理アドレス変換テーブル308の構造を示す。論理物理アドレス変換テーブルの1つのエントリは、プールボリューム204と、該プールボリュームのデータを格納する物理ドライブ(113または114)の領域との対応関係を示す。プールボリュームは、プールボリューム番号601で識別する。また、物理ドライブの領域は、物理ドライブの番号602と、該物理ドライブの開始アドレス603とで識別する。本実施形態では、1つのプールボリュームを、1つの物理ディスクの連続領域に対応づけて管理しているが、他の対応づけを行ってもよい。例えば、1つのプールボリュームを、複数の物理ドライブに対応づけてもよい。または、1つのプールボリュームを、RAID構成を組む複数のドライブによって作成した論理領域の一部に対応づけ、論理領域を、物理ドライブの領域に対応づけることで、二段階の管理を行ってもよい。

0038

図7にて、ページ毎モニタテーブル302の構造を示す。ページ毎モニタテーブルの1つのエントリは、ある1個のページ202のモニタ情報を示す。モニタ情報インデックス番号701は、モニタ情報の識別に使用するインデックス番号である。I/Oカウンタ(A面)702A、I/Oカウンタ(B面)702Bは、あるページのI/O数を示す。

0039

I/Oカウンタ702は、一定の周期のI/O数を格納する。この周期は、前述した度数分布作成処理402の動作する周期と同じであり、度数分布作成処理402はこの一定の周期のI/O数を処理の対象とする。これは、たとえば周期毎に、採取対象のカウンタをI/Oカウンタ(A面)702AとI/Oカウンタ(B面)702Bとで切り替えることにより、一方をホストI/O処理プログラム401とデステージ処理プログラム404によるモニタ採取用のカウンタとして、他方を度数分布作成処理402とページ再配置処理プログラム405用のカウンタとして利用する。上記が、I/Oカウンタが2個存在する理由である。もちろん、I/Oカウンタの数は、3個以上存在し、それぞれを切り替えて使用しても構わない。

0040

また、加重平均用カウンタ1(703A)、加重平均用カウンタ2(703B)は、算出用カウンタ計算用の値を保持する。例えば、加重平均用カウンタ1で短期用の算出用カウンタ値を保持し、加重平均用カウンタ2で長期用の算出用カウンタ値を保持する。加重平均用カウンタの数は、後述する加重指数テーブル(303または304または307)で管理する「カウンタ数」に依存するため、2個以上となる場合もある。

0041

図8にて、プール度数分布テーブル306と、仮想ボリューム度数分布テーブル305の構造を示す。プール度数分布テーブル306は、プール206に関する、I/O数範囲毎のページ数の分布を管理している。プール度数分布テーブルの1つのエントリは、あるプールに関する1個のI/O数の範囲と、該I/O数の範囲に含まれるページ数を示す。I/O数802は、I/O数範囲の開始値を示している。該範囲の終了値は、(次のエントリのI/O数範囲の開始値−1)となる。ページ数803は、該I/O数の範囲に含まれるページ数に対応する。また、本テーブルでは、Tier割り当て閾値208も管理する。Tier割り当て閾値は0以上の値であればよく、必ずしも各範囲の境界値である必要はない。

0042

仮想ボリューム度数分布テーブル305は、仮想ボリューム201に関する、I/O数範囲毎のページ数の分布を管理している。テーブル構造は、プール度数分布テーブル306と同じであるため、詳細な説明は割愛する。

0043

図9にて、プール加重指数テーブル303の構造を示す。プール加重指数テーブルは、プール206毎の、算出用カウンタを算出する時に使用する各種パラメータを管理するテーブルである。プール加重指数テーブルの値を使用した各種計算方法の詳細は、後述する。

0044

ページ毎モニタテーブル302の説明にて述べた通り、各ページ202は、複数個の加重平均算出用カウンタ703を持つ。種別903の列に記載した「カウンタ数」は、該加重平均算出用カウンタの個数を示す。加重平均算出用カウンタ番号902は、加重平均算出用カウンタに対応付く。本実施形態では、加重平均算出用カウンタ1(703A)を「1」、加重平均算出用カウンタ2(703B)を「2」として管理している。また、プール加重指数テーブルでは、加重平均算出用カウンタ毎に、該算出用カウンタ値の算出に使用するパラメータの種別903と各パラメータの値904を保持する。該パラメータは、加重平均算出用カウンタの算出方法に応じて、異なる種別のパラメータを持ってもよい。本実施例では、「加重平均算出用カウンタの加重値」、「I/Oカウンタの加重値」の2つを持つ。「加重平均算出用カウンタの加重値」は、0以上の値とし、「I/Oカウンタの加重値」は0より大の値とする必要がある。

0045

「合算時加重値」は、各加重平均算出用カウンタを合算して、ページのI/O数を算出する時に使用する、各加重平均算出用カウンタの加重値を示している。また本実施例では、「合算方法」として、平均(AVG)または最大(MAX)を用意する。もちろん、他の合算方法であっても構わない。

0046

図10にて、仮想ボリューム加重指数テーブル307の構造を示す。仮想ボリューム加重指数テーブルは、仮想ボリューム201毎の、算出用カウンタを算出する時に使用する各種パラメータを管理するテーブルである。加重平均算出用カウンタ番号1002、種別1003、値1004については、プール加重指数テーブル303にて説明したため、詳細な説明は割愛する。

0047

図11にて、ページ加重指数テーブル304の構造を示す。ページ加重指数テーブルは、ページ202毎の、算出用カウンタを算出する時に使用する各種パラメータを管理するテーブルである。該テーブルでは、ページ202を、仮想ボリューム番号1101と論理アドレス領域1102とで識別しているが、他の識別方法であっても構わない。加重平均算出用カウンタ番号1103、種別1104、値1105については、プール加重指数テーブル303にて説明したため、詳細な説明は割愛する。

0048

図12は、ホストが仮想ボリューム201に対するデータの読み書きを行う際に、ストレージシステム104内のホストI/O処理プログラム401の処理を示したフローチャートである。

0049

ホストからI/O処理要求を受けると、ストレージシステム104内のホストI/O処理プログラム401は、仮想ボリューム201へのデータのリード要求かデータのライト要求かを判定する(S1201)。

0050

I/O処理要求がライトの場合、ホストI/O処理プログラム401は、キャッシュメモリ110にI/O処理要求に対応する仮想ボリューム上のアドレスに対応した領域が確保されているか否かを確認し、確保されている場合もしくは確保されていなければキャッシュメモリ110の領域を確保した後、ホストにライトデータの転送可能であることを応答し、ホストから転送されてくるライトデータを前記確保されているキャッシュメモリ領域に書き込み、キャッシュメモリ管理テーブルにまだディスクに書き込んでいない領域であるとしてダーティフラグを立てる(S1207)。

0051

ここで、ダーティフラグは、キャッシュメモリにのみデータがあり、ディスクにない状態を示す情報でキャッシュメモリの領域を管理するキャッシュメモリ管理テーブルに保持される。あとで説明するデステージ処理プログラム404は、このダーティフラグをみて、キャッシュメモリ上にあるデータをディスクに書き込む。

0052

キャッシュメモリ管理テーブルにダーティフラグが立ててある領域のデータがディスクに書き込まれた後は、ダーティフラグは落され、リード処理に対応してディスクから読み込んだデータをキャッシュメモリに格納した場合を含め、キャッシュメモリ管理テーブルの情報はクリーンフラグが立てられる。

0053

上記のように、キャッシュメモリ管理テーブルは、キャッシュメモリのアドレスと対応する仮想ボリュームのアドレスとキャッシュメモリにあるデータの状態を少なくとも保持管理している。また、キャッシュメモリのアドレスに対応する仮想ボリュームのアドレスは、仮想ボリュームのデータを置くためにキャッシュメモリの領域を確保した場合にのみ、有効な値である仮想ボリュームのアドレスが格納される。

0054

さて、ホストI/O処理プログラム401は、上記S1207後、ホストにライトI/O処理が完了したことを応答した(S1208)後、処理を終了する。

0055

一方S1201で、I/O処理要求がリードであった場合の処理は以下となる。

0056

I/O処理要求がリードの場合、ホストI/O処理プログラム401は、I/O処理要求に対応する仮想ボリューム上のアドレスに対応したデータがキャッシュメモリ上に存在するか否かを確認する(S1202)。

0057

S1202でキャッシュメモリ上にホストが要求したアドレスのデータが存在した場合をキャッシュヒットと呼ぶ。前記キャッシュヒットの場合、ホストI/O処理プログラム401は、キャッシュメモリ上のデータをホストに転送する(S1209)。

0058

ホストI/O処理プログラム401は、ホストが要求したデータを全てホストに転送した後リード処理完了応答をホストに転送して、処理を終了する。

0059

S1202でキャッシュミスした場合、ホストI/O処理プログラム401は、リード要求先仮想ボリュームのアドレスに対応したデータを格納するための領域をキャッシュメモリに確保する。次に、ホストI/O処理プログラム401は、ホストのリード要求先仮想ボリュームアドレスが、プールからページ202を割当てられているか否かを、ダイナミックマッピングテーブル301を用いて確認する。もし割り当てられていなかった場合、ホストI/O処理プログラム401は、デフォルト値を格納するページを、ダイナミックマッピングテーブル301を用いて求め、前記デフォルト値の格納ページのドライブのアドレスを算出し、ドライブからデフォルト値を前記確保したキャッシュメモリの領域に転送する(S1204)。

0060

ここで、デフォルト値の場合は、ダイナミックマッピングテーブルの仮想ボリュームと論理アドレスに対応する、プールボリューム番号と論理アドレスはデフォルト値格納ページのあるプールボリューム番号と論理アドレスが設定されている。

0061

デフォルト値ページはプールに1つ以上あればよい。容量効率を考えればプールにデフォルト値ページは1つもしくは2つである。

0062

デフォルト値ページのアドレスと対応づけられている仮想ボリュームの論理アドレスは、ホストから新規にデータの書き込みがあった際に、ホストのデータ書き込み用のページで未だどの仮想ボリュームのアドレスにも対応づけられていない未使用のページと対応付け直される。

0063

前記処理で、ページ202が割り当てられていた場合は、ホストI/O処理プログラム401は、ダイナミックマッピングテーブル301を用いプールボリューム番号と論理アドレスを求め、更に論理物理アドレス変換テーブル308を用い物理ドライブ番号、物理開始アドレスを求めることで、ホストが要求した仮想ボリュームのアドレスに対応したデータが格納されているドライブのアドレスを算出する(S1203)。次に、ホストI/O処理プログラム401は、算出したドライブアドレスからデータを前記確保したキャッシュメモリの領域に転送する(S1204)。

0064

ホストI/O処理プログラム401は、前記キャッシュメモリへのデータ転送時にダイナミックマッピングテーブル301のモニタ情報インデックス番号に対応するページ毎モニタテーブル302のI/Oカウンタ値を更新する(S1205)。

0065

続いて、ホストI/O処理プログラム401は、前記ドライブからキャッシュメモリ上に格納したデータを当該キャッシュメモリからホストに対してデータを送信する(S1206)。

0066

ホストI/O処理プログラム401は、ホストが要求したデータを全てホストに転送した後リード処理完了応答をホストに転送して、処理を終了する。

0067

図13は、デステージ処理プログラム404のフローチャートである。

0068

図12に記したように、ホストI/O処理プログラムは、ホストからのデータの書き込み要求に応じてキャッシュメモリにホストのライトデータを書き込んだ後、ダーティフラグを立てる。

0069

デステージ処理プログラム404は、キャッシュメモリ管理テーブルを参照し、キャッシュメモリ上にダーティフラグが立っている、ディスクへの書き込みがなされていない未反映データが無いかを定期的に確認する(S1301)。

0070

もしダーティフラグが立っているデータがあるキャッシュ領域を見つけた場合は、デステージ処理プログラム404は、キャッシュメモリ管理テーブルに記載の仮想ボリューム番号及び論理アドレスを元に、ダイナミックマッピングテーブル301からプールボリューム番号及び論理アドレスを求める。

0071

このとき、プールボリューム番号及び論理アドレスがデフォルトページのアドレスであった場合は、デステージ処理プログラム404は、新規データを書き込むために、ダイナミックマッピングテーブル301から新規空きページを割当てる。そして当該割当てページのプールボリューム番号と論理アドレスをダイナミックマッピングテーブル301の本デステージ処理に対応する仮想ボリューム番号及び論理アドレスに対応させて格納する。

0072

既にページが割り当たっている場合は、デフォルト値のプールボリューム番号と論理アドレスとは異なるプールボリューム番号と論理アドレスの値が仮想ボリューム501の論理アドレス502に対応して格納されている。

0073

プールボリューム番号と論理アドレスが求まった後、デステージ処理プログラム404は、論理物理アドレス変換テーブルで、ドライブのアドレスを求める(S1302)。

0074

デステージ処理プログラム404は、前記S1302で求めた、ドライブのアドレスに対して、キャッシュメモリ上のダーティデータを書き込む(S1303)。

0075

そして、デステージ処理プログラム404は、ダイナミックマッピングテーブル301のモニタ情報インデックス番号に対応するページ毎モニタテーブル302のI/Oカウンタ値を更新する(S1304)。

0076

更に、デステージ処理プログラム404は、未反映データがキャッシュメモリ上にあるかチェックする(S1301)。もし未反映データがなければ、終了し、未反映データがあれば、再度S1302から実施する。

0077

図14は、度数分布作成処理プログラム402のフローチャートである。

0078

本プログラムは、度数分布を仮想ボリューム単位に作成していく。そのため、度数分布作成処理プログラム402は、度数分布を未作成の仮想ボリュームがあるか否かを確認する(S1401)。

0079

テップS1401においてもし度数分布を未作成の仮想ボリュームがあれば、度数分布作成処理プログラム402は、当該仮想ボリューム内で度数分布作成のために未処理ページがあるか否かをボリュームの先頭から確認していく(S1402)。

0080

ステップS1402において未処理ページがあれば、度数分布作成処理プログラム402は、加重平均算出処理プログラム403を呼び出し、I/O数を算出する(S1403)。

0081

そして、度数分布作成処理プログラム402は、算出したI/O数に対して、対応する度数分布のページ数を加算した(S1404)後、S1402に戻る。

0082

ボリュームの後端まで実施もしくは処理している仮想ボリュームに関し未処理ページが無いことがわかった場合には、度数分布作成処理プログラム402は、他の仮想ボリュームが無いか確認するために、S1401に戻る。

0083

度数分布作成処理プログラム402は、度数分布未作成の仮想ボリュームが無くなったら、プールの度数分布を作成する(S1405)。プールの度数分布は、仮想ボリュームの度数分布の合計値を計算することにより算出する。具体的には、仮想ボリューム加重指数テーブル307において、対象プールに属する各仮想ボリューム番号804のI/O数805に対応するページ数803の総和を求めて、プール度数分布テーブル306のI/O数805に対応するページ数802として格納する。

0084

続いて、度数分布作成処理プログラム402は、Tier割り当て閾値208を計算して決定する(S1406)。Tier割り当て閾値208は、各Tierについて、Tierのポテンシャル(処理できる最大のI/O数)又はTierの容量何れかを超える限界点から、最大のページ割り当て量の範囲210を決定し、範囲210と度数分布のグラフ209の交点から、Tier割り当て閾値208を算出する方法がある。また、ユーザが指定した閾値を使用する方法でもよい。

0085

図15は、ページ再配置処理プログラム405のフローチャートである。

0086

度数分布作成処理プログラムが終了して、ページ再配置のためのTier割り当て閾値208が決定すると、ページ再配置プログラム405は、Tier割り当て閾値208を元に各仮想ボリュームに割り当てられているページをプール内の適切なTierに再配置する。

0087

ページ再配置プログラム405は、プールに定義された仮想ボリュームを先頭から割り当てられているページの加重平均算出プログラムによって算出されたI/O数とTier割り当て閾値208に応じて、現在いるTierのままでよいか異なるTierに移動すべきかを判定する。そして、ページ再配置プログラム405は、異なるTierに移動すべきだと判断したらページ内データを他のTierの空きページに移動してダイナミックマッピングテーブル301の仮想ボリューム501の論理アドレス502とプールボリューム番号と論理アドレスとの関係を移動先ページに変更する。

0088

まず、ページ再配置プログラム405は、ページ再配置未処理の仮想ボリュームの有無を確認する(S1501)。

0089

もしページ再配置未処理の仮想ボリュームが有れば、ページ再配置プログラム405は、対象仮想ボリュームを先頭から後端に向かって順次、割当たったページ毎に再配置要否を確認する(S1502,S1503)。再配置要否を確認とは、具体的に説明すると、対象のプールのプール度数分布テーブル306のTier割り当て閾値208から、現在いるTierのままでよいか異なるTierに移動すべきかを判定することである。さらに言うと、Tier1とTier2のTier割り当て閾値208Aと、Tier2とTier3のTier割り当て閾値208Bについて、対象のページのI/Oカウンタ702のI/O数と比較する。例えばI/Oカウンタ702の値が、Tier割り当て閾値208Aよりも大きく、対象のページの現在のTierがTier2だった場合、対象のページはTier1にプロモーションするべきなので、再配置は“要”となる。また、対象のページの現在のTierがTier1だった場合は、既に対象のページはTier1に配置されているため、再配置は“否”となる。対象のページの現在のTierを知る方法として、ダイナミックマッピングテーブル301の仮想ボリューム501の論理アドレス502とプールボリューム番号との関係から、プールボリューム番号により、現在どのTierに属しているかを判断できる。

0090

そして、ステップS1503において再配置要の場合、ページ再配置プログラム405は、対象ページを再配置する(S1504)。

0091

再配置否の場合と対象ページを再配置した後は、ページ再配置プログラム405は、仮想ボリューム内の次ページが再配置対象ページか否かを確認する(S1502,S1503)。

0092

ページ再配置プログラム405は、仮想ボリューム全体に渡って再配置処理を行った後は、別の再配置未処理の仮想ボリュームをチェックし、ページ再配置未処理の仮想ボリュームが無くなるまで行う(S1501)。

0093

尚、周期処理であった場合は、周期処理の終わりで一度ページ再配置プログラムは終了し、次の周期処理で改めてページ再配置プログラムによってページ再配置処理は継続されていく。また周期の後端までに再配置処理が終了していた場合は、その時点で一度ページ再配置処理終了し、次の周期で改めて仮想ボリューム毎に再配置処理が行われる。

0094

図16にて、加重平均算出用カウンタ1(703A)値、加重平均算出用カウンタ2(703B)値、およびI/Oカウンタ値702の算出式の例を示す。本実施形態ではまず、ホストI/O処理プログラム401や、デステージ処理プログラム404等にて一定の周期でカウントした、ページのI/O数カウンタ値(a_count)を基に、加重平均算出用カウンタ1値(c[1]_new)と、加重平均算出用カウンタ2値(c[2]_new)とを算出する(1601および1602)。そして、加重平均算出用カウンタ1値と、加重平均算出用カウンタ2値との合算により、ページのI/O数(a_result)を算出する(1603)。

0095

まず、加重平均算出用カウンタ1値(c[1]_new)は、加重指数テーブル(303または304または307)で管理する、「加重平均算出用カウンタの加重値」(p[1]_1)と、「I/O数カウンタの加重値」(p[1]_2)とを加重指数1607として使用し、1604に示す算出式により求める。ここで、加重平均算出用カウンタ1は、短周期のカウンタとして使用するため、「加重平均算出用カウンタの加重値」(p[1]_1)を、軽めに設定する。図の例では、「加重平均算出用カウンタの加重値」(p[1]_1)を3、「I/O数カウンタの加重値」(p[1]_2)を1としているが、I/O数カウンタの値(最新の測定周期のI/O数)の重みを1とすると、加重平均算出用カウンタの値(過去のI/O数)の重みを3として、I/O数カウンタの値を算出することになる。例えば「加重平均算出用カウンタの加重値」(p[1]_1)を0、つまり無加重と設定すると、算出結果は、過去のI/O数を完全に無視することになるので、最新の測定周期のI/O数の値そのものとなる。算出式は、I/O数カウンタ値(a_count)と、前回算出した加重平均算出用カウンタ1値(c[1]_old)との加重平均を算出する式である。算出した加重平均算出用カウンタ1値(c[1]_new)は、次回のI/O数算出時のc[1]_old値として使用する。このため、加重平均算出用カウンタ1(703A)値をc[1]_newで更新する。

0096

同様に、加重平均算出用カウンタ2値(c[2]_new)は、加重指数テーブル(303または304または307)で管理する、「加重平均算出用カウンタの加重値」(p[2]_1)と、「I/O数カウンタの加重値」(p[2]_2)とを加重指数1607として使用し、1605に示す算出式により求める。ここで、加重平均算出用カウンタ2は、長周期のカウンタとして使用するため、「加重平均算出用カウンタの加重値」(p[2]_1)を、重めに設定する。図の例では、「加重平均算出用カウンタの加重値」(p[2]_1)を127、「I/O数カウンタの加重値」(p[2]_2)を1としているが、I/O数カウンタの値(最新の測定周期のI/O数)の重みを1とすると、加重平均算出用カウンタの値(過去のI/O数)の重みを127として、I/O数カウンタの値を算出することになる。つまり、上述した短周期の場合と比較し、最新の測定周期のI/O数が加重平均算出用カウンタの値に与える影響が少ないことになる。算出式は、I/O数カウンタ値(a_count)と、前回算出した加重平均算出用カウンタ2値(c[2]_old)との加重平均を算出する式である。算出した加重平均算出用カウンタ2値(c[2]_new)は、次回のI/O数算出時のc[2]_old値として使用する。このため、加重平均算出用カウンタ2(703B)値をc[2]_newで更新する。以上が種別903でカウンタ数が2と設定されている場合であるが、種別903でカウンタ数が3以上と設定されている場合は、加重平均算出用カウンタ3値(c[3]_new)以降のカウンタについても同様にして算出を実行する。また、種別903でカウンタ数が1と設定されている場合は、前述の加重平均算出用カウンタ2値(c[2]_new)の算出は実施しない。

0097

ページのI/O数(a_result)は、加重平均算出用カウンタ1値(c[1]_new)と、加重平均算出用カウンタ2値(c[2]_new)とを基に、加重指数テーブル(303または304または307)で管理する「合算方法」に従って、平均値または、最大値として算出する(1606)。平均値、最大値を計算する時は、前記加重指数テーブルで管理する、加重平均算出用カウンタ1の「合算時加重値」(p[1]_merge)および、加重平均算出用カウンタ2の「合算時加重値」(p[2]_merge)を合算時加重値1608として使用し、各加重平均算出用カウンタの重みづけを行う。I/Oカウンタ値702は、算出したページのI/O数(a_result)で更新する。以上が種別903でカウンタ数が2と設定されている場合であるが、種別903でカウンタ数が3以上と設定されている場合は、加重平均算出用カウンタ3値(c[3]_new)以降のカウンタについても同様にして算出を実行する。また、種別903でカウンタ数が1と設定されている場合は、平均値および最大値の算出を実行しない。

0098

以上説明したように、「加重平均算出用カウンタの加重値」(p[X]_1)及び「I/O数カウンタの加重値」(p[X]_2)を、加重平均算出用カウンタごとに異なる値を設定することが可能である。(p[X]_1÷p[X]_2)の値(比重)を、各加重平均算出用カウンタで異なる値とすることにより、異なる周期の負荷を合わせたI/O数(a_result)が算出できる。(p[X]_1÷p[X]_2)>(p[Y]_1÷p[Y]_2)であれば、加重平均算出用カウンタXが長周期、加重平均算出用カウンタYが短周期となる。

0099

また、図16の式ではI/Oカウンタ値算出(1606)時に、加重平均算出用カウンタのみを参照しているが、I/O数カウンタ値(a_count)そのものを最大値又は平均値の算出対象として含めてもよい。その場合は、同様にして、I/O数カウンタ値(a_count)用の合算時加重値を設け、その乗算を含めてもよい。例えば、p[1]_1が0だった場合は、c[1]_newの算出結果はI/O数カウンタ値(a_count)と同等であるため、加重平均算出用カウンタ1値(c[1]_new)を設けずに、代わりに上述の方法でI/O数カウンタ値(a_count)を使用することで、加重平均算出用カウンタ1値(c[1]_new)による記憶領域の使用量を削減することができる。

0100

最大値の場合、I/O数の急激な上昇に対して、長周期の視点での低いカウンタ値により低めの値となってしまうことがなく、より敏感にプロモーションを実施できるという効果がある。また、最大値の場合、プール全体からするとI/O数が上昇し、相対的に、Tierの最大性能を低く考えることになり、急激な負荷変動に対してネック状態となりにくい、余裕をもったTier配置となる。

0101

平均値の場合、I/O数の急激な上昇に対して、長周期の視点での低いカウンタ値との平均となるため、滑らかになるため、最大値よりも敏感なプロモーションを実施できないが、プロモーションによるTier間のページ再配置の量を削減できる。また、平均値の場合、最大値と比較し、プール全体からするとI/O数が実際のI/O数に近くなるという性質があり、Tierの最大性能を引き出すTier配置が可能となる。

0102

なお、本実施形態では、加重平均算出用カウンタのパラメータ(加重指数)を変更できるようにしている。これは、ホストI/Oの特性に変化が生じ、加重平均算出用カウンタの修正が必要となった場合に、パラメータを変更することでその修正に対応できるようにしたものである。

0103

具体的には、ホストI/Oの特性として、一時的な負荷停止期間が短くなった場合である。例えば、測定周期は1時間周期だった場合に、平日(5日間)動作して週末(2日間)動作しないジョブがあったとする。そのジョブが、4時間毎に2時間、周期的に稼働するようにスケジュールが変更された場合、2時間程度の負荷停止期間があることになる。この場合、従来想定していた土日の2日間程度の負荷停止期間とは異なるため、長周期用の加重平均算出用カウンタを用いなくても、短周期用の加重平均算出用カウンタのみで、2時間の負荷停止期間に対するデモーションを抑止できる場合がある。具体的には加重平均算出用カウンタ1値(c[1]_new)のp[1]_1とp[1]_2を3と1に設定することにより、一つの加重平均算出用カウンタによる負荷指標のみでも、長周期の視点(従来の設定では短周期に相当)で、特定のページの一時的なI/O数低下によるデモーションを抑止しつつ、特定のページのI/O数の上昇に対して、設定周期(1時間)での迅速なプロモーションが可能となる。この場合、従来の設定で使用していた2つ目の加重平均算出用カウンタを管理装置からの指示により解放させることにより、モニタリングに必要なメモリ使用量計算負荷の低減を図れる。

0104

また、システムの運用中に、途中で測定周期を変更する場合、上述した本方式は時間的な重み付けが変わってしまう。時間的な重み付けを同等に維持するには、変更した測定周期に応じて、負荷の重みを変更する。例えば、現在の測定周期が1時間の場合で、加重指数がp[1]_1=3、p[1]_2=1(Short−Range)、p[2]_1=127、p[2]_2=1(Long−Range)の場合を考える。この場合、測定周期をt時間に変更する場合、加重指数をp[1]_1=4÷t−1、p[1]_2=1、p[2]_1=128÷t−1、p[2]_2=1に設定する。前記のように加重指数の補正を実施すると、時間的な重み付けを同等に維持することができる。一般的には、現在の測定周期がt1時間の場合に、測定周期をt2時間に変更する場合、今までの加重指数をpとして、次の設定すべき加重指数をqで表すと、q[X]_1=(p[X]_1+p[X]_2)÷(t2÷t1)−p[X]_2、q[X]_2=p[X]_1となる。現在の測定周期をこの加重指数の補正は、ストレージシステムが上述の計算式により測定周期の設定変更に応じて自動的に算出してもよいし、ユーザが上述の計算式により計算してGUIから設定してもよい。

0105

図17は、加重平均算出処理プログラム403のフローチャートである。

0106

まず、ステップS1701では、加重平均算出処理プログラム403は、対象ページのページ加重指数テーブルの設定が有るか無いかを判断する。具体的には、加重平均算出処理プログラム403は、ページ加重指数テーブル304に、対象ページのエントリが有るか無いかを調べる。対象ページのエントリが有る場合は、加重平均算出処理プログラム403は、ステップS1704にジャンプし、加重指数の設定値として対象ページの加重値を用いることと決定し(ステップS1704)、ステップS1707にジャンプする。また、対象ページのエントリが無い場合は、加重平均算出処理プログラム403は、ステップS1702にジャンプする。

0107

S1702では、加重平均算出処理プログラム403は、対象ページを含む対象仮想ボリュームの仮想ボリューム加重指数テーブルの設定が有るか無いかを判断する。具体的には、加重平均算出処理プログラム403は、仮想ボリューム加重指数テーブル304に、対象ページを含む対象仮想ボリュームのエントリが有るか無いかを調べる。対象仮想ボリュームのエントリがある場合は、加重平均算出処理プログラム403は、ステップS1706にジャンプし、加重指数の設定値として対象仮想ボリュームの加重値を用いることと決定し(ステップS1706)、ステップ1707にジャンプする。対象仮想ボリュームのエントリが無い場合は、加重平均算出処理プログラム403は、ステップS1703にジャンプする。

0108

S1703では、加重平均算出処理プログラム403は、対象ページを含む対象プールのプール加重指数テーブルの設定が有るか無いかを判断する。具体的には、加重平均算出処理プログラム403は、対象ページを含むプールをダイナミックマッピングテーブルから調べ、当該プールを対象プールとし、対象プールのエントリが有るか無いかを調べる。対象プールのエントリがある場合は、加重平均算出処理プログラム403は、ステップS1705にジャンプし、加重指数の設定値として対象プールの加重値を用いることと決定し(ステップS1705)、ステップS1707にジャンプする。対象プールのエントリが無い場合は、加重平均算出処理プログラム403は、ステップS1707にジャンプする。

0109

ステップS1707では、加重平均算出処理プログラム403は、ステップS1704、またはステップS1705、またはステップS1706で決定した加重値のうち、加重平均算出用カウンタ1(Short−Range)の種別を用いて、加重平均算出用カウンタ1(Short−Range)のカウンタ値を算出する。算出方法は、図16で説明したので詳細を割愛する。

0110

ステップS1708では、加重平均算出処理プログラム403は、ステップS1704、またはステップS1705、またはステップS1706で決定した加重値のうち、加重平均算出用カウンタ2(Long−Range)の種別を用いて、加重平均算出用カウンタ2(Long−Range)のカウンタ値を算出する。算出方法は、図16で説明したので詳細を割愛する。

0111

ステップS1709では、加重平均算出処理プログラム403は、ステップS1707で算出された加重平均算出用カウンタ1の値と、ステップS1708で算出された加重平均算出用カウンタ2の値を用いて、I/Oカウンタのカウンタ値を算出する。算出方法は、図16で説明したので詳細を割愛する。

0112

なお、ここでは加重平均算出用カウンタが2個の場合を例に説明した。加重平均算出用カウンタがN個の場合は、各加重平均算出用カウンタについてステップS1707ないしはステップS1708に相当するステップを実行して加重平均算出用カウンタ値を算出し、ステップS1709において、N個の加重平均算出用カウンタを用いてI/Oカウンタ値を算出すればよい。

0113

図18は、プール単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。

0114

プール単位のページ再配置処理設定画面1801は、設定対象のプールを特定できるプール番号を表示する領域1802と、モニタモードを選択する領域1803と、モニタモードが「加重モード」を選択した場合の詳細設定を行う領域1808で構成される。

0115

ここで、モニタモードは、本発明で開示する加重平均算出によってページ再配置を決定する「加重モード」と、従来技術で開示するI/O数のみによってページ再配置を決定する「非加重モード」である。

0116

モニタモードが「加重モード」を選択した場合の詳細設定を行う領域1808は、加重平均の合算方法を設定する領域1804と、加重平均を算出するカウンタ数を設定する領域1805と、加重平均を算出するカウンタの加重値を入力する領域1806と、予め設定された加重平均算出方法を選択できるプリセット選択を選ぶ領域1807から構成される。

0117

領域1804、1805、1806が設定されたとき、ストレージシステムは、プール加重指数テーブルの、領域1802で特定されるプールのエントリを新規設定ないしは更新する。具体的には、領域1805の設定された数字に等しい加重平均算出用カウンタ番号エントリを設ける。各加重平均算出用カウンタ番号エントリには、領域1806に設定された値のうち、「旧」の値は、「加重平均算出用カウンタの加重値」種別として登録する。「新」の値は、「I/Oカウンタの加重値」種別として登録する。「合」の値は、「合算時加重値」種別として登録する。領域1804で「平均」が選択された場合、「合算方法」種別は「AVG」を登録する。領域1804で「最大」が選択された場合、「合算方法」種別は「MAX」を登録する。合算方法の設定領域1804で「最大」が選択された場合、プール加重指数テーブルの設定対象のプールを特定できるプール番号を表示する領域1802で示されたプールの合算時加重値は、「MAX」を登録する。

0118

なお、上記で述べた詳細設定の設定値を「preSet1」のようなラベルで保存しておき、領域1807で簡便に設定できるようにしてもよい。

0119

図19は、仮想ボリューム単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。

0120

仮想ボリューム単位のページ再配置処理設定画面1901は、設定対象の仮想ボリュームを特定できる仮想ボリューム番号を表示する領域1902と、モニタモードを選択する領域1903と、モニタモードが「加重モード」を選択した場合の詳細設定を行う領域1908で構成される。

0121

ここで、モニタモードは、本発明で開示する加重平均算出によってページ再配置を決定する「加重モード」と、従来技術で開示するI/O数のみによってページ再配置を決定する「非加重モード」と、プール単位のページ再配置処理を行うために仮想ボリューム単位の再配置処理を実行しないことを示す「非設定」である。

0122

モニタモードが「加重モード」を選択した場合の詳細設定を行う領域1908は、図18と同様の領域で構成されるため、説明を省略する。違いは、仮想ボリューム加重指数テーブルのエントリを新規設定ないしは更新する点である。

0123

図20は、ページ単位にページ再配置処理を行うときの、モニタモードや合算方法、カウンタ数等の設定を行う画面の例を示す図である。

0124

ページ単位のページ再配置処理設定画面2001は、設定対象のページを特定できる、仮想ボリューム番号と論理アドレスを表示する領域2002と、モニタモードを選択する領域2003と、モニタモードが「加重モード」を選択した場合の詳細設定を行う領域2008で構成される。

0125

ここで、モニタモードは、本発明で開示する加重平均算出によってページ再配置を決定する「加重モード」と、従来技術で開示するI/O数のみによってページ再配置を決定する「非加重モード」と、プール単位あるいは仮想ボリューム単位のページ再配置処理を行うために仮想ボリューム単位の再配置処理を実行しないことを示す「非設定」である。

0126

モニタモードが「加重モード」を選択した場合の詳細設定を行う領域2008は、図18と同様の領域で構成されるため、説明を省略する。違いは、ページ加重指数テーブルのエントリを新規設定ないしは更新する点である。

0127

以上の算出法を採用すると、例えば週末(土日)だけ動作しないバッチジョブなどで、一時的に負荷が低下しても、長い期間のモニタと同様に、デモーションを抑止でき、月曜日の性能低下を抑止できる。且つ短周期でプロモーションが実施でき、日常業務の負荷への追随が可能となる。その効果を具体的に示したグラフが図21である。

0128

グラフ2101は、週末(土日)の負荷低下時のI/Oカウンタの持続効果を示したものである。p[1]_1=3、p[1]_2=1(Short−Range)、p[2]_1=127、p[2]_2=1(Long−Range)として算出している。縦軸は負荷のI/O数を表し、横軸時間経過を表す。線2103は、ページの実際のI/O数の時間的変化、つまりI/O数カウンタ値(a_count)を表すグラフである。線2104は、加重平均算出用カウンタ1値(c[1]_new)(Short−Range)の時間的変化を表すグラフである。線2105は、加重平均算出用カウンタ2値(c[2]_new)(Long−Range)の時間的変化を表すグラフである。線2106は、本発明の方法によるページのI/O数(a_result)の時間的変化を表すグラフである。線2107は、Tier割り当て閾値208を表す線である。I/O数カウンタ値(a_count)及び加重平均算出用カウンタ1値(c[1]_new)(Short−Range)は、土日(横軸の24時間目〜72時間目)の負荷低減に対して、Tier割り当て閾値208よりも低い値となるため、デモーションが発生する。しかし、本発明の方法によるページのI/O数(a_result)は、Tier割り当て閾値208を下回っていないので、デモーションの発生を抑止できる。

0129

グラフ2102は、短周期でのプロモーションが実施できることを示したグラフである。p[1]_1=3、p[1]_2=1(Short−Range)、p[2]_1=127、p[2]_2=1(Long−Range)として算出している。縦軸は負荷のI/O数を表し、横軸は時間経過を表す。線2108は、ページの実際のI/O数の時間的変化、つまりI/O数カウンタ値(a_count)を表すグラフである。線2109は、加重平均算出用カウンタ1値(c[1]_new)(Short−Range)の時間的変化を表すグラフである。線2110は、加重平均算出用カウンタ2値(c[2]_new)(Long−Range)の時間的変化を表すグラフである。線2111は、本発明の方法によるページのI/O数(a_result)の時間的変化を表すグラフである。線2112は、Tier割り当て閾値208を表す線である。高い負荷(線2108に示す)が発生した場合に、加重平均算出用カウンタ2値(c[2]_new)(Long−Range)は、追従遅れ、Tier割り当て閾値208を上回るのが24時間以降となってしまい、プロモーションが負荷の上昇発生時から大幅に遅れるが、本発明の方法によるページのI/O数(a_result)(線2109)は、負荷の上昇に迅速に追随することが可能であり、短周期でプロモーションが実施できる。

0130

また、上述以外の方法として、測定周期を短周期のままとして、長周期(数週間以上)のI/O数の頻度の両方を保持する方法も考えられる。測定周期を1時間とすると、毎測定周期のI/O数を履歴データとしてそれぞれ数週間分(数百個分)保持し、毎測定周期に、数週間分の毎測定周期のI/O数のデータ(数百個分)を用いて一定の加重値を掛け、長周期のI/O数を算出する方法が考えられる。この方法はモニタリングの対象とする要素数が少ない場合には実装可能であるが、本発明のモニタリングの対象はページ単位であり、システムあたりの要素数は膨大である。このような場合は、算出に必要な記憶領域の容量が膨大となってしまい、またその集計処理にかかる時間も膨大となる。最初に述べた加重平均算出用カウンタを用いた方法であれば、ページの粒度でI/O数を採取する場合でも、周期の長さに依存せず、数個の加重平均算出用カウンタのみで算出可能であり、算出に必要な記憶領域の容量を削減することができ、またその集計処理にかかる時間も短くすることが可能となる。

0131

また、上述以外の方法として、長周期、短周期でそれぞれI/O数のカウンタを持ち、それぞれの周期で更新していく方法が考えられる。この方法だと、上述のように長周期分の測定周期毎のI/O数の履歴を持つ必要はないため、算出に必要な記憶領域の容量を削減することができるが、各測定周期が長周期の切れ目に差し掛かる瞬間に、急激に変わってしまう場合があり、毎測定周期で純粋に、現時点から過去に渡る公平な加重とならないため、長周期の変わり目にデモーションが集中してしまう場合がある。最初に述べた加重平均算出用カウンタを用いた方法であれば、現時点から過去に渡る公平な加重とすることができ、この方法よりもデモーションが特定時点に集中して発生しないようにすることができる。

0132

本発明は、ストレージシステムの自動階層管理機能に係るものであり、一時的なI/O数低下によるデモーションを抑止しつつ、短周期の視点でのI/O数の上昇に対してプロモーションを可能とすることができ、高速な上位階層のドライブで多くのI/Oを処理することができるようになり、下位階層でのボトルネックを解消し、ストレージシステムの性能を向上させることができる計算機システムに適用可能である。

0133

101 ホスト
102管理サーバ
103ネットワーク
104ストレージシステム
105外部ストレージ
106ポート
107保守I/F
108 ポート
109プロセッサパッケージ
110キャッシュメモリ
111共有メモリ
112内部ネットワーク
113ドライブ
114 ドライブ
115 Tier(階層)1
116 Tier(階層)2
117 Tier(階層)3
118ローカルメモリ
119 プロセッサ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • ジャパンモード株式会社の「 施術支援システム」が 公開されました。( 2020/04/30)

    【課題】 施術の精度を向上させることが可能となる施術支援システムを提供する。【解決手段】施術支援システムは、施術対象者の施術前の横顔と正面顔とを含む施術前顔画像を有する対象情報を取得する取得部と、予... 詳細

  • 楽天株式会社の「 要約作成装置、要約作成方法、及びプログラム」が 公開されました。( 2020/04/30)

    【課題】要約の精度を高める。【解決手段】要約作成装置(10)の取得手段(101)は、文書から1又は複数の要素を抽出し、抽出された要素の各々の出現度を取得するアルゴリズムであって、互いに異なる複数のアル... 詳細

  • 株式会社日立製作所の「 データ管理システムおよびデータ管理方法」が 公開されました。( 2020/04/30)

    【課題】要求対象の時間に合ったデータを提供可能なデータ管理システムを提供する。【解決手段】複数のストレージ装置を含んで構成されるデータ管理システムであって、要求対象の時間を示す情報が含まれる要求を受け... 詳細

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ