JP2018532166A - 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ - Google Patents

記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ Download PDF

Info

Publication number
JP2018532166A
JP2018532166A JP2017552037A JP2017552037A JP2018532166A JP 2018532166 A JP2018532166 A JP 2018532166A JP 2017552037 A JP2017552037 A JP 2017552037A JP 2017552037 A JP2017552037 A JP 2017552037A JP 2018532166 A JP2018532166 A JP 2018532166A
Authority
JP
Japan
Prior art keywords
fingerprint
storage
data
written
controller
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.)
Granted
Application number
JP2017552037A
Other languages
English (en)
Other versions
JP6526233B2 (ja
Inventor
文▲海▼ ▲藍▼
文▲海▼ ▲藍▼
巍 ▲張▼
巍 ▲張▼
小安 余
小安 余
叙友 ▲劉▼
叙友 ▲劉▼
志雄 ▲張▼
志雄 ▲張▼
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2018532166A publication Critical patent/JP2018532166A/ja
Application granted granted Critical
Publication of JP6526233B2 publication Critical patent/JP6526233B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/061Improving I/O performance
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本明細書では、記憶システムにおける重複排除に対する解決手段が開示される。この解決手段では、コントローラは、第1の記憶アドレスに、最初に書き込まれたデータブロックを記憶し、フィンガープリントテーブルに、最初に書き込まれた第1の書き込まれるべきデータの第1のフィンガープリントを挿入するが、第1のフィンガープリントと第1の記憶アドレスとの間のマッピング関係を確立しない。次に書き込まれる第2の書き込まれるべきデータを受信すると、コントローラは、重複する第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、第2の記憶アドレスに第2の書き込まれるべきデータを記憶し、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立する。このことは、フィンガープリントテーブル内のデータ量を低減する。

Description

本発明は情報技術の分野に関し、詳細には、記憶システムにおける重複排除のための方法、記憶システムおよびコントローラに関する。
重複排除機能は、記憶システムにおいて重要な特性である。重複排除機能が記憶システムに導入された後、重複データの記憶は低減されることができ、従って、記憶空間は節約される。
従来技術では、重複排除操作は、一般に、以下のプロセスを含む:
データブロックのフィンガープリントが取得され、フィンガープリントテーブルが照会されて、フィンガープリントテーブルが同じフィンガープリントを含むかどうか判定し、フィンガープリントテーブルがそのフィンガープリントを含まない場合、記憶領域で記憶アドレスが割り当てられ、データブロックはその記憶アドレスに記憶され、フィンガープリントと記憶アドレスとの間のマッピング関係およびデータブロックの論理ブロックアドレスとフィンガープリントとの間のマッピング関係がフィンガープリントテーブル内で確立される。同じフィンガープリントを有するデータブロックが繰り返し書き込まれる場合、繰り返し書き込まれるデータブロックの論理ブロックアドレスとフィンガープリントとの間のマッピング関係のみが確立される必要があり、繰り返し書き込まれるデータブロックを再び記憶する必要はない。従来技術の重複排除技術を使用することによって、記憶空間は節約され、しかしながら、フィンガープリントテーブル内の大量のデータという課題がある。
第1の態様によると、本発明の実施形態は、記憶システムにおける重複排除に対する解決手段を提供し、記憶システムはコントローラおよび記憶デバイスを含む。解決手段は、コントローラによって、第1の書込み要求を受信するステップであって、ここで、第1の書込み要求は、第1の論理ブロックアドレスおよび第1の書き込まれるべきデータを搬送する、ステップと、コントローラによって、第1の書き込まれるべきデータの第1のフィンガープリントを取得するステップと、フィンガープリントテーブルが第1のフィンガープリントを含まない場合、第1のフィンガープリントをフィンガープリントテーブルに挿入し、記憶デバイスから第1の書き込まれるべきデータに第1の記憶アドレスを割り当てるステップと、コントローラによって、第1の記憶アドレスに第1の書き込まれるべきデータを記憶するステップと、コントローラによって、第1の論理ブロックアドレスと第1の記憶アドレスとの間のマッピング関係を確立するステップと、コントローラによって、第2の書込み要求を受信するステップであって、ここで、第2の書込み要求は、第2の論理ブロックアドレスおよび第2の書き込まれるべきデータを搬送する、ステップと、コントローラによって、第2の書き込まれるべきデータのフィンガープリントを取得するステップであって、ここで、第2の書き込まれるべきデータのフィンガープリントは第1のフィンガープリントである、ステップと、コントローラが、第2の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルを照会して、第1のフィンガープリントに対応する記憶アドレスが存在しないと判定した場合、コントローラによって、記憶デバイスから第2の書き込まれるべきデータに第2の記憶アドレスを割り当てるステップと、コントローラによって、第2の記憶アドレスに第2の書き込まれるべきデータを記憶するステップと、コントローラによって、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立するステップと、コントローラによって、第2の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立するステップとを含む。
一般に、重複排除では、フィンガープリントテーブルは、フィンガープリントインデックスまたはフィンガープリントメタデータとも呼ばれ、フィンガープリントと、フィンガープリントに対応する記憶アドレスとの間のマッピング関係を記憶するために使用される。フィンガープリントに対応するデータブロックは記憶アドレスに記憶される。
前述の解決手段が具体的に実施されるとき、フィンガープリントテーブル内のフィンガープリントエントリは、フィンガープリントと、フィンガープリントに対応する記憶アドレスとの間のマッピング関係を記憶するために使用されてよい。フィンガープリントテーブルが第1のフィンガープリントを含まない場合、第1のフィンガープリントをフィンガープリントテーブルに挿入するプロセスは、具体的には、フィンガープリントテーブル内に第1のフィンガープリントを含むフィンガープリントエントリがない場合、コントローラによって、フィンガープリントテーブル内に第1のフィンガープリントエントリを作成して、第1のフィンガープリントを第1のフィンガープリントエントリに挿入することを含む。第2の書き込まれるべきデータの第1のフィンガープリントに従って、コントローラがフィンガープリントテーブルを照会して、第1のフィンガープリントに対応する記憶アドレスが存在しないと判定するプロセスは、具体的には、コントローラによって、第2の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルを照会して、第1のフィンガープリントが、第1のフィンガープリントエントリにおける記憶アドレスと対応していないと判定することを含む。コントローラによって、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立するプロセスは、具体的には、コントローラによって、第2の記憶アドレスを第1のフィンガープリントエントリに挿入することである。
前述の解決手段では、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内に存在しないことは、具体的には、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内で定義されていないか、または、第1のフィンガープリントがどの記憶アドレスにも対応していないことであってよい。フィンガープリントテーブル内で、フィンガープリントと記憶アドレスとの間のマッピング関係を記録するためにフィンガープリントエントリを使用する実施では、フィンガープリントテーブル内のフィンガープリントエントリが第1のフィンガープリントを含まない場合、コントローラは、フィンガープリントテーブル内に第1のフィンガープリントエントリを作成し、第1のフィンガープリントが第1のフィンガープリントエントリに挿入されるとき、記憶アドレスは、第1のフィンガープリントエントリ内で定義されなくてよく、すなわち、記憶アドレスパラメータは、第1のフィンガープリントエントリ内で定義されなくてよく、または、記憶アドレスはなく、すなわち、記憶アドレスパラメータはNullで定義される。これらのケースは、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内に存在せず、すなわち、第1のフィンガープリントと第1の記憶アドレスとの間のマッピング関係はフィンガープリントテーブル内で確立されないことを示す。
前述の解決手段では、第1の書き込まれるべきデータおよび第2の書き込まれるべきデータのフィンガープリントはいずれも第1のフィンガープリントであり、第1の書き込まれるべきデータは第2の書き込まれるべきデータと同じであることを示す。コントローラは、第1の記憶アドレスに最初に書き込まれたデータブロックを記憶し、フィンガープリントテーブルに、最初に書き込まれた第1の書き込まれるべきデータの第1のフィンガープリントを挿入するが、第1のフィンガープリントと第1の記憶アドレスとの間のマッピング関係を確立しない。次に書き込まれる第2の書き込まれるべきデータを受信すると(第2の書き込まれるべきデータは、2回目にコントローラによって受信された同じデータに限定されない)、コントローラは、重複する第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、第2の記憶アドレスに第2の書き込まれるべきデータを記憶し、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立する。すなわち、コントローラは、複数回(少なくとも2回)受信された同じデータに対してのみ重複排除を実行し、このことは、フィンガープリントテーブル内のデータ量を低減する。
任意で、コントローラは、受信された書込み要求が、そのフィンガープリント値が第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントする。コントローラは、回数が事前に設定された回数Nよりも大きい場合、第2の記憶アドレスに第2の書き込まれるべきデータを記憶して、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立し、ここで、Nは1以上の整数である。すなわち、(N+1)回目に現れる重複データ(第2の書き込まれるべきデータ)は第2の記憶アドレスに記憶され、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係がフィンガープリントテーブル内で確立される。第2の記憶アドレスに記憶されるデータは参照可能なデータである。従って、その重複度が一定値に達したデータブロックに対する重複排除は、記憶システムの要件に従って設定されてよい。参照可能なデータは、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスに記憶されるデータであり、参照不可能なデータは、記憶システムに記憶されるが、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスには記憶されないデータである。
任意で、コントローラは、記憶デバイスの第1の記憶領域から第1の書き込まれるべきデータに第1の記憶アドレスを割り当て、且つ、コントローラは、記憶デバイスの第2の記憶領域から第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、ここで、第2の記憶領域の記憶性能は第1の記憶領域の記憶性能よりも高く、参照可能なデータにアクセスすることにおけるコントローラの性能は改善されることができる。
任意で、コントローラは、第3の書込み要求を受信し、ここで、第3の書込み要求は、第3の論理ブロックアドレスおよび第3の書き込まれるべきデータを搬送し、コントローラは、第3の書き込まれるべきデータのフィンガープリントを取得し、ここで、第3の書き込まれるべきデータのフィンガープリントは第1のフィンガープリントであり、第3の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルを照会して、第1のフィンガープリントに対応する記憶アドレスが第2の記憶アドレスであると判定した場合、コントローラは、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立する。第1の書き込まれるべきデータ、第2の書き込まれるべきデータおよび第3の書き込まれるべきデータのフィンガープリントが第1のフィンガープリントである場合、第1の書き込まれるべきデータ、第2の書き込まれるべきデータおよび第3の書き込まれるべきデータは同じであることを示す。このことに基づいて、コントローラは、重複データに対して重複排除操作を実行し、記憶空間は節約されることができる。具体的な実施では、第3の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブル内の第1のフィンガープリントエントリを照会して、第1のフィンガープリントに対応する記憶アドレスが第2の記憶アドレスであると判定した場合、コントローラは、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立する。
任意で、コントローラは、フィンガープリントテーブル内に、第2の記憶アドレスの参照回数を記録する。参照回数は、論理ブロックアドレスが、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスを参照する回数である。論理ブロックアドレスが、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスを参照する回数は、論理ブロックアドレスと記憶アドレスとの間のマッピング関係によって決定される。コントローラが、論理ブロックアドレスと記憶アドレスとの間のマッピング関係を確立して、記憶アドレスがフィンガープリントテーブル内に記録されるとき、論理ブロックアドレスは、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスを一度参照する。具体的な実施では、コントローラは、フィンガープリントテーブル内の第1のフィンガープリントエントリに、第2の記憶アドレスの参照回数を記録する。この実施では、参照回数は、論理ブロックアドレスがフィンガープリントエントリにおける記憶アドレスを参照した回数である。参照回数に従って、データが第2の記憶アドレスに再び書き込まれることができるかどうかが判定されることができる。参照回数が0である場合、第2の記憶アドレスを指す論理ブロックアドレスがないことを示し、第2の記憶アドレスは解放されることができ、その結果、第2の記憶アドレスは、記憶デバイスにおいて空き記憶アドレスになり、再びデータを書き込むために使用されてよい。
任意で、コントローラは、フィンガープリントテーブル内に記録されている参照回数に従って、コントローラのキャッシュ内に、その参照回数が事前に設定された閾値よりも大きいフィンガープリントと、フィンガープリントに対応する記憶アドレスとの間のマッピング関係を記憶し、このことは、重複排除中のフィンガープリント検索効率を改善する。具体的には、コントローラは、フィンガープリントテーブル内のフィンガープリントエントリに記録されている参照回数に従って、この操作を実施してよい。任意で、コントローラは、フィンガープリントテーブル内に、第1のフィンガープリントが挿入される時刻を記録する。具体的には、第1のフィンガープリントが挿入される時刻は、フィンガープリントテーブル内の第1のフィンガープリントエントリに記録されてよい。
任意で、コントローラは、フィンガープリントテーブルから第2のフィンガープリントを削除する。第2のフィンガープリントに対応する記憶アドレスはフィンガープリントテーブル内に存在せず、第2のフィンガープリントがフィンガープリントテーブルに挿入されている期間は、事前に設定された期間を超過する。コントローラは、フィンガープリントテーブルから、事前に設定された期間を超える期間、フィンガープリントテーブル内に存在し、且つ、どの記憶アドレスにも対応していないフィンガープリントを削除してよく、このことは、フィンガープリントテーブル内のデータ量をさらに低減する。具体的な実施では、第2のフィンガープリントが挿入されたときの、フィンガープリントテーブル内に記録される時刻に従って、第2のフィンガープリントがフィンガープリントテーブル内に存在する期間が事前に設定された期間を超過すると判定されてよい。任意で、フィンガープリントエントリが例として使用される。コントローラによって、フィンガープリントエントリ内に記録されている第2のフィンガープリントについては、第2のフィンガープリントは第2のフィンガープリントエントリにおけるどの記憶アドレスにも対応せず、第2のフィンガープリントが第2のフィンガープリントエントリ内に存在する期間は事前に設定された期間を超過する。フィンガープリントに対応する記憶アドレスが存在しないという意味については、前述の説明を参照されたく、詳細はここでは再び説明されない。
任意で、記憶システムは、逆マッピングテーブルをさらに含んでよい。逆マッピングテーブル内のエントリは、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスと、記憶アドレスを指す論理ブロックアドレスとの間のマッピング関係を記録するために使用される。第1のフィンガープリントに対応する第2の記憶アドレスについては、第2の記憶アドレスを指す論理ブロックアドレスはそれぞれ、第2の論理ブロックアドレスおよび第3の論理ブロックアドレスである。第2の記憶アドレスを提供する記憶デバイスが故障した(または第2の記憶領域が故障した)場合、故障した記憶デバイスは、新しい記憶デバイスによって置き換えられる(故障した第2の記憶領域は、新しい記憶領域によって置き換えられる)。従って、新しい記憶デバイスまたは新しい記憶領域から第2の記憶アドレスが再割り当てされた場合、第2の記憶アドレスに対応している第2の論理ブロックアドレスおよび第3の論理ブロックアドレスは、逆マッピングテーブル内のエントリに従って決定される必要があるのみであり、記憶システム内の全ての論理ユニットの論理ブロックアドレスと記憶アドレスとの間のマッピング関係をトラバースすることによって、第2の記憶アドレスを指す論理ブロックアドレスを決定する必要はない。従って、データ回復中の論理ブロックアドレス検索効率が改善される。
任意で、論理ブロックアドレスと記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子をさらに含んでよい。例えば、第1の論理ブロックアドレスと第1の記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子を搬送し、第2の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子を搬送し、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子を搬送する。コントローラは、前述のマッピング関係における参照可能なデータの識別子を使用することによって、記憶アドレスに記憶されているデータが参照可能なデータであるかどうかを容易に識別することができる。
本発明の実施形態では、重複排除を実行するとき、コントローラは、従来技術における、論理ブロックアドレスとフィンガープリントとの間のマッピング関係およびフィンガープリントと、フィンガープリントに対応するデータを記憶する記憶アドレスとの間のマッピング関係の代わりに、論理ブロックアドレスと記憶アドレスとの間のマッピング関係を確立する。従って、本発明の実施形態で提供される解決手段に従って、コントローラは、コントローラが重複排除を実行しないときでさえ、論理ブロックアドレスと記憶アドレスとの間のマッピング関係に従って、記憶デバイス内のデータに依然としてアクセスし、データを書き込み、記憶デバイスからデータを削除することができる。コントローラが重複排除を実行しないケースは、例えば、コントローラの重複排除ロジックがオフラインであり、フィンガープリントテーブル内のエントリがアクセスされることができないことを含む。従って、記憶システムのデータアクセス性は改善される。
第2の態様によると、対応して、本発明の実施形態は、第1の態様の様々な実施の解決手段を実施するように構成される、記憶システムおよびコントローラをさらに提供する。コントローラは、本発明の実施形態における第1の態様の様々な実施の解決手段を実施するための構造ユニットを含み、または、コントローラは、本発明の実施形態における第1の態様の様々な実施の解決手段を別々に実行するためのインタフェースおよびプロセッサを含む。
対応して、本発明は、不揮発性コンピュータ可読記憶媒体およびコンピュータプログラム製品をさらに提供する。本発明の実施形態で提供されるコントローラのメモリが不揮発性コンピュータ可読記憶媒体およびコンピュータプログラム製品に含まれるコンピュータ命令をロードし、コントローラの中央処理装置(Central Processing Unit, CPU)がコンピュータ命令を実行するとき、記憶デバイスは、本発明の実施形態における第1の態様の様々な可能な実施の解決手段を別々に実行することが可能になる。
図1は、本発明の実施形態に係る、記憶システムの概略構築図である。 図2は、本発明の実施形態に係るコントローラの概略構成図である。 図3は、本発明の実施形態に係る記憶システムにおけるストレージリソース割り当ての概略図である。 図4は、本発明の実施形態に係る、論理ブロックアドレスと記憶アドレスとの間のマッピング関係の概略図である。 図5は、本発明の実施形態に係る、フィンガープリントエントリの概略図である。 図6は、本発明の実施形態に係る、論理ブロックアドレスと記憶アドレスとの間のマッピング関係の概略図である。 図7は、本発明の実施形態に係る、フィンガープリントエントリの概略図である。 図8は、本発明の実施形態に係る、論理ブロックアドレスと記憶アドレスとの間のマッピング関係の概略図である。 図9は、本発明の実施形態に係る、フィンガープリントエントリの概略図である。 図10は、本発明の実施形態に係る、逆マッピングテーブルの概略構成図である。 図11は、本発明の実施形態に係る、フィンガープリントエントリの概略図である。 図12は、本発明の実施形態に係る、論理ブロックアドレスと記憶アドレスとの間のマッピング関係の概略図である。 図13は、本発明の実施形態に係るフローチャートである。 図14は、本発明の実施形態に係るコントローラの概略構成図である。
図1に示されるように、本発明の実施形態における記憶システムは、コントローラおよび記憶デバイスを含み、記憶デバイスは1つ以上のハードディスクである。ハードディスクは、ソリッドステートディスク(Solid State Disk, SSD)またはメカニカルハードディスク、またはSSDおよびメカニカルハードディスクの組合せを含む。メカニカルハードディスクは、HDD(Hard Disk Drive)等であってよい。任意で、記憶デバイス内のハードディスクは、ハイブリッド(Hybrid)ハードディスクであってよく、または、記憶デバイスは、非常に大容量を有するハードディスク等の単一ハードディスクであってよい。
図2に示されるように、コントローラは、中央処理装置(Central Processing Unit, CPU)201およびメモリ202を含む。メモリ202はコンピュータ命令を記憶する。CPU 201は、メモリ202内のコンピュータ命令を実行して、記憶システムを管理し、重複排除操作を実行する。加えて、CPU 201の計算リソースを節約するために、本発明の本実施形態で説明される技術的解決手段を実施するために、本発明の本実施形態におけるCPUの全ての操作を実行するために、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array, FPGA)または他のハードウェアがまた使用されてよく、または、本発明の本実施形態におけるCPUの一部の操作を実行するために、FPGAまたは他のハードウェアおよびCPUが別々に使用される。説明を容易にするために、本発明の本実施形態における共通の説明は、コントローラ内のプロセッサが、本発明の実施形態における技術的解決手段を実施するように構成されることである。プロセッサは、ストレージリソース管理ロジックおよび重複排除ロジックを含む。ストレージリソース管理ロジックは、ストレージリソース管理および割り当ておよび論理ユニット(Logical Unit, LU)管理を実施するために使用される。本発明の本実施形態では、論理ユニットは、論理ユニット番号(Logical Unit Number, LUN)とも呼ばれる。重複排除ロジックは、重複排除操作を実施するために使用される。加えて、コントローラはインタフェースをさらに含む。インタフェースはプロセッサと通信し、書込み要求、削除要求または読出し要求等の操作要求を受信するように構成される。インタフェースは、具体的には、ホストバスアダプタ(Host Bus Adapter, HBA)カード、周辺部品相互接続Express(Peripheral Component Interconnect Express, PCIe)インタフェースカード等であってよい。
SSDの記憶性能は、HDDの記憶性能よりも良好であるため、図3に示される実施では、コントローラは、記憶システム内のメカニカルハードディスクおよびソリッドステートディスクを固定サイズチャンク(Chunk)に別々に分割し、チャンクは、記憶領域1および記憶領域2を形成する。本発明の本実施形態では、記憶領域は、ストレージリソースプールとも呼ばれる。ストレージリソースプール1は、メカニカルハードディスクを分割することによってコントローラによって取得されるチャンク
Figure 2018532166
を含み、ストレージリソースプール2は、ソリッドステートディスクを分割することによってコントローラによって取得されるチャンク
Figure 2018532166
を含む。ここで、ストレージリソースプール2は、第1レベルリソースプールと呼ばれ、ストレージリソースプール1は、第2レベルリソースプールと呼ばれる。独立ディスクの冗長アレイ(RAID, Redundant Array of Independent Disks, RAID)アルゴリズムによると、コントローラは、ストレージリソースプール1における複数のメカニカルハードディスク内で分配されるチャンクをランダムに選択して、チャンクグループ(Chunk Group)を形成する。例えば、
Figure 2018532166
はチャンクグループを形成し、すなわち、4つの
Figure 2018532166
は、それぞれ異なるハードディスク由来である。同様に、RAIDアルゴリズムによると、コントローラは、ストレージリソースプール2における複数のソリッドステートディスク内で分配されるチャンクをランダムに選択して、チャンクグループ(Chunk Group)を形成する。例えば、
Figure 2018532166
はチャンクグループを形成し、すなわち、4つの
Figure 2018532166
は、それぞれ異なるハードディスク由来である。コントローラは、チャンクグループを、
Figure 2018532166
または
Figure 2018532166
等の固定サイズのエクステント(Extent)に分割して、エクステントをLUNに使用のために割り当てる。図3に示されるように、LUN 1は、ストレージリソースプール1におけるエクステントを使用し、LUN 2は、ストレージリソースプール1およびストレージリソースプール2におけるエクステントを使用する。すなわち、LUN 1は、記憶領域1で提供されるエクステントを使用し、LUN 2は、記憶領域1および記憶領域2で提供されるエクステントを使用する。従って、LUN 1は非階層ストレージLUNと呼ばれ、且つ、LUN 2は階層ストレージLUNと呼ばれる。
例としてLUN 2を使用して、コントローラは、第1の書込み要求を受信し、第1の書込み要求は、一般に、LUN 2の識別子、論理ブロックアドレス(Logical Block Address, LBA)1および第1の書き込まれるべきデータを搬送する。LBA 1は、第1の書き込まれるべきデータのターゲット論理ブロックアドレスである。コントローラは、第1の書き込まれるべきデータのフィンガープリントAを取得し、例えば、ハッシュ(Hash)アルゴリズムを使用することによって、第1の書き込まれるべきデータのフィンガープリントを取得する。コントローラは、フィンガープリントテーブルを照会して、フィンガープリントAがフィンガープリントテーブル内に存在するかどうかを判定する。フィンガープリントテーブル内のフィンガープリントエントリがフィンガープリントAを含まない場合、コントローラは、フィンガープリントテーブル内に新しいフィンガープリントエントリを作成して、フィンガープリントAを新しいフィンガープリントエントリに挿入する。コントローラは、ストレージリソースプール1から第1の書き込まれるべきデータにエクステントを割り当て、すなわち、記憶アドレスSD 1を割り当て、SD 1に第1の書き込まれるべきデータを記憶し、図4に示されるように、LBA 1とSD 1との間のマッピング関係を確立する。すなわち、LUN 2におけるLBA 1はSD 1を指す。任意で、マッピング関係は、データが参照可能なデータかどうかを示す識別子をさらに搬送してよい。例えば、0は、参照不可能なデータを識別するために使用され、1は、参照可能なデータを識別するために使用される。本発明の本実施形態では、参照可能なデータは、フィンガープリントテーブル内のフィンガープリントエントリにおける記憶アドレスに記憶されるデータであり、参照不可能なデータは、記憶システムに記憶されるが、フィンガープリントテーブル内のフィンガープリントエントリに記録された記憶アドレスには記憶されないデータである。コントローラは、LBA 1とSD 1との間のマッピング関係における参照可能なデータの識別子によって、SD 1に記憶されたデータが参照可能なデータでないことを容易に識別することができる。
従来技術では、第1の書き込まれるべきデータが、最初に書き込まれるデータであるとき、フィンガープリントAがフィンガープリントテーブルに挿入された後、フィンガープリントAと記憶アドレスSD 1との間のマッピング関係が、フィンガープリントテーブル内で確立される。しかしながら、本発明の本実施形態では、図5に示されるように、第1の書き込まれるべきデータが、最初に書き込まれるデータであるとき、コントローラが、フィンガープリントAを新しいフィンガープリントエントリに挿入した後、フィンガープリントAは、新しいフィンガープリントエントリ内のどの記憶アドレスにも対応せず、すなわち、第1の記憶アドレスは、新しいフィンガープリントエントリに挿入されない。本発明の本実施形態では、任意で、フィンガープリントテーブル内のフィンガープリントエントリは、フィンガープリントが挿入された時刻および論理ブロックアドレスがフィンガープリントエントリ内の記憶アドレスを参照した回数をさらに含んでよい。論理ブロックアドレスがフィンガープリントエントリ内の記憶アドレスを参照した回数は、フィンガープリントエントリ内のフィンガープリントに対応する記憶アドレスの参照回数とも呼ばれる。論理ブロックアドレスがフィンガープリントエントリ内の記憶アドレスを参照した回数は、論理ブロックアドレスと記憶アドレスとの間のマッピング関係によって決定される。コントローラが、論理ブロックアドレスと記憶アドレスとの間のマッピング関係を確立し、且つ、記憶アドレスがフィンガープリントテーブル内に記録されるとき、論理ブロックアドレスは、フィンガープリントエントリ内の記憶アドレスを一度参照する。
本発明の本実施形態では、フィンガープリントAが挿入される時刻はT1である。新しいフィンガープリントエントリ内にはフィンガープリントAのみがあり、フィンガープリントAはどの記憶アドレスにも対応しないため、論理ブロックアドレスがその記憶アドレスにおけるデータを参照する回数は0である。フィンガープリントエントリが、フィンガープリントを含むが、フィンガープリントに対応する記憶アドレスを含まない場合、記憶システムは、フィンガープリントに対応する参照可能なデータを持たないことを示す。これに基づいて、コントローラは、フィンガープリントテーブルから、事前に設定された期間を超過する期間、フィンガープリントテーブル内に存在し、且つ、どの記憶アドレスにも対応しないフィンガープリントを削除してよく、このことは、フィンガープリントテーブル内のデータ量を低減する。具体的には、本発明の本実施形態では、フィンガープリントAが挿入される時刻はT1であり、時点T2において、コントローラは、事前に設定された期間を超過する期間、フィンガープリントテーブル内に存在し、且つ、どの記憶アドレスにも対応しないフィンガープリントを削除する必要がある。フィンガープリントAがフィンガープリントテーブル内に存在する期間、すなわち、時点T1から時点T2までの期間は、T2とT1との間の差に従って決定されてよい。フィンガープリントテーブル内のフィンガープリントエントリにおけるフィンガープリントAがどの記憶アドレスにも対応せず、T2とT1との間の差が事前に設定された期間を超過するとき、フィンガープリントAは、フィンガープリントテーブルから削除されてよい。
一般に、重複排除では、フィンガープリントテーブルは、フィンガープリントインデックスまたはフィンガープリントメタデータとも呼ばれ、フィンガープリントと、フィンガープリントに対応する記憶アドレスとの間のマッピング関係を記憶するために使用される。フィンガープリントに対応するデータブロックは記憶アドレスに記憶される。具体的な実施では、フィンガープリントエントリは、フィンガープリントと、フィンガープリントに対応する記憶アドレスとの間のマッピング関係を記憶するために使用されてよい。
本発明の本実施形態では、フィンガープリントAに対応する記憶アドレスが存在しないことは、フィンガープリントAに対応する記憶アドレスがフィンガープリントテーブル内で定義されていないか、または、フィンガープリントAがどの記憶アドレスにも対応しないことを意味する。フィンガープリントと記憶アドレスとの間のマッピング関係を記録するためのフィンガープリントエントリの実施では、記憶アドレスは、新しいフィンガープリントエントリ内で定義されなくてよく、すなわち、記憶アドレスパラメータは、新しいフィンガープリントエントリ内で定義されなくてよく、または、記憶アドレスはなく、すなわち、記憶アドレスパラメータはNullで定義される。
コントローラが第2の書込み要求を受信したとき、第2の書込み要求は、一般に、LUN 2の識別子、LBA 2および第2の書き込まれるべきデータを搬送する。LBA 2は、第2の書き込まれるべきデータのターゲット論理ブロックアドレスである。コントローラは、第2の書き込まれるべきデータのフィンガープリントAを取得し、例えば、ハッシュ(Hash)アルゴリズムによって、第2の書き込まれるべきデータのフィンガープリントAを取得する。第1の書き込まれるべきデータおよび第2の書き込まれるべきデータのフィンガープリントは、いずれも、フィンガープリントAであり、且つ、第1の書き込まれるべきデータは第2の書き込まれるべきデータと同じであることを示す。フィンガープリントテーブルを照会して、フィンガープリントAが、新しいフィンガープリントエントリにおけるどの記憶アドレスにも対応していないと判定するとき、コントローラは、ストレージリソースプール2から第2の書き込まれるべきデータにエクステントを割り当て、すなわち、記憶アドレスSD 2を割り当て、第2の書き込まれるべきデータをSD 2に記憶し、図6に示されるように、LBA 2とSD 2との間のマッピング関係を確立する。すなわち、LUN 2におけるLBA 2はSD 2を指す。任意で、LBA 2とSD 2との間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子をさらに搬送してよい。例えば、1は、参照可能なデータを識別するために使用される。コントローラは、LBA 2とSD 2との間のマッピング関係における参照可能なデータの識別子によって、SD 2に記憶されているデータが参照可能なデータであることを容易に識別することができる。図7に示されるように、コントローラは、新しいフィンガープリントエントリ内で、フィンガープリントAとSD 2との間のマッピング関係を確立し、すなわち、フィンガープリントエントリに挿入されるフィンガープリントAに対応する記憶アドレスは、SD 2である。図7に示されるように、第2の書き込まれるべきデータは参照可能なデータであり、新しいフィンガープリントエントリにおける参照回数は1に更新される。
コントローラは、受信された書込み要求が、そのフィンガープリント値がフィンガープリントAである書き込まれるべきデータを搬送する回数をカウントする。回数が事前に設定された回数Nよりも大きい場合、コントローラは、ストレージリソースプール2から第2の書き込まれるべきデータにSD 2を割り当て、SD 2を新しいフィンガープリントエントリに挿入する。Nは1以上の整数であり、具体的には、記憶システムの要件に従って設定されてよい。従って、記憶システムの要件に応じて、コントローラによって受信された書き込まれるべきデータが同じフィンガープリントを搬送する回数がNよりも大きい場合、(N+1)回目に現れる重複データはSD 2に記憶され、SD 2は、フィンガープリントエントリに挿入される。すなわち、コントローラは、複数回受信された同じデータに対してのみ重複排除を実行し、このことは、フィンガープリントテーブル内のデータ量を低減する。
本発明の本実施形態では、コントローラは、第1の記憶アドレスに最初に書き込まれたデータブロックを記憶し、最初に書き込まれたデータブロックのフィンガープリントを、フィンガープリントテーブル内に作成された新しいフィンガープリントエントリに挿入するが、データブロックが記憶される記憶アドレスは挿入しない。次に書き込まれる重複データブロックを受信するとき、コントローラは、第2の記憶アドレスを重複データブロックに割り当て、第2の記憶アドレスに重複データブロックを記憶し、第2の記憶アドレスをフィンガープリントテーブル内の対応するフィンガープリントエントリに挿入する。すなわち、コントローラは、複数回受信された同じデータに対してのみ重複排除を実行し、このことは、フィンガープリントテーブル内のデータ量を低減する。さらに、コントローラは、記憶領域2の記憶アドレスに参照可能なデータを記憶する。記憶領域2の記憶性能は、記憶領域1の記憶性能よりも良好であるため、参照可能なデータにアクセスすることにおけるコントローラの性能は改善されることができる。
コントローラが第3の書込み要求を受信するとき、第3の書込み要求は、一般に、LUN 2の識別子、LBA 3および第3の書き込まれるべきデータを搬送する。LBA 3は、第3の書き込まれるべきデータのターゲット論理ブロックアドレスである。コントローラは、第3の書き込まれるべきデータのフィンガープリントAを取得し、例えば、ハッシュ(Hash)アルゴリズムによって、第3の書き込まれるべきデータのフィンガープリントAを取得する。第1の書き込まれるべきデータ、第2の書き込まれるべきデータおよび第3の書き込まれるべきデータのフィンガープリントは全てフィンガープリントAであり、第1の書き込まれるべきデータ、第2の書き込まれるべきデータおよび第3の書き込まれるべきデータは同一であることを示す。フィンガープリントAに従って新しいフィンガープリントエントリを照会して、フィンガープリントAに対応する記憶アドレスがSD 2であると判定した場合、コントローラは、図6に示されるように、LBA 3とSD 2との間のマッピング関係を確立する。すなわち、LUN 2におけるLBA 3はSD 2を指し、第3の書き込まれるべきデータは記憶されていない。このことに基づいて、コントローラは、重複データに対して重複排除操作を実行し、記憶空間は節約されることができる。任意で、LBA 3とSD 2との間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子をさらに搬送してよい。例えば、1は、参照可能なデータを識別するために使用される。コントローラは、LBA 3とSD 2との間のマッピング関係における参照可能なデータの識別子によって、SD 2に記憶されるデータが参照可能なデータであることを容易に識別することができる。図9に示されるように、コントローラは、新しいフィンガープリントエントリ内の参照回数を2に更新する。
任意で、本発明の本実施形態は、逆マッピングテーブルをさらに提供する。図10に示されるように、逆マッピングテーブルにおけるエントリは、フィンガープリントテーブル内のエントリにおける記憶アドレスと記憶アドレスを指す論理ブロックアドレスとの間のマッピング関係を記録するために使用される。例えば、フィンガープリントAに対応するSD 2については、SD 2を指す論理ブロックアドレスはそれぞれLBA 2およびLBA 3であり、従って、図10に示される逆マッピングテーブル内のエントリは、SD 2と、LBA 2およびLBA 3の両方との間のマッピング関係を記録する。記憶領域2を提供するSSDが故障した場合、新しいSSDが故障したSSDを置き換える。SD 2が故障したSSDによって提供される場合、SD 2が新しいSSDから再割り当てされるとき、SD 2に対応しているLBA 2およびLBA 3は、図10に示される逆マッピングテーブル内のエントリを照会することのみによって決定されることができ、LBA 2およびLBA 3のデータは、新しいSSDによって提供されるSD 2において回復されることができ、記憶システム内の全てのLUNの論理ブロックアドレスと記憶アドレスとの間のマッピング関係をトラバースすることによって、SD 2を指す論理ブロックアドレス(換言すると、SD 2に対応する論理ブロックアドレス)を決定する必要はない。従って、データ回復中の論理ブロックアドレス検索効率は改善される。
第1の書込み要求が変更/書込み要求である場合、すなわち、第1の書き込まれるべきデータが書き込まれる前、LBA 1にはデータブロックMが書き込まれており、データブロックMに対応するフィンガープリントはフィンガープリントBである。フィンガープリントテーブル内のフィンガープリントエントリは、図11に示される情報を含み:データブロックMを記憶する記憶アドレスは記憶領域2内のSD 3であり、参照回数は1である。LBA 1と記憶アドレスSD 3との間のマッピング関係は、図12に示され:LBA 1が指す記憶アドレスはSD 3であり、SD 3に記憶されるデータは参照可能なデータである。第1の書込み要求に従って、SD 1に第1の書き込まれるべきデータを記憶するとき、コントローラは、図12に示されるマッピング関係を、図4に示されるマッピング関係に更新し;コントローラは、図11に示されるフィンガープリントエントリにおける参照回数を更新し、すなわち、参照回数を0に減少させ;次いで、コントローラは、LBA 1とSD 3との間のマッピング関係を直接削除するか、または、マッピング関係を無効にして、記憶アドレスSD 3を開放してよく、その結果、SD 3は、記憶領域2内の空き記憶アドレスになり、すなわち、SD 3は、割り当てられていない記憶アドレスである。LBA 1とSD 3との間のマッピング関係を削除することは、マッピング関係を完全に削除することである。マッピング関係を無効にする具体的な実施は、マッピング関係を識別するために無効識別子を使用することであってよく、無効識別子は、マッピング関係が無効であることを示す。
コントローラの重複排除ロジックがオフラインである場合、コントローラは、第1の書込み要求に従って、SD 1に第1の書き込まれるべきデータを書き込み(コントローラは、記憶領域1から書き込まれるべきデータに記憶アドレスを割り当てる)、LBA 1とSD 1との間のマッピング関係を確立する。LBA 1と記憶アドレスとの間のマッピング関係が図12に示される場合、すなわち、LBA 1に対応する記憶アドレスがSD 3であり、SD 3に記憶されるデータが参照可能なデータである場合、コントローラは、SD 3の参照回数の減少をログに記録する。コントローラの重複排除ロジックがオンラインになった後、ログ内のSD 3の参照回数の減少の記録に従って、コントローラは、図11に示されるフィンガープリントエントリ内の参照回数を更新し、すなわち、参照カウントを0に減少させる。本発明の本実施形態では、コントローラの重複排除ロジックがオフラインであることは、コントローラの重複排除機能が無効であるか、または故障していることを意味し、コントローラの重複排除ロジックがオンラインであることは、コントローラの重複排除機能が動作状態にあることを意味する。本発明の本実施形態で説明される態様によると、コントローラが重複排除を実行しない場合、コントローラは、論理ブロックアドレスと記憶アドレスとの間のマッピング関係に従って、記憶デバイス内に記憶されているデータに依然としてアクセスし、データを書き込み、記憶デバイスからデータを削除することができる。従って、記憶システムのデータアクセス性は改善される。本発明の本実施形態では、コントローラが重複排除を実行しないシナリオは、コントローラの重複排除ロジックがオフラインであるシナリオ、コントローラがフィンガープリントテーブル内のエントリにアクセスすることができないシナリオ等を含んでよい。
さらに、本発明の本実施形態では、コントローラは第4の削除要求を受信し、第4の削除要求は、一般に、LUN 2の識別子およびLBA 3を搬送する。コントローラは、LBA 3に従って、図8に示されるマッピング関係を照会し、図8に示されるLBA 3とSD 2との間のマッピング関係を無効にするか、または削除する。LBA 3とSD 2との間のマッピング関係を削除することは、マッピング関係を完全に削除することである。LBA 3とSD 2との間のマッピング関係を無効にする具体的な実施は、マッピング関係を識別するために無効識別子を使用することであってよく、無効識別子は、マッピング関係が無効であることを示す。
LBA 3はSD 2をもはや指さないため、図9に示されるフィンガープリントエントリ内の参照回数は1減らされ、すなわち、1に更新される。コントローラが、第4の削除要求に従って、図8に示されるマッピング関係を削除するか、または無効にするが、コントローラの重複排除ロジックがオフラインである場合、コントローラは、SD 2の参照回数の減少をログ内に記録する。コントローラの重複排除ロジックがオンラインになった後、ログ内のSD 2の参照回数の減少の記録に従って、コントローラは、図9に示されるフィンガープリントエントリ内の参照回数を更新し、すなわち、参照カウントを1に減少させる。
本発明の本実施形態で説明される解決手段はまた、LUN 1に適用可能である。すなわち、記憶アドレスは同じ記憶領域から割り当てられる。任意で、本発明の本実施形態で説明される解決手段は、1つのLUNの操作要求に適用可能なだけでなく、複数のLUNの操作要求にも適用可能である。このことは、本発明では限定されない。本発明の本実施形態では、別の記憶アドレス割り当て方式が、図1に示される記憶システムに基づいてさらに使用されてよい。例えば、記憶アドレスは、RAIDアルゴリズムに基づいて、ハードディスクからLUNに直接提供される。このことは、本発明では限定されない。
さらに、本発明の本実施形態では、その参照回数が事前に設定された閾値よりも大きいフィンガープリントエントリは、重複排除中のフィンガープリント検索効率を改善するために、フィンガープリントテーブル内のフィンガープリントエントリに記録されている参照回数に従って、コントローラのキャッシュに記憶されてよい。
図1乃至図3および前述の実施形態で説明される記憶システムを参照すると、図13は、本発明の記憶システムにおける重複排除のための方法の実施形態のフローチャートを提供する。
ステップ1301:コントローラは、第1の書込み要求を受信し、ここで、第1の書込み要求は、第1の論理ブロックアドレスおよび第1の書き込まれるべきデータを搬送する。
ステップ1302:コントローラは、第1の書き込まれるべきデータの第1のフィンガープリントを取得する。
前述の実施形態で説明されるように、コントローラは、ハッシュアルゴリズム等に従って、第1の書き込まれるべきデータに対する計算を実行することによって、第1のフィンガープリントを取得してよい。
ステップ1303:フィンガープリントテーブルが第1のフィンガープリントを含まない場合、コントローラは、第1のフィンガープリントをフィンガープリントテーブルに挿入し、記憶デバイスから第1の書き込まれるべきデータに第1の記憶アドレスを割り当てる。
具体的な実施では、フィンガープリントと記憶アドレスとの間のマッピング関係を記録するためにフィンガープリントエントリが使用され、フィンガープリントテーブル内のフィンガープリントエントリが第1のフィンガープリントを含まない場合、コントローラは、フィンガープリントテーブル内に第1のフィンガープリントエントリを作成して、第1のフィンガープリントを第1のフィンガープリントエントリに挿入する。
ステップ1304:コントローラは、第1の記憶アドレスに第1の書き込まれるべきデータを記憶し、第1の論理ブロックアドレスと第1の記憶アドレスとの間のマッピング関係を確立する。
任意で、コントローラは、フィンガープリントテーブル内に、第1のフィンガープリントが挿入される時刻を記録する。具体的には、コントローラは、第1のフィンガープリントエントリ内に、第1のフィンガープリントが挿入される時刻を記録する。
フィンガープリントテーブルが第1のフィンガープリントを含まない場合、コントローラは、第1のフィンガープリントをフィンガープリントテーブルに挿入するが、第1のフィンガープリントに対応する記憶アドレスは存在しない。従って、第1の記憶アドレスに記憶されている第1の書き込まれるべきデータは、参照可能なデータではない。具体的な実施では、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内に存在しないことは、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内で定義されていないか、または、第1のフィンガープリントがどの記憶アドレスにも対応していないことを意味してよい。フィンガープリントと記憶アドレスとの間のマッピング関係を記録するためにフィンガープリントエントリを使用する実施では、フィンガープリントテーブル内のフィンガープリントエントリが第1のフィンガープリントを含まない場合、コントローラは、フィンガープリントテーブル内に第1のフィンガープリントエントリを作成し、第1のフィンガープリントが第1のフィンガープリントエントリに挿入されるとき、記憶アドレスは、第1のフィンガープリントエントリ内で定義されなくてよく、すなわち、記憶アドレスパラメータは、第1のフィンガープリントエントリ内で定義されなくてよく、または、記憶アドレスはなく、すなわち、記憶アドレスパラメータはNullで定義される。これらのケースは、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内に存在せず、すなわち、第1のフィンガープリントと第1の記憶アドレスとの間のマッピング関係はフィンガープリントテーブル内で確立されないことを示す。
ステップ1305:コントローラは、第2の書込み要求を受信し、ここで、第2の書込み要求は、第2の論理ブロックアドレスおよび第2の書き込まれるべきデータを搬送する。
ステップ1306:コントローラは、第2の書き込まれるべきデータのフィンガープリントを取得し、ここで、第2の書き込まれるべきデータのフィンガープリントは第1のフィンガープリントである。
前述の実施形態で説明されるように、コントローラは、ハッシュアルゴリズム等に従って、第2の書き込まれるべきデータに対して計算を実行することによって第1のフィンガープリントを取得してよい。第1の書き込まれるべきデータおよび第2の書き込まれるべきデータのフィンガープリントは同じであり、第1の書き込まれるべきデータは第2の書き込まれるべきデータと同じであることを示す。
ステップ1307:コントローラが、第2の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルを照会して、第1のフィンガープリントに対応する記憶アドレスが存在しないと判定した場合、コントローラは、記憶デバイスから第2の書き込まれるべきデータに第2の記憶アドレスを割り当てる。
ステップ1308:コントローラは、第2の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立し、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立する。
任意で、コントローラは、記憶デバイスの第1の記憶領域から第1の書き込まれるべきデータに第1の記憶アドレスを割り当て、且つ、コントローラは、記憶デバイスの第2の記憶領域から第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、ここで、第2の記憶領域の記憶性能は第1の記憶領域の記憶性能よりも高く、参照可能なデータにアクセスすることにおけるコントローラの性能は改善されることができる。
任意で、コントローラは、フィンガープリントテーブル内に、第2の記憶アドレスの参照回数を記録する。具体的な実施では、コントローラは、フィンガープリントテーブル内の第1のフィンガープリントエントリにおける第2の記憶アドレスの参照回数を記録してよい。参照回数は、論理ブロックアドレスが、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスを参照する回数である。論理ブロックアドレスが、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスを参照する回数は、論理ブロックアドレスと記憶アドレスとの間のマッピング関係によって決定される。コントローラが、論理ブロックアドレスと記憶アドレスとの間のマッピング関係を確立して、記憶アドレスがフィンガープリントテーブル内に記録されるとき、論理ブロックアドレスは、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスを一度参照する。具体的な実施では、コントローラは、フィンガープリントテーブル内の第1のフィンガープリントエントリに、第2の記憶アドレスの参照回数を記録し、参照回数は、論理ブロックアドレスがフィンガープリントエントリにおける記憶アドレスを参照した回数である。参照回数に従って、データが第2の記憶アドレスに再び書き込まれることができるかどうかが判定されることができる。参照回数が0である場合、第2の記憶アドレスを指す論理ブロックアドレスがないことを示し、第2の記憶アドレスは解放されることができ、その結果、第2の記憶アドレスは、記憶デバイスにおいて空き記憶アドレスになり、再びデータを書き込むために使用されてよい。コントローラは、フィンガープリントテーブル内に記録されている参照回数に従って、コントローラのキャッシュ内に、その参照回数が事前に設定された閾値よりも大きいフィンガープリントと、フィンガープリントに対応する記憶アドレスとの間のマッピング関係を記憶し、このことは、重複排除中のフィンガープリント検索効率を改善する。
コントローラは、受信された書込み要求が、そのフィンガープリント値が第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントする。回数が事前に設定された回数Nよりも大きい場合、コントローラは、第2の記憶アドレスに第2の書き込まれるべきデータを記憶して、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立し、ここで、Nは1以上の整数である。すなわち、(N+1)回目に現れる重複データ(第2の書き込まれるべきデータ)は第2の記憶アドレスに記憶され、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係がフィンガープリントテーブル内で確立される。第2の記憶アドレスに記憶されるデータは参照可能なデータである。上で説明されるように、コントローラによって、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立する具体的な実施は、具体的には、コントローラによって、第2の記憶アドレスをフィンガープリントテーブル内の第1のフィンガープリントエントリに挿入することであってよい。従って、その重複度が一定値に達したデータブロックに対する重複排除は、記憶システムの要件に従って設定されてよい。参照可能なデータは、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスに記憶されるデータであり、参照不可能なデータは、記憶システムに記憶されるが、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスには記憶されないデータである。具体的な実施では、参照可能なデータは、フィンガープリントテーブル内のフィンガープリントエントリにおける記憶アドレスに記憶されるデータであり、参照不可能なデータは、記憶システムに記憶されるが、フィンガープリントテーブル内のフィンガープリントエントリに記録された記憶アドレスには記憶されないデータである。
コントローラは、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立し、従って、第2の記憶アドレスに記憶される第2の書き込まれるべきデータは、参照可能なデータである。
任意で、コントローラは、第3の書込み要求を受信し、ここで、第3の書込み要求は、第3の論理ブロックアドレスおよび第3の書き込まれるべきデータを搬送し、コントローラは、第3の書き込まれるべきデータのフィンガープリントを取得し、ここで、第3の書き込まれるべきデータのフィンガープリントは第1のフィンガープリントであり、第3の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルを照会して、第1のフィンガープリントに対応する記憶アドレスが第2の記憶アドレスであると判定した場合、コントローラは、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立する。第1の書き込まれるべきデータ、第2の書き込まれるべきデータおよび第3の書き込まれるべきデータのフィンガープリントは全て第1のフィンガープリントであり、第1の書き込まれるべきデータ、第2の書き込まれるべきデータおよび第3の書き込まれるべきデータは同一であることを示す。このことに基づいて、コントローラは、重複データに対して重複排除操作を実行し、記憶空間は節約されることができる。具体的な実施では、第3の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブル内の第1のフィンガープリントエントリを照会して、第1のフィンガープリントに対応する記憶アドレスが第2の記憶アドレスであると判定した場合、コントローラは、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立する。
任意で、コントローラは、フィンガープリントテーブルから第2のフィンガープリントを削除する。第2のフィンガープリントに対応する記憶アドレスは存在せず、第2のフィンガープリントがフィンガープリントテーブルに存在する期間は、事前に設定された期間を超過し、このことは、フィンガープリントテーブル内のデータ量をさらに低減する。具体的な実施では、第2のフィンガープリントが挿入されたときの、フィンガープリントテーブル内に記録される時刻に従って、第2のフィンガープリントがフィンガープリントテーブル内に存在する期間が事前に設定された期間を超過すると判定されてよい。任意で、フィンガープリントエントリが例として使用される。コントローラによって、フィンガープリントエントリ内に記録されている第2のフィンガープリントについては、第2のフィンガープリントは第2のフィンガープリントエントリにおけるどの記憶アドレスにも対応せず、第2のフィンガープリントが第2のフィンガープリントエントリ内に存在する期間は事前に設定された期間を超過する。
任意で、記憶システムは、逆マッピングテーブルをさらに含む。逆マッピングテーブル内のエントリは、フィンガープリントテーブル内のフィンガープリントに対応する記憶アドレスと、記憶アドレスを指す論理ブロックアドレスとの間のマッピング関係を記録するために使用される。第1のフィンガープリントに対応する第2の記憶アドレスについては、第2の記憶アドレスを指す論理ブロックアドレスはそれぞれ、第2の論理ブロックアドレスおよび第3の論理ブロックアドレスである。記憶デバイスによって提供された第2の記憶アドレスが故障した(または第2の記憶領域が故障した)場合、故障した記憶デバイスは、新しい記憶デバイスによって置き換えられる(故障した第2の記憶領域は、新しい記憶領域によって置き換えられる)。従って、新しい記憶デバイスまたは新しい記憶領域から第2の記憶アドレスが再割り当てされた場合、第2の記憶アドレスに対応している第2の論理ブロックアドレスおよび第3の論理ブロックアドレスは、逆マッピングテーブル内のエントリに従って決定される必要があるのみであり、記憶システム内の全ての論理ユニットの論理ブロックアドレスと記憶アドレスとの間のマッピング関係をトラバースすることによって、第2の記憶アドレスを指す論理ブロックアドレスを決定する必要はない。従って、データ回復中の論理ブロックアドレス検索効率が改善される。
任意で、論理ブロックアドレスと記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子をさらに含んでよい。例えば、第1の論理ブロックアドレスと第1の記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子を搬送し、第2の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子を搬送し、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係は、データが参照可能なデータであるかどうかを示す識別子を搬送する。コントローラは、前述のマッピング関係における参照可能なデータの識別子を使用することによって、記憶アドレスに記憶されているデータが参照可能なデータであるかどうかを容易に識別することができる。
図13に示されるフローチャートによると、第1の書き込まれるべきデータおよび第2の書き込まれるべきデータのフィンガープリントはいずれも第1のフィンガープリントであり、第1の書き込まれるべきデータは第2の書き込まれるべきデータと同じであることを示す。コントローラは、第1の記憶アドレスに最初に書き込まれたデータブロックを記憶し、フィンガープリントテーブルに、最初に書き込まれた第1の書き込まれるべきデータの第1のフィンガープリントを挿入するが、第1のフィンガープリントと第1の記憶アドレスとの間のマッピング関係を確立しない。次に書き込まれる第2の書き込まれるべきデータを受信すると(第2の書き込まれるべきデータは、2回目にコントローラによって受信された同じデータに限定されない)、コントローラは、重複する第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、第2の記憶アドレスに第2の書き込まれるべきデータを記憶し、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立する。すなわち、コントローラは、複数回受信された同じデータに対してのみ重複排除を実行し、このことは、フィンガープリントテーブル内のデータ量を低減する。
図13に示されるフローチャートの具体的な実施については、前述の実施形態における説明を参照されたく、詳細はここでは再び説明されない。
本発明の実施形態で説明される解決手段によると、本発明の別の実施形態は、本発明の実施形態における記憶システムに適用される、図14に示されるコントローラを提供する。コントローラは、受信ユニット1401、取得ユニット1402、挿入ユニット1403、割り当てユニット1404、記憶ユニット1405および確立ユニット1406を含む。受信ユニット1401は第1の書込み要求を受信するように構成され、ここで、第1の書込み要求は、第1の論理ブロックアドレスおよび第1の書き込まれるべきデータを搬送する。取得ユニット1402は、第1の書き込まれるべきデータの第1のフィンガープリントを取得するように構成される。挿入ユニット1403は、フィンガープリントテーブルが第1のフィンガープリントを含まない場合、第1のフィンガープリントをフィンガープリントテーブルに挿入するように構成される。割り当てユニット1404は、記憶デバイスから第1の書き込まれるべきデータに第1の記憶アドレスを割り当てるように構成される。記憶ユニット1405は、第1の記憶アドレスに第1の書き込まれるべきデータを記憶するように構成される。確立ユニット1406は、第1の論理ブロックアドレスと第1の記憶アドレスとの間のマッピング関係を確立するように構成される。受信ユニット1401は、第2の書込み要求を受信するようにさらに構成され、ここで、第2の書込み要求は、第2の論理ブロックアドレスおよび第2の書き込まれるべきデータを搬送する。取得ユニット1402は、第2の書き込まれるべきデータのフィンガープリントを取得するようにさらに構成され、ここで、第2の書き込まれるべきデータのフィンガープリントは第1のフィンガープリントである。割り当てユニット1404は、第2の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルを照会して、第1のフィンガープリントに対応する記憶アドレスがフィンガープリントテーブル内に存在しないと判定した場合、記憶デバイスから第2の書き込まれるべきデータに第2の記憶アドレスを割り当てるようにさらに構成される。記憶ユニット1405は、第2の記憶アドレスに第2の書き込まれるべきデータを記憶するようにさらに構成される。確立ユニット1406は、第2の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立し、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成される。
任意で、割り当てユニット1404は、具体的には、記憶デバイスの第1の記憶領域から第1の書き込まれるべきデータに第1の記憶アドレスを割り当て、且つ、記憶デバイスの第2の記憶領域から第2の書き込まれるべきデータに第2の記憶アドレスを割り当てるように構成される。第2の記憶領域の記憶性能は第1の記憶領域の記憶性能よりも高い。
任意で、受信ユニット1401は、第3の書込み要求を受信するようにさらに構成され、ここで、第3の書込み要求は、第3の論理ブロックアドレスおよび第3の書き込まれるべきデータを搬送する。取得ユニット1402は、第3の書き込まれるべきデータのフィンガープリントを取得するようにさらに構成され、ここで、第3の書き込まれるべきデータのフィンガープリントは第1のフィンガープリントである。確立ユニット1406は、第3の書き込まれるべきデータの第1のフィンガープリントに従って、フィンガープリントテーブルが照会されて、第1のフィンガープリントに対応する記憶アドレスが第2の記憶アドレスであると判定した場合、第3の論理ブロックアドレスと第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成される。
任意で、コントローラは記録ユニットをさらに含み、記録ユニットは、第2の記憶アドレスの参照回数を第1のフィンガープリントエントリ内に記録するように構成される。任意で、記録ユニットは、第2の記憶アドレスの参照回数をフィンガープリントテーブル内に記録するようにさらに構成される。
任意で、コントローラは削除ユニットをさらに含み、削除ユニットは、フィンガープリントテーブルから第2のフィンガープリントを削除するように構成される。第2のフィンガープリントに対応する記憶アドレスは存在せず、且つ、第2のフィンガープリントがフィンガープリントテーブル内に存在する期間は事前に設定された期間を超過する。
任意で、コントローラは、受信された書込み要求が、そのフィンガープリント値が第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントするように構成されるカウントユニットをさらに含む。記憶ユニット1405は、第2の記憶アドレスに第2の書き込まれるべきデータを記憶し、確立ユニット1406は、回数が事前に設定された回数Nよりも大きい場合、フィンガープリントテーブル内で、第1のフィンガープリントと第2の記憶アドレスとの間のマッピング関係を確立し、ここで、Nは1以上の整数である。
図14に示されるコントローラによって実施される効果についておよびさらなる実施については、前述の実施形態における対応する説明を参照されたく、詳細はここでは再び説明されない。
図14に示されるコントローラについては、実施は、前述のユニットがコントローラ内にインストールされ、前述のユニットは、コントローラのメモリ内にロードされてよく、コントローラ内のCPUは、本発明の対応する実施形態における機能を実施するために、メモリ内の命令を実行することであり、別の実施は、コントローラ内に含まれるユニットが、ハードウェアによって実施されてよく、または、ハードウェアとCPUによって実行されるメモリ内の命令との組合せによって実施されてよい。前述のユニットは、構造ユニットとも呼ばれる。
本発明の実施形態は不揮発性コンピュータ可読記憶媒体およびコンピュータプログラム製品と、不揮発性コンピュータ可読記憶媒体およびコンピュータプログラム製品に含まれるコンピュータ命令をさらに提供する。CPUは、本発明の実施形態におけるコントローラに対応する機能を実施するために、メモリにロードされたコンピュータ命令を実行する。
本発明の実施形態で説明される態様によると、コントローラがフィンガープリントテーブル内のエントリにアクセスすることができないとき、コントローラは、依然として、論理ブロックアドレスと記憶アドレスとの間のマッピング関係に従って、記憶デバイス内のデータにアクセスし、データを書き込み、記憶デバイスからデータを削除することができる。
本発明の実施形態では、フィンガープリントテーブル内のフィンガープリントエントリおよび論理ブロックアドレスと記憶アドレスとの間のマッピング関係は、データ構造または他の適切な記述的構造であってよく、対応する情報を記録するために使用される。例示的な説明が、本発明の実施形態では与えられる。本発明の実施形態における「第1」、「第2」、「第3」および「第4」は、順序を厳密に限定するために使用されるものではない。例えば、操作要求を表すために使用されるとき、「第1」、「第2」および「第3」は、異なる操作要求間で区別するためだけに使用され、書き込まれるべきデータを表すために使用されるとき、「第1」、「第2」および「第3」は、異なる書込み要求内で搬送される書き込まれるべきデータを表すためにのみ使用される。コントローラは、第1の書込み要求と第2の書込み要求との間で1つ以上の書込み要求をさらに受信してよい。本発明の実施形態における記憶性能は、帯域幅(Bandwidth)、入力/出力操作毎秒(Input/Output Operations Per Second, IOPS)、シーケンシャル(Sequential)読出し/書込み速度、ランダム(Random)読出し/書込み速度、持続スループット(Sustained Throughput)能力およびバースト処理能力(Burst I/O)等の、1つ以上のインジケータによって測定されてよく、本発明の実施形態はそれらへの限定を設定しない。
本発明で提供されるいくつかの実施形態では、開示される装置および方法は、他の方式で実施されてよいことは理解されるべきである。例えば、記載されている装置の実施形態におけるユニット分割は、単に、論理的な機能分割であり、実際の実施では別の分割であってよい。例えば、複数のユニットまたは構成要素は、別のシステムに結合または統合されてよく、または、一部の特徴は無視されるかまたは実行されなくてよい。加えて、表示または議論される相互結合または直接結合または通信接続は、いくつかのインタフェースを使用することによって実施されてよい。装置またはユニット間の間接結合または通信接続は、電気的、機械的または他の形態で実施されてよい。
別個の部分として記載されているユニットは、物理的に分離していてもしていなくてもよく、ユニットとして表示されている部分は、物理ユニットであってもなくてもよく、1つの位置に配置されてよく、または、複数のネットワークユニットに分配されてよい。ユニットの一部または全ては、実施形態の解決手段の目的を達成するための実際のニーズに従って選択されてよい。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニットに統合されてよく、または、ユニットの各々は物理的に孤立して存在してよく、または、2つ以上のユニットは1つのユニットに統合される。
201 CPU
202 メモリ
1401 受信ユニット
1402 取得ユニット
1403 挿入ユニット
1404 割り当てユニット
1405 記憶ユニット
1406 確立ユニット
SSDの記憶性能は、HDDの記憶性能よりも良好であるため、図3に示される実施では、コントローラは、記憶システム内のメカニカルハードディスクおよびソリッドステートディスクを固定サイズチャンク(Chunk)に別々に分割し、チャンクは、記憶領域1および記憶領域2を形成する。本発明の本実施形態では、記憶領域は、ストレージリソースプールとも呼ばれる。ストレージリソースプール1は、メカニカルハードディスクを分割することによってコントローラによって取得されるチャンク
Figure 2018532166
を含み、ストレージリソースプール2は、ソリッドステートディスクを分割することによってコントローラによって取得されるチャンク
Figure 2018532166
を含む。ここで、ストレージリソースプール2は、第1レベルリソースプールと呼ばれ、ストレージリソースプール1は、第2レベルリソースプールと呼ばれる。独立ディスクの冗長アレイ(Redundant Array of Independent Disks, RAID)アルゴリズムによると、コントローラは、ストレージリソースプール1における複数のメカニカルハードディスク内で分配されるチャンクをランダムに選択して、チャンクグループ(Chunk Group)を形成する。例えば、
Figure 2018532166
はチャンクグループを形成し、すなわち、4つの
Figure 2018532166
は、それぞれ異なるハードディスク由来である。同様に、RAIDアルゴリズムによると、コントローラは、ストレージリソースプール2における複数のソリッドステートディスク内で分配されるチャンクをランダムに選択して、チャンクグループ(Chunk Group)を形成する。例えば、
Figure 2018532166
はチャンクグループを形成し、すなわち、4つの
Figure 2018532166
は、それぞれ異なるハードディスク由来である。コントローラは、チャンクグループを、
Figure 2018532166
または
Figure 2018532166
等の固定サイズのエクステント(Extent)に分割して、エクステントをLUNに使用のために割り当てる。図3に示されるように、LUN 1は、ストレージリソースプール1におけるエクステントを使用し、LUN 2は、ストレージリソースプール1およびストレージリソースプール2におけるエクステントを使用する。すなわち、LUN 1は、記憶領域1で提供されるエクステントを使用し、LUN 2は、記憶領域1および記憶領域2で提供されるエクステントを使用する。従って、LUN 1は非階層ストレージLUNと呼ばれ、且つ、LUN 2は階層ストレージLUNと呼ばれる。

