CN110874194A - 持久存储设备管理 - Google Patents

持久存储设备管理 Download PDF

Info

Publication number
CN110874194A
CN110874194A CN201910817188.1A CN201910817188A CN110874194A CN 110874194 A CN110874194 A CN 110874194A CN 201910817188 A CN201910817188 A CN 201910817188A CN 110874194 A CN110874194 A CN 110874194A
Authority
CN
China
Prior art keywords
data
persistent storage
physical location
block
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910817188.1A
Other languages
English (en)
Inventor
斯图尔特·约翰·英格利斯
谢里登·约翰·兰贝特
蒂莫西·凯利·道森
方济各·阿尔德·西蒙斯
亚历山大·金斯利·St·约翰
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.)
Daedaros Cloud LLC
Original Assignee
Neread Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Neread Co Ltd filed Critical Neread Co Ltd
Publication of CN110874194A publication Critical patent/CN110874194A/zh
Pending legal-status Critical Current

Links

Images

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • G06F2212/1024Latency reduction
    • 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/10Providing a specific technical effect
    • G06F2212/1052Security 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/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/301In special purpose processing node, e.g. vector processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明公开了持久存储设备管理。一种方法,包括:接收在虚拟位置写入数据的请求;将数据写入持久存储设备上的物理位置;以及记录从虚拟位置到物理位置的映射;其中,物理位置对应于持久存储设备上的块序列中的下一个空闲块。

Description

