JP2016189225A - ストレージ・デバイスによって支援されるデータ重複排除 - Google Patents

ストレージ・デバイスによって支援されるデータ重複排除 Download PDF

Info

Publication number
JP2016189225A
JP2016189225A JP2016154509A JP2016154509A JP2016189225A JP 2016189225 A JP2016189225 A JP 2016189225A JP 2016154509 A JP2016154509 A JP 2016154509A JP 2016154509 A JP2016154509 A JP 2016154509A JP 2016189225 A JP2016189225 A JP 2016189225A
Authority
JP
Japan
Prior art keywords
data
storage device
input
module
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016154509A
Other languages
English (en)
Inventor
コーエン アール
Cohen Earl
コーエン アール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Corp filed Critical LSI Corp
Publication of JP2016189225A publication Critical patent/JP2016189225A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】データの重複排除を提供するためのシステムおよび方法を提供すること。
【解決手段】一実施形態(100)においては、入力/出力モジュール(101)が、データを書き込むための入力/出力オペレーションを生成するように機能することができる。ストレージ・デバイス(102)が、入力/出力モジュールに通信可能に結合されており、入力/出力オペレーションのデータをそのストレージ・デバイスの論理アドレスに書き込むように、およびそのデータに基づいて署名を生成するように機能することができる。入力/出力モジュールはさらに、その署名を処理して、そのデータが別の論理アドレスに存在しているかどうかを判定するように機能することができる。
【選択図】図2

Description

