(57)【特許請求の範囲】
【請求項１】
少なくとも１つの記憶装置と、
１つまたは複数のデータ単位と前記データ単位に対応するメタデータとを関連付けて前記記憶装置に記憶させる制御装置と、
を備え、
前記制御装置は、
前記記憶装置への前記データ単位の書き込み処理を実行する際に、前記データ単位の第１のハッシュ値を計算し、前記第１のハッシュ値を、前記メタデータの一部として前記データ単位と関連付けて前記記憶装置に記憶させ、
前記書込み処理と並行して、前記データ単位が圧縮されるべきであるかを判別し、前記データ単位が圧縮されるべきであると判別された場合に前記データ単位を圧縮し、
圧縮された前記データ単位の第２のハッシュ値を計算し、前記第１のハッシュ値及び前記第２のハッシュ値を前記メタデータの一部として圧縮前の前記データ単位と関連付けて前記記憶装置に記憶させ、
前記記憶装置に記憶された前記データ単位の整合性を定期的に検査する際に、前記検査の対象となる前記データ単位の第３のハッシュ値を計算し、
前記データ単位に関連付けられた前記メタデータをもとに前記データ単位が圧縮されているかを判別し、前記データ単位が圧縮されていないと判別された場合に、前記データ単位に対応付けられた前記第１のハッシュ値と前記第３のハッシュ値とを比較し、前記データ単位が圧縮されていると判別された場合に、前記データ単位に対応付けられた前記第２のハッシュ値と前記第３のハッシュ値とを比較する、
ことを特徴とする、ストレージシステム。
【請求項２】
前記制御装置は、
前記データ単位が圧縮された場合に、圧縮前の前記データ単位に代えて前記圧縮されたデータ単位を前記記憶部に記憶し、圧縮前の前記データ単位を削除する
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項３】
前記制御部は、
１つまたは複数のデータ単位の前記メタデータに含まれるクライアント識別子（ＩＤ）と圧縮条件セットとを対応付けてクライアントテーブルで管理し、
前記圧縮条件セットは、前記１つまたは複数のデータ単位が圧縮されるべき条件を示す
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項４】
前記圧縮条件セットに含まれる前記条件は、圧縮効率の比率しきい値を含み、
前記制御部は、
圧縮された前記データ単位が圧縮前の前記データ単位よりも前記圧縮効率の比率閾値を上回る値以上縮小される場合、前記データ単位を圧縮する
ことを特徴とする、請求項３に記載のストレージシステム。
【請求項５】
前記圧縮条件セットに含まれる前記条件は、圧縮のためのデータ単位の指定された最小サイズおよび指定された最大サイズのうちの少なくとも１つを含み、
前記制御部は、
特定のデータ単位が前記特定のデータ単位に対応する前記圧縮条件セットの前記指定された最小サイズよりも小さい場合か、または前記指定された最大サイズよりも大きい場合に、前記データ単位を圧縮しない
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項６】
各データ単位の前記メタデータは、システムメタデータおよびユーザメタデータを含み、前記システムメタデータおよび前記ユーザメタデータはいずれも、前記データを所有するクライアントによってアクセス可能であり、
前記クライアントは前記クライアントメタデータを変更することができるが、前記システムメタデータは変更することができない
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項７】
前記制御部は、
特定の第１のハッシュ値は、前記ストレージシステムに格納されている特定のデータ単位の場所を検索するために使用し、
前記特定のデータ単位に対応する前記メタデータを使用して、前記第１のハッシュ値を前記第２のハッシュ値に関連付けて、前記第２のハッシュ値に対応する圧縮された前記データ単位の場所を検索する
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項８】
少なくとも１つの記憶装置と、１つまたは複数のデータ単位と前記データ単位に対応するメタデータとを関連付けて前記記憶装置に記憶させる制御装置と、を備えたストレージシステムにおける制御方法であって、
前記制御装置が、前記記憶装置への前記データ単位の書き込み処理を実行する際に、前記データ単位の第１のハッシュ値を計算し、前記第１のハッシュ値を、前記メタデータの一部として前記データ単位と関連付けて前記記憶装置に記憶させる第１のステップと、
前記制御装置が、前記書込み処理と並行して、前記データ単位が圧縮されるべきであるかを判別し、前記データ単位が圧縮されるべきであると判別された場合に前記データ単位を圧縮する第２のステップと、
前記制御装置が、圧縮された前記データ単位の第２のハッシュ値を計算し、前記第１のハッシュ値及び前記第２のハッシュ値を前記メタデータの一部として圧縮前の前記データ単位と関連付けて前記記憶装置に記憶させる第３のステップと、
前記記憶装置に記憶された前記データ単位の整合性を定期的に検査する際に、前記検査の対象となる前記データ単位の第３のハッシュ値を計算する第４のステップと、
前記データ単位に関連付けられた前記メタデータをもとに前記データ単位が圧縮されているかを判別し、前記データ単位が圧縮されていないと判別された場合に、前記データ単位に対応付けられた前記第１のハッシュ値と前記第３のハッシュ値とを比較し、前記データ単位が圧縮されていると判別された場合に、前記データ単位に対応付けられた前記第２のハッシュ値と前記第３のハッシュ値とを比較する第５のステップと、
を含むことを特徴とする、ストレージシステムにおける制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  発明の分野
[0002]  本発明は一般に、コンピュータ情報技術システムおよびデータを格納するためのストレージシステムに関する。
【背景技術】
【０００２】
[0003]  関連技術の説明
[0004]  最近の傾向によれば、膨大量のデジタルデータは、基本データアーカイブに加えて、連邦および州の規制、業界の標準および慣行に従うために、ディスクアレイシステムなどのコンピュータストレージシステムでアーカイブに入れられる。たとえば、企業では、電子メール通信、データファイル、小切手イメージなどのコピーを、アーカイブストレージシステムに保持する。企業が、長期間にわたって膨大量のデータを保持して管理する必要がある場合、データ管理コストを低減するためにデータアーカイブ用の特殊用途ストレージシステムが使用されることが多い。
【０００３】
[0005]  これらのストレージシステムは、長期間にわたるデータの安全な保持および管理を容易にするいくつかの機能を備えている。これらの機能の１つは、アーカイブ対象データに関連する管理情報（これ以降「メタデータ」と呼ばれる）を保持することである。データを検索するために使用されるキーワードなど、一部のメタデータは、アーカイブアプリケーションなどを通じて、ストレージシステムのクライアントによって決定され設定される。このタイプのメタデータは、「ユーザ」メタデータと呼ばれる。他のタイプのメタデータは、ストレージシステム自身によって自動的に設定される。これらのタイプのメタデータは、「システム」メタデータと呼ばれる。たとえば、一部のタイプのストレージシステムでは、データエントリごとにメタデータの一部としてハッシュ値を自動的に計算して格納することもできる。ハッシュ値は、ＭＤ５、ＳＨＡ１、ＳＨＡ２５６など、当技術分野で既知の暗号ハッシュ関数によって計算される。格納されているデータのハッシュ値を定期的に再計算して、新しく計算されたハッシュ値を、データが最初に格納されたときに計算された格納ハッシュ値と比較することにより、ストレージシステムは、長時間経過後の記憶媒体または他の装置の劣化などが原因で、格納データに予期せぬ変更があったかどうかを判別するために自動的に検査を実行することができる。加えて、一部のストレージシステムは、アーカイブ対象データのアドレスとして、ハッシュ値、ハッシュ値の一部、またはハッシュ値から導かれた値を使用する。この場合、データのアドレスはコンテンツアドレスと呼ばれ、これらのストレージシステムはＣＡＳ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓｅｄ  Ｓｔｏｒａｇｅ；コンテンツアドレスストレージ）システムと呼ばれる。関連技術は、開示全体を本願に引用して援用する、Ｃａｒｐｅｎｔｉｅｒらによる「Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｅｎｃａｐｓｕｌａｔｉｏｎ，Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ，ａｎｄ  Ｔｒａｎｓｆｅｒ」と題する米国特許第６，８０７，６３２号を含む。
【０００４】
[0006]  ただし、前述のシステムは管理コストの軽減に役立つが、大規模なアーカイブシステムの所有者はさらに、ハードウェアコストを削減できることも望むであろう。ハードウェアコストを削減する基本的な解決策は、必要とされる全記憶容量が軽減されるように、アーカイブシステムに格納されるデータの総量を軽減することである。
【０００５】
[0007]  ストレージシステムに格納されるデータの量を軽減するために、１つの解決策としてデータ圧縮が使用されうる。しかし、データが圧縮された後であっても、元のデータのハッシュ値は、一部のアプリケーションがコンテンツアドレス、検索キーなどとしてハッシュ値を使用することもあるので、削除されてはならない。さらに、圧縮データのハッシュ値は、ストレージシステムがデータの整合性を検査するために使用できるように、生成され保持されるべきである。ストレージシステムが圧縮データのハッシュ値を持たない場合、ストレージシステムは、各々の整合性検査中にすべての圧縮データを展開する必要がある。加えて、たとえば画像、音声ファイル、およびムービーなど、データのタイプの中には、ストレージシステムに書き込まれる以前にすでに圧縮されているものもあるので、すべてのタイプのアーカイブデータが圧縮に適しているわけではない。さらに、消費されるＣＰＵサイクルおよびアクセス待ち時間の増大と比較した場合、実際に保存される容量は限定されているので、非常に小さいファイルを圧縮することは必ずしも効果的とはいえない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、圧縮すべきデータおよび圧縮すべき方法を定義して指定し、非圧縮データと共に圧縮データを効果的に管理することができる機能が必要とされている。
【課題を解決するための手段】
【０００７】
[0008]  本発明の実施形態は、アーカイブ対象データを圧縮し、ユーザによって定義された条件に基づいて関連メタデータを保持するなど、コンピュータストレージシステムにおいてアーカイブ対象データを管理する方法および装置を含む。本発明の実施形態は、ユーザによって定義された条件に基づいて、ストレージシステムの一部のデータを自動的に圧縮することにより格納されるアーカイブ対象データの量を軽減する。本発明の実施形態は、圧縮データおよび非圧縮データをストレージシステムに格納して管理する。本発明の前述のさまざまな特徴および利点は、以下の好ましい実施形態の詳細な説明を参照すれば、当業者には明らかとなろう。
【０００８】
[0009]  前述の一般的な説明と併せて、添付の図面、および以下に示される好ましい実施形態の詳細な説明は、現在検討されている本発明の最善の好ましい実施形態の原理を明らかにし、説明する上で役立つ。
【発明を実施するための最良の形態】
【０００９】
[0021]  本発明の以下の詳細な説明において、開示の一部を形成する添付の図面に参照が行われ、図面において、限定的ではなく例示的に、本発明が実施されうる具体的な実施形態が示される。図において、複数の表示全体を通じて類似する番号は概ね類似する構成要素を説明する。さらに、図面、前述の説明、および以下の説明は、例示および説明のためのものであり、いかなる方法によっても本発明または本出願の範囲を限定することを意図されてはいない。
【００１０】
[0022]  本発明の実施形態は、ストレージシステムに格納されているデータを選択的に圧縮するストレージシステムを開示する。データがストレージシステムに格納された後、ストレージシステムは、ユーザによって、またはユーザに対して定義されている条件に基づいてデータが圧縮されるべきであるかどうか検査する。ストレージシステムは、圧縮されるべきであるとストレージシステムが判別するデータを自動的に圧縮し、メタデータに圧縮の詳細を記録して、元のデータを圧縮データと置き換える。ストレージシステムの実施形態はまた、ストレージシステムが圧縮データを展開することなく圧縮データの整合性を検査できるように、圧縮データのハッシュ値を生成する。データを格納するアプリケーションがデータのコンテンツアドレスとして、または検索キーなどとして、元のハッシュ値を使用することができるように、元の（非圧縮）データのハッシュ値もまた保持される。
【００１１】
[0023]  システムアーキテクチャ
[0024]  図１は、本発明の方法および装置が適用されうる情報システムの例示的なアーキテクチャの概要を示す。１つまたは複数のクライアントコンピュータ１０００は、ストレージシステム１２００と通信するためにローカルエリアネットワーク（ＬＡＮ）１００２を介して接続される。クライアントコンピュータ１０００は、ＬＡＮ１００２経由のストレージシステム１２００へのＲＥＡＤまたはＷＲＩＴＥ要求のように、入出力（Ｉ／Ｏ）オペレーションを発行することにより、ストレージシステム１２００内に格納されているデータおよび／またはメタデータにアクセスすることができる。たとえば、ストレージシステムがファイルシステムインターフェイスを備える場合、入出力要求は、標準ＮＦＳ（ネットワークファイルシステム）またはＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコルを介して発行されてもよく、ファイルとして格納されるデータおよび／またはメタデータを指定するパスおよびファイル名を含むことができる。データおよびメタデータのファイルは、命名、配置などに基づく規則によって関連付けられてもよい。一方、ストレージシステムがＣＡＳシステムである場合、入出力要求は、コンテンツアドレスを含むことができ、クライアントコンピュータ１０００にインストールされているライブラリによって提供されるＡＰＩ（アプリケーションプログラムインターフェイス）を介して発行されうる。本発明は、これらのストレージシステムのタイプおよび当技術分野で既知のその他のストレージシステムのいずれにも適用可能である。
【００１２】
[0025]  ストレージシステム１２００は、管理サーバ１１００から管理者によって管理される。管理サーバ１１００は、メモリ１１０１に格納されている管理プログラム１１０５を実行するＣＰＵ１１０２を有する。管理者は、管理プログラム１１０５を使用して、ユーザインターフェイス１１０３経由の通信によりストレージシステム１２００を管理する。管理サーバ１１００は、ＬＡＮケーブル１１０６を介して、またはＬＡＮ１００２を介してストレージシステム１２００と通信するために管理サーバ１１００を接続するＬＡＮポート１１０４を含む。したがって、ＬＡＮ１１０６は、ＬＡＮ１００２と一体化されていても、またはＬＡＮ１００２と分離したものであってもよい。さらに、ＬＡＮ１００２は、イーサネット（登録商標）、無線などのように、通信を可能にする任意の種類のネットワークであってもよい。管理者は通常、ＲＥＡＤ要求およびＵＰＤＡＴＥ要求という２つの種類の要求を、本発明の下でストレージシステム１２００に送信する。ＲＥＡＤ要求は、クライアントテーブル１２０７および圧縮条件テーブル１２０８を読み取る。管理者は、ユーザインターフェイス１１０３を使用して、管理プログラム１１０５にこれらのテーブルを設定または変更させ、ＵＰＤＡＴＥ要求を送信してストレージシステム１２００内のこれらのテーブルを更新し、既存のテーブルを新しい更新済みテーブルに置き換えることができる。
【００１３】
[0026]  ストレージシステム１２００は、クライアントコンピュータ１０００および管理サーバ１１００との通信を可能にするための１つまたは複数のＬＡＮポート１２０４を含む制御装置１２１１を有する。ストレージシステム１２００はまた、データ１２２２およびメタデータ１２２３が格納される記憶媒体を提供するディスクドライブ１２２０のような、１つまたは複数の記憶装置を含む。一部の実施形態において、データ１２２２およびメタデータ１２２３はまた、メモリ１２０２にキャッシュされてもよい。１つまたは複数の論理コンテナ１２２１は、各ディスクドライブ１２２０で作成されるか、または複数のディスクドライブ１２２０から作成されてもよい。たとえば、ストレージシステムがファイルシステムインターフェイスを実施する場合、論理コンテナは論理ユニット内にファイルシステムとして形成され、データおよびメタデータはファイルとして格納される。一方、ストレージシステムがＣＡＳシステムである場合、論理コンテナはオブジェクトプールとして形成されてもよく、データとメタデータのペアは、データおよびメタデータから成るオブジェクトとして格納されうる。簡単にするため、１つのディスクドライブと１つの論理コンテナが図１に示されるが、代替実施形態において、複数のディスクドライブと複数のコンテナが提供されてもよい。さらに、本実施形態において示されるストレージデバイス１２２０はディスクドライブとして説明されているが、他の実施形態においてソリッドステートメモリ、光ドライブなどが使用されてもよい。
【００１４】
[0027]  ＣＰＵ１２０１は、メモリ１２０２またはその他のコンピュータ可読媒体内のストレージシステム制御プログラム１２０６を実行する。ストレージシステム制御プログラム１２０６は、クライアントから送信されるＲＥＡＤおよびＷＲＩＴＥ要求のような入出力オペレーションを処理するだけではなく、データ圧縮および整合性検査のバックグラウンドプロセスも実行する。バックグラウンドプロセスの実行のタイミングは、クロック１２０９を参照することにより決定される。ストレージシステム制御プログラム１２０６はまた、管理サーバ１１００と通信し、クライアントコンピュータ１０００のユーザまたは管理サーバ１１００の管理者によって定義されている読み取りおよび更新条件の管理要求を処理する。
【００１５】
[0028]  メモリ１２０２には、図２に示されるような、各クライアントの条件セットを定義するクライアントテーブル１２０７が含まれている。図２において、クライアントテーブル１２０７は、クライアントのＩＤを含むクライアント識別子（ＩＤ）エントリ２００１を含む。たとえば、クライアントＩＤは、ＩＰアドレス、ＵＩＤ／ＧＩＤ（ユーザＩＤ／グループＩＤ）などであってもよい。クライアントテーブル１２０７は、クライアントＩＤ２００１を、クライアントテーブル１２０７に一覧される各クライアントに割り当てられているか、または設定されている条件セットエントリ２００２のＩＤと相関させる。クライアントテーブル１２０７は、圧縮条件テーブル１２０８および１つまたは複数の条件セット３００２と共に使用されて、各クライアントのデータが圧縮される方法と時期について詳細にわたる制御を行う。
【００１６】
[0029]  図３に示されるように、圧縮条件テーブル１２０８は、ストレージシステム１２００のメモリ１２０２に格納されてもよく、１つまたは複数の圧縮条件セット３００２を含む。各条件セット３００２は、条件セットＩＤ３００１によって識別され、条件テーブル１２０８によって保持される。ストレージシステム１２００のユーザの必要に応じて、多種多様の条件セット３００２が生成されうる。さらに、条件セットは、本実施形態において、クライアントテーブル１２０７を通じてクライアントおよびクライアントＩＤに関連付けられるが、その他の実施形態において、条件セットはストレージシステム、特定の論理ボリュームなどの論理パーティションに関連付けられてもよい。
【００１７】
[0030]  条件セットＩＤ３００１に対応する圧縮条件セット３００２の詳細の例が、図４に示される。各条件セット３００２は、特定のタイプのデータの圧縮条件を含み、圧縮条件が適用されるデータのタイプを記述するデータタイプエントリ４００１を含む。データタイプ４００１は、たとえば、ｈｔｍｌ、ｗａｖ、ｔｉｆ、ｇｉｆ、ｐｄｆ、ｔｘｔ、ｄｏｃなどのような、ファイルタイプ名拡張識別子によって定義されてもよい。Ｍａｘサイズ４００２およびＭｉｎサイズ４００３はそれぞれ、圧縮されうるデータの最大および最小サイズを定義する。これらの値がＮ／Ａ（該当なし）である場合、データサイズに関しては制限がない。さらに、Ｍａｘサイズ４００２として「０」を指定することにより、特定のデータタイプが圧縮されないようにすることができる。たとえば、特定のデータタイプがすでに圧縮形式になっている場合、さらにデータの圧縮を試みることで利益は得られない。また、前述のように、小さいファイルを圧縮することで節約されるスペースの量は、追加の処理オーバーヘッドが生じることを保証するわけではないので、圧縮の最小サイズは有用である場合もある。
【００１８】
[0031]  条件セット３００２はまた、圧縮の結果として達成されうるべき最小容量節減率、つまり元のデータのサイズと比較した圧縮データのサイズの最小比率を定義する圧縮効率のしきい値比率４００４を含む。予測される容量節減率が、指定されたしきい値４００４よりも小さいか、または等しい場合、データは圧縮されない。たとえば、図４に示される条件セット３００２の第２のエントリは、この条件セットで「ｗａｖ」ファイルがどのように処理されるかを指定する。アーカイブされるｗａｖファイルが２ＧＢよりも大きいか、または１ＭＢよりも小さい場合、ファイルは圧縮されない。加えて、圧縮の後、圧縮データが元のデータよりも３０パーセント以上縮小されないことが予測される場合、ファイルは圧縮されない。一方、ｗａｖファイルが２ＧＢから１ＭＢのサイズである場合、圧縮により３０パーセントを超えるサイズの縮小が行われるので、ファイルは圧縮される。
【００１９】
[0032]  アルゴリズム４００５は、各データタイプ４００１に使用されるべき圧縮アルゴリズムを定義する。たとえば、図４において、タイプ「ｈｔｍｌ」のデータは、元のデータサイズが８ＫＢよりも大きい場合に、「Ｚｉｐ」、「Ｇｚｉｐ」、または「Ｂｚｉｐ２」アルゴリズムによって圧縮データとして格納される。タイプ「ｗａｖ」のデータは、元のデータサイズが２ＧＢよりも小さく、１ＭＢよりも大きく、しかも容量節減率が３０％よりも大きい場合に、「ＦＬＡＣ」（Ｆｒｅｅ  Ｌｏｓｓｌｅｓｓ  Ａｕｄｉｏ  Ｃｏｄｅｃ）アルゴリズムによって圧縮データとして格納される。特定のストレージシステム１２００の使用に応じて、通常、多数のその他のデータタイプ４００１が各条件セット３００２に含まれてもよい。各データタイプの圧縮条件は、クライアントの基本設定、望ましい結果などに従って、クライアントまたは管理者によって指定または設定される。
【００２０】
[0033]  メタデータ
[0034]  各データ単位１２２２には、各々メタデータ１２２３が関連付けられている。たとえば、格納されるべき離散データ単位がファイルである場合、ファイルは、サイズ、ファイル名、所有者などのようなメタデータを関連付けられる。場合によっては、内容データに関連付けられているメタデータと区別するために、データ自身が内容データと呼ばれることもある。図５に示されるように、メタデータ１２２３は、（１）ストレージシステム制御プログラムによって設定され、ユーザには変更することができないシステムメタデータ５１００と、（２）クライアントまたは管理者などのユーザが設定することができるユーザメタデータ５２００という２つのタイプ５００１に分類されうる。図５は、さまざまなメタデータ属性５００２と、各メタデータ属性５００２に関連付けられている値５００３を示す。図５において、元のデータのハッシュ値５００４は、元のデータのハッシュ値、つまり、圧縮が実行される場合に、データの圧縮前に計算される値である。圧縮状況５００５は、「Ｄｏｎｅ（完了）」または「Ｎｏｔ  Ｄｏｎｅ（未完了）」に設定されうる。「Ｄｏｎｅ」は、ストレージシステム制御プログラムが、メタデータに関連付けられている特定のデータが圧縮されるべきであるかどうかに関して決定を行ったことを意味する。「Ｎｏｔ  Ｄｏｎｅ」は、ストレージシステム制御プログラムがこの決定をまだ行っていないことを意味する。圧縮アルゴリズム５００６は、データが圧縮される場合に、データの圧縮に使用されるアルゴリズムの名前に設定される。圧縮データのハッシュ値５００７は、圧縮が実行される場合に、データの圧縮後に計算される圧縮データのハッシュ値に設定される。クライアントＩＤ５００８は、格納のためにデータをストレージシステムに書き込むクライアントのＩＤである。データタイプ５００９は、上記の条件セット３００２でデータタイプエントリ４００１に関して説明された、データのタイプである。元のデータのサイズ５０１０は、バイト数など、元のデータのサイズである。圧縮データのサイズ５０１１は、バイト数など、圧縮後のデータのサイズである。元のデータのサイズおよび圧縮データのサイズを共に有することで、ユーザは圧縮の有効性を判別することができるようになる。圧縮５０１２などの、ユーザメタデータ属性は、「ＹＥＳ」または「ＮＯ」に設定される。「ＹＥＳ」は、ストレージシステム１２００がデータの圧縮を行うことを許可することを意味し、「ＮＯ」は、ユーザがデータの圧縮を希望しないことを意味する。ユーザ指定のタグ５０１３は、検索の目的などで、データの場所を見つけるために使用される、ユーザによって指定された名前またはキーワードであってもよい。その他のシステムおよびユーザメタデータ属性もまた、前述の内容は例示的であることが理解された上で使用されてもよい。
【００２１】
[0035]  クライアントおよび管理サーバからの要求の処理
[0036]  図６は、クライアントコンピュータ１０００および／または管理サーバ１１００から送信される要求を処理するストレージシステム制御プログラム１２０６の流れを示す。
【００２２】
[0037]  ステップ６００１において、ストレージシステム制御プログラム１２０６は、要求を受信し、それがクライアントコンピュータから送信された要求であるかどうかを判別する。
【００２３】
[0038]  ステップ６００２において、ストレージシステム制御プログラム１２０６は、要求のタイプを読み取り要求または書き込み要求として識別する。
【００２４】
[0039]  ステップ６００３において、クライアントコンピュータからの要求が書き込み要求である場合、ストレージシステム制御プログラム１２０６は、図７に示されるプロセスを実行する。
【００２５】
[0040]  ステップ６００４において、クライアントコンピュータからの要求が読み取り要求である場合、ストレージシステム制御プログラム１２０６は、図８に示されるプロセスを実行する。
【００２６】
[0041]  ステップ６００５において、要求がクライアントコンピュータからの要求ではない場合、ストレージシステム制御プログラム１２０６は、要求が管理サーバ１１００から送信されたものであるかどうか判別する。
【００２７】
[0042]  ステップ６００６において、要求が管理サーバから送信されたものである場合、ストレージシステム制御プログラム１２０６は、要求が読み取り要求であるかどうか、または要求が更新要求であるかどうかを判別する。
【００２８】
[0043]  ステップ６００７において、管理サーバからの要求が読み取り要求である場合、ストレージシステム制御プログラムは、読み取り要求に応答して、クライアントテーブル１２０７および圧縮条件テーブル１２０８を管理サーバに送信する。
【００２９】
[0044]  ステップ６００８において、管理サーバからの要求が更新要求である場合、ストレージシステム制御プログラム１２０６は、更新済みクライアントテーブル１２０７および／または更新済み圧縮条件テーブル１２０８を管理サーバ１１００から受信し、既存のテーブルを更新する。テーブル１２０７および／または１２０８が更新された後、ストレージシステム制御プログラム１２０６は、更新により影響を受けるストレージシステム内のすべてのデータの圧縮状況メタデータ５００５を「Ｎｏｔ  Ｄｏｎｅ」に設定して、更新テーブル１２０７、１２０８で設定された可能性のある新しい圧縮条件に従ってデータが圧縮されるかどうかを判別するためにこのデータが検査されるようにする。
【００３０】
[0045]  図７は、書き込み要求がクライアントコンピュータ１０００から受信されたときに、ストレージシステム制御プログラム１２０６によって図６のステップ６００３において実行されるプロセスの詳細な流れを示す。
【００３１】
[0046]  ステップ７００１において、ストレージシステム制御プログラムは、クライアントコンピュータ１０００から送信されたデータ１２２２および／またはユーザメタデータを受信する。
【００３２】
[0047]  ステップ７００２において、ストレージシステム制御プログラム１２０６は、データ１２２２および／またはユーザメタデータをメモリ１２０２のキャッシュまたはディスクドライブ１２２０に格納する。
【００３３】
[0048]  ステップ７００３において、ストレージシステム制御プログラム１２０６は、データ１２２２のシステムメタデータを作成し、データ１２２２に対応するメタデータ１２２３として格納するために、このメタデータをステップ７００１で受信された任意のユーザメタデータに含める。前述のように、システムメタデータは、クライアントＩＤ５００８、データタイプ５００９、および元のサイズ５０１０を含むことができる。
【００３４】
[0049]  ステップ７００４において、ストレージシステム制御プログラム１２０６は、ステップ７００１においてデータ（つまり、内容データ）が受信されて書き込まれた（つまり、検索タグのようなユーザメタデータしか書き込まれない可能性もあるので、ユーザメタデータに変えて、またはユーザメタデータに加えて）かどうかを判別する。
【００３５】
[0050]  ステップ７００５において、ストレージシステム制御プログラム１２０６は、受信されたデータのハッシュ値を計算し、その結果を元のデータ５００４のハッシュ値としてシステムメタデータに記録する。
【００３６】
[0051]  ステップ７００６において、ストレージシステム制御プログラム１２０６は、このデータにはまだ圧縮に関する決定は行われていないので、圧縮アルゴリズム５００６および圧縮データのハッシュ値５００５を「Ｎ／Ａ」に設定する。
【００３７】
[0052]  ステップ７００７において、ストレージシステム制御プログラム１２０６は、システムメタデータ圧縮状況を「Ｎｏｔ  Ｄｏｎｅ」に設定する。これらのステップは、データがストレージシステムに書き込まれたときにメタデータが更新されることを確認する。ユーザメタデータのみがクライアントによって変更される場合、データ自体には変更がないので、ストレージシステム制御プログラムが圧縮に関連するシステムメタデータを変更することはない。しかし、ストレージシステム制御プログラムは圧縮状況５００５を「Ｎｏｔ  Ｄｏｎｅ」に変更して、データが新しいユーザメタデータに確実に適合するように圧縮されるかどうかを判別するため、データが検査されるようにする。
【００３８】
[0053]  図８は、読み取り要求がクライアントコンピュータから受信されたときに、図６のステップ６００４において実行される処理の詳細な流れを示す。
【００３９】
[0054]  ステップ８００１において、ストレージシステム制御プログラム１２０６は、ディスクドライブ１２２０から読み取り要求で指定されているデータ１２２２および／またはメタデータ１２２３を読み取る。
【００４０】
[0055]  ステップ８００２において、ストレージシステム制御プログラム１２０６は、対応するメタデータを参照することにより、データが圧縮されているかどうかを判別する。たとえば、圧縮アルゴリズム５００６が「Ｎ／Ａ」に設定されている場合、データは圧縮されていない。
【００４１】
[0056]  ステップ８００３において、ストレージシステム制御プログラム１２０６は、システムメタデータ圧縮アルゴリズムエントリ５００６に記録されているアルゴリズムを使用して、指定されたデータを展開（解凍）する。
【００４２】
[0057]  ステップ８００４において、ストレージシステム制御プログラム１２０６は、データおよび／または要求されたメタデータを要求元クライアントコンピュータに送信する。これらのステップにより、クライアントは、同じアクセスインターフェイスを使用して圧縮データと非圧縮データのいずれも読み取ることができる。
【００４３】
[0058]  データ圧縮および整合性検査のプロセス
[0059]  図９は、ストレージシステム制御プログラム１２０６のバックグラウンドプロセスの流れを示す。このバックグラウンドプロセスと図６に示されるプロセスは、ストレージシステム制御プログラム１２０６において同時に実行する。この実施形態におけるデータの圧縮は、データがリアルタイムで圧縮される場合に発生する可能性のあるパフォーマンス低下を避けるために、バックグラウンドプロセスとして実行される。前述のように、ストレージシステムに格納されているデータの定期的な整合性検査もまた、記憶媒体が劣化していないことなどを確認するために、ストレージシステム制御プログラム１２０６によってバックグラウンドプロセスとして実行され、これらの２つのプロセスの相互作用については図９を参照してさらに説明される。
【００４４】
[0060]  ステップ９００１において、データ単位（つまり、ファイル、オブジェクトなど）ごとに、ストレージシステム制御プログラム１２０６は、データの圧縮が指定されている／許可されているかどうかを調べ、圧縮が指示されている場合はデータを圧縮する。ステップ９００１の詳細は、図１０Ａ〜図１０Ｂに示され、以下でさらに説明される。
【００４５】
[0061]  ステップ９００２において、圧縮プロセスの完了後、ストレージシステム制御プログラム１２０６は、ストレージシステムに格納されているデータの定期的整合性検査を実行する時間まで待機する。
【００４６】
[0062]  ステップ９００３において、定期的整合性検査を実行する時間に達した場合、各データに対して、ストレージシステム制御プログラム１２０６は、データに予期せぬ変更があるかどうかを検査する。
【００４７】
[0063]  図１０Ａおよび図１０Ｂは、圧縮が指示されているかどうかを判別して、圧縮が指示されている場合に圧縮を実行する、図９のステップ９００１の詳細を示す。
【００４８】
[0064]  ステップ１０００１において、ストレージシステム制御プログラム１２０６は、処理されるべき１つの離散データ１２２２（つまり、ファイル、オブジェクトなどのデータ単位）を選択し、選択されたデータのメタデータ１２２３を取り出す。
【００４９】
[0065]  ステップ１０００２において、ストレージシステム制御プログラム１２０６は、選択されたメタデータ１２２３の圧縮状況５００５が、「Ｄｏｎｅ」または「Ｎｏｔ  Ｄｏｎｅ」の圧縮状況のいずれを示すかどうかを検査する。圧縮状況５００５が「Ｄｏｎｅ」を示す場合、この特定のデータはさらに処理される必要はないので、プロセスは図１０Ｂのステップ１００２１に進む。それ以外の場合、圧縮状況５００５が「Ｎｏｔ  Ｄｏｎｅ」を示すのであれば、プロセスはステップ１０００３に進む。
【００５０】
[0066]  ステップ１０００３において、ストレージシステム制御プログラム１２０６は、メタデータ１２２３から選択されたデータのクライアントＩＤ５００８を判別して、クライアントテーブル１２０７および圧縮条件テーブル１２０８からクライアントＩＤに対応する特定の条件セットを判別する。
【００５１】
[0067]  ステップ１０００４において、ストレージシステム制御プログラム１２０６は、メタデータ１２２３から選択されたデータのデータタイプ５００９を判別し、メタデータ１２２３のデータタイプ５００９と一致する対応するデータタイプエントリ４００１に基づいて、ステップ１０００３において選択された条件セットの条件エントリを選択する。以下のステップにおいて、ストレージシステム制御プログラム１２０６は、選択された条件エントリに基づいて決定を行う。
【００５２】
[0068]  ステップ１０００５において、ストレージシステム制御プログラム１２０６は、選択されたメタデータ１２２３の圧縮アルゴリズム５００６が「Ｎ／Ａ」に設定されているかどうかを判別する。
【００５３】
[0069]  ステップ１０００６において、ストレージシステム制御プログラム１２０６が、メタデータの圧縮アルゴリズムエントリ５００６が「Ｎ／Ａ」に設定されていないと判別する場合、これは指定されたアルゴリズムがすでにデータの圧縮に使用されており、指定されたアルゴリズムの名前がメタデータ１２２３の圧縮アルゴリズムエントリ５００６に格納されていることを意味する。ストレージシステム制御プログラムは、メタデータ１２２３に圧縮アルゴリズム５００６として記録されているアルゴリズムを使用して圧縮データを展開することにより、一時データを作成する。
【００５４】
[0070]  それ以外の場合、ステップ１０００７において、ストレージシステム制御プログラム１２０６は、選択されたデータをコピーすることにより一時データを作成し、圧縮アルゴリズム５００６のエントリとしての「Ｎ／Ａ」はデータが圧縮されていないことを示すので、データを解凍する必要はない。
【００５５】
[0071]  ステップ１０００８において、ストレージシステム制御プログラム１２０６は、ユーザメタデータ圧縮エントリ５０１２が圧縮を「Ｙｅｓ」と示すかどうかに基づいて、データが圧縮されるかどうかを判別する。
【００５６】
[0072]  ステップ１０００９において、圧縮エントリ５０１２で圧縮が「Ｙｅｓ」と示される場合、ストレージシステム制御プログラム１２０６は、一時データのサイズが最小サイズしきい値４００３（ある場合）よりも大きいかどうかに基づいて、データが圧縮されてよいかどうかを判別する。
【００５７】
[0073]  ステップ１００１０において、一時データのサイズが最小サイズしきい値４００３よりも大きい場合、ストレージシステム制御プログラム１２０６は、一時データのサイズが最大サイズしきい値４００２（ある場合）よりも小さいかどうかに基づいて、データが圧縮されてよいかどうかを判別する。
【００５８】
[0074]  ステップ１００１１において、一時データの条件しきい値との比較に基づいてデータが圧縮されてよいとストレージシステム制御プログラム１２０６が判別した場合、ストレージシステム制御プログラム１２０６は、条件に指定された１つまたは複数のアルゴリズムを使用することにより圧縮データを作成する。
【００５９】
[0075]  ステップ１００１２において、ストレージシステム制御プログラム１２０６は、複数のアルゴリズムが指定されている場合、最小のサイズを有する圧縮データを選択する。
【００６０】
[0076]  ステップ１００１３において、一時データのサイズと比較した最小圧縮データのサイズの容量節減率が、条件で設定されている容量節減率しきい値４００４（ある場合）よりも大きいかどうかを判別する。
【００６１】
[0077]  ステップ１００１４において、圧縮により達成される容量節減率がしきい値比率４００４よりも大きい場合、ストレージシステム制御プログラム１２０６は、システムメタデータ圧縮アルゴリズムエントリ５００６の圧縮データの最小サイズを達成するために使用されるアルゴリズムを記録する。
【００６２】
[0078]  ステップ１００１５において、ストレージシステム制御プログラム１２０６は、システムメタデータ１２２３の圧縮データのサイズ５０１１を設定する。
【００６３】
[0079]  ステップ１００１６において、ストレージシステム制御プログラム１２０６は、システムメタデータ１２２３の圧縮データのハッシュ値５００７を計算して記録する。
【００６４】
[0080]  ステップ１００１７において、ストレージシステム制御プログラム１２０６は、圧縮データを保管し、元のデータを削除し、それにより元のデータを圧縮データと置き換える。
【００６５】
[0081]  ステップ１００１８において、ユーザメタデータによるか、または条件しきい値を満足できないことにより、データが圧縮されるべきではないという決定が行われる場合、ストレージシステム制御プログラム１２０６は、システムメタデータ圧縮アルゴリズム５００６および圧縮データのハッシュ値５００７を「Ｎ／Ａ」に設定する。
【００６６】
[0082]  ステップ１００１９において、ストレージシステム制御プログラム１２０６は、一時データを保管し、既存のデータを削除し、それにより既存のデータを圧縮されていない一時データと効率的に置き換える。
【００６７】
[0083]  ステップ１００２０において、ストレージシステム制御プログラム１２０６は、残りの一時ファイルを削除し、システムメタデータ圧縮状況５００５を「Ｄｏｎｅ」に設定する。
【００６８】
[0084]  ステップ１００２１において、ストレージシステム制御プログラム１２０６は、ストレージシステム内の各データ単位に対して上記のステップを繰り返す。
【００６９】
[0085]  図１０Ａ〜図１０Ｂに示されるステップは、ユーザによって定義された条件が満足される場合にデータが確実に圧縮されるようにし、さらに圧縮されるべき適切なデータと、圧縮に使用されるべき効果的なアルゴリズムを指定する。元のデータのハッシュ値５００４は、データが圧縮された後でもクライアントによって検索キーまたはコンテンツアドレスとして元のデータのハッシュ値が使用されうるように、各データ１２２２に対応するメタデータ１２２３に保持される。たとえば、ＣＡＳストレージシステムにおいて、データが圧縮されている場合、圧縮データのハッシュ値は新しいアドレスとして使用されてもよい。しかし、クライアントコンピュータは、圧縮されていないアドレスしか認識していないこともある。本発明によれば、元のデータのハッシュ値５００４は、圧縮データのハッシュ値５００７と相関されうる。それにより、元のデータのハッシュ値は、圧縮データの場所を見つけるために使用できるようになり、圧縮データは展開されて、要求元クライアントに返されうる。図１０Ａ〜図１０Ｂのステップはまた、条件が更新される場合に新しい条件に従って既存のデータが確実に圧縮されるようにするか、または圧縮の条件が満足されない場合に圧縮されないようにする。
【００７０】
[0086]  データ整合性検査のプロセス
[0087]  図１１は、本発明のストレージシステムにおいて実行される、図９のステップ９００３の定期的データ整合性検査のプロセスの流れを示す。
【００７１】
[0088]  ステップ１１００１において、ストレージシステム制御プログラム１２０６は、検査されるべき１つのデータ単位（つまり、ファイル、データオブジェクトなど）を選択する。
【００７２】
[0089]  ステップ１１００２において、ストレージシステム制御プログラム１２０６は、ステップ１１００１において選択されたデータの新しいハッシュ値を計算する。
【００７３】
[0090]  ステップ１１００３において、ストレージシステム制御プログラム１２０６は、メタデータ１２２３の圧縮アルゴリズムエントリ５００６が、データが圧縮されていないことを示す「Ｎ／Ａ」であるかどうかを判別する。
【００７４】
[0091]  ステップ１１００４において、圧縮アルゴリズム５００６が「Ｎ／Ａ」である場合、データは圧縮されていないので、ストレージシステム制御プログラム１２０６は、計算した新しいハッシュ値を、選択されたデータのメタデータ１２２３に格納されている元のデータのハッシュ値５００４と比較する。
【００７５】
[0092]  一方、ステップ１１００５において、圧縮アルゴリズム５００６が「Ｎ／Ａ」ではない場合、データが圧縮されていることを示し、ストレージシステム制御プログラム１２０６は、計算した新しいハッシュ値を、対応するメタデータに格納されている圧縮データのハッシュ値５００７と比較する。
【００７６】
[0093]  ステップ１１００６において、ストレージシステム制御プログラム１２０６は、ステップ１１００４またはステップ１１００５のいずれかにおいて比較されたハッシュ値が異なっているかどうかを判別する。
【００７７】
[0094]  ステップ１１００７において、比較されたハッシュ値が異なる場合、データに予期せぬ変更があるので、ストレージシステム制御プログラム１２０６は管理サーバにアラートを送信する。
【００７８】
[0095]  ステップ１１００８において、ストレージシステム制御プログラム１２０６は、プロセスがストレージシステムに格納されている各データに繰り返されるまで、開始に戻る。このようにして、本発明のデータ整合性検査の方法は、ストレージシステム制御プログラム１２０６が、圧縮データを展開することなく圧縮データの整合性を検査できるようにする。
【００７９】
[0096]  本発明は、ユーザによって定義された条件に基づいて、ストレージシステムに格納されているデータを自動的に圧縮することにより、格納されるデータの量を軽減する方法および装置を提供するために使用される。本発明は、圧縮データおよび非圧縮データをストレージシステム内に格納して管理する方法および装置を提供する。ユーザによって定義される条件は、圧縮されるべき適切なデータ、およびデータ圧縮に使用されるべき効果的なアルゴリズムを指定することができる。条件が変更された場合、ストレージシステムは、各データが新規または変更済みの条件に従って圧縮されるかどうかを検査し、必要に応じて、新規または変更済みの条件に従って圧縮を再実行する。さらに、ストレージシステムは、ストレージシステムが圧縮データを展開することなく圧縮データの継続的な整合性を検査できるように、圧縮データのハッシュ値を生成する。データを格納するアプリケーションがコンテンツアドレス、または検索キーなどとして、元のハッシュ値を使用することができるように、データが圧縮されている場合であっても、元のデータのハッシュ値もまた保持される。
【００８０】
[0097]  上記の説明から、本発明がストレージシステムのデータを圧縮する改良された方法および装置を提供することが明らかとなろう。加えて、特定の実施形態が本明細書に示され説明されてきたが、同一の目的を達成するために計算される任意の構成が、開示されている特定の実施形態に代用されうることが当業者には理解されるであろう。本開示は、本発明の任意およびすべての適応または変形を対象とすることが意図され、上記の説明が限定的ではなく例示的に行われていることを理解されたい。したがって、本発明の範囲は、冒頭の特許請求の範囲を、かかる特許請求の範囲が与えられるあらゆる等価物と共に参照することで、適正に決定されるべきである。
【図面の簡単な説明】
【００８１】
【図１】[0010]本発明の方法および装置が適用されうるハードウェア構成の例を示す図である。
【図２】[0011]クライアントテーブルの例示的なデータ構造を示す図である。
【図３】[0012]圧縮条件テーブルの例示的なデータ構造を示す図である。
【図４】[0013]条件セットの例示的なデータ構造を示す図である。
【図５】[0014]メタデータの例示的なデータ構造を示す図である。
【図６】[0015]クライアントおよび管理サーバから送信される要求を処理するストレージシステム制御プログラムの例示的なプロセスの流れを示す図である。
【図７】[0016]クライアントから送信されるＷＲＩＴＥ要求の例示的なプロセスの流れを示す図である。
【図８】[0017]クライアントから送信されるＲＥＡＤ要求の例示的なプロセスの流れを示す図である。
【図９】[0018]ストレージシステム制御プログラムのバックグラウンドプロセスの例示的なプロセスの流れを示す図である。
【図１０Ａ】[0019]データの圧縮が必要とされるかどうか、および圧縮がどのように実行されるかを判別する、図９のステップ９００１で実行される例示的なプロセスの流れを示す図である。
【図１０Ｂ】データの圧縮が必要とされるかどうか、および圧縮がどのように実行されるかを判別する、図９のステップ９００１で実行される例示的なプロセスの流れを示す図である。
【図１１】[0020]図９のステップ９００３で実行されるデータ整合性検査の例示的なプロセスの流れを示す図である。
【図１】
0005087467.tif 000002
【図２】
0005087467.tif 000003
【図３】
0005087467.tif 000004
【図４】
0005087467.tif 000005
【図５】
0005087467.tif 000006
【図６】
0005087467.tif 000007
【図７】
0005087467.tif 000008
【図８】
0005087467.tif 000009
【図９】
0005087467.tif 000010
【図１０Ａ】
0005087467.tif 000011
【図１０Ｂ】
0005087467.tif 000012
【図１１】
0005087467.tif 000013