CN109582219A - 存储***、计算***及其方法 - Google Patents
存储***、计算***及其方法 Download PDFInfo
- Publication number
- CN109582219A CN109582219A CN201810985334.7A CN201810985334A CN109582219A CN 109582219 A CN109582219 A CN 109582219A CN 201810985334 A CN201810985334 A CN 201810985334A CN 109582219 A CN109582219 A CN 109582219A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- equipment
- parity
- daily record
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据各种方面,提供了一种存储***,该存储***包括多个存储设备以及一个或多个处理器,该一个或多个处理器被配置为:在多个存储设备上存储用户数据,所存储的用户数据与冗余数据和日志数据一起分布在多个存储设备之中;生成与冗余数据和日志数据相关联的分类,以提供已分类的冗余数据和已分类的日志数据,并且根据与冗余数据和日志数据相关联的分类在多个存储设备中的相应存储设备上写入已分类的冗余数据和已分类的日志数据。
Description
技术领域
各种方面总体上涉及存储***和用于操作存储***的方法。
背景技术
通常,高效的数据处理(例如,包括存储、更新和/或读取数据)可能变得越来越重要,因为例如数据量和数据流量随着现代技术而增加。在一个或多个应用中,数据以RAID(独立磁盘冗余阵列或独立驱动器冗余阵列)技术存储。RAID存储技术可以以硬件实现(也称为硬件RAID),或者作为软件实现(也称为软件RAID),或者以硬件和软件实现(也称为混合RAID或主机RAID)。可以以各种类型或修改来提供RAID存储技术。这些类型或修改可以关于所使用的存储设备的数量、划分的类型和/或对相应存储设备进行寻址和/或在所使用的存储设备中的一个或多个故障的情况下防止数据丢失的嵌入式功能而彼此不同。不同类型的RAID存储技术可以称为RAID级别。目前,可以使用若干标准RAID级别和非标准RAID级别,例如,RAID-0、RAID-1、RAID-5和RAID-6等。然而,可以存在对标准RAID级别和非标准RAID级别的各种组合或修改,导致大量可能的RAID级别,例如,RAID-01、RAID-05、RAID-10、RAID-1.5、RAID-15、RAID-1E、RAID-1E0、RAID-30、RAID-45、RAID-50、RAID-51、RAID-53、RAID-55、RAID-5E、RAID-5EE、RAID-5DE、RAID-60、矩阵-RAID、RAID-S、RAID-TP、RAID-Z等。
附图说明
在整个附图中,应该注意,相同的附图标记用于描绘相同或相似的元素、特征和结构。附图不一定按比例绘制,而是通常将重点放在说明本公开的方面上。在以下描述中,参考以下附图描述本公开的一些方面,其中:
图1以示意图示出了根据各种方面的存储***;
图2以示意图示出了根据各种方面的存储***的多个存储设备;
图3以示意图示出了根据各种方面的存储***的一个或多个处理器;
图4A至图4C示出了根据各种方面的用于未分类数据和已分类数据的各种写入策略;
图5示出了根据各种方面的用于操作存储***的方法的示意流程图;
图6示出了根据各种方面的用于操作存储***的方法的示意流程图;
图7A至图7C示出了根据各种方面的用于已分类数据的写入策略;
图8A以示意图示出了根据各种方面的存储***和对存储***进行存取的示意图;
图8B以示意图示出了根据各种方面的存储***;
图8C示出了根据各种方面的用于操作存储***的方法的示意流程图;以及
图9A和图9B分别示出了根据各种方面的针对存储***的写入放大测量。
具体实施方式
以下详细描述参考附图,附图通过图示的方式示出了可以实践本公开的具体细节和方面。足够详细地描述这些方面,以使本领域技术人员能够实践本公开。可以利用其他方面,并且可以在不脱离本公开的范围的情况下进行结构、逻辑和电气改变。各种方面不一定是相互排斥的,因为一些方面可以与一个或多个其他方面组合以形成新的方面。结合方法描述各种方面,并且结合设备描述各种方面。然而,可以理解,结合方法描述的方面可以类似地应用于设备,反之亦然。
术语“至少一个”和“一个或多个”可以理解为包括大于或等于一的任何整数,即一个、两个、三个、四个[……]等。术语“多个”可以理解为包括大于或等于二的任何整数,即两个、三个、四个、五个[……]等。
关于一组元素的短语“至少一个”在本文中可以用于表示来自由元素组成的组中的至少一个元素。例如,关于一组元素的短语“至少一个”在本文中可以用于表示以下的选择:所列元素中的一个、复数个所列元素中的一个、复数个个体所列元素或复数个多个所列元素。
说明书和权利要求中的词语“复数”和“多个”明确地指代大于一的量。因此,任何明确地引用上述单词的短语(例如,“复数个[对象]”、“多个[对象]”)指代一定量的对象明确地指所述对象中的多于一个对象。在说明书和权利要求书中的术语“(……的)组”、“(……的)集”、“(……的)集合”、“(……的)系列”、“(……的)序列”、“(……的)群组”等(如果有的话)指代等于或大于一的量,即一个或多个。
尽管本文可以使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受到这些术语的限制。这些术语可以仅用于将一个元件、组件、区域、层和/或部分与另一区域、层或部分区分开。除非上下文明确指出,否则诸如“第一”、“第二”和其他数值术语之类的术语当在本文中使用时不暗示序列或次序。因此,在不脱离示例方面的教导的情况下,下面讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
如本文使用的术语“数据”可以理解为包括任何合适的模拟或数字形式的信息,例如,作为文件、文件的一部分、一组文件、信号或流、信号或流的一部分、一组信号或流等来提供。此外,术语“数据”还可以用于表示对信息的引用,例如,以指针的形式。
例如本文使用的术语“处理器”或“控制器”可以理解为允许处理数据的任何种类的实体。可以根据由处理器或控制器执行的一个或多个特定功能来处理数据。此外,如本文使用的处理器或控制器可以理解为任何种类的电路,例如,任何种类的模拟或数字电路。例如本文使用的术语“处置”或“处理”(指数据处理、文件处理或请求处理)可以理解为任何种类的操作(例如,I/O操作),或任何种类的逻辑运算。I/O(输入/输出)操作可以是例如存储(也称为写入)和读取。
因此,处理器或控制器可以是或包括模拟电路、数字电路、混合信号电路、逻辑电路、处理器、微处理器、中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、集成电路、专用集成电路(ASIC)等或其任何组合。下面将更详细描述的相应功能的任何其他种类的实现方式也可以被理解为处理器、控制器或逻辑电路。应当理解,本文详述的处理器、控制器或逻辑电路中的任何两个(或更多个)可以实现为具有等同功能等的单个实体,并且相反地,本文详述的任何单个处理器、控制器或逻辑电路可以实现为具有等同功能等的两个(或更多个)单独实体。
在当前技术中,软件和硬件实现的数据处理之间的差异可能模糊,因此必须理解,本文详述的处理器、控制器或电路可以以软件、硬件或作为包括软件和硬件的混合实现方式来实现。
本文详述的术语“***”(例如,存储***、RAID***、计算***等)可以理解为一组交互元件;通过示例而非限制的方式,这些元件可以是一个或多个机械组件、一个或多个电子组件、一个或多个指令(例如,编码在存储介质中)、一个或多个处理器等。
本文详述的术语“存储”(例如,存储设备、存储***等)可以理解为任何合适类型的存储器或存储器设备,例如,硬盘驱动器(HDD)、固态驱动器(SSD)和任何其他合适的存储器设备。术语存储在本文中可以用于表示例如基于非易失性存储器的永久数据存储。
如本文所使用的,术语“存储器”、“存储器设备”等可以理解为非暂时性计算机可读介质,其中可以存储数据或信息以供取回。因此,对包括在本文中的“存储器”的引用可以理解为指代易失性或非易失性存储器,包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、固态存储装置、磁带、硬盘驱动器、光驱动器、3D XPointTM技术等或其任何组合。此外,应当认识到,寄存器、移位寄存器、处理器寄存器、数据缓冲器等在本文中也由术语存储器包含。应当认识到,被称为“存储器”或“一个存储器”的单个组件可以由多于一种不同类型的存储器组成,并且因此可以指代包括一种或多种类型的存储器的集体组件。容易理解的是,任何单个存储器组件可以分成多个集体等同的存储器组件,反之亦然。此外,虽然存储器可以被描绘为与一个或多个其他组件分离(例如在附图中),但是应当理解,存储器可以集成在另一组件内,例如,在公共集成芯片上。
易失性存储器可以是使用电力来维持由介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的RAM,例如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在一些方面,存储器组件的DRAM可以符合联合电子设备工程委员会(JEDEC)颁布的标准,例如,用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2SDRAM的JESD79-2F、用于DDR3SDRAM的JESD79-3F、用于DDR4SDRAM的JESD79-4A、用于低功率DDR(LPDDR)的JESD209、用于LPDDR2的JESD209-2、用于LPDDR3的JESD209-3以及用于LPDDR4的JESD209-4(这些标准可以在www.jedec.org获得)。这些标准(和类似标准)可以被称为基于DDR的标准,并且实现这种标准的存储设备的通信接口可以被称为基于DDR的接口。
可以将各种方面应用于包括非易失性存储器的任何存储器设备。在一个方面,存储器设备是区块可寻址存储器设备,例如,基于与非(NAND)逻辑或者或非(NOR)逻辑技术的那些存储器设备。存储器还可以包括下一代非易失性设备,例如,3D XPointTM技术存储器设备,或其他字节可寻址的原位写入非易失性存储器设备。3D XPointTM技术存储器可以包括无晶体管可堆叠交叉点架构,其中存储器单元位于字线和位线的交叉处并且可单独寻址,并且其中位存储基于体电阻的变化。
在一些方面,存储器设备可以是或可以包括使用硫属化物玻璃的存储器设备,多阈值级别NAND闪速存储器,NOR闪速存储器,单级或多级相变存储器(PCM),电阻式存储器,纳米线存储器,铁电晶体管随机存取存储器(FeTRAM),反铁电存储器,包含忆阻器技术的磁阻随机存取存储器(MRAM)存储器,包括金属氧化物基、氧空位基的电阻式存储器和导电桥随机存取存储器(CB-RAM),或自旋移矩(STT)-MRAM,基于自旋电子磁结存储器的设备,基于磁隧道结(MTJ)的设备,基于DW(畴壁)和SOT(自旋轨道转移)的设备,基于晶闸管的存储器设备或者上述设备中的任一个的组合或其他存储器。术语存储器或存储器设备可以指管芯本身和/或封装的存储器产品。
根据各种方面,可以提供计算***和/或存储***,计算***和/或存储***包括基于多个成员存储设备和用于高效地对写入相应成员存储设备上的数据进行处理的一个或多个策略的RAID。说明性地,可以提供RAID***,或者换言之,可以提供实现一个或多个RAID功能的计算***和/或存储***。此外,可以提供用于操作RAID***的对应方法。
根据各种方面,本文描述的RAID***可以基于利用分布式冗余信息进行条带化(例如,在比特级、字节级或区块级条带化)。根据各种方面,本文描述的RAID***可以是RAID-5、RAID-6或基于其的RAID级别。根据各种方面,本文描述的RAID***可以基于利用分布式奇偶校验区块的区块级条带化。根据各种方面,奇偶校验信息可以用作用于纠错的冗余信息,例如,用于在RAID***的成员存储设备中的一个成员存储设备故障的情况下防止信息丢失。各种方面涉及具有针对存储设备上的物理数据放置(例如,针对NAND物理数据放置)的奇偶校验和提前写入日志分类的RAID(例如,5/6/EC)。
作为示例,RAID-5可以利用分布式奇偶校验实现区块级条带化。奇偶校验数据可以分布在RAID***中使用的存储设备(也称为成员存储设备或成员驱动器)之中。在RAID***的操作期间,成员存储设备可能故障或可能发生任何其他错误。在这种情况下,成员存储设备中的一个成员存储设备的数据可能丢失。可以基于分布式奇偶校验数据和来自其余存储设备的数据来重新计算这些丢失的数据。根据各种方面,基于利用分布式奇偶校验数据的条带化的RAID***可以包括至少三个存储设备。在这种情况下,可以使用至少三个单个物理驱动器,例如,至少三个硬盘驱动器或至少三个固态驱动器或其一些组合。可替代地,例如,在虚拟化中,可以使用至少三个逻辑存储设备,独立于底层物理驱动器的数量。
根据各种方面,奇偶校验数据(或其他合适的冗余信息)可以在RAID***中用于容错。可以通过基于来自成员存储设备中的两个或更多个成员存储设备的数据(本文称为用户数据)进行的计算来提供奇偶校验数据。奇偶校验数据(作为计算的结果)可以存储在成员存储设备中的另一成员存储设备上。该计算可以基于逻辑XOR(异或门)运算,其说明性地提供奇偶校验的信息。然而,可以以类似的方式使用除XOR之外的其他逻辑运算来提供冗余数据。
通常,在RAID***崩溃的情况下,可能发生奇偶校验不一致。作为示例,***崩溃或I/O操作的另一中断可能最终处于奇偶校验信息可能与对应的用户数据不一致的损坏状态。从该损坏状态,奇偶校验信息可能不足以进行数据恢复。在将用户数据或奇偶校验数据中的一个写入并且不对另一个进行对应的写入操作的情况下,可能发生损坏状态。在RAID***中,奇偶校验不一致问题也可以称为写入空洞(write hole)或RAID写入空洞。因此,RAID写入空洞可能是例如由对所使用的数据和对应的奇偶校验数据进行的写入操作中断引起的数据损坏问题。
图1以示意图示出了根据各种方面的存储***100。如上所述,存储***100可以是RAID存储***。存储***100可以包括多个存储设备101,也称为成员存储设备。作为示例,图1中示出了数量为三个的存储设备101a、101b、101c。然而,可以以类似的方式使用多于三个存储设备,例如,可以在RAID-5配置中使用四个存储设备101,可以在RAID-6配置中使用五个存储设备,等等。
根据各种实施例,存储***100可以包括一个或多个处理器102。一个或多个处理器102可以被配置为接收104要存储的用户数据111。一个或多个处理器102可以被配置使要存储的用户数据111分布在多个存储设备101之中。用户数据111可以分布在多个存储设备101之中,并且与对应的冗余数据113一起存储在其中用于数据恢复。通过该交互,可以在例如多个存储设备中的一个存储设备故障的情况下恢复用户数据。此外,日志数据115(例如,对应于冗余数据113和/或用户数据111)可以分布在多个存储设备101之间用于写入空洞保护。数据(例如,用户数据111和/或冗余数据113)可以经由条带化(例如,在比特级、字节级或区块级)跨多个存储设备101分布。
根据各种方面,一个或多个处理器102可以被配置为生成与冗余数据113和/或日志数据115相关联的分类124。说明性地,可以提供已分类的冗余数据113和已分类的日志数据115。可以基于与相应数据或数据类型相关联的分类标签,基于与相应数据或数据类型相关联的查找表等来实现分类124。
此外,根据各种方面,一个或多个处理器102可以被配置为根据与冗余数据113和日志数据115相关联的分类124,在多个存储设备中的相应存储设备上写入114冗余数据113和日志数据115。
以类似的方式,可以对用户数据111进行分类。在这种情况下,一个或多个处理器102可以被配置为根据与用户数据111相关联的分类124,在多个存储设备中的相应存储设备上写入114用户数据111。
根据各种方面,冗余数据113可以是奇偶校验数据。奇偶校验数据可以例如利用XOR运算来计算。在下文中,参考奇偶校验数据113提供各种示例;然而,可以以类似的方式使用适合于数据恢复的任何其他冗余数据113(例如,在多个存储设备中的一个存储设备故障的情况下)。根据各种方面,用于写入空洞保护的日志数据115也可以称为提前写入日志数据。
根据各种方面,除了数据111、113、115在多个存储设备101之中的相应分布之外,分类124可以提供根据分类124将数据111、113、115放置(例如,物理地布置)在多个存储设备101中的每个存储设备上的基础。
图2示出了根据各种方面的多个存储设备101。多个存储设备101可以是如本文所述的存储***100的一部分。
根据各种实施例,多个存储设备101可以以条带化配置(也称为RAID条带化、磁盘条带化、驱动器条带化等)来配置。在这种情况下,要存储的用户数据111可以跨多个物理驱动器分布。然而,在一些方面,要存储的数据111可以跨多个逻辑驱动器分布。多个存储设备101中的每个存储设备可以被划分为条带203。跨多个存储设备101,条带203可以形成多个条纹201。换言之,多个条纹201中的每个条纹可以包括多个条带203。换言之,多个存储设备101中的存储设备101a、101b、101c可以被划分为条带203。来自多个存储设备101中的每个存储设备的一个条带203可以跨多个存储设备101提供条纹201。
根据各种实施例,数据(例如,用户数据111和/或冗余数据113)可以沿着相应的条纹201被写入条带203中。每个条带203可以与存储区块相关联(例如,在区块级条带化中)。存储区块中的每个存储区块可以具有预定义的区块大小,例如,128kiB。然而,可以以类似的方式使用其他区块大小。
根据各种方面,如本文所述的一个或多个处理器102可以被配置为使奇偶校验数据113跨多个存储设备101分布,例如,图1和图2中所示。作为示例,可以将第一条纹201a的奇偶校验数据113写入多个存储设备101中的第三存储设备101c的对应条带203中,对这些奇偶校验数据113的计算可以基于写入多个存储设备101中的第一存储设备101a和第二存储设备101b的对应条带203中的用户数据111。此外,可以将第二条纹201b的奇偶校验数据113写入多个存储设备101中的第一存储设备101a的对应条带203中,对这些奇偶校验数据113的计算可以基于写入多个存储设备101中的第二存储设备101b和第三存储设备101c的对应条带203中的用户数据111。此外,可以将第三条纹201c的奇偶校验数据113写入多个存储设备101中的第二存储设备101b的对应条带203中,对这些奇偶校验数据113的计算可以基于写入多个存储设备101中的第一存储设备101a和第三存储设备101c的对应条带203中的用户数据111。依此类推。此外,针对写入操作中的每个写入操作的日志数据115可以相应地写入相应存储设备。
针对每次将用户数据111写入相应条带203,可以对应地更新条纹201的奇偶校验数据113以保持奇偶校验一致性。因此,由于两个或更多个用户数据条带203包括在条纹201中的与一个奇偶校验数据条带相对应的每个条纹中,所以奇偶校验数据113在统计上可以比用户数据111频繁地写入。
此外,针对每个写入操作的日志数据115在统计上可以比用户数据111频繁地写入,例如,针对每个奇偶校验数据113写入操作,可以执行对应的日志数据115写入操作,参见例如图8A。
根据各种方面,提供针对用户数据111、奇偶校验数据113和/或日志数据115的分类124可以允许以高效的方式将这些数据存储在相应存储设备101a、101b、101c上。例如,相应存储设备101a、101b、101c可以包括用于删除或更新数据的擦除区块大小。擦除区块大小可以大于用于写入数据的写入区块大小,如SSD(例如,NAND SSD)可以是这样的情况。在这种情况下,可以使用垃圾收集功能在单个擦除区块内分离应当从无效数据中保留的有效数据,该无效数据应当被删除以便为新的写入操作提供存储空间。
基于针对用户数据111、奇偶校验数据113和/或日志数据115提供的分类124,可以存储这些数据,使得在单个擦除区块中仅存储具有类似统计寿命的数据。这允许避免或减少垃圾收集工作,因为单个擦除区块的所有数据在统计上将实质上同时(即在其统计寿命之后或在预定义的寿命之后)变得无效,这允许将擦除区块的数据擦除,而无需先前分离有效数据,参见例如图4A和图4B。
根据各种方面,在多个存储设备具有用于写入数据的第一粒度和用于更新或删除数据的、大于第一粒度的第二粒度的情况下,利用对数据的分类124可以是减少写入放大(WA)因子(WAF)的高效方式。例如,如果NAND(“与非”)存储器(例如,NAND SSD或NAND闪存设备)可以用作存储设备101,则是这种情况。
术语写入放大(WA)或写入放大因子(WAF)是指当实际写入物理数据的量大于由主机计算机写入的逻辑数据的量时发生的效应(参见图8、图9A和图9B)。作为示例,NAND闪速存储器可以包括在其可以被重写之前必须进行擦除的存储元件。此外,NAND闪速存储器可以允许一次写入单个页(例如,具有例如4kiB到64kiB或更大的页大小),并且然而,一次仅擦除一个区块(也称为NAND区块或擦除区块)。擦除区块可以包括多个页,例如数百页。因此,可以执行用户数据111的内部移动,例如,在后台线程(也称为垃圾收集)中,从要擦除的区块中移除用户数据111(或者换言之,应保持存储的数据)。因此,对这种类型的存储设备进行写入操作的总数量典型地可能大于旨在写入的写入操作的数量。写入放大因子(WAF)是该现象的数学表示,并且表示物理写入操作与逻辑写入操作的比率。相比大区块顺序写入,小区块随机写入可能导致更高的WAF和驱动器损耗更多,例如图9A和图9B中所示。同样,与“空”驱动器相比,“满”驱动器通常具有更高的WAF。
图3以示意图示出了根据各种方面的一个或多个处理器102的配置。一个或多个处理器102可以是本文描述的存储***100的一部分。根据各种方面,一个或多个处理器102还可以被配置为:通过被引导至存储设备101a的第一存储区域301a的第一数据流313a和被引导至相应存储设备101a的与第一存储区域301a不同的第二存储区域301b的第二数据流313b,将用户数据111和奇偶校验数据113写入114多个存储设备101中的每个存储设备(示例性地针对第一存储设备101a示出)。
根据各种方面,基于如上所述的分类124,一个或多个处理器102可以被配置为使得第一数据流313a可以仅包括奇偶校验数据,并且第二数据流可以包括用户数据和奇偶校验数据。可替代地,基于如上所述的分类124,一个或多个处理器102可以被配置为使得第一数据流313a可以仅包括奇偶校验数据113,并且第二数据流可以仅包括用户数据111。此外,基于如上所述的分类124,一个或多个处理器102可以被配置为使得第一数据流313a可以仅包括奇偶校验数据113和日志数据115(例如,仅具有统计上较短寿命的数据)并且第二数据流可以(例如,仅)包括用户数据111(例如,仅具有统计上较长寿命的数据)。
说明性地,存储设备101中的每个存储设备可以以多流模式写入。根据各种方面,可以使用至少两个数据流313a、313b来根据与数据相关联的分类将数据写入相应存储设备101的不同区块中。这可以为存储设备101提供更好的耐用属性、改进的存储***100的性能和/或一致的时延。可以预期实质上同时使与第一流313a相关联的所有数据无效(例如,被更新、被解除分派)。
同时,如上所述,可以在存储设备101布置在RAID***中的情况下执行条带化。使用N驱动器阵列(换言之,在RAID配置中具有数量为N个存储设备101的存储***100)作为示例,可以将第一位、字节或区块(例如,写入区块)写入第一驱动器,将第二位、字节或区块写入第二驱动器,依此类推;直到将第(N-1)位、字节或区块,奇偶校验位、字节或区块写入第N驱动器。然后,将第(N+1)位、字节或区块再次写入第一驱动器,并且整个过程以例如在不同的驱动器上布置奇偶校验位、字节或区块重新开始。
根据各种方面,在使用区块条带化将文件写入RAID存储***100并且文件大小大于区块大小的情况下,将文件分割成具有区块大小的部分,该区块大小可以是例如128kiB或任何其他合适的大小。该区块的大小也可以被称为条带大小。条带大小可以是预定义的。根据各种方面,条带大小可以小于擦除区块大小。
例如,如图3中所示,第一存储区域301a可以包括与第二存储区域301b不同的另一擦除区块,使得数据流313a、313b将相应数据写入不同的擦除区块,以避免具有实质上不同的寿命的数据在单个擦除区块中混合。
图4A针对顺序写入操作示出了在没有提供对数据的分类并且数据在没有任何特定分布策略的情况下被写入的情况下,多个存储设备101中的第三存储设备101c上的两个擦除区块440内的数据的示例性分布,如上所述。在这种情况下,在奇偶校验数据113和/或日志数据115的寿命到期之后,在可以擦除相应的擦除区块440并且可以在该擦除区块440内执行新的写入操作之前,必须将仍然有效的用户数据111重新分派到另一区块中。根据各种方面,一个擦除区块440可以包括多于一个写入区块430。换言之,存储设备101中的每个存储设备可以具有用于写入数据(例如,写入用户数据111、奇偶校验数据113和日志数据115)的第一粒度和用于更新或删除写入的数据的、大于第一粒度的第二粒度。
根据各种方面,存储***100的一个或多个处理器102可以被配置为在写入区块430中写入相应数据。写入区块430具有预定义的写入区块大小。相应的擦除区块440具有用于擦除或更新数据的擦除区块大小。根据各种方面,擦除区块大小可以大于写入区块大小。
图4B针对顺序写入操作示出了在提供对数据的分类124并且数据根据特定分布策略被写入的情况下,多个存储设备101中的第三存储设备101c上的两个擦除区块440内的数据的示例性分布,如上所述。分布策略可以针对存储设备101中的单个存储设备上的数据分布。在这种情况下,分布策略可以包括例如经由第一数据流313a将所有奇偶校验数据113和所有日志数据115存储到擦除区块440中的一个擦除区块中;并且例如经由第二数据流313b将所有用户数据111存储到擦除区块440中的另一擦除区块中。在这种情况下,在奇偶校验数据113和日志数据115的寿命到期(这可以预期在用户数据111到期之前)之后,可以将包括奇偶校验数据113和日志数据115的擦除区块擦除,并且可以在该擦除区块440内执行新的写入操作,同时,可以保持包括用户数据111的擦除区块440,因为用户数据111可能仍然有效。
在这种情况下,根据各种方面,第一数据流313a可以包括低的用户数据111相比奇偶校验数据113和/或日志数据115的比率,例如,比率小于15%(例如小于10%,例如小于5%,例如小于1%)。根据各种方面,第一数据流313a可以没有用户数据111。根据各种方面,第二数据流313b可以包括高的用户数据111相比奇偶校验数据113和/或日志数据115的比率,例如,比率大于70%(例如大于80%,例如大于90%,例如大于99%)。根据各种方面,第二数据流313b可以没有奇偶校验数据113和/或日志数据115。
如上所述,存储***100的一个或多个处理器102可以被配置为经由第一数据流313a和第二数据流313b在相应存储设备101a、101b、101c上写入用户数据111、已分类的奇偶校验数据113和已分类的日志数据115。换言之,存储***100的一个或多个处理器102可以被配置为根据针对奇偶校验数据113和日志数据115提供的分类124经由第一数据流313a在相应存储设备101a、101b、101c上写入这些数据。第一数据流313a可以仅包括已分类的奇偶校验数据113和已分类的日志数据115,并且第二数据流可以(例如,仅)包括用户数据111。
图4C针对顺序写入操作示出了在提供对数据的分类124并且数据根据特定分布策略被写入的情况下,多个存储设备101中的第三存储设备101c上的三个擦除区块440内的数据的示例性分布,如上所述。分布策略可以针对存储设备101中的单个存储设备上的数据分布。在这种情况下,分布策略可以包括例如经由第一数据流313a将所有奇偶校验数据113存储到第一擦除区块440中;例如经由第二数据流313b将所有用户数据111存储到第二擦除区块440中;并且例如经由第三数据流413c将所有日志数据115存储到第三擦除区块440中。在这种情况下,在奇偶校验数据113的寿命到期(这预期在用户数据111到期之前)之后,可以将包括奇偶校验数据113的擦除区块440擦除,并且可以在该擦除区块440内执行新的写入操作,同时,可以保持包括用户数据111的擦除区块440,因为用户数据111可能仍然有效。以类似的方式,在日志数据115的寿命到期(这预期在用户数据111到期之前)之后,可以将包括日志数据115的擦除区块440擦除,并且可以在该擦除区块440内执行新的写入操作,同时,可以保持包括用户数据111的擦除区块440,因为用户数据111可能仍然有效。
在这种情况下,根据各种方面,第一数据流313a可以包括低的用户数据111和日志数据115相比奇偶校验数据113的比率,例如,比率小于15%(例如小于10%,例如小于5%,例如小于1%)。根据各种方面,第一数据流313a可以没有用户数据111和日志数据115。根据各种方面,第二数据流313b可以包括高的用户数据111相比奇偶校验数据113和日志数据115的比率,例如,比率大于70%(例如大于80%,例如大于90%,例如大于99%)。根据各种方面,第二数据流313b可以没有奇偶校验数据113和日志数据115。根据各种方面,第三数据流443c可以包括高的日志数据115相比奇偶校验数据113和用户数据111的比率,例如,比率大于85%(例如大于90%,例如大于95%,例如大于99%)。根据各种方面,第三数据流413c可以没有奇偶校验数据113和用户数据111。
如上所述,存储***100的一个或多个处理器102可以被配置为经由第一数据流313a将已分类的奇偶校验数据113写入相应存储设备101a、101b、101c,经由第二数据流313b将用户数据111写入相应存储设备101a、101b、101c,并且经由第三数据流413c将日志数据115写入相应存储设备101a、101b、101c。换言之,存储***100的一个或多个处理器102可以被配置为根据针对奇偶校验数据113和日志数据115提供的分类124经由两个不同的数据流313a、413c在相应存储设备101a、101b、101c上写入这些数据。
根据各种方面,用于写入空洞保护的日志数据115可以包括关于用户数据111的写入操作以及与用户数据111相关联的奇偶校验数据113的对应写入操作的信息,如上所述。
根据各种方面,存储***100可以是基于主机的RAID。
如上所述,存储***可以包括多个存储设备101以及一个或多个处理器102,该一个或多个处理器102被配置为使用户数据与对应的冗余数据113(例如,用于数据恢复)和对应的日志数据115一起分布114在多个存储设备101之间,生成至少与冗余数据113和日志数据115相关联的分类124,并且根据分类将冗余数据113和日志数据115写入多个存储设备中的每个存储设备内的不同存储区域中。
图5示出了根据各种方面的用于操作存储***的方法500的示意流程图。方法500可以以与上文关于存储***100的配置所描述的类似方式执行,反之亦然。根据各种方面,方法500可以包括:在510中,使用户数据111与冗余数据113(例如,用于数据恢复)和日志数据115(例如,用于写入空洞保护)一起分布在多个存储设备101上;在520中,生成与用户数据111、冗余数据113和日志数据115相关联的分类124(例如,提供已分类的用户数据、冗余数据和已分类的日志数据);并且在530中,根据分类124将(已分类的)用户数据111、(已分类的)冗余数据113和(已分类的)日志数据115写入多个存储设备101a、101b、101c中的每个存储设备内的不同存储区域(例如,不同的存储区域301a、301b)中。
以类似的方式,仅对冗余数据113或日志数据中的一个进行分类。在这种情况下,方法500可以以与上文描述的类似的方式执行,包括例如:使用户数据111与冗余数据113(例如,用于数据恢复)或日志数据115(例如,用于写入空洞保护)一起分布在多个存储设备101上;生成与用户数据111相关联并且与冗余数据113或日志数据115相关联的分类124;并且根据分类124将(已分类的)用户数据111写入并且将(已分类的)冗余数据113或(已分类的)日志数据115写入多个存储设备101a、101b、101c中的每个存储设备内的不同存储区域(例如,不同的存储区域301a、301b)中。
根据各种方面,不同存储区域可以是如上所述的不同擦除区块,参见图3和图4A至图4C。如本文提到的存储区域可以是相应存储设备的物理区域。
根据各种方面,冗余数据113可以是例如利用XOR运算来计算的奇偶校验数据。然而,可以以类似的方式使用适合于数据恢复的任何其他冗余数据113(例如,在多个存储设备中的一个存储设备故障的情况下)。根据各种方面,用于写入空洞保护的日志数据115也可以称为提前写入日志数据。
图6示出了根据各种方面的用于操作存储***的方法600的示意流程图。方法600可以以与上文关于存储***100的配置所描述的类似的方式来执行,反之亦然。根据各种方面,方法600可以包括:在610中,将至少三个存储设备101a、101b、101c划分为条带203并且提供多个条纹201,多个条纹201中的每个条纹包括至少三个条带203;在620中,接收用户数据111,并且使用户数据111与对应于用户数据111的奇偶校验数据113一起沿着条纹201分布,使得每个条纹203包括至少两个用户数据条带(每个用户数据条带包括用户数据111)以及与至少两个用户数据条带相关联的至少一个奇偶校验条带(奇偶校验数据条带包括奇偶校验数据);并且在630中,通过被引导至相应存储设备101a、101b、101c的第一存储区域301a的第一数据流313a和被引导至相应存储设备101a、101b、101c的、与第一存储区域301a不同的第二存储区域301b的第二数据流313b,将用户数据111和奇偶校验数据113写入存储设备中的一个或多个存储设备,使得第一数据流313a(例如,仅)包括奇偶校验数据113,并且第二数据流(例如,仅)包括用户数据111。
根据各种方面,如本文所述的方法500、600或存储***100可以在快速存储技术企业(Intel RSTe)中使用。
根据各种方面,RAID-5、RAID-6或RAID-EC***可以包括奇偶校验分类和提前写入日志分类两者,如本文所述。分类可以用于控制相应存储设备101上的物理数据放置。物理数据放置可以包括用于I/O操作的两个或更多个流。
根据各种方面,基于分类,可以提供一个或多个流引导(本文中也称为分布策略),例如,用于基于主机的RAID***,其中RAID实现方式(例如,以软件、硬件或两者)可以放置数据以获得最佳耐用性和性能。
如下面更详细描述的,存储***100和本文提供的方法可以避免利用奇偶校验RAID可能发生的问题。
问题之一可能是耐用性降低。为了在奇偶校验RAID中提供数据可靠性,除了用户数据之外,可以使用奇偶校验数据。与数据条带相比,部分条纹写入可能导致每条带更新写入奇偶校验一次。对于N驱动器RAID***,奇偶校验条带可能被写入比用户数据条带多达N-1倍。从个体成员驱动器(也称为成员存储设备)的角度来看,将较短寿命的奇偶校验条带写入与较长寿命的数据条带写入相混合类似地导致成员驱动器内部碎片化,这进而降低成员驱动器的整体耐用性。根据各种方面,可以使用这样的RAID***:其被配置为将奇偶校验写入放置到其自己的擦除单元(也称为擦除区块)中,这些擦除单元将自动无效而不会导致任何碎片化。另外,RAID***可以被配置为通过将提前写入日志写入来防止写入空洞,提前写入日志可以存储在每个成员驱动器的末端。提前写入日志可以存储在预定义的LBA范围中,RAID***可以以循环缓冲方式写入该范围。RAID***可能比成员驱动器上的其余LBA更频繁地覆写对应于日报的LBA范围。在某些情况下,日报写入量可能占总写入的大约50%。在成员驱动器上,当这个较短寿命数据(经常被覆写)与较长寿命数据混合时,会导致SSD内部碎片化。要进行碎片整理,SSD必须重新定位有效的数据区块(也称为垃圾收集),这会导致写入放大和耐用性降低。根据各种方面,如本文所述的RAID***可以将日报写入放置到其自己的擦除单元中,这些擦除单元将自动无效而不会导致任何碎片化。
另一个问题可能是性能降低。例如,NAND SSD在将新的数据放入相同的物理位置(也称为存储区域)之前必须将其擦除。擦除单元(本文也称为擦除区块)可以具有比程序(例如,写入)单元(本文也称为写入区块)大得多的粒度,因此在擦除区块之前,必须将所有有效数据移动到新的位置。此类重新定位操作使用否则主机可用的相同SSD机械。这可能会显著地降低主机观测到的性能。根据各种方面,提供了减少垃圾收集的RAID***;并且因此,性能显著地提高。
另一个问题可能是I/O确定性降低。在例如SSD正在进行其后台垃圾收集的情况下,主机可以在这些时段期间观测到更高的时延。“尾部”时延可能受到高于平均值或第50百分位时延的量级的影响。根据各种方面,提供了显著地改进一个或多个工作负载的尾部时延的RAID***。
如上文已经描述的,为了防止上面提及的问题,RAID引擎可以使用关于生成的奇偶校验和日志的寿命的知识。RAID引擎可以将关于更新频率的提示与数据一起提供给RAID***的成员驱动器(例如,提供给SSD)。这可以应用于例如具有奇偶校验的所有RAID级别(例如,RAID-5、RAID-6等)。
根据各种方面,可以存在两个主提示生成器,或者换言之,两个分类器;奇偶校验分类器和提前写入日志分类器。
对于顺序工作负载,奇偶校验分类器可以被配置为将假定变为无效的奇偶校验数据分配给具有非常频繁地更新的数据的数据流(例如,如上所述的第一数据流313a)。根据各种方面,可以将有效奇偶校验数据分类为与用户数据相同的流。
对于随机工作负载,奇偶校验分类器可以被配置为将每个奇偶校验数据写入分配给单独的数据流(例如,如上所述的第一数据流313a)。统计上,奇偶校验数据113可以比用户数据111更频繁地更新。分配给奇偶校验数据113的数据流可以包含具有类似更新频率的其他数据。
提前写入日志分类器可以被配置为对非常频繁地更新的日志数据115进行分类。
由于分类,如本文所述,数据被更高效地放置在成员驱动器上。高效数据放置可以减少驱动器的后台活动,如垃圾收集或损耗均衡过程。
在下文中,针对具有四个成员驱动器401的RAID-5配置示出了RAID技术,如以示意图在图7A至图7C中所示出的。然而,此RAID技术可以以相同或类似的方式应用于其他RAID级别。
图7A关于奇偶校验数据113和用户数据111示出了针对条纹1至条纹4和成员驱动器1至成员驱动器4的RAID-5数据放置700。可以将每个成员驱动器划分为具有相等大小的条带203。图7A中所示的表的每个单元格表示条带203中的一个。在表的每行中表示条纹201。在这种情况下,在条纹201中的每个条纹上包括一个奇偶校验条带和多个数据条带。
对于顺序工作负载,例如,在用户将128kiB数据写入具有等于128kiB的条带大小的RAID-5卷的LBA0的情况下,可以执行以下过程流程:
1.将LBA0映射到驱动器1
2.从驱动器2和驱动器3读取数据以计算奇偶校验(假设例如使用读取其他算法)
3.计算奇偶校验(例如,对来自驱动器2、驱动器3的数据和驱动器1的数据进行XOR)
4.将数据写入驱动器1并且将奇偶校验写入驱动器4。
在下文中,针对用户以顺序方式将数据写入RAID-5卷的情况示出了写入序列。在这种情况下,RAID***将生成以下对成员驱动器的写入请求:
1.将数据写入驱动器1,将奇偶校验写入驱动器4
2.将数据写入驱动器2,将奇偶校验写入驱动器4
3.将数据写入驱动器3,将奇偶校验写入驱动器4
等等。
奇偶校验将在驱动器4上被写入一次并且重写两次。从一个驱动器的角度来看(例如,从驱动器4的角度来看),数据将被放置在NAND区块上以用于该顺序工作负载,如下面更详细描述的。
图7B以示意图示出了针对驱动器4的数据放置703。P1表示来自条纹1的奇偶校验,D2表示来自条纹2的数据,依此类推。奇偶校验713i可以非常快速地重写并且不再有效。然而,当固件决定应该将NAND区块擦除时,在擦除之前必须将一些数据移动到另一NAND区块。如上所述,这消耗时间并且增加写入放大。理想情况是整个区块仅包含无效数据,因为在这种情况下不必执行数据移动。
根据各种方面,通过将流分配给被识别为潜在地很快变得无效的奇偶校验713i,基于NAND的驱动器可以能够将该奇偶校验713i放置到单独的NAND区块中。根据各种方面,可以利用用于顺序工作负载的奇偶校验分类器,如图7C中以示意图示例性地示出并在下面描述的:
1.将假定变为无效的奇偶校验(在上述示例的情况下,其表示两个第一奇偶校验写入P1、P1、P5、P5、P9、P9等)分配给与用户数据不同的流705(例如,分配给流编号1,其中所有用户数据D2、D3、D4、D9、D7、D8等被分配给流编号0)
2.将最后写入条纹(例如,有效)奇偶校验区块分配给与用户数据相同的流(例如,分配给流编号0)。
基于流705,基于NAND的驱动器可以被配置为将无效奇偶校验区块放置到一个NAND区块中,但是可以将有效奇偶校验区块和用户数据放置到另一NAND区块中。
该RAID技术具有将对成员驱动器的数据写入和奇偶校验写入转变成顺序(在物理层上)而非随机的附加益处。这进一步改进了WAF和性能。
对于随机工作负载,生成具有两种不同寿命的数据,较长寿命用户数据111和较短寿命奇偶校验数据113,如本文所述。这例如是由于一个奇偶校验区块被“分配”多个用户数据区块的事实。例如,对于条纹1,当将数据写入驱动器1时,必须更新驱动器4上的奇偶校验。当在条纹1中将数据写入驱动器2或驱动器3时,也必须更新驱动器4上的奇偶校验。对于RAID-5***或类似的RAID***,奇偶校验将比用户数据更频繁地更新达N-1倍,其中N表示成员驱动器的数量。
根据各种方面,用于随机工作负载的奇偶校验分类器可以被配置为将奇偶校验数据113分配给单独的流(例如,与具有用户数据111的流不同),如本文所述。根据各种方面,分配给奇偶校验数据113的流可以仅用于随机奇偶校验。
根据各种方面,可以提供提前写入日志分类。基于奇偶校验的RAID级别可能例如遭受被称为RAID写入空洞(RWH)的静默数据损坏情况。发生RWH的必要条件是驱动器故障接下来是不期望的关闭,反之亦然。
图8A以示意图示出了根据各种方面的计算***800a。计算***800a可以包括主机***802和存储***100。可以如上所述地配置存储***100。主机***802可以通信地耦合到存储***100。主机***802可以包括一个或多个主机处理器,其被配置为将要存储的用户数据发送到存储***100。主机***802可以被配置为将I/O请求(参见附图标记1和5)发送到RAID控制器804(例如,发送到RAID***的一个或多个处理器,如本文所述)。如上所述,RAID控制器804(也称为RAID引擎或RAID***)可以控制四个成员驱动器D1、D2、D3和D4。然而,RAID控制器可以被配置为控制任何其他数量的成员驱动器,例如,三个或多于三个,如本文所述。根据各种方面,主机***802可以是存储***100的一部分。可替代地,主机***802和存储***100可以以远程配置来配置,其中主机***802经由任何合适的通信网络与远程存储***100进行通信。
此外,图8A示出了包括奇偶校验计算3的、对成员驱动器D1和D4的读取2a、2b和写入4a、4b(例如,由RAID控制器804控制)。
在写入步骤期间主机***802发生不期望的关闭或电源故障的情况下可能发生数据损坏情况,使得第一写入操作4a(例如,写入用户数据到驱动器1,D1)完成但是对应的第二写入操作4b(例如,写入奇偶校验数据到驱动器4,D4)未完成。这将使对应的条纹不一致,使得对任何三个条带的XOR运算将不会导致第四条带,将以其他方式确保奇偶校验。在***重启时,如果例如旁观者驱动器2(D2)故障,则无法提供重建D2的条带,因为对D1和D4(新的和旧的)的XOR计算将由于数据损坏而导致垃圾数据。
为了关闭RAID写入空洞,在每组RAID-5写入上,可以基于日志数据使用提前写入日志(WAL),如本文所述。可以将提前写入日志数据放置在成员驱动器的处于驱动器末端的元数据部分中。日志可以存储在存储奇偶校验的成员驱动器上。由于处于每个成员驱动器的末端的提前写入日志区域可以是很小的LBA范围,RAID控制器804(例如,RSTe)在执行写入操作4a、4b之前以循环缓冲方式将提前写入日志写入该LBA范围,所以这个小的LBA范围经历频繁的写入。从成员驱动器的角度来看,提前写入日志的寿命比用户数据和/或奇偶校验短得多。此外,在一些应用中,提前写入日志可以占写入的总GB的50%以上。
图8B以示意图示出了根据各种方面的计算***800b。计算***800b可以包括RAID控制器804和三个或更多个成员驱动器101。RAID控制器804可以如上所述地配置。计算***800b可以包括一个或多个处理器802p,其被配置为运行操作***(OS)以及与RAID控制器804通信的一个或多个应用。可替代地,计算***800b的一个或多个处理器802p可以被配置为(例如,远程地)与运行操作***(OS)和与RAID控制器804通信的一个或多个应用的外部***进行通信。计算***800b可以是例如服务器(例如,作为云***的一部分)、远程存储服务器、台式计算机、膝上型计算机、平板计算机等。计算***800b的一个或多个处理器802p可以被配置为执行RAID控制器804的一个或多个功能。RAID控制器804可以以由RAID控制器804执行的软件来实现。可替代地,RAID控制器804可以以由RAID控制器804并且由一个或多个附加处理器(例如,如上所述的一个或多个处理器102)执行的软件来实现。计算***800b可以包括一个或多个接口802i,用于发送和接收与经由RAID控制器804存储或要存储在成员驱动器101上的数据相关联的数据请求。
图8C示出了根据各种方面的用于操作存储***的方法800c的示意流程图。方法800c可以以与上文关于存储***100的配置所描述的类似的方式执行,反之亦然。根据各种方面,方法800c可以包括:在810中,将多个存储设备作为独立驱动器冗余阵列来进行操作;在820中,接收用户数据并且将接收到的用户数据存储在以条带化配置形式的多个存储设备上;在830中,计算与接收到的用户数据相关联的奇偶校验数据(例如,用于数据恢复);并且在840中,生成至少与奇偶校验数据相关联的奇偶校验分类,该奇偶校验分类针对根据奇偶校验分类在多个存储设备中的每个存储设备上对奇偶校验数据和用户数据进行的物理数据放置。
根据各种方面,分离不同速度的顺序或随机I/O导致WAF减小。提前写入日志分类器可以被配置为将写入日志数据115分配给单独的流(参见例如图4C),这产生WAF益处。
图9A和图9B示出了针对各种类型分类的WAF测量。所有测量使用RAID-5***执行,该RAID-5***由三个NVMe驱动器(快速NVM(NVMe)也可以称为非易失性存储器主机控制器接口规范(NVMHCI),其描述用于对经由快速PCI(PCIe)总线附接的非易失性存储介质进行存取的逻辑设备接口规范)创建。
所测量的因子中的一个是如下计算的写入放大因子(WAF):
较低的WAF值表示对存储器设备(例如,闪速存储器)的写入较少。这与更高的驱动器耐用性和更好的性能相关。
图9A示出了经由具有raid写入空洞保护的RAID-5***进行的顺序写入900s(例如,128kiB)的WAF 900y相对时间900x。在奇偶校验分类器和提前写入日志分类器两者都开启的情况下(例如,如曲线902c描绘的),WAF比没有分类的情况(如曲线902描绘的)低约两倍。在仅提前写入日志分类器开启的情况下(例如,如曲线902w描绘的),WAF比没有分类的情况(如曲线902描绘的)低。
图9B示出了经由具有raid写入空洞保护的RAID-5***例如使用如上所述的随机奇偶校验分类器进行的随机写入900r(例如,4kiB)的WAF 900y相对时间900x。在使用提前写入日志分类器和奇偶校验分类器两者的情况下,WAF益处可以是大约12%,例如,如曲线904c描绘的。在仅使用提前写入日志分类器(例如,如曲线904w描绘的)或奇偶校验分类器(例如,如曲线904p描绘的)中的一个的情况下,WAF可以仍然低于没有分类(例如,如曲线904描绘的)的情况。
另一所测量的因子是时延(图中未示出),例如,平均时延和服务质量(QoS)的时延。
根据各种方面,与无分类相比,平均时延可以如下改进:
128kiB顺序写入 | 4kiB随机写入 | |
奇偶校验分类 | 104.0% | 89.5% |
提前写入日志分类 | 100.7% | 94.9% |
奇偶校验和提前写入日志分类 | 45.5% | 83.4% |
如上面示出的,对于顺序工作负载和两个活动的分类器,平均时延比没有分类低两倍以上。对于随机工作负载,其比没有分类低约17%。因此,如本文所述,在分类情况下用户可以更快地对RAID卷中的数据进行存取。
根据各种方面,与无分类相比,平均时延服务质量(99.99%)可以改进如下:
128kiB顺序写入 | 4kiB随机写入 | |
奇偶校验和提前写入日志分类 | 40.4% | 97.8% |
如上面示出的,对于顺序写入,在分类器情况下最大RAID卷响应时间将比没有分类器低两倍以上(在总体使用时间的99.99%内)。
另一所测量的因子是如本文所述的与无分类相比的在分类情况下的吞吐量。
根据各种方面,与无分类相比的吞吐量可以改进如下:
128kiB顺序写入 | 4kiB随机写入 | |
奇偶校验和提前写入日志分类 | 221.2% | 115.2% |
如上面示出的,奇偶校验分类器和提前写入日志分类器允许用户对数据进行的存取比没有分类快两倍以上。对于随机工作负载,快约15%。
根据各种方面,NVMe/SATA协议分析器可以用于分析对成员驱动器的写入命令。可以通过分析LBA或更新频率来识别奇偶校验写入。可以从写入命令帧读取流标识符。
根据各种方面,存储设备(例如,SSD)可以具有一个或多个实现的流引导,并且可以与本文描述的RAID***配对。
根据各种方面,如本文所述的存储***100(或者换言之,RAID***、RAID引擎、RAID控制器等)由于最小化的垃圾收集而可以提供改进的耐用性、改进的性能、改进的QoS以及潜在的功率节省。
根据各种方面,如本文所述的日志数据115可以是在存储***100的一个或多个处理器102中实现的提前写入日志记录(WAL)的一部分。提前写入日志记录可以包括在应用修改之前将对用户数据111和/或奇偶校验数据113的所有修改写入日志。根据各种方面,日志数据115可以包括重做和撤消信息。使用WAL可以允许就地应用修改,这可以减少修改索引和/或区块列表的程度。
在下文中,参考上述方面提供了各种示例。
示例1是一种存储***。该存储***可以包括多个存储设备以及一个或多个处理器,该一个或多个处理器被配置为使用户数据与冗余数据和日志数据一起分布在多个存储设备之中,以生成与用户数据、冗余数据和日志数据相关联的分类,并且根据其相应分类将用户数据、冗余数据和日志数据写入多个存储设备中的每个存储设备内的不同存储区域中。
在示例2中,示例1的主题可以可选地包括:冗余数据包括奇偶校验数据。
在示例3中,示例1或2中任一项的主题可以可选地包括:日志数据包括写入空洞保护数据。
在示例4中,示例1至3中任一项的主题可以可选地包括:多个存储设备中的每个存储设备包括非易失性存储器,并且非易失性存储器被配置为存储用户数据、冗余数据和日志数据。
在示例5中,示例1至4中任一项的主题可以可选地包括:多个存储设备中的每个存储设备包括与写入数据相关联的第一粒度,以及大于第一粒度的第二粒度,第二粒度与更新或删除数据相关联。
在示例6中,示例1至5中任一项的主题可以可选地包括:多个存储设备中的每个存储设备包括固态驱动器。
在示例7中,示例1至6中任一项的主题可以可选地包括:一个或多个处理器被配置为使冗余数据跨多个存储设备分布。
在示例8中,示例1至7中任一项的主题可以可选地包括:一个或多个处理器被配置为使日志数据跨多个存储设备分布。
在示例9中,示例1至8中任一项的主题可以可选地包括:一个或多个处理器被配置为经由第一数据流将冗余数据或日志数据中的至少一个写入多个存储设备中的特定存储设备,并且经由第二数据流将用户数据写入特定存储设备。
在示例10中,示例1至8中任一项的主题可以可选地包括:一个或多个处理器被配置为经由第一数据流将冗余数据写入多个存储设备中的特定存储设备,经由第二数据流将用户数据写入特定存储设备,并且经由第一数据流或第三数据流将日志数据写入特定存储设备。
在示例11中,示例10的主题可以可选地包括:第三数据流实质上没有用户数据。
在示例12中,示例10或11中任一项的主题可以可选地包括:第三数据流实质上没有冗余数据。
在示例13中,示例9至12中任一项的主题可以可选地包括:第一数据流实质上没有用户数据。
在示例14中,示例9至13中任一项的主题可以可选地包括:第一数据流实质上没有日志数据。
在示例15中,示例9至14中任一项的主题可以可选地包括:第二数据流实质上没有冗余数据。
在示例16中,示例9至15中任一项的主题可以可选地包括:第二数据流实质上没有日志数据。
在示例17中,示例9至16中任一项的主题可以可选地包括:第一数据流被引导至多个存储设备中的相应存储设备的第一存储区域,并且第二数据流被引导至多个存储设备中的相应存储设备的第二存储区域,第二存储区域与第一存储区域不同。
在示例18中,示例10至12中任一项的主题可以可选地包括:第一数据流被引导至多个存储设备中的相应存储设备的第一存储区域,第二数据流被引导至多个存储设备中的相应存储设备的第二存储区域,第二存储区域与第一存储区域不同,并且第三数据流被引导至多个存储设备中的相应存储设备的另外的存储区域,该另外的存储区域与第一存储区域和第二存储区域不同。
在示例19中,示例1至18中任一项的主题可以可选地包括:一个或多个处理器被配置为以写入区块大小将冗余数据、日志数据和用户数据作为区块写入。
在示例20中,示例19的主题可以可选地包括:多个存储设备中的一个或多个存储设备包括与擦除数据相关联的擦除区块大小,并且擦除区块大小大于写入区块大小。
在示例21中,示例1至20中任一项的主题可以可选地包括:日志数据包括关于对用户数据的写入操作和对与用户数据相关联的冗余数据的写入操作的信息。
在示例22中,示例21的主题可以可选地包括:一个或多个处理器被配置为在针对写入操作将日志数据写入之后,写入与日志数据相关联的用户数据和冗余数据。
在示例23中,示例1至22中任一项的主题可以可选地包括:一个或多个处理器被配置为将日志数据或冗余数据写入循环缓冲器中。
示例24是一种计算***。该计算***可以包括示例1至23中任一项的存储***。该计算***还可以包括通信地耦合到存储***的主机***,主机***包括一个或多个主机处理器,该一个或多个处理器被配置为将要存储的用户数据发送到存储***。
示例25是用于操作存储***的方法。该方法可以包括使用户数据与冗余数据和日志数据一起分布在多个存储设备上,生成与用户数据、冗余数据和日志数据相关联的分类,并且根据分类将用户数据、冗余数据和日志数据写入多个存储设备中的每个存储设备内的不同存储区域中。
在示例26中,示例25的主题可以可选地包括:冗余数据包括奇偶校验数据。
在示例27中,示例25或26中任一项的主题可以可选地包括:日志数据包括写入空洞保护数据。
在示例28中,示例25至27中任一项的主题可以可选地包括:跨多个存储设备将冗余数据写入。
在示例29中,示例25至28中任一项的主题可以可选地包括:跨多个存储设备将日志数据写入。
在示例30中,示例25至29中任一项的主题可以可选地包括:经由第一数据流将冗余数据或日志数据中的至少一个写入多个存储设备中的特定存储设备,并且经由第二数据流将用户数据写入特定存储设备。
在示例31中,示例25至29中任一项的主题可以可选地包括:经由第一数据流将冗余数据写入多个存储设备中的特定存储设备,并且经由第二数据流将用户数据写入特定存储设备,并且经由第一数据流或第三数据流将日志数据写入特定存储设备。
在示例32中,示例31的主题可以可选地包括:第三数据流实质上没有用户数据。
在示例33中,示例31或32中任一项的主题可以可选地包括:第三数据流实质上没有冗余数据。
在示例34中,示例30至33中任一项的主题可以可选地包括:第一数据流实质上没有用户数据。
在示例35中,示例30至34中任一项的主题可以可选地包括:第一数据流实质上没有日志数据。
在示例36中,示例30至35中任一项的主题可以可选地包括:第二数据流实质上没有冗余数据。
在示例37中,示例30至36中任一项的主题可以可选地包括:第二数据流实质上没有日志数据。
在示例38中,示例30至37中任一项的主题可以可选地包括:该方法还包括将第一数据流引导至相应存储设备的第一存储区域并且将第二数据流引导至相应存储设备的与第一存储区域不同的第二存储区域。
在示例39中,示例31至33中任一项的主题可以可选地包括:该方法还包括将第一数据流引导至相应存储设备的第一存储区域,将第二数据流引导至相应存储设备的与第一存储区域不同的第二存储区域,并且将第三数据流引导至相应存储设备的与第一存储区域和第二存储区域不同的另外的存储区域。
在示例40中,示例25至39中任一项的主题可以可选地包括:以写入区块大小写入冗余数据和日志数据,写入区块大小小于最小擦除区块大小。
在示例41中,示例25至40中任一项的主题可以可选地包括:日志数据包括关于对用户数据的写入操作和对与用户数据相关联的冗余数据的写入操作的信息。
在示例42中,示例41的主题可以可选地包括:该方法还包括在用户数据和与其相关联的冗余数据之前写入与写入操作相关联的日志数据。
实施例43是一种存储***。该存储***可以包括一个或多个处理器,其被配置为:将至少三个存储设备划分为条带,提供多个条纹,多个条纹中的每个条纹包括至少三个条带,接收用户数据,使用户数据与关联于用户数据的奇偶校验数据一起沿着多个条纹分布,使得多个条纹中的每个条纹包括至少两个数据条带和与至少两个数据条带相关联的至少一个奇偶校验条带,并且基于被引导至至少三个存储设备中的相应存储设备的第一存储区域的第一数据流和被引导至至少三个存储设备的相应存储设备的第二存储区域的第二数据流,将用户数据和奇偶校验数据写入至少三个存储设备中的每个存储设备。第二存储区域与第一存储区域不同。第一数据流包括奇偶校验数据,并且第二数据流包括用户数据。
在示例44中,示例43的主题可以可选地包括:至少两个数据条带包括用户数据,并且所述至少一个奇偶校验条带包括奇偶校验数据。
在示例45中,示例44的主题可以可选地包括:一个或多个处理器还被配置为将与对用户数据和奇偶校验数据的写入相关联的日志数据写入至少三个存储设备。
在示例46中,示例45的主题可以可选地包括:日志数据包括写入空洞保护数据。
在示例47中,示例45或46中任一项的主题可以可选地包括:一个或多个处理器被配置为使日志数据跨至少三个存储设备分布。
在示例48中,示例45至47中任一项的主题可以可选地包括:一个或多个处理器还被配置为基于被引导至第一存储区域的第一数据流或基于被引导至至少三个存储设备中的相应存储设备的第三存储区域的第三数据流,将日志数据写入至少三个存储设备中的每个存储设备。第三存储区域与第一存储区域和第二存储区域不同。
在示例49中,示例48的主题可以可选地包括第三数据流实质上没有用户数据。
在示例50中,示例48或49中任一项的主题可以可选地包括:第三数据流实质上没有奇偶校验数据。
在示例51中,示例43至50中任一项的主题可以可选地包括:第一数据流实质上没有用户数据。
在示例52中,示例43至51中任一项的主题可以可选地包括:第一数据流实质上没有日志数据。
在示例53中,示例43至52中任一项的主题可以可选地包括:第二数据流实质上没有奇偶校验数据。
在示例54中,示例43至53中任一项的主题可以可选地包括:第二数据流实质上没有日志数据。
在示例55中,示例43至54中任一项的主题可以可选地包括:至少三个存储设备中的每个存储设备包括被配置为存储用户数据和奇偶校验数据的非易失性存储器。
在示例56中,示例43至55中任一项的主题可以可选地包括:至少三个存储设备中的每个存储设备具有与写入数据相关联的第一粒度和与更新或删除数据相关联的、大于第一粒度的第二粒度。
在示例57中,示例43至56中任一项的主题可以可选地包括:至少三个存储设备中的每个存储设备包括固态驱动器。
在示例58中,示例43至57中任一项的主题可以可选地包括:一个或多个处理器被配置为使奇偶校验数据跨至少三个存储设备分布。
在示例59中,示例43至58中任一项的主题可以可选地包括:一个或多个处理器被配置为以对应的写入区块大小分别写入用户数据和奇偶校验数据,并且以对应的擦除区块大小分别擦除用户数据和奇偶校验数据,擦除区块大小大于写入区块大小。
在示例60中,示例43至59中任一项的主题可以可选地包括:日志数据包括关于对用户数据的写入操作和对与用户数据相关联的奇偶校验数据的写入操作的信息。
在示例61中,示例60的主题可以可选地包括:一个或多个处理器被配置为在针对写入操作写入日志数据之后,写入与日志数据相关联的用户数据和冗余数据。
在示例62中,示例43至61中任一项的主题可以可选地包括:一个或多个处理器被配置为将日志数据或冗余数据写入循环缓冲器中。
示例63是一种用于操作存储***的方法。该方法可以包括将至少三个存储设备划分为条带并且提供多个条纹,多个条纹中的每个条纹包括至少三个条带,接收用户数据并且使用户数据与关联于用户数据的奇偶校验数据一起沿着条纹分布,使得每个条纹包括至少两个数据条带和与至少两个数据条带相关联的至少一个奇偶校验条带,并且通过被引导至相应存储设备的第一存储区域的第一数据流和被引导至相应存储设备的与第一存储区域不同的第二存储区域的第二数据流将用户数据和奇偶校验数据写入存储设备中的一个或多个存储设备,使得第一数据流包括奇偶校验数据并且第二数据流包括用户数据。
在示例64中,示例63的主题可以可选地包括:该方法还包括通过被引导至第一存储区域的第一数据流或通过被引导至相应存储设备的与第一存储区域和第二存储区域不同的第三存储区域的第三数据流,将日志数据写入至少三个存储设备中的每个存储设备。
在示例65中,示例64的主题可以可选地包括:第三数据流仅包括日志数据。
在示例66中,示例63至65中任一项的主题可以可选地包括:第二数据流仅包括用户数据。
示例67是一种存储指令的非暂时性计算机可读介质,该指令在由处理器执行时使得处理器执行根据示例25至42中任一项以及示例63至66中任一项的方法。
实施例68是一种存储***。该存储***可以包括多个存储设备以及一个或多个处理器,该一个或多个处理器被配置为将多个存储设备作为独立驱动器冗余阵列来进行操作,接收用户数据并且将接收到的用户数据存储在以条带化配置形式的多个存储设备上,计算与接收到的用户数据相对应的奇偶校验数据,并且生成至少与奇偶校验数据相关联的奇偶校验分类,该奇偶校验分类与根据奇偶校验分类在多个存储设备中的每个存储设备上对奇偶校验数据和用户数据进行的物理数据放置相对应。
在示例69中,示例68的主题可以可选地包括:一个或多个处理器被配置为提供第一流和第二流,以根据奇偶校验分类将奇偶校验数据和用户数据写入多个存储设备中的每个存储设备。第一流包括奇偶校验数据,并且第二流包括用户数据。
在示例70中,示例68或69中任一项的主题可以可选地包括:一个或多个处理器还被配置为提供与接收到的用户数据和计算的奇偶校验数据相关联的日志数据,并且生成至少与日志数据相关联的日志分类,该日志分类与根据日志数据分类在多个存储设备中的每个存储设备上对日志数据进行的物理数据放置相对应。
在示例71中,示例70的主题可以可选地包括:一个或多个处理器被配置为提供第一流、第二流和第三流,以根据奇偶校验分类和日志数据分类将奇偶校验数据、用户数据和日志数据写入多个存储设备中的每个存储设备。第一流包括奇偶校验数据,第二流包括用户数据,并且第三流包括日志数据。
在示例72中,示例68至71中任一项的主题可以可选地包括:一个或多个处理器被配置为提供第一流和第二流,以根据奇偶校验分类和日志数据分类将奇偶校验数据、用户数据和日志数据写入多个存储设备中的每个存储设备。第一流包括奇偶校验数据和日志数据,并且第二流包括用户数据。
在示例73中,示例68至72中任一项的主题可以可选地包括:多个存储设备中的每个存储设备包括固态驱动器。
在示例74中,示例68至73中任一项的主题可以可选地包括:每个擦除区块包括与将数据写入擦除区块相关联的多个写入区块。
在示例75中,示例68至74中任一项的主题可以可选地包括:多个存储设备中的每个存储设备包括擦除区块大小和写入区块大小,擦除区块大小大于写入区块大小。
在示例76中,示例68至75中任一项的主题可以可选地包括:多个存储设备中的每个存储设备包括与写入数据相关联的第一粒度和与更新或删除数据相关联的、大于第一粒度的第二粒度。
在示例77中,示例68至76中任一项的主题可以可选地包括:一个或多个处理器被配置为使奇偶校验数据跨多个存储设备分布。
示例78是一种用于操作存储***的方法。该方法可以包括将多个存储设备作为独立驱动器冗余阵列来进行操作,接收用户数据并且将接收到的用户数据存储在以条带化配置形式的多个存储设备上,计算与接收到的用户数据相对应的奇偶校验数据,并且生成至少与奇偶校验数据相关联的奇偶校验分类,该奇偶校验分类与根据奇偶校验分类在多个存储设备中的每个存储设备上对奇偶校验数据和用户数据进行的物理数据放置相对应。
在示例79中,示例78的主题可以可选地包括:该方法还包括经由第一流将奇偶校验数据写入多个存储设备中的每个存储设备,并且根据奇偶校验分类经由第二流将用户数据写入多个存储设备中的每个存储设备。
在示例80中,示例78或79中任一项的主题可以可选地包括:该方法还包括提供与接收到的用户数据和生成的奇偶校验数据相关联的日志数据,并且生成至少与日志数据相关联的日志分类,该日志分类与根据日志数据分类在多个存储设备中的每个存储设备上对日志数据进行的物理数据放置相对应。
在示例81中,示例80的主题可以可选地包括:该方法还包括经由第一流将奇偶校验数据写入多个存储设备中的每个存储设备,根据奇偶校验分类经由第二流将用户数据写入多个存储设备中的每个存储设备,并且经由第三流将日志数据写入多个存储设备中的每个存储设备。
示例82是一种存储***。该存储***可以包括多个存储设备以及一个或多个处理器,该一个或多个处理器被配置为接收用户数据,生成与用户数据相关联的辅助数据,生成与用户数据和辅助数据相关联的分类,并且使用户数据和辅助数据分布在多个存储设备之中,使得用户数据和辅助数据根据其相应分类而被存储在多个存储设备中的每个存储设备内的不同存储区域中。
在示例83中,示例82的主题可以可选地包括:辅助数据包括冗余数据或日志数据。
在示例84中,示例82的主题可以可选地包括:辅助数据包括冗余数据和日志数据。
在示例85中,示例83或84中任一项的主题可以可选地包括:冗余数据包括奇偶校验数据。
在示例86中,示例83至85中任一项的主题可以可选地包括:日志数据包括写入空洞保护数据。
虽然已经参考特定方面具体示出和描述了本公开,但是本领域技术人员应当理解,在不脱离如由所附权利要求限定的本公开的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。因此,本公开的范围由所附权利要求指示,并且因此旨在涵盖落入权利要求的等同物的含义和范围内的所有改变。
Claims (20)
1.一种存储***,包括:
一个或多个处理器,其被配置为
将至少三个存储设备划分为条带,
提供多个条纹,所述多个条纹中的每个条纹包括至少三个条带,
接收用户数据,
使所述用户数据与关联于所述用户数据的奇偶校验数据一起沿着所述多个条纹分布,使得所述多个条纹中的每个条纹包括至少两个数据条带和与所述至少两个数据条带相关联的至少一个奇偶校验条带,
以及
基于被引导至所述至少三个存储设备中的相应存储设备的第一存储区域的第一数据流和被引导至所述至少三个存储设备中的所述相应存储设备的第二存储区域的第二数据流,将所述用户数据和所述奇偶校验数据写入所述至少三个存储设备中的每个存储设备,
其中,所述第二存储区域与所述第一存储区域不同,
所述第一数据流包括所述奇偶校验数据,并且
所述第二数据流包括所述用户数据。
2.根据权利要求1所述的存储***,
所述至少两个数据条带包括用户数据,并且所述至少一个奇偶校验条带包括奇偶校验数据。
3.根据权利要求2所述的存储***,
其中,所述一个或多个处理器还被配置为
将与对所述用户数据和所述奇偶校验数据进行的写入相关联的日志数据写入所述至少三个存储设备。
4.根据权利要求3所述的存储***,
所述日志数据包括写入空洞保护数据。
5.根据权利要求3所述的存储***,
其中,所述一个或多个处理器被配置为使所述日志数据跨所述至少三个存储设备分布。
6.根据权利要求3所述的存储***,
其中,所述一个或多个处理器还被配置为
基于被引导至所述至少三个存储设备中的所述相应存储设备的第三存储区域的第三数据流,将所述日志数据写入所述至少三个存储设备中的每个存储设备,
所述第三存储区域与所述第一存储区域和所述第二存储区域不同。
7.根据权利要求1所述的存储***,
所述第一数据流实质上没有所述用户数据。
8.根据权利要求1所述的存储***,
所述第二数据流实质上没有所述奇偶校验数据。
9.根据权利要求1所述的存储***,
其中,所述至少三个存储设备中的每个存储设备具有与写入数据相关联的第一粒度和与更新或删除数据相关联的、大于所述第一粒度的第二粒度。
10.根据权利要求1所述的存储***,
其中,所述至少三个存储设备中的每个存储设备包括固态驱动器。
11.根据权利要求1所述的存储***,
其中,所述一个或多个处理器被配置为
以对应的写入区块大小分别写入所述用户数据和所述奇偶校验数据,以及
以对应的擦除区块大小分别擦除所述用户数据和所述奇偶校验数据,所述擦除区块大小大于所述写入区块大小。
12.一种存储***,包括:
多个存储设备;以及
一个或多个处理器,其被配置为
接收用户数据,
生成与所述用户数据相关联的辅助数据,
生成与所述用户数据和所述辅助数据相关联的分类,以及
使所述用户数据和所述辅助数据分布在所述多个存储设备之中,
使得所述用户数据和所述辅助数据根据其相应分类而被存储在所述多个存储设备中的每个存储设备内的不同存储区域中。
13.根据权利要求12所述的存储***,
所述辅助数据包括冗余数据或日志数据。
14.根据权利要求12所述的存储***,
所述辅助数据包括冗余数据和日志数据。
15.根据权利要求13所述的存储***,
所述冗余数据包括奇偶校验数据。
16.根据权利要求12所述的存储***,
所述日志数据包括写入空洞保护数据。
17.一种用于操作存储***的方法,所述方法包括:
将多个存储设备作为独立驱动器冗余阵列来进行操作,
接收用户数据并且将接收到的用户数据存储在以条带化配置形式的所述多个存储设备上,
计算与所述接收到的用户数据相对应的奇偶校验数据,以及
生成至少与所述奇偶校验数据相关联的奇偶校验分类,所述奇偶校验分类与根据所述奇偶校验分类在所述多个存储设备中的每个存储设备上对所述奇偶校验数据和所述用户数据进行的物理数据放置相对应。
18.根据权利要求17所述的方法,还包括:
经由第一流将所述奇偶校验数据写入所述多个存储设备中的每个存储设备,以及
根据所述奇偶校验分类,经由第二流将所述用户数据写入所述多个存储设备中的每个存储设备。
19.根据权利要求17所述的方法,还包括:
提供与所述接收到的用户数据和生成的奇偶校验数据相关联的日志数据,以及
生成至少与所述日志数据相关联的日志分类,所述日志分类与根据日志数据分类在所述多个存储设备中的每个存储设备上对所述日志数据进行的物理数据放置相对应。
20.根据权利要求19所述的方法,还包括:
经由第一流将所述奇偶校验数据写入所述多个存储设备中的每个存储设备,
根据所述奇偶校验分类,经由第二流将所述用户数据写入所述多个存储设备中的每个存储设备,
经由所述第一数据流或第三流将所述日志数据写入所述多个存储设备中的每个存储设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/718,031 | 2017-09-28 | ||
US15/718,031 US10481979B2 (en) | 2017-09-28 | 2017-09-28 | Storage system, computing system, and methods thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109582219A true CN109582219A (zh) | 2019-04-05 |
Family
ID=65638383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810985334.7A Pending CN109582219A (zh) | 2017-09-28 | 2018-08-28 | 存储***、计算***及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10481979B2 (zh) |
CN (1) | CN109582219A (zh) |
DE (1) | DE102018123670A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796774A (zh) * | 2020-07-07 | 2020-10-20 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
CN113326175A (zh) * | 2020-02-28 | 2021-08-31 | 美光科技公司 | 用于存储器子***控制器的数据记录子*** |
CN115167787A (zh) * | 2022-09-06 | 2022-10-11 | 苏州浪潮智能科技有限公司 | 一种数据转存方法、***、设备及计算机可读存储介质 |
US20230135652A1 (en) * | 2021-10-28 | 2023-05-04 | Hitachi, Ltd. | Distributed storage system and storage control method |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11138069B2 (en) * | 2018-06-11 | 2021-10-05 | Seagate Technology, Llc | Providing additional parity for non-standard sized parity data sets |
US20200319819A1 (en) * | 2019-04-02 | 2020-10-08 | Dell Products, Lp | Method and Apparatus for Improving Parity Redundant Array of Independent Drives Write Latency in NVMe Devices |
US12001685B2 (en) * | 2022-03-31 | 2024-06-04 | Cohesity, Inc. | Performing an in-line erasure coding process using a write-ahead log |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6567891B2 (en) * | 2001-03-14 | 2003-05-20 | Hewlett-Packard Development Company, L.P. | Methods and arrangements for improved stripe-based processing |
US7062702B2 (en) * | 2001-03-14 | 2006-06-13 | Hewlett-Packard Development Company, L.P. | Efficient parity operations |
KR100463841B1 (ko) * | 2002-02-25 | 2004-12-29 | 한국전자통신연구원 | 레이드 서브 시스템과 이를 이용한 디스크 에러 모드에서데이터 입출력 및 복구 방법 |
US8762771B2 (en) * | 2011-11-04 | 2014-06-24 | Lsi Corporation | Method for completing write operations to a RAID drive pool with an abnormally slow drive in a timely fashion |
IN2013KO01274A (zh) * | 2013-11-08 | 2015-05-15 | Lsi Corp | |
US10564865B2 (en) * | 2016-03-22 | 2020-02-18 | Seagate Technology Llc | Lockless parity management in a distributed data storage system |
-
2017
- 2017-09-28 US US15/718,031 patent/US10481979B2/en active Active
-
2018
- 2018-08-28 CN CN201810985334.7A patent/CN109582219A/zh active Pending
- 2018-09-26 DE DE102018123670.0A patent/DE102018123670A1/de active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113326175A (zh) * | 2020-02-28 | 2021-08-31 | 美光科技公司 | 用于存储器子***控制器的数据记录子*** |
CN111796774A (zh) * | 2020-07-07 | 2020-10-20 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
CN111796774B (zh) * | 2020-07-07 | 2024-03-08 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
US20230135652A1 (en) * | 2021-10-28 | 2023-05-04 | Hitachi, Ltd. | Distributed storage system and storage control method |
US11836391B2 (en) * | 2021-10-28 | 2023-12-05 | Hitachi, Ltd. | Distributed storage system and storage control method |
CN115167787A (zh) * | 2022-09-06 | 2022-10-11 | 苏州浪潮智能科技有限公司 | 一种数据转存方法、***、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10481979B2 (en) | 2019-11-19 |
DE102018123670A1 (de) | 2019-03-28 |
US20190095281A1 (en) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11681614B1 (en) | Storage device with subdivisions, subdivision query, and write operations | |
US11967369B2 (en) | Lifetime mixed level non-volatile memory system | |
CN109582219A (zh) | 存储***、计算***及其方法 | |
US10649677B2 (en) | Cooperative physical defragmentation by a file system and a storage device | |
US10712977B2 (en) | Storage device writing data on the basis of stream | |
US9921956B2 (en) | System and method for tracking block level mapping overhead in a non-volatile memory | |
US8489806B2 (en) | Storage apparatus and method of managing data storage area | |
JP6385556B2 (ja) | 不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法 | |
US10360144B2 (en) | Storage apparatus and non-volatile memory device including a controller to selectively compress data based on an update frequency level | |
US9183142B2 (en) | Reducing flash memory write amplification and latency | |
US20100088461A1 (en) | Solid state storage system using global wear leveling and method of controlling the solid state storage system | |
US10545684B2 (en) | Storage device | |
US9372804B2 (en) | Cache memory for hybrid disk drives | |
US11537305B1 (en) | Dissimilar write prioritization in ZNS devices | |
CN114730282A (zh) | Zns奇偶校验交换到dram | |
US11288184B2 (en) | Systems and methods for managing an artificially limited logical space of non-volatile memory | |
US20230236964A1 (en) | Storage controller deallocating memory block, method of operating the same, and method of operating storage device including the same | |
US20240143171A1 (en) | Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device | |
US20240062823A1 (en) | Mixed write cursor for block stripe writing | |
KR20230115196A (ko) | 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |