(57)【要約】【課題】  データ圧縮領域へのデータの実時間分類のための方法、システム及びコンピュータ・プログラムを提供する。【解決手段】  データ圧縮領域へのデータの実時間分類のために、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関すフィンガープリントを作成することにより、データ圧縮領域のうちのどれに書込み動作を送るかの決定がなされる。類似のフィンガープリントを有する書込み動作は、一緒に類似圧縮ストリームに圧縮される。【選択図】      図４
2016512625.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境におけるプロセッサ装置によるデータ圧縮領域へのデータの実時間分類の方法であって、
書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して前記書込み動作の各々に関するフィンガープリントを作成することにより、前記データ圧縮領域のうちのどれに前記書込み動作を送るかを決定することと、
前記書込み動作のうち類似のフィンガープリントを有するものを一緒に圧縮ストリームに圧縮することと、
を含む方法。
【請求項２】
異なるフィンガープリントを有する前記書込み動作を、異なる圧縮ストリームに分割することをさらに含む、請求項１に記載の方法。
【請求項３】
前記書込み動作の各々に関する前記フィンガープリントの各々を、前記データ圧縮領域の各々に以前に送られた書込み動作のフィンガープリントと比較することをさらに含む、請求項２に記載の方法。
【請求項４】
前記類似のフィンガープリントを有する前記書込み動作を、前記書込み動作の類似のデータを圧縮する前記データ圧縮領域に送ることをさらに含む、請求項３に記載の方法。
【請求項５】
前記書込み動作を新しいデータ圧縮領域に送り、そこで新しい圧縮ストリームが作成されることをさらに含む請求項４に記載の方法。
【請求項６】
前記分類ヒューリスティックのセットを計算するために、ヒューリスティック、即ち、前記ランダムに選択されたデータのエントロピー、前記ランダムに選択されたデータ内のバイトの大多数を構成するキャラクタのコア・キャラクタ・セット及びサイズ、前記ランダムに選択されたデータ又は前記コア・キャラクタ・セットの完全な又は部分的ヒストグラム、前記ランダムに選択されたデータの支配的キャラクタの群又は非支配的キャラクタの群、前記完全な又は部分的ヒストグラム又は前記コア・キャラクタ・セットの平均、分散、及び代替モーメントのうちの１つ、並びに前記データのデータ構造の指標、の組合せ又は少なくとも１つを使用することをさらに含む、請求項１に記載の方法。
【請求項７】
前記分類ヒューリスティックのセットを計算するために類似性保持ハッシュ（ＳＰＨ）を使用することをさらに含む、請求項１に記載の方法。
【請求項８】
コンピューティング環境におけるデータ圧縮領域へのデータの実時間分類のためのシステムであって、前記システムが、
コンピューティングストレージ環境において動作可能なプロセッサ装置を含み、前記プロセッサ装置が、
書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して前記書込み動作の各々に関するフィンガープリントを作成することにより、前記データ圧縮領域のうちのどれに前記書込み動作を送るかを決定し、
前記書込み動作のうち類似のフィンガープリントを有するものを一緒に圧縮ストリームに圧縮する、
システム。
【請求項９】
前記プロセッサ装置が、異なるフィンガープリントを有する前記書込み動作を異なる圧縮ストリームに分割する、請求項８に記載のシステム。
【請求項１０】
前記プロセッサ装置が、前記書込み動作の各々に関する前記フィンガープリントの各々を、前記データ圧縮領域の各々に以前に送られた前記書込み動作のフィンガープリントと比較する、請求項９に記載のシステム。
【請求項１１】
前記プロセッサ装置が、前記類似のフィンガープリントを有する前記書込み動作を、前記書込み動作の類似のデータを圧縮する前記データ圧縮領域に送る、請求項１０に記載のシステム。
【請求項１２】
前記プロセッサ装置が、前記書込み動作を新しいデータ圧縮領域に送り、そこで新しい圧縮ストリームが作成される、請求項１１に記載のシステム。
【請求項１３】
前記プロセッサ装置が、前記分類ヒューリスティックのセットを計算するために、ヒューリスティック、即ち、前記ランダムに選択されたデータのエントロピー、前記ランダムに選択されたデータ内のバイトの大多数を構成するキャラクタのコア・キャラクタ・セット及びサイズ、前記ランダムに選択されたデータ又は前記コア・キャラクタ・セットの完全な又は部分的ヒストグラム、前記ランダムに選択されたデータの支配的キャラクタの群又は非支配的キャラクタの群、前記完全な又は部分的ヒストグラム又は前記コア・キャラクタ・セットの平均、分散、及び代替モーメントのうちの１つ、並びに前記データのデータ構造の指標、の組合せ又は少なくとも１つを使用する、請求項８に記載のシステム。
【請求項１４】
前記プロセッサ装置が、前記分類ヒューリスティックのセットを計算するために類似性保持ハッシュ（ＳＰＨ）を使用する、請求項８に記載のシステム。
【請求項１５】
プロセッサ装置によるデータ圧縮領域へのデータの実時間分類のためのコンピュータ・プログラムであって、コンピュータ可読プログラム・コード部分を有し、前記コンピュータ可読プログラム・コード部分は、
書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して前記書込み動作の各々に関するフィンガープリントを作成することにより前記データ圧縮領域のうちのどれに前記書込み動作を送るかを決定する、第１の実行可能部分と、
前記書込み動作のうち類似のフィンガープリントを有するものを一緒に圧縮ストリームに圧縮する第２の実行可能部分と、
を含む、コンピュータ・プログラム。
【請求項１６】
異なるフィンガープリントを有する前記書込み動作を、異なる圧縮ストリームに分割する第３の実行可能部分をさらに含む、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記書込み動作の各々に関する前記フィンガープリントの各々を、前記データ圧縮領域の各々に以前に送られた前記書込み動作のフィンガープリントと比較する、第４の実行可能部分をさらに含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記類似のフィンガープリントを有する前記書込み動作を、前記書込み動作の類似のデータを圧縮する前記データ圧縮領域に送る第５の実行可能部分をさらに含む、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記書込み動作を新しいデータ圧縮領域に送り、そこで新しい圧縮ストリームが作成される、第６の実行可能部分をさらに含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記分類ヒューリスティックのセットを計算するために、
ヒューリスティック、即ち、前記ランダムに選択されたデータのエントロピー、前記ランダムに選択されたデータ内のバイトの大多数を構成するキャラクタのコア・キャラクタ・セット及びサイズ、前記ランダムに選択されたデータ又は前記コア・キャラクタ・セットの完全な又は部分的ヒストグラム、前記ランダムに選択されたデータの支配的キャラクタの群又は非支配的キャラクタの群、前記完全な又は部分的ヒストグラム又は前記コア・キャラクタ・セットの平均、分散、及び代替モーメントのうちの１つ、並びに前記データのデータ構造の指標、の組合せ又は少なくとも１つを使用し、かつ
前記分類ヒューリスティックのセットを計算するために類似性保持ハッシュ（ＳＰＨ）を使用する、
第３の実行可能部分をさらに含む、請求項１５に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータに関し、より具体的には、コンピューティング環境におけるデータ圧縮領域へのデータの実時間分類に関する。
【背景技術】
【０００２】
今日の社会では、コンピュータ・システムが広く行き渡っている。コンピュータ・システムは、職場、家庭、又は学校で見いだすことができる。コンピュータ・システムは、データを処理及び格納するための、データ・ストレージ・システム又はディスク・ストレージ・システムを含むことができる。データ・ストレージ・システム又はディスク・ストレージ・システムは、データを処理及び格納するために利用される。ストレージ・システムは、１つ又は複数のディスク・ドライブを含むことができる。これらのデータ処理システムは、典型的には大容量データ・ストレージを必要とする。データ処理システム内の顧客データ又はユーザによって生成されたデータは、このデータ・ストレージのかなりの部分を占める。これらのコンピュータ・システムの多くは、仮想ストレージ・コンポーネントを含む。
【０００３】
データ圧縮は、所与の量の情報を処理し、伝達し、又は格納するのに必要なデータの量を減らすために広く用いられている。データ圧縮は、データの表現を最小化するためのデータのコード化である。圧縮を用いて、例えば、ファイルに対するストレージの要件を低減すること、チャネル上の通信速度を高めること、又はより高度なセキュリティのための暗号化に先立って冗長性を減らすことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、データ圧縮領域へのデータの実時間分類のための方法、システム及びコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００５】
一実施形態において、プロセッサ装置を使用したデータ圧縮領域へのデータの実時間分類のための方法が提供される。データ圧縮領域へのデータの実時間分類のために、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、データ圧縮領域のうちのどれに書込み動作を送るかの決定がなされる。類似のフィンガープリントを有する書込み動作は、一緒に類似圧縮ストリームに圧縮される。
【０００６】
別の実施形態において、データ圧縮領域へのデータの実時間分類のためのコンピュータ・システムが提供される。コンピュータ・システムは、コンピュータ可読媒体と、コンピュータ可読媒体と動作可能に通信するプロセッサとを含む。データ圧縮領域へのデータの実時間分類のために、プロセッサは、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、データ圧縮領域のうちのどれに書込み動作を送るかを決定する。類似のフィンガープリントを有する書込み動作は、一緒に同じ圧縮ストリーム内に圧縮される。
【０００７】
さらに別の実施形態において、データ圧縮領域へのデータの実時間分類のためのコンピュータ・プログラム製品が提供される。コンピュータ可読記憶媒体は、その上に格納されたコンピュータ可読プログラム・コード部分を有する。コンピュータ可読プログラム・コード部分は、書込み動作のランダムに選択されたデータを読み出し、書込み動作の各々に関する分類ヒューリスティックのセットを計算してフィンガープリントを作成することによりデータ圧縮領域のうちのどれに書込み動作を送るかを決定する、第１の実行可能部分を含む。類似のフィンガープリントを有する書込み動作は、一緒に同じ圧縮ストリーム内に圧縮される。
【０００８】
前述の例示的な方法の実施形態に加えて、他の例示的なシステム及びコンピュータ・プログラム製品の実施形態が提供され、関連する利益を与える。上述の要旨は、以下の詳細な説明においてさらに説明される概念の抜粋を簡単な形で紹介するために提示したものである。この要旨は、特許請求される主題の重要な特徴又は必須の特徴を特定することを意図するものではなく、特許請求される主題の範囲を定める補助として用いられることを意図するものでもない。特許請求される主題は、背景技術に記したいずれかの又は全ての不利益を解決する実施に限定されない。
【０００９】
次に、本発明の実施形態を、添付の図面を参照しながら例示の目的で説明する。
【図面の簡単な説明】
【００１０】
【図１】本発明の態様を実現することができる、例示的な記憶装置を有するコンピュータ・ストレージ環境を示すブロック図である。
【図２】本発明の態様を実現することができる、コンピュータ・システム内の例示的なデータ・ストレージ・システムのハードウェア構造を示すブロック図である。
【図３】本発明の態様を実現することができる、データ圧縮領域へのデータの実時間分類の例示的な方法を示すフローチャート図である。
【図４】本発明の態様を実現することができる、データ圧縮領域へのデータの実時間分類の付加的な例示的方法を示すフローチャート図である。
【発明を実施するための形態】
【００１１】
前述のように、コンピュータ・システムを用いて、様々な型式のデータが格納及び管理される。類似のデータを同じ圧縮ストリームを用いて圧縮することにより、圧縮比が改善され、必要なストレージが削減される。しかし、データが書き込まれるとき、１つのファイル内の連続的なブロック内であっても、コンテンツは必ずしも類似しているわけではない。例えば、画像及びテキストを有する文書を考える。画像及びテキストを有する文書に関して２つの別々の圧縮ストリームが作成され、次いで各型式のデータが別々の圧縮ストリームに送られるならば、データ圧縮の効率がより高められ、データ全体の圧縮比が改善される。
【００１２】
ブロック・ストレージ・システムでは、データ・ブロックは、どんな型式のデータが書き込まれるかという指標無しでストレージに書き込まれ、書込み間の関係の指標（例えば、同じファイルの書込み、及び、同じ型式のデータの書込み）も何ら与えられない。それゆえ、データの書込み動作を圧縮するとき、共通の属性（及び繰返し）を有さず、圧縮率の低下をもたらすことになるデータを一緒に圧縮する可能性がある。ブロック・ストレージ・システムは、書き込まれるデータの型式（又はクラス）の情報を何ら有さず、それを利用することができない。この課題を解決する試みとして、論理ブロック・アドレス（ＬＢＡ）空間の空間的局在性を用いることによる、ブロックシステム用の手法が挙げられる。所与のＬＢＡ範囲へのあらゆる書込みが一緒に圧縮され、これは、ファイル又は関連ファイルを連続して割り当てる、ファイル・システム／データベース割当てストラテジーにある程度従う。このような手法は、単一ファイル内のデータは類似しており、単一圧縮ストリームに圧縮されるべきであるという一般的なヒューリスティックに従うが、このヒューリスティックは必ずしも真実であるとは限らないことが見いだされており、それゆえデータ圧縮効率が低下する。従って、どの圧縮ストリームを使用するかの決定を実時間で行うことが必要とされており、これができなければ別々の圧縮ストリームを使用することは実用的ではない。それゆえ、どの圧縮ストリームを使用するかを選択する決定アルゴリズムは高速でなければならない（高速は相対的な用語であり、現在の技術状況で利用可能なハードウェアを使用してデータを圧縮するのに必要な時間の何分の一かとなるべきである）。
【００１３】
従って、一実施形態において、本発明は、プロセッサ装置を用いたデータ圧縮領域へのデータの実時間分類に関する解決策を提供する。データ圧縮領域へのデータの実時間分類のために、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、どのデータ圧縮領域に書込み動作を送るべきかの決定が行われる。類似のフィンガープリントを有する書込み動作は、一緒に類似圧縮ストリームに圧縮される。
【００１４】
後述するように、１つの実施形態において、本発明は、事前情報無しで、データの「クラス」（又は特性）を「検出」する（例えば、圧縮領域又は圧縮ストリームが分類される）。本発明は、データの領域に基づいて複数の圧縮ストリームに書き込むことを可能にする。本発明は、どの圧縮領域に書込み動作を送るかを識別及び決定し、どの圧縮ストリームを使用するかを決定する。圧縮領域は、１つ又は複数のアクティブ圧縮ストリームを有するものとすることができる。検出方法は、ランダムに選択された、入力データの小さい断片を読み出し、分類ヒューリスティックのセットを計算してデータのフィンガープリントを作成する。類似のフィンガープリントを有するデータは一緒に単一の圧縮ストリームに圧縮され、一方、異なるフィンガープリント及び特性を有するデータ（例えば、画像対テキスト）を含む書込み動作は、異なる圧縮ストリームに分割されることになる。このようなデータの分類及び分割は、類似データを単一ストリーム内に保持する一方で、複数のマシンを利用することにより、より多くのノードがデータの圧縮を補助することを可能にすることによって、効率を高め、分散システム（即ち、複数の圧縮ノード）のより良い利用を提供する。識別及び検出アルゴリズムは高速であり、どの圧縮領域及びストリームを使用するべきかを決定するためにデータを圧縮することを必要としない。
【００１５】
次に図１を見ると、コンピューティング環境におけるデータ・ストレージ・システムの例示的なアーキテクチャ１０が描かれている。コンピュータ・システム１０は、中央処理ユニット（ＣＰＵ）１２を含み、これが大容量記憶装置１４及びメモリ装置１６に接続される。大容量記憶装置は、ハードディスク・ドライブ（ＨＤＤ）装置、固体装置（ＳＳＤ）等を含むことができ、これらは独立ディスクの冗長アレイ（ＲＡＩＤ）に構成することができる。さらに説明されるバックアップ動作は、システム１０又は他の場所に位置する装置１４上で実行することができる。メモリ装置１６は、電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）のようなメモリ、又は関連装置のホストを含むことができる。メモリ装置１６及び大容量記憶装置１４は、信号搬送媒体を介してＣＰＵ１２に接続される。さらに、ＣＰＵ１２は、複数の付加的なコンピュータ・システム２２及び２４が取付けられた通信ネットワーク２０に通信ポート１８を通して接続される。
【００１６】
図２は、本発明による、コンピュータ・システム内のデータ・ストレージ・システムのハードウェア構造を示す例示的なブロック図２００である。図２を参照すると、データ・ストレージ・システム２００の一部の、データ処理を実行するための中央処理ユニットとして各々が動作するホスト・コンピュータ２１０、２２０、２２５が示されている。ホスト（物理又は仮想装置）２１０、２２０、及び２２５は、データ・ストレージ・システム２００内で本発明の目的を達成するための１つ又は複数の新たな物理装置又は論理装置とすることができる。１つの実施形態において、一例として、データ・ストレージ・システム２００は、ＩＢＭ（登録商標）Ｓｙｓｔｅｍ  Ｓｔｏｒａｇｅ（商標）ＤＳ８０００（商標）として実装することができる。ネットワーク接続２６０は、ファイバ・チャネル・ファブリック、ファイバ・チャネル２地点間リンク、イーサネット・ファブリック又は２地点間リンク上のファイバ・チャネル、ＦＩＣＯＮ又はＥＳＣＯＮ  Ｉ／Ｏインタフェース、その他の任意のＩ／Ｏインタフェース型式、無線ネットワーク、有線ネットワーク、ＬＡＮ、ＷＡＮ、異種、同種、公衆（即ちインターネット）、私設、又はこれらの任意の組合せとすることができる。ホスト２１０、２２０、及び２２５は、ローカルとすることも又は１つ若しくは複数の位置間に分散させることもでき、ストレージ制御装置２４０に対する任意の型式のファブリック（又はファブリック・チャネル）（図２には示さず）又はネットワーク・アダプタ２６０、例えば、ファイバ・チャネル、ＦＩＣＯＮ、ＥＳＣＯＮ、イーサネット、光ファイバ、無線、又は同軸アダプタなどを装備することができる。データ・ストレージ・システム２００には、従って、通信用の適切なファブリック（図２には示さず）又はネットワーク・アダプタ２６０が装備される。ストレージ制御装置２４０及びストレージ２３０を含むデータ・ストレージ・システム２００が図２に示される。
【００１７】
本明細書で説明する方法のより明確な理解を促進するために、ストレージ制御装置２４０は、図２において、マイクロプロセッサ２４２、システム・メモリ２４３及び不揮発性ストレージ（ＮＶＳ）２１６を含む単一の処理ユニットとして示されており、これらはより詳細に後述する。幾つかの実施形態において、ストレージ制御装置２４０は複数の処理ユニットで構成され、処理ユニットの各々がそれ自体のプロセッサ複合体及びシステム・メモリを有し、データ・ストレージ・システム２００内の専用ネットワークによって相互接続されることに留意されたい。ストレージ２３０は、ストレージ・ネットワークによってストレージ制御装置２４０に接続される、ストレージ・アレイのような１つ又は複数の記憶装置を含むことができる。
【００１８】
幾つかの実施形態において、ストレージ２３０に含まれる装置はループ・アーキテクチャで接続することができる。ストレージ制御装置２４０は、ストレージ２３０を管理し、ストレージ２３０を対象とする書込み及び読出し要求の処理を促進する。ストレージ制御装置２４０のシステム・メモリ２４３は、プログラム命令及びデータを格納し、これにプロセッサ２４２がアクセスして、ストレージ２３０の管理に関連する機能及び方法ステップを実行し、コンピュータ・ストレージ環境における本発明のステップ及び方法を実行することができる。１つの実施形態において、システム・メモリ２４３は、コンピュータ・ストレージ環境内で、本明細書で説明する方法及び動作を含むオペレーション・ソフトウェア２５０を含み、これに関係付けられ、又はこれと通信する。図２に示すように、システム・メモリ２４３はまた、それぞれ書込み／読出し要求及びそれらの関連データを指す「書込みデータ」及び「読出しデータ」をバッファリングするための、本明細書では「キャッシュ・メモリ」とも呼ばれる、ストレージ２３０のためのキャッシュ２４５を含み又はこれと通信する。１つの実施形態において、キャッシュ２４５は、システム・メモリ２４３の外部の装置内に割り付けられるが、それでもなおマイクロプロセッサ２４２がアクセスできる状態にあり、本明細書で説明する動作を実行することに加えて、データ損失に対する付加的なセキュリティを提供するように機能することができる。
【００１９】
幾つかの実施形態において、キャッシュ２４５は、揮発性メモリ及び不揮発性メモリで実装され、データ・ストレージ・システム２００の性能を向上させるためにローカル・バス（図２には示さず）を介してマイクロプロセッサ２４２に結合される。データ・ストレージ制御装置に含まれるＮＶＳ２１６は、マイクロプロセッサ２４２によってアクセス可能であり、他の図に示す本発明の動作及び実行に対する付加的なサポートを提供するように機能する。ＮＶＳ２１６は、「永続的」キャッシュ又は「キャッシュ・メモリ」と呼ぶこともでき、格納されたデータを保持するために外部電源を使用するものであってもよく、使用しないものであってもよい不揮発性メモリで実装される。ＮＶＳは、本発明の目的を達成するのに適したいずれかの目的で、キャッシュ２４５内に及びそれと共に格納することができる。幾つかの実施形態において、電池のようなバックアップ電源（図２には示さず）が、データ・ストレージ・システム２００の電力が失われた場合に格納されたデータを保持するのに十分な電力をＮＶＳ２１６に供給する。特定の実施形態において、ＮＶＳ２１６の容量は、キャッシュ２４５の全容量より小さいか又はそれに等しい。
【００２０】
ストレージ２３０は、ストレージ・アレイのような１つ又は複数の記憶装置で物理的に構成することができる。ストレージ・アレイは、ハードディスクのような個々の記憶装置の論理的なグルーピングである。特定の実施形態において、ストレージ２３０は、ＪＢＯＤ（単純ディスク束：Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）アレイ又はＲＡＩＤ（独立ディスクの冗長アレイ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）アレイで構成される。物理的ストレージ・アレイの集まりをさらに組み合せてランクを形成することができ、これが物理ストレージを論理構成から切り離す。ランク内のストレージ空間を論理ボリュームに割当てることがで、これが書込み／読出し要求内で指定されるストレージ位置を定める。
【００２１】
１つの実施形態において、単なる一例として、図２に示すストレージ・システムは、論理ボリューム又は単に「ボリューム」を含むことができ、様々な種類の割当てを有することができる。ストレージ２３０ａ、２３０ｂ及び２３０ｎは、データ・ストレージ・システム２００内のランクとして示され、ここではランク２３０ａ、２３０ｂ及び２３０ｎと呼ばれる。ランクは、データ・ストレージ・システム２００に対してローカルとすることもでき、又は物理的に遠隔位置に配置することもできる。換言すれば、ローカルストレージ制御装置は、遠隔ストレージ制御装置と接続して、遠隔位置にあるストレージを管理することができる。ランク２３０ａは、２つの完全ボリューム２３４及び２３６並びに１つの部分ボリュール２３２ａで構成されるように示されている。ランク２３０ｂは、別の部分ボリューム２３２ｂを有するように示されている。このように、ボリューム２３２は、ランク２３０ａ及び２３０ｂにわたって割り当てられている。ランク２３０ｎは、ボリューム２３８に完全に割当てられるように示されており、即ち、ランク２３０ｎは、ボリューム２３８に関する完全に物理的なストレージを指す。上記の例から、ランクは、１つ又は複数の部分的な及び／又は完全なボリュームを含むように構成することができることが理解されるであろう。ボリューム及びランクは、ストレージの固定ブロックを表す、いわゆる「トラック」にさらに分割することができる。従って、トラックには、所与のボリュームが関連付けられ、所与のランクを与えることができる。
【００２２】
ストレージ制御装置２４０は、コンピュータ・ストレージ環境内に、圧縮ストリーム・モジュール２５５、データ圧縮領域モジュール２５７、及びデータ分類モジュール２５９を含むことができる。圧縮ストリーム・モジュール２５５、データ圧縮領域モジュール２５７、及びデータ分類モジュール２５９は、ストレージ制御装置２４０、ホスト２１０、２２０、２２５、及びストレージ２３０の、各々の及びあらゆるコンポーネントと連携して働くことができる。圧縮ストリーム・モジュール２５５、データ圧縮領域モジュール２５７、及びデータ分類モジュール２５９は、以下で説明する機能を実行するために共に相互に連携して働く構造的に１つの完結モジュールとすることもでき、又は個々のモジュールとすることもできる。圧縮ストリーム・モジュール２５５、データ圧縮領域モジュール２５７、及びデータ分類モジュール２５９をストレージ制御装置２４０のキャッシュ２４５又はその他のコンポーネント内に配置して、本発明の目的を達成することもできる。
【００２３】
ストレージ制御装置２４０は、ホスト・コンピュータ２１０、２２０、２２５へのファイバ・チャネル・プロトコルを制御するための制御スイッチ２４１と、ストレージ制御装置２４０全体を制御するためのマイクロプロセッサ２４２と、ストレージ制御装置２４０の動作、制御のためのデータ及び後述する各テーブルを制御するためのマイクロプログラム（オペレーション・ソフトウェア）２５０を格納するための不揮発性制御メモリ２４３と、データを一時的に格納（バッファリング）するためのキャッシュ２４５と、キャッシュ２４５がデータを読み出す及び書き込むのを支援するためのバッファ２４４と、ストレージ２３０へのデータ転送又はストレージ２３０からのデータ転送を制御するプロトコルを制御するための制御スイッチ２４１と、圧縮ストリーム・モジュール２５５と、データ圧縮領域モジュール２５７と、情報をその上に設定することができるデータ分類モジュール２５９とによって構築することができる。複数のバッファ２４４を本発明によりコンピューティング環境内で実装することができ、又は例証した実施形態の機構に従って他の機能を実行することができる。
【００２４】
１つの実施形態においては、単なる一例として、ホスト・コンピュータ又は１つ若しくは複数の物理若しくは仮想デバイス２１０、２２０、２２５と、ストレージ制御装置２４０とが、インタフェースとしてのネットワーク・アダプタ（これはファイバ・チャネルとすることができる）２６０を通して、即ち「ファブリック」と呼ばれることもあるスイッチを介して、接続される。１つの実施形態において、単なる一例として、図２に示すシステムの動作を説明する。マイクロプロセッサ２４２は、メモリ２４３を制御して、ホスト装置（物理又は仮想）２１０からのコマンド情報及びホスト装置（物理又は仮想）２１０を識別するための情報を格納することができる。制御スイッチ２４１、バッファ２４４、キャッシュ２４５、オペレーティング・ソフトウェア２５０、マイクロプロセッサ２４２、メモリ２４３、ＮＶＳ２１６、圧縮ストリーム・モジュール２５５、データ圧縮領域モジュール２５７、及びデータ分類モジュール２５９は、相互に通信し、別々のコンポーネント又は１つの単体のコンポーネントとすることができる。また、全てではなくても幾つかのコンポーネント、例えばオペレーティング・ソフトウェア２５０は、コンピュータ・ストレージ環境内にメモリ２４３と共に含めることができる。記憶装置内のコンポーネントの各々は、相互にリンクすることができ、本発明に適した目的のために相互に通信することができる。
【００２５】
次に図３を見ると、データ圧縮領域へのデータの実時間分類のための例示的な方法３００が示されている。方法３００は、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、どのデータ圧縮領域に書込み動作を送るかを決定すること（ステップ３０４）によって開始する（ステップ３０２）。方法３００は、書込み動作のうち類似のフィンガープリントを有するものを一緒に圧縮ストリームに圧縮する（ステップ３０６）。方法３００は終了する（ステップ３０８）。
【００２６】
前述のことに基づいて、次に図４を見ると、データ圧縮領域へのデータの実時間分類のための付加的な例示的方法４００が示されている。図３に示すように、どのデータ圧縮領域に書込み動作を送るかを識別し決定するため、及び、どの圧縮ストリームを使用するかを決定するために、方法４００は、入力データ・バッファのデータ・サンプル（例えば、ユーザが定義することができる所定サイズとすることができる小さいデータ・サンプル）を選択する（ステップ４０４）によって開始する（ステップ４０２）。１つの実施形態において、入力データ・バッファは、アプリケーション・ファイル又はデータ・ブロックとすることができる。また、選択されるデータ・サンプルは、入力バッファ全体、又は所定サイズ若しくは適応サイズ（例えば、今までにサンプリングされたデータに適応する）とすることができる、バッファからランダムに選択された（若しくは所定の）バイト列とすることができる。
【００２７】
方法４００は、データ・サンプルに対するヒューリスティックのセットを用いて、データのフィンガープリントを計算する（ステップ４０６）。ヒューリスティックは、非常に高速に（高速とは、圧縮に必要な時間と比較した相対的な用語である）計算することができ、ヒューリスティックは、どのデータを一緒に圧縮すべきか、及びどのデータを一緒に圧縮すべきではないか、を指示することができる。計算されたフィンガープリントは、アクティブ／オープン圧縮ストリームの各々に既に送られた以前のデータのフィンガープリントと比較される（ステップ４０８）。比較に基づいて、データは、類似のデータ（データのフィンガープリントからの距離に従う）を圧縮した最適の圧縮領域／ストリームに送られる（ステップ４１０）。距離という用語は、フィンガープリント間の類似性の程度を指す。例えば、現在のフィンガープリントと、各々の圧縮領域／ストリームによって圧縮されたデータのフィンガープリントとの間のハミング距離を計算し、最小距離を有するストリームを選択する。フィンガープリント間の距離は、距離ベクトルとして、又はその他の任意の数学的ベクトル距離関数として計算することができる。代替的に、方法４００は、最適圧縮領域がアクティブ／オープンでない場合、データを新しい圧縮領域に送ることができる（例えば、新しい圧縮ストリームが作成される）（ステップ４１２）。方法４００は終了する（ステップ４１４）。
【００２８】
１つの実施形態において、フィンガープリント・ヒューリスティックは、以下の例のうちのいずれか１つ及び／又はその組合せとすることができる。（１）サンプリングされたデータのエントロピー；（２）コア・キャラクタ・セット（コアセット）、即ち、サンプル中のバイトの大多数（事前定義パーセンテージで定められる）を構成するキャラクタのセット（及びサイズ）、例えばサンプルの９０％を構成するキャラクタのセット；（３）サンプル・データ又はコアセットの完全な又は部分的ヒストグラム、これはヒストグラム度数のコンパクト形（計数のためのより少数のビット）を含む；（４）サンプルからの支配的又は非支配的キャラクタの群；（５）ヒストグラム又はコアセットの平均、分散、及び／又は異なるモーメント；並びに（６）データ内に見いだされるデータ構造の指標、例えば、ヘッダ（ｊｏｉｎｔ  ｐｈｔｏｇｒａｐｈｉｃ  ｅｘｐｅｒｔｓ  ｇｒｏｕｐ（ＪＰＥＧ）／ｇｒａｐｈｉｃｓ  ｉｎｔｅｒｃｈａｎｇｅ  ｆｏｒｍａｔ（ＧＩＦ）ヘッダ）の存在、データの構造、又は区切り記号の存在。
【００２９】
１つの実施形態において、フィンガープリント用のヒューリスティックの付加的な選択肢は、ある種の類似性保持ハッシュ（Ｓｉｍｉｌａｒｉｔｙ  Ｐｒｅｓｅｒｖｉｎｇ  Ｈａｓｈ（ＳＰＨ））方法を使用することである。ＳＰＨは、データセット又はデータセットの部分に対する関数であり、この関数において、共通ストリングを有するデータセットは、類似の値も有する。例えば、コアセットの計算において、本発明は、コアセットを２５６ビット長ベクトルとして扱うことができ（コアセットがキャラクタであると仮定する）、コアセットに対してある種の誤り訂正符号（ＥＣＣ）を付与することができる。従って、例えば、１つのファイル内でコアセットがＡ−Ｚであり、別のファイル内でＪを除くＡ−Ｚである場合、このようなＥＣＣはそれらが類似していることを見つけることになる。また、圧縮領域は単一のマシン上にあってもよく、又は一緒に機能してデータを圧縮する複数のマシン上にあってもよいことにも留意されたい。
【００３０】
当業者であれば理解するように、本発明の態様は、システム、方法、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェア態様とハードウェア態様とを組合せた実施形態の形を取ることができ、これらを本明細書では全て一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の態様は、その上に具体化されたコンピュータ可読プログラム・コードを有する１つ又は複数のコンピュータ可読媒体に具体化されたコンピュータ・プログラム製品の形をとることができる。
【００３１】
１つ又は複数のコンピュータ可読媒体の任意の組合せを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置、若しくはデバイス、又は上記のもののいずれかの適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）として、以下のもの：即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組合せが挙げられる。本明細書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。
【００３２】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のもののいずれかの適切な組合せを含む任意の適切な媒体を用いて伝送することができる。本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び、「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組合せで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００３３】
本開示の態様は、本開示の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組合せは、コンピュータ・プログラム命令によって実装できることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。
【００３４】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００３５】
上記図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、上記で論じられた機能は、開示された順序とは異なる順序で生じることがあることにも留意されたい。例えば、連続して示された２つの機能は、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらの機能はときとして逆順で実行されることもある。ブロック図及び／又はフローチャートの各ブロック、及びブロック図及び／又はフローチャート内のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組合せによって実装することができることにも留意されたい。
【００３６】
本発明の１つ又は複数の実施形態を詳細に説明したが、これらの実施形態に対する変更又は調節を以下の特許請求の範囲で示す範囲から逸脱することなく行うことができることが当業者には理解されよう。
【符号の説明】
【００３７】
１０：コンピュータ・システム
２００：データ・ストレージ・システム
【図１】
2016512625.tif 000003
【図２】
2016512625.tif 000004
【図３】
2016512625.tif 000005
【図４】
2016512625.tif 000006
【国際調査報告】
2016512625.tif 000007
2016512625.tif 000008