CN107636599B - 当单个输入/输出请求跨越两个存储设备时响应于存储设备故障返回相干数据 - Google Patents

当单个输入/输出请求跨越两个存储设备时响应于存储设备故障返回相干数据 Download PDF

Info

Publication number
CN107636599B
CN107636599B CN201680030138.3A CN201680030138A CN107636599B CN 107636599 B CN107636599 B CN 107636599B CN 201680030138 A CN201680030138 A CN 201680030138A CN 107636599 B CN107636599 B CN 107636599B
Authority
CN
China
Prior art keywords
storage device
locations
unexposed
exposed
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680030138.3A
Other languages
English (en)
Other versions
CN107636599A (zh
Inventor
J.A.博伊德
S.E.布里奇
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107636599A publication Critical patent/CN107636599A/zh
Application granted granted Critical
Publication of CN107636599B publication Critical patent/CN107636599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • G06F21/1088Transfer of content, software, digital rights or licenses by using transactions with atomicity, consistency, or isolation and durability [ACID] properties

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

控制器保持第一存储设备和第二存储设备的暴露和未暴露位置。响应于接收到请求,执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据,所述控制器在所述第一存储设备的所述未暴露位置中原子地写入整个数据。

Description

当单个输入/输出请求跨越两个存储设备时响应于存储设备 故障返回相干数据
背景技术
控制器可以控制对多个存储设备的访问。响应于来自在耦合到控制器的一个或多个主机计算设备中执行的应用的输入/输出(I/O)请求,控制器可以在多个存储设备中的一个或多个上执行相应的I/O操作,以及向一个或多个主机计算设备返回一个或多个响应。在某些情形下,I/O请求可以由在控制器中执行的应用来生成,并且控制器可以在多个存储设备中的一个或多个上执行相应的I/O操作并且返回对应用的一个或多个响应。
在某些情形下,多个存储设备可以是硬盘驱动器(HDD)或固态驱动器(SSD)或其他类型的存储设备。在某些情形下,HDD或SSD可以被配置为独立磁盘的冗余阵列(RAID)或某一其他配置中。控制器可以包括RAID控制器、HDD控制器、SSD控制器和与多个存储设备进行接口的其他控制器。在某些情形下,控制器可以是存储控制器。
在主机计算设备中或在控制器中执行的应用可以通过经由逻辑地址对存储进行寻址来执行I/O。控制器可以通过使用到存储设备的接口来将逻辑地址映射到多个存储设备中的一个或多个上的物理地址。在某些情形下,当与来自应用的单个I/O请求相对应的逻辑地址的范围被控制器(和/或接口)映射到存储设备上的物理地址时,物理地址可以跨越多于一个存储设备。
附图说明
现在参考附图,其中通篇相似的附图标号表示相应的部分:
图1图示出了根据某些实施例的在其中控制多个存储设备的控制器耦合到一个或多个主机的计算环境的框图;
图2图示出了根据某些实施例的示出了第一存储设备和第二存储设备的暴露和未暴露位置的框图;
图3图示出了根据某些实施例的示出了当元数据被锁定时用于返回相干数据的操作的框图;
图4图示出了根据某些实施例的示出了在未锁定元数据的情况下用于返回相干数据的操作的框图;
图5图示出了根据某些实施例的在电源故障或其他类型故障的情况下返回相干数据;
图6图示出了根据某些实施例的示出了当元数据被锁定时保留I/O操作的执行顺序的流程图;
图7图示出了根据某些实施例的示出了当元数据未被锁定时可能不保留I/O操作的执行顺序的流程图;
图8图示出了根据某些实施例的当执行元数据锁定时用于返回相干数据的流程图;
图9图示出了根据某些实施例的当不执行元数据锁定时用于返回相干数据的流程图;和
图10图示出了根据某些实施例的包括计算设备或控制器的系统的框图。
具体实施方式
在某些存储设备配置中,可能需要一次向多个存储设备发出I/O操作。例如,可以将来自主机的单个I/O请求分割成两个或更多I/O操作,以允许该I/O请求由底层存储设备来满足。在其中分割单个I/O请求的情况下,可以将数据的一部分写入一个存储设备,并且可以将数据的另一部分写入另一存储设备。如果在这种过程期间有电力丢失,则可以只将数据写入一个存储设备或另一个是可能的。这可能导致数据损坏。
某些实施例确保在电力丢失的情况下或在存储设备的某种其他类型的故障的情况下避免数据损坏。数据保持原先的状态或者写入全部新数据。通过防止系统中存在的数据部分为新数据以及部分为先前写入的数据的情形,来避免数据损坏。
在下面的描述中对附图进行参考,附图形成若干实施例的一部分并且示出了若干实施例。应当理解,可以利用其他实施例,并且可以进行结构和操作改变。
图1图示出了根据某些实施例的计算环境100的框图,其中控制多个存储设备104、106的控制器102耦合到一个或多个主机108、110。
控制器102和主机108、110可以包括任何合适的计算设备,诸如个人计算机、大型机、电话设备、智能电话、存储控制器、硬件控制器、刀片计算机、具有存储器的处理器等。主机108、110可以被称为主机计算系统或计算设备。虽然仅示出了两个主机108、110,但在其他实施例中可以存在附加的主机。控制器102可以是RAID控制器、存储器控制器、存储控制器、磁盘控制器或任何其他合适的控制器。
存储设备104、106可以被称为第一存储设备104和第二存储设备106。虽然仅示出了两个存储设备104、106,但是在其他实施例中可以存在附加的存储设备。存储设备104、106可以是磁盘驱动器、固态驱动器、非易失性存储器或任何其它类型的合适的存储设备。非易失性存储器可以包括:包括在非易失性存储器芯片中的NAND存储器、NOR存储器或一些其它合适的非易失性存储器,诸如相变存储器(PCM)、字节可寻址的三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、并入了忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋传递转矩(STT)-MRAM、字节可寻址随机存取非易失性存储器等。在某些实施例中存储设备104、106还可以包括非易失性动态随机存取存储器(NVDRAM)。
控制器102可以通过总线(例如外围组件互连(PCIe)、串行高级技术附件(SATA)、串行附接小型计算机系统接口(SAS))或诸如互联网、存储区域网络(SAN)、局域网(LAN)等的网络来与存储设备104,106通信。SATA规范的进一步细节可以在由俄勒冈州比弗顿的SATA国际组织(SATA-IO)于2013年8月发布的题为“Serial ATA Specification,Revision3.2”的出版物中找到。在另一示例中,接口和/或互连协议可以遵守和/或与NVMe(非易失性存储器主机控制器接口Express)兼容。NVMe的进一步细节可以在由NVM ExpressTM工作组于2014年11月3日发布的题为“NVM ExpressTM,Revision 1.2”的出版物和/或本规范的早期版本和/或更高版本中找到(NVM Express是NVM Express有限公司的商标。)。在图1中,存储设备104、106已经被示出为在控制器102的外部。在替代实施例中,存储设备104、106可以被包括在控制器102的机箱内。
控制器102可以包括操作系统112或诸如微内核或其他系统软件之类的其他控制软件、存储管理应用114和其他应用116。存储管理应用114和其他应用116可以以软件、硬件、固件或其任何组合来实现,并且可以在操作系统112的控制下被执行。
控制器102还具有用于控制元数据118、锁定120以及指示支持用于向或从存储设备104、106传送数据的最大传送大小的标识符122的规定。可以将元数据118存储在控制器中或在一个或多个存储设备中并且可以在某些实施例中被实现为可以在其上获得锁定的数据结构。标识符122也可以被称为最大数据传送大小数据结构122。元数据118提供由在主机108、110中执行的主机应用124、126所使用的逻辑地址到存储设备104、106的物理地址的映射。元数据118还提供由控制器102中执行的应用116所使用的逻辑地址到存储设备104、106的物理地址的映射。元数据118指示逻辑地址映射到的物理位置。
存储管理应用114可以获取锁定120以独占地更新元数据118,并且随后释放锁定120,使得再次可以更新或访问元数据。
指示符122指示支持用于向或从存储设备104、106传送数据的最大传送大小。例如,如果最大传送大小为64千字节,那么每个I/O请求可以请求写入或读取不超过64千字节的数据。与I/O请求的逻辑地址相对应的物理地址跨越多个存储设备当然是可能的。
在某些实施例中,主机应用124、126或应用116中的任何一个可以生成写入请求,以在逻辑地址范围上执行写入操作,其中与逻辑地址范围相对应的物理地址可以跨越第一存储设备104和第二存储设备106二者。如果将写入数据进行分割以将写入数据的一部分写入第一存储设备104,并将写入数据的另一部分写入第二存储设备106,那么如果第一或第二存储设备存在电源故障或任何其他类型的故障,那么相干数据可能未驻留在存储设备104、106中。如果存储在存储设备104、106中的针对单个I/O的数据不是先前写入的数据和新写入的数据的混合、而是先前写入的数据或者新写入的数据,则数据被称为是相干性。
在某些实施例中,将整个写入数据原子地写入到第一存储设备的扩展区域或第二存储设备的扩展区域,其中扩展区域未被暴露给主机应用124、126或应用116。结果,两个存储设备104、106中的一个总是具有整个数据的先前写入版本,并且在正在写入新数据的存储设备发生故障的情况下可以使用作为相干数据的数据的先前写入版本。
图2图示出了根据某些实施例的示出了第一存储设备104和第二存储设备106的示例性暴露和未暴露位置的框图200。
在某些实施例中,经由附图标号202示出了第一存储设备104的存储位置,并且经由附图标号204示出了第二存储设备106的存储位置。存储位置202、204是物理地址,并且可以包括块、轨道或任何其他存储单元。
在某些实施例中,存储管理应用114确保将第一存储设备104的位置206和第二存储设备106的位置208暴露以用于写入或读取到存储管理应用114以外的应用。存储位置210、212各自至少为最大数据传送大小214、216的大小,其被保持在控制器102中的最大数据传送大小数据结构122中。
第一存储设备104和第二存储设备106的存储位置的组织使得将未暴露位置210或未暴露位置212用于存储分割写入I/O的写入数据的全部,如果没有使用未暴露位置210、212用于存储分割的写入I/O的整个写入数据,则其写入数据将被部分地写入在第一存储设备104上并且部分地写入在第二存储设备106上。在已将新数据写入未暴露位置210并且已更新元数据118之后,可以将未暴露位置210转换成暴露位置。类似地,在已将新数据写入未暴露位置212并且已更新元数据118之后,可以将未暴露位置212转换成暴露位置。当位置210被转换成暴露位置时,位置212被转换成未暴露位置。类似地,当将位置212转换成暴露位置时,将位置210转换成未暴露位置。因此,附图标号210、212示出了在不同时间点可以是暴露或未暴露的位置。当位置210是未暴露的时,位置212可以是暴露的,反之亦然。
图3图示出了根据某些实施例示出了在执行元数据118的锁定时用于返回相干数据的操作的框图300。
在步骤A 302中,存储管理应用114接收跨越诸如HDD或SSD边界的存储设备边界的新写入I/O。控制进行到步骤B 304,其中存储管理应用114获取用于对元数据118进行独占访问的元数据118的锁定120。元数据118可以在此点处指示已经写入到新写入I/O的存储位置的最新版本的数据是在第二存储设备106中的暴露位置中,所述暴露位置是先前未暴露的存储位置212。控制进行到步骤C 306,其中存储管理应用114将跨越存储设备边界的整个新写入数据原子地写入到第一存储设备104的未暴露位置210。原子地写入整个新写入数据意味着写入了整个新写入数据或者什么都没有写入。
在步骤C 306的结论处,未暴露位置210具有新写入数据314,而第二存储设备106的位置212具有到相同逻辑存储地址的先前写入的数据316。如果没有规定至少大小等于存储在最大数据传送大小数据结构122中的最大数据传送大小的未暴露位置210、212,那么新写入数据314将部分地朝向第一存储设备104的末尾并且部分地朝向第二存储设备106的开始写入。
从步骤C,控制进行到步骤D 308,其中存储管理应用114原子地更新元数据118,以指示跨越存储设备边界的当前数据在第一存储设备104上,并且然后在步骤E 310中由存储管理应用114释放元数据118上的锁定120。一旦在步骤D 308处原子地更新元数据118,则在其上写入整个新写入数据的第一存储设备104的未暴露位置210变成第一存储设备104的新的暴露位置并且写入到第一存储设备104的新写入数据变成当前数据。与第一存储设备104的新暴露位置相对应的逻辑地址可由在主机108、110或控制器102上执行的应用114、116、124、126访问。将第二存储设备106的先前暴露的位置转换成未暴露位置212。
因此,图3图示出了某些实施例,其中在锁定元数据118之后,存储管理应用114向第一存储设备104的未暴露位置210写入跨越第一存储设备104和第二存储设备106二者的单个写入请求的整个写入数据。由于整个写入数据不能超过所支持的最大传送大小,所以整个写入数据可以被写入至少是由最大数据传送大小数据结构122所指示的最大传送大小的大小的未被暴露位置210。
图4图示出了根据某些实施例的示出了在未锁定元数据的情况下用于返回相干数据的操作的框图400。
在步骤A 402中,存储管理应用114接收跨越存储设备边界的新写入I/O。控制进行到步骤B 404,其中存储管理应用114读取元数据118,其指示已经写入到新写入I/O的存储位置的最新版本的数据416是在第二存储设备106中的先前未暴露但当前暴露的存储位置212中。控制进行到步骤C 406,其中存储管理应用114将跨越存储设备边界的整个新写入数据原子地写入到第一存储设备104的未暴露位置210。
在步骤C 406的结论处,第一存储设备104上的未暴露位置210具有新写入数据414,而第二存储设备106的位置212具有到相同逻辑存储地址的先前写入的数据416。
从步骤C,控制进行到块D 408,其中存储管理应用114原子地更新元数据118,以指示跨越存储设备边界的当前数据在第一存储设备104上。一旦在步骤D 408处原子地更新元数据118,则在其上写入整个新写入数据的第一存储设备104的未暴露位置变成第一存储设备104的新的暴露位置并且写入到第一存储设备104的新写入数据变成当前数据。将第二存储设备106上的暴露位置212转换成未暴露位置。
因此,图4图示出了某些实施例,其中在未锁定元数据118的情况下,存储管理应用114向第一存储设备104的未暴露位置210写入跨越第一存储设备104和第二存储设备106二者的单个写入请求的整个写入数据。由于整个写入数据不能超过所支持的最大传送大小,所以整个写入数据可以被写入至少是最大传送大小的大小的未暴露位置210。
图5图示出了根据某些实施例的示出了在电源故障或其他类型的故障的情况下用于返回相干数据的操作的框图500。在块502处,示出了在对第一存储设备104的未暴露位置210的原子写入完成之前发生电源故障(所以某些其他类型的故障)。由于这样实施例中的元数据118显示当前数据在第二存储设备106中,所以针对与写入请求相同的逻辑地址的后续读取请求可以确保相干数据(其是先前写入的数据316、416)来自第二存储设备106。因此,在写入新数据时第一存储设备104发生故障(例如,电源故障、轨道错误等)的情况下,响应于读取请求可以从第二存储设备106的暴露位置(即先前未暴露的位置212)返回先前写入的数据。应当注意,当原子地完成数据的写入并且更新元数据118时,则将第一存储设备的先前未暴露位置转换成第一存储设备的新的暴露位置,并且将第二存储设备106的暴露位置转换成第二存储设备106的未暴露位置。
图6图示出了根据某些实施例的示出当执行元数据118的锁定时保留I/O操作的执行顺序的流程图600。图6中所示的操作可以由在控制器102中执行的存储管理应用114来执行。
控制开始于块602,其中接收跨越存储设备边界的新写入I/O请求。在接收到新写入I/O请求(经由附图标号604示出)之后,接收试图读取与写入I/O请求相对应的相同逻辑地址的读取请求(经由附图标号606示出)。在执行从由读取请求所指明的逻辑地址读取数据之前,存储管理应用114确定(在块608处)元数据118是否被锁定。如果是这样,那么写入I/O操作(在块602中)具有对元数据118的独占访问,并且从由读取请求所指明的逻辑地址中读取数据必须等待(附图标号610)并且控制返回到块606。
在块608处,确定元数据118未被锁定(例如,如果元数据118上的锁定早先已被存储管理应用114释放,则可以确定元数据118未被锁定,如图3的块310中所示),然后控制进行(“否”分支612)到块614,其中存储管理应用114执行读取操作。如果第一存储设备104中没有电源故障,则返回来自第一存储设备104的新数据,并且如果第一存储设备104中存在电源故障,则返回来自第二存储设备106的先前写入的数据。
因此,在图6中,当执行元数据118的锁定时,保持I/O操作的执行顺序。在写入操作之后接收到的读取操作无法完成直到写入操作完成或在执行写入操作时发生了电源故障。
图7图示出了根据某些实施例的示出了当元数据未被锁定时可能不保留I/O操作的执行顺序的流程图700。图7中所示的操作可以由在控制器102中执行的存储管理应用114来执行。
控制开始于块702,其中接收跨越存储设备边界的新的写入I/O操作。在接收到新写入I/O操作(经由附图标号704示出)之后,接收试图读取与写入I/O操作相对应的相同逻辑地址的读取操作(经由附图标号706示出)。
在图7中所示的实施例中,元数据118未被锁定。由于元数据118未被锁定,所以读取操作可以在元数据更新(图4中的步骤D 408)之前执行,所述元数据更新指示将写入数据原子写入到第一存储设备104完成并且当前数据在第一存储设备104中。因此,即使在写入到第一存储设备104时没有电源故障,读取操作也可以返回先前写入的数据或新的数据(在块708处)。如果元数据更新未结束,则可以返回先前写入的数据,而如果元数据更新结束,则可以返回新的数据。
因此,在图7中,当执行元数据118的锁定时,不保持I/O操作的执行顺序。即使在读取操作之前接收到写入操作,在写入操作之后接收到的读取操作也可以在写入操作完成之前完成。
图8图示出了根据某些实施例的在执行元数据锁定时用于返回相干数据的流程图800。图8中所示的操作可以由在控制器102中执行的存储管理应用114来执行。
控制开始于块802,其中控制器102保持第一存储设备104和第二存储设备106的暴露位置206、208和未暴露位置210、212。接收请求(在块804处)以执行写入操作以在跨越第一存储设备104和第二存储设备106的位置中写入数据。
控制进行到块806,其中存储管理应用114获取元数据118上的锁定,其中元数据118在该时间点处指示与写入操作的逻辑地址相对应的当前数据是在第二存储设备806中。存储管理应用114在第一存储设备104的暴露位置210中原子地写入(在块808处)整个写入数据,并且然后原子地更新(在块810处)元数据118,以指示当前数据是在第一存储设备104中,其中在其上写入整个数据的第一存储设备104的未暴露位置变成第一存储设备104的暴露位置,并且第二存储设备106的暴露位置变成第二存储设备106的未暴露位置。然后,由存储管理应用114释放元数据118上的锁定120(在块812处)。
从块802、804、806,控制还可以进行到块814,其中接收请求,以在与写入操作的逻辑地址相同的逻辑地址的逻辑地址上执行读取操作。读取操作等待(在块816处)执行,直到元数据118上的锁定120被释放或元数据118未被锁定。从块816,控制可以进行到块818或块820。在块818处,如果在第一存储设备104的未暴露位置210中未成功写入整个数据,则存储管理应用114返回第二存储设备106的暴露位置(即,先前未暴露位置212)中的先前存储的数据。在块820处,如果在第一存储设备104的未暴露位置210中成功写入整个数据,则存储管理应用114返回第一存储设备104的暴露位置(即,先前未暴露位置210)中的数据。在第一存储设备104的未暴露位置210中的整个数据的成功写入将第一存储设备104的未暴露位置210转换成第一存储设备104的暴露位置。
因此,图8图示出了某些实施例,其中如果在第一存储设备104的未暴露位置210上写入该写入数据之前元数据118被锁定,那么读取操作返回相干数据。如果在写入请求之后接收到读取请求,则在执行写入操作之后执行读取操作。
图9图示出了根据某些实施例的在不执行元数据118的锁定时用于返回相干数据的流程图900。图9中所示的操作可以由在控制器102中执行的存储管理应用114来执行。
控制开始于块902,其中控制器102保持第一存储设备104和第二存储设备106的暴露位置206、208和未暴露位置210、212。接收请求(在块904处)以执行写入操作以在被映射到跨越第一存储设备104和第二存储设备106的位置的逻辑地址中写入数据。
存储管理应用114在第一存储设备104的未暴露位置210中原子地写入(在块906处)整个写入数据,并且然后原子地更新(在块908处)元数据118,以指示当前数据在第一存储设备104上。在元数据118的原子更新时,其上原子地写入了整个数据的第一存储设备104的未暴露位置被转换成第一存储设备的暴露位置,并且第二存储设备106的暴露位置被转换成第二存储设备106的未暴露位置。
从块902、904、906、908,控制还可以进行到块910,其中接收请求,以从与写入操作的逻辑地址相同的逻辑地址的逻辑地址执行读取操作。从块910,控制进行到块912,其中确定是否在更新元数据118之前执行读取操作或者在第一存储设备104的未暴露位置210中的整个数据的写入是否成功。如果是(来自块912的“是”分支913),则控制进行到块914,其中返回第二存储设备106的暴露(先前未暴露的位置212)中的先前存储的数据。如果不是(来自块912的“否”分支915),则返回第一存储设备104的暴露(即,先前未暴露的位置210)中的数据。
因此,图9图示出了某些实施例,其中当在第一存储设备104的未暴露位置210上写入该写入数据之前元数据118未被锁定时,那么读取操作返回相干数据。即使在写入请求之后接收到读取请求,也可以在写入操作的执行完成之前或之后执行读取操作。避免元数据118的锁定加速了执行I/O的过程,代价是允许无序I/O操作。然而,保留了返回数据的相干性。
因此, 图1-图9图示出了当写入跨越两个存储设备的数据时响应于第一存储设备的故障而返回相干数据的某些实施例。避免锁定元数据118的实施例加速了I/O操作并保持数据的相干性,但是允许执行无序I/O操作。
在某些实施例中,条带化是将数据主体划分成块并将数据块扩展到诸如HDD或SSD的多个存储设备中的过程。条带可以包括在HDD或SSD集合上划分的数据,并且被称为条带的条带单元是指在单个驱动器上的数据分片。在这样的实施例中,在成员HDD或SSD(或级联中的HDD或SDD的末尾和开始)上的每个条带具有描述条带边缘的可移动虚拟边界。用于HDD或SSD的控制器可以将边界的位置保存在元数据中,并且在每个HDD/SSD上过度分配条带大小,但是只暴露标准的条带大小。在一个条带的末尾处过度分配的同等数量在下一个HDD/SSD上的下一个条带的开始处被过度分配。例如,暴露的条带大小可以是64KB,但是控制器可能为每个条带分配了128KB。控制器将条带开始和结束处的虚拟位置保持在元数据内。通过控制虚拟条带的开始和末尾,控制器可以确保跨越存储设备边界的写入仅被写入到一个存储设备,而不必将写入分割成两个I/O操作。在这样的实施例中,如果控制器使用图1-图9中描述的实施例,则可能不会有任何损坏。
在图1-图9中描述的实施例可以提供防止在用作存储器的NVDRAM或字节可寻址三维交叉点存储器中的损坏的保护。在其中字节可寻址三维交叉点存储器/NVDRAM的存储体以任何方式被条带化的某些实施例中,对于存储器写入可以存在可以跨越在存储器的条带/体之间的间隙。在某些实施例中,可以通过使用图1-图9中所描述的实施例,在跨越在存储器的条带/体之间的存储器写入上的数据丢失期间可以保护字节可寻址三维交叉点存储器/NVDRAM免受损坏的暴露。
所描述的操作可以被实现为使用标准编程和/或工程技术来产生软件、固件、硬件或其任何组合的方法、装置或计算机程序产品。所描述的操作可以被实现为保持在“计算机可读存储介质”中的代码,其中处理器可以从计算机存储可读介质读取和执行代码。计算机可读存储介质包括电子电路、存储材料、无机材料、有机材料、生物材料、外壳、壳体、涂层和硬件中的至少一个。计算机可读存储介质可以包括但不限于磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、DVD、光盘等)、易失性和非易失性存储设备(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、固态设备(SSD)等。实现所描述的操作的代码还可以在硬件设备(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中实现的硬件逻辑中实现。此外,实现所描述的操作的代码可以在“传输信号”中实现,其中传输信号可以通过空间或通过诸如光纤、铜线等的传输介质进行传播。其中编码了代码或逻辑的传输信号可以进一步包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。嵌入在计算机可读存储介质上的程序代码可以作为传输信号从发射站或计算机发射到接收站或计算机。计算机可读存储介质不仅仅包括传输信号。本领域技术人员将认识到,可以对该配置进行许多修改,并且制品可以包括本领域已知的合适的信息承载介质。
用于执行某些实施例的各个方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写。流程图和框图的块可以由计算机程序指令来实现。
图10图示出了可以包括主机108、110和/或控制器102的系统1000的框图。例如,在某些实施例中,系统1000可以是计算机(例如,膝上型计算机、台式计算机、平板电脑、手机或任何其他合适的计算设备),所述计算机具有均包括在系统1000中的主机108和控制器102。在某些实施例中,系统1000可以是服务器计算机或控制器,其包括或耦合到存储设备104、106。系统1000可以包括在某些实施例中可以至少包括处理器1004的电路1002。系统1000还可以包括存储器1006(例如,易失性存储器设备)和存储1008。存储1008可以包括固态驱动器、磁盘驱动器或包括非易失性存储器设备的其它驱动器或设备(例如,EEPROM、ROM、PROM、闪存、固件、可编程逻辑等)。存储1008还可以包括磁盘驱动器、光盘驱动器、磁带驱动器等。存储1008可以包括内部存储设备、附接存储设备和/或网络可访问存储设备。系统1000可以包括程序逻辑1010,其包括可被加载到存储器1006中并由处理器1004或电路1002执行的代码1012。在某些实施例中,包括代码1012的程序逻辑1010可以存储在存储1008中。在某些其他实施例中,程序逻辑1010可以在电路1002中实现。因此,虽然图10示出了与其他元件分开的程序逻辑1010,但是程序逻辑1010可以被实现在存储器1006和/或电路1002中。系统1000还可以包括显示器1014(例如,液晶显示器(LCD)、发光二极管(LED)显示器、阴极射线管(CRT)显示器、触摸屏显示器或任何其它合适的显示器)。系统1000还可以包括一个或多个输入设备1016,诸如键盘、鼠标、操纵杆、触控板或任何其它合适的输入设备)。在系统1000中也可以找到除了图10中所示之外的其他组件或设备。
某些实施例可以针对用于由个人或将计算机可读代码集成到计算系统中的自动处理来部署计算指令的方法,其中与计算系统结合的代码能够执行所述实施例的操作。
除非另有明确规定,否则术语“一实施例”、“实施例”、“多个实施例”、“所述实施例”、 “一个或多个实施例”、“一些实施例”和“一个实施例”意指“一个或多个(但不是所有)实施例”。
除非另有明确规定,否则术语“包括”、“包含”、“具有”及其变型意指“包括但不限于”。
除非另有明确规定,否则项目的列举列表并不意味着任何或所有项目是相互排斥的。
除非另有明确规定,否则“一”、“一个”和“该”意指“一个或多个”。
除非另有明确规定,否则彼此通信的设备不需要彼此连续通信。此外,彼此通信的设备可以直接或通过一个或多个中间件间接地通信。
具有彼此通信的多个组件的实施例的描述并不意味着需要所有这些组件。相反,描述了各种可选组件来说明各种可能的实施例。
此外,尽管可以按序列的顺序描述处理步骤、方法步骤、算法等,但是这些处理、方法和算法可以被配置为以交替的顺序工作。换句话说,可以描述的任何序列或顺序的步骤并不必定指示要按照该顺序执行这些步骤的需求。本文所描述的处理的步骤可以以任何实际顺序执行。此外,可以同时执行一些步骤。
当本文描述单个设备或物品时,显而易见的是,可以使用多于一个设备/物品(无论它们是否协作)来代替单个设备/物品。类似地,在本文描述多于一个的设备或物品(无论它们是否协作)的情况下,显而易见的是,可以使用单个设备/物品来代替多于一个的设备或物品或者可以使用不同数量的设备/物品来代替所示数量的设备或程序。设备的功能性和/或特征可以可替代地由未被明确描述为具有这样的功能性/特征的一个或多个其他设备来体现。因此,其他实施例不需要包括设备本身。
图中可能已经图示出的至少某些操作示出了以特定的顺序发生的某些事件。在替代实施例中,可以以不同的顺序执行、修改或删除某些操作。此外,可以将步骤添加到上述逻辑,并且仍然符合所描述的实施例。此外,本文所描述的操作可以按顺序发生,或者可以并行地处理某些操作。此外,操作可以由单个处理单元或由分布式处理单元执行。
已经为了说明和描述的目的呈现了各种实施例的前述描述。它不旨在穷举或被限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。
示例
示例1是其中控制器保持第一存储设备和第二存储设备的暴露和未暴露位置的方法。响应于接收到请求,执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据,控制器在所述第一存储设备的所述未暴露位置中原子地写入整个数据。
在示例2中,示例1的主题可以包括响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则所述控制器返回在所述第二存储设备的所述暴露位置中存储的数据。
在示例3中,示例2的主题可以包括未暴露位置的大小至少等于由控制器支持的最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置。将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,其中所述未暴露位置未被暴露给除所述控制器之外的其他实体。
在示例4中,示例2的主题可以包括响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,获取元数据上的锁定,其中所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;在原子地写入所述整个数据之后,原子地更新所述元数据以指示当前数据在所述第一存储设备上,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;并在更新所述元数据之后释放所述元数据上的锁定。
在示例5中,示例4的主题可以包括所述读取操作等待执行,直到释放了所述元数据上的锁定。
在示例6中,示例5的主题可以包括响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据。
在示例7中,示例2的主题可以包括在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置。
在示例8中,权利要求7的主题可以包括在所述元数据的更新之前或之后执行所述读取操作,并且其中:如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;和如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
示例9是包括存储器和耦合到存储器的处理器的系统,其中所述处理器可操作来保持第一存储设备和第二存储设备的暴露和未暴露位置。响应于接收到请求,执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据,所述处理器可操作在所述第一存储设备的所述未暴露位置中原子地写入整个数据。
在示例10中,示例9的主题可以包括响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则所述处理器可操作来返回在所述第二存储设备的所述暴露位置中存储的数据。
在示例11中,示例10的主题可以包括:所述未暴露位置的大小至少等于由控制器支持的最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置。将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,其中所述未暴露位置未被暴露给除所述控制器之外的其他实体。
在示例12中,示例10的主题可以包括响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,所述处理器可操作来获取元数据上的锁定,其中,所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;在原子地写入所述整个数据之后,所述处理器可操作来原子地更新所述元数据以指示当前数据在所述第一存储设备上,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;并且所述处理器可操作来在更新所述元数据之后释放所述元数据上的锁定。
在示例13中,示例12的主题可以包括所述读取操作等待执行,直到释放了所述元数据上的锁定。
在示例14中,示例13的主题可以包括:响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,处理器可操作来响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据。
在示例15中,示例10的主题可以包括在将数据原子地写入到所述第一存储设备的未暴露位置之后,所述处理器可操作来原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置。
在示例16中,权利要求15的主题可以包括在所述元数据的更新之前或之后执行所述读取操作,并且其中:如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;并且如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
示例17是一种装置,包括多个非易失性存储设备和耦合到所述多个非易失性存储设备的控制器,其中所述控制器可操作来执行操作,所述操作包括:保持所述多个非易失性存储设备中的第一存储设备和第二存储设备的暴露和未暴露位置;响应于接收到请求,执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据,在所述第一存储设备的所述未暴露位置中原子地写入整个数据。
在示例18中,示例17的主题可以包括:响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据。
在示例19中,示例18的主题可以包括:所述未暴露位置的大小至少等于由所述控制器支持的最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置。将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,其中所述未暴露位置未被暴露给除所述控制器之外的其他实体。
在示例20中,示例18的主题可以包括:所述操作还包括:响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,获取元数据上的锁定,其中所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;在原子地写入所述整个数据之后,原子地更新所述元数据以指示当前数据在所述第一存储设备上,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;并在更新所述元数据之后释放所述元数据上的锁定。
在示例21中,示例20的主题可以包括:所述读取操作等待执行,直到释放了所述元数据上的锁定。
在示例22中,示例21的主题可以包括:响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据。
在示例23中,示例18的主题可以包括:所述操作还包括:在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置;如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;并且如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
示例24是一种系统,包括:包括第一存储设备和第二存储设备的多个非易失性存储设备;显示器;以及耦合到所述多个非易失性存储设备和所述显示器的处理器,其中所述非易失性存储设备可操作来:保持所述第一存储设备和第二存储设备的暴露和未暴露位置;响应于接收到请求,执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据,在所述第一存储设备的所述未暴露位置中原子地写入整个数据。
在示例25中,示例24的主题可以包括:响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据。

Claims (31)

1.一种用于存储的方法,包括:
由控制器保持第一存储设备和第二存储设备的暴露和未暴露位置;
响应于接收到执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据的请求,在所述第一存储设备的所述未暴露位置中原子地写入整个数据;以及
在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置。
2.根据权利要求1所述的方法,所述方法还包括:
响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据。
3.根据权利要求2所述的方法,其中,所述未暴露位置的大小至少等于由所述控制器支持的最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置,其中将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,并且其中所述未暴露位置未被暴露给除所述控制器之外的其他实体。
4.根据权利要求2所述的方法,所述方法还包括:
响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,获取元数据上的锁定,其中所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;
在原子地写入所述整个数据之后,原子地更新所述元数据以指示当前数据在所述第一存储设备上,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;和
在更新所述元数据之后释放所述元数据上的锁定。
5.根据权利要求4所述的方法,其中,所述读取操作等待执行,直到释放了所述元数据上的锁定。
6.根据权利要求5所述的方法,所述方法还包括:
响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据。
7.根据权利要求1所述的方法,其中在所述元数据的更新之前或之后执行读取操作,并且其中:
如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;和
如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
8.一种用于存储的系统,包括:
存储器;和
耦合所述存储器的处理器,其中所述处理器可操作来:
保持第一存储设备和第二存储设备的暴露和未暴露位置;
响应于接收到执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据的请求,在所述第一存储设备的所述未暴露位置中原子地写入整个数据;
在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置。
9.根据权利要求8所述的系统,所述操作还包括:
响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据。
10.根据权利要求9所述的系统,其中,所述未暴露位置的大小至少等于最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置,其中将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,并且其中所述未暴露位置未被暴露给除所述系统之外的其他实体。
11.根据权利要求9所述的系统,其中所述处理器还可操作来:
响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,获取元数据上的锁定,其中所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;
在原子地写入所述整个数据之后,原子地更新所述元数据以指示当前数据在所述第一存储设备上,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;和
在更新所述元数据之后释放所述元数据上的锁定。
12.根据权利要求11所述的系统,其中,所述读取操作等待执行,直到释放了所述元数据上的锁定。
13.根据权利要求12所述的系统,其中所述处理器还可操作来:
响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据。
14.根据权利要求8所述的系统,其中在所述元数据的更新之前或之后执行读取操作,并且其中:
如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;和
如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
15.一种用于存储的装置,包括:
多个非易失性存储设备;和
耦合到所述多个非易失性存储设备的控制器,其中所述控制器可操作来执行操作,所述操作包括:
保持所述多个非易失性存储设备中的第一存储设备和第二存储设备的暴露和未暴露位置;
响应于接收到执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据的请求,在所述第一存储设备的所述未暴露位置中原子地写入整个数据;以及
在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置。
16.根据权利要求15所述的装置,所述操作还包括:
响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据。
17.根据权利要求16所述的装置,其中,所述未暴露位置的大小至少等于由所述控制器支持的最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置,其中将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,并且其中所述未暴露位置未被暴露给除所述控制器之外的其他实体。
18.根据权利要求16所述的装置,所述操作还包括:
响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,获取元数据上的锁定,其中所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;
在原子地写入所述整个数据之后,原子地更新所述元数据以指示当前数据在所述第一存储设备上,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;和
在更新所述元数据之后释放所述元数据上的锁定。
19.根据权利要求18所述的装置,其中,所述读取操作等待执行,直到释放了所述元数据上的锁定。
20.根据权利要求19所述的装置,所述操作还包括:
响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据。
21.根据权利要求16所述的装置,所述操作还包括:
如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;和
如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
22.一种用于存储的系统,包括:
包括第一存储设备和第二存储设备的多个非易失性存储设备;
显示器;和
耦合到所述多个非易失性存储设备和所述显示器的处理器,其中所述非易失性存储设备可操作来:
保持所述第一存储设备和第二存储设备的暴露和未暴露位置;
响应于接收到执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据的请求,在所述第一存储设备的所述未暴露位置中原子地写入整个数据;以及
在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置。
23.根据权利要求22所述的系统,其中,所述非易失性存储设备可操作来:
响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据。
24.一种用于存储的设备,包括:
用于由控制器保持第一存储设备和第二存储设备的暴露和未暴露位置的装置;
用于响应于接收到执行写入操作以在跨越所述第一存储设备和所述第二存储设备的位置中写入数据的请求,在所述第一存储设备的所述未暴露位置中原子地写入整个数据的装置;以及
用于在将数据原子地写入到所述第一存储设备的未暴露位置之后,原子地更新元数据以指示当前数据在所述第一存储设备上,将所述第一存储设备的未暴露位置转换成所述第一存储设备的暴露位置,以及将所述第二存储设备的暴露位置转换成所述第二存储设备的未暴露位置的部件。
25.根据权利要求24所述的设备,所述设备还包括:
用于响应于接收到执行读取操作的请求,如果在所述第一存储设备的所述未暴露位置中的所述整个数据的写入不成功,则返回在所述第二存储设备的所述暴露位置中存储的数据的装置。
26.根据权利要求25所述的设备,其中,所述未暴露位置的大小至少等于由所述控制器支持的最大数据传送大小,其中所述第二存储设备的所述暴露位置是所述第二存储设备的先前未暴露位置,其中将所述未暴露位置朝向所述第一存储设备上的位置的末尾以及朝向所述第二存储设备上的位置的开头分配,并且其中所述未暴露位置未被暴露给除所述控制器之外的其他实体。
27.根据权利要求25所述的设备,所述设备还包括:
用于响应于接收到执行所述写入操作的请求,并且在原子地写入所述整个数据之前,获取元数据上的锁定的装置,其中所述元数据指示当前数据在所述第二存储设备的所述暴露位置上;
用于在原子地写入所述整个数据之后,原子地更新所述元数据以指示当前数据在所述第一存储设备上的装置,并且其中响应于原子地更新所述元数据,所述第一存储设备的未暴露位置变成所述第一存储设备的暴露位置,并且所述第二存储设备的暴露位置变成所述第二存储设备的未暴露位置;和
用于在更新所述元数据之后释放所述元数据上的锁定的装置。
28.根据权利要求27所述的设备,其中,所述读取操作等待执行,直到释放了所述元数据上的锁定。
29.根据权利要求28所述的设备,所述设备还包括:
用于响应于在所述第一存储设备的未暴露位置上成功写入所述整个数据以使所述第一存储设备的未暴露位置成为所述第一存储设备的暴露位置,响应于执行读取操作的所述请求而返回来自所述第一存储设备的暴露位置的数据的装置。
30.根据权利要求24所述的设备,其中在所述元数据的更新之前或之后执行读取操作,并且其中:
如果在所述元数据的更新之前执行所述读取操作,则返回在所述第二存储设备的暴露位置中存储的数据;和
如果在所述元数据的更新之后执行所述读取操作,则返回被原子地写入到被转换成所述第一存储设备的暴露位置的所述第一存储设备的未暴露位置的数据。
31.一种计算机可读介质,在其上具有指令,当指令被执行时导致计算机设备执行根据权利要求1-7中任一项的方法。
CN201680030138.3A 2015-06-26 2016-05-26 当单个输入/输出请求跨越两个存储设备时响应于存储设备故障返回相干数据 Active CN107636599B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/751737 2015-06-26
US14/751,737 US9690503B2 (en) 2015-06-26 2015-06-26 Returning coherent data in response to a failure of a storage device when a single input/output request spans two storage devices
PCT/US2016/034475 WO2016209543A1 (en) 2015-06-26 2016-05-26 Returning coherent data in response to a failure of a storage device when a single input/output request spans two storage devices

Publications (2)

Publication Number Publication Date
CN107636599A CN107636599A (zh) 2018-01-26
CN107636599B true CN107636599B (zh) 2021-10-08

Family

ID=57585610

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680030138.3A Active CN107636599B (zh) 2015-06-26 2016-05-26 当单个输入/输出请求跨越两个存储设备时响应于存储设备故障返回相干数据

Country Status (4)

Country Link
US (1) US9690503B2 (zh)
EP (1) EP3314390B1 (zh)
CN (1) CN107636599B (zh)
WO (1) WO2016209543A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200821835A (en) * 2006-06-20 2008-05-16 Microsoft Corp Efficiently synchronizing with separated disk caches
CN101653010A (zh) * 2006-10-26 2010-02-17 Lsi公司 用于视频数据交叉存储的系统
US7711897B1 (en) * 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
US8402209B1 (en) * 2005-06-10 2013-03-19 American Megatrends, Inc. Provisioning space in a data storage system
WO2015023744A1 (en) * 2013-08-13 2015-02-19 Intelligent Intellectual Property Holdings 2 Llc Method and apparatus for performing annotated atomic write operations

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542431B2 (en) * 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
US8392813B2 (en) * 2009-12-22 2013-03-05 Intel Corporation Redundant file system
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US20140181474A1 (en) 2012-12-26 2014-06-26 Telefonaktiebolaget L M Ericsson (Publ) Atomic write and read microprocessor instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711897B1 (en) * 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
US8402209B1 (en) * 2005-06-10 2013-03-19 American Megatrends, Inc. Provisioning space in a data storage system
TW200821835A (en) * 2006-06-20 2008-05-16 Microsoft Corp Efficiently synchronizing with separated disk caches
CN101653010A (zh) * 2006-10-26 2010-02-17 Lsi公司 用于视频数据交叉存储的系统
WO2015023744A1 (en) * 2013-08-13 2015-02-19 Intelligent Intellectual Property Holdings 2 Llc Method and apparatus for performing annotated atomic write operations

Also Published As

Publication number Publication date
US9690503B2 (en) 2017-06-27
US20160378370A1 (en) 2016-12-29
EP3314390A1 (en) 2018-05-02
CN107636599A (zh) 2018-01-26
EP3314390B1 (en) 2023-03-29
EP3314390A4 (en) 2019-01-02
WO2016209543A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
US9996266B2 (en) Physical address management in solid state memory
US10866797B2 (en) Data storage device and method for reducing firmware update time and data processing system including the device
US9619389B1 (en) System for a backward and forward application environment compatible distributed shared coherent storage
US10156989B2 (en) Preallocating storage space for an application operation in a space efficient volume
US9524107B2 (en) Host-based device drivers for enhancing operations in redundant array of independent disks systems
KR101301840B1 (ko) 비휘발성 메모리 장치의 데이터 처리 방법
US20140095555A1 (en) File management device and method for storage system
US20190138374A1 (en) Upgrading a kernel or kernel module with a configured persistent memory unused by the kernel
US11893269B2 (en) Apparatus and method for improving read performance in a system
US9547460B2 (en) Method and system for improving cache performance of a redundant disk array controller
US10642531B2 (en) Atomic write method for multi-transaction
TW202401232A (zh) 儲存系統以及操作儲存系統的方法
US11200210B2 (en) Method of efficient backup of distributed file system files with transparent data access
US10606506B2 (en) Releasing space allocated to a space efficient target storage in a copy relationship with a source storage
CN107636599B (zh) 当单个输入/输出请求跨越两个存储设备时响应于存储设备故障返回相干数据
US20220405090A1 (en) Data Storage Device Firmware Updates in Composable Infrastructure
US20140201167A1 (en) Systems and methods for file system management
US9766990B1 (en) Checkpoint block storage device
US20180188967A1 (en) Snapshot storage management
US10108339B2 (en) Reduction of intermingling of input and output operations in solid state drives
US11947799B1 (en) Systems and methods for using the TRIM command with solid state devices
US9460010B1 (en) Method, data storage system and computer program product for managing copy on first write data for snapshot purposes
US20150339065A1 (en) Enhanced data reliability using solid-state memory-enabled storage devices

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
GR01 Patent grant
GR01 Patent grant