(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6227007
(24)【登録日】2017年10月20日
(45)【発行日】2017年11月8日
(54)【発明の名称】データ圧縮領域へのデータの実時間分類
(51)【国際特許分類】
G06F 3/06 20060101AFI20171030BHJP
G06F 12/00 20060101ALI20171030BHJP
G06F 17/30 20060101ALI20171030BHJP
【FI】
G06F3/06 301W
G06F12/00 511A
G06F17/30 210D
G06F17/30 350C
G06F3/06 304H
【請求項の数】18
【全頁数】15
(21)【出願番号】特願2015-552168(P2015-552168)
(86)(22)【出願日】2014年1月3日
(65)【公表番号】特表2016-512625(P2016-512625A)
(43)【公表日】2016年4月28日
(86)【国際出願番号】IB2014058037
(87)【国際公開番号】WO2014108818
(87)【国際公開日】20140717
【審査請求日】2016年12月20日
(31)【優先権主張番号】13/738,333
(32)【優先日】2013年1月10日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ハロワニ、ニール
(72)【発明者】
【氏名】デミドフ、リリア
(72)【発明者】
【氏名】マレンコフ、セルゲイ
(72)【発明者】
【氏名】コイフマン、ハイム
(72)【発明者】
【氏名】アミット、ジョナサン
(72)【発明者】
【氏名】ソトニコフ、ドミトリー
(72)【発明者】
【氏名】カット、ローネン、イツハク
(72)【発明者】
【氏名】ゴールドバーグ、ジョージ
(72)【発明者】
【氏名】ハルニック、ダニー
(72)【発明者】
【氏名】マーガリット、オデッド
【審査官】
桜井 茂行
(56)【参考文献】
【文献】
米国特許出願公開第2006/0106867(US,A1)
【文献】
特開2006−146883(JP,A)
【文献】
米国特許出願公開第2009/0052784(US,A1)
【文献】
特表2010−537585(JP,A)
【文献】
米国特許出願公開第2002/0028021(US,A1)
【文献】
特開2000−311180(JP,A)
【文献】
米国特許出願公開第2004/0001160(US,A1)
【文献】
特表2005−532578(JP,A)
【文献】
Nobuyoshi Sato et al.,"Target Selection by Similarity Preserve Hash in Distribution System for Geographical Origin Identificationn of Vegetables",Advanced Information Networking and Applications (AINA),オーストリア,IEEE,2006年 4月18日,PP. 1-6
【文献】
Ruei-Sung Lin et al.,"SPEC Hashing: Similarity Preserving algorithm for Entropy-based Coding",Computer Vision and Pattern Recognition (CVPR),米国,IEEE,2010年 6月13日,PP. 848-854
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 17/30
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境におけるプロセッサ装置によるデータ圧縮領域へのデータの実時間分類の方法であって、
書込み動作のランダムに選択されたデータを入力データ・バッファより読み出し、分類ヒューリスティックのセットを計算して前記入力データ・バッファのデータについてフィンガープリントを作成することにより、前記データ圧縮領域のうちのどれに前記書込み動作を送るかを決定することと、
前記書込み動作のうち類似のフィンガープリントを有するデータを含むものを一緒に圧縮ストリームであってそれぞれが前記データ圧縮領域の各々に対応する圧縮ストリームに圧縮することと、
を含み、
前記分類ヒューリスティックのセットを計算するために、ヒューリスティック、即ち、前記ランダムに選択されたデータのエントロピー、前記ランダムに選択されたデータ内のバイトの大多数を構成するキャラクタのコア・キャラクタ・セット及びサイズ、前記ランダムに選択されたデータ又は前記コア・キャラクタ・セットの完全な又は部分的ヒストグラム、前記ランダムに選択されたデータの支配的キャラクタの群又は非支配的キャラクタの群、前記完全な又は部分的ヒストグラム又は前記コア・キャラクタ・セットの平均、分散、及び代替モーメントのうちの1つ、並びに前記データのデータ構造の指標、の組合せ又は少なくとも1つを使用することをさらに含む、
方法。
【請求項2】
異なるフィンガープリントを有するデータを含む前記書込み動作を、異なる圧縮ストリームに分割することをさらに含む、請求項1に記載の方法。
【請求項3】
前記書込み動作の各々に関する前記フィンガープリントの各々を、前記データ圧縮領域の各々に以前に送られた書込み動作のフィンガープリントと比較することをさらに含む、請求項2に記載の方法。
【請求項4】
前記類似のフィンガープリントを有するデータを含む前記書込み動作を、前記書込み動作の類似のデータを圧縮する前記データ圧縮領域に送ることをさらに含む、請求項3に記載の方法。
【請求項5】
前記書込み動作を新しいデータ圧縮領域に送り、そこで新しい圧縮ストリームが作成されることをさらに含む請求項4に記載の方法。
【請求項6】
前記分類ヒューリスティックのセットを計算するために類似性保持ハッシュ(SPH)を使用することをさらに含む、請求項1に記載の方法。
【請求項7】
コンピューティング環境におけるデータ圧縮領域へのデータの実時間分類のためのシステムであって、前記システムが、
コンピューティングストレージ環境において動作可能なプロセッサ装置を含み、前記プロセッサ装置が、
書込み動作のランダムに選択されたデータを入力データ・バッファより読み出し、分類ヒューリスティックのセットを計算して前記入力データ・バッファのデータについてフィンガープリントを作成することにより、前記データ圧縮領域のうちのどれに前記書込み動作を送るかを決定し、
前記書込み動作のうち類似のフィンガープリントを有するデータを含むものを一緒に圧縮ストリームであってそれぞれが前記データ圧縮領域の各々に対応する圧縮ストリームに圧縮し、
前記プロセッサ装置が、前記分類ヒューリスティックのセットを計算するために、ヒューリスティック、即ち、前記ランダムに選択されたデータのエントロピー、前記ランダムに選択されたデータ内のバイトの大多数を構成するキャラクタのコア・キャラクタ・セット及びサイズ、前記ランダムに選択されたデータ又は前記コア・キャラクタ・セットの完全な又は部分的ヒストグラム、前記ランダムに選択されたデータの支配的キャラクタの群又は非支配的キャラクタの群、前記完全な又は部分的ヒストグラム又は前記コア・キャラクタ・セットの平均、分散、及び代替モーメントのうちの1つ、並びに前記データのデータ構造の指標、の組合せ又は少なくとも1つを使用する、
システム。
【請求項8】
前記プロセッサ装置が、異なるフィンガープリントを有するデータを含む前記書込み動作を異なる圧縮ストリームに分割する、請求項7に記載のシステム。
【請求項9】
前記プロセッサ装置が、前記書込み動作の各々に関する前記フィンガープリントの各々を、前記データ圧縮領域の各々に以前に送られた前記書込み動作のフィンガープリントと比較する、請求項8に記載のシステム。
【請求項10】
前記プロセッサ装置が、前記類似のフィンガープリントを有するデータを含む前記書込み動作を、前記書込み動作の類似のデータを圧縮する前記データ圧縮領域に送る、請求項9に記載のシステム。
【請求項11】
前記プロセッサ装置が、前記書込み動作を新しいデータ圧縮領域に送り、そこで新しい圧縮ストリームが作成される、請求項10に記載のシステム。
【請求項12】
前記プロセッサ装置が、前記分類ヒューリスティックのセットを計算するために類似性保持ハッシュ(SPH)を使用する、請求項7に記載のシステム。
【請求項13】
プロセッサ装置によるデータ圧縮領域へのデータの実時間分類のためのコンピュータ・プログラムであって、コンピュータ可読プログラム・コード部分を有し、前記コンピュータ可読プログラム・コード部分は、
書込み動作のランダムに選択されたデータを入力データ・バッファより読み出し、分類ヒューリスティックのセットを計算して前記入力データ・バッファのデータについてフィンガープリントを作成することにより前記データ圧縮領域のうちのどれに前記書込み動作を送るかを決定する、第1の実行可能部分と、
前記書込み動作のうち類似のフィンガープリントを有するデータを含むものを一緒に圧縮ストリームであってそれぞれが前記データ圧縮領域の各々に対応する圧縮ストリームに圧縮する第2の実行可能部分と、
を含み、
前記分類ヒューリスティックのセットを計算することは、ヒューリスティック、即ち、前記ランダムに選択されたデータのエントロピー、前記ランダムに選択されたデータ内のバイトの大多数を構成するキャラクタのコア・キャラクタ・セット及びサイズ、前記ランダムに選択されたデータ又は前記コア・キャラクタ・セットの完全な又は部分的ヒストグラム、前記ランダムに選択されたデータの支配的キャラクタの群又は非支配的キャラクタの群、前記完全な又は部分的ヒストグラム又は前記コア・キャラクタ・セットの平均、分散、及び代替モーメントのうちの1つ、並びに前記データのデータ構造の指標、の組合せ又は少なくとも1つを使用することを含む、
コンピュータ・プログラム。
【請求項14】
異なるフィンガープリントを有するデータを含む前記書込み動作を、異なる圧縮ストリームに分割する第3の実行可能部分をさらに含む、請求項13に記載のコンピュータ・プログラム。
【請求項15】
前記書込み動作の各々に関する前記フィンガープリントの各々を、前記データ圧縮領域の各々に以前に送られた前記書込み動作のフィンガープリントと比較する、第4の実行可能部分をさらに含む、請求項14に記載のコンピュータ・プログラム。
【請求項16】
前記類似のフィンガープリントを有するデータを含む前記書込み動作を、前記書込み動作の類似のデータを圧縮する前記データ圧縮領域に送る第5の実行可能部分をさらに含む、請求項15に記載のコンピュータ・プログラム。
【請求項17】
前記書込み動作を新しいデータ圧縮領域に送り、そこで新しい圧縮ストリームが作成される、第6の実行可能部分をさらに含む、請求項16に記載のコンピュータ・プログラム。
【請求項18】
前記分類ヒューリスティックのセットを計算することは、類似性保持ハッシュ(SPH)を使用することを含む、請求項13に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にコンピュータに関し、より具体的には、コンピューティング環境におけるデータ圧縮領域へのデータの実時間分類に関する。
【背景技術】
【0002】
今日の社会では、コンピュータ・システムが広く行き渡っている。コンピュータ・システムは、職場、家庭、又は学校で見いだすことができる。コンピュータ・システムは、データを処理及び格納するための、データ・ストレージ・システム又はディスク・ストレージ・システムを含むことができる。データ・ストレージ・システム又はディスク・ストレージ・システムは、データを処理及び格納するために利用される。ストレージ・システムは、1つ又は複数のディスク・ドライブを含むことができる。これらのデータ処理システムは、典型的には大容量データ・ストレージを必要とする。データ処理システム内の顧客データ又はユーザによって生成されたデータは、このデータ・ストレージのかなりの部分を占める。これらのコンピュータ・システムの多くは、仮想ストレージ・コンポーネントを含む。
【0003】
データ圧縮は、所与の量の情報を処理し、伝達し、又は格納するのに必要なデータの量を減らすために広く用いられている。データ圧縮は、データの表現を最小化するためのデータのコード化である。圧縮を用いて、例えば、ファイルに対するストレージの要件を低減すること、チャネル上の通信速度を高めること、又はより高度なセキュリティのための暗号化に先立って冗長性を減らすことができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、データ圧縮領域へのデータの実時間分類のための方法、システム及びコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【0005】
一実施形態において、プロセッサ装置を使用したデータ圧縮領域へのデータの実時間分類のための方法が提供される。データ圧縮領域へのデータの実時間分類のために、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、データ圧縮領域のうちのどれに書込み動作を送るかの決定がなされる。類似のフィンガープリントを有する書込み動作は、一緒に類似圧縮ストリームに圧縮される。
【0006】
別の実施形態において、データ圧縮領域へのデータの実時間分類のためのコンピュータ・システムが提供される。コンピュータ・システムは、コンピュータ可読媒体と、コンピュータ可読媒体と動作可能に通信するプロセッサとを含む。データ圧縮領域へのデータの実時間分類のために、プロセッサは、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、データ圧縮領域のうちのどれに書込み動作を送るかを決定する。類似のフィンガープリントを有する書込み動作は、一緒に同じ圧縮ストリーム内に圧縮される。
【0007】
さらに別の実施形態において、データ圧縮領域へのデータの実時間分類のためのコンピュータ・プログラム製品が提供される。コンピュータ可読記憶媒体は、その上に格納されたコンピュータ可読プログラム・コード部分を有する。コンピュータ可読プログラム・コード部分は、書込み動作のランダムに選択されたデータを読み出し、書込み動作の各々に関する分類ヒューリスティックのセットを計算してフィンガープリントを作成することによりデータ圧縮領域のうちのどれに書込み動作を送るかを決定する、第1の実行可能部分を含む。類似のフィンガープリントを有する書込み動作は、一緒に同じ圧縮ストリーム内に圧縮される。
【0008】
前述の例示的な方法の実施形態に加えて、他の例示的なシステム及びコンピュータ・プログラム製品の実施形態が提供され、関連する利益を与える。上述の要旨は、以下の詳細な説明においてさらに説明される概念の抜粋を簡単な形で紹介するために提示したものである。この要旨は、特許請求される主題の重要な特徴又は必須の特徴を特定することを意図するものではなく、特許請求される主題の範囲を定める補助として用いられることを意図するものでもない。特許請求される主題は、背景技術に記したいずれかの又は全ての不利益を解決する実施に限定されない。
【0009】
次に、本発明の実施形態を、添付の図面を参照しながら例示の目的で説明する。
【図面の簡単な説明】
【0010】
【
図1】本発明の態様を実現することができる、例示的な記憶装置を有するコンピュータ・ストレージ環境を示すブロック図である。
【
図2】本発明の態様を実現することができる、コンピュータ・システム内の例示的なデータ・ストレージ・システムのハードウェア構造を示すブロック図である。
【
図3】本発明の態様を実現することができる、データ圧縮領域へのデータの実時間分類の例示的な方法を示すフローチャート図である。
【
図4】本発明の態様を実現することができる、データ圧縮領域へのデータの実時間分類の付加的な例示的方法を示すフローチャート図である。
【発明を実施するための形態】
【0011】
前述のように、コンピュータ・システムを用いて、様々な型式のデータが格納及び管理される。類似のデータを同じ圧縮ストリームを用いて圧縮することにより、圧縮比が改善され、必要なストレージが削減される。しかし、データが書き込まれるとき、1つのファイル内の連続的なブロック内であっても、コンテンツは必ずしも類似しているわけではない。例えば、画像及びテキストを有する文書を考える。画像及びテキストを有する文書に関して2つの別々の圧縮ストリームが作成され、次いで各型式のデータが別々の圧縮ストリームに送られるならば、データ圧縮の効率がより高められ、データ全体の圧縮比が改善される。
【0012】
ブロック・ストレージ・システムでは、データ・ブロックは、どんな型式のデータが書き込まれるかという指標無しでストレージに書き込まれ、書込み間の関係の指標(例えば、同じファイルの書込み、及び、同じ型式のデータの書込み)も何ら与えられない。それゆえ、データの書込み動作を圧縮するとき、共通の属性(及び繰返し)を有さず、圧縮率の低下をもたらすことになるデータを一緒に圧縮する可能性がある。ブロック・ストレージ・システムは、書き込まれるデータの型式(又はクラス)の情報を何ら有さず、それを利用することができない。この課題を解決する試みとして、論理ブロック・アドレス(LBA)空間の空間的局在性を用いることによる、ブロックシステム用の手法が挙げられる。所与のLBA範囲へのあらゆる書込みが一緒に圧縮され、これは、ファイル又は関連ファイルを連続して割り当てる、ファイル・システム/データベース割当てストラテジーにある程度従う。このような手法は、単一ファイル内のデータは類似しており、単一圧縮ストリームに圧縮されるべきであるという一般的なヒューリスティックに従うが、このヒューリスティックは必ずしも真実であるとは限らないことが見いだされており、それゆえデータ圧縮効率が低下する。従って、どの圧縮ストリームを使用するかの決定を実時間で行うことが必要とされており、これができなければ別々の圧縮ストリームを使用することは実用的ではない。それゆえ、どの圧縮ストリームを使用するかを選択する決定アルゴリズムは高速でなければならない(高速は相対的な用語であり、現在の技術状況で利用可能なハードウェアを使用してデータを圧縮するのに必要な時間の何分の一かとなるべきである)。
【0013】
従って、一実施形態において、本発明は、プロセッサ装置を用いたデータ圧縮領域へのデータの実時間分類に関する解決策を提供する。データ圧縮領域へのデータの実時間分類のために、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、どのデータ圧縮領域に書込み動作を送るべきかの決定が行われる。類似のフィンガープリントを有する書込み動作は、一緒に類似圧縮ストリームに圧縮される。
【0014】
後述するように、1つの実施形態において、本発明は、事前情報無しで、データの「クラス」(又は特性)を「検出」する(例えば、圧縮領域又は圧縮ストリームが分類される)。本発明は、データの領域に基づいて複数の圧縮ストリームに書き込むことを可能にする。本発明は、どの圧縮領域に書込み動作を送るかを識別及び決定し、どの圧縮ストリームを使用するかを決定する。圧縮領域は、1つ又は複数のアクティブ圧縮ストリームを有するものとすることができる。検出方法は、ランダムに選択された、入力データの小さい断片を読み出し、分類ヒューリスティックのセットを計算してデータのフィンガープリントを作成する。類似のフィンガープリントを有するデータは一緒に単一の圧縮ストリームに圧縮され、一方、異なるフィンガープリント及び特性を有するデータ(例えば、画像対テキスト)を含む書込み動作は、異なる圧縮ストリームに分割されることになる。このようなデータの分類及び分割は、類似データを単一ストリーム内に保持する一方で、複数のマシンを利用することにより、より多くのノードがデータの圧縮を補助することを可能にすることによって、効率を高め、分散システム(即ち、複数の圧縮ノード)のより良い利用を提供する。識別及び検出アルゴリズムは高速であり、どの圧縮領域及びストリームを使用するべきかを決定するためにデータを圧縮することを必要としない。
【0015】
次に
図1を見ると、コンピューティング環境におけるデータ・ストレージ・システムの例示的なアーキテクチャ10が描かれている。コンピュータ・システム10は、中央処理ユニット(CPU)12を含み、これが大容量記憶装置14及びメモリ装置16に接続される。大容量記憶装置は、ハードディスク・ドライブ(HDD)装置、固体装置(SSD)等を含むことができ、これらは独立ディスクの冗長アレイ(RAID)に構成することができる。さらに説明されるバックアップ動作は、システム10又は他の場所に位置する装置14上で実行することができる。メモリ装置16は、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)のようなメモリ、又は関連装置のホストを含むことができる。メモリ装置16及び大容量記憶装置14は、信号搬送媒体を介してCPU12に接続される。さらに、CPU12は、複数の付加的なコンピュータ・システム22及び24が取付けられた通信ネットワーク20に通信ポート18を通して接続される。
【0016】
図2は、本発明による、コンピュータ・システム内のデータ・ストレージ・システムのハードウェア構造を示す例示的なブロック
図200である。
図2を参照すると、データ・ストレージ・システム200の一部の、データ処理を実行するための中央処理ユニットとして各々が動作するホスト・コンピュータ210、220、225が示されている。ホスト(物理又は仮想装置)210、220、及び225は、データ・ストレージ・システム200内で本発明の目的を達成するための1つ又は複数の新たな物理装置又は論理装置とすることができる。1つの実施形態において、一例として、データ・ストレージ・システム200は、IBM(登録商標)System Storage(商標)DS8000(商標)として実装することができる。ネットワーク接続260は、ファイバ・チャネル・ファブリック、ファイバ・チャネル2地点間リンク、イーサネット・ファブリック又は2地点間リンク上のファイバ・チャネル、FICON又はESCON I/Oインタフェース、その他の任意のI/Oインタフェース型式、無線ネットワーク、有線ネットワーク、LAN、WAN、異種、同種、公衆(即ちインターネット)、私設、又はこれらの任意の組合せとすることができる。ホスト210、220、及び225は、ローカルとすることも又は1つ若しくは複数の位置間に分散させることもでき、ストレージ制御装置240に対する任意の型式のファブリック(又はファブリック・チャネル)(
図2には示さず)又はネットワーク・アダプタ260、例えば、ファイバ・チャネル、FICON、ESCON、イーサネット、光ファイバ、無線、又は同軸アダプタなどを装備することができる。データ・ストレージ・システム200には、従って、通信用の適切なファブリック(
図2には示さず)又はネットワーク・アダプタ260が装備される。ストレージ制御装置240及びストレージ230を含むデータ・ストレージ・システム200が
図2に示される。
【0017】
本明細書で説明する方法のより明確な理解を促進するために、ストレージ制御装置240は、
図2において、マイクロプロセッサ242、システム・メモリ243及び不揮発性ストレージ(NVS)216を含む単一の処理ユニットとして示されており、これらはより詳細に後述する。幾つかの実施形態において、ストレージ制御装置240は複数の処理ユニットで構成され、処理ユニットの各々がそれ自体のプロセッサ複合体及びシステム・メモリを有し、データ・ストレージ・システム200内の専用ネットワークによって相互接続されることに留意されたい。ストレージ230は、ストレージ・ネットワークによってストレージ制御装置240に接続される、ストレージ・アレイのような1つ又は複数の記憶装置を含むことができる。
【0018】
幾つかの実施形態において、ストレージ230に含まれる装置はループ・アーキテクチャで接続することができる。ストレージ制御装置240は、ストレージ230を管理し、ストレージ230を対象とする書込み及び読出し要求の処理を促進する。ストレージ制御装置240のシステム・メモリ243は、プログラム命令及びデータを格納し、これにプロセッサ242がアクセスして、ストレージ230の管理に関連する機能及び方法ステップを実行し、コンピュータ・ストレージ環境における本発明のステップ及び方法を実行することができる。1つの実施形態において、システム・メモリ243は、コンピュータ・ストレージ環境内で、本明細書で説明する方法及び動作を含むオペレーション・ソフトウェア250を含み、これに関係付けられ、又はこれと通信する。
図2に示すように、システム・メモリ243はまた、それぞれ書込み/読出し要求及びそれらの関連データを指す「書込みデータ」及び「読出しデータ」をバッファリングするための、本明細書では「キャッシュ・メモリ」とも呼ばれる、ストレージ230のためのキャッシュ245を含み又はこれと通信する。1つの実施形態において、キャッシュ245は、システム・メモリ243の外部の装置内に割り付けられるが、それでもなおマイクロプロセッサ242がアクセスできる状態にあり、本明細書で説明する動作を実行することに加えて、データ損失に対する付加的なセキュリティを提供するように機能することができる。
【0019】
幾つかの実施形態において、キャッシュ245は、揮発性メモリ及び不揮発性メモリで実装され、データ・ストレージ・システム200の性能を向上させるためにローカル・バス(
図2には示さず)を介してマイクロプロセッサ242に結合される。データ・ストレージ制御装置に含まれるNVS216は、マイクロプロセッサ242によってアクセス可能であり、他の図に示す本発明の動作及び実行に対する付加的なサポートを提供するように機能する。NVS216は、「永続的」キャッシュ又は「キャッシュ・メモリ」と呼ぶこともでき、格納されたデータを保持するために外部電源を使用するものであってもよく、使用しないものであってもよい不揮発性メモリで実装される。NVSは、本発明の目的を達成するのに適したいずれかの目的で、キャッシュ245内に及びそれと共に格納することができる。幾つかの実施形態において、電池のようなバックアップ電源(
図2には示さず)が、データ・ストレージ・システム200の電力が失われた場合に格納されたデータを保持するのに十分な電力をNVS216に供給する。特定の実施形態において、NVS216の容量は、キャッシュ245の全容量より小さいか又はそれに等しい。
【0020】
ストレージ230は、ストレージ・アレイのような1つ又は複数の記憶装置で物理的に構成することができる。ストレージ・アレイは、ハードディスクのような個々の記憶装置の論理的なグルーピングである。特定の実施形態において、ストレージ230は、JBOD(単純ディスク束:Just a Bunch of Disks)アレイ又はRAID(独立ディスクの冗長アレイ:Redundant Array of Independent Disks)アレイで構成される。物理的ストレージ・アレイの集まりをさらに組み合せてランクを形成することができ、これが物理ストレージを論理構成から切り離す。ランク内のストレージ空間を論理ボリュームに割当てることがで、これが書込み/読出し要求内で指定されるストレージ位置を定める。
【0021】
1つの実施形態において、単なる一例として、
図2に示すストレージ・システムは、論理ボリューム又は単に「ボリューム」を含むことができ、様々な種類の割当てを有することができる。ストレージ230a、230b及び230nは、データ・ストレージ・システム200内のランクとして示され、ここではランク230a、230b及び230nと呼ばれる。ランクは、データ・ストレージ・システム200に対してローカルとすることもでき、又は物理的に遠隔位置に配置することもできる。換言すれば、ローカルストレージ制御装置は、遠隔ストレージ制御装置と接続して、遠隔位置にあるストレージを管理することができる。ランク230aは、2つの完全ボリューム234及び236並びに1つの部分ボリュール232aで構成されるように示されている。ランク230bは、別の部分ボリューム232bを有するように示されている。このように、ボリューム232は、ランク230a及び230bにわたって割り当てられている。ランク230nは、ボリューム238に完全に割当てられるように示されており、即ち、ランク230nは、ボリューム238に関する完全に物理的なストレージを指す。上記の例から、ランクは、1つ又は複数の部分的な及び/又は完全なボリュームを含むように構成することができることが理解されるであろう。ボリューム及びランクは、ストレージの固定ブロックを表す、いわゆる「トラック」にさらに分割することができる。従って、トラックには、所与のボリュームが関連付けられ、所与のランクを与えることができる。
【0022】
ストレージ制御装置240は、コンピュータ・ストレージ環境内に、圧縮ストリーム・モジュール255、データ圧縮領域モジュール257、及びデータ分類モジュール259を含むことができる。圧縮ストリーム・モジュール255、データ圧縮領域モジュール257、及びデータ分類モジュール259は、ストレージ制御装置240、ホスト210、220、225、及びストレージ230の、各々の及びあらゆるコンポーネントと連携して働くことができる。圧縮ストリーム・モジュール255、データ圧縮領域モジュール257、及びデータ分類モジュール259は、以下で説明する機能を実行するために共に相互に連携して働く構造的に1つの完結モジュールとすることもでき、又は個々のモジュールとすることもできる。圧縮ストリーム・モジュール255、データ圧縮領域モジュール257、及びデータ分類モジュール259をストレージ制御装置240のキャッシュ245又はその他のコンポーネント内に配置して、本発明の目的を達成することもできる。
【0023】
ストレージ制御装置240は、ホスト・コンピュータ210、220、225へのファイバ・チャネル・プロトコルを制御するための制御スイッチ241と、ストレージ制御装置240全体を制御するためのマイクロプロセッサ242と、ストレージ制御装置240の動作、制御のためのデータ及び後述する各テーブルを制御するためのマイクロプログラム(オペレーション・ソフトウェア)250を格納するための不揮発性制御メモリ243と、データを一時的に格納(バッファリング)するためのキャッシュ245と、キャッシュ245がデータを読み出す及び書き込むのを支援するためのバッファ244と、ストレージ230へのデータ転送又はストレージ230からのデータ転送を制御するプロトコルを制御するための制御スイッチ241と、圧縮ストリーム・モジュール255と、データ圧縮領域モジュール257と、情報をその上に設定することができるデータ分類モジュール259とによって構築することができる。複数のバッファ244を本発明によりコンピューティング環境内で実装することができ、又は例証した実施形態の機構に従って他の機能を実行することができる。
【0024】
1つの実施形態においては、単なる一例として、ホスト・コンピュータ又は1つ若しくは複数の物理若しくは仮想デバイス210、220、225と、ストレージ制御装置240とが、インタフェースとしてのネットワーク・アダプタ(これはファイバ・チャネルとすることができる)260を通して、即ち「ファブリック」と呼ばれることもあるスイッチを介して、接続される。1つの実施形態において、単なる一例として、
図2に示すシステムの動作を説明する。マイクロプロセッサ242は、メモリ243を制御して、ホスト装置(物理又は仮想)210からのコマンド情報及びホスト装置(物理又は仮想)210を識別するための情報を格納することができる。制御スイッチ241、バッファ244、キャッシュ245、オペレーティング・ソフトウェア250、マイクロプロセッサ242、メモリ243、NVS216、圧縮ストリーム・モジュール255、データ圧縮領域モジュール257、及びデータ分類モジュール259は、相互に通信し、別々のコンポーネント又は1つの単体のコンポーネントとすることができる。また、全てではなくても幾つかのコンポーネント、例えばオペレーティング・ソフトウェア250は、コンピュータ・ストレージ環境内にメモリ243と共に含めることができる。記憶装置内のコンポーネントの各々は、相互にリンクすることができ、本発明に適した目的のために相互に通信することができる。
【0025】
次に
図3を見ると、データ圧縮領域へのデータの実時間分類のための例示的な方法300が示されている。方法300は、書込み動作のランダムに選択されたデータを読み出し、分類ヒューリスティックのセットを計算して書込み動作の各々に関するフィンガープリントを作成することにより、どのデータ圧縮領域に書込み動作を送るかを決定すること(ステップ304)によって開始する(ステップ302)。方法300は、書込み動作のうち類似のフィンガープリントを有するものを一緒に圧縮ストリームに圧縮する(ステップ306)。方法300は終了する(ステップ308)。
【0026】
前述のことに基づいて、次に
図4を見ると、データ圧縮領域へのデータの実時間分類のための付加的な例示的方法400が示されている。
図3に示すように、どのデータ圧縮領域に書込み動作を送るかを識別し決定するため、及び、どの圧縮ストリームを使用するかを決定するために、方法400は、入力データ・バッファのデータ・サンプル(例えば、ユーザが定義することができる所定サイズとすることができる小さいデータ・サンプル)を選択する(ステップ404)によって開始する(ステップ402)。1つの実施形態において、入力データ・バッファは、アプリケーション・ファイル又はデータ・ブロックとすることができる。また、選択されるデータ・サンプルは、入力バッファ全体、又は所定サイズ若しくは適応サイズ(例えば、今までにサンプリングされたデータに適応する)とすることができる、バッファからランダムに選択された(若しくは所定の)バイト列とすることができる。
【0027】
方法400は、データ・サンプルに対するヒューリスティックのセットを用いて、データのフィンガープリントを計算する(ステップ406)。ヒューリスティックは、非常に高速に(高速とは、圧縮に必要な時間と比較した相対的な用語である)計算することができ、ヒューリスティックは、どのデータを一緒に圧縮すべきか、及びどのデータを一緒に圧縮すべきではないか、を指示することができる。計算されたフィンガープリントは、アクティブ/オープン圧縮ストリームの各々に既に送られた以前のデータのフィンガープリントと比較される(ステップ408)。比較に基づいて、データは、類似のデータ(データのフィンガープリントからの距離に従う)を圧縮した最適の圧縮領域/ストリームに送られる(ステップ410)。距離という用語は、フィンガープリント間の類似性の程度を指す。例えば、現在のフィンガープリントと、各々の圧縮領域/ストリームによって圧縮されたデータのフィンガープリントとの間のハミング距離を計算し、最小距離を有するストリームを選択する。フィンガープリント間の距離は、距離ベクトルとして、又はその他の任意の数学的ベクトル距離関数として計算することができる。代替的に、方法400は、最適圧縮領域がアクティブ/オープンでない場合、データを新しい圧縮領域に送ることができる(例えば、新しい圧縮ストリームが作成される)(ステップ412)。方法400は終了する(ステップ414)。
【0028】
1つの実施形態において、フィンガープリント・ヒューリスティックは、以下の例のうちのいずれか1つ及び/又はその組合せとすることができる。(1)サンプリングされたデータのエントロピー;(2)コア・キャラクタ・セット(コアセット)、即ち、サンプル中のバイトの大多数(事前定義パーセンテージで定められる)を構成するキャラクタのセット(及びサイズ)、例えばサンプルの90%を構成するキャラクタのセット;(3)サンプル・データ又はコアセットの完全な又は部分的ヒストグラム、これはヒストグラム度数のコンパクト形(計数のためのより少数のビット)を含む;(4)サンプルからの支配的又は非支配的キャラクタの群;(5)ヒストグラム又はコアセットの平均、分散、及び/又は異なるモーメント;並びに(6)データ内に見いだされるデータ構造の指標、例えば、ヘッダ(joint phtographic experts group(JPEG)/graphics interchange format(GIF)ヘッダ)の存在、データの構造、又は区切り記号の存在。
【0029】
1つの実施形態において、フィンガープリント用のヒューリスティックの付加的な選択肢は、ある種の類似性保持ハッシュ(Similarity Preserving Hash(SPH))方法を使用することである。SPHは、データセット又はデータセットの部分に対する関数であり、この関数において、共通ストリングを有するデータセットは、類似の値も有する。例えば、コアセットの計算において、本発明は、コアセットを256ビット長ベクトルとして扱うことができ(コアセットがキャラクタであると仮定する)、コアセットに対してある種の誤り訂正符号(ECC)を付与することができる。従って、例えば、1つのファイル内でコアセットがA−Zであり、別のファイル内でJを除くA−Zである場合、このようなECCはそれらが類似していることを見つけることになる。また、圧縮領域は単一のマシン上にあってもよく、又は一緒に機能してデータを圧縮する複数のマシン上にあってもよいことにも留意されたい。
【0030】
当業者であれば理解するように、本発明の態様は、システム、方法、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェア態様とハードウェア態様とを組合せた実施形態の形を取ることができ、これらを本明細書では全て一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の態様は、その上に具体化されたコンピュータ可読プログラム・コードを有する1つ又は複数のコンピュータ可読媒体に具体化されたコンピュータ・プログラム製品の形をとることができる。
【0031】
1つ又は複数のコンピュータ可読媒体の任意の組合せを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置、若しくはデバイス、又は上記のもののいずれかの適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)として、以下のもの:即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組合せが挙げられる。本明細書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。
【0032】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、RF等、又は上記のもののいずれかの適切な組合せを含む任意の適切な媒体を用いて伝送することができる。本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Java、SmallTalk、C++等のようなオブジェクト指向型プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組合せで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
【0033】
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組合せは、コンピュータ・プログラム命令によって実装できることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。
【0034】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
【0035】
上記図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、上記で論じられた機能は、開示された順序とは異なる順序で生じることがあることにも留意されたい。例えば、連続して示された2つの機能は、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらの機能はときとして逆順で実行されることもある。ブロック図及び/又はフローチャートの各ブロック、及びブロック図及び/又はフローチャート内のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組合せによって実装することができることにも留意されたい。
【0036】
本発明の1つ又は複数の実施形態を詳細に説明したが、これらの実施形態に対する変更又は調節を以下の特許請求の範囲で示す範囲から逸脱することなく行うことができることが当業者には理解されよう。
【符号の説明】
【0037】
10:コンピュータ・システム
200:データ・ストレージ・システム