持久存储设备管理
技术领域
本发明涉及持久存储设备管理。
背景技术
数据可以存储在具有多个块的持久存储设备(诸如硬盘驱动器)上。将数据写入驱动器的请求可以指定持久存储设备的写入数据的物理位置(诸如块)。从驱动器读取数据的请求可以指定从中读取数据的持久存储设备的物理位置(诸如块)。
发明内容
在第一示例实施方式中,提供了一种方法,包括:接收在虚拟位置写入数据的请求;将数据写入持久存储设备上的物理位置;并记录从虚拟位置到物理位置的映射;其中,物理位置对应于持久存储设备上的块序列中的下一个空闲块。
附图说明
参考示出某些实施方式的附图,该描述以示例的方式构成。但是,这些仅用于说明。
图1示出处理写请求的示例方法。
图2示出图1的方法的工作示例。
图3示出用于处理数据将以条带形式存储的写入请求的示例方法。
图4A和4B示出图3的方法的工作示例。
图5示出用于处理读取请求的示例方法。
图6示出用于处理丢失块的块重建的示例方法。
图7示出用于处理更新请求的示例方法。
图8示出用于垃圾收集的示例方法。
图9示出图8的方法的工作示例。
图10示出示例计算机系统900的框图。
具体实施方式
在一些实施方式中,提供了一种用于驱动器接收在虚拟位置写入数据的请求,在序列的下一个空闲物理位置写入数据,以及记录虚拟和物理位置之间的映射的方法。通过始终将数据存储在磁盘上的下一个空闲块上,可以用于避免磁盘经历读-修改-写循环。这可以提高吞吐量和写入速度。
在这种情况下,“下一个”可以指代块序列中的下一个块。可以基于特定持久存储设备的配置来确定序列。例如,“下一个”可以至少部分地基于具有自当前块的最低预期寻道时间的块。
该方法可以通过驱动器实现。驱动器可以提供写入数据、读取数据和更新数据的功能。以这种方式,驱动器为块设备(例如,持久存储设备)提供所有必要的功能。特别地,驱动器可以是用户空间应用程序,其从内核模块接收系统调用,并进而将数据写入底层持久设备。
写入
图1示出驱动器处理对诸如硬盘驱动器的持久存储设备的写入请求的示例方法。这可以在系统上运行的驱动器中实现。
在步骤101,接收请求以在持久存储设备的第一位置写入数据。该请求可以通过驱动器的函数调用来接收。该请求可以包括数据,或者可以包括指向可以从哪里检索该数据的指针(例如,存储器地址)。
第一个位置是虚拟位置,因为它可能不对应于持久设备上的物理位置。但是,第一个位置的结构就好像它是一个物理位置,因为驱动器的重定向对于驱动器的用户是隐藏的。因此,该请求可以包括第一位置的标识符,例如块索引和磁盘标识符。因此,随后从该虚拟位置读取数据的请求应返回相同的数据,而不管数据的物理位置如何。
在某些情况下,数据可能是数据流的一部分。因此,为流中的每个块接收(或视为接收)写入数据的请求。
在步骤102,将数据写入第二位置。第二位置是物理位置,其对应于持久存储设备上的块。然而,这可能与虚拟位置指示的任何块不同。虚拟位置可能与物理位置无关。
具体地,物理位置可以是持久存储设备的头部,即,持久存储设备的下一个空闲块或者持久存储设备的下一个空闲块序列。这可以通过头部计数器记录在持久存储设备处,该头部计数器记录持久存储设备的下一个空闲块的索引。空闲块是其中未存储数据的块,或者如果存储数据,则不需要可检索该数据。以这种方式,块被增补到已经写入的块序列。
通过写入下一个空闲块(根据定义,它是空闲的),不需要确定所指示的块处的数据是否已经改变。这避免了最初从块进行读取的需要,并因此可以提高性能。
此外,因为物理位置不需要与虚拟位置相关,所以请求者(例如程序)不需要确定下一个空闲块在何处实现。作为用于检索数据的标签的位置的功能与作为用于管理持久存储设备的机制的位置的功能分离。这些功能分别由虚拟位置和物理位置执行。
在步骤103,计算由物理位置指示的块处的数据的校验和。校验和可以是加密散列。这可用于验证随后从块中检索的数据与存储在块中的数据相同。在一些情况下,校验和可以包括奇偶校验信息,其可以校正块中的一些错误。
在步骤104,更新持久存储设备的元数据。
元数据包括从虚拟位置到物理位置的映射。这将虚拟位置(请求者或其他处理可用于指示要检索的预期数据)链接到物理位置(存储实际数据的位置)。元数据还包括每个块的校验和。
元数据可以存储在持久存储设备上。例如,这可以是持久存储设备的预定部分。附加地或替代地,元数据存储在单独的持久存储设备上,该持久存储设备可以被优化以用作高速缓存。
在一些情况下,更新块的元数据包括确定第一位置指示的块的元数据是否已经存在。如果存在,则可以更新原始元数据,并插入替换元数据(或者在原始元数据上覆写新元数据)。这可以防止元数据针对同一数据具有多个条目。对应于先前位置的物理位置可以被标记为脏,表示可以自由地被写入。
在步骤105,更新头部计数器以反映下一个空闲块。
这可以包括将头部计数器递增到持久存储设备的块序列中的下一个块(或者一旦到达最终块,就绕回到第一个块)。然而,在某些情况下,可以跳过某些块(例如,如果它们对应于持久存储设备的故障部分或者如果缺少持久存储设备)。
这可能涉及计算尾部。尾部可以对应于已经写入数据的头部之前的块序列中的最早块。最早块可能没有最低的索引。如果递增的头部计数器等于尾部,则表示由头部计数器指示的标称下一个空闲块实际上不是空闲的:它具有写入其的数据。在这种情况下,可以引发通知,警告或错误和/或可以执行垃圾收集处理。参考图8示出了示例垃圾收集处理。在垃圾收集处理完成之前,驱动器可以拒绝处理任何更多的写入数据的请求。
或者,尾部可以是可以顺序写入数据的位置。在某些情况下,这可能对应于垃圾收集区域。
在一些情况下,可以将尾部记录为尾部计数器,其基于垃圾收集处理而更新。
这种方法提供了一种将数据写入持久存储设备的高性能方法,因为可以避免某些传统写入方法的读-修改-写循环。此外,由于数据是按顺序写入的,因此通常会导致更快的写入速度。
另一个好处是使用当前方法可以延长持久存储设备的寿命。在传统方法中,当单个块故障或达到其最大写入次数时,通常替换整个设备。例如,在硬盘的情况下,单个热斑(对应于一个物理地址)可能导致持久存储设备达到其使用寿命,即使持久存储设备的大部分从未被写入。但是,在当前的方法中,头部跨整个持久存储设备移动。因为数据总是写入头部,所以这自然会导致跨持久存储设备的写入水平相同。也就是说,无论正在写入的数据的虚拟地址如何,在第二次写入任何块之前,通常写入每个块一次。因此,该方法可以避免持久存储设备的过早磨损。
写入示例
图2示出如何使用图1中所示的方法将数据流写入持久存储设备的工作示例。在图2中,驱动器将数据写入单个持久存储设备(例如,硬盘驱动器)。
在200处,系统以其初始状态示出。头部计数器将位置0指示为要写入的下一个空闲块。映射为空。
在201处,驱动器接收将数据a写入虚拟位置6的请求。因为头部计数器将物理位置0指示为下一个空闲块,所以在物理位置0处写入数据a以及校验和h(a)。更新映射以显示从虚拟位置6到物理位置0的映射。头部计数器递增到物理位置1。尾部被计算为处于物理位置0,其与头部计数器不同。
在202处,驱动器接收将数据b写入虚拟位置3的请求。因为头部计数器将物理位置1指示为下一个空闲块,所以在物理位置1处写入数据b以及校验和h(b)。更新映射以显示从虚拟位置3到物理位置1的映射。头部计数器递增到物理位置2。尾部被计算为处于物理位置0,其与头部计数器不同。
在203处,驱动器接收将数据c写入虚拟位置2的请求。因为头部计数器将物理位置2指示为下一个空闲块,所以在物理位置2处写入数据c以及校验和h(c)。更新映射以显示从虚拟位置2到物理位置2的映射。头部计数器递增到物理位置3。尾部被计算为处于物理位置0,其与头部计数器不同。
在204处,驱动器接收将数据b'写入虚拟位置3的请求。因为头部计数器将物理位置3指示为下一个空闲块,所以在物理位置3处写入数据d以及校验和h(b')。更新映射以显示从虚拟位置3到物理位置3的映射。这将替换从虚拟位置3到物理位置1的先前映射。因此,物理位置1被标记为脏,并且可以在垃圾收集处理中被释放。但是,物理位置1处的数据保持在物理位置1,直到发生此垃圾收集处理。
头部计数器递增到物理位置4。尾部被计算在物理位置0,这与头部计数器不同。
这个示例说明了在当前方法下写入的顺序性。尽管驱动器接收在不同虚拟位置写入数据的请求时,驱动器实际上按顺序写入。这避免了在写入操作期间驱动器从持久存储设备读取的需要,因此可以为写入随机数据提供更高的性能。
写入阵列
可以使用类似的方法将数据作为跨持久存储设备阵列的条带写入。通过这种方式,设备的子集可以用于数据,其余设备可以用于奇偶校验。
在配置期间,驱动器可以配置为具有特定的弹性。也就是说,在n个持久存储设备的阵列中,数据以跨数据的条带形式存储。每个条带包括n个块,其中一个块位于每个持久存储设备上。在每个条带内,k个块包括数据,并且m块是奇偶校验,使得n=k+m。因此,如果条带内的任何k块可用(无论块是数据还是奇偶校验),都可以恢复数据。这可以被描述为k+m奇偶校验。一种常见的布置是8+2奇偶校验,其中在条带内有8个数据块和2个奇偶校验块,但是对于k和m,可以使用任何值。
用于在这种方案中生成奇偶校验数据的一种方法是使用擦除编码。以下更详细地描述擦除编码。
每个条带的块存储在所有持久存储设备上的相同索引的物理位置中。例如,条带0由每个设备上位置0的块组成。因此,驱动器可以维持所有设备共同的单个计数器。
虽然为了简单起见描述了单个头部计数器,但实际上每个持久存储设备可以保持单独的头部计数器。这可以允许在一个设备上进行垃圾收集,同时在另一个设备上进行写入。
后续条带使用不同的驱动器进行奇偶校验非常有用。管理此的一种方法是为每个条带提名一个起始驱动器:条带0从驱动器0开始,条带1从驱动器1开始,依此类推。这自然会导致奇偶校验块(在数据块之后写入)位于不同的驱动器上。
图3示出用于处理写入请求的示例方法,其中,数据将被存储在这样的条带中。这可以在系统上运行的驱动器中实现。
在步骤301,接收写入k个数据块的请求。该请求对应于在步骤101接收的请求。
在步骤302,在已经接收到k个数据块之后,驱动器基于写入的数据计算奇偶校验数据。这导致m个奇偶校验数据块。
在步骤303,将k个数据块和m个奇偶校验数据块中的每一个写入由头部计数器指示的物理位置处的相应的持久存储设备。这导致条带完成。另外,k+m校验和被写入元数据,每个元数据对应于一个块。
在步骤304,以与步骤105类似的方式更新头部计数器以反映每个设备处的下一个空闲块的物理位置。一旦已经在由头计数器指示的物理位置处将块写入每个持久存储设备,则可以将头计数器递增到序列中的下一个空闲位置。
由于可以避免一些传统写入方法的读取-修改-写入循环,因此该方法提供了将数据写入持久存储设备阵列的高性能方法。
这也避免了传统方法中较高奇偶性所带来的不利结果。在可以修改数据的情况下,必须在每次修改后更新奇偶校验。因此,如果条带中存在两个奇偶校验块,则修改一条数据需要数据本身的读-修改-写循环,以及每个奇偶校验块的两个进一步的读-修改-写循环。这种放大对常规系统中实际的奇偶校验水平设置了性能限制。实际上,由于这一点,传统系统中的奇偶校验限制为2。
相反,图3中所示的方法不涉及任何读-修改-写循环。因此,增加奇偶校验会以比传统方法更低的比率增加开销。因此,奇偶校验可以几乎是无限的,并且在实践中可以使用2、4或12奇偶校验。
类似地,图3中所示的方法不限于任何特定大小的阵列,并且阵列中可能存在数百个持久存储设备。实际上,可以使用具有大约10个持久存储设备的阵列。
此外,因为每个设备的操作数量相对较少,所以即使更慢的持久存储设备也可以提供高水平的性能。
在某些情况下,阵列中的一个设备可能会发生故障或以其他方式不可用。当发生这种情况时,可能已经打算写入该设备的块可以简单地写入阵列中的下一个设备。以这种方式,故障设备基本上不会妨碍写入。
在这种情况下,仍然可以说系统使用k+m奇偶校验。但是,对于每个条带,最终可能会少于k个数据块(由于故障设备)写入条带以维持m个奇偶校验块。
写入阵列的示例
图4A和4B示出示例处理,通过该处理,图3中示出的方法可用于将数据流写入持久存储设备阵列。在图4A和4B中,驱动器将数据写入五个持久设备的阵列。驱动器配置为使用3+2奇偶校验(即,每3个数据块有2个奇偶校验块)。
在400处,系统以其初始状态示出。头部计数器将位置0指示为要被写入的下一个空闲块。映射为空。驱动器0、1、2、3和4中的每一个都是空的。
在401处,驱动器接收将数据a写入虚拟位置6的请求。因为头部计数器将物理位置0指示为下一个空闲块,所以数据a以及校验和h(a)被写入驱动器0上的物理位置0。更新映射以显示从虚拟位置6到驱动器0上的物理位置0的映射。由于条带尚未完成,所以头部计数器不递增。
在402处,驱动器接收将数据b写入虚拟位置3的请求。因为头部计数器将物理位置0指示为下一个空闲块,所以数据b以及校验和h(b)被写入驱动器1上的物理位置0。更新映射以显示从虚拟位置3到驱动器1上的物理位置0的映射。由于条带尚未完成,所以头部计数器不递增。
在403处,驱动器接收将数据c写入虚拟位置2的请求。因为头部计数器将物理位置0指示为下一个空闲块,所以数据c以及校验和h(c)被写入驱动器2上的物理位置0。更新映射以显示从虚拟位置2到驱动器2上的物理位置0的映射。由于条带尚未完成,所以头部计数器不递增。
现在已经写入了3个数据块,通过向剩余的2个设备添加奇偶校验块来完成条带。基于已写入设备的数据计算奇偶校验数据。这可以从设备读取,或者可以存储在存储器中。这导致奇偶校验数据d和奇偶校验数据e。
在404处,因为头部计数器将物理位置0指示为下一个空闲块,所以奇偶校验数据d以及校验和h(d)被写入驱动器3上的物理位置0,并且奇偶校验数据e以及校验和h(e)被写入驱动器4上的物理位置0。此外,现在条带已经完成,头部计数器递增到序列中的下一个空闲位置,现在是1。
以这种方式,可以在写入操作期间写入条带而不需要驱动器从持久存储设备读取,并因此可以提供用于以任何奇偶校验级别写入随机数据的更高性能。
读取
图5示出处理读取请求的示例方法。这可以以与图1的方法相同的方式实现。
在步骤501,接收从虚拟位置读取数据的请求。可以以与步骤101处的请求相同的方式接收该请求。例如,这可以通过驱动器的函数调用来接收。该请求可以包括指向一旦检索时数据应存储的位置的指针(例如,存储器地址)。
在步骤502,从元数据获得对应于第一位置的数据的物理位置。这可以通过先前在步骤104存储的元数据的映射中找到虚拟位置并找到相应物理位置来获得。
如果元数据不包括对虚拟位置的引用,则读取请求可能失败,并且可能引发错误。
在步骤503,通过从适当的持久存储设备处的物理位置读取来检索数据。然后可以将数据存储在请求中指示的存储器位置或另一个位置。
在步骤504,验证所检索的数据以确保所检索的数据是最初存储的数据。这可能涉及计算所检索的数据的校验和并将其与关于该数据存储的校验和进行比较。如果校验和匹配,则很可能成功检索到数据。
如果校验和不匹配,但可以恢复数据,则可以执行此操作。这可以利用存储在与该数据相同的条带中的奇偶校验信息。如果无法纠正错误,则可能会引发通知、警告或错误。
然后可以将检索到的数据返回到发出读取请求的进程。这可以包括提供成功值(例如0)作为函数调用的返回值。
在一些情况下,可以省略步骤504。例如,在期望最大化吞吐量的读取上,可以选择性地跳过步骤504。
从另一个请求者的角度来看,数据存储在虚拟位置并从虚拟位置检索。因此,持久存储设备的管理和配置隐藏于试图读取数据的处理。
块重建
有时,可能无法在特定物理位置检索数据,或者物理位置可能过慢。如果步骤503由于块或设备的硬件故障而不成功,或者步骤504由于检索到的但未经验证的数据而不成功,则可能发生这种情况。当发生这种情况时,可以进行块重建处理。
图6示出用于处理丢失块的块重建的示例方法。在该示例中,数据存储在被配置为使用k+m奇偶校验的持久存储设备的阵列中。
在步骤601,驱动器从与丢失块相同的条带中的至少k个块读取数据。由于条带中的每个块来自一不同的持久存储设备,因此条带中的多个块不可能同时变得不可用。
在步骤602,驱动器使用可用数据来重建来自丢失块的数据。这是可能的,因为对于k+m奇偶校验,条带的任何k个块可用于重建该条带内的所有块。如下所述,如果条带中的块已经使用擦除编码进行编码以产生奇偶校验,则可以通过擦除解码来导出任何丢失的块。
在步骤603,重建数据被写在头部(即,如头部计数器所示的下一个空闲块)。这可以在步骤102和103以相同的方式实现。
在步骤604,更新元数据,使得对应于丢失块的虚拟位置现在被映射至写入重建数据的块。然后可以将丢失的块标记为脏(如果没有硬件问题)或将其记录为不可用(如果存在硬件问题)。
以这种方式,可以在单次读取失败后立即恢复数据。块重建处理很快发生,因为只需要重写故障的块。这允许最小的速度损失:虽然在第一次读取之后重建数据可能有轻微的延迟,但是即使硬件问题尚未解决,任何后续读取也将恢复到原始速度。
当由于持久存储设备故障而需要块重建时,可以重建所有块并将其重写为非故障设备。一旦发生此处理,阵列的速度就从退化状态恢复,而无需重新写入其他非故障持久存储设备的任何数据。
复制
在某些情况下,可能希望单个虚拟地址对应于多个物理地址。在每个物理地址处复制相同的数据。
以这种方式,读取请求可以从对应于虚拟地址的任何物理地址读取。如果其中一个物理地址的块发生故障,则读取请求可以从任何其他物理地址解析。可以使用上面提到的块重建技术来重构故障的块。这可以避免重建的延迟,同时可以发生仍然提供重建。
或者,在某些情况下,可以在物理地址之后立即存储复制项。如果第一个物理地址不可用,则可以从复制数据的下一个物理地址检索数据。
因此,从用户的角度来看,即使阵列内的持久存储设备发生故障,该阵列也可能看起来永远不会很慢。
更新
图7示出用于处理更新请求的示例方法。这可以以与图1的方法相同的方式实现。
在步骤701,接收更新来自虚拟位置的数据的请求。可以以与步骤101处的请求相同的方式接收该请求。例如,这可以通过驱动器的函数调用来接收。
在步骤702,从元数据中移除对虚拟位置的引用,并且将对应的物理位置标记为脏。这表明物理位置可供以后使用。
一旦更新元数据,就不需要进一步的持久存储设备操作。如果虚拟位置不在元数据中,则无法检索物理位置处的相应数据。在垃圾收集处理发生后,物理位置最终将被重用。
脏块(Dirty Blocks)
已经根据被标记为脏的所选块来描述更新数据。这可以通过每个条带来实现,该条带维持条带中未使用的块的数量的计数器。当块被标记为脏或不可访问时(例如,由于相应的设备故障),条带的间隙数可以递增。当每个数据块被重写到头部时(例如,在垃圾收集期间),条带的间隙数量也可以递增。一旦计数器达到预定限制(其可以是存储在条带中的非奇偶校验块的数量),条带就可以。
垃圾收集
当更新由虚拟位置指示的数据时,相应的物理位置可以被标记为脏,指示可以重用物理位置。因此,尽管最初可以在持久存储设备上顺序地写入数据,但是随着时间的推移,可能出现数据序列中的间隙。
缓解这种情况的一种方法是定期执行垃圾收集。这旨在将数据从尾部(即,写入块序列中最早的非脏块)移动到头部,直到序列中没有间隙。
可以响应于满足一个或多个垃圾收集条件来执行垃圾收集。
第一垃圾收集条件可以是持久存储设备上的间隙的数量超过预定阈值。例如,在间隙的数量超过持久存储设备的容量的1%的情况下,可以满足垃圾收集条件。
第二垃圾收集条件可以是持久存储设备的活动水平低于阈值。例如,如果持久存储设备未使用达几分钟,则可以开始垃圾收集处理。
第三垃圾收集条件可以是持久存储设备的空闲容量低于阈值。例如,当头部计数器靠近尾部时,尝试恢复一些可用空间可能是有用的。
第四垃圾收集条件可以是某个时间段已经过去。也就是说,定期开始垃圾收集处理可能是有用的。
附加地或替代地,可以在驱动器不处理请求并且存在一个或多个脏块的任何时候发生垃圾收集。
图8显示一个示例垃圾收集处理。
在步骤801,计算尾部。尾部是非脏块(即,存储数据的块),它是写入块序列中最早的块。换句话说,这是最早写入的非脏块。
在步骤802,将存储在尾部的数据写入由头部计数器指示的块。
在步骤803,更新持久存储设备的元数据。将新写入的块的虚拟地址映射到头部计数器的新条目替换用于该块的先前条目。
在步骤804,以与步骤105相同的方式更新头部计数器以反映下一个空闲块。
重复此处理,直到不再满足垃圾收集条件之一或直到没有剩余脏块为止。通过迭代地将块从尾部移动到头部,最终将没有剩余的间隙。这避免了任何。
而且,这个处理可以随时停止。一旦步骤804终止,驱动器就准备好处理进一步的请求(包括写入新块)。通过这种方式,可以启动和停止垃圾收集,而不会导致严重的停机时间。
以这种方式,当更新数据时可以恢复总存储容量而不限制其他请求的性能。
垃圾收集示例
图9示出用于执行垃圾收集的工作示例方法。例如,这可以由与执行图1的方法的驱动器相同的驱动器来执行。
在图9中,驱动器配置为使用2+1奇偶校验(即,每2个数据块有1个奇偶校验块)。在实践中,相同的方法可以应用于任何奇偶校验水平。图9中省略了头部计数器和映射。
在900处,系统被示出具有先前已被写入的数据。驱动器0在物理位置0和2处具有标记为脏的块。驱动器1在物理位置1处具有标记为脏的块。驱动器2在物理位置1处具有标记为脏的块。所有驱动器中的位置6和7处的块是空的。所有驱动器中的所有其他块都具有非脏数据。头部计数器位于物理位置6,因为它代表下一个空闲块。尾部为0,因为驱动器1上位置0处的块是最早的非奇偶校验非脏块。
在901处,尾部(位置0)处的所有非脏的非奇偶校验块中的数据已经移动到头部。驱动器0上位置0处的数据a未被移动,因为它已被标记为脏。驱动器2上位置0处的数据ab未被移动,因为它是奇偶校验数据。只有驱动器1上位置0的数据b移动到头部。这已被移动到驱动器0上的位置6。位置6从头部计数器(其指示位置6作为下一个空闲块)导出。通过在每个条带的起始驱动器的循环来导出驱动器0:由于条带在位置5处以驱动器2开始,因此,条带在位置6处以驱动器0开始。
移动之后,映射被更新,以便先前映射到驱动器1上的位置0的虚拟位置现在映射到驱动器0上的位置6。驱动器1上的位置0被标记为脏,因为不再需要数据,并且该块可以重复使用。头部计数器保持在6。尾部移动到2,因为下一个最旧的非脏的非奇偶校验数据位于驱动器2上的位置2。所有驱动器上的所有位置1都是脏的或奇偶校验(或者换句话说,条带1中的间隙数为2)。
在902处,尾部(位置2)处的所有非脏的非奇偶校验块中的数据已被移动到头部。驱动器1上的位置1数据c、驱动器2上的位置1数据d和驱动器0上的位置2的数据f不会移动,因为它已被标记为脏。驱动器0上的位置1数据cd和驱动器1上的位置2的数据ef不会移动,因为它是奇偶校验数据。只有驱动器2上位置2的数据e移动到头部。这已经被移动到驱动器1上的位置6。位置6从头部计数器(其指示位置6作为下一个空闲块)导出。驱动器1来自条带中先前写入的块:由于先前已对驱动器0写入,因此驱动器1是序列中的下一个驱动器。
移动之后,映射被更新,以便先前映射到驱动器2上的位置2的虚拟位置现在映射到驱动器1上的位置6。驱动器2上的位置2被标记为脏,因为不再需要数据,并且该块可以重复使用。
由于条带6中的数据现在已完成,因此计算奇偶校验数据be并将其写入条带6中的剩余块(即,在驱动器1上的位置6)。头部计数器移动到7,因为下一个空闲块位于位置7。尾部移动到3,因为,下一个最旧的非脏的非奇偶校验数据位于驱动器0和1上的位置3。
在此垃圾收集处理之后,所有驱动器上的所有位置0、1和2现在都可以使用。一旦条带7完成,头部计数器将循环到条带0。垃圾收集因此允许持久存储设备或持久存储设备阵列被更充分地利用。
擦除编码
如上所述,擦除编码是一种数据被编码以形成n个数据片段的方法。原始数据可从任何k个数据片段(k≤n)中恢复。每个数据片段是一个w位字,其中w可以是任何正整数。例如,1位和8位是常见的。通常,n和w的值越高,擦除编码和解码处理的计算密集度越高。
首先,将原始数据分段为w×k位数据段。
其次,通过将每个数据段分成k个w位大小的数据字来形成k个数据片段d1...dk。这些是数据字。
第三,基于数据字与系数的线性组合形成m=n-k个数据片段c1...cm,使得:
ci=ai,0d0+…+αi,kdk
其中,算术是在伽罗瓦域GF(2w)上定义的。这些是编码字。
数据片段可以存储在持久存储设备阵列上的条带中,使得数据片段分布在持久存储设备上。在某些情况下,不同的持久存储设备可以容纳不同数量的数据片段。可选地,还存储基于数据段的校验和。一旦存储了所有数据段,也可以存储基于原始数据的进一步校验和。
有多种方法可以选择系数。一种方法是使用CauchyReed-Solomon代码。这通过在GF(2w)中选择n个数并将它们分成两个不同的集合X={x1,...,xm}和Y={y1,...,yk},其中
Figure BDA0002186657380000202
来实现,使得:
Figure BDA0002186657380000201
其中,算术是在伽罗瓦域GF(2w)上定义的。
一旦存储了数据,就可以使用任何k个数据片段来检索数据。例如,如果获得了数据字d1...dk,则可以使用它们如何被分段的逆来组合这些数据字。如果使用编码字ci,则可以求解基于上述等式的等式系以获得丢失的数据片段。
在某些情况下,可以使用一个或多个GPU有效地执行擦除编码,而请求本身由一个或多个CPU处理。这可以提高整体性能。
擦除编码提供了一种允许高弹性和灵活性的方法。数据片段可以跨多个独立系统存储。如果丢失m个或更少的片段,则可以恢复相应的数据片段,从而可以计算原始数据。此外,任何k个数据片段都可用于恢复原始数据,这允许任何存储系统进行响应。
系统
图10示出示例计算机系统1000的框图。
系统1000包括CPU(中央处理单元)1010、主存储器1020、一个或多个外围设备1030、以及GPU(图形处理单元)1050。CPU 1010、主存储器1020、外围设备1030和GPU 1050通过总线1040连接。在PCIe(PCI Express)拓扑的情况下,总线1040包括根复合体,并且外围设备1030和GPU 1050中的每一个是PCIe端点。GPU 1050可以直接经由总线1040与外围设备1030通信。在一些情况下,提供多于一个CPU 1010和/或多于一个GPU 1050。
外围设备1030可以包括持久存储设备(诸如硬盘驱动器、固态驱动器等)、存储控制器(诸如RAID控制器),网络控制器(诸如网络接口卡)、交换机(例如,配置为连接其他外围设备的PCIe交换机)或任何各种设备。
外围设备1030和GPU 1050可以经由总线1040访问主存储器1020。通过DMA(直接存储器访问),这可以允许外围设备1030或GPU 1050从主存储器读取数据并写入数据至主存储器。这可能涉及将数据从主存储器1020复制到外围设备1030或GPU 1050本地的存储器。
在一些情况下,CPU 1010和GPU 1050的存储空间可以通过统一虚拟存储器共享。这允许指向单个存储器地址的指针在CPU和GPU之间传递,而不需要在主存储器1020和本地存储器之间复制数据。
计算机系统500可用于实现上述方法。例如,CPU 1010或GPU 1050可以运行作为一个或多个存储设备外围设备1030的驱动器的程序。
存储设备外围设备1030可以是不同类型的。相对快速的存储设备外围设备1030可以用于存储元数据(诸如虚拟和物理位置之间的映射),并且相对慢的存储设备外围设备1030的阵列可以用于存储底层数据。在一些情况下,用于存储底层数据的一些存储设备外围设备1030可以是混合类型,包括一个或多个硬盘驱动器、固态驱动器、RAM驱动器或非易失性RAM驱动器。
解释
上面已经描述了许多方法。应当理解,这些方法中的任何一种都可以通过一系列指令来体现,这些指令可以形成计算机程序。这些指令或该计算机程序可以存储在可以是非暂时性的计算机可读介质上。当执行时,这些指令或该程序可以使处理器(例如CPU或GPU)执行所描述的方法。
在已经描述了由处理器实现的方法的情况下,这可以包括多个处理器。也就是说,至少在处理器的情况下,单数应该被解释为包括复数。在方法包括多个步骤的情况下,不同步骤或步骤的不同部分可以由不同的处理器执行。在一些情况下,可以由第一类型的处理器执行一个步骤(例如,可以由GPU执行大数据集的处理)且另一步骤可以由第二类型的处理器执行(诸如,由CPU执行的元数据查找)。
可以改变方法内的步骤的顺序,使得步骤不按顺序或并行地执行,除非一个步骤依赖于已经执行的另一个步骤,或者上下文另外需要。
除非另有说明,否则术语“包括”和其他语法形式旨在具有包括性含义。也就是说,它们应被视为包括所列组件,并且可能包括其他非指定组件或元素。
虽然已经通过某些实施方式的描述并参考附图解释了本发明,但是本发明并不限于这些细节。本领域技术人员容易想到其他优点和修改。因此,本发明在其更广泛的方面不限于具体细节,代表性装置和方法,以及所示和所述的说明性示例。因此,在不脱离本发明总体构思的精神或范围的情况下,可以偏离这些细节。

