(57)【要約】  圧縮を用いて部分的にデータコンテナを複製するための方法及びシステムを提供する。ストレージ・オペレーティングシステムは、非可変圧縮グループサイズを用いて圧縮された複数の圧縮されたブロックを、複製すべき一部のソース・データコンテナが含むかどうかを判定する。前記オペレーティングシステムは、前記非可変圧縮グループサイズを用いて、前記複数の圧縮されたブロックを複製する。そして、前記非可変圧縮グループサイズ内ではない前記データコンテナの複数のブロックを解凍する。そして、前記複数の圧縮されたブロックと、前記非可変圧縮グループサイズ内ではない前記複数のブロックとが、前記ソース・データコンテナの部分的に複製されたコピーとして記憶される。
2014526749.tif 000002
【特許請求の範囲】
【請求項１】
非可変圧縮グループサイズ内である複数のブロックと前記非可変圧縮グループサイズ内ではないブロックとを有するデータコンテナを複製するための、機械で実施される方法であり、以下のステップを含む該方法:
前記非可変圧縮グループサイズを用いて圧縮された複数の圧縮ブロックを決定するステップ; 
前記非可変圧縮グループサイズを用いて前記複数の圧縮されたブロックを複製するステップ;
前記非可変圧縮グループサイズ内ではない前記データコンテナの複数のブロックを解凍するステップ;及び
前記複数の圧縮されたブロックと前記非可変圧縮グループサイズ内ではない前記複数のブロックとを、部分的に複製された一部の前記データコンテナとして記憶するステップ。
【請求項２】
請求項１に記載の方法であって、前記複製された複数の圧縮されたブロックとともに記憶される前に、解凍された前記複数のブロックが圧縮される該方法。
【請求項３】
請求項１に記載の方法であって、プロセッサが実行可能なストレージ・オペレーティングシステムによって、前記データコンテナが階層構造で記憶される該方法。
【請求項４】
請求項３に記載の方法であって、
前記階層構造は、前記データコンテナを同定する第一データ構造と、前記第一データ構造に関連する第二データ構造とを含み、
前記第二データ構造は、第三データ構造に対するアドレス・ポインタを記憶し、
前記第三データ構造は、ストレージ・デバイスの物理的記憶スペースに関連するブロック番号を記憶する該方法。
【請求項５】
請求項１に記載の方法であって、前記非可変圧縮グループサイズが少なくとも８つのブロックである該方法。
【請求項６】
データコンテナを複製するための機械で実施される方法であって、以下のステップを含む該方法：
ソース・データコンテナの一部についての複製コピーを生成するために、前記ソース・データコンテナをスキャンするステップであり、前記ソース・データコンテナの前記一部が、非可変圧縮グループサイズを用いて圧縮された複数のブロックと、前記非可変圧縮グループサイズ内ではない少なくとも１つのブロックとを含む該ステップ;
前記ソース・データコンテナから前記少なくとも１つのブロックを読み出すステップ;及び
前記少なくとも１つのブロックと、前記非可変圧縮グループサイズを用いて圧縮された前記複数のブロックとを有する前記ソース・データコンテナの一部の前記複製コピーを生成するステップ。
【請求項７】
請求項６に記載の方法であって、前記複製された複数の圧縮されたブロックとともに記憶される前に、解凍された前記複数のブロックが圧縮される該方法。
【請求項８】
請求項６に記載の方法であって、プロセッサが実行可能なストレージ・オペレーティングシステムによって、前記ソース・データコンテナが階層構造で記憶される該方法。
【請求項９】
請求項８に記載の方法であって、
前記階層構造は、前記ソース・データコンテナを同定する第一データ構造と、前記第一データ構造に関連する第二データ構造とを含み、
前記第二データ構造は、第三データ構造に対するアドレス・ポインタを記憶し、
前記第三データ構造は、ストレージ・デバイスの物理的記憶スペースに関連するブロック番号を記憶する該方法。
【請求項１０】
請求項６に記載の方法であって、前記非可変圧縮グループサイズは少なくとも８つのブロックである該方法。
【請求項１１】
システムであって、
前記システムは、第一のコンピューティング・システムを含み、
前記第一のコンピューティング・システムは、ストレージ・システムとのインターフェースとなり、
前記ストレージ・システムは、複数のデータコンテナをストレージ・デバイスで管理するための指示を実行するハードウェア・プロセッサを含み；
前記プロセッサは、ソース・データコンテナの一部の複製コピーを生成するために、前記ソース・データコンテナをスキャンし、
前記一部の前記ソース・データコンテナは、非可変圧縮グループサイズを用いて圧縮された複数のブロックと、前記非可変圧縮グループサイズ内ではない少なくとも１つのブロックとを含み、
前記プロセッサは、前記ソース・データコンテナから前記少なくとも１つのブロックを読み出し、及び、
前記プロセッサは、前記少なくとも１つのブロックと、前記非可変圧縮グループサイズを用いて圧縮された前記複数のブロックとを有する前記データコンテナの一部の前記複製コピーを生成する、該システム。
【請求項１２】
請求項１１に記載のシステムであって、前記複製された複数の圧縮されたブロックとともに記憶される前に、解凍された前記複数のブロックが圧縮される、該システム。
【請求項１３】
請求項１１に記載のシステムであって、プロセッサが実行可能なストレージ・オペレーティングシステムによって、前記ソース・データコンテナが階層構造で記憶される、該システム。
【請求項１４】
請求項１３に記載のシステムであって、
前記階層構造は、前記ソース・データコンテナを同定する第一データ構造と、前記第一データ構造に関連する第二データ構造とを含み、
前記第二データ構造は、第三データ構造に対するアドレス・ポインタを記憶し、
前記第三データ構造は、ストレージ・デバイスの物理的記憶スペースに関連するブロック番号を記憶する、該システム。
【請求項１５】
請求項１３に記載のシステムであって、前記非可変圧縮グループサイズが少なくとも８つのブロックである、該システム。
【請求項１６】
コンピュータ・プログラム製品であって、
前記製品は、コンピュータが使用可能な記憶媒体を含み、
前記媒体は、該媒体内で具現化されるコンピュータが読み取り可能な指示を含み、
前記コンピュータが読み取り可能な指示は、非可変圧縮グループサイズ内である複数のブロックと前記非可変圧縮グループサイズ内ではないブロックとを有するデータコンテナを複製するためのものであり、 
前記コンピュータが読み取り可能な指示は、以下を含む該製品：
データコンテナの一部を複製するために前記非可変圧縮グループサイズを用いて圧縮された複数の圧縮ブロックを決定するための指示；
前記非可変圧縮グループサイズを用いて前記複数の圧縮されたブロックを複製するための指示;
前記非可変圧縮グループサイズ内ではない前記データコンテナの複数のブロックを解凍するための指示;及び
前記複数の圧縮されたブロックと前記非可変圧縮グループサイズ内ではない前記複数のブロックとを、部分的に複製された一部の前記データコンテナとして記憶するための指示。
【請求項１７】
請求項１６に記載のコンピュータ・プログラム製品であって、前記複製された複数の圧縮されたブロックとともに記憶される前に、解凍された前記複数のブロックが圧縮される該製品。
【請求項１８】
請求項１６に記載のコンピュータ・プログラム製品であって、プロセッサが実行可能なストレージ・オペレーティングシステムによって、前記データコンテナが階層構造で記憶される該製品。
【請求項１９】
請求項１８に記載のコンピュータ・プログラム製品であって、
前記階層構造は、前記データコンテナを同定する第一データ構造と、前記第一データ構造に関連する第二データ構造とを含み、
前記第二データ構造は、第三データ構造に対するアドレス・ポインタを記憶し、
前記第三データ構造は、ストレージ・デバイスの物理的記憶スペースに関連するブロック番号を記憶する該製品。
【請求項２０】
請求項１６に記載のコンピュータ・プログラム製品であって、前記非可変圧縮グループサイズが少なくとも８つのブロックである該製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はストレージ・システムに関する。
【背景技術】
【０００２】
通常、ストレージ・システムは、１以上のストレージ・デバイスを含む。ここで、望むままに、情報を入力することができ、そして、そこから情報を得ることができる。前記ストレージ・システムは、通常、ストレージ・オペレーティングシステムを含む。該オペレーティングシステムは前記ストレージシステムを機能的に組織し、とりわけ、前記システムが実施するストレージ・サービスのサポートにおけるストレージ操作を引き起こすことにより組織する。前記ストレージ・システムは、種々のストレージ・アーキテクチャに従い、実装することができる。該アーキテクチャとしては、以下のものが含まれるがこれらに限定されない：ネットワークに取り付けられたストレージ環境、ストレージ・エリア・ネットワーク、及びユーザー又はホスト・コンピュータに直接取り付けられたストレージ・デバイス。情報のストレージは、ストレージ・スペースの全体的な論理的配置を規定する物理的ディスクの１以上のストレージ「ボリューム」として実装されることが好ましい。
【０００３】
ストレージ・システムは、通常、ストレージ・アレイに情報を記憶する。そして、災害復旧又は他の理由から、レプリケーションし、アーカイブ化することができる。前記レプリケーション・プロセスは「バックアップ」操作とよく言われる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ストレージ・デバイスに記憶された情報を圧縮するために、前記ストレージ・システムは、通常、非可変圧縮サイズを用いる。このアプローチは、データコンテナ全体を複製しようとするときには有効である。もしも、前記データコンテナが部分的に複製される場合、前記非可変圧縮グループサイズはさほど効果的ではない可能性がある。その理由としては、複製される前記データコンテナの一部内にあるすべてのデータブロックを解凍する必要があるからであり、前記データコンテナの前記一部を圧縮するために非可変圧縮グループサイズを用いるからである。圧縮を用いた部分的複製を改良するための努力は現在も続けられている。
【課題を解決するための手段】
【０００５】
概要
一実施形態において、圧縮を用いて部分的にデータコンテナを複製するための方法及びシステムを提供する。ストレージ・オペレーティングシステムは、非可変圧縮グループサイズを用いて圧縮された複数の圧縮されたブロックを、複製すべき一部のソース・データコンテナが含むかどうかを判定する。前記オペレーティングシステムは、前記非可変圧縮グループサイズを用いて、前記複数の圧縮されたブロックを複製する。また、前記非可変圧縮グループサイズ内ではない前記データコンテナの複数のブロックを解凍する。そして、前記複数の圧縮されたブロックと、前記非可変圧縮グループサイズ内ではない前記複数のブロックとが、前記ソース・データコンテナの部分的に複製されたコピーとして記憶される。
【０００６】
別の実施形態では、非可変圧縮グループサイズ内である複数のブロックと前記非可変圧縮グループサイズ内ではないブロックとを有するデータコンテナを複製するための、機械で実施される方法を提供する。
前記方法は、以下のステップを含む：
前記非可変圧縮グループサイズを用いて圧縮される複数の圧縮ブロックを決定するステップ;
前記非可変圧縮グループサイズを用いて前記複数の圧縮されたブロックを複製するステップ;
前記非可変圧縮グループサイズ内ではない前記データコンテナの複数のブロックを解凍するステップ;及び
前記複数の圧縮されたブロックと前記非可変圧縮グループサイズ内ではない前記複数のブロックとを、部分的に複製された一部の前記データコンテナとして記憶するステップ。
【０００７】
更に別の実施形態において、データコンテナを複製するための方法であって、機械で実施される方法を提供する。
前記方法は以下のステップを含む：
ソース・データコンテナの一部についての複製コピーを生成するために、前記ソース・データコンテナをスキャンするステップ。ここで、前記ソース・データコンテナの前記一部が、非可変圧縮グループサイズを用いて圧縮された複数のブロックと、前記非可変圧縮グループサイズ内ではない少なくとも１つのブロックとを含む。
【０００８】
前記方法は、更に以下のステップを含む：
前記ソース・データコンテナから前記少なくとも１つのブロックを読み出すステップ;及び
前記少なくとも１つのブロックと、前記非可変圧縮グループサイズを用いて圧縮された前記複数のブロックとを有する前記ソース・データコンテナの一部の前記複製コピーを生成するステップ。
【０００９】
別の実施形態では、あるシステムを提供する。前記システムは、第一のコンピューティング・システムを含み、
前記第一のコンピューティング・システムは、ストレージ・システムとのインターフェースとなり、
前記ストレージ・システムは、複数のデータコンテナをストレージ・デバイスで管理するための指示を実行するハードウェア・プロセッサを含む。
前記プロセッサは、ソース・データコンテナの一部の複製コピーを生成するために、前記ソース・データコンテナをスキャンし、
前記一部の前記ソース・データコンテナは、非可変圧縮グループサイズを用いて圧縮された複数のブロックと、少なくとも１つの前記非可変圧縮グループサイズ内ではないブロックとを含み、
前記プロセッサは、前記ソース・データコンテナから前記少なくとも１つのブロックを読み出し、及び、
前記プロセッサは、前記少なくとも１つのブロックと、前記非可変圧縮グループサイズを用いて圧縮された前記複数のブロックとを有する前記データコンテナの一部の前記複製コピーを生成する。
【００１０】
更に別の実施形態において、コンピュータ・プログラム製品を提供する。前記製品は、コンピュータが使用可能な記憶媒体を含み、
前記媒体は、該媒体上で具現化されるコンピュータが読み取り可能な指示を含み、
前記コンピュータが読み取り可能な指示は、非可変圧縮グループサイズ内である複数のブロックと前記非可変圧縮グループサイズ内ではないブロックとを有するデータコンテナを複製するために前記媒体中で実行される。
前記コンピュータが読み取り可能な指示は、以下を含む：
データコンテナの一部を複製するために前記非可変圧縮グループサイズを用いて圧縮された複数の圧縮ブロックを決定するための指示；
前記非可変圧縮グループサイズを用いて前記複数の圧縮されたブロックを複製するための指示；
前記非可変圧縮グループサイズ内ではない前記データコンテナの複数のブロックを解凍するための指示;及び
前記複数の圧縮されたブロックと前記非可変圧縮グループサイズ内ではない前記複数のブロックとを、部分的に複製された一部の前記データコンテナとして記憶するための指示。
【００１１】
本明細書に記載の実施形態は、いくつかの利点を有する。なぜならば、ユーザーは部分的複製と圧縮の両方の利点を享受できるからである。
【００１２】
以上、本開示の性質を端的に理解できるように概要の説明を行った。本開示については、以下、添付した図面と関連して、本開示の様々な実施形態の詳細な説明を参照することにより、より完全に理解することができる。
【００１３】
上記特徴及び他の特徴について、以下説明を行う。該説明の際には、様々な実施形態の図面に言及しながら行う。図面においては、同一の構成要素についいては、同一の参照番号を有する。例示された実施形態は、あくまで例示することを意図しており、本開示内容を限定するものではない。図面は、以下の図を含む。
【図面の簡単な説明】
【００１４】
【図１】本明細書に記載の実施形態を用いたシステムのブロック図を示す。
【図２】一実施形態に従って用いたストレージ・オペレーティングシステムの例を示す。
【図３】データコンテナのためのメタデータを記憶するための例を示す
【図４Ａ】一実施形態に従ったデータコンテナのためのツリー構造を示す。
【図４Ｂ】図４Ａのデータコンテナの複製の例を示す。
【図４Ｃ】ソース・データコンテナ、及び該ソース・データコンテナの部分的複製の例を示す。
【図４Ｄ】圧縮されたデータコンテナを示す。
【図４Ｅ】一実施形態にかかるプロセスフロー図を示す。
【図５】一実施形態に従って使用される処理システムのブロック図を示す。
【発明を実施するための形態】
【００１５】
詳細な説明
事前の説明として、用語「構成要素」（コンポーネント）、「モジュール」、「システム」などの本開示で用いる用語は、コンピュータに関連するエントリについて言及することを意図したものであり、 プログラム制御可能な指示を実行する汎用目的プロセッサ、ハードウェア、ファームウェア及びこれらの組み合わせのいずれかをさす。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能なもの、実行スレッド、プログラム及び／又はコンピュータであってもよいがこれらに限定されない。
【００１６】
例示的な意味合いで、サーバー上で実行される アプリケーション、及び該サーバーの両方もコンポーネントとなりうる。１以上のコンポーネントはプロセス及び／又は実行スレッド内に存在してもよい。また、コンポーネントは、１台のコンピュータ上に局所化してもよいし、及び／又は２以上のコンピュータ間に分散させてもよい。また、これらのコンポーネントは、様々なコンピュータ読取可能媒体から実行することができる。そして、該媒体上では様々なデータ構造が記憶されている。前記コンポーネントは、ローカル及び／又はリモート・プロセスを介して通信することができ、例えば、１以上のデータパケットを有する信号に従い通信することができる（例えば、ローカル・システムにおいて、分散システムにおいて、及び／又はネットワーク間において、別のコンポーネントと相互作用する１つのコンポーネントからのデータ（例えば、信号を介した他のシステムとのインターネット））。
【００１７】
特許請求の範囲に記載した主題に従い、コンピュータ実行可能なコンポーネントは、例えばコンピュータ読取可能媒体上に記憶することができ、以下の物が含まれるがこれらに限定されない：ＡＳＩＣ（特定用途向けＩＣ）、ＣＤ（コンパクト・ディスク）、ＤＶＤ（デジタル・ビデオ・ディスク）、ＲＯＭ （リード・オンリ・メモリ）、フロッピー（登録商標）ディスク、ハードディスク、ＥＥＰＲＯＭ（電気的に消去可能且つプログラム制御可能なリード・オンリ・メモリ）、メモリースティック、フラッシュ・メモリデバイス、又は他の任意の不揮発性のメモリデバイス、又は他の任意のストレージ・デバイス。
【００１８】
一実施形態において、圧縮を用いてデータコンテナを部分的に複製するための方法及びシステムを提供する。ストレージ・オペレーティングシステムは、複製されるべき一部のソース・データコンテナが非可変圧縮グループサイズを用いて圧縮された複数の圧縮されたブロックを含むかどうかを判定する。前記オペレーティングシステムは、前記非可変圧縮グループサイズを用いて、前記複数の圧縮されたブロックを複製する。そして、前記非可変圧縮グループサイズの範囲内ではないデータコンテナの複数のブロックを解凍する。その後、前記複数の圧縮されたブロックと前記非可変圧縮グループサイズ内ではない前記複数のブロックとが、前記ソース・データコンテナの部分的に複製されたコピーとして記憶される。
【００１９】
図１は、稼働環境（１００）（システム（１００）ともいう）の概念的ブロック図である。該環境では、有利には本開示とともに用いることができるストレージ・システム（１０８）を含む。システム（１００）は１以上のデータコンテナ（例えば、ディレクトリ、ファイル、構造化及び非構造化データ）を記憶するために用いられる。そして、以下で詳述するが、可変及び非可変圧縮サイズを用いて、前記データコンテナは部分的に複製される。
【００２０】
前記ストレージ・システム（１０８）は、１以上の コンピューティング・システムであってよく、該システムは、ストレージ・サービスを設けてもよく、該サービスは、ストレージ・デバイス（例えば、ストレージ・サブシステム（１３２）のストレージ・デバイス（１３０））での情報の組織化に関するものであってもよい。ストレージ・デバイス（１３０）は、例えば、以下の物であってもよい：テープ・ドライブ、従来の磁気ディスク、光学ディスク（例えば、ＣＤ−ＲＯＭ又はＤＶＤベースのストレージ）、光磁気（ＭＯ）ストレージ、フラッシュ・メモリ・ストレージ・デバイス、又は、データを記憶するのに適した任意の他の種類のストレージ・デバイス。本明細書に記載の前記例示は、ストレージ・デバイスを「ディスク・ドライブ」を意味するものとして言及してもよいが、本明細書に記載の適応した実施形態は、任意の特定種類のストレージ媒体／デバイスに限定されない。
【００２１】
前記ストレージ・システム（１０８）は１以上の以下の物を備える：プロセッサ（１１２）（中央演算処理装置とも言う）、メモリ（１１４）、ネットワーク・アダプタ（１２６）、及びストレージ・アダプタ（１２８）。これらは、相互接続システム（又はバス・システム）（１２４）によって接続されてもよい。プロセッサ（１１２）は以下の１以上の物であってもよく、又は以下の１以上の物を含むことができる：プログラム制御可能な汎用目的又は特定目的のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、プログラム制御可能なコントローラー、特定用途向けＩＣ（ＡＳＩＣ）、プログラム制御可能な論理デバイス（ＰＬＤ）等、又はこうしたデバイスの組み合わせ。前記バス・システム（１２４）は、例えば、以下の物を含むことができる：システム・バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ハイパートランスポート若しくはインダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）バス、ユニバーサル・シリアル・バス（ＵＳＢ）、又はアイトリプルイー（ＩＥＥＥ）規格１３９４バス（時として、「Ｆｉｒｅｗｉｒｅ（登録商標）」と呼ばれる）。
【００２２】
また、前記ストレージ・システム（１０８）は、ストレージ・オペレーティングシステム（１１８）を含み、該システムは、好ましくは高レベルのモジュール（例えば、 ファイル・システム）を実装して、ストレージ・デバイス（１３０）上のデータコンテナの階層構造として、情報を論理的に組織化する。
【００２３】
前記例示的な実施形態において、メモリ（１１４）は、記憶ロケーションを備え、該ロケーションは、マシン実行可能な指示を記憶するために、プロセッサ（１１２）及び他のモジュール（例えば、ストレージ・アダプタ（１２８）及びネットワーク・アダプタ（１２６））によって、アドレス割り当てがなされる。一部のメモリは、本開示に関連するデータ構造を記憶するための「キャッシュ」（１１６）として更に組織化されてもよい。
【００２４】
ストレージ・オペレーティングシステム（１１８）は、一部については、通常メモリ内に存在し、前記処理要素によって実行されるが、前記システム（１０８）を機能的に組織化し、とりわけ、前記ストレージ・システムによって実行されるストレージ操作を喚起することによって組織化される。当業者にとっては明らかであろうが、他の処理手段及びメモリ手段（様々なコンピュータ読取可能媒体を含む）が、本明細書に記載の発明に関する技術に従って、プログラム指示を記憶及び実行するために使用することができる。
【００２５】
前記ネットワーク・アダプタ（１２６）は、機械的、電子的、そして、信号の回路を含み、該回路は、前記ストレージ・システム（１０８）を、１以上のクライアント・システム（１０２）（クライアント（１０２）として示す）に、接続システム（１０６）（ネットワーク（１０６）とも言う）を介して接続するのに必要となる。そして、これらは、ポイント・トゥ・ポイント接続、又は共有媒体（例えば、ローカル・エリア・ネットワーク）を備えてもよい。例示として、接続システム（１０６）はイーサネット（登録商標）ネットワーク又はファイバー・チャネル（ＦＣ）ネットワークとして実施できる。前記クライアント（１０２）は、既定のプロトコル（例えば、伝送コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ））に従って、個別のデータフレーム又はデータパケットを交換することにより、ネットワーク（１０６）を介して前記ストレージ・システムと通信することができる。
【００２６】
クライアント（１０２）は、プロセッサが実行可能なアプリケーション（１０４）を実行するように設計された汎用目的コンピュータであってよい。更に、クライアント（１０２）は、情報伝達のクライアント／サーバー・モデルに従い、前記ストレージ・システム（１０８）と相互作用することができる。すなわち、前記クライアントは、前記ストレージ・システムのサービスのリクエストをだすことができる。そして、前記システムは、前記クライアントからリクエストされたサービスの結果をリターンすることができる。該リターンは、前記ネットワーク（１０６）を介してパケット（１１０）を交換することによって行うことができる。ファイル及びディレクトリの形態の情報にアクセスするときに、前記クライアントは、ＴＣＰ／ＩＰを介してパケットを発行することができ、該パケットは、ファイルベースのアクセスプロトコルを含むことができる（例えば、コモン・インターネット・ファイル・システム（ＣＩＦＳ）プロトコル、又はネットワーク・ファイル・システム（ＮＦＳ）プロトコル）。或いは、ブロック形態の情報にアクセスするときには、前記クライアントは、パケットを発行することができ、該パケットは、ブロック・ベースのアクセスプロトコルを含むことができる（例えば、ＴＣＰを介してカプセル化されたスモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）プロトコル（ｉＳＣＳＩ）、及びファイバー・チャネル（ＦＣＰ）を介してカプセル化されたＳＣＳＩ）。
【００２７】
前記ストレージ・アダプタ（１２８）は、前記システム（１０８）上で実行する前記ストレージ・オペレーティングシステム（１１８）と協働し、ユーザー（又はクライアント）が要求する情報にアクセスする。前記ストレージ・アダプタは、入力／出力（Ｉ／Ｏ）インターフェース回路を含み、前記回路は、Ｉ／Ｏ相互接続配置（例えば、従来の高性能な、ＦＣシリアル・リンク・トポロジー）を介して前記ストレージ・デバイスと接続する。
【００２８】
ストレージ・システム（１０８）は、データの読み書きをするために、クライアントにストレージ・ボリュームを提示する。ここで使用される用語「ストレージ・ボリューム」又は「ボリューム」は、物理的なストレージを抽象化した論理的なデータセットを意味し、１以上の物理的マス・ストレージ・デバイス又はこれらのパーツを単一の論理的なストレージオブジェクトに結合したものを意味する。しかし、各ストレージ・ボリュームは、１つのストレージ・デバイス内の前記ストレージ・スペース、複数のストレージ・デバイス内の幾つか若しくはすべてのストレージ・スペースの集合、ＲＡＩＤグループ、又は任意の他のストレージ・スペースのセットを表してもよい。
【００２９】
ストレージ・ボリュームは、通常、物理的ストレージ・デバイス（１３０）の集合であり、協働して前記ボリューム（複数可）上でのボリューム・ブロック・ナンバー（ｖｂｎ）スペースの全体の論理的な配置を定義する。必ずしもそうとは限らないが、各論理的ボリュームは、一般的に、該ボリューム自身のファイル・システムと関連している。論理的ボリューム/ファイル・システム内の前記ストレージ・デバイスは、通常、１以上のグループとして組織化されており、各グループは、リダンダント・アレイ・オブ・インデペンデント（又はインエクスペンシブ）・ディスクス（ＲＡＩＤ）として、稼働させてもよい。
【００３０】
前記ストレージ・デバイス（１３０）へのアクセスを促進させるため、一実施形態において、前記ストレージ・オペレーティングシステム（１１８）は、ライト・エニウェア・ファイル・システムを実装する。前記ファイル・システムは、名前付けされたデータコンテナ（例えば、 ディレクトリ及びファイル）の階層構造として、論理的に情報を組織化する。各「オンディスク」データコンテナは、情報（例えば、データ）を記憶するように設計されたブロックのセットとして実装することができる。一方で、ディレクトリは、特別にフォーマットされたデータコンテナとして実装することができる。ここで、名前並びに他のデータコンテナ及びディレクトリへのリンクが記憶される。ストレージ・デバイス（１３０）でのブロックは、名前付けされた論理的なユニット番号（ｌｕｎ）としてエクスポートすることができる。
【００３１】
前記例示的な実施形態において、前記ストレージ・オペレーティングシステムは、ＮｅｔＡｐｐ社（Ｓｕｎｎｙｖａｌｅ，  Ｃａｌｉｆｏｒｎｉａ）から入手できるＮｅｔＡｐｐ（登録商標）Ｄａｔａ  ＯＮＴＡＰ（商標）オペレーティングシステムが好ましく、該システムは、Ｗｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ（ＷＡＦＬ（商標））ファイル・システムを実装する。しかし、明示的に意図するが、本明細書に記載の本発明の原理に従い、任意の適切なストレージ・オペレーティングシステムを使用目的で強化することができる。従って、用語「ＷＡＦＬ」を用いるが、そのものでなかったとしても、本開示の教示内容に適合する任意のストレージ・オペレーティングシステムを指すものとして広く解釈すべきである。
【００３２】
ストレージ・システム（１０８）は、スタンド・アロン・システム、即ち、非クラスターベースのシステムとして示してはいるものの、別の実施形態では、ストレージ・システム（１０８）は、例えば、分離したＮ−（「ネットワーク」）ブレード及びＤ−（ディスク）ブレードを含むことができる、分散アーキテクチャを有することができる。要するに、前記Ｎ−ブレードは、クライアント（１０２）と通信するために用いられ、一方で、前記Ｄ−ブレードは、ストレージ・サブシステムの一部である前記ストレージ・デバイス（１３０）と通信するために用いられる。前記Ｎ−ブレード及びＤ−ブレードは、内部のプロトコルを用いてお互いに通信することができる。
【００３３】
或いは、ストレージ・システム（１０８）は組み込みアーキテクチャを有することができ、該アーキテクチャにおいて、ネットワーク及びデータ・コンポーネントが全て単一のボックス内に含まれる。前記ストレージ・システム（１０８）は、スイッチングファブリックを介して、他の類似のストレージ・システム（図示しない）に更に接続することができ、これらのシステムは、独自のローカル・ストレージ・サブシステムを有する。かくして、全てのストレージ・サブシステムは、単一のストレージ・プールを形成することができる。そこへ、任意の前記ストレージサーバーの任意のクライアントがアクセスする。
【００３４】
図２は、本開示の一実施形態に従ったストレージ・オペレーティングシステム（１１８）の包括的な例を示す。前記ストレージ・オペレーティングシステム（１１８）は、複数のデータコンテナを管理しており、これについては詳しく後述する。前記データコンテナは、可変圧縮グループサイズ及び非可変圧縮グループサイズを用いて部分的に複製される。これについては、詳しく後述する。
【００３５】
一例において、オペレーティングシステム（１１８）は、幾つかのモジュール、又は「層」を含むことができる。これらの層は、ファイル・システム・マネージャ（２０２）を含み、該マネージャは、ストレージ・デバイスに記憶されたデータのディレクトリ構造（階層）の追跡を継続し、読み書き操作を管理する（即ち、ストレージ・デバイス（１３０）上で読み書き操作を実行する）。
【００３６】
また、オペレーティングシステム（１１８）は、プロトコル層（２０４）及び関連するネットワーク・アクセス層（２０８）を含むことができ、ストレージ・システム（１０８）が、ネットワークを介して、他のシステム（例えば、クライアント（１０２））と通信することを可能にする。プロトコル層（２０４）は、後述するように、１以上の様々な高レベルのネットワーク・プロトコルを実装することができる（例えば、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）、ＴＣＰ／ＩＰ、及び他のプロトコル）。
【００３７】
ネットワーク・アクセス層（２０８）は、１以上のドライバを含むことができ、該ドライバは、１以上の低レベルプロトコルを実装し、ネットワーク（例えば、イーサネット（登録商標））を介して通信する。クライアント（１０２）及びマス・ストレージ・デバイス（１３０）の間の相互作用は、概念的にパスとして示しており、オペレーティングシステム（１１８）を通してのデータの流れを記載している。
【００３８】
また、前記オペレーティングシステム（１１８）は、ストレージ・アクセス層（２０６）、及び関連するストレージ・ドライバ層（２１０）を含むことができ、ストレージ・デバイス（例えば（１３０））と通信することができる。前記ストレージ・アクセス層（２０６）は、より高レベルのストレージ・プロトコル（例えば、ＲＡＩＤ）を実装することができる。一方で、前記ストレージ・ドライバ層（２１０）は、より低レベルのストレージ・デバイス・アクセスプロトコル（例えば、ＳＣＳＩ）を実装することができる。
【００３９】
ファイル・システム・マネージャ（３０２）は、図１に関して詳細に上述したシステム（１００）の様々なコンポーネントを含むことができ、又はこれらと相互作用することができる。ファイル・システム（２０２）は、視覚化モジュール（２１２）と相互作用することができ、又はこれとを含むことができ、ユーザー・インターフェース （ＵＩ）（２１４）を介して、ユーザー（システム管理者）にアクセス可能となり、該ユーザーは、前記ストレージ・システム（１０８）にコマンドを発行する。ＵＩ（２１４）は、管理者又はユーザーが様々な層及びシステムにアクセスすることを可能にする態様で、前記ストレージ・オペレーティングシステムを介して配置される。
【００４０】
留意されたい点として、上述のオペレーティングシステム層を介するソフトウェアの「パス」の代替えとして、ハードウェア、又はハードウェア及びソフトウェアの組み合わせ内で実装することができる。即ち、本開示の代替実施形態においては、ストレージ・アクセス・リクエスト・データ・パスは、現場でプログラム可能なゲートアレイ（ＦＰＧＡ）又はＡＳＩＣ内で実施される論理回路として実装することができる。
【００４１】
ここで使用される用語「ストレージ・オペレーティングシステム」とは、概して、コンピュータ実行可能なコードであり、コンピュータ上で動作するコードを指す。該コードは、データアクセスを管理し、汎用目的オペレーティングシステムのデータ・アクセス・セマンティクスを実装することができる、ストレージ機能を実行する。また、前記ストレージ・オペレーティングシステムは、以下のものとして実装することができる：マイクロカーネル；汎用目的オペレーティングシステム（例えば、ＵＮＩＸ（登録商標）、又はＷｉｎｄｏｗｓ（登録商標）ＸＰ（登録商標））上で動作するアプリケーション・プログラム；本明細書に記載のストレージ・アプリケーション用に設計された、設計可能な機能を有する汎用目的オペレーティングシステム。
【００４２】
更には、当業者は理解するであろうが、本明細書に記載の本開示は、任意の種類の特定目的コンピュータ（例えば、ファイル・サーバー、ファイラ、又はストレージ・サービング・アプライアンス）、又は汎用目的コンピュータに適用することができ、スタンドアロン・コンピュータ又はこれらの一部を含むことができ、ストレージ・システムとして実装することができ、又はこれを含むことができる。更に、本開示の教示内容は、種々のストレージ・システム・アーキテクチャに適応することができ、該アーキテクチャとして、以下の物が含まれるがこれらに限定されない。ネットワークに接続されたストレージ環境、ストレージ・エリア・ネットワーク、及びクライアント又はホスト・コンピュータに直接取り付けられたストレージ・デバイス。従って、用語「ストレージ・システム」は、広く解釈すべきものであり、ストレージ機能を実行するために設計され、且つ他の装置又はシステムと関連する任意のサブシステムに加えて、こうした配置構成を含む。
【００４３】
ファイル・システムは、例示として、メッセージ・ベースのシステムであり、該システムは、前記ストレージ・デバイス（１３０）に記憶された情報にアクセスする際の使用を目的として、論理的ボリューム管理機能を提供する。即ち、ファイル・システム・セマンティクスを提供することに加えて、前記ファイル・システム（２０２）は、ボリューム・マネージャと通常関連する機能を提供する。これらの機能は、以下のものを含む：（ｉ）ストレージ・デバイスの集合、（ｉｉ）前記ストレージ・デバイスのストレージ帯域幅の集合、及び（ｉｉｉ）信頼性の保証（例えば、ミラーリング及び／又はパリティ（ＲＡＩＤ））。
【００４４】
一実施形態において、前記ファイル・システム（２０２）は、例示として、ＷＡＦＬファイル・システムを実装し、該システムは、オンディスク・フォーマット・レプレゼンテーションを有する。これは、ブロック・ベースの使用（例えば、４キロバイト（ｋＢ）ブロック）、及びインデックスノードの使用を行う（「アイノード」）。そして、データコンテナ及びデータコンテナ属性（例えば、作成時間、アクセス許可、サイズ、及びブロック・ロケーション）を特定する。前記ファイル・システム（２０２）は、データコンテナ（メタデータ・ファイル）を使用し、そのファイル・システムのレイアウトを記載したメタデータを記憶する。これらのメタデータ・ファイルは、数ある中でも、ファイル・ハンドルを有するアイノード、及び、ストレージ・ロケーションから前記アイノードを検索するために使用されるアイノード番号を含む識別子を含む。
【００４５】
広義に言うと、前記ライト・エニィウェア ファイル・システムの全てのアイノードは、前記アイノード・データコンテナに組織化される。ファイル・システム（ＦＳ）情報ブロックは、前記ファイル・システム内の情報のレイアウトを特定する。そして、前記情報ブロックは、前記ファイル・システムの全ての他のアイノードを含むデータコンテナのアイノードを含む。各論理的ボリューム （ファイル・システム）は、ＦＳ情報ブロックを有し、前記ブロックは、例えば、ＲＡＩＤグループ内の固定ロケーションに記憶されるのが好ましい。ルートＦＳ情報ブロックのアイノードは、アイノード・ファイルのブロックを直接参照（ポイント）することができる。又は、前記アイノード・ファイルのブロックを順々に直接参照するアイノード・ファイルのブロックを間接的に参照してもよい。アイノードは、前記アイノード・ファイルの各直接ブロック内に埋め込まれる。これらはそれぞれ、間接ブロックを参照することができ、データコンテナのデータ・ブロックを順々に参照することができる。
【００４６】
操作上で、クライアント（１０２）からのリクエストは、パケット（１１０）としてコンピュータ・ネットワーク（１１０６）を介し、そして、ストレージ・システム（１０８）上へ送られる。ここで、前記ネットワーク・アダプタ（１２６）で受信される。ネットワーク・ドライバ（層（２０８）のドライバ）は、パケットを処理する。そして、適宜、ライト・エニィウェア・ファイル・システム（２０２）へ送る前に更なる処理を行うことを目的として、パケットを、ネットワーク・プロトコル層及びファイル・アクセス層へ送る。ここで、もし、要求されたデータが「コア内」（即ちキャッシュ（１１６））に存在しない場合、前記ファイル・システムは、要求されたデータをストレージ・デバイス（１３０）からロードする操作を発生させる。前記キャッシュ内に情報が無い場合、適切なエントリにアクセスして、論理的ＶＢＮを検索するために、前記ファイル・システム（２０２）は、アイノード番号を用いて前記アイノードデータコンテナをインデックス化する。その後、前記ファイル・システムは、ストレージ・アクセス層（２０６）にメッセージ構造を渡し、該構造は、前記論理的ＶＢＮを含む。前記論理的ＶＢＮは、ストレージ・デバイス識別子、及びディスク・ブロック番号（ディスク、ＤＢＮ）にマッピングされ、 前記ストレージ・ドライバ（２１０）に送信される。前記ストレージ・ドライバ（２１０）は、特定のディスク（１３０）からＤＢＮにアクセスする。そして、前記ストレージ・システムが処理を行うことを目的としてキャッシュ（１１６）内のリクエストされたデータ・ブロック（複数可）をロードする。前記リクエストが完了すると、前記ストレージ・システム（及びオペレーティングシステム）は、ネットワーク（１０６）を介して、クライアント（１０２）に返答を返す。
【００４７】
例示的な実施形態において、データコンテナは、ストレージ・デバイス（１３０）で記憶するのに適応したアイノードとして表現される。また、アイノード（３００）は、一実施形態に従って生成された部分的複製のために使用することができ、これについては、詳しく後述する。図３は、アイノード（３００）の一例を提供する。該アイノードは、好ましくは、メタデータ・セクション（３１０）及びデータ・セクション（３２０）を含む。各アイノード（３００）のメタデータ・セクション（３１０）中に記憶された情報は、データコンテナを記載する。従って、該情報は、以下のものを含む：データコンテナの種類（例えば、レギュラー、ディレクトリ、仮想ディスク）（３１２）；データコンテナのサイズ（３１４）；データコンテナに関するタイム・スタンプ（例えば、アクセス及び／又は変更）（３１６）；並びに所有者（即ち、ユーザー識別子（ＵＩＤ（３１８）））、及びグループＩＤ（ＧＩＤ（３２０））。しかし、各アイノードのデータ・セクション（３２０）の中身は、タイプ・フィールド（３１２）内で定義されるアイノードの種類に依存して異なって解釈することができる。例えば、ディレクトリ・アイノードの前記データ・セクション（３２０）は、前記ファイル・システム（２０２）がコントロールするメタデータを含む。一方で、レギュラー・アイノードのデータ・セクションは、ファイル・システム・データを含む。後者の場合、前記データ・セクション（３２０）は、前記データコンテナに関連するデータを表したものを含む。
【００４８】
具体的には、レギュラー・アイノードのデータ・セクション（３２０）は、ファイル・システムデータ又はポインタを含むことができる。そして、後者は、前記ファイル・システムデータを記憶するのに用いられる前記ストレージ・デバイス（１３０）に対する４ｋＢのデータ・ブロックを参照する。各ポインタは、好ましくは論理的ＶＢＮであり、記憶されたデータにアクセスする時のファイル・システム（２０２）間での効率化を促進する。アイノードのサイズが限られている場合（例えば、１２８バイト）、６４バイト以下であるサイズを有するファイル・システム・データは、全体として、そのアイノードのデータ・セクション内に表現される。しかし、もし、ファイル・システム・データが６４バイトを超え、しかし、６４ｋＢ以下である場合、アイノード（例えば、第一レベルアイノード）のデータ・セクションは、様々なポインタ（例えば、１６ポインタ）を含むことができる。そして、各ポインタは、ストレージ・デバイス（１３０）において４ｋＢブロックのデータを参照する。
【００４９】
更に、もしも、データのサイズが６４ｋＢを超え、しかし、６４メガバイト（ＭＢ）以下の場合、アイノード（例えば、第二レベルアイノード）のデータ・セクション（３２０）中の各ポインタが、間接ブロック（例えば、第一レベル・ブロック）を参照し、該ブロックは、様々なポインタ含むことができる（例えば、ポインタであって、それぞれが、ストレージ・デバイス（１３０）において、４ｋＢのデータ・ブロックを参照する）。６４ＭＢを超えるサイズのファイル・システムデータについては、アイノード（例えば、第三レベルアイノード）のデータ・セクション（３２０）中の各ポインタが、二重間接ブロック（例えば、第二レベルブロック）を参照する。そして、該ブロックは、様々なポインタを含むことができる（例えば、（５１０）ポインタであって、各ポインタは、間接（例えば、第一レベル）ブロックを参照する）。前記間接ブロックは、順々に（５１０）ポインタを含み、各ポインタは、ストレージ・デバイス上の４ｋＢデータ・ブロックを参照する。ファイルにアクセスするときには、前記ファイルの各ブロックは、ストレージ・デバイス（１３０）からキャッシュ（１１６）にロードしてもよい。
【００５０】
オンディスク・アイノード（又はブロック）が、ストレージ・デバイス（１３０）からキャッシュ（１１６）へロードされると、これに対応するインコア構造がオンディスク構造を埋め込む。例えば、アイノード（３００）（図３）周辺の点線は、オンディスク・アイノード構造のインコアでの表現したものを表す。前記インコア構造は、あるブロックのメモリであり、オンディスク構造を記憶し、これに加えて、メモリ（しかし、ディスク上ではない）内でデータを管理するのに必要な追加情報を記憶する。前記追加情報とてしては、例えば、「ダーティ」（ｄｉｒｔｙ）ビット（３２２）を含むことができる。アイノード（又はブロック）内のデータが、例えば、書き込みによる指示によって更新／変更された後、変更データは、前記ダーティ・ビット（３２２）を用いて「ダーティ」とマークされる。その結果、前記アイノード（ブロック）はその後「フラッシュ」（記憶）することができる。
【００５１】
図４Ａは、ツリー構造の概念ブロック図である。該構造は、有利には、データコンテナの部分的複製を生成させるために本開示とともに用いられる。そして、生成の際には、非可変及び可変の圧縮グループサイズの両方を用いる。こうした点については、詳しく後述する。前記ツリー構造は、キャッシュ（１１６）にロードされ、そして、ファイル・システム（２０２）によって維持されるデータコンテナ（例えば、ファイルＡ（４００））に関するブロックの内部表現物である。ルート（トップレベル）のアイノード（４０２）（例えば、ある埋め込まれたアイノード）は、間接（例えば、レベル１）ブロック（４０４）を参照する。前記間接ブロック（及びアイノード）は、ポインタ（４０５）を含み、該ポインタは、ファイルＡの実際のデータを記憶するのに用いられるデータ・ブロック（４０６）を最終的には参照する。即ち、前記ファイルＡ（４００）のデータは、前記データ・ブロックに記憶され、これらのブロックのロケーションは、前記ファイルの前記間接ブロックに記憶される。
【００５２】
各レベル１の間接ブロック（４０４）は、様々なブロック（例えば（５１０）データ・ブロック）へのポインタを含むことができる。ファイル・システムの「ライト・エニィウェア」特性に従って、これらのブロックは、ストレージ・デバイス（１３０）上のどこにでも配置することができる。
【００５３】
ストレージ管理者／ユーザーは、ファイル・システム又はこの一部を、「複製」することを望む可能性がある。ストレージ・スペースを効率的に使用するため、しばしば、シングル・インスタンス・ストレージ（ＳＩＳ）クローニング（複製）技術が用いられる。ＳＩＳクローニングにおいて、新たなアイノードが新たなレベル１ブロックとともにつくられる。しかし、前記レベル１ブロックは、元のデータコンテナのレベル０ブロックをポイントする。ＳＩＳクローニングの一例を図４Ｂに提供する。ここで、ファイル（４００）Ａは、図４Ａのファイル（４００）のクローンである。
【００５４】
アイノード（４０２）と同様に、アイノード（４０３）は、（４０４）と同様の複数の間接ブロック（４０７）を有する独立構造である。ポインタ（４０９）は、（４０５）と同様に、図４Ａの同じデータ・ブロック（４０６）をポイントする。従って、複製されたコピーにおいて、新たなアイノード（４０３）と、間接レベル１ブロック（４０７）のみが作成される。前記レベル０データ・ブロックでの元のデータは、同一性を維持している。こうした技術は、ストレージ・スペースを効率的に使用する。なぜならば、実際のデータを記憶する前記データ・ブロックは、コピーされていない。即ち、元のレベル０データを読み込み、そして、複製された／新たなレベル０データとして書き込んでいる。従って、不必要なストレージ・デバイス入力／出力操作を回避する。
【００５５】
また、ストレージ・システムは、複製の際に圧縮を用いてストレージ・スペースを節約することができる。大量のデータを複製することができるため、ストレージ・システム（１０８）は、通常、非可変圧縮グループサイズを用いて、ブロックを圧縮する。例えば、ストレージ・システム（１０８）は、個々のブロックを圧縮するのではなく、８つのブロックを１つのグループとして圧縮することができる。こうした方法はコンピューティング・リソースが節約されるため、効率的である。
【００５６】
ほとんどの状況においては、非可変圧縮グループサイズを使用することが望ましい。しかし、一部のデータコンテナ/ファイル・システムが複製される可能性がある場合には、部分的ＳＩＳクローニングの目的において該サイズを使用することは好ましくない可能性がある。部分的ＳＩＳクローニングについては、図４Ｃに関連した以下の記載を元に説明する。
【００５７】
図４Ｃは、データコンテナ（４０８）を示す。該コンテナは、ファイル・オフセット番号を有しており、行（４１０）に示すように０〜２４まである。行（４１２）は、ｖｂｎスペース中のブロック番号Ｖ０−Ｖ２４を示す。一方、行（４１４）は、ｐｂｎスペース中の物理的記憶スペース・ブロック番号Ｐ０−Ｐ２４を示す。部分的に複製されたデータコンテナ（４０８）の部分は、（４１６）として示す。
【００５８】
複製された構造において、行（４１８）は、前記ファイル・オフセットを示し、０〜１５まである。行（４２０）は、新たなレベル１ブロックを示しており、Ｖ４−Ｖ１９で示してある。行（４２０）の前記レベル１ブロックは、行（４２２）の前記ｐｂｎブロックをポイントしている。行（４２２）と、行（４１４）ブロックは同一である点に留意されたい。
【００５９】
もし、ストレージ・システム（１０８）が非可変圧縮グループサイズ（例えば、８）を用いる場合、オフセット「０」で始まり、その後、ストレージ・システム（１０８）は、まず、行（４１８）に示すブロックに関するすべての情報を解凍しなければならない。そして、前記ストレージ・システムは、圧縮グループ・サイズ８を用いて前記ブロックを再圧縮することができ、その後、前記圧縮されたブロックをクローンへ（４１６）コピーすることができる。
【００６０】
部分的ＳＩＳクローニングにおける非可変圧縮グループサイズを用いたチャレンジについては、図４Ｄに示す。ここで、データコンテナ（４２４）は、図４Ｃに示したデータコンテナ（４０８）の圧縮バージョンである。図４Ｄ中の行（４２６）は、ブロック番号０−２４を示す。図４Ｃの８つのブロック０−７は、３つのブロックに圧縮され、行（４２８）でＶｃ１、Ｖｃ２及びＶｃ３として示される。ブロックＨ１は、圧縮されたブロック０−７に関する圧縮情報を含む。「Ｔ」とラベルされたブロックは、パディング情報を含む。
【００６１】
行（４３０）は、ｐｂｎスペース中の圧縮されたブロックを含み、Ｐｃ１、Ｐｃ２、及びＰｃ３として示す。これは、Ｐ１−Ｐ７のファイル（４０８）がＰｃ１、Ｐｃ２、Ｐｃ３に圧縮されたことを意味する。行（４３０）中のＨ１は、圧縮情報を含み、該情報をファイル・システム（２０２）が用いて、記憶された情報を解凍する。
【００６２】
ブロック８−１５は、４つのブロックに圧縮され、Ｖｃ９−Ｖｃ１２として示す。ブロック８−１５に関するヘッダは、行（４２８）中にＨとして示す。同様に、データコンテナ（４０８）のブロック１６−２３は、Ｖｃ１７−Ｖｃ１９を用いて圧縮される。前記ヘッダは、圧縮情報を記憶するために用いられる。
【００６３】
部分的ＳＩＳクローニングについて、セグメント（４３２）として示した行（４２６）のブロック４−１９のみが、ユーザーのリクエストに基づいて複製される。ストレージ・システム（１０８）がオフセット０から前記ソース・データコンテナ（４２４）を圧縮したため、前記複製の影響を受ける全てのブロックを解凍しなければならない。セグメント（４３２）内の全てのブロックがまず解凍される。その後、開始オフセットとしてのセグメント（４２６）のブロック４を用いて、再圧縮される。そして、前記部分的ＳＩＳクローンとしてコピーされる。従って、部分的ＳＩＳクローンのために非可変圧縮グループサイズを用いることは、さほど望まれない可能性がある。
【００６４】
一実施形態において、可変圧縮グループサイズ及び非可変圧縮グループサイズを部分的ＳＩＳクローンのために用いる。前記部分的グループサイズは、通常、固定されたブロック・ロケーションに優先するか、又はそれに従うブロックの数のために用いられる。例えば、部分的にセグメント（４３２）を複製するために、可変圧縮サイズがセグメント（４３４）及び（４３８）のために用いられる。一方で、セグメント（４３６）に関する元のソース・データコンテナの非可変圧縮グループサイズは維持される。
【００６５】
セグメント（４３４）中の行（４２６）の４、５、６及び７でラベルされたブロックを複製するため、ファイル・システム（２０２）は、まず、ブロックを解凍し、その後、解凍したブロックを複製する。同様に、１６、１７、１８及び１９でラベルされたブロックは、まず、解凍され、その後、ブロック４、５、６及び７と同様にコピーされる。
【００６６】
しかし、セグメント（４３６）中８−１５でラベルされたブロックは、解凍されず、元の圧縮されたデータコンテナ（４２４）から単純にコピーされる。
【００６７】
一実施形態において、ブロック４、５、６及び７、並びにブロック１６、１７、１８及び１９は、可変ブロックサイズ４を用いて複製バージョン中で圧縮することができる。上記例に基づいて、セグメント（４３４）及び（４３８）は、可変圧縮グループサイズを有する。一方で、セグメント（４３６）は、元の圧縮グループ・サイズを維持する。このことにより、部分的ＳＩＳクローニングにおいて圧縮を用いることを望むユーザーにとっては、コンピューティング・リソースやスペースが節約されることとなる。
【００６８】
図４Ｅは、一実施形態に従って可変及び非可変圧縮グループサイズを使用するためのプロセス（４４０）のプロセスフロー図を示す。前記プロセスは、ブロックＳ４４２を開始し、ここでは、データコンテナを部分的に複製するためのリクエストをストレージ・オペレーティングシステム（１１８）が受け取る。前記リクエストは、データコンテナを特定し、ＵＩ（２１４）を通して受け取ることができる。
【００６９】
ブロックＳ４４４においては、ファイル・システム（２０２）がデータコンテナを検索し、部分的複製のための開始オフセットが、圧縮されたソース・データコンテナの開始オフセットとマッチするかどうか判定する。このことは、間接ブロックがデータコンテナ・ブロックを圧縮するために用いられる非可変圧縮グループサイズを満たしていることを意味する。例えば、図４Ｄを参照すると、リクエストが、行（４２６）のブロック０−１５を部分的に複製するためのものである場合、ファイル・システム（２０２）は、行（４２８）のブロックを複製されたバージョンへと単純にコピーする。なぜならば、部分的複製のための開始オフセットは、前記圧縮されたブロックのオフセットとマッチするからである。
【００７０】
もしも、部分的複製のためのリクエストが、非可変圧縮グループサイズの開始オフセットとマッチしない場合には、ブロックＳ４４６において、ファイル・システム（２０２）が、ソース・データコンテナ・ブロックを解凍し、解凍されたブロックを記憶するか、又はデフォルト（非可変圧縮グループサイズ（例えば、８））とは異なる圧縮グループ・サイズを用いて前記解凍されたブロックを圧縮する。図４Ｄへ戻って、部分的複製の要求がセグメント（４３４）で開始したブロックに関するものである場合、セグメント（４３４）内のすべてのブロックが最初に読み込まれ、その後、複製されるか、またはブロック・サイズ４を用いて圧縮されるかのいずれかが行われる。セグメント（４３６）内のブロックは、単純にコピーされる。なぜならば、これらはデフォルトの圧縮グループ・サイズを用いているからである。セグメント（４３８）内の前記ブロックは、セグメント（４３４）中のブロックと同様に扱われる。
【００７１】
本明細書に記載の実施形態はいくつかの利点を有する。というのは、ユーザーは、部分的ＳＩＳクローニング及び圧縮の両方の利点を教示することが可能となるからである。
【００７２】
図５は、高レベルのブロック図であり、該図は、高レベルでの処理システムのアーキテクチャの例を示す。ここで、上述したように、図４Ｅのプロセスのための実行可能な指示を、実施することができる。処理システム（５００）は、クライアントシステム（１０２）を表すことができる。本開示とは密接に関連しない特定の標準的な且つ周知のコンポーネントは、図５では、図示しない点に留意されたい。
【００７３】
前記処理システム（５００）は、１以上のプロセッサ（５０２）及びメモリ（５０４）を含み、バス・システム（５０５）に接続されている。図４に示したバス・システム（５０５）は、任意の１以上の分離した物理的バス及び／又はポイント・トゥ・ポイント接続を表して抽象化した物であり、これらは適切なブリッジ、アダプタ及び／又はコントローラーによって接続されている。従って、前記バス・システム（５０５）は、以下の物を含むことができる：例えば、システム・バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ハイパートランスポート若しくはインダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）バス、ユニバーサル・シリアル・バス（ＵＳＢ）、又はアイトリプルイー（ＩＥＥＥ）規格１３９４バス（時として、「Ｆｉｒｅｗｉｒｅ（登録商標）」と呼ばれる）。
【００７４】
プロセッサ（５０２）は、処理システム（５００）の中央演算処理装置（ＣＰＵ）であり、従って、該システムの全体の動作を制御する。ある実施形態において、プロセッサ（５０２）はメモリ（５０４）に記憶されたプログラム制御可能な指示（５０６）を実行することによってこれを達成する。プロセッサ（５０２）は、以下の１以上の物であってよく、または以下の１以上の物を含む：プログラム制御可能な汎用目的又は特定目的マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、プログラム制御可能なコントローラー、特定用途向けＩＣ（ＡＳＩＣ）、プログラム制御可能な論理デバイス（ＰＬＤ）等、またはこうしたデバイスの組合せ。
【００７５】
メモリ（５０４）は、任意の形態のランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、フラッシュ・メモリ等、又はこうしたデバイスの組み合わせを表す。メモリ（５０４）は処理システム（５００）のメインメモリを含む。図４Ｅのプロセス・ステップを実施する指示（５０６）は、メモリ（５０４）内にあってもよく、及び該メモリから（プロセッサ（５０２）によって）実行されてもよい。
【００７６】
また、プロセッサ（５０２）には、バス・システム（５０５）を介して、１以上の内部のマス・ストレージ・デバイス（５１０）及びネットワーク・アダプタ（５１２）が接続される。内部のマス・ストレージ・デバイス（５１０）は以下の物であってもよく、又は以下の物を含んでもよい：不揮発性の態様（例えば、１以上の磁気又は光学ベースのディスク）で、大量のデータを記憶するための任意の従来の媒体。ネットワーク・アダプタ（５１２）は、ネットワークを介して遠隔装置と通信する能力を有する処理システム（５００）を提供する。そして、該アダプタは、例えば、イーサネット（登録商標）アダプタ、ファイバー・チャネルアダプタ等であってもよい。また、処理システム（５００）は、バス・システム（５０５）と接続された１以上の入力／出力（Ｉ／Ｏ）デバイス（５０８）を含む。前記Ｉ／Ｏデバイス（５０８）は、例えば、表示装置、キーボード、マウスなどを含むことができる。
【００７７】
クラウド・コンピューティング:上述したシステム及び技術は、今後のクラウド・コンピューティング環境において応用可能であり有用である。クラウド・コンピューティングは、コンピューティング能力を意味し、該能力として、コンピューティング・リソース及びその基礎となる技術的アーキテクチャ（例えば、サーバー、ストレージ、ネットワーク）との間の抽象化したものをさし、便利なオンデマンド・ネットワークアクセスを設計可能なコンピューティング・リソースの共有プールに対して行うことを可能にし、これらは、最小限の管理努力、又は最小限のサービス提供者の相互作用によって、素早く提供し、リリースすることができる。用語「クラウド」はインターネットを意味することを意図しており、クラウド・コンピューティングは、共有リソース（例えば、公共事業（ｐｕｂｌｉｃ  ｕｔｉｌｉｔｙ）のようなオンデマンドに利用可能なソフトウェア及び情報）を可能にする。
【００７８】
典型的なクラウド・コンピューティング・プロバイダは、オンライン上でありふれたビジネス・アプリケーションを配信する。そして、これらは、別のウェブサービス、又はウェブ・ブラウザのようなソフトウェアからアクセスされる。一方で、ソフトウェア及びデータは、サーバー上に離隔して記憶される。クラウド・コンピューティング・アーキテクチャは、アプリケーション・サービスを提供するために、層状のアプローチを用いる。第一層は、アプリケーション層であり、クライアント・コンピュータにおいて実行される。この例において、アプリケーションは、クライアントが、クラウドを介してストレージにアクセスすることを可能にする。
【００７９】
前記アプリケーション層の後は、クラウドのプラットフォームであり、クラウド・インフラであり、「サーバー」層が続く。該層は、クラウドの特定のサービスのために設計されたハードウェア及びコンピュータ・ソフトウェアを含む。これらの層に関する詳細は、本発明の実施系形態に密接に関連しない。上述したストレージ・システムは、ストレージ・サービスを提供するためのサーバー層の一部であってもよい。
【００８０】
従って、部分的ＳＩＳクローニングにおいて、可逆及び非可逆サイズの圧縮グループを用いるための方法及び装置が提供される。本明細書全体を通して「一（ｏｎｅ，  ａｎ）実施形態]という用語に関する言及は、本開示の実施形態の少なくとも１つにおいて含まれる実施形態に関連して記載された特定の特徴、構造又は特性を意味する点に留意されたい。従って、強調すべき点且つ理解されたい点として、本明細書の様々な箇所においての、２以上の「一（ｏｎｅ，  ａｎ）実施形態」又は「別の実施形態」という言及は、必ずしも、同一の実施形態についてすべて言及しているわけでなない。更に、当業者は理解するであろうが、言及した特定の特徴、構造、又は特性は、本開示の１以上の実施形態において適宜組み合わせることができる。
【００８１】
現時点での好ましい実施形態に関連して本開示を上述しているが、上述した本開示に限定されない点を理解されたい。むしろ、本開示は、様々な改変や均等物配置を添付した特許請求の範囲の思想及び範囲内にカバーすることを企図する。
【図１】
2014526749.tif 000003
【図２】
2014526749.tif 000004
【図３】
2014526749.tif 000005
【図４Ａ】
2014526749.tif 000006
【図４Ｂ】
2014526749.tif 000007
【図４Ｃ】
2014526749.tif 000008
【図４Ｄ】
2014526749.tif 000009
【図４Ｅ】
2014526749.tif 000010
【図５】
2014526749.tif 000011
【国際調査報告】
2014526749.tif 000012