Claims (28)

  1. 記憶システムにおける重複排除のための方法であって、前記記憶システムはコントローラおよび記憶デバイスを含み、且つ、前記方法は、
    前記コントローラによって、第1の書込み要求を受信するステップであって、前記第1の書込み要求は、第1の論理ブロックアドレスおよび第1の書き込まれるべきデータを搬送する、ステップと、
    前記コントローラによって、前記第1の書き込まれるべきデータの第1のフィンガープリントを取得するステップと、
    フィンガープリントテーブルが前記第1のフィンガープリントを含まない場合、前記第1のフィンガープリントを前記フィンガープリントテーブルに挿入し、前記記憶デバイスから前記第1の書き込まれるべきデータに第1の記憶アドレスを割り当てるステップと、
    前記コントローラによって、前記第1の記憶アドレスに前記第1の書き込まれるべきデータを記憶するステップと、
    前記コントローラによって、前記第1の論理ブロックアドレスと前記第1の記憶アドレスとの間のマッピング関係を確立するステップと、
    前記コントローラによって、第2の書込み要求を受信するステップであって、前記第2の書込み要求は、第2の論理ブロックアドレスおよび第2の書き込まれるべきデータを搬送する、ステップと、
    前記コントローラによって、前記第2の書き込まれるべきデータのフィンガープリントを取得するステップであって、前記第2の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントである、ステップと、
    前記コントローラが、前記第2の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが存在しないと判定した場合、前記コントローラによって、前記記憶デバイスから前記第2の書き込まれるべきデータに第2の記憶アドレスを割り当てるステップと、
    前記コントローラによって、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶するステップと、
    前記コントローラによって、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間のマッピング関係を確立するステップと、
    前記コントローラによって、前記第2の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立するステップとを含む方法。
  2. 前記コントローラによって、前記記憶デバイスから前記第1の書き込まれるべきデータに第1の記憶アドレスを割り当てる前記ステップは、具体的には、前記コントローラによって、前記記憶デバイスの第1の記憶領域から前記第1の書き込まれるべきデータに前記第1の記憶アドレスを割り当てるステップを含み、且つ、前記コントローラによって、前記記憶デバイスから前記第2の書き込まれるべきデータに第2の記憶アドレスを割り当てる前記ステップは、具体的には、前記コントローラによって、前記記憶デバイスの第2の記憶領域から前記第2の書き込まれるべきデータに前記第2の記憶アドレスを割り当てるステップを含み、前記第2の記憶領域の記憶性能は前記第1の記憶領域の記憶性能よりも高い、請求項1に記載の方法。
  3. 前記方法は、
    前記コントローラによって、第3の書込み要求を受信するステップであって、前記第3の書込み要求は、第3の論理ブロックアドレスおよび第3の書き込まれるべきデータを搬送する、ステップと、
    前記コントローラによって、前記第3の書き込まれるべきデータのフィンガープリントを取得するステップであって、前記第3の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントである、ステップと、
    前記第3の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが前記第2の記憶アドレスであると判定した場合、前記コントローラによって、前記第3の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立するステップとをさらに含む、請求項1または2に記載の方法。
  4. 前記方法は、
    前記コントローラによって、前記第2の記憶アドレスの参照回数を前記フィンガープリントテーブル内に記録するステップをさらに含む、請求項1乃至3のいずれか1項に記載の方法。
  5. 前記方法は、
    前記コントローラによって、前記フィンガープリントテーブル内に、前記第1のフィンガープリントが挿入された時刻を記録するステップをさらに含む、請求項1乃至4のいずれか1項に記載の方法。
  6. 前記方法は、
    前記コントローラによって、前記フィンガープリントテーブルから第2のフィンガープリントを削除するステップであって、前記第2のフィンガープリントに対応する記憶アドレスは存在せず、且つ、前記第2のフィンガープリントが前記フィンガープリントテーブル内に存在する期間は事前に設定された期間を超過する、ステップをさらに含む、請求項5に記載の方法。
  7. 前記方法は、
    前記コントローラによって、受信された書込み要求が、そのフィンガープリント値が前記第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントし、前記コントローラによって、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶し、前記回数が事前に設定された回数Nよりも大きい場合、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間の前記マッピング関係を確立するステップをさらに含み、Nは1以上の整数である、請求項1に記載の方法。
  8. 記憶コントローラおよび記憶デバイスを含む記憶システムであって、
    前記コントローラは、第1の書込み要求を受信し、第1の書き込まれるべきデータの第1のフィンガープリントを取得し、フィンガープリントテーブルが前記第1のフィンガープリントを含まない場合、前記第1のフィンガープリントを前記フィンガープリントテーブルに挿入し、前記記憶デバイスから前記第1の書き込まれるべきデータに第1の記憶アドレスを割り当て、前記第1の記憶アドレスに前記第1の書き込まれるべきデータを記憶し、第1の論理ブロックアドレスと前記第1の記憶アドレスとの間のマッピング関係を確立するように構成され、前記第1の書込み要求は、前記第1の論理ブロックアドレスおよび前記第1の書き込まれるべきデータを搬送し、
    前記コントローラは、第2の書込み要求を受信し、第2の書き込まれるべきデータのフィンガープリントを取得し、前記第2の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが存在しないと判定した場合、前記記憶デバイスから前記第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶し、第2の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立し、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成され、前記第2の書込み要求は、前記第2の論理ブロックアドレスおよび前記第2の書き込まれるべきデータを搬送し、前記第2の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントであり、
    前記記憶デバイスは、前記第1の記憶アドレスおよび前記第2の記憶アドレスを提供するように構成される、記憶システム。
  9. 前記コントローラは、具体的には、前記記憶デバイスの第1の記憶領域から前記第1の書き込まれるべきデータに前記第1の記憶アドレスを割り当て、且つ、前記記憶デバイスの第2の記憶領域から前記第2の書き込まれるべきデータに前記第2の記憶アドレスを割り当てるように構成され、前記第2の記憶領域の記憶性能は前記第1の記憶領域の記憶性能よりも高い、請求項8に記載の記憶システム。
  10. 前記コントローラは、第3の書込み要求を受信し、第3の書き込まれるべきデータのフィンガープリントを取得し、前記第3の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが前記第2の記憶アドレスであると判定した場合、第3の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成され、前記第3の書込み要求は、前記第3の論理ブロックアドレスおよび前記第3の書き込まれるべきデータを搬送し、前記第3の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントである、請求項8または9に記載の記憶システム。
  11. 前記コントローラは、前記第2の記憶アドレスの参照回数を前記フィンガープリントテーブル内に記録するようにさらに構成される、請求項8乃至10のいずれか1項に記載の記憶システム。
  12. 前記コントローラは、前記フィンガープリントテーブル内に、前記第1のフィンガープリントが挿入された時刻を記録するようにさらに構成される、請求項8乃至11のいずれか1項に記載の記憶システム。
  13. 前記コントローラは、前記第2のフィンガープリントを削除するようにさらに構成され、前記第2のフィンガープリントに対応する記憶アドレスは存在せず、且つ、前記第2のフィンガープリントが前記フィンガープリントテーブル内に存在する期間は事前に設定された期間を超過する、請求項12に記載の記憶システム。
  14. 前記コントローラは、受信された書込み要求が、そのフィンガープリント値が前記第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントし、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶し、前記回数が事前に設定された回数Nよりも大きい場合、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間の前記マッピング関係を確立するようにさらに構成され、Nは1以上の整数である、請求項8に記載の記憶システム。
  15. 記憶システムに適用されるコントローラであって、前記記憶システムは前記記憶コントローラおよび記憶デバイスを含み、前記コントローラは、インタフェースおよびプロセッサを含み、前記インタフェースは前記プロセッサと通信し、
    前記インタフェースは第1の書込み要求を受信するように構成され、前記第1の書込み要求は、第1の論理ブロックアドレスおよび第1の書き込まれるべきデータを搬送し、
    前記プロセッサは、前記第1の書き込まれるべきデータの第1のフィンガープリントを取得し、フィンガープリントテーブルが前記第1のフィンガープリントを含まない場合、前記第1のフィンガープリントを前記フィンガープリントテーブルに挿入し、前記記憶デバイスから前記第1の書き込まれるべきデータに第1の記憶アドレスを割り当て、前記第1の記憶アドレスに前記第1の書き込まれるべきデータを記憶し、前記第1の論理ブロックアドレスと前記第1の記憶アドレスとの間のマッピング関係を確立するように構成され、
    前記インタフェースは、第2の書込み要求を受信するようにさらに構成され、前記第2の書込み要求は、第2の論理ブロックアドレスおよび第2の書き込まれるべきデータを搬送し、
    前記プロセッサは、前記第2の書き込まれるべきデータのフィンガープリントを取得し、前記第2の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが前記フィンガープリントテーブル内に存在しないと判定した場合、前記記憶デバイスから前記第2の書き込まれるべきデータに第2の記憶アドレスを割り当て、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶し、前記第2の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立し、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成され、前記第2の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントである、コントローラ。
  16. 前記プロセッサは、具体的には、前記記憶デバイスの第1の記憶領域から前記第1の書き込まれるべきデータに前記第1の記憶アドレスを割り当て、且つ、前記記憶デバイスの第2の記憶領域から前記第2の書き込まれるべきデータに前記第2の記憶アドレスを割り当てるように構成され、前記第2の記憶領域の記憶性能は前記第1の記憶領域の記憶性能よりも高い、請求項15に記載のコントローラ。
  17. 前記インタフェースは、第3の書込み要求を受信するようにさらに構成され、前記第3の書込み要求は、第3の論理ブロックアドレスおよび第3の書き込まれるべきデータを搬送し、
    前記プロセッサは、前記第3の書き込まれるべきデータのフィンガープリントを取得し、前記第3の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが前記第2の記憶アドレスであると判定した場合、前記第3の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成され、前記第3の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントである、請求項15または16に記載のコントローラ。
  18. 前記プロセッサは、前記第2の記憶アドレスの参照回数を前記フィンガープリントテーブル内に記録するようにさらに構成される、請求項15乃至17のいずれか1項に記載のコントローラ。
  19. 前記プロセッサは、前記フィンガープリントテーブル内に、前記第1のフィンガープリントが挿入された時刻を記録するようにさらに構成される、請求項15乃至18のいずれか1項に記載の記憶システム。
  20. 前記プロセッサは、前記フィンガープリントテーブルから第2のフィンガープリントを削除するようにさらに構成され、前記第2のフィンガープリントに対応する記憶アドレスは存在せず、且つ、前記第2のフィンガープリントが前記フィンガープリントテーブル内に存在する期間は事前に設定された期間を超過する、請求項19に記載のコントローラ。
  21. 前記プロセッサは、受信された書込み要求が、そのフィンガープリント値が前記第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントし、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶し、前記回数が事前に設定された回数Nよりも大きい場合、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間の前記マッピング関係を確立するようにさらに構成され、Nは1以上の整数である、請求項15に記載のコントローラ。
  22. 記憶システムに適用されるコントローラであって、前記記憶システムは前記記憶コントローラおよび記憶デバイスを含み、前記コントローラは、受信ユニット、取得ユニット、挿入ユニット、判定ユニット、割り当てユニット、記憶ユニットおよび確立ユニットを含み、
    前記受信ユニットは第1の書込み要求を受信するように構成され、前記第1の書込み要求は、第1の論理ブロックアドレスおよび第1の書き込まれるべきデータを搬送し、
    前記取得ユニットは、前記第1の書き込まれるべきデータの第1のフィンガープリントを取得するように構成され、
    前記挿入ユニットは、フィンガープリントテーブルが前記第1のフィンガープリントを含まない場合、前記第1のフィンガープリントを前記フィンガープリントテーブルに挿入するように構成され、
    前記割り当てユニットは、前記記憶デバイスから前記第1の書き込まれるべきデータに第1の記憶アドレスを割り当てるように構成され、
    前記記憶ユニットは、前記第1の記憶アドレスに前記第1の書き込まれるべきデータを記憶するように構成され、
    前記確立ユニットは、前記第1の論理ブロックアドレスと前記第1の記憶アドレスとの間のマッピング関係を確立するように構成され、
    前記受信ユニットは、第2の書込み要求を受信するようにさらに構成され、前記第2の書込み要求は、第2の論理ブロックアドレスおよび第2の書き込まれるべきデータを搬送し、
    前記取得ユニットは、前記第2の書き込まれるべきデータのフィンガープリントを取得するようにさらに構成され、前記第2の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントであり、
    前記割り当てユニットは、前記第2の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルを照会して、前記第1のフィンガープリントに対応する記憶アドレスが前記フィンガープリントテーブル内に存在しないと判定した場合、前記記憶デバイスから前記第2の書き込まれるべきデータに第2の記憶アドレスを割り当てるようにさらに構成され、
    前記記憶ユニットは、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶するようにさらに構成され、
    前記確立ユニットは、前記第2の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立し、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成される、コントローラ。
  23. 前記割り当てユニットは、具体的には、前記記憶デバイスの第1の記憶領域から前記第1の書き込まれるべきデータに前記第1の記憶アドレスを割り当て、且つ、前記記憶デバイスの第2の記憶領域から前記第2の書き込まれるべきデータに前記第2の記憶アドレスを割り当てるように構成され、前記第2の記憶領域の記憶性能は前記第1の記憶領域の記憶性能よりも高い、請求項22に記載のコントローラ。
  24. 前記受信ユニットは、第3の書込み要求を受信するようにさらに構成され、前記第3の書込み要求は、第3の論理ブロックアドレスおよび第3の書き込まれるべきデータを搬送し、
    前記取得ユニットは、前記第3の書き込まれるべきデータのフィンガープリントを取得するようにさらに構成され、前記第3の書き込まれるべきデータの前記フィンガープリントは前記第1のフィンガープリントであり、
    前記確立ユニットは、前記第3の書き込まれるべきデータの前記第1のフィンガープリントに従って、前記フィンガープリントテーブルが照会されて、前記第1のフィンガープリントに対応する記憶アドレスが前記第2の記憶アドレスであると判定した場合、前記第3の論理ブロックアドレスと前記第2の記憶アドレスとの間のマッピング関係を確立するようにさらに構成される、請求項22または23に記載のコントローラ。
  25. 前記コントローラは記録ユニットをさらに含み、前記記録ユニットは、前記第2の記憶アドレスの参照回数を前記フィンガープリントテーブル内に記録するように構成される、請求項22乃至24のいずれか1項に記載のコントローラ。
  26. 前記記録ユニットは、前記フィンガープリントテーブル内に、前記第1のフィンガープリントが挿入された時刻を記録するようにさらに構成される、請求項22乃至25のいずれか1項に記載の記憶システム。
  27. 前記コントローラは削除ユニットをさらに含み、前記削除ユニットは、前記フィンガープリントテーブルから第2のフィンガープリントを削除するように構成され、前記第2のフィンガープリントに対応する記憶アドレスは存在せず、且つ、前記第2のフィンガープリントが前記フィンガープリントテーブル内に存在する期間は事前に設定された期間を超過する、請求項26に記載のコントローラ。
  28. 前記コントローラは、受信された書込み要求が、そのフィンガープリント値が前記第1のフィンガープリントである書き込まれるべきデータを搬送する回数をカウントするように構成されるカウントユニットをさらに含み、前記記憶ユニットは、前記第2の記憶アドレスに前記第2の書き込まれるべきデータを記憶し、前記確立ユニットは、前記回数が事前に設定された回数Nよりも大きい場合、前記フィンガープリントテーブル内で、前記第1のフィンガープリントと前記第2の記憶アドレスとの間の前記マッピング関係を確立し、Nは1以上の整数である、請求項22に記載のコントローラ。
