(57)【要約】      （修正有）【課題】ストレージの低減された物理容量を保ちつつ、削減されたＩ／Ｏレイテンシーを達成する。【解決手段】ストレージシステムを制御する方法であって、第１ボリューム及び複数の第２ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第１ボリュームにデータを格納した後、前記第１ボリュームに対する書込みＩ／Ｏ（入出力）アクセスを禁止することと、前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、前記書込み要求のうちの各一つの書込み要求に応じて、要求のターゲットボリュームが書込みを禁止されているか否か判断し、禁止されていない場合にのみ、書込み要求を実行することとを含む、方法。【選択図】図２
2011175616.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムを制御する方法であって、
第１ボリューム及び複数の第２ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第１ボリュームにデータを格納することと、
前記第１ボリュームに前記データを格納した後、前記第１ボリュームに対する書込みＩ／Ｏ（入出力）アクセスを禁止することと、
前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行することと
を含む、方法。
【請求項２】
前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定することをさらに含み、
前記判断は、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む、請求項１に記載の方法。
【請求項３】
前記ストレージシステムが、前記複数の第２ボリュームのうちの一つの第２ボリュームについての読出し要求を受け取ることと、
前記読出し要求に応じて、前記第１ボリュームから取得したデータのイメージと、前記一つの第２ボリュームからホストコンピュータへと転送されたデータとを提供することと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記第２ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、
後続の書込み要求を実行するための前記第２ボリュームの前記ページへの書込みは、非同期で行われる、請求項１に記載の方法。
【請求項５】
前記後続の書込み要求のためのデータはキャッシュメモリに書き込まれ、
前記キャッシュメモリから前記ページへの書込みは、前記キャッシュメモリのダーティ領域が所定の閾値に達する前に実行される、請求項４に記載の方法。
【請求項６】
前記後続の書込み要求はスナップショットイメージについてである、請求項１に記載の方法。
【請求項７】
前記後続の書込み要求はホストコンピュータから送信され、
各ホストコンピュータは、前記第２ボリュームのうちの一つに対応する、請求項１に記載の方法。
【請求項８】
前記第２ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、
仮想ボリュームとペアを成すペア論理ボリュームの関連領域についてキャッシュ領域を探索するために、前記ペア論理ボリュームの前記関連領域を専有状態としてロックすることなしに、キャッシュ制御を実行することをさらに含む、請求項１に記載の方法。
【請求項９】
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されている場合、前記データを前記ペア論理ボリュームの前記キャッシュ領域から前記仮想ボリュームのキャッシュ領域にコピーすることと、
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されていない場合、前記データを前記ペア論理ボリュームのデータから前記仮想ボリュームのキャッシュ領域にコピーすることと、
前記ペア論理ボリュームの前記関連領域をロック解除する必要なしに、前記仮想ボリューム仮想ボリューム・キャッシュ領域状態を「クリーン」に変更することと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記第２ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、
仮想ボリュームの仮想ボリュームページにスナップショットプールページを割り当てることと、
仮想ボリュームとペアを成すペア論理ボリュームの前記関連領域ついて、キャッシュ領域を探索することと、
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されているか否かをチェックし、格納されている場合には、ペア論理ボリュームの前記キャッシュ領域から前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーし、格納されていない場合には、論理ボリューム領域のディスクから前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーすることと、
前記コピーオンライト・スナップショットページの前記キャッシュ状態を「ダーティ」に変更することと
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記第１ボリュームに格納された前記データは、すべての前記ホストコンピュータによって共有されるゴールドイメージであり、
各ホストコンピュータは、対応する第２ボリュームに結合されており、かつ
各ホストコンピュータの更新は、前記対応する第２ボリュームに格納される、請求項１に記載の方法。
【請求項１２】
ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおけるストレージシステムであって、
メモリと、
第１ボリューム及び複数の第２ボリュームを含むボリュームを有するストレージと、
前記ストレージシステムにおける前記第１ボリュームにデータを格納し、
前記第１ボリュームに前記データを格納した後、前記第１ボリュームに対する書込みＩ／Ｏ（入出力）アクセスを禁止し、
前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記ストレージシステムにおける前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行し、かつ
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように構成されたストレージコントローラと
を備える、ストレージシステム。
【請求項１３】
前記ストレージコントローラが、前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定するように構成され、
前記一つの書込み要求のターゲットボリュームが書込みを禁止されているか否かの判断が、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む、請求項１２に記載のストレージシステム。
【請求項１４】
前記ストレージコントローラが、
前記複数の第２ボリュームのうちの一つの第２ボリュームについての読出し要求を受け取り、かつ
前記読出し要求に応じて、前記第１ボリュームから取得したデータのイメージと、前記一つの第２ボリュームからホストコンピュータへと転送されたデータとを提供するように構成された、請求項１２に記載のストレージシステム。
【請求項１５】
前記第２ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、
前記ストレージコントローラは、後続の書込み要求を非同期で実行するために、前記第２ボリュームの前記ページに書込みを行うように構成された、請求項１２に記載のストレージシステム。
【請求項１６】
前記ストレージコントローラは、
前記後続の書込み要求のためのデータをキャッシュメモリに書込み、かつ
前記キャッシュメモリのダーティ領域が所定の閾値に達する前に、前記キャッシュメモリから前記ページに書き込むように構成された、請求項１５に記載のストレージシステム。
【請求項１７】
前記後続の書込み要求はスナップショットイメージについてである、請求項１２に記載のストレージシステム。
【請求項１８】
前記後続の書込み要求はホストコンピュータから送信され、
各ホストコンピュータは、前記第２ボリュームのうちの一つに対応する、請求項１２に記載のストレージシステム。
【請求項１９】
ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおいて、Ｉ／Ｏ（入出力）を処理するデータプロセッサを制御するための複数の命令を格納するコンピュータ読取可能記憶媒体であって、前記複数の命令は、
第１ボリューム及び複数の第２ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第１ボリュームにデータを格納させるように、前記データプロセッサに指示する命令と、
前記第１ボリュームに前記データを格納した後、前記第１ボリュームに対する書込みＩ／Ｏアクセスを禁止するように、前記データプロセッサに指示する命令と、
前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行するように、前記データプロセッサに指示する命令と、
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように、前記データプロセッサに指示する命令と
を含む、コンピュータ読取可能記憶媒体。
【請求項２０】
前記複数の命令は、前記データプロセッサに、ボリュームへの書込みアクセスが禁止されていることを示すフラグを前記ボリュームに対して設定させる命令をさらに備え、
前記一つの書込み要求の前記ターゲットボリュームが書込みを禁止されているか否かを判断することが、前記フラグが前記ターゲットボリュームに対して設定されているかをチェックすることを含む、請求項１９に記載のコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は概して、複数の論理／仮想オブジェクトがより少ない物理データを共有するストレージサブシステムの入出力（Ｉ／Ｏ）性能に関するものであり、特に、一例としては、重複除外又はコピーオンライト・スナップショット環境に関する。
【背景技術】
【０００２】
０００２    ストレージサブシステムの機能の一つは、書込み可能コピーオンライト・スナップショット機能である。スナップショットイメージは、現在のデータとスナップショットポイントからのデルタデータとから成る。あるデータに対して書込みＩ／Ｏが発生した場合、ストレージは現在のデータをプールにバックアップし、現在のデータに新しいデータを上書きする。スナップショット（バックアップ）データに対して読出しＩ／Ｏが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データがプールに格納されている場合にはデータを転送する。スナップショット（バックアップ）データに対して読出しＩ／Ｏが発生した場合、ストレージは、主ボリュームにおいて上述のバックアップデータを探索し、データが主ボリュームに格納されている場合にはデータを転送する。スナップショット（バックアップ）データに対して書込みＩ／Ｏが発生した場合、データがまだバックアップされていない場合には、ストレージは主ボリュームデータをコピーし、書き込まれたデータをマージする。スナップショット（バックアップ）データに対して書込みＩ／Ｏが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データが他のバックアップイメージによって共有されていない場合には、データを上書きする。スナップショット（バックアップ）データに対して書込みＩ／Ｏが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データが他のバックアップイメージによって共有されている場合には、データを他の領域に格納する。上記は、書込み可能コピーオンライト・スナップショット機能の一般的制御方法である。
【０００３】
０００３    書込み可能コピーオンライト・スナップショット機能は、ストレージの物理容量を削減できる。これは多くの（物理又は仮想）サーバ環境において効率的である。なぜならば、これらのサーバは同じデータを使用することになるからである。しかし、この制御方法は、ロックプロセスから及びＩ／Ｏに対するＩ／Ｏ同期コピーからバックアップイメージまでのデータの一貫性を確保するために、比較的長いレイテンシーを必要とする。例えば、この制御方法は、論理ボリューム領域への書込みＩ／Ｏの間、仮想ボリュームのＩ／Ｏデータの読出しを必要とする。
【発明の概要】
【０００４】
０００４    本発明の例示的実施形態は、ストレージの低減された物理容量を保ちつつ、削減されたＩ／Ｏレイテンシーを達成するように、書込み可能コピーオンライト・スナップショット機能を修正する方法及びシステムを提供する。但し、スナップショットイメージに対して書込み操作が発生した場合、ストレージはコピーオンライト・プロセスを行わず、一貫性保護方法を無視する。その代わり、ストレージは、その後適切な時期に（非同期的に）主データをコピーする。このようにして、本発明は高い容量効率と低いレイテンシーＩ／Ｏを達成する。
【０００５】
０００５    本発明の一態様に従って、ストレージシステムを制御する方法は、第１ボリューム及び複数の第２ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第１ボリュームにデータを格納することと、前記第１ボリュームに前記データを格納した後、前記第１ボリュームに対する書込みＩ／Ｏ（入出力）アクセスを禁止することと、前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行することとを含む。
【０００６】
０００６    ある実施形態では、前記方法は、前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定することをさらに含み、前記判断は、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む。前記方法は、前記ストレージシステムが、前記複数の第２ボリュームのうちの一つの第２ボリュームについての読出し要求を受け取ることと、前記読出し要求に応じて、前記第１ボリュームから取得したデータのイメージと、前記一つの第２ボリュームからホストコンピュータへと転送されたデータとを提供することとをさらに含む。前記第２ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、後続の書込み要求を実行するための前記第２ボリュームの前記ページへの書込みは、非同期で行われる。前記後続の書込み要求のためのデータはキャッシュメモリに書き込まれ、前記キャッシュメモリから前記ページへの書込みは、前記キャッシュメモリのダーティ領域が所定の閾値に達する前に実行される。
【０００７】
０００７    特定の実施形態では、前記後続の書込み要求はスナップショットイメージについてである。前記後続の書込み要求はホストコンピュータから送信され、各ホストコンピュータは、前記第２ボリュームのうちの一つに対応する。前記方法は、前記第２ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、仮想ボリュームとペアを成すペア論理ボリュームの関連領域についてキャッシュ領域を探索するために、前記ペア論理ボリュームの前記関連領域を専有状態としてロックすることなしに、キャッシュ制御を実行することをさらに含む。
【０００８】
０００８    ある実施形態では、前記方法は、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されている場合、前記データを前記ペア論理ボリュームの前記キャッシュ領域から前記仮想ボリュームのキャッシュ領域にコピーすることと、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されていない場合、前記データを前記ペア論理ボリュームのデータから前記仮想ボリュームのキャッシュ領域にコピーすることと、前記ペア論理ボリュームの前記関連領域をロック解除する必要なしに、前記仮想ボリューム仮想ボリューム・キャッシュ領域状態を「クリーン」に変更することとをさらに含む。
【０００９】
０００９    ある実施形態では、前記方法は、前記第２ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、仮想ボリュームの仮想ボリュームページにスナップショットプールページを割り当てることと、仮想ボリュームとペアを成すペア論理ボリュームの前記関連領域ついて、キャッシュ領域を探索することと、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されているか否かをチェックし、格納されている場合には、ペア論理ボリュームの前記キャッシュ領域から前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーし、格納されていない場合には、論理ボリューム領域のディスクから前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーすることと、前記コピーオンライト・スナップショットページの前記キャッシュ状態を「ダーティ」に変更することとをさらに含む。
【００１０】
００１０    特定の実施形態では、前記第１ボリュームに格納された前記データは、すべての前記ホストコンピュータによって共有されるゴールドイメージであり、各ホストコンピュータは、対応する第２ボリュームに結合されており、かつ各ホストコンピュータの更新は、前記対応する第２ボリュームに格納される。
【００１１】
００１１    本発明の他の態様は、ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおけるストレージシステムを対象にしている。このストレージシステムは、メモリと、第１ボリューム及び複数の第２ボリュームを含むボリュームを有するストレージと、前記ストレージシステムにおける前記第１ボリュームにデータを格納し、前記第１ボリュームに前記データを格納した後、前記第１ボリュームに対する書込みＩ／Ｏ（入出力）アクセスを禁止し、前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記ストレージシステムにおける前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行し、かつ前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように構成されたストレージコントローラとを備える。
【００１２】
００１２    本発明の他の態様は、ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおいて、Ｉ／Ｏ（入出力）を処理するデータプロセッサを制御するための複数の命令を格納するコンピュータ読取可能記憶媒体を対象とする。前記複数の命令は、第１ボリューム及び複数の第２ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第１ボリュームにデータを格納させるように、前記データプロセッサに指示する命令と、前記第１ボリュームに前記データを格納した後、前記第１ボリュームに対する書込みＩ／Ｏアクセスを禁止するように、前記データプロセッサに指示する命令と、前記第１ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第２ボリュームに対する後続の書込み要求であって、それぞれが前記第２ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行するように、前記データプロセッサに指示する命令と、前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように、前記データプロセッサに指示する命令とを含む。
【００１３】
００１３    本発明の上記及びその他の特徴及び効果は、特定の実施形態についての以下の詳細な説明を考慮することにより、当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【００１４】
【図１Ａ】００１４    図１Ａは、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。
【図１Ｂ】００１５    図１Ｂは、図１Ａの情報システムの論理システム構成の一例を示す。
【図２】００１６    図２は、図１のストレージサブシステムのメモリの一例を示す。
【図３】００１７    図３は、ＲＡＩＤグループ管理テーブルの一例を示す。
【図４】００１８    図４は、仮想ボリューム管理テーブルの一例を示す。
【図５】００１９    図５は、仮想ボリュームページ管理テーブルの一例を示す。
【図６】００２０    図６は、コピーオンライト・スナップショットプールチャンク管理テーブルの一例を示す。
【図７】００２１    図７は、コピーオンライト・スナップショットプールページ管理テーブルの一例を示す。
【図８】００２２    図８は、キャッシュ管理テーブルの一例を示す。
【図９】００２３    図９は、キャッシュの論理構造の一例を示す。
【図１０】００２４    図１０は、コピーオンライト・スナップショットプールチャンクの論理構造の一例を示す。
【図１１】００２５    図１１は、コピーオンライト・スナップショットプールに対するテーブル参照構造の一例を示す。
【図１２】００２６    図１２は、仮想ボリュームに対するテーブル参照構造の一例を示す。
【図１３】００２７    図１３は、書込みＩ／Ｏ制御を説明する流れ図の一例を示す。
【図１４】００２８    図１４は、読出しＩ／Ｏ制御を説明する流れ図の一例を示す。
【図１５】００２９    図１５は、ステージング制御を説明する流れ図の一例を示す。
【図１６】００３０    図１６は、デステージング制御を説明する流れ図の一例を示す。
【図１７】００３１    図１７は、ページマッピング制御を説明する流れ図の一例を示す。
【図１８】００３２    図１８は一貫性保護を無視する特定の実施形態に従ったストレージサブシステムのメモリの一例を示す。
【図１９】００３３    図１９は、特定の実施形態に従ったボリューム管理テーブルを示す。
【図２０】００３４    図２０は、特定の実施形態に従った書込みＩ／Ｏ制御を説明する流れ図の一例を示す。
【図２１】００３５    図２１は、特定の実施形態に従ったステージング制御を説明する流れ図の一例を示す。
【図２２】００３６    図２２は、特定の実施形態に従ったデステージング制御を説明する流れ図の一例を示す。
【発明を実施するための形態】
【００１５】
００３７    以下の本発明についての詳細な説明では、開示の一部を成すとともに、それによって本発明が実施され得る例示的実施形態の実例として（但し限定ではない）示される、添付の図面を参照する。当該図面において、類似の数字は、いくつかの図面を通してほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では様々な例示的実施形態を提供する（以下に説明し、かつ図面で示される通り）が、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態にも及び得る。本明細書における「一実施形態」、「本実施形態」、又は「上述の実施形態」の言及は、当該実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明を徹底して理解できるように、多くの具体的な詳細が記載されている。但し、本発明を実施するためにこれらの具体的な詳細すべてが必要なわけではないことは、当業者にとって明らかであろう。他の状況では、本発明を不必要に曖昧にしなにように、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ／又はブロック図において図示していない場合もある。
【００１６】
００３８    さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様で示されている。これらのアルゴリズム記述及び記号表現は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相応量の物理的操作を必要とする。通常は（必ずしもそうではないが）、かかる数量は、格納、転送、組み合わせ、比較、その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、記号、文字、用語、数字、命令等として言及することが時として便利であることが証明されている。但し、上記の及び類似の用語のすべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることを留意すべきである。別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。
【００１７】
００３９    本発明は、本明細書における操作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等（但し、これらに限定されない）のコンピュータ読取可能記憶媒体に格納され得る。本明細書において提示するアルゴリズム及び態様は、特定のコンピュータ又はその他の装置に本質的に関係していない。様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが、判明するかもしれない。さらに、本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラによって実行され得る。
【００１８】
００４０    以下により詳細に示す本発明の例示的実施形態は、ストレージの低減した物理容量を保ちつつ、削減したＩ／Ｏレイテンシーを達成するように書込み可能コピーオンライト・スナップショット機能を修正する装置、方法及びコンピュータプログラムを提供する。
【００１９】
００４１    システム構成
【００２０】
００４２    図１Ａは、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。当該システムは、ストレージサブシステム１００と、ストレージネットワーク２００と、ホストコンピュータ３０と、ストレージ管理端末４００とを含む。
【００２１】
００４３    ストレージサブシステム１００は、一つ以上のＣＰＵ１１１と、メモリ１１２と、ストレージインタフェース１１３と、ローカルネットワークインタフェース１１４と、ディスクインタフェース１１５とを有するストレージコントローラ１１０を含む。ＣＰＵ１１１は、ストレージサブシステム１００を制御し、メモリ１１２からプログラム及びテーブルを読み出す。データがメモリ１１２に格納された場合、データの一貫性を保護するためにデータをロックする必要がある。ストレージインタフェース１１３（例えば、チャネルインタフェース）は、ストレージネットワーク２００を介してストレージサブシステム１００をホストコンピュータ３００に接続する。ローカルネットワークインタフェース１１４は、ストレージサブシステム１００をストレージ管理端末４００に接続する。ディスクインタフェース１１５は、ストレージコントローラ１１０をディスク１２１に接続する。ストレージサブシステム１００内のディスクユニット１２０は、ディスク１２１を格納している。ディスク１２１はデータを格納する。ディスク１２１とは、例えばフラッシュメモリを含む。ストレージサブシステム１００は、異なる種類のディスクを含み得る。ストレージネットワーク２００は、ストレージサブシステム１００とホストコンピュータ３００とを接続する。ホストコンピュータ３００は、ストレージネットワーク２００を介してＩ／Ｏ要求をストレージサブシステム１００に送信し、ストレージネットワーク２００を介してストレージサブシステム１００にデータを送信し、かつストレージサブシステム１００からデータを受信する。ストレージ管理端末４００は、ボリューム構成、プール構成、ペア構成等を管理するために、ストレージサブシステム１００にユーザインタフェース（例えば、管理者のための）を提供する。
【００２２】
００４４    図１Ｂは、図１Ａの情報システムの論理システム構成の一例を示す。ストレージサブシステム１００は、ボリューム１４１ｐ及び１４１ｓ並びにＲＡＩＤグループ１２１−４を含む。主ボリューム１４１ｐ及び各副ボリューム１４１ｓは、コピーオンライト・ペアとして設定されている。副ボリューム１４１ｓの実体は主ボリューム１４１ｐからである。ユーザは、コピーオンライト・ペアを設定する前にデータを主ボリューム１４１ｐに格納する。副ボリューム１４１ｓ用の書込みデータは、ＲＡＩＤグループ１２１−４に格納される。各ホストコンピュータ３００は対応する副ボリューム１４１ｓに接続される。各ホストコンピュータ３００は、ＯＳ及びアプリケーションプログラム３０１及び３０２を実行する。プログラム３０１及び３０２用の実行ファイル、ライブラリファイル及びデータファイルは、副ボリューム１４１ｓから読み出される。特定の実施形態では、主ボリューム１４１ｐに格納されるデータは、すべてのホストコンピュータ３００によって共有されるゴールドイメージであってよく、そして各ホストコンピュータ３００への更新は、対応する副ボリューム１４１ｓに格納される。
【００２３】
００４５    図２は、図１のストレージサブシステム１００におけるメモリ１１２の一例を示す。ストレージ管理テーブル１１２−１１は、ＲＡＩＤグループ管理テーブル１１２−１１−１と、ボリューム管理テーブル１１２−１１−２と、ディスク管理テーブル１１２−１１−３と、仮想ボリュームページ管理テーブル１１２−１１−６と、コピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７と、コピーオンライト・スナップショットプールページ管理テーブルとを含む。
【００２４】
００４６    ＲＡＩＤグループ管理テーブル１１２−１１−１は、ディスク１２１及びこれらのグループの物理構造管理のために使用される。ボリューム管理テーブル１１２−１１−２はボリューム構成管理のために使用される。仮想ボリュームページ管理テーブル１１２−１１−６は、仮想ボリュームの区分からコピーオンライト・スナップショットプールの区分への参照管理のために使用される。コピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７は、コピーオンライト・スナップショットプールのリソース管理のために、かつコピーオンライト・スナップショットプールページから論理ボリューム領域ページへの参照管理のために使用される。コピーオンライト・スナップショットプールページ管理テーブル１１２−１１−８は、コピーオンライト・スナップショットプールチャンクのリソース管理のために使用される。
【００２５】
００４７    メモリ１１２は、キャッシュデータ領域１１２−３０内のキャッシュデータの管理のため、及びＬＲＵ／ＭＲＵ管理のために使用されるキャッシュ管理テーブル１１２−１４を含む。ボリュームＩ／Ｏ制御１１２−２１は、書込みＩ／Ｏ制御１１２−２１−１と、読出しＩ／Ｏ制御１１２−２１−２とを含む。書込みＩ／Ｏ制御１１２−２１−１は書込みＩ／Ｏ要件によって実行し、ストレージインタフェース１１３を介して書込みデータを受信し、当該データをキャッシュデータ領域１１２−３０に格納する。この領域がデータのバックアップを必要とする場合、ストレージコントローラ１１０はコピーオンライト・プロセスを実行する。読出しＩ／Ｏ制御１１２−２１−２は読出しＩ／Ｏ要件によって実行し、ストレージインタフェース１１３を介してキャッシュデータ領域１１２−３０から読出しデータを送信する。このボリュームが仮想であり、かつこの領域にページが割り当てられていない場合、ＣＰＵ１１１は論理ボリューム領域から読み出す。物理ディスク制御１１２−２２は、ステージング制御１１２−２２−１と、デステージング制御１１２−２２−２とを含む。ステージング制御１１２−２２−１は、ディスク１２１からキャッシュデータ領域１１２−３０へとデータを転送する。デステージング制御１１２−２２−２は、キャッシュデータ領域１１２−３０からディスク１２１へとデータを転送する。フラッシュ制御１１２−２３は、定期的にキャッシュデータ領域１１２−３０内のダーティデータをディスク１２１にフラッシュする。ページ制御１１２−２７は、ページマッピング制御１１２−２７−１と、ページ割り当て制御１１２−２７−２とを含む。ページマッピング制御１１２−２７−１は、特定の仮想ページがリンクしているコピーオンライト・スナップショットプールページを探索する。ページ割り当て制御１１２−２７−２は、仮想ボリュームページに新しいコピーオンライト・スナップショットプールページを割り当てる。キャッシュ制御１１２−２４は、キャッシュデータ領域１１２−３０にキャッシュされたデータを見つけ、キャッシュデータ領域１１２−３０内に新しいキャッシュ領域を割り当てる。カーネル１１２−４０は、プログラムの実行スケジュールを制御する。キャッシュデータ領域１１２−３０は、読出し及び書込みキャッシュデータを格納し、かつ複数のキャッシュスロットに分けられる。
【００２６】
００４８    テーブル構造
【００２７】
００４９    図３は、ＲＡＩＤグループ管理テーブル１１２−１１−１の一例を示す。このテーブルは、ＲＡＩＤグループのＩＤを特定するＲＡＩＤグループ番号１１２−１１−１−１と、ＲＡＩＤグループの構造（「Ｎ（=１０、５、６等）」は、「ＲＡＩＤレベルがＮである」という意味であり、「Ｎ／Ａ」とは、ＲＡＩＤグループが存在しないという意味である）を特定するＲＡＩＤレベル１１２−１１−１−２と、ＲＡＩＤグループに属するディスク１２１のＩＤを特定するディスク番号１１２−１１−１−３と、重複領域を除くＲＡＩＤグループの総容量を特定するＲＡＩＤグループ容量１１２−１１−１−４と、ＲＡＩＤグループがコピーオンライト・スナップショットプールに加わるか（joins）又は論理ボリュームのために使用されているか否かを特定するプール済み状態１１２−１１−１−５（「真」とは、ＲＡＩＤグループがコピーオンライト・スナップショットプールに加わることを意味し、「偽」とは、ＲＡＩＤグループがコピーオンライト・スナップショットプールに加わらず、かつ論理ボリュームのために使用されることを意味する）と、未使用シン・プロビジョニング・チャンクの管理のための未使用チャンクキューインデックス１１２−１１−１−７と、使用シン・プロビジョニング・チャンクのための使用チャンクキューインデックス１１２−１１−１−８との欄を含む。
【００２８】
００５０    図４は、仮想ボリューム管理テーブル１１２−１１−２の一例を示す。このテーブルは、ボリュームのＩＤを特定するボリューム番号１１２−１１−２−１と、ボリュームの容量を特定するボリューム容量１１２−１１−２−２（「Ｎ／Ａ」は、ボリュームが存在しないことを意味する）、論理ボリューム領域が使用するＲＡＩＤグループＩＤを特定する使用ＲＡＩＤグループ番号１１２−１１−２−３と、ボリューム属性１１２−１１−２−４（「論理」は、ボリュームが論理ボリューム領域（論理ボリューム領域はＲＡＩＤグループの一部領域に関する）であることを意味し、「仮想」は、ボリュームが仮想ボリューム（仮想ボリュームは、ペア・ボリュームと、そのデータ領域についてはプールボリュームに言及する）であることを意味する）と、仮想ボリュームが現在使用しているチャンクＩＤを特定する使用チャンク番号１１２−１１−２−５（各ページは、ストレージサブシステムに固有のＩＤを有する）と、ボリュームが論理ボリューム領域である場合にＲＡＩＤグループにおける関連アドレス範囲を特定するアドレス範囲１１２−１１−２−６と、ペア・ボリュームＩＤを特定するペア・ボリューム１１２−１１−２−７との欄を含む。ボリュームが仮想ボリュームである場合、当該ボリュームはペア論理ボリュームＩＤを格納する。ボリュームが論理ボリューム領域である場合、当該ボリュームは０又はそれ以上の仮想ボリュームＩＤを格納する。
【００２９】
００５１    図５は、仮想ボリュームページ管理テーブル１１２−１１−６の一例を示す。このテーブルは、仮想ボリュームページのトップアドレスを特定する仮想ボリュームページインデックス１１２−１１−６−１と、仮想ボリュームページが属するＲＡＩＤグループＩＤを特定するＲＡＩＤグループ番号１１２−１１−６−２（「Ｎ／Ａ」は、コピーオンライト・スナップショットプールページが仮想ボリュームページに一切割り当てられていないことを意味する）と、仮想ボリュームページが参照するコピーオンライト・スナップショットプールページのトップアドレスを特定するコピーオンライト・スナップショットプールページインデックス１１２−１１−６−３との欄を含む。
【００３０】
００５２    図６は、コピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７の一例を示す。このテーブルは、コピーオンライト・スナップショットプールチャンクのＩＤを特定するコピーオンライト・スナップショットプールチャンク番号１１２−１１−７−１と、それによってコピーオンライト・スナップショットプールチャンクが参照される論理ボリュームのＩＤを特定する論理ボリューム領域番号１１２−１１−７−２と、コピーオンライト・スナップショットプールチャンクの使用容量を特定する使用容量１１２−１１−７−３と、一旦領域が使用されたら、コピーオンライト・スナップショットプールチャンクの取り除かれた容量を特定する削減容量１１２−１１−７−４と、キー管理のために前チャンクポインタを特定する前チャンク番号１１２−１１−７−５（「ＮＵＬＬ」はキューの先端を意味する）と、キー管理のために次チャンクポインタを特定する次チャンク番号１１２−１１−７−６（「ＮＵＬＬ」はキューの末端を意味する）との欄を含む。
【００３１】
００５３    図７は、コピーオンライト・スナップショットプールページ管理テーブル１１２−１１−８の一例を示す。このテーブルは、コピーオンライト・スナップショットプールページのＩＤを特定するコピーオンライト・スナップショットプールページインデックス１１２−１１−８−１と、それによってコピーオンライト・スナップショットプールページが参照される仮想ボリュームページのＩＤを特定する仮想ボリュームページ番号１１２−１１−８−２（「ＮＵＬＬ」は、コピーオンライト・スナップショットプールページが未使用であることを意味する）と、ページを共有する仮想ボリュームのＩＤを特定する仮想ボリューム番号１１２−１１−８−３との欄を含む。
【００３２】
００５４    図８は、キャッシュ管理テーブル１１２−１４の一例を示す。このテーブルは、キャッシュデータ領域１１２−３０におけるキャッシュスロットのＩＤを特定するキャッシュスロット番号１１２−１４−１と、キャッシュスロットがデータを格納するディスク１２１のＩＤを特定するディスク番号１１２−１４−２と、キャッシュスロットがデータを格納するディスクアドレス（例えば、ＬＢＡ）を特定するディスクアドレス１１２−１４−３と、キー管理のために次キャッシュスロット番号を特定する次スロットポインタ１１２−１４−４（「ＮＵＬＬ」はキューの末端を意味する）と、ロック状態を特定するロック状態１１２−１４−７（「共有」は、スロットが共有ロックで一つ以上のプロセスによって使用されていることを意味する。状態が「共有」である場合、ロックプロセスを有する番号も含まれる。「専有」は、スロットが専有ロックで一つのプロセスによって使用されていることを意味する。「ロック解除」は、どのプロセスもスロットを使用していないことを意味する。）と、キャッシュスロットキューの種類を特定するキューの種類情報１１２−１４−５（「フリー」は、未使用キャッシュスロットを有するキューを意味する。「クリーン」は、ディスクスロットと同じデータを格納するキャッシュスロットを有するキューを意味する。「ダーティ」は、ディスクスロットにおけるデータとは異なるデータを格納するキャッシュスロットを有するキューを意味するため、ストレージコントローラ１１０は、将来的にキャッシュスロットデータをディスクスロットにフラッシュする必要がある）、キャッシュスロットキューのインデックスを特定するキューインデックスポインタ１１２−１４−６との欄を含む。
【００３３】
００５５    論理構造
【００３４】
００５６    図９は、キャッシュの論理構造を説明する一例を示す。矢印付きの直線については、点線は、オブジェクトがポインタで参照することを意味し、実線は、オブジェクトが計算で参照することを意味する。キャッシュデータ領域１１２−３０は、複数のキャッシュスロット１１２−３０−１に分割される。キャッシュスロット１１２−３０−１のサイズは、コピーオンライト・スナップショットプールストライプ１２１−３のサイズと仮想ボリュームスロット１４１−３のサイズと等しい。キャッシュ管理テーブル１１２−１４及びキャッシュスロット１１２−３０−１は、一対一の関係である。キャッシュ管理テーブル１１２−１４は仮想ボリュームスロット１４１−３を参照し、ＲＡＩＤグループ管理テーブル１１２−１１−１によってコピーオンライト・スナップショットプールストライプ１２１−３を解決することができる。複数のキャッシュデータ領域は、一つのコピーオンライト・スナップショットプールストライプ１２１−３を共有できる。
【００３５】
００５７    図１０は、コピーオンライト・スナップショットプールチャンク１２１−１の論理構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。ＲＡＩＤグループ管理テーブル１１２−１１−１は、属するディスクのディスク管理テーブル１１２−１１−５を参照する。ＲＡＩＤグループ管理テーブル１１２−１１−１は、未使用チャンクキューインデックス１１２−１１−１−７及び使用チャンクキューインデックス１１２−１１−１−８によってコピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７を参照する。コピーオンライト・スナップショットプールチャンク１２１−１とコピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７との関係は固定されている。
【００３６】
００５８    図１１は、コピーオンライト・スナップショットプールへのテーブル参照構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。仮想ボリューム１４１ｓとボリューム管理テーブル１１２−１１−２は、一対一の関係である。ボリューム管理テーブル１１２−１１−２は、現在使用しているコピーオンライト・スナップショットプールチャンク１２１−１を参照する。論理ボリューム領域１４１ｐとボリューム管理テーブル１１２−１１−２は、一対一の関係である。ボリューム管理テーブル１１２−１１−２は、ＲＡＩＤグループのプロビジョニングされた領域を参照する。仮想ボリュームページ１４１ｓ−２と仮想ボリュームページ管理テーブル１１２−１１−６は、一対一の関係である。仮想ボリュームページ管理テーブル１１２−１１−６は、ページが割り当てられている場合には、コピーオンライト・スナップショットプールページ１２１−２のスライスを参照する。コピーオンライト・スナップショットプールが割り当てられていない場合、ページは、ペア論理ボリューム上の同じアドレスを参照する。ＲＡＩＤグループとＲＡＩＤグループ管理テーブル１１２−１１−１は、一対一の関係である。ＲＡＩＤグループ管理テーブル１１２−１１−１は、ＲＡＩＤグループがコピーオンライト・スナップショットプールに結び付けられている場合、使用及び未使用コピーオンライト・スナップショットプールチャンク１２１−１を参照する。
【００３７】
００５９    図１２は、仮想ボリュームへのテーブル参照構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。コピーオンライト・スナップショットプールチャンク１２１−１とコピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７は、一対一の関係である。コピーオンライト・スナップショットプールチャンク管理テーブル１１２−１１−７は仮想ボリューム１４１ｓを参照する。コピーオンライト・スナップショットプールページ１２１−２については、コピーオンライト・スナップショットプールページ管理テーブル１１２−１１−８は仮想ボリュームページ１４１ｓ−２を参照する。
【００３８】
００６０    フローチャート
【００３９】
００６１    図１３は、書込みＩ／Ｏ制御１１２−２１−１を説明する流れ図の一例を示す。プロセスはステップ１１２−２１−１−１から開始する。ステップ１１２−２１−１−２では、プログラムは、キャッシュスロット１１２−３０−１を探索するためにキャッシュ制御１１２−２４を呼び出す。ステップ１１２−２１−１−３では、プログラムは、見つかった又は割り当てられたキャッシュスロットを「専有」状態としてロックする。ステップ１１２−２１−１−４では、プログラムはボリューム属性をチェックする。ボリュームが論理ボリューム領域である場合、プロセスはステップ１１２−２１−１−６に進む。ボリュームが論理ボリューム領域でない場合、プロセスはステップ１１２−２１−１−５に進む。ステップ１１２−２１−１−５では、プログラムは、仮想ボリュームの仮想ページの割り当て状態をチェックする。アクセスされたアドレスに既にページが割り当てられている場合、プログラムはステップ１１２−２１−１−１４に進む。そうでない場合、プログラムはステップ１１２−２１−１−７に進む。ステップ１１２−２１−１−６では、プログラムは、同じ論理ボリューム領域とペアを成すすべての仮想ボリュームの仮想ページの割り当て状態をチェックする。あらゆる仮想ページがコピーオンライト・スナップショットプールページを参照する場合、プロセスはステップ１１２−２１−１−１４に進む。そうでない場合、プロセスはステップ１１２−２１−１−７に進む。
【００４０】
００６２    ステップ１１２−２１−１−７では、プログラムは、新しいコピーオンライト・スナップショットページを割当てるために、ページ割り当て制御１１２−２７−２を呼び出す。ステップ１１２−２１−１−８では、プログラムは、新たに割り当てられたコピーオンライト・スナップショットページのキャッシュスロット１１２−３０−１及び関連論理ボリューム領域を探索するために、キャッシュ制御１１２−２４を呼び出す。ステップ１１２−２１−１−９では、プログラムは、見つかった又は割り当てられたキャッシュスロットを「専有」状態としてロックする。ステップ１１２−２１−１−１０では、プログラムは、データが既にキャッシュ領域にステージされているか否かをチェックする。ＹＥＳの場合は、プロセスはステップ１１２−２１−１−１１に進む。ＮＯの場合には、プロセスはステップ１１２−２１−１２に進む。ステップ１１２−２１−１−１１では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。ステップ１１２−２１−１−１２では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。次に、ステップ１１２−２１−１−１３では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「ダーティ」に変更し、コピーオンライト・スナップショットページのキャッシュ領域をロック解除する。アクセスされたボリュームが「仮想」である場合、プログラムは、上述の論理ボリューム領域のキャッシュ領域をロック解除し、コピーオンライト・スナップショットページのキャッシュ領域アドレスから仮想ボリュームページのキャッシュ領域アドレスへとキャッシュ領域アドレスを差し替える。
【００４１】
００６３    ステップ１１２−２１−１−１４では、プログラムは、ホストコンピュータ３００から書込みＩ／Ｏデータを受信し、これを上述のキャッシュスロット１１２−３０−１に格納する。ステップ１１２−２１−１−１５では、プログラムは、アクセスされたボリュームのキャッシュ領域をロック解除する。プロセスはステップ１１２−２１−１−１６で終了する。
【００４２】
００６４    図１４は、読出しＩ／Ｏ制御１１２−２１−２を説明する流れ図の一例を示す。プロセスはステップ１１２−２１−２−１から開始する。ステップ１１２−２１−２−２では、プログラムは、キャッシュスロット１１２−３０−１を探索するためにキャッシュ制御１１２−２４を呼び出す。ステップ１１２−２１−２−３では、プログラムは、キャッシュ領域を「共有」状態としてロックし、ロックカウンタを増加させる。ステップ１１２−２１−２−４では、プログラムは、データが既にそこに格納されているか否かを判断するために、上述のキャッシュスロット１１２−３０−１の状態をチェックする。ＹＥＳの場合は、プロセスはステップ１１２−２１−２−６に進む。ＮＯの場合には、プロセスはステップ１１２−２１−２−５に進む。ステップ１１２−２１−２−５では、プログラムはステージング制御１１２−２２−１呼び出し、ステップ１１２−２１−２−６に進む。ステップ１１２−２１−２−６では、プログラムはキャッシュスロット１１２−３０−１のデータをホストコンピュータ３００に転送する。ステップ１１２−２１−２−７では、プログラムは、ロックカウンタを１だけ減少させ、ロックカウンタが０である場合には、キャッシュ領域を「共有」状態としてロック解除する。プロセスはステップ１１２−２１−２−８で終了する。
【００４３】
００６５    図１５は、ステージング制御１１２−２２−１を説明する流れ図の一例を示す。プロセスはステップ１１２−２２−１−１から開始する。ステップ１１２−２２−１−２では、プログラムは、ボリューム管理テーブル１１２−１１−２をチェックし、かつ仮想ボリュームページについて論理ボリューム領域アドレス又はコピーオンライト・スナップショットプールページを探索するために、ページマッピング制御１１２−２７−１を呼び出す。ステップ１１２−２２−１−３では、アクセスされたボリュームが仮想ボリュームであるか否かを判断するために、アクセスされたボリュームの属性をチェックする。ＹＥＳの場合は、プロセスはステップ１１２−２２−１−６に進む。ＮＯの場合には、プロセスはステップ１１２−２２−１−５に進む。ステップ１１２−２２−１−５では、プログラムは、ディスク１２１の領域からデータを読出し、これをキャッシュデータ領域１１２−３０に格納する。プログラムは、書込みＩ／Ｏ完了をホスト３００に通知し、プロセスはステップ１１２−２２−１−１３で終了する。
【００４４】
００６６    ステップ１１２−２２−１−６では、プログラムは、仮想ボリュームページがコピーオンライト・スナップショットプールページを参照するか否か（即ち、アクセスされたアドレスにページが割り当てられているか否か）をチェックする。ＹＥＳの場合は、プロセスはステップ１１２−２２−１−５に進む。ＮＯの場合には、プロセスはステップ１１２−２２−１−７に進む。ステップ１１２−２２−１−７では、プログラムは、ペア論理ボリュームの関連領域についてキャッシュスロット１１２−３０−１を探索するために、キャッシュ制御１１２−２４を呼び出す。ステップ１１２−２２−１−８では、プログラムはペア論理ボリュームの関連領域をロックする。ステップ１１２−２２−１−９では、プログラムは、前記領域のデータがキャッシュ領域に格納されているか否かをチェックする。ＹＥＳの場合は、プロセスはステップ１１２−２２−１−１０に進む。ＮＯの場合には、プロセスはステップ１１２−２２−１−１１に進む。ステップ１１２−２２−１−１０では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。ステップ１１２−２２−１−１１では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。次に、ステップ１１２−２１−１−１２では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「クリーン」に変更し、上述の論理ボリューム領域のキャッシュ領域をロック解除し、コピーオンライト・スナップショットページのキャッシュ領域アドレスから仮想ボリュームページのキャッシュ領域アドレスへとキャッシュ領域アドレスを差し替える。プログラムは、読出しＩ／Ｏ完了をホスト３００に通知し、プロセスはステップ１１２−２２−１−１３で終了する。
【００４５】
００６７    図１６は、デステージング制御１１２−２２−２を説明する流れ図の一例を示す。プロセスはステップ１１２−２２−２−１から開始する。ステップ１１２−２２−２−２では、プログラムは、仮想ボリュームページについてコピーオンライト・スナップショットプールページを探索し、かつ割り当てるために、ページマッピング制御１１２−２７−１を呼び出す。ステップ１１２−２２−２−３では、プログラムは、キャッシュデータ領域１１２−３０のスロットからデータを読出し、これをディスク１２１に格納する。ステップ１１２−２２−２−４では、プログラムはデータ転送が終了するまで待つ。プロセスはステップ１１２−２２−２−５で終了する。
【００４６】
００６８    図１７は、ページマッピング制御１１２−２７−１を説明する流れ図の一例を示す。プロセスはステップ１１２−２７−１−１から開始する。ステップ１１２−２７−１−２では、プログラムは、ボリューム管理テーブル１１２−１１−２を参照することによって、ボリューム属性をチェックする。ボリュームが論理ボリューム領域である場合、プロセスはステップ１１２−２７−１−４に進む。ボリュームが論理ボリューム領域ではない場合、プロセスはステップ１１２−２７−１−３に進む。ステップ１１２−２７−１−３では、プログラムはＲＡＩＤグループにおいてアクセスされた領域を計算し、プロセスはステップ１１２−２７−１−７に進む。ステップ１１２−２７−１−４では、プログラムは、仮想ボリュームページに既にコピーオンライト・スナップショットプールページが割り当てられているか否かをチェックする。ＹＥＳの場合は、プロセスはステップ１１２−２７−１−６に進む。ＮＯの場合には、プロセスはステップ１１２−２７−１−５に進む。ステップ１１２−２７−１−５では、プログラムはペア論理ボリュームにおいてアクセスされた領域の関連領域を計算し、プロセスはステップ１１２−２７−１−７に進む。ステップ１１２−２７−１−６において、プログラムは、割り当てられたコピーオンライト・スナップショットプールページアドレスを取得する。次に、ステップ１１２−２７−１−７では、プログラムは、見つかったアドレスを戻す。プロセスはステップ１１２−２７−１−８で終了する。
【００４７】
００６９    一般技術実施形態についての上述の説明において、書込み可能コピーオンライト・スナップショット機能は、ストレージの物理容量を減らすことができる。制御方法は、ロックプロセスから及びＩ／Ｏに対するＩ／Ｏ同期コピーからバックアップイメージまでのデータの一貫性を必要とし、確保する。ロックプロセスは、比較方法を用いる。以下の本発明の特定の実施形態では、コピーオンライト・プロセスを実施せず、かつ一貫性保護方法を無視する。その代わり、ストレージは、後の適切な時点で（非同期で）主データをコピーする。このようにして、本発明は高い容量効率と低いレイテンシーＩ／Ｏを達成する。
【００４８】
００７０    一貫性保護を無視する特定の実施形態
【００４９】
００７１    特定の実施形態に関しては、上述の一般技術実施形態との差異のみを説明する。以下の説明は、読取専用である論理ボリューム領域のみを対象とする。
【００５０】
００７２    システム構成に関しては、図１８は、特定の実施形態に従ったストレージサブシステムのメモリ１１２の一例を示す。ボリューム管理テーブル１１２−１１−２'は、書込み状態を有するボリューム構成管理のためのものである。書込みＩ／Ｏ制御１１２−２１−１'は、論理ボリューム領域へのアクセスが読取専用であるため、仮想ボリュームアクセスのみのためのものである。ステージング制御１１２−２２−１'は、ディスク１２１からキャッシュデータ領域１１２−３０へとデータを転送する。デステージング制御１１２−２２−２'は、キャッシュデータ領域１１２−３０からディスク１２１へとデータを転送する。
【００５１】
００７３    テーブル構造に関しては、図１９は、特定の実施形態に従ったボリューム管理テーブル１１２−１１−２’の一例を示す。書込み状態１１２−１１−２'−８の欄は、ボリュームのアクセス許可を特定する。「読取専用」とは、ボリュームが書込みＩ／Ｏを受け付けないことを意味する。「書込み可能」とは、ボリュームが書込みＩ／Ｏを受け付けることを意味する。ストレージユーザは、ストレージ管理端末４００を介してこの状態を設定することができる。この場合、読取専用はこの方法によって確保される。但し、これは例えばパス終了などのその他の方法によって使用することができる。
【００５２】
００７４    フローチャートに関しては、図２０は、特定の実施形態に従った書込みＩ／Ｏ制御１１２−２１−１'を説明する流れ図の一例を示す。プロセスは、ステップ１１２−２１−１’−１から開始する。ステップ１１２−２１−１'−２では、プログラムは、アクセスされた領域を「専有」状態としてロックする。ステップ１１２−２１−１'−３では、プログラムは、キャッシュスロット１１２−３０−１を探索するためにキャッシュ制御１１２−２４を呼び出す。ステップ１１２−２１−１'−４では、プログラムは書込みＩ／Ｏデータを受信し、これをキャッシュ領域に格納する。ステップ１１２−２１−１'−５では、プログラムはアクセスされた領域をロック解除する。プログラムはステップ１１２−２１−１’−６で終了する。
【００５３】
００７５    図２１は、特定の実施形態に従ったステージング制御１１２−２２−１'を説明する流れ図の一例を示す。図１５と比較すると、ステップ１１２−２２−１−８が取り除かれている。ステップ１１２−２２−１'−１２（ステップ１１２−２２−１−１２に代わって）では、プログラムはコピーオンライト・スナップショットページのキャッシュ状態を「クリーン」に変更する。
【００５４】
００７６    図２２は、特定の実施形態に従ったデステージング制御１１２−２２−２'を説明する流れ図の一例を示す。プロセスはステップ１１２−２２−２’−１から開始する。ステップ１１２−２２−２'−２では、プログラムはボリューム管理テーブル１１２−１１−２をチェックし、仮想ボリュームページについて論理ボリューム領域アドレス又はコピーオンライト・スナップショットプールページを探索するためにページマッピング制御１１２−２７−１を呼び出す。ステップ１１２−２２−２'−３では、プログラムは、アクセスされたボリュームの属性をチェックする。アクセスされたボリュームが仮想ボリュームである場合、プロセスはステップ１１２−２２−２’−５に進む。アクセスされたボリュームが仮想ボリュームではない場合、プロセスはステップ１１２−２２−２’−４に進む。ステップ１１２−２２−２’−４では、プログラムはディスク１２１からデータを読み出して、これをキャッシュデータ領域１１２−３０に格納し、そしてプロセスはステップ１１２−２２−２’−１３で終了する。ステップ１１２−２２−２'−５では、プログラムは、ページがアクセスされたアドレスに割り当てられているか否かをチェックする。ＹＥＳの場合には、プロセスはステップ１１２−２２−２’−４に進む。ＮＯの場合には、プロセスはステップ１１２−２２−２’−６に進む。ステップ１１２−２２−２'−６では、プログラムは、スナップショットプールページを仮想ボリュームページに割り当てるためにページ割り当て制御１１２−２７−２を呼び出す。ステップ１１２−２２−２'−７では、プログラムは、ペア論理ボリューム関連領域についてキャッシュスロット１１２−３０−１を探索するためにキャッシュ制御１１２−２４を呼び出す。ステップ１１２−２２−２'−９では、プログラムは、前記領域のデータがキャッシュ領域に格納されているか否かをチェックする。ＹＥＳの場合には、プロセスはステップ１１２−２２−２’−１０に進む。ＮＯの場合には、プロセスはステップ１１２−２２−２’−１１に進む。ステップ１１２−２２−２'−１０では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域へとデータをコピーする。ステップ１１２−２２−２'−１１では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域へとデータをコピーする。次に、ステップ１１２−２２−２'−１２では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「ダーティ」に変更する。プロセスはステップ１１２−２２−２’−１３で終了する。
【００５５】
００７７    当然のことながら、図１に示すシステム構成は、本発明が実施され得る情報システムの単なる例示であり、本発明は特定のハードウェア構成に限定されない。本発明を実施するコンピュータ及びストレージシステムは、上述の発明を実施するために用いられるモジュール、プログラム及びデータ構造を格納しかつ読み出すことができる公知のＩ／Ｏ装置（例えば、ＣＤ及びＤＶＤドライブ、フロッピー（登録商標）ディスクドライブ、ハードドライブ等）も有し得る。これらのモジュール、プログラム及びデータ構造は、当該コンピュータ読取可能媒体上で符号化することができる。例えば、本発明の前記データ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読取可能媒体から独立したコンピュータ読取可能媒体に格納することができる。システムの構成要素は、あらゆる形態又は媒体のデジタルデータ通信（例えば、通信ネットワーク）によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク、ワイドエリアネットワーク（例えば、インターネット）、無線ネットワーク、ストレージエリアネットワーク等を含む。
【００５６】
００７８    説明では、本発明を徹底的に理解できるようにするための説明の目的で多くの詳細が記載されている。しかし、当業者にとっては、本発明を実施するためにはこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、流れ図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明し得るが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【００５７】
００７９    当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置（ハードウェア）を用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体上に記憶された命令を用いて実施してもよく、当該発明は、プロセッサによって実行された場合には、プロセッサに本発明の実施形態を実行される方法を実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてよく、その他の実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に広めることができる。ソフトウェアによって実施された場合、方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び／又は暗号化形式で命令を媒体に記憶することができる。
【００５８】
００８０    上記により、本発明が、低減されたストレージの物理容量を保ちつつ、削減されたＩ／Ｏレイテンシーを達成するように書込み可能コピーオンライト・スナップショット機能を修正する方法、装置及びコンピュータ読取可能媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって当然のことながら、開示された特定の実施形態の代わりに、同じ目的を達成するために創出された構成を用いてよい。本開示は、本発明のあらゆる適合又はバリエーションを対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示されている特定の実施形態に限定するものとは解釈されるべきではないことが理解される。むしろ本発明の範囲は、以下の請求項によって全面的に判断されるものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【図１Ａ】
2011175616.tif 000003
【図１Ｂ】
2011175616.tif 000004
【図２】
2011175616.tif 000005
【図３】
2011175616.tif 000006
【図４】
2011175616.tif 000007
【図５】
2011175616.tif 000008
【図６】
2011175616.tif 000009
【図７】
2011175616.tif 000010
【図８】
2011175616.tif 000011
【図９】
2011175616.tif 000012
【図１０】
2011175616.tif 000013
【図１１】
2011175616.tif 000014
【図１２】
2011175616.tif 000015
【図１３】
2011175616.tif 000016
【図１４】
2011175616.tif 000017
【図１５】
2011175616.tif 000018
【図１６】
2011175616.tif 000019
【図１７】
2011175616.tif 000020
【図１８】
2011175616.tif 000021
【図１９】
2011175616.tif 000022
【図２０】
2011175616.tif 000023
【図２１】
2011175616.tif 000024
【図２２】
2011175616.tif 000025
【外国語明細書】
2011175616000001.pdf