関連出願の相互参照
本特許出願は、(2013年3月14日に出願された)米国特許仮出願第61/782,122号に対する優先権を、ひいてはその仮出願の早い出願日の利益を主張するものであり、その仮出願の全内容は、参照によって本明細書に組み込まれている。
本発明は、一般には、ストレージ・デバイスの入力/出力(I/O)オペレーションに関し、より具体的には、ストレージ・デバイス内の重複データを少なくすることに関する。
重複排除は、着信データを、ストレージ・デバイス上に既に存在しているデータと比較して、その着信データが重複であるかどうかを判定するプロセスである。着信データが重複でない、即ち、一意である場合には、その着信データは、ストレージ・デバイス上に格納される。着信データが重複している場合には、その着信データは格納されない。代わりに、既に格納されているデータへの参照が作成される。
本明細書において提示されているシステムおよび方法は、データの重複排除を提供する。一実施形態においては、I/Oモジュールが、データを書き込むためのI/Oオペレーションを生成するように機能することができる。ストレージ・デバイスが、I/Oモジュールに通信可能に結合されており、I/Oオペレーションのデータをそのストレージ・デバイスの論理アドレスに書き込むように、およびそのデータに基づいて署名を生成するように機能することができる。I/Oモジュールはさらに、その署名を処理して、そのデータが(たとえば、別のストレージ・デバイス、または書き込みが行われているストレージ・デバイス上の)別の論理アドレスに存在しているかどうかを判定するように機能することができる。
本明細書において開示されているさまざまな実施形態は、設計上の選択の問題としてさまざまな方法で実施されることが可能である。たとえば、本明細書のシステムおよび方法の実施形態は、コンピュータ・ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの形態を取ることができる。その他の例示的な実施形態について、以降で説明する。
次いで、本発明のいくつかの実施形態について、単なる例として、添付の図面を参照しながら説明する。同じ参照番号は、すべての図面上で同じ要素または同じタイプの要素を表す。
重複データを少なくするための例示的なシステムのブロック図である。 図1のシステムとともに機能できる例示的なプロセスのフローチャートである。 図1のシステムとともに機能できる別の例示的なプロセスのフローチャートである。 例示的なSSDならびにその関連付けられているデバイス・コントローラおよび(1つまたは複数の)ストレージ・デバイスのブロック図である。 ホスト・システムとのインターフェースを取るSSDおよびそれらの関連付けられているコントローラ/ストレージ・デバイスを含むI/Oモジュールのブロック図である。
図および以降の説明は、本発明の特定の例示的な実施形態を示している。したがって、本明細書において明示的に説明または図示されていないが、本発明の原理を具体化し、本発明の範囲内に含まれるさまざまなアレンジを当業者なら考案できるであろうということがわかるであろう。さらに、本明細書に記載されているあらゆる例は、本発明の原理を理解する際の助けとなるよう意図されており、そのような具体的に挙げられている例および状況に対する限定を伴わないものとして解釈されるべきである。結果として、本発明は、以降で説明されている特定の実施形態または例に限定されるものではない。
図1は、重複データを少なくするための例示的なシステム100のブロック図である。システム100は、その基本的な形態において、I/Oモジュール101を含み、I/Oモジュール101は、ストレージ・デバイス102とのI/Oオペレーションを実行するように機能することができる。それを行う際に、I/Oモジュール101は、ストレージ・デバイス102上にデータを書き込んで格納するための書き込みI/Oを実行する。ストレージ・デバイス102は、署名ジェネレータ103を含み、署名ジェネレータ103は、書き込みI/Oのデータに基づいて署名を生成して返すように機能することができ、それによってI/Oモジュール101は、データ署名を処理して、そのデータが他のどこかに配置されているかどうかを判定することができる。すなわち、I/Oモジュール101は、データ署名を処理して、書き込みI/Oのデータが、同じまたは別のストレージ・デバイスの別の論理アドレスにおいて重複しているかどうかを判定することができる。
I/Oモジュール101は、ストレージ・デバイス102とのI/Oオペレーションを行ってそこからのデータ署名を処理するように機能することができる任意のシステム、デバイス、ソフトウェア、またはそれらの組合せである。この点に関連して、I/Oモジュール101は、任意のコンピューティング・システムとともに(たとえば、ホスト・システムのホスト・インターフェースとして)構成されることが可能である。第1の例においては、I/Oモジュール101は、ストレージ・デバイス102を含む1つまたは複数のストレージ・デバイスに結合されているホスト・バス・アダプタ(HBA)またはRAIDオンチップ(ROC)コントローラである。I/Oモジュール101は、いくつかの実施形態においては、RAID(Redundant Array of Independent Disks)ストレージ・システムとして1つまたは複数のストレージ・デバイスを管理することを可能にされる。第2の例においては、I/Oモジュール101は、(たとえば、PCIエクスプレス接続を介して、)ストレージ・デバイス102を含む1つまたは複数のストレージ・デバイスに結合されているホスト・コンピュータである。
ストレージ・デバイス102は、データを格納することができる任意のデバイス(たとえば、コンピュータ・ディスク・ドライブ、不揮発性ランダム・アクセス・メモリ(NVRAM)、ソリッド・ステート・ドライブ(SSD)など)である。いくつかの実施形態においては、ストレージ・デバイス102は、I/Oモジュール101のコントロールのもとでI/Oをキャッシュするように機能することができる、I/Oモジュール101のためのキャッシュ・メモリである。
署名ジェネレータ103は、書き込みI/Oオペレーションからデータを抽出してそのI/Oオペレーションのデータに基づいて署名を生成するように機能することができる任意のシステム、デバイス、ソフトウェア、またはそれらの組合せである。そのようなデータ署名の例としては、ハッシュ・コード・ジェネレータ、チェックサム・ジェネレータなどが含まれる。したがって、ストレージ・デバイス102は、そのストレージ・デバイス102に固有のデバイス・コントローラの処理能力など、何らかの種類の処理能力を有することができる。たとえばSSDは、典型的には、I/Oオペレーションを処理すること、データをバッファすること、データをストレージ・デバイス内の論理アドレスに対応付けすること(マッピング)などを含む、そのSSDに固有のさまざまな機能を実行するように機能することができるデバイス・コントローラを伴って構成されている。この点に関連して、ストレージ・デバイス102のデバイス・コントローラは、データ署名を生成してそのデータ署名をI/Oモジュール101による後続の処理のためにI/Oモジュール101へ返すために使用されることも可能である。次いで、システム100のオペレーションに関するさらなる詳細について、図2および図3に関連して説明する。
図2は、図1のシステム100とともに機能できる例示的なプロセス200のフローチャートである。より具体的には、プロセス200は、1つの例示的なオペレーションを開示しており、そのオペレーションにおいては、I/Oモジュール101は、書き込みI/Oオペレーションを実行して、そのI/Oオペレーションに関連しているストレージ・デバイス102からのデータ署名を処理することができる。この実施形態においては、I/Oモジュール101は、プロセス要素201において、ストレージ・デバイス102の論理アドレスにデータを書き込むためのI/Oコマンドを生成する。書き込みI/Oコマンドを処理している間に、ストレージ・デバイス102は、その書き込みI/Oコマンド内に含まれているデータに基づいて署名を生成して、次いでそのデータ署名をI/Oモジュール101へ転送することができる。
プロセス要素202において、I/Oモジュール101は、プロセス要素201において生成された書き込みI/Oコマンドのデータに従ってストレージ・デバイス102によって生成されたデータ署名を受信する。ストレージ・デバイス102は、書き込みオペレーションの成功またはその他のステータスを示す肯定応答をI/Oモジュール101へ転送することもできる。この点に関連して、I/Oモジュール101は、プロセス要素203において、データがストレージ・デバイス102に成功裏に書き込まれた旨のストレージ・デバイス102による肯定応答を受信する。その後、I/Oモジュール101は、プロセス要素204において、データ署名を処理して、そのデータが別のストレージ・ロケーションに(たとえば、ストレージ・デバイス102またはその他の何らかのストレージ・モジュールの別の論理アドレスに)既に存在するかどうかを判定する。したがって、データ重複判定は、データがストレージ・デバイス102に既に書き込まれた後に実行される。
書き込みI/Oのデータが別のストレージ・ロケーションに存在しない場合(すなわち、そのデータが重複せずに一意である場合)には、I/Oモジュール101は、プロセス要素206において、書き込みI/Oのデータを、そのデータが書き込まれたばかりの(成功裏に書き込まれていると想定して)ストレージ・デバイス102の論理アドレスに関連付ける。しかしながら、そのデータが別のストレージ・ロケーションに既に存在する場合(すなわち、そのデータが重複している場合)には、I/Oモジュール101は、プロセス要素205において、ストレージ・デバイス102に書き込まれたばかりの書き込みデータのロケーションを、既に存在しているデータに関連付ける。言い換えれば、I/Oモジュール101は、I/Oモジュール101のテーブル105(たとえば、データ構造)内のデータのロケーションを、以前に書き込まれたデータの論理アドレスで更新する。したがって、データが書き込まれたばかりのストレージ・デバイス102のストレージ・スペースは、そのデータを自由にするために割り当て解除またはトリムされることが可能であり、それによって、そのデータは上書きされることが可能になる。たとえば、もはや必要とされていないストレージ・スペースを割り当て解除するために、SCSI(Small Computer System Interface)プロトコルは、UNMAPコマンドを有しており、SATA(Serial AT Attachment)プロトコルは、類似のTRIMコマンドを有している。いずれのケースにおいても、データ重複判定が実行されると、I/Oモジュール101は、プロセス要素207において、(たとえば、ホスト・システムによって)次なる書き込みI/Oが要求されるまで待つ。次なるI/O要求を受信すると、I/Oモジュール101は、プロセス要素201へ戻って、プロセス200を繰り返す。
その他の実施形態においては、データが別のストレージ・ロケーションに既に存在することが検知された場合には、その別のストレージ・ロケーションが、割り当て解除されるロケーションであり、次いでその別のデータのロケーションが、ストレージ・デバイス102に書き込まれたばかりの書き込みデータに関連付けられる。
図3は、図1のシステムの別の例示的なプロセス300のフローチャートである。より具体的には、プロセス300は、I/Oモジュール101からの書き込みI/Oに応答したストレージ・デバイス102の1つの例示的なオペレーションを開示している。この実施形態においては、ストレージ・デバイス102は、プロセス要素301において、書き込みI/Oコマンドを処理する。たとえば、ストレージ・デバイス102は、書き込みI/Oコマンドからデータを抽出して、そのデータがストレージ・デバイス102内に格納されることになる論理アドレスを特定することができる。
書き込みI/Oコマンドから抽出されたデータを用いて、ストレージ・デバイス102は、プロセス要素302において、書き込みI/Oコマンドのデータに基づいて署名を計算することができる。たとえば、書き込みI/Oコマンドのデータは、特定の長さのトグル・ビットを有することができ、それらのトグル・ビットに対して、そのデータを一意に表すためのハッシュ・コードまたはその他の何らかのコードが生成されることが可能である。次いでストレージ・デバイス102は、プロセス要素303において、書き込みI/Oコマンドのデータを、その書き込みI/Oコマンドにおいて識別されたストレージ・デバイス102の論理アドレスに格納する。次いでストレージ・デバイス102は、プロセス要素304において、署名をI/Oモジュール101へ送信し、それによってI/Oモジュール101は、上述の重複判定を実行することができる。
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態という形態を取ることができる。図4および図5は、本明細書に記載されているシステムおよび方法を採用するように機能できることが可能であるハードウェア実施形態およびソフトウェア実施形態の組合せを示している。より具体的には、図4は、例示的なSSD400ならびにその関連付けられているデバイス・コントローラ(SSDコントローラ401)およびストレージ・デバイス495のブロック図である。図5は、ホスト・システム502とのインターフェースを取るSSD400およびそれらの関連付けられているコントローラ401/ストレージ・デバイス495を含むストレージ・モジュール516のブロック図である。
図4においては、ストレージ・コントローラ401は、ホスト・インターフェース411を含み、ホスト・インターフェース411は、ホスト・システムのI/Oオペレーションを通信するためにホスト・システムとインターフェースで接続するように機能することができる。ホスト・インターフェース411は、タグ・トラッキング・モジュール413を伴って構成されることが可能であり、タグ・トラッキング・モジュール413は、個々のI/Oコマンド(たとえば、ストレージ・デバイス495内の特定のアドレスに対する読み取りコマンドおよび書き込みコマンド)の進行を追跡把握するように機能することができる。タグ・トラッキング・モジュール413は、処理のステータスを識別するためのコマンドの処理中に、ホスト・システムから受信されたコマンドの外部フラグを、SSDコントローラ401がアクセスできる内部フラグに関連付けることができる。
SSDコントローラ100はまた、データ処理モジュール421を含み、データ処理モジュール421は、署名ジェネレータ422および処理エンジン423を含む。一般に、処理エンジン423は、ホスト・インターフェース411から受信される、またはバッファ431内に存在しているデータ上で特定のタスク、たとえば、データをフォーマットすること、データを別のコードに変換する(トランスコード)ことなどを実行するように機能することができる。たとえば、処理エンジン423は、オペレーションを生成するホスト・システムのI/Oモジュール(たとえば、I/Oモジュール101)からのI/Oオペレーションを、そのI/Oオペレーションのデータがストレージ・デバイス495の論理アドレスに書き込まれることが可能になるように処理するように機能できることが可能である。すなわち、エンジン423は、書き込みI/Oコマンドのデータを抽出して、そのデータを、ストレージ・デバイス495内に格納するために整える(準備する、備える)ことができる。図1の署名ジェネレータ103は、この点に関連して、ホスト・システムへ返すための書き込みI/Oコマンドのデータに基づいて署名を生成するためのデータ処理モジュール421を伴って構成されることが可能であり、それによってホスト・システムは、I/Oオペレーションのデータが別の論理アドレスに配置されている(すなわち、他のどこかで重複している)かどうかを判定することができる。
バッファ431は、ホスト・システムとの間で転送されるデータを格納するように機能することができる。バッファ431は、たとえば、メモリ437内のさらに高いレベルのRAID機能を含む、個々のフラッシュ・デバイス492のうちのもう1つを管理するためのSSDコントローラ401によって使用されるメモリ・テーブルなどのシステム・データを格納することもできる。その他のモジュールとしては、さらに高いレベルのエラー訂正および冗長性機能を提供するためのエラー訂正コード(ECC−X)モジュール435、ならびにバッファ431との間でのデータの移動をコントロールするためのダイレクト・メモリ・アクセス(DMA)モジュール433を含むことができる。
SSDコントローラ401はまた、さまざまなエラー訂正コード技法(たとえば、巡回冗長検査、ハミング・コード、BCH(Bose−Chaudhuri−Hocquenghem)コード、低密度パリティー・チェック・コードなど)のうちの任意の技法を使用してバッファ431内のデータのさらに低いレベルのエラー訂正および冗長性処理を提供するように機能することができる、エラー訂正コード・モジュール461を含む。
デバイス・インターフェース・ロジック・モジュール491は、フラッシュ・デバイス492のプロトコルに従って個々のフラッシュ・デバイス492との間でデータを転送するように機能することができる。デバイス・インターフェース・ロジック・モジュール491は、スケジューリング・モジュール493を含み、スケジューリング・モジュール493は、フラッシュ・デバイス492に対するI/Oオペレーションをキューに入れるように機能することができる。
本明細書でのSSDコントローラ401はまた、マップ・モジュール441を含み、マップ・モジュール441は、テーブル443に従ってストレージ・デバイス495内のロケーションへのデータ・アドレッシングを実行するように機能することができる。たとえば、マップ・モジュール441は、ホスト・システムからの論理ブロック・アドレス(LBA)を、個々のフラッシュ・デバイス492のうちの1つまたは複数へ導かれるブロック/ページ・アドレスに変換するために、テーブル443を使用することができる。
リサイクラー451は、ストレージ・コントローラ401のためにガベージ・コレクションを実行する。たとえば、リサイクラー451は、マップ・モジュール441のテーブル443をスキャンすることによって、フラッシュ・デバイス492のうちでアクティブに使用中である部分を特定することができる。この点に関連して、リサイクラー451は、フラッシュ・デバイス492のうちで使用されていない部分または「割り当て解除された」部分を、それらの使用されていない部分を消去することによって、書き込みに利用できるようにすることができる。リサイクラー451は、フラッシュ・デバイス492内のデータを移動させて、フラッシュ・デバイス492のうちのさらに大きな連続した部分を、書き込みに利用できるようにすることもできる。この点に関連して、データが重複しているとI/Oモジュール101が判定すると、リサイクラー451は、ストレージ・デバイス495内のストレージ・スペースを消去または割り当て解除することができる。
SSDコントローラ401はまた、CPU471を含み、CPU471は、SSDコントローラ401のさまざまな側面をコントロールする。たとえば、CPU471は、ホスト・システムから受信されたコマンドを追跡把握およびコントロールするコマンド・マネージメント473を実施するための命令またはファームウェアを処理することができる。このファームウェアは、バッファ431の割り当ておよび使用をコントロールするバッファ・マネージメント475、ならびにマップ・モジュール441をコントロールするための変換マネージメントすなわち477を実施することもできる。このファームウェアは、外部のデータのアクセスと、リサイクルされるデータのアクセスとの間において生じる可能性があるコンフリクトなどの競合を回避するために、データ・アドレッシングの一貫性をコントロールするためのコヒーレンス・マネージメント479を採用することもできる。このファームウェアは、デバイス・インターフェース・ロジック491をコントロールするためのデバイス・マネージメント481、ならびにSSDコントローラ401内のコンポーネントのアイデンティティー情報の修正および通信をコントロールするためのアイデンティティー・マネージメント482を提供することもできる。
図5において、ホスト・システム502は、ソフトウェア命令を処理して、SSD400との間で読み取りおよび書き込みを行うためのストレージ・モジュール516とのI/Oオペレーションを実行するように機能することができる。この点に関連して、ホスト・システム502は、オペレーティング・システム505を含むことができ、オペレーティング・システム505は、ホスト・システム502のためのコンピューティング環境を提供する。ドライバ507は、ストレージ・モジュール516へのリンク506を通じて通信して、そのストレージ・モジュール516とともに構成されているさまざまなSSD400とのI/Oオペレーションを実行するように機能することができる。
その他のコンピューティング・システムと同様に、オペレーティング・システム505は、マネージメント・ソフトウェア514(たとえば、Biosソフトウェア)を介して始動されることが可能である。ホスト・システム502は、ホスト・システム502のためにさまざまなコンピューティング・プロセスを実行するためのアプリケーション・ソフトウェア509(たとえば、ワード・プロセッシング・アプリケーション、画像処理アプリケーションなど)を含むこともできる。ホスト・システム502は、通信ネットワーク519(たとえば、インターネット、ローカル・エリア・ネットワーク、ワイドエリア・ネットワークなど)を通じて1つまたは複数のサーバ518とのI/Oオペレーションを行うように機能することができるI/Oおよびストレージ機能517を含むこともできる。この点に関連して、ストレージ・モジュール516は、ホスト・システム502のためのI/Oオペレーションのキャッシュ・メモリとして動作することができる。
ストレージ・モジュール516は、ホスト・システム502のさまざまなI/OオペレーションをSSD400のLBAに切り替えるように機能することができる中間コントローラ503を伴って構成されることが可能である。この点に関連して、ストレージ・モジュール516は、メモリ512を含むことができ、メモリ512は、LBAに対するI/Oオペレーションを行うための中間コントローラ503用のマッピング情報を格納する。