JP2017552037A 2016-09-28 2016-09-28 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ Active JP6526233B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/100629 WO2018058382A1 (zh) 2016-09-28 2016-09-28 一种存储系统中重复数据删除方法、存储系统及控制器

Publications (2)

Publication Number Publication Date
JP2018532166A true JP2018532166A (ja) 2018-11-01
JP6526233B2 JP6526233B2 (ja) 2019-06-05

Family

ID=61763010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017552037A Active JP6526233B2 (ja) 2016-09-28 2016-09-28 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ

Country Status (7)

Country Link
US (1) US10216446B2 (ja)
EP (2) EP3767450A1 (ja)
JP (1) JP6526233B2 (ja)
CN (2) CN109074226B (ja)
AU (1) AU2016394896B2 (ja)
CA (1) CA2977742C (ja)
WO (1) WO2018058382A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389706B (zh) * 2018-04-16 2021-05-11 华为技术有限公司 一种指纹回收方法以及存储系统
CN114816251A (zh) * 2019-07-26 2022-07-29 华为技术有限公司 数据处理方法、装置及计算机存储可读存储介质
CN110750211B (zh) * 2019-09-05 2021-05-04 华为技术有限公司 一种存储空间的管理方法及装置
CN115237347A (zh) 2019-10-17 2022-10-25 华为技术有限公司 一种数据存储方法及装置
CN110908966B (zh) * 2019-11-15 2022-06-10 浪潮电子信息产业股份有限公司 一种重删率计算方法、装置、设备及可读存储介质
US11416462B2 (en) * 2020-07-13 2022-08-16 EMC IP Holding Company LLC Techniques for efficient data deduplication
CN112214503A (zh) * 2020-10-10 2021-01-12 深圳壹账通智能科技有限公司 数据处理方法、装置、电子设备及存储介质
CN113010549B (zh) * 2021-01-29 2024-07-23 腾讯云计算(北京)有限责任公司 基于异地多活系统的数据处理方法、相关设备及存储介质
CN113050892B (zh) * 2021-03-26 2022-02-25 杭州宏杉科技股份有限公司 重删数据保护方法及装置
CN113553005B (zh) * 2021-07-06 2023-12-22 杭州宏杉科技股份有限公司 一种精简lun的数据读写方法、装置及设备
CN115437579B (zh) * 2022-11-04 2023-03-24 苏州浪潮智能科技有限公司 一种元数据管理方法、装置、计算机设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013047933A (ja) * 2011-08-29 2013-03-07 Hitachi Ltd 階層ストレージシステムの重複排除効率の向上
JP2013222230A (ja) * 2012-04-13 2013-10-28 Hitachi-Lg Data Storage Inc 情報処理システム
JP2014199574A (ja) * 2013-03-29 2014-10-23 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
JP2015534684A (ja) * 2012-09-19 2015-12-03 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法
WO2016041127A1 (zh) * 2014-09-15 2016-03-24 华为技术有限公司 重复数据删除方法和存储阵列
JP2016509310A (ja) * 2013-02-01 2016-03-24 シンボリック アイオー コーポレーション 格納されたデータにおける冗長削減

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US8171253B2 (en) * 2009-10-30 2012-05-01 Brocade Communications Systems, Inc. Virtual disk mapping
CN101706825B (zh) * 2009-12-10 2011-04-20 华中科技大学 一种基于文件内容类型的重复数据删除方法
CN102156727A (zh) * 2011-04-01 2011-08-17 华中科技大学 一种采用双指纹哈希校验的重复数据删除方法
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
CN102385554B (zh) * 2011-10-28 2014-01-15 华中科技大学 重复数据删除系统的优化方法
KR20130064518A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US9779103B2 (en) * 2012-04-23 2017-10-03 International Business Machines Corporation Preserving redundancy in data deduplication systems
US9424285B1 (en) * 2012-12-12 2016-08-23 Netapp, Inc. Content-based sampling for deduplication estimation
KR20140114515A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
US9342253B1 (en) * 2013-08-23 2016-05-17 Nutanix, Inc. Method and system for implementing performance tier de-duplication in a virtualization environment
WO2015065312A1 (en) * 2013-10-28 2015-05-07 Hitachi, Ltd. Method and apparatus of data de-duplication for solid state memory
CN103930890B (zh) * 2013-10-30 2015-09-23 华为技术有限公司 数据处理方法、装置及重删处理器
CN104123102B (zh) * 2014-07-25 2017-06-20 华为技术有限公司 一种ip硬盘及其数据处理方法
CN104239518B (zh) * 2014-09-17 2017-09-29 华为技术有限公司 重复数据删除方法和装置
US9792069B2 (en) * 2014-09-29 2017-10-17 Western Digital Technologies, Inc. Offline deduplication for solid-state storage devices
US9569114B2 (en) * 2014-11-14 2017-02-14 Sk Hynix Memory Solutions Inc. Deduplication using a master and a slave
CN104536702B (zh) * 2014-12-31 2017-12-15 华为技术有限公司 一种存储阵列系统及数据写请求处理方法
US9699504B2 (en) * 2015-09-28 2017-07-04 Rovi Guides, Inc. Systems and methods for identifying a source of media content based on a log of content identifiers
US9977746B2 (en) * 2015-10-21 2018-05-22 Hewlett Packard Enterprise Development Lp Processing of incoming blocks in deduplicating storage system
CN105701024B (zh) * 2015-12-31 2018-11-06 华为技术有限公司 一种存储设备及其垃圾数据回收的方法
CN105787037B (zh) * 2016-02-25 2019-03-15 浪潮(北京)电子信息产业有限公司 一种重复数据的删除方法及装置
US10585611B2 (en) * 2016-04-26 2020-03-10 Netapp Inc. Inline deduplication

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013047933A (ja) * 2011-08-29 2013-03-07 Hitachi Ltd 階層ストレージシステムの重複排除効率の向上
JP2013222230A (ja) * 2012-04-13 2013-10-28 Hitachi-Lg Data Storage Inc 情報処理システム
JP2015534684A (ja) * 2012-09-19 2015-12-03 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法
JP2016509310A (ja) * 2013-02-01 2016-03-24 シンボリック アイオー コーポレーション 格納されたデータにおける冗長削減
JP2014199574A (ja) * 2013-03-29 2014-10-23 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
WO2016041127A1 (zh) * 2014-09-15 2016-03-24 华为技术有限公司 重复数据删除方法和存储阵列

