FR3033061A1 - - Google Patents

Download PDF

Info

Publication number
FR3033061A1
FR3033061A1 FR1651107A FR1651107A FR3033061A1 FR 3033061 A1 FR3033061 A1 FR 3033061A1 FR 1651107 A FR1651107 A FR 1651107A FR 1651107 A FR1651107 A FR 1651107A FR 3033061 A1 FR3033061 A1 FR 3033061A1
Authority
FR
France
Prior art keywords
master
entry
index
cloned
input
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
FR1651107A
Other languages
English (en)
Other versions
FR3033061B1 (fr
Inventor
Dylan Mark Dewitt
Adam Michael Espeseth
Colin Christopher Mccambridge
David George Dreyer
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.)
SanDisk Technologies LLC
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 FR3033061A1 publication Critical patent/FR3033061A1/fr
Application granted granted Critical
Publication of FR3033061B1 publication Critical patent/FR3033061B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (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)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

Des techniques d'amélioration de la fonctionnalité de copie à l'écriture dans un SSD sont décrites. Dans certains modes de réalisation, ces techniques peuvent être mises en œuvre sous la forme d'un Procédé destiné à fournir une fonctionnalité améliorée de copie à l'écriture dans un SSD consistant à prévoir, dans la mémoire d'un dispositif, une structure de données d'indirection. La structure de données peut comprendre une entrée maîtresse pour des données clonées, l'entrée maîtresse comportant une référence à un ou plusieurs index et une entrée de clone pour les données clonées, l'entrée clonée comportant au moins l'un des éléments suivants : une référence à un index maître, une référence à un index suivant, et une valeur indiquant une extrémité d'une structure de données. Ces techniques peuvent consister à parcourir, en utilisant un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références.

Description

1 SYSTEME ET PROCEDE DE COPIE A L'ECRITURE SUR UN SSD Contexte de l'invention [0001] La spécification de Mémoire Non Volatile express (NVMe) est une spécification concernant l'accès à des dispositifs à semi-conducteurs (SSD, Solid-State Devices) et d'autres dispositifs cibles raccordés par l'intermédiaire d'un bus d'Interconnexion de Composants Périphériques Express (PCIe, Peripheral Component Interconnect Express). L'interface hôte PCIe pour SSD NVMe définit un concept d'Espaces des noms, qui sont analogues à des volumes logiques pris en charge par des adaptateurs SAS RAID (Redundant Array of Independent Disks, Matrice Redondante de Disques Indépendants). La fonctionnalité de copie à l'écriture dans un SSD peut être mise en oeuvre en utilisant des espaces des noms. Les espaces des noms sont généralement mis en oeuvre en tant qu'abstraction au-dessus de l'espace d'Adresses de Blocs Logiques (LBA, Logical Block Address) global poursuivi dans le système d'indirection d'un SSD. [0002] Les métadonnées LBA n'indiquent qu'une seule LBA d'hôte et elles ne comprennent pas de compte de référence. L'inclusion ou l'ajout d'un compte de référence dans les métadonnées conduirait à des écritures supplémentaires pour écraser les données avec de nouvelles métadonnées, cela étant une mauvaise solution. Sans de tels comptes de références dans les métadonnées LBA, il n'existe aucun mécanisme permettant de déterminer s'il existe des copies clonées supplémentaires (par exemple, le fait que des LBA supplémentaires pointent sur les mêmes données). La gestion de multiples copies de données clonées sur un SSD se heurte par conséquent à des difficultés particulières en ce qui concerne la récupération d'espace mémoire. A titre d'exemple, lorsqu'un hôte modifie la LBA "source" après une opération de copie, il peut conduire à des difficultés liées à la récupération d'espace mémoire. La copie source peut en fait être la copie "maîtresse" ayant été écrite avant que l'opération de copie ait été effectuée afin de dupliquer les données sur une LBA d'hôte supplémentaire ou plus. Lorsque cette LBA maîtresse est modifiée, un algorithme de récupération d'espace mémoire non sensible à la copie peut libérer les données physiques à la prochaine occasion, étant donné qu'il n'existe aucun procédé permettant de modifier efficacement les métadonnées de ces données pour indiquer qu'un plus grand nombre de LBA d'hôte pointent sur ces données.
3033061 2 Résumé de l'invention [0003] Des techniques d'amélioration de la fonctionnalité de copie à l'écriture dans un SSD sont décrites. Dans certains modes de réalisation, les techniques peuvent être mises en oeuvre sous la forme d'un Procédé destiné à fournir une fonctionnalité améliorée de copie à l'écriture 5 dans un SSD, consistant à prévoir, dans la mémoire d'un dispositif PCIe, une structure de données d'indirection. La structure de données peut comprendre une entrée maîtresse pour une copie originale ou source des données clonées, l'entrée maîtresse comportant une référence à un index maître et une référence à un index suivant, une entrée de clone pour les données clonées, l'entrée clonée comportant une référence à l'index maître et une référence à un index suivant.
10 Ces techniques peuvent consister à parcourir, au moyen d'un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références. [0004] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, le dispositif hôte peut comprendre au moins l'un des éléments suivants : un serveur d'entreprise, un serveur de base de données, une station de travail, et un ordinateur. 15 [0005] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, la structure de données d'indirection peut comprendre une pluralité d'adresses physiques. [0006] Conformément à d'autres aspects de cet exemple de mode de réalisation, la structure de données d'indirection peut faire partie d'une liste chaînée circulaire, l'entrée maîtresse pour des données clonées comprenant une référence à un index maître et une référence à un index 20 suivant. [0007] Conformément à d'autres aspects de cet exemple de mode de réalisation, la structure de données d'indirection peut faire partie d'une liste chaînée circulaire, l'entrée de clone pour les données clonées comprenant une référence à l'index maître et une référence à un index suivant. [0008] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, 25 la structure de données d'indirection peut faire partie d'une liste chaînée à une seule extrémité, une entrée contenue dans un index fournissant une indication du fait que l'index est un index maître. 3033061 3 [0009] Conformément à d'autres aspects de cet exemple de mode de réalisation, les références peuvent consister en des entrées dans une table d'indirection absolue pour l'adressage de blocs logiques. [0010] Conformément à d'autres aspects de cet exemple de mode de réalisation, les 5 références peuvent comprendre des entrées dans une structure de données arborescente pour un adressage de blocs logiquês. [0011] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, la fonctionnalité améliorée de copie à l'écriture peut comprendre une fonctionnalité améliorée de copie d'espace des noms. 10 [0012] Conformément à d'autres aspects de cet exemple de mode de réalisation, les techniques peuvent consister à positionner un indicateur pour un ou plusieurs blocs logiques condensés pour indiquer que lesdits un ou plusieurs blocs logiques condensés sont clonés. [0013] Conformément à d'autres aspects de cet exemple de mode de réalisation, un index maître de l'entrée maîtresse peut pointer sur l'entrée maîtresse. 15 [0014] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, l'index maître de l'entrée clonée peut pointer sur l'entrée maîtresse. [0015] Conformément à d'autres aspects de cet exemple de mode de réalisation, l'index suivant d'une dernière entrée clonée dans une structure de données peut pointer sur l'entrée maîtresse. 20 [0016] Conformément à d'autres aspects de cet exemple de mode de réalisation, les techniques peuvent consister à déterminer que l'entrée de clone pour les données clonées est une entrée de clone seule, la détermination consistant à déterminer que l'index suivant de l'entrée clonée concorde avec l'index maître de l'entrée clonée, déterminer que l'index suivant de l'entrée maîtresse pointe sur l'entrée de clone, décloner l'entrée de clone des données clonées en réglant 25 l'index suivant de l'entrée de clone à une entrée d'indirection indiquant un bloc logique condensé et régler l'entrée d'index maître à une entrée d'indirection indiquant un bloc logique condensé, et décloner l'entrée maîtresse des données clonées en réglant l'index suivant de l'entrée maîtresse à une première entrée d'indirection indiquant un premier bloc logique condensé d'une entrée 3033061 4 maîtresse originale et régler l'index maître de l'entrée maîtresse à une seconde entrée d'indirection indiquant un second bloc logique condensé de l'entrée maîtresse originale. [0017] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, les techniques peuvent consister à déterminer que l'entrée de clone pour les données clonées est 5 l'une d'une pluralité d'entrées de clones, la détermination consistant à déterminer au moins l'un des points suivants : que l'index suivant de l'entrée clonée ne concorde pas avec l'index maître de l'entrée clonée, et que l'index suivant de l'entrée maîtresse ne pointe pas sur l'entrée de clone, et décloner l'entrée de clone des données clonées en réglant l'index suivant d'une entrée précédente afin qu'il pointe sur une entrée indiquée par l'index suivant de l'entrée de clone. 10 [0018] Conformément à d'autres aspects de cet exemple de mode de réalisation, les techniques peuvent consister à examiner une entrée pendant un processus de récupération d'espace mémoire, déterminer que l'entrée contient un indicateur cloné, et déterminer que l'entrée impliquée dans le processus de récupération d'espace mémoire est une entrée valide ne devant pas être supprimée sur la base de la détermination du fait que l'entrée contient l'indicateur 15 cloné. [0019] Dans d'autres modes de réalisation, les techniques peuvent être mises en oeuvre sous la forme d'un produit de programme informatique constitué d'une série d'instructions exécutables sur un ordinateur. Le produit de programme informatique peut mettre en oeuvre un processus destiné à fournir une fonctionnalité améliorée de copie à l'écriture dans un SSD. Le programme 20 informatique peut mettre en oeuvre les étapes consistant à prévoir, dans la mémoire d'un dispositif, une structure de données d'indirection comprenant une entrée maîtresse pour des données clonées, l'entrée maîtresse comportant une référence à un ou plusieurs index, une entrée de clone pour les données clonées, l'entrée clonée comportant au moins l'un des éléments suivants : une référence à un index maître, une référence à un index suivant, et une valeur 25 indiquant une extrémité d'une structure de données, et parcourir, au moyen d'un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références. [0020] Dans encore d'autres modes de réalisation, les techniques peuvent être mises en oeuvre sous la forme d'un système destiné à fournir une fonctionnalité améliorée de copie à 30 l'écriture dans un SSD. Le système peut comprendre un premier dispositif, dans lequel le premier dispositif comprenant des instructions stockées, qui sont stockées en mémoire. Les 3033061 5 instructions peuvent comprendre une instruction destinée à fournir, dans la mémoire du premier dispositif, une structure de données d'indirection comprenant une entrée maîtresse pour des données clonées, l'entrée maîtresse comportant une référence à un ou plusieurs index, une entrée de clone pour les données clonées, l'entrée clonée comportant au moins l'un des éléments 5 suivants : une référence à un index maître, une référence à un index suivant, et une valeur indiquant une extrémité d'une structure de données, et parcourir, au moyen d'un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références. [0021] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, 10 la structure de données d'indirection peut comprendre une pluralité d'adresses physiques. [0022] Conformément à d'autres aspects de cet exemple de mode de réalisation, la structure de données d'indirection peut faire partie d'une liste chaînée circulaire, l'entrée maîtresse pour des données clonées comprenant une référence à un index maître et une référence à un index suivant. 15 [0023] Conformément à d'autres aspects de cet exemple de mode de réalisation, la structure de données d'indirection peut faire partie d'une liste chaînée circulaire, l'entrée de clone pour les données clonées comprenant une référence à l'index maître et une référence à un index suivant. [0024] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, la structure de données d'indirection peut faire partie d'une liste chaînée à une seule extrémité, 20 une entrée contenue dans un index fournissant une indication du fait que l'index est un index maître. [0025] Conformément à d'autres aspects de cet exemple de mode de réalisation, les références peuvent comprendre des entrées dans une table d'indirection absolue pour un adressage de blocs logiques. 25 [0026] Conformément à d'autres aspects de cet exemple de mode de réalisation, le premier dispositif peut comprendre un dispositif d'Interconnexion de Composants Périphériques Express (PCIe). [0027] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, les techniques peuvent en outre comprendre une instruction destinée à positionner un indicateur 3033061 6 pour un ou plusieurs blocs logiques condensés pour indiquer que lesdits un ou plusieurs blocs logiques condensés sont clonés. [0028] Conformément à d'autres aspects de cet exemple de mode de réalisation, l'index maître de l'entrée maîtresse et l'index maître de l'entrée clonée peuvent pointer sur l'entrée 5 maîtresse et l'index suivant d'une dernière entrée clonée dans une structure de données qui pointe sur l'entrée maîtresse. [0029] Conformément à des aspects supplémentaires de cet exemple de mode de réalisation, le dispositif cible (par exemple, un dispositif PCIe) peut comprendre au moins l'un des éléments suivants : une unité de traitement graphique, une carte d'acquisition audio/vidéo, un 10 disque dur, un adaptateur de bus hôte, et un contrôleur de Mémoire Non Volatile express (NVMe, Non-Volatile Memory express). Selon certains modes de réalisation, le dispositif cible peut être un dispositif respectant la norme NVMe. [0030] La présente invention va maintenant être décrite de manière plus détaille en référence à des exemples de modes de réalisation de celle-ci, comme illustré dans les dessins annexés.
15 Bien que la présente invention soit décrite ci-après en référence à des exemples de modes de réalisation, il est à noter que la présente invention n'est pas limitée à ceux-ci. L'homme du métier normalement compétent ayant accès aux directives présentées ici saura envisager d'autres formes de réalisation, variantes, et modes de réalisation, ainsi que d'autres domaines d'utilisation, qui entrent dans le cadre de la présente invention telle qu'elle est décrite ici, et vis- 20 à-vis desquels la présente invention peut être d'une grande utilité. Brève description des dessins [0031] Pour favoriser une compréhension plus approfondie de la présente invention, on se référera à présent aux dessins annexés, dans lesquels des éléments identiques sont désignés par des références numériques identiques. Ces dessins ne doivent pas être considérés comme 25 limitant la présente invention, mais sont présentés à seul titre d'exemple. [0032] La figure 1 représente un exemple de schéma fonctionnel illustrant une pluralité de dispositifs PCIe en communication avec un dispositif hôte, conformément à un mode de réalisation de la présente invention. 3033061 7 [0033] La figure 2 illustre une structure de données représentant des blocs logiques condensés non clonés, conformément à un mode de réalisation de la présente invention. [0034] La figure 3 illustre des tables représentant des entrées de structure de données d'indirection maîtresse et clonée, conformément à un mode de réalisation de la présente 5 invention. [0035] La figure 4 représente un exemple de module d'amélioration de la fonctionnalité de copie à l'écriture dans un SSD, conformément à un mode de réalisation de la présente invention. [0036] La figure 5 représente un organigramme illustrant une fonctionnalité améliorée de copie à l'écriture dans un SSD, conformément à un mode de réalisation de la présente invention. 10 [0037] La figure 6a représente une structure de données de formats d'entrées de structures de données de Segments C Maîtres, conformément à un mode de réalisation de la présente invention. [0038] La figure 6B représente une structure de données de formats d'entrées de structures de données de Segments C de Clones, conformément à un mode de réalisation de la présente 15 invention. Description [0039] La présente invention concerne une fonctionnalité améliorée de copie à l'écriture. Dans certains modes de réalisation, cette fonctionnalité de copie à l'écriture peut comprendre des copies de l'espace des noms. L'interface hôte PCIe pour SSD NVMe définit un concept 20 d'Espaces des noms, qui sont analogues à des volumes logiques pris en charge par des adaptateurs SAS RAID (Redundant Array of Independent Disks). Un espace des noms peut être dédié à une Machine Virtuelle (VM, Virtual Machine). Dans un SSD, les espaces des noms peuvent être logiquement isolés les uns des autres et peuvent être effacés de manière sécurisée et reconvertis sans affecter d'autres Espaces des noms. 25 [0040] Un identifiant d'espace des noms peut être inclus dans une commande d'accès au support émise par l'hôte, en association avec la LBA dans cet espace des noms. Le SSD peut utiliser une structure de données (par exemple, une table de consultation, un arbre, une table de hachage, un topogramme binaire, etc.) afin de traduire cette combinaison d'espace des noms et 3033061 8 de LBA en une LBA globale utilisée de manière interne pour accéder au SSD. Selon certains modes de réalisation, les références faites à une LBA peuvent désigner cette LBA globale. [0041] Des modes de réalisation de la présente invention décrivent un système et un procédé de mise en oeuvre d'une fonction efficace de 'Copie d'Espace des noms' qui évite de dupliquer les 5 données sur le SSD. Cela réduit l'amplification d'écriture se produisant dans le SSD, ce qui prolongeant ainsi la durée de vie du SSD tout en conduisant à de meilleures performances. [0042] Les copies d'espace des noms sont une forme de fonctionnalité de "copie à l'écriture". Sur la fonction de copie, un pointeur généré pointe sur la copie unique sur le support. Une nouvelle copie sur le support est générée et mise à jour lors d'une écriture. Une fonction de copie 10 de l'espace des noms nécessite une mise en oeuvre efficace de la "copie à l'écriture" sur un SSD. Des modes de réalisation de la présente invention peuvent être appliqués à des copies d'espace des noms. Des modes de réalisation de la présente invention peuvent également être appliqués à d'autres formes de réalisation de la "copie à l'écriture" pour un SSD. A titre d'exemple, une copie "instantanée" peut être utilisée pour créer des images en un point dans le temps d'un espace des 15 noms et des formes de réalisation du présent mode de réalisation peuvent être utilisées pour effectuer le suivi de copies instantanées. [0043] Des modes de réalisation de la présente invention fournissent un système d'indirection de SSD (par exemple une table de LBA absolue) ou un procédé permettant d'inclure de multiples entrées qui pointent sur le même emplacement physique. Une telle forme 20 de réalisation peut permettre une récupération d'espace mémoire efficace lorsqu'il existe de multiples références. Le suivi de multiples références ou la manipulation de multiples pointeurs (par exemple, sur des données flash NON-ET, NAND) peut améliorer la récupération d'espace mémoire. La récupération d'espace mémoire peut être effectuée en utilisant des métadonnées sur l'unité de stockage non volatile (par exemple, une mémoire flash NON-ET, une mémoire flash 25 NON-OU, etc.) qui comprend la LBA d'hôte pour les données. L'algorithme de récupération d'espace mémoire peut déterminer que des secteurs de l'hôte sont encore valides en consultant ces adresses dans la structure de données d'indirection (par exemple, une table, un arbre, une table de hachage, un topogramme binaire, etc.) pour vérifier si la structure de données pointe encore sur l'emplacement physique. Si cela n'est pas le cas, l'algorithme libère le bloc. 30 [0044] Un ou plusieurs modes de réalisation décrits ici fournissent une représentation efficace d'une entrée d'indirection dupliquée en utilisant un indicateur unique et un autre format 3033061 9 d'entrée d'indirection qui effectue le suivi d'une ou plusieurs adresses LBA d'hôte dupliquées. Un ou plusieurs modes de réalisation peuvent utiliser une structure de données de consultation d'indirection absolue pour le suivi de multiples adresses de blocs logiques pointant sur une même adresse physique. D'autres modes de réalisation peuvent être mis en oeuvre en utilisant 5 une table de hachage, un arbre, ou un système à base de composition destiné au suivi d'adresses LBA dupliquées. [0045] Des techniques d'amélioration de la fonctionnalité de copie à l'écriture dans un SSD sont présentées plus en détail ci-après. [0046] Se référant à présent aux dessins, la figure 1 est un exemple de schéma 10 fonctionnel illustrant un dispositif PCIe en communication avec un dispositif hôte, conformément à un mode de réalisation de la présente invention. Des améliorations de la fonctionnalité de copie à l'écriture peuvent être mises en oeuvre dans une ou plusieurs technologies informatiques, par exemple sous la forme d'un système hôte 102, d'une CPU hôte 104, et d'un complexe de racines PCI express (PCIe root complex) 106. Un commutateur PCI 15 express 108 peut coupler par voie de communication une pluralité de cibles (par exemple, des dispositifs PCIe tels que des cibles à base de NVMe) tels que les Cibles 110, 116 et 122 au système hôte 102 par l'intermédiaire d'un complexe de racines PCI express 106. [0047] La cible 110 peut contenir un contrôleur NVMe 112 et une unité de stockage non volatile 114. La cible 116 peut contenir un contrôleur NVMe 118 et une unité de stockage non 20 volatile 120. La cible 122 peut contenir un contrôleur NVMe 124 et une unité de stockage non volatile 126. [0048] La mémoire système 128 peut contenir des ressources à base de mémoire accessibles au Système Hôte 102 par l'intermédiaire d'une interface mémoire (par exemple, une mémoire vive dynamique synchrone de type trois à débit de données double (DDR3 SDRAM)). La 25 mémoire système 128 peut se présenter sous n'importe quelle forme appropriée, par exemple, sans aucune limitation à celles-ci, une mémoire à semi-conducteur (par exemple, une mémoire flash, ou un dispositif à semi-conducteur (SSD)), une mémoire optique, et une mémoire magnétique. La mémoire système 128 peut être une mémoire volatile ou non volatile. La mémoire système 128 peut contenir une ou plusieurs structures de données. 3033061 10 [0049] Selon certains modes de réalisation, des normes d'interfaces autres que le PCIe peuvent être utilisées pour une ou plusieurs parties, parmi lesquelles, sans aucune limitation à celles-ci, la Technologie Avancée de Connexion Série (SATA, Serial Advanced Technology Attachment), la Technologie Avancée de Connexion (ATA, Advanced Technology Attachment), 5 l'Interface pour Petits Systèmes Informatiques (SCSI, Small Computer System Interface), le PCI étendu (PCI-X), le Fibre Channel, le SCSI Connecté en Série (SAS, Serial Attached SCSI), le Secure Digital (SD), la Carte MultiMédia Intégrée (EMMC, Embedded Multi-Media Card), et l'Unité de Stockage Flash Universelle (UFS, Universal Flash Storage). [0050] Le système hôte 102 peut se présenter sous n'importe quelle forme appropriée, par 10 exemple, sans aucune limitation à celles-ci, un serveur d'entreprise, un hôte de base de données, une station de travail, un ordinateur personnel, un téléphone mobile, un dispositif de jeu, un assistant numérique personnel (PDA, Personal Digital Assistant), un dispositif de messagerie par courriel/texte, un appareil photo numérique, un lecteur multimédia numérique (par exemple MP3), un dispositif de navigation GPS, et un système de télévision. 15 [0051] Le système hôte 102 et le dispositif cible peuvent comprendre des composants supplémentaires, qui ne sont pas représentés sur la figure 1 pour simplifier le dessin. Par ailleurs, dans certains modes de réalisation, tous les composants représentés ne sont pas présents. De plus, les divers contrôleurs, blocs, et interfaces peuvent être mis en oeuvre de n'importe quelle façon appropriée. A titre d'exemple, un contrôleur peut présenter la forme d'un ou plusieurs 20 d'un microprocesseur ou d'un processeur et d'un support lisible par ordinateur qui stocke un code de programme lisible par ordinateur (par exemple, un logiciel ou un micrologiciel) exécutable par le (micro)processeur, par exemple, des portes logiques, des commutateurs, un circuit intégré spécifique d'applications (ASIC, Application Specific Integrated Circuit), un automate programmable, et un microcontrôleur intégré. 25 [0052] Se référant à la figure 2, une structure de données représentant des blocs logiques condensés non clonés est illustrée, conformément à un mode de réalisation de la présente invention. Huit entrées de blocs logiques condensés de 4 kilo-octets sont illustrées dans ce mode de réalisation. Ces blocs logiques condensés (PLB, Packed Logical Bloc) non clonés peuvent mapper des Adresses de Blocs Logiques (LBA) sur une adresse physique. Comme illustré, les 30 LBA 0-7 peuvent être mappées sur le Bloc d'Adresses Physiques 0, les LBA 7-15 peuvent être mappées sur le Bloc d'Adresses Physiques 1, les LBA 16-23 peuvent être mappées sur le Bloc 3033061 11 d'Adresses Physiques 2, les LBA 24-31 peuvent être mappées sur le Bloc d'Adresses Physiques 3, les LBA 32-39 peuvent être mappées sur le Bloc d'Adresses Physiques 4, les LBA 40-47 peuvent être mappées sur le Bloc d'Adresses Physiques 5, les LBA 48-55 peuvent être mappées sur le Bloc d'Adresses Physiques 6, et les adresses LBA 56-63 peuvent être mappées sur le Bloc 5 d'Adresses Physiques 7. [0053] La figure 3 illustre des tables représentant des entrées de structure de données d'indirection maîtresse et clonée, conformément à un mode de réalisation de la présente invention. Comme décrit en référence à la figure 3, dans certains modes de réalisation, des améliorations de la copie à l'écriture peuvent être mises en oeuvre dans un système d'indirection 10 absolu. Un PLB peut être un "bloc logique condensé" dans une structure de données de consultation (par exemple, une table de consultation à indirection absolue). Un ensemble de 8 PLB consécutifs alignés sur 8 PLB impliqués dans une opération de clonage peuvent être désignés sous le nom de "Segment C" (C-Chunk). Un Segment C dont les données sur le support sont marquées par les PLB qui conviennent pour ce Segment C (c'est-à-dire la copie 15 originale) peut être appelé "Segment C Maître". Les entrées de la structure de données d'indirection pour tous les PLB dans un Segment C peuvent être regroupées pour former une "Entrée C" unique. Une Entrée C correspondant à un Segment C dont les données se trouvent sur le support peut être appelée Entrée C Maîtresse. Les Entrées C qui décrivent des plages de LBA qui sont des copies de la Plage de LBA maîtresses peuvent être désignées sous le nom 20 d'Entrées C de Clones. Un ou plusieurs SSD peuvent définir un PLB pour effectuer le suivi de 4 ko de données de clients plus les métadonnées (par exemple des secteurs de 8x512 o). Dans les modes de réalisation présentés ci-après, un PLB peut simplement être une entrée dans une table. Une entrée de structure de données d'indirection peut être étendue (par exemple, d'un bit) pour faciliter la copie à l'écriture. Un bit supplémentaire peut être un bit de "suivi de clone" qui peut 25 être positionné à 1 pour indiquer soit qu'il y a d'autres PLB pour lesquels ce PLB joue le rôle de copie maîtresse, soit qu'il s'agit d'un clone qui comporte certains autres PLB en tant que sa copie maîtresse. Les bits restants de l'entrée de la structure de données d'indirection dont le bit de suivi de clone est positionné peuvent ou non contenir une adresse de mémoire NON-ET (par exemple, comme cela peut être le cas d'une entrée dont le bit n'est pas positionné). L'autre structure de 30 données possible pour 'suivi de clone = 1' est suivie avec une granularité plus grossière que l'entrée de PLB type, et comprend des champs permettant de créer une liste chaînée d'entrées clonées et un pointeur pointant sur l'entrée maîtresse. L'espace nécessaire pour ces champs supplémentaires peut être obtenu en utilisant une Entrée C unique pour décrire un plus grand 3033061 12 (par exemple 2x) segment d'adresses LBA qu'une entrée d'indirection non clonée. Ce compromis est raisonnable car les données clonées tendent à mettre en jeu des partitions ou des ensembles de fichiers de grandes tailles et non pas des adresses LBA d'hôte individuelles. [0054] Les adresses physiques des adresses LBA d'hôte individuelles sont réparties de telle 5 manière qu'une consultation supplémentaire est requise pour certaines LBA. Cela permet de libérer de la place pour inclure les pointeurs maître et clone dans chaque entrée de maître et de clone. Cependant, le nombre d'accès à la DRAM pour rechercher les adresses physiques n'est pas augmenté de manière significative. Comme illustré sur la figure 3, l'Entrée C Maîtresse peut contenir les adresses LBA mappées sur toutes les adresses physiques 8-15, mais ne contient que 10 les mappages effectifs sur les adresses physiques 8-11, 14, et 15 (le mappage sur les adresses physiques 12 et 13 peut être obtenu à partir de l'Entrée C de Clone). Comme illustré dans l'Entrée C de Clone de la figure 3, des mappages peuvent être fournis pour les adresses LBA correspondant aux adresses physiques 8-13. Les deux blocs physiques non mappés dans l'Entrée C Maîtresse (Adresses physiques 12 et 13) fournissent l'espace nécessaire pour un Index Maître 15 et un Index Suivant. Les deux blocs physiques non mappés dans l'Entrée C de Clone (Adresses Physiques 14 et 15) fournissent l'espace nécessaire pour un Index Maître et un Index Suivant. Un Index Maître dans une Entrée C Maîtresse pointe toujours sur lui-même. Un Index Maître dans une Entrée C de Clone pointe toujours sur l'Entrée C Maîtresse. Un Index Suivant de l'Entrée C Maîtresse pointe sur une première Entrée C de Clone dans une chaîne. Un Index 20 Suivant d'une Entrée C de Clone pointe sur une Entrée C de Clone suivante s'il y a plus d'une Entrée C de Clone. S'il n'y a qu'une seule Entrée C de Clone ou s'il s'agit de la dernière Entrée C de Clone, l'Index Suivant peut pointer en retour sur l'index C Maître (ou peut pointer sur une valeur spéciale indiquant une extrémité de la liste comme par exemple un pointeur nul). Cela peut permettre de parcourir une Entrée C Maîtresse et une ou plusieurs entrées C de Clones. 25 [0055] Dans les modes de réalisation utilisant une structure de données à indirection absolue, un PLB (bloc d'emplacements physiques) désigne une entrée individuelle contenant une adresse de mémoire NON-ET physique dans une table de consultation unique. Une granularité de PLB type réserve 4 ko (par exemple des secteurs de 8*512 o) à une entrée unique de la structure de données. A titre d'exemple, on considérera une taille de segment de clone de 8 blocs 30 PLB--le nombre moyen d'accès à la DRAM requis pour des accès par secteurs uniques purement aléatoires à une plage clonée est de 1,25. Ce nombre peut être plus faible avec une taille de 3033061 13 segment de clone plus élevée, le compromis étant des frontières entre clones moins granulaires et davantage d'accès NON-ET requis pour 'décloner' un segment de blocs PLB. [0056] Si une consultation de PLB en lecture par un hôte pointe sur une entrée clonée, le SSD doit disposer 1) de l'adresse physique et 2) de la LBA ayant été utilisée lorsque les données 5 ont été écrites. L'adresse physique est répartie entre les entrées maîtresse et clonée, facultativement en remplissant toutes les entrées PLB disponibles de données dupliquées afin de réduire la probabilité que la LBA ciblée nécessite une seconde lecture de DRAM. Pour un nombre égal à 2, la LBA maîtresse peut être calculée sur la base du pointeur maître dans chaque entrée de clone--cela ne nécessite pas d'accès supplémentaire à la DRAM par conception, et ce 10 pointeur maître (en association avec le pointeur de clone suivant) peut être mis en cache à partir de la consultation de PLB originale. [0057] Dans certains modes de réalisation, pour faire tenir des informations supplémentaires dans une structure de données d'indirection existante, le clonage ne peut être poursuivi qu'avec une granularité égale à un multiple quelconque de la taille du PLB. Dans 15 certains modes de réalisation, la granularité peut être choisie comme étant un multiple d'une puissance de deux de la taille du PLB pour permettre un calcul efficace de l'index du Segment C correspondant à une LBA donnée. A titre d'exemple, le multiplieur peut être égal à 8, mais des granularités de clonage plus importantes peuvent être utilisées. Le clonage peut mettre en jeu le clonage de grandes plages d'adresses LBA en une seule fois (par exemple, la totalité 20 d'un espace des noms), de manière à ce que la pénalité due à l'utilisation d'une plus grande granularité soit minime. [0058] Dans certains modes de réalisation, la structure de données d'indirection peut comporter, intégrée à celle-ci, une liste chaînée circulaire d'un ou plusieurs Segments C qui se réfèrent aux mêmes données. Dans d'autres modes de réalisation, d'autres formes de listes 25 chaînées (par exemple, une liste chaînée à une seule extrémité) peuvent être utilisées. Les adresses physiques décrivant les données du Segment C peuvent être réparties parmi des entrées d'indirection pour cette liste de Segments C. [0059] Un Segment C dont les données se trouvent physiquement sur le support, marquées par les PLB qui conviennent pour ce Segment C (c'est-à-dire la copie originale) peut être 30 appelé "Segment C Maître". D'autres Segments C qui se réfèrent à l'instant courant aux mêmes données sans stocker de copie sur le support peuvent être appelés "Segments C de Clones". 3033061 14 [0060] Les entrées de la structure de données d'indirection pour tous les PLB dans un Segment C sont regroupées pour former une "Entrée C" unique. Pour un Segment C Maître, l'Entrée C peut avoir le format illustré sur la figure 6A. Comme illustré, un segment C Maître peut contenir les adresses physiques 0-3 (les quatre premières adresses physiques d'une plage), 5 suivies des adresses physiques 6 et 7. Les deux adresses physiques manquantes peuvent être mappées dans une Entrée C de Clone et les deux emplacements supplémentaires peuvent être utilisés pour fournir un Index Maître et un Index Suivant. Comme illustré, un indicateur de "suivi de clone" peut être positionné à 1. Cela permet d'indiquer à un processus de récupération d'espace mémoire que l'entrée C doit être ignorée. 10 [0061] Pour un Segment C de Clone, l'Entrée C peut avoir le format illustré sur la figure 6B. Comme illustré, les adresses physiques 0-5 peuvent être mappées et les adresses physiques 6 et 7 peuvent être manquantes. Les deux adresses physiques manquantes peuvent être mappées dans l'Entrée C Maîtresse et les deux emplacements supplémentaires peuvent être utilisés pour fournir un Index Maître et un Index Suivant. Comme illustré, un indicateur de 15 "suivi de clone" peut être positionné à 1. Cela permet d'indiquer à un processus de récupération d'espace mémoire que l'entrée C doit être ignorée. [0062] Dans un ou plusieurs modes de réalisation, l'Adresse' NON-ET peut être l'adresse NON-ET pour un ième PLB du Segment C Maître (où i = 0 représente le premier PLB). Un Index Maître peut être un index de structure de données d'indirection de l'Entrée C Maîtresse 20 (divisée par 8 puisqu'elle occupe l'espace de 8 entrées PLB). Un Index Suivant peut être un index de structure de données d'indirection pour l'Entrée C de Clone suivante pointant sur les mêmes données (divisée par 8 puisqu'elle occupe l'espace de 8 entrées PLB). S'il n'y a plus d'Entrées C de Clones à représenter, cet Index Suivant peut, pointer en retour sur l'Entrée C Maîtresse. Dans certains modes de réalisation, cet Index Suivant peut pointer sur une valeur 25 indiquant la fin de la liste (par exemple, un pointeur nul). [0063] Dans certains modes de réalisation, un ou plusieurs tests peuvent être utilisés pour déterminer si un Segment C est une entrée maîtresse. A titre d'exemple, un Segment C peut être le maître si et seulement si l'Index Maître de son Entrée C pointe sur l'Entrée C elle même. [0064] La relation entre une Entrée C Maîtresse et une Entrée C de Clone par 30 l'intermédiaire d'Index Maîtres et d'Index Suivants permet l'exécution efficace d'une ou plusieurs des opérations suivantes. 3033061 15 [0065] Pour cloner un ensemble de 8 PLB consécutifs alignés sur 8 PLB, un ou plusieurs procédés peuvent être utilisés. A titre d'exemple, dans un ou plusieurs modes de réalisation, le clonage d'un ensemble de blocs PLB peut consister à : 1. Lire les 8 Adresses NON-ET pour les PLB de la copie originale à laquelle il doit 5 être fait référence lors de la création des Entrées C Maîtresse et de Clone ; 2. Créer une Entrée C Maîtresse au lieu des entrées d'indirection des 8 blocs PLB originaux. L'Index Suivant peut pointer sur la nouvelle Entrée C de Clone ; et 3. Créer une Entrée C de Clone au lieu des entrées d'indirection des 8 blocs PLB qui vont alors jouer le rôle de clone. L'Index Suivant peut pointer sur la nouvelle 10 Entrée C Maîtresse. [0066] Pour cloner un Segment C en un nouveau Segment C, un ou plusieurs procédés peuvent être utilisés. A titre d'exemple, dans un ou plusieurs modes de réalisation, le clonage d'un Segment C en un nouveau Segment C peut consister à : 1. Si le Segment C source est un maître, suivre un Index Suivant d'une Entrée C 15 source pour trouver une Entrée C de Clone et la copier à l'emplacement de la nouvelle Entrée C. Si le Segment C source n'est pas un maître, copier l'Entrée C source à l'emplacement de la nouvelle Entrée C ; 2. Mettre à jour l'Index Suivant de la nouvelle Entrée C avec Index Suivant courant de l'Entrée C Maîtresse ; 20 3. Mettre à jour l'Index Suivant de l'Entrée C Maîtresse afin qu'elle pointe sur la nouvelle Entrée C. [0067] Pour effectuer une consultation de lecture sur un PLB dont l'entrée d'indirection comporte un bit de suivi de clone positionné, un ou plusieurs procédés peuvent être utilisés. A titre d'exemple, dans un ou plusieurs modes de réalisation, l'exécution d'une consultation de 25 lecture sur un PLB ayant un bit d'indirection positionné peut consister à : 1. Observer l'Entrée C qui contient l'entrée d'indirection de ce PLB. Déterminer si cette Entrée C est ou non une Entrée C Maîtresse. Sur la base de la 3033061 16 détermination, déterminer en outre si l'adresse NON-ET pour le PLB Maître souhaité est stockée dans cette Entrée C. 2. Si l'adresse NON-ET est stockée dans la première Entrée C lue, cette adresse NON-ET et l'Index Maître peuvent être renvoyés. L'Index Maître peut être utilisé pour déterminer avec quel nombre de PLB les données vont être marquées, sans effectuer de consultations d'indirection supplémentaires. 3. Si l'adresse NON-ET n'est pas stockée dans la première Entrée C lue et si la première Entrée C lue est une Entrée C Maîtresse, l'Index Suivant peut être suivi pour trouver une Entrée C de Clone qui contient l'adresse NON-ET nécessaire.
10 Cette adresse NON-ET et l'Index Maître peuvent être renvoyés. 4. Si l'adresse NON-ET n'est pas stockée dans l'Entrée C lue et s'il s'agit d'une Entrée C de Clone, l'Index Maître peut être suivi pour trouver une Entrée C Maîtresse qui contient l'adresse NON-ET nécessaire. Cette adresse NON-ET et l'Index Maître peuvent être renvoyés.
15 100681 Pour "décloner" un Segment C de Clone, une ou plusieurs techniques peuvent être utilisées. A titre d'exemple, dans certains modes de réalisation, ces techniques peuvent consister à : 1. Déterminer s'il n'y a qu'un seul clone. A titre d'exemple, si l'Index Suivant de l'Entrée C cible concorde avec son Index Maître et si l'Index Suivant de l'Entrée 20 C Maîtresse pointe sur l'Entrée C cible, alors il n'y a qu'un seul clone. Lire les Entrées C à la fois pour le Maître et le Clone et écraser l'Entrée C Maîtresse avec des entrées d'indirection "normales" pour ces blocs PLB. 2. Si l'Index Suivant de l'Entrée C cible ne concorde pas avec son Index Maître ou si l'Index Suivant de l'Entrée C Maîtresse ne pointe pas sur l'Entrée C cible, alors 25 d'autres clones sont présents. Eliminer cette Entrée C de sa liste circulaire 3. Dans tous les cas, lire les données pour le Segment C Maître et les copier dans le Segment C de Clone, en écrasant les Entrées C de Clones avec des entrées d'indirection normales indiquant les adresses NON-ET de la nouvelle copie. 3033061 17 [0069] Pour "décloner" un segment C Maître une ou plusieurs techniques peuvent être utilisées. A titre d'exemple, dans certains modes de réalisation ces techniques peuvent consister à : 1. Lire l'Entrée C Maîtresse et la première Entrée C de Clone ; et 5 2. Lire les données depuis un support de stockage pour le Segment C Maître et les copier dans le premier Segment C de Clone du PLB en les écrivant à un nouvel emplacement du support de stockage et associer les métadonnées LBA de l'hôte au Segment C de Clone correspondant ; 3. Si ce premier clone est le seul clone (c'est-à-dire que son Index Suivant pointe en 10 retour sur le maître), alors écraser la première Entrée C de Clone avec des entrées d'indirection normales pointant sur les adresses NON-ET pour la copie qui vient d'être créée. Ecraser l'Entrée C Maîtresse avec des entrées d'indirection normales pointant sur des PLB du Segment C Maître original ; 4. Si «le premier clone n'était pas le seul clone, éliminer le maître de la liste chaînée 15 circulaire. Ecraser la première Entrée C de Clone avec une nouvelle Entrée C Maîtresse pour la copie qui vient d'être créée. Ecraser d'autres Entrées C de Clones avec une nouvelle Entrée C de Clone pour la copie qui vient d'être créée. Cela permet de favoriser le fait que la première Entrée C de Clone de l'ancienne Entrée C Maîtresse devienne la nouvelle Entrée C Maîtresse pour elle-même et 20 les Entrées C de clones restantes. [0070] Lorsqu'une mise à jour d'indirection est requise pour un PLB cible dont le bit de suivi de clone est positionné, ces techniques peuvent consister, de manière atomique, à : 1. Décloner le Segment C du PLB ; et 2. Effectuer la mise à jour d'indirection normalement. 25 [0071] La récupération d'espace mémoire peut être mise en oeuvre de telle manière que l'algorithme de récupération d'espace mémoire ne rejette jamais les données pour des données physiques quelconques dont le PLB est marqué par le bit de suivi de clone dans le système d'indirection. Plus précisément, l'algorithme de récupération d'espace mémoire peut considérer 3033061 18 tous les PLB marqués par un bit de suivi de clone comme étant des données "valides" qui nécessitent un déplacement plutôt qu'un effacement. [0072] Dans un ou plusieurs modes de réalisation, un petit filtre Bloom de comptage pourrait être stocké en SRAM pour effectuer le suivi de Segments C présents dans le système.
5 Lors d'une écriture, si le filtre Bloom peut indiquer qu'il n'y a aucun risque que le PLB fasse partie d'un Segment C, alors une mise à jour directe du système d'indirection peut être effectuée en toute sécurité sans lire en premier lieu l'entrée de structure de données courante. Comme les clones ont tendance à être de grandes plages séquentielles, la fonction de hachage utilisée pour un filtre Bloom peut être du type : f(Index Entrée C) = Index Entrée C / Taille du 10 Filtre plutôt qu'une fonction aléatoire. [0073] La figure 4 illustre un exemple de module d'amélioration de la fonctionnalité de copie à l'écriture dans un SSD, conformément à un mode de réalisation de la présente invention. Comme illustré sur la figure 4, le module de copie à l'écriture 410 peut contenir un module de création d'indirection 412, un module de gestion d'indirection 414, et un module de 15 manipulation d'erreur 416. [0074] Le module de création d'indirection 412 peut créer une ou plusieurs structures de données pour le suivi de copies obtenues par copie à l'écriture. Un PLB peut simplement être une entrée dans une table. Une entrée de structure de données d'indirection peut être étendue (par exemple, d'un bit) pour faciliter la copie à l'écriture. Un bit supplémentaire peut être un bit 20 de "suivi de clone" qui peut être positionné à 1 pour indiquer soit qu'il y a d'autres PLB pour lesquels ce PLB joue le rôle de copie maîtresse, soit qu'il s'agit d'un clone qui comporte certains autres PLB en tant que sa copie maîtresse. Les bits restants de l'entrée de la structure de données d'indirection dont le bit de suivi de clone est positionné peuvent ou non contenir une adresse NON-ET (par exemple, comme cela peut être le cas d'une entrée dont le bit n'est pas positionné).
25 L'autre structure de données possible pour "suivi de clone = 1" comprend des champs permettant de créer une liste chaînée d'entrées clonées et un pointeur pointant sur l'entrée maîtresse. L'espace nécessaire pour ces champs supplémentaires est obtenu en utilisant une entrée unique pour décrire un plus grand (par exemple 2x) segment d'adresses LBA qu'une entrée d'indirection non clonée. 30 [0075] Le module de gestion d'indirection 414 peut mettre en oeuvre une ou plusieurs opérations utilisant une structure de données d'indirection. Le module de gestion d'indirection 3033061 19 414 peut favoriser le clonage de données, la lecture de données clonées, le déclonage de données, et faciliter une récupération d'espace mémoire sure et efficace en utilisant un ou plusieurs des procédés présentés ci-dessus en référence à la figure 3. [0076] Un module de gestion d'erreur 416 peut piéger, consigner, signaler, et/ou traiter une 5 ou plusieurs erreurs associées à la gestion de données clonées. [0077] La figure 5 représente un organigramme illustrant une fonctionnalité améliorée de copie à l'écriture dans un SSD, conformément à un mode de réalisation de la présente invention. Cependant, le processus 500, n'est présenté qu'à titre d'exemple. Le processus 500 peut être modifié, par exemple, en faisant en sorte que des étapes soient ajoutées, changées, éliminées, 10 ou réorganisées. A l'étape 502, le processus peut commencer. [0078] A l'étape 504, une Entrée C Maîtresse peut être créée. Un Segment C dont les données se trouvent physiquement sur le support, marquées par les PLB qui conviennent pour ce Segment C (c'est-à-dire la copie originale) peut être appelé "Segment C Maître". D'autres Segments C qui se réfèrent à l'instant courant aux mêmes données sans stocker de copie sur le 15 support peuvent être appelés "Segments C de Clones". [0079] Les entrées de la structure de données d'indirection pour tous les PLB dans un Segment C sont regroupées pour former une "Entrée C" unique. Pour un segment C Maître, l'Entrée C peut avoir le format illustré sur la figure 6A. [0080] A l'étape 506, une entrée C de clone peut être créée. Pour un Segment C de Clone, 20 l'Entrée C peut avoir le format illustré sur la figure 6B. [0081] Dans un ou plusieurs modes de réalisation, l'Adresse' NON-ET peut être l'adresse NON-ET pour un en' PLB du Segment C Maître (où i = 0 représente le premier PLB). [0082] A l'étape 508, un bloc peut être attribué pour indiquer un Index Maître. Un Index Maître peut être un index de structure de données d'indirection de l'Entrée C Maîtresse 25 (divisée par 8 puisqu'elle occupe l'espace de 8 entrées PLB). L'Index Maître tant d'une Entrée C Maîtresse que d'une Entrée C de Clone peut pointer sur une Entrée C Maîtresse. [0083] A l'étape 510, un bloc peut être attribué pour indiquer un Index Suivant. Un Index Suivant peut être un index de structure de données d'indirection pour l'Entrée C de Clone 3033061 20 suivante pointant sur les mêmes données (divisée par 8 puisqu'elle occupe l'espace de 8 entrées PLB). S'il n'y a plus d'Entrées C de Clones à représenter, cet Index Suivant peut pointer en retour sur l'Entrée C Maîtresse. [0084] Dans certains modes de réalisation, un ou plusieurs tests peuvent être utilisés pour 5 déterminer si un Segment C est une entrée maîtresse. A titre d'exemple, un Segment C peut être le maître si et seulement si l'Index Maître de son Entrée C pointe sur l'Entrée C elle même. [0085] A l'étape 512, le procédé 500 peut se terminer [0086] D'autres modes de réalisation entrent dans le cadre et l'esprit de l'invention. A titre d'exemple, la fonctionnalité décrite ci-dessus peut être mise en oeuvre au moyen d'un logiciel, 10 d'un matériel, d'un micrologiciel, d'un câblage fixe, ou de combinaisons de n'importe lesquelles de ces formes. Un ou plusieurs processeurs d'ordinateurs fonctionnant conformément à des instructions peuvent mettre en oeuvre les fonctions associées à la fonctionnalité améliorée de copie à l'écriture dans un SSD conformément à la présente invention telle que décrite ci-dessus. Si cela est le cas, il entre dans le cadre de la présente 15 invention que de telles instructions soient stockées sur un ou plusieurs supports de stockage non transitoires lisibles par un processeur (par exemple, un disque magnétique ou un autre support de stockage). En outre, des modules mettant en oeuvre des fonctions peuvent également être physiquement placés à diverses positions, cela comprenant le fait qu'ils soient répartis de telle manière que des parties des fonctions soient mises en oeuvre à différents 20 emplacements physiques. [0087] L'étendue de la présente invention ne doit pas être considérée comme étant limitée aux modes de réalisation particuliers décrits ici. En effet, divers autres modes de réalisation et diverses autres variantes de la présente invention, en plus de ceux décrits ici, apparaîtront à l'homme du métier normalement compétent au vu de la description présentée ci-dessus et des 25 dessins annexés. Par conséquent, ces autres modes de réalisation et variantes devront être considérés comme entrant dans le cadre de la présente invention. De plus, bien que la présente invention ait été décrite ici dans le contexte d'une forme de réalisation particulière dans un environnement particulier pour une application particulière, l'homme du métier normalement compétent notera que son utilité n'est pas limitée à ceux-ci et que la présente invention peut 30 être avantageusement mise en oeuvre dans un nombre quelconque d'environnements pour un nombre quelconque d'applications. En conséquence, les revendications présentées ci-après 3033061 21 devront être appréciées selon leur acception la plus large et dans le respect de l'esprit de la présente invention telle que décrite ici.

Claims (25)

  1. REVENDICATIONS1. Procédé destiné à fournir une fonctionnalité améliorée de copie à l'écriture dans un SSD consistant à : prévoir, dans la mémoire d'un dispositif, une structure de données d'indirection 5 comprenant : une entrée maîtresse pour des données clonées, l'entrée maîtresse comportant une référence à un ou plusieurs index ; une entrée de clone pour les données clonées, l'entrée clonée comportant au moins l'un des éléments suivants : une référence à un index maître, une référence à un index 10 suivant, et une valeur indiquant une extrémité d'une structure de données ; et parcourir, en utilisant un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références.
  2. 2. Procédé selon la revendication 1, dans lequel la structure de données d'indirection 15 comprend une pluralité d'adresses physiques.
  3. 3. Procédé selon la revendication 1, dans lequel la structure de données d'indirection fait partie d'une liste chaînée circulaire, l'entrée maîtresse pour des données clonées comprenant une référence à un index maître et une référence à un index suivant. 20
  4. 4. Procédé selon la revendication 1, dans lequel la structure de données d'indirection fait partie d'une liste chaînée circulaire, l'entrée de clone pour les données clonées comprenant une référence à l'index maître et une référence à un index suivant. 25
  5. 5. Procédé selon la revendication 1, dans lequel la structure de données d'indirection fait partie d'une liste chaînée à une seule extrémité, une entrée contenue dans un index fournissant une indication du fait que l'index est un index maître.
  6. 6. Procédé selon la revendication 1, dans lequel les références comprennent des entrées 30 dans une table d'indirection absolue pour un adressage de blocs logiques.
  7. 7. Procédé selon la revendication 1, dans lequel les références comprennent des entrées dans une structure de données arborescente pour un adressage de blocs logiques. 3033061 23
  8. 8. Procédé selon la revendication 1, dans lequel la fonctionnalité améliorée de copie à l'écriture comprend une fonctionnalité améliorée de copie d'espace des noms.
  9. 9. Procédé selon la revendication 1, consistant en outre à positionner un indicateur pour un ou plusieurs blocs logiques condensés pour indiquer que lesdits un ou plusieurs blocs logiques condensés sont clonés.
  10. 10. Procédé selon la revendication 1, dans lequel un index maître de l'entrée maîtresse pointe sur l'entrée maîtresse.
  11. 11. Procédé selon la revendication 3, dans lequel l'index maître de l'entrée clonée pointe sur l'entrée maîtresse.
  12. 12. Procédé selon la revendication 4, dans lequel l'index suivant d'une dernière entrée clonée dans une structure de données pointe sur l'entrée maîtresse.
  13. 13. Procédé selon la revendication 4, consistant en outre à : déterminer que l'entrée de clone pour les données clonées est une entrée de clone seule, la détermination consistant à : déterminer que l'index suivant de l'entrée clonée concorde avec l'index maître de l'entrée clonée ; déterminer que l'index suivant de l'entrée maîtresse pointe sur l'entrée de clone ; décloner l'entrée de clone des données clonées en réglant l'index suivant de l'entrée de clone à une entrée d'indirection indiquant un bloc logique condensé et régler l'entrée d'index maître à une entrée d'indirection indiquant un bloc logique condensé ; et décloner l'entrée maîtresse des données clonées en réglant l'index suivant de l'entrée maîtresse à une première entrée d'indirection indiquant un premier bloc logique condensé d'une entrée maîtresse originale et régler l'index maître de l'entrée maîtresse à une seconde entrée d'indirection indiquant un second bloc logique condensé de l'entrée maîtresse 30 originale.
  14. 14. Procédé selon la revendication 4, consistant en outre à : déterminer que l'entrée de clone pour les données clonées est l'une d'une pluralité 3033061 24 d'entrées de clones, la détermination consistant à déterminer au moins l'un des points suivants : que l'index suivant de l'entrée clonée ne concorde pas avec l'index maître de l'entrée clonée ; et que l'index suivant de l'entrée maîtresse ne pointe pas sur l'entrée de clone ; et 5 décloner l'entrée de clone des données clonées en réglant l'index suivant d'une entrée précédente afin qu'elle pointe sur une entrée indiquée par l'index suivant de l'entrée de clone.
  15. 15. Procédé selon la revendication 1, consistant en outre à : examiner une entrée pendant un processus de récupération d'espace mémoire ; 10 déterminer que l'entrée contient un indicateur cloné ; et déterminer que l'entrée impliquée dans le processus de récupération d'espace mémoire est une entrée valide ne devant pas être supprimée sur la base de la détermination du fait que l'entrée contient l'indicateur cloné. 15
  16. 16. Produit de programme informatique constitué d'une série d'instructions exécutables sur un ordinateur, le produit de programme informatique exécutant un processus destiné à fournir une fonctionnalité améliorée de copie à l'écriture dans un SSD ; le programme informatique mettant en oeuvre les étapes consistant à : prévoir, dans la mémoire d'un dispositif, une structure de données d'indirection 20 comprenant : une entrée maîtresse pour des données clonées, l'entrée maîtresse comportant une référence à un ou plusieurs index ; une entrée de clone pour les données clonées, l'entrée clonée comportant au moins l'un des éléments suivants : une référence à un index maître, une référence à un index 25 suivant, et une valeur indiquant une extrémité d'une structure de données ; et parcourir, en utilisant un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références.
  17. 17. Système destiné à fournir une fonctionnalité améliorée de copie à l'écriture dans un SSD, le système comprenant : un premier dispositif ; le premier dispositif comprenant des instructions stockées, qui sont stockées en mémoire, les instructions comprenant : 3033061 25 une instruction destinée à fournir, dans la mémoire du premier dispositif, une structure de données d'indirection comprenant : une entrée maîtresse pour des données clonées, l'entrée maîtresse comportant une référence à un ou plusieurs index ; 5 une entrée de clone pour les données clonées, l'entrée clonée comportant au moins l'un des éléments suivants : une référence à un index maître, une référence à un index suivant, et une valeur indiquant une extrémité d'une structure de données ; et parcourir, en utilisant un processeur d'ordinateur, une ou plusieurs copies des données clonées en utilisant une ou plusieurs des références. 10
  18. 18. Système selon la revendication 17, dans lequel la structure de données d'indirection comprend une pluralité d'adresses physiques.
  19. 19. Système selon la revendication 17, dans lequel la structure de données d'indirection fait partie d'une liste chaînée circulaire, l'entrée maîtresse pour des données clonées comprenant une référence à un index maître et une référence à un index suivant. 15
  20. 20. Système selon la revendication 17, dans lequel la structure de données d'indirection fait partie d'une liste chaînée circulaire, l'entrée de clone pour les données clonées comprenant une référence à l'index maître et une référence à un index suivant. 20
  21. 21. Système selon la revendication 17, dans lequel la structure de données d'indirection fait partie d'une liste chaînée à une seule extrémité, une entrée contenue dans un index fournissant une indication du fait que l'index est un index maître.
  22. 22. Système selon la revendication 17, dans lequel les références comprennent des entrées 25 dans une table d'indirection absolue pour un adressage de blocs logiques.
  23. 23. Système selon la revendication 17, dans lequel le premier dispositif comprend un dispositif d'Interconnexion de Composants Périphériques Express (PCIe). 30
  24. 24. Système selon la revendication 17, comprenant en outre une instruction destinée à positionner un indicateur pour un ou plusieurs blocs logiques condensés pour indiquer que lesdits un ou plusieurs blocs logiques condensés sont clonés. 3033061 26
  25. 25. Système selon la revendication 20, dans lequel l'index maître de l'entrée maîtresse et l'index maître de l'entrée clonée pointent sur l'entrée maîtresse et l'index suivant d'une dernière entrée clonée dans une structure de données pointe sur l'entrée maîtresse.
FR1651107A 2015-02-25 2016-02-11 Systeme et procede de copie a l'ecriture sur un ssd Active FR3033061B1 (fr)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
FR3033061A1 true FR3033061A1 (fr) 2016-08-26
FR3033061B1 FR3033061B1 (fr) 2021-03-05

Family

ID=55590636

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1651107A Active FR3033061B1 (fr) 2015-02-25 2016-02-11 Systeme et procede de copie a l'ecriture sur un ssd

Country Status (7)

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

Families Citing this family (14)

* Cited by examiner, † Cited by third party
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
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
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分配方法和映射方法
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

Family Cites Families (53)

* 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
US7941470B2 (en) * 2007-03-29 2011-05-10 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
JP5108667B2 (ja) * 2008-07-23 2012-12-26 株式会社日立製作所 リモートコピーシステム、及びリモートサイトの省電力化方法
JP5156518B2 (ja) * 2008-07-23 2013-03-06 株式会社日立製作所 記憶制御装置及び方法
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
CA2766231C (fr) * 2009-06-26 2017-01-17 Simplivity Corporation Systeme de fichier a espace de nom ayant acces a un magasin d'objets
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
WO2013038442A1 (fr) 2011-09-13 2013-03-21 Hitachi, Ltd. Système de stockage comprenant une mémoire flash, et procédé de commande de stockage
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 (fr) * 2011-12-19 2013-06-27 Hitachi, Ltd. Système informatique et procédé de commande de réclamation
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
US9063967B2 (en) * 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
EP2959373B1 (fr) 2013-02-21 2020-07-15 Hitachi Vantara LLC Duplication au niveau objet d'objets clonés dans un système de stockage de données
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

Also Published As

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

Similar Documents

Publication Publication Date Title
FR3033061A1 (fr)
US11989160B2 (en) Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10089191B2 (en) Selectively persisting application program data from system memory to non-volatile data storage
KR101480659B1 (ko) 2-레벨 시스템 메인 메모리
JP5592942B2 (ja) 仮想マシンシステムにおけるショートカット入出力
US8103847B2 (en) Storage virtual containers
US10261703B2 (en) Sharing read-only data among virtual machines using coherent accelerator processor interface (CAPI) enabled flash
US11263090B2 (en) System and method for data packing into blobs for efficient storage
KR102530583B1 (ko) 저장 장치 및 메모리 시스템
US11169968B2 (en) Region-integrated data deduplication implementing a multi-lifetime duplicate finder
US7945724B1 (en) Non-volatile solid-state memory based adaptive playlist for storage system initialization operations
US9977599B2 (en) Data deduplication with support for both thick and thin provisioning of storage objects
US10055304B2 (en) In-memory continuous data protection
US8825970B1 (en) System and method for mounting a storage volume utilizing a block reference list
CN111339046A (zh) 针对文件的数据写入、读取和删除方法及装置
US20170052705A1 (en) Listing storage media

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

TP Transmission of property

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., US

Effective date: 20200319

PLSC Publication of the preliminary search report

Effective date: 20200619

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

TP Transmission of property

Owner name: SANDISK TECHNOLOGIES, INC., US

Effective date: 20240619

CD Change of name or company name

Owner name: SANDISK TECHNOLOGIES, INC., US

Effective date: 20240723