(57)【要約】ハイブリッドストレージ集合体内で重複排除を実行する方法及び装置が紹介される。一つの例では、その方法は、異なるタイプの物理的ストレージ媒体の、複数の層を含むハイブリッドストレージ集合体を操作するステップを含む。方法は、同一のデータを含む、ハイブリッドストレージ集合体の第１のストレージブロックと第２のストレージブロックを特定するステップと、第１のストレージブロックと第２のストレージブロックのキャッシュのステータスを特定するステップとを含む。方法は更に、第１のストレージブロックと第２のストレージブロックのキャッシュのステータスに基づいて、第１のストレージブロックと第２のストレージブロックについての重複排除を行うステップを含む。
2015511037.tif 000002
【特許請求の範囲】
【請求項１】
異なるタイプの物理的ストレージ媒体の、複数の層を含むハイブリッドストレージ集合体を操作するステップと、
同一のデータを含む、ハイブリッドストレージ集合体の第１のストレージブロックと第２のストレージブロックを特定するステップと、
第１のストレージブロックと第２のストレージブロックのキャッシュのステータスを特定するステップと、
第１のストレージブロックと第２のストレージブロックのキャッシュのステータスに基づいて、第１のストレージブロックと第２のストレージブロックについての重複排除を行うステップと
を含む方法。
【請求項２】
複数の層のうちの、第１の層のストレージは、複数の層のうちの、第２の層のストレージの持続性ストレージ媒体よりも、より低い待ち時間を有する持続性ストレージ媒体を含む、請求項１に記載の方法。
【請求項３】
第１の層のストレージの持続性ストレージ媒体は半導体ストレージ媒体を含み、第２の層のストレージの持続性ストレージ媒体はディスクベースのストレージ媒体を含む、請求項２に記載の方法。
【請求項４】
更に、第１の層のストレージを第２の層のストレージのためのキャッシュとして操作するステップを含む、請求項２に記載の方法。
【請求項５】
複数の層のうちの、第３の層のストレージは、第１の層のストレージの持続性ストレージ媒体よりも、より低い待ち時間を有する持続性ストレージ媒体を含むものであり、
更に、第３の層のストレージを第１及び第２の層のストレージのうちの一つの若しくはそれ以上のもののためのキャッシュとして操作するステップを含む、請求項２に記載の方法。
【請求項６】
第１と第２のストレージブロックは、第２の層のストレージ内に配置され、
第１の層のストレージ内に配置される第３のストレージブロックは、第１のストレージブロックのデータと同一のデータと、第３のストレージブロックを指し示す第１のストレージブロックに関するメタデータとを含み、
重複排除を行うステップは、第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することを含む、
請求項２に記載の方法。
【請求項７】
更に、第２のストレージブロックを読み出すリクエストを受信するステップと、
リクエストに応じて、第３のストレージブロックのデータを転送するステップと
を含む、請求項６に記載の方法。
【請求項８】
第１の層のストレージは、第２の層のストレージのためのキャッシュとして操作され、
第１と第２のストレージブロックは、第２の層のストレージ内に配置され、
第１の層のストレージ内に配置される第３のストレージブロックは、第１のストレージブロックのデータと同一のデータと、第３のストレージブロックを指し示す第１のストレージブロックに関するメタデータとを含み、
重複排除を行うステップは、第２のストレージブロックを指し示す第３のストレージブロックに関するメタデータを変更することと、第２のストレージブロックを指し示す第１のストレージブロックに関するメタデータを変更することを含む、
請求項２に記載の方法。
【請求項９】
更に、第１のストレージブロックを読み出すリクエストを受信するステップと、
リクエストに応じて、第３のストレージブロックのデータを転送するステップと
を含む、請求項８に記載の方法。
【請求項１０】
第１の層のストレージは、第２の層のストレージのためのキャッシュとして操作され、
第１のストレージブロックは、第１の層のストレージ内に配置され、閾値より低いアクセス頻度を有し、
第２のストレージブロックは、第２の層のストレージ内に配置され、
重複排除を行うステップは、第１のストレージブロックを第２のストレージブロックのためのリードキャッシュにするために、第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することを含む、
請求項２に記載の方法。
【請求項１１】
第１の層のストレージは、第２の層のストレージのためのキャッシュとして操作され、
第１のストレージブロックと第２のストレージブロックは、第１の層のストレージ内に配置され、
第１のリファレンスカウントは第１のストレージブロックを使用するファイルの数を示し、第２のリファレンスカウントは第２のストレージブロックを使用するファイルの数を示し、第１のリファレンスカウントは、第２のリファレンスカウントより大きいものであり、
重複排除を行うステップは、
第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することと、
第２のストレージブロックのアクセス頻度を第１のストレージブロックのアクセス頻度に加えることを含む、
請求項２に記載の方法。
【請求項１２】
プロセッサと、
プロセッサと連結しストレージマネジャを含むメモリとを含み、
ストレージマネジャはプロセッサに対して、
第１の層のストレージと第２の層のストレージを含み、第１の層のストレージは第２の層のストレージよりもより低い待ち時間を有するものである、ハイブリッドストレージ集合体を操作するステップと、
重複データを含む、ハイブリッドストレージ集合体内の第１のストレージブロックと第２のストレージブロックを特定するステップと、
第１のストレージブロックと第２のストレージブロックに関するキャッシュの関係を特定するステップと、
キャッシュの関係に基づいて、第１と第２のストレージブロックについての重複排除を行うステップと
を行わせる、ストレージサーバシステム。
【請求項１３】
第１の層のストレージの持続性ストレージ媒体は半導体デバイスを含み、第２の層のストレージの持続性ストレージ媒体はハードディスクデバイスを含む、請求項１２に記載のストレージサーバシステム。
【請求項１４】
ストレージマネジャはプロセッサに対して、更に、第１の層のストレージを第２の層のストレージのためのキャッシュとして操作するステップを行わせる、請求項１２に記載のストレージサーバシステム。
【請求項１５】
ハイブリッドストレージ集合体は、第１の層のストレージよりもより低い待ち時間を有する第３の層のストレージを含み、
ストレージマネジャはプロセッサに対して、更に、第３の層のストレージを第１及び第２の層のストレージのうちの一つの若しくはそれ以上のもののためのキャッシュとして操作するステップを行わせる、請求項１２に記載のストレージサーバシステム。
【請求項１６】
ストレージマネジャはプロセッサに対して、更に、第１の層のストレージを第２の層のストレージのためのキャッシュとして操作するステップを行わせ、
第１と第２のストレージブロックは、第２の層のストレージ内に配置され、
第１のストレージブロックのデータと同一のデータと、第３のストレージブロックを指し示す第１のストレージブロックに関するメタデータとを含む第１の層のストレージ内に配置される第３のストレージブロックによって、第１のストレージブロックがリードキャッシュされ、
重複排除を行うステップは、第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することを含む、
請求項１２に記載のストレージサーバシステム。
【請求項１７】
ストレージマネジャはプロセッサに対して、更に、
第２のストレージブロックを読み出すリクエストを受信するステップと、
リクエストに応じて、第３のストレージブロックのデータを転送するステップと
を行わせる、請求項１６に記載のストレージサーバシステム。
【請求項１８】
ストレージマネジャはプロセッサに対して、更に、第１の層のストレージを第２の層のストレージのためのキャッシュとして操作するステップを行わせ、
第１と第２のストレージブロックは、第２の層のストレージ内に配置され、
第１のストレージブロックのデータと同一のデータと、第３のストレージブロックを指し示す第１のストレージブロックに関するメタデータとを含む第１の層のストレージ内に配置される第３のストレージブロックによって、第１のストレージブロックがリードキャッシュされ、
重複排除を行うステップは、第２のストレージブロックを指し示す第３のストレージブロックに関するメタデータを変更することと、第２のストレージブロックを指し示す第１のストレージブロックに関するメタデータを変更することを含む、
請求項１２に記載のストレージサーバシステム。
【請求項１９】
ストレージマネジャはプロセッサに対して、更に、
第１のストレージブロックを読み出すリクエストを受信するステップと、
リクエストに応じて、第３のストレージブロックのデータを転送するステップと
を行わせる、請求項１８に記載のストレージサーバシステム。
【請求項２０】
ストレージマネジャはプロセッサに対して、更に、第１の層のストレージを第２の層のストレージのためのキャッシュとして操作するステップを行わせ、
第１のストレージブロックは、第１の層のストレージ内に配置され、閾値より低いアクセス頻度を有し、
第２のストレージブロックは、第２の層のストレージ内に配置され、
重複排除を行うステップは、第１のストレージブロックを第２のストレージブロックのためのリードキャッシュにするために、第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することを含む、
請求項１２に記載のストレージサーバシステム。
【請求項２１】
ストレージマネジャはプロセッサに対して、更に、第１の層のストレージを第２の層のストレージのためのキャッシュとして操作するステップを行わせ、
第１のストレージブロックと第２のストレージブロックは、第１の層のストレージ内に配置され、
第１のリファレンスカウントは第１のストレージブロックを使用するファイルの数を示し、第２のリファレンスカウントは第２のストレージブロックを使用するファイルの数を示し、第１のリファレンスカウントは、第２のリファレンスカウントより大きいものであり、
重複排除を行うステップは、
第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することと、
第２のストレージブロックのアクセス頻度を第１のストレージブロックのアクセス頻度に加えることを含む、
請求項１２に記載のストレージサーバシステム。
【請求項２２】
持続性命令を含む持続性機械読み取り可能媒体において、
一つ以上のプロセッサにより実行されるとき、持続性命令は一つ以上のプロセッサに対して、
同一のデータを含む第１のストレージブロックと第２のストレージブロックを特定するステップであって、第１のストレージブロックと第２のストレージブロックとの両方は第１の層のストレージと第２の層のストレージとを含むハイブリッドストレージ集合体内に配置され、第１の層のストレージは第２の層のストレージよりもより低い待ち時間を有するものであり、第１の層のストレージは第２の層のストレージのためのキャッシュとして操作される、ステップと、
第１のストレージブロックと第２のストレージブロックに関するキャッシュのステータスを特定するステップと、
キャッシュのステータスに基づいて、第１のストレージブロックと第２のストレージブロックについての重複排除を行うステップと
を行わせる、持続性機械読み取り可能媒体。
【請求項２３】
第１の層のストレージの持続性ストレージ媒体は半導体デバイスを含み、第２の層のストレージの持続性ストレージ媒体はハードディスクデバイスを含む、請求項２２に記載の持続性機械読み取り可能媒体。
【請求項２４】
ハイブリッドストレージ集合体は、第１の層のストレージよりもより低い待ち時間を有する第３の層のストレージを含み、
持続性命令は一つ以上のプロセッサに対して、更に、第３の層のストレージを第１及び第２の層のストレージのうちの一つの若しくはそれ以上のもののためのキャッシュとして操作するステップを行わせる、請求項２２に記載の持続性機械読み取り可能媒体。
【請求項２５】
第１と第２のストレージブロックは、第２の層のストレージ内に配置され、
第１の層のストレージ内に配置される第３のストレージブロックは、第１のストレージブロックのデータと同一のデータと、第３のストレージブロックを指し示す第１のストレージブロックに関するメタデータとを含み、
重複排除を行うステップは、第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することを含む、
請求項２２に記載の持続性機械読み取り可能媒体。
【請求項２６】
ストレージマネジャはプロセッサに対して、更に、
第２のストレージブロックを読み出すリクエストを受信するステップと、
リクエストに応じて、第３のストレージブロックのデータを転送するステップと
を行わせる、請求項２５に記載の持続性機械読み取り可能媒体。
【請求項２７】
第１と第２のストレージブロックは、第２の層のストレージ内に配置され、
第１の層のストレージ内に配置される第３のストレージブロックは、第１のストレージブロックのデータと同一のデータと、第３のストレージブロックを指し示す第１のストレージブロックに関するメタデータとを含み、
重複排除を行うステップは、第２のストレージブロックを指し示す第３のストレージブロックに関するメタデータを変更することと、第２のストレージブロックを指し示す第１のストレージブロックに関するメタデータを変更することを含む、
請求項２２に記載の持続性機械読み取り可能媒体。
【請求項２８】
持続性命令は一つ以上のプロセッサに対して、更に、
第１のストレージブロックを読み出すリクエストを受信するステップと、
リクエストに応じて、第３のストレージブロックのデータを転送するステップと
を含む、請求項２７に記載の持続性機械読み取り可能媒体。
【請求項２９】
第１のストレージブロックは、第１の層のストレージ内に配置され、閾値より低いアクセス頻度を有し、
第２のストレージブロックは、第２の層のストレージ内に配置され、
重複排除を行うステップは、第１のストレージブロックを第２のストレージブロックのためのリードキャッシュにするために、第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することを含む、
請求項２２に記載の持続性機械読み取り可能媒体。
【請求項３０】
第１のストレージブロックと第２のストレージブロックは、第１の層のストレージ内に配置され、
第１のリファレンスカウントは第１のストレージブロックを使用するファイルの数を示し、第２のリファレンスカウントは第２のストレージブロックを使用するファイルの数を示し、第１のリファレンスカウントは、第２のリファレンスカウントより大きいものであり、
重複排除を行うステップは、
第１のストレージブロックを指し示す第２のストレージブロックに関するメタデータを変更することと、
第２のストレージブロックのアクセス頻度を第１のストレージブロックのアクセス頻度に加えることを含む、
請求項２２に記載の持続性機械読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願は、２０１２年３月７日出願の米国特許出願第１３／４１３８９８号（特許文献１）の優先権を主張するものであり、該出願は参照の上全体としてこの明細書に組み込まれる。
【０００２】
本願の種々の実施形態は、データストレージシステムを操作する分野に、概略関する。特に、本願の種々の実施形態は、ハイブリッドストレージ集合体にストレージスペースを配置する方法及びシステムに関する。
【背景技術】
【０００３】
背景
コンピュータ及びコンピュータシステムの増殖により、電子データの信頼可能な且つ効率的な格納に対する要求が絶え間無く増大している。ストレージサーバは、データの編成及び格納に関するストレージサービスを提供する特殊化されたコンピュータである。ストレージサーバにより管理されるデータは、通常、不揮発メモリ若しくはディスクなどの、書き込み可能の持続性ストレージ媒体に格納される。ストレージサーバは、多数のクライアント若しくはアプリケーションがシステムにより提供されるデータにアクセスできる情報デリバリのクライアント／サーバモデルに従って動作するように、構成され得る。ストレージサーバは、ネットワーク接続ストレージ（ＮＡＳ）環境におけるファイルレベルか、ストレージエリアネットワーク（ＳＡＮ）におけるブッロクレベルかのいずれかで、ランダム及びストリーミングアクセスパターンの両方で、データを提供する。
【０００４】
ストレージサーバにより用いられる種々のタイプの不揮発ストレージ媒体は、様々な待ち時間を有し得る。アクセス時間（即ち、待ち時間）は、ストレージ媒体からデータを検索するのに要求される時間である。多くの場合、データは、相対的に高い待ち時間を有するハードディスクドライブ（ＨＤＤ）に格納される。ＨＤＤでは、ディスクアクセス時間は、ディスクスピンアップ時間、シーク時間、回転遅延、及びデータ転送時間を含む。別の場合、データは、半導体ドライブ（ＳＳＤ）に格納される。ＳＳＤは、概略、ＨＤＤより低い待ち時間を有する。ＳＤＤは、ＨＤＤの動作に固有の機械的遅延を有さないからである。ＨＤＤは、概略、物理媒体に順次に格納されるデータの大ブロックを読み取るときに、良好なパフォーマンスを示す。しかしながら、ＨＤＤは、ランダムアクセスに対しては同様なパフォーマンスを示さない。装置の機械的部品が媒体上の異なる物理位置に移動しなければならないことがよく有るからである。
【０００５】
ＳＤＤは、不揮発フラッシュメモリなどの、半導体メモリを用いてデータを格納する。移動する部品が無く、ＳＳＤは、通常、比較的低い待ち時間により、ランダムの、頻度の高いメモリアクセスに対して、良好なパフォーマンスを示す。しかしながら、ＳＳＤはＨＨＤより一般に高価であり、摩耗や他の劣化により操作上の寿命が短い。これらの更なる直接的な交換のコストは、膨大な数のストレージ装置を用いる多数のストレージサーバを有するデータセンタのとっては、重大な意義を有する。
【０００６】
ハイブリッドストレージ集合体は、ＨＤＤとＳＤＤの利点を組み合わせる。ストレージ「集合体」は、物理ストレージの論理集合体、即ち、ストレージのプールのための論理コンテナであり、一つ以上の物理大容量ストレージデバイス若しくはそれらの一部を単体の論理ストレージオブジェクト内に組み合わせるものであり、該ストレージ集合体は、より高い抽象度の一つ以上の他の論理データセットのためのストレージ（例えば、ボリューム）を提供する。あるハイブリッドストレージ集合体では、ＳＳＤがハイブリッドストレージ集合体を組成して高いパフォーマンスを提供し、相対的に廉価なＨＤＤは残余のストレージアレイを組成する。場合によっては、様々な待ち時間を備えるストレージデバイスの別の組み合わせも、ＨＤＤとＳＤＤに代わって、又は、ＨＤＤ及びＳＤＤと組み合わせて用いられ得る。これらの他のストレージデバイスは、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、テープドライブ、光学ディスク、及びマイクロ電子機械（ＭＥＭ）ストレージデバイスを含む。ハイブリッドストレージ集合体内の低待ち時間（即ち、ＳＤＤ）のストレージスペースは制限されているので、最も頻度高くアクセスされる（即ち、ホットな）データの格納のために低待ち時間のストレージスペースを用いることにより、低待ち時間のストレージに係る利点は最大限となる。残りのデータは、より高い待ち時間のデバイス内に格納される。データ及びデータ利用は経時的に変化するので、どのデータがホットであり、より低い待ち時間のデバイスに格納されるべきかを判定することは、継続するプロセスとなる。高待ち時間のデバイスと低待ち時間のデバイスの間のデータの移動は、ポインタ更新や、データの位置を識別する他の情報を必要とする、マルチステッププロセスである。
【０００７】
場合によっては、より低い待ち時間のストレージは、より高い待ち時間のストレージのためのキャッシュとして用いられる。これらの構成では、最も頻度高くアクセスされるデータのコピーがキャッシュに格納される。データアクセスが為されると、要求されるデータがその中に位置するか判定すべくより速いキャッシュがチェックされ、もしあれば、データはキャッシュからアクセスされ得る。このように、より高い待ち時間のデバイスがアクセスされなければならない回数を減少させることによって、キャッシュは、全体のデータアクセス時間を減少させる。場合によっては、キャッシュスペースは、頻度高く書かれるデータのために用いられる（即ち、ライトキャッシュ）。一方で、若しくは更に、キャッシュスペースは、頻度高く読まれるデータのために用いられる（即ち、リードキャッシュ）。リードキャッシュとライトキャッシュの管理と動作のためのポリシは、異なることが多い。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願第１３／４１３８９８号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ストレージシステム内でストレージスペースをより効率よく使用してコストを最小限にするために、種々の技術が用いられてデータを圧縮し及び／又は重複データのインスタンスの数を最小化する。データの重複排除は、ストレージシステムからデータの重複インスタンスを除去する一つの方法である。データの重複排除は、粗粒の冗長データを除去するための技術である。重複排除の処理では、データのブロックは、システム内に格納される他のデータのブロックと対比される。二つ以上の同一のデータのブロックが特定されれば、冗長ブロックは削除され、又は、システムから解除される。削除されるブロックに関するメタデータは、削除されていないデータブロックのインスタンスを指し示すように修正される。このように、二つ以上のアプリケーション若しくはファイルは、異なる目的で同じデータのブロックを利用できる。重複のデータブロックを合体させ、データブロックの単体のインスタンスのシェアリングを統合することにより、重複排除の処理はストレージスペースを確保する。しかしながら、データブロックのキャッシュの状態を考慮すること無しに、ハイブリッドストレージ集合体内で重複排除を実行すると、キャッシュを用いるパフォーマンス上の利点を阻害し若しくは弱めることがある。
【課題を解決するための手段】
【００１０】
ハイブリッドストレージ集合体内で重複排除を実行する方法及び装置が本明細書で紹介されている。これらの技術は、重複排除されるべきブロックのキャッシュのステータスを考慮に入れてハイブリッドストレージ集合体について重複排除を行うことを含む。データブロックは、リードキャッシュブロックであるか、リードキャッシュされたブロックであるか、ライトキャッシュブロックであるか、又は、何らキャッシュのステータスを有さないブロックであるか、に拠って、様々に重複排除され得る。これらのステータスを考慮に入れることにより、システムは重複排除の利点を最適化するスペースを得ることができる。これらのステータスを考慮に入れること無く重複排除が実装されると、キャッシュに関するパフォーマンス上の利点が妨げられることがある。
【００１１】
一つの例では、その方法は、異なるタイプの物理的ストレージ媒体の、複数の層を含むハイブリッドストレージ集合体を操作するステップを含む。方法は、同一のデータを含む、ハイブリッドストレージ集合体の第１のストレージブロックと第２のストレージブロックを特定するステップと、第１のストレージブロックと第２のストレージブロックのキャッシュのステータスを特定するステップとを含む。方法は更に、第１のストレージブロックと第２のストレージブロックのキャッシュのステータスに基づいて、第１のストレージブロックと第２のストレージブロックについての重複排除を行うステップを含む。ブロックが、リードキャッシュブロックであるか、リードキャッシュされたブロックであるか、又は、ライトキャッシュブロックであるか、に拠って、ブロックの個々の対に対して、重複排除の処理の実行が変動し得る。本明細書で用いるように、「リードキャッシュブロック」は一般に、ストレージシステムのより高い待ち時間の層に在る「リードキャッシュされたブロック」の、より高いパフォーマンスコピーとしての機能を果たしている、ストレージシステムのより低い待ち時間の層内のデータブロックのことである。「ライトキャッシュ」ブロックは一般に、ライトパフォーマンスのために、より低い待ち時間の層内に配置されたデータブロックのことである。
【００１２】
別の例では、ストレージサーバシステムは、プロセッサと、ハイブリッドストレージ集合体と、メモリを含む。ハイブリッドストレージ集合体は、第１の層のストレージと第２の層のストレージを含む。第１の層のストレージは第２の層のストレージよりもより低い待ち時間を有するものである。メモリは、プロセッサと連結しストレージマネジャを含む。ストレージマネジャはプロセッサに対して、重複データを含む、ハイブリッドストレージ集合体内の第１のストレージブロックと第２のストレージブロックを特定するステップを行わせる。ストレージマネジャは続いて、第１のストレージブロックと第２のストレージブロックに関するキャッシュの関係を特定し、キャッシュの関係に基づいて、第１と第２のストレージブロックについての重複排除を行う。
【００１３】
重複排除がキャッシュの関係を考慮せずに実行されると、キャッシュに関するパフォーマンス上の利点は、減殺若しくは除外されてしまう可能性がある。例えば、一つのブロックのホットデータはパフォーマンス上の理由のために低待ち時間の層内でキャッシュされ得る。ホットデータブロックの重複である別のデータブロックは、高待ち時間の層内に格納されてもよい。キャッシュのステータスが考慮されないと、重複排除の処理により、ホットデータブロックが低待ち時間の層から除去され、更にはホットデータブロックに関するメタデータが変更されることになり、終にはそのデータブロックへのアクセスが高待ち時間の層内の重複コピーに向けられてしまう。この結果によって、ハイブリッドストレージ集合体のパフォーマンス上の利点が縮小若しくは除去されてしまう。従って、ハイブリッドストレージ集合体のパフォーマンス上の利点を保持するように重複排除を実行することが望ましい。ブロックがリードキャッシュとして用いられているかライトキャッシュとして用いられているかに拠って、重複排除の処理が更に変動することがあり得る。
【００１４】
本明細書に記載の実施形態は、他の方法、種々のコンポーネントを伴うシステム、並びに、一つ以上のプロセッサにより実行される際には、一つ以上のプロセッサに対して、方法、方法のバリエーション、若しくは、本明細書に記載の他のオペレーションを実行させる命令を格納する持続性機械読み取り可能格納媒体も、含む。多数の実施形態を開示しているが、以下の詳細な説明から当業者には更に他の実施形態が明白であろう。なお以下の詳細な説明は、本発明の例示の実施形態を示して記載するものである。明白なように、本発明は、発明の範囲から乖離すること無く、種々の形態での修正が可能である。従って、図面、及び、発明の詳細な説明は本質的に例示として考慮されるべきであり、限定的に考えられるべきものでは無い。
【図面の簡単な説明】
【００１５】
添付の図面の利用により、本発明の実施形態を記載して説明する。
【図１】図１は、本発明のある実施形態が利用され得る動作環境を示す。
【図２】図２は、本発明のある実施形態が利用され得るストレージシステムを示す。
【図３】図３は、例示の実施形態に係るファイルの例示のバッファツリーを示す。
【図４】図４は、ハイブリッドストレージ集合体について重複排除する方法の例を示す。
【図５Ａ】図５Ａは、重複排除の処理を実行する前のファイルシステムのブロック図を示す。
【図５Ｂ】図５Ｂは、重複排除の処理を実行した後のファイルシステムのブロック図を示す。
【図６Ａ】図６Ａは、本発明の一つの実施形態に係る、ハイブリッドストレージ集合体内で重複排除の処理を実行する前のファイルシステムのブロック図を示す。
【図６Ｂ】図６Ｂは、本発明の一つの実施形態に係る、重複排除の処理を実行した後の図６Ａのファイルシステムのブロック図を示す。
【図６Ｃ】図６Ｃは、本発明の別の実施形態に係る、重複排除の処理を実行した後の図６Ａのファイルシステムのブロック図を示す。
【図７Ａ】図７Ａは、本発明の一つの実施形態に係る、ハイブリッドストレージ集合体内で重複排除の処理を実行する前のファイルシステムのブロック図を示す。
【図７Ｂ】図７Ｂは、本発明の一つの実施形態に係る、ハイブリッドストレージ集合体内で重複排除の処理を実行した後のファイルシステムのブロック図を示す。
【図８】図８は、ハイブリッドストレージ集合体について重複排除の処理を実行する方法の別の例を示す。
【００１６】
図面は、必ずしも原寸に比例して描かれていない。例えば、図面の要素のうちあるものの寸法は、本発明の実施形態の理解を向上させる助けとなるべく、拡大して若しくは縮小していることがある。同様に、部品及び／又は動作のうちには、本発明の実施形態のうちあるものの議論のために、別のブロックに分離されていたり、単体のブロックに融合されていたりする。更に、本発明は種々の修正や代替の形式を受け入れるものであり、特定の実施形態が例示として図面に示され以下に詳細に記載されている。しかしながら、本発明は、以下に記載の特定の実施形態に限定されるものでは無い。むしろ、本発明は、添付の特許請求の範囲に規定する発明の範囲にある、全ての修正、等価物、及び代替物をカバーすることを意図するものである。
【発明を実施するための形態】
【００１７】
データストレージシステムには、様々な待ち時間を伴う様々なタイプのストレージデバイスで組成される持続性のストレージスペースを含むものがある。低待ち時間デバイスは、より良いパフォーマンスを示すが、通常、コストの及び／又は他の欠点を有する。ストレージシステムの一部を低待ち時間デバイスで実装すれば、これらのタイプのデバイスで全体のストレージシステムを実装することに関連する、コスト若しくは他の制約を被ることなく、かなりのシステムパフォーマンスの改良が見られる。システムパフォーマンスの改良は、より低い待ち時間のデバイス内で、最も頻度高くアクセスされるデータ（即ち、ホットデータ）を選択してキャッシュすることにより、最適化され得る。この構成は、より速くより低い待ち時間のデバイス内で生じる、システムへのリード及びライトの数を最大化する。より低い待ち時間のデバイスで利用可能なストレージスペースは、リードキャッシュ、ライトキャッシュ、又は両方を実装するのに用いられ得る。
【００１８】
利用可能なストレージスペースを最も効率的に利用するために、種々のタイプのデータ圧縮及び統合が実装されることが多い。データの重複排除は、付加された非重複データのために格納スペースを解放するために、ストレージシステムからデータの重複インスタンスを除去する一つの方法である。重複排除の処理では、データのブロックが、システム内に格納される他のデータのブロックと対比される。同一のデータのブロックが識別されると、冗長ブロックが、残余の格納された塊を指し示すポインタ若しくはリファレンスで置換される。二つ以上のアプリケーション若しくはファイルは、同じ格納されたデータのブロックを共有する。これら重複のデータのブロックを合体し、ブロックに関する単一の残余インスタンスの共有を統合することにより、重複のデータは格納スペースを確保する。しかしながら、これらのブロックがキャッシュ若しくはキャッシュされたブロックであるかどうかを考慮に入れることなくデータブロックに関して重複排除を実行することには、ハイブリッドストレージ集合体に関するパフォーマンスゲインに有害な影響があり得る。本明細書でもちいるように、データの「ブロック」は、特定のアドレスにて開始する周知の長さのデータの連続セットである。ある実施形態では、個々のレベル０のブロックは、長さ４ｋバイトである。しかしながら、ブロックは他のサイズともなり得る。
【００１９】
本明細書で紹介する技術は、ブロックに関するキャッシュのステータスが重複排除されることに基づいて、ハイブリッドストレージ集合体の重複排除をすることにより、これらの及び他の問題を解決する。重複排除は、重複ブロックの一つを、削除すること、除去すること、若しくは、別途解放することを、しばしば含む。場合によっては、重複ブロックの一つがより低い待ち時間のストレージ内でリードキャッシュ化され、パフォーマンス上の利点がリードキャッシュ化されない重複ブロックを削除することにより維持される。別の場合には、重複ブロックの一つがライトキャッシュ化され、重複ブロックの一つを削除すること無く、ライトキャッシュのブロックのパフォーマンス上の利点を、識別されたブロックの重複インスタンスにまで拡張することにより、重複排除の処理がシステムのパフォーマンスを向上させる。
【００２０】
図１は、本明細書に示される技術に関するある実施形態が用いられ得る動作環境１００を示す。動作環境１００は、ストレージサーバシステム１３０、クライアント１８０Ａ、１８０Ｂ、及びネットワーク１９０を示す。
【００２１】
ストレージサーバシステム１３０は、ストレージサーバ１４０、ＨＤＤ１５０Ａ、ＨＤＤ１５０Ｂ、ＳＳＤ１６０Ａ、ＳＳＤ１６０Ｂを含む。ストレージサーバシステム１３０は、データやデータストレージリソースを管理し、含み、アクセスを提供するのに用いられる、様々なタイプの他のデバイスやストレージコンポーネントも含み得る。ストレージサーバ１４０は、一つ以上のファイルシステムを実装するストレージオペレーティングシステムを含むコンピュータデバイスである。ストレージサーバ１４０は、ＨＤＤ１５０Ａ、ＨＤＤ１５０Ｂ、ＳＳＤ１６０Ａ及びＳＳＤ１６０Ｂなどの、書き込み可能な持続性ストレージ媒体上の、情報の構成に関するストレージサービスを提供するサーバクラスコンピュータで有ればよい。ＨＨＤ１５０Ａ及びＨＤＤ１５０Ｂは、ハードディスクドライブであり、ＳＳＤ１６０Ａ及びＳＳＤ１６０Ｂは、半導体ドライブ（ＳＳＤ）である。
【００２２】
通常のストレージサーバシステムは、図１に示すＨＨＤ又はＳＳＤよりも多くのものを含んでもよい。当然ながら、ストレージサーバシステム１３０は、ＨＨＤやＳＳＤに代えて、又は、それらと組み合わせて、他のタイプの持続性のストレージデバイスを用いて実装されてもよい。これらの他のタイプの持続性ストレージデバイスは、例えば、フラッシュメモリ、ＮＶＲＡＭ、ＭＥＭストレージサーバ、若しくはそれらの組み合わせを、含み得る。ストレージサーバ１４０は他のデバイスを含んでもよく、他のデバイスは、持続性ストレージデバイスにアクセスし管理するための、ストレージコントローラを含む。ストレージサーバシステム１３０は、モノリシックシステムとして示されるが、様々な地理的位置に分散されるシステムやデバイスを含んでもよい。ストレージサーバシステム１３０は、ストレージサーバ１４０と同じ若しくは異なるストレージオペレーティングシステムを用いて動作する、更なるストレージサーバを含んでもよい。
【００２３】
ストレージサーバ１４０は、本明細書に記載する本発明の実施形態に係る、ＨＤＤ１５０Ａ、ＨＤＤ１５０Ｂ、ＳＳＤ１６０Ａ、及びＳＳＤ１６０Ｂに格納されるデータに関する重複排除を実行する。この記載の教示は、ネットワーク接続ストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、若しくはクライアントやホストコンピュータに直接付属するディスクアセンブリを含むがこれらに限定されない様々なストレージサーバアーキテクチャに、適用され得る。「ストレージサーバ」の用語は、従って、それら構成を含む広義に解釈されるべきである。
【００２４】
図２は、本明細書に示される技術に関するある実施形態が再び用いられ得るストレージサーバシステム２００を示す。ストレージサーバシステム２００は、メモリ２２０、プロセッサ２４０、ネットワークインタフェース２９２、及びハイブリッドストレージ集合体２８０を含む。ハイブリッドストレージ集合体２８０は、ＨＤＤアレイ２５０、ＨＤＤコントローラ２５４、ＳＳＤアレイ２６０、ＳＳＤコントローラ２６４、及びＲＡＩＤモジュール２７０を含む。ＨＤＤアレイ２５０及びＳＳＤアレイ２６０は、持続性ストレージ媒体の異機種の層である。それらは異なるタイプのストレージ媒体を有し従って異なるパフォーマンス特性を有するので、ＨＤＤアレイ２５０及びＳＳＤアレイ２６０はストレージの異なる「層」として言及される。ＨＤＤアレイ２５０は、ディスクと、ディスク上の様々な位置に機械的に移動するリード／ライトヘッドとを用いて構築される、相対的に廉価でより高い待ち時間の磁気ストレージ媒体を含む。ＳＳＤアレイ２６０は、不揮発性のフラッシュメモリデバイスのアレイを用いて構築される、相対的に高価なより低い待ち時間の電子ストレージ媒体３４０を含む。ハイブリッドストレージ集合体２８０は、異なる待ち時間のストレージ媒体の他のタイプを含んでもよい。本明細書に記載の実施形態は、ＨＤＤ／ＳＳＤの構成に限定されず、持続性のストレージ媒体の二つのみの層を有する実装に限定されない。
【００２５】
ハイブリッドストレージ集合体２８０は、ＨＤＤアレイ２５０及びＳＳＤアレイ２６０内のストレージの論理集合体である。この例では、ハイブリッドストレージ集合体２８０は、一つ以上のボリュームを含み得るＲＡＩＤグループのコレクションである。ＲＡＩＤモジュール２７０は、特定のボリュームの内部に一つ以上のパリティグループ（例えば、ＲＡＩＤグループ）としてＨＤＤ及びＳＳＤを構築し、ＨＤＤ及びＳＳＤ上のデータの配置を管理する。ＲＡＩＤモジュール２７０は更に、一つ以上のＨＤＤ若しくはＳＳＤの異常発生時に保護を提供する一つ以上のＲＡＩＤ実装に従って、ＲＡＩＤグループを構成する。ＲＡＩＤ実装は、冗長情報（例えば、パリティ）を含むＲＡＩＤグループ内の所与の数のＨＤＤ及び／又はＳＳＤに亘るデータ「ストライプ」の書き込みにより、データストレージの信頼性及びインテグリティを、強化する。ＨＤＤコントローラ２５４及びＳＳＤコントローラ２６４は、それらの個々のアレイにおける多重物理デバイスに亘って分配されるデータの低レベルマネジメントを実行する。ＲＡＩＤモジュール２７０は、ＨＤＤコントローラ２５４及びＳＳＤコントローラ２６４を利用して、ＨＤＤアレイ２５０及びＳＳＤアレイ２６０内のデータへのアクセスのためのリクエストに応答する。
【００２６】
メモリ２２０は、本明細書に記載の技術を実行するソフトウエアプログラム及びデータ構造を格納するための、プロセッサ２４０によりアドレス可能な格納場所を含む。プロセッサ２４０は、ソフトウエアプログラムを実行しデータ構造を操作するように構成された、回路を含む。ストレージマネジャ２２４は、このタイプのソフトウエアプログラムの一つの例である。ストレージマネジャ２２４は、とりわけ、一つ以上のファイルシステムを実装するようにプロセッサ２４０に指示する。プロセッサ２４０は、ネットワークインタフェース２９２にも相互接続される。ネットワークインタフェース２９２により、他のデバイス若しくはシステムは、ハイブリッドストレージ集合体２８０内のデータにアクセスできる。
【００２７】
一つの実施形態では、ストレージマネジャ２２４は、ハイブリッドストレージ集合体２８０内のリード及びライトパフォーマンスを向上させるデータ配置若しくはデータレイアウトアルゴリズムを実装する。ストレージマネジャ２２４は、データに関するアクセスの特性に基づいて、ＨＨＤアレイ２５０とＳＳＤアレイ２６０との間でデータを再配置するように構成され得る。例えば、ストレージマネジャ２２４は、データがホットであると判別されると、ＨＤＤアレイ２５０からＳＳＤアレイ２６０へデータを再配置し得るのであり、このことは、データが頻度高くアクセスされる、ランダムにアクセスされる、もしくはその両方であることを、意味する。ＳＳＤアレイ２６０はより低い待ち時間を有するのであり、最も頻度高く及び／又はランダムにアクセスされるデータを、限定された量の利用可能なＳＳＤスペース内に有することはストレージシステム２００に最大の全体的パフォーマンス上の利点を提供するのであるから、このことは有益である。
【００２８】
この説明の文脈では、「ランダムに」アクセスされるという用語は、データのブロックに言及する場合、データのブロックがストレージ媒体上のそのブロックと同じ物理的近接部に格納される別のデータブロックのアクセスと連動してアクセスされるかどうか、ということに関連する。特に、ランダムにアクセスされるブロックは、ストレージ媒体上のそのブロックと同じ物理的近接部に格納される別のデータブロックのアクセスと連動しないでアクセスされるブロックである。アクセスのランダム性は、通常、半導体ストレージ媒体のパフォーマンスに殆ど若しくは全く効果を生じないが、機械的ドライブコンポーネントの、ディスクの異なる物理的場所への必要な移動により、ディスクベースのストレージ媒体のパフォーマンスに重要なインパクトを生じ得る。データブロックをホットデータとして別途限定するのには、データブロックが十分にはアクセスされ得なくとも、より低い待ち時間の層にランダムにアクセスされるデータブロックを再配置することにより、重要なパフォーマンスの利点が得られ得る。結果として、アクセスの頻度及びアクセスの性質（即ち、アクセスがランダムであるかどうか）は、どのデータがより低い待ち時間の層に配置されるべきかを判定するに際して、合わせて考慮され得る。
【００２９】
別の例では、ストレージマネジャ２２４は、ＳＳＤアレイ２６０のＳＳＤ内に、最初データを格納し得る。続いて、データは、頻度低くアクセスされる、若しくはシーケンシャルに度々アクセスさえるということから、「コールド」となり得る。結果として、ホットデータのための、ＳＳＤアレイ２６０内の更なる余裕を作成するために、このコールドデータをＳＳＤアレイ２６０からＨＤＤアレイ２５０に移すことが好ましい。ストレージマネジャ２２４は、ＲＡＩＤモジュール２７０と協働して、最初の格納場所を判別し、データ利用をモニタし、アレイ間でデータを適宜再配置する。ホットデータとコールドデータとの間の閾値の基準は、低待ち時間の層内で利用可能な空間量に依存して変動し得る。
【００３０】
少なくとも一つの実施形態では、データは、ボリューム、ディレクトリ、及びファイルなどの、論理コンテナの形式で、ハイブリッドストレージ集合体２８０により格納される。「ボリューム」は、ディスクなどの、大容量ストレージデバイスのコレクションに関連する格納データのセットであり、該大容量ストレージデバイスのコレクションは、集合体からの（即ち、集合体内部に含まれる）ストレージを取得し、完全なファイルシステムなどの、独立の管理ユニットとして管理される。個々のボリュームは、一つ以上のファイル、ディレクトリ、サブディレクトリ、論理ユニット（ＬＵＮ）、若しくは他のタイプの論理コンテナの形式で、データを含み得る。
【００３１】
ハイブリッドストレージ集合体２８０内のファイルは、図３のバッファツリー３００などの、バッファツリーの形式で表され得る。バッファツリー３００は、ファイルに関するメタデータを含む階層データ構造であり、ファイル内のデータのブロックを配置するのに用いるポインタを含む。ファイルを組成するデータのブロックは、シーケンシャルの物理的場所に格納されないことが多く、ストレージアレイの様々な地理的場所若しくは領域に亘り広がり得る。経時的に、移動するデータのブロックもあれば、移動しないファイルのデータの別のブロックもある。結果として、バッファツリーは、ファイルのブロックの全てを配置するための機構である。
【００３２】
バッファツリーは、より低いレベルの間接ブロック及び／又は直接ブロックへの一つ以上のポインタを含む一つ以上のレベルの間接ブロックを含む。ブロックについての実際の物理的場所を判別することは、複数のレベルの間接ブロックを介して動作することを要求し得る。バッファツリー３００の例では、「レベル１」として指定されたブロックは、間接ブロックである。これらのブロックは、ファイルの直接ブロックである「レベル０」ブロックを指し示す。間接ブロックの更なるレベルも可能である。例えば、バッファツリー３００は、レベル１ブロックを指し示すレベル２ブロックを含んでもよい。場合によっては、一つのグループのあるレベル２ブロックがレベル１ブロックを指し示し、そのグループの他のレベル２ブロックがレベル０ブロックを指し示してもよい。
【００３３】
バッファツリー３００のルートは、ｉｎｏｄｅ３２２である。ｉｎｏｄｅは、ファイルのオーナシップ、ファイルに対するアクセス許可、ファイルサイズ、ファイルタイプ、及び、ファイルのための間接ブロックの最高次レベルへのポインタなどの、ファイルに関するメタデータを格納するのに用いられるメタデータコンテナである。ｉｎｏｄｅは、通常、独立のｉｎｏｄｅファイルに格納される。ｉｎｏｄｅは、関連データブロックの全ての場所を見出すための開始ポインタである。図示される例では、ｉｎｏｄｅ３２２は、間接ブロック３２４と３２５を参照する。これらの間接ブロックの各々は、少なくとも一つの物理ボリュームブロックナンバ（ＰＶＢＮ）及び対応する仮想ボリュームブロックナンバ（ＶＶＢＮ）を格納する。図示のために、ＰＶＢＮ−ＶＶＢＮの一対のみが、間接ブロックの各々に示されている。しかしながら、多数のＰＶＢＮ−ＶＶＢＮの対が、個々の間接ブロックに含まれてもよい。個々のＰＶＢＮはハイブリッドストレージ集合体２８０内の物理ブロックを参照し、対応するＶＶＢＮはボリューム内の関連する論理ブロックを参照する。例示の実施形態では、間接ブロック３２４内のＰＶＢＮは、物理ブロック３２６を参照し、間接ブロック３２５内のＰＶＢＮは、物理ブロック３２８を参照する。同様に、間接ブロック３２４内のＶＶＢＮは、論理ブロック３２７を参照し、間接ブロック３２５内のＶＶＢＮは、論理ブロック３２９を参照する。論理ブロック３２７と３２９は、それぞれ、物理ブロック３２６と３２８を指し示す。
【００３４】
ファイルブロックナンバ（ＦＢＮ）は、特定のファイル内部のデータのブロックの論理ポジションである。個々のＦＢＮは、ボリューム内部でＶＶＢＮ−ＰＶＢＮの対にマップする。ストレージマネジャ２２４は、ＦＢＮをＰＶＢＮマッピングへ実装する。ストレージマネジャ２２４は更に、ＲＡＩＤモジュール２７０と協働して、ＨＨＤアレイ２５０及びＳＳＤアレイ２６０の格納動作をコントロールする。ストレージマネジャ２２４は、個々のＦＢＮをハイブリッドストレージ集合体２８０内部のＰＶＢＮ場所に翻訳する。ブロックは、ＲＡＩＤモジュール２７０により提供されるトポロジ情報を用いてストレージデバイスから検索され得る。
【００３５】
ＨＤＤアレイ２５０内のデータのブロックが、ＨＤＤアレイ２５０内部の別の場所に移動すると、ブロックに関連する間接ブロックは新しい場所を反映するように更新される。しかしながら、ｉｎｏｄｅ３２２及び他のブロックは、変更される必要は無い。同様に、ブロックを新しい物理的場所にコピーして関連する間接ブロックを新しい場所で更新することにより、データブロックはＨＤＤアレイ２５０とＳＳＤアレイ２６０との間で移動される。ファイルを組成する種々のブロックは、多数の非連続の物理的場所の間に散乱され、ＨＤＤアレイ２５０及びＳＳＤアレイ２６０を組成するものなどの様々なタイプのストレージ媒体に亘って分割されることもある。この明細書における他の記載では、データブロックの移動に関連するバッファツリーの変更は、新しい場所を指し示すブロックのメタデータへの変更として記載している。ブロックのメタデータへの変更は、関連するバッファツリーの要素の一つ以上のどんな組み合わせへの変更をも含む。
【００３６】
図４は、ハイブリッドストレージ集合体における重複排除を行う方法４００を示す。方法４００は、様々なタイプの物理的ストレージ媒体の複数の層を含む、ハイブリッドストレージ集合体を動作させることを含む（ステップ４１０）。方法は、ストレージマネジャ２２４がプロセッサ２４０で稼働して同一のデータを含む、ハイブリッドストレージ集合体の第１のストレージブロックと第２のストレージブロックを特定することを含む（ステップ４２０）第１と第２のストレージブロックの各々は、ストレージシステムのストレージの層のいずれにも配置され得る。更に、第１と第２のストレージブロックの各々は、リードキャッシュのブロックでも、リードキャッシュされたブロックでも、ライトキャッシュのブロックでもよく、又は、キャッシュのステータスを有さないものでもよい。方法は更に、ストレージマネジャ２２４が、第１のストレージブロックと第２のストレージブロックのキャッシュのステータスを特定して（ステップ４３０）、第１のストレージブロックと第２のストレージブロックのキャッシュのステータスに基づいて、第１のストレージブロックと第２のストレージブロックについて重複排除を行うこと（ステップ４４０）を、含む。以下の例で記載するように、特定の重複排除の実装は、重複データを含むブロックがライトキャッシュのブロックなのか、リードキャッシュのブロックなのか、若しくはリードキャッシュされたブロックなのか、に基づいて、選択され得る。
【００３７】
図５Ａは、重複排除の処理を実行する前のブロック図を示す。ファイルシステムは、二つのファイルに関する二つのバッファツリー構造含む。ファイルシステムは、通常、更に多くのファイル及びバッファツリー構造を含むこともある。例示のために、二つのみが示されている。他の機能の間でも、ｉｎｏｄｅ５２２Ａ、５２２Ｂは、個々のファイルに関連する間接ブロックを指し示す。間接ブロックは、個々のファイルを組成するＨＤＤアレイ５５０内のデータの物理ブロックを指し示す。例えば、ｉｎｏｄｅ５２２Ａは、データブロック５６１、データブロック５６２及びデータブロック５６３のラベルが付されたブロックで組成される。通常のファイルは、更に多くのブロックで組成されることもあるが、例示のためブロック数を限定している。図５Ａに示すデータブロックの充填パターンは、データブロックの内容を示している。充填パターンにより示されるように、データブロック５６３、データブロック５６４及びデータブロック５６６のラベルが付されたブロックは、同一のデータを含む。それらは重複データを含むので、重複排除が、ストレージシステム内で利用可能な更なるストレージスペースを作成できる。
【００３８】
図５Ｂは、重複排除が実行された後の図５Ａｎｏファイルシステムのブロック図を示す。処理の結果、データブロック５６３及びデータブロック５６６は最早用いられていない。データブロック５６４は、今やｉｎｏｄｅ５２２Ａと５２２Ｂの両方で用いられている。データブロック５６３と５６６は最早用いられないため、関連するストレージスペースが他の目的のために利用可能である。当然ながら、媒体上に物理的に格納されているデータブロック５６３と５６６に関連するビットは、この処理の一部としては実際に除去されたり削除されたりされなくともよい。システムによっては、データ場所への参照が除去若しくは変更され、よって、システム内部の利用から、それら格納場所を論理的に解放することになる。解放がされたとしても、それらのブロックを組成したビットは、他のデータを格納するように物理的ストレージスペースの一部が用いられる後のある時点で、上書きされるまで、存在し得ることになる。本明細書において「削除された」の用語は、データのブロックが最早参照も利用もされないことを示し、且つ、ブロックに関するビットがその時点で物理的ストレージ媒体から削除されたり上書きされたりすることを必ずしも示さないように、用いられる。
【００３９】
場合によっては、重複排除の処理を介してバッファツリーから削除されたブロックはレシピエントブロックとして参照されることがある。図５Ａ及び図５Ｂの例では、データブロック５６３はレシピエントブロックである。場合によっては、残余した上で関連するメタデータにより指し示されるデータは、ドナーブロックとして参照される。図５Ａ及び図５Ｂの例では、データブロック５６４はドナーブロックである。
【００４０】
一つの例では、重複排除は、格納されたとき個々のデータブロックに対して固有のフィンガプリント生成することにより、実行される。データブロックを、ＳＨＡ−２５６若しくはＳＨＡ−５１２などのハッシュ関数に適用することにより、このことは為され得る。二つ以上の同一のデータブロックは、同じフィンガプリントを有するものである。重複排除の処理の間にフィンガプリントを対比することにより、重複するデータブロックが識別され得、図５Ａ及び図５Ｂに示すように合体し得る。用いられるフィンガプリントの処理に拠り、二つの照合するフィンガプリントのみで、関連するブロックが同一であることを示すのに十分となり得る。他の場合では、照合するフィンガプリントは決定的では無いこともあり、ブロックの更なる対比が必要となり得る。ブロックのフィンガプリントは、データブロック自身よりもずっと小さいものであるから、多数のデータブロックのためのフィンガプリントは、システム内の格納容量のうちの大きい部分を消費すること無く、格納され得る。フィンガプリント生成の処理は、データブロックが受信されると実行され得、又は、ブロックが既に格納された後の後処理を介して実行され得る。同様に、重複排除の処理は、データブロックの最初の受信及び格納の時点で実行され得、又は、図５Ｂに示すようにブロックが既に格納された後に実行され得る。
【００４１】
図６Ａは、本発明の一つの実施形態に係る、ハイブリッドストレージ集合体内で重複排除の処理を実行する前のファイルシステムのブロック図を示す。図６ＡのＨＤＤアレイ６５０は、図２のＨＤＤアレイ２５０の例である。図６ＡのＳＳＤアレイ６７０は、図２のＳＳＤアレイ２６０の例である。ＳＳＤアレイ６７０は、ハイブリッドストレージ集合体のパフォーマンスを向上させるべく、データブロックを選択的に格納するように用いられる。多くの場合、ＨＤＤアレイ６５０の全てを、ＳＳＤアレイ６７０を組成するもののようなＳＳＤデバイスで置き換えることは非常に費用がかかる。ＳＳＤアレイ６７０はキャッシュマップ６１０を含む。キャッシュマップ６１０は、どのデータブロックがＳＳＤアレイ６７０内に格納されるかに関する情報であって、ＳＳＤアレイ６７０内部のそれらデータブロックの場所に関する情報を含む、情報を格納するＳＳＤアレイ６７０のエリアである。
【００４２】
当然ながら、他のタイプのストレージデバイスを含むストレージアレイは、ＨＨＤアレイ６５０とＳＳＤアレイ６７０のうちの一つ若しくはそれら両方に代替され得る。更に、更なるストレージアレイが、夫々が相互に異なる待ち時間を有する、三つ以上のストレージの層を含むシステムを、提供するのに用いられてもよい。図５Ａ及び図５Ｂのように、図６Ａ及び図６Ｂのデータブロックの充填パターンは、データブロックの内容を示す。
【００４３】
リードキャッシュブロックは、現在頻度高く読み出されるデータブロック（即ち、データブロックがホットである）のための、より低い待ち時間の格納層内に含まれるデータブロックのコピーである。ブロックは頻度高く読み出しされているので、より低い待ち時間の格納層内にブロックのコピーを配置してブロックに対するリクエストをそのより低い待ち時間の格納層へ仕向けることにより、漸進的なパフォーマンスの向上が達成され得る。図６Ａにて、データブロック６６３は事前にホットであると判別され、データブロック６６３のコピーはＳＳＤアレイ６７０内で形成された（即ち、データブロック６８３）。このコピーを作成するのに関連して、データブロック６６３のコピー（即ち、データブロック６８３）がＳＳＤアレイ６７０で利用可能であることを示し、且つ場所を示すエントリがキャッシュマップ６１０内に作成された。データのブロックがストレージシステムから読み出しされると、キャッシュマップ６１０が、要求されたデータブロックがＳＳＤアレイ６７０内で利用可能であるかどうか確認するように先ずチェックされる。
【００４４】
例えば、リクエストがデータブロック６６３を読み出すための受信が為されると。キャッシュマップ６１０は、データブロック６６３のコピーがＳＳＤアレイ６７０内で利用可能であるかどうか確認するように先ずチェックされる。キャッシュマップ６１０は、データブロック６８３がデータブロック６６３のコピーとして利用可能であることを示す情報を含みその場所を提供するものであり、更には、ＳＳＤアレイ６７０内に格納される他の部録の全てに関する情報も含む。この場合、データブロック６６３のコピーが利用可能であるので、リードリクエストは、データブロック６８３を読み出すことにより満足する。言い換えれば、ＨＨＤアレイ６５０は、データブロック６６３に関するデータの読み出しではアクセスされない。データブロック６８３は、ＳＳＤアレイの特徴により、データブロック６６３よりも迅速に読み出しされ得る。データブロック６６３が最早ホットで無いとき、データブロック６６３及びデータブロック６８３への参照は、キャッシュマップ６１０から除去される。データブロック６８３により占められていた物理的ストレージスペースは、次は他のホットデータのために若しくは他の目的のために用いられ得る。
【００４５】
図６Ｂは、本発明の一つの実施形態に係る、重複排除の処理を実行した後の図６Ａｎｏファイルシステムのブロック図を示す。前述のように、重複排除は、他に利用すべくストレージスペースを解放するために、システムから同じデータブロックの重複インスタンスを削除若しくは除去する。図５Ａ及び図５Ｂでは、三つの重複ブロックのうちどれが削除若しくは解放され同時にどれが保持されるか判別するための、選択基準は適用されなかった。
【００４６】
一方で、図６Ａ及び図６Ｂに示す重複排除の処理は、重複データを含むブロックのキャッシュのステータスに基づいて、実行される。データブロック６６３、６６４及び６８３は、同一のデータを含む。重複排除の処理の一部としてどのブロックが削除若しくは除去されるべきかに関する、選択が為されなければならない。データブロック６８３は、データブロック６６３のためのリードキャッシュとして既に存在するので、データブロック６８３を活用することにより、システムパフォーマンスを更に向上させる機会が存在する。従って、リードキャッシュデータブロック６８３は、そのキャッシュのステータスにより、重複排除の処理の一部として削除されたり解放されたりすることはない。
【００４７】
更に、データブロック６６３を削除したり解放したりすることは、既に存在するリードキャッシュ構成を破壊することになる。キャッシュマップ６１０内に格納された情報は既に、データブロック６６３をデータブロック６８３とリンクしているからである。結果として、重複排除を完遂するためには、データブロック６６３や６８３ではなく、データブロック６６４を解放したり削除したりすることが、最も実効的である。データブロック６６４に関連する間接ブロック６２５Ａ内のメタデータは、データブロック６６３を指し示すように更新される。
【００４８】
データブロックのキャッシュのステータスに基づいて、選択的に重複排除を実行することにより、適所に既に在ったデータブロック６６３に関するキャッシュの利点が保持されただけでなく、重複排除の利点が実現された。ストレージスペースはＨＤＤアレイ６５０内で自由にされ、データブロック６８３のパフォーマンス条の利点はｉｎｏｄｅ６２２Ａとｉｎｏｄｅ６２２Ｂの両方に関連する読み出しを介して実現される。
【００４９】
図６Ｃは、別の重複排除の処理を実行した後の、図６Ａのファイルシステムのブロック図を示す。図６Ｃでは、データブロック６６３が、データ重複排除の処理の一部として自由にされ、解放され、若しくは削除される。データブロック６６４に関するメタデータは、それを、リードキャッシュデータブロック６８３に関連するリードキャッシュされたブロックとするように、修正される。リードキャッシュの関係は、重複排除の処理として、データブロック６６３からデータブロック６６４へ実効的に「移送される」。データブロック６６３に従前関連していたメタデータは、データブロック６６４を指し示すように修正される。図６Ｂと同様に、ｉｎｏｄｅ６２２Ａとｉｎｏｄｅ６２２Ｂの両方は、今やＳＳＤアレイ６７０内のデータブロック６８３のリードキャッシュの利点を受ける。データブロック６６３のリードキャッシュされたステータスは、図６Ｂにあるように、予めキャッシュされていないデータブロック６６４に関して、保持のプライオリティを与えられていないが、重複排除の処理は、リードキャッシュブロックとしてのデータブロック６８３のキャッシュのステータスを尚考慮にいれる。
【００５０】
図６Ｃでは、図６Ｂにあるデータブロック６６４よりも、データブロック６６３が自由にされ、削除され、若しくは解放される。間接ブロック６２４Ｂは、データブロック６６４を指し示すように更新される。データブロック６８３は最早データブロック６６３のためのリードキャッシュブロックでは無く、データブロック６６４のためのリードキャッシュブロックとなる。図６Ｂと同様に、図６Ｃのキャッシュマップ６１０は、データブロック６６３とデータブロック６６４に関するリードリクエストをＳＳＤアレイ６７０内のデータブロック６８３に向けるのに用いられる情報を含む。リードリクエストは、リクエストされたデータブロックがＳＳＤアレイ６７０内にあるかどうかを判別するのにキャッシュマップ６１０を用いて処理される。もし無ければ、リードリクエストは、ＨＤＤアレイ６５０内のデータを用いて、満たされる。
【００５１】
図６Ｃの重複排除の処理は、図６Ｂに示す処理よりも少なくとも一つ多いステップを要求するが、にもかかわらず状況によっては図６Ｃのプロセスが好ましいことがある。例えば、データブロック６６３の物理的ストレージに対してデータブロック６６４が優先的な物理的場所を有することから、データブロック６６３よりもデータブロック６６４を保持するのが好ましいこともある。データブロックが、同時に読み出されることが多い他のデータブロックとシーケンシャルに配置されていることから、その配置が優先的であってもよい。別の例では、データブロック６６３が、好ましくない場所に、若しくはシステムがクリアしようとしている場所に、配置されることから、データブロック６６４ではなくデータブロック６６３を重複排除することが優先的であることもある。別の例では、既にリードキャッシュ化されていても、コールドとなりつつあれば、データブロック６６３が重複排除されてもよい。
【００５２】
図７Ａは、本発明の別の実施形態に係る、ハイブリッドストレージ集合体内で重複排除の処理を実行する前のファイルシステムのブロック図を示す。図７Ａでは、データブロック７８３はライトキャッシュブロックである。データブロック７８３は、ＨＤＤアレイ７６０からＳＳＤアレイ７７０へ予め移動された。他のブロックに対して高い書き込み頻度を有したからである（即ち、ホットであった）。データブロック７８３はより低い待ち時間のＳＳＤアレイ７７０内に配置されているので、データブロック７８３への書き込みの各々は、より迅速に完了し得る。ライトキャッシングのこの例では、キャッシュされたデータのコピーは、ＨＤＤアレイ７６０内に保持されていない。言い換えれば、図６Ａ、図６Ｂ、図６Ｃのリードキャッシュの例に在るようなデータブロック７８３の対応物は、ＨＤＤアレイ７６０内には無い。この構成はライトキャッシングには好ましい。データブロック７８３が書き込みされる度に、ＨＨＤアレイ７６０内の対応物であるデータブロックが更新されなければならないからである。このことは、ＳＳＤアレイ７７０内にデータブロック７８３を有する、パフォーマンス上の利点を撲滅してしまう、若しくは実質的に減少してしまう。前述の例のように、キャッシュマップ７１０は、どのデータブロックがＳＳＤアレイ７７０内にて利用可能であるか、及び、それらの場所を示す情報を含む。
【００５３】
図７Ａの例では、データブロック７８３及びデータブロック７６４は、同一のデータを含む。前述の例のように、データブロック７６４及び７８３のキャッシュのステータスは、図７Ａのシステムをどのように重複排除するかを判別する際に、考慮される。
【００５４】
例えば、データブロック７８３がホットであり続けるならば、又はホットであり続けると予想されるならば、データブロック７８３をデータブロック７６４で重複排除することにおける、潜在的利点は殆ど無い。書き込みがされた次の機会にはデータが変化している可能性が高いのであるから、このことは真である。言い換えれば、データブロック７８３及びデータブロック７６４が目下、同じであれば、データブロック７６４がデータブロック７８３に対して重複排除され得るが、比較的短期間でデータブロック７８３は変更する可能性が高い。ｉｎｏｄｅ７２２Ａ又はｉｎｏｄｅ７２２Ｂに関連して、データブロックに対する変更が生じれば、重複排除の処理は反転されなければならない。二つのｉｎｏｄｅが必要とするデータブロックは最早同じでは無いからである。このことは、どんな重複排除の状況でも真であるが、それが発生する可能性はライトの状況においてずっと高い。というのは、ブロックは、頻度高く書き込みされているものであることが既に知られているからである。データブロック７６４及び７８３に関して重複排除の処理を実行するオーバヘッドには、殆ど若しくは全く利益がない。言い換えれば、ライトキャッシュ部録がファイルシステム内の別のデータブロックの重複であるとしても、重複排除の処理の一部としてライトキャッシュブロックを重複排除することを回避することが、最も有益であり得る。
【００５５】
図７Ｂは、図７Ａのファイルシステムに関して重複排除が実行された後の、図７Ａのファイルシステムのブロック図を示す。データブロック７８３はライトキャッシュブロックではあるが、ブロックがコールドとなっている若しくはコールドとなりつつある（即ち、ブロックは最早頻度高く書き込みされない）ならば、前述の例とは対照的ではあるが、ブロックに関して重複排除の処理を実行することには利点があり得る。この場合、重複排除は、データブロック７８３をライトキャッシュブロックからリードキャッシュブロックへ変換することを含む。データブロック７６４のメタデータは、データブロック７８３を指し示すように修正され、これによりリードパフォーマンスを向上させる。間接ブロック７２４Ｂも、データブロック７６４を指し示すように修正される。この場合、重複排除は、ＨＤＤアレイ７６０若しくはＳＳＤアレイ７７０のいずれでも、使用される格納量を変更しなかったが、メタデータの変更は、ｉｎｏｄｅ７２２Ａとｉｎｏｄｅ７２２Ｂの両方へのデータブロック７８３に関する実際のパフォーマンス上の利点を提供する。
【００５６】
図８は、ハイブリッドストレージ集合体について重複排除を行う方法８００を示す。前述のように、ステップ８０２にて開始する重複排除の処理は、後処理でも実行可能であるし、新しいデータブロックが受信され格納されるにつれて漸化的にも実行可能である。ステップ８０４では、ストレージマネジャ２２４は、ハイブリッドストレージ集合体内部で同一のデータを含む二つのデータブロックを特定する。ステップ８１０では、いずれかのブロックがライトキャッシュブロックであるかに関する判別が為される。いずれかのブロックがライトキャッシュブロックであれば、ライトキャッシュブロックがコールドであるか、若しくはコールドに成りつつあるか（即ち、アクセスされる頻度が低いか）、を判別する、次の判別がステップ８４０で為される。ブロックがコールドであるかどうか判別するために、アクセス頻度閾値が適用され得る。この場合、ブロック自身のアクセス頻度がその閾値を下回るならば、ブロックはコールドと見なされる。この点において用いられる特定の閾値は、実施固有のものであり、ここでの記載に密接に関連するものでは無い。ライトキャッシュブロックがコールドで無ければ、その二つの特定されたブロックに関して何らアクションが取られない。ブロックがコールドであると判別されれば、ライトキャッシュブロックは、図７Ｂに関して説明したのと同様に、ステップ８５０にてリードキャッシュブロックに変換される。
【００５７】
ステップ８１０に戻って、何れのブロックもライトキャッシュブロックでないならば、いずれかのブロックがリードキャッシュされているかを識別する次の判別が、ステップ８２０にて為される。何れのブロックもリードキャッシュされていないならば、その二つのブロックについてステップ８６０にて重複排除が行われる。ブロックのうち第１のものが他方のブロックを指し示すようにメタデータを修正することにより、さもなければ第１のブロックを削除若しくは解放することにより、このことは完遂される。図５Ｂに関して説明したのと同様にして、ステップ８６０が実行される。ブロックの両方がリードキャッシュされているならば、ブロックのどちらが保持されどちらが重複排除されるか、に関する選択が為され得る。場合によっては、どちらがより高いリファレンスカウントを有する回転子に基づいて、決定されることもある。リファレンスカウントは、どれだけ多くのファイルがブロックを利用するか、に関する情報を含む。例えば、一つのファイルにより用いられるに過ぎないデータブロックは、１のリファレンスカウントを有し得る。例えば、従前の重複排除の処理の結果として、複数のファイルによって用いられるデータブロックは、通常、１より大きい値を有することになる。より高いリファレンスカウントを伴うブロックは保持され得、一方でより小さいリファレンスカウントを伴うブロックは自由にされ若しくは解放され得る。自由にされた若しくは解放されたブロックに関するリファレンスアカウントが、保持されたブロックのリファレンスカウントに加えられて若しくは組み合わされて、保持されたブロックの新しいリファレンスカウントを適切に反映するようにしてもよい。
【００５８】
ステップ８２０に戻って、ブロックのうち一つがリードキャッシュされたものであるならば、二つのブロックは、ステップ８７０にて他のブロックを指し示すように一つのブロックのメタデータを修正することにより、重複排除されることになる。他のブロックに関するメタデータも、現存するリードキャッシュブロック（即ち、二つの特定されたブロックと同一のデータを含む、ＳＳＤアレイ内の第３のデータブロック）を指し示すように修正される。ステップ８７０は、図６Ｂに関して説明したのと同様に実行される。
【００５９】
本発明の実施形態は、前述したように、種々のステップ及び動作を含む。種々のこれらのステップ及び動作は、ハードウエアコンポーネントにより実行可能であり、又は、機械読み取り可能命令で具体化可能であり、該機械読み取り可能命令は、前記ステップを実行する命令でプログラムされた、一つ以上の汎用の若しくは専用のプロセッサを動かすのに用いられ得る。一方で、ハードウエア、ソフトウエア、及び／又はファームウエアの組み合わせにより、前記ステップが実行され得る。
【００６０】
本明細書で紹介する技術の実施形態は、コンピュータプログラムプロダクトとして、提供され得る。該コンピュータプログラムプロダクトは、コンピュータ若しくは他の電子デバイスが本明細書に記載のオペレーションの一部若しくは全てを実行すべくプログラムされるように用いられ得る持続性命令を格納した、機械読み取り可能媒体を含み得る。機械読み取り可能媒体は、光学ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、光磁気ディスク、フロッピディスク、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、消去可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、磁気若しくは光学カード、フラッシュメモリ、又は、電子的命令を格納するのに適切である他のタイプの機械読み取り可能媒体を含み得るが、それらに限定されない。更に、本発明の実施形態は、コンピュータプログラムプロダクトとしてもダウンロード可能であり、その場合、プログラムは、搬送波で具体化されるデータ信号により、又は、通信リンクを介する他の伝搬媒体により、リモートコンピュータから、要求を出したコンピュータへ、転送され得る。
【００６１】
「ある実施形態では」、「ある実施形態によると」、「図示する実施形態では」、「他の実施形態では」、「ある例では」などのフレーズは、フレーズに続く特定の特性、構造、若しくは特徴が、本発明の少なくとも一つの実施形態に含まれること、及び、本発明一つ以上の実施形態に含まれ得ることを、概略意味する。更に、それらフレーズは、同じ実施形態若しくは異なる実施形態に、必ずしも言及しない。
【００６２】
本発明の一つ以上の実施形態に関する詳細な説明を上述に示したが、本発明の精神から変動すること無く、様々な代替、修正及び等価物が当業者には明白である。例えば、前述の実施形態は特定の特性に言及するが、本発明の範囲は、特性の様々な組み合わせを有する実施形態、及び、記載の特性の全てを含むわけでは無い実施形態も、含む。従って、本発明の範囲は、請求項の範囲内に在るそのような代替、修正及び変更の全て、更にはそれらの等価物の全てを、含むことを意図するものである。従って、前述の記載は、請求項によって規定される、本発明の範囲を限定するものとして捉えられるべきでは無い。
【符号の説明】
【００６３】
１３０・・・ストレージサーバシステム、１４０・・・ストレージサーバ、１８０Ａ、１８０Ｂ・・・クライアント、１９０・・・ネットワーク、２２０・・・メモリ、２２４・・・ストレージマネジャ、２４０・・・プロセッサ、２５０・・・ＨＤＤアレイ、２５４・・・ＨＤＤコントローラ、２６０・・・ＳＳＤアレイ、２６４・・・ＳＳＤコントローラ、２７０・・・ＲＡＩＤモジュール、２９２・・・ネットワークインタフェース。
【図１】
2015511037.tif 000003
【図２】
2015511037.tif 000004
【図３】
2015511037.tif 000005
【図４】
2015511037.tif 000006
【図５Ａ】
2015511037.tif 000007
【図５Ｂ】
2015511037.tif 000008
【図６Ａ】
2015511037.tif 000009
【図６Ｂ】
2015511037.tif 000010
【図６Ｃ】
2015511037.tif 000011
【図７Ａ】
2015511037.tif 000012
【図７Ｂ】
2015511037.tif 000013
【図８】
2015511037.tif 000014
【国際調査報告】
2015511037.tif 000015
2015511037.tif 000016
2015511037.tif 000017
2015511037.tif 000018