ホスト・システム502のユーザは、アプリケーション・ソフトウェア509上で操作を行うこと、またはアプリケーション・ソフトウェア509を介して何らかのデータを生成することが可能である。オペレーティング・システム505によって提供されるオペレーティング・システム環境内で機能するアプリケーション・ソフトウェア509は、ネットワーク519(たとえば、インターネットなどのデータ・ネットワーク、ローカル・エリア・ネットワーク、ワイドエリア・ネットワークなど)を通じてサーバ518にデータを転送すること、またはサーバ518との間でその他の形でデータを格納することを必要とする場合がある。したがって、アプリケーション・ソフトウェア509は、サーバ518の論理アドレスに対する書き込みI/Oコマンドを生成するようI/Oおよびストレージ・モジュール517に指示することができる。代替として、または追加として、アプリケーション・ソフトウェア509は、SSD400のうちの1つの中にデータを格納するためのストレージ・モジュール516用の書き込みI/Oコマンドを生成するよう、ドライバ507に指示することができる。
中間コントローラ503は、書き込みI/Oコマンドをストレージ・モジュール516の中の適切なSSD400に切り替え、それによって、その書き込みI/Oコマンドのデータは、そこに書き込まれることが可能になる。書き込みI/Oコマンドが適切なSSD400によって受信されると、SSDコントローラ401は、データと、そのデータがストレージ・デバイス495内のどこに格納されることになるかを示す論理アドレスとを抽出する。
抽出されたデータを用いて、選択されたSSDコントローラ401は、そのデータに基づいて署名を生成する。例示するために、「the quick brown fox jumped over the lazy dog’s back」というテキスト文字列は、SHA−512ハッシュ・コード・ジェネレータを用いてエンコードされて、「145edbabf68f32da04167e63f979b60f37d49a9182e5856404c77ed3c930d8805e42d0e462e19688834117bb14bd80ace55df52e44e2e8d48935c7877ea2d931」という一意のコードを生み出すことが可能である。選択されたSSDコントローラ401は、ストレージ・デバイス495の所望の論理アドレスにデータを書き込むためにマップ441を介してデータをストレージ・デバイス495にマップする。次いでSSDコントローラ401は、一意のハッシュ・コードをホスト・システム502へ返し、それによって、ホスト・システム502のマネージメント・ソフトウェア514は、その返されたハッシュ・コードを処理して、そのコードが他のどこかに(たとえば、サーバ518、および別のSSD400、またはその他の何らかのストレージ・デバイスに)格納されているかどうかを判定することができる。
ホスト・システム502は、さまざまなストレージ・デバイス内に(たとえば、ハッシュ・テーブル内に)格納されているデータを表すハッシュ・コードを格納することができる。ホスト・システム502は、ハッシュ・コードのこのリストをチェックして、受信されたハッシュ・コードが以前のハッシュ・コードと同じであるかどうかを判定することができる。受信されたハッシュ・コードが以前のハッシュ・コードと同じである場合には、ホスト・システム502は、以前に格納されたデータのアドレスで(たとえば、I/Oモジュール101を介して、)テーブル105を更新する。次いでホスト・システム502は、そのデータが書き込まれたばかりのストレージ・デバイス495の論理アドレスにおけるストレージ・スペースを割り当て解除するようSSD400に指示することができ、それによって、そのストレージ・スペースは、オーバーライドまたはトリムされることが可能になる。加えて、SSDコントローラ401は、書き込まれたデータのステータス・メッセージを返して、そのデータが適切なSSD400/ストレージ・デバイス495に成功裏に書き込まれたことをホスト・システム502に確信させることができる。やはり、ホスト・システム502が、受信されたコードが実際に一意であると判定した場合には、ホスト・システム502は、そのデータがテーブル105内に格納された状態で、(たとえば、マネージメント・ソフトウェア514を通じて、)そのデータのロケーションをストレージ・デバイス495の論理アドレスに関連付ける。
本明細書に記載されている実施形態によれば、署名生成は、有利なことに、より低いレベルに押し下げられ、そのレベルでは、署名生成は、より並列な分散された様式で行われることが可能である。データは、推論的に書き込まれ、それによって、その最終的な処置(disposition)(たとえば、SSD400におけるデータのその後の上書き)にかかわらずに迅速に遂行(コミット)される。これはまた、データが高度に圧縮可能である場合には重複排除は無視されることが可能であるという点で、処理コストのトレードオフの比較(たとえば、重複排除コスト対圧縮性)を提供する。たとえば、ホスト・システム502は、署名を報告する場合に、および/または書き込みデータが一意であるかどうかを判定する場合に、書き込みデータの圧縮性を評価することができる。ストレージ・モジュール516は、この点に関連して、書き込み応答/署名とともに書き込みデータの圧縮率を返すことができ、それによって、ホスト・システム502は、その圧縮されているデータが十分に一意であるかどうかを判定することができる。言い換えれば、本明細書における実施形態は、サイズが既に低減されている重複データを追跡把握する処理コストを有利に低減するために、重複データが高度に圧縮されている場合にはその重複データを無視する能力をホスト・システム502に提供する。たとえば、オールゼロ・データは一般的であり、オールゼロ・データの重複を追跡把握することは、いくつかの場合においては、圧縮を信頼してオールゼロ・データを単に格納することと比べて、処理能力の点で費用効果が高くない。

Claims (10)

  1. データを書き込むための入力/出力オペレーションを生成するように機能することができる、入力/出力モジュール(101)と、
    前記入力/出力モジュールに通信可能に結合されているストレージ・デバイス(102)であり、前記入力/出力オペレーションの前記データを前記ストレージ・デバイスの論理アドレスに書き込むように、および前記データに基づいて署名を生成するように機能することができる、ストレージ・デバイス(102)と、
    を含むことを特徴とするシステム(100)であって、
    前記入力/出力モジュールがさらに、前記署名を処理して、前記データが他の論理アドレスに存在しているかどうかを判定するように機能することができる、システム。
  2. 前記データが前記他の論理アドレスに存在していると判定すると、前記入力/出力モジュールがさらに、前記ストレージ・デバイスの前記論理アドレスにおけるストレージ・スペースを割り当て解除するよう、前記ストレージ・デバイスに指示するように機能することができる、
    請求項1に記載のシステム。
  3. 前記他の論理アドレスが、他のストレージ・デバイス内に位置している、
    請求項1に記載のシステム。
  4. 前記ストレージ・デバイスがさらに、ハッシュ・コードを使用して前記署名を生成するように機能することができる、
    請求項1に記載のシステム。
  5. 前記ストレージ・デバイスがさらに、前記入力/出力オペレーションの前記データを前記ストレージ・デバイスの不揮発性メモリに書き込むように、及び、前記入力/出力オペレーションのステータスを前記入力/出力モジュールへ返すように、機能することができる、
    請求項1に記載のシステム。
  6. ストレージ・デバイスの論理アドレスにデータを書き込むための入力/出力オペレーションを生成するステップ(201)と、
    前記データに従って前記ストレージ・デバイスによって生成された署名を受信するステップ(202)と、
    前記入力/出力オペレーションの前記データが前記ストレージ・デバイスによって書き込まれた旨の肯定応答を受信するステップ(203)と、
    前記署名を処理して、前記データが他の論理アドレスに存在しているかどうかを判定するステップ(204)と、
    を含むことを特徴とする、方法(200)。
  7. 他のストレージ・デバイス内の前記他の論理アドレスを検知するステップ、
    をさらに含む、請求項6に記載の方法。
  8. 前記データが前記他の論理アドレスに存在していると判定すると、前記ストレージ・デバイスの前記論理アドレスにおける前記データを割り当て解除するよう、前記ストレージ・デバイスに指示するステップ、
    をさらに含む、請求項6に記載の方法。
  9. ハッシュ・コードを使用して前記署名を生成するステップ、
    をさらに含む、請求項6に記載の方法。
  10. 前記入力/出力オペレーションの前記データを前記ストレージ・デバイスの不揮発性メモリに書き込むステップ、および
    前記ストレージ・デバイスからの前記書き込みのステータスを処理して、前記書き込みが成功したかどうかを判定するステップ、
    をさらに含む、請求項6に記載の方法。