Claims (21)

1.一种方法,包括:
接收在虚拟位置写入数据的请求;
将所述数据写入持久存储设备上的物理位置;以及
记录从所述虚拟位置到所述物理位置的映射;
其中,所述物理位置与所述持久存储设备上的块序列中的下一个空闲块对应。
2.根据权利要求1所述的方法,其中,所述虚拟位置和所述物理位置不相关。
3.根据权利要求1或2所述的方法,其中,所述物理位置由头部计数器确定。
4.根据权利要求3所述的方法,还包括:
在将所述数据写入所述物理位置之后,更新所述头部计数器。
5.根据权利要求1至4中任一项所述的方法,还包括:
接收将其他数据写入相应虚拟位置的一个或多个请求;
其中,所述数据和所述其他数据形成数据流。
6.根据权利要求1至5中任一项所述的方法,其中,在不执行从所述持久存储设备进行读取的情况下,发生将所述数据写入第二位置。
7.根据权利要求1至6中任一项所述的方法,还包括:
计算针对所述数据的校验和;以及
在与所述持久存储设备相关联的元数据中记录所述校验和。
8.根据权利要求1至7中任一项所述的方法,还包括:
确定满足垃圾收集条件。
9.根据权利要求8所述的方法,其中,所述垃圾收集条件包括以下各项中的一项或多项:
所述持久存储设备上的间隙数量超过预定阈值;
所述持久存储设备的活动水平低于阈值;
所述持久存储设备的空闲容量低于阈值;或者
经过了一时间段。
10.根据权利要求8或9所述的方法,还包括:响应于确定满足垃圾收集条件:
确定所述块序列的尾部的块;
将所述块中的数据写入所述块序列的头部;以及
基于该写入更新所述映射。
11.根据权利要求1至10中任一项所述的方法,其中,将所述数据写入持久存储设备上的物理位置包括:
将所述数据写入持久存储设备上的物理位置,所述物理位置对应于条带内的块,所述条带包括对应的多个块,每个块是多个持久存储设备中的每一者上的物理位置。
12.根据权利要求11所述的方法,还包括:
确定所述条带内的预定数量的块已经被写入;
计算与写入所述条带内的所述预定数量的块的数据相对应的奇偶校验;以及
将奇偶校验数据写入所述条带内的一个或多个块中。
13.根据权利要求12所述的方法,还包括:
检索针对所检索的数据的校验和;
计算针对所检索的数据的校验和;以及
将所计算的校验和与所检索的校验和进行比较。
14.根据权利要求11至13中任一项所述的方法,还包括:
确定条带的块丢失;
从所述条带中的一个或多个其他块重建丢失的所述块处的数据;
将所述数据写入所述块序列的头部;以及
根据该写入更新所述映射。
15.根据权利要求11至14中任一项所述的方法,还包括:
确定多个持久存储设备中的持久存储设备不能用;以及
其中,将所述数据写入持久存储设备上的物理位置包括:
将所述数据写入所述持久存储设备中的一不同的持久存储设备上的物理位置。
16.根据权利要求1至14中任一项所述的方法,其中,记录从所述虚拟位置到所述物理位置的映射包括:
识别从所述虚拟位置到先前物理位置的映射;以及
更新所述映射以记录从所述虚拟位置到所述物理位置的映射。
17.根据权利要求16所述的方法,还包括:
将与所述先前物理位置对应的块记录为脏。
18.根据权利要求1至17中任一项所述的方法,还包括:
将数据的副本写入后续物理位置。
19.一种系统,包括:
一个或多个处理器;以及
存储器;
其中,所述存储器包括指令,所述指令在由所述一个或多个处理器执行时,配置所述一个或多个处理器以执行权利要求1至18中任一项所述的方法。
20.一种或多种非暂时性计算机可读介质,包括指令,当由一个或多个处理器执行时,所述指令使所述一个或多个处理器执行权利要求1至18中任一项所述的方法。
21.一种计算机程序,当由一个或多个处理器执行时,使所述一个或多个处理器执行权利要求1至18中任一项所述的方法。
CN201910817188.1A 2018-08-31 2019-08-30 持久存储设备管理 Pending CN110874194A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862725691P 2018-08-31 2018-08-31
US201862725703P 2018-08-31 2018-08-31
US62/725,691 2018-08-31
US62/725,703 2018-08-31
US201862746981P 2018-10-17 2018-10-17
US62/746,981 2018-10-17

