JP6218869B2 - Ssdへのコピーオンライト用システム及び方法 - Google Patents
Ssdへのコピーオンライト用システム及び方法 Download PDFInfo
- Publication number
- JP6218869B2 JP6218869B2 JP2016033374A JP2016033374A JP6218869B2 JP 6218869 B2 JP6218869 B2 JP 6218869B2 JP 2016033374 A JP2016033374 A JP 2016033374A JP 2016033374 A JP2016033374 A JP 2016033374A JP 6218869 B2 JP6218869 B2 JP 6218869B2
- Authority
- JP
- Japan
- Prior art keywords
- entry
- clone
- master
- data
- index
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
- G11C29/765—Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical 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)
Description
1.マスターC−エントリー及びクローンC−エントリーを作り出すとき、参照すべき原本のPLBに対する8つのNANDアドレスを読み取ること。
2.8つのオリジナルPLBの間接参照エントリーの代わりに、マスターC−エントリーを作り出すこと。
次のインデックスは新たなクローンC−エントリーを指し示し得る。
3.現在クローンとして作用するであろう8つのPLBの間接参照エントリーの代わりに、クローンC−エントリーを作り出すこと。
次のインデックスは新たなマスターC−エントリーを指し示し得る。
1.ソースC−チャンクがマスターである場合、クローンC−エントリーを見出すためにソースC−エントリーの次のインデックスをフォローし、それを新たなC−エントリーの位置にコピーすること。ソースC−チャンクがマスターでない場合、そのソースC−エントリーを新たなC−エントリーの位置にコピーすること。
2.新たなC−エントリーの次のインデックスを、マスターC−エントリーの現在の次のインデックスを用いて更新すること。
3.新たなC−エントリーを指し示すために、マスターC−エントリーの次のインデックスを更新すること。
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アドレス及びマスターインデックスは戻され得る。
1.ただ1つだけのクローンが存在するかどうかを決定すること。例えば、対象のC−エントリーの次のインデックスがそのマスターインデックスとマッチし、そのマスターC−エントリーの次のインデックスが対象のC−エントリーを指し示す場合は、ただ1つだけのクローンが存在する。マスター及びクローンの双方に対して、C−エントリーを調べ、それらのPLBに対して「正常な」間接参照エントリーで、マスターC−エントリーを上書きすること。
2.対象のC−エントリーの次のインデックスが、そのマスターインデックスとマッチしない場合、又はそのマスターC−エントリーの次のインデックスが対象のC−エントリーを指し示さない場合は、別のクローンが存在する。このC−エントリーを、その循環リストから取り除くこと。
3.いずれの場合でも、マスターC−チャンクに関するデータを読み取り、それをクローンC−チャンクにコピーすること、及び新たなコピーのNANDアドレスを示す正常な間接参照エントリーで、クローンC−エントリーを上書きすること。
1.マスターC−エントリー及び最初のクローンC−エントリーを読み取ること。
2.マスターC−チャンク用の記憶媒体からデータを読み取ること、及びそれを新たな記憶媒体の位置に書き込むことにより、最初のクローンC−チャンクのPLBにコピーすること、そしてホストのLBAメタデータを対応するクローンC−チャンクと関連付けること。
3.その最初のクローンが唯一のクローンである(すなわち、その次のインデックスがマスターに戻って指し示す)場合、今しがた作り出したコピーに対するNANDアドレスを指し示す正常な間接参照エントリーで、最初のクローンC−エントリーを上書きすること。オリジナルのマスターC−チャンクのPLBを指し示す正常な間接参照エントリーで、マスターC−エントリーを上書きすること。
4.その最初のクローンが唯一のクローンではない場合、マスターを環状にリンクされたリストから取り除くこと。今しがた作り出したコピーに対する新たなマスターC−エントリーで、最初のクローンC−エントリーを上書きすること。今しがた作り出したコピーに対する新たなクローンC−エントリーで、別のクローンC−エントリーを上書きすること。これは、古いマスターC−エントリーの最初のクローンC−エントリーが、それ自体及び残りのクローンC−エントリーに対する、新たなマスターC−エントリーになることを推進し得る。
1.PLBのC−チャンクをクローニング不可にすること。
2.正常に間接参照の更新を実行すること。
f(C−エントリーインデックス)=C−エントリーインデックス/フィルタサイズ(f(C−Entry Index)=C−Entry Index/Filter Size)のようなものであってもよい。
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 (15)
- コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記間接参照データ構造が環状にリンクされたリストの部分であり、クローンデータに対する前記マスターエントリーが、マスターインデックスに対する参照及び次のインデックスに対する参照を含む方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記間接参照データ構造がシングルエンドでリンクされたリストの部分であり、インデックスへのエントリーが、前記インデックスはマスターインデックスであるという指示を提供する、方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記参照が、論理ブロックアドレッシングのためのフラット間接参照テーブルへのエントリーを含む、方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記参照が、論理ブロックアドレッシングのためのツリーデータ構造へのエントリーを含む、方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記コピーオンライトの機能性が、名前空間コピーの機能性を含む、方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記マスターエントリーのマスターインデックスが前記マスターエントリーを指し示す、方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記間接参照データ構造が環状にリンクされたリストの部分であり、クローンデータに対する前記マスターエントリーが、マスターインデックスに対する参照及び次のインデックスに対する参照を含み、
前記クローンエントリーの前記マスターインデックスが前記マスターエントリーを指し示す、方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記間接参照データ構造が環状にリンクされたリストの部分であり、前記クローンデータに対する前記クローンエントリーが、前記マスターインデックスに対する参照及び次のインデックスに対する参照を含み、
前記クローンデータに対する前記クローンエントリーが、唯一のクローンエントリーであることを決定するステップを更に含み、
前記決定するステップが、
前記クローンエントリーの次のインデックスが、前記クローンエントリーの前記マスターインデックスとマッチすることを決定するステップと、
前記マスターエントリーの次のインデックスが前記クローンエントリーを指し示すことを決定するステップと、
パックされた論理ブロックを示す間接参照エントリーへの、前記クローンエントリーの次のインデックスをセットすること、及びパックされた論理ブロックを示す間接参照エントリーへの、前記マスターインデックスのエントリーをセットすることにより、前記クローンデータの前記クローンエントリーを、クローニング不可にするステップと、
オリジナルのマスターエントリーの、最初のパックされた論理ブロックを示す最初の間接参照エントリーへの、前記マスターエントリーの次のインデックスをセットすること、及び前記オリジナルのマスターエントリーの、第二のパックされた論理ブロックを示す第二の間接参照エントリーへの、前記マスターエントリーの前記マスターインデックスをセットすることにより、前記クローンデータの前記マスターエントリーを、クローニング不可にするステップと
を含む方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと
を含み、
前記間接参照データ構造が環状にリンクされたリストの部分であり、前記クローンデータに対する前記クローンエントリーが、前記マスターインデックスに対する参照及び次のインデックスに対する参照を含み、
前記クローンデータに対する前記クローンエントリーが、複数のクローンエントリーの1つであることを決定するステップを更に含み、
前記決定するステップが、
前記クローンエントリーの次のインデックスが、前記クローンエントリーの前記マスターインデックスとマッチしないこと、及び
前記マスターエントリーの次のインデックスが、前記クローンエントリーを指し示さないこと
の内の、少なくとも1つを決定するステップと、
前記クローンエントリーの次のインデックスにより示されるエントリーを指し示すために、前のエントリーの次のインデックスをセットすることによって、前記クローンデータの前記クローンエントリーを、クローニング不可にするステップと
を含む方法。 - コピーオンライトの機能性をSSD内において提供する方法であって、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、
マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーと
を含む間接参照データ構造をデバイスのメモリ内に提供するステップと、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査するステップと、
不要データ収集プロセスの間に、エントリーをレビューするステップと、
前記エントリーが複製されたインジケータを含むことを決定するステップと、
前記エントリーが前記複製されたインジケータを含むという決定に基づいて、前記不要データ収集プロセスへのエントリーが、削除されるべきでない有効なエントリーであることを決定するステップと
を含む方法。 - コピーオンライトの機能性をSSD内において提供するためのシステムであって、前記システムが、
メモリ内に記憶されている格納された命令を含む、第一のデバイスを含み、
前記命令が、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーとを含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令と、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査することと
を含み、
前記間接参照データ構造が環状にリンクされたリストの部分であり、クローンデータに対する前記マスターエントリーが、マスターインデックスに対する参照及び次のインデックスに対する参照を含むシステム。 - コピーオンライトの機能性をSSD内において提供するためのシステムであって、前記システムが、
メモリ内に記憶されている格納された命令を含む、第一のデバイスを含み、
前記命令が、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーとを含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令と、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査することと
を含み、
前記間接参照データ構造がシングルエンドでリンクされたリストの部分であり、インデックスへのエントリーが、前記インデックスはマスターインデックスであるという指示を提供するシステム。 - コピーオンライトの機能性をSSD内において提供するためのシステムであって、前記システムが、
メモリ内に記憶されている格納された命令を含む、第一のデバイスを含み、
前記命令が、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーとを含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令と、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査することと
を含み、
前記参照が、論理ブロックアドレッシングのためのフラット間接参照テーブルへのエントリーを含むシステム。 - コピーオンライトの機能性をSSD内において提供するためのシステムであって、前記システムが、
メモリ内に記憶されている格納された命令を含む、第一のデバイスを含み、
前記命令が、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーとを含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令と、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査することと
を含み、
前記第一のデバイスが、周辺装置相互接続エクスプレス(Peripheral Component Interconnect Express(PCIe))デバイスを含むシステム。 - コピーオンライトの機能性をSSD内において提供するためのシステムであって、前記システムが、
メモリ内に記憶されている格納された命令を含む、第一のデバイスを含み、
前記命令が、
1つ以上のインデックスに対する参照を有する、クローンデータに対するマスターエントリーと、マスターインデックスに対する参照、次のインデックスに対する参照、及びデータ構造の最後を示す値の内の少なくとも1つを有する、前記クローンデータに対するクローンエントリーとを含む、間接参照データ構造を、第一のデバイスのメモリ内に提供するための命令と、
コンピュータプロセッサを用いて、1つ以上の前記参照を使用し、前記クローンデータを走査することと
を含み、
前記間接参照データ構造が環状にリンクされたリストの部分であり、前記クローンデータに対する前記クローンエントリーが、前記マスターインデックスに対する参照及び次のインデックスに対する参照を含み、
前記マスターエントリーの前記マスターインデックス、及び前記クローンエントリーの前記マスターインデックスが、前記マスターエントリーを指し示し、そしてデータ構造への最後のクローンエントリーの次のインデックスが、前記マスターエントリーを指し示すシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/630,863 | 2015-02-25 | ||
US14/630,863 US9880755B2 (en) | 2015-02-25 | 2015-02-25 | System and method for copy on write on an SSD |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016157441A JP2016157441A (ja) | 2016-09-01 |
JP6218869B2 true 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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714656B2 (en) | 2020-03-06 | 2023-08-01 | Kioxia Corporation | Memory system executing loading of software at startup and control method |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9880755B2 (en) * | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
US10719479B2 (en) * | 2016-06-28 | 2020-07-21 | Netapp, Inc. | Data unit 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 |
US10585749B2 (en) * | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
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分配方法和映射方法 |
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 |
Family Cites Families (53)
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 | 株式会社日立製作所 | 記憶制御装置及び方法 |
JP5108667B2 (ja) | 2008-07-23 | 2012-12-26 | 株式会社日立製作所 | リモートコピーシステム、及びリモートサイトの省電力化方法 |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
BRPI1013794A8 (pt) * | 2009-06-26 | 2017-10-10 | Simplivity Corp | Método de adaptar um processo de indexação de acesso uniforme com uma memória de acesso não uniforme e sistema de computador |
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 |
US8527544B1 (en) * | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US8930307B2 (en) | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
JP5816303B2 (ja) | 2011-09-13 | 2015-11-18 | 株式会社日立製作所 | フラッシュメモリを含むストレージシステム、及び記憶制御方法 |
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 |
WO2013095381A1 (en) | 2011-12-20 | 2013-06-27 | 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 | 华为技术有限公司 | 数据处理方法及装置、共享存储设备 |
US8924751B2 (en) | 2012-07-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | SAS power management |
US8959374B2 (en) | 2012-07-31 | 2015-02-17 | Hewlett-Packard Development Company, L.P. | Power management for devices in a data storage fabric |
US8862810B2 (en) | 2012-09-27 | 2014-10-14 | Arkologic Limited | Solid state device write operation management system |
US9589008B2 (en) * | 2013-01-10 | 2017-03-07 | Pure Storage, Inc. | Deduplication of volume regions |
WO2014130035A1 (en) | 2013-02-21 | 2014-08-28 | Bluearc Uk Limited | Object-level replication of cloned objects in a data storage system |
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 |
-
2015
- 2015-02-25 US US14/630,863 patent/US9880755B2/en active Active
-
2016
- 2016-02-03 GB GB1601965.5A patent/GB2537012B/en active Active
- 2016-02-11 FR FR1651107A patent/FR3033061B1/fr active Active
- 2016-02-11 DE DE102016001591.8A patent/DE102016001591A1/de active Pending
- 2016-02-24 JP JP2016033374A patent/JP6218869B2/ja active Active
- 2016-02-24 KR KR1020160022000A patent/KR101813786B1/ko active IP Right Grant
- 2016-02-25 CN CN201610104585.0A patent/CN105912475A/zh active Pending
-
2018
- 2018-01-22 US US15/876,245 patent/US10540106B2/en active Active
-
2020
- 2020-01-17 US US16/746,663 patent/US11226747B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714656B2 (en) | 2020-03-06 | 2023-08-01 | Kioxia Corporation | Memory system executing loading of software at startup and control method |
Also Published As
Publication number | Publication date |
---|---|
GB2537012B (en) | 2019-07-03 |
KR20160103945A (ko) | 2016-09-02 |
FR3033061B1 (fr) | 2021-03-05 |
DE102016001591A1 (de) | 2016-08-25 |
US11226747B2 (en) | 2022-01-18 |
JP2016157441A (ja) | 2016-09-01 |
US20180150249A1 (en) | 2018-05-31 |
FR3033061A1 (ja) | 2016-08-26 |
US9880755B2 (en) | 2018-01-30 |
US20200150883A1 (en) | 2020-05-14 |
KR101813786B1 (ko) | 2018-01-02 |
CN105912475A (zh) | 2016-08-31 |
US10540106B2 (en) | 2020-01-21 |
US20160246521A1 (en) | 2016-08-25 |
GB201601965D0 (en) | 2016-03-16 |
GB2537012A (en) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6218869B2 (ja) | Ssdへのコピーオンライト用システム及び方法 | |
US11442640B1 (en) | Utilizing unmapped and unknown states in a replicated storage system | |
US9910620B1 (en) | Method and system for leveraging secondary storage for primary storage snapshots | |
US10108356B1 (en) | Determining data to store in retention storage | |
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 | |
US11989423B2 (en) | Techniques for zoned namespace (ZNS) storage using multiple zones | |
US11194760B1 (en) | Fast object snapshot via background processing |
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 |