Also Published As

Publication number Publication date
CN111427855B (zh) 2024-04-12
EP3767450A1 (en) 2021-01-20
CA2977742A1 (en) 2018-03-28
CN111427855A (zh) 2020-07-17
CA2977742C (en) 2024-04-16
JP6526233B2 (ja) 2019-06-05
WO2018058382A1 (zh) 2018-04-05
US20180239553A1 (en) 2018-08-23
AU2016394896B2 (en) 2018-08-09
CN109074226B (zh) 2020-03-20
US10216446B2 (en) 2019-02-26
EP3321792B1 (en) 2020-07-29
CN109074226A (zh) 2018-12-21
EP3321792A4 (en) 2018-07-04
EP3321792A1 (en) 2018-05-16
BR112017019142A8 (pt) 2019-01-22
AU2016394896A1 (en) 2018-04-12
BR112017019142A2 (pt) 2018-07-03

Similar Documents

Publication Publication Date Title
JP6526233B2 (ja) 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ
US10248623B1 (en) Data deduplication techniques
US10169365B2 (en) Multiple deduplication domains in network storage system
US10747440B2 (en) Storage system and storage system management method
US8984221B2 (en) Method for assigning storage area and computer system using the same
CN107209714B (zh) 分布式存储系统及分布式存储系统的控制方法
JP5309259B2 (ja) ストレージ装置及びその制御方法
WO2017149592A1 (ja) ストレージ装置
WO2019000949A1 (zh) 分布式存储系统中元数据存储方法、系统及存储介质
US11899533B2 (en) Stripe reassembling method in storage system and stripe server
US10114566B1 (en) Systems, devices and methods using a solid state device as a caching medium with a read-modify-write offload algorithm to assist snapshots
US10365846B2 (en) Storage controller, system and method using management information indicating data writing to logical blocks for deduplication and shortened logical volume deletion processing
US11513702B2 (en) Placement of metadata on data storage drives in a first storage enclosure of a data storage system
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US10853257B1 (en) Zero detection within sub-track compression domains
US10929032B1 (en) Host hinting for smart disk allocation to improve sequential access performance
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
US10055354B1 (en) Systems, devices and methods using a solid state device as a caching medium with a hashing algorithm to maintain sibling proximity
US11947803B2 (en) Effective utilization of different drive capacities
BR112017019142B1 (pt) Método para deduplicação em sistema de armazenamento, sistema de armazenamento e controlador

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171003

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190507

R150 Certificate of patent or registration of utility model

Ref document number: 6526233

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250