(57)【要約】      （修正有）【課題】属性レベルの異なる複数の記憶デバイスのうちの属性レベルの低い記憶デバイスの影響を受けにくくする。【解決手段】記憶制御システム上に存在する複数のＬＵの各々が、複数のchunkに分割される。PVOLはFC-chunkのみで構成され、SVOLは、FC-chunkとSATA-chunkの両方で構成される。複数のPVOL-chunkにそれぞれ対応した複数のSVOL-chunkの各々には、対応するPVOL-chunkのサブデータの更新頻度に基づいて、複数のプールchunkの中から選択されたFC-chunkとSATA-chunkのいずれかが動的に対応付けられる。例えば、データの更新頻度が高いPVOL-chunkにSVOL-SATA-chunkが対応付けられている場合は、そのSVOL-SATA-chunk内のサブデータの入替え先として、プールFC-chunkが対応付けられる。【選択図】図１
2010191989.tif 000002
【特許請求の範囲】
【請求項１】
属性レベルの異なる複数の物理記憶デバイスと、
前記複数の物理記憶デバイス上に備えられる複数の論理ユニットと、
外部装置から受信したデータを前記複数の論理ユニットの中から選択された論理ユニットに書込む制御装置と
を備え、
前記複数の論理ユニットは、高い属性レベルの物理記憶デバイス上に備えられる１以上の高レベル論理ユニットと、前記高い属性レベルよりも低い属性レベルの物理記憶デバイス上に備えられる１以上の低レベル論理ユニットとを含み、
前記複数の論理ユニットの各々は、２以上のチャンクから構成されており、
前記複数の論理ユニットを構成する複数のチャンクには、前記１以上の高レベル論理ユニットを構成する複数の高レベルチャンクと、前記１以上の低レベル論理ユニットを構成する複数の低レベルチャンクとが含まれており、
前記複数の高レベルチャンクの少なくとも１つと、前記複数の前記複数の低レベルチャンクの少なくとも１つが、動的に対応付けられることが可能なプールチャンクであり、
前記制御装置は、前記複数のチャンクの中から選択された第１のチャンク内のデータを第２のチャンクに書込む場合、前記複数のチャンクの使用状況に基づいて、複数の前記プールチャンクの中から高レベルチャンクと低レベルチャンクのいずれかを選択し、選択したチャンクに前記第１チャンク内のデータを書込む、
記憶制御システム。
【請求項２】
前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニットから構成されるプライマリボリュームと、
前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニット及び１以上の前記低レベル論理ユニットから構成されるセカンダリボリュームと、
メモリと
を更に備え、
前記複数のチャンクには、前記複数のプールチャンクと、複数の割当済みチャンクとが含まれ、
前記複数の割当済みチャンクには、前記プライマリボリュームを構成する複数のプライマリチャンクと、前記セカンダリボリュームを構成する複数のセカンダリチャンクとが含まれ、
前記複数のセカンダリチャンクには、前記セカンダリボリューム内の前記高レベル論理ユニットを構成する複数の高レベルセカンダリチャンクと、前記セカンダリボリューム内の前記低レベル論理ユニットを構成する複数の低レベルセカンダリチャンクとが含まれ、
前記メモリは、前記複数のプライマリチャンクのうちのどのプライマリチャンクに前記高レベルセカンダリチャンクと前記低レベルセカンダリチャンクとのどちらが対応付けられているかを記憶し、
前記制御装置は、前記複数のチャンクの使用状況及び前記メモリに記憶されている情報に基づいて、前記複数のプライマリチャンクの中から選択されたプライマリチャンクに対応付けられている元のセカンダリチャンクに対し、前記複数のプールチャンクの中から選択された、前記セカンダリチャンクとは別の属性レベルを有する新たなセカンダリチャンクを対応付け、前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込む、
請求項１記載の記憶制御システム。
【請求項３】
前記制御装置は、前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込んだ後、前記元のセカンダリチャンクと前記選択されたプライマリチャンクとの対応付け解除し、前記メモリ上で、前記選択されたプライマリチャンクに対して前記新たなセカンダリチャンクを対応付ける、
請求項２記載の記憶制御システム。
【請求項４】
前記複数のチャンクの使用状況とは、前記セカンダリボリュームが提供する記憶容量を前記高レベルセカンダリボリューム又は前記低レベルセカンダリボリュームが占める割合である、
請求項２記載の記憶制御システム。
【請求項５】
前記制御装置は、
前記セカンダリボリュームが提供する記憶容量を複数の高レベルセカンダリチャンクが占める割合である高レベル割合の閾値が前記メモリに記録されている場合、前記高レベル割合の閾値よりも前記高レベル割合の方が多いならば、前記低レベルセカンダリチャンクを優先的に前記選択された元のセカンダリチャンクに対応付け、
前記セカンダリボリュームが提供する記憶容量を複数の低レベルセカンダリチャンクが占める割合である低レベル割合の閾値が前記メモリに記録されている場合、前記低レベル割合の閾値よりも前記低レベル割合の方が多い場合には、前記高レベルセカンダリチャンクを優先的に前記選択された元のセカンダリチャンクに対応付ける、
請求項４記載の記憶制御システム。
【請求項６】
前記制御装置は、
複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録し、
前記データ更新回数が多いものほど優先的に前記プライマリチャンクを選択する、
請求項５記載の記憶制御システム。
【請求項７】
前記制御装置は、前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が多いならば、前記第１のチャンクに対して高レベルチャンクを対応付ける、
請求項１記載の記憶制御システム。
【請求項８】
前記制御装置は、プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録し、前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付ける、
請求項２記載の記憶制御システム。
【請求項９】
前記制御装置は、前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が少ないならば、前記第１のチャンクに対して低レベルチャンクを対応付ける、
請求項１記載の記憶制御システム。
【請求項１０】
前記制御装置は、プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録し、前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付ける、
請求項２記載の記憶制御システム。
【請求項１１】
前記制御装置は、前記プライマリボリュームと同じ新たなプライマリボリュームを生成する場合、前記複数のプライマリチャンクの少なくとも１つに前記低レベルセカンダリチャンクが対応付けられていることが前記メモリから判別されたならば、前記低レベルセカンダリチャンクに対して、前記複数のプールチャンクの中から選択された高レベルチャンクを対応付け、前記低レベルセカンダリチャンク内のデータを前記対応付けた高レベルチャンクに書込み、前記対応付けた高レベルチャンクと、前記複数のプライマリチャンクのうちの１以上のプライマリチャンクにそれぞれ対応付けられている１以上の高レベルセカンダリチャンクとから構成される複数の高レベルチャンクの各々をプライマリチャンクとして前記メモリに設定する、
請求項２記載の記憶制御システム。
【請求項１２】
属性レベルの異なる複数の物理記憶デバイスと、前記複数の物理記憶デバイス上に備えられる複数の論理ユニットとが備えられている場合の記憶制御方法であって、
前記複数の論理ユニットは、高い属性レベルの物理記憶デバイス上に備えられる１以上の高レベル論理ユニットと、前記高い属性レベルよりも低い属性レベルの物理記憶デバイス上に備えられる１以上の低レベル論理ユニットとを含み、
前記複数の論理ユニットの各々は、２以上のチャンクから構成されており、
前記複数の論理ユニットを構成する複数のチャンクには、前記１以上の高レベル論理ユニットを構成する複数の高レベルチャンクと、前記１以上の低レベル論理ユニットを構成する複数の低レベルチャンクとが含まれており、
前記複数の高レベルチャンクの少なくとも１つと、前記複数の前記複数の低レベルチャンクの少なくとも１つが、動的に対応付けられることが可能なプールチャンクであり、
前記複数のチャンクの中から選択された第１のチャンク内のデータを第２のチャンクに書込む場合、前記複数のチャンクの使用状況に基づいて、複数の前記プールチャンクの中から高レベルチャンクと低レベルチャンクのいずれかを選択するステップと、
前記選択したチャンクに前記第１チャンク内のデータを書込むステップと
を有する記憶制御方法。
【請求項１３】
前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニットから構成されるプライマリボリュームと、
前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニット及び１以上の前記低レベル論理ユニットから構成されるセカンダリボリュームと
が更に備えられている場合、
前記複数のチャンクには、前記複数のプールチャンクと、複数の割当済みチャンクとが含まれ、
前記複数の割当済みチャンクには、前記プライマリボリュームを構成する複数のプライマリチャンクと、前記セカンダリボリュームを構成する複数のセカンダリチャンクとが含まれ、
前記複数のセカンダリチャンクには、前記セカンダリボリューム内の前記高レベル論理ユニットを構成する複数の高レベルセカンダリチャンクと、前記セカンダリボリューム内の前記低レベル論理ユニットを構成する複数の低レベルセカンダリチャンクとが含まれ、
前記複数のプライマリチャンクのうちのどのプライマリチャンクに前記高レベルセカンダリチャンクと前記低レベルセカンダリチャンクとのどちらが対応付けられているかを記憶するメモリと、前記複数のチャンクの使用状況とに基づいて、前記複数のプライマリチャンクの中から選択されたプライマリチャンクに対応付けられている元のセカンダリチャンクに対し、前記複数のプールチャンクの中から選択された、前記セカンダリチャンクとは別の属性レベルを有する新たなセカンダリチャンクを対応付けるステップと、
前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込むステップと
を有する請求項１２記載の記憶制御方法。
【請求項１４】
前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込んだ後、前記元のセカンダリチャンクと前記選択されたプライマリチャンクとの対応付け解除するステップと、
前記メモリ上で、前記選択されたプライマリチャンクに対して前記新たなセカンダリチャンクを対応付けるステップと
を有する請求項１３記載の記憶制御方法。
【請求項１５】
前記複数のチャンクの使用状況とは、前記セカンダリボリュームが提供する記憶容量を前記高レベルセカンダリボリューム又は前記低レベルセカンダリボリュームが占める割合である、
請求項１３記載の記憶制御方法。
【請求項１６】
前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が多いならば、前記第１のチャンクに対して高レベルチャンクを対応付けるステップを更に有する、
請求項１２記載の記憶制御方法。
【請求項１７】
プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録するステップと、
前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付けるステップと
を有する請求項１３記載の記憶制御方法。
【請求項１８】
前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が少ないならば、前記第１のチャンクに対して低レベルチャンクを対応付けるステップを更に有する、
請求項１２記載の記憶制御方法。
【請求項１９】
プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録するステップと、
前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付けるステップと
を有する請求項１２記載の記憶制御方法。
【請求項２０】
前記プライマリボリュームと同じ新たなプライマリボリュームを生成する場合、前記複数のプライマリチャンクの少なくとも１つに前記低レベルセカンダリチャンクが対応付けられていることを前記メモリから判別するステップと、
前記低レベルセカンダリチャンクに対して、前記複数のプールチャンクの中から選択された高レベルチャンクを対応付けるステップと、
前記低レベルセカンダリチャンク内のデータを前記対応付けた高レベルチャンクに書込むステップと、
前記対応付けた高レベルチャンクと、前記複数のプライマリチャンクのうちの１以上のプライマリチャンクにそれぞれ対応付けられている１以上の高レベルセカンダリチャンクとから構成される複数の高レベルチャンクの各々をプライマリチャンクとして前記メモリに設定するステップと
を有する請求項１３記載の記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶デバイスへのデータの格納を制御する記憶制御システム及び方法に関する。
【背景技術】
【０００２】
例えば、データセンタ等のような大規模なデータを取り扱うデータベースシステムでは、ホストコンピュータとは別に構成された記憶制御システムを用いてデータを管理する。この記憶制御システムは、例えば、多数の記憶デバイスをアレイ状に配設して構成されたRAID（Redundant Array of Independent Inexpensive Disks）のようなディスクアレイシステムである。
【０００３】
このような記憶制御システムでは、例えば、記憶デバイスに記録されたデータが壊れてしまってもそのデータを回復することができるように、その記憶デバイスに記録されているデータを別の記憶デバイスにコピーして保存しておくバックアップが行われる。その際、コピー作業中に、コピーされたデータが更新され、データに不整合が生じるとバックアップとして意味をなさないため、コピー作業中はデータの整合性を保証する必要がある。
【０００４】
バックアップされるデータの整合性を保証するための方法としては、データにアクセスするバックアッププログラム以外のプログラムを停止する方法が考えられるが、高可用性が要求されるシステムではプログラムを長時間停止させることができない。そのため、バックアップ中にプログラムがデータを更新することを妨げず、且つ、バックアップ開始時点でのデータの記憶イメージを作成する仕組みを提供する必要がある。なお、以下、ある時点でのデータの記憶イメージを「ボリュームコピー」と呼び、指定された時点のボリュームコピーを作成しつつデータの更新が可能な状態を提供する仕組みを「ボリュームコピー管理方法」と呼ぶ。また、ボリュームコピーを作成することを「ボリュームコピーの取得」と呼び、ボリュームコピー取得の対象となったデータを「オリジナルデータ」と呼ぶ。また、ボリュームコピーを作成した状態をやめることを「ボリュームコピーの削除」と呼ぶ。
【０００５】
ボリュームコピー管理方法の一つとして、データの二重化による方法が挙げられる。
【０００６】
この方法では、例えば、ボリュームコピーを取得していない通常の状態において、記憶制御システム上のプログラムが、すべてのデータを２つの記憶領域上に生成する（つまりデータを二重化する）。そして、記憶制御システムは、２つの記憶領域を個々の記憶領域に分離し、一方の記憶領域上に存在するデータをオリジナルデータとして提供し、他方の記憶領域上に存在するデータをボリュームコピーとして提供する。
【０００７】
ボリュームコピーを取得し二重化を停止している間（非ミラー時）、記憶制御システムは、オリジナルデータの記憶領域に対するデータの更新を許可するとともに、データ更新が発生した場合は更新した位置を記録しておく。記憶制御システムは、ボリュームコピーの削除の場合には、データの二重化を再開するとともに、２つの記憶領域の間で内容が一致していない更新データを、更新位置の記録に基づいて、オリジナルデータの記憶領域からボリュームコピーとして提供していた記憶領域にコピーする。なお、以下、このようなコピーを「ミラー再同期化」と呼ぶこととする。また、ボリュームコピーの削除の場合、上記とは逆に、更新データをボリュームコピーの記憶領域からオリジナルデータの記憶領域にコピーすることもできるが、そのようなコピーを「ミラー逆再同期化」と呼ぶ。
【０００８】
コンピュータ上のプログラムでデータを二重化する方法は、例えば米国特許５，０５１，８８７に示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許５，０５１，８８７公報。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、記憶デバイスとしては、ディスク装置（例えばハードディスクドライブ）、磁気テープ記憶デバイスなど種々の装置を採用することができる。ディスク装置には、例えば、高価ではあるが信頼性及び性能が高い高信頼性・高性能ディスク装置と、高信頼性・高性能ディスク装置よりもが信頼性及び性能が低いが安価である低信頼性・低性能ディスク装置とがある。高信頼性・高性能ディスク装置には、例えば、ＡＮＳＩ
Ｔ１１によって標準化作業が行われているファイバチャネル（以下「FC」）インターフェースを備えたディスク装置（以下、「FCディスク装置」）がある。一方、低信頼性・低性能ディスク装置には、例えば、高信頼性・高性能ディスク装置のインターフェースと異なるインターフェースを有するディスク装置、具体例として、ＡＮＳＩ
Ｔ１３によって標準化作業が行われているATA（ATAttachment）インターフェースを備えたディスク装置（以下、「ATAディスク装置」）がある。
【００１１】
ボリュームコピーを取得する場合、ユーザから、オリジナルデータは、FCディスク装置上の記憶領域（以下、FC記憶領域）に格納しておきたいが、ボリュームコピーは、コストの問題等から、ATAディスク装置上の記憶領域（以下、ATA記憶領域）上に用意したいというような要求が出る可能性がある。
【００１２】
しかし、この要求を満たすために、FC記憶領域上のオリジナルデータと、ATA記憶領域上のボリュームコピーとを二重化して用いると（換言すれば、FC記憶領域とATA記憶領域とをペア状態にすると）、例えば、記憶制御システムの上位装置からＩ／Ｏ要求（入／出力要求）を受信して処理する場合、FCディスク装置のＩ／Ｏ処理性能（例えば、データの読出し或いは書込みの速度）を、ATAディスク装置と同等にするため、記憶制御システムと上位装置との間のＩ／Ｏ処理性能が低下してしまう。また、例えば、ボリュームコピーの取得或いはミラー再同期化を行う場合にも、ATAディスク装置の性能がボトルネックとなってしまう。
【００１３】
このような問題点は、データの書込み先記憶デバイスについて、信頼性や性能以外の属性レベルが低い場合にも起こり得る。
【００１４】
従って、本発明の目的は、属性レベルの異なる複数の記憶デバイスのうちの属性レベルの低い記憶デバイスの影響を受けにくくすることにある。具体的には、例えば、高性能の記憶デバイスから低性能の記憶デバイスにデータをコピーする場合にコピー処理速度が低下してしまうことを抑えることにある。
【００１５】
本発明の他の目的は、後の記載から明らかになるであろう。
【課題を解決するための手段】
【００１６】
本発明の第１の観点に従う記憶制御システムは、属性レベルの異なる複数の物理記憶デバイスと、前記複数の物理記憶デバイス上に備えられる複数の論理ユニットと、外部装置から受信したデータを前記複数の論理ユニットの中から選択された論理ユニットに書込む制御装置とを備える。前記複数の論理ユニットは、高い属性レベルの物理記憶デバイス上に備えられる１以上の高レベル論理ユニットと、前記高い属性レベルよりも低い属性レベルの物理記憶デバイス上に備えられる１以上の低レベル論理ユニットとを含む。前記複数の論理ユニットの各々は、２以上のチャンクから構成されている。前記複数の論理ユニットを構成する複数のチャンクには、前記１以上の高レベル論理ユニットを構成する複数の高レベルチャンクと、前記１以上の低レベル論理ユニットを構成する複数の低レベルチャンクとが含まれている。前記複数の高レベルチャンクの少なくとも１つと、前記複数の前記複数の低レベルチャンクの少なくとも１つが、動的に対応付けられることが可能なプールチャンクである。前記制御装置は、前記複数のチャンクの中から選択された第１のチャンク内のデータを第２のチャンクに書込む場合、前記複数のチャンクの使用状況に基づいて、複数の前記プールチャンクの中から高レベルチャンクと低レベルチャンクのいずれかを選択し、選択したチャンクに前記第１チャンク内のデータを書込む。
【００１７】
本発明の第１の観点に従う記憶制御システムの第１の実施態様では、記憶制御システムは、前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニットから構成されるプライマリボリュームと、前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニット及び１以上の前記低レベル論理ユニットから構成されるセカンダリボリュームと、メモリとを更に備える。前記複数のチャンクには、前記複数のプールチャンクと、複数の割当済みチャンクとが含まれる。前記複数の割当済みチャンクには、前記プライマリボリュームを構成する複数のプライマリチャンクと、前記セカンダリボリュームを構成する複数のセカンダリチャンクとが含まれる。前記複数のセカンダリチャンクには、前記セカンダリボリューム内の前記高レベル論理ユニットを構成する複数の高レベルセカンダリチャンクと、前記セカンダリボリューム内の前記低レベル論理ユニットを構成する複数の低レベルセカンダリチャンクとが含まれる。前記メモリは、前記複数のプライマリチャンクのうちのどのプライマリチャンクに前記高レベルセカンダリチャンクと前記低レベルセカンダリチャンクとのどちらが対応付けられているかを記憶する。前記制御装置は、前記複数のチャンクの使用状況及び前記メモリに記憶されている情報に基づいて、前記複数のプライマリチャンクの中から選択されたプライマリチャンクに対応付けられている元のセカンダリチャンクに対し、前記複数のプールチャンクの中から選択された、前記セカンダリチャンクとは別の属性レベルを有する新たなセカンダリチャンクを対応付け、前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込む。
【００１８】
本発明の第１の観点に従う記憶制御システムの第２の実施態様では、前記第１の実施態様において、前記制御装置は、前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込んだ後、前記元のセカンダリチャンクと前記選択されたプライマリチャンクとの対応付け解除し、前記メモリ上で、前記選択されたプライマリチャンクに対して前記新たなセカンダリチャンクを対応付ける。
【００１９】
本発明の第１の観点に従う記憶制御システムの第３の実施態様では、前記第１の実施態様において、前記複数のチャンクの使用状況とは、前記セカンダリボリュームが提供する記憶容量を前記高レベルセカンダリボリューム又は前記低レベルセカンダリボリュームが占める割合である。
【００２０】
本発明の第１の観点に従う記憶制御システムの第４の実施態様では、前記第３の実施態様において、前記制御装置は、前記セカンダリボリュームが提供する記憶容量を複数の高レベルセカンダリチャンクが占める割合である高レベル割合の閾値が前記メモリに記録されている場合、前記高レベル割合の閾値よりも前記高レベル割合の方が多いならば、前記低レベルセカンダリチャンクを優先的に前記選択されたプライマリチャンクに対応付ける。或いは、前記制御装置は、前記セカンダリボリュームが提供する記憶容量を複数の低レベルセカンダリチャンクが占める割合である低レベル割合の閾値が前記メモリに記録されている場合、前記低レベル割合の閾値よりも前記低レベル割合の方が多い場合には、前記高レベルセカンダリチャンクを優先的に前記選択されたプライマリチャンクに対応付ける。
【００２１】
本発明の第１の観点に従う記憶制御システムの第５の実施態様では、前記第４の実施態様において、前記制御装置は、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録し、前記低レベルセカンダリチャンクを優先的に前記選択されたプライマリチャンクに対応付ける場合、前記メモリに記録されたデータ更新回数が少ないものほど優先的に前記プライマリチャンクを選択し、前記高レベルセカンダリチャンクを優先的に前記選択されたプライマリチャンクに対応付ける場合、データ更新回数が多いものほど優先的に前記プライマリチャンクを選択する。
【００２２】
本発明の第１の観点に従う記憶制御システムの第６の実施態様では、前記制御装置は、前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が多いならば、前記第１のチャンクに対して高レベルチャンクを対応付ける。
【００２３】
本発明の第１の観点に従う記憶制御システムの第７の実施態様では、前記第１の実施態様において、前記制御装置は、プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録し、前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付ける。
【００２４】
本発明の第１の観点に従う記憶制御システムの第８の実施態様では、前記制御装置は、前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が少ないならば、前記第１のチャンクに対して低レベルチャンクを対応付ける。
【００２５】
本発明の第１の観点に従う記憶制御システムの第９の実施態様では、前記第１の実施態様において、前記制御装置は、プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録し、前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付ける。
【００２６】
本発明の第１の観点に従う記憶制御システムの第９の実施態様では、前記第１の実施態様において、前記制御装置は、前記プライマリボリュームと同じ新たなプライマリボリュームを生成する場合、前記複数のプライマリチャンクの少なくとも１つに前記低レベルセカンダリチャンクが対応付けられていることが前記メモリから判別されたならば、前記低レベルセカンダリチャンクに対して、前記複数のプールチャンクの中から選択された高レベルチャンクを対応付け、前記低レベルセカンダリチャンク内のデータを前記対応付けた高レベルチャンクに書込み、前記対応付けた高レベルチャンクと、前記複数のプライマリチャンクのうちの１以上のプライマリチャンクにそれぞれ対応付けられている１以上の高レベルセカンダリチャンクとから構成される複数の高レベルチャンクの各々をプライマリチャンクとして前記メモリに設定する。
【００２７】
本発明の第２の観点に従う記憶制御方法は、属性レベルの異なる複数の物理記憶デバイスと、前記複数の物理記憶デバイス上に備えられる複数の論理ユニットとが備えられている場合の記憶制御方法である。前記複数の論理ユニットは、高い属性レベルの物理記憶デバイス上に備えられる１以上の高レベル論理ユニットと、前記高い属性レベルよりも低い属性レベルの物理記憶デバイス上に備えられる１以上の低レベル論理ユニットとを含む。前記複数の論理ユニットの各々は、２以上のチャンクから構成されている。前記複数の論理ユニットを構成する複数のチャンクには、前記１以上の高レベル論理ユニットを構成する複数の高レベルチャンクと、前記１以上の低レベル論理ユニットを構成する複数の低レベルチャンクとが含まれている。前記複数の高レベルチャンクの少なくとも１つと、前記複数の前記複数の低レベルチャンクの少なくとも１つが、動的に対応付けられることが可能なプールチャンクである。前記記憶制御方法は、前記複数のチャンクの中から選択された第１のチャンク内のデータを第２のチャンクに書込む場合、前記複数のチャンクの使用状況に基づいて、複数の前記プールチャンクの中から高レベルチャンクと低レベルチャンクのいずれかを選択するステップと、前記選択したチャンクに前記第１チャンク内のデータを書込むステップとを有する。
【００２８】
本発明の第２の観点に従う記憶制御方法の第１の実施態様では、前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニットから構成されるプライマリボリュームと、前記複数の論理ユニットの中から選択された１以上の前記高レベル論理ユニット及び１以上の前記低レベル論理ユニットから構成されるセカンダリボリュームとが更に備えられている。前記複数のチャンクには、前記複数のプールチャンクと、複数の割当済みチャンクとが含まれる。前記複数の割当済みチャンクには、前記プライマリボリュームを構成する複数のプライマリチャンクと、前記セカンダリボリュームを構成する複数のセカンダリチャンクとが含まれる。前記複数のセカンダリチャンクには、前記セカンダリボリューム内の前記高レベル論理ユニットを構成する複数の高レベルセカンダリチャンクと、前記セカンダリボリューム内の前記低レベル論理ユニットを構成する複数の低レベルセカンダリチャンクとが含まれる。前記記憶制御方法は、前記複数のプライマリチャンクのうちのどのプライマリチャンクに前記高レベルセカンダリチャンクと前記低レベルセカンダリチャンクとのどちらが対応付けられているかを記憶するメモリと、前記複数のチャンクの使用状況とに基づいて、前記複数のプライマリチャンクの中から選択されたプライマリチャンクに対応付けられている元のセカンダリチャンクに対し、前記複数のプールチャンクの中から選択された、前記セカンダリチャンクとは別の属性レベルを有する新たなセカンダリチャンクを対応付けるステップと、前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込むステップとを有する。
【００２９】
本発明の第２の観点に従う記憶制御方法の第２の実施態様では、前記第１の実施態様において、記憶制御方法は、前記元のセカンダリチャンク内のデータを前記新たなセカンダリチャンク内に書込んだ後、前記元のセカンダリチャンクと前記選択されたプライマリチャンクとの対応付け解除するステップと、前記メモリ上で、前記選択されたプライマリチャンクに対して前記新たなセカンダリチャンクを対応付けるステップとを有する。
【００３０】
本発明の第２の観点に従う記憶制御方法の第３の実施態様では、前記第１の実施態様において、前記複数のチャンクの使用状況とは、前記セカンダリボリュームが提供する記憶容量を前記高レベルセカンダリボリューム又は前記低レベルセカンダリボリュームが占める割合である。
【００３１】
本発明の第２の観点に従う記憶制御方法の第４の実施態様では、記憶制御方法は、前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が多いならば、前記第１のチャンクに対して高レベルチャンクを対応付けるステップを更に有する。
【００３２】
本発明の第２の観点に従う記憶制御方法の第５の実施態様では、前記第１の実施態様において、前記記憶制御方法は、プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録するステップと、前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付けるステップとを有する。
【００３３】
本発明の第２の観点に従う記憶制御方法の第６の実施態様では、前記記憶制御方法は、前記第１のチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、前記データ更新回数の閾値よりも前記データ更新回数が少ないならば、前記第１のチャンクに対して低レベルチャンクを対応付けるステップを更に有する。
【００３４】
本発明の第２の観点に従う記憶制御方法の第７の実施態様では、前記第１の実施態様において、前記記憶制御方法は、プライマリチャンクのデータ更新回数の閾値が前記メモリに記録されている場合、複数のプライマリチャンクの各々についてデータ更新回数を前記メモリに記録するステップと、前記データ更新回数の閾値よりも前記選択されたプライマリチャンクのデータ更新回数が多く、且つ、前記選択されたプライマリチャンクに低レベルセカンダリチャンクが対応付けられたならば、前記低レベルセカンダリチャンクに対して高レベルチャンクを対応付けるステップとを有する。
【００３５】
本発明の第２の観点に従う記憶制御方法の第８の実施態様では、前記記憶制御方法は、前記プライマリボリュームと同じ新たなプライマリボリュームを生成する場合、前記複数のプライマリチャンクの少なくとも１つに前記低レベルセカンダリチャンクが対応付けられていることを前記メモリから判別するステップと、前記低レベルセカンダリチャンクに対して、前記複数のプールチャンクの中から選択された高レベルチャンクを対応付けるステップと、前記低レベルセカンダリチャンク内のデータを前記対応付けた高レベルチャンクに書込むステップと、前記対応付けた高レベルチャンクと、前記複数のプライマリチャンクのうちの１以上のプライマリチャンクにそれぞれ対応付けられている１以上の高レベルセカンダリチャンクとから構成される複数の高レベルチャンクの各々をプライマリチャンクとして前記メモリに設定するステップとを有する。
【００３６】
なお、上述した記憶制御方法は、例えば、単一の記憶制御システム内で行うこともできるし、複数のコンピュータが接続された通信ネットワーク上でも行うこともできる。また、上述したメモリは、例えば、単一のメモリであっても良いし、複数のメモリであっても良い。複数のメモリの場合、例えば、分散して配置されても良い。
【発明の効果】
【００３７】
本発明によれば、属性レベルの異なる複数の記憶デバイスのうちの属性レベルの低い記憶デバイスの影響を受けにくくなる。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態の概念の説明図である。
【図２】本発明の一実施形態に係る記憶制御システムの構成例を示す。
【図３】ボリュームコピーＬＵ登録テーブル３０９の構成例を示す。
【図４】ボリュームコピー管理テーブルの構成例を示す。
【図５】設定値テーブル３０７の構成例を示す。
【図６】障害対応ボリュームコピー管理テーブルの構成例を示す。
【図７】ボリュームコピー取得プログラム３０２によって実行される処理の流れを示す。
【図８】更新頻度閾値入替えプログラム３０３によって実行される処理の流れを示す。
【図９】ディスク使用割合入替えプログラム３０４によって実行される処理の流れを示す。
【図１０】障害切り替えプログラム３０５によって実行される処理の流れを示す。
【図１１】図７のＳ１で行われるボリュームコピーのペア設定を説明するための図。
【図１２】図７に示した処理流れにおいて、ボリュームコピー管理テーブル３０８に情報が登録される流れを説明するための図。
【図１３】障害対応ボリュームコピー管理テーブル３０６の更新前と更新後の様子の一例を示す図。
【図１４】ＬＵ管理テーブル９１１の構成例を示す。
【発明を実施するための形態】
【００３９】
以下、図面を参照して、本発明の一実施形態について説明する。
【００４０】
図１は、本実施形態の概念の説明図である。まず、図１を参照して、本実施形態の概念について説明する。
【００４１】
図１（Ａ）に示すように、本実施形態では、信頼性及び性能のうちの少なくとも１つの属性レベルが異なる複数の記憶デバイスが混在している。複数の記憶デバイスには、例えば、属性レベルの高い記憶デバイスとして、高信頼性及び高性能のディスク装置である１以上のファイバチャネルディスク装置（以下、「FCディスク装置」と言う）２０１が含まれている。また、属性レベルの低い記憶デバイスとして、低信頼性及び低性能であるがFCディスク装置２０１よりも安価である１以上のシリアルATAディスク装置（以下、「SATAディスク装置」と言う）２０３が含まれている。なお、本実施形態において、「信頼性」とは、例えば、データを破損することなく保持することができる耐久性や、故障が発生する確率等であり、具体的には、例えば、ＭＴＢＦ（Mean Time Between Failure）のことを言う。また、「性能」とは、例えば、データの転送レートの大きさや、応答速度の速さのことである。
【００４２】
１以上のFCディスク装置２０１及び１以上のSATAディスク装置２０３上には、それぞれ、複数の論理ユニット（以下、ＬＵ）が備えられる。各ＬＵは、複数の同一サイズのサブＬＵ（以下、「chunk」と言う）から構成されている。以下、FCディスク装置２０１上に備えられるＬＵ２０５を、「FC-LU」と称し、SATAディスク装置２０３上に備えられるＬＵ２０７を、「SATA-LU」と称する。また、FC-LU２０５を構成するchunkを「FC-chunk」と称し、FC-LU２０６を構成するchunkを「SATA-chunk」と称する。なお、図１では、FC-chunkを白抜きで表し、SATA-chunkをハッチングで表す。
【００４３】
本実施形態では、１以上のＬＵによって、１つの仮想ＬＵが構成される。仮想ＬＵは、論理ボリュームとも言う。本実施形態では、仮想ＬＵとして、例えば、プライマリボリューム（以下PVOL）２０４と、セカンダリボリューム（以下SVOL）２０６とがあるPVOL２０４は、１以上のFC-LU２０５から構成される。一方SVOL２０６は、１以上のFC-LU２０５のみから構成されても良いし、１以上のSATA-LU２０７のみから構成されても良いし、FC-LU２０５とSATA-LU２０７との組み合わせから構成されても良い。以下、PVOL２０４を構成するFC-LU２０５を、「PVOL-FC-LU２０５」と称しPVOL２０４を構成するFC-chunkを、「PVOL-FC-chunk」と称する。また、SVOL２０６を構成するFC-LU２０５を、「SVOL-FC-LU２０５」と称し、SVOL２０６を構成するSATA-LU２０７を、「SVOL-SATA-LU２０７」と称し、SVOL２０６を構成するFC-chunkを、「SVOL-FC-chunk」と称し、SVOL２０６を構成するSATA-chunkを、「SVOL-SATA-chunk」と称する。更に、SVOL-FC-chunk及びSVOL-SATA-chunkを単に「SVOL-chunk」と総称する場合もある。
【００４４】
本実施形態では、記憶制御システムは、PVOL２０４とSVOL２０６とを二重化して管理することができ、その場合、例えばホスト装置からのデータをPVOL２０４に書込む場合、同一のデータをSVOL２０６に書込むことができる。具体的には、記憶制御システムは、PVOL-FC-chunkと、SVOL-FC-chunk又はSVOL-SATA-chunkとを二重化して管理し、或るPVOL-FC-chunkにサブデータ（データの一構成要素）を書き込む場合、二重化されたSVOL-FC-chunk又はSVOL-SATA-chunkにも同じサブデータを書き込む。以下、PVOL２０４とSVOL２０６に同じデータを格納することを「ミラーリング」と呼び、PVOL２０４とSVOL２０６のペアのことを「ボリュームペア」と呼び、PVOL-FC-chunkとSVOL-FC-chunk又はSVOL-SATA-chunkとのペアのことを「chunkペア」と呼ぶ。
【００４５】
また、本実施形態では、PVOL-FC-chunk、SVOL-FC-chunk及びSVOL-SATA-chunkの他に、PVOL２０４及びSVOL２０６のいずれにも属していない複数のプールchunkから構成されたプールchunkグループ２０８が存在する。プールchunkグループ２０８を構成する複数のプールchunkには、FC-chunkである「プールFC-chunk」と、SATA-chunkである「プールSATA-chunk」とが含まれている。記憶制御システムは、プールchunkグループ２０８の中からプールchunkを選択してSVOL-chunkに割当て、そのSVOL-chunk内のサブデータを、選択されたプールchunkにコピーし、そのプールchunkをSVOL-chunkとし、サブデータのコピー元となったSVOL-chunkをプールchunkにすることで、プールchunkとSVOL-chunkとを交換することができる。なお、どのSVOL-chunkにどのようなプールchunkを割当てるかは、種々の観点、例えば、そのSVOL-chunkのchunkペア相手であるPVOL-chunk内のサブデータ更新頻度が幾つかに基づいて行うことができる。
【００４６】
具体的には、例えば、図１（Ａ）に示すように、PVOL-FC-chunk「＃２」とSVOL-FC-chunk「＃２」によってchunkペアが構成されている場合において、PVOL-FC-chunk「＃２」内のサブデータの更新頻度が所定閾値よりも低いことが検出されたならば、記憶制御システムは、プールchunkグループ２０５の中からプールSATA-chunk（例えば「＃５１」）を選択し、SVOL-FC-chunk「＃２」内のサブデータＢを、選択したプールSATA-chunk「＃５１」にコピーする。そして、記憶制御システムは、図１（Ｂ）に示すように、プールSATA-chunk「＃５１」を、SVOL-FC-chunk「＃２」の代わりにSVOL-FC-chunk「＃５１」とし、逆に、SVOL-FC-chunk「＃２」をプールSATA-chunk「＃５１」の代わりにプールSATA-chunk「＃２」とする。このように、サブデータの更新頻度が所定閾値よりも低いPVOL-FC-chunkのchunkペア相手がSVOL-FC-chunkであることが検出された場合には、そのPVOL-FC-chunkのchunkペア相手は、SVOL-FC-chunkからプールSATA-chunkに切替えられる（なお、切替え後、そのプールSATA-chunkはSVOL-SATA-chunkとなる）。
【００４７】
また、例えば、図１（Ａ）に示すように、PVOL-FC-chunk「＃８」とSVOL-SATA-chunk「＃４」によってchunkペアが構成されている場合において、PVOL-FC-chunk「＃８」内のサブデータの更新頻度が所定閾値よりも高いことが検出されたならば、記憶制御システムは、プールchunkグループ２０５の中からプールFC-chunk（例えば「＃５３」）を選択し、SVOL-SATA-chunk「＃４」内のサブデータHを、選択したプールFC-chunk「＃５３」にコピーする。そして、記憶制御システムは、図１（Ｂ）に示すように、プールFC-chunk「＃５３」を、SVOL-SATA-chunk「＃４」の代わりにSVOL-FC-chunk「＃５３」とし、逆に、SVOL-SATA-chunk「＃４」をプールFC-chunk「＃５３」の代わりにプールSATA-chunk「＃４」とする。このように、サブデータの更新頻度が所定閾値よりも高いPVOL-FC-chunkのchunkペア相手がSVOL-SATA-chunkであることが検出された場合には、そのPVOL-FC-chunkのchunkペア相手は、SVOL-SATA-chunkからプールFC-chunkに切替えられる（なお、切替え後、そのプールFC-chunkはSVOL-FC-chunkとなる）。
【００４８】
以上が、本実施形態の概念についての説明である。なお、以下の説明では、PVOL２０４を構成する１以上のFC-LU２０５や、SVOL２０６を構成する１以上のFC-LU２０５及びSATA-LU２０７は、同一の記憶制御システム内に存在するものとするが、複数の装置に分散して備えられていても良い。
【００４９】
以下、本実施形態について詳述する。
【００５０】
図２は、本実施形態に係る記憶制御システムの構成例を示す。
【００５１】
記憶制御システム２００は、１又は複数のファイバチャネルインターフェース装置（以下、ファイバＩ／Ｆ）２９０Ａ、２９０Ｂを備えている（勿論FCのインターフェース装置に限らず他のインターフェース装置であっても良い）。例えば、ファイバＩ／Ｆ２９０Ａには、パーソナルコンピュータ等のホスト装置１００が接続されても良いし、ファイバＩ／Ｆ２９０Ｂには、テープ装置（例えば磁気テープ記録装置）５００を有するバックアップサーバ４００が接続されても良い。バックアップサーバ４００は、ファイバＩ／Ｆ２９０Ｂを介してSVOL２０６内のデータを読出し、そのデータをテープ装置５００に書き込むことができる。なお、バックアップ中にSVOL２０６内のデータが更新されるとデータの整合性がとれなくなるため、記憶制御システム２００は、ミラーリングの最中には、バックアップサーバ４００によるバックアップを許可しない。バックアップを許可する場合としては、例えば、ホスト装置１００からPVOL２０４へのデータ更新は許可するが同じデータ更新をSVOL２０６には行わない非ミラーリングの状態中がある。
【００５２】
記憶制御システム２００は、例えばＬＡＮコントローラ等の管理インターフェース（以下、管理Ｉ／Ｆ）２４０を有する。管理Ｉ／Ｆ２４０には、記憶制御システム２００を管理するための管理端末６００が接続される。
【００５３】
記憶制御システム２００は、複数のディスク装置２０１、２０３と、複数のディスク装置２０１、２０３を制御するディスクコントローラ２５０と、外部装置（例えばホスト装置１００）とディスク装置２０１、２０３との間でやり取りされるデータを一時的に記憶するキャッシュメモリ２３０と、記憶制御システム２００の動作を制御するＣＰＵ２１０と、ＣＰＵ２１０に読込まれるコンピュータプログラムやＣＰＵ２１０に参照されるテーブル等の制御情報が格納される制御メモリ２２０とが備えられる。
【００５４】
複数のディスク装置２０１、２０３には、１以上のFCディスク装置２０１と、１以上のSATAディスク装置２０３とが含まれている。１以上のFCディスク装置２０１には、前述したように、複数のFC-LU２０５が備えられている。各FC-LU２０５は、PVOL２０４の構成要素にもなるし、SVOL２０６の構成要素になることもできる。一方、１以上のSATAディスク装置２０３には、前述したように、１以上のSATA-LU２０７が備えられている。SATA-LU２０７は、SVOL２０６の構成要素になることができる。図示の例では、１つのFC-LU２０５によってPVOL２０４が構成され、１つのFC-LU２０５と１つのSATA-LU２０７とによってSVOL２０６が構成されている。
【００５５】
制御メモリ２２０には、基本制御プログラム３０１、ボリュームコピー取得プログラム３０２、更新頻度閾値入替えプログラム３０３、ディスク使用割合入替えプログラム３０４、障害切り替えプログラム３０５、ボリュームコピーＬＵ登録テーブル３０９、ボリュームコピー管理テーブル３０８、設定値テーブル３０７、障害対応ボリュームコピー管理テーブル３０６及びＬＵ管理テーブル９１１が格納されている。
【００５６】
基本制御プログラム３０１は、記憶制御システム２００の基本的な動作を制御するためのコンピュータプログラムである。例えば、基本制御プログラム３０１は、ホスト装置１００からのＩ／Ｏ要求に従って、ＬＵ２０５、２０６Ａ又は２０６Ｂからデータを読み出しキャッシュメモリ２３０を介してホスト装置１００に送信したり、そのＩ／Ｏ要求に含まれているデータを第１ＬＵ２０５に格納したりする。
【００５７】
ボリュームコピー取得プログラム３０２は、ボリュームコピー取得を実施するためのコンピュータプログラムである。
【００５８】
更新頻度閾値入替えプログラム３０３は、PVOL-FC-chunkの更新頻度が所定の更新頻度閾値以上か否かに基づいて、PVOL-FC-chunkに対応付けられたSVOLchunkのデータ入替え相手とするchunkの種類（別の言い方をすれば、プールFC-chunkとプールSATA-chunkのいずれか）を選択する。
【００５９】
ディスク使用割合入替えプログラム３０４は、SVOL２０６内におけるSVOL-FC-chunk（又はSVOL-SATA-chunk）の割合が所定の割合以上か否かに基づいて、SVOL-chunk内のサブデータのコピー先とするchunkの種類（別の言い方をすれば、プールFC-chunkとプールSATA-chunkのいずれか）を選択する。
【００６０】
障害切り替えプログラム３０５は、PVOL２０４に障害が発生した場合（例えばPVOL-FC-LUを有するFCディスク装置が破損した場合）、PVOL-FC-chunkに対応したSVOL-FC−chunkを、PVOL-FC-chunkに切替える。また、障害切り替えプログラム３０５は、PVOL２０４に障害が発生した場合、PVOL-FC-chunkに対応したSVOL-SATA−chunkがSVOL２０７内に存在するならば、そのSVOL-SATA−chunk内のサブデータを、プールchunkグループ２０８の中から選択されたプールFC−chunkに移動し、そのプールFC−chunkをPVOL-FC-chunkに切替える。このようにして、障害切り替えプログラム３０５は、PVOL２０４に障害が発生した場合、PVOL-FC-chunkに対応したSVOL-FC−chunkと、PVOL-FC-chunkに対応するSVOL-SATA−chunkに割当てられたプールFC-chunkとによって、新たなPVOLを構成する。
【００６１】
以下、図３〜図６を参照して、制御メモリ２２０に格納される各テーブル３０９〜３０６及び９１１について説明する。
【００６２】
図３は、ボリュームコピーＬＵ登録テーブル３０９の構成例を示す。
【００６３】
ボリュームコピーＬＵ登録テーブル３０９には、記憶制御システム２００内の複数のＬＵに関する情報が登録されるテーブルである。具体的には、例えば、ボリュームコピーＬＵ登録テーブル３０９には、複数のＬＵの各々について、ペア番号、外部用ＬＵ番号、内部用ＬＵ番号、ＬＵ容量、ディスク種類、PVOL／SVOL情報及びアクセス属性が登録される。
【００６４】
ペア番号とは、ボリュームペアの識別番号である。
【００６５】
外部用ＬＵ番号とは、ホスト装置等の外部装置から受けるＬＵ番号である。外部用ＬＵ番号は、２以上のＬＵを１つの論理ボリュームとして外部装置に提供したい場合には、それら２以上のＬＵに対して同一の番号となる。図示の例で言えば、外部装置からＬＵ番号として「２」が指定された場合、内部用ＬＵ番号が「２」のＬＵと、内部用ＬＵ番号が「３」のＬＵとが１つのSVOL２０６として外部装置に提供されることになる。
【００６６】
内部用ＬＵ番号とは、記憶制御システム２００が認識し管理するＬＵ番号である。この実施形態では、例えば、内部用ＬＵ番号が「１」のＬＵはPVOL-FC-LU２０５であり、内部用ＬＵ番号が「２」のＬＵはSVOL-FC-LU２０５であり、内部用ＬＵ番号が「３」のＬＵはSVOL-SATA-LU２０７である。
【００６７】
ＬＵ容量とは、ＬＵの記憶容量である。
【００６８】
ディスク種類とは、対応するＬＵを備えたディスク装置の種類（例えばインターフェース）を表す。具体的には、例えば、ディスク種類とは、FCディスク装置かSATAディスク装置かを表す。
【００６９】
PVOL／SVOL情報とは、対応するＬＵがPVOLとSVOLのどちらを構成するのかを表す情報である。
【００７０】
アクセス属性とは、対応するＬＵにどのようなアクセスを許可するかを表す情報である。例えば、「Ｒ／Ｗ可」は、読み出し及び書込みの両方が許可されることを意味し、「Ｒのみ可」は、読み出しは許可されるが書き込みは禁止されることを意味し、図示しない「Ｗのみ可」は、書込みは許可されるが読出しは禁止されることを意味し、図示しない「Ｒ／Ｗ不可」は、読出しも書き込みも禁止されることを意味する。アクセス属性には、様々な種類を採用することができる。
【００７１】
図１４は、ＬＵ管理テーブル９１１の構成例を示す。
【００７２】
ＬＵ管理テーブル９１１には、記憶制御システム２００に存在する複数のＬＵにそれぞれ対応した複数のＬＵ情報が登録されている。ＬＵ情報には、例えば、内部用ＬＵ＃（番号）、ＬＵ容量、ディスク種類、選択可否情報及びプールchunk＃等のＬＵ情報要素が含まれている。ここで、選択可否情報とは、ボリュームコピーのペアを設定する際に選択可能か否かを表す情報である（ちなみに、「ボリュームコピー」とは、ある時点でのデータの記憶イメージのことである）。また、プールchunk＃とは、どのようなchunkとして使用されるかが未だ決まっておらず動的に割当可能な状態のchunk（つまりプールchunk）の番号である。
【００７３】
図４は、ボリュームコピー管理テーブルの構成例を示す。
【００７４】
ボリュームコピー管理テーブル３０８は、オリジナルデータ及びボリュームコピーに関する情報を管理するためのテーブルである。ボリュームコピー管理テーブル３０８は、左列、中列、及び右列の３つに大別される。
【００７５】
左列には、オリジナルデータを格納するPVOL２０４に関する情報が登録される。具体的には、例えば、左列には、PVOL２０４を構成する各chunk毎に、ＬＵ＃、chunk＃及び更新頻度が登録される。ＬＵ＃は、対応するchunkを有し、PVOLとして登録されているＬＵの内部用ＬＵ番号である。chunk＃は、そのＬＵ内での付与されたchunkの通し番号である。例えば、chunk＃の最小値は１、chunk＃の最大値は、対応するchunkを有するＬＵのＬＵ容量をchunkサイズで割って得られた商の値（余りが生じたら商に１を加えた値）である。更新頻度は、対応するchunkに格納されているサブデータが更新された回数であり、初期値は０である。更新頻度は、例えばＣＰＵ２１０によって、インクリメントされたりリセットされたりする。
【００７６】
中列には、ボリュームコピーを格納するSVOL２０６に関する情報が登録される。具体的には、例えば、中列には、SVOL２０６を構成する各chunk毎に、ディスク種類、ＬＵ＃、及びchunk＃が登録される。ディスク種類は、対応するchunkを有するＬＵを搭載したディスク装置の種類（例えばインターフェース種類）である。ＬＵ＃は、対応するchunkを有し、SVOLとして登録されているＬＵの内部用ＬＵ番号である。chunk＃は、そのＬＵ内での付与されたchunkの通し番号である。この中列の各行は、左列の各行に対応している。すなわち、左列の行には、PVOL-FC-chunkに関する情報が登録されており、中列の行には、SVOL-chunk（具体的には、SVOL-FC-chunkとSVOL-SATA-chunkのいずれか）に関する情報が登録されている。
【００７７】
右列には、入替え相手chunkに関する情報が登録される。ここで、「入替え相手chunk」とは、それに対応するSVOL-chunk内のサブデータの入替え先（換言すれば移動先）となるchunkである。この右列には、各入替え相手chunk毎に、ディスク種類、ＬＵ＃、及びchunk＃が登録される。なお、入替え相手chunkとしては、未だどのchunkとして使用されことが決まっていないプールchunkを割当てることができる。また、空欄は、SVOL-chunkに入替え相手chunkがいないことを意味する。
【００７８】
このボリュームコピー管理テーブル３０８を参照するＣＰＵ２１０は、以下のことを識別することができる。すなわち、例えば、LU＃「１」でchunk＃が「１」であるPVOL-FC-chunkには、LU＃「２」でchunk＃が「１」であるFC−chunkがSVOL-chunkとして対応付けられていることを識別することができる。そして、そのSVOL-chunkには、LU＃「３」でchunk＃「５」であるプールSATA−chunkが入替え相手chunkとして対応付けられていることも識別することができる。
【００７９】
以上が、ボリュームコピー管理テーブル３０８の構成例である。なお、ボリュームコピー管理テーブル３０８では、１つのPVOL-FC-chunkに対して複数のSVOL-chunkが対応付けられていても良いし、１つのSVOL-chunkに対して複数の入替え相手chunkが対応付けられていても良い。
【００８０】
図５は、設定値テーブル３０７の構成例を示す。
【００８１】
設定値テーブル３０７には、例えば、管理端末６００から情報を入力して登録することができる。設定値テーブル３０７には、例えば、chunkサイズ、入替周期、更新頻度閾値及びディスク割合閾値が登録される。
【００８２】
chunkサイズは、ＬＵを何バイト毎に分割してchunkに区切るかを示す値である。
入替周期は、SVOL-chunkに格納されたデータを、更新頻度閾値或いはディスク割合閾値に基づいて、プールFC-chunkもしくはプールSATA-chunkに入れ替えるためのスケジュールを示すための値（例えば、１週間単位であれば「weekly」）である。
更新頻度閾値は、PVOL-FC-chunkに対応したSVOL-chunk内のサブデータをプールchunkに格納するか否かを決定するための閾値である。この更新頻度閾値は、外部装置からのライトコマンドによってPVOL-FC-chunk内のサブデータが上述した入替周期中に更新された回数（つまり、ボリュームコピー管理テーブル３０８に記録されている更新頻度）と比較される数値である。
ディスク割合閾値は、１以上のSVOL-FC−chunkで構成される記憶容量（以下、SVOL-FC記憶容量）のSVOL２０６全体における割合の閾値である。具体的には、例えば、ディスク割合閾値が「０．３」となっている場合には、SVOL-FC記憶容量が、SVOL２０６全体において０．３（つまり３０％）であり、１以上のSVOL-SATA−chunkで構成される記憶容量（以下、SVOL-SATA記憶容量）が、SVOL２０６全体において残りの０．７（つまり７０％）であることを意味する。
【００８３】
なお、複数のペア番号（換言すれば、複数のボリュームペア）にそれぞれ対応した複数の設定値テーブルが備えられても良い。この場合、記憶制御システム２００のＣＰＵ２１０は、各ペア番号に対応した設定値テーブルを参照して制御を行っても良い。これにより、制御の柔軟性が高くなる。
【００８４】
図６は、障害対応ボリュームコピー管理テーブルの構成例を示す。
【００８５】
障害対応ボリュームコピー管理テーブル３０６は、PVOL２０４で障害が発生した場合に、PVOL２０４内のどのPVOL-FC-chunkに対応付けられたFC-chunkをPVOL-FC-chunkに切替えるかを管理するためのテーブルである。障害対応ボリュームコピー管理テーブル３０６は、ボリュームコピー管理テーブル３０８と同様に、左列、中列、及び右列の３つに大別される。左列は、更新頻度が登録されないことを除いて、ボリュームコピー管理テーブル３０８の左列と同様の構成である。中列は、ボリュームコピー管理テーブル３０８の中列と同様の構成である。
【００８６】
右列には、障害対応移動先chunkに関する情報が登録される。ここで、「障害対応移動先chunk」とは、SVOL-chunk内のサブデータの移動先としてプールchunkグループ２０８の中から選択されたchunkである。この右列には、各障害対応移動先chunk毎に、ディスク種類、ＬＵ＃、及びchunk＃が登録される。図６から分かるように、障害対応移動先chunkは、本実施形態では、FC-chunkであり、その障害対応移動先chunkに対応付けられるSVOL-chunkはSVOL-SATA-chunkである。これにより、PVOL２０４で障害が発生した際、PVOL-FC-chunk内のサブデータのコピーがSVOL-SATA-chunkに存在する場合には、そのSVOL-SATA-chunk内のサブデータは、そのSVOL-SATA-chunkに対応付けられたFC-chunk（つまり、高信頼性・高性能のディスク装置であるFCディスク装置上の空きchunk）に移動される。なお、空欄は、SVOL-chunkに障害対応移動先chunkが対応付けられていないことを意味する。
【００８７】
以上が、制御メモリ２２０に格納される各テーブル３０９〜３０６及び９１１についての説明である。
【００８８】
以下、上述したテーブル３０９〜３０６及び９１１を参照して本実施形態で行われる処理流れを説明する。
【００８９】
図７は、ＣＰＵ２１０に読み込まれたボリュームコピー取得プログラム３０２によって実行される処理の流れを示す。
【００９０】
ボリュームコピー取得プログラム３０２は、ボリュームコピーのペアを設定する（ステップＳ１）。この場合、例えば、図１１に示すような流れで、ボリュームコピーＬＵ登録テーブル３０９に情報が登録される。
【００９１】
例えば、ボリュームコピー取得プログラム３０２は、例えば管理端末６００のディスプレイ画面に、コピーペア設定画面９１２を表示させる。コピーペア設定画面９１２は、PVOL２０４を構成するPVOL-ＬＵのＬＵ＃（内部用ＬＵ番号）と、SVOLを構成する複数のSVOL-LU（１以上のFC-LU及び１以上のSATA-LU）のＬＵ＃とを入力するようになっている。このコピーペア設定画面９１２に、ボリュームコピーＬＵ登録テーブル３０９に登録されていない複数のＬＵ（つまり、ＬＵ管理テーブル９１１において選択可になっているＬＵ）の中からPVOL-FC-LU（PVOL２０４を構成するFC-LU）、SVOL-FC-LU（SVOL２０６を構成するFC-LU）、及びSVOL-SATA-LU（SVOL２０６を構成するSATA-LU）が選択されてそれぞれのＬＵ＃が入力されたならば、ボリュームコピー取得プログラム３０２は、入力された各ＬＵ＃を、ボリュームコピーＬＵ登録テーブル３０９に書く。また、ボリュームコピー取得プログラム３０２は、入力されたＬＵ＃に対応する他のＬＵ情報要素（例えばディスク種類）をＬＵ管理テーブル９１１から取得し、取得したＬＵ情報要素をボリュームコピーＬＵ登録テーブル３０９に書く。これにより、例えば、PVOL-FC-LUとして内部用ＬＵ＃「１」が入力され、SVOL-FC-LUとして内部用ＬＵ＃「２」が入力され、SVOL-SATA-LUとして内部用ＬＵ＃「３」が入力された場合、ボリュームコピー取得プログラム３０２は、ＬＵ管理テーブル９１１において、内部用ＬＵ＃「１」〜「３」の各々に対応した選択可否情報を選択可から選択不可に切替え、且つ、図３に示したようなボリュームコピーＬＵ登録テーブル３０９を構築する。
【００９２】
再び図７を参照して、Ｓ２以降について説明する。
【００９３】
ボリュームコピー取得プログラム３０２は、例えば管理端末６００を介して、ユーザから、設定値テーブル３０７の値の入力を受付ける。種々の値（すなわち、chunkサイズ、入替周期、更新頻度閾値及びディスク割合閾値）が入力された場合、ボリュームコピー取得プログラム３０２は、入力された値を設定値テーブル３０７に登録する（Ｓ２）。
【００９４】
次に、ボリュームコピー取得プログラム３０２は、PVOL-FC-chunkをボリュームコピー管理テーブル３０８に登録する（Ｓ３）。この処理における具体例を、図１２（Ａ）を参照し説明する。すなわち、例えば、ボリュームコピー取得プログラム３０２は、ボリュームコピーＬＵ登録テーブル３０９に設定されたPVOL-FC-LUについて、それのＬＵ容量及び設定値テーブル３０７に登録されたchunkサイズを基にchunkの数を算出する。そして、ボリュームコピー取得プログラム３０２は、算出された数のchunkに、それぞれ、通し番号としてchunk＃を割当て、割当てたchunk＃と、そのPVOL-FC-LUのＬＵ＃とを、ボリュームコピーＬＵ登録テーブル３０９に登録する。ボリュームコピー取得プログラム３０２は、各PVOL-FC-chunkの更新頻度には、初期値として０を入力する。なお、ボリュームコピー取得プログラム３０２は、ホスト装置１００等の外部装置からのライトコマンドに従ってデータ更新が行われたならば、データ更新が行われたPVOL-FC-chunkに対応する更新頻度を１つ加算する。
【００９５】
次に、ボリュームコピー取得プログラム３０２は、SVOL-FC-chunkをボリュームコピー管理テーブル３０８に登録する（Ｓ４）。この処理における具体例を、図１２（Ｂ）を参照し説明する。すなわち、例えば、ボリュームコピー取得プログラム３０２は、PVOL-FC-chunkを登録する場合と同様の方法で、PVOL-FC-LUのchunkの数を算出して各chunkにchunk＃を割当て、割当てたchunk＃と、そのSVOL-FC-LUのＬＵ＃とを、ボリュームコピーＬＵ登録テーブル３０９に登録する。
【００９６】
なお、Ｓ４において、全てのPVOL-FC-chunkに対してSVOL-chunkが設定されたならば（Ｓ５でＹ）、ボリュームコピー取得プログラム３０２は、後述するＳ６〜Ｓ１０の動作は行わず、Ｓ１１へ移行する。
【００９７】
また、ボリュームコピー取得プログラム３０２は、Ｓ４において、少なくとも１つのPVOL-FC-chunkに対してSVOL-chunkが設定されておらず、且つ、SVOL-FC-chunkが未だPVOL-FC-chunkに対応付けられておらずに残っている場合には（Ｓ５でＮ及びＳ６でＹ）、残っているPVOL-FC−chunkに対し、Ｓ４の動作を実行する。
【００９８】
また、ボリュームコピー取得プログラム３０２は、Ｓ４において、少なくとも１つのPVOL-FC-chunkに対してSVOL-chunkが設定されておらず、且つ、SVOL-FC-chunkが残っていない場合には（Ｓ５でＮ及びＳ６でＮ）、SVOL-SATA-LUについて、SVOL-FC-LUの場合と同様に、chunkの数を算出して各chunkにchunk＃を割当て、割当てたchunk＃及びＬＵ＃をボリュームコピーＬＵ登録テーブル３０９に登録する（Ｓ７）。その結果の一例を、図１２（Ｃ）に示す。
【００９９】
なお、Ｓ７において、ボリュームコピー取得プログラム３０２は、全てのPVOL-FC-chunkに対してSVOL-chunkが設定された場合には（Ｓ８でＹ）、後述するＳ９〜Ｓ１０の動作は行わず、Ｓ１１へ移行する。
【０１００】
また、Ｓ７において、ボリュームコピー取得プログラム３０２は、少なくとも１つのPVOL-chunkに対してSVOL-chunkが設定されておらず、且つ、SVOL-SATA-chunkが未だPVOL-FC-chunkに対応付けられておらずに残っている場合には（Ｓ８でＮ及びＳ９でＹ）、Ｓ７に戻る。
【０１０１】
また、Ｓ７において、ボリュームコピー取得プログラム３０２は、少なくとも１つのPVOL-FC-chunkに対してSVOL-chunkが設定されておらず、且つ、SVOL-SATA-chunkが残っていない場合には（Ｓ８でＮ及びＳ９でＮ）、SVOLのchunkが足りないということなので、SVOLにＬＵを追加することの警告を、例えば管理端末６００に出力する（Ｓ１０）。
【０１０２】
Ｓ５でＹ又はＳ８でＹの後、PVOLにデータが格納された場合、ボリュームコピー取得プログラム３０２は、ボリュームコピー管理テーブル３０８を参照して、PVOLのどのchunkにどのSVOLのどのchunkが対応付けられているかを判別し、PVOL-FC-chunk及びそれに対応付けられたSVOL-chunkにサブデータを格納する（Ｓ１１）。具体的には、例えば、ボリュームコピー取得プログラム３０２は、キャッシュメモリ２３０に登録されているサブデータを二重化し、キャッシュメモリ２３０上の一方のサブデータをPVOL-FC-chunkに格納し、キャッシュメモリ２３０上の他方のサブデータを、そのPVOL-FC-chunkに対応付けられたSVOL-chunkに格納する。
【０１０３】
Ｓ１１の後、ボリュームコピー取得プログラム３０２は、任意のタイミングで、ボリュームコピーＬＵ登録テーブル３０９において、SVOLを構成する各ＬＵのアクセス属性を、Ｒ／Ｗ可（読出し及び書込みの両方を許可）に設定する（Ｓ１２）。
【０１０４】
なお、この処理において、PVOLには、ランダムライトアクセスによってデータが書き込まれても良いし、シーケンシャルライトアクセスによってデータが書き込まれても良い。例えば、ランダムライトアクセスの場合、ボリュームコピー取得プログラム３０２は、各PVOL-FC-chunk毎に対応したライトコマンドを受け、１つのライトコマンドを処理する都度に、PVOL-FC-chunk及びそれに対応付けられたSVOL-chunkにサブデータを格納する。一方、例えば、シーケンシャルライトアクセスの場合、ボリュームコピー取得プログラム３０２は、複数のPVOL-FC-chunk（例えば全てのPVOL-FC-chunk）に対応したライトコマンドを受け、１つのライトコマンドを処理する際に、chunk＃の若い方から順に、複数のPVOL-FC-chunk及びそれらにそれぞれ対応した複数のSVOL-chunkにサブデータを書き込んでいく。
【０１０５】
図８は、ＣＰＵ２１０に読み込まれた更新頻度閾値入替えプログラム３０３によって実行される処理の流れを示す。
【０１０６】
設定値テーブル３０７に登録された入替周期の時期になった場合（Ｓ２１−Ａ）、或いは、ユーザから所定端末（例えば管理端末６００或いはホスト装置１００）を介してデータ入替え指示が入力された場合（Ｓ２１−Ｂ）、基本制御プログラム３０１が更新頻度閾値入替えプログラム３０３を起動する。
【０１０７】
更新頻度閾値入替えプログラム３０３は、１以上のボリュームペアの中から選択されたボリュームペア（以下、対象ボリュームペア）が、非ミラーの状態であることが判別されたならば、ボリュームコピーＬＵ登録テーブル３０９において、対象ボリュームペアのSVOLを構成する各ＬＵのアクセス属性を更新不可（例えばＲのみ可）に設定する。対象ボリュームペアがミラー状態にあった場合には、警告を出力する（Ｓ２２）。なお、対象ボリュームペアが非ミラー状態かミラー状態かは、例えば、各ペア番号に対応した状態情報（ミラー状態か非ミラー状態かを表す情報）が登録されているペア管理テーブル９１４（例えば制御メモリ２２０に用意される）を参照することにより、判別することができる。また、ミラー状態とは、二重化されている状態。すなわち、PVOL内でデータが更新された場合にはPVOLからSVOLに更新後データがコピーされるようになっている状態（換言すれば、SVOLがPVOLに同期した状態）である。非ミラー状態とは、二重化が解除されている状態、すなわち、PVOL内でデータが更新されてもPVOLからSVOLに更新後データがコピーされないようになっている状態（換言すれば、SVOLがPVOLに非同期した状態）である。
【０１０８】
さて、次に、更新頻度閾値入替えプログラム３０３は、ボリュームコピー管理テーブル３０８の最初の行に登録されているPVOLchunkの更新頻度と、設定値テーブル３０７に登録されている更新頻度閾値とを比較する（Ｓ２３）。
【０１０９】
Ｓ２３において、更新頻度閾値入替えプログラム３０３は、PVOL-FC-chunkの更新頻度が更新頻度閾値以上であり（Ｓ２３でＹ）、且つ、そのPVOL-FC-chunkのchunkペア相手のSVOL-chunkがFC-chunkであることがボリュームコピー管理テーブル３０８から判別された場合には（Ｓ２４でＹ）、後述のＳ２８に進む。
【０１１０】
Ｓ２３において、更新頻度閾値入替えプログラム３０３は、PVOL-FC-chunkの更新頻度が更新頻度閾値以上であり（Ｓ２３でＹ）、且つ、そのPVOL-FC-chunkに対応したSVOL-chunkがFC-chunkでないことがボリュームコピー管理テーブル３０８から判別された場合には（Ｓ２４でＮ）、複数のプールchunkの中からプールFC-chunkを選択し、選択されたプールFC-chunkのchunk＃及びLU＃を、上記FC-chunkでないSVOL-chunk（つまりSVOL-SATA-chunk）に対応付けて、ボリュームコピー管理テーブル３０８の右列（入替え相手chunkの列）に書込む（Ｓ２５）。これにより、サブデータの更新頻度が更新頻度閾値以上であるPVOL-FC-chunkに対応付けられたSVOL-SATA-chunkに対し、データの入替え相手として、高信頼性・高性能のディスク装置上に存在するFC-chunkが対応付けられる。なお、SVOL-SATA-chunkに対応付けられるchunk＃は、複数のプールchunkの中から選択されたことから分かるように、ボリュームコピー管理テーブル３０８上に登録されていないchunk＃である。
【０１１１】
Ｓ２３において、更新頻度閾値入替えプログラム３０３は、PVOL-FC-chunkの更新頻度が更新頻度閾値未満であり（Ｓ２３でＮ）、且つ、そのPVOL-FC-chunkに対応したSVOL-chunkがSATA-chunkであることがボリュームコピー管理テーブル３０８から判別された場合には（Ｓ２６でＹ）、後述のＳ２８に進む。
【０１１２】
Ｓ２３において、更新頻度閾値入替えプログラム３０３は、PVOL-FC-chunkの更新頻度が更新頻度閾値未満であり（Ｓ２３でＮ）、且つ、そのPVOL-FC-chunkに対応したSVOL-chunkがSATA-chunkでないことがボリュームコピー管理テーブル３０８から判別された場合には（Ｓ２６でＮ）、複数のプールchunkの中からSATA-chunkを選択し、選択されたSATA-chunkのchunk＃及びLU＃を、上記SATA-chunkでないSVOL-chunk（つまりSVOL-FC-chunk）に対応付けて、ボリュームコピー管理テーブル３０８の右列（入替え相手chunkの列）に書込む（Ｓ２７）。これにより、サブデータの更新頻度が更新頻度閾値未満であるPVOL-FC-chunkに対応付けられたSVOL-FC-chunkに対し、データの入替え相手として、低頼性・低性能であるが安価であるディスク装置上に存在するSATA-chunkが対応付けられる。
【０１１３】
なお、Ｓ２４でＹ、Ｓ２６でＹ、Ｓ２５又はＳ２７において、入替え先のchunkが存在しない場合（換言すれば、選択可能なプールchunkが存在しない場合）（Ｓ２８でＮ）、入替え先のchunkのプールが不足しているので、更新頻度閾値入替えプログラム３０３は、SVOLにＬＵを追加するか閾値の変更を行うような警告を、例えば管理端末６００又はホスト装置１００に出力する（Ｓ２９）。また、全てのchunkの確認を行わずとも、後述のＳ３１〜Ｓ３６までの処理が行われても良い。この場合、その処理の後に、Ｓ２２以降の処理が行われても良い。
【０１１４】
さて、Ｓ２８において、入替え先chunkが足りている場合（Ｓ２８でＹ）、更新頻度閾値入替えプログラム３０３は、全てのPVOL-FC-chunkについて、更新頻度と更新頻度閾値との比較処理を終えたかを判断する（Ｓ３０）。
【０１１５】
Ｓ３０において、まだ比較処理が行われていないPVOL-FC-chunkがあれば（Ｓ３０でＮ）、更新頻度閾値入替えプログラム３０３は、Ｓ２３に戻り、次のPVOL-FC-chunkについて、Ｓ２３〜Ｓ２８の処理を行う。
【０１１６】
一方、Ｓ３０において、全てのPVOL-FC-chunkについて比較処理が終わっていると判断されたならば（Ｓ３０でＹ）、更新頻度閾値入替えプログラム３０３は、ボリュームコピー管理テーブル３０８に登録されたchunk＃を有する入替え先chunkに、それに対応付いたコピー先chunk内のデータを入れ替える処理を実行するべく、バックアップ等によってSVOLからデータの読み出しが行われているか否かを判断する（Ｓ３１）。
【０１１７】
Ｓ３１において、SVOLからデータの読出中であった場合は（Ｓ３１でＹ）、更新頻度閾値入替えプログラム３０３は、読み出しを行っているバックアップ等の操作を停止するか、入替えプログラムを停止するような警告を出力する（Ｓ３２）。
【０１１８】
一方、Ｓ３１において、SVOLからデータの読出し中でない場合には（Ｓ３１でＮ）、更新頻度閾値入替えプログラム３０３は、SVOLを構成する各ＬＵのアクセス属性を読出し不可（例えばＲ／Ｗ不可）に設定する（Ｓ３３）。
【０１１９】
Ｓ３３の後、更新頻度閾値入替えプログラム３０３は、ボリュームコピー管理テーブル３０８に基づいて、中列（SVOL欄）に登録されているchunk＃を持つSVOL-chunk内のサブデータを、そのSVOL-chunkに対応付けられた入替え先chunkに移動させる（Ｓ３４）。それが完了したならば、更新頻度閾値入替えプログラム３０３は、ボリュームコピー管理テーブル３０８において、その入替え先chunkの内容（ディスク種類、ＬＵ＃及びchunk＃）を、その入替え先chunkに対応するSVOL-chunkの内容に上書きし、且つ、右列（入替え相手chunk欄）から、上記入替え先chunkの内容を消去する（Ｓ３５）。また、その場合、更新頻度閾値入替えプログラム３０３は、消去した入替え先chunkの内容（例えばchunk＃）を、プールchunkの内容として、例えばＬＵ管理テーブル９１１に登録しても良い。
【０１２０】
Ｓ３５の後、更新頻度閾値入替えプログラム３０３は、SVOLを構成する各ＬＵのアクセス属性を読出し可（例えばＲのみ可）に設定する（Ｓ３６）。なお、Ｓ３６の後、もし全てのPVOL-FC-chunkについて上記比較処理を行わずにＳ３１以降を行っていた場合には、更新頻度閾値入替えプログラム３０３は、点線で示す通り、Ｓ３に戻る。
【０１２１】
Ｓ３６の後、更新頻度閾値入替えプログラム３０３は、ボリュームコピー管理テーブル３０８にお上の各ｖの更新頻度を、初期値に戻す（Ｓ３７）。そして、更新頻度閾値入替えプログラム３０３は、SVOLを構成する各ＬＵのアクセス属性を更新可（例えばＲ／Ｗ可）に設定する（Ｓ３８）。
【０１２２】
以上が、更新頻度閾値入替えプログラム３０３が行う処理流れである。
【０１２３】
図９は、ＣＰＵ２１０に読み込まれたディスク使用割合入替えプログラム３０４によって実行される処理の流れを示す。
【０１２４】
設定値テーブル３０７に登録された入替周期の時期になった場合（Ｓ４１−Ａ）、或いは、ユーザから所定端末（例えば管理端末６００或いはホスト装置１００）を介してデータ入替え指示が入力された場合（Ｓ４１−Ｂ）、基本制御プログラム３０１がディスク使用割合入替えプログラム３０４を起動する。
【０１２５】
ディスク使用割合入替えプログラム３０４は、図８のＳ２２と同様の方法で、ボリュームコピーＬＵ登録テーブル３０９において、対象ボリュームペアのSVOLを構成する各ＬＵのアクセス属性を更新不可（例えばＲのみ可）に設定する（Ｓ４２）。
【０１２６】
次に、ディスク使用割合入替えプログラム３０４は、ボリュームコピー管理テーブル８０３上の複数の行を、データ更新頻度の降順（つまり高い順）にソートする（Ｓ４３）。以下、ボリュームコピー管理テーブル８０３の行数をｎとし、降順ソート後の行番号をｉとし、降順ソート後のボリュームコピー管理テーブル８０３をＰ（ｉ）とする。ディスク使用割合入替えプログラム３０４は、例えば、降順ソート後行番号ｉの若い順に（換言すれば、データ更新頻度の高い順に）、以下のＳ４４以降の処理を行なう。
【０１２７】
ディスク使用割合入替えプログラム３０４は、複数の降順ソート後行番号の中から１つの行番号ｉを選択し、選択した行番号ｉを行数ｎで割った値ｉ／ｎと、設定値テーブル３０７に登録されているディスク割合閾値Ｔとを比較する（Ｓ４４）。
【０１２８】
Ｓ４４の結果、ｉ／ｎがＴ以上である場合、ディスク使用割合入替えプログラム３０４は、上記選択された行番号ｉのPVOL-FC-chunkに対応したSVOL-chunkはFC-chunkであるか否かを判別する（Ｓ４５）。Ｓ４５において、肯定的な判別結果が得られた場合（Ｓ４５でＹ）、ディスク使用割合入替えプログラム３０４は、後述のＳ５１の処理を行う。一方、Ｓ４５において、否定的な判別結果が得られた場合（Ｓ４５でＮ）、ディスク使用割合入替えプログラム３０４は、複数のプールchunkの中からFC-chunkを選択し、その選択したFC-chunkを、上記対応したSVOL-chunkの入替え相手chunkとしてＰ（ｉ）に設定する（Ｓ４６）。その際、複数のプールchunkの中に、選択可能なFC-chunkが存在しない場合には（Ｓ４９でＮ）、ディスク使用割合入替えプログラム３０４は、選択可能なプールFC-chunkを増やすことの警告をユーザに出力し（Ｓ５０）、そうでない場合は（Ｓ４９でＹ）、Ｓ５１を行なう。
【０１２９】
Ｓ４４の結果、ｉ／ｎがＴ未満である場合、ディスク使用割合入替えプログラム３０４は、上記選択された行番号ｉのPVOL-FC-chunkに対応したSVOL-chunkはSATA-chunkであるか否かを判別する（Ｓ４７）。Ｓ４５において、肯定的な判別結果が得られた場合（Ｓ４７でＹ）、ディスク使用割合入替えプログラム３０４は、後述のＳ５１の処理を行う。一方、Ｓ４７において、否定的な判別結果が得られた場合（Ｓ４７でＮ）、ディスク使用割合入替えプログラム３０４は、複数のプールchunkの中からSATA-chunkを選択し、その選択したSATA-chunkを、上記対応したSVOL-chunkの入替え相手chunkとしてＰ（ｉ）に設定する（Ｓ４８）。その際、複数のプールchunkの中に、選択可能なSATA-chunkが存在しない場合には（Ｓ４９でＮ）、ディスク使用割合入替えプログラム３０４は、選択可能なプールSATA-chunkを増やすことの警告をユーザに出力し（Ｓ５０）、そうでない場合は（Ｓ４９でＹ）、Ｓ５１を行なう。
【０１３０】
ディスク使用割合入替えプログラム３０４は、以上のＳ４４〜Ｓ４８の処理を、全ての行番号ｉについて行ない（Ｓ５１でＮ）、全ての行番号ｉについて行ったのであれば（Ｓ５１でＹ）、図８のＳ３１〜Ｓ３８と同様の処理を行う。
【０１３１】
以上の処理流れによれば、PVOL-FC-chunk内のサブデータの更新頻度に応じて、そのPVOL-FC-chunkに対応したSVOL-chunkが適切な属性レベルのchunkでなければ、そのSVOL-chunk内のサブデータが適切な属性レベルの別のchunkに移されると共に、SVOL２０６におけるSVOL-FC記憶容量の割合（別の言い方をすれば、SVOL-SATA記憶容量の割合）がディスク割合閾値Ｔに調整される。
【０１３２】
図１０は、ＣＰＵ２１０に読み込まれた障害切り替えプログラム３０５によって実行される処理の流れを示す。なお、以下の説明では、説明を分かり易くするために、障害発生時のPVOLを元PVOL、障害発生時のSVOLを元SVOL、障害切り替えプログラムにより作成されたPVOLおよびSVOLをそれぞれ新PVOLおよび新SVOLと呼ぶ。また、以下の説明では、ホスト装置１００からライト対象データを受けて元PVOLに書込んでいる最中に元PVOLで障害が発生したものとする。
【０１３３】
元PVOLで障害が発生した場合（Ｓ６１）、基本制御プログラム３０１が、それを検出して、障害切り替えプログラム３０５を起動する。
【０１３４】
障害切り替えプログラム３０５は、障害が発生した元PVOLを構成する各ＬＵのアクセス属性として読み出し不可（例えばＲ／Ｗ不可）をボリュームコピーＬＵ登録テーブル３０９に設定する（Ｓ６２）。また、障害切り替えプログラム３０５は、元PVOLに対するホスト装置１００からのライト対象データを、キャッシュメモリ２３０又は別のＬＵに保存する（Ｓ６３）。
【０１３５】
次に、障害切り替えプログラム３０５は、複数のプールchunkの中からFC-chunkを選択し、選択されたFC-chunkのchunk＃及びLU＃を、元SVOL-SATA-chunkに対応付けて、障害対応管理テーブル３０６の右列（障害対応移動先chunk欄）に書込む（Ｓ６４）。なお、その際、割当て可能なFC-chunkが不足してなければ（Ｓ６５でＹ）、障害切り替えプログラム３０５は、後述のＳ６７を行い、一方、割当て可能なFC-chunkが複数のプールchunk内に存在しない場合には、FC-LUが不足している旨の警告を出力する（Ｓ６５でＮ及びＳ６６）。
【０１３６】
Ｓ６７では、障害切り替えプログラム３０５は、障害対応ボリュームコピー管理テーブル３０６に基づいて、中列（SVOL欄）に登録されているchunk＃を持つ元SVOL-SATA-chunk内のサブデータを、その元SVOL-SATA-chunkに対応付けられた入替え先chunk（FC-chunk）に移動させる（Ｓ６７）。
【０１３７】
次に、障害切り替えプログラム３０５は、障害対応ボリュームコピー管理テーブル３０６において、入替え先chunkの内容（ＬＵ＃及びchunk＃）を、その入替え先chunkに対応する元PVOL-FC-chunkの内容に上書きし、入替え先chunkの内容の内容を消去する。また、障害切り替えプログラム３０５は、入替え先chunkが存在しない元PVOL-FC-chunkについては、元SVOL-FC-chunkの内容（ＬＵ＃及びchunk＃）を、元PVOL-FC-chunkの内容に上書きし、その元SVOL-FC-chunkの内容を消去する（Ｓ６８）。このような処理によって、元PVOLに障害が発生した場合、元PVOL-FC-chunkに対応した元SVOL-chunkがFC-chunkであれば、その元SVOL-chunkがそのまま新PVOL-chunkに切り替わる。そして、元PVOL-chunkに対応した元SVOL-chunkがSATA-chunkであれば、複数のプールchunkの中から選択されたFC-chunkがそのSATA-chunkに対応付けられて、選択されたFC-chunkが新PVOL-chunkに切り替わる。この結果、障害対応ボリュームコピー管理テーブル３０６の左列（オリジナルデータ欄）に登録されていた複数の元PVOL-chunkの各々が、元SVOL-FC-chunk又は上記選択されたFC-chunkに切替えられて、元SVOL-FC-chunkや上記選択されたFC-chunkで構成された新PVOLが生成される。なお、障害対応ボリュームコピー管理テーブル３０６の更新前の様子を図１３（Ａ）に示し、そのテーブル３０６の更新後の様子を図１３（Ｂ）に示す。
【０１３８】
Ｓ６８のテーブル更新処理によって、複数の元SVOL-chunkのうちFC-chunkであるものは、全て新PVOL-FC-chunkに切り替わったので、その分の新SVOL-chunkが必要になる。そこで、障害切り替えプログラム３０５は、例えば、複数のプールchunkの中から、必要な数だけのFC-chunkを選択し、選択されたFC-chunkを、新SVOL-chunkとして、障害対応ボリュームコピー管理テーブル３０６やボリュームコピー管理テーブル３０８の中列に登録する。そして、障害切り替えプログラム３０５は、元SVOL-chunkであったFC-chunk内のデータを、新SVOL-chunkにコピーする（Ｓ６９）。
【０１３９】
その後、障害切り替えプログラム３０５は、Ｓ６３で保存したライト対象データを、新PVOLに書込む。また、障害切り替えプログラム３０５は、例えばホスト装置１００から所定の照会コマンド（例えばSCSIプロトコルに基づくInquiryコマンド）を受信した場合に、新PVOLに関する情報（例えば、外部用ＬＵ番号及び記憶容量等）をホスト装置１００に提供する（Ｓ６９）。それにより、ホスト装置１００は、新PVOLを認識することができる。
【０１４０】
以上が、障害切り替えプログラム３０５によって行われる処理の流れである。なお、上述のＳ６８の際、障害切り替えプログラム３０５は、ボリュームコピー管理テーブル３０８の内容も同様に更新しても良い。また、新PVOL-chunkに切替えられた元SVOL-chunkの内容は、障害対応ボリュームコピー管理テーブル３０６やボリュームコピー管理テーブル３０８から消去しても良い。
【０１４１】
以上、上述した実施形態によれば、記憶制御システム２００上に存在する複数のＬＵの各々が、複数のchunkに分割される。また、PVOLはFC-chunkのみで構成されるが、SVOLは、FC-chunkとSATA-chunkの両方で構成される。そして、複数のSVOL-chunkの各々には、複数のプールchunkの中から選択されたFC-chunkとSATA-chunkのいずれかが動的に対応付けられる。対応付けられるchunkの種類は、PVOLへのデータの書込み状況に基づいて切替えられる。具体的には、例えば、データの更新頻度が高いPVOL-FC-chunkに対応したSVOL-SATA-chunkには、高信頼性及び高性能であるFCディスク装置上に存在するFC-chunkが対応付けられ、一方、データの更新頻度が低いPVOL-FC-chunkに対応したSVOL-FC-chunkには、低信頼性及び低性能であるが安価であるSATAディスク装置上に存在するSATA-chunkが対応付けられる。これにより、低信頼性及び低性能のディスク装置によるコピー処理が低速になることとコストの両方を抑えることができる。
【０１４２】
また、上述した実施形態によれば、SVOLにおけるSVOL-FC記憶容量割合（換言すればSVOL-SATA記憶容量割合）が、予め設定したディスク割合閾値になるように自動的に調節される。これにより、ユーザが定期的にわざわざ面倒な設定を行わなくても、SVOLにおけるＦＣ記憶容量割合はユーザ所望の割合になる。
【０１４３】
また、上述した実施形態によれば、SVOL-FC記憶容量割合の調節は、更新頻度の高いPVOL-FC-chunkに対応したSVOL-chunk順に行なわれる。これにより、効率的に、FC記憶容量割合の調節が行われる。
【０１４４】
また、上述した実施形態によれば、元PVOLで障害が発生した場合、元PVOL-chunkに対応付けられているchunkがSATA-chunkであっても、そのSATA-chunk内のデータは、複数のプールchunkの中から選択されたFC-chunkに移動され、そのFC-chunkが新PVOL-chunkに切り替わる。これにより、元PVOL-chunkに対応付けられているchunkの種類に関わらず、新PVOLを構成する新PVOL-chunkをFC-chunkにすることができる。
【０１４５】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、上述した実施形態は、信頼性や性能以外の属性レベルの記憶デバイスに対しても適用することができる。また、上述した実施形態は、複数のＬＵが２以上の装置に分散して配置されていても（例えば、PVOLが記憶制御システム２００に存在していてSVOLが他の記憶制御システムに存在していても）、適用することができる。また、上述した実施形態では、ディスク装置の優劣は、高信頼性及び高性能であるか低信頼性及び低性能であるかの２段階であるが、それよりも多段階であっても良い。また、上述した実施形態において、更新頻度閾値及びディスク割合閾値の少なくとも一方は、より細かな調節を行うことができるよう複数個存在していても良い。また、ディスク割合閾値は、FC記憶容量割合用とSATA記憶容量割合用の２種類が用意されても良い。また、データ更新頻度は、一定期間内でのデータ更新回数であるが、必ずしも一定期間でなく、例えば単に更新回数であっても良い。
【符号の説明】
【０１４６】
１００…ホスト装置  ２００…記憶制御システム  ２０１…ＦＣディスク装置  ２０３…ＳＡＴＡディスク装置  ２０４…プライマリボリューム（PVOL）  ２０６…セカンダリボリューム（SVOL）  ２０５、２０６Ａ、２０６Ｂ…ＬＵ（論理ユニット）  ２１０…ＣＰＵ  ２２０…制御メモリ  ２３０…キャッシュメモリ  ２５０…ディスクコントローラ  ４００…バックアップサーバ  ５００…テープ装置  ６００…管理端末
【図１】
2010191989.tif 000003
【図２】
2010191989.tif 000004
【図３】
2010191989.tif 000005
【図４】
2010191989.tif 000006
【図５】
2010191989.tif 000007
【図６】
2010191989.tif 000008
【図７】
2010191989.tif 000009
【図８】
2010191989.tif 000010
【図９】
2010191989.tif 000011
【図１０】
2010191989.tif 000012
【図１１】
2010191989.tif 000013
【図１２】
2010191989.tif 000014
【図１３】
2010191989.tif 000015
【図１４】
2010191989.tif 000016
【手続補正書】
【提出日】平成22年5月26日(2010.5.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
属性レベルの異なる複数の物理記憶デバイスと、
前記複数の物理記憶デバイス上に備えられる複数の論理ユニットと、
外部装置から受信したデータを前記複数の論理ユニットの中から選択された論理ユニットに書込む制御装置と
を備え、
前記複数の論理ユニットは、高い属性レベルの物理記憶デバイス上に備えられる１以上の高レベル論理ユニットと、前記高い属性レベルよりも低い属性レベルの物理記憶デバイス上に備えられる１以上の低レベル論理ユニットとを含み、
前記複数の論理ユニットの各々は、２以上のチャンクから構成されており、
前記複数の論理ユニットを構成する複数のチャンクには、前記１以上の高レベル論理ユニットを構成する複数の高レベルチャンクと、前記１以上の低レベル論理ユニットを構成する複数の低レベルチャンクとが含まれており、
前記複数の高レベルチャンクの少なくとも１つと、前記複数の前記複数の低レベルチャンクの少なくとも１つが、動的に対応付けられることが可能なプールチャンクであり、
前記制御装置は、前記複数のチャンクの中から選択された第１のチャンク内のデータを第２のチャンクに書込む場合、前記複数のチャンクの使用状況に基づいて、複数の前記プールチャンクの中から高レベルチャンクと低レベルチャンクのいずれかを選択し、選択したチャンクに前記第１チャンク内のデータを書込む、
記憶制御システム。
【手続補正書】
【提出日】平成22年6月8日(2010.6.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の第１種別の記憶デバイスと、前記複数の第１種別の記憶デバイスと属性の異なる複数の第２種別の記憶デバイスと、を含む複数の記憶デバイスと、
前記複数の第１種別の記憶デバイス上の複数の第１種別のチャンクと、前記複数の第２種別の記憶デバイス上の複数の第２種別のチャンクと、を管理し、ボリュームを構成する複数のチャンク各々に対応して格納されているデータのアクセス頻度に基づいて、前記複数のチャンクの各々に割当てられるべきチャンクの種別を選択する制御部と、を有する
ことを特徴とする記憶制御システム。
【請求項２】
前記制御部は、
前記選択に利用される前記アクセス頻度を定期的に参照することを特徴とする請求項１に記載の記憶制御システム。
【請求項３】
前記ボリュームを構成する複数のチャンクは、第１のチャンクと第２のチャンクとを含み、
前記制御部は、
前記アクセス頻度に基づいて、前記第１のチャンクには前記第１種別のチャンクを割当て、前記第２のチャンクには前記第２種別のチャンクを割当てることを特徴とする請求項１に記載の記憶制御システム。
【請求項４】
前記第１種別の記憶デバイスはＦＣであり、
前記第２種別の記憶デバイスはＳＡＴＡであることを特徴とする請求項１に記載の記憶制御システム。
【請求項５】
複数の第１種別の記憶デバイスと、前記複数の第１種別の記憶デバイスと属性の異なる複数の第２種別の記憶デバイスと、を含む複数の記憶デバイスを有する記憶制御システムのプログラムであって、
前記複数の第１種別の記憶デバイス上の複数の第１種別のチャンクと、前記複数の第２種別の記憶デバイス上の複数の第２種別のチャンクと、を管理し、ボリュームを構成する複数のチャンク各々に対応して格納されているデータのアクセス頻度に基づいて、前記複数のチャンクの各々に割当てられるべきチャンクの種別を選択することを特徴とする記憶制御システムのプログラム。
【請求項６】
前記プログラムは、
前記選択に利用される前記アクセス頻度を定期的に参照することを特徴とする請求項５に記載の記憶制御システムのプログラム。
【請求項７】
前記ボリュームを構成する複数のチャンクは、第１のチャンクと第２のチャンクとを含み、
前記プログラムは、
前記アクセス頻度に基づいて、前記第１のチャンクには前記第１種別のチャンクを割当て、前記第２のチャンクには前記第２種別のチャンクを割当てる処理を実行させることを特徴とする請求項５に記載の記憶制御システムのプログラム。
【請求項８】
前記第１種別の記憶デバイスはＦＣであり、
前記第２種別の記憶デバイスはＳＡＴＡであることを特徴とする請求項５に記載の記憶制御システムのプログラム。
【請求項９】
複数の第１種別の記憶デバイスと、前記複数の第１種別の記憶デバイスと属性の異なる複数の第２種別の記憶デバイスと、を含む複数の記憶デバイスを有する記憶制御システムの制御方法であって、
前記複数の第１種別の記憶デバイス上の複数の第１種別のチャンクと、前記複数の第２種別の記憶デバイス上の複数の第２種別のチャンクと、を管理し、ボリュームを構成する複数のチャンク各々に対応して格納されているデータのアクセス頻度に基づいて、前記複数のチャンクの各々に割当てられるべきチャンクの種別を選択することを特徴とする記憶制御システムの制御方法。
【請求項１０】
前記選択に利用される前記アクセス頻度を定期的に参照することを特徴とする請求項９に記載の記憶制御システムの制御方法。
【請求項１１】
前記ボリュームを構成する複数のチャンクは、第１のチャンクと第２のチャンクとを含み、
前記アクセス頻度に基づいて、前記第１のチャンクには前記第１種別のチャンクを割当て、前記第２のチャンクには前記第２種別のチャンクを割当てることを特徴とする請求項９に記載の記憶制御システムの制御方法。
【請求項１２】
前記第１種別の記憶デバイスはＦＣであり、
前記第２種別の記憶デバイスはＳＡＴＡであることを特徴とする請求項９に記載の記憶制御システムの制御方法。