(57)【特許請求の範囲】
【請求項１】
コンピュータからアプリケーションの書込みデータを受け取り、
前記書込みデータを、複数のデータセットのそれぞれが重複排除単位のサイズを有する前記複数のデータセットとして管理し、及び
前記複数のデータセットのそれぞれに重複排除機能を適用する
ように構成されているコントローラを備え、
前記複数のデータセットの一つのデータセットがアプリケーションメタデータを含むアプリケーションメタデータ部分を有するとき、前記コントローラが前記データセットから前記アプリケーションメタデータを分離し、パディングデータによって前記アプリケーションメタデータ部分を充填し、前記パディングデータを含む前記データセットから計算したハッシュ値を用いて重複判定する前記重複排除機能を適用する、
ストレージシステム。
【請求項２】
データセットに前記重複排除機能を適用することが、
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記パディングデータを含む前記データセットのハッシュ値を計算することと、
メモリに前記データセットの前記ハッシュ値を記憶することと、
前記メモリに記憶される他のデータセットのハッシュ値と前記計算されたハッシュ値を比較することと、
前記計算されたハッシュ値が他のデータセットのハッシュ値と一致しないとき、前記ストレージシステムに前記データセットを記憶することと、
前記計算されたハッシュ値が別のデータセットのハッシュ値と一致するとき、前記ストレージシステムに前記データセットの前記書込みデータの部分を記憶しないこと、
を含む、請求項１に記載のストレージシステム。
【請求項３】
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記コントローラが前記分離されたアプリケーションメタデータを前記メモリのアプリケーションメタデータ領域に記憶し、
各ハッシュ値が前記ストレージシステムに記憶されるデータセットと関連付けられ、
ハッシュ値ごとに、前記コントローラが、前記ストレージシステムに記憶される前記データセットのロケーションの情報を前記メモリに記憶する
請求項２に記載のストレージシステム。
【請求項４】
前記コントローラが、前記ストレージシステムに記憶されるデータを読み取る読取り要求に応えて、
読み取られるデータセットごとに、前記データセットがアプリケーションメタデータ部分を有するかどうかを判断し、
前記データセットが前記アプリケーションメタデータ部分を有さないとき、前記メモリに記憶される前記データセットの前記ハッシュ値を見つけ、前記メモリに記憶される前記見つけられたハッシュ値のために前記ストレージシステムに記憶される前記データセットの前記ロケーションを見つけ、前記見つけられたロケーションで前記ストレージシステムに記憶される前記データセットを読み取り、及び
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記メモリの前記アプリケーションメタデータ領域から前記データセットの前記分離されたアプリケーションメタデータを読み取り、前記メモリに記憶される前記データセットの前記ハッシュ値を見つけ、前記メモリに記憶される前記見つけられたハッシュ値のために前記ストレージシステムに記憶される前記データセットの前記ロケーションを見つけ、前記見つけられたロケーションで前記ストレージシステムに記憶される前記データセットを読み取り、前記読み取られたアプリケーションメタデータ及び前記読み取られたデータセットを連結させる
ように構成される、請求項３に記載のストレージシステム。
【請求項５】
前記データセットを記憶するために複数のソリッドステートディスクシステム
をさらに備え、
前記コントローラが前記ソリッドステートディスクシステムの一つに設けられる、
請求項１に記載のストレージシステム。
【請求項６】
ストレージシステムのコントローラであって、前記コントローラが
コンピュータからアプリケーションの書込みデータを受け取り、
前記書込みデータを、複数のデータセットのそれぞれが重複排除単位のサイズを有する前記複数のデータセットとして管理し、及び
前記複数のデータセットのそれぞれに重複排除機能を適用する
ように構成され、
前記複数のデータセットの一つのデータセットがアプリケーションメタデータを含むアプリケーションメタデータ部分を有するとき、前記コントローラが前記データセットから前記アプリケーションメタデータを分離し、パディングデータによって前記アプリケーションメタデータ部分を充填し、前記パディングデータを含む前記データセットから計算したハッシュ値を用いて重複判定する重複排除機能を適用する、
コントローラ。
【請求項７】
データセットに前記重複排除機能を適用することが、
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記パディングデータを含む前記データセットのハッシュ値を計算することと、
メモリに前記データセットの前記ハッシュ値を記憶することと、
前記メモリに記憶される他のデータセットのハッシュ値と前記計算されたハッシュ値を比較することと、
前記計算されたハッシュ値が他のデータセットのハッシュ値と一致しないとき、前記ストレージシステムに前記データセットを記憶することと、
前記計算されたハッシュ値が別のデータセットのハッシュ値と一致するとき、前記ストレージシステムに前記データセットの前記書込みデータの部分を記憶しないこと、
を含む、
請求項６に記載のコントローラ。
【請求項８】
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記コントローラが前記分離されたアプリケーションメタデータを前記メモリのアプリケーションメタデータ領域に記憶し、
各ハッシュ値が前記ストレージシステムに記憶されるデータセットと関連付けられ、
ハッシュ値ごとに、前記コントローラが、前記ストレージシステムに記憶される前記データセットのロケーションの情報を前記メモリに記憶する
請求項７に記載のコントローラ。
【請求項９】
前記コントローラが、前記ストレージシステムに記憶されるデータを読み取る読取り要求に応えて、
読み取られるデータセットごとに、前記データセットがアプリケーションメタデータ部分を有するかどうかを判断し、
前記データセットが前記アプリケーションメタデータ部分を有さないとき、前記メモリに記憶される前記データセットの前記ハッシュ値を見つけ、前記メモリに記憶される前記見つけられたハッシュ値のために前記ストレージシステムに記憶される前記データセットの前記ロケーションを見つけ、前記見つけられたロケーションで前記ストレージシステムに記憶される前記データセットを読み取り、
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記メモリの前記アプリケーションメタデータ領域から前記データセットの前記分離されたアプリケーションメタデータを読み取り、前記メモリに記憶される前記データセットの前記ハッシュ値を見つけ、前記メモリに記憶される前記見つけられたハッシュ値のために前記ストレージシステムに記憶される前記データセットの前記ロケーションを見つけ、前記見つけられたロケーションで前記ストレージシステムに記憶される前記データセットを読み取り、前記読み取られたアプリケーションメタデータ及び前記読み取られたデータセットを連結させる
ように構成される、請求項８に記載のコントローラ。
【請求項１０】
前記コントローラが、データセットを記憶するための前記ストレージシステムの複数のソリッドステートディスクシステムの一つに設けられる、請求項６に記載のコントローラ。
【請求項１１】
ストレージシステムで重複排除を実行するためにデータプロセッサを制御するための複数の命令を記憶する非一過性のコンピュータ可読記憶媒体であって、前記複数の命令が、
前記データプロセッサに、コンピュータからアプリケーションの書込みデータを受け取らせる命令と、
前記データプロセッサに、前記書込みデータを、複数のデータセットのそれぞれが重複排除単位のサイズを有する前記複数のデータセットとして管理させる命令と、
前記データプロセッサに、前記複数のデータセットのそれぞれに重複排除機能を適用させる命令と、
前記複数のデータセットの一つのデータセットがアプリケーションメタデータを含んだアプリケーションメタデータ部分を有するとき、前記データプロセッサに、前記データセットから前記アプリケーションメタデータを分離させ、パディングデータによって前記アプリケーションメタデータ部分を充填させ、前記パディングデータを含む前記データセットから計算したハッシュ値を用いて重複判定する前記重複排除機能を適用させる命令と、
を備える、非一過性のコンピュータ可読記憶媒体。
【請求項１２】
前記データプロセッサにデータセットに前記重複排除機能を適用させる前記命令が、
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記データプロセッサに、前記パディングデータを含む、前記データセットのハッシュ値を計算させる命令と、
前記データプロセッサに、メモリに前記データセットの前記ハッシュ値を記憶させる命令と、
前記データプロセッサに、前記メモリに記憶される他のデータセットのハッシュ値と前記計算されたハッシュ値を比較させる命令と、
前記計算されたハッシュ値が他のデータセットのハッシュ値と一致しないとき、前記データプロセッサに、前記ストレージシステムに前記データセットを記憶させる命令と、
前記計算されたハッシュ値が別のデータセットのハッシュ値と一致するとき、前記データプロセッサに前記ストレージシステムに前記データセットの前記書込みデータの部分を記憶させない命令と、
を備える、請求項１１に記載の非一過性のコンピュータ可読記憶媒体。
【請求項１３】
各ハッシュ値が前記ストレージシステムに記憶されるデータセットと関連付けられ、前記複数の命令が、
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記データプロセッサに、前記メモリのアプリケーションメタデータ領域に前記分離されたアプリケーションメタデータを記憶させる命令と、
前記データプロセッサに、ハッシュ値ごとに、前記ストレージシステムに記憶される前記データセットのロケーションの情報を前記メモリに記憶させる命令と、
をさらに備える、請求項１２に記載の非一過性のコンピュータ可読記憶媒体。
【請求項１４】
前記複数の命令が、前記ストレージシステムに記憶されるデータを読み取る読取り要求に応えて、
前記データプロセッサに、読み取られるデータセットごとに、前記データセットがアプリケーションメタデータ部分を有するかどうかを判断させる命令と、
前記データセットが前記アプリケーションメタデータ部分を有さないとき、前記データプロセッサに、前記メモリに記憶される前記データセットの前記ハッシュ値を見つけさせ、前記メモリに記憶される前記見つけられたハッシュ値のために前記ストレージシステムに記憶される前記データセットの前記ロケーションを見つけさせ、前記見つけられたロケーションで前記ストレージシステムに記憶される前記データセットを読み取らせる命令と、
前記データセットが前記アプリケーションメタデータ部分を有するとき、前記データプロセッサに、前記メモリの前記アプリケーションメタデータ領域から前記データセットの前記分離されたアプリケーションメタデータを読み取らせ、前記メモリに記憶される前記データセットの前記ハッシュ値を見つけさせ、前記メモリに記憶される前記見つけられたハッシュ値のために前記ストレージシステムに記憶される前記データセットの前記ロケーションを見つけさせ、前記見つけられたロケーションで前記ストレージシステムに記憶される前記データセットを読み取らせ、前記読み取らせたアプリケーションメタデータ及び前記読み取らせたデータセットを連結させる命令と、
をさらに備える、請求項１３に記載の非一過性のコンピュータ可読記憶媒体。
【請求項１５】
前記ストレージシステムが前記データセットを記憶するために複数のソリッドステートディスクシステムを含み、
前記データプロセッサが前記ソリッドステートディスクシステムの一つに設けられる、
請求項１１に記載の非一過性のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してストレージシステムに関し、より詳細にはデータ重複排除に適用されるソリッドステートメモリシステムのための寿命管理に関する。
【背景技術】
【０００２】
フラッシュメモリは消去ページ操作に起因する寿命の制限を有するため、現在、フラッシュメモリ等のソリッドステートメモリシステムは、書込み及び消去操作のために管理される必要がある。また、データ重複排除技術も利用されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
現在のソリッドステートメモリシステム及びストレージシステムはアプリケーション特有のデータ構造のためのデータ重複排除を実装していない。例えば、米国特許出願公開第２０１３／０１５７５６号明細書は、例示された方法及び装置が、重複排除をサポートするフラッシュメモリをベースにしたソリッドステートデバイスのためにプレースメント及び／又は消去データを識別することに関することを開示している。
【課題を解決するための手段】
【０００４】
本発明の例示的な実施形態は、データ重複排除に適用されるソリッドステートメモリシステムのための寿命管理の方法を提供する。ストレージシステムが書込み操作を実行するとき、ストレージプログラムはアプリケーション特有のデータパターンをチェックし、アプリケーションヘッダ構造及びアプリケーションデータ本体を分離する。ストレージプログラムは、次いでアプリケーションデータ本体のハッシュ値等のデータ重複排除のためのフィンガープリントを計算し、ハッシュ値、ヘッダ長、及びヘッダロケーションを更新し、ヘッダデータ及びデータ本体を別々に記憶する。ストレージシステムは（データ重複排除部分にとっては困難である）アプリケーションヘッダ及び（データベースアプリケーション初期化データ等のパターンデータである）データ本体を別々に記憶して、データ重複排除率を改善する。
【０００５】
本発明の態様に従って、ストレージシステムは、コンピュータからアプリケーションの書込みデータを受け取り、書込みデータを、複数のデータセットのそれぞれが重複排除単位のサイズを有する複数のデータセットとして管理し、及び複数のデータセットのそれぞれに重複排除機能を適用するように構成されているコントローラを含む。複数のデータセットの一つのデータセットがアプリケーションメタデータを含んだアプリケーションメタデータ部分を有するとき、コントローラはデータセットからアプリケーションメタデータを分離し、パディングデータによってアプリケーションメタデータ部分を充填し、パディングデータを含んだデータセットに重複排除機能を適用する。
【０００６】
いくつかの実施形態では、データセットに重複排除機能を適用することは、データセットがアプリケーションメタデータ部分を有するとき、パディングデータを含むデータセットのハッシュ値を計算することと、メモリにデータセットのハッシュ値を記憶することと、メモリに記憶される他のデータセットのハッシュ値と計算されたハッシュ値を比較することと、計算されたハッシュ値が他のデータセットのハッシュ値と一致しないとき、ストレージシステムにデータセットを記憶することと、計算されたハッシュ値が別のデータセットのハッシュ値と一致するとき、ストレージシステムにデータセットの書込みデータの部分を記憶しないことを含む。
【０００７】
特定の実施形態では、データセットがアプリケーションメタデータ部分を有するとき、コントローラは分離されたアプリケーションメタデータをメモリのアプリケーションメタデータ領域に記憶する。各ハッシュ値はストレージシステムに記憶されるデータセットと関連付けられる。ハッシュ値ごとに、コントローラは、ストレージシステムに記憶されるデータセットのロケーションの情報をメモリに記憶する。
【０００８】
いくつかの実施形態では、コントローラは、ストレージシステムに記憶されるデータを読み取る読取り要求に応えて、読み取られるデータセットごとに、データセットがアプリケーションメタデータ部分を有するかどうかを判断し、データセットがアプリケーションメタデータ部分を有さないとき、メモリに記憶されるデータセットのハッシュ値を見つけ、メモリに記憶される見つけられたハッシュ値のためにストレージシステムに記憶されるデータセットのロケーションを見つけ、見つけられたロケーションでストレージシステムに記憶されるデータセットを読み取り、及びデータセットがアプリケーションメタデータ部分を有するとき、メモリのアプリケーションメタデータ領域からデータセットの分離されたアプリケーションメタデータを読み取り、メモリに記憶されるデータセットのハッシュ値を見つけ、メモリに記憶される見つけられたハッシュ値のためにストレージシステムに記憶されるデータセットのロケーションを見つけ、見つけられたロケーションでストレージシステムに記憶されるデータセットを読み取り、読み取られたアプリケーションメタデータ及び読み取られたデータセットを連結させるように構成される。
【０００９】
特定の実施形態では、ストレージシステムはデータセットを記憶するために複数のソリッドステートディスクシステムをさらに含む。コントローラはソリッドステートディスクシステムの一つに設けられる。
【００１０】
本発明の別の態様に従って、ストレージシステムのコントローラは、コンピュータからアプリケーションの書込みデータを受け取り、書込みデータを、複数のデータセットのそれぞれが重複排除単位のサイズを有する複数のデータセットとして管理し、及び複数のデータセットのそれぞれに重複排除機能を適用するように構成される。複数のデータセットの一つのデータセットがアプリケーションメタデータを含んだアプリケーションメタデータ部分を有するとき、コントローラはデータセットからアプリケーションメタデータを分離し、パディングデータによってアプリケーションメタデータ部分を充填し、パディングデータを含んだデータセットに重複排除機能を適用する。
【００１１】
本発明の別の態様は、ストレージシステムで重複排除を実行するためにデータプロセッサを制御するための複数の命令を記憶する非一過性のコンピュータ可読記憶媒体を対象とする。複数の命令は、データプロセッサに、コンピュータからアプリケーションの書込みデータを受け取らせる命令と、データプロセッサに、書込みデータを、複数のデータセットのそれぞれが重複排除単位のサイズを有する複数のデータセットとして管理させる命令と、データプロセッサに、複数のデータセットのそれぞれに重複排除機能を適用させる命令と、複数のデータセットの一つのデータセットがアプリケーションメタデータを含んだアプリケーションメタデータ部分を有するとき、データプロセッサに、データセットからアプリケーションメタデータを分離させ、パディングデータによってアプリケーションメタデータ部分を充填させ、パディングデータを含んだデータセットに重複排除機能を適用させる命令を含む。
【００１２】
いくつかの実施形態では、ストレージシステムはデータセットを記憶するために複数のソリッドステートディスクシステムを含む。データプロセッサは、ソリッドステートディスクシステムの一つに設けられる。
【発明の効果】
【００１３】
本発明のこれらの及び他の特徴及び優位点は、特定の実施形態の以下の詳細な説明を考慮して当業者に明らかになる。
【図面の簡単な説明】
【００１４】
【図１】本発明の方法及び装置が第１の実施形態に従って適用され得るシステムのハードウェア構成の例を示す図である。
【図２】ストレージメモリの例を示す図である。
【図３】ストレージＮＶ−ＲＡＭの例を示す図である。
【図４】第１の実施形態にかかるハッシュテーブルの例を示す図である。
【図５】ロケーションテーブルの例を示す図である。
【図６】重複排除操作の例示的な概要を示す図である。
【図７】ホスト書込み及びデータ重複排除操作のプロセスを示す流れ図の例を示す図である。
【図８】ホスト読取りミス操作のプロセスを示す流れ図の例を示す図である。
【図９】重複排除操作の別の例示的な概要を示す図である。
【図１０】本発明の方法及び装置が第２の実施形態に従って適用可能なシステムのハードウェア構成の例を示す図である。
【図１１】第２の実施形態のＳＳＤ（ソリッドステートディスク）システムの例を示す図である。
【図１２】第２の実施形態にかかるハッシュテーブルの例を示す図である。
【図１３】重複排除操作の別の例示的な概要を示す図である。
【図１４】重複排除操作の別の例示的な概要を示す図である。
【発明を実施するための形態】
【００１５】
本発明の続く発明を実施するための形態では、本開示の一部を成し、制限としてではなく例として示される添付図面、及び本発明が実践され得る例示的な実施形態が言及される。図面中、類似する数字は、いくつかの図を通して実質的に類似する構成要素を説明する。さらに、詳細な説明が以下に説明され、図面中に示されるように多様な例示的な実施形態を示す一方、本発明が本明細書に説明され、示される実施形態に制限されるのではなく、当業者に既知である又は当業者に既知となるだろう他の実施形態に及ぶことがあることに留意されたい。明細書中の「一実施形態」、「本実施形態」、又は「これらの実施形態」への言及は、本実施形態に関連して説明される特定の特徴、構造、又は特性が本発明の少なくとも一つの実施形態に含まれ、明細書の多様な箇所でのこれらの句の出現が必ずしもすべて同じ実施形態を参照していないことを意味する。さらに、続く詳細な説明では、本発明の完全な理解を提供するために多数の特定の詳細が説明される。しかしながら、これらの特定の詳細が本発明を実践するためにすべて必要とされるわけではない可能性があることが当業者に明らかになるだろう。他の状況では、周知の構造、材料、回路、プロセス、及びインタフェースは詳細に説明されておらず、及び／又は不必要に本発明を不明瞭にしないようにブロック図形式で示されることがある。
【００１６】
さらに、続く詳細な説明のいくつかの部分は、アルゴリズム及びコンピュータの中の動作の記号を使った表現の点に関して提示される。これらのアルゴリズムの説明及び記号を使った表現は、データ処理技術の当業者により、当業者の革新の真髄を他の当業者に最も効果的に伝えるために使用される手段である。アルゴリズムは、所望される終了状態又は結果につながる一連の定められたステップである。本発明では、実施されるステップは、有形の結果を達成するための有形の量の物理的な操作を必要とする。必ずしもではないが、通常、これらの量は電気もしくは磁気信号又は記憶、転送、結合、比較、及びそれ以外の場合操作することができる命令の形をとる。これらの信号を、ビット、値、要素、記号、文字、用語、番号、命令等と呼ぶことは、おもに一般的な使用のためにときには便利であることが判明している。ただし、これらの及び類似する用語のすべてが適切な物理量と関連付けられ、これらの量に適用される便利なラベルにすぎないことに留意されたい。特に別途明記しない限り、以下の説明から明らかになるように、説明を通して、「処理する」、「算出する」、「計算する」、「決定する」、「表示する」等の用語を活用する説明は、コンピュータシステムのレジスタ及びメモリの中で物理（電子）的な量として表されるデータを操作し、コンピュータシステムのメモリもしくはレジスタ又は他の情報記憶装置、情報伝送装置、もしくは情報表示装置の中で物理量として同様に表される他のデータに変換するコンピュータシステム又は他の情報処理装置のアクション及びプロセスを含むことがあることが理解される。
【００１７】
また、本発明は、本明細書の操作を実行するための装置に関する。この装置は、必要とされている目的のために特に構築されてよい、又はこの装置は一つ又は複数のコンピュータプログラムによって選択的に活性化されるもしくは再構成される１台又は複数の汎用コンピュータを含んでよい。かかるコンピュータプログラムは、光ディスク、磁気ディスク、読出し専用メモリ、ランダムアクセスメモリ、ソリッドステートデバイス及びドライブ、又は電子情報を記憶するために適した任意の他のタイプの媒体等であるが、これに限定されるものではない非一過性媒体を含んだコンピュータ可読記憶媒体に記憶されてよい。本明細書に提示されたアルゴリズム及びディスプレイは、任意の特定のコンピュータ又は他の装置に本質的に関係している。多様な汎用システムは、本明細書の教示に従ってプログラム及びモジュールとともに使用されてよい、又は所望される方法ステップを実行するためにより専門化された装置を構築することが便利であることが判明することがある。さらに、本発明は、任意の特定のプログラミング言語に関して説明されない。さまざまなプログラミング言語が、本明細書に説明される本発明の教示を実現するために使用され得ることが理解される。プログラミング言語（複数の場合がある）の命令は、例えば、中央演算処理装置（ＣＰＵ）、プロセッサ、又はコントローラ等、１台又は複数の処理装置によって実行されてよい。
【００１８】
本発明の例示的な実施形態は、以下により詳細に説明されるように、データ重複排除に適用されるソリッドステートメモリシステムのための寿命管理の装置、方法、及びコンピュータプログラムを提供する。
【００１９】
第１の実施形態
【００２０】
図１は、本発明の方法及び装置が第１の実施形態に従って適用され得るコンピュータシステムのハードウェア構成の例を示す。コンピュータシステムは、ストレージシステム１、ホストコンピュータ２、及び管理クライアント３を含む。物理ストレージシステム１は、ＰＣＩ、ＤＤＲ、ＳＣＳＩ等のバスインタフェースによって、ホストにＣＰＵ、データ重複排除エンジン、ストレージメモリ２０、不揮発性ランダムアクセスメモリ（ＮＶ−ＲＡＭ）３０、ディスクインタフェース、及び複数のＳＳＤ４、及び複数のＳＳＤ４を接続するホストインタフェースを含む。論理ユニット（ＬＵ）３は、複数のＳＳＤ４によって作成される論理データストアである。例えば、ＳＳＤ４は、フラッシュメモリ媒体を含むソリッドステートディスクである。ＮＶ−ＲＡＭ３０はＦＲＡＭ（強誘電ＲＡＭ）、Ｍ−ＲＡＭ（磁気抵抗ＲＡＭ）、又はＰＣＭ（相変化ＲＡＭ）等のバイトアクセスインタフェースである。ストレージシステム１のコントローラは重複排除プロセスを実行する。
【００２１】
図２はストレージメモリの例を示す。ストレージメモリ２０はストレージプログラム２１及びアプリケーションヘッダロケーションパラメータ２４を含む。ストレージプログラム２１は、読書き操作、キャッシュメモリ操作の管理等を実行する。この例では、ストレージプログラム２１はＩＯプログラム２２及びデータ重複排除プログラム２３を含む。データ重複排除プログラム２３は、ＬＢＡとハッシュ値の間、又はハッシュ値と物理ブロックアドレス（ＰＢＡ）の間でマッピング情報の管理を実行し、入力データに基づいてハッシュ値を計算する。アプリケーションヘッダロケーションパラメータ２４は、管理者によって構成されるヘッダロケーション及びヘッダ長を含む。
【００２２】
図３はストレージＮＶ−ＲＡＭの例を示す。ストレージＮＶ−ＲＡＭ３０は、ヘッダデータ領域３１、ハッシュテーブル４０、及びロケーションテーブル５０を含む。ハッシュテーブル４０はＬＢＡとハッシュ値の間のマッピング情報を有する。また、ハッシュテーブル４０は、セクタデータヘッダの管理されたロケーション及び長さも提供する。セクタデータは、ヘッダ、本体、又はフッタ領域の二つ以上の部分に分離できる。ロケーションテーブル５０は、記憶される実際のセクタデータのロケーションを管理するために、ハッシュ値と物理ブロックアドレス（ＰＢＡ）の間のマッピング情報を有する。ヘッダデータ３１、ハッシュテーブル４０、及びロケーションテーブル５０は、バックアップされたストレージメモリ２０に記憶できる。以下により詳細に説明されるように、重複排除は例えば書込みデータ又は読取りデータを形成する複数のセクタデータ（つまりデータセット）の各セクタデータ（つまりデータセット）に適用される。セクタデータのサイズは、重複排除セグメントサイズ（つまり、重複排除セグメント又は単位のサイズ）によって決定される。
【００２３】
図４は、第１の実施形態にかかるハッシュテーブルの例を示す。ハッシュテーブル４０は、論理ユニット番号（ＬＵＮ）フィールド４１、論理ブロックアドレス（ＬＢＡ）フィールド４２、ヘッダ長フィールド４３、ヘッダロケーション４４、及びハッシュ値フィールド４５を含む。ＬＵＮフィールド４１は、ストレージシステム１内の内部論理ユニット３を識別する。ＬＢＡフィールド４２は、ＬＵＮのアドレスを識別する。各セクタデータのデータセグメントサイズは、データ重複排除サイズに基づいた固定サイズである。例えば、データセグメントサイズは４ｋＢである。ヘッダ長フィールド４３及びヘッダロケーション４４はヘッダデータの長さ及びストアロケーションアドレスである。ハッシュ値フィールド４５は、実際のセクタデータのフィンガープリントである。ストレージプログラムは同じセクタデータを識別するために実際のセクタデータに基づいてハッシュ値を計算する。
【００２４】
図５は、ロケーションテーブルの例を示す。ロケーションテーブル５０は、セクタデータ本体５２のハッシュ値５１及び物理ブロックアドレス（ＰＢＡ）を含む。セクタデータ本体（つまりデータセット本体）は、ヘッダデータ部分がパディングパターンデータを使用し充填されるデータの別の部分である。ハッシュ値フィールド５１はハッシュテーブル４０のハッシュ値４５と同じ値である。セクタデータ本体フィールド５２のＰＢＡは、ＳＳＤのロケーションを識別する。ＰＢＡフィールドはディスクのディスク識別子及びＬＢＡを含む。
【００２５】
図６は重複排除操作の例示的な概要を示す。ストレージシステムがホストからセクタデータ６１を受け取るとき、データ重複排除プログラム２３はヘッダ長４３に基づいてヘッダデータ６３及びセクタデータ本体６２を分離する。データベースプログラムは固定サイズヘッダを有する記憶データであるので、ヘッダ長はデータベースプログラム等のホストアプリケーションによって選ばれる。例えば、ホスト管理者は、４ｋＢ（１ｋＢ＝１０２４バイト）から３２ｋＢ等の可変長にデータベース構造サイズを設定することができ、データベース構造は３２バイト等の固定サイズヘッダデータを含む。ストレージ管理者は管理クライアントからデータベース構造サイズを知り、データ重複排除プログラムはデータベースヘッダのロケーション及びサイズを知る。次に、データ重複排除プログラム２３はヘッダデータの部分にパディングパターンデータ６４を充填して、論理ユニット３の（５１２バイト等）同じセクタサイズに調整する。次いで、データ重複排除プログラム２３は、ヘッダデータ領域３１にヘッダデータ６３を記憶し、論理ユニット３に充填されたパディングデータ６４を有するセクタデータ本体６２を記憶する。
【００２６】
図７は、ホスト書込み及びデータ重複排除操作のプロセスを示す流れ図７００の例を示す。ステップＳ７０１で、ストレージプログラムはホスト２から書込みコマンドを受け取る。ストレージプログラムはキャッシュメモリを割り当て、受け取った書込みデータを記憶し、ホストに書込み応答を返す。ストレージプログラムは、重複排除セグメントサイズのセクタデータに書込みコマンド要求サイズを分割する。この例がライトバック操作である。ライトスルー操作は、書込み応答を返すタイミングを除き図示されている流れ図と同様である。ステップＳ７０２で、ストレージプログラムはホストアプリケーションヘッダオフセット（二つのアプリケーションヘッダ間の長さ）を計算する。例えば、ホストアプリケーションがデータベースである場合、データベース構造サイズは４ｋＢであり、第１のセクタデータ（５１２Ｂ）の倍数はデータベースアプリケーションヘッダデータを含み、他の七つのセクタデータはデータベースアプリケーションヘッダを含まない。ステップＳ７０３で、プログラムは、セクタデータがアプリケーションヘッダを含むかどうかを判定する。セクタデータがアプリケーションヘッダを含む場合（はい）、次のステップはＳ７０６である。含まない場合（いいえ）、次のステップはＳ７０４である。
【００２７】
ステップＳ７０４で、ストレージプログラムはハッシュ値を計算し、ハッシュテーブル４０にハッシュ値４５を設定する。ストレージプログラムは、ハッシュテーブル４０でヘッダ長フィールド４３を０に、ヘッダロケーションフィールド４４をＮ／Ａに設定する。ステップ７０５で、ストレージプログラムはロケーションテーブル５０をチェックする。ハッシュ値がロケーションテーブル５０に含まれない場合、ストレージプログラムはロケーションテーブルを更新し、ＬＵ３のＰＢＡにデータ全体を記憶する（つまり、重複排除されない）。ハッシュ値がロケーションテーブル５０に含まれる場合、ストレージプログラムはデータを記憶せず、ロケーションテーブル５０を更新しない（つまり、重複排除される）。
【００２８】
ステップＳ７０６で、ストレージプログラムはヘッダ長を管理クライアントからの特定の値に設定する。ステップＳ７０７で、ストレージプログラムはヘッダデータ及びセクタデータ本体を分離し、セクタデータ本体はヘッダ長のパディングデータで充填される。ステップＳ７０８で、ストレージプログラムはセクタデータ本体のハッシュ値及び充填されたパディングデータを計算し、ハッシュテーブル４０でハッシュ値４５を設定する。ストレージプログラムは、ハッシュテーブル４０にヘッダデータのメモリアドレスを記憶するために、特定の値及びヘッダロケーション４４にヘッダ長フィールド４３を設定する。ステップＳ７０９で、ストレージプログラムはロケーションテーブル５０をチェックする。ハッシュ値がロケーションテーブルに含まれない場合、ストレージプログラムはロケーションテーブルを更新し、ＬＵ３のＰＢＡにパディングデータを有するセクタデータ本体を記憶する。ハッシュ値がロケーションテーブル５０に含まれる場合、ストレージプログラムはパディングデータを有するセクタデータ本体を記憶せず、ロケーションテーブル５０を更新しない。
【００２９】
ステップＳ７０５又はステップ７０９の後、ステップ７１０で、ストレージプログラムは次のセクタデータを処理する。次のセクタデータが存在する場合（はい）、次のステップはＳ７０２である。すべてのセクタデータが処理されると（いいえ）、プロセスは終了する。
【００３０】
図８は、ホスト読取りミス操作のプロセスを示す流れ図８００の例を示す。流れ図は、キャッシュミスの読取り操作を示す。ストレージプログラムはハッシュテーブル３０及びロケーションテーブル４０を検索し、物理媒体からデータを読み取る。ステップＳ８０１で、ストレージプログラムはホスト２から読取りコマンドを受け取る。ストレージプログラムはキャッシュメモリを割り当て、重複排除セグメントサイズの部分に読取りコマンド要求サイズを分割する。ステップＳ８０２で、ストレージプログラムはハッシュテーブル４０及びヘッダ長フィールド４３をチェックする。ヘッダ長がゼロである場合（はい）、次のステップはＳ８０６である。ゼロではない場合（いいえ）、次のステップはＳ８０３である。
【００３１】
ステップＳ８０３で、ストレージプログラムはヘッダ長４３及びヘッダロケーション４４を見つけ、ヘッダデータ領域３１からヘッダデータを読み取る。ステップＳ８０４で、ストレージプログラムは、ハッシュテーブル４０からのＬＵＮ及びＬＢＡに基づいてハッシュ値４５を参照させる。次いで、ストレージプログラムはハッシュ値４５に基づいてロケーションテーブル５０からＰＢＡ５２を検索し、ＬＵからパディングデータを有するセクタデータを読み取り、キャッシュメモリにヘッダデータを記憶する。ステップ８０５で、ストレージプログラムはヘッダデータ及びセクタデータ本体を連結させ、キャッシュメモリに連結したデータを記憶する。ステップＳ８０６で、ストレージプログラムは、ハッシュテーブル４０からのＬＵＮ及びＬＢＡに基づいてハッシュ値４５を調べる。ストレージプログラムは、ハッシュ値４５に基づいてロケーションテーブル５０からＰＢＡ５２を検索し、ＬＵからデータを読み取り、キャッシュメモリにデータを記憶する。ステップ８０７で、ステップＳ８０５又はＳ８０６に続いて、ストレージプログラムは次のセクタデータを処理する。次のセクタデータが存在する場合（はい）、次のステップはＳ８０２である。すべてのセクタデータが処理される場合（いいえ）、次のステップはＳ８０８である。ステップＳ８０８で、ストレージプログラムはホストに読み取られたデータ及び応答を返す。
【００３２】
図９は重複排除操作の別の例示的な概要を示す。図９は図６に類似しているが、ヘッダデータ９１だけではなくフッタデータ９３も導入し、ヘッダ又は／及びフッタ分離を示す。ストレージシステムがホストからセクタデータ６１を受け取るとき、データ重複排除プログラム２３は、ヘッダ長４３及びフッタ長９７に基づいてセクタデータ本体６２からヘッダデータ９１及びフッタデータ９３を分離する。次に、データ重複排除プログラム２３はヘッダ長４３を有するヘッダデータの部分に一つのパディングパターンデータ９４を充填し、フッタ長９７を有するフッタデータの部分に別のパディングパターンデータ９５を充填して、論理ユニット３の（５１２バイト等）同じセクタサイズに調整する。次いで、データ重複排除プログラム２３は、ヘッダデータ領域３１にヘッダデータ９１及びフッタデータ９３を記憶し、論理ユニット３に充填されたパディングデータ９４、９５を有するセクタデータ本体６２を記憶する。アプリケーションメタデータは、ヘッダデータとしてヘッダ部分／領域に、及び／又はフッタデータ及び／又はセクタデータの何らかの他のメタデータ部分／領域としてフッタ部分／領域に提供される。
【００３３】
第２の実施形態
【００３４】
図１０は、本発明の方法及び装置が第２の実施形態に従って適用され得るシステムのハードウェア構成の例を示す。図１０は図１に類似している。第２の実施形態では、重複排除プロセスはストレージシステム１のコントローラの代わりにＳＳＤ１１０のコントローラによって実行される。
【００３５】
図１１は第２の実施形態のＳＳＤ（ソリッドステートディスク）の例を示す。ＳＳＤ１１０は、ＰＣＩ、ＤＤＲ、ＳＣＳＩ等のバスインタフェースを介してＣＰＵ、データ重複排除エンジン、メモリ２０（図２を参照）、キャッシュメモリ、フラッシュインタフェース２２２、及びＲＡＭ Ｉ／Ｆ２２３に接続するディスクインタフェースを含む。フラッシュインタフェース２２は、ＮＡＮＤ等のブロックアクセス不揮発性メモリインタフェースである。Ｉ／Ｏアクセスサイズは通常２ｋＢブロックサイズであり、ＮＡＮＤフラッシュは通常２５６ｋＢ消去セクタサイズである。フラッシュインタフェース２２２は複数のフラッシュメモリユニットを接続する。フラッシュメモリユニットはセクタデータ２２４及び充填されたパディングデータ２２５を含む。ＲＡＭインタフェース２２３はＦＲＡＭ（強誘電ＲＡＭ）、Ｍ−ＲＡＭ（磁気抵抗ＲＡＭ）、又はＰＣＭ（相変化ＲＡＭ）等のバイトアクセス不揮発性ランダムアクセスメモリ（ＮＶ−ＲＡＭ）インタフェースである。ＲＡＭインタフェース２２３は、複数のＮＶ−ＲＡＭユニットを接続する。ＮＶ−ＲＡＭユニットは、ロケーションテーブル５０及びハッシュテーブル１２０を含む。
【００３６】
図１２は、第２の実施形態にかかるハッシュテーブルの例を示す。図１２は図４に類似している。ハッシュテーブル１２０はＬＢＡフィールド１２１、ヘッダ長フィールド１２２、データハッシュ値フィールド１２３、及びヘッダデータ１２４を含む。例えば、ハッシュテーブル１２０の一つのエントリは６４バイト（ＬＢＡ８バイト、ヘッダ長４バイト、ハッシュ値２０バイト、ヘッダデータ３２バイト）等の固定サイズであり、次いでメモリ読取り／書込み操作位置合わせが適合される。
【００３７】
図１３は、ＤＩＦ保護を有する重複排除操作の別の例示的な概要を示す。この例は図９に示される例に類似している。図１３では、ＤＩＦデータ１３３として図示されるＴ１０  ＳＣＳＩデータインテグリティフィールド（ＤＩＦ）等の追加のストレージ保護データがある。ＤＩＦは、ホストＬＢＡの増分値及びアプリケーション特有のタグデータ（リファレンスタグ及びアプリケーションタグ）、及びセクタデータ６１を守るためのＣＲＣ（巡回冗長コード）等の保護データを含む。ＤＩＦタグデータは、別のホストＬＢＡセクタデータに関連して異なる値を含むことがある。ＤＩＦはＴ１０により指定される固定長である。セクタデータ本体６２及びヘッダデータ９１を保護するために、ＤＩＦデータ１３３はヘッダ及び／又はフッタのデータ領域に別々に記憶される。図示されている例では、ストレージプログラムは、論理ユニットに、ヘッダ長４３の充填されたパディングデータ９４、及び（ＤＩＦデータ長１３５が加えられたフッタ長９７に等しい）フッタ＋ＤＩＦ長１３６の充填されたパディングデータ９５を有するセクタデータ本体６２を記憶する。
【００３８】
図１４は、ＤＩＦ保護を有する重複排除操作の別の例示的な概要を示す。この例は図１３に示される例に類似している。ＤＩＦはホストＬＢＡ増分値及びアプリケーション特有のタグデータを含むタグデータ（基準タグ及びアプリケーションタグ）１４３を含む。また、ＤＩＦは、セクタデータ６１を守るためのＣＲＣ（巡回冗長コード）等の保護データ１４４も含む。ＤＩＦタグデータ１４３は、別のホストＬＢＡセクタデータに対する差分値を含んでよい。ただし、ＤＩＦ保護データ１４４はセクタデータの計算されたＣＲＣであるので、ＤＩＦ保護データは二つのセクタデータが同じデータセットであるとき同じ値を含む。ＤＩＦタグ長１４７のＤＩＦタグデータ１４３は、ヘッダ及び／又はフッタのデータ領域に記憶され、ＤＩＦ保護長１４８のＤＩＦ保護データ１４４はＤＩＦタグ長１４７の充填されたパディングデータ１４５とともに論理ユニットに記憶される。
【００３９】
図１３及び図１４では、ストレージがホストから読取りコマンドを受け取るとき、ストレージプログラムは図８に示されるプロセスに類似したプロセスを実行する。最終ステップＳ８０８で、ストレージプログラムはＤＩＦ保護データ及びＤＩＦタグデータをチェックする。ＤＩＦ保護データ又はＤＩＦタグデータが期待するデータと不一致である場合、ストレージは読取りコマンドのためにＤＩＦエラーを有するＳＣＳＩチェックコンディション応答を返す。
【００４０】
言うまでもなく、図１、図１０、及び図１１に示されるシステム構成は、本発明が実装され得る情報システムの純粋に例示的であり、本発明は特定のハードウェア構成に制限されない。本発明を実装するコンピュータ及びストレージシステムは、上述の発明を実装するために使用されるモジュール、プログラム、及びデータ構造を記憶し、読み取ることができる既知のＩ／Ｏ装置（例えば、ＣＤ及びＤＶＤのドライブ、フロッピーディスクドライブ、ハードドライブ等）を有することもある。これらのモジュール、プログラム、及びデータ構造は、かかるコンピュータ可読媒体で符号化できる。例えば、本発明のデータ構造は、本発明で使用されるプログラムが常駐する一つ又は複数のコンピュータ可読媒体とは無関係に、コンピュータ可読媒体上に記憶できる。システムの構成要素は、例えば通信ネットワーク等、デジタルデータ通信の任意の形式又は媒体により相互接続できる。通信ネットワークの例は、ローカルエリアネットワーク、インターネット等の広域ネットワーク、無線ネットワーク、ストレージエリアネットワーク等を含む。
【００４１】
説明では、本発明の完全な理解を提供するために、多数の詳細が説明のために示されている。しかしながら、本発明を実践するためにはこれらの特定の詳細のすべてが必要とされるわけではないことは、当業者には明らかであろう。また、本発明が、通常フローチャート、流れ図、構造図、又はブロック図として示されるプロセスとして説明され得ることも留意される。フローチャートは順次プロセスとして操作を説明してよいが、操作の多くは並行して又は同時に実行できる。さらに、操作の順序は並べ替えられてよい。
【００４２】
技術で既知であるように、上述の操作はハードウェア、ソフトウェア、又はソフトウェア及びハードウェアの何らかの組合せによって実行できる。本発明の実施形態の多様な態様は、回路及び論理デバイス（ハードウェア）を使用して実装され得る。一方、他の態様は、プロセッサによって実行される場合、プロセッサに本発明の実施形態を実施するための方法を実行させるだろう機械可読媒体（ソフトウェア）に記憶される命令を使用し、実装され得る。さらに、他の実施形態がソフトウェアだけで実行され得るのに対し、本発明のいくつかの実施形態はハードウェアだけで実行され得る。さらに、説明されている多様な機能は単一のユニットで実行できる、又は任意の数の方法で多くの構成部品にわたって拡散できる。ソフトウェアによって実行されるとき、方法は、コンピュータ可読媒体に記憶される命令に基づいて、汎用コンピュータ等のプロセッサによって実行されてよい。所望される場合、命令は圧縮された及び／又は符号化されたフォーマットで媒体上に記憶できる。
【００４３】
上記から、本発明がデータ重複排除に適用されるソリッドステートメモリシステムの寿命管理のために方法、装置、及びコンピュータ可読媒体に記憶されるプログラムを提供することが明らかになるであろう。さらに、特有の実施形態が本明細書に示され、説明されているが、当業者は、同じ目的を達成するために計算される任意の装置が開示されている特有の実施形態の代わりにされ得ることを理解している。本開示は、本発明のありとあらゆる適応又は変形をカバーすることを目的とし、以下の特許請求の範囲で使用される用語が、明細書に開示される特定の実施形態に本発明を制限すると解釈されるべきではないことが理解されるべきである。むしろ、本発明の範囲は、特許解釈の確立されている原則に従って解釈されるべきである以下の特許請求の範囲によって、かかる特許請求の範囲の権利対象である同等物の完全な範囲とともによってのみ決定されるべきである。
【図１】
0006307624.tif 000002
【図２】
0006307624.tif 000003
【図３】
0006307624.tif 000004
【図４】
0006307624.tif 000005
【図５】
0006307624.tif 000006
【図６】
0006307624.tif 000007
【図７】
0006307624.tif 000008
【図８】
0006307624.tif 000009
【図９】
0006307624.tif 000010
【図１０】
0006307624.tif 000011
【図１１】
0006307624.tif 000012
【図１２】
0006307624.tif 000013
【図１３】
0006307624.tif 000014
【図１４】
0006307624.tif 000015