Publications (1)

Publication Number Publication Date
CN110874194A true CN110874194A (zh) 2020-03-10

Family

ID=67734509

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201910816269.XA Pending CN110874451A (zh) 2018-08-31 2019-08-30 矢量处理器存储
CN201910815672.0A Pending CN110874193A (zh) 2018-08-31 2019-08-30 使用非易失性锁定存储器的块设备接口
CN201910817188.1A Pending CN110874194A (zh) 2018-08-31 2019-08-30 持久存储设备管理

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201910816269.XA Pending CN110874451A (zh) 2018-08-31 2019-08-30 矢量处理器存储
CN201910815672.0A Pending CN110874193A (zh) 2018-08-31 2019-08-30 使用非易失性锁定存储器的块设备接口

Country Status (5)

Country Link
US (7) US11347653B2 (zh)
EP (3) EP3617868A1 (zh)
JP (3) JP2020042805A (zh)
CN (3) CN110874451A (zh)
TW (3) TW202011202A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347653B2 (en) 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
US11907068B2 (en) * 2021-02-16 2024-02-20 Nyriad, Inc. Read request response for reconstructed data in a degraded drive
US20230195319A1 (en) * 2021-12-21 2023-06-22 Nyriad, Inc. Methods of Arranging Data on Persistent Storage Device
US20230195329A1 (en) * 2021-12-21 2023-06-22 Nyriad, Inc. Methods of Administering Metadata for Persistent Storage Device

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
CN101419573A (zh) * 2008-12-01 2009-04-29 成都市华为赛门铁克科技有限公司 一种存储管理的方法、系统和存储设备
CN102945201A (zh) * 2011-09-11 2013-02-27 微软公司 已验证数据集合的非易失性介质日志记录
CN103257831A (zh) * 2012-02-20 2013-08-21 深圳市腾讯计算机系统有限公司 存储器的读写控制方法及对应的存储器
CN104063186A (zh) * 2014-06-30 2014-09-24 成都万维图新信息技术有限公司 一种电子设备的数据访问方法
US20140325117A1 (en) * 2013-04-30 2014-10-30 Lsi Corporation Flash translation layer with lower write amplification
CN106383666A (zh) * 2016-09-07 2017-02-08 东信和平科技股份有限公司 一种数据存储方法及装置

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5282274A (en) * 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5459857A (en) * 1992-05-15 1995-10-17 Storage Technology Corporation Fault tolerant disk array data storage subsystem
JP3905992B2 (ja) * 1999-03-23 2007-04-18 株式会社東芝 デジタルデータ記録装置
US20040123032A1 (en) 2002-12-24 2004-06-24 Talagala Nisha D. Method for storing integrity metadata in redundant data layouts
US7111118B2 (en) 2003-10-08 2006-09-19 Lsi Logic Corporation High performance raid mapping
US7418649B2 (en) * 2005-03-15 2008-08-26 Microsoft Corporation Efficient implementation of reed-solomon erasure resilient codes in high-rate applications
US7594087B2 (en) * 2006-01-19 2009-09-22 Sigmatel, Inc. System and method for writing data to and erasing data from non-volatile memory
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US20090203430A1 (en) * 2008-02-07 2009-08-13 Igt Hybrid memory system and spin-buffer journaling in a gaming machine
KR101449524B1 (ko) * 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
US9395929B2 (en) 2008-04-25 2016-07-19 Netapp, Inc. Network storage server with integrated encryption, compression and deduplication capability
US20100037056A1 (en) * 2008-08-07 2010-02-11 Follis Benjamin D Method to support privacy preserving secure data management in archival systems
US20100095015A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Methods and systems for bandwidth amplification using replicated fragments
EP2630571B1 (en) 2010-10-21 2020-10-14 Oracle International Corporation Two stage checksummed raid storage model
US9767098B2 (en) * 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9058223B2 (en) 2011-04-22 2015-06-16 Microsoft Technology Licensing Llc Parallel entropy encoding on GPU
US9183667B2 (en) 2011-07-15 2015-11-10 Kirill Garanzha Out-of-core ray tracing with memory-efficient page generation
KR101522848B1 (ko) * 2011-10-05 2015-05-26 엘에스아이 코포레이션 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
WO2014003599A1 (en) * 2012-06-29 2014-01-03 Ems Corparation Redundant disc encoding via erasure decoding
FI125308B (en) * 2012-07-05 2015-08-31 Blancco Oy Ltd Device, arrangement, method, and computer program for erasing data stored in mass storage
US9779035B1 (en) * 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9164702B1 (en) * 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US9152552B2 (en) 2012-09-11 2015-10-06 International Business Machines Corporation Securing sensitive information in a network cloud
US9639457B1 (en) 2012-12-20 2017-05-02 Datadirect Networks, Inc. Data storage system and method for data migration between high-performance computing architectures and data storage devices using storage controller with distributed XOR capability
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9092152B1 (en) 2013-03-14 2015-07-28 Datadirect Networks, Inc. Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same
US9792220B2 (en) 2013-03-15 2017-10-17 Nvidia Corporation Microcontroller for memory management unit
US9158927B1 (en) 2013-06-24 2015-10-13 Amazon Technologies, Inc. Cross-region recovery of encrypted, erasure-encoded data
US9311011B2 (en) * 2013-08-07 2016-04-12 Qualcomm Incorporated Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
US9405623B2 (en) * 2013-09-25 2016-08-02 Xyratex Technology Limited Method of, and apparatus for, layout rectification of erasure encoded storage systems
US9571125B2 (en) * 2013-10-03 2017-02-14 Futurewei Technologies, Inc. Systems and methods of vector-DMA cache-XOR for MPCC erasure coding
US9268640B1 (en) 2013-12-20 2016-02-23 Emc Corporation Limiting data loss on parity RAID groups
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
US9075773B1 (en) * 2014-05-07 2015-07-07 Igneous Systems, Inc. Prioritized repair of data storage failures
US10608784B2 (en) 2016-03-15 2020-03-31 ClineHair Commercial Endeavors Distributed storage system data management and security
CN104410725A (zh) 2014-09-17 2015-03-11 广州杰赛科技股份有限公司 Gpu的处理方法、系统以及基于gpu的dns解析方法和系统
RU2580016C1 (ru) 2014-10-17 2016-04-10 Закрытое акционерное общество "Лаборатория Касперского" Способ передачи управления между областями памяти
US9823843B2 (en) * 2015-07-23 2017-11-21 Qualcomm Incorporated Memory hierarchy monitoring systems and methods
US9823968B1 (en) 2015-08-21 2017-11-21 Datadirect Networks, Inc. Data storage system employing a variable redundancy distributed RAID controller with embedded RAID logic and method for data migration between high-performance computing architectures and data storage devices using the same
US10445850B2 (en) 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
US9940256B2 (en) 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for managing cache line updates for writes, reads, and destages in storage write cache
JP6113816B1 (ja) * 2015-11-18 2017-04-12 株式会社東芝 情報処理システム、情報処理装置、及びプログラム
US10216419B2 (en) 2015-11-19 2019-02-26 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit
US20170206033A1 (en) * 2016-01-19 2017-07-20 SK Hynix Inc. Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme
EP3203377A1 (en) * 2016-02-08 2017-08-09 Wipro Limited Method and system for optimized garbage collection in a storage device
CN107102957A (zh) 2016-02-22 2017-08-29 深圳市知穹科技有限公司 一种基于gpu与nic之间的内存高速直接交换的方法及系统
US10152376B2 (en) * 2016-06-29 2018-12-11 EMC IP Holding Company LLC Data object recovery for storage systems
US10248326B2 (en) * 2016-06-29 2019-04-02 EMC IP Holding Company LLC Incremental erasure coding for storage systems
TWI592799B (zh) * 2016-07-01 2017-07-21 群聯電子股份有限公司 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US9996411B1 (en) 2016-11-29 2018-06-12 International Business Machines Corporation In-channel memory mirroring
US10296224B2 (en) * 2016-12-21 2019-05-21 Intel Corporation Apparatus, system and method for increasing the capacity of a storage device available to store user data
US20180181324A1 (en) 2016-12-26 2018-06-28 EMC IP Holding Company LLC Data protection with erasure coding and xor
WO2019040418A1 (en) 2017-08-22 2019-02-28 Albert Einstein College Of Medicine, Inc. VIRAL INHIBITOR WITH BROAD SPECTRUM
CN109542335B (zh) * 2017-09-22 2022-04-01 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
CN107844431B (zh) * 2017-11-03 2022-01-25 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
CN110633225B (zh) * 2018-06-25 2022-11-15 慧荣科技股份有限公司 实体存储对照表产生装置及方法
US10783022B2 (en) * 2018-08-03 2020-09-22 EMC IP Holding Company LLC Immediate replication for dedicated data blocks
US11347653B2 (en) 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
US11115057B2 (en) * 2020-02-07 2021-09-07 EMC IP Holding Company LLC Efficient erasure coding of mid-size data objects

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
CN101419573A (zh) * 2008-12-01 2009-04-29 成都市华为赛门铁克科技有限公司 一种存储管理的方法、系统和存储设备
CN102945201A (zh) * 2011-09-11 2013-02-27 微软公司 已验证数据集合的非易失性介质日志记录
CN103257831A (zh) * 2012-02-20 2013-08-21 深圳市腾讯计算机系统有限公司 存储器的读写控制方法及对应的存储器
US20140325117A1 (en) * 2013-04-30 2014-10-30 Lsi Corporation Flash translation layer with lower write amplification
CN104063186A (zh) * 2014-06-30 2014-09-24 成都万维图新信息技术有限公司 一种电子设备的数据访问方法
CN106383666A (zh) * 2016-09-07 2017-02-08 东信和平科技股份有限公司 一种数据存储方法及装置

Also Published As

Publication number Publication date
CN110874193A (zh) 2020-03-10
US20200073824A1 (en) 2020-03-05
EP3617868A1 (en) 2020-03-04
US20220156200A1 (en) 2022-05-19
EP3617892A1 (en) 2020-03-04
TW202014908A (zh) 2020-04-16
TW202011202A (zh) 2020-03-16
JP2020038650A (ja) 2020-03-12
EP3627325A3 (en) 2020-07-29
EP3617892B1 (en) 2022-05-11
US11263144B2 (en) 2022-03-01
US11347653B2 (en) 2022-05-31
US11782844B2 (en) 2023-10-10
US11263145B2 (en) 2022-03-01
JP2020042805A (ja) 2020-03-19
TW202014884A (zh) 2020-04-16
US20220253385A1 (en) 2022-08-11
US20200073663A1 (en) 2020-03-05
US20200073818A1 (en) 2020-03-05
US20220138111A1 (en) 2022-05-05
US20230418761A1 (en) 2023-12-28
JP2020038649A (ja) 2020-03-12
EP3627325A2 (en) 2020-03-25
CN110874451A (zh) 2020-03-10

Similar Documents

Publication Publication Date Title
US10956258B2 (en) Systems and methods for adaptive data storage
US11347653B2 (en) Persistent storage device management
US9952781B2 (en) Adaptive storage reliability management
US20180314627A1 (en) Systems and Methods for Referencing Data on a Storage Medium
KR101292914B1 (ko) 데이터 복원 시스템, 방법 및 컴퓨터 판독가능한 매체
US7386758B2 (en) Method and apparatus for reconstructing data in object-based storage arrays
US7206991B2 (en) Method, apparatus and program for migrating between striped storage and parity striped storage
JP6175684B2 (ja) Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ
US20090204846A1 (en) Automated Full Stripe Operations in a Redundant Array of Disk Drives
US7464322B2 (en) System and method for detecting write errors in a storage device
US9990263B1 (en) Efficient use of spare device(s) associated with a group of devices
JP2004213647A (ja) データ記憶装置およびシステム用のログ構造の書込みキャッシュ
CN104809032A (zh) 用于存储系统中服务感知的奇偶校验放置的方法和系统
TWI461901B (zh) 資料儲存與重建的方法與系統
US20050278568A1 (en) Method and system for high bandwidth fault tolerance in a storage subsystem
US8140752B2 (en) Method of executing a background task and an array controller
US11907068B2 (en) Read request response for reconstructed data in a degraded drive
JP2005004733A (ja) ストレージ・システムにおいて書込みエラーを検出するための配置構成および方法
US20240053920A1 (en) Memory System and Method for Use In the Memory System
EP0831484A1 (en) Data reconstruction method and data storage system
CN117055807A (zh) 数据存储方法、装置、计算机设备和存储介质
WO2010150283A2 (en) Disk storage performance using digital memory and data compression

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40025859

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Country or region after: New Zealand

Address after: Cambridge, New Zealand

Applicant after: Nereid Co.

Address before: Cambridge, New Zealand

Applicant before: NeRead Co.,Ltd.

Country or region before: New Zealand

TA01 Transfer of patent application right

Effective date of registration: 20240520

Address after: USA New York

Applicant after: Daedaros Cloud LLC

Country or region after: U.S.A.

Address before: Cambridge, New Zealand

Applicant before: Nereid Co.

Country or region before: New Zealand