(57)【要約】【課題】  リソースを効率良く利用するストレージ装置を提供する。【解決手段】  新たなライト要求がされた場合に、物理的な記憶領域の割当を行うストレージ装置に対して、過去のライト要求から適切な割当サイズを求める。また、求めた割当サイズがストレージ装置に定義されている場合に、このサイズの物理的な記憶領域を割当てるようストレージ装置の設定情報を変更する。【選択図】  図２
2008117094.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なるサイズの記憶領域と、
仮想記憶領域と前記仮想記憶領域に割当てる前記記憶領域のサイズとの対応を示す対応情報を有し、前記仮想記憶領域へのライト要求に対して、前記対応情報を参照して、前記記憶領域を前記仮想記憶領域に割当て、割当てられた前記記憶領域に前記ライト要求のデータを格納する制御部と、を有するストレージ装置と、
前記仮想記憶領域に対してある期間に発生したライト要求をホストコンピュータから収集し、収集した前記ライト要求に含まれるデータのサイズを用いて、前記複数の異なるサイズの記憶領域のサイズの中から前記仮想記憶領域に割当てる前記記憶領域のサイズを選択し、前記選択されたサイズの前記記憶領域が前記仮想記憶領域に割当てられるよう前記対応情報を変更する要求を前記ストレージ装置に送信する管理サーバと
を有することを特徴とするストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記記憶領域のサイズは、前記仮想記憶領域のサイズよりも小さい
ことを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記管理サーバは、前記対応情報の変更があった場合に、前記対応情報の変更前に前記仮想記憶領域に割当てられた前記記憶領域に格納されたデータを、前記対応情報の変更後に前記対応情報で前記仮想記憶領域と対応付けられるサイズの前記記憶領域に移動する要求を前記ストレージ装置に送信する
ことを特徴とするストレージシステム。
【請求項４】
データを格納する複数の記憶領域と、
少なくとも一つの前記記憶領域を異なるサイズで区分した複数の区分領域を生成し、仮想記憶領域と前記仮想記憶領域に割当てる前記区分領域のサイズとの対応を示す対応情報を有し、前記対応情報を参照して、前記仮想記憶領域へのライト要求に対し仮想記憶領域に区分領域を割当て、割当てられた前記区分領域に前記ライト要求のデータを格納する制御部と
を有するストレージ装置。
【請求項５】
請求項４記載のストレージ装置であって、
前記制御部は、前記複数の記憶領域の中で前記区分領域が生成されていない一つの記憶領域に前記ライト要求を格納する
ことを特徴とするストレージ装置。
【請求項６】
請求項５記載のストレージ装置であって、
前記制御部は、前記複数の記憶領域の一つに格納されたある期間のライト要求に含まれるデータのサイズを用いて、前記異なるサイズの複数の区分領域のサイズの中から前記仮想記憶領域に割当てる区分領域のサイズを選択し、前記選択されたサイズの区分領域が前記仮想記憶領域に割当てられるよう前記対応情報を変更する
ことを特徴とするストレージ装置。
【請求項７】
請求項６記載のストレージ装置であって、
前記制御部は、前記複数の区分領域のうち、前記選択されたサイズの区分領域のうち前記仮想記憶領域に未割当ての前記区分領域の総容量が閾値以下となった場合に、前記複数の記憶領域の一つから新たな区分領域を生成することを特徴とするストレージ装置。
【請求項８】
請求項５記載のストレージ装置であって、
前記制御部は、前記仮想記憶領域へのリード要求に対して、前記リード要求で指定される前記仮想記憶領域のアドレスに割当てられている前記区分領域からデータをリードし、前記リード要求で指定される前記仮想記憶領域のアドレスに前記区分領域が割当てられていない場合、前記リード要求に対してエラーを返すことを特徴とするストレージ装置。
【請求項９】
請求項５記載のストレージ装置であって、
前記制御部は、前記仮想記憶領域に対してリード要求を行い、リード要求に応じてデータがリードされた場合、前記リードされたデータのライト要求を他の仮想記憶領域に行うことを特徴とするストレージ装置。
【請求項１０】
ある期間に発生した仮想記憶領域に対するライト要求を収集し、
収集した前記ライト要求に含まれるデータのサイズを用い、ストレージ装置が有する複数の異なるサイズの記憶領域の中から前記仮想記憶領域に割当てる記憶領域のサイズを選択し、
前記選択されたサイズの記憶領域を前記仮想記憶領域に割当てる要求を前記ストレージ装置に送信することを特徴とする記憶領域の割当制御方法。
【請求項１１】
請求項１０記載の割当制御方法であって、
前記収集した前記ライト要求に、前記選択されたサイズの記憶領域を前記仮想記憶領域に割当てた場合に、前記仮想記憶領域に前記記憶領域を割当てる回数がより少なくなるようなサイズの前記記憶領域を選択することを特徴とする割当制御方法。
【請求項１２】
請求項１０記載の割当制御方法であって、
前記収集した前記ライト要求に、前記選択されたサイズの記憶領域を前記仮想記憶領域に割当てた場合に、前記仮想記憶領域に割当てた前記記憶領域の空き容量がより小さくなるようなサイズの前記記憶領域を選択することを特徴とする割当制御方法。
【請求項１３】
データを格納する複数の記憶領域と
少なくとも一つの前記記憶領域を区分して第１のサイズの複数の区分領域と第２のサイズの複数の区分領域とを定義し、仮想記憶領域と前記仮想記憶領域に割当てる前記区分領域のサイズとの対応を示す対応情報を有し、前記仮想記憶領域へのライト要求に対して、前記対応情報を参照して、前記区分領域を前記仮想記憶領域に割当て、割当てられた前記区分領域に前記ライト要求のデータを格納する制御部と、を有するストレージ装置と、
前記仮想記憶領域に対してある期間に発生したライト要求をホストコンピュータから収集し、収集した前記ライト要求に含まれるデータのサイズを用いて、前記第１のサイズの区分領域と前記第２のサイズ区分領域の中から前記仮想記憶領域に割当てる区分領域を選択し、前記選択された区分領域が前記仮想記憶領域に割当てられるよう前記対応情報を変更する要求を前記ストレージ装置に送信する管理サーバと、を有することを特徴とするストレージシステム。
【請求項１４】
請求項１３記載のストレージシステムであって、
前記区分領域のサイズは、前記仮想記憶領域のサイズよりも小さい
ことを特徴とするストレージシステム。
【請求項１５】
請求項１３記載のストレージシステムであって、
前記管理サーバは、前記対応情報の変更があった場合に、前記対応情報の変更前に前記仮想記憶領域に割当てられた前記区分領域に格納されたデータを、前記対応情報の変更後に前記対応情報で前記仮想記憶領域と対応付けられるサイズの前記区分領域に移動する要求を前記ストレージ装置に送信する
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びそのストレージを管理する方法に係り、特に論理的な記憶領域に対する物理的な記憶領域の割当に関する。
【背景技術】
【０００２】
ストレージ装置と、ホストコンピュータとをネットワークで接続したシステムが年々増加している。ホストコンピュータには、業務を行う様々なアプリケーションを有しており、実際に業務を行う場合には、アプリケーション毎に、ストレージ装置で利用する記憶領域を割り当てる必要がある。
しかしながら、アプリケーションが必要とする記憶領域の容量は予測することが困難であり、適切な容量を割り当てることができない。そのため、一旦記憶領域を割り当てても、アプリケーションの稼動状況によっては、あまりデータの書込みが発生せず、空き領域が多くなってしまったり、あるいは大量のデータの書込みが発生し、容量が不足したりする場合がある。
【０００３】
このような問題を解決する方法として、例えば、特許文献１に記載されているように、仮想化という技術を利用して、アプリケーションに対して論理的な記憶領域を提供し、この論理的な記憶領域に対してデータの書込みが発生した際に、固定サイズの物理的な記憶領域を割り当てる技術がある。
【０００４】
【特許文献１】特開２００４−７８３９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、仮想化の技術を利用して、論理的な記憶領域に対して固定サイズの物理的な記憶領域を割り当てる構成とすることにより、ディスク装置等の記憶媒体のリソースを効率良く利用できる。
しかしながら、ストレージ装置には、複数のホストコンピュータが接続され、複数のアプリケーションが実行される。アプリケーションによって、書込み又は読み出しの対象となるデータのサイズは様々であり、またアクセス頻度も異なる。
【０００６】
そのため、物理的な記憶領域のサイズが対象となるデータのサイズより小さい場合、書込み又は読み出し要求に対して複数の物理的な記憶領域を選択することになり、効率が悪い。一方で、物理的な記憶領域のサイズが対象となるデータのサイズより大きい場合、書込み要求がランダムに発生すると、空き領域の増加につながってしまう。
【０００７】
本発明の目的は、ストレージ装置の物理的な記憶領域の利用率の向上および効率的な領域確保を可能とするストレージ装置又はストレージシステムを提供することにある。
【課題を解決するための手段】
【０００８】
ストレージ装置は、ホストコンピュータから仮想的な記憶領域に対する書込み要求に対して、物理的な記憶領域を割り当てるものである。
【０００９】
このようなストレージ装置に、異なる割り当てサイズの物理的な記憶領域を設け、ストレージ装置を管理する管理サーバは、仮想的な記憶領域に対するアクセス情報を収集する。管理サーバは、更に、この収集したアクセス情報から、適切な割り当てサイズの物理的な記憶領域を決定し、ストレージ装置において決定されたサイズの物理的な記憶領域を割り当てるようにする。
【発明の効果】
【００１０】
物理的な記憶領域の利用率を向上させるストレージ装置又はストレージシステムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を用いて説明する。  
図１は、ストレージシステムの構成を示したものである。
本システムは、複数のホストコンピュータ１１０、複数のストレージ装置１２０、管理サーバ１４０、管理端末１６０を含んで構成される。ホストコンピュータ１１０とストレージ装置１２０は第１のネットワーク１７０で接続され、また、ホストコンピュータ１１０、ストレージ装置１２０、管理サーバ１４０、管理端末１６０は第２のネットワーク１８０で接続されている。ここで、第１のネットワーク１７０、第２のネットワーク１８０は、どのような種類のネットワークであってもよい。例えば、第１のネットワークにＳＡＮ（Storage Area Network）を利用し、第２のネットワークにＬＡＮ（Local Area Network）を利用した構成としてもよい。
【００１２】
ホストコンピュータ１１０は、プログラムやデータを格納するメモリ１１２、メモリ１１２に格納されたプログラムを実行するＣＰＵ等のプロセッサ１１１を備えている。また、ホストコンピュータ１１０のメモリ１１２は、業務を行うアプリケーションプログラム１１３、アプリケーションプログラム１１３のアクセス情報を収集する収集プログラム１１４、オペレーティングシステム（ＯＳ）１１５、アクセス情報１１４が格納されている。
【００１３】
ストレージ装置１２０は、制御部１２１、複数のディスク装置１２２とを有している。ここでは、物理的な記憶媒体としてディスク装置を示しているが、これはフラッシュメモリ等の半導体記憶装置であってもよいし、ディスク装置と半導体記憶装置とが混在するものであってもよい。従って、以下の説明における「ディスク装置」を「半導体記憶装置」と読み替えても、実現する上で、何ら問題はない。
制御部１２１は、プログラムやデータを格納するメモリ１２４、メモリ１２４に格納されたプログラムを実行し、ホストコンピュータ１１０と、ディスク装置１２２との間のデータ転送を制御するプロセッサ１２３とを有している。制御部１２１のメモリ１２４には、仮想ボリューム定義プログラム１２５、プール定義プログラム１２６、アクセス処理プログラム１２７、データ移行プログラム１２８、プールマッピング管理テーブル１２９、プール定義管理テーブル１３０、アドレスマッピング管理テーブル１３１が格納されている。各プログラムの処理については、後に詳しく説明する。
【００１４】
なお、制御装置１２１は、ここに示した以外の構成であってもよく、例えば、複数のプロセッサ、キャッシュメモリ等を備えていても良い。また、ストレージ装置１２０ａ、１２０ｂのハードウェアの構成は、同じものでも、異なるものであってもよい。
【００１５】
管理サーバ１４０は、プログラムやデータを格納するメモリ１４２、メモリ１４２に格納されたプログラムを実行するプロセッサ１４１とを有している。メモリ１４２には、仮想ボリューム定義プログラム１４３、セグメント決定プログラム１４４、移行判定プログラム１４５、セグメント生成プログラム１４６、データ移行管理プログラム１４７、アプリケーション管理テーブル１４８、アクセス履歴管理テーブル１４９、プール管理テーブル１５０、仮想ボリューム管理テーブル１５１、ＬＤＥＶ管理テーブル１５２、記憶領域管理テーブル１５３、適合度判定対象管理テーブル１５４、割当情報管理テーブル１５５、データ移行管理テーブル１５６が格納されている。
【００１６】
管理端末１６０は、プロセッサ、メモリ等を備え、またキーボードやマウスのような入力装置、表示装置とを有している。管理端末１６０と管理サーバ１４０とは第２のネットワーク１８０で接続され、管理端末１６０からの入力情報は管理サーバ１４０へ送信され、管理サーバ１４０が備える各種プログラムの実行結果は、管理端末１６０の表示装置に表示される。
【００１７】
図２は、ストレージシステムの記憶構造を示したものである。
【００１８】
ホストコンピュータ１１０は、論理的な記憶領域である仮想ボリューム（仮想Ｖｏｌ）２００がＯＳによって提供される。ホストコンピュータ１１０のアプリケーション１１３は、この仮想ボリューム２００に対して、データのライト又はリードを行う。
【００１９】
ストレージ装置１２０は、例えば、４個１組（３Ｄ＋１Ｐ）、８個１組（７Ｄ＋１Ｐ）等のような所定数のディスク装置をグループ化したＲＡＩＤ構成とすることができる。このグループ化された記憶領域を論理的な記憶領域であるＬＤＥＶ（Logical Device）２１１に分割し、それぞれプール２２２に割り当てる。各プール２２２では、ＬＤＥＶ２１１によって与えられる論理的な記憶領域を更に細分化した記憶領域（セグメント）２２３で管理する。セグメント２２３のサイズは、プール毎に設定することができる。例えば、プールＡ２２２ａのセグメントを２５ＭＢ、プールＢ２２２ｂのセグメントを５０ＭＢといったサイズに設定することができる。なお、ここでは、ストレージ装置内のＬＤＥＶをプールに割り当てる場合を示しているが、他のストレージ装置内のＬＤＥＶをプールに割り当てても良い。
【００２０】
このような構成において、仮想ボリューム２００ｂは、初期状態において、セグメントが割り当てられていない。つまり、仮想ボリューム２００ｂに対する物理的な記憶領域が割り当てられていない。そのため、ストレージ装置１２０の制御部１２１は、仮想ボリューム２００ｂに対するアクセス要求を受けると、セグメントの割り当てを行い、割り当てられたセグメントに対してデータを格納する。具体的に制御部２１は、仮想ボリューム２００ｂに対するライト要求を受けると、アドレスマッピング管理テーブル１３１を参照し、仮想ボリューム２００ｂのアドレスに対してセグメントが割り当てられていない場合には、プールマッピング管理テーブル１２９を参照して、仮想ボリュームに対して定義されているプールのセグメントを割り当て、割り当てたセグメントに対して、データのライト処理を行う。このように仮想ボリューム２００ｂは、セグメントの割り当てを行うことによって、仮想ボリュームに対する物理的な記憶領域を追加していく。これにより、物理的な記憶領域を有効に利用することができる。以下の説明において、追加型仮想ボリューム又は追加型の仮想ボリュームとは、このような仮想ボリュームを意味する。
【００２１】
また、ストレージ装置１２０は、物理的な記憶領域を追加するのではなく、はじめから仮想ボリュームと同じサイズの物理的な記憶領域を割り当てた、仮想ボリュームを定義することができる。仮想ボリューム２００ａは、この一例であり、割り当てたＬＤＥＶのサイズと同じサイズの仮想ボリュームとなっている。なお、一つの仮想ボリュームに対して複数のＬＤＥＶを割り当ててもよい。以下の説明において、固定型仮想ボリューム又は固定型の仮想ボリュームとは、このような仮想ボリュームを意味する。
【００２２】
なお、追加型仮想ボリュームの一部の領域に初めからいくつかのセグメント或いは、ＬＤＥＶを割り当てるようにしても良い。
【００２３】
管理サーバ１４０は、ホストコンピュータ１１０のアクセス情報を収集して、追記型仮想ボリュームに割り当てるのに適したサイズのセグメントを決定する。そして決定したサイズのセグメントが割り当てられるように、ストレージ装置１２０のプールマッピング管理テーブル１２９を変更する。例えば、図２に示すように仮想ボリューム２００ｂにプールＡのセグメントを割り当てていたが、ライトデータのサイズが大きいために、プールＢのセグメントを割り当てるように、管理サーバ１４０からの指示により、プールマッピング管理テーブル１２９を変更する。これにより、ライト要求に対する割り当て回数が少なくなるので、性能が向上する。一方、データのサイズが小さい場合、プールＢからプールＡに変更することで、リソースを効率よく利用することができる。
【００２４】
以下、図２で説明した処理を実現する各処理について説明する。
【００２５】
まず、ホストコンピュータ１１０の処理について説明する。
【００２６】
図３は、アクセス情報を収集する処理を示したものである。
【００２７】
この処理は、ホストコンピュータ１１０の収集プログラム１１４によって行われる処理であり、いずれかのアプリケーション１１３の実行とともに起動される。
【００２８】
収集プログラム１１４は、アプリケーション１１３からのアクセス要求又は管理サーバ１４０からの取得要求を待つ（Ｓ３０１で「処理なし」）。アプリケーションプログラム１１３からアクセス要求があった場合（Ｓ３０１で「アクセス要求」）、アクセス要求に含まれる仮想ボリュームの識別子（仮想ｖｏｌ−ＩＤ）、リード要求又はライト要求の種別、アドレス、データのサイズをアプリケーション名、時刻情報とともに、アクセス情報としてメモリ１１２に格納する（Ｓ３０２）。なお、アクセス要求がリード要求の場合には、リード要求に対する応答からデータのサイズを求める。その後、アクセス要求をストレージ装置１２０に送信し（Ｓ３０３）、Ｓ３０１へ戻る。また、管理サーバ１４０から取得要求があった場合（Ｓ３０１で「アクセス情報取得要求」）、メモリ１２に格納されたアクセス情報を管理サーバ１４０に送信する（Ｓ３０４）。
【００２９】
なお、この収集プログラム１１４は、ホストコンピュータ１１０のＯＳ１１５に組み込まれていても良い。
【００３０】
図１０は、管理サーバ１４０によって収集されたアクセス情報を示したものである。ここで、ホスト識別子（ホストＩＤ）以外は、収集プログラム１１４によって収集されたアクセス情報である。
【００３１】
次に、ストレージ装置について説明する。
【００３２】
まず、ストレージ装置１２０が管理している情報を説明する。
【００３３】
図４は、プールマッピング管理テーブルを示したものである。
【００３４】
プールマッピング管理テーブル１２９は、仮想Ｖｏｌ−ＩＤ４０１、仮想ボリュームの容量４０２、仮想ボリュームのアドレス（先頭アドレスから末尾アドレス）４０３、プールの識別子（プールＩＤ）４０４とが対応付けられている。制御装置１２１は、ライト要求があった仮想ボリュームにセグメントが割り当てられていない場合、このテーブルからプールを特定する。
【００３５】
図５は、プール定義管理テーブルを示したものである。
【００３６】
プール定義管理テーブル１３０は、プールＩＤ５０１、ＬＤＥＶの識別子（ＬＤＥＶ−ＩＤ）５０２、セグメント番号５０３、セグメントサイズ５０４、ＬＤＥＶのアドレス（ＬＤＥＶアドレス）５０５、物理アドレス５０６、割当状況５０７が対応付けられている。セグメント番号５０３は、セグメントを識別するためのもので、ストレージ装置内で一意の番号が付されている。ＬＤＥＶアドレス５０５は、ＬＤＥＶをセグメントに分割した際の先頭アドレスから末尾アドレスを示している。物理アドレス５０６は、ディスク装置のアドレスを示したものである。割当状況５０７の「１」は仮想ボリュームに対して割り当てられた場合、「０」は割り当てられていない場合を示している。ＬＤＥＶ−ＩＤ５０２に、他のストレージ装置のＬＤＥＶを設定することにより、他のストレージ装置の物理的な記憶領域が仮想ボリュームに割り当てられることになる。
【００３７】
図６は、アドレスマッピング管理テーブルを示したものである。
【００３８】
アドレスマッピング管理テーブル１３１は、仮想Ｖｏｌ-ＩＤ６０１、仮想ボリュームのアドレス６０２、セグメント番号６０３、ＬＤＥＶ−ＩＤ６０４、ＬＤＥＶアドレス６０５、物理アドレス６０６が対応付けられている。Ｖｏｌ１からＶｏｌ３は、仮想ボリュームの一部にセグメント及び物理アドレスが設定されているので、追加型の仮想ボリュームである。Ｖｏｌ４は、仮想ボリュームの全てにＬＤＥＶ及び物理アドレスが設定されているので固定型の仮想ボリュームである。
【００３９】
次に、ストレージ装置の処理について説明する。
【００４０】
ストレージ装置のボリューム定義プログラム１２５は、管理サーバ１４０からの要求により、プールマッピングテーブル１２９、アドレスマッピング管理テーブル１３１の設定、変更を行うものである。管理サーバ１４０は、仮想ボリューム定義情報として、追加型仮想ボリュームの場合は、仮想Ｖｏｌ−ＩＤ、容量、プールＩＤを送る。これにより、ボリューム定義プログラム１２５は、プールマッピング管理テーブルに、仮想Ｖｏｌ−ＩＤ、容量、プールＩＤを設定する。また、アドレスは、容量から求めたものを格納する。更に、アドレスマッピング管理テーブル１３１に、仮想Ｖｏｌ−ＩＤを設定する。一方、固定型仮想ボリュームの場合は、仮想Ｖｏｌ−ＩＤ、容量、ＬＤＥＶ−ＩＤが送られてくる。これにより、ボリューム定義プログラム１２５は、仮想Ｖｏｌ−ＩＤ、容量、容量から求めたアドレスをプールマッピング管理テーブル１２９に設定し、更に仮想Ｖｏｌ−ＩＤ、アドレス、ＬＤＥＶ−ＩＤ、ＬＤＥＶアドレス、物理アドレスを、アドレスマッピング管理テーブル１３１に設定する。これにより、追加型仮想ボリューム、固定型仮想ボリュームが定義される。
【００４１】
また、ボリューム定義プログラム１２５は、管理サーバ１４０からプール割当変更情報を受ける。プール割当変更情報は、仮想Ｖｏｌ−ＩＤと、プールＩＤが含まれている。ボリューム定義プログラム１２５は、既に設定されている仮想ボリュームに対するプールＩＤを、プール割当変更情報に含まれるプールＩＤに変更する。既にセグメントが割り当てられている追加型仮想ボリュームに対するプール割当変更情報を受けると、この時点から別のセグメントが割当られることになる。つまり、１つの追加型仮想ボリュームに対して異なるサイズのセグメントが割り当てられる。
【００４２】
プール定義プログラム１２６は、管理サーバ１４０から送られてくるプール定義情報により、プールを定義する。管理サーバ１４０は、新たなプールを定義する場合、プール定義情報として、プールＩＤ、セグメントサイズ、ＬＤＥＶ−ＩＤを送る。これを受けたプール定義プログラム１２６は、指定されたＬＤＥＶをセグメントサイズで分割し、プール定義管理テーブル１３０に、プールＩＤ、ＬＤＥＶ−ＩＤ、セグメント番号、セグメントサイズ、ＬＤＥＶアドレス、物理アドレスを設定する。また、プール定義プログラム１２６は、管理サーバからプール追加情報として、プールＩＤ、ＬＤＥＶ−ＩＤを受けると、プールＩＤから特定したセグメントサイズで、指定されたＬＤＥＶを分割し、プール管理テーブル１３０に、ＬＤＥＶ−ＩＤ、セグメント番号、セグメントサイズ、ＬＤＥＶアドレス、物理アドレスを設定する。
【００４３】
図７は、ストレージ装置におけるアクセス要求の処理を示したものである。
【００４４】
これは、アクセス処理プログラムによって実行される。
【００４５】
アクセス要求がライト要求である場合（Ｓ７０１で「Ｗ」）、アドレスマッピング管理テーブル１３１から記憶領域（セグメント又はＬＤＥＶ）が割り当てられているか判断する（Ｓ７０２）。記憶領域が割り当てられている場合（Ｓ７０２で「Ｙ」）、割り当てられている記憶領域に対してデータのライト処理を行う（Ｓ７０３）。一方、記憶領域が割り当てられていない場合（Ｓ７０２で「Ｎ」）、プールマッピング管理テーブル１２９から仮想ボリュームに対応付けられているプールＩＤを特定する（Ｓ７０４）。次に、プール定義管理テーブル１３０から、特定されたプールＩＤで未割当のセグメントを特定し、特定したセグメントの割当状況に「１」を設定するとともに、アドレスマッピング管理テーブル１３１に仮想ボリュームのアドレス、セグメント番号、ＬＤＥＶ−ＩＤ、ＬＤＥＶアドレス、物理アドレスを設定する（Ｓ７０５）。その後、データのライト処理を行う（Ｓ７０３）。
【００４６】
アクセス要求がリード要求である場合（Ｓ７０１で「Ｒ」）、アドレスマッピング管理テーブル１３１から記憶領域が割り当てられているか判断する（Ｓ７０６）。この判断は、Ｓ７０２と同じ判断である。記憶領域が割り当てられていると判断した場合（Ｓ７０６で「Ｙ」）、データのリード処理を行い（Ｓ７０７）、記憶領域が割り当てられていないと判断した場合（Ｓ７０６で「Ｎ」）、エラーとする（Ｓ７０８）。
【００４７】
図８は、仮想ボリューム間で行うデータの移行処理を示したものである。
【００４８】
これは、管理サーバ１４０からのデータ移行指示により、データ移行プログラム１２８が行う処理である。このデータ移行処理は、移行元として指定された仮想ボリュームに対して最初のアドレスから最後のアドレスまで、データのリードを行い、移行先として指定された仮想ボリュームに対して、同じアドレスを指定してライトを行うものである。
【００４９】
管理サーバ１４０からは、移行元と、移行先の仮想ボリューム及び移行指示が送られてくる。
【００５０】
まず、管理サーバ１４０から送られてきた移行元、移行先の仮想ボリュームを特定する（Ｓ８０１）。次に、アドレスマッピング管理テーブル１３１から、移行元として指定された仮想ボリュームの先頭アドレスを特定する（Ｓ８０２）。次に特定したアドレスでデータのリードを行う（Ｓ８０３）。このリードは、図７に示した処理により行う。リードした結果を判断し（Ｓ８０４）、エラーであれば（Ｓ８０４で「Ｙ」）、最終アドレスか判断し（Ｓ８０５）、最終アドレスでなければ、次のアドレスを特定し（Ｓ８０７）、Ｓ８０３から処理を続ける。リードした結果がエラーでない場合（Ｓ８０４で「Ｎ」）、リードしたアドレスで移行先の仮想ボリュームに対してデータのライトを行う（Ｓ８０８）。このデータのライトも図８に示した処理により行う。その後、最終アドレスか判断し（Ｓ８０５）、最終アドレスでなければ（Ｓ８０５で「Ｎ」）、次のアドレスを特定し（Ｓ８０７）、再びＳ８０３から処理を行う。最終アドレスである場合（Ｓ８０５で「Ｙ」）、移行元の仮想ｖｏｌ−ＩＤと移行先の仮想ｖｏｌ−ＩＤとを変更し（Ｓ８０６）、処理を終了する。Ｓ８０６の移行元と移行先の仮想ｖｏｌ−ＩＤの変更とは、移行元のＶｏｌ−ＩＤを移行先のＶｏｌ−ＩＤに、移行先のＶｏｌ−ＩＤを移行元のＶｏｌ−ＩＤに変更することである。これにより、ホストコンピュータからは、同じ仮想ボリュームに対してアクセス要求を続けることが可能となる。
【００５１】
このように、本処理では図７に示したアクセス要求の処理によってデータの移行をさせるようにして、移行先の仮想ボリュームの全領域にセグメントの割当が起こらないようにしている。
【００５２】
なお、図８に示した処理では、一つのアドレス毎にデータのリード、ライトを行っているが、プロセッサの性能、あるいはキャッシュメモリを利用することで、複数のアドレス単位でデータのリード、ライトを行うようにしてもよい。また、データのリードと、ライトとを別々のプロセッサで行うようにすれば、プロセッサの負荷を分散することができるとともに、処理速度も速くなる。
【００５３】
また、データの移行には、移行元のデータを消去する場合、消去しない場合を含んでいる。
【００５４】
移行元のデータを消去する場合には、アドレスマッピング管理テーブル１３１を参照し、移行元の仮想ボリュームに割り当てられているセグメントのデータを消去し、その後、アドレスマッピング管理テーブル１３１からデータを消去したセグメント番号を削除する。更に、プール定義管理テーブル１３０の削除されたセグメントの割当状況に「０」を設定する。これにより、セグメントを再利用することができる。
【００５５】
以上が、ストレージ装置の処理である。次に、管理サーバの処理について説明する。
【００５６】
まず、各テーブルについて説明する。
【００５７】
図９は、アプリケーション管理テーブルを示したものである。
【００５８】
アプリケーション管理テーブル１４８は、ホストの識別子（ホストＩＤ）９０１、アプリケーション９０２、データ特性９０３、仮想ｖｏｌ−ＩＤ９０４、仮想ボリュームの容量９０５が対応付けられている。これは、アプリケーションと仮想ボリュームとの対応関係を示すものであり、後述するように仮想ボリュームを定義する際に利用する。
【００５９】
図１０は、アクセス履歴管理テーブルを示したものである。
【００６０】
アクセス履歴管理テーブル１４９は、ホストＩＤ１００１、アプリケーション１００２、仮想Ｖｏｌ−ＩＤ１００３、アクセス要求の種別１００４、仮想ボリュームのアドレス１００５、データのサイズ１００６、アクセス要求が発生した時刻１００７が対応付けられている。アクセス履歴管理テーブルは、各ホストコンピュータから収集したアクセス情報が設定される。
【００６１】
図１１は、プール管理テーブルを示したものである。
【００６２】
プール管理テーブル１５０は、プールＩＤ１１０１、プール全体の容量１１０２、セグメントサイズ１１０３、セグメントが属するＬＤＥＶを示すＬＤＥＶ−ＩＤ１１０４、プールの残容量１１０５が対応付けられている。
【００６３】
図１２は、仮想ボリューム管理テーブルを示したものである。
【００６４】
仮想ボリューム管理テーブル１５１は、仮想Ｖｏｌ−ＩＤ１２０１、ＬＤＥＶ−ＩＤ１２０２、プールＩＤ１２０３、仮想ボリュームが追加型か固定型かを示す仮想Ｖｏｌ形式１２０４が対応付けられている。追加型の仮想ボリュームに対してはプールＩＤが、固定型の仮想ボリュームに対してはＬＤＥＶ−ＩＤが設定される。
【００６５】
図１３はＬＤＥＶ管理テーブルを示したものである。
【００６６】
ＬＤＥＶ管理テーブル１５２は、ＬＤＥＶ−ＩＤ１３０１、装置ＩＤ１３０２、ＬＤＥＶの容量１３０３、ＬＤＥＶ設定されているディスク装置の回転数１３０４、ＬＤＥＶが設定されているディスク装置によって形成されているＲＡＩＤレベル１３０５、ディスク装置のタイプ（ディスクタイプ）１３０６、割当状況１３０７が対応付けられている。ここで、ディスクタイプに設定されているＦＭとはフラッシュメモリを意味し、ＦＣはファイバーチャネルプロトコル対応のディスク、ＳＡＴＡはＡＴＡプロトコル対応のディスクを意味している。また、割当状況１３０７の「１」は、プール又は仮想ボリュームに割当されている場合を示している。ＬＤＥＶ−ＩＤ、容量、回転数、ＲＡＩＤレベル、ディスクタイプの情報は、各ストレージ装置から収集した情報である。
【００６７】
図１４は、記憶領域管理テーブルを示したものである。
【００６８】
記憶領域管理テーブル１５３は、仮想ボリュームに対してデータがライトされた領域を管理するもので、仮想Ｖｏｌ−ＩＤ、先頭アドレス、末尾アドレスが設定される。先頭アドレスと末尾アドレスは、データがライトされた領域であり、一つの仮想ボリュームに対してランダムにデータのライトがあると、複数の先頭アドレスと末尾アドレスが設定される。
【００６９】
図１５は、適合度判定対象管理テーブルを示したものである。
【００７０】
適合度判定対象管理テーブル１５４は、セグメントサイズ１５０１と、設定状況１５０２が設定される。設定状況１５０２は、セグメントサイズがストレージ装置に設定されている場合に「１」となり、設定されていない場合に「０」を設定される。ストレージ装置に設定されていないセグメントサイズは、管理者により設定されたものである。このテーブルに設定されているサイズの中で、適切なサイズのセグメントを求める。なお、ストレージ装置に設定されていないセグメントサイズについは、管理サーバで自動的に設定するようにしてもよい。例えば、ストレージ装置に２つのセグメントサイズが設定されている場合には、その２つのセグメントサイズの中間の値となるセグメントサイズを管理サーバのＣＰＵで求め、設定するようにしてもよい。あるいは、収集情報からライトされるデータのサイズの最大値、最小値をセグメントサイズとして設定しても良いし、更に最大値と最小値の中間値をセグメントサイズと設定しても良い。
【００７１】
図１６は、割当情報管理テーブルを示したものである。
【００７２】
割当情報管理テーブル１５５は、仮想Ｖｏｌ−ＩＤ１６０１、セグメントサイズ１６０２、アクセス回数１６０３、セグメントの割当回数１６０４、ライトデータのサイズ１６０５、割り当てられたセグメントの総容量１６０６、最終集計時刻１６０７、割当対象１６０８、候補１６０９が対応付けられている。この割当情報管理テーブル１５５は、アクセス情報を利用して適合度判定対象管理テーブル１５５に設定された各セグメントサイズで割当を行った場合の状態を示したものである。最終集計時刻１６０７は、最後に利用したアクセス情報の時刻情報が設定されている。また、割当対象１６０８の「１」は、仮想ボリュームに対して現在割当対象となっているセグメントサイズを示している。また、候補１６０９は、適切なセグメントサイズと判断された場合に「１」が設定される。
【００７３】
図１７は、データ移行管理テーブルを示したものである。
【００７４】
データ移行管理テーブル１５６は、データの移行を行う移行元の仮想Ｖｏｌ−ＩＤ１７０１、移行先の仮想Ｖｏｌ−ＩＤが対応付けられている。
【００７５】
次に、管理サーバの処理について説明する。
【００７６】
図１８Ａおよび図１８Ｂは、仮想ボリュームを定義する処理を示したものである。
【００７７】
この処理は、管理端末１６０から管理者が仮想ボリューム定義プログラムを実行することにより行われる処理である。
【００７８】
まず、管理端末の表示装置に仮想ボリュームを定義する画面を表示する（Ｓ１８０１）。
【００７９】
図１９は、仮想ボリュームを定義する画面の一例を示したものである。
【００８０】
画面には、ホストＩＤ１９０１、アプリケーション名１９０２、仮想ボリュームの容量１９０３、仮想ボリュームの形式１９０４、データの特性１９０５、セグメントサイズ１９０６、終了ボタンが指定できるようになっている。ホストＩＤ１９０１、アプリケーション名１９０２には、仮想ボリュームを利用するホストＩＤと、アプリケーション名とを入力する。仮想ボリュームの容量１９０３には、仮想ボリュームの容量を入力する。仮想ボリュームの形式１９０４は、追加型仮想ボリュームか、固定型仮想ボリュームかを指定する。既に説明しているように、追加型仮想ボリュームの場合、書込要求に応じて物理的な記憶領域が割り当てられるので、管理者は比較的大きな容量を入力することができる。追加型仮想ボリュームを指定した場合、セグメントのサイズを決定するためデータの特性１９０５又はセグメントサイズ１９０６を指定することができる。データの特性１９０５は、アプリケーションが利用するデータサイズ、アプリケーションのアクセス頻度とを選択できるようにし、この特性からセグメントのサイズを特定する。また、セグメントサイズ１９０６は、プール管理テーブル１５０に設定されているセグメントサイズが表示され、その中から選択できるようになっている。
【００８１】
再び、図１８Ａおよび図１８Ｂに戻り、処理を説明する。
【００８２】
管理者からの入力を待ち、終了ボタンが指定されると（Ｓ１８０２で「Ｙ」）、追加型仮想ボリュームの指定かを判断する（Ｓ１８０３）。追加型仮想ボリュームの指定である場合、アプリケーション管理テーブル１４８から、入力されたアプリケーションと同じ名称のアプリケーションが設定されているかを判断する（Ｓ１８０４）。同じ名称のアプリケーションが設定されている場合（Ｓ１８０４で「Ｙ」）、アプリケーション管理テーブル１４８と仮想ボリューム管理テーブル１５１を用いてこのアプリケーションに対応付けられているプールを特定する（Ｓ１８０５）。一方、同じ名称のアプリケーションが設定されていない場合（Ｓ１６０４で「Ｎ」）、データ特性が指定されているかを判断する（Ｓ１８０６）。データ特性が指定されている場合（Ｓ１８０６で「Ｙ」）、アプリケーション管理テーブル１４８から指定されたデータ特性情報が設定されているか判断し（Ｓ１８０７）、設定されている場合には、プールを特定する（Ｓ１８０５）。同じデータ特性が設定されていない場合（Ｓ１８０６で「Ｎ」）、または、指定されたデータ特性がない場合（Ｓ１８０７で「Ｎ」）、セグメントサイズが指定されているかを判断する（Ｓ１８０８）。セグメントサイズが指定されている場合（Ｓ１８０８で「Ｙ」）、指定されたセグメントサイズからプール管理テーブル１５０を用いてプールを特定する（Ｓ１８０５）。セグメントサイズが指定されていない場合（Ｓ１８０８で「Ｎ」）、残容量が大きいプールを特定する（Ｓ１８０９）。なお、Ｓ１８０９のプールの特定は、セグメントサイズが最小のもの、あるいは最大のものとしてもよい。
【００８３】
プールが特定されたら、特定されたプールの残容量が閾値以上であるかを判断し、閾値以上である場合（Ｓ１８１０で「Ｙ」）、アプリケーション管理テーブル１４８、仮想ボリューム管理テーブル１５１の設定を行う（Ｓ１８１１）。具体的には、新たな仮想Ｖｏｌ−ＩＤを生成し、アプリケーション管理テーブル１４８にホストＩＤ、アプリケーション、データ特性（指定されている場合）、仮想Ｖｏｌ−ＩＤ、容量を設定する。また仮想ボリューム管理テーブルに仮想Ｖｏｌ−ＩＤ、プールＩＤ、仮想Ｖｏｌ形式を設定する。次に、ストレージ装置に仮想ボリューム定義情報として、仮想Ｖｏｌ−ＩＤ、ホストＩＤ、プールＩＤ、仮想ボリュームの容量を送り（Ｓ１８１２）、処理を終了する。
【００８４】
一方、プールの残容量が閾値より小さい場合（Ｓ１８１０で「Ｎ」）、プールを追加するか管理者に問合せを行い、プールを追加の指示があった場合（Ｓ１８１３で「Ｙ」）、既にプールに設定されているＬＤＥＶと同じ特性を持つＬＤＥＶをＬＤＥＶ管理テーブル１５２から特定する（Ｓ１８１４）。特定されたＬＤＥＶ、容量をプール管理テーブル１５０に設定し、残容量を更新し（Ｓ１８１５）、ストレージ装置にプール追加情報として追加対象となるプールＩＤと、特定したＬＤＥＶ―ＩＤとを送り（Ｓ１８１６）、Ｓ１８１１の処理に移る。
【００８５】
プールの追加が不要である場合（Ｓ１８１３で「Ｎ」）、プールを追加せずに、Ｓ１８１１の処理に移る。
【００８６】
一方、固定型仮想ボリュームの指定である場合（Ｓ１８０３で「Ｎ」）、ＬＤＥＶ管理テーブル１５２から入力された仮想ボリュームの容量以上の容量を持つＬＤＥＶを特定し（Ｓ１８１７）、アプリケーション管理テーブル１４８、仮想ボリューム管理テーブル１５１の設定を行う（Ｓ１８１８）。次に、ストレージ装置に仮想ボリューム定義情報として、仮想Ｖｏｌ−ＩＤ、容量、ＬＤＥＶ―ＩＤ、ホストＩＤを送り（Ｓ１８１９）、処理を終了する。
【００８７】
管理サーバ１４０からホストＩＤ、プールＩＤ、仮想ボリュームの容量を受けたストレージ装置は、プールマッピング管理テーブル１２９、アドレスマッピング管理テーブル１３１に仮想Ｖｏｌ−ＩＤ等の設定を行う。
【００８８】
ストレージ装置で、仮想ボリュームの定義が設定された後、ホストコンピュータからストレージ装置に対して設定された仮想ボリュームの情報を読み出すコマンドを送る。ホストコンピュータのＯＳは、ストレージ装置から送られてくる仮想ボリュームの情報（例えば、仮想ボリューム開始アドレス及び終了アドレス、あるいは仮想ボリュームの容量）を受取ると、アプリケーションに対して提供する仮想ボリュームを生成する。その後、アプリケーションと、仮想ボリュームとをマッピングする。これにより、アプリケーションは、仮想ボリュームに対して、アクセスすることができる。
【００８９】
以上説明した処理により、アプリケーションが利用する仮想ボリュームの定義、及び仮想ボリュームに対して割り当てるセグメントを定義することができる。
【００９０】
次に、仮想ボリュームに対して定義したセグメントを実際のアプリケーションの運用によって変更する場合の処理を説明する。
【００９１】
管理サーバ１４０のアクセス情報収集プログラム１５７は、一定の周期で各ホストコンピュータのアクセス情報を収集し、アクセス履歴管理テーブル１４９に設定する。アクセス情報を収集する周期は、管理者により設定することができる。
【００９２】
次に、収集したアクセス情報から適切なサイズのセグメントを決定する処理について説明する。
【００９３】
図２０は、セグメントサイズを決定する処理を示したものである。
【００９４】
この処理は、セグメント決定プログラム１４４が一定の周期で実行することにより行われる処理である。
【００９５】
まず、仮想ボリューム管理テーブル１５１から一つの追加型の仮想ボリュームを特定する（Ｓ２００１）。次に、割当情報管理テーブル１５５から特定された仮想ボリュームの最終集計時刻を特定し（Ｓ２００２）、この集計最終時刻以降に発生したアクセス情報をアクセス履歴管理テーブル１４９から読み出す（Ｓ２００３）。その後、記憶領域管理テーブル１５３から特定された仮想ボリュームの利用情報情報（先頭アドレス及び末尾アドレス）を読み出し（Ｓ２００４）、読み出した利用情報と、Ｓ２００３で読み出されたアクセス情報から、新規のライト要求となるアクセス情報を特定する（Ｓ２００５）。新規のライト要求となるアクセス情報とは、仮想ボリュームの新たな領域に対して発生したアクセス情報である。
【００９６】
図２１は、新規のライト要求となるアクセス情報を特定する処理の概要を示したものである。
【００９７】
アクセス情報２１０１は、Ｖｏｌ１に対するアクセス情報の一部を示したものである。また、利用情報２１０５は、Ｖｏｌ１に対する利用情報を示している。既に、Ｖｏｌ１に対してデータのライトがあった領域については、先頭アドレスと末尾アドレスが設定されている。この利用情報２１０５と、アクセス情報２１０１とを比較して、先頭アドレスと末尾アドレスに含まれないライト要求のアクセス情報を残す。例えば、ライトアドレス０Ｘ２０２５、データサイズ１０ＭＢのライト要求は、利用情報に設定されている先頭アドレスと末尾アドレスの範囲に含まれないので、このアクセス情報は残し、ディスク利用管理テーブルに先頭アドレス０ｘ２０２５、末尾アドレス０ｘ２０３５を設定する（Ｓ２００６）。また、ライトアドレス０Ｘ２５００、データサイズ２０ＭＢのライト要求は、ディスク利用情報に既に設定されている先頭アドレス（０Ｘ２５００）と末尾アドレス（０ｘ２６００）で指定される記憶領域に含まれるので、削除する。
【００９８】
この結果、図２１（ｂ）に示す結果となる。
【００９９】
次に、適合度判定対象管理テーブル１５４に設定されている各セグメントのサイズで仮想ボリュームへ割当てた場合の割当情報を求め、割当情報管理テーブルへ設定する（Ｓ２００７）。
【０１００】
図２２は、各セグメントのサイズで仮想ボリュームへ割当を行った場合の割当情報の概要を示したものである。
【０１０１】
図２２（ａ）に示したアクセス情報２２０１は、Ｓ２００５の結果で、新規のライト要求となるアクセス情報である。図１５に示した適合度判定対象管理テーブル１５４には、５ＭＢ、１０ＭＢ、２５ＭＢ、５０ＭＢ、７５ＭＢ、１００ＭＢのサイズが設定されているが、ここでは、１０ＭＢ、５０ＭＢ、１００ＭＢの場合について説明する。図２２（ｂ）は、アクセス情報２２０１のライトアドレス０ｘ２０２５、データサイズ１０ＭＢを割り当てた結果を示したものである。ここで、黒く塗りつぶされているところは、ライトされたデータを示している。セグメントサイズが１０ＭＢの場合、２つのセグメントが割り当てられる。その結果、割当情報２２１０は、アクセス回数１回、割当回数２回、データサイズ１０ＭＢ、割当サイズ２０ＭＢとなる。セグメントサイズが５０ＭＢ、１００ＭＢも同様にライトアクセスを行うとすると、割当情報２２１１、２２１２のようになる。このようにして、適合度判断対象管理テーブルに設定されたセグメントのサイズ毎に割当情報を求める。
【０１０２】
再び、図２０の処理の説明に戻る。
【０１０３】
求めた割当情報からセグメントサイズ毎に適合度を求める（Ｓ２００８）。ここでは、適合度を次のようにして求める。
【０１０４】
ボリューム利用率＝書込みデータサイズ／割当仮想ボリュームサイズ
割当性能＝アクセス回数/（アクセス回数＋割当回数）
適合度＝ボリューム利用率×割当性能
このようにして求めた適合度の中から最も高い適合度のセグメントサイズを特定する（Ｓ２００９）。次に、適合度判定対象管理テーブル１５４の設定状況から、最も高いと判断されたサイズのセグメントがストレージ装置に定義されているかを判断し、ストレージ装置に定義されている場合（Ｓ２０１０で「Ｙ」）、このセグメントサイズが既に仮想ボリュームに割り当てられているか割当情報管理テーブル１５５の割当対象で判断する（Ｓ２０１１）。割当対象に「１」が設定されている場合（Ｓ２０１１で「Ｙ」）、仮想ボリューム管理テーブル１５１から他の追加型仮想ボリュームがあるかを判断し（Ｓ２０１２）、あれば次の追加型仮想ボリュームを特定し（Ｓ２０１３）、Ｓ２００２の処理に移る。次の追加型仮想ボリュームがなければ（Ｓ２０１２で「Ｎ」）、処理を終了する。
【０１０５】
一方、最も適合度が高いと判断されたサイズのセグメントが、仮想ボリュームに割当られていない場合（Ｓ２０１１で「Ｎ」）、このサイズのセグメントを候補するために、割当情報管理テーブル１５５の候補に「１」を設定し（Ｓ２０１５）、Ｓ２０１２へ移る。
【０１０６】
また、最も適合度が高いと判断されたサイズのセグメントがストレージ装置に定義されていない場合（Ｓ２０１０で「Ｎ」）、割当情報管理テーブルの候補に「２」を設定し（Ｓ２０１４）、Ｓ２０１２へ移る。候補に「２」と設定された場合、後述するようにセグメントの生成、つまりプールの生成を行う。
【０１０７】
なお、Ｓ２００８ではボリューム稼動率と、割当性能の積を適合度としているが、ボリューム稼働率を適合度としても、割当性能を適合度としてもよい。ボリューム稼働率を適合度とした場合、空き領域が最小となるセグメントのサイズが決定され、割当性能を適合度とした場合、割当回数が最小となるセグメントのサイズが決定される。
【０１０８】
また、図２０に示した処理は、過去割当情報も含めて適合度を求めているが、特定の期間における適合度を求めるようにしてもよい。一つのアプリケーションでも、時間帯によって利用するデータのサイズ、アクセス頻度が変わる場合がある。従って、時間帯で適合度を求めるようにし、時間帯で割当てるセグメントのサイズを変えることも有効である。これを行うために、Ｓ２００３で開始時刻と終了時刻を管理者に入力させ、Ｓ２００４で入力された開始時刻と終了時刻の間のアクセス情報を読み出すように処理を変更すればよい。この場合、過去の割当情報は必要ないので、利用情報上を読み出す必要がない。これにより、指定された期間における各セグメントに対する適合度、及び候補となるセグメントを求めることができる。
図２３は、決定されたサイズのセグメントに変更できるかを判断する移行判定処理を示したものである。
これは、移行判定プログラム１４５により実行される。
まず、割当情報管理テーブルの候補に「１」が設定されている仮想ボリュームを特定し（Ｓ２３０１）、「１」が設定されているセグメントサイズの総割当サイズを割当情報管理テーブル１５５から読み出す（Ｓ２３０２）。そして、特定された仮想ボリュームのデータを候補となっているセグメントサイズのプールに格納できるか、つまりデータ移行できるかを判断する（Ｓ２２０３）。これは、候補となっているセグメントサイズのプールに、特定された仮想ボリュームに格納されているデータを全て移行しても、プールに十分な空き容量が確保できるかを判断する。例えば、プールの残容量から総割当サイズを引いた結果が閾値（例えば、５０ＧＢ）以上であるかを判断し、閾値以上であれば移行可、閾値より小さければ移行不可とする。
データを移行できると判断した場合（Ｓ２３０３で「Ｙ」）、特定された仮想ボリュームと容量が同じ新たな仮想ボリュームの仮想Ｖｏｌ-ＩＤを生成し、この仮想Ｖｏｌ−ＩＤと、候補となっているセグメントサイズを有するプールＩＤとを仮想ボリューム管理テーブル１５１に設定する（Ｓ２３０４）。次に、ストレージ装置に仮想ボリューム定義情報として仮想Ｖｏｌ−ＩＤ、容量、プールＩＤを送信する（Ｓ２３０５）。次に、データ移行管理テーブル１５６に、特定された仮想ボリュームを移行元、新たに生成した仮想ボリュームを移行先として設定し（Ｓ２３０６）、再びＳ２３０１の処理へ戻る。
【０１０９】
一方、データの移行ができないと判断した場合（Ｓ２３０３で「Ｎ」）、候補とされているプールに追加可能なＬＤＥＶがあるかを判断する（Ｓ２３０７）。追加できるＬＤＥＶがある場合（Ｓ２３０７で「Ｙ」）、ＬＤＥＶ管理テーブル１５２の割当状況に「１」を設定し（Ｓ２３０８）、プール追加情報として、プールＩＤ、ＬＤＥＶ−ＩＤをストレージ装置へ送り（Ｓ２３０９）、Ｓ２３０３へ戻る。追加可能なＬＤＥＶがない場合（Ｓ２３０７で「Ｎ」）、現在利用しているプールの残容量と候補とされているプールの残容量とを比較し（Ｓ２３１０）、候補とされているプールの残容量が大きい場合に、（特定された追加型仮想ボリュームのセグメントのサイズ）／（候補であるプールのセグメントのサイズ）を計算し、その結果が整数であるかを判断する（Ｓ２３１１）。整数である場合（Ｓ２３１１で「Ｙ」）、候補とされているセグメントが割当られるように、仮想ボリューム管理テーブルを変更し（Ｓ２３１２）、プール割当変更情報をストレージ装置に送り（Ｓ２３１３）、Ｓ２３０１の処理に移る。このようにＳ２３０９からＳ２３１３では、既に仮想ボリュームに対して格納されているデータを移行せずに、新たに格納されるデータを候補となるセグメントになるようにしている。この結果、一つの仮想ボリュームに異なるサイズのセグメントが割り当てられるようになる。
【０１１０】
以上説明した処理は、一定の周期で実行されることを前提としているが、これは管理者の指示により実行されるようにしてもよい。
図２４は、まだストレージ装置に定義されていないサイズのセグメントが候補とされた場合の処理を示したものである。
【０１１１】
これは、セグメント生成プログラム１４６により行われる処理である。
【０１１２】
まず、割当情報管理テーブルの候補に「２」が設定されている仮想ボリュームを特定し（Ｓ２４０１）、この仮想ボリュームに格納されたデータ量を求める（Ｓ２４０２）。ここでは、割当情報管理テーブルのライトデータサイズを仮想ボリュームに格納されたデータ量としている。次に、データ量と閾値を比較し、データ量が閾値より大きければ、データ量より大きい未割当のＬＤＥＶがあるか、ＬＤＥＶ管理テーブル１５２から判断する（Ｓ２４０４）。
ＬＤＥＶがある場合（Ｓ２４０４で「Ｙ」）、プールＩＤを生成し（Ｓ２４０５）、プール設定情報として、生成したプールＩＤ、セグメントサイズ、ＬＤＥＶ−ＩＤをストレージ装置に送信する（Ｓ２４０６）。なお、このときに、プール管理テーブル１５０に、プールＩＤ、容量、セグメントサイズ、ＬＤＥＶ−ＩＤを設定する。次に、移行先となる仮想ボリュームの仮想Ｖｏｌ−ＩＤを生成し、生成した仮想Ｖｏｌ−ＩＤと生成したプールＩＤを仮想ボリューム管理テーブル１５１に設定する（Ｓ２４０７）。また、移行先の仮想ボリュームを定義するために仮想ボリューム定義情報（仮想Ｖｏｌ−ＩＤ、プールＩＤ、容量）をストレージ装置へ送信する（Ｓ２４０８）。その後、Ｓ２４０１で特定された仮想ボリュームを移行元、新たに定義した仮想ボリュームを移行先としてデータ移行管理テーブルに設定し（Ｓ２４０９）、Ｓ２４０１に戻り、割当情報管理テーブルの候補に「２」が設定されている仮想ボリュームを特定し、同じ処理を繰り返す。
【０１１３】
なお、Ｓ２４０３の処理を行っているのは、あまり利用されないプールを生成することを避けるためである。従って、Ｓ２４０１において、同じセグメントサイズの複数の仮想ボリュームを特定するようにしても良い。
【０１１４】
図２５は、データの移行処理を示したものである。
【０１１５】
これは、データ移行管理プログラム１４７が行う処理である。
【０１１６】
処理を開始すると、データ移行管理テーブル１５６を参照し、移行元、移行先の仮想ボリュームが設定されているかを判断する（Ｓ２５０１）。設定されている場合、データ移行情報として、移行元の仮想Ｖｏｌ―ＩＤ、移行先の仮想Ｖｏｌ−ＩＤをストレージ装置に送る（Ｓ２５０２）。ストレージ装置からのデータ移行完了の応答を待って（Ｓ２５０３）、データ移行が完了したら（Ｓ２５０３で「Ｙ」）、データ移行管理テーブル１５６から、移行元、移行先の仮想Ｖｏｌ−ＩＤを削除する（Ｓ２５０４）。
【０１１７】
以上説明したように、追加型仮想ボリュームを利用する上で、ストレージ装置に異なるサイズのセグメントが定義されている場合、追加型仮想ボリュームに対するアクセス情報に基づいて、追加型仮想ボリュームに割り当てるセグメントのサイズを決定する。これにより、ストレージ装置の記憶領域を有効に利用することが可能となる。
【０１１８】
これまでの説明から、追加型の仮想ボリュームに対するライト要求により、割当てるセグメントのサイズを決定できることが明らかである。より速くデータを回復するために、ストレージ装置内に仮想ボリュームに対するライトデータと更新情報を格納し、データ障害が発生した場合、ジャーナルを利用して、ある時点のデータを復元する技術がある。そこで、このジャーナルを利用して、追加型仮想ボリュームに割当てるセグメントのサイズを決定する構成について説明する。
【０１１９】
図２６は、ストレージシステムの構成を示したものである。
【０１２０】
図２６に示した構成で、図１と同じものは同じ符号を付している。図１と相違するのは、ホストコンピュータ１１０で、セグメントサイズを決定できるようにした点である。そのため、ホストコンピュータ１１０には、仮想ボリューム定義プログラム１４３、セグメント決定プログラム１４４、移行判定プログラム１４５、セグメント生成プログラム１４６、データ移行管理プログラム１４７に加えて、ジャーナル収集プログラム２６０１が格納されている。また、各プログラムで利用する情報を格納したテーブル群２６０２が格納されている。
ストレージ装置１２０ａは、制御装置１２１ａ、データを格納するボリューム２６０３を有している。ここで、ボリューム２６０３は、アプリケーションのデータを格納するデータボリューム２６０３ｂ、２６０３ｃ、２６０３ｄ（仮想型仮想ボリューム）と、データボリュームに対するジャーナルを格納するジャーナルボリューム２６０３ａ（固定型仮想ボリューム）とがある。ジャーナルは、仮想ボリュームに対するライトデータと更新情報とを有している。更新情報は、仮想ボリュームに対するライトデータを管理するための情報で、ライト要求を受信した時刻、ライト要求の対象となるボリューム、ライト要求の対象となるボリュームの論理アドレス、ライトデータのデータサイズ等を含んでいる。ジャーナルボリューム２６０３ａへジャーナルを格納するのは、図７のＳ７０３により行われる。つまりＳ７０３でデータボリュームにデータを格納するとともに、ジャーナルボリュームへジャーナルを格納する。
【０１２１】
ストレージ装置１２０ｂは、制御部１２１ｂ、ストレージ装置１２０ａのジャーナルボリュームに格納されたジャーナルデータ複製が格納されるジャーナルボリューム２６０４ａを有している。
【０１２２】
このような構成において、ホストコンピュータ１１０ａは、ジャーナル収集プログラム２６０１により、ジャーナルボリュームからジャーナルを読み出す。ジャーナルボリューム２６０３ａからのジャーナルのリードは、データボリューム２６０３ｂ、２６０３ｃ、２６０３ｄに格納されたデータを読み出すのと同じである。このように読み出したジャーナルの更新情報を、アクセス情報としてホストコンピュータ１１０内のアクセス履歴管理テーブルに格納する。これにより、既に説明したセグメント決定プログラム１４４、移行判定プログラム１４５、セグメント生成プログラム１４６、データ移行管理プログラム１４７により、割り当てるセグメントのサイズを決定したり、データを移行させたり、また、新たなサイズのセグメントをストレージ装置に定義することが可能となる。
【図面の簡単な説明】
【０１２３】
【図１】図１は、システムの構成を示した図である。
【図２】図２は、ストレージ装置の記憶構造を示した図である。
【図３】図３は、アプリケーションのアクセス情報を収集する処理を示した図である。
【図４】図４は、プールマッピング管理テーブルを示した図である。
【図５】図５は、プール定義管理テーブルを示した図である。
【図６】図６は、アドレスマッピング管理テーブルを示した図である。
【図７】図７は、ストレージ装置のリード／ライト処理を示した図である。
【図８】図８は、ストレージ装置のデータ移行の処理を示した図である。
【図９】図９は、アプリケーション管理テーブルを示した図である。
【図１０】図１０は、アクセス履歴管理テーブルを示した図である。
【図１１】図１１は、プール管理テーブルを示した図である。
【図１２】図１２は、仮想ボリューム管理テーブルを示した図である。
【図１３】図１３は、ＬＤＥＶ管理テーブルを示した図である。
【図１４】図１４は、記憶領域管理テーブルを示した図である。
【図１５】図１５は、適合判定対象管理テーブルを示した図である。
【図１６】図１６は、割当情報管理テーブルを示した図である。
【図１７】図１７は、データ移行管理テーブルを示した図である。
【図１８Ａ】図１８Ａは、仮想ボリュームを定義する処理を示した図である。
【図１８Ｂ】図１８Ｂは、仮想ボリュームを定義する処理を示した図である。
【図１９】図１９は、仮想ボリュームを定義するための入力画面を示したものである。
【図２０】図２０は、仮想ボリュームに割り当てるセグメントのサイズを決定する処理を示した図である。
【図２１】図２１は、新規のライト要求を特定する処理の概要を示した図である。
【図２２】図２２は、割り当て情報を求める処理の概要を示した図である。
【図２３】図２３は、決定されたサイズのセグメントが利用可能かを判定する処理を示した図である。
【図２４】図２４は、決定されたサイズのセグメントをストレージ装置に定義する処理を示したものである。
【図２５】図２５は、データ移行の処理を示した図である。
【図２６】図２６は、ストレージシステムの構成を示した図である。
【符号の説明】
【０１２４】
１１０…ホストコンピュータ
１２０…ストレージ装置
１４０…管理サーバ
１６０…管理端末
２００…仮想ボリューム
２２３…セグメント
１２９…プールマッピング管理テーブル
１３１…アドレスマッピング管理テーブル
【図１】
2008117094.tif 000003
【図２】
2008117094.tif 000004
【図３】
2008117094.tif 000005
【図４】
2008117094.tif 000006
【図５】
2008117094.tif 000007
【図６】
2008117094.tif 000008
【図７】
2008117094.tif 000009
【図８】
2008117094.tif 000010
【図９】
2008117094.tif 000011
【図１０】
2008117094.tif 000012
【図１１】
2008117094.tif 000013
【図１２】
2008117094.tif 000014
【図１３】
2008117094.tif 000015
【図１４】
2008117094.tif 000016
【図１５】
2008117094.tif 000017
【図１６】
2008117094.tif 000018
【図１７】
2008117094.tif 000019
【図１８Ａ】
2008117094.tif 000020
【図１８Ｂ】
2008117094.tif 000021
【図１９】
2008117094.tif 000022
【図２０】
2008117094.tif 000023
【図２１】
2008117094.tif 000024
【図２２】
2008117094.tif 000025
【図２３】
2008117094.tif 000026
【図２４】
2008117094.tif 000027
【図２５】
2008117094.tif 000028
【図２６】
2008117094.tif 000029