JP2016157441A - Ssdへのコピーオンライト用システム及び方法 - Google Patents

Ssdへのコピーオンライト用システム及び方法 Download PDF

Info

Publication number
JP2016157441A
JP2016157441A JP2016033374A JP2016033374A JP2016157441A JP 2016157441 A JP2016157441 A JP 2016157441A JP 2016033374 A JP2016033374 A JP 2016033374A JP 2016033374 A JP2016033374 A JP 2016033374A JP 2016157441 A JP2016157441 A JP 2016157441A
Authority
JP
Japan
Prior art keywords
entry
clone
master
index
data
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
JP2016033374A
Other languages
English (en)
Other versions
JP6218869B2 (ja
Inventor
マーク デウィット ディラン
Mark Dewitt Dylan
マーク デウィット ディラン
マイケル エスップセス アダム
Michael Espeseth Adam
マイケル エスップセス アダム
クリストファー マッカンブリッジ コリン
Christopher Mccambridge Colin
クリストファー マッカンブリッジ コリン
ジョージ ドレイヤー デイヴィッド
George Dreyer David
ジョージ ドレイヤー デイヴィッド
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.)
HGST Netherlands BV
Original Assignee
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of JP2016157441A publication Critical patent/JP2016157441A/ja
Application granted granted Critical
Publication of JP6218869B2 publication Critical patent/JP6218869B2/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

【課題】SSDへのコピーオンライト用システム及び方法を提供する。
【解決手段】 SSD内での改善されたコピーオンライトの機能性のための技術が開示されている。幾つかの実施形態において、デバイスのメモリ内に間接参照データ構造を提供することを含む、SSD内での改善されたコピーオンライトの機能性を提供するための方法としての技術が実現され得る。データ構造はクローンデータに対するマスターエントリーを含み得る。マスターエントリーは、1つ以上のインデックスへの参照、及びクローンデータに対するクローンエントリーを有し、クローンエントリーはマスターインデックスへの参照、次のインデックスへの参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する。この技術は、コンピュータプロセッサを用いて、1つ以上の参照を使用し、クローンデータの1つ以上のコピーを横断することを含み得る。
【選択図】図5

Description

不揮発性メモリエクスプレス(Non−Volatile Memory express(NVMe))仕様は、半導体デバイス(SSD)及び周辺装置相互接続エクスプレス(Peripheral Component Interconnect Express(PCIe))バスを通じて取り付けられる、その他の対象デバイス用の仕様である。NVMe SSD PCIeホストインターフェースは、SASレイド(独立した複数のディスクからなる冗長配列)(SAS RAID(Redundant Array of Independent Disks))アダプターによってサポートされる、論理ボリュームに類似した名前空間の概念を定義する。SSD内へのコピーオンライトの機能性は、名前空間を用いて実施され得る。名前空間は、SSDの間接参照システムにおいて追跡される、グローバルな論理ブロックアドレス(Logical Block Address(LBA))空間上の抽出として、一般的に実施される。
LBAのメタデータは、1つのホストLBAのみを示し、それはリファレンスカウントを含まない。メタデータ内へのリファレンスカウントの包含又は付加は、データを新たなメタデータで書き直すための、追加的書込みを招き、それは良くない解決策である。LBAのメタデータ内でのそのようなリファレンスカウント無しでは、追加のクローンコピー(例えば、同じデータへの追加的なLBAのポイント)が存在するか否かを決定するための、メカニズムが存在しない。SSDにおいてデータの複数のクローンコピーを管理することは、それ故不要なデータ収集に関して特別な課題に直面する。例えば、ホストがコピー操作後に「ソース」LBAを変更する時、それは不要なデータ収集の課題を生じ得る。ソースコピーは事実上、データを1つ以上の追加のホストLBAへと複製するため、コピー操作がなされる以前に書かれた「マスターコピー」であり得る。このマスターLBAが変更されると、追加のホストLBAがそのデータを指示することを示すように、そのデータのメタデータを効果的に変更する方法が存在しないため、無意識コピーの不要データ収集アルゴリズムは、次の機会に物理的データを解放する。
SSD内での改善されたコピーオンライトの機能性のための技術が開示されている。幾つかの実施形態において、PCIeデバイスのメモリ内に間接参照データ構造を提供することを含む、SSD内での改善されたコピーオンライトの機能性を提供するための方法としての技術が実現され得る。データ構造はクローンデータの元データ又はソースコピーに対するマスターエントリーを含み得る。マスターエントリーは、マスターインデックスへの参照と、次のインデックスへの参照、クローンデータに対するクローンエントリーとを有し、クローンエントリーはマスターインデックスへの参照と、次のインデックスへの参照とを有する。この技術は、コンピュータプロセッサを用いて、1つ以上の参照を使用し、クローンデータの1つ以上のコピーを横断すること(traversing)を含み得る。
この例示的実施形態の追加的な態様に従って、ホストデバイスは、エンタープライズサーバー、データベースサーバー、ワークステーションのうちの少なくとも1つ、及びコンピュータを含み得る。
この例示的実施形態の追加的な態様に従って、間接参照データ構造は複数の物理的アドレスを含み得る。
この例示的実施形態の更なる態様に従って、間接参照データ構造は環状にリンクされたリストの部分であってもよく、そこでクローンデータ用のマスターエントリーは、マスターインデックスへの参照と、次のインデックスへの参照を含む。
この例示的実施形態のその他の態様に従って、間接参照データ構造は環状にリンクされたリストの部分であってもよく、そこでクローンデータ用のクローンエントリーは、マスターインデックスへの参照と、次のインデックスへの参照を含む。
この例示的実施形態の追加的な態様に従って、間接参照データ構造はシングルエンドでリンクされたリストの部分であってもよく、そこでインデックスへのエントリーは、このインデックスがマスターインデックスであるという表示を提供する。
この例示的実施形態の更なる態様に従って、参照は論理ブロックアドレッシング用のフラット間接参照テーブルへのエントリーを含み得る。
この例示的実施形態の別の態様に従って、参照は論理ブロックアドレッシング用のツリーデータ構造へのエントリーを含み得る。
この例示的実施形態の追加的な態様に従って、改善されたコピーオンライトの機能性は、改善された名前空間でのコピー機能性を含み得る。
この例示的実施形態の更なる態様に従って、本技術は1つ以上のパックされた論理ブロックが複製されていることを示すため、1つ以上のパックされた論理ブロックに対するインジケータをセットすることを含み得る。
この例示的実施形態の別の態様に従って、マスターエントリーのマスターインデックスは、マスターエントリーを指し示し得る。
この例示的実施形態の追加的な態様に従って、クローンエントリーのマスターインデックスは、マスターエントリーを指し示し得る。
この例示的実施形態の更なる態様に従って、データ構造への最後のクローンエントリーの次のインデックスは、マスターエントリーを指し示し得る。
この例示的実施形態の別の態様に従って、本技術は、クローンデータに対するクローンエントリーが、クローンエントリーのみであることを決定するステップを含み得るが、この決定は、クローンエントリーの次のインデックスがクローンエントリーのマスターインデックスにマッチすることを決定するステップと、マスターエントリーの次のインデックスがクローンエントリーを指し示すことを決定するステップと、パックされた論理ブロックを示す間接参照エントリーへの、クローンエントリーの次のインデックスをセットすること、及びパックされた論理ブロックを示す間接参照エントリーへの、マスターインデックスのエントリーをセットすることにより、クローンデータのクローンエントリーをクローニング不可にするステップと、オリジナルのマスターエントリーの、第一のパックされた論理ブロックを示す、第一の間接参照エントリーへの、マスターエントリーの次のインデックスをセットすること、及びオリジナルのマスターエントリーの、第二のパックされた論理ブロックを示す第二の間接参照エントリーへの、マスターエントリーのマスターインデックスをセットすることにより、クローンデータのマスターエントリーをクローニング不可にするステップとを含む。
この例示的実施形態の追加的な態様に従って、本技術は、クローンデータに対するクローンエントリーが複数のクローンエントリーの1つであることを決定するステップを含み得るが、この決定は、クローンエントリーの次のインデックスが、クローンエントリーのマスターインデックスとマッチしないこと、及びマスターエントリーの次のインデックスがクローンエントリーを指し示さず、そして前のエントリーの次のインデックスが、クローンエントリーの次のインデックスによって示されたエントリーを指し示すように設定することにより、クローンデータのクローンエントリーを、クローニング不可にすることの内の少なくとも1つを決定するステップを含む。
この例示的実施形態の更なる態様に従って、本技術は、不要データ収集プロセスの間にエントリーをレビューするステップと、そのエントリーが複製されたインジケータを含むことを決定するステップと、そのエントリーが複製されたインジケータを含むという決定に基づいて、不要データ収集プロセスへのエントリーが、削除されるべきでない有効なエントリーであることを決定するステップとを含み得る。
その他の実施形態において、本技術はコンピュータ上で実行可能な一連の命令から成る、コンピュータプログラム製品として実現され得る。このコンピュータプログラム製品は、SSD内において改善されたコピーオンライトの機能性を提供するためのプロセスを実行し得る。このコンピュータプログラムは、1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、クローンデータに対するクローンエントリーとを含む間接参照データ構造を、デバイスのメモリ内に提供するステップと、コンピュータプロセッサを用いて、1つ以上の参照を使用し、クローンデータの1つ以上のコピーを横断するステップとを実施し得る。
更に別の実施形態において、本技術はSSD内において改善されたコピーオンライトの機能性を提供するためのシステムとして実現され得る。このシステムは、第一のデバイスを含み得るが、そこで第一のデバイスはメモリ内に記憶されている、格納された命令を含む。この命令は、1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、クローンデータに対するクローンエントリーとを含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令、及びコンピュータプロセッサを用いて、1つ以上の参照を使用し、クローンデータの1つ以上のコピーを横断することを含み得る。
この例示的実施形態の追加的な態様に従って、間接参照データ構造は複数の物理的アドレスを含み得る。
この例示的実施形態の更なる態様に従って、間接参照データ構造は環状にリンクされたリストの部分であってもよく、そこでクローンデータに対するマスターエントリーは、マスターインデックスへの参照及び次のインデックスへの参照を含む。
この例示的実施形態の別の態様に従って、間接参照データ構造は環状にリンクされたリストの部分であってもよく、そこでクローンデータに対するクローンエントリーは、マスターインデックスへの参照及び次のインデックスへの参照を含む。
この例示的実施形態の追加的な態様に従って、間接参照データ構造はシングルエンドでリンクされたリストの部分であってもよく、そこで或るインデックスへのエントリーは該インデックスがマスターインデックスであるという指示を提供する。
この例示的実施形態の更なる態様に従って、参照は論理ブロックアドレッシング用のフラット間接参照テーブルへのエントリーを含み得る。
この例示的実施形態の別の態様に従って、第一のデバイスは周辺装置相互接続エクスプレス(Peripheral Component Interconnect Express(PCIe))デバイスを含み得る。
この例示的実施形態の追加的な態様に従って、本技術は1つ以上のパックされた論理ブロックが複製されることを示すために、1つ以上のパックされた論理ブロックに対するインジケータをセットする命令を、更に含み得る。
この例示的実施形態の更なる態様に従って、マスターエントリーのマスターインデックス及びクローンエントリーのマスターインデックスは、マスターエントリーを指し示し得る。そしてデータ構造における最後のクローンエントリーの次のインデックスは、マスターエントリーを指し示す。
この例示的実施形態の追加的な態様に従って、対象デバイス(例えば、PCIeデバイス)は、図形処理ユニット、オーディオ/ビデオキャプチャーカード、ハードディスク、ホストバスアダプター、及び不揮発性メモリエクスプレス(Non−Volatile Memory express(NVMe))コントローラの内の少なくとも1つを含み得る。幾つかの実施形態において、対象デバイスはNVMeに適合するデバイスであり得る。
本開示は、添付図に示されるような例示的実施形態に関して、ここでより詳細に記述されるであろう。本開示が、例示的実施形態に関して以下で記述される一方で、本開示はそれに限定されないことを理解されたい。本明細書の教示に接する当業者は、ここに記述されている本開示の範囲内で、そして本開示がかなりの効用であり得るものに関して、追加的な実施、変更、実施形態、並びに他の使用領域を認識するであろう。
本開示のより完全な理解を容易にするため、ここで添付図に対する言及がなされ、その中で同様の要素は同様の番号で言及される。これらの図は本開示を限定すると解釈されるべきではなく、例示的となることのみが意図されている。
本開示の実施形態による、ホストデバイスと連通している複数のPCIeデバイスを図示する例示的ブロック線図を示す。 本開示の実施形態による、クローニング不可のパックされた論理ブロックを表わすデータ構造を表わす。 本開示の実施形態による、マスター及びクローン間接参照データ構造のエントリーを示すテーブルを表わす。 本開示の実施形態による、SSD内での改善されたコピーオンライトの機能性のための例示的モジュールを表わす。 本開示の実施形態による、SSD内での改善されたコピーオンライトの機能性を説明するフローチャートを表わす。 本開示の実施形態による、マスターC−チャンクデータ構造エントリーフォーマットの、データ構造を表わす。 本開示の実施形態による、クローンC−チャンクデータ構造エントリーフォーマットの、データ構造を表わす。
本開示は改善されたコピーオンライトの機能性に関する。幾つかの実施形態において、このコピーオンライトの機能性は名前空間のコピーを含み得る。NVMe SSD PCIeホストインターフェースは、SASレイド(独立した複数のディスクからなる冗長配列)(SAS RAID(Redundant Array of Independent Disks))アダプターによってサポートされる、論理ボリュームに類似した名前空間の概念を定義する。名前空間は仮想マシン(Virtual Machine(VM))の専用であり得る。SSD内において、複数の名前空間は相互に論理的に分離され、そして確実に消去されることができ、そして他の名前空間に影響を与えることなく別の目的のために再利用され得る。
名前空間の識別子は、その名前空間内のLBAと共に、ホストによって出されるメディアアクセス指令の中に含まれ得る。SSDは、名前空間とLBAの組合せを、SSDに対して内部的に用いられるグローバルLBAへと変換するために、データ構造(例えば、テーブルルックアップ、ツリー、ハッシュマップ、ビットマップ等)を用い得る。幾つかの実施形態において、LBAへの言及はこのグローバルLBAに言及し得る。
本開示の実施形態は、SSDにおいてデータの重複を避ける、効率的な「名前空間コピー」機能を実施するためのシステム及び方法を説明する。これはSSD内で発生するライトアンプリフィケーションを低減し、それはSSDの寿命を延ばし、一方でより高い性能を提供する。
名前空間コピーは、「コピーオンライト」機能性の一形態である。コピー機能において、媒体上での1回のコピーを指し示すポインターが生成される。媒体上での新たなコピーが1回の書込みで生成され、更新される。名前空間コピー機能は、SSDにおける「コピーオンライト」の効率的な実施を必要とする。本開示の実施形態は名前空間コピーに適用できる。本開示の実施形態は、SSD用の別の「コピーオンライト」実施にも適用可能である。例えば、「スナップショットコピーが名前空間の一瞬のイメージを作り出すために用いられることができ、本実施形態の実施はスナップショットコピーを追跡するために用いられ得る。
本開示の実施形態は、SSD間接参照システム(例えば、フラットLBAテーブル)、又は同じ物理的位置を指し示す多重のエントリーを含むための方法を提供する。そのような実施は、多重参照が存在するとき、効率的な不要データ収集を可能にし得る。多重参照の追跡、又は多重ポインターの取り扱い(例えば、NANDフラッシュデータに対する)は、不要データの収集を改善し得る。不要データ収集は、データ用のホストLBAを含む、不揮発性の記憶装置(例えば、NANDフラッシュメモリ、NORフラッシュメモリ等)におけるメタデータを用いて実行され得る。不要データ収集のアルゴリズムは、データ構造が依然として該物理的位置を指し示しているかどうかを見るために、間接参照データ構造(例えば、テーブル、ツリー、ハッシュマップ、ビットマップ等)内のそれらのLBAを探索することにより、どのホストセクターが依然として有効であるかを決定し得る。もし示さなければ、該アルゴリズムはそのブロックを解放する。
ここに記述されている1つ以上の実施形態は、1つ以上の重複したホストLBAを追跡する、単一のフラッグ及び代替の間接参照エントリーフォーマットを用いて、重複した間接参照エントリーの効率的な表現を提供する。1つ以上の実施形態は、同じ物理的アドレスを指し示す多重の論理ブロックアドレスを追跡するための、フラット間接参照ルックアップデータ構造を用い得る。重複したLBSを追跡するための、ハッシュマップ、ツリー、又は合成に基づくシステムを用いて、別の実施形態が実施され得る。
SSD技術の中での改善されたコピーオンライト機能性は、以下でより詳細に議論される。
図に戻ると、図1は本開示の実施形態による、ホストデバイスと連通しているPCIeデバイスを図示する例示的ブロック線図である。コピーオンライトの機能性改善は、ホストシステム102、ホストCPU104、及びPCI Express Root Complex(PCIエクスプレスルートコンプレックス)106のような、1つ以上の演算技術において実施され得る。PCIエクスプレススイッチ108は、対象110、116及び122のような複数の対象(例えば、NVMeに基づく対象のようなPCIeデバイス)を、PCI Express Root Complex106を介してホストシステム102と通信可能に連結し得る。
対象110は、NVMeコントローラ112及び不揮発性の記憶装置114を含み得る。対象116は、NVMeコントローラ118及び不揮発性の記憶装置120を含み得る。対象122は、NVMeコントローラ124及び不揮発性の記憶装置126を含み得る。
システムメモリ128は、メモリインターフェース(例えば、ダブルデータレート型スリーシンクロナスダイナミックランダムアクセスメモリ(double data rate type three synchronous dynamic random access memory(DDR3 SDRAM)))を介してホストシステム102にアクセス可能な、メモリベースのリソースを含み得る。システムメモリ128は、半導体メモリ(例えば、フラッシュメモリ、半導体デバイス(SSD))、光メモリ、及び磁気メモリのような、しかしそれに限定されない、あらゆる適切な形態をとることが可能である。システムメモリ128は、揮発性又は不揮発性であってもよい。システムメモリ128は1つ以上のデータ構造を含み得る。
幾つかの実施形態において、PCIe以外のインターフェース規格は、Serial Advanced Technology Attachment(SATA)、Advanced Technology Attachment(ATA)、Small Computer System Interface(SCSI)、PCI−extended(PCI−X)、Fibre Channel、Serial Attached SCSI(SAS)、Secure Digital(SD)、Embedded Multi−Media Card(EMMC)、及びUniversal Flash Storage(UFS)を含む、しかしそれらには限定されない1つ以上の部分に対して用いられ得る。
ホストシステム102は、エンタープライズサーバー、データベースホスト、ワークステーション、パーソナルコンピュータ、携帯電話機、ゲーム装置、携帯情報端末(PDA:個人用デジタル補助装置)、電子メール/テキストメッセージング装置、デジタルカメラ、デジタルメディア(例えばMP3)プレイヤー、GPSナビゲーション装置、及びTVシステムのような、しかしそれに限定されない、あらゆる適切な形態をとることが可能である。
ホストシステム102及び対象デバイスは、図を単純化するため、図1に示されていない追加の構成要素を含む事ができる。また、幾つかの実施形態においては、示されている構成要素全てが存在するわけではない。更に、様々なコントローラ、ブロック、及びインターフェースは任意の適切なやり方で実施され得る。例えば、コントローラは、1つ以上のマイクロプロセッサ又はプロセッサ、及び例として(マイクロ)プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブルロジックコントローラ、及び埋め込まれたマイクロコントローラによって実行できる、コンピュータが読取可能なプログラムコード(例えば、ソフトウェア又はファームウェア)を格納する、コンピュータが読取可能な媒体の形態をとることができる。
図2を参照すると、本開示の実施形態による、クローニング不可のパックされた論理ブロックを表わすデータ構造が示されている。8つある、4KBのパックされた論理ブロックのエントリーがこの実施形態において示されている。これらのクローニング不可のパックされた論理ブロック(Packed Logical Blocks(PLBs))は、論理ブロックアドレス(Logical Block Addresses(LBAs))を物理的アドレスにマッピングし得る。図示されているように、LBAs0〜7は物理的アドレスブロック(Physical Address Block)0に、LBAs8〜15は物理的アドレスブロック1に、LBAs16〜23は物理的アドレスブロック2に、LBAs24〜31は物理的アドレスブロック3に、LBAs32〜39は物理的アドレスブロック4に、LBAs40〜47は物理的アドレスブロック5に、LBAs48〜55は物理的アドレスブロック6に、そしてLBAs56〜63は物理的アドレスブロック7にマッピングされ得る。
図3は本開示の実施形態による、マスター及びクローン間接参照データ構造のエントリーを示すテーブルを表わす。図3に関して説明されているように、幾つかの実施形態において、コピーオンライトの改善はフラット間接参照システムにおいて実施され得る。PLBは、ルックアップデータ構造(例えば、フラット間接参照ルックアップテーブル)における「パックされた論理ブロック」であり得る。クローニング操作に関わる8つの連続した8−PLB−整列PLBsのセットは、「C−チャンク」と称され得る。媒体上のそのデータがC−チャンクに適しているPLBでタグ付けされるC−チャンク(すなわち原本)は、「マスターC−チャンク」と呼ばれ得る。C−チャンク内の全てのPLBに対する間接参照データ構造のエントリーは、単一の「C−エントリー」を形成するように、一緒にグループにされ得る。そのデータが媒体上に存在するC−チャンクに対応するC−エントリーは、マスターC−エントリーと呼ばれ得る。マスターLBAの範囲のコピーであるLBAの範囲を記述するC−エントリーは、クローンC−エントリーと称され得る。1つ以上のSSDは、4KBのカスタマーデータ+メタデータ(例えば、8×512Bのセクター)を追跡するためのPLBを定義し得る。以下で議論される実施形態において、PLBは単にテーブルへのエントリーであり得る。間接参照データ構造のエントリーは、コピーオンライトを容易にするために(例えば、1ビット分)拡張され得る。追加のビットは、このPLBが原本として作用する他のPLBが存在するか、又はこれが、その原本とする他のPLBを有するクローンであるかを示すための、1に設定され得る「クローントラッキング」ビットであり得る。クローントラッキングビットのセットを伴う間接参照データ構造のエントリーの残りのビットは、NANDメモリアドレスを含み得るか、或いは含み得ない(例えば、そのビットのセット無しでのエントリーのように)。「クローントラッキング=1」に対する代わりのデータ構造は、一般的なPLBエントリーよりも粗い粒度でトラッキングされ、クローンエントリーのリンクされたリストを作るための領域、及びマスターエントリーに対するポインターを含む。これらの追加領域のためのスペースは、クローニング不可の間接参照エントリーよりも(例えば2倍)大きいLBAのチャンクを記述するために、単一のC−エントリーを用いることにより得られうる。クローンデータが個々のホストLBAではなく、大きな仕切り又はファイルセットを含む傾向があるため、このトレードオフは、理に適っている。
個々のホストLBAの物理的アドレスは、追加のルックアップが幾つかのLBAのために必要になるように分配される。これは各々のマスターエントリー及びクローンエントリーにおいて、マスター及びクローンのポインターを含むための余地を作り得る。しかしながら、物理的アドレスに着くためのDRAMアクセスの数は、大幅には増加しない。図3に示されるように、マスターC−エントリーは、全ての物理的アドレス8〜15に対してマッピングされたLBAを含み得るが、しかし物理的アドレス8〜11、14及び15に対する実際のマッピングのみを含む(物理的アドレス12及び13に対するマッピングは、クローンC−エントリーから得られうる)。図3のクローンC−エントリーにおいて示されるように、マッピングは物理的アドレス8〜13に対応するLBAのために提供され得る。マスターC−エントリーにおいてマッピングされない2つの物理的ブロック(物理的アドレス12及び13)は、マスターインデックス及び次のインデックスのためのスペースを提供する。クローンC−エントリーにおいてマッピングされない2つの物理的ブロック(物理的アドレス14及び15)は、マスターインデックス及び次のインデックスのためのスペースを提供する。マスターC−エントリーにおけるマスターインデックスは常に自身を指し示す。クローンC−エントリーにおけるマスターインデックスは常にマスターC−エントリーを指し示す。マスターC−エントリーの次のインデックスは、チェーン内の最初のクローンC−エントリーを指し示す。クローンC−エントリーの次のインデックスは、1つ以上のクローンC−エントリーが存在する場合、次のクローンC−エントリーを指し示す。1つだけのクローンC−エントリーが存在する場合、又はそれが最後のクローンC−エントリーである場合、次のインデックスはマスターC−インデックスに戻って指し示し得る(又は、それは例えばゼロポインターのような、リストの最後を示す特別な値を指し示し得る)。これは、マスターC−エントリーと1つ以上のクローンC−エントリーとの横断を可能にし得る。
フラット間接参照データ構造を有する実施形態において、PLB(physical location block:物理的位置ブロック)は、単一のルックアップテーブル内の物理的NANDメモリアドレスを含む、個々のエントリーを参照する。一般的なPLBの粒度は、単一のデータ構造のエントリーに対して4KB(例えば、8×512Bのセクター)を割り当てる。一例として、8つのPLBのクローンチャンクサイズを考えよう−−クローニングされた範囲への、純粋にランダムな単一セクターのアクセスに対して必要とされるDRAMアクセスの平均的な数は1.25である。この数字はより大きなクローンチャンクのサイズと共により小さくなる可能性があり、それはより粗くなる粒度のクローン境界と、PLBのチャンクを「クローニング不可にする」ために必要とされるより多くのNANDアクセスとの相反関係を伴う。
ホストの読取りPLBのルックアップがクローンエントリーを指し示す場合、SSDは1)物理的アドレスと、2)データが書き込まれた時に使われたLBAとを必要とする。物理的アドレスはマスターエントリー及びクローンエントリーの間に分布しており、対象とされるLBAが2回目のDRAM読取りを要する確率を下げるため、重複データを有する全ての得られたPLBエントリーを任意選択的に保管する。#2に関して、マスターのLBAは、各々のクローンエントリーにおけるマスターポインターに基づき計算され得る−−これは計画的に、追加のDRAMアクセスを必要とせず、このマスターポインターは(次のクローンポインターと共に)オリジナルのPLBルックアップから隠され得る。
幾つかの実施形態において、現存する間接参照データ構造内に追加の情報を組み込むため、クローニングはPLBのサイズの数倍に過ぎない粒度で追跡され得る。幾つかの実施形態において、粒度は与えられたLBAに対応するC−チャンクのインデックスの効率的な計算を可能にするため、PLBサイズの2のべき乗として選ばれ得る。一例として、乗数は8であっても良いが、より大きなクローニングの粒度が用いられ得る。クローニングは(全体の名前空間のように)一度に大きなLBAの範囲を複製することを含み得る。従って、より大きな粒度を用いるペナルティは最小化され得る。
幾つかの実施形態において、間接参照データ構造は、同じデータを参照する1つ以上のC−チャンクの環状にリンクされたリストを、その中に埋め込んでいてもよい。別の実施形態において、他の形態のリンクされたリスト(例えば、シングルエンドでリンクされたリスト)が用いられ得る。C−チャンクのデータを記述している物理的アドレスは、そのC−チャンクリストに対する複数の間接参照エントリーの間で広げられ得る。
そのデータが物理的に媒体上に存在し、C−チャンクに適しているPLBでタグ付けされるC−チャンク(すなわち原本)は、「マスターC−チャンク」と呼ばれ得る。媒体上にコピーを格納せずに、同じデータを現在参照する別のC−チャンクは、「クローンC−チャンク」と呼ばれ得る。
C−チャンクにおける全てのPLBに対する間接参照データ構造のエントリーは、単一の「C−エントリー」を形成するため一緒にグループ化される。マスターC−チャンクに関して、C−エントリーは図6Aに示されるフォーマットであり得る。示されているように、マスターC−チャンクは、物理的アドレス6及び7がその後に続く、物理的アドレス0〜3(範囲内の最初の4つの物理的アドレス)を含み得る。欠けている2つの物理的アドレスは、クローンC−エントリー内にマッピングされ得る。そして2つの別のスロットが、マスターインデックス及び次のインデックスを提供するために用いられ得る。示されているように、「クローントラッキング」インジケータは1に設定され得る。これは、C−エントリーが無視されるべき、不要なデータ収集プロセスを示し得る。
クローンC−チャンクに関して、C−エントリーは図6Bに示されるフォーマットであり得る。示されているように、物理的アドレス0〜5がマッピングされ得るが、物理的アドレス6及び7は欠け得る。欠けている2つの物理的アドレスは、マスターC−エントリー内にマッピングされ得る。そして2つの別のスロットが、マスターインデックス及び次のインデックスを提供するために用いられ得る。示されているように、「クローントラッキング」インジケータは1に設定され得る。これは、C−エントリーが無視されるべき、不要なデータ収集プロセスを示し得る。
1つ以上の実施形態において、NANDアドレスはマスターC−チャンクのi番目のPLB用NANDアドレスであり得る(i=0は最初のPLBを表わす)。マスターインデックスは、マスターC−エントリー(それは8つのPLBエントリーのスペースを消費するため、8で割られる)の間接参照データ構造インデックスであり得る。次のインデックスは、同じデータ(それは8つのPLBエントリーのスペースを消費するため、8で割られる)を指し示す次のクローンC−エントリー用の間接参照データ構造インデックスであり得る。それ以外に表わすべきクローンC−エントリーが存在しない場合、この次のインデックスはマスターC−インデックスに戻って指し示し得る。幾つかの実施形態において、この次のインデックスはリストの終了を示す値を指し示し得る(例えばゼロポインター)。
幾つかの実施形態において、C−チャンクがマスターエントリーであるかどうかを決定するため、1つ以上のテストが用いられ得る。例えば、C−チャンクは、そのC−エントリーのマスターインデックスが、そのC−エントリー自体を指し示す場合、そしてその場合だけマスターであり得る。
マスターインデックス及び次のインデックスを介する、マスターC−エントリーとクローンC−エントリーとの間の関係は、次の動作のうち1つ以上が効率的に行われることを可能にし得る。
8つの連続した8−PLB−整列PLBの一組を複製するために、1つ以上の方法が用いられ得る。例えば、1つ以上の実施形態において、PLBの一組を複製することは、以下を含み得る。
1.マスターC−エントリー及びクローンC−エントリーを作り出すとき、参照すべき原本のPLBに対する8つのNANDアドレスを読み取ること。
2.8つのオリジナルPLBの間接参照エントリーの代わりに、マスターC−エントリーを作り出すこと。
次のインデックスは新たなクローンC−エントリーを指し示し得る。
3.現在クローンとして作用するであろう8つのPLBの間接参照エントリーの代わりに、クローンC−エントリーを作り出すこと。
次のインデックスは新たなマスターC−エントリーを指し示し得る。
1つのC−チャンクを新たなC−チャンクへと複製するために、1つ以上の方法が用いられ得る。例えば、1つ以上の実施形態において、1つのC−チャンクを新たなC−チャンクへと複製することは、以下を含み得る。
1.ソースC−チャンクがマスターである場合、クローンC−エントリーを見出すためにソースC−エントリーの次のインデックスをフォローし、それを新たなC−エントリーの位置にコピーすること。ソースC−チャンクがマスターでない場合、そのソースC−エントリーを新たなC−エントリーの位置にコピーすること。
2.新たなC−エントリーの次のインデックスを、マスターC−エントリーの現在の次のインデックスを用いて更新すること。
3.新たなC−エントリーを指し示すために、マスターC−エントリーの次のインデックスを更新すること。
その間接参照エントリーがクローントラッキングビットのセットを有するPLBに対して、読取りルックアップを行なうために、1つ以上の方法が用いられ得る。例えば、1つ以上の実施形態において、間接参照ビットのセットを用いて読取りルックアップを行なうことは、以下を含み得る。
1.このPLBの間接参照エントリーを含むC−エントリーを見ること。このC−エントリーがマスターC−エントリーか否かを決定すること。その決定に基づき、所望のマスターPLBに対するNANDアドレスが、このC−エントリー内に格納されているかどうかを更に決定すること。
2.NANDアドレスが最初のC−エントリーの読取り内に格納されている場合、そのNANDアドレス及びマスターインデックスは戻され得る。マスターインデックスは、何ら追加の間接参照ルックアップを実行することなく、データがどのPLB番号でタグ付けされるかを決定するために用いられ得る。
3.NANDアドレスが最初のC−エントリーの読取り内に格納されておらず、最初のC−エントリーの読取りがマスターC−エントリーである場合、次のインデックスは、必要とされるNANDアドレスを含むクローンC−エントリーを見出すためにフォローされ得る。そのNANDアドレス及びマスターインデックスは戻され得る。
4.NANDアドレスがC−エントリーの読取り内に格納されておらず、それがクローンC−エントリーである場合、マスターインデックスは、必要とされるNANDアドレスを含むマスターC−エントリーを見出すためにフォローされ得る。そのNANDアドレス及びマスターインデックスは戻され得る。
クローンC−チャンクを「クローニング不可にする」ため、1つ以上の技術が用いられ得る。例えば、幾つかの実施形態において、該技術は以下を含み得る。
1.ただ1つだけのクローンが存在するかどうかを決定すること。例えば、対象のC−エントリーの次のインデックスがそのマスターインデックスとマッチし、そのマスターC−エントリーの次のインデックスが対象のC−エントリーを指し示す場合は、ただ1つだけのクローンが存在する。マスター及びクローンの双方に対して、C−エントリーを調べ、それらのPLBに対して「正常な」間接参照エントリーで、マスターC−エントリーを上書きすること。
2.対象のC−エントリーの次のインデックスが、そのマスターインデックスとマッチしない場合、又はそのマスターC−エントリーの次のインデックスが対象のC−エントリーを指し示さない場合は、別のクローンが存在する。このC−エントリーを、その循環リストから取り除くこと。
3.いずれの場合でも、マスターC−チャンクに関するデータを読み取り、それをクローンC−チャンクにコピーすること、及び新たなコピーのNANDアドレスを示す正常な間接参照エントリーで、クローンC−エントリーを上書きすること。
マスターC−チャンクを「クローニング不可にする」ため、1つ以上の技術が用いられ得る。例えば、幾つかの実施形態において、該技術は以下を含み得る。
1.マスターC−エントリー及び最初のクローンC−エントリーを読み取ること。
2.マスターC−チャンク用の記憶媒体からデータを読み取ること、及びそれを新たな記憶媒体の位置に書き込むことにより、最初のクローンC−チャンクのPLBにコピーすること、そしてホストのLBAメタデータを対応するクローンC−チャンクと関連付けること。
3.その最初のクローンが唯一のクローンである(すなわち、その次のインデックスがマスターに戻って指し示す)場合、今しがた作り出したコピーに対するNANDアドレスを指し示す正常な間接参照エントリーで、最初のクローンC−エントリーを上書きすること。オリジナルのマスターC−チャンクのPLBを指し示す正常な間接参照エントリーで、マスターC−エントリーを上書きすること。
4.その最初のクローンが唯一のクローンではない場合、マスターを環状にリンクされたリストから取り除くこと。今しがた作り出したコピーに対する新たなマスターC−エントリーで、最初のクローンC−エントリーを上書きすること。今しがた作り出したコピーに対する新たなクローンC−エントリーで、別のクローンC−エントリーを上書きすること。これは、古いマスターC−エントリーの最初のクローンC−エントリーが、それ自体及び残りのクローンC−エントリーに対する、新たなマスターC−エントリーになることを推進し得る。
間接参照の更新が、クローントラッキングビットのセットを有する対象PLBにとって必要であるとき、本技術はアトミックに以下を含み得る。
1.PLBのC−チャンクをクローニング不可にすること。
2.正常に間接参照の更新を実行すること。
不要データ収集は、不要データ収集のアルゴリズムが、間接参照システムにおけるクローントラッキングビットでそのPLBがマーキングされる、如何なる物理的データに関するデータも決して捨てないように実施され得る。すなわち、不要データ収集のアルゴリズムは、クローントラッキングビットでマーキングされた全てのPLBが、消去よりもむしろ再配置を要する「有効な」データとして見なし得る。
1つ以上の実施形態において、システム内に存在するC−チャンクを追跡するために、小さな計数ブルームフィルタがSRAM内に格納され得る。書込みの際、PLBがC−チャンクの部分である可能性がない事をブルームフィルタが示す場合、現在のデータ構造のエントリーを最初に読み取ることなく、間接参照システムの直接的な更新が安全に実行され得る。クローンは大きな連続的領域になりがちであるため、ブルームフィルタに用いられるハッシュ関数は、ランダム関数よりもむしろ:
f(C−エントリーインデックス)=C−エントリーインデックス/フィルタサイズ(f(C−Entry Index)=C−Entry Index/Filter Size)のようなものであってもよい。
図4は、本開示の実施形態による、SSD内での改善されたコピーオンライトの機能性のための例示的モジュールを表わす。図4に示されるように、コピーオンライトモジュール410は、間接参照生成モジュール412、間接参照管理モジュール414、及びエラー処理モジュール416を含み得る。
間接参照生成モジュール412は、コピーオンライトでのコピーをトラッキングするための、1つ以上のデータ構造を生成し得る。PLBは単にテーブルへのエントリーであり得る。間接参照データ構造のエントリーは、コピーオンライトを容易にするために(例えば、1ビット分)拡張され得る。追加のビットは、このPLBが原本として作用する他のPLBが存在するか、又はこれが、その原本として他のPLBを有するクローンであるかを示すための、1に設定され得る「クローントラッキング」ビットであり得る。クローントラッキングビットのセットを伴う間接参照データ構造のエントリーの残りのビットは、NANDメモリアドレスを含み得るか、或いは含み得ない(例えば、そのビットのセット無しでのエントリーのように)。「クローントラッキング=1」に対する代わりのデータ構造は、クローンエントリーのリンクされたリストを作るための領域、及びマスターエントリーに対するポインターを含む。これらの追加領域のためのスペースは、クローニング不可の間接参照エントリーよりも(例えば2倍)大きいLBAのチャンクを記述するために、単一のエントリーを用いることにより得られる。
間接参照管理モジュール414は、間接参照データ構造を用いて1つ以上の動作を実行し得る。間接参照管理モジュール414は、データの複製、複製されたデータと複製されないデータの読取りを容易にし得る。そして図3に関連して上記で議論されたような方法の1つ以上を用いて、安全で効率的な不要データ収集を容易にする。
エラー処理モジュール416は、複製されたデータの管理に関連する1つ以上のエラーを捕捉し、記録し、報告し、及び/又は処理し得る。
図5は、本開示の実施形態による、SSD内での改善されたコピーオンライトの機能性を説明するフローチャートを表わす。しかしながら、プロセス500は例示的のみである。プロセス500は、例えばステージが追加、変更、除去、又は再編成されることにより、変更され得る。ステージ502において、プロセスが始まり得る。
ステージ504において、マスターC−エントリーが生成され得る。そのデータが物理的に媒体上に存在し、C−チャンクに適しているPLBでタグ付けされるC−チャンク(すなわち原本)は、「マスターC−チャンク」と呼ばれ得る。媒体上にコピーを格納せずに、同じデータを現在参照する別のC−チャンクは、「クローンC−チャンク」と呼ばれ得る。
C−チャンクにおける全てのPLBに対する間接参照データ構造のエントリーは、単一の「C−エントリー」を形成するため一緒にグループ化される。マスターC−チャンクに関して、C−エントリーは図6Aに示されるフォーマットであり得る。
ステージ506において、クローンC−エントリーが生成され得る。クローンC−チャンクに関して、C−エントリーは図6Bに示されるフォーマットであり得る。
1つ以上の実施形態において、NANDアドレスはマスターC−チャンクのi番目のPLB用NANDアドレスであり得る(i=0は最初のPLBを表わす)。
ステージ508において、マスターインデックスを示すために或るブロックが割り当てられ得る。マスターインデックスは、マスターC−エントリー(それは8つのPLBエントリーのスペースを消費するため、8で割られる)の間接参照データ構造インデックスであり得る。マスターC−エントリー及びクローンC−エントリーの双方のマスターインデックスは、マスターC−エントリーを指し示し得る。
ステージ510において、次のインデックスを示すために或るブロックが割り当てられ得る。次のインデックスは、同じデータ(それは8つのPLBエントリーのスペースを消費するため、8で割られる)を指し示す次のクローンC−エントリー用の間接参照データ構造インデックスであり得る。それ以外に表わすべきクローンC−エントリーが存在しない場合、この次のインデックスはマスターC−インデックスに戻って指し示し得る。
幾つかの実施形態において、C−チャンクがマスターエントリーであるかどうかを決定するため、1つ以上のテストが用いられ得る。例えば、C−チャンクは、そのC−エントリーのマスターインデックスが、そのC−エントリー自体を指し示す場合、そしてその場合だけマスターであり得る。
ステージ512において、方法500は終了し得る。
その他の実施形態は、本発明の範囲及び主旨の中にある。例えば、上述の機能性はソフトウェア、ハードウェア、ファームウェア、配線、或いはこれらの任意の組合せを用いて実施され得る。命令に従って動作する1つ以上のコンピュータプロセッサは、上述の本開示に従って改善されたコピーオンライトの機能性と関連する機能を、SSD内で実施し得る。その場合には、そのような命令が1つ以上の非一時的な、プロセッサで読取り可能な記憶媒体(例えば、磁気ディスク又は他の記憶媒体)上に記憶され得ることは、本開示の範囲内である。更に、機能を実施するモジュールもまた、機能の部分が様々な物理的位置において実施されるように分配されることを含め、様々な場所に物理的に位置し得る。
本開示は、ここに記述されている特定の実施形態による範囲に限定されるべきではない。実際、本明細書に記述されているものに加えて、本開示の様々な別の実施形態及び本開示に対する様々な変更は、前述の説明及び付図から、当業者にとって明らかであろう。それ故に、そのような別の実施形態及び変更は、本開示の範囲内に入るよう意図されている。更に、本開示は特定の目的のための特定の環境において、特定の実施との関連で本明細書に記述されているが、当業者は、その有用性がその事に限定されず、そして本開示が幾つもの目的のために、幾つもの環境において有益に実施され得ることを認識するであろう。従って、以下で述べられる請求項は、本明細書に記述されている本開示の最大限の広さと意図を考慮して解釈されるべきである。
102 ホストシステム
104 ホストCPU
106 PCIエクスプレスルートコンプレックス
108 PCIエクスプレススイッチ
110 対象
112 NVMeコントローラ
114 不揮発性の記憶装置
116 対象
118 NVMeコントローラ
120 不揮発性の記憶装置
122 対象
124 NVMeコントローラ
126 不揮発性の記憶装置
128 システムメモリ
410 コピーオンライトモジュール
412 間接参照生成モジュール
414 間接参照管理モジュール
416 エラー処理モジュール
500 プロセス
502 ステージ
504 ステージ
506 ステージ
508 ステージ
510 ステージ
512 ステージ

Claims (25)

  1. 改善されたコピーオンライトの機能性をSSD内において提供する方法であって、
    1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
    マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
    を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
    コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータの1つ以上のコピーを横断するステップと
    を含む方法。
  2. 前記間接参照データ構造が複数の物理的アドレスを含む、請求項1に記載の方法。
  3. 前記間接参照データ構造が環状にリンクされたリストの部分であり、クローンデータに対する前記マスターエントリーが、マスターインデックスに対する参照及び次のインデックスに対する参照を含む、請求項1に記載の方法。
  4. 前記間接参照データ構造が環状にリンクされたリストの部分であり、前記クローンデータに対する前記クローンエントリーが、前記マスターインデックスに対する参照及び次のインデックスに対する参照を含む、請求項1に記載の方法。
  5. 前記間接参照データ構造がシングルエンドでリンクされたリストの部分であり、インデックスへのエントリーが、前記インデックスはマスターインデックスであるという指示を提供する、請求項1に記載の方法。
  6. 前記参照が、論理ブロックアドレッシングのためのフラット間接参照テーブルへのエントリーを含む、請求項1に記載の方法。
  7. 前記参照が、論理ブロックアドレッシングのためのツリーデータ構造へのエントリーを含む、請求項1に記載の方法。
  8. 前記改善されたコピーオンライトの機能性が、改善された名前空間コピーの機能性を含む、請求項1に記載の方法。
  9. 1つ以上のパックされた論理ブロックが複製されていることを示すため、前記1つ以上のパックされた論理ブロックに対するインジケータをセットすることを更に含む、請求項1に記載の方法。
  10. 前記マスターエントリーのマスターインデックスが前記マスターエントリーを指し示す、請求項1に記載の方法。
  11. 前記クローンエントリーの前記マスターインデックスが前記マスターエントリーを指し示す、請求項3に記載の方法。
  12. データ構造への最後のクローンエントリーの次のインデックスが前記マスターエントリーを指し示す、請求項4に記載の方法。
  13. 前記クローンデータに対する前記クローンエントリーが、唯一のクローンエントリーであることを決定するステップを更に含む方法であって、前記決定するステップが、
    前記クローンエントリーの次のインデックスが、前記クローンエントリーの前記マスターインデックスとマッチすることを決定するステップと、
    前記マスターエントリーの次のインデックスが前記クローンエントリーを指し示すことを決定するステップと、
    パックされた論理ブロックを示す間接参照エントリーへの、前記クローンエントリーの次のインデックスをセットすること、及びパックされた論理ブロックを示す間接参照エントリーへの、前記マスターインデックスのエントリーをセットすることにより、前記クローンデータの前記クローンエントリーを、クローニング不可にするステップと、
    オリジナルのマスターエントリーの、最初のパックされた論理ブロックを示す最初の間接参照エントリーへの、前記マスターエントリーの次のインデックスをセットすること、及び前記オリジナルのマスターエントリーの、第二のパックされた論理ブロックを示す第二の間接参照エントリーへの、前記マスターエントリーの前記マスターインデックスをセットすることにより、前記クローンデータの前記マスターエントリーを、クローニング不可にするステップと
    を含む、請求項4に記載の方法。
  14. 前記クローンデータに対する前記クローンエントリーが、複数のクローンエントリーの1つであることを決定するステップを更に含む方法であって、前記決定するステップが、
    前記クローンエントリーの次のインデックスが、前記クローンエントリーの前記マスターインデックスとマッチしないこと、及び
    前記マスターエントリーの次のインデックスが、前記クローンエントリーを指し示さないこと
    の内の、少なくとも1つを決定するステップと、
    前記クローンエントリーの次のインデックスにより示されるエントリーを指し示すために、前のエントリーの次のインデックスをセットすることによって、前記クローンデータの前記クローンエントリーを、クローニング不可にするステップと
    を含む、請求項4に記載の方法。
  15. 不要データ収集プロセスの間に、エントリーをレビューするステップと、
    前記エントリーが複製されたインジケータを含むことを決定するステップと、
    前記エントリーが前記複製されたインジケータを含むという決定に基づいて、前記不要データ収集プロセスへのエントリーが、削除されるべきでない有効なエントリーであることを決定するステップと
    を更に含む、請求項1に記載の方法。
  16. コンピュータ上で実行可能な一連の命令を含む、コンピュータプログラム製品であって、前記コンピュータプログラム製品が、改善されたコピーオンライトの機能性をSSD内において提供するためのプロセスを実行し、前記コンピュータプログラムが、
    1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
    マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
    を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
    コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータの1つ以上のコピーを横断するステップと
    を実施する、コンピュータプログラム製品。
  17. 改善されたコピーオンライトの機能性をSSD内において提供するためのシステムであって、前記システムが、
    メモリ内に記憶されている格納された命令を含む、第一のデバイスと、
    前記命令であって、
    1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
    マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
    を含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令と、
    コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータの1つ以上のコピーを横断することと
    を含む、システム。
  18. 前記間接参照データ構造が複数の物理的アドレスを含む、請求項17に記載のシステム。
  19. 前記間接参照データ構造が環状にリンクされたリストの部分であり、クローンデータに対する前記マスターエントリーが、マスターインデックスに対する参照及び次のインデックスに対する参照を含む、請求項17に記載のシステム。
  20. 前記間接参照データ構造が環状にリンクされたリストの部分であり、前記クローンデータに対する前記クローンエントリーが、前記マスターインデックスに対する参照及び次のインデックスに対する参照を含む、請求項17に記載のシステム。
  21. 前記間接参照データ構造がシングルエンドでリンクされたリストの部分であり、インデックスへのエントリーが、前記インデックスはマスターインデックスであるという指示を提供する、請求項17に記載のシステム。
  22. 前記参照が、論理ブロックアドレッシングのためのフラット間接参照テーブルへのエントリーを含む、請求項17に記載のシステム。
  23. 前記第一のデバイスが、周辺装置相互接続エクスプレス(Peripheral Component Interconnect Express(PCIe))デバイスを含む、請求項17に記載のシステム。
  24. 前記1つ以上のパックされた論理ブロックが複製されることを示すために、1つ以上のパックされた論理ブロックに対するインジケータをセットする命令を更に含む、請求項17に記載のシステム。
  25. 前記マスターエントリーの前記マスターインデックス、及び前記クローンエントリーの前記マスターインデックスが、前記マスターエントリーを指し示し、そしてデータ構造への最後のクローンエントリーの次のインデックスが、前記マスターエントリーを指し示す、請求項20に記載のシステム。
JP2016033374A 2015-02-25 2016-02-24 Ssdへのコピーオンライト用システム及び方法 Active JP6218869B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/630,863 US9880755B2 (en) 2015-02-25 2015-02-25 System and method for copy on write on an SSD
US14/630,863 2015-02-25

Publications (2)

Publication Number Publication Date
JP2016157441A true JP2016157441A (ja) 2016-09-01
JP6218869B2 JP6218869B2 (ja) 2017-10-25

Family

ID=55590636

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016033374A Active JP6218869B2 (ja) 2015-02-25 2016-02-24 Ssdへのコピーオンライト用システム及び方法

Country Status (7)

Country Link
US (3) US9880755B2 (ja)
JP (1) JP6218869B2 (ja)
KR (1) KR101813786B1 (ja)
CN (1) CN105912475A (ja)
DE (1) DE102016001591A1 (ja)
FR (1) FR3033061B1 (ja)
GB (1) GB2537012B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036301A (ja) * 2017-08-10 2019-03-07 三星電子株式会社Samsung Electronics Co.,Ltd. データ保存方法及びそのシステム
US10540106B2 (en) 2015-02-25 2020-01-21 Western Digital Technologies, Inc. System and method for copy on write on an SSD

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606803B2 (en) * 2016-06-28 2020-03-31 Netapp, Inc. Data cloning in memory-based file systems
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
KR102631351B1 (ko) * 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
JP6783645B2 (ja) 2016-12-21 2020-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US10268620B2 (en) * 2016-12-23 2019-04-23 Ati Technologies Ulc Apparatus for connecting non-volatile memory locally to a GPU through a local switch
US11061585B1 (en) 2017-10-19 2021-07-13 EMC IP Holding Company, LLC Integration of NVMe device with DRAM cache system and method
US10521137B1 (en) * 2017-10-31 2019-12-31 EMC IP Holding Company LLC Storage device array integration of dual-port NVMe device with DRAM cache and hostside portion of software stack system and method
CN109902033B (zh) * 2019-02-13 2023-03-14 山东华芯半导体有限公司 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法
JP7395388B2 (ja) 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法
US11640371B2 (en) 2020-03-12 2023-05-02 Western Digital Technologies, Inc. Snapshot management in partitioned storage
CN112817533A (zh) * 2021-01-29 2021-05-18 深圳忆联信息系统有限公司 Ssd管理方法、装置计算机设备及存储介质
US20210223979A1 (en) * 2021-03-16 2021-07-22 Intel Corporation On-ssd-copy techniques using copy-on-write

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026940A (ja) * 2008-07-23 2010-02-04 Hitachi Ltd リモートコピーシステム、及びリモートサイトの省電力化方法
JP2012512482A (ja) * 2008-12-17 2012-05-31 エルエスアイ コーポレーション Ssd技術支援のストレージシステムのスナップショット
JP2014514622A (ja) * 2011-09-13 2014-06-19 株式会社日立製作所 フラッシュメモリを含むストレージシステム、及び記憶制御方法

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742450A (en) 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
US5574905A (en) * 1994-05-26 1996-11-12 International Business Machines Corporation Method and apparatus for multimedia editing and data recovery
US5815649A (en) * 1995-10-20 1998-09-29 Stratus Computer, Inc. Distributed fault tolerant digital data storage subsystem for fault tolerant computer system
US6219770B1 (en) 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
FI991336A (fi) * 1999-06-10 2000-12-11 Nokia Networks Oy Menetelmä levyvarmennetun tietokannan elvyttämiseksi
US6751583B1 (en) * 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6779095B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data using pointers to new and original data in a data location
US6976021B2 (en) * 2001-07-19 2005-12-13 Riverstone Networks, Inc. Method, system, and computer program product for managing a re-usable resource with linked list groups
US6748504B2 (en) * 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US7249352B2 (en) * 2002-08-22 2007-07-24 International Business Machines Corporation Apparatus and method for removing elements from a linked list
US7529897B1 (en) * 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US20070093124A1 (en) 2005-10-20 2007-04-26 Lsi Logic Corporation Methods and structure for SAS expander optimization of SAS wide ports
US7774316B2 (en) * 2005-11-30 2010-08-10 Oracle International Corp. Filesystem snapshot enhancement to improve system performance
US7499961B2 (en) * 2006-01-12 2009-03-03 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
US7673185B2 (en) 2006-06-08 2010-03-02 Dot Hill Systems Corporation Adaptive SAS PHY configuration
WO2008121873A1 (en) * 2007-03-29 2008-10-09 Vmware, Inc. Synchronization and customization of a clone computer
US8706976B2 (en) * 2007-08-30 2014-04-22 Commvault Systems, Inc. Parallel access virtual tape library and drives
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7912995B1 (en) 2007-12-20 2011-03-22 Emc Corporation Managing SAS topology
US7941692B2 (en) 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US8190835B1 (en) 2007-12-31 2012-05-29 Emc Corporation Global de-duplication in shared architectures
US7953778B2 (en) * 2008-05-20 2011-05-31 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
US20120311243A1 (en) * 2008-05-30 2012-12-06 Ite Tech. Inc. Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
JP5156518B2 (ja) * 2008-07-23 2013-03-06 株式会社日立製作所 記憶制御装置及び方法
JP2012531674A (ja) 2009-06-26 2012-12-10 シンプリヴィティ・コーポレーション ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け
US20110161298A1 (en) 2009-12-29 2011-06-30 Grobman Steven L System and method for opportunistic re-imaging using cannibalistic storage techniques on sparse storage devices
US8447943B2 (en) 2010-02-24 2013-05-21 Hitachi, Ltd. Reduction of I/O latency for writable copy-on-write snapshot function
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8621143B2 (en) 2011-04-15 2013-12-31 Oracle International Corporation Elastic data techniques for managing cache storage using RAM and flash-based memory
US8868869B2 (en) * 2011-08-08 2014-10-21 International Business Machines Corporation Enhanced copy-on-write operation for solid state drives
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
JP5776474B2 (ja) * 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
US8935499B2 (en) * 2011-10-17 2015-01-13 International Business Machines Corporation Interface for management of data movement in a thin provisioned storage system
WO2013093957A1 (en) * 2011-12-19 2013-06-27 Hitachi, Ltd. Computer system and reclamation control method
US9229853B2 (en) 2011-12-20 2016-01-05 Intel Corporation Method and system for data de-duplication
US9152570B2 (en) 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US8843666B2 (en) 2012-03-02 2014-09-23 Lsi Corporation Method for optimizing wide port power management in a SAS topology
US8850145B1 (en) * 2012-03-30 2014-09-30 Emc Corporation Managing consistency groups in storage systems
CN103544077B (zh) * 2012-07-17 2016-12-07 华为技术有限公司 数据处理方法及装置、共享存储设备
US8959374B2 (en) 2012-07-31 2015-02-17 Hewlett-Packard Development Company, L.P. Power management for devices in a data storage fabric
US8924751B2 (en) 2012-07-31 2014-12-30 Hewlett-Packard Development Company, L.P. SAS power management
US8862810B2 (en) 2012-09-27 2014-10-14 Arkologic Limited Solid state device write operation management system
US9646039B2 (en) * 2013-01-10 2017-05-09 Pure Storage, Inc. Snapshots in a storage system
JP6109967B2 (ja) 2013-02-21 2017-04-05 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データストレージシステムにおけるクローンオブジェクトのオブジェクトレベルでの複製
US20150006814A1 (en) 2013-06-28 2015-01-01 Western Digital Technologies, Inc. Dynamic raid controller power management
US9588882B2 (en) * 2013-12-02 2017-03-07 Intel Corporation Non-volatile memory sector rotation
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026940A (ja) * 2008-07-23 2010-02-04 Hitachi Ltd リモートコピーシステム、及びリモートサイトの省電力化方法
JP2012512482A (ja) * 2008-12-17 2012-05-31 エルエスアイ コーポレーション Ssd技術支援のストレージシステムのスナップショット
JP2014514622A (ja) * 2011-09-13 2014-06-19 株式会社日立製作所 フラッシュメモリを含むストレージシステム、及び記憶制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540106B2 (en) 2015-02-25 2020-01-21 Western Digital Technologies, Inc. System and method for copy on write on an SSD
US11226747B2 (en) 2015-02-25 2022-01-18 Western Digital Technologies, Inc. System and method for copy on write on an SSD
JP2019036301A (ja) * 2017-08-10 2019-03-07 三星電子株式会社Samsung Electronics Co.,Ltd. データ保存方法及びそのシステム
JP7084243B2 (ja) 2017-08-10 2022-06-14 三星電子株式会社 データ保存方法及びそのシステム

Also Published As

Publication number Publication date
KR101813786B1 (ko) 2018-01-02
GB2537012B (en) 2019-07-03
US20160246521A1 (en) 2016-08-25
FR3033061A1 (ja) 2016-08-26
GB201601965D0 (en) 2016-03-16
DE102016001591A1 (de) 2016-08-25
CN105912475A (zh) 2016-08-31
US20200150883A1 (en) 2020-05-14
US9880755B2 (en) 2018-01-30
US10540106B2 (en) 2020-01-21
FR3033061B1 (fr) 2021-03-05
US11226747B2 (en) 2022-01-18
GB2537012A (en) 2016-10-05
US20180150249A1 (en) 2018-05-31
JP6218869B2 (ja) 2017-10-25
KR20160103945A (ko) 2016-09-02

Similar Documents

Publication Publication Date Title
JP6218869B2 (ja) Ssdへのコピーオンライト用システム及び方法
US11442640B1 (en) Utilizing unmapped and unknown states in a replicated storage system
US10261913B2 (en) Persistent memory for key-value storage
US10108356B1 (en) Determining data to store in retention storage
US9910620B1 (en) Method and system for leveraging secondary storage for primary storage snapshots
US9342256B2 (en) Epoch based storage management for a storage device
US9519575B2 (en) Conditional iteration for a non-volatile device
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
US11782632B2 (en) Selective erasure of data in a SSD
KR101870521B1 (ko) 스토리지 저널링을 개선하는 방법 및 시스템
US10956071B2 (en) Container key value store for data storage devices
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
CN106886370B (zh) 一种基于ssd去重技术的数据安全删除方法及系统
US10817624B2 (en) Memory system and storage device capable of permanently deleting data stored in a non-volatile memory
CN110187834B (zh) 重删副本的数据处理方法、装置、电子设备
US11321002B2 (en) Converting a virtual volume between volume types
US10922003B1 (en) Realizing host-assisted device-level data deduplication on solid-state data storage devices with embedded non-volatile memory
US11194760B1 (en) Fast object snapshot via background processing
CN118051179A (zh) 用于使用多个分区的分区命名空间存储的技术

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170424

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170810

TRDD Decision of grant or rejection written
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170825

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170926

R150 Certificate of patent or registration of utility model

Ref document number: 6218869

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250