(57)【要約】【課題】データ格納先の仮想記憶領域の仮想アドレスが物理記憶領域の物理アドレスに割り当てられる場合において、仮想記憶領域へのアクセス性能の低下を抑制する。【解決手段】データの格納先の仮想記憶領域２０の仮想アドレスに、物理記憶領域の物理アドレスを割り当てるストレージ管理装置であって、前記物理記憶領域に、複数の物理アドレスが連続する連続領域２０ｂを設定し、設定した連続領域２０ｂ内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域２０ｂに割り当てる仮想アドレスの割当範囲を設定する設定部と、設定した割当範囲内の仮想アドレスに前記設定した連続領域２０ｂの物理アドレスを割り当てる割当部と、を有する。【選択図】図７
2016012166.tif 000002
【特許請求の範囲】
【請求項１】
データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当てるストレージ管理装置であって、
前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定する設定部と、
設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる割当部と、を有する
ことを特徴とする、ストレージ管理装置。
【請求項２】
設定した割当範囲外の仮想アドレスに他の連続領域の物理アドレスを割り当てる、
ことを特徴とする、請求項１記載のストレージ管理装置。
【請求項３】
前記設定部は、前記割当部が仮想アドレスに物理アドレスを割り当てると、割り当てた仮想アドレスに基づき前記連続領域に割り当てる仮想アドレスの割当範囲を更新する、
ことを特徴とする、請求項２記載のストレージ管理装置。
【請求項４】
前記割当部は、仮想アドレスの割り当て先として複数の連続領域を抽出した場合、前記複数の連続領域に割り当てる仮想アドレスのうち、データの格納先の仮想アドレスにより近い仮想アドレスが割り当てられている連続領域を選択する、
ことを特徴とする、請求項１〜３のいずれか１項記載のストレージ管理装置。
【請求項５】
連続領域内で割当済の複数の仮想アドレスが連続する物理アドレスに割り当てられるように、前記連続領域内で割当済の複数の仮想アドレスに割り当てられた物理アドレスを変更する、
ことを特徴とする、請求項１〜４のいずれか１項記載のストレージ管理装置。
【請求項６】
前記割当部は、連続領域に含まれる物理アドレス数に基づいて、データの格納先の仮想アドレスに割り当てる物理アドレスと、他の仮想アドレスのために予約する物理アドレスとを決定する、
ことを特徴とする、請求項１又は請求項２記載のストレージ管理装置。
【請求項７】
コンピュータに、
データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当て、
前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定し、
設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる
処理を実行させることを特徴とする、ストレージ管理プログラム。
【請求項８】
データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当て、
前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定し、
設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる
ことを特徴とする、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ管理装置，ストレージ管理プログラム，及び制御方法に関する。
【背景技術】
【０００２】
記憶装置の記憶領域をユーザに柔軟に割り当てるため、ＨＤＤ（Hard Disk Drive）等の物理記憶装置を用いて仮想記憶装置（以下、ＶＤＩＳＫ（Virtual Disk）ともいう）を提供する仮想ストレージ装置が知られている（例えば、特許文献１〜６参照）。
【０００３】
仮想ストレージ装置では、上位装置の一例である業務サーバによりＶＤＩＳＫ上のデータのスナップショット採取（差分コピー）が行なわれることがある。スナップショットでは、スナップショットの領域管理手法を表す図２９に例示するように、スナップショット採取時点からの差分データが運用ＶＤＩＳＫに格納され、スナップショット採取前のデータはマスタＶＤＩＳＫから読み出される。また、スナップショットの運用ＶＤＩＳＫに対するライトは、差分データとなり、仮想ストレージ装置の管理サーバによってひとまとまりのデータ（以下、チャンクという）で管理される。
【０００４】
チャンクは、運用ＶＤＩＳＫの空き領域に一意のサイズで獲得される最小単位の論理ブロックであり、物理記憶装置上にはチャンクのインデックス順（Ｉ／Ｏ（Input/Output）の入力順）に連続で配置される。なお、チャンクのインデックス値は、物理記憶装置の物理アドレスと一致する。
【０００５】
運用ＶＤＩＳＫに対する差分データが存在しないオフセット（仮想アドレス）への初めてのライト（ファーストライト）Ｉ／Ｏが発生した際には、管理サーバは、図３０に例示するように、新しいチャンクを獲得し、獲得したチャンクにデータをライトする。図３０の例では、管理サーバは、運用ＶＤＩＳＫに差分データの存在しないオフセット“7”へのライトＩ／Ｏに対して、“0x003”のインデックス値（物理アドレス）のチャンクを獲得し、獲得したチャンクにデータをライトする。また、管理サーバは、オフセット（仮想アドレス）と獲得したチャンク位置（物理アドレス）とを、仮想アドレスと物理アドレスとの対応関係を示すＶ−Ｒマップに登録する。
【０００６】
また、差分データが存在するオフセットへのライト（２回目以降のライト)Ｉ／Ｏが発生した際には、管理サーバは、図３１に例示するように、ライトアドレス（仮想アドレス）に対応付けられたチャンクを獲得し、獲得したチャンクにデータをライトする。図３１の例では、管理サーバは、運用ＶＤＩＳＫに差分データの存在するオフセット“3”へのライトＩ／Ｏに対して、Ｖ−Ｒマップから差分データが格納されている“0x002”のインデックス値のチャンクを獲得し、獲得したチャンクにデータをライト（上書き）する。
【０００７】
スナップショットでは、このような差分コピーにより、業務サーバのＩ／Ｏ負荷を低減させることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２０１２−５３１６５３号公報
【特許文献２】特開２０１１−７６５７２号公報
【特許文献３】特開２０１０−８６４２０号公報
【特許文献４】特表２００７−５０２４７０号公報
【特許文献５】特開２００９−１１６６０１号公報
【特許文献６】特開２００８−６５４３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
差分データが格納される運用ＶＤＩＳＫでは、ファーストライトに係る仮想アドレスが、物理アドレスに対してランダムに割り当てられるため、運用ＶＤＩＳＫからのデータのリード性能（アクセス性能）が低下する場合がある。
【００１０】
なお、上述した課題は、差分コピーを行なうスナップショットに限られるものではなく、仮想アドレスが物理アドレスにＩ／Ｏの入力順に時系列で割り当てられる場合も同様に、仮想記憶装置からのリード性能が低下し得る。
【００１１】
１つの側面では、本発明は、データ格納先の仮想記憶領域の仮想アドレスが物理記憶領域の物理アドレスに割り当てられる場合において、仮想記憶領域へのアクセス性能の低下を抑制することを目的とする。
【００１２】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１３】
本件のストレージ管理装置は、データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当てるストレージ管理装置である。前記ストレージ管理装置は、前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定する設定部を有する。また、前記ストレージ管理装置は、設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる割当部を有する。
【発明の効果】
【００１４】
一実施形態によれば、データ格納先の仮想記憶領域の仮想アドレスが物理記憶領域の物理アドレスに割り当てられる場合において、仮想記憶領域へのアクセス性能の低下を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】スナップショットの運用ＶＤＩＳＫへのファーストライトがランダムライトの場合の例を説明する図である。
【図２】図１においてシーケンシャルリードＩ／Ｏが発生した場合の例を説明する図である。
【図３】第１実施形態に係るストレージシステムの構成例を示す図である。
【図４】第１実施形態の一例としての管理サーバの機能構成例を示す図である。
【図５】第１実施形態に係るスナップショットの領域管理手法の一例を示す図である。
【図６】図４に示すプール管理テーブルの一例を示す図である。
【図７】第１実施形態に係る運用ＶＤＩＳＫへのファーストライトがランダムライトの場合の例を説明する図である。
【図８】第１実施形態に係る運用ＶＤＩＳＫへのファーストライトがランダムライトの場合の例を説明する図である。
【図９】図８においてシーケンシャルリードＩ／Ｏが発生した場合の例を説明する図である。
【図１０】仮想アドレスが２つのプールの選択範囲内に含まれる場合の例を説明する図である。
【図１１】第１実施形態に係る管理サーバにおけるライトＩ／Ｏの処理の一例を説明するフローチャートである。
【図１２】第１実施形態に係るチャンク割当部による未使用チャンクの獲得処理の一例を説明するフローチャートである。
【図１３】第１実施形態の第１変形例に係る管理サーバの機能構成例を示す図である。
【図１４】第１実施形態の第１変形例に係るプールの選択範囲を示す図である。
【図１５】第１実施形態の第１変形例に係るスナップショットの領域管理手法を示す図である。
【図１６】第１実施形態の第２変形例に係る管理サーバの機能構成例を示す図である。
【図１７】第１実施形態の第２変形例に係るプール内の仮想アドレスのソート処理を説明する図である。
【図１８】第１実施形態の第２変形例に係るチャンク更新部によるプール内の仮想アドレスのソート処理を説明するフローチャートである。
【図１９】第２実施形態の一例としての管理サーバの機能構成例を示す図である。
【図２０】第２実施形態に係るスナップショットの領域管理手法の一例を示す図である。
【図２１】第２実施形態に係る運用ＶＤＩＳＫへのファーストライトがランダムライトの場合の例を説明する図である。
【図２２】第２実施形態に係る運用ＶＤＩＳＫへのファーストライトがランダムライトの場合の例を説明する図である。
【図２３】図１９に示す論理チャンク管理テーブルの一例を示す図である。
【図２４】図１９に示すビットマップの一例を示す図である。
【図２５】第２実施形態に係るチャンク割当部による未使用チャンクの獲得処理の一例を説明するフローチャートである。
【図２６】図２２においてシーケンシャルリードＩ／Ｏが発生した場合の例を説明する図である。
【図２７】図２２において論理チャンク内の空きチャンクを補完する場合の例を説明する図である。
【図２８】図３に示す管理サーバのハードウェア構成例を示す図である。
【図２９】スナップショットの領域管理手法の一例を示す図である。
【図３０】図２９においてファーストライトＩ／Ｏが発生した場合の例を説明する図である。
【図３１】図２９において２回目以降のライトＩ／Ｏが発生した場合の例を説明する図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１７】
〔１〕仮想ストレージ装置からのリードについて
上述のように、スナップショットの運用ＶＤＩＳＫへのファーストライトがランダムライトの場合、仮想ストレージ装置は、空きチャンクをインデックス順（仮想アドレスのライト順）に使用する。従って、図１に例示するように、Ｖ−Ｒマップ２１０は、運用ＶＤＩＳＫ２００のランダムな仮想アドレスに対して、シーケンシャルな物理アドレスの割り当てとなる。図１では、オフセット“4”，“3”，“5”，“2”，“1”の順でランダムライトが発生した場合に、これらの仮想アドレスに対して、物理アドレス“0x001”から“0x005”までが順に割り当てられる例を示す。
【００１８】
図１に示すランダムライトが行なわれた後、図２に例示するように、ライト済みの仮想アドレスに対してシーケンシャルリードＩ／Ｏが発生した場合を想定する。図２では、オフセット“1”から“5”までのシーケンシャルリードＩ／Ｏが発生した場合を示す。
【００１９】
この場合、仮想アドレスでソート後のＶ−Ｒマップ２１０に示すように、チャンクが物理的に不連続に配置されている。すなわち、仮想アドレスをシーケンシャルで見ると、物理アドレスがランダムで配置されることになる。従って、業務サーバからのシーケンシャルリードＩ／Ｏは、管理サーバ内部では物理記憶装置（以下、単に記憶装置ともいう）に対するランダムアクセスＩ／Ｏとなる。
【００２０】
記憶装置へのアクセスにおいて、物理アドレス順にリードを行なうシーケンシャルリードＩ／Ｏは、記憶装置内部での磁気ヘッドの移動が少なく、シーク時間が小さいため、最もＩ／Ｏ性能が良いアクセス方法であるといえる。しかし、業務サーバが仮想記憶装置に対するランダムライトＩ／Ｏ後にライトした領域に対するシーケンシャルリードＩ／Ｏを実施すると、上述のように記憶装置に対してはランダムアクセスＩ／Ｏとなってしまい、アクセス性能の低下が生じ得る。
【００２１】
このようなアクセス性能の低下が生じ得る状況としては、例えば業務サーバ上で動作するＯＳ（Operating System）又は仮想ＯＳ等のホストが複数存在する場合に、これらのホストから１つの仮想記憶装置に同時にファーストライトが行なわれる場合が挙げられる。この場合、各ホストから仮想記憶装置へシーケンシャルライトＩ／Ｏが発行されたとしても、管理サーバでは、Ｉ／Ｏの入力順に、仮想アドレスへの物理アドレスの割り当てが行なわれる。
【００２２】
例えば、ホストＡによるオフセット“1”から“5”へのファーストライトＩ／Ｏと、ホストＢによるオフセット“11”から“15”へのファーストライトＩ／Ｏとが同時に発行された場合を説明する。この場合、管理サーバは、例えばオフセット“1”，“11”，“2”，“12”，・・・，“5”，“15”のように、Ｉ／Ｏの到着順に（時系列で）チャンク割り当てを行ない、シーケンシャルな物理アドレスに仮想アドレスをランダムで割り当ててしまう。
【００２３】
従来、スナップショットは、記憶装置のディスク容量を節約するために差分データを管理するという側面が強く、多少のＩ／Ｏ性能の低下は止むを得ないものと考えられていた。また、仮想記憶装置へのランダムライトＩ／Ｏ後にシーケンシャルリードＩ／Ｏを実行するというアプリケーションが少なく、このような性能劣化が目立たなかった。
【００２４】
そこで、以下の各実施形態では、上述したアクセス性能の低下を抑制するストレージシステムについて詳述する。
【００２５】
〔２〕第１実施形態
以下、第１実施形態に係るストレージシステムについて説明する。なお、以下の例では、ストレージシステム（仮想ストレージ装置）においてチャンク単位で差分コピーを行なうスナップショットが実施される場合について説明する。
【００２６】
第１実施形態に係るストレージシステムでは、スナップショットにおいてファーストライトがランダムライトＩ／Ｏであっても、シーケンシャルな仮想アドレスに対して、差分データを記憶装置上に連続で配置するように制御することができる。これにより、ライト後にシーケンシャルリードＩ／Ｏが実施されても、管理サーバは記憶装置へシーケンシャルにＩ／Ｏを発行することができ、シーケンシャルリードＩ／Ｏの性能を向上させることができる。
【００２７】
〔２−１〕ストレージシステムの構成例
図３は、第１実施形態に係るストレージシステムの構成例を示す図である。第１実施形態に係るストレージシステムは、ハードウェアとして、例示的にＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置１−１〜１−ｍ，管理サーバ２，ネットワーク３，及び業務サーバ４−１〜４−ｎをそなえることができる。なお、ｍ及びｎは、それぞれ２以上の整数とする。本ストレージシステムにそなえられるハードウェアは、例えばデータセンタ等に設置されてよく、或いはこれらのハードウェアの少なくとも一部が他の施設等に設置され、システム内でネットワークを介して通信してもよい。
【００２８】
ＲＡＩＤ装置１−１〜１−ｍ（以下の説明においてこれらを区別しない場合には単にＲＡＩＤ装置１という）は、それぞれ１以上（図３の例では複数）の物理ディスク１０をそなえるものであり、ストレージ装置の一例である。物理ディスク１０は、仮想ストレージ装置として種々のデータやプログラム等を格納するハードウェアである。物理ディスク１０としては、例えばＨＤＤ等の磁気ディスク装置，ＳＳＤ（Solid State Drive）等の半導体ドライブ装置，フラッシュメモリ等の不揮発性メモリ等の各種装置が挙げられる。物理ディスク１０は、物理記憶装置（記憶装置）の一例である。
【００２９】
業務サーバ４−１〜４−ｎ（以下の説明においてこれらを区別しない場合には単に業務サーバ４という）は、仮想ストレージ装置のユーザが利用する端末（上位装置）の一例である。業務サーバ４は、ＯＳ４０又は仮想マシン（ＶＭ；Virtual Machine）４１上で動作する仮想ＯＳ４２により、例えばネットワーク３を介して仮想ストレージ装置へ種々のアクセス（Ｉ／Ｏ）を行なうことができる。
【００３０】
また、ホストとしてのＯＳ４０及び４２は、仮想ストレージ装置により提供される仮想ディスク２０に対して、差分コピーを用いたスナップショットを実行することができる。なお、ＯＳ４０及び４２は、仮想ストレージ装置により提供される仮想ディスク２０を分割して複数の仮想ディスク２０として用いたり、パーティションを作成してもよい。
【００３１】
ネットワーク３は、インターネット若しくはイントラネット、又はこれらの組み合わせを含んでよい。なお、業務サーバ４はネットワーク３を介さずに管理サーバ２と接続されてもよく、ユーザは端末を操作しネットワークを介して業務サーバ４にアクセスしてもよい。
【００３２】
管理サーバ２は、ＲＡＩＤ装置１の物理ディスク１０を用いて仮想ディスク２０を構成し、業務サーバ４（ＯＳ４０及び４２）に提供することができる。このとき、管理サーバ２は、業務サーバ４から仮想ディスク２０へのアクセス（Ｉ／Ｏ）に応じて、データの格納先の仮想記憶領域の仮想アドレスに、データの格納先の物理記憶領域の物理アドレスを割り当てる。
【００３３】
このように、管理サーバ２は、業務サーバ４（ＯＳ４０及び４２）に仮想ディスク２０を提供する論理ボリュームマネージャ等の管理装置の一例である。また、ＲＡＩＤ装置１及び管理サーバ２は、仮想ストレージ装置であるといえる。
【００３４】
〔２−２〕管理サーバの構成例
管理サーバ２は、図３に示すように、例示的に１以上（図３では２つ）の仮想ディスク２０，ＣＰＵ（Central Processing Unit）２ａ，及びメモリ２ｂをそなえることができる。
【００３５】
ＣＰＵ２ａは、種々の制御や演算を行なう演算処理装置（プロセッサ）の一例である。ＣＰＵ２ａは、メモリ２ｂに格納された管理プログラム２１ｃを実行することにより、管理サーバ２（図４参照）の機能を実現することができる。
【００３６】
メモリ２ｂは、種々のデータやプログラムを格納する記憶装置である。ＣＰＵ２ａは、プログラムを実行する際に、メモリ２ｂにデータやプログラムを格納し展開する。メモリ２ｂは、後述するプール管理テーブル２１ｂ及び上述した管理プログラム２１ｃを保持することができる。なお、メモリ２ｂとしては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリが挙げられる。
【００３７】
仮想ディスク２０は、ＣＰＵ２ａによって仮想的に構成（設定）される記憶領域である。仮想ディスク２０には、仮想領域（仮想記憶装置）の仮想アドレスと物理領域（物理記憶装置）の物理アドレスとの対応関係を示すＶ−Ｒマップ２１ａ（図７参照）が含まれてよい。なお、Ｖ−Ｒマップ２１ａは、メモリ２ｂに保持されてもよく、また、仮想ディスク２０ごとではなく複数の仮想ディスク２０全体で１つのＶ−Ｒマップ２１ａとしてもよい。
【００３８】
図３に示す例では、管理サーバ２は、マスタＶＤＩＳＫ及び運用ＶＤＩＳＫとしての２つの仮想ディスク２０をそなえるものとする。なお、管理サーバ２が提供する仮想ディスク２０は１つとし、マスタＶＤＩＳＫ及び運用ＶＤＩＳＫは、業務サーバ４（ＯＳ４０及び４２）により、１つの仮想ディスク２０を分割又はパーティション作成することによって生成（設定）されてもよい。
【００３９】
図４は、第１実施形態の一例としての管理サーバ２の機能構成例を示す図である。管理サーバ２は、例示的に、プール管理部２２，チャンク割当部２３Ａ，及びアクセス処理部２４をそなえることができる。なお、以下、管理サーバ２におけるライトＩ／Ｏ受信後の処理について説明する。リードＩ／Ｏやその他の管理サーバとしての機能については、既知の手法を用いることができるため、その詳細な説明は省略する。
【００４０】
プール管理部２２は、複数のチャンクの集合体（グループ）であるプール２０ｂの管理を行なう。例えば、プール管理部２２は、物理ディスク１０の連続した空き領域（連続領域）を複数のプール２０ｂに分割し、プール２０ｂごとにstartアドレスとendアドレスとを管理することができる。
【００４１】
図５に第１実施形態に係るスナップショットの領域管理手法の例を示す。例えば、プール管理部２２は、図５に示すように、複数（図５では１００個）のチャンク２０ａを１つのプール２０ｂとして管理することができる。なお、チャンク２０ａは任意のサイズとしてよく、例えば１Ｍバイト程度のサイズとすることができる。また、プール２０ｂには任意の数のチャンク２０ａを含めてよい。
【００４２】
プール管理部２２は、予め所定数のチャンク２０ａを含むプール２０ｂを複数仮作成しておくことができる。このとき、プール管理部２２は、各プール２０ｂ内のチャンク２０ａを割り当てる仮想アドレスの範囲（startアドレス及びendアドレス）を仮設定してもよい。
【００４３】
図５の例では、プール管理部２２は、インデックス値（物理アドレス）“0x001”〜“0x100”のチャンク２０ａでプール２０ｂを区画することができ、インデックス値“0x101”〜“0x200”のチャンク２０ａでプール２０ｂを区画することができる。以下、インデックス値“0x001”〜“0x100”のプール２０ｂをプール１といい、インデックス値“0x101”〜“0x200”のプール２０ｂをプール２という場合がある。
【００４４】
プール管理部２２は、プール２０ｂを管理するため、仮想ディスク２０と物理ディスク１０とのマッピング情報を管理するプール管理テーブル２１ｂをメモリ２ｂに生成・更新して用いることができる。プール管理テーブル２１ｂの一例を図６に示す。
【００４５】
図６に例示するように、プール管理テーブル２１ｂは、プール２０ｂごとに、空きチャンク数，空きチャンク管理テーブル，先頭論理アドレス，最終論理アドレス，及びタイムスタンプが含まれ得る。空きチャンク数は、プール２０ｂ内で未割当のチャンク２０ａの数が設定され、仮想アドレスにチャンク２０ａが新たに割り当てられる際に更新（減算）される。
【００４６】
空きチャンク管理テーブルは、プール２０ｂに対応する物理ディスク１０の記憶領域の情報が設定される。例えば空きチャンク管理テーブルには、プール２０ｂの先頭のインデックス値に対応する先頭物理アドレス，プール２０ｂの最終のインデックス値に対応する最終物理アドレス，及び次に払い出す物理アドレスが含まれ得る。次に払い出す物理アドレスは、次にチャンク２０ａに割り当てられる物理アドレスを示し、仮想アドレスにチャンク２０ａが新たに割り当てられる際に更新（次の物理アドレスに変更；例えばアドレスがインクリメント）される。
【００４７】
先頭論理（仮想）アドレス（startアドレス）は、プール２０ｂ内の仮想アドレスのうち、最もアドレスの小さい（先頭の）仮想アドレスが設定される。なお、プール管理部２２によりプール２０ｂが仮作成されたときには、先頭論理アドレスの値は、設定されなくてもよく、プール管理部２２によりstartアドレスが仮設定された場合には当該startアドレスが設定されてもよい。
【００４８】
最終論理（仮想）アドレス（endアドレス）は、プール２０ｂ内の仮想アドレスのうち、最もアドレスの大きい（最終の）仮想アドレスが設定される。なお、プール管理部２２によりプール２０ｂが仮作成されたときには、最終論理アドレスの値は、設定されなくてもよく、プール管理部２２によりendアドレスが仮設定された場合には当該endアドレスが設定されてもよい。
【００４９】
なお、先頭論理アドレス及び最終論理アドレスは、start及びendアドレスが仮設定された場合にはこれらのアドレスの値が設定され得るが、仮想アドレスの割当範囲はファーストライト時に決定されることが好ましい。これは、start及びendアドレスが予め設定されることで、仮想アドレスがどのプール２０ｂにも該当しないケースが増加し、後述のように仮想アドレスがタイムスタンプの最も古いプール２０ｂに割り当てられるためである。すなわち、仮想アドレスの割当範囲がファーストライト時に決定されることで、プール２０ｂ内の仮想アドレスの割当範囲の拡大を抑制し、シーケンシャルな仮想アドレスへのリードＩ／Ｏの際に物理ディスク１０のシーク量を小さく抑えることができる。
【００５０】
チャンク割当部２３Ａがプール２０ｂ内の空きチャンク２０ａを新たな仮想アドレスに割り当てる際に、新たな仮想アドレスの値が先頭論理アドレスよりも小さい場合、プール管理部２２は、先頭論理アドレスを新たな仮想アドレスに置き換える。また、新たな仮想アドレスの値が最終論理アドレスよりも大きい場合、プール管理部２２は、最終論理アドレスを新たな仮想アドレスに置き換える。なお、全てのチャンク２０ａが未割当であった場合（当該プール２０ｂから初めてチャンク２０ａが割り当てられた場合）、プール管理部２２は、先頭論理アドレス及び最終論理アドレスを新たな仮想アドレスに置き換える。
【００５１】
タイムスタンプには、当該プール２０ｂの情報の作成又は更新時刻が設定される。なお、プール管理部２２は、図６に示すプール管理テーブル２１ｂの情報を、配列により管理することができる。
【００５２】
チャンク割当部２３Ａは、受信したライトＩ／Ｏで指定されるライトアドレス（仮想アドレス）に基づいて、ライトアドレスに割り当てるチャンク２０ａを獲得する。
【００５３】
例えば、チャンク割当部２３Ａは、Ｖ−Ｒマップ２１ａにライトアドレスと同じ仮想アドレスが存在するか否かを判定する。ライトアドレスと同じ仮想アドレスがＶ−Ｒマップ２１ａに存在する場合、当該ライトＩ／Ｏは２回目以降の差分データのライトである。そこで、チャンク割当部２３Ａは、Ｖ−Ｒマップ２１ａからライトアドレスに対応する物理アドレスを取得し（チャンク２０ａを獲得し）、当該物理アドレスの情報をアクセス処理部２４に通知する。
【００５４】
一方、ライトアドレスと同じ仮想アドレスがＶ−Ｒマップ２１ａに存在しない場合、当該ライトＩ／Ｏは差分データのファーストライトである。そこで、チャンク割当部２３Ａは、プール管理テーブル２１ｂを参照して、ライトアドレス（仮想アドレス）をキーに、プール２０ｂの選択及び選択したプール２０ｂ内のチャンク２０ａの選択（獲得）を行なう。
【００５５】
例えばチャンク割当部２３Ａは、チャンク２０ａの選択に、ライトアドレスと、プール管理テーブル２１ｂ内の各プール２０ｂの先頭論理アドレスから所定の閾値を減算した値（アドレス）及び最終論理アドレスに所定の閾値を加算した値（アドレス）とを用いる。
【００５６】
一例として、図７及び図８に示すように、ファーストライトがランダムライト（オフセット“103”，“5”，“11”，“110”，“13”，及び“12”の仮想アドレスへのライト）の場合について説明する。なお、前提として、運用ＶＤＩＳＫ２０では全プール２０ｂで仮想アドレスにチャンク２０ａが未割当であり、所定の閾値が“20”であるものとする。
【００５７】
（１）オフセット“103”のライトＩ／Ｏに対して
チャンク割当部２３Ａは、プール管理テーブル２１ｂを参照し、ライトアドレス“103”が“先頭論理アドレス所定の閾値（但し最小値を“0”とする）”から“最終論理アドレス＋所定の閾値”の範囲内となるプール２０ｂを探索する。しかし、前提条件から全プール２０ｂで仮想アドレスにチャンク２０ａが未割当のため、先頭論理アドレス及び最終論理アドレスはいずれも未設定（“0”）であり、各プール２０ｂの仮想アドレスの割当範囲は“0”から“20”となる。
【００５８】
ライトアドレス“103”を格納可能なプール２０ｂが無いため、チャンク割当部２３Ａは、ライトアドレス“103”に空きプール２０ｂの先頭のチャンク２０ａを割り当てる（図７中、運用ＶＤＩＳＫ２０のプール１，インデックス値“0x001”参照）。このとき、チャンク割当部２３Ａは、プール管理テーブル２１ｂの空きチャンク管理テーブルを参照し、先頭物理アドレスが最も小さい空きプール２０ｂを選択し、次に払い出す物理アドレス（＝先頭物理アドレス）を先頭のチャンク２０ａと判断する。
【００５９】
なお、このとき、プール管理部２２は、プール管理テーブル２１ｂに対して、プール１に係る空きチャンク数を１減算し、先頭論理アドレス及び最終論理アドレスに“103”を設定し、タイムスタンプに更新時刻を設定する。また、プール管理部２２は、プール管理テーブル２１ｂの空きチャンク管理テーブルに対して、次に払い出す物理アドレスに、チャンク割当部２３Ａが割り当てたチャンク２０ａのインデックス値の次のインデックス値“0x002”を設定する。
【００６０】
また、チャンク割当部２３Ａは、アクセス処理部２４によりチャンク２０ａにライトデータがライトされると、Ｖ−Ｒマップ２１ａに対して、割り当てを行なった仮想アドレス“103”と物理アドレス“0x001”とを登録する（図７のＶ−Ｒマップ２１ａ参照）。
【００６１】
（２）オフセット“5”のライトＩ／Ｏに対して
次のライトＩ／Ｏを受信すると、チャンク割当部２３Ａは、上記（１）と同様にプール管理テーブル２１ｂを参照し、ライトアドレス“5”を割当範囲に含むプール２０ｂを探索する。プール１は、上記（１）において割当範囲が“103-20=83”から“103+20=123”になっているため選択されない。そこで、チャンク割当部２３Ａは、割当範囲が“0”から“20”（初期範囲）であるプール２を選択する。
【００６２】
そして、チャンク割当部２３Ａは、図７に示すように、プール２の次に払い出す物理アドレスに基づき、ライトアドレス“5”にプール２の先頭のチャンク２０ａ（インデックス値“0x101”）を割り当てる。なお、上記（１）と同様に、プール管理部２２はプール管理テーブル２１ｂを更新し、チャンク割当部２３Ａはライトデータのライト後にＶ−Ｒマップ２１ａを更新する。
【００６３】
（３）オフセット“11”のライトＩ／Ｏに対して
次のライトＩ／Ｏを受信すると、チャンク割当部２３Ａは、上記（１）及び（２）と同様にプール管理テーブル２１ｂを参照し、ライトアドレス“11”を割当範囲に含むプール２０ｂを探索する。そして、チャンク割当部２３Ａは、割当範囲が“5-20=0”から“5+20=25”でありライトアドレス“11”を含むプール２を選択する。
【００６４】
チャンク割当部２３Ａは、図７に示すように、プール２の次に払い出す物理アドレスに基づき、ライトアドレス“5”にプール２の次のチャンク２０ａ（インデックス値“0x102”）を割り当てる。なお、上記（１）及び（２）と同様に、プール管理部２２はプール管理テーブル２１ｂを更新し、チャンク割当部２３ＡはＶ−Ｒマップ２１ａを更新する。このとき、プール管理部２２は、プール管理テーブル２１ｂの最終論理アドレスを“5”から“11”に置き換える。これにより、次回以降のライトＩ／Ｏでは、プール２の割当範囲が“5-20=0”から“11+20=31”となる。
【００６５】
（４）オフセット“110”のライトＩ／Ｏに対して
この場合、ライトアドレス“110”は、割当範囲“103-20=83”から“103+20=123”であるプール１のインデックス値“0x002”のチャンク２０ａに割り当てられ、プール１の最終論理アドレスが“103”から“110”に置き換えられる（図８参照）。
【００６６】
（５）オフセット“13”のライトＩ／Ｏに対して
この場合、ライトアドレス“13”は割当範囲“5-20=0”から“11+20=31”であるプール２のインデックス値“0x103”のチャンク２０ａに割り当てられ、プール２の最終論理アドレスが“11”から“13”に置き換えられる（図８参照）。
【００６７】
（６）オフセット“12”のライトＩ／Ｏに対して
この場合、ライトアドレス“12”は割当範囲“5-20=0”から“13+20=33”であるプール２のインデックス値“0x104”のチャンク２０ａに割り当てられる（図８参照）。なお、ライトアドレス“12”は先頭論理アドレス“5”よりも大きく最終論理アドレス“13”よりも小さいため、先頭論理アドレス及び最終論理アドレスは更新されない。
【００６８】
以上のように、チャンク割当部２３Ａは、仮想アドレスに新しくチャンク２０ａを割り当てる場合、ライトする仮想アドレスをキーにして、“先頭論理アドレス閾値”から“最終論理アドレス＋閾値”の間となるプール２０ｂから空きチャンク２０ａを割り当てる。このとき、チャンク割当部２３Ａは、割当範囲が拡がる場合には、先頭論理アドレス及び最終論理アドレスの少なくとも一方を更新する。
【００６９】
これにより、チャンク割当部２３Ａによれば、近くの仮想アドレスに対して同一のプール２０ｂのチャンク２０ａを割り当てることができる。従って、図９に例示するように、ランダムライトＩ／Ｏ以降に発生したシーケンシャルリードＩ／Ｏの実施時に、物理ディスク１０へのシーク量を減らすことができ、アクセス性能を向上させることができる。
【００７０】
なお、図９では、図８のライトＩ／Ｏ（６）の実施後に、オフセット“11”，“12”，及び“13”へのシーケンシャルリードＩ／Ｏが発生した場合を示す。このとき、シーケンシャルリードＩ／Ｏに係る全ての仮想アドレスに、プール２の物理アドレスが割り当てられている。
【００７１】
従って、管理サーバ２がＲＡＩＤ装置１（物理ディスク１０）からデータをリードする際に、物理ディスク１０では、物理アドレス（物理領域）が互いに近傍の“0x102”，“0x104”，及び“0x103”から順にリードデータを読み出せばよい。これにより、物理ディスク１０では、シーク量の小さいアクセスを行なえばよく、リードデータを高速に読み出すことができ、リードＩ／Ｏの発行元である業務サーバ４への応答性能を向上させることができる。
【００７２】
また、チャンク割当部２３Ａは、仮想アドレスにプール２０ｂからチャンク２０ａが割り当てられる都度、当該プール２０ｂの仮想アドレスへの割当範囲の更新を試みる。これにより、仮想アドレスの割当範囲をライトＩ／Ｏの都度、オフセットを考慮して適切に拡張することができ、ライトＩ／Ｏに係るライトアドレスが割当範囲から外れる可能性を低下させるとともに、近傍の仮想アドレスを１つのプール２０ｂに集約させることができる。
【００７３】
さらに、チャンク割当部２３Ａは、先頭論理アドレス及び最終論理アドレスによる割当範囲の判定でライトアドレスに割り当てるプール２０ｂが存在しないと判断すると、未使用のプール２０ｂを選択する。このとき、未使用のプール２０ｂが存在しなければ、チャンク割当部２３Ａは、タイムスタンプに基づき最も更新時刻の古いプール２０ｂを選択することができる。
【００７４】
これにより、ライトアドレスに割当可能なプール２０ｂが存在しない場合でも、割当範囲が拡張することの影響が少ないプール２０ｂからライトアドレスに割り当てるチャンク２０ａを選択できる。従って、当該プール２０ｂについて先頭論理アドレス及び最終論理アドレスの少なくとも一方が更新されて、割当範囲が拡張しても、シーケンシャルリードＩ／Ｏの性能低下を最小限に抑えることができる。
【００７５】
なお、チャンク割当部２３Ａは、ライトアドレスが複数（例えば２つ）のプール２０ｂの割当範囲内にあるとき、ライトアドレスにより近い（近傍の）プール２０ｂを選択することができる。例えば、管理サーバ２が図１０に示すプール２０ｂを管理している場合、オフセット“65”のライトアドレス（仮想アドレス）に対して、プール２が選択される。図１０では、各プール２０ｂについて、チャンク割当部２３Ａが先頭論理アドレス及び最終論理アドレスのうちのライトアドレスに近い方のアドレスとライトＩ／Ｏに係るライトアドレスとの差を算出し、算出した差が小さいプール２０ｂを選択する例を示している。これにより、近傍の仮想アドレスを１つのプール２０ｂに集約させることができ、シーケンシャルリードＩ／Ｏの性能を向上させることができる。
【００７６】
また、チャンク割当部２３Ａは、ライトアドレスが割当範囲に含まれるプール２０ｂを探索する際に、ライトアドレスが先頭論理アドレスと最終論理アドレスとの間に含まれるプール２０ｂを検出した場合、当該プール２０ｂからチャンク２０ａを選択してもよい。この場合、ライトアドレスが他のプール２０ｂの割当範囲に含まれる可能性は低く、含まれたとしても他のプール２０ｂでは所定の閾値による割当範囲の拡張が行なわれている（検出したプール２０ｂが最もライトアドレスに近い）からである。なお、このとき、チャンク割当部２３Ａは、他のプール２０ｂの探索を打ち切ってよい。これにより、プール２０ｂの探索負荷を低減し、探索処理にかかる時間を短縮することができる。
【００７７】
以上のように、プール管理部２２は、物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、設定した連続領域に割り当てる仮想アドレスの割当範囲を設定する設定部の一例であるといえる。また、チャンク割当部２３Ａは、設定した割当範囲内の仮想アドレスに設定した連続領域の物理アドレスを割り当てる割当部の一例であるといえる。
【００７８】
図４の説明に戻り、チャンク割当部２３Ａは、上述のようにして獲得したチャンク２０ａの情報をアクセス処理部２４に通知する。
【００７９】
アクセス処理部２４は、チャンク割当部２３Ａから通知されたチャンク２０ａに対してアクセスを行ない、ライトＩ／Ｏに係るライトデータのライトを行なう。なお、アクセス処理部２４は、ファーストライトの場合であって、ライトデータがチャンクサイズに満たない場合には、コピーオンライト操作（処理）を行なうことができる。
【００８０】
コピーオンライト操作では、アクセス処理部２４は、ライトデータをチャンク２０ａにライトする際に不足する分のデータをマスタＶＤＩＳＫ２０からリードして、メモリ２ｂに格納し、ライトデータとマージしてチャンク２０ａサイズのデータを生成する。そして、アクセス処理部２４は、生成したデータをチャンク割当部２３Ａから通知されたチャンク２０ａにライトする。
【００８１】
〔２−３〕管理サーバの動作例
次に、上述の如く構成された管理サーバ２の動作例を、図１１及び図１２を参照して説明する。
【００８２】
はじめに、図１１に示すフローチャートを参照して、管理サーバ２におけるライトＩ／Ｏの処理の動作例について説明する。
【００８３】
まず、図１１に示すように、ライトＩ／Ｏが入力されると、管理サーバ２のチャンク割当部２３Ａが、Ｖ−Ｒマップ２１ａにライトＩ／Ｏに係る仮想アドレスが存在するか否かを判定する（ステップＳ１）。Ｖ−Ｒマップ２１ａにライトＩ／Ｏに係る仮想アドレスが存在しない場合（ステップＳ１のＮｏルート）、チャンク割当部２３Ａは、複数のプール２０ｂのうちの１つのプール２０ｂから未使用のチャンク２０ａを獲得する（ステップＳ２）。
【００８４】
次いで、チャンク割当部２３Ａは、獲得したチャンク２０ａをアクセス処理部２４に通知する。アクセス処理部２４は、通知されたチャンク２０ａにライトデータを書き込む。このとき、ライトデータがチャンク２０ａサイズ未満であれば、コピーオンライト操作を行ない、ライトデータにマスタＶＤＩＳＫ２０からリードした不足分のデータをマージしてチャンク２０ａにライトする（ステップＳ３）。
【００８５】
そして、チャンク割当部２３Ａは、Ｖ−Ｒマップ２１ａに対して、割り当てを行なった（ライトが行なわれた）仮想アドレスと物理アドレスとを登録（更新）し（ステップＳ４）、処理が終了する。
【００８６】
一方、Ｖ−Ｒマップ２１ａにライトＩ／Ｏに係る仮想アドレスが存在する場合（ステップＳ１のＹｅｓルート）、チャンク割当部２３Ａは、当該仮想アドレスに対応する物理アドレス（チャンク２０ａ）をＶ−Ｒマップ２１ａから取得（獲得）する（ステップＳ５）。
【００８７】
そして、チャンク割当部２３Ａは、獲得したチャンク２０ａをアクセス処理部２４に通知する。アクセス処理部２４は、通知されたチャンク２０ａにライトデータを書き込み（ステップＳ６）、処理が終了する。以上により、管理サーバ２におけるライトＩ／Ｏの処理が終了する。
【００８８】
次に、図１２に示すフローチャートに従って、チャンク割当部２３Ａ（及びプール管理部２２）による未使用チャンク２０ａの獲得処理の動作例（図１１のステップＳ２の詳細例）を説明する。
【００８９】
図１２に示すように、チャンク割当部２３Ａが、複数のプール２０ｂから１つのプール２０ｂを選択し、選択したプール２０ｂに空きチャンク２０ａがあるか否かを判定する（ステップＳ１１）。選択したプール２０ｂに空きチャンク２０ａがある場合（ステップＳ１１のＹｅｓルート）、チャンク割当部２３Ａは、プール管理テーブル２１ｂを参照し、選択したプール２０ｂに係る先頭／最終論理アドレスを取得する。そして、チャンク割当部２３Ａは、ライトＩ／Ｏに係るライトアドレス（仮想アドレス）が先頭論理アドレスと最終論理アドレスとの間にあるか否かを判定する（ステップＳ１２）。
【００９０】
ライトアドレスが先頭及び最終論理アドレス間にある場合（ステップＳ１２のＹｅｓルート）、処理がステップＳ１９に移行する。一方、ライトアドレスが先頭及び最終論理アドレス間にない場合（ステップＳ１２のＮｏルート）、チャンク割当部２３Ａは、ライトアドレスが“先頭論理アドレス−閾値”と“最終論理アドレス＋閾値”との間にあるか否かを判定する（ステップＳ１３）。
【００９１】
ライトアドレスが所定の閾値を考慮した先頭／最終論理アドレス間にある場合（ステップＳ１３のＹｅｓルート）、チャンク割当部２３Ａは、選択したプール２０ｂを選択候補リストに記憶し（ステップＳ１４）、処理がステップＳ１５に移行する。一方、ライトアドレスが所定の閾値を考慮した先頭／最終論理アドレス間にない場合（ステップＳ１３のＮｏルート）、処理がステップＳ１５に移行する。なお、ステップＳ１１において、選択したプール２０ｂに空きチャンク２０ａがない場合（ステップＳ１１のＮｏルート）にも、処理がステップＳ１５に移行する。
【００９２】
ステップＳ１５では、チャンク割当部２３Ａは、全てのプール２０ｂについて判断（ステップＳ１１〜Ｓ１３の少なくとも一部の判断）したか否かを判定する。全てのプール２０ｂについて判断をしていない場合（ステップＳ１５のＮｏルート）、処理がステップＳ１１に移行する。
【００９３】
ステップＳ１５において、全てのプール２０ｂについて判断した場合（ステップＳ１５のＹｅｓルート）、チャンク割当部２３Ａは、プール２０ｂの選択候補リストが存在するか否かを判定する（ステップＳ１６）。選択候補リストがある場合（ステップＳ１６のＹｅｓルート）、チャンク割当部２３Ａは、選択候補リストから、ライトアドレスが先頭又は最終論理アドレスに最も近いプール２０ｂを選択し（ステップＳ１７）、処理がステップＳ１９に移行する。
【００９４】
一方、選択候補リストがない場合（ステップＳ１６のＮｏルート）、チャンク割当部２３Ａは、複数のプール２０ｂから、空きチャンク２０ａが存在するプール２０ｂであって、タイムスタンプの時刻が最も古いプール２０ｂを選択する（ステップＳ１８）。そして、チャンク割当部２３Ａは、選択したプール２０ｂから空きチャンク２０ａを獲得する（ステップＳ１９）。このとき、チャンク割当部２３Ａは、獲得したチャンク２０ａをアクセス処理部２４に通知する。
【００９５】
なお、ステップＳ１７経由で実行されるステップＳ１９では、チャンク割当部２３Ａは、選択候補リストの中から選択されたプール２０ｂから、空きチャンク２０ａを獲得する。また、ステップＳ１２のＹｅｓルート経由で実行されるステップＳ１９では、チャンク割当部２３Ａは、ライトアドレスが先頭及び最終論理アドレス間にあるプール２０ｂ（ステップＳ１１で選択したプール２０ｂ）から、空きチャンク２０ａを獲得する。
【００９６】
そして、プール管理部２２は、チャンク割当部２３Ａにより獲得されたチャンク２０ａを含むプール２０ｂについて、プール管理テーブル２１ｂを更新し（ステップＳ２０）、処理が終了する。なお、ステップＳ２０では、プール管理部２２は、空きチャンク数の減算及びタイムスタンプの更新を行なう。また、ライトアドレスが先頭論理アドレスよりも小さい場合には先頭論理アドレスを更新し、ライトアドレスが最終論理アドレスよりも大きい場合には最終論理アドレスを更新する。以上により、チャンク割当部２３Ａ（及びプール管理部２２）による未使用チャンク２０ａの獲得処理が終了する。
【００９７】
〔２−４〕第１実施形態の効果
第１実施形態に係る仮想ストレージ装置によれば、プール２０ｂ（連続領域）内のチャンク２０ａ（物理アドレス）に最初に割り当てられた仮想アドレスに基づき、プール２０ｂに割り当てる仮想アドレスの割当範囲が設定される。そして、設定した割当範囲内の仮想アドレスにプール２０ｂのチャンク２０ａが割り当てられる。従って、差分データが存在する仮想アドレスへのシーケンシャルリードＩ／Ｏのアクセス性能を、物理ディスク１０でのシーク時間を小さくさせることで向上（低下を抑制）させることができる。
【００９８】
また、プール２０ｂに含まれない（割当範囲外の）仮想アドレスについても、他の該当するプール２０ｂのチャンク２０ａが割り当てられるため、仮想アドレスの割当範囲ごとに物理的に連続する連続領域が割り当てられることになる。従って、仮想ディスク２０全体に亘ってシーケンシャルリードＩ／Ｏのアクセス性能を向上させることができる。
【００９９】
なお、従来、仮想アドレスには、仮想アドレスへのライトＩ／Ｏ順にチャンクが割り当てられるため、シーケンシャルな仮想アドレスに対して差分データが物理ディスク上で物理的にランダムに配置されることがある。このとき、シーケンシャルリードＩ／Ｏは、仮想ストレージ装置では物理ディスクに対するランダムリードＩ／Ｏとなり、アクセス性能が低下する。
【０１００】
一方、第１実施形態に係る管理サーバ２では、仮想アドレスへのライトＩ／Ｏが発生すると、仮想アドレスをキーとして差分データを格納するチャンク２０ａが選択される。そして、管理サーバ２は、シーケンシャルな仮想アドレスに対して複数の差分データが物理ディスク１０上の近傍のブロック（チャンク２０ａ）に配置されるように制御を行なうことで、上述したアクセス性能を向上させることができるのである。
【０１０１】
さらに、例えば業務サーバ４のＯＳ４０又は４２は、同じスナップショットディスク（仮想ディスク２０）を分割、又は、同じスナップショットディスクをパーティション分割して、複数のアプリケーションで同時に使用する場合がある。この場合においても、従来の手法では仮想ストレージ装置ではファーストライトがランダムアクセスとなり、以降のシーケンシャルリードＩ／Ｏで性能劣化が見られるが、第１実施形態に係る管理サーバ２によれば、アクセス性能を向上させることができる。
【０１０２】
また、管理サーバ２によれば、仮想アドレスに物理アドレスを割り当てる際に、リアルタイムで略シーケンシャルな配置が行なえるため、デフラグのように後からデータを整列する場合と比較して、割り当て直後からアクセス性能を向上させることができる。
【０１０３】
〔２−５〕第１実施形態の第１変形例
第１実施形態では、各プール２０ｂの仮想アドレスの範囲を、ファーストライト時に決定するものとして説明したが、これに限定されるものではない。例えば、管理サーバ２は、図１３に示すように、プール管理部２２に代えて、予め仮想アドレスの範囲を固定に設定するプール管理部２２′をそなえることができる。
【０１０４】
プール管理部２２′は、図１４に例示するように、プール２０ｂの作成の際にstart及びendアドレスを仮設定し、上述のようにプール管理テーブル２１ｂの先頭論理アドレス及び最終論理アドレスに当該start及びendアドレスを設定することができる。
【０１０５】
図１５に示すように、プール管理部２２′は、インデックス値（物理アドレス）“0x001”〜“0x100”のチャンク２０ａで区画したプール２０ｂについて、オフセット（仮想アドレス）“1”〜“50”の範囲を仮設定する。また、プール管理部２２′は、インデックス値“0x101”〜“0x200”のチャンク２０ａで区画したプール２０ｂについて、オフセット“100”〜“150”の範囲を仮設定する。なお、図１５の例では、プール２０ｂに含まれるチャンク数が仮想アドレスの数よりも多くなっているが、チャンク数を仮想アドレスの数と同数にしてもよい。
【０１０６】
以上のように、第１変形例に係る手法によっても、第１実施形態と同様の効果を奏することができる。また、プール管理部２２′がプール２０ｂの割当範囲を仮設定することで、プール管理部２２′は、ファーストライト時にプール管理テーブル２１ｂの先頭論理アドレス及び最終論理アドレスの更新を不要とすることができる。従って、仮想アドレスがプール２０ｂの選択範囲内であればプール２０ｂへの割り当て性能を向上させることができる。
【０１０７】
〔２−６〕第１実施形態の第２変形例
第１実施形態及び第１変形例では、チャンク割当部２３Ａは仮想アドレスをプール２０ｂの割当範囲内でファーストアクセス順に割り当てるものとして説明したが、これに限定されるものではない。例えば、図１６及び図１７に示すように、管理サーバ２は、所定のタイミングで（例えば定期的に）プール２０ｂ内の仮想アドレスをソートするチャンク更新部２５を更にそなえることができる。
【０１０８】
以下、図１８に示すフローチャートに従って、チャンク更新部２５による仮想アドレスのソート処理の動作例を説明する。
【０１０９】
まず、チャンク更新部２５は、メモリ２ｂ又は仮想ディスク２０等の記憶領域における仮想アドレス退避領域を初期化する（ステップＳ２１）。なお、チャンク更新部２５は、仮想アドレス退避領域をメモリ２ｂ又は仮想ディスク２０等の記憶領域から新たに確保してもよい。
【０１１０】
次に、チャンク更新部２５は、プール２０ｂを１つ選択し（ステップＳ２２）、選択したプール２０ｂから１つチャンク２０ａを選択する（ステップＳ２３）。そして、チャンク更新部２５は、Ｖ−Ｒマップ２１ａから選択したチャンク２０ａ（物理アドレス）に格納されている仮想アドレスを抽出する（ステップＳ２４）。
【０１１１】
次いで、チャンク更新部２５は、退避領域の仮想アドレス（退避領域に格納されている仮想アドレス）が“0”であるか否か、及び抽出した仮想アドレスが退避領域の仮想アドレスよりも大きいか否かを判定する（ステップＳ２５）。なお、ステップＳ２５では、退避領域の全ての仮想アドレスについて順に判定が行なわれる。
【０１１２】
退避領域の仮想アドレスが“0”である、又は抽出した仮想アドレスが退避領域の仮想アドレスよりも大きい場合（ステップＳ２５のＹｅｓルート）、チャンク更新部２５は、抽出した仮想アドレスを退避領域に格納する（ステップＳ２６）。
【０１１３】
そして、チャンク更新部２５は、選択したプール２０ｂの全てのチャンク２０ａについて判定を行なったか否かを判断し（ステップＳ２７）、全てのチャンク２０ａについて判定を行なっていない場合（ステップＳ２７のＮｏルート）、処理がステップＳ２３に移行する。一方、全てのチャンク２０ａについて判定を行なった場合（ステップＳ２７のＹｅｓルート）、チャンク更新部２５は、全てのプール２０ｂについて判定を行なったか否かを判断する（ステップＳ２８）。全てのプール２０ｂについて判断を行なっていない場合（ステップＳ２８のＮｏルート）、処理がステップＳ２２に移行する。一方、全てのプール２０ｂについて判定を行なった場合（ステップＳ２８のＹｅｓルート）、処理が終了する。
【０１１４】
また、ステップＳ２５において、退避領域の仮想アドレスが“0”でなく（値が設定されており）、且つ抽出した仮想アドレスが退避領域の仮想アドレス以下である場合（ステップＳ２５のＮｏルート）、処理がステップＳ２９に移行する。ステップＳ２９では、チャンク更新部２５は、抽出した仮想アドレスに対応する物理アドレスのチャンク２０ａを退避領域の仮想アドレスに対応する物理アドレスのチャンク２０ａと入れ替える。
【０１１５】
そして、チャンク更新部２５は、Ｖ−Ｒマップ２１ａを更新し（ステップＳ３０）、選択したプール２０ｂのループインデックス値を退避領域の仮想アドレスのインデックス値に変更して（ステップＳ３１）、処理がステップＳ２６に移行する。これにより、抽出した全ての仮想アドレスについて上記の判定を行なわれる。以上により、チャンク更新部２５によるプール内の仮想アドレスのソート処理が終了する。
【０１１６】
第１実施形態の第２変形例によれば、第１実施形態及び第１変形例と同様の効果を奏することができる。また、チャンク更新部２５は、プール２０ｂ内の仮想アドレスを定期的にソートすることで、よりシーケンシャルな仮想アドレスの割り当てとなり、シーケンシャルリードＩ／Ｏ実施時のアクセス性能を更に向上させることができる。
【０１１７】
〔３〕第２実施形態
次に、第２実施形態に係る管理サーバ２について説明する。図１９は第２実施形態の一例としての管理サーバ２の機能構成例を示す図である。図１９に例示するように、第２実施形態に係る管理サーバ２は、第１実施形態に係るプール管理部２２に代えて、論理チャンク管理部２７をそなえるとともに、チャンク割当部２３Ａとは異なるチャンク割当部２３Ｂをそなえることができる。また、第２実施形態に係る管理サーバ２のメモリ２ｂは、プール管理テーブル２１ｂに代えて、論理チャンク管理テーブル２６ａ及びビットマップ２６ｂを保持することができる。なお、以下の第２実施形態の説明において、第１実施形態に係る管理サーバ２と共通する機能，処理の重複した説明は省略する。
【０１１８】
論理チャンク管理部２７は、複数のチャンクの集合体（グループ）である論理チャンク２０ｃの管理を行なう。図２０に第２実施形態に係るスナップショットの領域管理手法の例を示す。論理チャンク２０ｃは、図２０に示すように、例えば物理ディスク１０の連続した４つの空き領域（チャンク２０ａ）を束ねた（纏めた）記憶領域（連続領域）である。なお、論理チャンク２０ｃには、任意の数のチャンク２０ａを含めてよい。
【０１１９】
論理チャンク管理部２７は、予め所定数のチャンク２０ａを含む論理チャンク２０ｃを複数仮作成しておくことができる。このとき、論理チャンク管理部２７は、各論理チャンク２０ｃ内のチャンク２０ａを割り当てる仮想アドレスの範囲（startアドレス及びendアドレス）を仮設定する。すなわち、論理チャンク２０ｃ内のチャンク数により、１つの論理チャンク２０ｃに格納する仮想アドレスの範囲が決まり（例えば“0x001”〜“0x004”，“0x005”〜“0x008”，・・・）、１つのチャンク２０ａが使用される際に論理チャンク２０ｃが使用される。
【０１２０】
論理チャンク管理部２７は、図２１に例示するように、チャンク割当部２３Ｂによる１つのチャンク２０ａの使用後は論理チャンク２０ｃ内の残りのチャンク２０ａを予約状態とする。予約状態のチャンク２０ａは、図２２に例示するように、チャンク割当部２３Ｂにより、使用されたチャンク２０ａが割り当てられた仮想アドレスに続く（連続した）仮想アドレスにのみ割り当てられる。
【０１２１】
例えば、図２１において、オフセット“1”のファーストライトＩ／Ｏにより、論理チャンク２０ｃのインデックス（物理アドレス）“0x001”が仮想アドレスに割り当てられた場合を説明する。この場合、インデックス値“0x001”を含む論理チャンク２０ｃの残りのチャンク２０ａ（インデックス値“0x002”〜“0x004”）は、オフセット“2”〜“4”のファーストライトＩ／Ｏのために予約される。すなわち、図２２に示すように、連続して、又はランダムに入力されたオフセット“3”，“4”，“2”に対するファーストライトＩ／Ｏに対して、それぞれインデックス値“0x003”，“0x004”，“0x002”のチャンク２０ａが割り当てられる。
【０１２２】
論理チャンク管理部２７は、論理チャンク２０ｃを管理するため、論理チャンク２０ｃ及び複数のチャンク２０ａの状態を管理する論理チャンク管理テーブル２６ａをメモリ２ｂに生成・更新して用いることができる。論理チャンク管理テーブル２６ａの一例を図２３に示す。
【０１２３】
図２３に例示するように、論理チャンク管理テーブル２６ａは、論理チャンク２０ｃごとに、論理チャンク２０ｃの状態，先頭物理アドレス，及び複数の物理アドレスの使用状態が含まれ得る。論理チャンク２０ｃの状態は、全てのチャンク２０ａが未使用，少なくとも１のチャンク２０ａが使用中，論理チャンク２０ｃが解体されている状態（解体），及び全ての論理チャンク２０ｃに空きがない状態（空きなし）のいずれかを設定される。論理チャンク２０ｃの状態は、チャンク２０ａが使用される（仮想アドレスに割り当てられる）際等に更新される。
【０１２４】
先頭物理アドレスは、論理チャンク２０ｃの先頭の物理アドレスを設定される。物理アドレス使用状態は、論理チャンク２０ｃ内の各チャンク２０ａ（物理アドレス）について、仮想アドレスに割り当てられている使用，他のチャンク２０ａが使用されていることによる予約，及び空きが設定される。チャンク２０ａの状態は、チャンク２０ａが使用される（仮想アドレスに割り当てられる）際等に更新される。なお、論理チャンク管理部２７は、図２３に示す論理チャンク管理テーブル２６ａの情報を、配列により管理することができる。
【０１２５】
また、論理チャンク管理部２７は、図２４に例示するビットマップを管理することができる。ビットマップ２６ｂは、図２４に示すように、１つの論理チャンク２０ｃで使用する物理チャンク（チャンク２０ａ）群の使用状態をチャンク２０ａ単位で管理する。ビットマップ２６ｂが“0”の位置のチャンク２０ａは予約又は空きの状態である未使用状態を示し、“1”の位置のチャンク２０ａは使用状態を示す。図２４の例では、１つの論理チャンク２０ｃに含まれる１００個のチャンク２０ａが全て未使用状態であることを示している。論理チャンク管理部２７は、後述するように、使用中の論理チャンク２０ｃを解体するか否かを判定するためにビットマップ２６ｂを用いることができる。
【０１２６】
チャンク割当部２３Ｂは、受信したライトＩ／Ｏで指定されるライトアドレス（仮想アドレス）に基づいて、ライトアドレスに割り当てるチャンク２０ａを獲得する。例えば、チャンク割当部２３Ｂは、論理チャンク管理テーブル２６ａ及びビットマップ２６ｂを用いて、ライトＩ／Ｏ（ファーストライトＩ／Ｏ）のライトアドレスに割り当てる論理チャンク２０ｃ及び論理チャンク２０ｃの物理チャンク（チャンク２０ａ）を判定する。
【０１２７】
なお、チャンク割当部２３Ｂは、チャンク２０ａの割り当ての際に仮想アドレスを予約したチャンク２０ａがなく、且つ未使用の論理チャンク２０ｃがない場合は、論理チャンク２０ｃ内のチャンク使用率が低い論理チャンク２０ｃを解体することができる。そして、チャンク割当部２３Ｂは、解体した論理チャンク２０ｃから空きチャンク２０ａを仮想アドレスに割り当てる。これにより、未使用の記憶領域が発生しないように制御することができる。
【０１２８】
以下、チャンク割当部２３Ｂ（及び論理チャンク管理部２７）の処理を、図２５に示すフローチャート（図１１のステップＳ２の詳細例）に沿って説明する。なお、以下の処理は、ライトＩ／ＯがファーストライトＩ／Ｏである、つまりオフセット（ライトアドレス）と同じ仮想アドレスがＶ−Ｒマップ２１ａに存在しない場合に実行されるものとする。
【０１２９】
図２５に示すように、例えば、チャンク割当部２３Ｂは、オフセットを論理チャンク２０ｃ内の物理チャンク数で除算して、除算結果（商）である論理チャンク番号を取得する。また、チャンク割当部２３Ｂは、オフセットを論理チャンク２０ｃ内の物理チャンク数で除算して、除算結果（余り）である論理チャンク内位置を取得する（ステップＳ４１）。
【０１３０】
なお、論理チャンク番号は、論理チャンク２０ｃを特定する番号であり、論理チャンク内位置は、論理チャンク２０ｃにおけるチャンク２０ａの位置を特定する情報である。論理チャンク番号及び論理チャンク内位置は、論理チャンク管理部２７により設定される。
【０１３１】
そして、チャンク割当部２３Ｂは、論理チャンク管理テーブル２６ａに基づいて、特定した論理チャンク２０ｃの状態が使用中であるか否かを判定する（ステップＳ４２）。使用中である場合（ステップＳ４２のＹｅｓルート）、チャンク割当部２３Ｂは、該当する物理チャンクのアドレスを取得してライトアドレスに割り当てる。また、論理チャンク管理部２７は物理アドレスの使用状態を予約から使用に変更し（ステップＳ４３）、処理が終了する。
【０１３２】
一方、ステップＳ４２において論理チャンク２０ｃが使用中ではない場合（ステップＳ４２のＮｏルート）、チャンク割当部２３Ｂは、論理チャンク２０ｃの状態が解体であるか否かを判定する（ステップＳ４４）。解体である場合（ステップＳ４４のＹｅｓルート）、当該論理チャンク２０ｃは使用率が低く解体されているため、チャンク割当部２３Ｂは、全ての論理チャンク２０ｃから空きの物理チャンクのアドレスを１つ取得してライトアドレスに割り当てる。また、論理チャンク管理部２７は、当該物理アドレスの使用状態を空きから使用に変更し（ステップＳ４５）、処理が終了する。
【０１３３】
また、ステップＳ４４において論理チャンク２０ｃが解体ではない場合（ステップＳ４４のＮｏルート）、チャンク割当部２３Ｂは、ライトアドレスに対して新たにチャンク２０ａ（論理チャンク２０ｃ）を獲得する。例えば、チャンク割当部２３Ｂは、論理チャンク２０ｃの状態に空きがあるか否かを判定する（ステップＳ４６）。空きがない（全論理チャンク２０ｃの状態が空きなしである）場合（ステップＳ４６のＮｏルート）、全論理チャンク２０ｃは、使用中又は解体された状態である。そこで、チャンク割当部２３Ｂは、全論理チャンク２０ｃのうちの解体状態の論理チャンク２０ｃから空きの物理チャンクのアドレスを１つ取得してライトアドレスに割り当てる。また、論理チャンク管理部２７は、当該物理アドレスの使用状態を空きから使用に変更し（ステップＳ４７）、処理が終了する。
【０１３４】
なお、ステップＳ４５又はＳ４７における全ての又は解体状態の論理チャンク２０ｃからの空きの物理チャンクのアドレスの取得は、任意の物理チャンクを取得してもよいし、第１実施形態の手法を用いてもよい。すなわち、第１実施形態のチャンク割当部２３Ａのように、論理チャンク２０ｃの仮想アドレスの割当範囲がライトアドレス（オフセット）に最も近い論理チャンク２０ｃから物理チャンクを取得してもよい。この場合、管理サーバ２のメモリ２ｂに論理チャンク２０ｃ用のプール（論理チャンク）管理テーブル２１ｂをそなえてもよい。
【０１３５】
ステップＳ４６において論理チャンク２０ｃに空きがある（状態が空きなしではない論理チャンク２０ｃがある）場合（ステップＳ４６のＹｅｓルート）、チャンク割当部２３Ｂは、空きの論理チャンク２０ｃを用いるか、使用中の論理チャンク２０ｃを解体して用いる。例えば、チャンク割当部２３Ｂは、空きチャンク群（空き論理チャンク２０ｃ）の獲得を試み、獲得できたか否かを判定する（ステップＳ４８）。
【０１３６】
空きチャンク群を獲得できなかった場合（ステップＳ４８のＹｅｓルート）、チャンク割当部２３Ｂは、全論理チャンク２０ｃのうちの使用中の論理チャンク２０ｃのうち、チャンク２０ａの使用率が最も低い論理チャンク２０ｃを解体する。例えば、チャンク割当部２３Ｂは、ビットマップ２６ｂを参照し、未使用“0”の比率が最も高い論理チャンク２０ｃを検出する。そして、チャンク割当部２３Ｂは、検出した論理チャンク２０ｃを解体し（ステップＳ４９）、処理がステップＳ４７に移行する。なお、解体処理では、論理チャンク管理部２７が、論理チャンク管理テーブル２６ａの状態を使用中から解体に変更し、当該論理チャンク２０ｃ内の物理アドレスの使用状態を予約から空きに変更する。
【０１３７】
一方、ステップＳ４８において、空き物理チャンク群を獲得できた場合（ステップＳ４８のＹｅｓルート）、論理チャンク管理部２７は、論理チャンク管理テーブル２６ａの状態を未使用から使用中に変更する。また、論理チャンク管理部２７は、当該論理チャンク管理テーブル２６ａの先頭アドレスに論理チャンク２０ｃの新たな先頭の物理アドレスとなる“xxxx”を設定し、物理アドレスの使用状態に予約を設定する（ステップＳ５０）。
【０１３８】
そして、チャンク割当部２３Ｂは、該当する物理チャンクのアドレスを獲得する。また、論理チャンク管理部２７は、論理チャンク管理テーブル２６ａの物理アドレスの使用状態を予約から使用に変更し（ステップＳ５１）、処理が終了する。以上により、チャンク割当部２３Ｂ（及び論理チャンク管理部２７）による未使用チャンク２０ａの獲得処理が終了する。
【０１３９】
以上のように、第２実施形態に係る管理サーバ２によれば、物理的に連続した複数のチャンク２０ａが論理チャンク２０ｃで管理される。これにより、第２実施形態に係る管理サーバ２は、論理チャンク２０ｃ内でシーケンシャルな仮想アドレスに対して差分データの物理アドレスも物理ディスク１０上に連続して配置されるように制御することができる。
【０１４０】
例えば、図２２に示すランダムライトＩ／Ｏ後に、オフセット“1”，“2”，“3”の順でシーケンシャルリードＩ／Ｏを実施する場合（図２６参照）、論理チャンク２０ｃ内では物理ディスク１０上にリード対象のデータが連続して配置されている。すなわち、第２実施形態に係る管理サーバ２によれば、ランダムライトＩ／Ｏ（アクセス）でばらばらに受信した仮想アドレスであっても、シーケンシャルな仮想アドレスにシーケンシャルな物理アドレスを効率的に割り当てることができる。従って、物理ディスク１０内のシーク時間が小さくなりアクセス性能が向上する。
【０１４１】
このように、第２実施形態に係る管理サーバ２によれば、第１実施形態と同様の効果を奏することができるほか、データをリアルタイムで整列可能なため、デフラグのように後からデータを整列する場合と比較して、アクセス性能がリアルタイムに向上する。
【０１４２】
以上のように、論理チャンク管理部２７は、物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、設定した連続領域に割り当てる仮想アドレスの割当範囲を設定する設定部の一例であるといえる。また、チャンク割当部２３Ｂは、設定した割当範囲内の仮想アドレスに設定した連続領域の物理アドレスを割り当てる割当部の一例であるといえる。
【０１４３】
〔３−１〕第２実施形態の変形例
第２実施形態に係る管理サーバ２は、物理的に連続した複数のチャンク２０ａを論理チャンク２０ｃで管理するが、性能向上の効果を高めるには、論理チャンク２０ｃ内の全てのチャンク２０ａに対して差分データがライトされることが望ましい。論理チャンク２０ｃ内に抜けのチャンク２０ａがある場合にシーケンシャルリードＩ／Ｏが実行されると、当該抜けのチャンク２０ａについてはマスタＶＤＩＳＫ２０からデータがリードされるため、アクセス性能が低下するためである。
【０１４４】
例えば、第２実施形態の変形例では、管理サーバ２のチャンク割当部２３Ｂは、一定間隔（所定のタイミング）で論理チャンク２０ｃ内のチャンク２０ａの使用率の確認を行なってもよい。また、チャンク割当部２３Ｂは、使用率が閾値（例えば７５％）以上となった論理チャンク２０ｃの予約状態のチャンク２０ａに対して、マスタＶＤＩＳＫ２０からデータを読み出し、差分データとして書き込む（補完する）ことができる。
【０１４５】
一例として、図２７に示すように、チャンク割当部２３Ｂは、一定間隔（例えば数分〜数時間等）で論理チャンク２０ｃ内のチャンク２０ａの使用率をチェックする。“0x005”〜“0x008”の論理チャンク２０ｃにおいて、“0x007”以外のチャンク２０ａが使用状態である場合、チャンク割当部２３Ｂは、当該論理チャンク２０ｃの使用率が７５％、つまり閾値以上であることを検出する。そして、チャンク割当部２３Ｂは、予約状態のインデックス値“0x007”のチャンク２０ａについて、マスタＶＤＩＳＫ２０から対応するデータを読み出し、運用ＶＤＩＳＫ２０上の“0x007”のチャンク２０ａを補完することができる。
【０１４６】
これにより、第２実施形態の変形例によれば、第２実施形態と同様の効果を奏することができるほか、論理チャンク２０ｃ内の抜けのチャンク２０ａのデータを補完することができる。従って、シーケンシャルリードＩ／Ｏのアクセス性能をさらに向上させることができる。
【０１４７】
〔４〕ハードウェア構成例
図２８に示すように、上述した第１及び第２実施形態並びに各変形例に係る管理サーバ２は、ＣＰＵ２ａ，メモリ２ｂ，記憶部２ｃ，インタフェース部２ｄ，入出力部２ｅ，記録媒体２ｆ，及び読取部２ｇをそなえることができる。
【０１４８】
ＣＰＵ２ａは、種々の制御や演算を行なう演算処理装置（プロセッサ）の一例である。ＣＰＵ２ａは、対応する各ブロック２ｂ〜２ｇと接続され、メモリ２ｂ，記憶部２ｃ，記録媒体２ｆや２ｈ，又は図示しないＲＯＭ（Read Only Memory）等に格納されたプログラムを実行することにより、種々の機能を実現することができる。例えばＣＰＵ２ａは、メモリ２ｂに格納された管理プログラム２１ｃ（図３参照）（ストレージ管理プログラム）を実行することにより、管理サーバ２の機能を実現することができる。
【０１４９】
メモリ２ｂは、種々のデータやプログラムを格納する記憶装置である。ＣＰＵ２ａは、プログラムを実行する際に、メモリ２ｂにデータやプログラムを格納し展開する。メモリ２ｂは、上記管理プログラム２１ｃを保存することができる。なお、メモリ２ｂとしては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリが挙げられる。記憶部２ｃは、種々のデータやプログラム等を格納するハードウェアである。記憶部２ｃとしては、例えばＨＤＤ等の磁気ディスク装置，ＳＳＤ等の半導体ドライブ装置，フラッシュメモリ等の不揮発性メモリ等の各種装置が挙げられる。なお、図３に示すＲＡＩＤ装置１の物理ディスク１０は、記憶部２ｃにより実現されてもよい。
【０１５０】
インタフェース部２ｄは、有線又は無線による、ネットワーク（例えばネットワーク３）や他の情報処理装置或いはＲＡＩＤ装置１等との間の接続及び通信の制御等を行なうものである。インタフェース部２ｄとしては、例えば、ＬＡＮ（Local Area Network），ファイバチャネル（Fibre Channel；ＦＣ），インフィニバンド（InfiniBand）等に準拠したアダプタが挙げられる。入出力部２ｅは、マウスやキーボード等の入力装置及びディスプレイやプリンタ等の出力装置の少なくとも一方を含むことができる。例えば、入力装置は管理者等による管理サーバ２への各種設定やデータの入力等の作業に用いられてよく、出力装置は管理サーバ２による動作状態や処理結果等の出力に用いられてよい。
【０１５１】
記録媒体２ｆは、例えばフラッシュメモリやＲＯＭ等の記憶装置であり、種々のデータやプログラムを記録することができる。読取部２ｇは、コンピュータ読取可能な記録媒体２ｈに記録されたデータやプログラムを読み出す装置である。記録媒体２ｆ及び２ｈの少なくとも一方には、本実施形態に係る管理サーバ２の各種機能の全部もしくは一部を実現する管理プログラム２１ｃが格納されてもよい。例えば、ＣＰＵ２ａは、記録媒体２ｆから読み出した管理プログラム２１ｃ、又は、読取部２ｇを介して記録媒体２ｈから読み出した管理プログラム２１ｃを、メモリ２ｂ等の記憶装置に展開して実行してもよい。
【０１５２】
なお、記録媒体２ｈとしては、例えばフレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク等の光ディスクや、ＵＳＢ（Universal Serial Bus）メモリやＳＤカード等のフラッシュメモリが挙げられる。なお、ＣＤとしては、ＣＤ−ＲＯＭ、ＣＤ−Ｒ（CD-Recordable）、ＣＤ−ＲＷ（CD-Rewritable）等が挙げられる。また、ＤＶＤとしては、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等が挙げられる。
【０１５３】
上述した各ブロック２ａ〜２ｇ間はバスで相互に通信可能に接続される。また、管理サーバ２の上述したハードウェア構成は例示である。従って、管理サーバ２内でのハードウェアの増減（例えば任意のブロックの追加や省略），分割，任意の組み合わせでの統合，バスの追加又は省略等は適宜行なわれてもよい。
【０１５４】
〔５〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１５５】
例えば、図３，図４，図１３，図１６，及び図１９等に示す管理サーバ２の各機能ブロックは、任意の組み合わせで併合してもよく、分割してもよい。また、ストレージシステムにはＲＡＩＤ装置１及び業務サーバ４がそれぞれ１つずつそなえられてもよい。
【０１５６】
また、各実施形態及び各変形例における、チャンク２０ａのサイズ，プール２０ｂや論理チャンク２０ｃに含まれるチャンク２０ａの数，プール２０ｂにおける仮想アドレスの割当範囲等は、あくまで例示であり、それぞれ任意の値を設定することができる。
【０１５７】
〔６〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【０１５８】
（付記１）
データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当てるストレージ管理装置であって、
前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定する設定部と、
設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる割当部と、を有する
ことを特徴とする、ストレージ管理装置。
【０１５９】
（付記２）
設定した割当範囲外の仮想アドレスに他の連続領域の物理アドレスを割り当てる、
ことを特徴とする、付記１記載のストレージ管理装置。
【０１６０】
（付記３）
前記設定部は、前記割当部が仮想アドレスに物理アドレスを割り当てると、割り当てた仮想アドレスに基づき前記連続領域に割り当てる仮想アドレスの割当範囲を更新する、
ことを特徴とする、付記２記載のストレージ管理装置。
【０１６１】
（付記４）
前記割当部は、仮想アドレスの割り当て先として複数の連続領域を抽出した場合、前記複数の連続領域に割り当てる仮想アドレスのうち、データの格納先の仮想アドレスにより近い仮想アドレスが割り当てられている連続領域を選択する、
ことを特徴とする、付記１〜３のいずれか１項記載のストレージ管理装置。
【０１６２】
（付記５）
連続領域内で割当済の複数の仮想アドレスが連続する物理アドレスに割り当てられるように、前記連続領域内で割当済の複数の仮想アドレスに割り当てられた物理アドレスを変更する、
ことを特徴とする、付記１〜４のいずれか１項記載のストレージ管理装置。
【０１６３】
（付記６）
前記割当部は、連続領域に含まれる物理アドレス数に基づいて、データの格納先の仮想アドレスに割り当てる物理アドレスと、他の仮想アドレスのために予約する物理アドレスとを決定する、
ことを特徴とする、付記１又は付記２記載のストレージ管理装置。
【０１６４】
（付記７）
前記割当部は、連続領域内で割当済の仮想アドレスと連続する仮想アドレスに対して、前記連続領域内に含まれる物理アドレスが連続するように予約し、仮想アドレスに物理アドレスを割り当てる際に、当該仮想アドレスが予約済の物理アドレスに対応する仮想アドレスである場合、当該仮想アドレスに対して当該予約済の物理アドレスを割り当てる、
ことを特徴とする、付記６記載のストレージ管理装置。
【０１６５】
（付記８）
前記割当部は、物理アドレスの割当率が高い連続領域における仮想アドレスへの予約済の未割当の物理アドレスについては、当該物理アドレスに対応する仮想アドレスに関する補完データを書き込み、当該物理アドレスを予約状態から割当済に変更する、
ことを特徴とする、付記６又は付記７記載のストレージ管理装置。
【０１６６】
（付記９）
コンピュータに、
データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当て、
前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定し、
設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる
処理を実行させることを特徴とする、ストレージ管理プログラム。
【０１６７】
（付記１０）
前記コンピュータに、
設定した割当範囲外の仮想アドレスに他の連続領域の物理アドレスを割り当てる、
処理を実行させることを特徴とする、付記９記載のストレージ管理プログラム。
【０１６８】
（付記１１）
前記コンピュータに、
仮想アドレスに物理アドレスを割り当てると、割り当てた仮想アドレスに基づき前記連続領域に割り当てる仮想アドレスの割当範囲を更新する、
処理を実行させることを特徴とする、付記１０記載のストレージ管理プログラム。
【０１６９】
（付記１２）
前記コンピュータに、
仮想アドレスの割り当て先として複数の連続領域を抽出した場合、前記複数の連続領域に割り当てる仮想アドレスのうち、データの格納先の仮想アドレスにより近い仮想アドレスが割り当てられている連続領域を選択する、
処理を実行させることを特徴とする、付記９〜１１のいずれか１項記載のストレージ管理プログラム。
【０１７０】
（付記１３）
前記コンピュータに、
連続領域内で割当済の複数の仮想アドレスが連続する物理アドレスに割り当てられるように、前記連続領域内で割当済の複数の仮想アドレスに割り当てられた物理アドレスを変更する、
処理を実行させることを特徴とする、付記９〜１２のいずれか１項記載のストレージ管理プログラム。
【０１７１】
（付記１４）
前記コンピュータに、
連続領域に含まれる物理アドレス数に基づいて、データの格納先の仮想アドレスに割り当てる物理アドレスと、他の仮想アドレスのために予約する物理アドレスとを決定する、
処理を実行させることを特徴とする、付記９又は付記１０記載のストレージ管理プログラム。
【０１７２】
（付記１５）
前記コンピュータに、
連続領域内で割当済の仮想アドレスと連続する仮想アドレスに対して、前記連続領域内に含まれる物理アドレスが連続するように予約し、
仮想アドレスに物理アドレスを割り当てる際に、当該仮想アドレスが予約済の物理アドレスに対応する仮想アドレスである場合、当該仮想アドレスに対して当該予約済の物理アドレスを割り当てる、
処理を実行させることを特徴とする、付記１４記載のストレージ管理プログラム。
【０１７３】
（付記１６）
前記コンピュータに、
物理アドレスの割当率が高い連続領域における仮想アドレスへの予約済の未割当の物理アドレスについては、当該物理アドレスに対応する仮想アドレスに関する補完データを書き込み、当該物理アドレスを予約状態から割当済に変更する、
処理を実行させることを特徴とする、付記１４又は付記１５記載のストレージ管理プログラム。
【０１７４】
（付記１７）
データの格納先の仮想記憶領域の仮想アドレスに、物理記憶領域の物理アドレスを割り当て、
前記物理記憶領域に、複数の物理アドレスが連続する連続領域を設定し、設定した連続領域内の物理アドレスに最初に割り当てられた仮想アドレスに基づき、前記設定した連続領域に割り当てる仮想アドレスの割当範囲を設定し、
設定した割当範囲内の仮想アドレスに前記設定した連続領域の物理アドレスを割り当てる
ことを特徴とする、制御方法。
【０１７５】
（付記１８）
設定した割当範囲外の仮想アドレスに他の連続領域の物理アドレスを割り当てる、
ことを特徴とする、付記１７記載の制御方法。
【０１７６】
（付記１９）
仮想アドレスに物理アドレスを割り当てると、割り当てた仮想アドレスに基づき前記連続領域に割り当てる仮想アドレスの割当範囲を更新する、
ことを特徴とする、付記１８記載の制御方法。
【０１７７】
（付記２０）
連続領域に含まれる物理アドレス数に基づいて、データの格納先の仮想アドレスに割り当てる物理アドレスと、他の仮想アドレスのために予約する物理アドレスとを決定する、
ことを特徴とする、付記１７又は付記１８記載の制御方法。
【符号の説明】
【０１７８】
１，１−１〜１−ｍ    ＲＡＩＤ装置（ストレージ装置）
１０    物理ディスク（物理記憶装置）
２    管理サーバ（ストレージ管理装置）
２ａ    ＣＰＵ
２ｂ    メモリ
２ｃ    記憶部
２ｄ    インタフェース部
２ｅ    入出力部
２ｆ，２ｈ    記録媒体
２ｇ    読取部
２０    仮想ディスク（マスタＶＤＩＳＫ，運用ＶＤＩＳＫ，仮想記憶装置）
２０ａ    チャンク
２０ｂ    プール（連続領域）
２０ｃ    論理チャンク（連続領域）
２１ａ，２１０    Ｖ−Ｒマップ
２１ｂ    プール管理テーブル
２１ｃ    管理プログラム
２２，２２′    プール管理部
２３Ａ，２３Ｂ    チャンク割当部
２４    アクセス処理部
２５    チャンク更新部
２６ａ    論理チャンク管理テーブル
２６ｂ    ビットマップ
２７    論理チャンク管理部
２００    運用ＶＤＩＳＫ
３    ネットワーク
４，４−１〜４−ｎ    業務サーバ（上位装置）
４０，４２    ＯＳ
４１    ＶＭ
【図１】
2016012166.tif 000003
【図２】
2016012166.tif 000004
【図３】
2016012166.tif 000005
【図４】
2016012166.tif 000006
【図５】
2016012166.tif 000007
【図６】
2016012166.tif 000008
【図７】
2016012166.tif 000009
【図８】
2016012166.tif 000010
【図９】
2016012166.tif 000011
【図１０】
2016012166.tif 000012
【図１１】
2016012166.tif 000013
【図１２】
2016012166.tif 000014
【図１３】
2016012166.tif 000015
【図１４】
2016012166.tif 000016
【図１５】
2016012166.tif 000017
【図１６】
2016012166.tif 000018
【図１７】
2016012166.tif 000019
【図１８】
2016012166.tif 000020
【図１９】
2016012166.tif 000021
【図２０】
2016012166.tif 000022
【図２１】
2016012166.tif 000023
【図２２】
2016012166.tif 000024
【図２３】
2016012166.tif 000025
【図２４】
2016012166.tif 000026
【図２５】
2016012166.tif 000027
【図２６】
2016012166.tif 000028
【図２７】
2016012166.tif 000029
【図２８】
2016012166.tif 000030
【図２９】
2016012166.tif 000031
【図３０】
2016012166.tif 000032
【図３１】
2016012166.tif 000033