(57)【要約】  ストレージハードウェアに記憶される複数のボリュームを有するシステムにおいて実行される方法。この方法は、ボリュームごとに、それぞれの空間節約ポテンシャルを経時的に反復して生成することと、ボリュームのそれぞれを空間節約ポテンシャルについて解析し、少なくとも部分的に空間節約ポテンシャルに基づいてリソースの優先度を割り当てることによって、複数のボリューム間で空間節約動作をスケジューリングすることと、を含む。【選択図】図２
2015517147.tif 000002
【特許請求の範囲】
【請求項１】
ストレージハードウェアに記憶される複数のストレージオブジェクトを有するシステムにおいて実行される方法であって、
前記ストレージオブジェクトごとに、それぞれの空間節約ポテンシャルを経時的に反復して生成することと、
前記ストレージオブジェクトのそれぞれを空間節約ポテンシャルについて解析し、少なくとも部分的に空間節約ポテンシャルに基づいてリソースの優先度を割り当てることによって、前記複数のストレージオブジェクト間で空間節約動作をスケジューリングすることと、
を含む、ストレージハードウェアに記憶される複数のストレージオブジェクトを有するシステムにおいて実行される方法。
【請求項２】
それぞれの空間節約ポテンシャルを生成することは、
前記ストレージオブジェクトごとに、
前回の空間節約動作以降に受信されたデータを特定することと、
前記特定されたデータに対し空間節約動作を行うとともに、該特定されたデータについて空間節約値を計算することと、
以前に加えられたデータの累積空間節約値を用いて前記特定されたデータの前記空間節約値の加重平均を行うことであって、前記加重平均によって前記それぞれの空間節約ポテンシャルが生成されることと、
を含む、請求項１に記載の方法。
【請求項３】
所与のストレージオブジェクトのそれぞれの空間節約ポテンシャルは、該所与のストレージオブジェクトの前回の空間節約結果に基づく、請求項１に記載の方法。
【請求項４】
スケジューリングすることは、
前記ストレージオブジェクトのうちの２つ以上が類似した空間節約ポテンシャルを有することを特定することと、
前記特定することに応答して、相対的な変更ログサイズに基づいて前記ストレージオブジェクトのうちの２つ以上の中から空間節約動作をスケジューリングすることと、
を含む、請求項１に記載の方法。
【請求項５】
前記複数のストレージオブジェクトを第１のリストに最初に割り当てることと、
経時的に、それぞれの空間節約ポテンシャル及び利用可能なシステムリソースに基づいて、前記ストレージオブジェクトの第１の部分組を第２のリストに割り当てることと、
を更に含む、請求項１に記載の方法。
【請求項６】
前記ストレージオブジェクトの前記第１の部分組を割り当てることは、前記第１の部分組内の前記ストレージオブジェクトがデータ変更の速さに遅れずに対応する空間節約動作を有しているか否かに少なくとも部分的に基づく、請求項５に記載の方法。
【請求項７】
システムリソースの変化又は空間節約ポテンシャルの変化に応じて、前記ストレージオブジェクトの前記第１の部分組のうちのストレージオブジェクトを、前記第２のリストから前記第１のリストに再度割り当てることを更に含む、請求項５に記載の方法。
【請求項８】
前記第２のリストは、前記ストレージオブジェクトのうちの、より高いそれぞれの空間節約ポテンシャルを有するストレージオブジェクトを含む、請求項５に記載の方法。
【請求項９】
経時的に、前記ストレージオブジェクトの第２の部分組を、前記ストレージオブジェクトのうちの、より低いそれぞれの空間節約ポテンシャルを有する他のストレージオブジェクトを含む第３のリストに割り当てることを更に含む、請求項８に記載の方法。
【請求項１０】
ネットワークストレージシステム内の記憶サーバーによって実行される、請求項１に記載の方法。
【請求項１１】
複数のストレージオブジェクトについて空間節約を管理するためのコンピュータープログラムロジックを有形に記憶するコンピューター読み出し可能媒体を有するコンピュータープログラム製品であって、該コンピュータープログラム製品は、
前記複数のストレージオブジェクトに対し、経時的に複数の空間節約動作を行うコードと、
前記ストレージオブジェクトごとにそれぞれの空間節約値を計算するコードであって、それによって、所与のストレージオブジェクトについての各後続の空間節約動作の結果として、該所与のストレージオブジェクトについて空間節約値が反復的に再計算される、コードと、
より高いそれぞれの空間節約値を有する前記ストレージオブジェクトの部分組のための処理リソースを優先付けすることによって該処理リソースを空間節約要求に配分するコードと、
を備える、コンピュータープログラム製品。
【請求項１２】
前記複数のストレージオブジェクトを第１のリストに最初に割り当てることと、
経時的に、それぞれの空間節約ポテンシャルに基づいて、前記ストレージオブジェクトの第１の部分組を第２のリストに割り当てることと、
を更に含む、請求項１１に記載の方法。
【請求項１３】
前記ストレージオブジェクトの前記第１の部分組を割り当てることは、前記第１の部分組内の前記ボリュームがデータ変更の速さに遅れずに対応する空間節約動作を有しているか否かに少なくとも部分的に基づく、請求項１２に記載の方法。
【請求項１４】
システムリソースの変化又は空間節約ポテンシャルの変化に応じて、前記ストレージオブジェクトの前記第１の部分組のうちのストレージオブジェクトを、前記第２のリストから前記第１のリストに再度割り当てることを更に含む、請求項１２に記載の方法。
【請求項１５】
前記第２のリストは、前記ストレージオブジェクトのうちの、より高いそれぞれの空間節約ポテンシャルを有するストレージオブジェクトを含む、請求項１２に記載の方法。
【請求項１６】
不揮発性記憶媒体を含むストレージサブシステムであって、該不揮発性記憶媒体は複数のストレージオブジェクトに仮想的に分割される、ストレージサブシステムと、
前記ストレージサブシステムと通信して、前記複数のストレージオブジェクト内の空間節約のための処理リソースの配分を管理するコンピューターであって、該コンピューターは、以下の動作、すなわち、
前記ストレージオブジェクトごとのそれぞれの空間節約ポテンシャルを、複数の空間節約動作にわたって反復的に計算することと、
空間節約のために前記ストレージオブジェクト間で選択することであって、それによって、第２のストレージオブジェクトの第２の空間節約ポテンシャルよりも高い第１の空間節約ポテンシャルを有する第１のストレージオブジェクトが、前記第１の空間節約ポテンシャルと前記第２の空間節約ポテンシャルとの差に少なくとも部分的に基づいて、空間節約のための前記処理リソースの配分における優先権を受けることと、
を実行するように構成される、コンピューターと、
を備える、システム。
【請求項１７】
前記コンピューターは、記憶ネットワークを介して前記ストレージサブシステムと通信する記憶サーバーを備える、請求項１６に記載のシステム。
【請求項１８】
前記コンピューターは、以下の動作、すなわち、
第１のグループと第２のグループとの間で前記複数のストレージオブジェクトを割り当てることであって、前記第１のグループは前記ストレージオブジェクトの第１の部分組を含み、前記第２のグループは前記ストレージオブジェクトの第２の部分組を含み、前記第１の部分組は、前記第２の部分組のそれぞれの空間節約ポテンシャルに対してより高いそれぞれの空間節約ポテンシャルを有すること、
を実行するように更に構成される、請求項１６に記載のシステム。
【請求項１９】
前記コンピューターは、以下の動作、すなわち、
前記第１の部分組が前記第２の部分組よりも優先されるように前記空間節約のための処理リソースを配分すること、
を実行するように更に動作可能である、請求項１８に記載のシステム。
【請求項２０】
前回の空間節約動作の結果を含む加重平均を実行することによって前記それぞれの空間節約ポテンシャルが計算される、請求項１６に記載のシステム。
【請求項２１】
前記それぞれの空間節約ポテンシャルは重複除去ポテンシャル及び圧縮ポテンシャルのうちの少なくとも１つを含む、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、包括的には、ネットワークストレージシステムにおける空間節約動作（例えば、圧縮及び重複除去）に関し、より詳細には、重複除去プロセスにおいてボリューム間で空間節約リソースを配分するための技法に関する。
【背景技術】
【０００２】
多くの企業は、ネットワークアタッチトストレージ（ＮＡＳ）及びストレージエリアネットワーク（ＳＡＮ）等のネットワークストレージシステムを含み、これらはクライアントコンピューティングシステムに接続され、それによってクライアントはストレージシステムによって管理されるデータにアクセスすることができる。ユーザーの（例えばクライアントの）観点から、ネットワークストレージシステムは１つ又は複数のストレージオブジェクト（記憶ボリューム）を含むことができ、これらは多くの場合に論理ボリューム又は仮想ボリュームと呼ばれる。そのようなネットワークストレージシステムは、非常に大量の重複データを記憶する場合があり、したがって、場合によっては、利用可能な記憶空間をより効率的に用いるために、重複除去を実行することが望ましい場合がある。ネットワークストレージシステムにおいてデータを重複除去することができる限り、重複データの除去は、場合によっては大きな記憶空間節約をもたらすことができ、したがって潜在的にコストが削減される。
【０００３】
ネットワークストレージのための幾つかの従来の技法は、仮想ボリューム内に論理的に編成される低レベルのストレージコンテナー（例えばファイル）の階層的編成を与え、基礎を成すデータを指し示すのにポインターを用いる、それぞれの仮想ボリュームに対応するファイルシステムを実装する。基礎を成すデータはデータブロックに配列される。所与のファイルは複数のブロックを指し示すことができ、ブロックは複数のファイルと関連付けることができる。さらに、所与のファイルは、別のファイルにおいて重複するデータを含む場合がある。例えば、記憶ボリュームは複数の電子メール受信箱を含み、各受信箱が特定の電子メール添付ファイルを含む場合がある。ほとんどのシナリオにおいて、電子メール添付ファイルの複数のコピーを記憶することは、記憶リソースの浪費になるので望ましくない。幾つかの従来の重複除去動作は、データの単一のコピーのみを保持して、重複コピーを単一のコピーへのポインターと置き換えることによって、１つのデータの複数のコピーを保存することを回避する。したがって、複数のファイルが同じデータと関連付けられるが、データの重複コピーは回避される。
【０００４】
重複除去動作は、大量の処理リソースを用いる場合がある。１つの例において、従来の重複除去プロセスは、重複除去されていないボリュームから開始する。従来の重複除去プロセスは、ストレージ（通常、ハードディスク）からデータブロックを読み出し、データブロックごとにフィンガープリントを作成し（例えば、フィンガープリントはブロック内のデータを示す小さなデータとすることができる）、このフィンガープリントを比較して、ブロックのいずれが重複である場合があるかを判断することを含む。次に、上記で説明したように、重複データはポインターによって置き換えられる。しかしながら、通常、このプロセスは、著しい量の処理力を用いる場合があり、これはユーザーの観点から、性能低下として現れる場合がある。さらに、ディスクから多数のデータブロックを読み出すには比較的長い時間がかかる場合がある。
【０００５】
別の従来の重複除去プロセスは、データブロックが保存されるか、（例えばバックアップ動作において）１つのボリュームから別のボリュームに転送されるときに、データブロックのフィンガープリントを生成する。これによって、上記の例とは対照的に、ボリューム全体を単一の動作で読み出して、ボリューム全体をフィンガープリンティングすることがなくなるはずである。しかしながら、フィンガープリントを互いに単に比較することは、著しい量の処理リソースを用いる場合がある。
【０００６】
つまり、重複除去プロセスの結果、ユーザーの観点から性能の欠陥が知覚される場合がある。これは、処理リソースが、重複除去プロセスに配分されるが、よりユーザーの目につく記憶動作及び取り出し動作の同時実行には用いられないことに起因する。ネットワークストレージシステムが、実行する様々な動作に費やす処理リソースの量が限られていることを仮定すると、最小の処理リソース量から最大の重複除去量を得るように重複除去を効率的に行うことが望ましい。
【発明の概要】
【０００７】
様々な実施形態が、重複除去リソースを配分する効率的な手法を提供するシステム、方法及びコンピュータープログラム製品を含む。１つの例において、複数の重複除去動作が複数のストレージオブジェクトについて実行され、それによって、受信データがストレージオブジェクトごとに時折重複除去されて既存のデータに入れられる。重複除去値が、重複除去動作の結果に基づいてストレージオブジェクトごとに計算される。重複除去値は、ストレージオブジェクトごとに経時的に達成される重複除去量を示す。この例では、ストレージオブジェクトの過去の結果が、予期される未来の性能を示し、したがって、重複除去値が重複除去節約ポテンシャルを示すと想定される。後続の重複除去動作において、より高い重複除去ポテンシャルを有するストレージオブジェクトが、より低いポテンシャルを有する他のストレージオブジェクトの前に重複除去のために選択される。経時的により高い重複除去ポテンシャルを示すストレージオブジェクトは、結果的に、優先リストに追加することができる。このようにして、空間節約のためのより高いポテンシャルを有するストレージオブジェクトが重複除去リソースに対する優先権を与えられる。
【０００８】
本開示のより広範な形態のうちの１つは、ストレージハードウェアに記憶される複数のストレージオブジェクトを有するシステムにおいて実行される方法であって、
前記ストレージオブジェクトごとに、それぞれの空間節約ポテンシャルを経時的に反復して生成することと、
前記ストレージオブジェクトのそれぞれを空間節約ポテンシャルについて解析し、少なくとも部分的に空間節約ポテンシャルに基づいてリソースの優先度を割り当てることによって、前記複数のストレージオブジェクト間で空間節約動作をスケジューリングすることと、
を含む、方法に関する。
【０００９】
本開示の別のより広範な形態は、複数のストレージオブジェクトについて空間節約を管理するためのコンピュータープログラムロジックを有形に記憶するコンピューター読み出し可能媒体を有するコンピュータープログラム製品であって、該コンピュータープログラム製品は、
前記複数のストレージオブジェクトに対し、経時的に複数の空間節約動作を行うコードと、
前記ストレージオブジェクトごとにそれぞれの空間節約値を計算するコードであって、それによって、所与のストレージオブジェクトについての各後続の空間節約動作の結果として、該所与のストレージオブジェクトについて空間節約値が反復的に再計算される、コードと、
より高いそれぞれの空間節約値を有する前記ストレージオブジェクトの部分組のための処理リソースを優先付けすることによって該処理リソースを空間節約要求に配分するコードと、
を備える、コンピュータープログラム製品に関する。
【００１０】
本開示の別のより広範な形態は、不揮発性記憶媒体を含むストレージサブシステムであって、該不揮発性記憶媒体は複数のストレージオブジェクトに仮想的に分割される、ストレージサブシステムと、
前記ストレージサブシステムと通信して、前記複数のストレージオブジェクト内の空間節約のための処理リソースの配分を管理するコンピューターであって、該コンピューターは、以下の動作、すなわち、
前記ストレージオブジェクトごとのそれぞれの空間節約ポテンシャルを、複数の空間節約動作にわたって反復的に計算することと、
空間節約のために前記ストレージオブジェクト間で選択することであって、それによって、第２のストレージオブジェクトの第２の空間節約ポテンシャルよりも高い第１の空間節約ポテンシャルを有する第１のストレージオブジェクトが、前記第１の空間節約ポテンシャルと前記第２の空間節約ポテンシャルとの差に少なくとも部分的に基づいて、空間節約のための前記処理リソースの配分における優先権を受けることと、
を実行するように構成される、コンピューターと、
を備える、システムに関する。
【００１１】
本開示は、添付の図面と合わせて読むときに以下の詳細な説明から最も良好に理解される。
【図面の簡単な説明】
【００１２】
【図１】様々な実施形態を実施することができるストレージオペレーティングシステムを実装する例示的なネットワークストレージシステムの図である。
【図２】１つの実施形態に従って適合された、多数のボリューム間で重複除去動作をスケジューリングする例示的な方法の図である。
【図３】１つの実施形態に従って適合された、図２に示す方法とともに動作可能な、多数のボリューム間で重複除去動作のためのリソースを配分する例示的な方法の図である。
【図４】一実施形態に従って適合された、図２に示す方法とともに動作可能な、ボリューム間で重複除去リソースを配分する例示的な方法の図である。
【発明を実施するための形態】
【００１３】
以下の開示は、本発明の様々な特徴を実施するための、多くの異なる実施形態又は実施例を提供する。本開示を単純にするために、構成要素及び構成の特定の例が以下で説明される。これらは当然ながら単なる例であり、限定を意図したものではない。加えて、本開示は様々な例において参照符号及び／又は文字を繰り返す場合がある。この繰り返しは単純で明確であることを目的としており、それ自体が、論考される様々な実施形態及び／又は構成間の関係を定めるものではない。
【００１４】
様々な実施形態を任意の種類のネットワーク環境で実施することができることが理解される。例えば、幾つかの実施形態は、複数のクライアント及び複数のサーバーを接続するＴＣＰ／ＩＰネットワークにおいて実施することができる。他の実施形態は、ネットワークアタッチトストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）又は任意の他のネットワークストレージ構成等のより特化した環境において実施することができる。様々な実施形態は、いかなる特定のネットワークアーキテクチャにも目的にも限定されるものではなく、多岐にわたる数々の環境において用いるように適合することができる。
【００１５】
本明細書において開示される様々な実施形態は、所与のボリュームの計算されたポテンシャルに従って重複除去リソースを配分する技法を提供する。したがって、より高い重複除去ポテンシャルを有するボリュームは重複除去される可能性がより高いのに対し、より低い重複除去ポテンシャルを有するボリュームは、重複除去される可能性がより低い。
【００１６】
幾つかのシステムにおいて、重複除去のための総作業負荷は、重複除去に配分することができるシステムにおける処理リソース量よりも大きい場合がある。例えば、重複除去は、用途によっては処理集中型の場合があり、システムは、重複除去動作によって記憶及び取り出し機能が顧客の性能期待値を超えて低下しない限りにおいてのみ、これらの重複除去動作を実行することができる。したがって、ボリュームによっては、システムの有限の処理リソースに起因して重複除去を行わない場合がある。
【００１７】
本明細書において説明される例示的な実施形態は、有限の処理リソースの問題に対し、記憶空間節約において利益を得る可能性が最も高いボリュームにおいてこれらの処理リソースを用いることによって、解決法を提供する。１つの例において、様々なボリュームが第１のリストにおいてグループ化される。このリストは、この例においてスタンバイリストとも呼ばれる。時間が経過すると、ボリュームは重複除去することができ、ボリュームごとに、そのボリュームの重複除去ポテンシャルを示す重複除去値が計算される。幾つかの例では、重複除去値は、重複除去を通じて所与のボリュームについて節約される空間量を用いて計算される。重複除去は、受信データに対し、ボリュームごとに時折実行することができ、重複除去値は反復的に計算され、連続的な重複除去動作が、その重複除去動作によって達成される空間節約に従ってボリュームの重複除去値に影響を及ぼすようにされる。重複除去値は、過去に達成された重複除去結果（例えば空間節約）を用いて計算されるので、或る観点からは後ろ向きである。重複除去値は、この例では、過去の重複除去結果が未来の節約を示すと仮定されるので、前向きでもある。
【００１８】
経時的に、ボリュームは各ボリュームに関連付けられた異なる重複除去値を有することになる。上述したように、重複除去アプリケーションを実行しているデバイス（例えば、ネットワークストレージサーバー）は、より高い節約ポテンシャルを有するボリュームをより高い頻度で重複除去のために選択する。一貫して高い節約ポテンシャルを示す幾つかのボリュームは、最終的に優先リストに移すことができ、この優先リストにおいて、それらのボリュームは、スタンバイリストのボリュームの任意のボリュームが重複除去される前に重複除去される。このため、この例示的な実施形態は、ボリュームのうちの、より高い空間節約ポテンシャルを示すものを選択することによって優先リストを埋める。幾つかの例において、最も低い節約ポテンシャルを示すボリュームは、第３のリストに移すことができ、第３のリストはこれらのボリュームを重複除去の検討の対象から除外する。
【００１９】
同様のプロセスを、圧縮等の他の空間節約技術に用いることができる。例えば、幾つかの実施形態は、経時的に反復して圧縮のための空間節約値を計算し、その後、より高い空間節約ポテンシャルを有するボリュームが他のボリュームの前に圧縮されるように圧縮処理リソースをスケジューリングすることができる。
【００２０】
図１は、様々な実施形態を実施することができるストレージオペレーティングシステム（図示せず）を実装する例示的なネットワークストレージシステム１００の図である。記憶サーバー１０２は、ネットワーク１０３を通じて１組のクライアント１０１に結合される。ネットワーク１０３は、例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネット、ファイバーチャネルファブリック又はそのような相互接続の任意の組合せを含むことができる。サーバー１０２、プライマリストレージサブシステム１０４及びセカンダリストレージサブシステム１０６は、ファイバチャネル等の通信及びデータ転送の共通のインフラストラクチャに接続することができ、合わせてＳＡＮ又はＮＡＳを構成することができる。
【００２１】
クライアント１０１はそれぞれ、例えば、パーソナルコンピューター（ＰＣ）、従来のサーバコンピューター、ワークステーション、ハンドヘルドコンピューティング／通信デバイス又はタブレット等を含むことができる。図１は、３つのクライアント１０１ａ〜１０１ｃを示すが、実施形態の範囲は、任意の適切な数のクライアントを含むことができる。
【００２２】
幾つかの実施形態において、クライアント１０１のうちの１つ又は複数は、管理局としての機能を果たすことができる。そのようなクライアントは、ネットワークアドミニストレーターが、記憶サーバー１０２を構成し、プライマリストレージサブシステム１０４においてストレージをプロビジョニングし、バックアップのスケジューリング、ユーザーアクセス権の設定等の、記憶ネットワークに関連する他の管理機能を実行するのに用いられる管理アプリケーションソフトウェアを含むことができる。
【００２３】
記憶サーバー１０２は、プライマリストレージサブシステム１０４内でデータの記憶を管理する。記憶サーバー１０２は、クライアント１０１からの読み出し要求及び書き込み要求を処理する。ここで、これらの要求は、プライマリストレージサブシステム１０４に記憶されているか又は記憶されることになるデータを対象とする。プライマリストレージサブシステム１０４は、いかなる特定の記憶技術にも限定されず、現在知られているか後に開発される任意の記憶技術を用いることができる。例えば、プライマリストレージサブシステム１０４は、複数の不揮発性大容量記憶装置（図示せず）を有することができ、それらの不揮発性大容量記憶装置は、従来の磁気ディスク若しくは光ディスク若しくはテープドライブ、フラッシュメモリ等の不揮発性ソリッドステートメモリ、又はそれらの任意の組合せを含むことができる。１つの特定の例では、プライマリストレージサブシステム１０４は１つ又は複数の独立ディスクの冗長アレイ（ＲＡＩＤ）を含むことができる。この例において、プライマリストレージサブシステム１０４は、ここではプライマリボリューム１０５によって表される複数の仮想ボリュームを含む。
【００２４】
同様に、記憶サーバー１０２はセカンダリストレージサブシステム１０６においてバックアップ動作を処理する。セカンダリストレージサブシステム１０６は、いかなる特定の記憶技術にも限定されず、従来の磁気ディスク若しくは光ディスク若しくはテープドライブ、フラッシュメモリ等の不揮発性ソリッドステートメモリ、１つ若しくは複数のＲＡＩＤ、又はそれらの任意の組合せを用いることができ、セカンダリボリューム１０７は複数の仮想ボリュームを含むことができる。
【００２５】
この例では、記憶サーバー１０２はボリューム１０５及び／又はボリューム１０７おいて重複除去動作を提供する。特に、記憶サーバー１０２は空間節約管理部アプリケーション１１０を含み、この空間節約管理部アプリケーション１１０は、図２〜図４の方法に従ってデータを重複除去及び／又は圧縮する（又は任意の他の空間節約技術を用いる）ための命令を実行する。
【００２６】
記憶サーバー１０２は、任意の適切なプロトコル又は記憶環境構成によるデータアクセスを可能にすることができる。１つの例では、記憶サーバー１０２は、ＮＡＳ環境において従来から実行されているように、ファイルレベルデータアクセスサービスをクライアント１０１に提供する。別の例では、記憶サーバー１０２は、ＳＡＮ環境において従来から実行されているように、ブロックレベルデータアクセスサービスを提供する。また別の例において、記憶サーバー１０２はファイルレベル及びブロックレベルのデータアクセスサービスをクライアント１０１に提供する。
【００２７】
幾つかの例では、記憶サーバー１０２は分散型アーキテクチャを有する。例えば、幾つかの実施形態では、記憶サーバー１０２は物理的に別個のネットワークモジュール（例えば、「Ｎブレード」）及びデータモジュール（例えば、「Ｄブレード」）として設計することができ、それらは物理的相互接続を介して互いに通信する。分散型アーキテクチャを促進するために、空間節約管理部１１０の１つ又は複数の機能を、セカンダリストレージサブシステム１０６及び／又はプライマリストレージサブシステム１０４においてハードウェア及び／又はソフトウェアによって実施することができる。ストレージオペレーティングシステムはサーバー１０２上で実行され、空間節約管理部１１０を提供し、様々な実施形態において、ストレージサブシステム１０４及び１０６は、空間節約を達成するために、ストレージオペレーティングシステムと互換性がある専用のハードウェア及び／又はソフトウェアを備えることができる。
【００２８】
システム１００は例としてのみ示される。本明細書に示される特徴に従って用いるように他のタイプのハードウェア及びソフトウェア構成を適合させることができる。例えば、ネットワークベースであろうとなかろうと、複数のボリュームを有する任意のシステムにおいて様々な実施形態を実施することができる。
【００２９】
図２は、１つの実施形態に従って適合される例示的な方法２００の図である。方法２００を、図１の空間節約管理部１１０によって実行して、多数の記憶ボリュームを重複除去及び／又は圧縮することができる。図２は、空間節約管理部が、制御するためのボリューム（既存又は新規）を割り当てられる初期時点から空間節約プロセスにどのように取り組むことができるかを示すために提供される。図２は、他のボリュームが既に重複除去され、重複除去値を計算されている可能性を排除しない。
【００３０】
図２の例は、空間節約技術として重複除去に焦点を当てているが、実施形態の範囲が任意の適切な空間節約技術を含むことが理解される。例えば、幾つかの実施形態は圧縮を用いることができ、以下に説明される原理は重複除去と同様に圧縮にも当てはまる。
【００３１】
動作２０２において、空間節約管理部（この例では重複除去管理部）は、既存のボリュームのためのプロセスを開始する。例えば、既存のボリュームは、僅かではない量のデータが既に記憶されているボリュームとすることができる。
【００３２】
動作２０４において、重複除去管理部は新たなボリュームのためのプロセスを開始する。例えば、新たなボリュームは、データがほとんど又は全く記憶されていないボリュームとすることができる。既存のボリュームのためのプロセスを開始すること（動作２０２）と、新たなボリュームのためのプロセスを開始すること（動作２０４）との違いは、既存のボリュームが、フィンガープリンティング及び重複除去されるデータを既に有しているのに対し、新たなボリュームはフィンガープリンティング及び重複除去をスキップし、変更ログの作成（以下で更に説明される）に直接進むことができることである。
【００３３】
動作２０６において、重複除去管理部は既存のボリューム内のデータのフィンガープリントを生成する。上述したように、幾つかの実施形態は、データブロックと呼ばれる固定サイズの区画内のボリューム上にデータを保存することを含む。フィンガープリントを生成することの１つの例は、メッセージダイジェストアルゴリズム（ＭＤ５）等のアルゴリズムを用いてブロックをハッシュ処理し、元のデータブロックよりもビットサイズがはるかに小さいが、依然としてデータブロックの内容を示す数を生成することを含む。任意の適切なフィンガープリンティングアルゴリズムを様々な実施形態によって用いることができるので、ＭＤ５は例示にすぎない。
【００３４】
例えば、幾つかのフィンガープリンティングアルゴリズムは、ブロックのサイズ未満であるか又はブロックのサイズよりも大きいデータユニットについてフィンガープリントを生成することができる。実際に、幾つかのフィンガープリントアルゴリズムは、データブロック境界と異なるデータ区画に適応可能であるように可変長の機能を有する。さらに、幾つかの実施形態は強力なフィンガープリントを用い、異なるデータブロックが同じフィンガープリントを有する尤度が非常に低くなるようにすることができる。他の実施形態は、より弱いフィンガープリントを生成するのに必要な処理はより少なくすることができるというトレードオフにより、２つの異なるデータブロックが同じフィンガープリントを有するリスクが僅かに高くなることを許容して、より弱いフィンガープリントを用いることができる。実施形態の範囲は、フィンガープリントを生成するためのいかなる特定のプロセスにも限定されない。
【００３５】
さらに、動作２０６は、記憶ボリュームの基礎を成す物理的な記憶媒体からデータを読み出すことと、次にデータが読み出された後にそのデータからフィンガープリントを生成することとを含むことができる。上述したように、幾つかのシステムにおいて、物理記憶媒体からデータを読み出すことは処理集中型である場合がある。動作２０６は、フィンガープリントをフィンガープリントデータベースに保存することも含むことができる。
【００３６】
動作２０８において、重複除去管理部は、フィンガープリントデータベース内のフィンガープリントを用いて既存のボリュームにおいて重複除去を実行する。フィンガープリントは、基礎を成すデータのプロキシとして用いられ、互いに比較されて、重複フィンガープリントが特定される。重複フィンガープリントを特定するために、重複除去管理部は、フィンガープリントデータベースをフィンガープリントの昇順又は降順でソートすることができる。例えば、各フィンガープリントは英数字のハッシュ値（又はブールハッシュ値又は任意の他の適切なハッシュ値）を含むことができ、重複除去エンジンはハッシュ値によってソートすることができる。重複は同一のハッシュによって示され、同一のハッシュはソート後に隣接している。重複フィンガープリントが見つかった場合、重複除去管理部はボリュームから実際のデータブロックを取り出し、データブロックのバイトごとの比較を実行する。バイトごとの比較によってデータブロックが重複であることが確認された場合、重複除去エンジンは、重複データブロックの１つを除くそれぞれを、単一の保持されるコピーへのポインターと置き換える。幾つかの例において、フィンガープリントは十分に強力であるので、重複が疑わしいブロックのバイトごとの比較を省くことができ、それによって、フィンガープリントによって重複であると示されるブロックは、更なる確認なしで重複除去することができる。
【００３７】
動作２０８は、既存のボリュームの重複除去値を計算することも含むことができる。例えば、重複除去プロセスが１テラバイト（ＴＢ）のボリュームから２００ギガバイト（ＧＢ）を取り除く場合、節約は最初の１ＴＢの２０パーセントとすることができる。
【００３８】
動作２１０において、重複除去エンジンは既存のボリュームをスタンバイリストに割り当て、また、新たなボリュームをスタンバイリストに割り当てる。上述したように、方法２００は既に進行中の追加のボリュームを排除せず、他のボリュームを追加でスタンバイリストに割り当てることができる。また、他のボリュームは優先リストに既に割り当てられている場合もある（以下で更に説明する）。
【００３９】
重複除去管理部は、スタンバイリストにおいてボリュームの変更ログの作成を実行する。この例では、変更ログの作成は、特定のボリュームに記憶されるデータのフィンガープリントを、そのデータがそのボリュームに書き込まれるときに作成することを含む。変更ログは、最も近時の重複除去プロセス以降のボリュームに対するデータ変更を表す。前回の重複除去プロセス以降、データがボリュームに書き込まれるにつれ、ボリュームの変更ログは増大する。次の重複除去プロセス中、重複除去管理部は変更ログ内のフィンガープリントを変更ログ内の他のフィンガープリントと比較して、重複データが加えられたか否かを判断する。
【００４０】
重複除去管理部は変更ログをフィンガープリントデータベースと変更することもできる。上記で説明したように、重複フィンガープリントが見つかると、基礎を成すデータブロックは重複であると確認される場合もされない場合もあり、その後、単一の保持されるコピーのみが保たれ、残りのブロックがその単一の保持されるブロックへの参照（例えばポインター）と置き換えられる。重複フィンガープリントは削除され、変更ログの残りのフィンガープリントがフィンガープリントデータベースに加えられ、このためフィンガープリントデータベースは各重複除去動作とともに成長する。同様に、変更ログは重複除去動作間で成長するが、重複除去動作の完了時にゼロ又はほぼゼロに戻る。
【００４１】
動作２１０ａは、スタンバイリスト上のボリュームごとに重複除去ポテンシャルを計算することを含む。所与のボリュームの各重複除去動作により、そのボリュームの重複除去値は、最も近時の重複除去動作によって達成される空間節約を計上するように更新される。多くの例において重複除去値のこの反復計算は、古い空間節約及び新たな空間節約についての加重平均を用いることを含む。上記の１つの例では、最初の１ＴＢの２０パーセントの重複除去値が計算された。この例を続けると、後続の重複除去動作の結果として、１００ＧＢのデータの１０パーセントの空間節約がもたらされる場合、計算は１０パーセントの節約を重み付けするよりも１０倍多く２０パーセントの節約を計算において重み付けすることができる（１ＴＢは１００ＧＢの１０倍であるため）。結果として得られる重複除去値は、１．１ＴＢに対し１９．１％である。重複除去値は、各重複除去動作についてボリュームごとに反復的に計算される。
【００４２】
１つの例において、重複除去管理部は、節約ポテンシャルを更新するときに、その節約ポテンシャルが適用するユーザーデータ量を記録する。後続の動作の後、重複除去管理部は古い節約ポテンシャルをその量により重み付けし、その動作によって処理されるデータ量によって重み付けされた新たな節約ポテンシャルを加える。式（１）は節約ポテンシャルを反復的に計算する１つの例示的な技法を提供する。
式（１）  新たなＳＰ＝（古いＳＰ×古いボリュームサイズ）＋（動作ＳＰ×動作によって処理されるデータ）／（古いボリュームサイズ＋動作によって処理されるデータ）
式中、ＳＰは節約ポテンシャルであり、新たなボリュームサイズはボリューム内のユーザーデータ量に等しい。空間節約管理部は、任意の適切なデータ構造を用いてそのような情報を記憶することができる。
【００４３】
ボリュームのそれぞれが、動作時に継続的にデータを記憶し、それに従って自身の変更ログを成長させる。１つの例において、変更ログが所定の容量閾値（例えば２０パーセントフル）に到達すると、重複除去管理部はその特定のボリュームに対する重複除去要求を重複除去キューに入れる。動作２１０ｂにおいて以下で説明するように、重複除去キューにおける要求は、必ずしもそれらが入力される順序で完了しなくてもよい。代わりに、スタンバイログ内のボリュームについて上記で説明した重複除去動作は、所与のボリュームの重複除去ポテンシャルに従って配分される。
【００４４】
動作２１０ｂにおいて、重複除去管理部は重複除去ポテンシャルに従ってスタンバイリストボリューム間の重複除去をスケジューリングする。例えば、スタンバイリストボリュームを重複除去する前に、重複除去管理部は重複除去キュー内の要求を用いて各ボリュームの重複除去値を調べる。より高い重複除去値を有するスタンバイリストボリュームが、より低い重複除去値を有する他のスタンバイリストボリュームの前に重複除去のために選択される。一方、優先リスト上のボリュームは、スタンバイリスト上のボリュームの前に選択される。これについては図３及び図４に関して以下でより詳細に説明する。
【００４５】
動作２１２は、スタンバイリストから優先リストへ１つ又は複数のボリュームを動かすことを含む。このため、１つの態様において、幾つかのボリュームが、重複除去ポテンシャル及び利用可能なシステムリソースに従って１つのリストから別のリストに経時的に移される。この例では、スタンバイリストボリュームに対する要求の前に優先リストボリュームに対する要求が処理されるので、動作２１２はそれ自体、重複除去ポテンシャルによる重複除去動作のスケジューリング方法とみなすことができる。
【００４６】
方法２００は、ボリュームの重複除去がそのボリュームの実際のデータ変更の速さに遅れずに対応できるか否かをチェックする。ボリュームの重複除去が遅れずに対応できる場合、ボリュームは優先リストの候補とすることができる。例えば、ボリュームは、その変更ログが所定の期間内にオーバーフローしていない場合、かつシステムがそのボリューム（及び優先リスト内の任意の他のボリューム）を重複除去することができることを適時に確保するのに十分な利用可能なリソースを含む場合に、スタンバイリストから優先リストに移すことができる。上記の例では、重複除去管理部は、ボリュームの変更ログが所定の容量閾値（例えば２０パーセントフル）に達したときに、重複除去キュー内に重複除去要求を配置する。要求が重複除去キュー内に加わり、完了を待機しているとき、対応するボリュームの変更ログが２０パーセントから、場合によっては１００パーセントにまで増加し、これはオーバーフローしていると言われる。オーバーフローした変更ログは、そのボリュームのための次の重複除去動作においてクリアされる。変更ログオーバーフローは通常、変更ログがオーバーフローするときに、重複除去管理部が幾つかの重複の検出に失敗する場合があり、幾つかのフィンガープリントをフィンガープリントデータベースに追加するのに失敗する場合があるので、望ましくない場合がある。このため、実現可能な節約ポテンシャルを有するボリュームについて、変更ログオーバーフローは、提供される節約を低減する場合がある。重複除去管理部は、変更ログがオーバーフローしたときに、及びその後周期的に、重複除去管理部に送信される通知を用いること等によって任意の適切な方法で変更ログオーバーフローを通知されることができる。
【００４７】
より高い重複除去ポテンシャルを有するボリュームは、より頻繁に重複除去され、重複除去キューにおいてより早く動作を受け、したがって変更ログオーバーフローを有する可能性がより低いと予期することができる。したがって、幾つかの実施形態において、変更ログがオーバーフローしてからの時間を、最も良好な節約ポテンシャルを有するボリュームを特定する方法として用いることができる。
【００４８】
しかしながら、実施形態の範囲は、優先リストに移すボリュームを特定するためのいかなる特定の技法にも限定されない。例えば、他の実施形態は、ボリュームを優先リストに移すための判断基準を、重複除去値のみに基づかせることもできるし、所定の時間内で実行される重複除去数に基づかせることもできるし、任意の他の適切なメトリックに基づかせることもできる。
【００４９】
動作２１２は、スタンバイリストボリュームのうちの幾つかを、スタンバイリストから、ボリュームが重複除去について検討されない第３のリストに移すことも含むことができる。最も少ない量の重複除去節約ポテンシャルを有するボリュームを第３のリストに動かすことができる。１つの例示的な実施形態では、所定の時間にわたる変更ログオーバーフローを有する残されたボリュームを第３のリストに移すことができるが、実施形態の範囲は、ボリュームが第３のリストに移されるべきであると判断する任意の適切な技法を含むことができる。
【００５０】
様々な実施形態が方法２００の動作を追加、省略、再構成又は変更することができる。例えば、幾つかの実施形態は、異なる既存のボリューム又は異なる新たなボリュームが重複除去管理部に提示されるたびに動作２０２、２０４、２０６、２０８を実行することを含む。さらに、幾つかの実施形態は、場合によって、例えばシステムリソースが減少したときに、ボリュームを優先リストからスタンバイリストに移すことも含むことができる。このため、幾つかの実施形態は、ボリュームをスタンバイリストから優先リストに移し、場合によっては再びスタンバイリストに戻すことによって、システムリソースの変動する利用可能性に適応する連続した動作を提供する。そのような実施形態は、例えば、最も低い重複除去ポテンシャルを有する１つ又は複数の優先リストボリュームを選択することを含む、スタンバイリストに移す優先リストボリュームを選択する任意の適切な技法を用いることができる。スタンバイリストに戻される優先リストボリューム数は、例えば、システムリソースが変化した量に基づくことができる。
【００５１】
システムリソースの変化は、システムにおける複数の異なる変化を指す場合がある。システムリソースの変化の１つのタイプは、システムに更なるディスク及び／又はプロセッサを追加することを含む。そのような追加によってシステムは更なる処理を行うことが可能になるので、これはシステムリソースの増加とみなすことができる。同様に、ディスク又はプロセッサの減少はシステムリソースの減少とみなすことができる。リソースの別の変化は、ユーザー作業負荷が増加又は減少し、この結果、残りのシステムリソースの減少又は増加が生じるときを含む。
【００５２】
フィンガープリンティングは重複除去に固有であり、圧縮等の他の技術はフィンガープリンティングを行わずに、代わりに全ての又はほぼ全ての追加データを圧縮することができる。さらに、圧縮を用いる例示的なシステムにおいて、システムは圧縮のための空間節約ポテンシャルを計算し、計算された空間節約ポテンシャルに従って圧縮処理リソースを配分することができる。
【００５３】
図３は、１つの実施形態に従って適合される、多数のボリューム間で重複除去のためのリソースを配分する例示的な方法３００の図である。ここでもまた、図３は重複除去に焦点を当てているが、図３の原理は他の空間節約技術にも同様に当てはまることが理解される。方法３００は、記憶サーバーにおける空間節約管理部によって、又はストレージシステムにおける任意の他の場所で実行することができる。
【００５４】
動作３０２において、重複除去管理部は重複除去要求を生成し、この要求を重複除去キューに配置する。上記の例において、重複除去管理部は、ボリュームの変更ログが２０パーセントフルに達すると、重複除去キュー内にそのボリュームに対する要求を配置する。しかしながら、実施形態の範囲はその技法に制限されない。様々な実施形態が、任意の判断基準又は判断基準の組み合わせを用いて、重複除去要求を生成するときを判断することができる。
【００５５】
動作３０４において、要求が優先リスト内のボリュームに対するものであるか否かが識別される。要求が優先リスト内のボリュームに対するものである場合、動作３０６において、重複除去管理部は他のボリュームの前にそのボリュームに対し重複除去をスケジューリングする。動作３０６は、スタンバイリスト上のボリュームに対する別の要求よりも高い優先度をその要求に割り当てることを含むことができる。
【００５６】
要求が優先リストにないボリュームに対するものである場合、動作３０８において、重複除去管理部は、スタンバイリスト内の重複除去節約ポテンシャルに基づいてボリュームの重複除去をスケジューリングする。換言すれば、スタンバイリスト内の他のボリュームがより高いポテンシャルを有し、待ち状態の重複除去要求を有する場合、動作３０２の要求は、他の要求の後に処理されるように待機することができる。さらに、要求は、処理されるとしても、任意の優先リストボリュームが処理された後に処理される。
【００５７】
上記で動作３０８において、少なくともスタンバイリスト内の重複除去リソースを、対応するボリュームの重複除去値に従って配分することができることが留意された。しかしながら、様々な実施形態は、単に重複除去値によってボリュームをランク付けするよりも柔軟性が高く高性能の配分に取り組むことができる。１つの例において、２つ以上のボリュームが類似した重複除去値（例えばそれぞれ２５パーセント及び３０パーセント）を有し、それらの重複除去節約ポテンシャルも類似していることが仮定される。したがって、そのような例示的な実施形態は、いずれのボリュームが最大の変更ログを有するかに従って、これらの２つのボリューム間の関係において重複除去リソースを配分することができる。このようにして、重複除去管理部は、これらのボリュームのうちの１つが変更ログオーバーフローを有する機会を最小にするように機能する。重複除去プロセス内の効率を更に促進するために、幾つかの実施形態において用いるように他の変更及び追加を適合させることができる。
【００５８】
図４は、一実施形態に従って、ボリューム間で空間節約リソースを配分するように適合された、例示的な方法４００の図である。図３はより概念的に示されているが、図４は、空間節約管理部が内部に多数のエントリを有する重複除去キューをトラバースするための特定の技法を説明するように意図される。したがって、図４は、より有望なボリュームにリソースを最初に配分する上記で与えられた原理に従って、キューから重複除去要求を選択する少なくとも１つの方法を示している。図４の原理は、圧縮等の他の空間節約技術を実施するシステムに適用してもよい。
【００５９】
動作４０２において、重複除去エンジンは重複除去要求キューにアクセスする。幾つかの実施形態では、重複除去動作は、或る特定の時間帯にのみ実行することができ及び／又は任意の所与の時点に実行することができる数を制限することができる。したがって、動作４０２は重複除去動作が開始する或る所定の時点又はイベント時に実行することができる。
【００６０】
動作４０４において、重複除去エンジンは、優先リスト内のボリュームに対する重複除去要求が存在するか否かキューを検査する。優先リストボリュームに対する要求が存在する場合、重複除去エンジンは動作４０６においてボリュームを重複除去する。場合によっては、キュー内の優先リストボリュームに対し、２つ以上の要求が存在する場合がある。様々な実施形態は、任意の適切な技法を用いて、優先リスト要求のうちのいずれを最初に完了させるかを判断することができる。例えば、重複除去エンジンは、要求が受信される順序、変更ログサイズ、重複除去値等の任意の数のメトリックに基づいて優先リストボリューム間で選択することができる。
【００６１】
優先リストボリュームに対する重複除去要求が存在しない場合、動作４０８において、重複除去エンジンは、スタンバイリスト内のボリュームに対する要求が存在するか否かについてキューを調べる。スタンバイリストボリュームに対する要求が存在しない場合、重複除去エンジンは動作４０２に戻ることもできるし、後の時点まで重複除去プロセスを単に終了することもできる。
【００６２】
スタンバイリストボリュームに対する少なくとも１つの重複除去要求が存在すると判断される場合、重複除去エンジンは、最も高い重複除去ポテンシャルを有するボリュームに対応する要求を選択する。
【００６３】
様々な実施形態は、図４の１つ又は複数の動作を追加、省略、再構成又は変更することができる。例えば、方法４００は、連続して、又は或る特定の時点にのみ実行することができ、任意のイベントにおいて、重複除去動作が終わる前に複数回ループすることができる。実際に、幾つかのシステムは、任意の時間帯中に重複除去動作を可能にするが、任意の一時点における重複除去動作数を８に限定する。このように、幾つかの実施形態は、システム内で同時に実行される複数の重複除去動作を含むことができる。当然ながら、それは一例にすぎず、様々な実施形態において、重複除去動作の時間及び／又は多様性を制限する任意の適切な技法を実施することができる。
【００６４】
説明される実施形態は、他の技法を上回る１つ又は複数の利点を含むことができる。例えば、様々な実施形態は、空間節約ポテンシャルを計算する技法を提供し、それによって複数のボリューム間で選択するための知識をもたらす。さらに、様々な実施形態は、実質的な空間節約をもたらす尤度がより高いボリュームに対する空間節約処理を実行することを優先する。そのような優先付けは、空間節約のポテンシャルがより低いボリュームを犠牲にして行われる。したがって、そのような実施形態は、リソースがより効率的かつ効果的に用いられるところにリソースを誘導する。対照的に、幾つかの従来の重複除去システムは、単に重複除去要求が受信される順序に従って重複除去を実行する場合があり、リソースが利用可能でないとき、ボリュームのうちの幾つかは重複除去されない場合がある。しかしながら、重複除去されないボリュームのうちの幾つかは、節約に対する最大のポテンシャルを有するボリュームである場合がある。
【００６５】
様々な実施形態は、ストレージシステムに効率性を加えるのみでなく、信頼性も加えることができる。例えば、空間節約アプリケーションを購入する顧客は、システムにおける或る特定の量の空間節約に頼ることができることを予期する場合がある。しかしながら、従来のストレージシステムでは、最も高い重複除去ポテンシャルを有するボリュームが実際に重複除去されるか否かに依拠して、予期される空間節約が得られる場合も得られない場合もある。本開示の幾つかの実施形態は、より高い空間節約ポテンシャルを有するボリュームがまず重複除去され、それによってより一貫した空間節約が得られることを確実にする。顧客は、解放された記憶空間を用いるとき、空間節約から即座に利益を受ける。顧客は、プロビジョニング決定を行うときに一貫した節約に頼ることが可能であることによって、長期にわたって利益を受けることもできる。上記の例では、優先リストは、固定のボリューム組に優先度を与えることによって長期の利益が実現されることを可能にする。
【００６６】
コンピューター実行可能命令により実施されるとき、本開示の実施形態の様々な要素は、本質的に、そのような様々な要素の動作を定義するソフトウェアコードである。実行可能命令又はソフトウェアコードは、有形読み出し可能媒体（例えば、ハードドライブ媒体、光媒体、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、テープ媒体、カートリッジ媒体、フラッシュメモリ、ＲＯＭ、メモリスティック、ネットワークストレージ装置等）から取得することができる。実際に、読み出し可能媒体は、情報を記憶することができる任意の媒体を含むことができる。記憶サーバー（例えば図１のサーバー１０２）における１つ又は複数のプロセッサ、ストレージサブシステム（例えばサブシステム１０４及び１０６）、又はネットワークストレージシステムにおける他の部分は、そのような命令を実行して、方法２００、３００、４００（図２〜図４）の動作のうちの１つ又は複数を提供することができる。
【００６７】
上記は、当業者が本開示の態様をより良好に理解することができるように幾つかの実施形態の特徴を概説している。当業者であれば、本明細書において紹介した実施形態の同じ目的を実行し及び／又は同じ利点を達成するために、他の処理及び構造を設計又は変更する基礎として本開示を容易に用いることができることを理解すべきである。また、当業者であれば、そのような等価な構造は、本開示の趣旨及び範囲から逸脱するものでなく、本開示の趣旨及び範囲から逸脱することなく本明細書において様々な変更、置換及び変形を行うことができることを理解すべきである。
【図１】
2015517147.tif 000003
【図２】
2015517147.tif 000004
【図３】
2015517147.tif 000005
【図４】
2015517147.tif 000006
【国際調査報告】
2015517147.tif 000007