JP2016154509A 2013-03-14 2016-08-05 ストレージ・デバイスによって支援されるデータ重複排除 Pending JP2016189225A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361782122P 2013-03-14 2013-03-14
US61/782,122 2013-03-14
US13/939,345 US20140281155A1 (en) 2013-03-14 2013-07-11 Storage device assisted data de-duplication
US13/939,345 2013-07-11

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014050312A Division JP2014179094A (ja) 2013-03-14 2014-03-13 ストレージ・デバイスによって支援されるデータ重複排除

Publications (1)

Publication Number Publication Date
JP2016189225A true JP2016189225A (ja) 2016-11-04

Family

ID=50486737

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014050312A Pending JP2014179094A (ja) 2013-03-14 2014-03-13 ストレージ・デバイスによって支援されるデータ重複排除
JP2016154509A Pending JP2016189225A (ja) 2013-03-14 2016-08-05 ストレージ・デバイスによって支援されるデータ重複排除

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014050312A Pending JP2014179094A (ja) 2013-03-14 2014-03-13 ストレージ・デバイスによって支援されるデータ重複排除

Country Status (6)

Country Link
US (1) US20140281155A1 (ja)
EP (1) EP2778890A3 (ja)
JP (2) JP2014179094A (ja)
KR (1) KR20140113565A (ja)
CN (1) CN104049911A (ja)
TW (1) TWI521425B (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102140792B1 (ko) * 2013-12-24 2020-08-03 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
TWI540582B (zh) * 2014-07-10 2016-07-01 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
EP3204859B1 (en) * 2014-10-07 2020-12-02 Google LLC Methods and systems for cache lines de-duplication
CN104391915B (zh) * 2014-11-19 2016-02-24 湖南国科微电子股份有限公司 一种数据重删方法
US10437784B2 (en) * 2015-01-30 2019-10-08 SK Hynix Inc. Method and system for endurance enhancing, deferred deduplication with hardware-hash-enabled storage device
WO2017068617A1 (ja) * 2015-10-19 2017-04-27 株式会社日立製作所 ストレージシステム
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US10409518B1 (en) 2017-04-20 2019-09-10 Seagate Technology Llc Reordered local data deduplication in storage devices
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11500788B2 (en) * 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11720714B2 (en) * 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11625481B2 (en) * 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
KR102267477B1 (ko) 2020-02-20 2021-06-22 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
CN114077569B (zh) 2020-08-18 2023-07-18 富泰华工业(深圳)有限公司 压缩数据的方法及设备、解压缩数据的方法及设备
TWI758825B (zh) * 2020-08-18 2022-03-21 鴻海精密工業股份有限公司 壓縮資料之方法及設備、解壓縮資料之方法及設備

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008009859A (ja) * 2006-06-30 2008-01-17 Canon Inc 検索インデックス作成装置及び検索インデックス作成方法
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2414926A1 (en) * 2009-09-18 2012-02-08 Hitachi, Ltd. Storage system for eliminating duplicated data
US8156306B1 (en) * 2009-12-18 2012-04-10 Emc Corporation Systems and methods for using thin provisioning to reclaim space identified by data reduction processes
US9223511B2 (en) * 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008009859A (ja) * 2006-06-30 2008-01-17 Canon Inc 検索インデックス作成装置及び検索インデックス作成方法
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication

Also Published As

Publication number Publication date
JP2014179094A (ja) 2014-09-25
EP2778890A3 (en) 2017-05-03
CN104049911A (zh) 2014-09-17
TWI521425B (zh) 2016-02-11
EP2778890A2 (en) 2014-09-17
US20140281155A1 (en) 2014-09-18
KR20140113565A (ko) 2014-09-24
TW201506769A (zh) 2015-02-16

Similar Documents

Publication Publication Date Title
JP2016189225A (ja) ストレージ・デバイスによって支援されるデータ重複排除
US9996435B2 (en) Reliability scheme using hybrid SSD/HDD replication with log structured management
US8850114B2 (en) Storage array controller for flash-based storage devices
US8583853B1 (en) Error-handling for write-distribute command in raid mirroring
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US9311002B1 (en) Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
US20150331624A1 (en) Host-controlled flash translation layer snapshot
KR20180091296A (ko) 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10019315B2 (en) Control device for a storage apparatus, system, and method of controlling a storage apparatus
US20180089088A1 (en) Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache
KR20120115012A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN109522154B (zh) 数据恢复方法及相关设备与系统
US10459803B2 (en) Method for management tables recovery
EP3629142A2 (en) Method of operating storage device, storage device performing the same and storage system including the same
US11042316B1 (en) Reordered data deduplication in storage devices
US10031689B2 (en) Stream management for storage devices
KR20210041158A (ko) 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
KR102094475B1 (ko) 멀티-트랜잭션의 아토믹 라이트 방법
KR20230172394A (ko) 캐시 일관된 상호 연결 저장 장치에서 raid 회로를 사용하는 중복 배열 독립 디스크 시스템 및 방법
JP6817340B2 (ja) 計算機
CN111752475B (zh) 在存储服务器中进行数据存取管理的方法与装置
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
US11893269B2 (en) Apparatus and method for improving read performance in a system
KR20190076589A (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
WO2015118680A1 (ja) ストレージ装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180614

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181120