(57)【特許請求の範囲】
【請求項１】
複数の仮想領域で構成された仮想ボリュームを提供するストレージシステムであって、
不揮発性の複数の物理記憶デバイスと、
前記複数の物理記憶デバイスの記憶領域を基に形成された容量プールを構成する複数の実領域と、
どの実領域とどの仮想領域とが互いに対応しているかを表すマッピング情報を記憶する揮発性のメモリと、
計算機からライト要求を受信した場合に、前記マッピング情報を、前記ライト要求で指定されている仮想領域に一以上の未割当ての実領域から選択した実領域を割り当てたことを表す情報に更新し、割当てた実領域に、前記ライト要求に従うデータを書込む入出力制御部と、
前記揮発性のメモリに記憶されている前記マッピング情報の一部を、不揮発性の記憶領域に書込むバックアップ部と、
前記不揮発性の記憶領域に記憶されている、前記マッピング情報の一部を用いて、前記マッピング情報をリストアするリストア部と
を備え、
前記マッピング情報が、実領域毎に、実領域を表す複数の実領域情報要素と、その実領域の割当て先の仮想領域を表す複数の仮想領域情報要素とを含み、
前記バックアップ部が、前記マッピング情報の一部として、前記マッピング情報のリストアに必要な情報要素を、前記不揮発性の記憶領域に書込み、
前記マッピング情報の一部は、前記複数の実記憶領域情報要素の昇順に、実記憶領域情報要素に前記複数の仮想記憶領域情報要素のいずれかが割り当てられている場合には割り当てられている仮想記憶領域情報要素を、実記憶領域情報要素に前記複数の仮想記憶領域情報要素のうちいずれもが未割り当てである場合には割り当たっていない旨を示す情報を、格納する情報である、
ストレージシステム。
【請求項２】
前記リストア部が、以下の（１）乃至（４）の処理、
（１）各実領域に対応した、各実領域情報要素を記憶した各エントリ領域を、前記揮発性のメモリに作成する処理、
（２）前記不揮発性の記憶領域から前記複数の仮想領域情報要素を読出す処理、
（３）前記読出した複数の仮想領域情報要素における各仮想領域情報要素の順番を基に、各仮想領域情報要素に対応する各仮想領域にどの実領域が割り当てられているかを特定する処理、
（４）特定された実領域に対応したエントリ領域に、その実領域の割当て先の仮想領域を表す仮想領域情報要素を書込む処理、
を実行することにより、前記揮発性のメモリに、前記マッピング情報をリストアする、
請求項１記載のストレージシステム。
【請求項３】
前記容量プールが複数個存在し、
前記各容量プールには、前記複数の実領域とは異なる、予め確保されている記憶領域である確保領域があり、
前記確保領域が、前記不揮発性の記憶領域とされ、
前記マッピング情報が、各容量プールに対応したサブマッピング情報で構成され、
前記サブマッピング情報が、そのサブマッピング情報に対応する容量プールを構成する実領域毎に、実領域を表す実領域情報要素と、その実領域の割当て先の仮想領域を表す仮想領域情報要素とを含み、
前記バックアップ部が、前記サブマッピング情報を構成する複数の実領域情報要素と複数の仮想領域情報要素とのうち、前記複数の仮想領域情報要素を、前記マッピング情報の一部に含まれる情報として、そのサブマッピング情報に対応する容量プールにおける前記確保領域に書込む、
請求項１又は２記載のストレージシステム。
【請求項４】
前記リストア部が、容量プール毎に、以下の（１）乃至（４）の処理、
（１）容量プールを構成する各実領域に対応した、各実領域情報要素を記憶した各エントリ領域を、前記揮発性のメモリに作成する処理、
（２）前記確保領域から前記複数の仮想領域情報要素を読出す処理、
（３）前記読出した複数の仮想領域情報要素における各仮想領域情報要素の順番を基に、各仮想領域情報要素に対応する各仮想領域に、容量プールにおけるどの実領域が割り当てられているかを特定する処理、
（４）特定された実領域に対応したエントリ領域に、その実領域の割当て先の仮想領域を表す仮想領域情報要素を書込む処理、
を実行することにより、前記揮発性のメモリに、各容量プールについてのサブマッピング情報をリストアする、
請求項３記載のストレージシステム。
【請求項５】
前記容量プールは、前記複数の物理記憶デバイスの記憶領域を基に形成された複数の論理ボリュームのうちの一以上の論理ボリュームである一以上のプールボリュームで構成されており、
前記揮発性のメモリが、前記容量プールに関する情報であるプール情報と、複数の仮想ボリュームのうち容量プールに関連付けられた仮想ボリュームに関する情報である仮想ボリューム情報とを更に記憶し、
前記プール情報が、前記容量プールを構成するプールボリュームを同定するためのプールボリューム識別情報を含み、
前記仮想ボリューム情報が、前記容量プールに関連付けられた仮想ボリュームを同定するための仮想ボリューム識別情報を含み、
前記バックアップ部が、前記プール情報の一部として、前記プールボリューム識別情報を、前記不揮発性の記憶領域に書込み、前記仮想ボリューム情報の一部として、前記仮想ボリューム識別情報を、前記不揮発性の記憶領域に書込む、
請求項１乃至４のうちのいずれか１項に記載のストレージシステム。
【請求項６】
前記バックアップ部が、新たに容量プールが作成された場合に、その容量プールを構成するプールボリュームを同定するためのプールボリューム識別情報を、前記不揮発性の記憶領域に書込む、
請求項５記載のストレージシステム。
【請求項７】
前記バックアップ部が、前記容量プールに新たに仮想ボリュームが関連付けられた場合に、新たに関連付けられた仮想ボリュームの仮想ボリューム識別情報を、前記不揮発性の記憶領域に追記する、
請求項５又は６記載のストレージシステム。
【請求項８】
前記バックアップ部が、前記容量プールに対する仮想ボリュームの関連付けが解除された場合に、前記不揮発性の記憶領域に記憶されている、関連付けが解除された仮想ボリュームの仮想ボリューム識別情報と、その仮想ボリュームを構成する仮想領域を表す仮想領域情報要素とを、無効にする、
請求項５乃至７のうちのいずれか１項に記載のストレージシステム。
【請求項９】
前記バックアップ部が、前記容量プールに関するステータスが変わった場合に、前記プール情報の一部として、変更後のステータスを、前記不揮発性の記憶領域に書込む、
請求項５乃至８のうちのいずれか１項に記載のストレージシステム。
【請求項１０】
前記リストア部が、以下の（１）乃至（６）の処理、
（１）前記プールボリューム識別情報を前記不揮発性の記憶領域から読出し、前記プールボリューム識別情報を基に、プールボリュームに対応した記憶領域であるプールディレクトリと、そのプールボリュームを構成する各実領域に対応した、各実領域情報要素を記憶した各エントリ領域とを、前記揮発性のメモリに作成する処理、
（２）前記仮想ボリューム識別情報を前記不揮発性の記憶領域から読出し、前記仮想ボリューム識別情報を基に、仮想ボリュームに対応した記憶領域である仮想ボリュームディレクトリを、前記揮発性のメモリに作成する処理、
（３）前記不揮発性の記憶領域から前記複数の仮想領域情報要素を読出す処理、
（４）前記読出した複数の仮想領域情報要素における各仮想領域情報要素の順番を基に、各仮想領域情報要素に対応する各仮想領域に、容量プールにおけるどの実領域が割り当てられているかを特定する処理、
（５）特定された実領域に対応したエントリ領域に、その実領域の割当て先の仮想領域を表す仮想領域情報要素を書込む処理、
（６）特定された実領域に対応したエントリ領域のアドレスを、前記仮想ボリュームディレクトリにおける、その実領域の割当て先の仮想領域を表す仮想領域情報要素から特定されるサブディレクトリに書込む処理、
を実行することにより、前記揮発性のメモリに、前記マッピング情報をリストアする、
請求項５乃至９のうちのいずれか１項に記載のストレージシステム。
【請求項１１】
実領域が割り当てられていない仮想領域に実領域が割り当てられることにより、割り当てられた実領域を表す実領域情報要素に割当て先の仮想領域を表す仮想領域情報要素が前記マッピング情報に書き込まれた場合に、前記バックアップ部が、書き込まれた仮想領域情報要素を、前記不揮発性の記憶領域に書込む、
請求項１乃至１０のうちのいずれか１項に記載のストレージシステム。
【請求項１２】
前記複数の物理記憶デバイスの各々に書き込まれるデータを一時的に記憶するキャッシュ領域、
を更に備え、
前記不揮発性の記憶領域は、前記複数の物理記憶デバイスのうちの一以上の物理記憶デバイスの記憶領域であり、
前記バックアップ部が、前記マッピング情報に書き込まれた仮想領域情報要素を含んだ、情報転送の単位サイズ分の情報要素群を、前記キャッシュ領域に書込み、前記情報要素群を、前記キャッシュ領域から、前記一以上の物理記憶デバイスの記憶領域である前記不揮発性の記憶領域に書込む、
請求項１乃至１１のうちのいずれか１項に記載のストレージシステム。
【請求項１３】
マイクロプロセッサを更に備え、
前記マイクロプロセッサに実行されるコンピュータプログラムとして、前記バックアップ部を含んだコンピュータプログラムがインストールされたならば、前記マイクロプロセッサが、インストールされたコンピュータプログラムを実行することにより、前記揮発性のメモリに記憶されている各仮想領域情報要素を、前記不揮発性の記憶領域に書込む、
請求項１乃至１２のうちのいずれか１項に記載のストレージシステム。
【請求項１４】
前記リストア部が、一次電源から前記揮発性のメモリに電力が供給されていれば、ユーザからの指示を受けること無しにリストアを実行する、
請求項１乃至１３のうちのいずれか１項に記載のストレージシステム。
【請求項１５】
前記リストア部が、一次電源から前記揮発性のメモリに電力が供給されていなければ、ユーザからの指示を受けた場合に、揮発リストアを実行する、
請求項１乃至１４のうちのいずれか１項に記載のストレージシステム。
【請求項１６】
前記バックアップ部が、前記バックアップ情報の一部を、前記不揮発性の記憶領域の他に、不揮発性の記憶デバイスを備えた情報処理装置に転送し、
前記リストア部が、前記情報処理装置から前記マッピング情報の一部を読出すことに成功した場合に、そのマッピング情報の一部を基に前記マッピング情報をリストアし、前記情報処理装置から前記マッピング情報の一部を読出すことに失敗した場合に、前記不揮発性の記憶領域から前記マッピング情報の一部を読出す、
請求項１乃至１５のうちのいずれか１項に記載のストレージシステム。
【請求項１７】
複数の仮想領域で構成された仮想ボリュームを提供する仮想化システムであって、
複数の物理記憶デバイスの記憶領域を基に形成された容量プールを構成する複数の実領域のうちのどの実領域とどの仮想領域とが互いに対応しているかを表すマッピング情報を記憶する揮発性のメモリと、
計算機からライト要求を受信した場合に、前記マッピング情報を、前記ライト要求で指定されている仮想領域に一以上の未割当ての実領域から選択した実領域を割り当てたことを表す情報に更新し、割当てた実領域に、前記ライト要求に従うデータを書込む入出力制御部と、
前記揮発性のメモリに記憶されている前記マッピング情報の一部を、不揮発性の記憶領域に書込むバックアップ部と、
前記不揮発性の記憶領域に記憶されている、前記マッピング情報の一部を用いて、前記マッピング情報をリストアするリストア部と
を備え、
前記マッピング情報が、実領域毎に、実領域を表す複数の実領域情報要素と、その実領域の割当て先の仮想領域を表す複数の仮想領域情報要素とを含み、
前記バックアップ部が、前記マッピング情報の一部として、前記マッピング情報のリストアに必要な情報要素を、前記不揮発性の記憶領域に書込み、
前記マッピング情報の一部は、前記複数の実記憶領域情報要素の昇順に、実記憶領域情報要素に前記複数の仮想記憶領域情報要素のいずれかが割り当てられている場合には割り当てられている仮想記憶領域情報要素を、実記憶領域情報要素に前記複数の仮想記憶領域情報要素のいずれもが未割り当てである場合には割り当たっていない旨を示す情報を、格納する情報である、
仮想化システム。
【請求項１８】
複数の仮想領域で構成された仮想ボリュームを提供する機能と、複数の物理記憶デバイスの記憶領域を基に形成された容量プールを構成する複数の実領域のうちのどの実領域とどの仮想領域が互いに対応しているかを表すマッピング情報を記憶する揮発性のメモリとを備えるシステム、で実現される方法であって、
計算機からライト要求を受信した場合に、前記マッピング情報を、前記ライト要求で指定されている仮想領域に一以上の未割当ての実領域から選択した実領域を割り当てたことを表す情報に更新し、割当てた実領域に、前記ライト要求に従うデータを書込む第１のステップと、
前記揮発性のメモリに記憶されている前記マッピング情報の一部を、不揮発性の記憶領域に書込む第２のステップと、
前記不揮発性の記憶領域に記憶されている、前記マッピング情報の一部を用いて、前記マッピング情報をリストアする第３のステップと
を有し、
前記マッピング情報が、実領域毎に、実領域を表す複数の実領域情報要素と、その実領域の割当て先の仮想領域を表す複数の仮想領域情報要素とを含み、
前記第２のステップでは、前記マッピング情報の一部として、前記マッピング情報のリストアに必要な情報要素を、前記不揮発性の記憶領域に書込み、
前記マッピング情報の一部は、前記複数の実記憶領域情報要素の昇順に、実記憶領域情報要素に前記複数の仮想記憶領域情報要素のいずれかが割り当てられている場合には割り当てられている仮想記憶領域情報要素を、実記憶領域情報要素に前記複数の仮想記憶領域情報要素のいずれもが未割り当てである場合には割り当たっていない旨を示す情報を、格納する情報である、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に提供された仮想ボリュームにおける仮想領域に実領域を動的に割り当てる技術に関する。
【背景技術】
【０００２】
論理ボリュームの容量拡張に関する技術として、例えば、特許文献１乃至３に開示の技術が知られている。
【０００３】
【特許文献１】特開２００３−１５９１５号公報
【特許文献２】特開２００５−２３４８２０号公報
【特許文献３】特開２００６−３５０４１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
論理ボリュームの容量拡張に関する技術として、動的に容量を拡張する技術（例えばThin Provisioningと呼ばれる技術）がある。この種の技術は、例えば以下の通りである。
【０００５】
仮想的な論理ボリュームである仮想ボリュームが計算機に提供される。仮想ボリュームは、複数の仮想的な記憶領域（以下、「仮想領域」と言う）で構成されている。
【０００６】
不揮発性の複数の物理的な記憶デバイス（例えばハードディスクドライブ或いはフラッシュメモリドライブ）の記憶空間を基に複数の論理ボリュームが形成されている。複数の論理ボリュームのうちの一以上の論理ボリュームの集合が、容量プールとされる。容量プールは、複数の実領域を有する。以下、容量プールを構成する論理ボリュームを、「プールボリューム」と言う。実領域は、プールボリュームにおける各記憶領域である。
【０００７】
ストレージシステムが、計算機から、仮想ボリュームの或る仮想領域を指定したライト要求を受信した場合、容量プールにおける複数の実領域から未割当ての実領域を選択し、選択した実領域を、指定された仮想領域に割り当てる。そして、ストレージシステムは、そのライト要求に従うライト対象のデータを、割り当てた実領域に書込む。
【０００８】
以上の技術では、例えば、どの実領域とどの仮想領域とが互いに対応しているかを表すマッピング情報が、ストレージシステム内の揮発性のメモリに記憶される。マッピング情報が、ライト要求で指定されている仮想領域に上記選択した実領域を割り当てたことを表す情報に更新されることで、仮想領域に実領域が割り当てられる。
【０００９】
このマッピング情報が、揮発性のメモリから、電源遮断等の理由により揮発してしまうと、どの実領域がどの仮想領域に割り当てられていたかがわからなくなってしまう。そのため、例えば、ストレージシステムは、計算機から、仮想ボリュームにおける或る仮想領域を指定されたリード要求を受けても、正しいデータを計算機に提供することができなくなってしまう。
【００１０】
従って、本発明の目的は、揮発したマッピング情報をリストアできるようにすることにある。
【００１１】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１２】
揮発性のメモリに記憶されているマッピング情報の全部又は一部を、不揮発性の記憶領域に書込む。不揮発性の記憶領域への書込み対象が、マッピング情報の一部である場合、マッピング情報の一部として、マッピング情報を構成する複数の情報要素のうち、マッピング情報のリストアに必要な情報要素を、不揮発性の記憶領域に書込む。不揮発性の記憶領域は、論理ボリュームの基になっている不揮発性の物理的な記憶デバイスに設けられても良いし、別の不揮発性の記憶デバイスに設けられても良い。
【発明を実施するための最良の形態】
【００１３】
実施形態１では、複数の仮想領域で構成された仮想ボリュームを提供するストレージシステムが、不揮発性の複数の物理記憶デバイスと、前記複数の物理記憶デバイスの記憶領域を基に形成された容量プールを構成する複数の実領域と、どの実領域とどの仮想領域とが互いに対応しているかを表すマッピング情報を記憶する揮発性のメモリと、入出力制御部と、バックアップ部とを備える。入出力制御部は、計算機からライト要求を受信した場合に、前記マッピング情報を、前記ライト要求で指定されている仮想領域に一以上の未割当ての実領域から選択した実領域を割り当てたことを表す情報に更新し、割当てた実領域に、前記ライト要求に従うデータを書込む。バックアップ部は、前記揮発性のメモリに記憶されている前記マッピング情報の全部又は一部を、不揮発性の記憶領域に書込む。
【００１４】
実施形態２では、実施形態１記載において、リストア部が更に備えられる。リストア部は、前記不揮発性の記憶領域に記憶されている、前記マッピング情報の一部を用いて、前記マッピング情報をリストアする。前記バックアップ部が、前記マッピング情報の一部として、前記マッピング情報のリストアに必要な情報要素を、前記不揮発性の記憶領域に書込む。
【００１５】
実施形態３では、実施形態２において、前記マッピング情報が、実領域毎に、実領域を表す実領域情報要素と、その実領域の割当て先の仮想領域を表す仮想領域情報要素とを含む。前記バックアップ部が、前記複数の実領域情報要素と複数の仮想領域情報要素とのうち、前記複数の仮想領域情報要素を、前記不揮発性の記憶領域に書込む。
【００１６】
実施形態４では、実施形態３において、前記リストア部が、以下の（１）乃至（４）の処理、
（１）各実領域に対応した、各実領域情報要素を記憶した各エントリ領域を、前記揮発性のメモリに作成する処理、
（２）前記不揮発性の記憶領域から前記複数の仮想領域情報要素を読出す処理、
（３）前記読出した複数の仮想領域情報要素における各仮想領域情報要素の順番を基に、各仮想領域情報要素に対応する各仮想領域にどの実領域が割り当てられているかを特定する処理、
（４）特定された実領域に対応したエントリ領域に、その実領域の割当て先の仮想領域を表す仮想領域情報要素を書込む処理、
を実行することにより、前記揮発性のメモリに、前記マッピング情報をリストアする。
【００１７】
実施形態５では、実施形態３において、前記容量プールが複数個存在する。前記各容量プールには、前記複数の実領域とは異なる、予め確保されている記憶領域である確保領域がある。前記確保領域が、前記不揮発性の記憶領域とされる。前記マッピング情報が、各容量プールに対応したサブマッピング情報で構成される。前記サブマッピング情報が、そのサブマッピング情報に対応する容量プールを構成する実領域毎に、実領域を表す実領域情報要素と、その実領域の割当て先の仮想領域を表す仮想領域情報要素とを含む。前記バックアップ部が、前記サブマッピング情報を構成する複数の実領域情報要素と複数の仮想領域情報要素とのうち、前記複数の仮想領域情報要素を、そのサブマッピング情報に対応する容量プールにおける前記確保領域に書込む。
【００１８】
実施形態６では、実施形態５において、前記リストア部が、容量プール毎に、以下の（１）乃至（４）の処理、
（１）容量プールを構成する各実領域に対応した、各実領域情報要素を記憶した各エントリ領域を、前記揮発性のメモリに作成する処理、
（２）前記確保領域から前記複数の仮想領域情報要素を読出す処理、
（３）前記読出した複数の仮想領域情報要素における各仮想領域情報要素の順番を基に、各仮想領域情報要素に対応する各仮想領域に、容量プールにおけるどの実領域が割り当てられているかを特定する処理、
（４）特定された実領域に対応したエントリ領域に、その実領域の割当て先の仮想領域を表す仮想領域情報要素を書込む処理、
を実行することにより、前記揮発性のメモリに、各容量プールについてのサブマッピング情報をリストアする。
【００１９】
実施形態７では、実施形態３乃至６のうちのいずれかにおいて、前記容量プールは、前記複数の物理記憶デバイスの記憶領域を基に形成された複数の論理ボリュームのうちの一以上の論理ボリュームである一以上のプールボリュームで構成されている。前記揮発性のメモリが、前記容量プールに関する情報であるプール情報と、複数の仮想ボリュームのうち容量プールに関連付けられた仮想ボリュームに関する情報である仮想ボリューム情報とを更に記憶する。前記プール情報が、前記容量プールを構成するプールボリュームを同定するためのプールボリューム識別情報を含む。前記仮想ボリューム情報が、前記容量プールに関連付けられた仮想ボリュームを同定するための仮想ボリューム識別情報を含む。前記バックアップ部が、前記プール情報の一部として、前記プールボリューム識別情報を、前記不揮発性の記憶領域に書込み、前記仮想ボリューム情報の一部として、前記仮想ボリューム識別情報を、前記不揮発性の記憶領域に書込む。
【００２０】
実施形態８では、実施形態７において、前記バックアップ部が、新たに容量プールが作成された場合に、その容量プールを構成するプールボリュームを同定するためのプールボリューム識別情報を、前記不揮発性の記憶領域に書込む。
【００２１】
実施形態９では、実施形態７又は８において、前記バックアップ部が、前記容量プールに新たに仮想ボリュームが関連付けられた場合に、新たに関連付けられた仮想ボリュームの仮想ボリューム識別情報を、前記不揮発性の記憶領域に追記する。
【００２２】
実施形態１０では、実施形態７乃至９のうちのいずれかにおいて、前記バックアップ部が、前記容量プールに対する仮想ボリュームの関連付けが解除された場合に、前記不揮発性の記憶領域に記憶されている、関連付けが解除された仮想ボリュームの仮想ボリューム識別情報と、その仮想ボリュームを構成する仮想領域を表す仮想領域情報要素とを、無効にする。
【００２３】
実施形態１１では、実施形態７乃至１０のうちのいずれかにおいて、前記バックアップ部が、前記容量プールに関するステータスが変わった場合に、前記プール情報の一部として、変更後のステータスを、前記不揮発性の記憶領域に書込む。
【００２４】
実施形態１２では、実施形態７乃至１１のうちのいずれかにおいて、前記リストア部が、以下の（１）乃至（６）の処理、
（１）前記プールボリューム識別情報を前記不揮発性の記憶領域から読出し、前記プールボリューム識別情報を基に、プールボリュームに対応した記憶領域であるプールディレクトリと、そのプールボリュームを構成する各実領域に対応した、各実領域情報要素を記憶した各エントリ領域とを、前記揮発性のメモリに作成する処理、
（２）前記仮想ボリューム識別情報を前記不揮発性の記憶領域から読出し、前記仮想ボリューム識別情報を基に、仮想ボリュームに対応した記憶領域である仮想ボリュームディレクトリを、前記揮発性のメモリに作成する処理、
（３）前記不揮発性の記憶領域から前記複数の仮想領域情報要素を読出す処理、
（４）前記読出した複数の仮想領域情報要素における各仮想領域情報要素の順番を基に、各仮想領域情報要素に対応する各仮想領域に、容量プールにおけるどの実領域が割り当てられているかを特定する処理、
（５）特定された実領域に対応したエントリ領域に、その実領域の割当て先の仮想領域を表す仮想領域情報要素を書込む処理、
（６）特定された実領域に対応したエントリ領域のアドレスを、前記仮想ボリュームディレクトリにおける、その実領域の割当て先の仮想領域を表す仮想領域情報要素から特定されるサブディレクトリに書込む処理、
を実行することにより、前記揮発性のメモリに、前記マッピング情報をリストアする。
【００２５】
実施形態１３では、実施形態３乃至１２のうちのいずれかにおいて、実領域が割り当てられていない仮想領域に実領域が割り当てられることにより、割り当てられた実領域を表す実領域情報要素に割当て先の仮想領域を表す仮想領域情報要素が前記マッピング情報に書き込まれた場合に、前記バックアップ部が、書き込まれた仮想領域情報要素を、前記不揮発性の記憶領域に書込む。
【００２６】
実施形態１４では、実施形態３乃至１３のうちのいずれかにおいて、前記複数の物理記憶デバイスの各々に書き込まれるデータを一時的に記憶するキャッシュ領域が更に備えられる。前記不揮発性の記憶領域は、前記複数の物理記憶デバイスのうちの一以上の物理記憶デバイスの記憶領域である。前記バックアップ部が、前記マッピング情報に書き込まれた仮想領域情報要素を含んだ、情報転送の単位サイズ分の情報要素群を、前記キャッシュ領域に書込み、前記情報要素群を、前記キャッシュ領域から、前記一以上の物理記憶デバイスの記憶領域である前記不揮発性の記憶領域に書込む。
【００２７】
実施形態１５では、実施形態３乃至１４のうちのいずれかにおいて、マイクロプロセッサが更に備えられる。前記マイクロプロセッサに実行されるコンピュータプログラムとして、前記バックアップ部を含んだコンピュータプログラムがインストールされたならば、前記マイクロプロセッサが、インストールされたコンピュータプログラムを実行することにより、前記揮発性のメモリに記憶されている各仮想領域情報要素を、前記不揮発性の記憶領域に書込む。
【００２８】
実施形態１６では、実施形態２乃至１５のうちのいずれかにおいて、前記リストア部が、一次電源から前記揮発性のメモリに電力が供給されていれば、ユーザからの指示を受けること無しにリストアを実行する。
【００２９】
実施形態１７では、実施形態２乃至１６のうちのいずれかにおいて、前記リストア部が、一次電源から前記揮発性のメモリに電力が供給されていなければ、ユーザからの指示を受けた場合に、リストアを実行する。
【００３０】
実施形態１８では、実施形態２乃至１７のうちのいずれかにおいて、前記バックアップ部が、前記バックアップ情報の一部を、前記不揮発性の記憶領域の他に、不揮発性の記憶デバイスを備えた情報処理装置に転送する。前記リストア部が、前記情報処理装置から前記マッピング情報の一部を読出すことに成功した場合に、そのマッピング情報の一部を基に前記マッピング情報をリストアする。前記リストア部は、前記情報処理装置から前記マッピング情報の一部を読出すことに失敗した場合に、前記不揮発性の記憶領域から前記マッピング情報の一部を読出す。
【００３１】
実施形態１９では、仮想ボリュームを提供する仮想化システムが、前記揮発性のメモリと、前記入出力制御部と、前記バックアップ制御部とを備える。前記揮発性のメモリ、前記入出力制御部及び前記バックアップ制御部のうちの少なくとも一つは、実施形態２乃至１８のうちのいずれかにおける要素とすることができる。また、仮想化システムは、実施形態２乃至１８のうちのいずれかにおけるリストア部を備えることもできる。また、仮想化システムは、前記キャッシュ領域を備えることもできる。
【００３２】
実施形態２０は、複数の仮想領域で構成された仮想ボリュームを提供する機能と、前記マッピング情報を記憶する揮発性のメモリとを備えるシステム、で実現される方法である。その方法では、計算機からライト要求を受信した場合に、前記マッピング情報を、前記ライト要求で指定されている仮想領域に一以上の未割当ての実領域から選択した実領域を割り当てたことを表す情報に更新し、割当てた実領域に、前記ライト要求に従うデータを書込み、前記揮発性のメモリに記憶されている前記マッピング情報の全部又は一部を、不揮発性の記憶領域に書込む。不揮発性の記憶領域に記憶されているマッピング情報の全部又は一部を読出し、読み出した情報を基に、前記マッピング情報を前記揮発性のメモリにリストアすることができる。
【００３３】
上述した各部（入出力制御部、バックアップ部、リストア部）は、手段と呼ばれても良く、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００３４】
以下、図面を参照して、本発明の一実施例を詳細に説明する。
【００３５】
図１は、本発明の一実施例に係る計算機システムの構成を示す。
【００３６】
通信ネットワーク（例えばＳＡＮ）１０３に、一又は複数のホスト計算機１０１と、ストレージシステム１０５が接続されている。
【００３７】
ホスト計算機１０１は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。
【００３８】
ストレージシステム１０５は、例えば、アレイ状に配列された多数の物理的な記憶デバイス１１９を備えるＲＡＩＤシステムとすることができる。但し、これに限らず、ストレージシステム１０５を、高機能化されたインテリジェント型のファイバチャネルスイッチとして構成することもできる。ストレージシステム１０５は、コントローラ部１０７と、ストレージ部１１８とに大別することができる。
【００３９】
コントローラ部１０７は、例えば、チャネルアダプタ（ＣＨＡ）１０９と、ディスクアダプタ（ＤＫＡ）１１７と、キャッシュメモリ１１３と、共有メモリ１１１と、接続部１１５とを備えている。
【００４０】
ＣＨＡ１０９は、ホスト計算機１０１或いは他のストレージシステムとの間のデータ通信を行うインタフェース装置である。ＣＨＡ１０９は、例えば、図１２（Ｂ）に示すように、マイクロプロセッサ５１１、メモリ（以下、「ローカルメモリ」と言う）５１１などを備えたデバイス（例えば回路基盤）として構成することができる。例えば、ＣＨＡ１０９は、ホスト計算機１０１からライト要求を受信し、受信したライト要求に従うデータを、キャッシュメモリ１１３に書込み、ＤＫＡ１１７にそのデータの書込みを命じることができる。また、例えば、ＣＨＡ１０９は、ホスト計算機１０１からリード要求を受信し、受信したリード要求に従うデータの読出しをＤＫＡ１１７に命令し、その命令に従うデータをキャッシュメモリ１１３から読出し、ホスト計算機１０１に送信することができる。
【００４１】
なお、ＣＨＡ１０９のローカルメモリ５０１には、図１２（Ｂ）に示すように、マイクロプロセッサ５１１で実行されるコンピュータプログラム（以下、「制御プログラム」と言う）５０５が記憶されている。その制御プログラム５０５は、入出力制御部５１１と、バックアップ部５１３と、リストア部５１５とを有する。入出力制御部５１１は、ホスト計算機１０１からのＩ／Ｏ要求（ライト要求／リード要求）の処理を実行するモジュールである。バックアップ部５１３は、後述する対応管理情報の一部をバックアップするバックアップ処理を実行するモジュールである。リストア部５１５は、バックアップされた、対応管理情報の一部を基に、対応管理情報をリストアするリストア処理を実行するモジュールである。本実施例では、後述するように、旧型の制御プログラム５０３（図１２（Ａ）参照）を新型の制御プログラム５０５にアップデートしたことに応答して、バックアップ処理が実行される。入出力制御部５１１、バックアップ部５１３及びリストア部５１５は、各処理を行う処理部として集積回路化するなどしてハードウェアで実現することもできる。以下の説明において、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するマイクロプロセッサによって処理が行われるものとする。なお、各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行う。
【００４２】
ＤＫＡ１１７は、物理的な記憶デバイス１１９との間のデータ通信を行うインタフェース装置である。ＤＫＡ１１７も、マイクロプロセッサやメモリ（ローカルメモリ）などを備えたデバイス（例えば回路基盤）として構成することができる。例えば、ＤＫＡ１１７は、ＣＨＡ１０９からの書込みの命令に応答して、キャッシュメモリ１１３に記憶されているデータを、物理的な記憶デバイス１１９に書込むことができる。また、例えば、ＤＫＡ１１７は、ＣＨＡ１０９からの読出しの命令に応答して、その命令に従うデータを物理的な記憶デバイス１１９から読出し、キャッシュメモリ１１３に書込むことができる。
【００４３】
キャッシュメモリ１１３は、揮発性のメモリであり、ホスト計算機１０から受信したデータや、物理的な記憶デバイス１１９から読出されたデータを、一時的に記憶する。
【００４４】
共有メモリ１１１は、揮発性のメモリであり、ストレージシステム１０５の制御のためにＣＨＡ１０９或いはＤＫＡ１１７に参照される情報（以下、「管理情報」と言う）が格納される。管理情報の種類については後に詳述する。
【００４５】
接続部１１５は、ＣＨＡ１０９、ＤＫＡ１１７、キャッシュメモリ２４、及び共有メモリ２５を相互に接続させる。接続部２６は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
【００４６】
ストレージ部１１８には、複数の物理的な記憶デバイス１１９が含まれている。物理的な記憶デバイス１１９としては、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、磁気テープドライブ、半導体メモリドライブ、光ディスクドライブ等のようなデバイスを用いることができる。二以上の物理的な記憶デバイス１１９により、所定のＲＡＩＤレベルのＲＡＩＤグループを構成することができる。ＲＡＩＤグループを構成する二以上の物理的な記憶デバイス１１９の記憶空間を用いて、実体のある論理ボリューム（以下、「実ＶＯＬ」と言う）を形成することができる。一又は複数の実ＶＯＬの集合により、仮想ボリューム（以下、「仮想ＶＯＬ」と言う）に割り当てられる複数の実領域を備えた容量プールを構成することができる。容量プールを構成する実ＶＯＬを、以下、「プールＶＯＬ」と言う。プールＶＯＬにおける一記憶領域（つまり実領域）が、ホスト計算機１０１に提供される仮想ＶＯＬに割り当てられる。
【００４７】
ストレージシステム１０５には、ストレージシステム１０５の保守及び／又は管理を行うための計算機としてサービスプロセッサ（以下、「ＳＶＰ」と略記する）１１４が更に備えられている。ＳＶＰ１１４は、例えば、ＣＰＵ１１２や不揮発性の記憶デバイス（例えばハードディスクドライブ）１１６などを備えている。ＣＰＵ１１２は、ストレージシステム１０５から受信した情報を、不揮発性の記憶デバイス１１６に書込む。
【００４８】
以上が、本実施例に係る計算機システムの構成に関する説明である。なお、この構成は、一例であり、ストレージシステムの構成を図１の構成に限定するものではなく、他の構成が採用されてもよい。例えば、共有メモリ１１１とキャッシュメモリ１１３は、別々のメモリでなく、一つの揮発性のメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、コントローラ部１０７は、ＣＰＵ、揮発性のメモリ及び複数の通信ポートを備えた回路基盤（すなわち、図１のコントローラ部よりもシンプルな構成）であっても良い。この場合、そのＣＰＵが、複数のＣＨＡやＤＫＡによって行われる処理を実行することができる。
【００４９】
仮想ＶＯＬに対する実領域の割当て方法としては、図２を参照して説明する方法を採用することができる。
【００５０】
ＣＨＡ１０９が、ホスト計算機１０１から、仮想ＶＯＬ１４１の仮想領域１４９を指定したライト要求を受信した場合、入出力制御部５１１は、容量プール１４３に属している複数のプールＶＯＬ１４５から、未割当ての実領域１４７を選択し、選択した実領域１４７を、上記指定されている仮想領域１４９に割り当てる。そして、入出力制御部５１１は、割り当てた実領域１４７に、上記受信したライト要求に従うデータを書込む。以下の説明では、便宜上、割当て単位となる領域を「ページ」と称する。具体的には、割当て元である実領域（プールＶＯＬの一記憶領域）を、「実ページ」と称し、割当て先である仮想領域（仮想ＶＯＬの一記憶領域）を、「仮想ページ」と称する。実ページと仮想ページはそれぞれ同じサイズであり、一つの仮想ページに対して一つの実ページが割り当てられる。
【００５１】
どの実ページがどの仮想ページに割り当てられているかを表すマッピング情報が、入出力制御部５１１によって、或る実ページを或る仮想ページに割り当てられたことを表す情報に更新されることにより、或る実ページが或る仮想ページに割り当てられたことになる。マッピング情報は、共有メモリ１１１に記憶される（管理情報を構成する情報要素の一つである）。これにより、複数のＣＨＡ１０９のいずれも、実ページの仮想ページに対する割り当て、つまり、仮想ＶＯＬの実際の記憶容量の動的な拡張を行うことができる。
【００５２】
図３は、共有メモリ１１１に記憶される管理情報の一つである対応管理情報を示す。
【００５３】
対応管理情報１３３は、容量プール１４３毎に存在する。対応管理情報１３３は、その対応管理情報１３３に対応する容量プール１４３（以下、対応容量プール１４３）における実ページと、対応容量プール１４３に関連付けられている仮想ＶＯＬにおける仮想ページとの対応などを管理するための情報である。対応管理情報１３３には、例えば、プール情報１６１、仮想ＶＯＬ情報１６３、マッピング情報１６５及び関連付けテーブル１６７が含まれる。
【００５４】
プール情報１６１は、対応容量プール１４３に関する情報である。具体的には、例えば、プール情報１６１には、プール容量（対応容量プール１４３の記憶容量）、プール使用率（対応容量プール１４３における全ての実ページのうち幾つの実ページが仮想ＶＯＬに割り当て済みとなっているかを表す割合）、プールＶＯＬ数（対応容量プール１４３を構成するプールＶＯＬの数）などが含まれている。
【００５５】
仮想ＶＯＬ情報１６３は、対応容量プール１４３に関連付けられた仮想ＶＯＬに関する情報である。具体的には、例えば、仮想ＶＯＬ情報１６３には、仮想ＶＯＬ数（対応容量プール１４３に関連付けられている仮想ＶＯＬの数）などが含まれている。また、仮想ＶＯＬ情報１６３には、例えば、対応容量プール１４３に関連付けられている仮想ＶＯＬ毎に対応した情報要素として、仮想ＶＯＬ容量（仮想ＶＯＬの記憶容量）や、仮想ＶＯＬ使用率（仮想ＶＯＬを構成する全ての仮想ページのうち幾つの仮想ページに実ページが割り当てられているかを表す割合）などが含まれている。
【００５６】
マッピング情報１６５は、対応容量プール１４３における実ページと仮想ページとの対応関係を表す情報である。マッピング情報１６５の構成については、図９を参照して後に説明する。
【００５７】
関連付けテーブル１６７は、仮想ＶＯＬ１４１及びプールＶＯＬ１４５をマッピング情報１６５と関連付けるためのテーブルである。関連付けテーブル１６７の構成については、図１０を参照して後に説明する。
【００５８】
本実施例では、バックアップ部５１３により、上述した対応管理情報１３３の一部が、不揮発性の記憶領域にバックアップされる。そして、リストア部５１５により、不揮発性の記憶領域に記憶されている、対応管理情報１３３の一部が読み出され、その対応管理情報１３３の一部を用いて、共有メモリ１１１に、対応管理情報１３３がリストアされる。
【００５９】
図４は、バックアップ処理の概要を示す。ストレージシステム１０５には、複数の容量プール１４３を用意することが可能であるが、図４（及び後述の図５）では、説明を分かり易くするため、一つの容量プール１４３を示している。
【００６０】
容量プール１４３には、予め、所定サイズの記憶領域１７１が確保されている。以下、その予め確保されている記憶領域を、「確保領域」と言う。このため、容量プール１４３の記憶領域は、確保領域１７１と、仮想ＶＯＬに割り当てられ得る複数の実ページで構成された実ページ群１７３とに大別することができる。容量プール１４３には、確保領域１７１及び実ページ群１７３に加えて、他の用途に使用するための記憶領域が設けられていても良い。
【００６１】
確保領域１７１が、その確保領域１７１を有する容量プール１４３に対応する対応管理情報１３３の一部のバックアップ先の不揮発性の記憶領域となる。確保領域１７１は、例えば、容量プール１４３を構成する複数のプールＶＯＬのうちの先頭のプールＶＯＬ（ＶＯＬ＃が最も若いＶＯＬ）に設けられている。
【００６２】
バックアップ部５１３は、共有メモリ１１１に記憶されている対応管理情報１３３の全てをバックアップするのではなく、対応管理情報１３３の一部を、対応容量プール１４３における確保領域１７１にバックアップする。対応管理情報１３３の一部は、対応管理情報１３３から、対応管理情報１３３のリストアに必要不可欠ではない情報要素を間引いた、対応管理情報１３３における残りの情報要素で構成された情報である。以下、その情報を、「間引き対応管理情報」と言う。
【００６３】
バックアップ部５１３は、共有メモリ１１１に記憶されている対応管理情報１３３から、リストアに必要不可欠な情報要素を選別し、選別された各情報要素をローカルメモリ５０１に書込む。それにより、ローカルメモリ５０１上に、間引き対応管理情報１３５が生成される。
【００６４】
バックアップ部５１３は、ローカルメモリ５０１上に記憶されている間引き対応管理情報１３５を、ＳＶＰ１１４に転送する。ＳＶＰ１１４のＣＰＵ１１２は、バックアップ部５１３から受信した間引き対応管理情報１３５を、不揮発性の記憶デバイス１１６に書込む。
【００６５】
また、バックアップ部５１３は、ローカルメモリ５０１上に記憶されている間引き対応管理情報１３５を、キャッシュメモリ１３３に転送する。それにより、キャッシュメモリ１３３に、間引き対応管理情報１３５が記憶される。入出力制御部５１１によって実行されるデステージジョブによって、キャッシュメモリ１３３に記憶されている間引き対応管理情報１３５が、対応容量プール１４３における確保領域１７１に書き込まれる。
【００６６】
リストア部５１５は、ＳＶＰ１１４と確保領域１７１のいずれからも、間引き対応管理情報１３５を読み出すことができる。本実施例では、確保領域１７１からよりもＳＶＰ１１４からの方が高速に間引き対応管理情報１３５を読み出すことができる。そのため、リストア部５１５は、原則、ＳＶＰ１１４から間引き対応管理情報１３５を読み出し、その間引き対応管理情報１３５を用いて、対応管理情報１３３をリストアする。しかし、ＳＶＰ１１４が故障するなどの原因により、ＳＶＰ１１４からの間引き対応管理情報１３５の読出しに失敗した場合には、リストア部５１５は、対応容量プール１４３における確保領域１７１から、間引き対応管理情報１３５を読み出す。
【００６７】
図５は、リストア処理の概要を示す。
【００６８】
前述したように、リストア部５１５は、ＳＶＰ１１４からの間引き対応管理情報１３５の読出しに失敗した場合に、対応容量プール１４３における確保領域１７１から、間引き対応管理情報１３５を読み出す（具体的には、リストア部５１５は、ＤＫＡ１１７に、確保領域１７１からキャッシュメモリ１３３に間引き対応管理情報１３５を読み出させる）。リストア部５１５は、読み出された間引き対応管理情報１３５を、ローカルメモリ５０１に書込む。そして、リストア部５１５は、その間引き対応管理情報１３５を用いて、共有メモリ１１１に、対応容量プール１４３に対応する対応管理情報１３３をリストアする。
【００６９】
以上が、バックアップ処理及びリストア処理の概要である。なお、必ずしも、ＳＶＰ１１４の不揮発性の記憶デバイス１１６に書込まれなくても良い。例えば、ＳＶＰ１１４の不揮発性の記憶デバイス１１６と確保領域１７１との両方に格納されるダブルバックアップモードと、確保領域１７１のみに格納されるシングルバックアップモードとがあり、いずれかのモードをユーザが選択可能になっていても良い。
【００７０】
上述の説明によれば、対応管理情報１３３それ自体がバックアップされるのではなく、対応管理情報１３３のリストアに必要な情報要素が選別されその情報要素を含んだ間引き対応管理情報１３５が、バックアップされる。対応管理情報１３３における、バックアップされていない情報要素は、間引き対応管理情報１３５に含まれている情報要素を基に、算出される。このように、対応管理情報１３３を適切に間引いてバックアップするため、消費記憶容量を節約することができる。
【００７１】
また、上述の説明によれば、容量プール１４３毎に、予め、確保領域１７１が設けられており、確保領域１７１に、間引き対応管理情報１３５が書き込まれる。これにより、確保領域１７１をデッドスペースとすることなく有効に活用することができる。確保領域１７１のサイズが対応管理情報１３３のサイズより小さくても、バックアップの対象となるのは、対応管理情報１３３それ自体ではなく、対応管理情報１３３からそれのリストアに不要な情報要素（例えば、他の情報要素から計算可能な情報要素）を間引くことにより作成された間引き対応管理情報１３５なので、確保領域１７１にバックアップすることが可能となる。
【００７２】
以下、間引き対応管理情報１３５の構成などについて詳細に説明する。
【００７３】
図６は、確保領域１７１で記憶されている間引き対応管理情報１３５の構成を示す。
【００７４】
間引き対応管理情報１３５は、ヘッダ情報１５７、間引きプール情報１５１、間引き仮想ＶＯＬ１５３、間引きマッピング情報１５５及び予備情報１５９で構成されている。これらの情報１５７、１５１、１５３、１５５及び１５９のうちの少なくとも一つが多重化（例えば二重化）されて、格納されても良い。
【００７５】
ヘッダ情報１５７は、確保領域１７１を管理するための情報である。ヘッダ情報１５７には、間引きマッピング情報１５５のフォーマットを一意に特定するための情報要素が含まれても良い。
【００７６】
図７は、間引きプール情報１５１の構成を示す。
【００７７】
間引きプール情報１５１は、プール情報１６１のリストアに不要な情報要素がプール情報１６１から間引かれた情報である。間引きプール情報１５１は、ヘッダ情報１５１１と、プールＶＯＬ＃リスト１５１２とを含む。
【００７８】
ヘッダ情報１５１１は、例えば、粒度１５１１１、プール閾値１５１１２、プールＶＯＬ数１５１１３、プール種別１５１１４及びプール状態１５１１５を含む。粒度１５１１１は、一つの実ページのサイズを表す情報要素である。プール閾値１５１１２は、容量プール１４３の空き比率（１００−プール使用率（％））がどの比率未満となった場合に警告を出すかを表す情報要素である。プールＶＯＬ数１５１１３は、容量プール１４３を構成するプールＶＯＬの数を表す情報要素である。プール種別１５１１４は、容量プール１４３の種別（例えば、仮想ＶＯＬ用、スナップショット用など）を表す情報要素である。プール状態１５１１５は、容量プール１４３の状態（例えば、正常、閉塞など）を表す情報要素である。
【００７９】
プールＶＯＬ＃リスト１５１２には、容量プール１４３を構成する各プールＶＯＬ１４５のプールＶＯＬ＃が記録されている。なお、プールＶＯＬ＃リスト１５１２は、一つの容量プール１４３を構成するプールＶＯＬ１４５の最大数分の記憶領域を有した所定サイズの情報とすることができる。容量プール１４３を構成するプールＶＯＬ１４５の数が、プールＶＯＬ１４５の最大数に満たない場合には、プールＶＯＬ＃リスト１５１２には、無効データ（例えばヌルデータ）が記録される。記録される無効データの数は、プールＶＯＬ１４５の最大数とプールＶＯＬ１４５の数との差である。
【００８０】
図８は、間引き仮想ＶＯＬ１５３の構成を示す。
【００８１】
間引き仮想ＶＯＬ１５３は、仮想ＶＯＬ１６３のリストアに不要な情報要素が仮想ＶＯＬ１６３から間引かれた情報である。間引き仮想ＶＯＬ１５３は、ヘッダ情報１５３１と、仮想ＶＯＬ単位情報１５３２とを含む。
【００８２】
ヘッダ情報１５３１は、例えば、対応容量プール１４３に関連付けられた仮想ＶＯＬ１４１の数を表す情報要素を含んだ情報である。
【００８３】
仮想ＶＯＬ単位情報１５３２は、対応容量プール１４３に関連付けられた仮想ＶＯＬ１４１毎に存在する情報である。仮想ＶＯＬ単位情報１５３２は、例えば、仮想ＶＯＬ＃１５３２１、仮想ＶＯＬ閾値１５３２２、変換ボリューム＃１５３２３及び予備情報１５３２４を含む。仮想ＶＯＬ＃１５３２１は、仮想ＶＯＬ単位情報１５３２に対応する仮想ＶＯＬ（以下、「対応仮想ＶＯＬ」と言う）１４１の仮想ＶＯＬ＃を表す情報要素である。仮想ＶＯＬ閾値１５３２２は、対応仮想ＶＯＬ１４１の空き容量に対して、対応仮想ＶＯＬ１４１が関連付けられている容量プール１４３の空き容量がどの値より少なくなった場合に警告を出すかを表す情報要素である（例えば、仮想ＶＯＬ閾値が３００％と設定されている場合には、容量プール１４３の空き容量が、仮想ＶＯＬの空き容量の３倍よりも少なくなった場合には、警告が出ることになる）。変換ボリューム＃は、対応仮想ＶＯＬ１４１に記憶されているデータ（具体的には、対応仮想ＶＯＬ１４１に割り当てられている実ページに記憶されているデータ）のマイグレーション先の論理ボリュームのＶＯＬ＃である。
【００８４】
図９は、マッピング情報１６５の構成を示す。
【００８５】
マッピング情報１６５は、対応容量プール１４３における実ページ毎に、実ページを表す情報要素（以下、「実ページ情報要素」と言う）と、その実ページの割当て先の仮想ページを表す情報要素（以下、「仮想ページ情報要素」と言う）を有する。実ページ情報要素は、例えば、プールＶＯＬ＃と実ページ＃との組である。仮想ページ情報要素は、例えば、仮想ＶＯＬ＃と仮想ページ＃との組である。未割当ての実ページに対応した仮想ページ情報要素は、未割当てを意味するデータ、例えば、ヌルデータである。以下、実ページを、実ＶＯＬ＃と実ページ＃の組で表すことがある。また、仮想ページを、仮想ＶＯＬ＃と仮想ページ＃の組で表すことがある。
【００８６】
図９によれば、実ページ［プールＶＯＬ＃３，実ページ＃０］は、未割当ての実ページであることがわかる。また、実ページ［プールＶＯＬ＃３，実ページ＃１］は、仮想ページ［仮想ＶＯＬ＃０，仮想ページ＃１］に割り当て済みであることがわかる。
【００８７】
マッピング情報１６５は、Ｋ個（Ｋは１以上の整数、例えば、Ｋ＝１６０００）の実ページにそれぞれ対応したＫ個のエントリで構成される。一つのエントリに、そのエントリに対応する実ページに対応した実ページ情報要素と、仮想ページ情報要素とが含まれる。
【００８８】
本実施例において、前述した間引きマッピング情報１５５は、図９に示すように、マッピング情報１６５から全ての実ページ情報要素が間引かれた情報、言い換えれば、仮想ページ情報要素のみが残された情報である。具体的には、例えば、間引きマッピング情報１５５は、実ページ＃の昇順に並んだ仮想ページ情報要素で構成される。このため、例えば、どの仮想ページ情報要素に対応する仮想ページに対応容量プール１４３におけるどの実ページが割り当てられているかは、その仮想ページ情報要素の間引きマッピング情報１６５における位置（順番）から、算出することが可能である。例えば、２番目にある仮想ページ情報要素（ヌルデータではない情報要素）に対応する仮想ページには、対応容量プール１４３における２番目の実ページ（実ページ＃２の実ページ）が割り当てられていることがわかる。
【００８９】
図１０は、関連付けテーブル１６７の構成と、関連付けテーブル１６７とマッピング情報１６５との関係を示す。
【００９０】
関連付けテーブル１６７は、第一サブテーブル１８１と、プールＶＯＬ用ディレクトリ１８５と、仮想ＶＯＬ用ディレクトリ１８３とで構成される。
【００９１】
第一サブテーブル１８１が有する各レコード（行）には、ＶＯＬ＃と第二アドレスが記録される。そのＶＯＬ＃は、対応容量プール１４３を構成するプールＶＯＬと、対応容量プール１４３に関連付けられている仮想ＶＯＬとのいずれかの論理ボリュームのＶＯＬ＃である。第二アドレスは、第二サブテーブル１８３１又は１８５１のレコード（行）のアドレスである。
【００９２】
プールＶＯＬ用ディレクトリ１８５は、プールＶＯＬ１４５に対応するエントリ（マッピング情報１６５におけるエントリ）を特定するためのテーブル群である。プールＶＯＬ用ディレクトリ１８５は、例えば、第二サブテーブル１８５１と、第三サブテーブル１８５３とで構成される。第二サブテーブル１８５１が有する各レコード（行）には、第三アドレスが記録される。第三アドレスは、第三サブテーブル１８５３のレコードのアドレスである。第三サブテーブル１８５３が有する各レコード（行）には、メモリバンクアドレスが記録される。メモリバンクアドレスは、各Ｍ個のエントリの先頭エントリのアドレスである。なお、Ｍは、１以上の整数であり、マッピング情報１６５を構成するエントリの数Ｋよりも小さい値（例えば、Ｍ＝５４４）である。
【００９３】
仮想ＶＯＬ用ディレクトリ１８３は、任意の仮想ページに割り当てられている実ページに対応するエントリを特定するためのテーブル群である。仮想ＶＯＬ用ディレクトリ１８３は、例えば、第二サブテーブル１８３１と、第三サブテーブル１８３３とで構成される。第二サブテーブル１８３１が有する各レコード（行）には、第三アドレスが記録される。第三アドレスは、第三サブテーブル１８３３のレコードのアドレスである。第三サブテーブル１８３３は、対応容量プール１４３に関連付けられている仮想ＶＯＬ１４１毎に存在する。第三サブテーブル１８３３が有する各レコード（行）は、その第三サブテーブル１８３３に対応する仮想ＶＯＬ１４１における各仮想ページに対応する。第三サブテーブル１８３３が有する各レコードには、マッピング情報１６５におけるエントリのアドレスが記録される。
【００９４】
図１０の関連付けテーブル１６７によれば、例えば、ＶＯＬ＃３について、プールＶＯＬ用ディレクトリ１８５を辿ることにより、ＶＯＬ＃３のプールＶＯＬに対応するエントリ群が特定される。また、ＶＯＬ＃０について、仮想ＶＯＬ用ディレクトリ１８３を辿ることにより、ＶＯＬ＃０の仮想ＶＯＬにおける２番目の仮想ページに対応したエントリが特定される。そのエントリによれば、その仮想ページに、実ページ［プールＶＯＬ＃３，実ページ＃１］が割り当てられていることがわかる。
【００９５】
本実施例では、以上の関連付けテーブル１６７は、対応容量プール１４３における確保領域１７１にはバックアップされない。なぜなら、関連付けテーブル１６７を、間引きプール情報１５１と間引き仮想ＶＯＬ１５３とを基にリストアすることが可能であるためである。
【００９６】
以下、本実施例におけるバックアップ処理及びリストア処理について、詳細に説明する。
【００９７】
図１１は、バックアップ処理のフローチャートである。なお、以下、確保領域１７１にバックアップされることを例に採り説明し、ＳＶＰ１１４の不揮発性の記憶デバイス１１６にバックアップされることについては、説明を省略する。
【００９８】
各ＣＨＡ１０９で実行される制御プログラムが、旧型の制御プログラム５０３（図１２（Ａ）参照）から新型の制御プログラム５０５（図１２（Ｂ）参照）にバージョンアップされた場合（ステップ１０１でＹＥＳ）、新型の制御プログラム５０５におけるバックアップ部５１３によって、各容量プール１４３の確保領域１７１に、各容量プール１４３に対応する間引き対応管理情報１３５が、バックアップされる（ステップ１０４）。ステップ１０４の処理については、図１３を参照して後に詳述する。
【００９９】
容量プール１４３が作成又は削除された場合（ステップ１０２でＹＥＳ）、その容量プール１４３に対応する対応管理情報１３３が作成又は削除されることになる。従って、この場合、バックアップ部５１３が、間引きプール情報１５１の全部又は一部を、対応する確保領域１７１にバックアップする（ステップ１０６）。具体的には、例えば、容量プール１４３が作成された場合、バックアップ部５１３は、作成された容量プール１４３の確保領域１７１をフォーマットし、その確保領域１７１における、間引きプール情報１５１が記憶される位置に、間引きプール情報１５１を書込む。また、例えば、容量プール１４３が削除された場合、バックアップ部５１３は、削除された容量プール１４３の確保領域１７１における間引きプール情報１５１を、無効化する（例えば値“０”で構成された情報とする）。
【０１００】
プール情報１６１が変更された場合（ステップ１０３でＹＥＳ）、バックアップ部５１３が、間引きプール情報１５１における、プール情報１６１の変更部分に対応する部分を、更新する（ステップ１０６）。具体的には、例えば、容量プール１４３が閉塞された場合（プール状態が“閉塞”となった場合）、バックアップ部５１３は、確保領域１７１に記憶されている間引きプール情報１５１におけるプール状態１５１１５を、“閉塞”に更新する。また、例えば、容量プール１４３が回復した場合（プール状態が“回復”となった場合）、バックアップ部５１３は、確保領域１７１に記憶されている間引きプール情報１５１におけるプール状態１５１１５を、“回復”に更新する。
【０１０１】
プールＶＯＬ１４５が容量プール１４３に追加された場合、又は、プールＶＯＬ１４５が容量プール１４３から削除された場合（ステップ１０５でＹＥＳ）、その容量プール１４３に対応した対応管理情報１３３におけるプール情報１６１が更新されることになる。従って、この場合、バックアップ部５１３は、確保領域１７１に記憶されている間引きプール情報１５１を更新する（ステップ１０６）。具体的には、例えば、１つのプールＶＯＬ１４５が容量プール１４３に追加された場合、バックアップ部５１３は、その容量プール１４３に対応する間引きプール情報１５１において、プールＶＯＬ数１５１１３の値を１増やし、追加されたプールＶＯＬ１４５のＶＯＬ＃をプールＶＯＬ＃リスト１５１２に追記する。逆に、例えば、１つのプールＶＯＬ１４５が容量プール１４３から削除された場合、バックアップ部５１３は、その容量プール１４３に対応する間引きプール情報１５１において、プールＶＯＬ数１５１１３の値を１減らし、削除されたプールＶＯＬ１４５のＶＯＬ＃をプールＶＯＬ＃リスト１５１２から削除する。
【０１０２】
仮想ＶＯＬ１４１が容量プール１４３に関連付けられた場合（ステップ１０７でＹＥＳ）、その容量プール１４３に対応する仮想ＶＯＬ情報１６３が更新されることになる。従って、この場合、バックアップ部５１３は、その容量プール１４３の確保領域１７１に記憶されている間引き仮想ＶＯＬ情報１５３を更新する（ステップ１１２）。具体的には、バックアップ部５１３は、ヘッダ情報１５３１が表す仮想ＶＯＬ数の値を１増やし、仮想ＶＯＬ単位情報１５３２を追加する。
【０１０３】
仮想ＶＯＬ１４１の容量プール１４３に対する関連付けが解除された場合（ステップ１０９でＹＥＳ）、その容量プール１４３に対応する仮想ＶＯＬ情報１６３が更新されることになる。従って、この場合、バックアップ部５１３は、その容量プール１４３の確保領域１７１に記憶されている間引き仮想ＶＯＬ情報を更新し、且つ、割り当て済みの実ページに対応する仮想ページ情報要素を無効化する（ステップ１１０）。具体的には、バックアップ部５１３は、ヘッダ情報１５３１が表す仮想ＶＯＬ数の値を１減らし、解除された仮想ＶＯＬ１４１に対応する仮想ＶＯＬ単位情報１５３２を削除する。また、バックアップ部５１３は、間引きマッピング情報１５５における、解除された仮想ＶＯＬ１４１の仮想領域に対応する仮想ページ情報要素を無効化する（ヌルデータに更新する）。
【０１０４】
仮想ＶＯＬ情報１６３に変更があった場合（ステップ１１１でＹＥＳ）、バックアップ部５１３は、仮想ＶＯＬ情報１６３で更新された情報要素に対応する、間引き仮想ＶＯＬ情報１５３における情報要素を、更新する（ステップ１１２）。
【０１０５】
未だ指定されたことの無い仮想ページを指定したライト要求を受信したことにより、新たに実ページが割り当てられた場合（ステップ１１３でＹＥＳ）、マッピング情報１６５において、その実ページに対応したエントリに、その実ページの割当て先の仮想ページを表す仮想ページ情報要素が記録される。従って、この場合、バックアップ部５１３は、その記録された仮想ページ情報要素を、確保領域１７１に記憶されている間引きマッピング情報１５５に追加する（ステップ１１４）。具体的には、例えば、バックアップ部５１３は、入出力制御部５１１が新たに書き込んだ仮想ページ情報要素を記録するためのサブブロック領域がキャッシュメモリ１１３に確保されていなければ、そのサブブロック領域を、キャッシュメモリ１１３に確保する。１サブブロックは、所定個数のページ（例えば３２個のページ）分のサイズであり、ローカルメモリ５０１からキャッシュメモリ１１３への転送単位である。バックアップ部５１３は、新たに仮想ページ情報要素が記録されたエントリから、その仮想ページ情報要素を読出し、読み出した仮想ページ情報要素を、キャッシュメモリ１１３における確保済みのサブブロック領域に書込む。その後、入出力制御部５１１のデステージジョブによって、その仮想ページ情報要素を含む所定個数（例えば５４４個）の仮想ページ情報要素（ヌルデータとなっている仮想ページ情報要素が含まれていることもある）が、確保領域１７１に記憶されている間引きマッピング情報１５５における適切な位置に、記録される。
【０１０６】
以上が、バックアップ処理の流れである。なお、図１１には、バックアップ処理で行われる代表的な判断（ステップ１０１、１０２、１０３、１０５、１０７、１０９、１１１及び１１３）を示したが、図示していない判断が行われることもある。例えば、プール閾値又は仮想ＶＯＬ閾値が変更された場合、間引きプール情報１５１におけるプール閾値１５１１２、又は、間引き仮想ＶＯＬ情報１５３における仮想ＶＯＬ閾値１５３２３が更新される。要するに、対応管理情報１３３において、間引き対応管理情報１３５にも含まれる情報要素が更新されたならば、確保領域１７１（及びＳＶＰ１１４の不揮発性の記憶資源１１６）に記憶されている間引き対応管理情報１３５でも、その情報要素が更新されることになる。言い換えれば、対応管理情報１３３における或る情報要素が更新されたからといって、間引き対応管理情報１３５の全部が更新されるのではなく、間引き対応管理情報１３５における、対応管理情報１３３で更新された情報要素と同じ情報要素のみが更新される。
【０１０７】
図１３は、図１１のステップ１０４で行われる処理のフローチャートである。なお、この処理の開始に先立ち、バックアップ部５１３は、確保領域１７１をフォーマットしておく。
【０１０８】
バックアップ部５１３は、関連付けテーブル１６７の第一サブテーブル１８１のレコードを順に参照することで、プールＶＯＬのＶＯＬ＃を探す（ステップ１２１）。
【０１０９】
次に、バックアップ部５１３は、見つけたＶＯＬ＃をキーに、プールＶＯＬ用ディレクトリ１８５を辿り、メモリバンクアドレスを求める（ステップ１２２）。具体的には、バックアップ部５１３は、見つけたＶＯＬ＃に対応する第二アドレスから、プールＶＯＬ用ディレクトリ１８５における第二サブテーブル１８５１のレコードを特定する。そして、バックアップ部５１３は、特定したレコードに記録されている第三アドレスから、プールＶＯＬ用ディレクトリ１８５における第三サブテーブル１８５３のレコードを特定する。それにより、そのレコードに記録されているメモリバンクアドレスが求まる。
【０１１０】
バックアップ部５１３は、そのメモリバンクアドレスから特定されるメモリバンク領域におけるエントリに記録されている仮想ＶＯＬ＃及び仮想ページ＃（ヌルデータとなっている場合もある）を、キャッシュメモリ１１３に転送する（ステップ１２３）。これを、そのメモリバンク領域における全てのエントリについて行う（ステップ１２４）。
【０１１１】
バックアップ部５１３が第一サブテーブル１８１の全てのレコードを参照したならば（ステップ１２５でＹＥＳ）、ステップ１０４の終了となる。
【０１１２】
図１４は、新たに実ページが仮想ページに割り当てられた場合に行われる処理のフローチャートである。
【０１１３】
入出力制御部５１１が、フリーキュー（未割当ての実ページに対応したエントリのキュー）から一つのエントリを選択する（ステップ１３１）。そして、入出力制御部５１１は、選択したエントリに、そのエントリに対応する実ページの割当て先の仮想ページに対応した仮想ＶＯＬ＃及び仮想ページ＃を記録する（ステップ１３２）。
【０１１４】
バックアップ部５１３は、そのエントリを含んだ所定個数（例えば３２個）のエントリに記録されている所定個数の仮想ＶＯＬ＃及び仮想ページ＃を、キャッシュメモリ１１３における確保済みのサブブロック領域に転送する（ステップ１３３）。
【０１１５】
入出力制御部５１１は、デステージジョブにより、所定個数（例えば５４４個）の仮想ＶＯＬ＃及び仮想ページ＃を、それぞれ、対応する確保領域１７１に書込む（デステージする）（ステップ１３４）。
【０１１６】
なお、本処理において、バックアップ部５１３は、キャッシュメモリ１１３に転送した仮想ＶＯＬ＃及び仮想ページ＃にロックをかけないようにする（具体的には、例えば、一旦ロックをかけた後にすぐに外す）。なぜなら、キャッシュメモリ１１３において、仮想ＶＯＬ＃及び仮想ページ＃にロックがかかっていると、仮想ＶＯＬ＃及び仮想ページ＃は、デステージがされない、つまり確保領域１７１にバックアップされないためである。キャッシュメモリ１１３に転送する仮想ＶＯＬ＃及び仮想ページ＃にロックをかけないことにより、なるべく迅速に、仮想ＶＯＬ＃及び仮想ページ＃を確保領域１７１にバックアップすることができる。
【０１１７】
以上が、バックアップ処理に関する説明である。
【０１１８】
前述したように、確保領域１７１（又はＳＶＰ１１４の不揮発性の記憶デバイス１１６）にバックアップされた間引き対応管理情報１３５を用いて、共有メモリ１１１に、対応管理情報１３３をリストアすることが可能である。リストア処理は、例えば、ストレージシステム１０５の電源が投入されたことを契機に開始される。
【０１１９】
図１５は、リストア処理のフローチャートである。
【０１２０】
ステップ１５１では、リストア部５１５は、本リストア処理が、計画的な停止の後でのリストア処理であるかどうかを判断する。計画的な停止とは、ユーザが意図した、ストレージシステム１０５の稼働の停止である。本リストア処理が、計画的な停止（例えば電源オフ）の後でのリストア処理の場合（ステップ１５１でＹＥＳ）、ステップ１５３に進み、そうではない場合（ステップ１５１でＮＯ）、ステップ１５２に進む。
【０１２１】
ステップ１５２では、リストア部５１５が、対応管理情報１３３のリストアを行うか否かの指示をユーザから受け付ける。リストアを行う指示を受けた場合（ステップ１５２でＹＥＳ）、ステップ１５３に進み、その指示を受けなかった場合（ステップ１５２でＮＯ）、終了となる。
【０１２２】
ステップ１５３では、リストア部５１５が、間引き対応管理情報１３５をＳＶＰ１１４に要求する。リストア部５１５は、その要求に応答して間引き対応管理情報１３５をＳＶＰ１１４から受信した場合（ステップ１５２でＹＥＳ）、その間引き対応管理情報１３５を用いて、共有メモリ１１１に、対応管理情報１３３をリストアする（ステップ１５４）。一方、間引き対応管理情報をＳＶＰ１１４から受信できなかった場合（ステップ１５２でＮＯ）、リストア部５１５は、確保領域１７１に記憶されている間引き対応管理情報１３５を用いたリストアを実行する（ステップ１５５）。
【０１２３】
このリストア処理によれば、本リストア処理が、計画的な停止の後でのリストア処理であれば、自動で、リストアが開始される。なぜなら、計画的な停止の場合、共有メモリ１１１には、図示しない一次電源（例えば商用電源）から所定の電源装置を経由して電力が供給され、それ故、バックアップされた間引き対応管理情報１３５は、最新の対応管理情報１３３に対応しているためである。
【０１２４】
一方、本リストア処理が、計画的な停止とは異なる停止（例えば停電による停止）の後でのリストア処理であれば、手動で、リストアが開始される。なぜなら、計画的な停止とは異なる停止の場合、共有メモリ１１１には、図示しない一次電源から所定の電源装置を経由して電力が供給されていない可能性があり、それ故、バックアップされた間引き対応管理情報１３５が、最新の対応管理情報１３３に対応していないおそれがあるためである。
【０１２５】
図１６は、図１５のステップ１５５で実行される処理（或る一つの容量プール１４３についての処理）のフローチャートの前段部分を示す。図１７は、そのフローチャートの後段部分を示す。
【０１２６】
リストア部５１５は、容量プール１４３を構成する複数のプールＶＯＬから先頭プールＶＯＬを特定する（ステップ１５１）。
【０１２７】
リストア部５１５は、特定した先頭プールＶＯＬにある確保領域１７１（つまり容量プールの確保領域１７１）から、間引きプール情報１５１を読み出す（ステップ１５２）。
【０１２８】
読出しに成功したなら（ステップ１５３でＹＥＳ）、リストア部５１５は、その間引きプール情報１５１を用いて、一次リストアを実行する（ステップ１５４）。具体的には、例えば、リストア部５１５は、間引きプール情報１５１内のプールＶＯＬ数１５１１３を基に、共有メモリ１１１上に、プールＶＯＬ用ディレクトリ１８５を作成する。また、リストア部５１５は、共有メモリ１１１上に、各プールＶＯＬの実ページに対応したエントリを準備し、それらエントリについてのフリーキューを作成する。準備されたエントリには、そのエントリに対応する実ページのプールＶＯＬ＃及び実ページ＃が記録されているが、仮想ＶＯＬ＃及び実ページ＃としてはヌルデータが記録されている。また、リストア部５１５は、共有メモリ１１１上に、全てのレコードがヌルデータの第一のサブテーブル１８１を作成し、その第一のサブテーブル１８１に、間引きプール情報１５１内のプールＶＯＬ＃リスト１５１２に記録されているプールＶＯＬ＃を記録する。
【０１２９】
一次リストアに成功したなら（ステップ１５５でＹＥＳ）、リストア部５１５は、確保領域１７１から、間引き仮想ＶＯＬ情報１５３を読み出す（ステップ１５６）。
【０１３０】
読出しに成功したなら（ステップ１５７でＹＥＳ）、リストア部５１５は、その間引き仮想ＶＯＬ情報１５３を用いて、二次リストアを実行する（ステップ１５８）。具体的には、例えば、リストア部５１５は、間引き仮想ＶＯＬ情報１５３内のヘッダ情報１５３１（仮想ＶＯＬ数を表す情報）を基に、共有メモリ１１１上に、仮想ＶＯＬ用ディレクトリ１８３を作成する。また、リストア部５１５は、第一のサブテーブル１８１に、間引きプール情報１５１内の各仮想ＶＯＬ単位情報１５３２に含まれている仮想ＶＯＬ＃を記録する。
【０１３１】
二次リストアの実行に成功したなら（ステップ１５９でＹＥＳ）、図１７のステップ１６１に進む。二次リストアが完了した時点での関連付けテーブル１６７とマッピング情報１６５とを、図１８に示す。図１８によれば、第一のサブテーブル１８１には、容量プール１４３を構成する全てのプールＶＯＬ＃と、その容量プール１４３に関連付けられている全ての仮想ＶＯＬの仮想ＶＯＬ＃とが記録されている。また、マッピング情報１６５を構成する各エントリには、対応する実ページのプールＶＯＬ＃及び実ページ＃が記録されているが、仮想ＶＯＬ＃及び仮想ページ＃としてはヌルデータが記録されている。そのため、全てのエントリがフリーキューに属する（図１８の一点鎖線矢印を参照）。また、仮想ＶＯＬ用ディレクトリ１８３における第三サブテーブル１８３３のどのレコードも、ヌルデータが記録されているため、マッピング情報１６５におけるエントリには関連付けられていない。
【０１３２】
図１７のステップ１６１では、リストア部５１５は、間引きマッピング情報１５５を確保領域１７１から読み出す。
【０１３３】
ステップ１６２では、リストア部５１５は、間引きマッピング情報１５５から、一組の仮想ＶＯＬ＃及び仮想ページ＃を選択する（つまり仮想ページを選択する）。リストア部５１５は、選択した仮想ＶＯＬ＃及び仮想ページ＃の位置（順番）に対応したプールＶＯＬ＃及び実ページ＃を特定する。リストア部５１５は、特定されたプールＶＯＬ＃及び実ページ＃を用いて第一サブテーブル１８１及びプールＶＯＬ用ディレクトリ１８５を参照することで、そのプールＶＯＬ＃及び実ページ＃の実ページに対応したエントリを特定する。
【０１３４】
ステップ１６３では、リストア部５１５は、ステップ１６２で特定されたエントリに、ステップ１６２で選択した仮想ＶＯＬ＃及び仮想ページ＃を記録する。
【０１３５】
ステップ１６４では、リストア部５１５は、ステップ１６２で選択した仮想ＶＯＬ＃及び仮想ページ＃を用いて第一サブテーブル１８１及び仮想ＶＯＬ用ディレクトリ１８３を参照することで、仮想ＶＯＬ用ディレクトリ１８３内の第三サブテーブル１８３３におけるレコードを特定する。そして、リストア部５１５は、そのレコードに、Ｓ１６２で特定されたエントリのアドレスを記録する。
【０１３６】
以上のステップ１６１乃至１６４が、間引きマッピング情報１５５における全ての仮想ＶＯＬ＃及び仮想ページ＃（ヌルデータとなっているものを除く）について行われる（ステップ１６５）。
【０１３７】
その後、リストア部５１５は、フリーキューから、仮想ＶＯＬ＃及び仮想ページ＃が記録されたエントリを抜く（ステップ１６６）。
【０１３８】
また、リストア部５１５は、対応管理情報１３３における未リストアの情報要素をリストアする（ステップ１６７）。具体的には、例えば、リストア部５１５は、リストアされたマッピング情報１６５を基に、プール情報１６１におけるプール使用率を算出したり、仮想ＶＯＬ情報１６３における仮想ＶＯＬ使用率を算出したりする。
【０１３９】
図１６及び図１７を参照して説明した一連の処理により、共有メモリ１１１に、対応管理情報１３３がリストアされる。図１９に、図１７のステップ１６７が完了した時点での関連付けテーブル１６７とマッピング情報１６５とを示す。図１８と見比べてみればわかるように、実ページが割り当てられている仮想ページについては、マッピング情報１６５におけるエントリに、その仮想ページの仮想ＶＯＬ＃及び仮想ページ＃が記録される。また、その仮想ページに対応する、第三サブテーブル１８３３のレコードに、その仮想ＶＯＬ＃及び仮想ページ＃が記録されているエントリ（仮想ページに割り当てられている実ページに対応したエントリ）のアドレスが記録される。
【０１４０】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【図面の簡単な説明】
【０１４１】
【図１】図１は、本発明の一実施例に係る計算機システムの構成を示す。
【図２】図２は、仮想ページに対する実ページの割り当ての方法を示す。
【図３】図３は、共有メモリに記憶される管理情報の一つである対応管理情報を示す。
【図４】図４は、バックアップ処理の概要を示す。
【図５】図５は、リストア処理の概要を示す。
【図６】図６は、確保領域で記憶されている間引き対応管理情報の構成を示す。
【図７】図７は、間引きプール情報の構成を示す。
【図８】図８は、間引き仮想ＶＯＬの構成を示す。
【図９】図９は、マッピング情報の構成を示す。
【図１０】図１０は、関連付けテーブルの構成と、関連付けテーブルとマッピング情報との関係を示す。
【図１１】図１１は、バックアップ処理のフローチャートである。
【図１２】図１２Ａは、旧型の制御プログラムが記憶されているＣＨＡを示す。図１２Ｂは、新型の制御プログラムが記憶されているＣＨＡを示す。
【図１３】図１３は、図１１のステップ１０４で行われる処理のフローチャートである。
【図１４】図１４は、新たに実ページが仮想ページに割り当てられた場合に行われる処理のフローチャートである。
【図１５】図１５は、リストア処理のフローチャートである。
【図１６】図１６は、図１５のステップ１５５で実行される処理（或る一つの容量プール１４３についての処理）のフローチャートの前段部分を示す。
【図１７】図１７は、図１５のステップ１５５で実行される処理（或る一つの容量プール１４３についての処理）のフローチャートの後段部分を示す。
【図１８】図１８は、図１６のステップ１５８が完了した時点での関連付けテーブルとマッピング情報とを示す。
【図１９】図１９は、図１７のステップ１６７が完了した時点での関連付けテーブルとマッピング情報とを示す。
【符号の説明】
【０１４２】
１０１…ホスト計算機  １０５…ストレージシステム  １０７…コントローラ部  １０９…チャネルアダプタ  １１１…共有メモリ  １１３…キャッシュメモリ  １１７…ディスクアダプタ  １１８…ストレージ部  １１９…物理的な記憶デバイス
【図１】
0004961319.tif 000002
【図２】
0004961319.tif 000003
【図３】
0004961319.tif 000004
【図４】
0004961319.tif 000005
【図５】
0004961319.tif 000006
【図６】
0004961319.tif 000007
【図７】
0004961319.tif 000008
【図８】
0004961319.tif 000009
【図９】
0004961319.tif 000010
【図１０】
0004961319.tif 000011
【図１１】
0004961319.tif 000012
【図１２】
0004961319.tif 000013
【図１３】
0004961319.tif 000014
【図１４】
0004961319.tif 000015
【図１５】
0004961319.tif 000016
【図１６】
0004961319.tif 000017
【図１７】
0004961319.tif 000018
【図１８】
0004961319.tif 000019
【図１９】
0004961319.tif 000020