書込み可能コピーオンライト・スナップショット機能のためのI/Oレイテンシーの削減
【課題】ストレージの低減された物理容量を保ちつつ、削減されたI/Oレイテンシーを達成する。
【解決手段】ストレージシステムを制御する方法であって、第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止することと、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、前記書込み要求のうちの各一つの書込み要求に応じて、要求のターゲットボリュームが書込みを禁止されているか否か判断し、禁止されていない場合にのみ、書込み要求を実行することとを含む、方法。
【解決手段】ストレージシステムを制御する方法であって、第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止することと、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、前記書込み要求のうちの各一つの書込み要求に応じて、要求のターゲットボリュームが書込みを禁止されているか否か判断し、禁止されていない場合にのみ、書込み要求を実行することとを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
0001 本発明は概して、複数の論理/仮想オブジェクトがより少ない物理データを共有するストレージサブシステムの入出力(I/O)性能に関するものであり、特に、一例としては、重複除外又はコピーオンライト・スナップショット環境に関する。
【背景技術】
【0002】
0002 ストレージサブシステムの機能の一つは、書込み可能コピーオンライト・スナップショット機能である。スナップショットイメージは、現在のデータとスナップショットポイントからのデルタデータとから成る。あるデータに対して書込みI/Oが発生した場合、ストレージは現在のデータをプールにバックアップし、現在のデータに新しいデータを上書きする。スナップショット(バックアップ)データに対して読出しI/Oが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データがプールに格納されている場合にはデータを転送する。スナップショット(バックアップ)データに対して読出しI/Oが発生した場合、ストレージは、主ボリュームにおいて上述のバックアップデータを探索し、データが主ボリュームに格納されている場合にはデータを転送する。スナップショット(バックアップ)データに対して書込みI/Oが発生した場合、データがまだバックアップされていない場合には、ストレージは主ボリュームデータをコピーし、書き込まれたデータをマージする。スナップショット(バックアップ)データに対して書込みI/Oが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データが他のバックアップイメージによって共有されていない場合には、データを上書きする。スナップショット(バックアップ)データに対して書込みI/Oが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データが他のバックアップイメージによって共有されている場合には、データを他の領域に格納する。上記は、書込み可能コピーオンライト・スナップショット機能の一般的制御方法である。
【0003】
0003 書込み可能コピーオンライト・スナップショット機能は、ストレージの物理容量を削減できる。これは多くの(物理又は仮想)サーバ環境において効率的である。なぜならば、これらのサーバは同じデータを使用することになるからである。しかし、この制御方法は、ロックプロセスから及びI/Oに対するI/O同期コピーからバックアップイメージまでのデータの一貫性を確保するために、比較的長いレイテンシーを必要とする。例えば、この制御方法は、論理ボリューム領域への書込みI/Oの間、仮想ボリュームのI/Oデータの読出しを必要とする。
【発明の概要】
【0004】
0004 本発明の例示的実施形態は、ストレージの低減された物理容量を保ちつつ、削減されたI/Oレイテンシーを達成するように、書込み可能コピーオンライト・スナップショット機能を修正する方法及びシステムを提供する。但し、スナップショットイメージに対して書込み操作が発生した場合、ストレージはコピーオンライト・プロセスを行わず、一貫性保護方法を無視する。その代わり、ストレージは、その後適切な時期に(非同期的に)主データをコピーする。このようにして、本発明は高い容量効率と低いレイテンシーI/Oを達成する。
【0005】
0005 本発明の一態様に従って、ストレージシステムを制御する方法は、第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納することと、前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止することと、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行することとを含む。
【0006】
0006 ある実施形態では、前記方法は、前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定することをさらに含み、前記判断は、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む。前記方法は、前記ストレージシステムが、前記複数の第2ボリュームのうちの一つの第2ボリュームについての読出し要求を受け取ることと、前記読出し要求に応じて、前記第1ボリュームから取得したデータのイメージと、前記一つの第2ボリュームからホストコンピュータへと転送されたデータとを提供することとをさらに含む。前記第2ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、後続の書込み要求を実行するための前記第2ボリュームの前記ページへの書込みは、非同期で行われる。前記後続の書込み要求のためのデータはキャッシュメモリに書き込まれ、前記キャッシュメモリから前記ページへの書込みは、前記キャッシュメモリのダーティ領域が所定の閾値に達する前に実行される。
【0007】
0007 特定の実施形態では、前記後続の書込み要求はスナップショットイメージについてである。前記後続の書込み要求はホストコンピュータから送信され、各ホストコンピュータは、前記第2ボリュームのうちの一つに対応する。前記方法は、前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、仮想ボリュームとペアを成すペア論理ボリュームの関連領域についてキャッシュ領域を探索するために、前記ペア論理ボリュームの前記関連領域を専有状態としてロックすることなしに、キャッシュ制御を実行することをさらに含む。
【0008】
0008 ある実施形態では、前記方法は、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されている場合、前記データを前記ペア論理ボリュームの前記キャッシュ領域から前記仮想ボリュームのキャッシュ領域にコピーすることと、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されていない場合、前記データを前記ペア論理ボリュームのデータから前記仮想ボリュームのキャッシュ領域にコピーすることと、前記ペア論理ボリュームの前記関連領域をロック解除する必要なしに、前記仮想ボリューム仮想ボリューム・キャッシュ領域状態を「クリーン」に変更することとをさらに含む。
【0009】
0009 ある実施形態では、前記方法は、前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、仮想ボリュームの仮想ボリュームページにスナップショットプールページを割り当てることと、仮想ボリュームとペアを成すペア論理ボリュームの前記関連領域ついて、キャッシュ領域を探索することと、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されているか否かをチェックし、格納されている場合には、ペア論理ボリュームの前記キャッシュ領域から前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーし、格納されていない場合には、論理ボリューム領域のディスクから前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーすることと、前記コピーオンライト・スナップショットページの前記キャッシュ状態を「ダーティ」に変更することとをさらに含む。
【0010】
0010 特定の実施形態では、前記第1ボリュームに格納された前記データは、すべての前記ホストコンピュータによって共有されるゴールドイメージであり、各ホストコンピュータは、対応する第2ボリュームに結合されており、かつ各ホストコンピュータの更新は、前記対応する第2ボリュームに格納される。
【0011】
0011 本発明の他の態様は、ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおけるストレージシステムを対象にしている。このストレージシステムは、メモリと、第1ボリューム及び複数の第2ボリュームを含むボリュームを有するストレージと、前記ストレージシステムにおける前記第1ボリュームにデータを格納し、前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止し、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記ストレージシステムにおける前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行し、かつ前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように構成されたストレージコントローラとを備える。
【0012】
0012 本発明の他の態様は、ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおいて、I/O(入出力)を処理するデータプロセッサを制御するための複数の命令を格納するコンピュータ読取可能記憶媒体を対象とする。前記複数の命令は、第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納させるように、前記データプロセッサに指示する命令と、前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/Oアクセスを禁止するように、前記データプロセッサに指示する命令と、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行するように、前記データプロセッサに指示する命令と、前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように、前記データプロセッサに指示する命令とを含む。
【0013】
0013 本発明の上記及びその他の特徴及び効果は、特定の実施形態についての以下の詳細な説明を考慮することにより、当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【0014】
【図1A】0014 図1Aは、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。
【図1B】0015 図1Bは、図1Aの情報システムの論理システム構成の一例を示す。
【図2】0016 図2は、図1のストレージサブシステムのメモリの一例を示す。
【図3】0017 図3は、RAIDグループ管理テーブルの一例を示す。
【図4】0018 図4は、仮想ボリューム管理テーブルの一例を示す。
【図5】0019 図5は、仮想ボリュームページ管理テーブルの一例を示す。
【図6】0020 図6は、コピーオンライト・スナップショットプールチャンク管理テーブルの一例を示す。
【図7】0021 図7は、コピーオンライト・スナップショットプールページ管理テーブルの一例を示す。
【図8】0022 図8は、キャッシュ管理テーブルの一例を示す。
【図9】0023 図9は、キャッシュの論理構造の一例を示す。
【図10】0024 図10は、コピーオンライト・スナップショットプールチャンクの論理構造の一例を示す。
【図11】0025 図11は、コピーオンライト・スナップショットプールに対するテーブル参照構造の一例を示す。
【図12】0026 図12は、仮想ボリュームに対するテーブル参照構造の一例を示す。
【図13】0027 図13は、書込みI/O制御を説明する流れ図の一例を示す。
【図14】0028 図14は、読出しI/O制御を説明する流れ図の一例を示す。
【図15】0029 図15は、ステージング制御を説明する流れ図の一例を示す。
【図16】0030 図16は、デステージング制御を説明する流れ図の一例を示す。
【図17】0031 図17は、ページマッピング制御を説明する流れ図の一例を示す。
【図18】0032 図18は一貫性保護を無視する特定の実施形態に従ったストレージサブシステムのメモリの一例を示す。
【図19】0033 図19は、特定の実施形態に従ったボリューム管理テーブルを示す。
【図20】0034 図20は、特定の実施形態に従った書込みI/O制御を説明する流れ図の一例を示す。
【図21】0035 図21は、特定の実施形態に従ったステージング制御を説明する流れ図の一例を示す。
【図22】0036 図22は、特定の実施形態に従ったデステージング制御を説明する流れ図の一例を示す。
【発明を実施するための形態】
【0015】
0037 以下の本発明についての詳細な説明では、開示の一部を成すとともに、それによって本発明が実施され得る例示的実施形態の実例として(但し限定ではない)示される、添付の図面を参照する。当該図面において、類似の数字は、いくつかの図面を通してほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では様々な例示的実施形態を提供する(以下に説明し、かつ図面で示される通り)が、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態にも及び得る。本明細書における「一実施形態」、「本実施形態」、又は「上述の実施形態」の言及は、当該実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明を徹底して理解できるように、多くの具体的な詳細が記載されている。但し、本発明を実施するためにこれらの具体的な詳細すべてが必要なわけではないことは、当業者にとって明らかであろう。他の状況では、本発明を不必要に曖昧にしなにように、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ/又はブロック図において図示していない場合もある。
【0016】
0038 さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様で示されている。これらのアルゴリズム記述及び記号表現は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相応量の物理的操作を必要とする。通常は(必ずしもそうではないが)、かかる数量は、格納、転送、組み合わせ、比較、その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、記号、文字、用語、数字、命令等として言及することが時として便利であることが証明されている。但し、上記の及び類似の用語のすべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることを留意すべきである。別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。
【0017】
0039 本発明は、本明細書における操作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置(ROM)、ランダムアクセスメモリ(RAM)、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等(但し、これらに限定されない)のコンピュータ読取可能記憶媒体に格納され得る。本明細書において提示するアルゴリズム及び態様は、特定のコンピュータ又はその他の装置に本質的に関係していない。様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが、判明するかもしれない。さらに、本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置(CPU)、プロセッサ、又はコントローラによって実行され得る。
【0018】
0040 以下により詳細に示す本発明の例示的実施形態は、ストレージの低減した物理容量を保ちつつ、削減したI/Oレイテンシーを達成するように書込み可能コピーオンライト・スナップショット機能を修正する装置、方法及びコンピュータプログラムを提供する。
【0019】
0041 システム構成
【0020】
0042 図1Aは、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。当該システムは、ストレージサブシステム100と、ストレージネットワーク200と、ホストコンピュータ30と、ストレージ管理端末400とを含む。
【0021】
0043 ストレージサブシステム100は、一つ以上のCPU111と、メモリ112と、ストレージインタフェース113と、ローカルネットワークインタフェース114と、ディスクインタフェース115とを有するストレージコントローラ110を含む。CPU111は、ストレージサブシステム100を制御し、メモリ112からプログラム及びテーブルを読み出す。データがメモリ112に格納された場合、データの一貫性を保護するためにデータをロックする必要がある。ストレージインタフェース113(例えば、チャネルインタフェース)は、ストレージネットワーク200を介してストレージサブシステム100をホストコンピュータ300に接続する。ローカルネットワークインタフェース114は、ストレージサブシステム100をストレージ管理端末400に接続する。ディスクインタフェース115は、ストレージコントローラ110をディスク121に接続する。ストレージサブシステム100内のディスクユニット120は、ディスク121を格納している。ディスク121はデータを格納する。ディスク121とは、例えばフラッシュメモリを含む。ストレージサブシステム100は、異なる種類のディスクを含み得る。ストレージネットワーク200は、ストレージサブシステム100とホストコンピュータ300とを接続する。ホストコンピュータ300は、ストレージネットワーク200を介してI/O要求をストレージサブシステム100に送信し、ストレージネットワーク200を介してストレージサブシステム100にデータを送信し、かつストレージサブシステム100からデータを受信する。ストレージ管理端末400は、ボリューム構成、プール構成、ペア構成等を管理するために、ストレージサブシステム100にユーザインタフェース(例えば、管理者のための)を提供する。
【0022】
0044 図1Bは、図1Aの情報システムの論理システム構成の一例を示す。ストレージサブシステム100は、ボリューム141p及び141s並びにRAIDグループ121−4を含む。主ボリューム141p及び各副ボリューム141sは、コピーオンライト・ペアとして設定されている。副ボリューム141sの実体は主ボリューム141pからである。ユーザは、コピーオンライト・ペアを設定する前にデータを主ボリューム141pに格納する。副ボリューム141s用の書込みデータは、RAIDグループ121−4に格納される。各ホストコンピュータ300は対応する副ボリューム141sに接続される。各ホストコンピュータ300は、OS及びアプリケーションプログラム301及び302を実行する。プログラム301及び302用の実行ファイル、ライブラリファイル及びデータファイルは、副ボリューム141sから読み出される。特定の実施形態では、主ボリューム141pに格納されるデータは、すべてのホストコンピュータ300によって共有されるゴールドイメージであってよく、そして各ホストコンピュータ300への更新は、対応する副ボリューム141sに格納される。
【0023】
0045 図2は、図1のストレージサブシステム100におけるメモリ112の一例を示す。ストレージ管理テーブル112−11は、RAIDグループ管理テーブル112−11−1と、ボリューム管理テーブル112−11−2と、ディスク管理テーブル112−11−3と、仮想ボリュームページ管理テーブル112−11−6と、コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7と、コピーオンライト・スナップショットプールページ管理テーブルとを含む。
【0024】
0046 RAIDグループ管理テーブル112−11−1は、ディスク121及びこれらのグループの物理構造管理のために使用される。ボリューム管理テーブル112−11−2はボリューム構成管理のために使用される。仮想ボリュームページ管理テーブル112−11−6は、仮想ボリュームの区分からコピーオンライト・スナップショットプールの区分への参照管理のために使用される。コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7は、コピーオンライト・スナップショットプールのリソース管理のために、かつコピーオンライト・スナップショットプールページから論理ボリューム領域ページへの参照管理のために使用される。コピーオンライト・スナップショットプールページ管理テーブル112−11−8は、コピーオンライト・スナップショットプールチャンクのリソース管理のために使用される。
【0025】
0047 メモリ112は、キャッシュデータ領域112−30内のキャッシュデータの管理のため、及びLRU/MRU管理のために使用されるキャッシュ管理テーブル112−14を含む。ボリュームI/O制御112−21は、書込みI/O制御112−21−1と、読出しI/O制御112−21−2とを含む。書込みI/O制御112−21−1は書込みI/O要件によって実行し、ストレージインタフェース113を介して書込みデータを受信し、当該データをキャッシュデータ領域112−30に格納する。この領域がデータのバックアップを必要とする場合、ストレージコントローラ110はコピーオンライト・プロセスを実行する。読出しI/O制御112−21−2は読出しI/O要件によって実行し、ストレージインタフェース113を介してキャッシュデータ領域112−30から読出しデータを送信する。このボリュームが仮想であり、かつこの領域にページが割り当てられていない場合、CPU111は論理ボリューム領域から読み出す。物理ディスク制御112−22は、ステージング制御112−22−1と、デステージング制御112−22−2とを含む。ステージング制御112−22−1は、ディスク121からキャッシュデータ領域112−30へとデータを転送する。デステージング制御112−22−2は、キャッシュデータ領域112−30からディスク121へとデータを転送する。フラッシュ制御112−23は、定期的にキャッシュデータ領域112−30内のダーティデータをディスク121にフラッシュする。ページ制御112−27は、ページマッピング制御112−27−1と、ページ割り当て制御112−27−2とを含む。ページマッピング制御112−27−1は、特定の仮想ページがリンクしているコピーオンライト・スナップショットプールページを探索する。ページ割り当て制御112−27−2は、仮想ボリュームページに新しいコピーオンライト・スナップショットプールページを割り当てる。キャッシュ制御112−24は、キャッシュデータ領域112−30にキャッシュされたデータを見つけ、キャッシュデータ領域112−30内に新しいキャッシュ領域を割り当てる。カーネル112−40は、プログラムの実行スケジュールを制御する。キャッシュデータ領域112−30は、読出し及び書込みキャッシュデータを格納し、かつ複数のキャッシュスロットに分けられる。
【0026】
0048 テーブル構造
【0027】
0049 図3は、RAIDグループ管理テーブル112−11−1の一例を示す。このテーブルは、RAIDグループのIDを特定するRAIDグループ番号112−11−1−1と、RAIDグループの構造(「N(=10、5、6等)」は、「RAIDレベルがNである」という意味であり、「N/A」とは、RAIDグループが存在しないという意味である)を特定するRAIDレベル112−11−1−2と、RAIDグループに属するディスク121のIDを特定するディスク番号112−11−1−3と、重複領域を除くRAIDグループの総容量を特定するRAIDグループ容量112−11−1−4と、RAIDグループがコピーオンライト・スナップショットプールに加わるか(joins)又は論理ボリュームのために使用されているか否かを特定するプール済み状態112−11−1−5(「真」とは、RAIDグループがコピーオンライト・スナップショットプールに加わることを意味し、「偽」とは、RAIDグループがコピーオンライト・スナップショットプールに加わらず、かつ論理ボリュームのために使用されることを意味する)と、未使用シン・プロビジョニング・チャンクの管理のための未使用チャンクキューインデックス112−11−1−7と、使用シン・プロビジョニング・チャンクのための使用チャンクキューインデックス112−11−1−8との欄を含む。
【0028】
0050 図4は、仮想ボリューム管理テーブル112−11−2の一例を示す。このテーブルは、ボリュームのIDを特定するボリューム番号112−11−2−1と、ボリュームの容量を特定するボリューム容量112−11−2−2(「N/A」は、ボリュームが存在しないことを意味する)、論理ボリューム領域が使用するRAIDグループIDを特定する使用RAIDグループ番号112−11−2−3と、ボリューム属性112−11−2−4(「論理」は、ボリュームが論理ボリューム領域(論理ボリューム領域はRAIDグループの一部領域に関する)であることを意味し、「仮想」は、ボリュームが仮想ボリューム(仮想ボリュームは、ペア・ボリュームと、そのデータ領域についてはプールボリュームに言及する)であることを意味する)と、仮想ボリュームが現在使用しているチャンクIDを特定する使用チャンク番号112−11−2−5(各ページは、ストレージサブシステムに固有のIDを有する)と、ボリュームが論理ボリューム領域である場合にRAIDグループにおける関連アドレス範囲を特定するアドレス範囲112−11−2−6と、ペア・ボリュームIDを特定するペア・ボリューム112−11−2−7との欄を含む。ボリュームが仮想ボリュームである場合、当該ボリュームはペア論理ボリュームIDを格納する。ボリュームが論理ボリューム領域である場合、当該ボリュームは0又はそれ以上の仮想ボリュームIDを格納する。
【0029】
0051 図5は、仮想ボリュームページ管理テーブル112−11−6の一例を示す。このテーブルは、仮想ボリュームページのトップアドレスを特定する仮想ボリュームページインデックス112−11−6−1と、仮想ボリュームページが属するRAIDグループIDを特定するRAIDグループ番号112−11−6−2(「N/A」は、コピーオンライト・スナップショットプールページが仮想ボリュームページに一切割り当てられていないことを意味する)と、仮想ボリュームページが参照するコピーオンライト・スナップショットプールページのトップアドレスを特定するコピーオンライト・スナップショットプールページインデックス112−11−6−3との欄を含む。
【0030】
0052 図6は、コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7の一例を示す。このテーブルは、コピーオンライト・スナップショットプールチャンクのIDを特定するコピーオンライト・スナップショットプールチャンク番号112−11−7−1と、それによってコピーオンライト・スナップショットプールチャンクが参照される論理ボリュームのIDを特定する論理ボリューム領域番号112−11−7−2と、コピーオンライト・スナップショットプールチャンクの使用容量を特定する使用容量112−11−7−3と、一旦領域が使用されたら、コピーオンライト・スナップショットプールチャンクの取り除かれた容量を特定する削減容量112−11−7−4と、キー管理のために前チャンクポインタを特定する前チャンク番号112−11−7−5(「NULL」はキューの先端を意味する)と、キー管理のために次チャンクポインタを特定する次チャンク番号112−11−7−6(「NULL」はキューの末端を意味する)との欄を含む。
【0031】
0053 図7は、コピーオンライト・スナップショットプールページ管理テーブル112−11−8の一例を示す。このテーブルは、コピーオンライト・スナップショットプールページのIDを特定するコピーオンライト・スナップショットプールページインデックス112−11−8−1と、それによってコピーオンライト・スナップショットプールページが参照される仮想ボリュームページのIDを特定する仮想ボリュームページ番号112−11−8−2(「NULL」は、コピーオンライト・スナップショットプールページが未使用であることを意味する)と、ページを共有する仮想ボリュームのIDを特定する仮想ボリューム番号112−11−8−3との欄を含む。
【0032】
0054 図8は、キャッシュ管理テーブル112−14の一例を示す。このテーブルは、キャッシュデータ領域112−30におけるキャッシュスロットのIDを特定するキャッシュスロット番号112−14−1と、キャッシュスロットがデータを格納するディスク121のIDを特定するディスク番号112−14−2と、キャッシュスロットがデータを格納するディスクアドレス(例えば、LBA)を特定するディスクアドレス112−14−3と、キー管理のために次キャッシュスロット番号を特定する次スロットポインタ112−14−4(「NULL」はキューの末端を意味する)と、ロック状態を特定するロック状態112−14−7(「共有」は、スロットが共有ロックで一つ以上のプロセスによって使用されていることを意味する。状態が「共有」である場合、ロックプロセスを有する番号も含まれる。「専有」は、スロットが専有ロックで一つのプロセスによって使用されていることを意味する。「ロック解除」は、どのプロセスもスロットを使用していないことを意味する。)と、キャッシュスロットキューの種類を特定するキューの種類情報112−14−5(「フリー」は、未使用キャッシュスロットを有するキューを意味する。「クリーン」は、ディスクスロットと同じデータを格納するキャッシュスロットを有するキューを意味する。「ダーティ」は、ディスクスロットにおけるデータとは異なるデータを格納するキャッシュスロットを有するキューを意味するため、ストレージコントローラ110は、将来的にキャッシュスロットデータをディスクスロットにフラッシュする必要がある)、キャッシュスロットキューのインデックスを特定するキューインデックスポインタ112−14−6との欄を含む。
【0033】
0055 論理構造
【0034】
0056 図9は、キャッシュの論理構造を説明する一例を示す。矢印付きの直線については、点線は、オブジェクトがポインタで参照することを意味し、実線は、オブジェクトが計算で参照することを意味する。キャッシュデータ領域112−30は、複数のキャッシュスロット112−30−1に分割される。キャッシュスロット112−30−1のサイズは、コピーオンライト・スナップショットプールストライプ121−3のサイズと仮想ボリュームスロット141−3のサイズと等しい。キャッシュ管理テーブル112−14及びキャッシュスロット112−30−1は、一対一の関係である。キャッシュ管理テーブル112−14は仮想ボリュームスロット141−3を参照し、RAIDグループ管理テーブル112−11−1によってコピーオンライト・スナップショットプールストライプ121−3を解決することができる。複数のキャッシュデータ領域は、一つのコピーオンライト・スナップショットプールストライプ121−3を共有できる。
【0035】
0057 図10は、コピーオンライト・スナップショットプールチャンク121−1の論理構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。RAIDグループ管理テーブル112−11−1は、属するディスクのディスク管理テーブル112−11−5を参照する。RAIDグループ管理テーブル112−11−1は、未使用チャンクキューインデックス112−11−1−7及び使用チャンクキューインデックス112−11−1−8によってコピーオンライト・スナップショットプールチャンク管理テーブル112−11−7を参照する。コピーオンライト・スナップショットプールチャンク121−1とコピーオンライト・スナップショットプールチャンク管理テーブル112−11−7との関係は固定されている。
【0036】
0058 図11は、コピーオンライト・スナップショットプールへのテーブル参照構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。仮想ボリューム141sとボリューム管理テーブル112−11−2は、一対一の関係である。ボリューム管理テーブル112−11−2は、現在使用しているコピーオンライト・スナップショットプールチャンク121−1を参照する。論理ボリューム領域141pとボリューム管理テーブル112−11−2は、一対一の関係である。ボリューム管理テーブル112−11−2は、RAIDグループのプロビジョニングされた領域を参照する。仮想ボリュームページ141s−2と仮想ボリュームページ管理テーブル112−11−6は、一対一の関係である。仮想ボリュームページ管理テーブル112−11−6は、ページが割り当てられている場合には、コピーオンライト・スナップショットプールページ121−2のスライスを参照する。コピーオンライト・スナップショットプールが割り当てられていない場合、ページは、ペア論理ボリューム上の同じアドレスを参照する。RAIDグループとRAIDグループ管理テーブル112−11−1は、一対一の関係である。RAIDグループ管理テーブル112−11−1は、RAIDグループがコピーオンライト・スナップショットプールに結び付けられている場合、使用及び未使用コピーオンライト・スナップショットプールチャンク121−1を参照する。
【0037】
0059 図12は、仮想ボリュームへのテーブル参照構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。コピーオンライト・スナップショットプールチャンク121−1とコピーオンライト・スナップショットプールチャンク管理テーブル112−11−7は、一対一の関係である。コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7は仮想ボリューム141sを参照する。コピーオンライト・スナップショットプールページ121−2については、コピーオンライト・スナップショットプールページ管理テーブル112−11−8は仮想ボリュームページ141s−2を参照する。
【0038】
0060 フローチャート
【0039】
0061 図13は、書込みI/O制御112−21−1を説明する流れ図の一例を示す。プロセスはステップ112−21−1−1から開始する。ステップ112−21−1−2では、プログラムは、キャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−21−1−3では、プログラムは、見つかった又は割り当てられたキャッシュスロットを「専有」状態としてロックする。ステップ112−21−1−4では、プログラムはボリューム属性をチェックする。ボリュームが論理ボリューム領域である場合、プロセスはステップ112−21−1−6に進む。ボリュームが論理ボリューム領域でない場合、プロセスはステップ112−21−1−5に進む。ステップ112−21−1−5では、プログラムは、仮想ボリュームの仮想ページの割り当て状態をチェックする。アクセスされたアドレスに既にページが割り当てられている場合、プログラムはステップ112−21−1−14に進む。そうでない場合、プログラムはステップ112−21−1−7に進む。ステップ112−21−1−6では、プログラムは、同じ論理ボリューム領域とペアを成すすべての仮想ボリュームの仮想ページの割り当て状態をチェックする。あらゆる仮想ページがコピーオンライト・スナップショットプールページを参照する場合、プロセスはステップ112−21−1−14に進む。そうでない場合、プロセスはステップ112−21−1−7に進む。
【0040】
0062 ステップ112−21−1−7では、プログラムは、新しいコピーオンライト・スナップショットページを割当てるために、ページ割り当て制御112−27−2を呼び出す。ステップ112−21−1−8では、プログラムは、新たに割り当てられたコピーオンライト・スナップショットページのキャッシュスロット112−30−1及び関連論理ボリューム領域を探索するために、キャッシュ制御112−24を呼び出す。ステップ112−21−1−9では、プログラムは、見つかった又は割り当てられたキャッシュスロットを「専有」状態としてロックする。ステップ112−21−1−10では、プログラムは、データが既にキャッシュ領域にステージされているか否かをチェックする。YESの場合は、プロセスはステップ112−21−1−11に進む。NOの場合には、プロセスはステップ112−21−12に進む。ステップ112−21−1−11では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。ステップ112−21−1−12では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。次に、ステップ112−21−1−13では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「ダーティ」に変更し、コピーオンライト・スナップショットページのキャッシュ領域をロック解除する。アクセスされたボリュームが「仮想」である場合、プログラムは、上述の論理ボリューム領域のキャッシュ領域をロック解除し、コピーオンライト・スナップショットページのキャッシュ領域アドレスから仮想ボリュームページのキャッシュ領域アドレスへとキャッシュ領域アドレスを差し替える。
【0041】
0063 ステップ112−21−1−14では、プログラムは、ホストコンピュータ300から書込みI/Oデータを受信し、これを上述のキャッシュスロット112−30−1に格納する。ステップ112−21−1−15では、プログラムは、アクセスされたボリュームのキャッシュ領域をロック解除する。プロセスはステップ112−21−1−16で終了する。
【0042】
0064 図14は、読出しI/O制御112−21−2を説明する流れ図の一例を示す。プロセスはステップ112−21−2−1から開始する。ステップ112−21−2−2では、プログラムは、キャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−21−2−3では、プログラムは、キャッシュ領域を「共有」状態としてロックし、ロックカウンタを増加させる。ステップ112−21−2−4では、プログラムは、データが既にそこに格納されているか否かを判断するために、上述のキャッシュスロット112−30−1の状態をチェックする。YESの場合は、プロセスはステップ112−21−2−6に進む。NOの場合には、プロセスはステップ112−21−2−5に進む。ステップ112−21−2−5では、プログラムはステージング制御112−22−1呼び出し、ステップ112−21−2−6に進む。ステップ112−21−2−6では、プログラムはキャッシュスロット112−30−1のデータをホストコンピュータ300に転送する。ステップ112−21−2−7では、プログラムは、ロックカウンタを1だけ減少させ、ロックカウンタが0である場合には、キャッシュ領域を「共有」状態としてロック解除する。プロセスはステップ112−21−2−8で終了する。
【0043】
0065 図15は、ステージング制御112−22−1を説明する流れ図の一例を示す。プロセスはステップ112−22−1−1から開始する。ステップ112−22−1−2では、プログラムは、ボリューム管理テーブル112−11−2をチェックし、かつ仮想ボリュームページについて論理ボリューム領域アドレス又はコピーオンライト・スナップショットプールページを探索するために、ページマッピング制御112−27−1を呼び出す。ステップ112−22−1−3では、アクセスされたボリュームが仮想ボリュームであるか否かを判断するために、アクセスされたボリュームの属性をチェックする。YESの場合は、プロセスはステップ112−22−1−6に進む。NOの場合には、プロセスはステップ112−22−1−5に進む。ステップ112−22−1−5では、プログラムは、ディスク121の領域からデータを読出し、これをキャッシュデータ領域112−30に格納する。プログラムは、書込みI/O完了をホスト300に通知し、プロセスはステップ112−22−1−13で終了する。
【0044】
0066 ステップ112−22−1−6では、プログラムは、仮想ボリュームページがコピーオンライト・スナップショットプールページを参照するか否か(即ち、アクセスされたアドレスにページが割り当てられているか否か)をチェックする。YESの場合は、プロセスはステップ112−22−1−5に進む。NOの場合には、プロセスはステップ112−22−1−7に進む。ステップ112−22−1−7では、プログラムは、ペア論理ボリュームの関連領域についてキャッシュスロット112−30−1を探索するために、キャッシュ制御112−24を呼び出す。ステップ112−22−1−8では、プログラムはペア論理ボリュームの関連領域をロックする。ステップ112−22−1−9では、プログラムは、前記領域のデータがキャッシュ領域に格納されているか否かをチェックする。YESの場合は、プロセスはステップ112−22−1−10に進む。NOの場合には、プロセスはステップ112−22−1−11に進む。ステップ112−22−1−10では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。ステップ112−22−1−11では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。次に、ステップ112−21−1−12では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「クリーン」に変更し、上述の論理ボリューム領域のキャッシュ領域をロック解除し、コピーオンライト・スナップショットページのキャッシュ領域アドレスから仮想ボリュームページのキャッシュ領域アドレスへとキャッシュ領域アドレスを差し替える。プログラムは、読出しI/O完了をホスト300に通知し、プロセスはステップ112−22−1−13で終了する。
【0045】
0067 図16は、デステージング制御112−22−2を説明する流れ図の一例を示す。プロセスはステップ112−22−2−1から開始する。ステップ112−22−2−2では、プログラムは、仮想ボリュームページについてコピーオンライト・スナップショットプールページを探索し、かつ割り当てるために、ページマッピング制御112−27−1を呼び出す。ステップ112−22−2−3では、プログラムは、キャッシュデータ領域112−30のスロットからデータを読出し、これをディスク121に格納する。ステップ112−22−2−4では、プログラムはデータ転送が終了するまで待つ。プロセスはステップ112−22−2−5で終了する。
【0046】
0068 図17は、ページマッピング制御112−27−1を説明する流れ図の一例を示す。プロセスはステップ112−27−1−1から開始する。ステップ112−27−1−2では、プログラムは、ボリューム管理テーブル112−11−2を参照することによって、ボリューム属性をチェックする。ボリュームが論理ボリューム領域である場合、プロセスはステップ112−27−1−4に進む。ボリュームが論理ボリューム領域ではない場合、プロセスはステップ112−27−1−3に進む。ステップ112−27−1−3では、プログラムはRAIDグループにおいてアクセスされた領域を計算し、プロセスはステップ112−27−1−7に進む。ステップ112−27−1−4では、プログラムは、仮想ボリュームページに既にコピーオンライト・スナップショットプールページが割り当てられているか否かをチェックする。YESの場合は、プロセスはステップ112−27−1−6に進む。NOの場合には、プロセスはステップ112−27−1−5に進む。ステップ112−27−1−5では、プログラムはペア論理ボリュームにおいてアクセスされた領域の関連領域を計算し、プロセスはステップ112−27−1−7に進む。ステップ112−27−1−6において、プログラムは、割り当てられたコピーオンライト・スナップショットプールページアドレスを取得する。次に、ステップ112−27−1−7では、プログラムは、見つかったアドレスを戻す。プロセスはステップ112−27−1−8で終了する。
【0047】
0069 一般技術実施形態についての上述の説明において、書込み可能コピーオンライト・スナップショット機能は、ストレージの物理容量を減らすことができる。制御方法は、ロックプロセスから及びI/Oに対するI/O同期コピーからバックアップイメージまでのデータの一貫性を必要とし、確保する。ロックプロセスは、比較方法を用いる。以下の本発明の特定の実施形態では、コピーオンライト・プロセスを実施せず、かつ一貫性保護方法を無視する。その代わり、ストレージは、後の適切な時点で(非同期で)主データをコピーする。このようにして、本発明は高い容量効率と低いレイテンシーI/Oを達成する。
【0048】
0070 一貫性保護を無視する特定の実施形態
【0049】
0071 特定の実施形態に関しては、上述の一般技術実施形態との差異のみを説明する。以下の説明は、読取専用である論理ボリューム領域のみを対象とする。
【0050】
0072 システム構成に関しては、図18は、特定の実施形態に従ったストレージサブシステムのメモリ112の一例を示す。ボリューム管理テーブル112−11−2'は、書込み状態を有するボリューム構成管理のためのものである。書込みI/O制御112−21−1'は、論理ボリューム領域へのアクセスが読取専用であるため、仮想ボリュームアクセスのみのためのものである。ステージング制御112−22−1'は、ディスク121からキャッシュデータ領域112−30へとデータを転送する。デステージング制御112−22−2'は、キャッシュデータ領域112−30からディスク121へとデータを転送する。
【0051】
0073 テーブル構造に関しては、図19は、特定の実施形態に従ったボリューム管理テーブル112−11−2’の一例を示す。書込み状態112−11−2'−8の欄は、ボリュームのアクセス許可を特定する。「読取専用」とは、ボリュームが書込みI/Oを受け付けないことを意味する。「書込み可能」とは、ボリュームが書込みI/Oを受け付けることを意味する。ストレージユーザは、ストレージ管理端末400を介してこの状態を設定することができる。この場合、読取専用はこの方法によって確保される。但し、これは例えばパス終了などのその他の方法によって使用することができる。
【0052】
0074 フローチャートに関しては、図20は、特定の実施形態に従った書込みI/O制御112−21−1'を説明する流れ図の一例を示す。プロセスは、ステップ112−21−1’−1から開始する。ステップ112−21−1'−2では、プログラムは、アクセスされた領域を「専有」状態としてロックする。ステップ112−21−1'−3では、プログラムは、キャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−21−1'−4では、プログラムは書込みI/Oデータを受信し、これをキャッシュ領域に格納する。ステップ112−21−1'−5では、プログラムはアクセスされた領域をロック解除する。プログラムはステップ112−21−1’−6で終了する。
【0053】
0075 図21は、特定の実施形態に従ったステージング制御112−22−1'を説明する流れ図の一例を示す。図15と比較すると、ステップ112−22−1−8が取り除かれている。ステップ112−22−1'−12(ステップ112−22−1−12に代わって)では、プログラムはコピーオンライト・スナップショットページのキャッシュ状態を「クリーン」に変更する。
【0054】
0076 図22は、特定の実施形態に従ったデステージング制御112−22−2'を説明する流れ図の一例を示す。プロセスはステップ112−22−2’−1から開始する。ステップ112−22−2'−2では、プログラムはボリューム管理テーブル112−11−2をチェックし、仮想ボリュームページについて論理ボリューム領域アドレス又はコピーオンライト・スナップショットプールページを探索するためにページマッピング制御112−27−1を呼び出す。ステップ112−22−2'−3では、プログラムは、アクセスされたボリュームの属性をチェックする。アクセスされたボリュームが仮想ボリュームである場合、プロセスはステップ112−22−2’−5に進む。アクセスされたボリュームが仮想ボリュームではない場合、プロセスはステップ112−22−2’−4に進む。ステップ112−22−2’−4では、プログラムはディスク121からデータを読み出して、これをキャッシュデータ領域112−30に格納し、そしてプロセスはステップ112−22−2’−13で終了する。ステップ112−22−2'−5では、プログラムは、ページがアクセスされたアドレスに割り当てられているか否かをチェックする。YESの場合には、プロセスはステップ112−22−2’−4に進む。NOの場合には、プロセスはステップ112−22−2’−6に進む。ステップ112−22−2'−6では、プログラムは、スナップショットプールページを仮想ボリュームページに割り当てるためにページ割り当て制御112−27−2を呼び出す。ステップ112−22−2'−7では、プログラムは、ペア論理ボリューム関連領域についてキャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−22−2'−9では、プログラムは、前記領域のデータがキャッシュ領域に格納されているか否かをチェックする。YESの場合には、プロセスはステップ112−22−2’−10に進む。NOの場合には、プロセスはステップ112−22−2’−11に進む。ステップ112−22−2'−10では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域へとデータをコピーする。ステップ112−22−2'−11では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域へとデータをコピーする。次に、ステップ112−22−2'−12では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「ダーティ」に変更する。プロセスはステップ112−22−2’−13で終了する。
【0055】
0077 当然のことながら、図1に示すシステム構成は、本発明が実施され得る情報システムの単なる例示であり、本発明は特定のハードウェア構成に限定されない。本発明を実施するコンピュータ及びストレージシステムは、上述の発明を実施するために用いられるモジュール、プログラム及びデータ構造を格納しかつ読み出すことができる公知のI/O装置(例えば、CD及びDVDドライブ、フロッピー(登録商標)ディスクドライブ、ハードドライブ等)も有し得る。これらのモジュール、プログラム及びデータ構造は、当該コンピュータ読取可能媒体上で符号化することができる。例えば、本発明の前記データ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読取可能媒体から独立したコンピュータ読取可能媒体に格納することができる。システムの構成要素は、あらゆる形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク、ワイドエリアネットワーク(例えば、インターネット)、無線ネットワーク、ストレージエリアネットワーク等を含む。
【0056】
0078 説明では、本発明を徹底的に理解できるようにするための説明の目的で多くの詳細が記載されている。しかし、当業者にとっては、本発明を実施するためにはこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、流れ図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明し得るが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【0057】
0079 当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置(ハードウェア)を用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体上に記憶された命令を用いて実施してもよく、当該発明は、プロセッサによって実行された場合には、プロセッサに本発明の実施形態を実行される方法を実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてよく、その他の実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に広めることができる。ソフトウェアによって実施された場合、方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び/又は暗号化形式で命令を媒体に記憶することができる。
【0058】
0080 上記により、本発明が、低減されたストレージの物理容量を保ちつつ、削減されたI/Oレイテンシーを達成するように書込み可能コピーオンライト・スナップショット機能を修正する方法、装置及びコンピュータ読取可能媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって当然のことながら、開示された特定の実施形態の代わりに、同じ目的を達成するために創出された構成を用いてよい。本開示は、本発明のあらゆる適合又はバリエーションを対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示されている特定の実施形態に限定するものとは解釈されるべきではないことが理解される。むしろ本発明の範囲は、以下の請求項によって全面的に判断されるものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【技術分野】
【0001】
0001 本発明は概して、複数の論理/仮想オブジェクトがより少ない物理データを共有するストレージサブシステムの入出力(I/O)性能に関するものであり、特に、一例としては、重複除外又はコピーオンライト・スナップショット環境に関する。
【背景技術】
【0002】
0002 ストレージサブシステムの機能の一つは、書込み可能コピーオンライト・スナップショット機能である。スナップショットイメージは、現在のデータとスナップショットポイントからのデルタデータとから成る。あるデータに対して書込みI/Oが発生した場合、ストレージは現在のデータをプールにバックアップし、現在のデータに新しいデータを上書きする。スナップショット(バックアップ)データに対して読出しI/Oが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データがプールに格納されている場合にはデータを転送する。スナップショット(バックアップ)データに対して読出しI/Oが発生した場合、ストレージは、主ボリュームにおいて上述のバックアップデータを探索し、データが主ボリュームに格納されている場合にはデータを転送する。スナップショット(バックアップ)データに対して書込みI/Oが発生した場合、データがまだバックアップされていない場合には、ストレージは主ボリュームデータをコピーし、書き込まれたデータをマージする。スナップショット(バックアップ)データに対して書込みI/Oが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データが他のバックアップイメージによって共有されていない場合には、データを上書きする。スナップショット(バックアップ)データに対して書込みI/Oが発生した場合、ストレージは、プールにおいて上述のバックアップデータを探索し、データが他のバックアップイメージによって共有されている場合には、データを他の領域に格納する。上記は、書込み可能コピーオンライト・スナップショット機能の一般的制御方法である。
【0003】
0003 書込み可能コピーオンライト・スナップショット機能は、ストレージの物理容量を削減できる。これは多くの(物理又は仮想)サーバ環境において効率的である。なぜならば、これらのサーバは同じデータを使用することになるからである。しかし、この制御方法は、ロックプロセスから及びI/Oに対するI/O同期コピーからバックアップイメージまでのデータの一貫性を確保するために、比較的長いレイテンシーを必要とする。例えば、この制御方法は、論理ボリューム領域への書込みI/Oの間、仮想ボリュームのI/Oデータの読出しを必要とする。
【発明の概要】
【0004】
0004 本発明の例示的実施形態は、ストレージの低減された物理容量を保ちつつ、削減されたI/Oレイテンシーを達成するように、書込み可能コピーオンライト・スナップショット機能を修正する方法及びシステムを提供する。但し、スナップショットイメージに対して書込み操作が発生した場合、ストレージはコピーオンライト・プロセスを行わず、一貫性保護方法を無視する。その代わり、ストレージは、その後適切な時期に(非同期的に)主データをコピーする。このようにして、本発明は高い容量効率と低いレイテンシーI/Oを達成する。
【0005】
0005 本発明の一態様に従って、ストレージシステムを制御する方法は、第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納することと、前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止することと、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行することとを含む。
【0006】
0006 ある実施形態では、前記方法は、前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定することをさらに含み、前記判断は、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む。前記方法は、前記ストレージシステムが、前記複数の第2ボリュームのうちの一つの第2ボリュームについての読出し要求を受け取ることと、前記読出し要求に応じて、前記第1ボリュームから取得したデータのイメージと、前記一つの第2ボリュームからホストコンピュータへと転送されたデータとを提供することとをさらに含む。前記第2ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、後続の書込み要求を実行するための前記第2ボリュームの前記ページへの書込みは、非同期で行われる。前記後続の書込み要求のためのデータはキャッシュメモリに書き込まれ、前記キャッシュメモリから前記ページへの書込みは、前記キャッシュメモリのダーティ領域が所定の閾値に達する前に実行される。
【0007】
0007 特定の実施形態では、前記後続の書込み要求はスナップショットイメージについてである。前記後続の書込み要求はホストコンピュータから送信され、各ホストコンピュータは、前記第2ボリュームのうちの一つに対応する。前記方法は、前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、仮想ボリュームとペアを成すペア論理ボリュームの関連領域についてキャッシュ領域を探索するために、前記ペア論理ボリュームの前記関連領域を専有状態としてロックすることなしに、キャッシュ制御を実行することをさらに含む。
【0008】
0008 ある実施形態では、前記方法は、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されている場合、前記データを前記ペア論理ボリュームの前記キャッシュ領域から前記仮想ボリュームのキャッシュ領域にコピーすることと、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されていない場合、前記データを前記ペア論理ボリュームのデータから前記仮想ボリュームのキャッシュ領域にコピーすることと、前記ペア論理ボリュームの前記関連領域をロック解除する必要なしに、前記仮想ボリューム仮想ボリューム・キャッシュ領域状態を「クリーン」に変更することとをさらに含む。
【0009】
0009 ある実施形態では、前記方法は、前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、仮想ボリュームの仮想ボリュームページにスナップショットプールページを割り当てることと、仮想ボリュームとペアを成すペア論理ボリュームの前記関連領域ついて、キャッシュ領域を探索することと、前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されているか否かをチェックし、格納されている場合には、ペア論理ボリュームの前記キャッシュ領域から前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーし、格納されていない場合には、論理ボリューム領域のディスクから前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーすることと、前記コピーオンライト・スナップショットページの前記キャッシュ状態を「ダーティ」に変更することとをさらに含む。
【0010】
0010 特定の実施形態では、前記第1ボリュームに格納された前記データは、すべての前記ホストコンピュータによって共有されるゴールドイメージであり、各ホストコンピュータは、対応する第2ボリュームに結合されており、かつ各ホストコンピュータの更新は、前記対応する第2ボリュームに格納される。
【0011】
0011 本発明の他の態様は、ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおけるストレージシステムを対象にしている。このストレージシステムは、メモリと、第1ボリューム及び複数の第2ボリュームを含むボリュームを有するストレージと、前記ストレージシステムにおける前記第1ボリュームにデータを格納し、前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止し、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記ストレージシステムにおける前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行し、かつ前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように構成されたストレージコントローラとを備える。
【0012】
0012 本発明の他の態様は、ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおいて、I/O(入出力)を処理するデータプロセッサを制御するための複数の命令を格納するコンピュータ読取可能記憶媒体を対象とする。前記複数の命令は、第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納させるように、前記データプロセッサに指示する命令と、前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/Oアクセスを禁止するように、前記データプロセッサに指示する命令と、前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行するように、前記データプロセッサに指示する命令と、前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように、前記データプロセッサに指示する命令とを含む。
【0013】
0013 本発明の上記及びその他の特徴及び効果は、特定の実施形態についての以下の詳細な説明を考慮することにより、当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【0014】
【図1A】0014 図1Aは、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。
【図1B】0015 図1Bは、図1Aの情報システムの論理システム構成の一例を示す。
【図2】0016 図2は、図1のストレージサブシステムのメモリの一例を示す。
【図3】0017 図3は、RAIDグループ管理テーブルの一例を示す。
【図4】0018 図4は、仮想ボリューム管理テーブルの一例を示す。
【図5】0019 図5は、仮想ボリュームページ管理テーブルの一例を示す。
【図6】0020 図6は、コピーオンライト・スナップショットプールチャンク管理テーブルの一例を示す。
【図7】0021 図7は、コピーオンライト・スナップショットプールページ管理テーブルの一例を示す。
【図8】0022 図8は、キャッシュ管理テーブルの一例を示す。
【図9】0023 図9は、キャッシュの論理構造の一例を示す。
【図10】0024 図10は、コピーオンライト・スナップショットプールチャンクの論理構造の一例を示す。
【図11】0025 図11は、コピーオンライト・スナップショットプールに対するテーブル参照構造の一例を示す。
【図12】0026 図12は、仮想ボリュームに対するテーブル参照構造の一例を示す。
【図13】0027 図13は、書込みI/O制御を説明する流れ図の一例を示す。
【図14】0028 図14は、読出しI/O制御を説明する流れ図の一例を示す。
【図15】0029 図15は、ステージング制御を説明する流れ図の一例を示す。
【図16】0030 図16は、デステージング制御を説明する流れ図の一例を示す。
【図17】0031 図17は、ページマッピング制御を説明する流れ図の一例を示す。
【図18】0032 図18は一貫性保護を無視する特定の実施形態に従ったストレージサブシステムのメモリの一例を示す。
【図19】0033 図19は、特定の実施形態に従ったボリューム管理テーブルを示す。
【図20】0034 図20は、特定の実施形態に従った書込みI/O制御を説明する流れ図の一例を示す。
【図21】0035 図21は、特定の実施形態に従ったステージング制御を説明する流れ図の一例を示す。
【図22】0036 図22は、特定の実施形態に従ったデステージング制御を説明する流れ図の一例を示す。
【発明を実施するための形態】
【0015】
0037 以下の本発明についての詳細な説明では、開示の一部を成すとともに、それによって本発明が実施され得る例示的実施形態の実例として(但し限定ではない)示される、添付の図面を参照する。当該図面において、類似の数字は、いくつかの図面を通してほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では様々な例示的実施形態を提供する(以下に説明し、かつ図面で示される通り)が、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態にも及び得る。本明細書における「一実施形態」、「本実施形態」、又は「上述の実施形態」の言及は、当該実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明を徹底して理解できるように、多くの具体的な詳細が記載されている。但し、本発明を実施するためにこれらの具体的な詳細すべてが必要なわけではないことは、当業者にとって明らかであろう。他の状況では、本発明を不必要に曖昧にしなにように、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ/又はブロック図において図示していない場合もある。
【0016】
0038 さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様で示されている。これらのアルゴリズム記述及び記号表現は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相応量の物理的操作を必要とする。通常は(必ずしもそうではないが)、かかる数量は、格納、転送、組み合わせ、比較、その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、記号、文字、用語、数字、命令等として言及することが時として便利であることが証明されている。但し、上記の及び類似の用語のすべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることを留意すべきである。別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。
【0017】
0039 本発明は、本明細書における操作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置(ROM)、ランダムアクセスメモリ(RAM)、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等(但し、これらに限定されない)のコンピュータ読取可能記憶媒体に格納され得る。本明細書において提示するアルゴリズム及び態様は、特定のコンピュータ又はその他の装置に本質的に関係していない。様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが、判明するかもしれない。さらに、本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置(CPU)、プロセッサ、又はコントローラによって実行され得る。
【0018】
0040 以下により詳細に示す本発明の例示的実施形態は、ストレージの低減した物理容量を保ちつつ、削減したI/Oレイテンシーを達成するように書込み可能コピーオンライト・スナップショット機能を修正する装置、方法及びコンピュータプログラムを提供する。
【0019】
0041 システム構成
【0020】
0042 図1Aは、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。当該システムは、ストレージサブシステム100と、ストレージネットワーク200と、ホストコンピュータ30と、ストレージ管理端末400とを含む。
【0021】
0043 ストレージサブシステム100は、一つ以上のCPU111と、メモリ112と、ストレージインタフェース113と、ローカルネットワークインタフェース114と、ディスクインタフェース115とを有するストレージコントローラ110を含む。CPU111は、ストレージサブシステム100を制御し、メモリ112からプログラム及びテーブルを読み出す。データがメモリ112に格納された場合、データの一貫性を保護するためにデータをロックする必要がある。ストレージインタフェース113(例えば、チャネルインタフェース)は、ストレージネットワーク200を介してストレージサブシステム100をホストコンピュータ300に接続する。ローカルネットワークインタフェース114は、ストレージサブシステム100をストレージ管理端末400に接続する。ディスクインタフェース115は、ストレージコントローラ110をディスク121に接続する。ストレージサブシステム100内のディスクユニット120は、ディスク121を格納している。ディスク121はデータを格納する。ディスク121とは、例えばフラッシュメモリを含む。ストレージサブシステム100は、異なる種類のディスクを含み得る。ストレージネットワーク200は、ストレージサブシステム100とホストコンピュータ300とを接続する。ホストコンピュータ300は、ストレージネットワーク200を介してI/O要求をストレージサブシステム100に送信し、ストレージネットワーク200を介してストレージサブシステム100にデータを送信し、かつストレージサブシステム100からデータを受信する。ストレージ管理端末400は、ボリューム構成、プール構成、ペア構成等を管理するために、ストレージサブシステム100にユーザインタフェース(例えば、管理者のための)を提供する。
【0022】
0044 図1Bは、図1Aの情報システムの論理システム構成の一例を示す。ストレージサブシステム100は、ボリューム141p及び141s並びにRAIDグループ121−4を含む。主ボリューム141p及び各副ボリューム141sは、コピーオンライト・ペアとして設定されている。副ボリューム141sの実体は主ボリューム141pからである。ユーザは、コピーオンライト・ペアを設定する前にデータを主ボリューム141pに格納する。副ボリューム141s用の書込みデータは、RAIDグループ121−4に格納される。各ホストコンピュータ300は対応する副ボリューム141sに接続される。各ホストコンピュータ300は、OS及びアプリケーションプログラム301及び302を実行する。プログラム301及び302用の実行ファイル、ライブラリファイル及びデータファイルは、副ボリューム141sから読み出される。特定の実施形態では、主ボリューム141pに格納されるデータは、すべてのホストコンピュータ300によって共有されるゴールドイメージであってよく、そして各ホストコンピュータ300への更新は、対応する副ボリューム141sに格納される。
【0023】
0045 図2は、図1のストレージサブシステム100におけるメモリ112の一例を示す。ストレージ管理テーブル112−11は、RAIDグループ管理テーブル112−11−1と、ボリューム管理テーブル112−11−2と、ディスク管理テーブル112−11−3と、仮想ボリュームページ管理テーブル112−11−6と、コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7と、コピーオンライト・スナップショットプールページ管理テーブルとを含む。
【0024】
0046 RAIDグループ管理テーブル112−11−1は、ディスク121及びこれらのグループの物理構造管理のために使用される。ボリューム管理テーブル112−11−2はボリューム構成管理のために使用される。仮想ボリュームページ管理テーブル112−11−6は、仮想ボリュームの区分からコピーオンライト・スナップショットプールの区分への参照管理のために使用される。コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7は、コピーオンライト・スナップショットプールのリソース管理のために、かつコピーオンライト・スナップショットプールページから論理ボリューム領域ページへの参照管理のために使用される。コピーオンライト・スナップショットプールページ管理テーブル112−11−8は、コピーオンライト・スナップショットプールチャンクのリソース管理のために使用される。
【0025】
0047 メモリ112は、キャッシュデータ領域112−30内のキャッシュデータの管理のため、及びLRU/MRU管理のために使用されるキャッシュ管理テーブル112−14を含む。ボリュームI/O制御112−21は、書込みI/O制御112−21−1と、読出しI/O制御112−21−2とを含む。書込みI/O制御112−21−1は書込みI/O要件によって実行し、ストレージインタフェース113を介して書込みデータを受信し、当該データをキャッシュデータ領域112−30に格納する。この領域がデータのバックアップを必要とする場合、ストレージコントローラ110はコピーオンライト・プロセスを実行する。読出しI/O制御112−21−2は読出しI/O要件によって実行し、ストレージインタフェース113を介してキャッシュデータ領域112−30から読出しデータを送信する。このボリュームが仮想であり、かつこの領域にページが割り当てられていない場合、CPU111は論理ボリューム領域から読み出す。物理ディスク制御112−22は、ステージング制御112−22−1と、デステージング制御112−22−2とを含む。ステージング制御112−22−1は、ディスク121からキャッシュデータ領域112−30へとデータを転送する。デステージング制御112−22−2は、キャッシュデータ領域112−30からディスク121へとデータを転送する。フラッシュ制御112−23は、定期的にキャッシュデータ領域112−30内のダーティデータをディスク121にフラッシュする。ページ制御112−27は、ページマッピング制御112−27−1と、ページ割り当て制御112−27−2とを含む。ページマッピング制御112−27−1は、特定の仮想ページがリンクしているコピーオンライト・スナップショットプールページを探索する。ページ割り当て制御112−27−2は、仮想ボリュームページに新しいコピーオンライト・スナップショットプールページを割り当てる。キャッシュ制御112−24は、キャッシュデータ領域112−30にキャッシュされたデータを見つけ、キャッシュデータ領域112−30内に新しいキャッシュ領域を割り当てる。カーネル112−40は、プログラムの実行スケジュールを制御する。キャッシュデータ領域112−30は、読出し及び書込みキャッシュデータを格納し、かつ複数のキャッシュスロットに分けられる。
【0026】
0048 テーブル構造
【0027】
0049 図3は、RAIDグループ管理テーブル112−11−1の一例を示す。このテーブルは、RAIDグループのIDを特定するRAIDグループ番号112−11−1−1と、RAIDグループの構造(「N(=10、5、6等)」は、「RAIDレベルがNである」という意味であり、「N/A」とは、RAIDグループが存在しないという意味である)を特定するRAIDレベル112−11−1−2と、RAIDグループに属するディスク121のIDを特定するディスク番号112−11−1−3と、重複領域を除くRAIDグループの総容量を特定するRAIDグループ容量112−11−1−4と、RAIDグループがコピーオンライト・スナップショットプールに加わるか(joins)又は論理ボリュームのために使用されているか否かを特定するプール済み状態112−11−1−5(「真」とは、RAIDグループがコピーオンライト・スナップショットプールに加わることを意味し、「偽」とは、RAIDグループがコピーオンライト・スナップショットプールに加わらず、かつ論理ボリュームのために使用されることを意味する)と、未使用シン・プロビジョニング・チャンクの管理のための未使用チャンクキューインデックス112−11−1−7と、使用シン・プロビジョニング・チャンクのための使用チャンクキューインデックス112−11−1−8との欄を含む。
【0028】
0050 図4は、仮想ボリューム管理テーブル112−11−2の一例を示す。このテーブルは、ボリュームのIDを特定するボリューム番号112−11−2−1と、ボリュームの容量を特定するボリューム容量112−11−2−2(「N/A」は、ボリュームが存在しないことを意味する)、論理ボリューム領域が使用するRAIDグループIDを特定する使用RAIDグループ番号112−11−2−3と、ボリューム属性112−11−2−4(「論理」は、ボリュームが論理ボリューム領域(論理ボリューム領域はRAIDグループの一部領域に関する)であることを意味し、「仮想」は、ボリュームが仮想ボリューム(仮想ボリュームは、ペア・ボリュームと、そのデータ領域についてはプールボリュームに言及する)であることを意味する)と、仮想ボリュームが現在使用しているチャンクIDを特定する使用チャンク番号112−11−2−5(各ページは、ストレージサブシステムに固有のIDを有する)と、ボリュームが論理ボリューム領域である場合にRAIDグループにおける関連アドレス範囲を特定するアドレス範囲112−11−2−6と、ペア・ボリュームIDを特定するペア・ボリューム112−11−2−7との欄を含む。ボリュームが仮想ボリュームである場合、当該ボリュームはペア論理ボリュームIDを格納する。ボリュームが論理ボリューム領域である場合、当該ボリュームは0又はそれ以上の仮想ボリュームIDを格納する。
【0029】
0051 図5は、仮想ボリュームページ管理テーブル112−11−6の一例を示す。このテーブルは、仮想ボリュームページのトップアドレスを特定する仮想ボリュームページインデックス112−11−6−1と、仮想ボリュームページが属するRAIDグループIDを特定するRAIDグループ番号112−11−6−2(「N/A」は、コピーオンライト・スナップショットプールページが仮想ボリュームページに一切割り当てられていないことを意味する)と、仮想ボリュームページが参照するコピーオンライト・スナップショットプールページのトップアドレスを特定するコピーオンライト・スナップショットプールページインデックス112−11−6−3との欄を含む。
【0030】
0052 図6は、コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7の一例を示す。このテーブルは、コピーオンライト・スナップショットプールチャンクのIDを特定するコピーオンライト・スナップショットプールチャンク番号112−11−7−1と、それによってコピーオンライト・スナップショットプールチャンクが参照される論理ボリュームのIDを特定する論理ボリューム領域番号112−11−7−2と、コピーオンライト・スナップショットプールチャンクの使用容量を特定する使用容量112−11−7−3と、一旦領域が使用されたら、コピーオンライト・スナップショットプールチャンクの取り除かれた容量を特定する削減容量112−11−7−4と、キー管理のために前チャンクポインタを特定する前チャンク番号112−11−7−5(「NULL」はキューの先端を意味する)と、キー管理のために次チャンクポインタを特定する次チャンク番号112−11−7−6(「NULL」はキューの末端を意味する)との欄を含む。
【0031】
0053 図7は、コピーオンライト・スナップショットプールページ管理テーブル112−11−8の一例を示す。このテーブルは、コピーオンライト・スナップショットプールページのIDを特定するコピーオンライト・スナップショットプールページインデックス112−11−8−1と、それによってコピーオンライト・スナップショットプールページが参照される仮想ボリュームページのIDを特定する仮想ボリュームページ番号112−11−8−2(「NULL」は、コピーオンライト・スナップショットプールページが未使用であることを意味する)と、ページを共有する仮想ボリュームのIDを特定する仮想ボリューム番号112−11−8−3との欄を含む。
【0032】
0054 図8は、キャッシュ管理テーブル112−14の一例を示す。このテーブルは、キャッシュデータ領域112−30におけるキャッシュスロットのIDを特定するキャッシュスロット番号112−14−1と、キャッシュスロットがデータを格納するディスク121のIDを特定するディスク番号112−14−2と、キャッシュスロットがデータを格納するディスクアドレス(例えば、LBA)を特定するディスクアドレス112−14−3と、キー管理のために次キャッシュスロット番号を特定する次スロットポインタ112−14−4(「NULL」はキューの末端を意味する)と、ロック状態を特定するロック状態112−14−7(「共有」は、スロットが共有ロックで一つ以上のプロセスによって使用されていることを意味する。状態が「共有」である場合、ロックプロセスを有する番号も含まれる。「専有」は、スロットが専有ロックで一つのプロセスによって使用されていることを意味する。「ロック解除」は、どのプロセスもスロットを使用していないことを意味する。)と、キャッシュスロットキューの種類を特定するキューの種類情報112−14−5(「フリー」は、未使用キャッシュスロットを有するキューを意味する。「クリーン」は、ディスクスロットと同じデータを格納するキャッシュスロットを有するキューを意味する。「ダーティ」は、ディスクスロットにおけるデータとは異なるデータを格納するキャッシュスロットを有するキューを意味するため、ストレージコントローラ110は、将来的にキャッシュスロットデータをディスクスロットにフラッシュする必要がある)、キャッシュスロットキューのインデックスを特定するキューインデックスポインタ112−14−6との欄を含む。
【0033】
0055 論理構造
【0034】
0056 図9は、キャッシュの論理構造を説明する一例を示す。矢印付きの直線については、点線は、オブジェクトがポインタで参照することを意味し、実線は、オブジェクトが計算で参照することを意味する。キャッシュデータ領域112−30は、複数のキャッシュスロット112−30−1に分割される。キャッシュスロット112−30−1のサイズは、コピーオンライト・スナップショットプールストライプ121−3のサイズと仮想ボリュームスロット141−3のサイズと等しい。キャッシュ管理テーブル112−14及びキャッシュスロット112−30−1は、一対一の関係である。キャッシュ管理テーブル112−14は仮想ボリュームスロット141−3を参照し、RAIDグループ管理テーブル112−11−1によってコピーオンライト・スナップショットプールストライプ121−3を解決することができる。複数のキャッシュデータ領域は、一つのコピーオンライト・スナップショットプールストライプ121−3を共有できる。
【0035】
0057 図10は、コピーオンライト・スナップショットプールチャンク121−1の論理構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。RAIDグループ管理テーブル112−11−1は、属するディスクのディスク管理テーブル112−11−5を参照する。RAIDグループ管理テーブル112−11−1は、未使用チャンクキューインデックス112−11−1−7及び使用チャンクキューインデックス112−11−1−8によってコピーオンライト・スナップショットプールチャンク管理テーブル112−11−7を参照する。コピーオンライト・スナップショットプールチャンク121−1とコピーオンライト・スナップショットプールチャンク管理テーブル112−11−7との関係は固定されている。
【0036】
0058 図11は、コピーオンライト・スナップショットプールへのテーブル参照構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。仮想ボリューム141sとボリューム管理テーブル112−11−2は、一対一の関係である。ボリューム管理テーブル112−11−2は、現在使用しているコピーオンライト・スナップショットプールチャンク121−1を参照する。論理ボリューム領域141pとボリューム管理テーブル112−11−2は、一対一の関係である。ボリューム管理テーブル112−11−2は、RAIDグループのプロビジョニングされた領域を参照する。仮想ボリュームページ141s−2と仮想ボリュームページ管理テーブル112−11−6は、一対一の関係である。仮想ボリュームページ管理テーブル112−11−6は、ページが割り当てられている場合には、コピーオンライト・スナップショットプールページ121−2のスライスを参照する。コピーオンライト・スナップショットプールが割り当てられていない場合、ページは、ペア論理ボリューム上の同じアドレスを参照する。RAIDグループとRAIDグループ管理テーブル112−11−1は、一対一の関係である。RAIDグループ管理テーブル112−11−1は、RAIDグループがコピーオンライト・スナップショットプールに結び付けられている場合、使用及び未使用コピーオンライト・スナップショットプールチャンク121−1を参照する。
【0037】
0059 図12は、仮想ボリュームへのテーブル参照構造を説明する一例を示す。矢印付きの直線については、実線は、オブジェクトがポインタで参照することを意味し、点線は、オブジェクトが計算で参照することを意味する。コピーオンライト・スナップショットプールチャンク121−1とコピーオンライト・スナップショットプールチャンク管理テーブル112−11−7は、一対一の関係である。コピーオンライト・スナップショットプールチャンク管理テーブル112−11−7は仮想ボリューム141sを参照する。コピーオンライト・スナップショットプールページ121−2については、コピーオンライト・スナップショットプールページ管理テーブル112−11−8は仮想ボリュームページ141s−2を参照する。
【0038】
0060 フローチャート
【0039】
0061 図13は、書込みI/O制御112−21−1を説明する流れ図の一例を示す。プロセスはステップ112−21−1−1から開始する。ステップ112−21−1−2では、プログラムは、キャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−21−1−3では、プログラムは、見つかった又は割り当てられたキャッシュスロットを「専有」状態としてロックする。ステップ112−21−1−4では、プログラムはボリューム属性をチェックする。ボリュームが論理ボリューム領域である場合、プロセスはステップ112−21−1−6に進む。ボリュームが論理ボリューム領域でない場合、プロセスはステップ112−21−1−5に進む。ステップ112−21−1−5では、プログラムは、仮想ボリュームの仮想ページの割り当て状態をチェックする。アクセスされたアドレスに既にページが割り当てられている場合、プログラムはステップ112−21−1−14に進む。そうでない場合、プログラムはステップ112−21−1−7に進む。ステップ112−21−1−6では、プログラムは、同じ論理ボリューム領域とペアを成すすべての仮想ボリュームの仮想ページの割り当て状態をチェックする。あらゆる仮想ページがコピーオンライト・スナップショットプールページを参照する場合、プロセスはステップ112−21−1−14に進む。そうでない場合、プロセスはステップ112−21−1−7に進む。
【0040】
0062 ステップ112−21−1−7では、プログラムは、新しいコピーオンライト・スナップショットページを割当てるために、ページ割り当て制御112−27−2を呼び出す。ステップ112−21−1−8では、プログラムは、新たに割り当てられたコピーオンライト・スナップショットページのキャッシュスロット112−30−1及び関連論理ボリューム領域を探索するために、キャッシュ制御112−24を呼び出す。ステップ112−21−1−9では、プログラムは、見つかった又は割り当てられたキャッシュスロットを「専有」状態としてロックする。ステップ112−21−1−10では、プログラムは、データが既にキャッシュ領域にステージされているか否かをチェックする。YESの場合は、プロセスはステップ112−21−1−11に進む。NOの場合には、プロセスはステップ112−21−12に進む。ステップ112−21−1−11では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。ステップ112−21−1−12では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。次に、ステップ112−21−1−13では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「ダーティ」に変更し、コピーオンライト・スナップショットページのキャッシュ領域をロック解除する。アクセスされたボリュームが「仮想」である場合、プログラムは、上述の論理ボリューム領域のキャッシュ領域をロック解除し、コピーオンライト・スナップショットページのキャッシュ領域アドレスから仮想ボリュームページのキャッシュ領域アドレスへとキャッシュ領域アドレスを差し替える。
【0041】
0063 ステップ112−21−1−14では、プログラムは、ホストコンピュータ300から書込みI/Oデータを受信し、これを上述のキャッシュスロット112−30−1に格納する。ステップ112−21−1−15では、プログラムは、アクセスされたボリュームのキャッシュ領域をロック解除する。プロセスはステップ112−21−1−16で終了する。
【0042】
0064 図14は、読出しI/O制御112−21−2を説明する流れ図の一例を示す。プロセスはステップ112−21−2−1から開始する。ステップ112−21−2−2では、プログラムは、キャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−21−2−3では、プログラムは、キャッシュ領域を「共有」状態としてロックし、ロックカウンタを増加させる。ステップ112−21−2−4では、プログラムは、データが既にそこに格納されているか否かを判断するために、上述のキャッシュスロット112−30−1の状態をチェックする。YESの場合は、プロセスはステップ112−21−2−6に進む。NOの場合には、プロセスはステップ112−21−2−5に進む。ステップ112−21−2−5では、プログラムはステージング制御112−22−1呼び出し、ステップ112−21−2−6に進む。ステップ112−21−2−6では、プログラムはキャッシュスロット112−30−1のデータをホストコンピュータ300に転送する。ステップ112−21−2−7では、プログラムは、ロックカウンタを1だけ減少させ、ロックカウンタが0である場合には、キャッシュ領域を「共有」状態としてロック解除する。プロセスはステップ112−21−2−8で終了する。
【0043】
0065 図15は、ステージング制御112−22−1を説明する流れ図の一例を示す。プロセスはステップ112−22−1−1から開始する。ステップ112−22−1−2では、プログラムは、ボリューム管理テーブル112−11−2をチェックし、かつ仮想ボリュームページについて論理ボリューム領域アドレス又はコピーオンライト・スナップショットプールページを探索するために、ページマッピング制御112−27−1を呼び出す。ステップ112−22−1−3では、アクセスされたボリュームが仮想ボリュームであるか否かを判断するために、アクセスされたボリュームの属性をチェックする。YESの場合は、プロセスはステップ112−22−1−6に進む。NOの場合には、プロセスはステップ112−22−1−5に進む。ステップ112−22−1−5では、プログラムは、ディスク121の領域からデータを読出し、これをキャッシュデータ領域112−30に格納する。プログラムは、書込みI/O完了をホスト300に通知し、プロセスはステップ112−22−1−13で終了する。
【0044】
0066 ステップ112−22−1−6では、プログラムは、仮想ボリュームページがコピーオンライト・スナップショットプールページを参照するか否か(即ち、アクセスされたアドレスにページが割り当てられているか否か)をチェックする。YESの場合は、プロセスはステップ112−22−1−5に進む。NOの場合には、プロセスはステップ112−22−1−7に進む。ステップ112−22−1−7では、プログラムは、ペア論理ボリュームの関連領域についてキャッシュスロット112−30−1を探索するために、キャッシュ制御112−24を呼び出す。ステップ112−22−1−8では、プログラムはペア論理ボリュームの関連領域をロックする。ステップ112−22−1−9では、プログラムは、前記領域のデータがキャッシュ領域に格納されているか否かをチェックする。YESの場合は、プロセスはステップ112−22−1−10に進む。NOの場合には、プロセスはステップ112−22−1−11に進む。ステップ112−22−1−10では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。ステップ112−22−1−11では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域にデータをコピーする。次に、ステップ112−21−1−12では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「クリーン」に変更し、上述の論理ボリューム領域のキャッシュ領域をロック解除し、コピーオンライト・スナップショットページのキャッシュ領域アドレスから仮想ボリュームページのキャッシュ領域アドレスへとキャッシュ領域アドレスを差し替える。プログラムは、読出しI/O完了をホスト300に通知し、プロセスはステップ112−22−1−13で終了する。
【0045】
0067 図16は、デステージング制御112−22−2を説明する流れ図の一例を示す。プロセスはステップ112−22−2−1から開始する。ステップ112−22−2−2では、プログラムは、仮想ボリュームページについてコピーオンライト・スナップショットプールページを探索し、かつ割り当てるために、ページマッピング制御112−27−1を呼び出す。ステップ112−22−2−3では、プログラムは、キャッシュデータ領域112−30のスロットからデータを読出し、これをディスク121に格納する。ステップ112−22−2−4では、プログラムはデータ転送が終了するまで待つ。プロセスはステップ112−22−2−5で終了する。
【0046】
0068 図17は、ページマッピング制御112−27−1を説明する流れ図の一例を示す。プロセスはステップ112−27−1−1から開始する。ステップ112−27−1−2では、プログラムは、ボリューム管理テーブル112−11−2を参照することによって、ボリューム属性をチェックする。ボリュームが論理ボリューム領域である場合、プロセスはステップ112−27−1−4に進む。ボリュームが論理ボリューム領域ではない場合、プロセスはステップ112−27−1−3に進む。ステップ112−27−1−3では、プログラムはRAIDグループにおいてアクセスされた領域を計算し、プロセスはステップ112−27−1−7に進む。ステップ112−27−1−4では、プログラムは、仮想ボリュームページに既にコピーオンライト・スナップショットプールページが割り当てられているか否かをチェックする。YESの場合は、プロセスはステップ112−27−1−6に進む。NOの場合には、プロセスはステップ112−27−1−5に進む。ステップ112−27−1−5では、プログラムはペア論理ボリュームにおいてアクセスされた領域の関連領域を計算し、プロセスはステップ112−27−1−7に進む。ステップ112−27−1−6において、プログラムは、割り当てられたコピーオンライト・スナップショットプールページアドレスを取得する。次に、ステップ112−27−1−7では、プログラムは、見つかったアドレスを戻す。プロセスはステップ112−27−1−8で終了する。
【0047】
0069 一般技術実施形態についての上述の説明において、書込み可能コピーオンライト・スナップショット機能は、ストレージの物理容量を減らすことができる。制御方法は、ロックプロセスから及びI/Oに対するI/O同期コピーからバックアップイメージまでのデータの一貫性を必要とし、確保する。ロックプロセスは、比較方法を用いる。以下の本発明の特定の実施形態では、コピーオンライト・プロセスを実施せず、かつ一貫性保護方法を無視する。その代わり、ストレージは、後の適切な時点で(非同期で)主データをコピーする。このようにして、本発明は高い容量効率と低いレイテンシーI/Oを達成する。
【0048】
0070 一貫性保護を無視する特定の実施形態
【0049】
0071 特定の実施形態に関しては、上述の一般技術実施形態との差異のみを説明する。以下の説明は、読取専用である論理ボリューム領域のみを対象とする。
【0050】
0072 システム構成に関しては、図18は、特定の実施形態に従ったストレージサブシステムのメモリ112の一例を示す。ボリューム管理テーブル112−11−2'は、書込み状態を有するボリューム構成管理のためのものである。書込みI/O制御112−21−1'は、論理ボリューム領域へのアクセスが読取専用であるため、仮想ボリュームアクセスのみのためのものである。ステージング制御112−22−1'は、ディスク121からキャッシュデータ領域112−30へとデータを転送する。デステージング制御112−22−2'は、キャッシュデータ領域112−30からディスク121へとデータを転送する。
【0051】
0073 テーブル構造に関しては、図19は、特定の実施形態に従ったボリューム管理テーブル112−11−2’の一例を示す。書込み状態112−11−2'−8の欄は、ボリュームのアクセス許可を特定する。「読取専用」とは、ボリュームが書込みI/Oを受け付けないことを意味する。「書込み可能」とは、ボリュームが書込みI/Oを受け付けることを意味する。ストレージユーザは、ストレージ管理端末400を介してこの状態を設定することができる。この場合、読取専用はこの方法によって確保される。但し、これは例えばパス終了などのその他の方法によって使用することができる。
【0052】
0074 フローチャートに関しては、図20は、特定の実施形態に従った書込みI/O制御112−21−1'を説明する流れ図の一例を示す。プロセスは、ステップ112−21−1’−1から開始する。ステップ112−21−1'−2では、プログラムは、アクセスされた領域を「専有」状態としてロックする。ステップ112−21−1'−3では、プログラムは、キャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−21−1'−4では、プログラムは書込みI/Oデータを受信し、これをキャッシュ領域に格納する。ステップ112−21−1'−5では、プログラムはアクセスされた領域をロック解除する。プログラムはステップ112−21−1’−6で終了する。
【0053】
0075 図21は、特定の実施形態に従ったステージング制御112−22−1'を説明する流れ図の一例を示す。図15と比較すると、ステップ112−22−1−8が取り除かれている。ステップ112−22−1'−12(ステップ112−22−1−12に代わって)では、プログラムはコピーオンライト・スナップショットページのキャッシュ状態を「クリーン」に変更する。
【0054】
0076 図22は、特定の実施形態に従ったデステージング制御112−22−2'を説明する流れ図の一例を示す。プロセスはステップ112−22−2’−1から開始する。ステップ112−22−2'−2では、プログラムはボリューム管理テーブル112−11−2をチェックし、仮想ボリュームページについて論理ボリューム領域アドレス又はコピーオンライト・スナップショットプールページを探索するためにページマッピング制御112−27−1を呼び出す。ステップ112−22−2'−3では、プログラムは、アクセスされたボリュームの属性をチェックする。アクセスされたボリュームが仮想ボリュームである場合、プロセスはステップ112−22−2’−5に進む。アクセスされたボリュームが仮想ボリュームではない場合、プロセスはステップ112−22−2’−4に進む。ステップ112−22−2’−4では、プログラムはディスク121からデータを読み出して、これをキャッシュデータ領域112−30に格納し、そしてプロセスはステップ112−22−2’−13で終了する。ステップ112−22−2'−5では、プログラムは、ページがアクセスされたアドレスに割り当てられているか否かをチェックする。YESの場合には、プロセスはステップ112−22−2’−4に進む。NOの場合には、プロセスはステップ112−22−2’−6に進む。ステップ112−22−2'−6では、プログラムは、スナップショットプールページを仮想ボリュームページに割り当てるためにページ割り当て制御112−27−2を呼び出す。ステップ112−22−2'−7では、プログラムは、ペア論理ボリューム関連領域についてキャッシュスロット112−30−1を探索するためにキャッシュ制御112−24を呼び出す。ステップ112−22−2'−9では、プログラムは、前記領域のデータがキャッシュ領域に格納されているか否かをチェックする。YESの場合には、プロセスはステップ112−22−2’−10に進む。NOの場合には、プロセスはステップ112−22−2’−11に進む。ステップ112−22−2'−10では、プログラムは、論理ボリューム領域のキャッシュ領域から、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域へとデータをコピーする。ステップ112−22−2'−11では、プログラムは、論理ボリューム領域のディスクから、割り当てられたコピーオンライト・スナップショットプールページのキャッシュ領域へとデータをコピーする。次に、ステップ112−22−2'−12では、プログラムは、コピーオンライト・スナップショットページのキャッシュ状態を「ダーティ」に変更する。プロセスはステップ112−22−2’−13で終了する。
【0055】
0077 当然のことながら、図1に示すシステム構成は、本発明が実施され得る情報システムの単なる例示であり、本発明は特定のハードウェア構成に限定されない。本発明を実施するコンピュータ及びストレージシステムは、上述の発明を実施するために用いられるモジュール、プログラム及びデータ構造を格納しかつ読み出すことができる公知のI/O装置(例えば、CD及びDVDドライブ、フロッピー(登録商標)ディスクドライブ、ハードドライブ等)も有し得る。これらのモジュール、プログラム及びデータ構造は、当該コンピュータ読取可能媒体上で符号化することができる。例えば、本発明の前記データ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読取可能媒体から独立したコンピュータ読取可能媒体に格納することができる。システムの構成要素は、あらゆる形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク、ワイドエリアネットワーク(例えば、インターネット)、無線ネットワーク、ストレージエリアネットワーク等を含む。
【0056】
0078 説明では、本発明を徹底的に理解できるようにするための説明の目的で多くの詳細が記載されている。しかし、当業者にとっては、本発明を実施するためにはこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、流れ図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明し得るが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【0057】
0079 当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置(ハードウェア)を用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体上に記憶された命令を用いて実施してもよく、当該発明は、プロセッサによって実行された場合には、プロセッサに本発明の実施形態を実行される方法を実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてよく、その他の実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に広めることができる。ソフトウェアによって実施された場合、方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び/又は暗号化形式で命令を媒体に記憶することができる。
【0058】
0080 上記により、本発明が、低減されたストレージの物理容量を保ちつつ、削減されたI/Oレイテンシーを達成するように書込み可能コピーオンライト・スナップショット機能を修正する方法、装置及びコンピュータ読取可能媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって当然のことながら、開示された特定の実施形態の代わりに、同じ目的を達成するために創出された構成を用いてよい。本開示は、本発明のあらゆる適合又はバリエーションを対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示されている特定の実施形態に限定するものとは解釈されるべきではないことが理解される。むしろ本発明の範囲は、以下の請求項によって全面的に判断されるものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【特許請求の範囲】
【請求項1】
ストレージシステムを制御する方法であって、
第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納することと、
前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止することと、
前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行することと
を含む、方法。
【請求項2】
前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定することをさらに含み、
前記判断は、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む、請求項1に記載の方法。
【請求項3】
前記ストレージシステムが、前記複数の第2ボリュームのうちの一つの第2ボリュームについての読出し要求を受け取ることと、
前記読出し要求に応じて、前記第1ボリュームから取得したデータのイメージと、前記一つの第2ボリュームからホストコンピュータへと転送されたデータとを提供することと
をさらに含む、請求項1に記載の方法。
【請求項4】
前記第2ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、
後続の書込み要求を実行するための前記第2ボリュームの前記ページへの書込みは、非同期で行われる、請求項1に記載の方法。
【請求項5】
前記後続の書込み要求のためのデータはキャッシュメモリに書き込まれ、
前記キャッシュメモリから前記ページへの書込みは、前記キャッシュメモリのダーティ領域が所定の閾値に達する前に実行される、請求項4に記載の方法。
【請求項6】
前記後続の書込み要求はスナップショットイメージについてである、請求項1に記載の方法。
【請求項7】
前記後続の書込み要求はホストコンピュータから送信され、
各ホストコンピュータは、前記第2ボリュームのうちの一つに対応する、請求項1に記載の方法。
【請求項8】
前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、
仮想ボリュームとペアを成すペア論理ボリュームの関連領域についてキャッシュ領域を探索するために、前記ペア論理ボリュームの前記関連領域を専有状態としてロックすることなしに、キャッシュ制御を実行することをさらに含む、請求項1に記載の方法。
【請求項9】
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されている場合、前記データを前記ペア論理ボリュームの前記キャッシュ領域から前記仮想ボリュームのキャッシュ領域にコピーすることと、
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されていない場合、前記データを前記ペア論理ボリュームのデータから前記仮想ボリュームのキャッシュ領域にコピーすることと、
前記ペア論理ボリュームの前記関連領域をロック解除する必要なしに、前記仮想ボリューム仮想ボリューム・キャッシュ領域状態を「クリーン」に変更することと
をさらに含む、請求項8に記載の方法。
【請求項10】
前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、
仮想ボリュームの仮想ボリュームページにスナップショットプールページを割り当てることと、
仮想ボリュームとペアを成すペア論理ボリュームの前記関連領域ついて、キャッシュ領域を探索することと、
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されているか否かをチェックし、格納されている場合には、ペア論理ボリュームの前記キャッシュ領域から前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーし、格納されていない場合には、論理ボリューム領域のディスクから前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーすることと、
前記コピーオンライト・スナップショットページの前記キャッシュ状態を「ダーティ」に変更することと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記第1ボリュームに格納された前記データは、すべての前記ホストコンピュータによって共有されるゴールドイメージであり、
各ホストコンピュータは、対応する第2ボリュームに結合されており、かつ
各ホストコンピュータの更新は、前記対応する第2ボリュームに格納される、請求項1に記載の方法。
【請求項12】
ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおけるストレージシステムであって、
メモリと、
第1ボリューム及び複数の第2ボリュームを含むボリュームを有するストレージと、
前記ストレージシステムにおける前記第1ボリュームにデータを格納し、
前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止し、
前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記ストレージシステムにおける前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行し、かつ
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように構成されたストレージコントローラと
を備える、ストレージシステム。
【請求項13】
前記ストレージコントローラが、前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定するように構成され、
前記一つの書込み要求のターゲットボリュームが書込みを禁止されているか否かの判断が、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む、請求項12に記載のストレージシステム。
【請求項14】
前記ストレージコントローラが、
前記複数の第2ボリュームのうちの一つの第2ボリュームについての読出し要求を受け取り、かつ
前記読出し要求に応じて、前記第1ボリュームから取得したデータのイメージと、前記一つの第2ボリュームからホストコンピュータへと転送されたデータとを提供するように構成された、請求項12に記載のストレージシステム。
【請求項15】
前記第2ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、
前記ストレージコントローラは、後続の書込み要求を非同期で実行するために、前記第2ボリュームの前記ページに書込みを行うように構成された、請求項12に記載のストレージシステム。
【請求項16】
前記ストレージコントローラは、
前記後続の書込み要求のためのデータをキャッシュメモリに書込み、かつ
前記キャッシュメモリのダーティ領域が所定の閾値に達する前に、前記キャッシュメモリから前記ページに書き込むように構成された、請求項15に記載のストレージシステム。
【請求項17】
前記後続の書込み要求はスナップショットイメージについてである、請求項12に記載のストレージシステム。
【請求項18】
前記後続の書込み要求はホストコンピュータから送信され、
各ホストコンピュータは、前記第2ボリュームのうちの一つに対応する、請求項12に記載のストレージシステム。
【請求項19】
ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおいて、I/O(入出力)を処理するデータプロセッサを制御するための複数の命令を格納するコンピュータ読取可能記憶媒体であって、前記複数の命令は、
第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納させるように、前記データプロセッサに指示する命令と、
前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/Oアクセスを禁止するように、前記データプロセッサに指示する命令と、
前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行するように、前記データプロセッサに指示する命令と、
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように、前記データプロセッサに指示する命令と
を含む、コンピュータ読取可能記憶媒体。
【請求項20】
前記複数の命令は、前記データプロセッサに、ボリュームへの書込みアクセスが禁止されていることを示すフラグを前記ボリュームに対して設定させる命令をさらに備え、
前記一つの書込み要求の前記ターゲットボリュームが書込みを禁止されているか否かを判断することが、前記フラグが前記ターゲットボリュームに対して設定されているかをチェックすることを含む、請求項19に記載のコンピュータ読取可能記憶媒体。
【請求項1】
ストレージシステムを制御する方法であって、
第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納することと、
前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止することと、
前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行することと、
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行することと
を含む、方法。
【請求項2】
前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定することをさらに含み、
前記判断は、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む、請求項1に記載の方法。
【請求項3】
前記ストレージシステムが、前記複数の第2ボリュームのうちの一つの第2ボリュームについての読出し要求を受け取ることと、
前記読出し要求に応じて、前記第1ボリュームから取得したデータのイメージと、前記一つの第2ボリュームからホストコンピュータへと転送されたデータとを提供することと
をさらに含む、請求項1に記載の方法。
【請求項4】
前記第2ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、
後続の書込み要求を実行するための前記第2ボリュームの前記ページへの書込みは、非同期で行われる、請求項1に記載の方法。
【請求項5】
前記後続の書込み要求のためのデータはキャッシュメモリに書き込まれ、
前記キャッシュメモリから前記ページへの書込みは、前記キャッシュメモリのダーティ領域が所定の閾値に達する前に実行される、請求項4に記載の方法。
【請求項6】
前記後続の書込み要求はスナップショットイメージについてである、請求項1に記載の方法。
【請求項7】
前記後続の書込み要求はホストコンピュータから送信され、
各ホストコンピュータは、前記第2ボリュームのうちの一つに対応する、請求項1に記載の方法。
【請求項8】
前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、
仮想ボリュームとペアを成すペア論理ボリュームの関連領域についてキャッシュ領域を探索するために、前記ペア論理ボリュームの前記関連領域を専有状態としてロックすることなしに、キャッシュ制御を実行することをさらに含む、請求項1に記載の方法。
【請求項9】
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されている場合、前記データを前記ペア論理ボリュームの前記キャッシュ領域から前記仮想ボリュームのキャッシュ領域にコピーすることと、
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されていない場合、前記データを前記ペア論理ボリュームのデータから前記仮想ボリュームのキャッシュ領域にコピーすることと、
前記ペア論理ボリュームの前記関連領域をロック解除する必要なしに、前記仮想ボリューム仮想ボリューム・キャッシュ領域状態を「クリーン」に変更することと
をさらに含む、請求項8に記載の方法。
【請求項10】
前記第2ボリュームが、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームである場合、かつ前記書込み要求の前記ターゲットボリュームについてページが割り当てられていない場合、
仮想ボリュームの仮想ボリュームページにスナップショットプールページを割り当てることと、
仮想ボリュームとペアを成すペア論理ボリュームの前記関連領域ついて、キャッシュ領域を探索することと、
前記関連領域のデータが前記ペア論理ボリュームのキャッシュ領域に格納されているか否かをチェックし、格納されている場合には、ペア論理ボリュームの前記キャッシュ領域から前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーし、格納されていない場合には、論理ボリューム領域のディスクから前記割当済みスナップショットプールページのキャッシュ領域に前記データをコピーすることと、
前記コピーオンライト・スナップショットページの前記キャッシュ状態を「ダーティ」に変更することと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記第1ボリュームに格納された前記データは、すべての前記ホストコンピュータによって共有されるゴールドイメージであり、
各ホストコンピュータは、対応する第2ボリュームに結合されており、かつ
各ホストコンピュータの更新は、前記対応する第2ボリュームに格納される、請求項1に記載の方法。
【請求項12】
ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおけるストレージシステムであって、
メモリと、
第1ボリューム及び複数の第2ボリュームを含むボリュームを有するストレージと、
前記ストレージシステムにおける前記第1ボリュームにデータを格納し、
前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/O(入出力)アクセスを禁止し、
前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記ストレージシステムにおける前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行し、かつ
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように構成されたストレージコントローラと
を備える、ストレージシステム。
【請求項13】
前記ストレージコントローラが、前記ボリュームに対する書込みアクセスが禁止されていることを示すフラグをボリュームに設定するように構成され、
前記一つの書込み要求のターゲットボリュームが書込みを禁止されているか否かの判断が、前記フラグが前記ターゲットボリュームに対して設定されているか否かを判断することを含む、請求項12に記載のストレージシステム。
【請求項14】
前記ストレージコントローラが、
前記複数の第2ボリュームのうちの一つの第2ボリュームについての読出し要求を受け取り、かつ
前記読出し要求に応じて、前記第1ボリュームから取得したデータのイメージと、前記一つの第2ボリュームからホストコンピュータへと転送されたデータとを提供するように構成された、請求項12に記載のストレージシステム。
【請求項15】
前記第2ボリュームは、書込み要求に応じてページ単位でプールボリュームから割り当てられた仮想ボリュームであり、
前記ストレージコントローラは、後続の書込み要求を非同期で実行するために、前記第2ボリュームの前記ページに書込みを行うように構成された、請求項12に記載のストレージシステム。
【請求項16】
前記ストレージコントローラは、
前記後続の書込み要求のためのデータをキャッシュメモリに書込み、かつ
前記キャッシュメモリのダーティ領域が所定の閾値に達する前に、前記キャッシュメモリから前記ページに書き込むように構成された、請求項15に記載のストレージシステム。
【請求項17】
前記後続の書込み要求はスナップショットイメージについてである、請求項12に記載のストレージシステム。
【請求項18】
前記後続の書込み要求はホストコンピュータから送信され、
各ホストコンピュータは、前記第2ボリュームのうちの一つに対応する、請求項12に記載のストレージシステム。
【請求項19】
ネットワークを介してストレージシステムに結合された複数のホストコンピュータを含む情報システムにおいて、I/O(入出力)を処理するデータプロセッサを制御するための複数の命令を格納するコンピュータ読取可能記憶媒体であって、前記複数の命令は、
第1ボリューム及び複数の第2ボリュームを含むボリュームを有する前記ストレージシステムにおいて、前記第1ボリュームにデータを格納させるように、前記データプロセッサに指示する命令と、
前記第1ボリュームに前記データを格納した後、前記第1ボリュームに対する書込みI/Oアクセスを禁止するように、前記データプロセッサに指示する命令と、
前記第1ボリュームに前記データを格納した後、前記ストレージシステムによって受信された、前記第2ボリュームに対する後続の書込み要求であって、それぞれが前記第2ボリュームのうちの一つであるターゲットボリュームを有する書込み要求を実行するように、前記データプロセッサに指示する命令と、
前記書込み要求のうちの各一つの書込み要求に応じて、前記各一つの書込み要求のターゲットボリュームが書込みを禁止されているか否か判断し、前記ターゲットボリュームが書込みを禁止されていない場合にのみ、前記一つの書込み要求を実行するように、前記データプロセッサに指示する命令と
を含む、コンピュータ読取可能記憶媒体。
【請求項20】
前記複数の命令は、前記データプロセッサに、ボリュームへの書込みアクセスが禁止されていることを示すフラグを前記ボリュームに対して設定させる命令をさらに備え、
前記一つの書込み要求の前記ターゲットボリュームが書込みを禁止されているか否かを判断することが、前記フラグが前記ターゲットボリュームに対して設定されているかをチェックすることを含む、請求項19に記載のコンピュータ読取可能記憶媒体。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2011−175616(P2011−175616A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−192805(P2010−192805)
【出願日】平成22年8月30日(2010.8.30)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−192805(P2010−192805)
【出願日】平成22年8月30日(2010.8.30)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]