(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、開示のストレージ制御方法、ストレージ制御装置、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【0010】
図1は、本実施の形態にかかるストレージ制御装置の動作例を示す説明図である。階層ストレージシステム100は、アクセス要求に対する応答性能が異なるストレージst1〜st3と、ストレージst1〜st3を制御するストレージ制御装置101を含む。階層ストレージシステム100は、ユーザに、ストレージst1〜st3の総容量を提供するシステムである。ストレージst1〜st3は、データを記憶する装置である。また、ストレージst1〜st3は、ストレージst1〜st3内の記録媒体と、記録媒体を制御するドライバまたはコントローラを含む。また、応答性能の具体的な違いとして、ストレージのアクセス要求から応答までにかかる時間の違いや、ストレージがランダムアクセス可能であるか、またはストレージがシーケンシャルアクセスしか行えないか、といった内容がある。また、アクセス要求から応答までにかかる時間が同一であっても、消費電力が異なれば、電力効率の点からみれば、消費電力が低いストレージの方が、消費電力が高いストレージよりも応答性能がよいといえる。
【0011】
ストレージst1〜st3の応答性能について、ストレージst1の応答性能が最も高く、ストレージst2の応答性能が次に高く、ストレージst3の応答性能が最も低いものとする。ストレージ制御装置101は、階層ストレージシステム100が記憶しているデータ群の各々のデータを、データのアクセス頻度に応じたストレージに記憶させて、階層ストレージシステム100全体の処理性能を向上させる。
【0012】
移行元ストレージとなるストレージst1に記憶されている移行対象データ102を特定した場合、ストレージ制御装置101は、移行対象データ102がユーザからのアクセス要求に応じてアクセスされてからの経過時間103を取得する。
【0013】
移行対象データ102が特定される契機としては、たとえば、移行対象データ102の経過時間103が、ストレージst1の経過時間の条件である時刻t0から時刻t1に含まれなくなった場合である。経過時間103は、現在時刻t0から、移行対象データ102に最後にアクセスしたアクセス時刻tまでの時間である。また、たとえば、ストレージst1の空き容量が所定の閾値を下回った場合でもよい。また、移行対象データ102の特定方法として、たとえば、ストレージ制御装置101は、ストレージst1のデータの中から、アクセスされてからの経過時間が最も長いデータを、移行対象データとして特定してもよい。
【0014】
次に、ストレージ制御装置101は、ストレージ毎に設定された各々のストレージに移行するデータの条件を参照して、ストレージ群の中から、経過時間103が満たす条件が設定された移行先ストレージを特定する。また、条件は、各々のストレージの応答性能に応じて設定されている。
図1の例では、ストレージst2に移行するデータの条件は、データの経過時間が時刻t1から、アクセス時刻tより短い時刻t2までに設定されている。また、ストレージst3に移行するデータの条件は、データの経過時間が時刻t2から、アクセス時刻tより長い時刻t3までに設定されている。
【0015】
ストレージ制御装置101は、ストレージst2に移行するデータの条件と、ストレージst3に移行するデータの条件と、を参照し、移行対象データ102が満たす条件が設定されたストレージを移行先ストレージとして特定する。ストレージst2に移行するデータの条件は経過時間が時刻t1から時刻t2までの範囲であり、移行対象データ102は条件を満たさない。ストレージst3に移行するデータの条件は経過時間が時刻t2から時刻t3までの範囲であり、移行対象データ102は条件を満たす。したがって、ストレージ制御装置101は、経過時間103が満たす条件が設定されたストレージst3を移行先ストレージとして特定する。
【0016】
続けて、ストレージ制御装置101は、移行元ストレージとなるストレージst1から、特定した移行先ストレージとなるストレージst3に移行対象データ102を移行させる。具体的な移行方法として、ストレージ制御装置101は、移行対象データをストレージst1から読み込んで、読み込んだデータをストレージst3に書き込んでもよい。または、ストレージ制御装置101は、ストレージst1が他のストレージへの送信機能を有していれば、ストレージst1に、移行対象データ102をストレージst3に送信するよう指示してもよい。
【0017】
このように、本実施の形態にかかるストレージ制御装置101は、アクセスからの経過時間が短いデータほど高階層に移行させる。具体的に、ストレージ制御装置101は、移行対象データ102の今後のアクセス頻度が高いか否かを、経過時間103を用いて予測している。そして、ストレージ制御装置101は、経過時間103が短ければ応答性能が高いストレージに移行させ、経過時間103が長ければ応答性能が低いストレージに移行させる。これにより、ストレージ制御装置101は、今後予測されるアクセス頻度に応じてデータを分散配置するとともに高頻度にアクセスされるデータの応答性能を向上させることができる。以下、ストレージ制御装置101の詳細について、
図2〜
図21を用いて説明する。
【0018】
図2は、階層ストレージシステムの接続例を示す説明図である。
図2では、階層ストレージシステム100に含まれる装置群の説明を行う。階層ストレージシステム100は、ストレージ制御装置101#1、101#2と、ストレージst1〜st5と、Fibre Channel(FC)スイッチfc1、fc2と、サーバse1〜se3とを含む。
【0019】
また、各装置の接続関係として、サーバse1は、FCスイッチfc1、fc2と接続している。サーバse2とサーバse3も、FCスイッチfc1、fc2と接続している。ストレージ制御装置101#1は、FCスイッチfc1、fc2と接続している。ストレージ制御装置101#2も、FCスイッチfc1、fc2と接続している。また、ストレージst1は、FCスイッチfc1、fc2と接続している。ストレージst2〜st5も、FCスイッチfc1、fc2と接続している。
【0020】
ストレージ制御装置101#1、101#2は、アクセス要求に対する応答性能が異なるストレージ群を仮想化し、仮想化したストレージへのアクセスをサーバse1〜se3に提供する装置である。ストレージの仮想化は、複数のストレージを1つに束ねてユーザに提供する技術である。
【0021】
ストレージst1〜st5は、データを記憶する装置である。具体的に、ストレージst1は、半導体ドライブである。ストレージst2は、FCディスクである。ストレージst3は、ニアラインディスクである。ストレージst4とストレージst5は、テープドライブである。ニアラインディスクは、FCディスクとテープドライブとの中間の応答性能を有しており、たとえば、ハードディスクである。ストレージst1〜st5は、
図2に示した左側にあるストレージほど、高速、小容量、高価であり、右側にあるストレージほど、低速、大容量、安価である。
【0022】
FCスイッチfc1、fc2は、ストレージst1〜st5とサーバse1〜se3の通信の中継を行う装置である。サーバse1〜se3は、たとえば、Webサーバやアプリケーションサーバといった、何らかの業務を行う装置である。
【0023】
また、以下の説明では、階層ストレージシステム100を3つのレイヤに分割して説明する。3つのレイヤは、サーバレイヤと、ネットワークレイヤと、ストレージレイヤである。サーバレイヤは、サーバse1〜se3を含む。ネットワークレイヤは、FCスイッチfc1、fc2を含む。ストレージレイヤは、ストレージst1〜st5を含む。
【0024】
図3は、階層ストレージシステムのソフトウェア構成例を示す説明図である。ストレージ制御装置101#1、101#2は、ストレージst1〜st5内の物理ボリュームpv1〜pv5を、1つの仮想ストレージプール301として扱う。また、ストレージ制御装置101#1、101#2は、仮想ストレージプール301に、ストレージ制御装置101#1内の記憶装置sd1と、ストレージ制御装置101#2内の記憶装置sd2とを含めてもよい。本実施の形態では、ディスクdi1とディスクdi2が仮想ストレージプール301に含まれるものとして説明する。物理ボリュームは、OSによってフォーマットされた一つながりの連続した記憶領域である。一つのストレージ内に、複数のボリュームがあってもよい。
【0025】
また、ストレージ制御装置101#1、101#2は、仮想ストレージプール301から、仮想ボリューム群302を作成する。
図3の例では、ストレージ制御装置101#1、101#2は、仮想ストレージプール301から、仮想ボリュームvv1〜vv3を作成する。仮想ボリュームvv1〜vv3は、記憶装置sd1、sd2、ストレージst1〜st5の組み合わせとなる。
【0026】
また、ストレージ制御装置101#1、101#2は、記憶装置sd1、sd2、ストレージst1〜st5を階層化して制御する。具体的に、ストレージ制御装置101#1、101#2は、応答性能が最も高い記憶装置sd1、sd2を、階層1のストレージとする。次に、ストレージ制御装置101#1、101#2は、記憶装置sd1、sd2の次に応答性能が高いストレージst1を、階層2のストレージとする。続けて、ストレージ制御装置101#1、101#2は、ストレージst1の次に応答性能が高いストレージst2を、階層3のストレージとする。次に、ストレージ制御装置101#1、101#2は、ストレージst2の次に応答性能が高いストレージst3を、階層4のストレージとする。続けて、ストレージ制御装置101#1、101#2は、応答性能が最も低いストレージst4、st5を、階層5のストレージとする。
【0027】
具体的なストレージ制御装置101#1、101#2による制御内容として、ストレージ制御装置101#1、101#2は、上位の階層のストレージに記憶されているデータを、下位の階層のストレージに移行する。データを下位の階層のストレージに移行させることを、以下、「Sync」と称する。また、ストレージ制御装置101#1、101#2は、下位の階層のストレージに記憶されているデータを、上位の階層のストレージに移行する。データを上位の階層のストレージに移行させることを、以下、「Recall」と称する。また、以下、階層nのストレージを、単に「階層n」と称する。nは、1以上の整数である。
【0028】
たとえば、階層1の記憶容量が最大限に達した場合、ストレージ制御装置101#1は、階層1に記憶されているデータの中から、たとえばアクセスしてからの経過時間が最も長いデータを、階層2にSyncする。また、サーバse1から、階層5に記憶されているデータにアクセスがあった場合、ストレージ制御装置101#1は、アクセスがあったデータを、階層1にRecallする。
【0029】
図4は、ストレージ制御装置のハードウェア構成例を示すブロック図である。
図4において、ストレージ制御装置101#1は、Central Processing Unit(CPU)401と、Read‐Only Memory(ROM)402と、Random Access Memory(RAM)403と、を含む。また、ストレージ制御装置101#1は、記憶装置sd1としてディスクドライブ404およびディスク405と、通信インターフェース406と、を含む。また、CPU401〜通信インターフェース406はバス407によってそれぞれ接続されている。また、
図4では図示していないが、ストレージ制御装置101#2も、ストレージ制御装置101#1と同様のハードウェア構成を有する。
【0030】
CPU401は、ストレージ制御装置101#1の全体の制御を司る演算処理装置である。ROM402は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM403は、CPU401のワークエリアとして使用される揮発性メモリである。
【0031】
ディスクドライブ404は、CPU401の制御に従ってディスク405に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ404には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク405は、ディスクドライブ404の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ404が磁気ディスクドライブである場合、ディスク405には、磁気ディスクを採用することができる。また、ディスクドライブ404がソリッドステートドライブである場合、ディスク405には、半導体素子メモリを採用することができる。
【0032】
通信インターフェース406は、ネットワーク408と内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース406は、通信回線を通じてネットワーク408となるLocal Area Network(LAN)、Wide Area Network(WAN)、インターネットなどに接続され、ネットワーク408を介して他の装置に接続される。通信インターフェース406には、たとえば、モデムやLANアダプタなどを採用することができる。また、ストレージ制御装置101#1は、光ディスクドライブ、光ディスク、キーボード、マウスを有していてもよい。
【0033】
次に
図5〜
図9を用いて、ストレージ制御装置101#1、101#2がアクセス可能なテーブルの記憶内容の一例を示す。各テーブルの記憶内容について、ストレージ制御装置101#1、101#2が、同一の記憶内容となるテーブルをそれぞれ有してもよいし、ストレージ制御装置101#1、101#2のいずれかが記憶していてもよい。
【0034】
図5は、マッピングテーブルの記憶内容の一例を示す説明図である。マッピングテーブル501は、仮想ボリュームと物理ボリュームとを紐づけるテーブルである。
図5に示すマッピングテーブル501は、レコード501−1〜501−17を記憶している。マッピングテーブル501は、データ名、仮想ボリューム情報、物理ボリューム情報という3つのフィールドを含む。データ名フィールドには、紐づけ対象となるデータの名称が格納される。仮想ボリューム情報フィールドには、該当のデータが記憶されている仮想ボリュームの識別情報が格納される。物理ボリューム情報フィールドには、該当のデータが実際に記憶されている物理ボリュームの識別情報が格納される。
【0035】
たとえば、レコード501−1は、仮想ボリュームvv1に記憶されているデータ1_6は、物理ボリュームpv1に記憶されていることを示す。また、以降の説明において、データ1_1〜1_8は、仮想ボリュームvv1に記憶されているデータであるとする。同様に、データ2_1〜2_6は、仮想ボリュームvv2に記憶されているデータであり、データ3_1〜3_3は、仮想ボリュームvv3に記憶されているデータであるとする。
【0036】
図6は、階層情報テーブルの記憶内容の一例を示す説明図である。階層情報テーブル601は、各階層に関する情報を記憶するテーブルである。
図6に示す階層情報テーブル601は、レコード601−1〜601−5を記憶している。さらに、レコード601−1〜601−5は、サブレコードを含む。たとえば、レコード601−1は、サブレコード601−1−1〜601−1−3を含む。
【0037】
階層情報テーブル601は、階層情報、使用量、全体量、キュー情報およびタイムスタンプ情報、仮想ボリューム情報、使用中フラグ、サーバ情報、ミラーリング情報という8つのフィールドを含む。仮想ボリューム情報フィールド〜ミラーリング情報フィールドは、サブレコードに含まれるフィールドである。
【0038】
階層情報フィールドには、該当の階層を識別する情報が格納される。使用量フィールドには、該当の階層の記憶容量のうち、使用中の記憶容量が格納される。全体量フィールドには、該当の階層の最大記憶容量が格納される。
【0039】
キュー情報およびタイムスタンプ情報フィールドには、該当の階層に記憶されているデータの識別情報の一覧が、データがアクセスされてからの経過時間の順序で格納される。さらに、キュー情報およびタイムスタンプ情報フィールドには、データの識別情報に関連付けて、データにアクセスした時刻であるタイムスタンプ情報が格納される。タイムスタンプ情報は、該当のデータに最後にアクセスされた時刻である。
図6の例では、キュー情報内の、左側に格納されたデータほど、データにアクセスされてからの経過時間が長く、右側に格納されたデータほど、データにアクセスされてからの経過時間が短いことを示す。
【0040】
仮想ボリューム情報フィールドには、該当の階層を用いることができる仮想ボリュームの識別情報が格納される。使用中フラグフィールドには、該当の階層を仮想ボリュームが使用しているか否かを示す識別子が格納される。たとえば、該当の階層を仮想ボリュームが使用している場合、使用中フラグフィールドには、“使用中”識別子が格納される。また、該当の階層を仮想ボリュームが使用していない場合、使用中フラグフィールドには、“不使用”識別子が格納される。
【0041】
サーバ情報フィールドには、仮想ボリュームが割り当てられたサーバが格納される。ミラーリング情報フィールドには、仮想ボリュームが該当の階層に対応するストレージとは別のストレージにミラーリングしているか否かを示す識別子が格納される。たとえば、該当の仮想ボリュームが別のストレージにミラーリングしている場合、ミラーリング情報フィールドには、“有”識別子が格納される。また、該当の仮想ボリュームが別のストレージにミラーリングしていない場合、ミラーリング情報フィールドには、“無”識別子が格納される。
【0042】
たとえば、レコード601−1は、階層1が、使用中の記憶容量が0.9[TB]であり、最大記憶容量が1[TB]であり、データ2_5とデータ2_6を記憶している。さらに、サブレコード601−1−1は、仮想ボリュームvv1が、階層1を使用していなく、サーバse1に割り当てられており、階層1とは別のストレージにミラーリングしていることを示す。また、サブレコード601−1−2は、仮想ボリュームvv2が、階層1を使用しており、サーバse1に割り当てられており、階層1とは別のストレージにミラーリングしていることを示す。また、サブレコード601−1−3は、仮想ボリュームvv3が、階層1を使用していなく、サーバse2に割り当てられており、ミラーリングしていないことを示す。
【0043】
また、各仮想ボリュームの最上位の階層を、「プライマリ階層」と呼称する。たとえば、仮想ボリュームvv1のプライマリ階層は、階層2である。また、仮想ボリュームvv2のプライマリ階層は、階層1である。同様に、仮想ボリュームvv3のプライマリ階層は、階層2である。各仮想ボリュームのプライマリ階層は、ストレージ制御装置101の記憶領域に記憶しておいてもよいし、仮想ボリュームのプライマリ階層を取得する際に、使用中フラグを参照して、仮想ボリュームのプライマリ階層を特定してもよい。
【0044】
図7は、アクセス特性閾値テーブルの記憶内容の一例を示す説明図である。アクセス特性閾値テーブル701は、各々の階層について、各々のストレージが特定の階層となる、アクセス要求の単位時間あたりの回数の条件を記憶する。特定の階層とは、仮想ボリュームが使用しない階層であり、アクセス特性閾値テーブル701は、仮想ボリュームから各々の階層が使用されない条件を記憶する。また、アクセス特性閾値テーブル701は、仮想ボリュームから各々の階層が使用される条件をストレージ毎に記憶していてもよい。本実施の形態では、アクセス特性閾値テーブル701は、各々の階層が使用される条件を記憶するものとする。
【0045】
また、アクセス特性閾値テーブル701は、各々のストレージについて、各々の階層が特定のストレージとなる、所定期間のうちのアクセス要求の単位時間あたりの回数を満たす期間の数の条件をストレージ毎に記憶していてもよい。
【0046】
図7に示すアクセス特性閾値テーブル701は、レコード701−1〜701−nを記憶する。アクセス特性閾値テーブル701は、階層情報、使用条件という2つのフィールドを含む。階層情報フィールドには、階層を識別する情報が格納される。使用条件フィールドには、該当の階層を使用する条件が格納される。さらに、使用条件フィールドは、アクセス回数条件と、単位時間条件という2つのサブフィールドを含む。アクセス回数条件サブフィールドには、アクセス要求の単位時間あたりの回数の条件が格納されている。単位時間条件サブフィールドには、所定期間のうちのアクセス要求の単位時間あたりの回数を満たす期間の数の条件が格納されている。
【0047】
たとえば、レコード701−1は、階層1を使用する条件として、アクセス回数条件がp[回]以上であり、さらに、アクセス回数条件がp[回]以上となった日数がA[日]以上であることを示している。
【0048】
図8は、アクセス特性テーブルの記憶内容の一例を示す説明図である。アクセス特性テーブル801は、仮想ボリューム毎に、アクセス要求の回数を単位時間毎に記憶する。
図8に示すアクセス特性テーブル801は、レコード801_vv1−1〜801_vv1−m、801_vv2−1〜801_vv2−m、801_vv3−1〜801_vv3−mを記憶している。mは、1以上の整数である。また、レコード801_vv1−1〜801_vv1−mは、仮想ボリュームvv1に対するアクセス要求の回数を記憶している。同様に、レコード801_vv2−1〜801_vv2−mは、仮想ボリュームvv2に対するアクセス要求の回数を記憶しており、レコード801_vv3−1〜801_vv3−mは、仮想ボリュームvv3に対するアクセス要求の回数を記憶している。また、
図8で示すレコード801_vv1−1〜801_vv3−mは、単位時間が1日である場合の例を示している。
【0049】
アクセス特性テーブル801は、日数、アクセス回数という2つのフィールドを含む。日数フィールドには、対象となる日数が格納される。アクセス回数フィールドには、日数フィールドに格納された日数で指定される日のアクセス数が格納される。たとえば、レコード801_vv1−1は、仮想ボリュームvv1に対するアクセス要求のうち、1日前のアクセス要求の回数がv1_a[回]であることを示す。
【0050】
図9は、Sync先決定閾値テーブルの記憶内容の一例を示す説明図である。Sync先決定閾値テーブル901は、階層群の各々の階層に移行するデータのアクセスされてからの経過時間の条件を記憶するテーブルである。
図9に示すSync先決定閾値テーブル901は、経過時間条件、Sync先という2つのフィールドを含む。経過時間条件フィールドには、Sync対象データがアクセスされてからの経過時間の条件が格納される。Sync先フィールドには、Sync対象データが経過時間条件フィールドに格納された条件を満たした場合のSync先となる階層を識別する情報が格納される。
【0051】
たとえば、レコード901−1は、Sync対象データがアクセスされてからの経過時間が1週間未満である場合、Sync対象データのSync先を階層2にすることを示している。
【0052】
(ストレージ制御装置101の機能)
次に、ストレージ制御装置101の機能について説明する。
図10は、ストレージ制御装置の機能構成例を示すブロック図である。ストレージ制御装置101は、階層制御部1001と、仮想化機構部1002を含む。
【0053】
階層制御部1001は、受付部1011と、移行対象データ特定部1012と、取得部1013と、算出部1014と、移行先階層特定部1015と、判断部1016と、移行部1017と、を含む。また、階層制御部1001は、階層情報テーブル601と、Sync先決定閾値テーブル901とにアクセス可能である。また、仮想化機構部1002は、仮想ストレージプール管理部1021と、仮想ボリューム管理部1022と、ミラーリング制御部1023と、計数部1024と、検索部1025と、を含む。また、仮想化機構部1002は、マッピングテーブル501と、アクセス特性閾値テーブル701と、アクセス特性テーブル801とにアクセス可能である。マッピングテーブル501〜Sync先決定閾値テーブル901は、RAM403、ディスク405といった記憶装置に格納されている。
【0054】
階層制御部1001、仮想化機構部1002は、記憶装置に記憶されたプログラムをCPU401が実行することにより、階層制御部1001、仮想化機構部1002の機能を実現する。記憶装置とは、具体的には、たとえば、
図4に示したROM402、RAM403、ディスク405などである。または、通信インターフェース406を経由して他のCPUが実行することにより、階層制御部1001、仮想化機構部1002の機能を実現してもよい。
【0055】
階層制御部1001は、階層1〜階層nを制御する。階層制御部1001の具体的な機能が、受付部1011〜移行部1017の機能となる。仮想化機構部1002は、ストレージの仮想化を実現する機構を有する。仮想化機構部1002の具体的な機能が、仮想ストレージプール管理部1021〜検索部1025の機能となる。
【0056】
受付部1011は、サーバからのアクセス要求を受け付ける。アクセス要求は、書き込み要求または読み込み要求を含む。なお、抽出されたデータは、RAM403、ディスク405などの記憶領域に記憶される。
【0057】
移行対象データ特定部1012は、移行先階層に記憶されているデータの中から、移行対象データを特定する。たとえば、移行対象データ特定部1012は、最上位の階層にデータを書き込もうとする際に最上位の階層の記憶領域の空きがない場合、に記憶されているデータの中から、アクセスされてからの経過時間が最も長いデータを、移行対象データとして特定する。または、移行対象データ特定部1012は、最上位の階層に記憶されているデータに対して、アクセス回数を記憶しておいて、アクセス回数が最も少ないデータを、移行対象データとして特定してもよい。書き込みを行おうとしている階層が最上位の階層か否かは、階層情報テーブル601を参照することにより判断できる。なお、移行対象データとして特定されたデータの識別情報は、RAM403、ディスク405などの記憶領域に記憶される。
【0058】
取得部1013は、アクセス要求に対する応答性能が異なる3以上の階層群のうちの移行元階層に記憶されている、移行対象データ特定部1012によって特定された移行対象データがアクセス要求に応じてアクセスされてからの経過時間を取得する。たとえば、取得部1013は、階層2に記憶されているデータ1_6の経過時間を取得する。具体的に、取得部1013は、現在時刻から、タイムスタンプ情報が示す時刻を引くことにより、経過時間を取得する。また、タイムスタンプ情報が示す時刻は、該当のデータに最後にアクセスされた時刻であるが、たとえば、過去数回のアクセスされた時刻の平均値などでもよい。
【0059】
また、取得部1013は、移行部1017によって階層群のうち不使用の階層とは異なる他の階層に移行させた後、他の階層のうちの移行元階層に記憶されている移行対象データがアクセス要求に応じてアクセスされてからの経過時間を取得してもよい。たとえば、階層2、階層4、階層5のうち、不使用の階層となった階層2とは異なる階層4、階層5に、移行部1017によって階層2のデータを移行させた後、取得部1013は、階層4のデータ1_4の経過時間を取得する。なお、抽出されたデータは、RAM403、ディスク405などの記憶領域に記憶される。
【0060】
算出部1014は、各々の階層の応答性能に基づいて、各々の階層の応答性能が高いほど条件となる経過時間の範囲の上限値または下限値が小さくなるように、各々の階層に設定される条件となる経過時間の範囲を算出する。たとえば、算出部1014は、階層iの経過時間の下限値を、(i−2)×30[日]として算出してもよい。前述の算出式を適用すると、算出部1014は、階層2の下限値を、(2−2)×30=0[日]と算出し、階層3の下限値を、(3−2)×30=30[日]と算出する。また、経過時間の範囲は、上位の階層と下位の階層で一部重なってもよい。
【0061】
また、算出部1014は、各々の階層の記憶容量に基づいて、各々の階層の記憶容量が大きいほど条件となる経過時間の範囲が長くなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。階層の記憶容量は、階層の空き容量でもよいし、階層の最大記憶容量でもよい。たとえば、算出部1014は、階層iの経過時間の上限値を、(階層iの記憶容量/1[TB])×10[日]としてもよい。たとえば、階層2の最大記憶容量が10[TB]であるとすると、算出部1014は、階層2の経過時間の上限値を、(10/1)×10=100[日]と算出する。
【0062】
また、算出部1014は、各々の階層の記憶容量に基づいて、各々の階層の記憶容量が大きいほど条件となる経過時間の範囲が長くなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。具体的な算出方法は、
図13にて後述する。なお、算出されたデータは、RAM403、ディスク405などの記憶領域に記憶される。
【0063】
さらに、算出部1014は、算出した条件となる経過時間の範囲を各々の階層に設定してSync先決定閾値テーブル901に記憶する。たとえば、算出部1014は、階層2の経過時間の上限値100[日]と下限値0[日]をレコード901−1に記憶する。
【0064】
移行先階層特定部1015は、Sync先決定閾値テーブル901を参照して、取得部1013によって取得された経過時間に基づいて、階層群の中から移行対象データが満たす条件が設定された移行先階層を特定する。たとえば、取得部1013が取得した経過時間が10[日]であるとする。このとき、移行先階層特定部1015は、
図9に示したSync先決定閾値テーブル901を参照して、階層3を移行先階層として特定する。
【0065】
また、移行先階層特定部1015は、Sync先決定閾値テーブル901を参照して、取得した経過時間に基づいて、階層群のうち不使用の階層とは異なる他の階層の中から移行対象データが満たす条件が設定された移行先階層を特定してもよい。たとえば、移行先階層特定部1015は、階層2、階層4、階層5のうち、不使用の階層となった階層2とは異なる階層4、階層5の中から、移行対象データが満たす条件が設定された移行先階層を特定する。なお、特定された階層の識別情報は、RAM403、ディスク405などの記憶領域に記憶される。
【0066】
判断部1016は、受付部1011がアクセス要求を受け付けて移行対象データを移行させた後、所定時間内のアクセス要求の回数が所定数以上か否かを判断する。たとえば、判断部1016は、所定時間として、24時間以内のアクセス要求の回数が、所定数として2回以上あったか否かを判断する。なお、判断結果は、RAM403、ディスク405などの記憶領域に記憶される。
【0067】
移行部1017は、移行元階層から、移行先階層特定部1015によって特定された移行先階層に移行対象データを移行させる。たとえば、移行部1017は、移行元階層となった階層2から、移行先階層となった階層3に移行対象データを移行させる。
【0068】
また、移行部1017は、階層群のうちの不使用の階層に記憶されているデータを、階層群のうちの不使用の階層とは異なる他の階層に移行させてもよい。また、移行部1017は、検索部1025によって不使用の階層が検索された場合、不使用の階層に記憶されているデータを、他の階層に移行させてもよい。たとえば、階層2、階層4、階層5のうち、検索部1025が、階層2を不使用の階層として検索したとする。この場合、移行部1017は、階層2に記憶されているデータを、階層4、階層5に移行させる。
【0069】
また、移行部1017は、判断部1016によって所定時間内のアクセス数が所定数以上であると判断された場合、アクセス要求があったデータを記憶している階層から、前述の階層より応答性能が高い階層にアクセス要求があったデータを移行させる。たとえば、判断部1016が、24時間以内のアクセス要求の回数が2回以上あったと判断したとする。この場合、移行部1017は、アクセス要求があったデータを記憶している階層3から、前述の階層より応答性能が高い階層2にアクセス要求があったデータを移行させる。
【0070】
仮想ストレージプール管理部1021は、仮想ストレージプール301に取り込んだ物理ボリュームの情報を記憶する。具体的に、仮想ストレージプール管理部1021は、取り込んだ物理ボリュームのLogical Unit Number(LUN)の大きさや、ストレージst1〜st5へのパス情報として、World Wide Port Name(WWPN)と、World Wide Node Name(WWNN)を記憶する。
【0071】
仮想ボリューム管理部1022は、マッピングテーブル501を用いて、仮想ボリュームと物理ボリュームの紐づけを管理する。ミラーリング制御部1023は、仮想ボリュームのミラーリング制御を行う。
【0072】
計数部1024は、受付部1011が受け付けたアクセス要求の回数を単位時間毎に計数する。また、計数部1024は、所定期間のうちのアクセス要求の回数を単位時間毎に計数する。たとえば、計数部1024は、所定期間として、365日間のうちのアクセス要求の回数を1日毎に計数する。なお、単位時間毎のアクセス要求の回数は、アクセス特性テーブル801などの記憶領域に記憶される。
【0073】
検索部1025は、アクセス特性閾値テーブル701に記憶されているアクセス要求の回数の条件を参照して、階層群のうちの、計数部1024が計数した回数が満たす条件が設定された不使用の階層を検索する。
【0074】
また、検索部1025は、アクセス特性閾値テーブル701に記憶されているアクセス要求の回数を満たす期間の数の条件を参照して、階層群のうちの、計数部1024が計数した回数を満たす期間の数が満たす条件が設定された不使用の階層を検索してもよい。なお、判断結果は、RAM403、ディスク405などの記憶領域に記憶される。
【0075】
図11は、仮想ボリュームの階層設定の一例を示す説明図である。仮想ボリュームの階層設定は、手動設定として、利用者が設定してもよいし、自動設定として、全階層を選択し、アクセス頻度に基づいた使用階層選択処理を実行してもよい。
図11では、使用階層として、階層1と、階層3、階層5が指定されており、手動設定または自動設定によって、使用階層を減らす変更を行った場合と、使用階層を増やす変更を行った場合の例について説明する。
【0076】
使用階層を減らす変更について、
図11の例では、階層3を不使用に設定した例を示す。階層3を不使用に設定した場合、ストレージ制御装置101は、不使用に設定された階層にあるデータを、不使用に設定された階層よりも下位の階層に移行させる。ただし、最下位の階層が不使用に設定された場合、ストレージ制御装置101は、不使用に設定された階層にあるデータを、不使用に設定された階層よりも上位の階層に移行させる。また、データ移行後、ストレージ制御装置101は、マッピングテーブル501および階層情報テーブル601を更新する。
【0077】
一方、使用階層を増やす変更について、
図11の例では、階層2を使用に設定した例を示す。階層2を使用に設定した場合、使用階層を増やす変更を行ったときには、ストレージ制御装置101は、データの移行を行わない。階層1のデータの中からSync対象データが特定された場合、ストレージ制御装置101は、Sync対象データを階層2に移行させるときもある。Sync対象データが階層2に記憶された場合に、階層2が使用される。階層3から階層2へRecallは行わない。
【0078】
また、階層を不使用に設定した場合、不使用階層に記憶されているデータの移行先は、上述の説明では、単に下位の階層としている。他の移行先を決定する方法として、たとえば、ストレージ制御装置101は、不使用階層に記憶されているデータがアクセスされてからの経過時間を参照して、どの階層に移行するか決定してもよい。たとえば、ストレージ制御装置101は、不使用階層に記憶されているデータ群の各々のデータに対して、Sync先決定閾値テーブル901を参照して、条件を満たした階層に移行させてもよい。
【0079】
または、ストレージ制御装置101は、上位の階層のデータのうち、アクセスされてからの経過時間が最も長いデータの経過時間と、不使用階層に記憶されているデータ群の各々のデータがアクセスされてからの経過時間と、を比較する。続けて、ストレージ制御装置101は、アクセスされてからの経過時間が最も長いデータの経過時間より短いデータを、上位の階層に移行させる。次に、
図12Aと、
図12Bを用いて、アクセス頻度に基づいた使用階層選択処理の例を示す。
【0080】
図12Aは、アクセス頻度に基づいた階層設定の一例を示す説明図である。
図12Aでは、
図12Aに示すアクセス特性閾値テーブル701_Aに従って、使用階層選択処理を行った場合の例を示す。アクセス特性閾値テーブル701_Aは、レコード701−1_A〜701−5_Aを記憶している。レコード701−1_A〜701−4_Aは、レコード701−1〜701−4と同一の記憶内容である。また、レコード701−5_Aは、階層5に関して、アクセス回数条件フィールドがr[回]未満であり、単位時間条件フィールドがE[日]であることを示している。
【0081】
図12Aの(A)では、仮想ボリューム作成直後はアクセス回数が多く、以降アクセス回数が徐々に少なくなる場合の例を示している。
図12Aの(A)の例では、アクセス特性テーブル801のレコードが、アクセス特性閾値テーブル701_Aの階層1〜階層5の条件を全て満たすため、ストレージ制御装置101は、仮想ボリュームに階層1〜階層5を含めるように設定する。
【0082】
一方、
図12Aの(B)では、仮想ボリューム作成後、アクセス回数が多くなく、また、アクセス回数が時間とともに少なくなる場合の例を示している。
図12Aの(B)の例では、アクセス特性閾値テーブル701_Aの階層1、階層2のアクセス回数条件を満たすレコードがないため、ストレージ制御装置101は、仮想ボリュームに階層3〜階層5を含めるように設定する。
【0083】
図12Bは、アクセス頻度に基づいた階層設定の他の例を示す説明図である。
図12Bでは、
図12Bに示すアクセス特性閾値テーブル701_Bに従って、使用階層選択処理を行った場合の例を示す。アクセス特性閾値テーブル701_Bは、レコード701−1_B〜701−5_Bを記憶している。たとえば、レコード701−1_Bは、アクセス回数条件フィールドが10000[回]以上であり、単位時間条件フィールドが2[日]である。
【0084】
図12Bの(C)では、仮想ボリューム作成直後はアクセス回数が多いが、以降、アクセス回数が急激に少なくなる場合の例を示している。
図12Bの(C)の例では、アクセス特性テーブル801のレコードが、アクセス特性閾値テーブル701_Bの階層1〜階層5の条件を全て満たしている。しかしながら、階層3に対して、アクセス回数が5000[回]以上8000[回]未満となった日数が5[日]未満であったため、ストレージ制御装置101は、階層3を不使用階層に設定する。同様に、階層4に対して、アクセス回数が2000[回]以上5000[回]未満となった日数が10[日]未満であったため、ストレージ制御装置101は、階層4を不使用階層に設定する。以上により、ストレージ制御装置101は、仮想ボリュームに階層1、階層2、階層5を含めるように設定する。
【0085】
図13は、Sync先決定処理の動作の一例を示す説明図である。
図13では、上位の階層に空き領域がなくなった場合の、Sync先となる階層の決定方法の一例を説明する。ストレージ制御装置101は、Sync先決定閾値テーブル901を参照して、Sync先となる階層を決定する。Sync先決定閾値テーブル901は、手動設定として、利用者が設定してもよいし、自動設定として、階層の応答性能に基づいてストレージ制御装置101が設定してもよい。
【0086】
ストレージ制御装置101が条件を設定する場合、ストレージ制御装置101は、下記(1)式を用いて、経過時間条件の上限値を算出する。
【0087】
階層iにSyncする経過時間の上限値 = 365×(階層iまでの記憶容量の合計)/(全階層の記憶容量の合計)−1 …(1)
【0088】
また、経過時間条件の下限値は、1つ上の階層の上限値より1日大きい値となる。最上位の階層の経過時間条件の下限値は、0となる。また、最下位の階層の条件は、経過時間条件の下限値より、アクセスされてからの経過時間が長いデータとなる。
図13の例では、ストレージ制御装置101が階層1に記憶されているデータ2_5を階層2〜階層5のいずれかに移行する場合を例として説明する。さらに、
図13の例では、データ2_5を記憶している仮想ボリュームが、階層2〜階層5を使用中であるとする。
【0089】
このとき、ストレージ制御装置101は、(1)式に従って、階層2〜階層5に移行させる経過時間の条件を算出する。たとえば、ストレージ制御装置101は、(1)式を利用して、階層2にSyncする経過時間の上限値を算出する。
【0090】
階層2にSyncする経過時間の上限値 = 365×(階層2までの記憶容量の合計)/(全階層の記憶容量の合計)−1
階層2にSyncする経過時間の上限値 = 365×(1+5)/100−1=21[日]
【0091】
また、階層2は、移行対象となる階層のうち、最上位の階層となるため、ストレージ制御装置101は、階層2にSyncする経過時間の下限値を、0に設定する。したがって、ストレージ制御装置101は、階層2の経過時間条件を、21日以下に設定する。続けて、ストレージ制御装置101は、階層3の経過時間条件を22日から58日に設定し、階層4の経過時間条件を59日から131日に設定し、階層5の経過時間条件を132日以上に設定する。
【0092】
上述で説明した例は、データ2_5を記憶している仮想ボリュームが、階層2〜階層5を使用中であるとしている。もし、階層2〜階層5のうち、不使用の階層がある場合、ストレージ制御装置101は、(1)式の“全階層の記憶容量の合計”を“使用中の階層の記憶容量の合計”として算出する。
【0093】
また、空き容量がなくなったか否かの判断方法として、ストレージ制御装置101は、プライマリ階層に設定された階層について、使用中の記憶容量が最大記憶容量に対する一定量を超えた場合に、空き容量がなくなったと判断してもよい。一定量は、最大記憶容量の半分の容量などである。
【0094】
図14は、Recall制御処理の動作の一例を示す説明図である。
図14では、Recallを行うか否かを判断する処理について説明する。たとえば、サーバse1により、2011年1月2日に階層5に記憶されているデータ1_1がアクセスされたとする。このとき、ストレージ制御装置101は、サーバ毎に用意してあるRecallビットマップテーブル1401を参照して、アクセスがあった日のビットが設定されていない場合、アクセスがあった2011年1月2日と、前後数日とのビットを設定する。たとえば、
図14の例では、2011年1月2日と、前後1日のビットを設定する。
【0095】
次に、サーバse1により、2011年1月3日に階層5に記憶されているデータ1_2がアクセスされたとする。このとき、ストレージ制御装置101は、サーバ毎に用意してあるRecallビットマップテーブル1401を参照して、アクセスがあった日のビットが設定されている場合、アクセスがあったデータをRecallする。
図14の例では、ストレージ制御装置101は、データ1_2を階層2に移行させる。
【0096】
また、ストレージ制御装置101は、ビットを設定した一定時間後にビットの設定を解除する。このように、ストレージ制御装置101は、アクセス要求を頻繁に発行するサーバのデータをRecallすることになるため、アクセス回数が多くなると予想されるサーバのデータの応答性能を向上することになる。したがって、階層ストレージシステム100の性能を向上することができる。また、ストレージ制御装置101は、データ毎にRecallビットマップテーブル1401を用意して、アクセス回数が多くなると予想されるデータに対する応答性能を向上してもよい。
【0097】
図15は、キュー制御処理の動作の一例を示す説明図である。
図15では、各階層が記憶しているデータの制御の動作について説明する。サーバからアクセスされたデータがプライマリ階層にある場合、ストレージ制御装置101は、該当のデータのI/O処理を行うとともに、該当のデータのタイムスタンプ情報を更新する。
【0098】
また、サーバからアクセスされたデータがプライマリ階層にない場合、ストレージ制御装置101は、該当のデータのI/O処理を行うとともに、該当のデータのタイムスタンプ情報を更新する。さらに、ストレージ制御装置101は、プライマリ階層に該当のデータをRecallして、プライマリ階層のキュー情報の最後尾に、該当データを格納する。
【0099】
また、プライマリ階層に空き領域がない場合、ストレージ制御装置101は、プライマリ階層が記憶しているデータの中から、Sync対象データを特定して、下位の階層にSyncする。Sync対象データは、たとえば、プライマリ階層が記憶しているデータのうち、アクセスしてからの経過時間が最も長いデータである。
【0100】
以下、サーバからアクセスされたデータがプライマリ階層になく、さらに、プライマリ階層に空き領域がない場合についての一連の処理を、
図15を用いて説明する。たとえば、サーバse1が、データ1_2に対してアクセス要求を発行したとする。このとき、ストレージ制御装置101は、データ1_2をプライマリ階層である階層2に移行させようとする。しかしながら、階層2に空き領域がないため、ストレージ制御装置101は、階層2が記憶しているデータのうち経過時間が最も長いデータであるデータ1_6をSync対象データに特定し、サーバse1の使用階層である階層4にSyncする。これにより、階層2に領域が確保できたため、ストレージ制御装置101は、データ1_2を階層2にRecallし、タイムスタンプ情報を更新する。
【0101】
なお、各階層のキュー情報は、全仮想ボリュームで共有するため、Sync対象データが記憶されている仮想ボリュームと、Recall対象のデータが記憶されている仮想ボリュームとが同一の仮想ボリュームとならない場合もありうる。たとえば、階層2が記憶しているデータのうち経過時間が最も長いデータがデータ3_3となった場合、ストレージ制御装置101は、データ3_3を、仮想ボリュームvv3の下位の使用階層3にSyncする。
【0102】
続けて、
図16〜
図21を用いて、本実施の形態にかかるストレージ制御装置101が実行する処理についてのフローチャートについて説明する。
図16〜
図21にて示すフローチャートの実行主体は、ストレージ制御装置101#1でもよいし、ストレージ制御装置101#2でもよい。以降の説明では、ストレージ制御装置101#1が実行するものとする。
【0103】
図16は、仮想ボリューム作成処理手順の一例を示すフローチャートである。仮想ボリューム作成処理は、仮想ストレージプール301から仮想ボリュームを生成する処理である。初めに、ストレージ制御装置101#1は、物理ボリュームを認識する(ステップS1601)。次に、ストレージ制御装置101#1は、認識した物理ボリュームを種類別にグルーピングする(ステップS1602)。
【0104】
続けて、ストレージ制御装置101#1は、仮想ストレージプール301に物理ボリュームを取り込む(ステップS1603)。次に、ストレージ制御装置101#1は、作成する仮想ボリュームのサイズを指定する(ステップS1604)。続けて、ストレージ制御装置101#1は、使用階層を選択する(ステップS1605)。使用階層の選択について、手動設定として、利用者が設定してもよいし、自動設定として、全階層を選択し、
図18にて示す、アクセス頻度に基づいた使用階層選択処理を実行してもよい。
【0105】
次に、ストレージ制御装置101#1は、階層情報テーブル601を更新する(ステップS1606)。具体的な更新内容として、ストレージ制御装置101#1は、階層情報テーブル601の各階層のレコードに、作成する仮想ボリュームのサブレコードを追加する。続けて、ストレージ制御装置101#1は、ステップS1605の処理にて選択された階層のレコード内の、作成する仮想ボリュームのサブレコードについて、階層情報テーブル601の使用中フラグに“使用中”を設定する(ステップS1607)。次に、ストレージ制御装置101#1は、使用中となった階層のうち、最上位の階層をプライマリ階層に設定する(ステップS1608)。
【0106】
続けて、ストレージ制御装置101#1は、使用する階層を有する仮想ボリュームを定義する(ステップS1609)。ステップS1609の処理について、ストレージ制御装置101#1は、シン・プロビジョニングを適用して、作成する仮想ボリュームの実体が空の領域に設定してもよい。書き込み要求が初めてあった場合に、ストレージ制御装置101#1は、仮想ボリュームに実際の容量を割り当てる。次に、ストレージ制御装置101#1は、定義した仮想ボリュームをサーバへ割り当てる(ステップS1610)。
【0107】
ステップS1610の実行終了後、ストレージ制御装置101#1は、仮想ボリューム作成処理を終了する。仮想ボリューム作成処理を実行することにより、階層ストレージシステム100は、サーバが仮想ボリュームにアクセスできるようにすることができる。
【0108】
図17Aは、仮想ボリュームに対してのアクセス処理手順の一例を示すフローチャート(その1)である。仮想ボリュームに対してのアクセス処理は、サーバからアクセス要求が発行されたときに実行される処理である。
【0109】
ストレージ制御装置101#1は、サーバが仮想ボリュームに対してアクセス要求を発行する(ステップS1701)。次に、ストレージ制御装置101#1は、アクセス要求が新規書き込み要求か否かを判断する(ステップS1702)。アクセス要求が新規書き込み要求である場合(ステップS1702:Yes)、ストレージ制御装置101#1は、マッピングテーブル501に、仮想ボリュームと物理ボリュームの新たな関連付け情報を作成する(ステップS1703)。アクセス要求が新規書き込み要求でない場合(ステップS1702:No)、ストレージ制御装置101#1は、物理アクセス先をマッピングテーブル501から取得する(ステップS1704)。
【0110】
ステップS1703、またはステップS1704の実行終了後、ストレージ制御装置101#1は、データにアクセスしてサーバに応答を通知する(ステップS1705)。具体的に、アクセス要求が書き込み要求である場合、ストレージ制御装置101#1は、ストレージ制御装置101#1のキャッシュメモリに格納し、サーバに書き込み終了の応答を通知する。一方、アクセス要求が読み込み要求であり、キャッシュメモリにアクセス要求のあったデータの内容が記憶されている場合、ストレージ制御装置101#1は、記憶していたデータの内容をサーバに通知する。また、アクセス要求が読み込み要求であり、キャッシュメモリにアクセス要求のあったデータの内容が記憶されていない場合、ストレージ制御装置101#1は、いずれかの階層からデータを読み込んで、記憶していたデータの内容をサーバに通知する。
【0111】
次に、ストレージ制御装置101#1は、ミラーリング情報が“有”であり、かつアクセス要求が書込要求か否かを判断する(ステップS1706)。前述の条件に当てはまる場合(ステップS1706:Yes)、ストレージ制御装置101#1は、ミラーボリュームにデータを書き込む(ステップS1707)。ステップS1707の終了後、または、条件に当てはまらない場合(ステップS1706:No)、ストレージ制御装置101#1は、
図17Bに示すステップS1708の処理に移行する。
【0112】
図17Bは、仮想ボリュームに対してのアクセス処理手順の一例を示すフローチャート(その2)である。ストレージ制御装置101#1は、アクセス先のデータがプライマリ階層にあるか否かを判断する(ステップS1708)。アクセス先のデータがプライマリ階層にない場合(ステップS1708:No)、ストレージ制御装置101#1は、Recallビットマップテーブル1401を参照して、Recall条件に合致しているか否かを判断する(ステップS1709)。合致している場合(ステップS1709:Yes)、ストレージ制御装置101#1は、プライマリ階層にアクセスデータ分の空き領域があるか否かを判断する(ステップS1710)。
【0113】
プライマリ階層に空き領域がない場合(ステップS1710:No)、ストレージ制御装置101#1は、空き領域を確保するためのSync対象データをタイムスタンプ情報から決定する(ステップS1711)。次に、ストレージ制御装置101#1は、Sync先階層特定処理を実行する(ステップS1712)。Sync先階層特定処理の詳細は、
図18にて後述する。続けて、ストレージ制御装置101#1は、Sync対象データをSync先階層にSyncする(ステップS1713)。次に、ストレージ制御装置101#1は、マッピングテーブル501と階層情報テーブル601を更新する(ステップS1714)。続けて、ストレージ制御装置101#1は、全てのSyncが完了したか否かを判断する(ステップS1715)。Syncが完了していない場合(ステップS1715:No)、ストレージ制御装置101#1は、ステップS1711の処理に移行する。
【0114】
プライマリ階層に空き領域がある場合(ステップS1710:Yes)、または、全てのSyncが完了した場合(ステップS1715:Yes)、ストレージ制御装置101#1は、アクセスのあったデータを最上位の階層にRecallする(ステップS1716)。ステップS1716の処理について、
図17A、
図17Bにて示す仮想ボリュームに対してのアクセス処理は、2回目以降のデータをRecall対象としている。ステップS1716を通過した際に、1回目のデータをRecall対象としたい場合、ストレージ制御装置101は、ステップS1717の処理について、Recallビットマップテーブル1401にビットを設定するとともに、データ名を合わせて記憶しておく。続けて、ストレージ制御装置101は、ステップS1716の処理を実行する際に、アクセスのあったデータと、記憶しておいたデータ名に対応するデータをRecallする。
【0115】
ステップS1716の実行終了後、または、合致していない場合(ステップS1709:No)、ストレージ制御装置101#1は、アクセスのあったデータに対するRecallビットマップテーブル1401のビットを設定する(ステップS1717)。ステップS1717の実行終了後、または、アクセス先のデータがプライマリ階層にある場合(ステップS1708:Yes)、ストレージ制御装置101#1は、マッピングテーブル501と階層情報テーブル601を更新する(ステップS1718)。
【0116】
次に、ストレージ制御装置101#1は、アクセスのあったデータのタイムスタンプ情報を更新する(ステップS1719)。ステップS1719の実行終了後、ストレージ制御装置101#1は、仮想ボリュームに対してのアクセス処理を終了する。仮想ボリュームに対してのアクセス処理を実行することにより、階層ストレージシステム100は、アクセス要求を契機として、データのアクセス頻度に応じた最適な階層にデータを移行することができる。
【0117】
図18は、Sync先階層特定処理の一例を示すフローチャートである。Sync先階層特定処理は、階層群の中から、Sync先となる階層を特定する処理である。ストレージ制御装置101#1は、Sync対象データがサーバからのアクセス要求に応じてアクセスされてからの経過時間を取得する(ステップS1801)。次に、ストレージ制御装置101#1は、Sync対象データを記憶している仮想ボリュームが使用する階層群を選択する(ステップS1802)。続けて、ストレージ制御装置101#1は、Sync先決定閾値テーブル901を参照して、選択した階層群の中から、Sync先階層を特定する(ステップS1803)。次に、ストレージ制御装置101#1は、特定したSync先階層の階層にSync対象データが記憶できる領域があるか否かを判断する(ステップS1804)。
【0118】
記憶できる領域がない場合(ステップS1804:No)、ストレージ制御装置101#1は、選択した階層群のうち、特定したSync階層を除いた階層群を再度選択する(ステップS1805)。ステップS1805の実行終了後、ストレージ制御装置101#1は、ステップS1803の処理に移行する。記憶できる領域がある場合(ステップS1804:Yes)、ストレージ制御装置101#1は、特定したSync先階層の識別情報を出力する(ステップS1806)。ステップS1806の実行終了後、ストレージ制御装置101は、Sync先階層特定処理を終了する。Sync先階層特定処理を実行することにより、階層ストレージシステム100は、データのアクセス頻度に応じた階層を特定することができる。
【0119】
図19は、Sync先決定閾値テーブル更新処理の一例を示すフローチャートである。Sync先閾値テーブル更新処理は、Sync先決定閾値テーブル901に格納されている、各階層の経過時間条件を更新する処理である。
【0120】
ストレージ制御装置101#1は、仮想ボリュームの使用階層が変更された、または階層の記憶容量が変化したか否かを判断する(ステップS1901)。仮想ボリュームの使用階層が変更される場合としては、たとえば、
図20、
図21にて示す使用階層選択処理が実行された場合や、ユーザにより、使用階層が追加、または削除された場合である。また、階層の記憶容量が変化した場合とは、たとえば、新たな物理ボリュームが追加され、ある階層の記憶容量が増大した場合等である。
【0121】
仮想ボリュームの使用階層が変更されていなく、かつ、階層の記憶容量が変化していない場合(ステップS1901:No)、ストレージ制御装置101#1は、一定時間経過後、ステップS1901の処理を再び実行する。
【0122】
仮想ボリュームの使用階層が変更されている場合、または、階層の記憶容量が変化している場合(ステップS1901:Yes)、ストレージ制御装置101#1は、各階層の経過時間条件を算出する(ステップS1902)。具体的に、ストレージ制御装置101#1は、(1)式を用いて各階層の経過時間条件を算出する。次に、ストレージ制御装置101#1は、算出した経過時間条件を、Sync先決定閾値テーブル901に設定する(ステップS1903)。ステップS1903の実行終了後、ストレージ制御装置101#1は、ステップS1901の処理に移行する。Sync先決定閾値テーブル更新処理を実行することにより、ストレージ制御装置101#1は、各階層の使用状況や記憶容量に応じて、記憶するデータの条件を動的に変更することができる。
【0123】
図20は、使用階層選択処理手順の一例を示すフローチャートである。使用階層選択処理は、階層群から、使用階層を選択する処理である。また、使用階層選択処理は、仮想ボリュームが作成された後、一定周期で実行される。また、使用階層選択処理は、仮想ボリューム毎に行う。
図20および
図21では、複数の仮想ボリュームのうちの1つの仮想ボリュームを対象としている。対象となった仮想ボリュームを、
図20および
図21では、「対象の仮想ボリューム」と呼称する。
【0124】
ストレージ制御装置101#1は、対象の仮想ボリュームが使用できる全階層を使用階層選択処理の対象に設定する(ステップS2001)。次に、ストレージ制御装置101#1は、アクセス回数の計数を開始する(ステップS2002)。続けて、ストレージ制御装置101#1は、変数iを1に設定する(ステップS2003)。次に、ストレージ制御装置101#1は、階層iに対する使用階層設定処理を実行する(ステップS2004)。使用階層設定処理は、
図21にて後述する。
【0125】
続けて、ストレージ制御装置101#1は、全階層について、使用階層更新処理が完了したか否かを判断する(ステップS2005)。まだ使用階層設定処理を実行していない階層がある場合(ステップS2005:No)、ストレージ制御装置101#1は、変数iをインクリメントする(ステップS2006)。次に、ストレージ制御装置101#1は、ステップS2004の処理に移行する。
【0126】
使用階層設定処理を全ての階層に対して完了した場合(ステップS2005:Yes)、ストレージ制御装置101#1は、一定時間スリープする(ステップS2007)。次に、ストレージ制御装置101#1は、ステップS2003の処理に移行する。使用階層選択処理を実行することにより、階層ストレージシステム100は、仮想ボリュームが使用するべき階層の最適化が行える。
【0127】
図21は、階層iに対する使用階層設定処理手順の一例を示すフローチャートである。階層iに対する使用階層設定処理は、各階層を使用階層、または不使用階層に設定する処理である。
【0128】
ストレージ制御装置101#1は、アクセス特性閾値テーブル701を参照して、アクセス特性テーブル801の対象の仮想ボリュームのレコードが、階層iのアクセス回数条件と単位時間条件とを満たしているか否かを判断する(ステップS2101)。満たしている場合(ステップS2101:Yes)、ストレージ制御装置101#1は、階層iに対する使用中フラグが“使用中”か否かを判断する(ステップS2102)。使用中フラグが“不使用”である場合(ステップS2102:No)、ストレージ制御装置101#1は、階層iに対する対象の仮想ボリュームの使用中フラグに“使用中”を設定する(ステップS2103)。次に、ストレージ制御装置101#1は、階層情報テーブル601を更新する(ステップS2104)。
【0129】
続けて、ストレージ制御装置101#1は、対象の仮想ボリュームの使用中の階層のうち、階層iが最上位の階層か否かを判断する(ステップS2105)。階層iがプライマリ階層である場合(ステップS2105:Yes)、ストレージ制御装置101#1は、階層iをプライマリ階層に設定する(ステップS2106)。
【0130】
ステップS2106の実行終了後、または、使用中フラグが“使用中”である場合(ステップS2102:Yes)、または、階層iがプライマリ階層でない場合(ステップS2105:No)、ストレージ制御装置101#1は、階層iに対する使用階層設定処理を終了する。
【0131】
満たしていない場合(ステップS2101:No)、ストレージ制御装置101#1は、階層iに対する使用中フラグが“使用中”か否かを判断する(ステップS2107)。使用中フラグが“使用中”である場合(ステップS2107:Yes)、ストレージ制御装置101#1は、階層iに対する対象の仮想ボリュームの使用中フラグを“不使用”に設定する(ステップS2108)。次に、ストレージ制御装置101#1は、階層情報テーブル601を更新する(ステップS2109)。
【0132】
続けて、ストレージ制御装置101#1は、対象の仮想ボリュームの使用中の階層のうち、階層iが最下位の階層か否かを判断する(ステップS2110)。階層iが最下位の階層である場合(ステップS2110:Yes)、ストレージ制御装置101#1は、階層iのデータを階層iより上位の階層にRecallする(ステップS2111)。また、階層iが最下位の階層でない場合(ステップS2110:No)、ストレージ制御装置101#1は、階層iのデータを階層iより下位の階層にSyncする(ステップS2112)。
【0133】
ステップS2111、またはステップS2112の実行終了後、ストレージ制御装置101#1は、マッピングテーブル501と階層情報テーブル601を更新する(ステップS2113)。ステップS2113の実行終了後、または、使用中フラグが“不使用”である場合(ステップS2107:No)、ストレージ制御装置101#1は、階層iに対する使用階層設定処理を終了する。階層iに対する使用階層設定処理を実行することにより、階層ストレージシステム100は、各階層の使用、不使用を、アクセス頻度に応じて切り替えることができる。
【0134】
以上説明したように、ストレージ制御装置101によれば、応答性能が異なる階層群のうちの移行元階層にある移行対象データが各階層に設定されている応答性能による条件を満たす階層を特定して、移行対象データを移行させる。これにより、ストレージ制御装置101は、頻繁にアクセスされる可能性が高いデータが、応答性能が高い階層に移行されるため、高頻度にアクセスされるであろうデータの応答性能を向上できる。
【0135】
また、ストレージ制御装置101によれば、各々の階層の応答性能に基づいて、各々の階層の応答性能が高いほど条件となる経過時間の範囲の上限値または下限値が小さくなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。頻繁にアクセスされる可能性が高いデータは、経過時間が短いため、応答性能が高い階層に移行される。したがって、ストレージ制御装置101は、高頻度にアクセスされるであろうデータの応答性能を向上できる。
【0136】
また、ストレージ制御装置101によれば、各々の階層の記憶容量に基づいて、各々の階層の記憶容量が大きいほど条件となる経過時間の範囲が長くなるように、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。これにより、階層ストレージシステム100は、記憶容量が大きい階層に対して大量のデータを記憶させるようにすることができる。また、ストレージ制御装置101は、記憶容量が動的に変更する場合であっても、変更後の状態に合わせて、条件となる経過時間の範囲を設定することができる。
【0137】
また、ストレージ制御装置101によれば、階層群の記憶容量の合計に対する階層群のうちの各々の階層よりも応答性能が高い階層群の記憶容量の合計の割合に基づいて、各々の階層に設定される条件となる経過時間の範囲を算出してもよい。これにより、階層ストレージシステム100は、頻繁にアクセスされる可能性が高いデータを、応答性能が高い階層に移行させることと、記憶容量が大きい階層に対して大量のデータを記憶させることを両立することができる。
【0138】
また、ストレージ制御装置101によれば、不使用の階層に記憶されているデータを、階層群のうちの不使用の階層とは異なる他の階層に移行させてもよい。したがって、ストレージ制御装置101は、階層群のうち、使用する階層を限定することができる。使用する階層を限定することにより、制御対象となる階層数が減ることから、処理時間を短縮することができる。たとえば、仮想ボリューム内の検索を行う場合、対象となる階層数が減少するため、処理時間を短縮することができる。また、全ての仮想ボリュームから不使用となった階層があれば、ストレージ制御装置101は、該当の階層をスリープモードに設定し、消費電力を抑制させてもよい。
【0139】
また、ストレージ制御装置101によれば、不使用のストレージとなるアクセス要求の単位時間あたりの回数の条件を記憶しておき、単位時間当たりのアクセス要求の回数を計数して、条件を満たす階層を検索してもよい。これにより、ストレージ制御装置101は、ユーザが特に意識しなくても、常に最適な階層をユーザに利用させることができる。
【0140】
また、ストレージ制御装置101によれば、所定期間のうちの、不使用のストレージとなるアクセス要求の単位時間あたりの回数を満たす期間の数の条件を記憶しておき、単位時間当たりのアクセス要求の回数を計数して、条件を満たす階層を検索してもよい。たとえば、記憶容量が大きい階層は、期間の数の条件を大きくするように設定することにより、ストレージ制御装置101は、記憶容量に応じた最適な階層をユーザに利用させることができる。
【0141】
また、ストレージ制御装置101によれば、所定時間内のアクセス要求の回数が所定数以上であれば、アクセス要求があったデータを記憶している階層から、前述のデータを記憶している階層より応答性能が高い階層に前述のデータを移行させてもよい。これにより、ストレージ制御装置101は、これからアクセスが頻繁にされるであろうデータを応答性能が高い階層にRecallすることができるため、余計なRecall処理を行わずに済み、結果、Sync処理を抑制することができる。
【0142】
また、階層ストレージシステム100は、データの価値に応じてSync先階層を決定することにより、データの価値に対応した適当な階層にデータを格納することができる。また、階層ストレージシステム100は、サーバse1〜se3と、ストレージst1〜st5の中間となるネットワークレイヤにストレージ制御装置101を配置することにより、自由な記録媒体、自由なストレージの階層数のシステムを構築することができる。また、階層ストレージシステム100は、旧ストレージとなる仮想ボリュームと、新ストレージとなる仮想ボリュームをミラーリングしてデータ移行を行うことにより、業務を運用し続けたまま、ストレージを交換することができる。
【0143】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【0144】
上述した本実施の形態に関し、さらに以下の付記を開示する。
【0145】
(付記1)コンピュータが、
アクセス要求に対する応答性能が異なる3以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理を実行することを特徴とするストレージ制御方法。
【0146】
(付記2)前記コンピュータが、
前記各々のストレージの応答性能に基づいて、前記各々のストレージの応答性能が高いほど前記条件となる経過時間の範囲の上限値または下限値が小さくなるように、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする付記1に記載のストレージ制御方法。
【0147】
(付記3)前記コンピュータが、
前記各々のストレージの記憶容量に基づいて、前記各々のストレージの記憶容量が大きいほど前記条件となる経過時間の範囲が長くなるように、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする付記1または2に記載のストレージ制御方法。
【0148】
(付記4)前記コンピュータが、
前記ストレージ群の記憶容量の合計に対する前記ストレージ群のうちの前記各々のストレージよりも応答性能が高いストレージ群の記憶容量の合計の割合に基づいて、前記各々のストレージに設定される前記条件となる経過時間の範囲を算出し、
算出した前記条件となる経過時間の範囲を前記各々のストレージに設定して前記記憶部に記憶する、処理を実行し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間が、前記条件となる経過時間の範囲に含まれる前記条件が設定された移行先ストレージを特定することを特徴とする付記1〜3のいずれか一つに記載のストレージ制御方法。
【0149】
(付記5)前記コンピュータが、
前記ストレージ群のうちの特定のストレージに記憶されているデータを、前記ストレージ群のうちの前記特定のストレージとは異なる他のストレージに移行させる処理を実行し、
前記取得する処理は、
前記他のストレージに移行させた後、前記他のストレージのうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記特定する処理は、
前記記憶部を参照して、取得した前記経過時間に基づいて、前記他のストレージの中から前記移行対象データが満たす条件が設定された移行先ストレージを特定することを特徴とする付記1〜4のいずれか一つに記載のストレージ制御方法。
【0150】
(付記6)前記記憶部は、前記特定のストレージとなる、前記アクセス要求の単位時間あたりの回数の条件を前記ストレージ毎に記憶しており、
前記コンピュータが、
前記アクセス要求の回数を前記単位時間毎に計数し、
前記記憶部に記憶されている前記アクセス要求の回数の条件を参照して、前記ストレージ群のうちの、計数した前記回数が満たす条件が設定された前記特定のストレージを検索する処理を実行し、
前記他のストレージに移行させる処理は、
前記特定のストレージを検索した場合、前記特定のストレージに記憶されているデータを、前記他のストレージに移行させることを特徴とする付記5に記載のストレージ制御方法。
【0151】
(付記7)前記記憶部は、前記各々のストレージについて、前記特定のストレージとなる、所定期間のうちの前記アクセス要求の単位時間あたりの回数を満たす期間の数の条件を前記ストレージ毎に記憶しており、
前記計数する処理は、
前記所定期間のうちの前記アクセス要求の回数を前記単位時間毎に計数し、
前記検索する処理は、
前記記憶部に記憶されている前記アクセス要求の回数を満たす期間の数の条件を参照して、前記ストレージ群のうちの、計数した前記回数を満たす期間の数が満たす条件が設定された前記特定のストレージを検索することを特徴とする付記6に記載のストレージ制御方法。
【0152】
(付記8)前記コンピュータが、
前記アクセス要求を受け付けて前記移行対象データを移行させた後、所定時間内の前記アクセス要求の回数が所定数以上か否かを判断し、
前記所定時間内のアクセス数が前記所定数以上であると判断した場合、前記アクセス要求があったデータを記憶しているストレージから、前記アクセス要求があったデータを記憶しているストレージより応答性能が高いストレージに前記アクセス要求があったデータを移行させる処理を実行することを特徴とする付記1〜7のいずれか一つに記載のストレージ制御方法。
【0153】
(付記9)アクセス要求に対する応答性能が異なる3以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得する取得部と、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、前記取得部によって取得された前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定する特定部と、
前記移行元ストレージから、前記特定部によって特定された前記移行先ストレージに前記移行対象データを移行させる移行部と、
を有することを特徴とするストレージ制御装置。
【0154】
(付記10)アクセス要求に対する応答性能が異なる3以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得する取得部と、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、前記取得部によって取得された前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定する特定部と、
前記移行元ストレージから、前記特定部によって特定された前記移行先ストレージに前記移行対象データを移行させる移行部と、
を含むコンピュータを有することを特徴とするストレージ制御装置。
【0155】
(付記11)コンピュータに、
アクセス要求に対する応答性能が異なる3以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理を実行させることを特徴とするストレージ制御プログラム。
【0156】
(付記12)アクセス要求に対する応答性能が異なる3以上のストレージ群のうちの移行元ストレージに記憶されている移行対象データが前記アクセス要求に応じてアクセスされてからの経過時間を取得し、
前記ストレージ群の各々のストレージに移行するデータの条件を前記ストレージ毎に記憶する記憶部を参照して、取得した前記経過時間に基づいて、前記ストレージ群の中から前記移行対象データが満たす条件が設定された移行先ストレージを特定し、
前記移行元ストレージから、特定した前記移行先ストレージに前記移行対象データを移行させる、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラムを記録したことを特徴とする記録媒体。