"ストレージ装置において、記憶領域を提供する1又は複数の記憶デバイスと、前記1又は複数の記憶デバイスが提供する前記記憶領域上に第1及び第2の論理ボリュームを作成し、ホスト計算機からの要求に応じて前記第1の論理ボリュームにデータを読み書きするコントローラとを備え、前記コントローラには、メモリが設けられ、前記コントローラは、前記第1の論理ボリュームのある時点のデータイメージである1又は複数のスナップショットを取得し、取得した各前記スナップショットの管理情報を前記第2の論理ボリュームに格納し、必要時に必要な前記スナップショットの管理情報を前記第2の論理ボリュームから前記メモリに読み出し、読み出した前記管理情報を用いて処理を実行すると共に、不要となった前記管理情報を前記メモリから前記第2の論理ボリュームに戻す一方、前記第2の論理ボリュームから前記メモリに前記スナップショットの管理情報を読み出す際は、前記管理情報が必要な前記スナップショットの世代及びアドレスに応じて、前記メモリに読み出す前記管理情報の前記スナップショットの世代数及びアドレス範囲を変更することを特徴とするストレージ装置。各前記スナップショットには、当該スナップショットの前記世代を表す情報として、原則として当該スナップショットの取得順に順次大きくなる世代番号がそれぞれ割り当てられ、前記コントローラは、前記第2の論理ボリュームから前記メモリに前記スナップショットの管理情報を読み出す際、前記管理情報が必要な前記スナップショットに割り当てられた前記世代番号が小さいほど、少ない世代数分の前記管理情報を広いアドレス範囲で前記第2の論理ボリュームから前記メモリに読み出し、当該世代番号が大きいほど、多い世代数分の前記管理情報を狭いアドレス範囲で前記第2の論理ボリュームから前記メモリに読み出すことを特徴とする請求項1に記載のストレージ装置。前記コントローラは、前記第2の論理ボリュームから前記管理情報を前記メモリに読み出す際の前記スナップショットの世代数及び前記アドレス範囲を段階的に変更することを特徴とする請求項2に記載のストレージ装置。前記コントローラは、前記スナップショットが削除されることにより当該スナップショットに割り当てていた前記世代番号が欠番となったときには、新たに取得された前記スナップショットに対して当該世代番号を割り当てる一方、最も小さい前記世代番号の世代を含む段階に属するいずれかの前記世代番号が割り当てられていた前記スナップショットが削除されることにより当該世代番号が欠番となった場合においても、新たに取得された前記スナップショットに対して当該世代番号を割り当てないことを特徴とする請求項3に記載のストレージ装置。前記コントローラは、前記ホスト計算機からの要求に応じて前記第1の論理ボリュームにデータを書き込むライト処理を実行する際、複数世代の前記スナップショットに渡って前記管理情報の更新が必要なときには、最新世代の前記スナップショットの前記管理情報を更新し、他の前記世代のスナップショットの前記管理情報については、当該ライト処理とは非同期に更新することを特徴とする請求項1に記載のストレージ装置。前記コントローラは、他の前記世代のスナップショットの前記管理情報については、当該他の世代のスナップショットに対するリード要求又はライト要求が与えられた場合に、当該他の世代のスナップショットの前記管理情報を更新することを特徴とする請求項5に記載のストレージ装置。前記コントローラは、他の前記世代のスナップショットの前記管理情報を更新する前に、当該他の世代のスナップショットの更新があったか否かを管理し、前記他の世代のスナップショットの管理情報を更新する際には、更新された前記スナップショットを跨いで、該当する前記他の世代の前記スナップショットの前記管理情報を更新することを特徴とする請求項6に記載のストレージ装置。記憶領域を提供する1又は複数の記憶デバイスと、前記1又は複数の記憶デバイスが提供する前記記憶領域上に第1の論理ボリュームを作成し、ホスト計算機からの要求に応じて前記第1の論理ボリュームにデータを読み書きするコントローラとを有するストレージ装置の制御方法において、前記コントローラには、メモリが設けられ、前記コントローラが、前記1又は複数の記憶デバイスが提供する前記記憶領域上に第2の論理ボリュームを作成する第1のステップと、前記コントローラが、前記第1の論理ボリュームのある時点のデータイメージである1又は複数のスナップショットを取得し、取得した各前記スナップショットの管理情報を前記第2の論理ボリュームに格納する第2のステップと、前記コントローラが、必要時に必要な前記スナップショットの管理情報を前記第2の論理ボリュームから前記メモリに読み出し、読み出した前記管理情報を用いて処理を実行すると共に、不要となった前記管理情報を前記メモリから前記第2の論理ボリュームに戻す第3のステップとを備え、前記第3のステップでは、前記第2の論理ボリュームから前記メモリに前記スナップショットの管理情報を読み出す際に、前記管理情報が必要な前記スナップショットの世代及びアドレスに応じて、前記メモリに読み出す前記管理情報の前記スナップショットの世代数及び前記アドレス範囲を変更することを特徴とするストレージ装置の制御方法。各前記スナップショットには、当該スナップショットの前記世代を表す情報として、原則として当該スナップショットの取得順に順次大きくなる世代番号がそれぞれ割り当てられ、前記第3のステップにおいて、前記コントローラは、前記第2の論理ボリュームから前記メモリに前記スナップショットの管理情報を読み出す際、前記管理情報が必要な前記スナップショットに割り当てられた前記世代番号が小さいほど、少ない世代数分の前記管理情報を広いアドレス範囲で前記第2の論理ボリュームから前記メモリに読み出し、当該世代番号が大きいほど、多い世代数分の前記管理情報を狭いアドレス範囲で前記第2の論理ボリュームから前記メモリに読み出すことを特徴とする請求項8に記載のストレージ装置の制御方法。前記第3のステップにおいて、前記コントローラは、前記第2の論理ボリュームから前記管理情報を前記メモリに読み出す際の前記スナップショットの世代数及び前記アドレス範囲を段階的に変更することを特徴とする請求項9に記載のストレージ装置の制御方法。前記第2乃至第3のステップにおいて、前記コントローラは、前記スナップショットが削除されることにより当該スナップショットに割り当てていた前記世代番号が欠番となったときには、新たに取得された前記スナップショットに対して当該世代番号を割り当てる一方、最も小さい前記世代番号の世代を含む段階に属するいずれかの前記世代番号が割り当てられていた前記スナップショットが削除されることにより当該世代番号が欠番となった場合においても、新たに取得された前記スナップショットに対して当該世代番号を割り当てないことを特徴とする請求項10に記載のストレージ装置の制御方法。前記コントローラは、前記ホスト計算機からの要求に応じて前記第1の論理ボリュームにデータを書き込むライト処理を実行する際、複数世代の前記スナップショットに渡って前記管理情報の更新が必要なときには、最新世代の前記スナップショットの前記管理情報を更新し、他の前記世代のスナップショットの前記管理情報については、当該ライト処理とは非同期に更新することを特徴とする請求項8に記載のストレージ装置の制御方法。前記コントローラは、他の前記世代のスナップショットの前記管理情報については、当該他の世代のスナップショットに対するリード要求又はライト要求が与えられた場合に、当該他の世代のスナップショットの前記管理情報を更新することを特徴とする請求項12に記載のストレージ装置の制御方法。前記コントローラは、他の前記世代のスナップショットの前記管理情報を更新する前に、当該他の世代のスナップショットの更新があったか否かを管理し、前記他の世代のスナップショットの管理情報を更新する際には、更新された前記スナップショットを跨いで、該当する前記他の世代の前記スナップショットの前記管理情報を更新することを特徴とする請求項13に記載のストレージ装置の制御方法。ところで、上述のようなスナップショット機能が搭載されたディスクアレイ装置は、取得したスナップショットを管理するための情報として、種々の管理情報をメモリ上に保持している特許文献1参照。これらの管理情報は、スナップショットごとのものも多い。従って、ディスクアレイ装置において取得可能なスナップショット数が増えるに従ってスナップショットを管理するための管理情報全体としての容量も増大することになる。ところが、これらの管理情報を保持するメモリの容量は有限であり、スナップショットの管理情報を無尽蔵にメモリ上に置いておくことはできないため、ディスクアレイ装置で取得可能なスナップショット数がある程度制限される問題があった。本発明は以上の点を考慮してなされたもので、より多くのスナップショットを取得可能なストレージ装置及びその制御方法を提案しようとするものである。かかる課題を解決するため本発明においては、ストレージ装置において、記憶領域を提供する1又は複数の記憶デバイスと、前記1又は複数の記憶デバイスが提供する前記記憶領域上に第1及び第2の論理ボリュームを作成し、ホスト計算機からの要求に応じて前記第1の論理ボリュームにデータを読み書きするコントローラとを設け、前記コントローラには、メモリが設けられ、前記コントローラが、前記第1の論理ボリュームのある時点のデータイメージである1又は複数のスナップショットを取得し、取得した各前記スナップショットの管理情報を前記第2の論理ボリュームに格納し、必要時に必要な前記スナップショットの管理情報を前記第2の論理ボリュームから前記メモリに読み出し、読み出した前記管理情報を用いて処理を実行すると共に、不要となった前記管理情報を前記メモリから前記第2の論理ボリュームに戻す一方、前記第2の論理ボリュームから前記メモリに前記スナップショットの管理情報を読み出す際は、前記管理情報が必要な前記スナップショットの世代及びアドレスに応じて、前記メモリに読み出す前記管理情報の前記スナップショットの世代数及び前記アドレス範囲を変更するようにした。また本発明においては、記憶領域を提供する1又は複数の記憶デバイスと、前記1又は複数の記憶デバイスが提供する前記記憶領域上に第1の論理ボリュームを作成し、ホスト計算機からの要求に応じて前記第1の論理ボリュームにデータを読み書きするコントローラとを有するストレージ装置の制御方法において、前記コントローラには、メモリが設けられ、前記コントローラが、前記1又は複数の記憶デバイスが提供する前記記憶領域上に第2の論理ボリュームを作成する第1のステップと、前記コントローラが、前記第1の論理ボリュームのある時点のデータイメージである1又は複数のスナップショットを取得し、取得した各前記スナップショットの管理情報を前記第2の論理ボリュームに格納する第2のステップと、前記コントローラが、必要時に必要な前記スナップショットの管理情報を前記第2の論理ボリュームから前記メモリに読み出し、読み出した前記管理情報を用いて処理を実行すると共に、不要となった前記管理情報を前記メモリから前記第2の論理ボリュームに戻す第3のステップとを設け、前記第3のステップでは、前記第2の論理ボリュームから前記メモリに前記スナップショットの管理情報を読み出す際に、前記管理情報が必要な前記スナップショットの世代及びアドレスに応じて、前記メモリに読み出す前記管理情報の前記スナップショットの世代数及び前記アドレス範囲を変更するようにした。かかる本発明のストレージ装置及びその制御方法によれば、スナップショットの管理情報を第2の論理ボリュームに保持し、必要時に必要な管理情報のみをコントローラ内のメモリに読み出すようにしているため、メモリの容量によって取得可能なスナップショット数が制限されることがない。本発明によれば、より多くのスナップショットを取得可能なストレージ装置及びその制御方法を実現できる。以下図面について、本発明の一実施の形態を詳述する。1本実施の形態による計算機システム図1において、1は全体として本実施の形態による計算機システムを示す。この計算機システム1は、1又は複数のネットワーク2を介して接続されたホスト計算機3及びディスクアレイ装置4を備えて構成される。ネットワーク2は、例えばSANStorageAreaNetwork、LAN、インターネット、公衆回線又は専用回線などから構成される。このネットワーク2を介したホスト計算機3及びディスクアレイ装置4間の通信は、例えばネットワーク2がSANである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク2がLANである場合にはTCP/IPTransmissionControlProtocolInternetProtocolプロトコルに従って行われる。ホスト計算機3は、CPUCentralProcessingUnit及びメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホスト計算機3は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置図示せずと、モニタディスプレイやスピーカ等の情報出力装置図示せずとを備える。ディスクアレイ装置4は、複数の記憶デバイス10と、これら複数の記憶デバイス10に対するデータの入出力を制御するコントローラ11とを備えて構成される。記憶デバイス10は、例えばSCSISmallComputerSystemInterfaceディスク等の高価なディスクデバイス、又はSATASerialATAttachmentディスクや光ディスク等の安価なディスクデバイスなどから構成される。これらの記憶デバイス10は、コントローラ11によりRAIDRedundantArraysofInexpensiveDisks方式で運用される。1又は複数の記憶デバイス10により提供される物理的な記憶領域上に、1又は複数の論理ボリュームVOLが設定される。そしてデータは、この論理ボリュームVOL内に所定大きさ以下、64KBとするのブロック以下、これを論理ブロックと呼ぶを単位として記憶される。各論理ボリュームVOLには、それぞれ固有の識別番号以下、これをLUNLogicalUnitnumberと呼ぶが付与されると共に、各論理ブロックには、それぞれ対応する論理ボリューム内で固有の識別番号以下、これをLBALogicalBlockAddressと呼ぶが付与される。本実施の形態の場合、データの入出力は、これらLUN及びLBAを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。コントローラ11は、それぞれフロントエンドインタフェース12、データ転送コントローラ13、バックエンドインタフェース14、キャッシュメモリ15、ローカルメモリ16及びCPU17を備えて構成される。フロントエンドインタフェース12は、ネットワーク2と接続される1又は複数の通信ポートを備える。通信ポートには、例えばIPInternetProtocolアドレスやWWNWorldWideNameなどの固有のネットワークアドレスがそれぞれ割り当てられる。このフロントエンドインタフェース12は、ネットワーク2を介したホスト計算機3との通信時におけるプロトコル制御を行う機能を有しており、このフロントエンドインタフェース12のプロトコル制御機能により、ホスト計算機3及びディスクアレイ装置4間においてFCプロトコルやiSCSIプロトコル等に従ったデータやコマンドの送受が行われる。データ転送コントローラ13は、コントローラ11の制御のもとに、フロントエンドインタフェース12、キャッシュメモリ15、バックエンドインタフェース14及びコントローラ17間の接続関係を切り替える機能を有するもので、例えばPCIePCIperipheralcomponentinterconnectExpressスイッチから構成される。バックエンドインタフェース14は、記憶デバイス10に対するインタフェースであり、CPU及びメモリなどの情報処理資源を備える。このバックエンドインタフェース14は、フロントエンドインタフェース12から与えられるホスト計算機3からのライトコマンドやリードコマンドに応じて対応する記憶デバイス10を制御することにより、リードデータやライトデータをリードコマンドやライトコマンドにおいて指定された論理ボリュームVOL内の当該リードコマンド又はライトコマンドにおいて指定されたアドレス位置に読み書きする。キャッシュメモリ15は、例えばSDRAMSynchronousDynamicRandomAccessMemory等の揮発メモリから構成され、主として記憶デバイス10に読み書きするデータを一時的に記憶するために用いられる。スナップショットを管理するために利用される後述の管理情報も、記憶デバイス10から読み出されてこのキャッシュメモリ15に格納されて保持される。ローカルメモリ16は、各種制御プログラムを格納するために用いられるほか、ホスト計算機3から与えられるリードコマンドやライトコマンド等の各種コマンドを一時的に保持するために用いられる。CPU17は、このローカルメモリ16に保持されたリードコマンドやライトコマンドを、当該ローカルメモリ16に保持された順番で処理する。後述するスナップショット制御プログラムは、このローカルメモリ16に格納されて保持される。CPU17は、ディスクアレイ装置4全体の動作制御を司るプロセッサである。CPU17は、複数のコアを備える。各コアは適切なソフトウェア環境において複数のソフトウェアスレッドを並列に実行する。各コアには、それぞれ1又は2以上の論理ボリュームVOLが割り当てられる。そして各コアは、自己に割り当てられた論理ボリュームVOLに対するデータのリード/ライト処理の制御等を担当する。2本実施の形態によるスナップショット機能次に、かかるディスクアレイ装置に搭載された本実施の形態によるスナップショット機能について説明する。2-1スナップショットの論理構成図2は、本ディスクアレイ装置におけるスナップショットの論理構成を示す。本ディスクアレイ装置4の場合、スナップショットは、プライマリボリュームPVOL、スナップショットボリュームSSVOL及びデータプールDPの3つのボリュームから構成される。プライマリボリュームPVOLは、ホスト計算機3に提供される論理ボリュームVOLであり、ホスト計算機3からのデータが読み書きされる。このプライマリボリュームPVOLは、通常の実体を有する論理ボリュームVOL及び実体を有さない仮想的な論理ボリュームVOLのいずれであってもかまわない。スナップショットボリュームSSVOLは、スナップショットのデータを保持する仮想的な論理ボリュームであり、プライマリボリュームPVOLとコピーペアに設定される。このコピーペアの状態ペア状態としては、ペアードpaired、スプリットsplit及びシンプレックスsimplexなどがある。ペアードは、プライマリボリュームPVOL及びスナップショットボリュームSSVOLがミラーになっている状態を指し、スプリットは、プライマリボリュームPVOLからスナップショットボリュームSSVOLへのデータライトが行われない状態を指す。従って、コピーペアのペア状態をペアードからスプリットに切り替えることによって、その時点におけるプライマリボリュームPVOLの静的なデータイメージつまりスナップショットがそのコピーペアを形成するスナップショットボリュームSSVOLによって保持されることになる。以下においては、かかるコピーペアのペア状態をペアードからスプリットに切り替えることを、スナップショットボリュームSSVOLをプライマリボリュームPVOLから分割する又はスナップショットを取得すると呼ぶものとする。またシンプレックスは、スナップショットボリュームSSVOLにおいてスナップショットを保持しておらず、かつ、プライマリボリュームPVOLと、スナップショットボリュームSSVOLとがペアードでもない状態を指す。データプールDPは、スナップショットの管理情報と、プライマリボリュームPVOLから退避された旧データとが格納される論理ボリュームVOLである。スナップショットが取得された場合、その後にプライマリボリュームPVOLを対象とするライトコマンドがディスクアレイ装置4に与えられると、そのライトコマンドに基づくライト処理により更新される直前のプライマリボリュームPVOL内のデータ旧データがデータプールDPに退避される。これにより、データプールDPに退避されたデータと、プライマリボリュームPVOLに残存するデータ更新されていないデータとを組み合わせることで、かかるライト処理によりデータが更新される直前のプライマリボリュームPVOLのデータイメージスナップショットを復元することができる。なお本実施の形態の場合、ディスクアレイ装置4では、同一のプライマリボリュームPVOLに対して最大1024個のスナップショットボリュームSSVOLを設定することができる。従って、本実施の形態の場合、ディスクアレイ装置4は、同一のプライマリボリュームPVOLに対して最大1024個のスナップショットを取得することができる。2-2ディスクアレイ装置におけるデータプールへのデータ格納方式上述のように、本ディスクアレイ装置4においては、プライマリボリュームPVOLから退避させた旧データに加えて、各スナップショットの管理情報をもデータプールDP内に保持している。そして、これらスナップショットの管理情報は必要となったタイミングでデータプールDPからキャッシュメモリ15に読み込まれ、不要となった段階でデータプールDPに戻される。図3は、ディスクアレイ装置4における各スナップショットの管理情報と、プライマリボリュームPVOLから退避された旧データとのデータプールDPへの格納方式を示す。この図3に示すように、本ディスクアレイ装置4では、データプールDPの記憶領域を、所定サイズ例えば1GBの複数の領域単位以下、これをチャンクと呼ぶに区分し、これらチャンク単位で管理している。そしてプライマリボリュームPVOLが作成されるごとに、そのプライマリボリュームPVOLに対して、当該プライマリボリュームPVOLについて取得されたスナップショットの管理情報を格納するためのチャンク以下、これを管理情報格納用チャンクと呼ぶCK1と、そのプライマリボリュームPVOLから退避された旧データを格納するためのチャンク以下、これを旧データ退避用チャンクと呼ぶCK2とをそれぞれ割り当てるようになされている。従って、本ディスクアレイ装置4の場合、プライマリボリュームPVOLごとに異なる管理情報格納用チャンクCK1及び旧データ退避用チャンクCK2が割り当てられることとなり、異なるプライマリボリュームPVOLについて取得されたスナップショットの管理情報が同一の管理情報格納用チャンクCK1に格納されたり、異なるプライマリボリュームPVOLから退避された旧データが同一の旧データ退避用チャンクCK2に格納されることはない。これにより本ディスクアレイ装置4においては、例えばプライマリボリュームPVOLが削除された場合など、1つのプライマリボリュームPVOLに対して割り当てられた管理情報格納用チャンクCK1及び又は旧データ退避用チャンクCK2が不要となったときに、他のプライマリボリュームPVOLの状況に関わりなく、その管理情報格納用チャンクCK1及び又は旧データ退避用チャンクCK2を解放することができる。なお、本ディスクアレイ装置4の場合、図4に示すように、データプールDP内の個々のチャンク管理情報格納用チャンクCK1及び旧データ退避用チャンクCK2を含むがそれぞれ何に使用されているかを表すデータプールDPごとのチャンク管理情報17と、各プライマリボリュームPVOLにそれぞれ割り当てた個々のチャンクを特定するためのチャンク特定情報18からなるボリューム割当てチャンク特定情報19とをキャッシュメモリ15内に保持しており、これらチャンク管理情報17及びボリューム割当てチャンク特定情報19に基づいて、プライマリボリュームPVOLに対するチャンクの割当て処理などを行っている。従って、チャンクの解放とは、チャンク管理情報17におけるそのチャンクのステータスを、そのチャンクが未使用であることを表す未割当てに変更し、さらに対応するボリューム割当てチャンク特定情報19における対応するプライマリボリュームと対応付けられたそのチャンクのチャンク特定情報18を削除することを意味する。プライマリボリュームPVOLに対する管理情報格納用チャンクCK1の割り当ては、プライマリボリュームPVOLが作成されたタイミングで行われる。そして、この後、プライマリボリュームPVOL及びスナップショットボリュームSSVOLから構成されるコピーペアが分割された後スナップショットが取得された後、プライマリボリュームPVOLに対する最初のリードアクセス又はライトアクセスがあったタイミングで、そのスナップショットに対して管理情報格納用チャンクCK1内の記憶領域SA1が所定大きさ単位例えば128MB単位で割り当てられ、その記憶領域SA1内にそのスナップショットの管理情報が格納される。またプライマリボリュームPVOLに対する旧データ退避用チャンクCK2の対応付けは、プライマリボリュームPVOLに格納されたデータをデータプールDPに退避させる必要が生じたタイミングで行われる。そして、この後、そのプライマリボリュームPVOLから退避された旧データがその旧データ退避用チャンクCK2に順次格納される。なお、プライマリボリュームPVOLからの旧データの退避は論理ブロック単位64KB単位で行われる。従って、プライマリボリュームPVOLの1つの論理ブロックから旧データが退避される場合に旧データ退避用チャンクCK2から当該データの格納先として割り当てられる記憶領域SA2のサイズは論理ブロックと同じ64KBとなる。2-3スナップショット管理情報次に、スナップショットに関する各種管理情報以下、適宜、これをスナップショット管理情報と呼ぶの具体的な内容について説明する。本ディスクアレイ装置4の場合、かかるスナップショット管理情報として、図5に示すように、ペア管理テーブル20及び分割順番号-世代番号マッピングテーブル27がキャッシュメモリ15に格納され、スナップショット差分ビットマップ21、プライマリボリューム差分ビットマップ22、スナップショット差分集約ビットマップ23、旧データ退避アドレステーブル24、旧データ退避領域空きビットマップ25、旧データ退避未反映ビットマップ26及びスナップショットライト差分ビットマップ28がデータプールDPの管理情報格納用チャンクCK1に格納されている。2-3-1ペア管理テーブルペア管理テーブル20は、プライマリボリュームPVOL及びスナップショットボリュームSSVOLから構成される各コピーペアのペア状態等を管理するために用いられるテーブルであり、プライマリボリュームPVOLごとにそれぞれ作成される。このペア管理テーブル20は、図6に示すように、同一のプライマリボリュームPVOLに対して設定可能なコピーペアのペア数の最大値と同じ数のエントリ列20Aを備えて構成される。本実施の形態の場合、上述のように同一のプライマリボリュームPVOLに対して設定可能なコピーペアの最大ペア数は1024個であるため、これと同じ数のエントリ20Aがペア管理テーブル20に用意されていることになる。各エントリ20Aは、それぞれペア番号欄20B、ペア状態欄20C、LUN欄20D及び世代番号欄20Eを含む複数の欄に区分されている。そしてペア番号欄20Bには、対応するコピーペアに対して付与された識別番号以下、これをペア番号と呼ぶが格納される。またペア状態欄20Cには、そのコピーペアのペア状態が格納され、LUN欄20Dには、そのコピーペアを構成するスナップショットボリュームSSVOLに付与されたLUNが格納される。さらに世代番号欄20Eには、そのスナップショットボリュームSSVOLにより保持されているスナップショットの世代番号が格納される。なお、世代番号の詳細については後述する。従って、例えば図6では、PN0というペア番号のコピーペアは、このペア管理テーブル20と対応付けられたプライマリボリュームPVOLと、2というLUNが付与されたスナップショットボリュームSSVOLとから構成され、そのコピーペアの現在のペア状態がスプリットSplitであり、世代番号が2のスナップショットが当該スナップショットボリュームSSVOLにより保持されていることが示されている。このペア管理テーブル20は、新たなコピーペアの作成時やコピーペアの操作時などに更新される。例えば、スナップショットボリュームSSVOLが新たに作成された場合、そのスナップショットボリュームSSVOLに対して1つのエントリ20Aが割り当てられ、そのエントリ20Aのペア番号欄20Bに、そのスナップショットボリュームSSVOLと、プライマリボリュームPVOLとで構成されるコピーペアに対して付与されたペア番号が格納される。また、そのエントリ20Aのペア状態欄20Cには、そのコピーペアのペア状態としてシンプレックスが格納され、当該エントリ20AのLUN欄20Dには、そのスナップショットボリュームSSVOLのLUNが格納される。さらに、この後、そのスナップショットボリュームSSVOLがプライマリボリュームPVOLから分割されて新たなスナップショットが取得された場合、ペア管理テーブル20における対応するペア状態欄20Cがペアードからスプリットに更新される。2-3-2スナップショット差分ビットマップスナップショット差分ビットマップ21は、各スナップショット内の個々の論理ブロックのデータをデータプールDPに退避済みであるか否かを管理するために用いられるビットマップであり、プライマリボリュームPVOLごとに作成される。なお、以下の説明においては、同一のプライマリボリュームPVOLについて取得された個々のスナップショットを区別するため、世代及び世代番号という用語を用いる。本明細書における世代及び個々の世代に対して付与された識別番号である世代番号は、後述するように、取得されたスナップショットに対して任意に付与された0から始まる番号にすぎず、そのスナップショットが取得された順番そのスナップショットを保持するスナップショットボリュームSSVOLがプライマリボリュームPVOLから分割された順番を表すものではない。スナップショット差分ビットマップ21は、図7に示すように、第1のエントリ列21Aと、同一のプライマリボリュームPVOLについて取得可能な最大数のスナップショットの世代数と同じ数の第2のエントリ列21Bとを備えて構成される。本実施の形態の場合、上述のように同一のプライマリボリュームPVOLについて最大1024個のスナップショットを取得可能であるため、これと同じ数の第2のエントリ21Bが予めスナップショット差分ビットマップ21に設けられている。第1のエントリ21Aは、プライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数のLBA欄21AAに区分されている。そして、これらLBA欄21AAには、それぞれ対応する論理ブロックのLBAが順番に格納されている。また各第2のエントリ21Bは、それぞれプライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数の差分ビット欄21BAに区分されている。そして各差分ビット欄21BAには、それぞれ対応する世代のスナップショット内の対応する論理ブロックのデータをデータプールDPに退避済みであるか否かを表す差分ビットが格納されている。実際上、この差分ビットは、初期時は0に設定されており、対応する世代のスナップショットにおける対応する論理ブロックのデータがデータプールDPに退避される際に1に更新される。従って、差分ビットの1は、対応する世代のスナップショットにおける対応する論理ブロックのデータがデータプールDPに退避されていることを表し、差分ビットの0は、対応する世代のスナップショットにおける対応する論理ブロックのデータがデータプールDPに退避されていないことを表している。2-3-3プライマリボリューム差分ビットマッププライマリボリューム差分ビットマップ22は、同一のプライマリボリュームPVOLについて取得されたすべての世代のスナップショットにおいて、同じLBAの論理ブロック内のデータをデータプールDPに退避済みであるか否かを管理するために利用されるビットマップであり、プライマリボリュームPVOLごとに作成される。このプライマリボリューム差分ビットマップ22は、図8に示すように、第1及び第2のエントリ列22A,22Bを備えて構成される。そして第1のエントリ22Aは、対応するプライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数のLBA欄21AAに区分されており、これらLBA欄21AAに、それぞれ対応する論理ブロックのLBAが格納されている。また第2のエントリ22Bは、第1のエントリの各LBA欄21AAとそれぞれ対応させて設けられた複数の差分ビット欄22BAに区分されている。そして各差分ビット欄22BAには、それぞれそのプライマリボリュームPVOLについて取得されたすべての世代のスナップショットにおいて、対応するLBAの論理ブロックのデータがすべてデータプールDPに退避済みであるか否かを表す差分ビットが格納されている。具体的に、差分ビットは、対応するプライマリボリュームPVOLについて取得されたすべての世代のスナップショットにおいて、対応するLBAの論理ブロックのデータがデータプールDPに退避されている場合には1に設定され、いずれかの世代のスナップショットにおいて、対応するLBAの論理ブロックのデータがデータプールDPに退避されていない未退避の場合には0に設定される。このプライマリボリューム差分ビットマップ22は、対応するプライマリボリュームPVOLにデータが書き込まれた場合に、プライマリボリュームPVOLにおけるそのデータが書き込まれた論理ブロックと対応付けられた差分ビット欄22BAの差分ビットが1に設定される。これは、後述のように、プライマリボリュームPVOLにデータが書き込まれた場合、そのデータが書き込まれた論理ブロックのうちの未だデータ退避が行われていないすべての世代のスナップショットについてデータの退避が行われ、結果的にそのとき取得されているすべての世代のスナップショットにおいて、その論理ブロックのデータが旧データとしてデータプールDPに退避されることになるからである。またこのプライマリボリューム差分ビットマップ22は、新しい世代のスナップショットが取得されると、すべての差分ビット欄22BAの差分ビットが0に設定される。これは、取得直後のスナップショットでは、いずれの論理ブロックのデータもデータプールDPに退避されていないからである。2-3-4スナップショット差分集約ビットマップ一方、スナップショット差分集約ビットマップ23は、スナップショット差分ビットマップ21における個々の差分ビットにより表される情報を、スナップショットごとに、かつ、所定個数の論理ブロックごとの情報に集約したビットマップであり、プライマリボリュームPVOLごとに作成される。実際上、スナップショット差分集約ビットマップ23は、図9に示すように、第1のエントリ列23Aと、同一のプライマリボリュームPVOLについて取得可能な最大数のスナップショットの世代数と同じ数の第2のエントリ列23Bとを備えて構成される。本実施の形態の場合、上述のように同一のプライマリボリュームPVOLについて取得可能なスナップショットの世代数の最大値は1024であるため、これと同じ数の第2のエントリ23Bがスナップショット差分集約ビットマップ23に設けられている。第1のエントリ23Aは、プライマリボリュームPVOL内のLBAが連続する所定個数図9では16個の論理ブロックを1つの論理ブロック群として、各論理ブロック群とそれぞれ対応付けられた複数の集約LBA欄23AAに区分されている。そして各集約LBA欄23AAには、それぞれ対応する論理ブロック群を構成する各論理ブロックのLBAが格納されている。また各第2のエントリ23Bは、第1のエントリ23Aと同様に、それぞれ上述の各論理ブロック群とそれぞれ対応付けられた複数の差分ビット欄以下、これを差分集約ビット欄と呼ぶ23BAに区分されている。そして各差分集約ビット欄23BAには、それぞれ対応する世代のスナップショットにおける、対応する論理ブロック群のデータの退避状態を表す差分集約ビットが格納される。具体的に、差分集約ビットは、スナップショット差分ビットマップ21図7における対応する論理ブロック群を構成する各論理ブロックとそれぞれ対応付けられたすべての差分ビットがすべて0である場合には0に設定され、これ以外の場合には1に設定される。また差分集約ビットは、対応するプライマリボリュームPVOL又はスナップショットの対応する論理ブロックにデータの書き込みライトがあった場合に、必要に応じて0から1に変更される。このスナップショット差分集約ビットマップ23は、プライマリボリュームPVOL及びスナップショットボリュームSSVOLのペアを削除つまり、そのスナップショットボリュームSSVOLに保持されたスナップショットを削除するペア削除処理において、そのスナップショットの旧データをデータプールDPから削除する際に使用される。すなわち、削除対象のスナップショットの旧データをデータプールDPから削除する場合、どの論理ブロックの旧データがデータプールDPに退避されているかをチェックする必要があるが、スナップショット差分ビットマップ21を用いて論理ブロックごとにチェックを行っていては時間がかかり過ぎる。そこで、このような場合には、まず、スナップショット差分集約ビットマップ23をチェックし、差分集約ビット欄23BAに格納された差分集約ビットが1の論理ブロック群については、その論理ブロック群を構成する各論理ブロックのうちのどの論理ブロックの旧データがデータプールDPに退避されているかをスナップショット差分ビットマップ21によりチェックし、差分集約ビット欄23BAに格納された差分集約ビットが0の論理ブロック群については、かかるスナップショット差分ビットマップ21のチェックを行わない。このような処理により、かかるペア削除処理を高速化することができる。なお、このペア削除処理の詳細については後述する図27A及び図27B参照。2-3-5旧データ退避アドレステーブル旧データ退避アドレステーブル24は、各世代のスナップショットについて、個々の論理ブロックに格納されていたデータがデータプールDP内のどこに退避されているかを管理するためのテーブルであり、プライマリボリュームPVOLごとに作成される。この旧データ退避アドレステーブル24は、図10に示すように、第1のエントリ列24Aと、同一のプライマリボリュームPVOLについて取得可能な最大数のスナップショットの世代数と同じ数の第2のエントリ列24Bとを備えて構成される。本実施の形態の場合、上述のように同一のプライマリボリュームPVOLについて取得可能なスナップショットの世代数は最大1024個であるため、これと同じ数の第2のエントリ24Bが旧データ退避アドレステーブル24に予め設けられている。第1のエントリ24Aは、プライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数のLBA欄24AAに区分されており、これらLBA欄24AAに、それぞれ対応する論理ブロックのLBAが格納されている。また第2のエントリ24Bは、それぞれ第1のエントリ24Aの各LBA欄24AAとそれぞれ対応付けられた複数のアドレス欄24BAに区分されている。そして各アドレス欄24BAには、それぞれ対応する世代のスナップショット内の対応する論理ブロックの旧データがデータプールDPに退避済みである場合には、そのデータを退避したデータプールDP内の記憶領域SA2図3のアドレスが格納される。実際上、各アドレス欄24BAには、作成当初は初期値0が格納されている。そして、対応するプライマリボリュームPVOL又はスナップショットに対してデータをライトする際、データライト前の旧データをデータプールDPに退避するときに、そのデータプールDPにおけるそのデータの退避先のアドレスが、対応するアドレス欄24BAに格納される。この旧データ退避アドレステーブル24は、スナップショットをリード先とするリードコマンドがホスト計算機3から与えられたときに参照される。そしてリード先となるスナップショットと対応付けられた第2のエントリ24Bのアドレス欄24BAに初期値が格納されている論理ブロックについてはプライマリボリュームPVOLからデータが読み出され、かかるアドレス欄24BAにデータプールDP内のアドレスが格納されている論理ブロックについては、データプールDPにおけるそのアドレスから1論理ブロック分のデータが読み出される。そして、これらプライマリボリュームPVOLから読み出されたデータと、データプールDPから読み出されたデータとが組み合わされてスナップショットが復元され、復元されたスナップショットがホスト計算機3に提供される。また、旧データ退避アドレステーブル24は、スナップショットへのデータライト時や、スナップショットの削除時に、データライト先又は削除対象のスナップショットが他の世代のスナップショットとデータを共有しているか否かをチェックする際にも使用される。すなわち、2つのスナップショットがデータを共有している場合、同じ論理ブロックと対応付けられたアドレス欄24BAにはデータプールDP上の同じアドレスが格納される。そこで、かかるチェックは、データのライト先のスナップショットについては、そのスナップショットにおけるデータライト先の論理ブロックと対応付けられたアドレス欄24BAについて、そのアドレス欄24BAに格納されているアドレスと同じアドレスが他の第2のエントリ24Bのいずれのアドレス欄24BAにも格納されていないか否かを判断することにより行われる。そして、データライト先のスナップショットにおけるデータライト先の論理ブロックと対応付けられたアドレス欄24BAに格納されているアドレスと同じアドレスが他のいずれかの第2のエントリ24Bのアドレス欄24BAに格納されている場合、そのスナップショットにおけるその論理ブロックのデータは、他の世代のスナップショットと共有されていることになる。かくして、この場合には、データプールDP上の対応する旧データ退避用チャンクCK2図3内に新たな記憶領域SA2図3が確保され、データライト先のスナップショットにおけるそのデータが書き込まれる前のデータ旧データがこの記憶領域SA2に退避される。また、この際、旧データ退避アドレステーブル24上のデータライト先のスナップショットと対応付けられた第2のエントリ24Bにおける、データライト先の論理ブロックと対応付けられたアドレス欄24BAに、上述の記憶領域SA2のアドレスが格納される。また、削除対象のスナップショットに対するかかるチェックは、旧データ退避アドレステーブル24上のそのスナップショットと対応付けられた第2のエントリ24Bの各アドレス欄24BAについて、そのアドレス欄24BAに格納されたアドレスが、旧データ退避アドレステーブル24上の他のいずれのアドレス欄24BAに格納されているアドレスと一致するか否かを判断することにより行われる。そして、旧データ退避アドレステーブル24上の削除対象のスナップショットに対する各アドレス欄24BAにそれぞれ格納されたアドレスが、いずれの他のアドレス欄24BAに格納されているアドレスとも一致しない場合にはそのデータは削除され、旧データ退避アドレステーブル24上の削除対象のスナップショットに対する各アドレス欄24BAに格納されたアドレスが、いずれかの他のアドレス欄24BAに格納されているアドレスと一致した場合には、そのデータを削除することなく、データプールDP上に残しておく。2-3-6旧データ退避領域空きビットマップ旧データ退避領域空きビットマップ25は、データプールDP内に定義された旧データ退避用チャンクCK2図3内の記憶領域SA2図3のうち、旧データが退避されていない記憶領域以下、これを空き記憶領域と呼ぶSA2を管理するために利用されるテーブルであり、データプールDPごとに作成される。なお、本実施の形態においては、データプールDPは1つだけであるので、旧データ退避領域空きビットマップ25も1つだけ作成される。旧データ退避領域空きビットマップ25は、図11に示すように、データプールDP内の旧データ退避用チャンクCK2数と同じ数のエントリ25Aを備えて構成される。各エントリ25Aは、それぞれデータプールDP内のいずれかの旧データ退避用チャンクCK2と対応付けられており、当該旧データ退避用チャンクCK2内の1論理ブロック分の旧データが退避される各記憶領域SA2とそれぞれ1対1に対応付けられた複数の空きビット欄25AAに区分されている。そして、各空きビット欄25AAには、それぞれ対応する旧データ退避用チャンクCK2内の対応する記憶領域SA2に旧データが退避されているか否かを表す空きビットがそれぞれ格納される。具体的に、空きビットは、対応する旧データ退避用チャンクCK2内の対応する記憶領域SA2が空き記憶領域である場合には0に設定され、当該記憶領域SA2が空き記憶領域でない場合には1に設定される。この旧データ退避領域空きビットマップ25は、プライマリボリュームPVOLやスナップショットにデータを書き込むに際し、旧データをデータプールDP内の対応する旧データ退避用チャンクCK2に退避させる場合に、その旧データ退避用チャンクCK2内の空き記憶領域SA2を検索するときに利用される。そしてプライマリボリュームPVOLやスナップショットのデータをその旧データ退避用チャンクCK2内の記憶領域SA2に退避させた場合、対応する空きビット欄25AAに格納された空きビットが0から1に更新される。また旧データ退避領域空きビットマップ25は、スナップショットが削除され、これに伴いデータプールDP内の旧データ退避用チャンクCK2からそのスナップショットの旧データが削除された場合に、対応する空きビット欄25AAの空きビットが1から0に更新される。そして旧データ退避領域空きビットマップ25内の各エントリ25Aにおいて、そのエントリ25Aに含まれる各空きビット欄25AAに格納された空きビットがすべて0となった場合に、その旧データ退避領域空きビットマップ25と対応付けられた旧データ退避用チャンクCK2が解放される。2-3-7旧データ退避未反映ビットマップスナップショットの複数世代に渡って更新が行われなかった論理ブロック内のデータが更新された場合、そのデータはかかる更新に伴って旧データとしてデータプールDPに退避される。この場合、データプールDPに退避された旧データは、かかる複数世代のスナップショット間で共有されることになるため、これに応じてスナップショット差分ビットマップ21や、スナップショット差分集約ビットマップ23及び旧データ退避アドレステーブル24などの管理情報をかかる複数世代のスナップショット分だけ更新する必要がある。例えば、図12A~Cに示すように、プライマリボリュームPVOL内のLBAが0の論理ブロックが更新されないまま第0~第1023世代世代番号は0~1023のスナップショットが取得されている状態において、その論理ブロックに格納されたデータが更新された場合、図13A~Cに示すように、データプールDPへの旧データの退避に伴って、スナップショット差分ビットマップ21における当該論理ブロックと対応付けられた各差分ビット欄21BAにそれぞれ格納されているすべての差分ビット破線K1Aで囲まれたすべての差分ビットと、スナップショット差分集約ビットマップ23におけるかかる論理ブロックと対応付けられた各差分集約ビット欄23BAにそれぞれ格納されているすべての差分集約ビット破線K2Aで囲まれたすべての差分集約ビットと、旧データ退避アドレステーブル24におけるかかる論理ブロックと対応付けられた各アドレス欄24BAにそれぞれ格納されているすべてのアドレス破線K3Aで囲まれたすべてのアドレスとを更新しなければならない。しかしながら、このような処理は更新すべき世代数が多いほど負荷が大きく、このような処理をプライマリボリュームPVOLへのデータライト時に実行することは、当該プライマリボリュームPVOLに対するデータのライト性能に悪影響を及ぼすおそれがある。そこで、本実施の形態によるディスクアレイ装置4においては、プライマリボリュームPVOLへのデータライト時には、旧データを共有する複数世代のスナップショットのうち、最新世代のスナップショットの管理情報のみを更新する。そして、残りの世代のスナップショットの管理情報は、その残りのスナップショットへのアクセスリードアクセス又はライトアクセスがあったときや、その残りのスナップショットを削除する際そのスナップショットを保持するスナップショットボリュームSSVOLとプライマリボリュームPVOLとの間のコピーペアを削除する際に更新する。例えば、図12A~Cについて上述した例の場合、図14A~Cに示すように、プライマリボリュームPVOLへのデータライト時には、旧データを共有する複数世代のスナップショットのうち、最新世代である第1023世代世代番号は1023のスナップショットに関する管理情報破線K1C~K3Cで囲んだ管理情報のみを更新する。そして、残りの世代のスナップショットの管理情報破線K1B~K3Bで囲んだ管理情報は、その残りのスナップショットへのリードアクセス又はライトアクセスがあったときや、その残りのスナップショットを削除する際に更新する。このように本ディスクアレイ装置4では、頻繁に発生するプライマリボリュームPVOLへのデータライト時の処理負荷を、あまり発生しないスナップショットへのアクセス時に移すことで、上述のような管理情報の更新処理に起因するプライマリボリュームPVOLへのデータライト性能が低下するのを有効に防止している。以上のような動作を実行するため、本ディスクアレイ装置4では、旧データを共有する複数世代のスナップショットのうち、最新世代以外の世代のスナップショットの管理情報を更新済か否かを、旧データ退避未反映ビットマップ26を用いて管理している。この旧データ退避未反映ビットマップ26は、プライマリボリュームPVOLごとに作成される。旧データ退避未反映ビットマップ26は、図15に示すように、第1及び第2のエントリ列26A,26Bを備えて構成される。そして第1のエントリ26Aは、プライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数のLBA欄26AAに区分されており、これらLBA欄26AAに、それぞれ対応する論理ブロックのLBAが格納されている。また第2のエントリ26Bは、対応するプライマリボリュームPVOLの各論理ブロックにそれぞれ対応させて設けられた複数の未反映ビット欄26BAを備えて構成される。そして、これらの未反映ビット欄26BAには、それぞれプライマリボリュームPVOLへのデータライトがあった場合に、最新世代以外の世代のスナップショットの管理情報を更新済であるか否かを表す未反映ビットが格納されている。具体的に、未反映ビットは、プライマリボリュームPVOLへのデータライトにより、対応する論理ブロック内の旧データがデータプールDPに退避された場合に初期値0から1に更新され、この後、最新世代以外の世代のスナップショットの管理情報が更新されると、0に戻される。つまり、かかる未反映ビットが1であることは最新世代以外の世代のスナップショットの管理情報の更新が行われていないことを表し、かかる未反映ビットが0であることは最新世代以外の世代のスナップショットの管理情報が更新済であることを表す。なお、データプールDPに退避された旧データを共有するスナップショットの世代間でどの世代が最新であるかという判断は、後述する分割順番号-世代番号マッピングテーブル27に基づいて行われる。2-3-8分割順番号-世代番号マッピングテーブル図12~図15について上述したように、本ディスクアレイ装置4では、プライマリボリュームPVOLへのデータライト時には、旧データを共有する複数世代のスナップショットのうち、最新世代のスナップショットの管理情報のみを更新し、残りの世代のスナップショットの管理情報は、その残りのスナップショットへのリードアクセス又はライトアクセスがあったときや、その残りのスナップショットを削除する際に更新する。ここで、図16A-1は、このような機能を有する本ディスクアレイ装置4におけるスナップショット差分ビットマップ21の状態例を示し、図16A-2は、図16A-1と同じ時点における旧データ退避アドレステーブル24の状態例を示す。これら図16A-1及びA-2は、いずれもスナップショット差分ビットマップ21や、旧データ退避アドレステーブル24におけるLBAが0の論理ブロックに対応する部分のみを抜き出したものである。また図16A-2において、A1~A3は、いずれもデータプールDP上のアドレスを示す。後述する図16B-1及びB-2についても同様である。図16A-1では、第3世代世代番号は3のスナップショットが取得された後、第4世代世代番号は4のスナップショットが取得されるまでの間にプライマリボリュームPVOLのLBAが0の論理ブロックのデータが更新されたため、スナップショット差分ビットマップ21におけるLBAが0の論理ブロックと対応付けられた差分ビットがデータライト時の最新世代として1に更新されたことが示されている。またこの図16A-1では、この際、第2世代世代番号は2のスナップショットの管理情報の更新が行われず、LBAが0の論理ブロックと対応付けられた差分ビットが0のままとなっていることも示されている。また図16A-1では、その後、第7世代世代番号は7のスナップショットが取得されるまでの間はプライマリボリュームPVOLのLBAが0の論理ブロックのデータが更新されず、第7世代のスナップショットの取得後にLBAが0の論理ブロックのデータが更新されたため、スナップショット差分ビットマップ21における当該論理ブロックと対応付けられた差分ビットがデータライト時の最新世代として1に更新されたことが示されている。またこの図では、この際、第4~6世代世代番号は4~6のスナップショットの管理情報の更新が行われず、当該論理ブロックと対応付けられた第4~6世代の差分ビットがいずれも0のままとなっていることも示されている。この場合において、例えば、取得された順番が早いスナップショットほど、そのスナップショットに若い世代番号を割り当てる制御が行われる場合には、その後行われる最新世代のスナップショットの管理情報を残りの世代のスナップショットの管理情報に反映させる処理以下、これを差分反映処理と呼ぶの実行時において、例えば、第2世代のスナップショットについては、第3世代のスナップショットの管理情報を反映させ、第4~第6世代のスナップショットについては、第7世代のスナップショットの管理情報を反映させれば良い。具体的には、第2世代のスナップショットについては、図16B-1に示すように、スナップショット差分ビットマップ21のエントリのうち、第2世代のスナップショットと対応付けられたエントリ21Bにおける当該論理ブロックと対応付けられた差分ビット欄21BAの差分ビットを1に更新する。また図16B-2に示すように、旧データ退避アドレステーブル24のエントリ24Bのうち、第3世代のスナップショットと対応付けられたエントリ24BにおけるプライマリボリュームPVOLのLBAが0の論理ブロックと対応付けられたアドレス欄24BAに格納されたアドレスを、第2世代のスナップショットと対応付けられたエントリ24Bにおける当該論理ブロックと対応付けられたアドレス欄24BAにコピーする。さらに、スナップショット差分集約ビットマップ23図9のエントリ23B図9のうち、第2世代のスナップショットと対応付けられたエントリ23Bにおけるかかる論理ブロックと対応付けられた差分集約ビット欄23BA図3に格納されている差分集約ビットも必要に応じて更新する。同様に、第4~第6世代のスナップショットについては、図16B-1に示すように、スナップショット差分ビットマップ21のエントリ21Bのうち、第4~第6世代のスナップショットとそれぞれ対応付けられた各エントリ21Bにおける当該論理ブロックと対応付けられた差分ビット欄21BAの差分ビットを1にそれぞれ更新する。また図16B-2に示すように、旧データ退避アドレステーブル24のエントリ24Bのうち、第7世代のスナップショットと対応付けられたエントリ24BにおけるプライマリボリュームPVOLのLBAが0の論理ブロックと対応付けられたアドレス欄24BAに格納されたアドレスを、第4~第6世代のスナップショットとそれぞれ対応付けられた各エントリ24Bにおける当該論理ブロックと対応付けられた各アドレス欄24BAにそれぞれコピーする。さらに、スナップショット差分集約ビットマップ23図9のエントリ23B図9のうち、第4~第6世代のスナップショットとそれぞれ対応付けられた各エントリ23Bにおけるかかる論理ブロックと対応付けられた差分集約ビット欄23BAに格納されている差分集約ビットも必要に応じて更新する。さらに、この後、旧データ退避未反映ビットマップ26図15における、プライマリボリュームPVOLのかかる論理ブロックと対応付けられた第2及び第4~第6世代のスナップショットと対応する未反映ビット欄26BA図15に格納されている未反映ビットを1から0に更新する。以上のような差分反映処理により、第3世代のスナップショットの管理情報を第2世代のスナップショットの管理情報に反映することができると共に、第7世代のスナップショットの管理情報を第4~第6世代のスナップショットの管理情報に反映することができる。しかしながら、本ディスクアレイ装置4の場合、後述のように世代番号は、スナップショットボリュームSSVOLをプライマリボリュームPVOLから分割することによりスナップショットを取得したときに、そのスナップショットに対して任意に割り当てられる番号であって、そのスナップショットが取得された順番を表すものではない。従って、例えば図16A-1~B-2の例において、例えば第2世代のスナップショットが第3世代のスナップショットよりも後に取得されたものである場合に上述のような差分反映処理を実行すると、先に取得されたスナップショットの管理情報が後から取得されたスナップショットの管理情報に反映されることとなり、不具合が生じることとになる。そこで、本ディスクアレイ装置4は、スナップショットを保持するスナップショットボリュームSSVOLをプライマリボリュームから分割することによりスナップショットを取得した順番と、そのスナップショットに割り当てられた世代番号との関係を分割順番号-世代番号マッピングテーブル27を用いて管理している。この分割順番号-世代番号マッピングテーブル27は、プライマリボリュームPVOLごとに作成される。分割順番号-世代番号マッピングテーブル27は、図17に示すように、第1及び第2のエントリ行27A,27Bを備えて構成される。そして第1のエントリ27Aは、同一のプライマリボリュームPVOLに対して設定可能なコピーペアのペア数の最大値と同じ数の分割順番号欄27AAに区分され、これら分割順番号欄27AAにそれぞれ分割順番号が格納されている。なお、分割順番号は、左端の分割順番号欄27AAに0、その右隣の分割順番号欄27AAに1、さらにその右隣の分割順番号欄27AAに2......というように、右の分割順番号欄27AAほど1ずつ数値が大きくなるように分割順番号欄27AAに格納されている。また第2のエントリ27Bは、上述の分割順番号欄27AAにそれぞれ対応させて複数の世代番号欄27Bに区分され、これらの世代番号欄27Bに、対応するスナップショットの世代番号が格納されている。なお、ここでいう対応するスナップショットの世代番号とは、同一のプライマリボリュームPVOLとコピーペアに設定されたスナップショットボリュームSSVOLのうち、当該プライマリボリュームPVOLから分割された順番が、対応する分割順番号欄27AAに格納された分割順番号と同じスナップショットボリュームSSVOLにより保持されているスナップショットを指す。この分割順番号-世代番号マッピングテーブル27は、第1に、プライマリボリュームPVOLに対するデータライトがあったときに、最新世代のスナップショットを検出するために利用され、第2に、上述の差分反映処理時にスナップショットボリュームSSVOLのプライマリボリュームPVOLからの分割順番号を検出するために利用される。具体的に、ディスクアレイ装置4は、例えば、スナップショット差分ビットマップ21が図18Cに示す状態であり、分割順番号-世代番号マッピングテーブル27が図18Bに示す状態である場合、分割順番号-世代番号マッピングテーブル27を利用して、スナップショット差分ビットマップ21における各スナップショットとそれぞれ対応するエントリ21Bの並び順を、図18Aに示すように、スナップショットの取得順に並び変える。同様に、このときの旧データ退避アドレステーブル24が図19Cに示す状態の場合、分割順番号-世代番号マッピングテーブル27図19Bを利用して、旧データ退避アドレステーブル24における各スナップショットとそれぞれ対応するエントリ21Bの並び順を、図19Aに示すように、その取得順に並び替える。例えば図18Cの例では、図18Bを参照すると、第0世代世代番号は0のスナップショットが分割順番号が0のスナップショットボリュームSSVOLにより保持されたスナップショットであり、その後、第2世代、第3世代、第4世代、第6世代、第7世代、第1世代及び第5世代のスナップショットがこの順番で取得されていることが分かる。そこで、差分反映処理時には、図18Aに示すように、各スナップショットとそれぞれ対応するエントリ21Bがこの世代番号の順番で並ぶように、スナップショット差分ビットマップ21における各エントリ21Bを並び替え、図18Aに示すように、各スナップショットと対応するエントリ24Bがこの世代番号の順番で並ぶように、旧データ退避アドレステーブル24における各エントリ24Bを並び替える。そして、差分反映処理では、このようにしてエントリ21A,24Bの並び順を対応するスナップショットボリュームSSVOLの分割順スナップショットの取得順に並び替えたスナップショット差分ビットマップ21を利用して、まず、プライマリボリュームPVOLの1つの論理ブロックに注目し、各エントリ21Bのその論理ブロックと対応付けられた差分ビットのうち、値が1の差分ビットで挟まれた値が0の差分ビットを検出する。例えば図18Aの例では、LBAが0の論理ブロックと対応付けられた各エントリ21Bの差分ビットのうち、分割順番号が1のスナップショットボリュームSSVOLにより保持されるスナップショット第2世代のスナップショットと対応付けられた差分ビットと、分割順番号が3~5のスナップショットボリュームSSVOLによりそれぞれ保持されるスナップショットそれぞれ第4世代、第6世代又は第7世代のスナップショットとそれぞれ対応付けられた差分ビットとが、検出すべき差分ビットとなる。そして、差分反映処理では、このようにして検出した値が0の差分ビットと対応付けられた各スナップショット以下、これを未反映スナップショットと呼ぶについて、その未反映スナップショットの取得後、最も早く取得されたスナップショットであって、かかる論理ブロックと対応付けられた差分ビットの値が1のスナップショットを検出し、当該スナップショットの管理情報のうちのかかる論理ブロックに関する管理情報を、対応する未反映スナップショットの管理情報のうちのかかる論理ブロックに関する管理情報に反映する。例えば図18及び図19の例の場合、プライマリボリュームPVOLのそのとき注目している論理ブロックのLBAが0であるものとすると、分割順番号が1のスナップショットボリュームSSVOLにより保持されているスナップショット第2世代のスナップショットについては、そのスナップショットの取得後、最も早く取得されたスナップショットであって、かかる論理ブロックと対応付けられた差分ビットの値が1のスナップショットは、分割順番号が2のスナップショットボリュームSSVOLにより保持されている世代番号が3のスナップショット第3世代のスナップショットである。よって、この場合には、第3世代のスナップショットの管理情報のうち、かかる論理ブロックに関する管理情報を、第2世代のスナップショットの管理情報のうちの、当該論理ブロックに関する管理情報に反映する。具体的には、図19Aに示す旧データ退避アドレステーブル24のエントリ24Bのうち、第3世代のスナップショットと対応付けられたエントリ24B内のかかる論理ブロックと対応付けられたアドレス欄24BAに格納されているアドレスを、当該旧データ退避アドレステーブル24のエントリ24Bのうち、第2世代のスナップショットと対応付けられたエントリ24B内のかかる論理ブロックと対応付けられたアドレス欄24BAにコピーする。また図18Aに示すスナップショット差分ビットマップ21のエントリのうち、第2世代のスナップショットと対応付けられたエントリ21B内のかかる論理ブロックと対応付けられた差分ビット欄21BAに格納されている差分ビットを1に更新する。同様に、分割順番号が3~5のスナップショットボリュームSSVOLに保持されている第4世代、第6世代及び第7世代のスナップショットについては、これらのスナップショットの取得後、最も早く取得されたスナップショットであって、かかる論理ブロックと対応付けられた差分ビットの値が1のスナップショットは、分割順番号が6のスナップショットボリュームSSVOLに保持されている第1世代のスナップショットである。よって、この場合には、第1世代のスナップショットの管理情報のうち、かかる論理ブロックに関する管理情報を、分割順番号が3~5のスナップショットボリュームSSVOLに保持されている第4世代、第6世代及び第7世代のスナップショットの管理情報のうちの、当該論理ブロックに関する管理情報に反映する。具体的には、図19Aに示す旧データ退避アドレステーブル24のエントリ24Bのうち、第1世代のスナップショットと対応付けられたエントリ24B内のかかる論理ブロックと対応付けられたアドレス欄24BAに格納されているアドレスを、当該旧データ退避アドレステーブル24のエントリ24Bのうち、分割順番号が3~5のスナップショットボリュームSSVOLに保持されている第4世代、第6世代及び第7世代のスナップショットとそれぞれ対応付けられた各エントリ24B内のかかる論理ブロックと対応付けられたアドレス欄24BAにそれぞれコピーする。また図18Aに示すスナップショット差分ビットマップ21のエントリ21Bのうち、第4世代、第6世代及び第7世代のスナップショットとそれぞれ対応付けられた各エントリ21B内のかかる論理ブロックと対応付けられた差分ビット欄21BAに格納されている差分ビットをそれぞれ1に更新する。そして、この後、旧データ退避未反映ビットマップ26図15上の未反映ビット欄26BA図15のうち、かかる論理ブロックと対応付けられた未反映ビット欄26BAに格納されている未反映ビットを1から0に変更する。また差分反映処理では、以上の処理をプライマリボリュームPVOLのすべての論理ブロックについて実行する。このような処理により、各未反映スナップショットについて、対応するスナップショットの管理情報がその未反映スナップショットの管理情報に反映されることになる。2-3-9スナップショットライト差分ビットマップ上述のように、差分反映処理では、後から取得されたスナップショットの管理情報を反映すべき世代をスナップショット差分ビットマップ21及び分割順番号-世代番号マッピングテーブル27を利用して判断する。ところで、かかる差分反映処理が実行される前に、差分反映処理が行われていない世代以下、これを未反映世代と呼ぶのスナップショットに対してデータライトが行われた場合、スナップショット差分ビットマップ21におけるそのデータライトが行われた未反映世代のスナップショットと対応付けられたエントリ21Bのうち、かかるデータライトが行われた論理ブロックと対応付けられた差分ビットが1に更新される。しかしながら、このような処理が行われると、その後実行される差分反映処理が正しく行われなくなる問題がある。例えば、プライマリボリュームPVOLからのスナップショットボリュームSSVOLの分割順と、それらのスナップショットボリュームSSVOLに保持されるスナップショットの世代番号とが一致する場合において、スナップショット差分ビットマップ21が図20A-1、旧データ退避アドレステーブル24が図20A-2のような状態にそれぞれある場合において、第5世代のスナップショットのアドレス0にデータライトがあった場合を考える。この場合、スナップショット差分ビットマップ21は、図20B-1に示すように、第5世代と対応するエントリ21BにおけるLBAが0の論理ブロックと対応する差分ビット欄21BAに格納された差分ビットが1に更新され、旧データ退避アドレステーブル24は、図20B-2に示すように、第5世代のスナップショットのデータライトがあった0の論理ブロックのデータを退避させたデータプールDP内のアドレス図20B-2ではA4が格納される。そして、この後、差分反映処理が行われた場合、図20B-1及びB-2において破線の矢印で示すように、第7世代のスナップショットの管理情報が第6世代のスナップショットの管理情報に反映され、第5世代のスナップショットの管理情報が第4世代のスナップショットの管理情報に反映されることになる。つまり、本来的には、図20A-1及びA-2において破線の矢印で示すように、第4世代のスナップショットの管理情報は、第5世代のスナップショットではなく、第7世代のスナップショットの管理情報に基づいて更新されるべきであるにも関わらず、第5世代のスナップショットに対してデータライトがあったために、第4世代のスナップショットに対する差分反映処理が正しく行われなくなる。そこで、本ディスクアレイ装置4においては、スナップショットに対するデータライトがあったか否かを、スナップショットライト差分ビットマップ28を用いて管理している。スナップショットライト差分ビットマップ28は、プライマリボリュームPVOLごとに作成されるビットマップであり、図21に示すように、第1のエントリ列28Aと、同一のプライマリボリュームPVOLについて取得可能な最大数のスナップショットの世代数と同じ数の第2のエントリ列28Bを備えて構成される。本実施の形態の場合、上述のように同一のプライマリボリュームPVOLについて取得可能なスナップショットの世代数は最大1024個であり、これと同じ数の第2のエントリ28Bが予めスナップショットライト差分ビットマップ28に設けられている。第1のエントリ28Aは、プライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数のLBA欄28AAに区分されている。そして、これらLBA欄28AAには、それぞれ対応する論理ブロックのLBAが格納されている。また各第2のエントリ28Bは、それぞれプライマリボリュームPVOL内の各論理ブロックとそれぞれ対応付けられた複数のライト差分ビット欄28BAに区分されている。そして各ライト差分ビット欄28BAには、それぞれ対応する世代のスナップショットの対応する論理ブロック内のデータにデータライトがあったか否かを表すライト差分ビットが格納される。実際上、ライト差分ビットは、初期時は0に設定されており、対応する世代のスナップショットにおける対応する論理ブロックにデータが書き込まれた場合に1に更新される。従って、ライト差分ビットの0は、対応する世代のスナップショットにおける対応する論理ブロックに対するデータライトが発生していない対応するプライマリボリュームPVOLの論理ブロックにライトが発生している場合を除き、その論理ブロックに格納されていたデータがデータプールDPに退避されていないことを表し、ライト差分ビットの1は、対応する世代のスナップショットにおける対応する論理ブロックに対するデータライトが発生したその論理ブロックに格納されていたデータがデータプールDPに退避されたことを表している。2-4各種処理の処理手順次に、かかる本ディスクアレイ装置4に搭載されたスナップショット機能に関連してディスクアレイ装置4のCPU17図1により実行される各種処理の具体的な処理内容について説明する。なお、CPU17は、以下の各種処理をローカルメモリ16図1に格納された図示しない制御プログラムに基づいて実行する。2-4-1リード処理図22は、ホスト計算機3から送信されたプライマリボリュームPVOLを対象とするリードコマンドをディスクアレイ装置4が受信した場合にCPU17により実行されるリード処理の処理手順を示す。CPU17は、かかるリードコマンドを受信すると、この図22に示すリード処理を開始し、かかるリードコマンドに基づいてバックエンドインタフェース14図1を制御することにより、当該リードコマンドにおいて指定されたプライマリボリュームPVOL内の当該リードコマンドにおいて指定された論理ブロックからデータをリードする。またCPU17は、リードしたデータをキャッシュメモリ15を経由してそのリードコマンドの発行元のホスト計算機3に転送させるSP1。そしてCPU17は、この後、このリード処理を終了する。2-4-2ライト処理また図23は、ホスト計算機3から送信されたプライマリボリュームPVOLを対象とするライトコマンドをディスクアレイ装置34が受信した場合にCPU17により実行されるライト処理の処理手順を示す。CPU17は、かかるライトコマンドを受信すると、この図23に示すライト処理を開始し、まず、データプールDPに格納されているスナップショット管理情報スナップショット差分ビットマップ21、プライマリボリューム差分ビットマップ22、スナップショット差分集約ビットマップ23、旧データ退避アドレステーブル24、旧データ退避領域空きビットマップ25、旧データ退避未反映ビットマップ26及びスナップショットライト差分ビットマップ28のうちの処理に必要な一部の管理情報を、バックエンドインタフェース14を介してキャッシュメモリ15に読み出すSP10。従って、この後、ライト処理におけるこれらの管理情報の参照及び更新等は、キャッシュメモリ15上に読み出された管理情報に対して行われることになる。続いて、CPU17は、データのライト先のプライマリボリュームPVOLと対応するプライマリボリューム差分ビットマップ22図8を参照して、かかるライトコマンドにおいてデータのライト先として指定されたプライマリボリューム以下、これをライト先プライマリボリュームと呼ぶPVOL上の、当該ライトコマンドにおいてデータのライト先として指定された論理ブロック以下、これをライト先論理ブロックと呼ぶに格納されているデータがデータプールDPに退避されているか否かを判断するSP11。この判断は、かかるプライマリボリューム差分ビットマップ22におけるライト先論理ブロックと対応付けられた差分ビットが0であるか否かを判断することにより行われる。そしてCPU17は、この判断で否定結果を得ると、ステップSP21に進む。これに対してCPU17は、この判断で肯定結果を得ると、スナップショット差分ビットマップ21図7、分割順番号-世代番号マッピングテーブル27図17及びスナップショットライト差分ビットマップ28図21を参照して、かかるライト先論理ブロックのデータが未だ退避されていないスナップショットの世代のうちの最新世代の世代番号を検出するSP12。次いで、CPU17は、旧データ退避領域空きビットマップ25図11を参照して、かかるライト先論理ブロックに格納されているデータの退避先を決定するSP13。具体的に、CPU17は、データプールDP内のライト先プライマリボリュームPVOLと対応付けられた旧データ退避用チャンクCK2図3内に、かかるライト先論理ブロック内のデータ旧データを退避するだけの記憶領域SA2図3の空きがあるか否かを判定する。そしてCPU17は、かかる空きがあると判定した場合には、当該データを退避できる分の記憶領域SA2をその旧データ退避用チャンクCK2内に確保し、確保した記憶領域SA2をかかるデータの退避先として決定する。またCPU17は、データプールDP内のライト先プライマリボリュームPVOLと対応付けられた旧データ退避用チャンクCK2内に、かかる空きがないと判定した場合には、データプールDP上にそのライト先プライマリボリュームPVOLと対応付けた新たな旧データ退避用チャンクCK2を作成し、その旧データ退避用チャンクCK2内にかかるライト先論理ブロックのデータを退避可能な分の記憶領域SA2を確保し、確保した記憶領域SA2をかかるデータの退避先として決定する。さらに、CPU17は、ライト先プライマリボリュームPVOL内のライト先論理ブロックに格納されているデータ旧データの退避先を旧データ退避アドレステーブル24図10に登録するSP14。具体的に、CPU17は、旧データ退避アドレステーブル24の第2のエントリ24B図10のうち、ステップSP12において検出した最新世代のスナップショットと対応付けられた第2のエントリ24Bにおけるライト先論理ブロックと対応付けられたアドレス欄24BAに、ステップSP13においてデータの退避先として決定したデータプールDP上の記憶領域SA2のアドレスを格納する。さらにCPU17は、旧データ退避領域空きビットマップ25図11内の各空きビット欄25AA図11のうち、ステップSP13においてデータの退避先として決定した記憶領域SA2と対応する空きビット欄25AAに格納されている空きビットを0から1に変更しSP15、この後、ライト先プライマリボリュームPVOL内のライト先論理ブロックに格納されているデータ旧データを、データプールDP内のステップSP13において決定した記憶領域SA2に退避させるSP16。続いて、CPU17は、ライト先プライマリボリュームPVOL上のライト先論理ブロックと対応する旧データ退避未反映ビットマップ26図15上の未反映ビット欄26BAに格納された未反映ビットを0から1に変更するSP17。またCPU17は、スナップショット差分集約ビットマップ23図9上の差分集約ビット欄23BAのうち、ステップSP16においてデータの退避が行われたライト先論理ブロックと対応付けられた差分集約ビット欄23BAに格納されている差分集約ビットを0から1に変更するSP18。次いで、CPU17は、スナップショット差分ビットマップ21図7の差分ビット欄21BA図7のうち、ステップSP16においてデータの退避を行ったライト先論理ブロックと対応する差分ビット欄21BA最新世代のスナップショットと対応する第1のエントリ21B内のライト先論理ブロックと対応する差分ビット欄21BAに格納されている差分ビットを0から1に更新するSP19。またCPU17は、プライマリボリューム差分ビットマップ22図8の差分ビット欄22BA図8のうち、かかるライト先論理ブロックと対応する差分ビット欄22BAに格納されている差分ビットを0から1に更新するSP20。さらにCPU17は、この後、ライトコマンドと共にホスト計算機3から送られてきたライトデータをキャッシュメモリ15図1を経由してライト先プライマリボリュームPVOL内のライト先論理ブロックにライトするSP21。そしてCPU17は、この後、このライト処理を終了する。2-4-3第1のスナップショットリード処理図24は、ホスト計算機3から送信されたスナップショットを対象とするリードコマンド以下、これをスナップショットリードコマンドと呼ぶをディスクアレイ装置4が受信した場合にCPU17により実行される第1のスナップショットリード処理の処理手順を示す。CPU17は、かかるスナップショットリードコマンドを受信すると、この図24に示す第1のスナップショットリード処理を開始し、まず、データプールDPに格納されている管理情報のうちの処理に必要な一部の管理情報を、バックエンドインタフェース14図1を介してキャッシュメモリ15図1に読み出すSP30。従って、この後、第1のスナップショットリード処理における管理情報の参照及び更新等は、キャッシュメモリ15上に読み出された管理情報に対して行われることになる。続いて、CPU17は、対応する旧データ退避未反映ビットマップ26図15を参照して、スナップショットリードコマンドにおいてデータのリード先として指定された世代のスナップショット以下、これをリード先スナップショットと呼ぶ内の当該スナップショットリードコマンドにおいてデータのリード先として指定された論理ブロック以下、これをリード先論理ブロックと呼ぶに対する差分反映処理が未実行であるか否かを判断するSP31。この判断は、かかる旧データ退避未反映ビットマップ26の未反映ビット欄26BAのうち、リード先スナップショットと対応付けられた第2のエントリ26B内のリード先論理ブロックと対応付けられた未反映ビット欄26BAに格納されている未反映ビットが1であるか否かを判断することにより行われる。そしてCPU17は、この判断で否定結果を得るとステップSP34に進む。これに対してCPU17は、ステップSP31の判断で肯定結果を得ると、スナップショット差分ビットマップ21図7、スナップショット差分集約ビットマップ23図9及び旧データ退避アドレステーブル24図10を参照して、差分反映処理を実行するSP32。なお、このとき差分反映処理の対象とするのは、リード先スナップショットのリード先論理ブロックに対応する全世代のスナップショットの論理ブロックつまりすべての世代のスナップショットにおけるリード先論理ブロックと同じLABの論理ブロックである。ただし、このステップSP32において、差分反映処理を実行すべきすべての世代のスナップショットのすべての論理ブロックに対して差分反映処理を実行するようにしても良い。次いで、CPU17は、旧データ退避未反映ビットマップ26図15の未反映ビット欄26BAのうち、ステップSP32においてすべての世代のスナップショットにおいて差分反映処理を実行した論理ブロックに対応する未反映ビット欄26BAに格納されている未反映ビットを1から0に変更するSP33。そしてCPU17は、この後、スナップショット差分ビットマップ21内の差分ビット欄21BAのうち、リード先スナップショットにおけるリード先論理ブロックと対応する差分ビット欄21BAに格納されている差分ビットが0であるか否かを判断するSP34。この判断で肯定結果を得ることは、リード先スナップショットのリード先論理ブロックのデータが未だデータプールDPには退避されておらず、そのデータがプライマリボリュームPVOL内に存在することを意味する。かくして、このときCPU17は、プライマリボリュームPVOL内のリード先論理ブロックと同じLBAの論理ブロックからデータを読み出し、これをキャッシュメモリ15を介してかかるスナップショットリードコマンドの送信元のホスト計算機3に転送するSP35。そしてCPU17は、この後、この第1のスナップショットリード処理を終了する。これに対して、ステップSP34の判断で否定結果を得ることは、リード先スナップショットのリード先論理ブロックのデータは既にデータプールDPに退避されており、そのデータがプライマリボリュームPVOL内に存在しないことを意味する。かくして、このときCPU17は、旧データ退避アドレステーブル24図10の各アドレス欄24BAのうち、リード先スナップショットのリード先論理ブロックと対応するアドレス欄24BAに格納されているアドレスつまりリード先論理ブロックに格納されていたデータの退避先のアドレスを読み出すSP36。そしてCPU17は、データプールDP内の対応する旧データ退避用チャンクCK2図3におけるステップSP36において取得したアドレスが付与された記憶領域SA2図3から、リード先論理ブロックから退避したデータを読み出し、これをキャッシュメモリ15を介してかかるスナップショットリードコマンドの送信元のホスト計算機3に転送するSP37。そしてCPU17は、この後、この第1のスナップショットリード処理を終了する。2-4-4第2のスナップショットリード処理一方、図25は、ホスト計算機3から送信されたスナップショットリードコマンドをディスクアレイ装置4が受信した場合にCPU17により実行される第2のスナップショットリード処理の処理手順を示す。図24について上述した第1のスナップショットリード処理は、旧データ退避未反映ビットマップ26をスナップショット差分ビットマップ21よりも先にチェック図24のステップSP31及びステップSP34参照するバージョンであり、この第2のスナップショットリード処理は、スナップショット差分ビットマップ21を旧データ退避未反映ビットマップ26よりも先にチェック図25のステップSP41及びステップSP44参照するバージョンである。CPU17は、かかるスナップショットリードコマンドを受信すると、この図25に示す第2のスナップショットリード処理を開始し、まず、データプールDPに格納されている管理情報のうちの処理に必要な一部の管理情報を、バックエンドインタフェース14図1を介してキャッシュメモリ15図1に読み出すSP40。従って、この後、第2のスナップショットリード処理における管理情報の参照及び更新等は、キャッシュメモリ15上に読み出された管理情報に対して行われることになる。続いて、CPU17は、スナップショット差分ビットマップ21内の差分ビット欄21BAのうち、リード先スナップショットにおけるリード先論理ブロックと対応する差分ビット欄21BAに格納されている差分ビットが0であるか否かを判断するSP41。この判断で否定結果を得ることは、リード先スナップショットのリード先論理ブロックのデータは既にデータプールDPに退避されており、そのデータがプライマリボリュームPVOL内に存在しないことを意味する。かくして、このときCPU17は、旧データ退避アドレステーブル24図10の各アドレス欄24BAのうち、リード先スナップショットのリード先論理ブロックと対応するアドレス欄24BAに格納されているアドレスつまりリード先論理ブロックに格納されていたデータの退避先のアドレスを読み出すSP42。そしてCPU17は、データプールDP内のステップSP42において取得したアドレスが付与された記憶領域SA2図3から、リード先論理ブロックから退避したデータを読み出し、これをキャッシュメモリ15を介してかかるスナップショットリードコマンドの送信元のホスト計算機3に転送するSP43。そしてCPU17は、この後、この第2のスナップショットリード処理を終了する。これに対して、ステップSP41の判断で肯定結果を得ることは、リード先スナップショットのリード先論理ブロックのデータが未だデータプールDPには退避されておらず、そのデータがプライマリボリュームPVOL内に存在するか、又は、リード先スナップショットのリード先論理ブロックに対する差分反映処理が未だ行われていない可能性があることを意味する。かくして、このときCPU17は、リード先スナップショット内のリード先論理ブロックに対する差分反映処理が未実行であるか否かを判断するSP44。具体的に、CPU17は、旧データ退避未反映ビットマップ26図15内の未反映ビット欄26BA図15のうち、リード先スナップショットと対応付けられた第2のエントリ26B内のリード先論理ブロックと対応付けられた未反映ビット欄26BAに格納されている未反映ビットが1となっているか否かを判断する。この判断で肯定結果を得ることは、リード先スナップショットのリード先論理ブロックに対する差分反映処理が未だ行われていない可能性があることを意味する。かくして、このときCPU17は、図24のステップSP32と同様の差分反映処理を実行するSP45。次いで、CPU17は、旧データ退避未反映ビットマップ26の未反映ビット欄26BAのうち、ステップSP45においてすべての世代のスナップショットにおいて差分反映処理を実行した論理ブロックに対応する未反映ビット欄26BAに格納されている未反映ビットを1から0に変更しSP46、この後、ステップSP41に戻る。これに対して、ステップSP44の判断で否定結果を得ることは、リード先スナップショットのリード先論理ブロックのデータが未だデータプールDPには退避されておらず、そのデータがプライマリボリュームPVOL内に存在することを意味する。かくして、このときCPU17は、プライマリボリュームPVOL内のリード先論理ブロックと同じLBAの論理ブロックからデータを読み出し、これをキャッシュメモリ15を介してかかるスナップショットリードコマンドの送信元のホスト計算機3に転送するSP47。そしてCPU17は、この後、この第2のスナップショットリード処理を終了する。2-4-5スナップショットライト処理図26は、ホスト計算機3から送信されたスナップショットを対象とするライトコマンド以下、これをスナップショットライトコマンドと呼ぶをディスクアレイ装置4が受信した場合にCPU17により実行されるスナップショットライト処理の処理手順を示す。CPU17は、かかるスナップショットライトコマンドを受信すると、この図26に示すスナップショットライト処理を開始し、まず、データプールDPに格納されている管理情報のうちの処理に必要な一部の管理情報を、バックエンドインタフェース14図1を介してキャッシュメモリ15図1に読み出すSP50。従って、この後、スナップショットライト処理における管理情報の参照及び更新等は、キャッシュメモリ15上に読み出されたこれら管理情報に対して行われることになる。続いてCPU17は、ライト先スナップショットと対応する旧データ退避未反映ビットマップ26図15を参照して、かかるスナップショットライトコマンドにおいてデータのライト先として指定されたスナップショット以下、これをライト先スナップショットと呼ぶ上の、当該スナップショットライトコマンドにおいてデータのライト先として指定された論理ブロックライト先論理ブロックに対する差分反映処理が未実行であるか否かを判断するSP51。この判断は、かかる旧データ退避未反映ビットマップ26内の未反映ビット欄26BA図15のうち、ライト先スナップショットと対応付けられた第2のエントリ26B内のライト先論理ブロックと対応付けられた未反映ビット欄26BAに格納されている未反映ビットが1であるか否かを判断することにより行われる。そしてCPU17は、この判断で否定結果を得るとステップSP54に進む。これに対してCPU17は、この判断で肯定結果を得ると、ススナップショット差分ビットマップ21図7、旧データ退避アドレステーブル24図10及びスナップショット差分集約ビットマップ23図9を参照して差分反映処理を実行するSP52。なお、このとき差分反映処理の対象とするのは、ライト先スナップショットのライト先論理ブロックに対応する全世代のスナップショットの論理ブロックつまりすべての世代のスナップショットにおけるライト先論理ブロックと同じLABの論理ブロックである。ただし、このステップSP52において、差分反映処理を実行すべきすべての世代のスナップショットのすべての論理ブロックに対して差分反映処理を実行するようにしても良い。次いで、CPU17は、旧データ退避未反映ビットマップ26図15の未反映ビット欄26BA図15のうち、ステップSP52においてすべての世代のスナップショットにおいて差分反映処理を実行した論理ブロックに対応する未反映ビット欄26BAに格納されている未反映ビットを1から0に変更するSP53。続いて、CPU17は、スナップショットのライト先論理ブロックと対応付けられたプライマリボリュームPVOL内の論理ブロック以下、これをライト先対応論理ブロックと呼ぶに格納されていたデータがデータプールDPに未退避未だ退避されていないであるか否かを判断するSP54。この判断は、スナップショット差分ビットマップ21上のライト先対応論理ブロックと対応する差分ビット欄21BAに格納された差分ビットが0であるか否かを判断することにより行われる。そしてCPU17は、この判断で否定結果を得るとステップSP62に進む。これに対してCPU17は、この判断で肯定結果を得ると、旧データ退避領域空きビットマップ25図11を参照して、かかるライト先対応論理ブロックに格納されているデータの退避先を決定するSP55。具体的に、CPU17は、データプールDP内の対応するプライマリボリュームPVOLと対応付けられた旧データ退避用チャンクCK2図3内に、かかるライト先対応論理ブロックに格納されているデータ旧データを退避するだけの記憶領域SA2図3の空きがあるか否かを判定する。そしてCPU17は、空きがあると判定した場合には、当該データを退避できる分の記憶領域SA2をその旧データ退避用チャンクCK2内に確保し、確保した記憶領域SA2をかかるデータの退避先として決定する。またCPU17は、データプールDP内のライト先プライマリボリュームPVOLと対応付けられた旧データ退避用チャンクCK2内に、かかる空きがないと判定した場合には、データプールDP上にそのライト先プライマリボリュームPVOLと対応付けた新たな旧データ退避用チャンクCK2を作成し、その旧データ退避用チャンクCK2内にかかるライト先対応論理ブロックのデータを退避可能な分の記憶領域SA2を確保し、確保した記憶領域SA2をかかるデータの退避先として決定する。この後、CPU17は、ライト先プライマリボリュームPVOL内のライト先対応論理ブロックに格納されているデータ旧データの退避先を旧データ退避アドレステーブル24図10に登録するSP56。具体的に、CPU17は、旧データ退避アドレステーブル24の第2のエントリ24Bのうち、ライト先対応論理ブロックと対応付けられたアドレス欄24BAに、ステップSP55においてデータの退避先として決定したデータプールDP上の記憶領域SA2のアドレスを格納する。またCPU17は、旧データ退避領域空きビットマップ25図11内の各空きビット欄25AAのうち、ステップSP55においてデータの退避先として決定した記憶領域SA2と対応する空きビット欄25AAに格納されている空きビットを0から1に変更するSP57。続いて、CPU17は、ライト先プライマリボリュームPVOL内のライト先対応論理ブロックに格納されているデータ旧データを、ライト先プライマリボリュームPVOLから読み出し、これをライトデータとマージする。そしてCPU17は、かかるマージにより得られたマージデータを、データプールDP内のステップSP55において決定した記憶領域SA2に退避させるSP58。次いで、CPU17は、スナップショット差分集約ビットマップ23図9上のライト先プライマリボリュームPVOLのライト先対応論理ブロックと対応付けられた差分集約ビット欄23BAに格納されている差分集約ビットを0から1に変更すると共にSP59、スナップショットライト差分ビットマップ28図21上のライト先論理ブロックと対応付けられたライト差分ビット欄28BA図21に格納されているライト差分ビットを0から1に変更するSP60。またCPU17は、スナップショット差分ビットマップ21におけるライト先論理ブロックと対応付けられた差分ビット欄21BAに格納されている差分ビットを0から1に変更するSP61。この後、CPU17は、プライマリボリュームPVOLのライト先対応論理ブロックからデータプールDPに退避されているデータ旧データは、ライト先スナップショットと異なる世代のスナップショットと共有されているか否かを判断するSP62。この判断は、旧データ退避アドレステーブル24図10におけるライト先論理ブロックと対応するアドレス欄24BAに格納されたアドレスと同じアドレスが、当該旧データ退避アドレステーブル24における他のアドレス欄24BAに格納されているか否かを判定することにより行われる。そしてCPU17は、この判断で肯定結果を得ると、ステップSP55に戻り、この後、ステップSP55~ステップSP62を上述のように順次処理する。これによりCPU17は、データプールDP内の対応する旧データ退避用チャンクCK2からライト先スナップショットのライト先論理ブロックのデータの退避先既にデータプールDPに退避されている旧データのコピー先となる記憶領域SA2を決定し、決定した記憶領域SA2のアドレスを旧データ退避アドレステーブル24の対応するアドレス欄24BAに登録する。そしてCPU17は、やがてステップSP62において肯定結果を得ると、旧データ退避アドレステーブル24のアドレス欄24BAのうち、ライト先スナップショットのライト先論理ブロックと対応付けられたアドレス欄24BAに格納されているアドレスを取得しSP63、ライトデータをデータプールDP内のステップSP63において取得したアドレス位置に上書きするSP64。そしてCPU17は、この後、このスナップショットライト処理を終了する。2-4-6ペア削除処理図27A及び図27Bは、ホスト計算機3から送信された、プライマリボリュームPVOL及びスナップショットボリュームSSVOLのコピーペアを削除すべき旨のコマンドつまり、そのスナップショットボリュームSSVOLに保持されたスナップショットを削除すべき旨のコマンドであり、以下、これをペア削除コマンドと呼ぶをディスクアレイ装置4が受信した場合にCPU17により実行されるペア削除処理の処理手順を示す。CPU17は、かかるペア削除コマンドを受信すると、この図27A及び図27Bに示すペア削除処理を開始し、まず、データプールDPに格納されている管理情報のうちの処理に必要な一部の管理情報を、バックエンドインタフェース14図1を介してキャッシュメモリ15図1に読み出すSP70。従って、この後、ペア削除処理における管理情報の参照及び更新等は、キャッシュメモリ15上に読み出されたこれら管理情報に対して行われることになる。続いてCPU17は、スナップショット差分ビットマップ21図7、スナップショット差分集約ビットマップ23図9及び旧データ退避アドレステーブル24図10を参照して、すべてのスナップショット内のすべての論理ブロックに対する差分反映処理を実行するSP71。またCPU17は、この後、旧データ退避未反映ビットマップ26図15の各未反映ビット欄26BA図15にそれぞれ格納されているすべての未反映ビットを1から0に変更するSP72。次いで、CPU17は、スナップショット差分集約ビットマップ23図9内の第2のエントリ23Bのうち、ペア削除コマンドにおいてペア削除処理の対象として指定されたスナップショットボリュームSSVOLにより保持されているスナップショット以下、これを対象スナップショットと呼ぶと対応付けられた第2のエントリ23B内の差分集約ビット欄23BAを1つ選択しSP73、その差分集約ビット欄23BAに格納された差分集約ビットが1となっているか否かを判断するSP74。この判断で否定結果を得ることは、スナップショット差分ビットマップ21上のその差分集約ビットと対応付けられた各差分ビットがすべて0であり、従って、これら差分ビットとそれぞれ対応付けられた対象スナップショット上の各論理ブロックにそれぞれ格納されたデータのいずれもがデータプールDPに退避されていないことを意味する。かくして、このときCPU17は、ステップSP86に進む。これに対して、ステップSP74の判断で肯定結果を得ることは、スナップショット差分ビットマップ21上のその差分集約ビットと対応付けられた各差分ビットのうちの少なくとも1つの差分ビットが1であり、その差分ビットと対応付けられた対象スナップショット上の論理ブロックに格納されたデータがデータプールDPに退避されていることを意味する。かくして、このときCPU17は、かかるデータプールDPに退避されたかかるデータが他の世代のスナップショットと共有されていない場合には、そのデータをデータプールDP上から削除すべく、以下の処理を実行する。すなわちCPU17は、まず、スナップショット差分ビットマップ21上の差分ビットのうち、ステップSP73において選択した差分集約ビットと対応付けられた差分ビットを1つ選択しSP75、その差分ビットが1であるか否かを判断するSP76。そしてCPU17は、この判断で否定結果を得るとステップSP84に進む。これに対してCPU17は、ステップSP76の判断で肯定結果を得ると、スナップショットライト差分ビットマップ28上のライト差分ビットのうち、かかる差分ビットと対応するライト差分ビットが1である場合には、そのライト差分ビットを0に変更すると共にSP77、ステップSP75において選択したスナップショット差分ビットマップ21上の差分ビットを1から0に変更するSP78。またCPU17は、旧データ退避アドレステーブル24図10上のその差分ビットと対応するアドレス欄24BA図10を初期化そのアドレス欄24BAに格納されているアドレスを初期値0に変更するSP79。さらにCPU17は、対象スナップショットの各論理ブロックのうち、ステップSP75において選択した差分ビットと対応する論理ブロックからデータプールDPに退避した旧データが、対象スナップショット以外のスナップショットと共有されているか否かを、図26について上述したスナップショットライト処理のステップSP62と同様に判断するSP80。この判断で肯定結果を得ることは、対象スナップショット内のステップSP75において選択した差分ビットと対応する論理ブロックからデータプールDPに退避された旧データは他のスナップショットと共有されており、従って、その旧データをデータプールDPから削除できないことを意味する。かくして、このときCPU17はステップSP84に進む。これに対してステップSP80の判断で否定結果を得ることは、対象スナップショット内のステップSP75において選択した差分ビットと対応する論理ブロックからデータプールDPに退避された旧データは他のスナップショットと共有されておらず、従って、そのデータをデータプールDPから削除できることを意味する。かくして、このときCPU17は、旧データ退避領域空きビットマップ25図11内の空きビット欄25AAに格納されている空きビットのうち、その旧データが格納されているデータプールDP内の記憶領域SA2図3に対応する空きビット欄25AAに格納されている空きビットを1から0に変更するSP81。続いてCPU17は、ステップSP81の処理によりデータプールDP内の対応する旧データ退避用チャンクCK2図3から完全に旧データプライマリボリュームPVOLから退避された旧データを削除し終えたか否かを判断するSP82。そしてCPU17は、この判断で否定結果を得るとステップSP84に進み、これに対して肯定結果を得ると、かかる旧データ退避用チャンクCK2を解放するSP83。次いで、CPU17は、スナップショット差分ビットマップ21図7上の差分ビットのうち、ステップSP73において選択した差分集約ビットに対応するすべての差分ビットについて、ステップSP74~ステップSP83の処理を実行し終えたか否かを判断するSP84。そしてCPU17は、この判断で否定結果を得ると、ステップSP75に戻り、この後、ステップSP75において選択する差分ビットを他の差分ビットに変更しながら、ステップSP76~ステップSP84の処理を繰り返す。そしてCPU17は、やがてステップSP73において選択した差分集約ビットと対応付けられたすべての差分ビットについてステップSP74~ステップSP83の処理を実行し終えることによりステップSP84において肯定結果を得ると、ステップSP73において選択した差分集約ビットを1から0に変更するSP85。この後、CPU17は、スナップショット差分集約ビットマップ23内の第2のエントリ23Bのうち、対象スナップショットと対応付けられた第2のエントリ23B内のすべての差分集約ビットについて、ステップSP73~ステップSP85の処理を実行し終えたか否かを判断するSP86。そしてCPU17は、この判断で否定結果を得るとステップSP73に戻り、この後、ステップSP73において選択する差分集約ビットを対象スナップショットと対応付けられた第2のエントリ23B内の他の差分集約ビットに順次切り替えながら、ステップSP73~ステップSP86の処理を繰り返す。そしてCPU17は、やがて対象スナップショットと対応付けられた第2のエントリ23B内のすべての差分集約ビットについてステップSP73~ステップSP85の処理を実行し終えることによりステップSP86で肯定結果を得ると、このペア削除処理を終了する。なお、上述のペア削除処理により、同一のプライマリボリュームPVOLとコピーペアに設定されたすべてのスナップショットボリュームSSVOLのペア設定が解除された場合つまり同一のプライマリボリュームPVOLについて取得されたすべてのスナップショットが削除された場合、そのタイミングでそのプライマリボリュームPVOLが使用していた管理情報が格納されていた管理情報格納用チャンクCK1図3が解放される。3本実施の形態による管理情報へのアクセス方式3-1世代塊次に、本実施の形態によるディスクアレイ装置4において、データプールDPから必要なスナップショットの管理情報をキャッシュメモリ15に読み出す際や、キャッシュメモリ15に読み出した管理情報にCPU17がアクセスする際のアクセス方式について説明する。上述のように本ディスクアレイ装置4では、同一のプライマリボリュームPVOLに対して最大1024個のスナップショットを取得することが可能であるため、これら1024個分のスナップショットの管理情報も莫大なデータ量となる。そこで、本ディスクアレイ装置4では、スナップショットの管理情報のうち、ペア管理テーブル20図6及び分割順番号-世代番号マッピングテーブル27図17についてはコントローラ11のキャッシュメモリ15に駐在させておくものの、これ以外のスナップショット差分ビットマップ21図7、プライマリボリューム差分ビットマップ22図8、スナップショット差分集約ビットマップ23図9、旧データ退避アドレステーブル24図10、旧データ退避領域空きビットマップ25図11、旧データ退避未反映ビットマップ26図15及びスナップショットライト差分ビットマップ28図21については、データプールに保持しておき、必要時に必要な管理情報のみをデータプールDPからキャッシュメモリ15に読み出すステージング方式を採用している。この場合において、本ディスクアレイ装置4は、データ量の少ないプライマリボリューム差分ビットマップ22、旧データ退避領域空きビットマップ25、旧データ退避未反映ビットマップ26については必要なビットのみをキャッシュメモリ15に読み出す一方、スナップショット差分ビットマップ21、スナップショット差分集約ビットマップ23、旧データ退避アドレステーブル24及びスナップショットライト差分ビットマップ28については、そのとき存在するスナップショットの世代数に応じて、データプールDPからキャッシュメモリ15に読み出す世代数及びLBAの範囲を変えている点を特徴としている。実際上、本実施の形態においては、図28に示すように、世代番号が0~2の3つ世代については、これら3世代のスナップショットの管理情報をすべてまとめたものを1つの塊以下、これを3世代塊と呼ぶとして、必要時にこの3世代塊単位でデータプールDPからキャッシュメモリ15に管理情報を読み出している。また世代番号が3~63の61世代については、これら61世代分のスナップショットの管理情報のうち、LBAが小さい半数分の論理ブロックの管理情報をすべてまとめて1つの塊とし、LBAが大きい半数分の論理ブロックの管理情報をすべてまとめて1つの塊として、必要時にこの塊以下、これらの塊をそれぞれ61世代塊と呼ぶ単位でデータプールDPからキャッシュメモリ15に管理情報を読み出している。つまり、61世代塊は3世代塊と比較して、狭い範囲のLBA論理ブロックと対応する管理情報であり、多くの世代数と対応する管理情報である。さらに、世代番号が125以降の世代については、世代を243世代ごとに区切り、個々の243世代分のスナップショットの管理情報を、論理ブロックのLBAに応じて所定個数の論理ブロック単位で分け、243世代分のスナップショットの管理情報のうちの所定個数の論理ブロック分の管理情報をそれぞれ別個の塊以下、これらをそれぞれ243世代と呼ぶとして、必要時にこの243世代塊単位でデータプールDPからキャッシュメモリ15に管理情報を読み出している。つまり、243世代塊は61世代塊と比較して、狭い範囲のLBA論理ブロックと対応する管理情報であり、多くの世代数と対応する管理情報である。つまり世代塊とは、複数世代のスナップショットの管理情報にCPU17がアクセスする際のデータ単位を意味し、CPU17がデータプールDPからキャッシュメモリ15に一度に読み出したり、キャッシュメモリ15上でCPU17がアクセスするスナップショットの管理情報の単位である。そして、本ディスクアレイ装置4においては、このように世代塊の範囲を定めることにより、同一のプライマリボリュームPVOLについて取得されたスナップショットの世代が少ない場合には、世代数は少ないものの広い範囲の論理ブロックの管理情報をキャッシュヒットさせることができ、同一のプライマリボリュームPVOLについて取得されたスナップショットの世代が多い場合には、多くの世代の管理情報をキャッシュヒットさせることができるようになされている。なお、本実施の形態の場合、図28からも明らかなように、スナップショットの世代として、外部仕様の1024世代に対して内部的に1097世代分の管理情報を保持することができ、73世代分のスナップショットの管理情報を外部仕様よりも多く保持できるようになされている。これは、スナップショットの再同期、削除及びリストアが管理情報の初期化やデータプールDPに退避されたデータ旧データのバックグランド処理に多くの時間を要し、その間データプールDP上のその世代のスナップショットの管理情報を格納する記憶領域が使用できなくなることに起因する。すなわち、本ディスクアレイ装置4においては、上述のように73世代分のマージンを確保することにより、仮に1024世代のスナップショットをすべて一度に削除する操作が行われた場合においても、少なくとも73世代分のスナップショットを即座に生成できることとしている。3-2スナップショットに対する世代番号の割り当て次に、本ディスクアレイ装置4においてスナップショットに世代番号を割り当てる際の割当て方式について説明する。3-2-1原則本ディスクアレイ装置4の場合、原則として、プライマリボリュームPVOLから分割された順番が早いスナップショットボリュームSSVOLにより保持されているスナップショットに対してより若い世代番号を割り当てる。そしてスナップショットボリュームSSVOLの削除が行われるなどして使用可能な世代番号が発生した場合には、その使用可能な世代番号を若い方から順番に前詰めで新しいスナップショットに割り当てる。例えば、図29AA-1及びA-2に示すように、プライマリボリュームPVOLとコピーペアに設定されたいずれのスナップショットボリュームSSVOLについて、当該プライマリボリュームとコピーペアが削除されていない初期状態では、スナップショットボリュームSSVOL0~SSVOL2がプライマリボリュームPVOLから分割されてスナップショットが取得されるごとに、そのスナップショットに対して若い世代番号が順番に割り当てられる。なお、図29AA-1及びA-2は、スナップショットボリュームSSVL0~3がプライマリボリュームPVOLから順次分割され、これにより各スナップショットボリュームSSVL0~3にそれぞれ保持されることになった各スナップショットにそれぞれ世代番号として0~3が付与された状態を示している。また、この例では、プライマリボリュームPVOL及びスナップショットボリュームSSVOL4のコピーペアのペア状態はペアードの状態にあるものとする。この後、スナップショットボリュームSSVOL1が、当該スナップショットボリュームSSVOL1の内容を再びプライマリボリュームPVOLと一致させる再同期状態ペア状態はペアードとなると、図29AB-1及びB-2に示すように、スナップショットボリュームSSVOL1が保持するスナップショットが削除され、これに伴い1という世代番号が未使用となる。また、かかるスナップショットボリュームSSVOL1が保持するスナップショットの削除に伴い、当該スナップショットの管理情報の初期化が実行される。そして、この後、例えば、第1世代世代番号は1のスナップショットの管理情報の初期化処理が完了する前に、スナップショットボリュームSSVOL1が再度プライマリボリュームPVOLから分割されると、図29BA-1及びA-2に示すように、スナップショットSSVOL1が保持するスナップショットに対して4という世代番号が付与される。さらに、この後、第1世代世代番号は1のスナップショットの管理情報の初期化処理が完了し、1という世代番号が使用可能になった後に、スナップショットボリュームSSVOL4がプライマリボリュームPVOLから分割されると、図29BB-1及びB-2に示すように、そのとき空いている最も若い世代番号である1がスナップショットボリュームSSVOL4により保持されたスナップショットに対して付与される。なお、以上のようなスナップショットに対する世代番号の割り当ては、スナップショットの取得後、プライマリボリュームPVOLに対して最初のアクセスライトアクセス又はリードアクセスが発生したタイミングで行われ、そのタイミングでそのスナップショットに割り当てる世代番号が決定される。3-2-2例外上述のように、本ディスクアレイ装置4では、プライマリボリュームPVOLについて取得された最初のスナップショットに世代番号を割り当てる際は、図30Aに示すように、3世代塊を構成する世代の中から最も若い世代の世代番号つまり第0世代を割り当て、その後、スナップショットが取得されるごとに、残存する最も若い世代の世代番号をそのスナップショットに順次割り当てることを原則としている。一方で、本ディスクアレイ装置4は、図30Bに示すように、3世代塊を構成する世代第0世代~第3世代の世代番号をすべてスナップショットに割り当て終え、1つ目の61世代塊を構成する世代番号をスナップショットに割り当て始めた以降つまり第4世代の世代番号をスナップショットに割り当てた以降は、スナップショットの削除などにより3世代塊に使用可能な世代番号図30Bの第1世代があったとしても、新規には3世代塊から世代番号を割り当てず、それ以降の世代塊を構成する世代の世代番号を割り当てる点をも特徴の1つとしている。これはデータプールDPからキャッシュメモリ15に管理情報スナップショット差分ビットマップ21、スナップショット差分集約ビットマップ23、旧データ退避アドレステーブル24及び又はスナップショットライト差分ビットマップ28を読み出す回数を抑えることにより性能の向上を図るためである。すなわち、同一のプライマリボリュームPVOLについて取得されたスナップショット数が3世代塊に収まるような程度であればつまり3世代までであれば、3世代塊に管理情報を割り当てることにより良い性能が得られる。しかしながら、同一のプライマリボリュームPVOLについて取得されたスナップショット数がこれ以上になると、管理情報の更新の度に複数世代塊のデータプールDPからキャッシュメモリ15への管理情報の読み出しが必要となり、性能が低下する。そこで、本ディスクアレイ装置4の場合、初期導入の際は3世代塊を構成する世代番号を使用し、これ以降はできるだけ61世代塊を構成する世代番号以降の世代番号をスナップショットに割り当てることにより、3世代塊を構成する世代の世代番号が割り当てられたスナップショットの管理情報をデータプールDPからキャッシュメモリ15に読み出す必要性をなくし、性能を向上させ得るようにしている。例えば図30A及びBの例では、61世代塊に属する世代番号のスナップショットを処理する場合、3世代塊に属する各世代番号のスナップショットの管理情報と、61世代塊に属する各世代番号のスナップショットの管理情報とをデータプールDPからキャッシュメモリ15に読み出さなければならず、スナップショットの管理情報の読出し処理が2回必要となる。しかしながら、この後、上述のような世代番号の割当て処理を行うことによって、3世代塊に属する各世代番号のスナップショットが削除された場合に、図30Cに示すように、61世代塊に属する世代番号のスナップショットの管理情報のみを読み出せば良いため、かかる読出し処理を1回で済ませることができる。3-2-3世代番号割当て処理図31は、スナップショットに世代番号を割り当てる世代番号割当て処理の具体的な処理手順を示す。CPU17は、この図31に示す処理手順に従って、新たに取得されたスナップショットに世代番号を割り当てる。すなわちCPU17は、プライマリボリュームPVOL及びスナップショットボリュームSSVOLから構成されるコピーペアの分割をすべき旨のペア分割コマンドが与えられると、この世代番号割当て処理を開始し、まず、ペア管理テーブル20図6に登録されたそのペアのペア状態を検索し、当該コピーペアを分割スナップショットを取得できる状態にあるか否かを判断するSP90。この場合において、例えば対象とするコピーペア以下、これを対象ペアと呼ぶのペア状態が既にスプリットとなっている既にスナップショットが取得されている場合や、かかるペア状態がシンプレックスである場合などのときには、そのコピーペアを分割することはできない。かくして、CPU17は、ステップSP90の判断で否定結果を得ると、かかるペア分割コマンドの送信元のホスト計算機3にエラーを通知しSP91、この後、この世代番号割当て処理を終了する。これに対してCPU17は、ステップSP90の判断で肯定結果を得ると、対象ペアを分割するSP92。具体的に、CPU17は、ペア管理テーブル20における対象ペアと対応するエントリ20A図6のペア状態欄20Cに格納されているペア状態をスプリットに変更する。続いてCPU17は、ステップSP92のペア分割により取得したスナップショットに対するアクセスコマンドを受信するなどして、そのスナップショットの管理情報が必要となるのを待ち受けるSP93。そしてCPU17は、やがてかかるスナップショットの管理情報が必要となると、対応するプライマリボリュームPVOLについて現在取得されているスナップショットの世代数が3よりも大きいか否かを判断するSP94。CPU17は、この判断で肯定結果を得ると、3世代塊以外の世代塊に属する世代番号の中から最も若い世代番号を選択し、その世代番号をそのスナップショットに割り当てるSP95。そしてCPU17は、この後、この世代番号割当て処理を終了する。これに対してCPU17は、ステップSP94の判断で否定結果を得ると、3世代塊を含むすべての世代塊にそれぞれ属するすべての世代番号のうち、最も若い世代番号を選択し、その世代番号をそのスナップショットに割り当てるSP96。そしてCPU17は、この後、この世代番号割当て処理を終了する。3-2-4管理情報取得処理図32は、ライトコマンドやリードコマンド又はコピーペアを操作するペア操作コマンドなど、対応する処理を実行するために対応するスナップショットの管理情報が必要となるコマンドがホスト計算機3からディスクアレイ装置4に与えられた場合にCPU17により実行される管理情報取得処理の処理手順を示す。なお、通常、この種のコマンドでは、対象となる論理ボリュームVOLプライマリボリュームPVOL及び又はスナップショットボリュームSSVOL等のLUN及び当該論理ボリュームVOL内の対象となるLBAが指定されるため、以下においてはこれを前提として説明する。CPU17は、かかるコマンドを受信すると、この図32に示す管理情報取得処理を開始し、まず、ペア管理テーブル20図6を参照して、かかるコマンドの対象となるスナップショットの世代番号を取得するSP100。例えば、CPU17は、LUNが1のスナップショットボリュームSSVOLを対象とするライトコマンドを受信した場合、ペア管理テーブル20のエントリ20A図6のうち、LUN欄20D図6に1が格納されているエントリ20Aを検索し、そのエントリ20Aの世代番号欄20E図6に格納されている世代番号図6では1を取得する。この世代番号は、かかるスナップショットボリュームSSVOLにより保持されているスナップショットの世代番号である。続いて、CPU17は、ステップSP100において取得した対象とするスナップショットの世代番号と、かかるコマンドから認識される処理対象となるLBAの範囲とに基づいて、コマンドに応じた処理を実行するのに必要なスナップショットの管理情報がどの世代塊に属するかを特定するSP101。次いで、CPU17は、ステップSP101において特定した世代塊の管理情報がキャッシュメモリ15図1上に存在するか否かを判断するSP102。この場合、CPU17は、キャッシュメモリ15上に存在する世代塊を管理情報ステージング情報として常に管理している。従って、この判断はかかる管理情報ステージング情報に基づいて行われる。そしてCPU17は、この判断で肯定結果を得ると、ステップSP101において特定した世代塊の管理情報をキャッシュメモリ15から読み出しSP103、この後、この管理情報取得処理を終了する。またCPU17は、ステップSP104の判断で否定結果を得ると、ステップSP102において特定した世代塊の管理情報をデータプールDPからキャッシュメモリ15に読み出しSP104、この後、この管理情報取得処理を終了する。かくしてCPU17は、この後、ステップSP103又はステップSP104において取得した世代塊の管理情報に基づいて、上述のコマンドに応じた処理を実行する。4本実施の形態の効果以上のように本実施の形態によるディスクアレイ装置4では、スナップショットの管理情報をデータプールDP内に保持し、必要時に必要な管理情報のみをコントローラ11内のキャッシュメモリ15に読み出すようにしているため、キャッシュメモリ15のメモリ容量によって取得可能なスナップショットの数が制限されることがない。従って、本ディスクアレイ装置に4によれば、キャッシュメモリのメモリ容量によってスナップショットの取得数が制限されていた従来のディスクアレイ装置と比して、より多くのスナップショットを取得することができる。また本ディスクアレイ装置4では、プライマリボリュームPVOLへのデータライト時には、旧データを共有する複数世代のスナップショットのうち、最新世代のスナップショットの管理情報のみを更新し、残りの世代のスナップショットの管理情報については、その残りのスナップショットへのアクセスがあったときや、その残りのスナップショットを削除する際に更新するため、スナップショット管理情報の更新処理の処理負荷がプライマリボリュームPVOLへのライト性能に悪影響を及ぼすのを未然かつ有効に防止することができる。かくするにつき、ディスクアレイ装置4全体としての信頼性を向上させることができる。5他の実施の形態なお上述の実施の形態においては、本発明を図1のように構成されたディスクアレイ装置に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を有するストレージ装置に広く適用することができる。また上述の実施の形態においては、差分反映処理を、差分反映処理すべきスナップショットへのアクセスがあったときや、そのスナップショットを削除する際に実行するようにした場合について述べたが、本発明はこれに限らず、これ以外のタイミングでかかる差分反映処理を実行するようにしても良い。さらに上述の実施の形態においては、データプールDPに保持したスナップショットの管理情報を読み出すメモリとしてキャッシュメモリ15を適用するようにした場合について述べたが、本発明はこれに限らず、かかる管理情報を例えばローカルメモリ16に読み出すようにしても良く、さらには、かかる管理情報を読み出すための専用のメモリを設けるようにしても良い。さらに上述の実施の形態においては、データプールDPからスナップショットの管理情報を読み出す単位である世代塊を図28について上述したように定義するようにした場合について述べたが、本発明はこれに限らず、個々の世代塊をこれ以外の内容で定義するようにしても良い。"