CN107851061A - 远程存储器中硬件辅助的事务提交 - Google Patents

远程存储器中硬件辅助的事务提交 Download PDF

Info

Publication number
CN107851061A
CN107851061A CN201680042424.1A CN201680042424A CN107851061A CN 107851061 A CN107851061 A CN 107851061A CN 201680042424 A CN201680042424 A CN 201680042424A CN 107851061 A CN107851061 A CN 107851061A
Authority
CN
China
Prior art keywords
memory
affairs
record
logic record
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680042424.1A
Other languages
English (en)
Other versions
CN107851061B (zh
Inventor
约翰·海耶斯
布莱恩·戈尔德
山塔努·古普塔
罗伯特·李
哈里·卡纳安
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.)
Pure Storage Inc
Original Assignee
Pure Storage Inc
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 Pure Storage Inc filed Critical Pure Storage Inc
Publication of CN107851061A publication Critical patent/CN107851061A/zh
Application granted granted Critical
Publication of CN107851061B publication Critical patent/CN107851061B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

提供了一种用于在存储单元中的事务提交的方法。该方法包括:从存储节点接收逻辑记录到存储节点的存储单元的事务引擎中,并将逻辑记录写入事务引擎的数据结构中。该方法包括将使用逻辑记录来执行原子更新的指示写入到事务引擎的命令队列中,并且将逻辑记录的每个部分作为提交的事务从事务引擎的数据结构传送到存储单元的非持久性存储器。还提供了用于存储系统的存储单元。

Description

远程存储器中硬件辅助的事务提交
背景技术
存储集群和其它存储系统将用户数据存储在各种类型的存储器(诸如硬盘驱动器、磁带、和固态存储器)中。一些存储系统使用流水线架构,其中数据被写入到易失性存储器中,并且然后从易失性存储器传送到非易失性存储器,或从非持久性存储器传送到持久性存储器。这可以允许额外的处理,或者利用写入速度的差异或各种类型的存储器的写入延迟。在存储系统中定义数据一致性机制而使得在电源故障、操作系统、或应用程序崩溃的情况下进行数据恢复,是具有挑战性的,其中一些是普遍的而其中一些是系统架构所特有的。
在这种情况下出现各种实施例。
发明内容
在一些实施例中,提供了一种用于存储系统的存储单元。存储单元包括非持久性存储器和持久性存储器。存储单元包括事务引擎,被配置为接收逻辑记录并被配置为将逻辑记录作为原子更新传送到非持久性存储器。每个原子更新构成逻辑记录到非持久性存储器的传送。
在一些实施例中,提供了一种用于存储单元中的事务提交的方法。该方法包括将来自存储节点的逻辑记录接收到存储节点的存储单元的事务引擎中,并将逻辑记录写入事务引擎的数据结构中。该方法包括将使用逻辑记录来执行原子更新的指示写入到事务引擎的命令队列中,并且将逻辑记录的每个部分作为提交的事务从事务引擎的数据结构发送到存储单元的非持久性存储器。
在一些实施例中,提供了一种存储系统。存储系统包括作为存储集群耦接的多个存储节点。多个存储节点中的每一个具有一个或多个存储单元,并且每个存储单元具有非持久性存储器、持久性存储器、以及具有事务互锁的事务引擎,该事务互锁被配置为确保原子更新的一致性。每个存储单元的事务引擎和事务互锁被配置为将逻辑记录从具有事务互锁的事务引擎传送到非持久性存储器,其中每个逻辑记录作为由事务互锁进行互锁的原子更新而被传送。
根据以下结合附图的详细描述,实施例的其它方面和优点将变得显而易见,其中,附图以示例的方式示出了所描述的实施例的原理。
附图说明
通过参考以下结合附图的描述,可以最好地理解所描述的实施例及其优点。在不脱离所描述的实施例的精神和范围的情况下,这些附图决不限制本领域技术人员可以对所描述的实施例进行形式和细节上的任何改变。
图1是根据一些实施例的具有耦接到每个存储节点以提供网络附接存储的多个存储节点和内部存储设备的存储设备集群的透视图。
图2是示出根据一些实施例的耦接多个存储节点的互连交换器的框图。
图3是根据一些实施例的示出存储节点的内容和非易失性固态存储单元中的一个的内容的多级框图。
图4是具有为原子更新提供互锁的事务引擎的非易失性固态存储单元的实施例的框图。
图5是图4的事务引擎的实施例的框图,示出了事务互锁。
图6是示出应用于到达事务记录缓冲器的逻辑记录的流控制,以及传送引擎应用于原子更新作为其中逻辑记录从事务记录缓冲器传送到非持久性存储器的事务的操作图。
图7是用于存储单元中的事务提交的方法的流程图,其可以被实践或使用在图4-图6的存储单元的实施例上。
图8是示出可以实现本文描述的实施例的示例性计算设备的图示。
具体实施方式
下面参照图1-图3描述了存储集群的实施例。一些实施例在存储单元中具有事务引擎,如参照图4-图7所描述的,其为逻辑记录的原子传输提供了数据一致性。下面的实施例描述了存储用户数据的存储集群,诸如源自一个或多个用户或客户端系统或存储集群外部的其它源的用户数据。存储集群使用擦除编码和元数据冗余副本将用户数据分布在机箱内的存储节点上。擦除编码是指数据保护或重建的一种方法,其中数据被存储在一组不同的位置,诸如磁盘、存储节点或地理位置。闪存是可以与实施例集成的固态存储器的一种类型,但是实施例可以扩展到其它类型的固态存储器或其它存储介质,包括非固态存储器。存储位置和工作负载的控制被分布在集群对等系统中的存储位置。诸如调解各个存储节点之间的通信,检测存储节点何时变得不可用,以及平衡各个存储节点上的I/O(输入和输出)之类的任务,都是基于分布式进行处理的。在一些实施例中,数据被布置或分布在支持数据恢复的数据片段或条带中的多个存储节点上。数据的所有权可以在集群内独立于输入和输出模式重新分配。下面更详细描述的这种架构允许集群中的存储节点发生故障,并且系统保持运行,因为数据可以从其它存储节点重建并因此保持可用于输入和输出操作。在各种实施例中,存储节点可以被称为集群节点、刀片或服务器。
存储集群包含在机箱内,即容纳一个或多个存储节点的外壳。机箱内包括,用于向每个存储节点提供功率的机制(诸如功率分布总线)以及诸如实现存储节点之间通信的通信总线的通信机制。根据一些实施例,存储集群可以在一个位置作为独立系统运行。在一个实施例中,机箱包含可以被独立启用或禁用的功率分布和通信总线两者的至少两个实例。内部通信总线可以是以太网总线,但是诸如外围组件快速互连(PCI Express)、无限宽带技术(InfiniBand)等的其它技术同样适用。机箱为外部通信总线提供了一个端口,可以实现在多个机箱之间直接或通过交换机与客户端系统进行通信。外部通信可以使用诸如以太网、无限宽带技术、光纤信道等的技术。在一些实施例中,外部通信总线使用不同的通信总线技术来进行机箱间和客户端通信。如果交换机部署在机箱内部或机箱之间,交换机可以作为在多种协议或技术之间的转换。当连接多个机箱来定义存储集群时,可以使用专有接口或标准接口(诸如网络文件系统(NFS)、通用互联网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本传输协议(HTTP)。客户端协议翻译可以发生在交换机、机箱外部通信总线或每个存储节点内。
每个存储节点可以是一个或多个存储服务器,并且每个存储服务器连接到一个或多个非易失性固态存储设备单元,其可以被称为存储单元。一个实施例包括在每个存储节点中以及在1到8个非易失性固态存储设备单元之间的单个存储服务器,然而这个示例并不意味着限制。存储服务器可以包括处理器、动态随机存取存储器(DRAM)和用于内部通信总线的接口以及用于每个功率总线的功率分布。在一些实施例中,在存储节点内部,接口和存储单元共享通信总线(例如PCI express)。非易失性固态存储单元可以通过存储节点通信总线直接接入内部通信总线接口,或者请求存储节点来接入总线接口。在一些实施例中,非易失性固态存储设备单元包含嵌入式中央处理单元(CPU)、固态存储控制器、和一定量的固态大容量存储设备(例如2-32千兆字节(TB)之间)。嵌入式易失性存储介质(诸如,DRAM)和能量储备装置被包括在非易失性固态存储单元中。在一些实施例中,能量储备装置是能够在功率损失的情况下,将DRAM内容的子集传送到稳定的存储介质的电容器、超级电容器、或电池。在一些实施例中,非易失性固态存储设备单元被构建有诸如相变或磁阻随机存取存储器(MRAM)的存储级存储器,其替代DRAM并且启用降低功率保持装置。
存储节点和非易失性固态存储设备的许多特征之一是主动地重建存储集群中的数据的能力。存储节点和非易失性固态存储设备可以确定存储集群中的存储节点或非易失性固态存储设备何时是不可到达的,而无论是否尝试读取涉及该存储节点或非易失性固态存储设备的数据。然后,存储节点和非易失性固态存储设备协作以在至少部分新的位置恢复和重建数据。这构成了主动重建,因为系统重建数据而无需等待到从使用存储集群的客户端系统发起的读取接入需要数据。存储器的这些和进一步细节及其操作在下面讨论。
图1是根据一些实施例的、具有耦接到每个存储节点以提供网络附接存储设备或存储区域网络的多个存储节点150和内部固态存储器的存储集群160的透视图。在物理组件和由此提供的存储器存储量灵活且可重新配置的布置中,网络附接存储设备、存储区域网络、或存储集群或其它存储器可以包括一个或多个存储集群160,每个存储集群160具有一个或多个存储节点150。存储集群160被设计成适合于机架,并且可以根据需要为存储器设置并填充一个或多个机架。存储集群160具有有多个槽142的机箱138。应当理解,机箱138可以被称为外壳、壳体或机架单元。在一个实施例中,机箱138具有十四个槽142,尽管可以设计其它数量的槽。例如,一些实施例具有四个槽、八个槽、十六个槽、三十二个槽、或其它合适数量的槽。在一些实施例中,每个槽142可以容纳一个存储节点150。机箱138包括可用于将机箱138安装在机架上的翼片148。风扇144提供用于冷却存储节点150及其组件的空气循环,但是可以使用其它冷却组件,或者实施例可以被设计为无需冷却组件。交换结构146将机箱138内的存储节点150耦接在一起并耦接到网络,用于与存储器进行通信。在图1描绘的实施例中,交换结构146和风扇144的左侧的槽148被示出为由存储节点150占用,而交换结构146和风扇144的右侧的槽142是空的,并且出于说明的目的,可插入存储节点150。该配置是一个示例,并且一个或多个存储节点150可以以各种其它布置来占用槽142。在一些实施例中,存储节点布置不必是顺序的或相邻的。存储节点150是可热插拔的,这意味着,无需停止或断电系统,存储节点150可被插入到机箱138中的槽142中,或者从槽142中移除。存储节点150插入到槽142或从槽142移除时,系统自动重新配置,从而标识和适应改变。在一些实施例中,重新配置包括恢复冗余和/或重新平衡数据或负载。
每个存储节点150可以具有多个组件。本文所示的实施例中,存储节点150包括由CPU 156(即,处理器)填充的印刷电路板158、耦接到CPU 156的存储器154、和耦接到CPU156的非易失性固态存储设备152,尽管在其它实施例中可以使用其它安装和/或组件。存储器154具有由CPU 156执行的指令和/或由CPU 156操作的数据。如下面进一步解释的,非易失性固态存储设备152包括闪存,或者在其它实施例中,包括其它类型的固态存储器。
参照图1,如上所述,存储集群160是可缩放的,这意味着容易地添加具有非均匀存储大小的存储容量。在一些实施例中,一个或多个存储节点150可以插入每个机箱或从每个机箱移除,并且存储集群自配置。无论是在交付还是随后添加的情况下安装在机箱中,插件存储节点150可以具有不同的大小。例如,在一个实施例中,存储节点150可以具有4TB的任何倍数,例如8TB、12TB、16TB、32TB等等。在其它实施例中,存储节点150可以具有任何倍数的其它存储量或能力。每个存储节点150的存储容量被广播,并影响如何将数据分条的决定。为了获得最大的存储效率,实施例可以在条带中尽可能自我配置,但要遵从预定的连续操作要求,同时丢失多达一个或多达两个的非易失性固态存储单元152或机箱内150中的存储节点150。
图2是示出耦接多个存储节点150的通信互连170和功率分布总线172的框图。返回参考图1,在一些实施例中,通信互连170可以被包括在交换结构146中或与交换结构146一起被实现。在一些实施例中,在多个存储集群160占用机架的情况下,通信互连170可以被包括在机架顶部交换器中或与其一起实现。如图2所示,存储集群160被封装在单个机箱138内。外部端口176通过通信互连170耦接到存储节点150,而外部端口174直接耦接到存储节点。外部电源端口178被耦接到功率分布总线172。存储节点150可以包括如参考图1所描述的非易失性固态存储设备152的变化的量和不同的容量。此外,如图2所示,一个或多个存储节点150可以是计算专用存储节点。权限168被实现在非易失性固态存储设备152上,例如存储在存储器中的列表或其它数据结构。在一些实施例中,权限被存储在非易失性固态存储设备152内并且由在非易失性固态存储设备152的控制器或其它处理器上执行的软件所支持。在其它实施例中,权限168被实现在存储节点150,例如存储在存储器154中并且由在存储节点150的CPU 156上执行的软件所支持的列表或其它数据结构。在一些实施例中,权限168控制数据怎样被存储以及被存储在非易失性固态存储设备152中的哪里。该控制辅助确定哪种类型的擦除编码方案被应用于数据,以及哪些存储节点150具有哪些数据部分。每个权限168可以被分配给非易失性固态存储设备152。在各种实施例中,每个权限可以通过存储节点150或者非易失性固态存储设备152控制由文件系统分配给数据的一系列索引节点编号、片段编号或者其它数据标识符。
在一些实施例中,每片数据和每片元数据在系统中具有冗余。此外,每片数据和每片元数据都有一个所有者,其可以被称为权限。如果该权限无法访问(例如,通过存储节点的故障),则存在如何找到该数据或该元数据的连续计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168与存储节点150和非易失性固态存储设备152有关系。覆盖一定范围数据片段号或数据的其它标识符的每个权限168,可以被分配给特定的非易失性固态存储设备152。在一些实施例中,用于所有这些范围的权限168被分布到存储集群的非易失性固态存储设备152上。每个存储节点150具有网络端口,该网络端口提供对该存储节点150的(一个或多个)非易失性固态存储设备152的接入。在一些实施例中,数据可以存储在与片段号相关联的片段中,并且该片段号是用于配置RAID(独立磁盘的冗余阵列)条带的间接性(indirection)。因此,权限168的分配和使用建立了对数据的间接机性。根据一些实施例,间接性可以被称为间接地引用数据的能力,在这种情况下是通过权限168。片段将一组非易失性固态存储设备152和本地标识符标识到可包含数据的一组非易失性固态存储设备152中。在一些实施例中,本地标识符是设备中的偏移,并且可以由多个片段被顺序地重新使用。在其它实施例中,本地标识符对于特定的片段是唯一的并且从不重新使用。非易失性固态存储设备152中的偏移被应用于定位用于写入非易失性固态存储设备152(以RAID条带的形式)或从其中读取的数据。数据横跨非易失性固态存储设备152的多个单元而被划分,其可以包括或不同于具有用于特定数据片段的权限168的非易失性固态存储设备152。
如果例如在数据移动或数据重建期间,数据的特定片段所在的位置发生变化,则应该在具有权限168的非易失性固态存储设备152或存储节点150处,针对数据片段查询权限168。为了定位特定的数据段,实施例计算数据片段的散列值或应用索引节点号或数据片段号。该操作的输出指向具有该特定数据段的权限168的非易失性固态存储设备152。在一些实施例中,该操作有两个阶段。第一阶段将实体标识符(ID)(例如,片段号、索引节点号、或目录号)映射到权限标识符。该映射可以包括诸如散列或位掩码之类的计算。第二阶段是将权限标识符映射到特定的非易失性固态存储设备152,这可以通过显式映射完成。该操作是可重复的,使得当执行计算时,计算的结果可重复并且可靠地指向具有该权限168的特定非易失性固态存储设备152。该操作可包括该组可到达的存储节点作为输入。如果该组可到达的非易失性固态存储单元改变了,则最佳设置也改变。在一些实施例中,持久值是当前分配(其始终为真),并且计算值是该集群将尝试重新配置的目标分配。该计算可以被用于当存在可到达的并且构成相同的集群的一组非易失性固态存储设备152的情况下,为权限确定最佳的非易失性固态存储设备152。计算还确定对等非易失性固态存储设备152的有序组,其还将记录非易失性固态存储映射的权限,使得即使所分配的非易失性固态存储设备不可到达,也可以确定权限。在一些实施例中,如果特定授权168不可用则可以查询副本或替代的权限168。
参照图1和图2,存储节点150上的CPU 156的许多任务中的两个任务将拆分以写入数据,并且重新组装所读取的数据。当系统确定要写入数据时,该数据的权限168如上所述。当数据的片段ID已经被确定时,写入请求被转发到当前被确定为权限168的主机的非易失性固态存储设备152,该权限168从片段确定。(非易失性固态存储设备152和相应的权限168所在的)存储节点150的主CPU 156随后拆分或碎片化数据并将该数据发送出到各种非易失性固态存储设备152。根据擦除编码方案将所发送的数据写入为数据条带。在一些实施例中,拉取所请求的数据,并且在其它实施例中,推送该数据。相反,当读取数据时,包含数据的片段ID的权限168如上所述而被定位。(非易失性固态存储设备152和相应权限168所在的)存储节点150的主CPU 156从非易失性固态存储设备和由权限指向的相应的存储节点请求数据。在一些实施例中,数据从闪存存储设备中被读取为数据条带。然后,存储节点150的主CPU 156重新组装所读取的数据,根据适当的擦除编码方案来纠正任何错误(如果存在),并且将重组的数据转发到网络。在进一步的实施例中,可以在非易失性固态存储设备152中处理这些任务中的一些或全部。在一些实施例中,片段主机通过从存储设备请求页面来请求将数据发送到存储节点150,然后将数据发送到创建原始请求的存储节点。
在一些系统中,例如在UNIX风格的文件系统中,使用索引结点(index node)或索引节点(inode)来处理数据,索引节点或索引节点指定表示文件系统中的对象的数据结构。例如,对象可以是文件或目录。元数据可以伴随对象,诸如权限数据和创建时间戳等属性以及其它属性。片段编号可以被分配给文件系统中的全部或一部分的这种对象。在其它系统中,数据片段是用别处分配的片段号处理的。出于讨论的目的,分布的单位是实体,实体可以是文件、目录或片段。即,实体是存储系统存储的数据或元数据的单位。实体被分组进被称为权限的集合。每个权限都有一个权限所有者,这是一个具有用来更新权限中的实体的专有权利的存储节点。换言之,存储节点包含权限,而该权限又包含实体。
根据一些实施例,片段是数据的逻辑容器。片段是介质地址空间和物理闪存位置之间的地址空间,即数据片段号在这个地址空间中。片段还可以包含元数据,这使得数据冗余被恢复(重写到不同的闪存位置或设备),而无需更高级别的软件。在一个实施例中,片段的内部格式包含客户端数据和介质映射以确定该数据的位置。每个数据片段都受到保护,例如,在适用的情况下,通过从存储器和其它故障中将片段拆分成多个数据和奇偶校验碎片。根据擦除编码方案,数据和奇偶校验碎片被分布,即,横跨耦接到主CPU 156的非易失性固态存储设备152进行分条(参见图5)。在一些实施例中,术语“片段”的使用是指容器及其在分段的地址空间中的位置。根据一些实施例,术语“条带”的使用是指与片段相同的一组碎片,并且包括碎片如何与冗余或奇偶校验信息一起分布。
一系列地址空间转换横跨整个存储系统发生。顶部是链接到索引节点的目录条目(文件名)。索引节点指向介质地址空间,在该处数据被逻辑地存储。介质地址可以通过一系列间接介质进行映射,以传播大文件的负载,或实现如重复删除(deduplication)或快照等数据服务。介质地址可以通过一系列间接介质进行映射,以传播大文件的负载,或实现重复删除或快照等数据服务。分段地址然后被转换到物理闪存位置。根据一些实施例,物理闪存位置具有由系统中的闪存量界定的地址范围。介质地址和分段地址是逻辑容器,并且在一些实施例中使用128位或更大标识符使得实际上是无限的,所计算的重复使用的可能性大于系统的预期寿命。在一些实施例中,来自逻辑容器的地址以分层方式分配。最初,可以为每个非易失性固态存储设备152分配一定范围的地址空间。在这个指定范围内,非易失性固态存储设备152能够分配地址而无需与其它非易失性固态存储设备152同步。
数据和元数据是通过针对变化的工作负载模式和存储设备优化的一组底层存储布局来存储的。这些布局包含多种冗余方案、压缩格式和索引算法。其中,这些布局中的一些存储关于权限和权限主人的信息,而另一些存储文件元数据和文件数据。冗余方案包括容许单个存储设备(诸如NAND闪存芯片)内的损坏位的纠错码、容许多个存储节点的故障的擦除代码、以及容忍数据中心或区域故障的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(LDPC)码。在一些实施例中,在存储集群内使用Reed-Solomon编码,并且在存储网格内使用镜像。元数据可以使用有序的日志结构化索引(例如,日志结构化合并树)来存储,并且大数据可能不被存储在日志结构化布局中。
为了维持实体的多个副本之间的一致性,通过计算,存储节点隐含地认同两件事:(1)包含实体的权限,以及(2)包含权限的存储节点。对于权限的实体的分配可以通过将实体伪随机地分配给权限,通过将实体划分为基于外部产生的密钥的范围,或者将单个实体布置到每个权限来完成。伪随机方案的示例是线性散列和可扩展散列复制(RUSH)散列族,包括可扩展散列下的受控复制(CRUSH)。在一些实施例中,伪随机分配仅用于将权限分配给节点,因为该组节点可以改变。该组权限不能改变,所以在这些实施例中可以应用任何主观功能。一些布置方案自动将权限布置到存储节点上,而其它布置方案依赖于权限对存储节点的明确映射。在一些实施例中,利用伪随机方案将每个权限映射到一组候选权限所有者。与CRUSH相关的伪随机数据分布功能可以将权限分配给存储节点,并创建权限分配的列表。每个存储节点具有伪随机数据分布功能的副本,并且可以达到相同的分布计算,以及稍后查找或定位权限。在一些实施例中,伪随机方案中的每一个都需要可达到的一组存储节点作为输入,以便推断相同的目标节点。一旦实体被布置在一个权限中,该实体可以被存储在物理设备上,从而不存在预期的故障导致意外的数据丢失。在一些实施例中,重新平衡算法尝试以相同布局和在同一组机器上存储权限内的所有实体的副本。
预期故障的示例包括设备故障、机器被盗、数据中心火灾、以及诸如核事件或地质事件的区域灾难。不同的故障会导致不同程度的可接受的数据丢失。在一些实施例中,被盗的存储节点既不影响系统的安全性也不影响系统的可靠性,而取决于系统配置,区域性事件可能导致不丢失数据、丢失更新的几秒或几分钟、甚至完全丢失数据。
在实施例中,用于存储冗余的数据的布置独立于用于数据一致性的权限的布置。在一些实施例中,包含权限的存储节点不包含任何持久存储。相反,存储节点被连接到不包含权限的非易失性固态存储单元。存储节点与非易失性固态存储单元之间的通信互连由多种通信技术组成,并具有不一致的性能和容错特性。在一些实施例中,如上所述,非易失性固态存储单元经由PCI express连接到存储节点,存储节点使用以太网基板在单个机箱内连接在一起,并且机箱连接在一起以形成存储集群。在一些实施例中,存储集群使用以太网或光纤信道连接到客户端。如果将多个存储集群配置到一个存储网格中,则多个存储集群使用互联网或其它远距离网络链接(诸如,不经过互联网的“城域规模”链路或专用链路)连接。
权限所有者具有修改实体的专有权利,将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元,以及用来添加和移除实体的副本。这允许维护基础数据的冗余。当权限所有者故障,将要退役或过载时,权限被传送到新的存储节点。瞬时故障使得确保所有无故障机器同意新的授权位置,是不平常的。由于瞬态故障而产生的模糊可以通过协商一致的协议(例如Paxos、热-温故障转移(failover)方案)、通过远程系统管理员或由本地硬件管理员的手动干预(例如,通过从集群中物理地移除故障机器,或按下故障机器上的按钮)。在一些实施例中,使用协商一致的协议,并且故障转移是自动的。根据一些实施例,如果在太短的时间段内出现太多故障或复制事件,则系统进入自我保存模式并且停止复制和数据移动活动,直到管理员介入。
当权限在其权限内权限所有者更新实体和存储节点之间传送时,系统在存储节点和非易失性固态存储单元之间传送消息。关于持久消息,具有不同目的的消息具有不同的类型。根据消息的类型,系统保持不同的顺序和耐久性保证。由于持久性消息正在被处理,消息被临时存储在多个持久和非持久的存储硬件技术中。在一些实施例中,消息被存储在RAM、NVRAM和NAND闪存设备上,并且使用各种协议,从而有效使用每个存储介质。对延迟敏感的客户端请求可能会保存在复制的NVRAM中,然后到NAND中,而背景重新平衡操作会直接保存到NAND中。
持久性消息在被复制之前被持久地存储。这允许系统继续为客户端请求提供服务,尽管出现故障和组件更换。尽管许多硬件组件都包含对系统管理员、制造商、硬件供应链和持续监控质量控制基础架构可见的唯一标识符,但在基础架构地址之上运行的应用程序将地址虚拟化。无论组件故障和替换,这些虚拟化地址在存储系统的生命周期中都不会改变。这允许存储系统的每个组件随时间被替换,而不用重新配置或中断客户端请求过程。
在一些实施例中,虚拟化地址被存储为具有足够的冗余。连续监测系统将硬件和软件状态与硬件标识符相关联。这允许检测和预测由于错误的组件和制造细节而导致的故障。在一些实施例中,通过从关键路径移除组件,在发生故障之前,监视系统还能够实现权限和实体的积极传送离开受影响的设备。
在此公开的各种实施例中,存储集群160通常可以与存储阵列形成对比。存储节点150是创建存储集群160的集合的一部分。每个存储节点150拥有一片数据以及提供数据所需的计算。需要多个存储节点150来协作来存储和检索数据。通常用于存储阵列的存储器或存储设备较少涉及处理和操作数据。存储阵列中的存储器或存储设备接收读取、写入或擦除数据的命令。存储阵列中的存储器或存储设备并不知道它们所嵌入的较大系统或者数据意味着什么。存储阵列中的存储器或存储设备可以包括各种类型的存储器,诸如RAM、固态驱动器、硬盘驱动器等。本文描述的存储单元152具有多个同时有效并且服务于多个目的的接口。在一些实施例中,存储节点150的一些功能被移位到存储单元152中,将存储单元152转换为存储单元152和存储节点150的组合。将计算(相对于存储数据)布置到存储单元使得该计算更接近数据本身。各种系统实施例具有有不同能力的存储节点层的分层结构。相比之下,在存储阵列中,控制器拥有并且知道控制器在架子或存储设备中管理的所有数据的全部内容。如本文所述,在存储集群160中,多个存储单元152和/或存储节点150中的多个控制器以各种方式协作(例如,用于擦除编码、数据分片、元数据通信和冗余、存储容量扩展或收缩、数据恢复等)。
图3是示出存储节点150的内容和存储节点150的非易失性固态存储设备152的内容的多级框图。在一些实施例中,通过网络接口控制器(NIC)202,数据被传送到存储节点150和从存储节点150传送。如上所述,每个存储节点150具有CPU 156和一个或多个非易失性固态存储设备152。在图3中向下移动一个级别,每个非易失性固态存储设备152具有相对较快的非易失性固态存储器,诸如非易失性随机存取存储器(NVRAM)204和闪存206。在一些实施例中,NVRAM 204可能是不需要编程/擦除周期(DRAM、MRAM、PCM)的组件,并且可以是支持比从存储器读取更频繁地被写入的存储器。在图5中向下移动再一级别时,NVRAM 204在一个实施例中被实现为高速易失性存储器,诸如由能量储备218支持的动态随机存取存储器(DRAM)216。能量储备218提供足够的功率以保持DRAM 216的供电时间足够长,以用于在电力故障的情况下将内容传送到闪存206。在一些实施例中,能量储备218是电容器、超级电容器、电池或其它设备,其提供足够的能量供应以在功率损失的情况下将DRAM216的内容传送到稳定的存储介质。闪存206被实现为多个闪存管芯222,其可以被称为闪存管芯222的封装或者闪存管芯222的阵列。应当理解,闪存管芯222可以以任何数量的方式封装,其中,每封装单个管芯、每封装多个管芯(即,多芯片封装)、混合封装中、印刷电路板或其它衬底上的裸片、所封装的管芯等。在所示的实施例中,非易失性固态存储设备152具有控制器212或其它处理器,以及耦接到控制器212的输入输出(I/O)端口210。I/O端口210耦接到闪存存储节点的CPU 156和/或网络接口控制器202。闪存输入输出(I/O)端口220被耦接到闪存管芯222,并且直接存储器访问单元(DMA)214被耦接到控制器212、DRAM 216、和闪存管芯222。在所示的实施例中,I/O端口210、控制器212,DMA单元214和闪存I/O端口220可以实现在可编程逻辑设备(PLD)208(例如,现场可编程门阵列(FPGA))。在这个实施例中,每个闪存管芯222具有被组织为16kB(千字节)页224的页,以及数据可以通过其被写入到闪存管芯222或从闪存管芯222中读取的寄存器226。在其它实施例中,使用其它类型的固态存储器来代替闪存管芯222内所示的闪存,或除其之外还使用其它类型的固态存储器。
本文公开的各种实施例中的存储集群160通常可以与存储阵列形成对比。存储节点150是创建存储集群160的集合的一部分。每个存储节点150拥有提供数据所需的数据和计算的片段。多个存储节点150协作以存储和检索数据。通常用于存储阵列的存储器或存储设备较少涉及处理和操作数据。存储阵列中的存储器或存储设备接收对于读取、写入、或擦除数据的命令。存储阵列中的存储器或存储设备并不知道其所嵌入的较大系统,或者数据意味着什么。存储阵列中的存储器或存储设备可以包括各种类型的存储器,诸如RAM、固态驱动器、硬盘驱动器等。本文描述的存储单元152具有同时活动的并且服务于多个目的的接口。在一些实施例中,存储节点150的一些功能被移位到存储单元152中,将存储单元152转换为存储单元152和存储节点150的组合。将计算(相对于存储数据)布置到存储单元,将计算布置到更接近数据本身。各种系统实施例具有有不同能力的存储节点层的分层结构。相比之下,在存储阵列中,控制器拥有并且知道控制器在架子或存储设备中管理的所有数据的全部内容。如本文所述,在存储集群160中,多个存储单元152和/或存储节点150中的多个控制器以各种方式协作(例如,用于擦除编码、数据分片、元数据通信和冗余、存储容量扩展或收缩、数据恢复等)。
图4-7示出具有事务引擎402的存储单元152的各种实施例,其为逻辑记录的原子传送提供数据一致性。即使存在诸如功率损失或中断、操作系统崩溃、软件应用程序崩溃、或影响数据一致性机制的其它事件之类的事件,还是希望完成逻辑记录的原子传送。事务引擎402具有事务互锁502,该事务互锁用作针对每个原子更新的互锁或锁定机制(即事务的互锁),其是完整的逻辑记录的传送。该机制防止了在上述事件中可能发生的与存储单元152中的各个位置处的逻辑记录的一致性丢失的可能性。参考图4描述了存储单元的一个实施例的架构。图5中示出了事务引擎402的实施例的细节。参考图6描述了存储单元152中发生的操作场景和各种动作。
图4是具有为原子更新提供互锁的事务引擎402的非易失性固态存储单元152的实施例的框图。存储单元152中的事务引擎402的各种组件与控制器212交互(还参见图3),并且可以以软件、硬件、固件或其组合来实现。这些组件中的一些可以在诸如非持久性存储器404的存储器(例如,缓冲器、队列、指针、数据结构)和/或驻留在控制器212中的寄存器或存储器等中实现。非持久性存储器404可以用NVRAM 204、DRAM 216或不持久或长时间保留数据的其它RAM或存储器来实现。持久性存储器406可以用闪存206或持久或长时间保留数据的其它存储器来实现。在一些实施例中,DMA单元214和能量储备218被包括在存储单元152中(还参见图3)。控制器212将逻辑记录(例如,将参照图6进一步描述的数据)发送到事务引擎402。事务引擎402应用事务互锁502将每个逻辑记录传送到非持久性存储器404(将参考图5进一步描述)。
在事件情况下,到事务引擎402的事件输入408(例如,状态输入、中断输入、端口位等)通知事务引擎402来完成过程中的任何原子更新。然后,DMA单元214将非持久性存储器404的内容复制到持久性存储器406。这些动作由能量储备218支持,其储存足够的功率以允许这些操作完成。能量储备218因此向功率损失保持域提供功率。在恢复期间,在事件之后,存储单元152在最后的原子更新的持久性存储器406中具有连贯的图镜像,并且可以依赖于此而不被破坏。如果不是事务互锁502,则可能逻辑记录的一部分丢失并且该事件的发生没有任何指示。
图5是图4的事务引擎402的实施例的框图,其示出了事务互锁502。在各种实施例中,事务互锁502可以是事务引擎402的一部分,或可以与事务引擎402分离并耦接到事务引擎402。在所示的实施例中,事务引擎402和事务互锁502具有事务记录缓冲器506、命令队列508和事务指示符510以及传送引擎512。在其它实施例中,各种其它组件可以替代或增加这些组件中的一个或多个,并且可以容易地设计各种其它组合。事务记录缓冲器506可以被实现为线性缓冲器514或循环缓冲器516,并且在一个实施例中为大约64kB(千字节)长。在一些实施例中,事务记录缓冲器506被实现在非持久性存储器404的一部分中,或驻留在控制器212中的存储器中。到达事务引擎402的负载或逻辑记录504(例如,来自存储单元152的控制器212)例如以串行顺序写入事务记录缓冲器506(尽管其它实施例可以将这些并行写入事务记录缓冲器506)。作为说明,逻辑记录可以包括数百或数千字节的数据,并且事务记录缓冲器506优选足够长以容纳许多逻辑记录(即,不仅一个或两个)。在一些实施例中,最低限度,事务记录缓冲器至少应该是至少一百字节。
命令队列508保存对逻辑记录504的传送的描述。在一个实施例中,命令队列508是保存对应于逻辑记录504的序列号518、逻辑记录504的起点520、逻辑记录504的目的地522、以及逻辑记录504的大小524的数据结构。例如,命令队列508可以在非持久性存储器404的一部分中或在驻留在控制器212中的存储器或寄存器中实现。在一些实施例中,事务指示符510是保存指向事务记录缓冲器506的指针的数据结构。结束指针526指向事务记录缓冲器506中的(一个或多个)逻辑记录的末尾,即指向任何给定时间写入事务记录缓冲器506的最后一个逻辑记录504的末尾。开始指针528指向将从传输记录缓冲器506中传送出的下一逻辑记录504的开始。在一些实施例中,一旦逻辑记录的传送的一个或多个描述(例如,由存储单元152的控制器212)被写入到命令队列508,则传输引擎512协调逻辑记录504从事务记录缓冲器506到非持久性存储器404的传送。传输引擎512可以是不同的实现方式,传输引擎512可以是硬连线的或以软件或固件实现的状态机,或者可以是在诸如控制器212等的处理器上执行的软件代码。上述组件协作为事务互锁502和事务引擎402。在一个实施例中,事务互锁502包括事务记录缓冲器506、命令队列508、和事务指示符510。在一些实施例中,传送引擎512连接到DMA单元214,采用DMA单元214来传输逻辑记录504。
仍然参照图4和5,在事务引擎402的上下文中的原子更新是将逻辑记录504的整体从事务记录缓冲器506传送到非持久性存储器404,如由传送引擎512执行的(在一些实施例中,经由DMA单元214)。沿存储单元152的控制器212来处理逻辑记录504,其从存储集群160的一个或多个存储节点150接收逻辑记录504。为了开始存储(一个或多个)逻辑记录504的过程(也被称为插入有效载荷),一个或多个存储节点150为每个逻辑记录504分配序列号并确定一组设备,即,存储单元152要向其发送逻辑记录504的设备。传输有效载荷,即逻辑记录504被发送到存储单元152,其目的或目标为将逻辑记录复制到易失性存储器(例如,非持久性存储器404)中的一组地址中,这可以发生在任何互锁之外。接收这样的有效载荷的存储单元152的控制器212形成了对应于写入非持久性存储器404的在起始记录地址和结束记录地址之间的数据的逻辑记录504。在其它信息中,逻辑记录504可以包含分配的序列号。控制器212将逻辑记录504复制到事务记录缓冲器506中,使用尽可能多的字(或字节等)和适当的总线传送来完成该复制。本质上,事务记录缓冲器506被用作中间设备,控制器212写入其中并与事务互锁502交互。事务引擎402使用事务记录缓冲器506作为输入。接下来,控制器212写入命令队列508,该命令队列508也是事务引擎402的输入。控制器212写入事务记录缓冲器506的结束指针526。一旦控制器212完成将所有的字(例如,数百、数千、数万个字等)写入到逻辑记录504中,控制器212使这个单独的最后的字(针对该原子传送)写入命令队列508作为第二时间点。上述动作和信息构成了编程和触发事务引擎402的控制器212。通过事务记录缓冲器506和命令队列508作为到事务引擎402的输入,事务互锁502现在被配备为执行原子更新作为互锁事务。事务引擎402保留了上一次原子更新之前的时间点(即,上一次写入第二时间点),并将此作为当前原子更新的第一时间点。在一些实施例中,事务引擎402将第二时间点的写入解释为触发,以将作为从事务记录缓冲器506中的第一时间点到第二时间点的数据的整个逻辑记录504复制到非持久性存储器404中。事务引擎402将第一时间点用于开始指针528,并且将第二时间点用于结束指针526,现在将逻辑记录504从事务记录缓冲器506复制到非持久性存储器404,该逻辑记录504包括序列号518、起始520、目的地522和大小524。当该传送完成时,传送引擎512保留第二时间点作为下一个原子传送的第一时间点(例如,开始指针528),指向到事务缓冲器506中的下一逻辑记录504。如果下一个时间点可用,则传送引擎512立即或者稍后在下一时间点到来时重复上述用于下一原子传送的动作。
利用这种机制,事务记录缓冲器(等待传送的任何逻辑记录504)、命令队列508(最近传送的描述)、事务指示符510(指向等待传送的逻辑504的开始和结束)和非持久性存储器404(其包括最近传送的完整逻辑记录504)是相符的和一致的。每个下一原子更新和事务重复此过程。由于原子更新(即,逻辑记录504从事务记录缓冲器506到非持久性存储器404的传送)由系统保证发生(或已发生),所以将传送的描述写入命令队列508构成了事务提交。命令队列508具有完全形成的命令,具有事务互锁502的事务引擎402可以以保证的互锁的方式在第一时间点和第二时间点之间传送逻辑记录504。该系统还保证,即使在功率损失或崩溃的情况下,(为其做出事务提交的)该原子更新的一致镜像将在该持久性存储器406中可用于在恢复期间的使用。
图6是示出应用于到达事务记录缓冲器506的逻辑记录504,以及作为事务604应用于原子更新602的传送引擎512的流控制606的动作图,其中,传输逻辑记录504从事务记录缓冲器506传送到非持久性存储器404。参考回图3,存储节点150正在将逻辑记录504传递(即,发送)到存储单元152中的一个,并且(继续参考图6)存储单元152的控制器212正在将逻辑记录504发送到事务记录缓冲器506。这由流控制单元606调节,其将事务指示符510的结束指针526(参见图5)更新为逻辑记录504加载到事务记录缓冲器506中。以这种方式,结束指针526跟踪写入事务记录缓冲器506的最后一个逻辑记录504的末尾。流控制单元606操作以防止新的逻辑记录504覆盖事务记录缓冲器506中的现有逻辑记录504。在图6中,逻辑记录504被示出拆分为部分,这些部分是控制器212和事务记录缓冲器506之间的传送速率和总线宽度的象征。通常,该总线的宽度由控制器212的总线宽度决定,逻辑记录504的长度大于该总线宽度。
如以上参考图4和5所述,传送引擎512调节逻辑记录504从事务记录缓冲器506到非持久性存储器404的传送。如此传送的每个逻辑记录504是原子更新602,并且根据由传送引擎512与事务互锁502协作跟踪、提交和互锁的事务604。逻辑记录504被示为拆分为在事务记录缓冲器506和非持久性存储器404之间的部分,其是事务记录缓冲器506和非持久性存储器404之间的传送速率和总线宽度的象征。在一些实施例中,该总线宽度比总线控制器212的宽度宽,这导致改善的吞吐量。
在图6中示出了非持久性存储器404的内容到持久性存储器406的转储608(例如,复制或传送)。该转储608可以响应于诸如功率损失或操作系统或应用的崩溃之类的事件而发生(例如,被触发)。在所示的实施例中,传送引擎512等到原子更新602的完成之后,然后执行转储608。以这种方式,然后持久性存储器406具有最近的原子更新602的一致镜像(以及其之前的其它原子更新602)。原子更新的一部分完成是不可能的,原子更新的一部分消失是不可能的,当原子更新还未完成时不可能有信息表明原子更新已经完成,并且不可能仅有原子更新的一部分复制到持久性存储器406。系统可以在恢复期间、电源恢复后、操作系统重启或应用重新启动时依赖于该能力,使得数据可恢复并且不被损坏。
图7是用于在存储单元中进行事务提交的方法的流程图,其可以在图4-6的存储单元的实施例上实践或使用。在各种实施例中,该方法可以由存储单元的处理器和/或存储单元的组件来实施。在一些实施例中,该方法可以由存储节点的处理器和/或由存储节点的组件来实施。在动作702中,利用事务互锁将一个或多个逻辑记录接收到事务引擎中。例如,可以将逻辑记录接收到事务记录缓冲器中。在动作703中,执行原子传送的指示被接收到事务引擎的命令队列中。这可以是由存储单元的控制器发送的时间点,该时间点被事务引擎应用来更新事务指示符的结束指针,并且触发原子更新作为互锁事务。事务指示符的开始指针可以被设置为指向将从事务记录缓冲器中传送出的下一逻辑记录的开始。在动作704中,将逻辑记录从事务引擎传送到非持久性存储器作为由事务互锁主持的原子更新。应该意识到,此传送是原子更新。在动作706中,事务互锁被更新。在一些实施例中,一旦完成传送则更新命令队列是互锁更新的一部分。在一些实施例中,更新事务指示符的开始指针以指向要传送的下一逻辑记录,是互锁更新的一部分。
在决定动作708中,确定是否存在事件。该事件可以是功率损失(尽管在一些实施例中能量储备支持各种操作的完成)。事件可以是操作系统崩溃(尽管在一些实施例中,存储单元具有不受操作系统崩溃影响的专用处理器和软件)。该事件可以是应用程序崩溃(尽管在一些实施例中,存储单元具有不受应用程序崩溃影响的专用处理器和软件)。该事件可以是影响数据一致性机制的任何合适的事件。如果不存在事件,则流程分支回到动作704,以传送另一逻辑记录,或回到动作702以接收更多的逻辑记录。如果存在事件,则流程前进到判定动作710。
在决定动作710中,确定是否存在正在进行的原子更新。如果有原子更新则流程分支到动作712,以完成原子更新。流程随后进行到动作714。如果不存在原子更新,则流程分支到动作714。在动作714中,将非持久性存储器转储为持久性存储器。换句话说,非持久性存储器的内容被复制或传送到持久性存储器。由于事务互锁以及当事件发生时正在进行的任何原子更新的完成,转储会导致持久性存储器具有最近的原子更新的一致镜像(即未损坏的)以及其之前的其它更新。
应该理解,可以用诸如传统的通用计算机系统之类的数字处理系统来执行本文描述的方法。也可以使用专门设计或编程以执行一项功能的专用计算机。图8是示出可以实现在此描述的实施例的示例性计算设备的图示。根据一些实施例,图8的计算设备可以用于执行用于存储节点或非易失性固态存储单元的功能的实施例。计算设备包括通过总线805耦接到存储器803的中央处理单元(CPU)801和大容量存储设备807。大容量存储设备807代表诸如磁盘驱动器之类的持久性数据存储设备,在一些实施例中其可以是本地或远程的。在一些实施例中,大容量存储设备807可以实现备份存储。存储器803可以包括只读存储器、随机存取存储器等。在一些实施例中,驻留在计算设备上的应用可以存储在计算机可读介质(诸如,存储器803或大容量存储设备807)上,或者通过计算机可读介质访问。应用还可以是通过网络调制解调器或计算设备的其它网络接口来访问的经调制的电子信号的形式。应该理解的是,在一些实施例中,CPU 801可以体现在通用处理器、专用处理器、或专门编程的逻辑器件中。
显示器811通过总线805与CPU 801、存储器803和大容量存储设备807进行通信。显示器811被配置为显示与本文描述的系统相关联的任何可视化工具或报告。输入/输出设备809耦接到总线505,从而将命令选择中的信息传送到CPU 801。应当理解,可以通过输入/输出设备809向外部设备传输数据和从外部设备传输数据。CPU 801可以被限定为执行本文描述的功能以启用参照图1-7描述的功能。在一些实施例中,体现这种功能的代码可以被存储在存储器803或大容量存储设备807中以供诸如CPU801之类的处理器执行。计算设备上的操作系统可以是MS-WINDOWSTM、UNIXTM、LINUXTM、iOSTM、CentOSTM、AndroidTM、Redhat LinuxTM、z/OSTM或其它已知的操作系统。应该理解,本文描述的实施例也可以与虚拟化计算系统集成。
本文公开了详细的说明性实施例。然而,本文公开的具体功能细节仅仅是出于描述实施例的目的的代表性的。然而,实施例可以以许多替代形式来实施,并且不应被解释为仅限于本文阐述的实施例。
应该理解的是,尽管本文可以使用术语第一、第二等来描述各种步骤或计算,但这些步骤或计算不应该被这些术语限制。这些术语仅用于将一个步骤或一个计算从另一个区分开来。例如,第一计算可以被称为第二计算,并且类似地,第二步骤可以被称为第一步骤,而不偏离本公开的范围。如本文所使用的,术语“和/或”和“/”符号包括一个或多个相关联的所列项目的任何和所有组合。
如本文所使用的,除非上下文另有明确指示,否则单数形式“一”,“一个”和“该”也旨在包括复数形式。将进一步理解的是,当在本文中使用术语“包含”、“包含有”、“包括”和/或“包括有”指明所陈述的特征、整体、步骤、操作、元件和/或组件的出现,但并不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或其组合的存在或增加。因此,本文使用的术语仅仅是出于描述特定实施例的目的,而不是限制性的。
还应该注意的是,在一些替代的实现中,所指出的功能/动作可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能/动作,连续示出的两个图实际上可以基本上同时执行,或有时可以以相反的顺序执行。
考虑到上述实施例,应该理解,这些实施例可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要对物理量进行物理操纵的操作。通常,但不必须的,这些量采取能够被存储、传输、组合、比较和以其它方式操纵的电或磁信号的形式。此外,所执行的操作经常被称为诸如产生、标识、确定、或比较等术语。构成实施例的一部分的本文描述的任何操作是有用的机器操作。实施例还涉及用于执行这些操作的设备或装置。该装置可以根据所需目的而特别构造,或者该装置可以是由计算机中存储的计算机程序可选择地启动或配置的通用计算机。特别地,各种通用机器可以与根据本文教导编写的计算机程序一起使用,或可以更方便地构建来执行所要求操作的更加专用的装置。
模块、应用、层、代理或其它方法可操作实体可以被实现为硬件、固件、或执行软件的处理器及其组合。应该理解的是,本文公开了基于软件的实施例的情况下,软件可以体现在诸如控制器之类的物理机器中。例如,控制器可以包括第一模块和第二模块。控制器可以被配置为执行例如方法、应用、层或代理之类的各种动作。
这些实施例也可以体现为非临时性计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储设备,其随后可以由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附加存储(NAS)、只读存储器、随机存取存储器、CD-ROM、CD-R、CD-RW、磁带以及其它光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦接的计算机系统上,使得计算机可读代码以分布式的方式被存储和执行。本文描述的实施例可以用包括手持设备、平板电脑、微处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等的各种计算机系统配置来实践。实施例还可以在分布式计算环境中实施,其中,通过基于有线或无线网络链接的远程处理设备来执行任务。
尽管方法操作是以特定顺序描述的,但应该理解,其它操作可以在所描述的操作之间执行,所描述的操作可以被调整使得它们在略微不同的时间发生,或所描述的操作可以分布在允许处理操作在与处理相关的各种间隔处发生的系统。
在各种实施例中,本文描述的方法和机制的一个或多个部分可以形成云计算环境的一部分。在这样的实施例中,可以根据一个或多个各种模型在互联网上提供资源作为服务。这些模型可能包括基础架构即服务(IaaS)、平台即服务(PaaS)、和软件即服务(SaaS)。在IaaS中,计算机基础设施作为服务提供。在这种情况下,计算设备通常由服务提供商拥有和运营。在PaaS模型中,开发人员用来开发软件解决方案的软件工具和底层设备可以作为服务被提供并由服务提供商托管。SaaS通常包括服务提供商许可软件作为按需的服务。服务提供商可以托管软件,或可以将软件部署给客户一段给定的时间。上述模型的许多组合是可能的并且是可预期的。
可以将各种单元、电路、或其它组件描述或要求为“配置成”执行一个或多个任务。在这样的上下文中,短语“被配置为”被用于通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。这样,即使在指定的单元/电路/组件当前不可操作(例如,未开启)的情况下,可以说单元/电路/组件被配置为执行任务。与“配置为”语言一起使用的单元/电路/组件包括硬件(例如电路、存储可执行以实现操作的程序指令的存储器等)。引述单元/电路/组件被配置为执行一个或更多任务,明确表示该单元/电路/组件不涉及35U.S.C 112,第六段。此外,“配置为”可以包括由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵的通用结构(例如,通用电路)以能够执行待解决的(一个或多个)任务的方式来操作。“被配置为”还可以包括适配制造过程(例如,半导体制造设施)以制造适于实现或执行一个或多个任务的设备(例如,集成电路)。
出于解释的目的,已经参考了具体实施例描述了上述说明。然而,以上的说明性讨论并不是穷举性的或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释实施例的原理及其实际应用,从而使得本领域的其它技术人员能够最好地利用实施例和可能适合于预期的特定用途的各种修改。因此,本实施例被认为是说明性的而不是限制性的,并且本发明不限于在此给出的细节,而是可以在所附权利要求的范围和等同物内进行修改。

Claims (20)

1.一种用于存储单元中的事务提交的方法,包括:
将来自存储节点的逻辑记录接收到所述存储节点的存储单元的事务引擎中;
将所述逻辑记录写入所述事务引擎的数据结构中;
将使用所述逻辑记录来执行原子更新的指示,写入到所述事务引擎的命令队列;以及
将所述逻辑记录的每个部分,从所述事务引擎的数据结构传送到所述存储单元的非持久性存储器作为提交的事务。
2.如权利要求1所述的方法,还包括:
当事件发生时,完成对所述非持久性存储器的正在进行的原子更新;以及
响应于所述事件并且还响应于完成所述原子更新,将所述非持久性存储器的内容传送到所述存储单元的持久性存储器,其中所述事件是功率损失、操作系统崩溃、或软件过程崩溃中的一个。
3.如权利要求1所述的方法,其中,所述逻辑记录的长度大于所述存储节点的处理器的数据总线宽度,并且其中:
将所述逻辑记录写入所述事务引擎的数据结构,包括从所述处理器接收所述逻辑记录到事务记录缓冲器中;
将所述逻辑记录的每个部分从所述事务引擎的数据结构传送到所述非持久性存储器,包括将所述逻辑记录从所述事务记录缓冲器传送到所述存储单元的随机存取存储器(RAM);以及
所述原子更新包括将所述逻辑记录的整体从所述事务记录缓冲器传送到所述RAM作为所述提交的事务。
4.如权利要求1所述的方法,还包括:
以能量储备来支持将所述逻辑记录的每个部分传送到所述非持久性存储器,从而完成所述传送;以及
将所述非持久性存储器的内容传送到所述存储单元的持久性存储器,并由所述能量储备进一步支持。
5.如权利要求1所述的方法,其中,写入所述命令队列包括写入事务的描述,所述描述记录所述原子更新。
6.如权利要求1所述的方法,其中,写入所述命令队列包括:
将对事务的描述写入所述命令队列,其中,所述事务的描述包括序列号和以下至少一项:所述逻辑记录的大小,所述逻辑记录的目的地地址,或所述逻辑记录的目的地结束地址,其中,将所述事务的描述写入所述命令队列记录了事务提交,所述事务提交的特征在于将所述逻辑记录的整体从所述事务引擎的数据结构传送到所述非持久性存储器。
7.一种用于存储系统的存储单元,包括:
非持久性存储器;
持久性存储器;以及
事务引擎,被配置为接收逻辑记录并被配置为将所述逻辑记录作为原子更新传送到所述非持久性存储器,其中,每个原子更新构成逻辑记录到所述非持久性存储器的传送。
8.如权利要求7所述的存储系统的存储单元,还包括:
所述逻辑记录的长度大于与所述逻辑记录的传送相关联的处理器的总线宽度;
所述处理器被配置为通过事件触发,将所述非持久性存储器的内容传送到所述持久性存储器;以及
所述事务引擎被配置为当所述事件发生时,完成正在进行的原子更新,其中,事务互锁确保正在进行的所述原子更新的一致性,并且其中,具有与所述原子更新相关联的逻辑记录的一致镜像的所述非持久性存储器的内容在所述持久性存储器中可用,在事件之后,以供所述存储系统的恢复期间使用。
9.如权利要求8所述的用于存储系统的存储单元,其中,所述事务引擎包括:
事务记录缓冲器,具有足以保存旨在写入所述非持久性存储器中的至少一个逻辑记录的字节长度;以及
命令队列,被配置为保存关于逻辑记录的信息,其中,所述事务引擎被耦接到所述事务记录缓冲器和所述命令队列,所述事务引擎被配置为执行从所述事务记录缓冲器到所述非持久性存储器的所述逻辑记录的传送作为提交的事务。
10.如权利要求7所述的存储系统的存储单元,还包括:
耦接到所述非持久性存储器、所述持久性存储器、和所述事务引擎的能量储备,所述能量储备具有足够的电容量来为所述逻辑记录到所述非持久性存储器的传送的完成提供功率,以及为所述非持久性存储器的内容到所述持久性存储器的传送提供功率;
包括动态随机存取存储器(DRAM)的所述非持久性存储器;以及
包括闪存的所述持久性存储器。
11.如权利要求7所述的用于存储系统的存储单元,还包括:
追踪关于所述逻辑记录的信息的事务互锁;
关于所述逻辑记录的信息包括,所述逻辑记录的目的地地址和关于所述逻辑记录的大小的信息;
所述事务互锁包括事务记录缓冲器;以及
所述事务记录缓冲器的字节长度大于一个逻辑记录。
12.如权利要求7所述的存储系统的存储单元,还包括:
事务互锁,具有配置为接收至少一个逻辑记录的事务记录缓冲器;
耦接所述事务记录缓冲器和所述非持久性存储器的第一总线;以及
耦接所述处理器和所述事务记录缓冲器的第二总线,其中,所述第一总线比所述第二总线宽。
13.如权利要求7所述的存储系统的存储单元,还包括事务互锁,该事务互锁被配置为引导每个所述原子更新,其中,完成将所述逻辑记录到所述非持久性存储器的传送构成了事务提交,该事务提交被记录在关于如写入到所述事务互锁的所述逻辑记录的信息中。
14.一种存储系统,包括:
多个存储节点,被耦接为存储集群;
所述多个存储节点中的每一个存储节点,具有一个或多个存储单元;
每个存储单元具有非持久性存储器、持久性存储器、以及具有事务互锁的事务引擎,该事务互锁被配置为确保原子更新的一致性;以及
每个存储单元的所述事务引擎和所述事务互锁被配置为将逻辑记录从具有所述事务互锁的所述事务引擎传送到所述非持久性存储器,其中,每个逻辑记录被传送作为由所述事务互锁而互锁的原子更新。
15.如权利要求14所述的存储系统,还包括:
每个存储单元被配置为在事件期间完成正在进行的原子更新;
每个存储单元被配置为,由所述事件和所述原子更新的完成而触发,来将所述非持久性存储器的至少一部分内容转储到所述持久性存储器,其中,所述非持久性存储器的至少一部分内容包括,作为由所述事务互锁而互锁的原子更新而被传送逻辑记录的一致镜像;以及
每个存储单元具有至少耦接到所述非持久性存储器、所述持久性存储器、所述事务引擎和所述事务互锁的能量储备,所述能量储备具有足够的电能以支持将所述非持久性存储器的至少一部分内容转储到所述持久性存储器。
16.如权利要求14所述的存储系统,其中,所述事务引擎和所述事务互锁包括:
事务记录缓冲器,被配置为接收并保存来自所述多个存储节点中的处理器的逻辑记录;
命令队列,被配置为保存所述逻辑记录的传送的描述;
传输引擎,被配置为根据所述逻辑记录到所述命令队列的传送的描述,将所述逻辑记录从所述事务记录缓冲器移动到所述非持久性存储器;以及
事务指示符,被配置为在所述事务记录缓冲器中示出用于传送的下一逻辑记录的开始,以及所述事务记录缓冲器中的逻辑记录的结束,其中,在对所述命令队列进行更新之后,在所述事务指示符中更新所述下一逻辑记录的开始,并且其中,在使用用于将逻辑记录接收到所述事务记录缓冲器中的流控制,来在所述事务指示符中更新所述逻辑记录的结束。
17.如权利要求14所述的存储系统,还包括:
具有直接存储器访问(DMA)单元的每个存储单元,被配置为将所述非持久性存储器的内容复制到所述持久性存储器;以及
耦接到所述非持久性存储器、所述持久性存储器、所述DMA单元、所述事务引擎和所述事务互锁的能量储备,所述能量储备被配置为存储和释放足够的电能,使得所述事务引擎和所述事务互锁引擎可以完成所述原子更新,并且使得所述DMA单元可以完成将所述持久性存储器的内容的复制到所述持久性存储器,其中,所述能量储备包括超级电容器、电池备份、或功率保持设备。
18.如权利要求14所述的存储系统,还包括:
具有命令队列的所述事务互锁;以及
所述事务引擎,被配置为接收逻辑记录的传送的描述到所述命令队列中以用于将所述逻辑记录从具有所述事务互锁的所述事务引擎到所述非持久性存储器的传送,其中,所述逻辑记录的传送的描述包括序列号、所述逻辑记录的目的地开始地址、以及所述逻辑记录的目的地结束地址或所述逻辑记录的大小中的一个。
19.如权利要求14所述的存储系统,其中:
所述事务引擎和所述事务互锁被配置为响应于事件来完成将逻辑记录从具有所述事务互锁的所述事务引擎移动到所述非持久性存储器作为所述原子更新;
所述事务互锁包括命令队列,被配置为保存所述原子更新的描述;以及
所述命令队列和所述原子更新的描述提供了所述原子更新的互锁机制。
20.如权利要求14所述的存储系统,其中,所述非持久性存储器、所述持久性存储器、以及具有所述事务互锁的所述事务引擎在功率损失保持域中,并且其中,逻辑记录的长度大于所述存储单元中的总线宽度。
CN201680042424.1A 2015-05-19 2016-05-19 远程存储器中硬件辅助的事务提交 Active CN107851061B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/716,543 2015-05-19
US14/716,543 US10140149B1 (en) 2015-05-19 2015-05-19 Transactional commits with hardware assists in remote memory
PCT/US2016/033306 WO2016187443A1 (en) 2015-05-19 2016-05-19 Transactional commits with hardware assists in remote memory

Publications (2)

Publication Number Publication Date
CN107851061A true CN107851061A (zh) 2018-03-27
CN107851061B CN107851061B (zh) 2021-09-28

Family

ID=57320826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680042424.1A Active CN107851061B (zh) 2015-05-19 2016-05-19 远程存储器中硬件辅助的事务提交

Country Status (4)

Country Link
US (3) US10140149B1 (zh)
EP (1) EP3298492B1 (zh)
CN (1) CN107851061B (zh)
WO (1) WO2016187443A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111433732A (zh) * 2018-06-30 2020-07-17 西部数据技术公司 在对等存储设备上具有托管服务的多设备存储系统
CN111580789A (zh) * 2018-12-31 2020-08-25 罗克韦尔自动化技术公司 功能块框架生成
CN111752685A (zh) * 2020-05-22 2020-10-09 清华大学 多核架构下的持久性内存事务提交方法
CN112214171A (zh) * 2020-10-12 2021-01-12 华东师范大学 一种面向SQLite数据库的非易失性内存缓冲区设计方法
CN112306956A (zh) * 2019-07-31 2021-02-02 伊姆西Ip控股有限责任公司 用于元数据维护的方法、装置和计算机程序产品
CN112507187A (zh) * 2020-11-11 2021-03-16 贝壳技术有限公司 索引变更方法及装置
CN112771515A (zh) * 2018-07-31 2021-05-07 马维尔国际贸易有限公司 具有元数据计算引擎的存储边缘控制器
CN113821470A (zh) * 2020-06-19 2021-12-21 平头哥(上海)半导体技术有限公司 总线设备、嵌入式系统和片上系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10732865B2 (en) * 2015-09-23 2020-08-04 Oracle International Corporation Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces
WO2019089619A1 (en) * 2017-10-31 2019-05-09 Ab Initio Technology Llc Managing a computing cluster using replicated task results
US10915267B2 (en) * 2017-12-06 2021-02-09 Intel Corporation Atomic cross-media writes on a storage device
US11614868B2 (en) * 2019-09-30 2023-03-28 International Business Machines Corporation Data set overlay protection

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893165A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US20040215619A1 (en) * 2003-04-24 2004-10-28 Bsquare Corporation System and method for integrating persistent and non-persistent storage in an integrated storage area
US20080104344A1 (en) * 2006-10-25 2008-05-01 Norio Shimozono Storage system comprising volatile cache memory and nonvolatile memory
CN101506766A (zh) * 2005-05-10 2009-08-12 微软公司 数据库破坏恢复系统和方法
CN101650972A (zh) * 2009-06-12 2010-02-17 东信和平智能卡股份有限公司 智能卡的非易失性存储器数据更新方法
CN102187321A (zh) * 2008-10-20 2011-09-14 微软公司 对事务存储器中的副作用动作的事务处理
CN102282548A (zh) * 2009-01-14 2011-12-14 微软公司 事务性的存储器中的事务处理
US20130097136A1 (en) * 2011-10-17 2013-04-18 Pie Digital, Inc. Method and system for acessing domain specific in-memory database management system
US20130198447A1 (en) * 2012-01-30 2013-08-01 Infinidat Ltd. Storage system for atomic write which includes a pre-cache
CN103814354A (zh) * 2011-09-23 2014-05-21 高通股份有限公司 经配置以执行事务型存储器操作的处理器
US8826273B1 (en) * 2010-12-22 2014-09-02 Vmware, Inc. Synchronously logging to disk for main-memory database systems through record and replay
CN104583989A (zh) * 2012-08-28 2015-04-29 惠普发展公司,有限责任合伙企业 高性能持久性存储器

Family Cites Families (381)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208813A (en) 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5403639A (en) 1992-09-02 1995-04-04 Storage Technology Corporation File server having snapshot application data groups
US5390327A (en) 1993-06-29 1995-02-14 Digital Equipment Corporation Method for on-line reorganization of the data on a RAID-4 or RAID-5 array in the absence of one disk and the on-line restoration of a replacement disk
DE9310582U1 (de) 1993-07-15 1993-09-23 Paul Hettich GmbH & Co, 32278 Kirchlengern Rasteinrichtung fuer schubkaesten o.dgl.
US5479653A (en) 1994-07-14 1995-12-26 Dellusa, L.P. Disk array apparatus and method which supports compound raid configurations and spareless hot sparing
US6412045B1 (en) 1995-05-23 2002-06-25 Lsi Logic Corporation Method for transferring data from a host computer to a storage media using selectable caching strategies
US5649093A (en) 1995-05-22 1997-07-15 Sun Microsystems, Inc. Server disk error recovery system
JP3641872B2 (ja) 1996-04-08 2005-04-27 株式会社日立製作所 記憶装置システム
US5764767A (en) 1996-08-21 1998-06-09 Technion Research And Development Foundation Ltd. System for reconstruction of a secret shared by a plurality of participants
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5940838A (en) 1997-07-11 1999-08-17 International Business Machines Corporation Parallel file system and method anticipating cache usage patterns
US6038639A (en) 1997-09-09 2000-03-14 Storage Technology Corporation Data file storage management system for snapshot copy operations
US6098157A (en) * 1998-04-24 2000-08-01 Shomiti Systems, Inc. Method for storing and updating information describing data traffic on a network
US6799283B1 (en) 1998-12-04 2004-09-28 Matsushita Electric Industrial Co., Ltd. Disk array device
US7133511B2 (en) 1998-12-11 2006-11-07 Securelogix Corporation Telephony security system
JP2000181803A (ja) 1998-12-18 2000-06-30 Fujitsu Ltd 鍵管理機能付電子データ保管装置および電子データ保管方法
US6182214B1 (en) 1999-01-08 2001-01-30 Bay Networks, Inc. Exchanging a secret over an unreliable network
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
JP2002543460A (ja) 1999-04-27 2002-12-17 ミスチェンコ、ヴァレンティン・アレクサンドロヴィッチ 情報を暗号化する方法およびその方法を実現するための装置
US6275898B1 (en) 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6834298B1 (en) 1999-09-21 2004-12-21 Siemens Information And Communication Networks, Inc. System and method for network auto-discovery and configuration
US6643748B1 (en) 2000-04-20 2003-11-04 Microsoft Corporation Programmatic masking of storage units
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
US6738875B1 (en) 2000-07-31 2004-05-18 Microsoft Corporation Efficient write-watch mechanism useful for garbage collection in a computer system
JP2002050183A (ja) 2000-07-31 2002-02-15 Mitsubishi Electric Corp 半導体記憶装置
US6658478B1 (en) 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system
JP2002108573A (ja) 2000-09-28 2002-04-12 Nec Corp ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体
US6757769B1 (en) 2000-11-28 2004-06-29 Emc Corporation Cooperative lock override procedure
US6718448B1 (en) 2000-11-28 2004-04-06 Emc Corporation Queued locking of a shared resource using multimodal lock types
US7107480B1 (en) 2000-12-22 2006-09-12 Simpletech, Inc. System and method for preventing data corruption in solid-state memory devices after a power failure
US6857059B2 (en) 2001-01-11 2005-02-15 Yottayotta, Inc. Storage virtualization system and methods
US6850938B1 (en) 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
WO2002065298A1 (en) 2001-02-13 2002-08-22 Candera, Inc. Silicon-based storage virtualization server
US6836816B2 (en) 2001-03-28 2004-12-28 Intel Corporation Flash memory low-latency cache
US6968350B2 (en) 2001-04-07 2005-11-22 Microsoft Corporation Method for establishing a virtual hard drive for an emulated computer system running on a host computer system
US7444532B2 (en) 2001-12-03 2008-10-28 Dell Products L.P. System and method for autonomous power sequencing
US20030110205A1 (en) 2001-12-07 2003-06-12 Leith Johnson Virtualized resources in a partitionable server
US6973549B1 (en) 2001-12-10 2005-12-06 Incipient, Inc. Locking technique for control and synchronization
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US6985995B2 (en) 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
US7032125B2 (en) 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US7260628B2 (en) 2002-09-06 2007-08-21 Hitachi, Ltd. Event notification in storage networks
US7076606B2 (en) 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7216164B1 (en) 2002-10-09 2007-05-08 Cisco Technology, Inc. Methods and apparatus for determining the performance of a server
US7028218B2 (en) 2002-12-02 2006-04-11 Emc Corporation Redundant multi-processor and logical processor configuration for a file server
US7162575B2 (en) 2002-12-20 2007-01-09 Veritas Operating Corporation Adaptive implementation of requested capabilities for a logical volume
US7159150B2 (en) 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
CA2520882A1 (en) 2003-04-07 2004-10-28 Itracs Corporation Network security system based on physical location
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US8145736B1 (en) 2003-06-30 2012-03-27 Symantec Operating Corporation Fast distributed object lookup for a computer network
US7119572B2 (en) 2003-07-02 2006-10-10 Daniel Industries, Inc. Programmable logic device configuration via device communication lines
DE602004030013D1 (de) 2003-07-16 2010-12-23 Skype Ltd Verteiltes datenbanksystem
US7865485B2 (en) 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
JP4426262B2 (ja) 2003-11-26 2010-03-03 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の障害回避方法
US7370220B1 (en) 2003-12-26 2008-05-06 Storage Technology Corporation Method and apparatus for controlling power sequencing of a plurality of electrical/electronic devices
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US8560747B1 (en) 2007-02-16 2013-10-15 Vmware, Inc. Associating heartbeat data with access to shared resources of a computer system
US7334156B2 (en) 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
JP4456909B2 (ja) 2004-03-29 2010-04-28 株式会社日立製作所 バックアップ方法、ストレージシステム及びそのプログラム
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
US7424482B2 (en) 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
US8090837B2 (en) 2004-05-27 2012-01-03 Hewlett-Packard Development Company, L.P. Communication in multiprocessor using proxy sockets
US7634566B2 (en) 2004-06-03 2009-12-15 Cisco Technology, Inc. Arrangement in a network for passing control of distributed data between network nodes for optimized client access based on locality
US7536506B2 (en) 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US7164608B2 (en) 2004-07-28 2007-01-16 Aplus Flash Technology, Inc. NVRAM memory cell architecture that integrates conventional SRAM and flash cells
US7424592B1 (en) 2004-07-30 2008-09-09 Symantec Operating Corporation System and method for implementing volume sets in a storage system
US7681104B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for erasure coding data across a plurality of data stores in a network
US7681105B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
US8375146B2 (en) 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US20060074940A1 (en) 2004-10-05 2006-04-06 International Business Machines Corporation Dynamic management of node clusters to enable data sharing
EP1825373A2 (en) 2004-11-05 2007-08-29 Data Robotics Incorporated Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
US20060114930A1 (en) 2004-11-17 2006-06-01 International Business Machines (Ibm) Corporation In-band control of indicators to identify devices distributed on the same domain
US7437653B2 (en) 2004-12-22 2008-10-14 Sandisk Corporation Erased sector detection mechanisms
US7363444B2 (en) 2005-01-10 2008-04-22 Hewlett-Packard Development Company, L.P. Method for taking snapshots of data
US8180855B2 (en) 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US20060174074A1 (en) 2005-02-03 2006-08-03 International Business Machines Corporation Point-in-time copy operation
US7913300B1 (en) 2005-04-08 2011-03-22 Netapp, Inc. Centralized role-based access control for storage servers
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8886778B2 (en) 2005-04-29 2014-11-11 Netapp, Inc. System and method for proxying network management protocol commands to enable cluster wide management of data backups
WO2006123416A1 (ja) 2005-05-19 2006-11-23 Fujitsu Limited ディスク故障復旧方法及びディスクアレイ装置
US8364845B2 (en) 2005-05-19 2013-01-29 Wyse Technology Inc. Method and system for thin client configuration
WO2006131879A2 (en) 2005-06-09 2006-12-14 Nxp B.V. Storage unit for a communication system node, method for data storage and communication system node
US7933936B2 (en) 2005-06-10 2011-04-26 Network Appliance, Inc. Method and system for automatic management of storage space
US7979613B2 (en) 2005-07-15 2011-07-12 International Business Machines Corporation Performance of a storage system
JP2007087036A (ja) 2005-09-21 2007-04-05 Hitachi Ltd スナップショット維持装置及び方法
JP4662548B2 (ja) 2005-09-27 2011-03-30 株式会社日立製作所 スナップショット管理装置及び方法並びにストレージシステム
US20070079068A1 (en) 2005-09-30 2007-04-05 Intel Corporation Storing data with different specified levels of data redundancy
US7558859B2 (en) 2005-10-17 2009-07-07 Microsoft Corporation Peer-to-peer auction based data distribution
US8010829B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Distributed hot-spare storage in a storage cluster
US7778960B1 (en) 2005-10-20 2010-08-17 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US8010485B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US7730258B1 (en) 2005-11-01 2010-06-01 Netapp, Inc. System and method for managing hard and soft lock state information in a distributed storage system environment
ITVA20050061A1 (it) 2005-11-08 2007-05-09 St Microelectronics Srl Metodo di gestione di un dispositivo di memoria non volatile e relativa memoria
US8020047B2 (en) 2006-01-17 2011-09-13 Xyratex Technology Limited Method and apparatus for managing storage of data
JP2007199953A (ja) 2006-01-25 2007-08-09 Fujitsu Ltd ディスクアレイ装置およびディスクアレイ制御方法
JP4927408B2 (ja) 2006-01-25 2012-05-09 株式会社日立製作所 記憶システム及びそのデータ復元方法
US7743197B2 (en) 2006-05-11 2010-06-22 Emulex Design & Manufacturing Corporation System and method for virtualizing PCIe devices
US9390019B2 (en) 2006-02-28 2016-07-12 Violin Memory Inc. Method and apparatus for providing high-performance and highly-scalable storage acceleration
JP2007233903A (ja) 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US20070214194A1 (en) 2006-03-07 2007-09-13 James Reuter Consistency methods and systems
US20070214314A1 (en) 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
US8832247B2 (en) 2006-03-24 2014-09-09 Blue Coat Systems, Inc. Methods and systems for caching content at multiple levels
US7444499B2 (en) 2006-03-28 2008-10-28 Sun Microsystems, Inc. Method and system for trace generation using memory index hashing
US8615599B1 (en) 2006-03-31 2013-12-24 Cisco Technology, Inc. Method and apparatus for preventing loops in a network by controlling broadcasts
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US20070268905A1 (en) 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
JP5048760B2 (ja) 2006-05-24 2012-10-17 コンペレント・テクノロジーズ Raid管理、再割振り、およびリストライピングのためのシステムおよび方法
WO2007149977A2 (en) 2006-06-21 2007-12-27 Rf Code, Inc. Location-based security, privacy, access control and monitoring system
US7987438B2 (en) 2006-08-10 2011-07-26 International Business Machines Corporation Structure for initializing expansion adapters installed in a computer system having similar expansion adapters
US7555599B2 (en) 2006-09-06 2009-06-30 International Business Machines Corporation System and method of mirrored RAID array write management
US7475215B2 (en) 2006-09-08 2009-01-06 Lsi Corporation Identification of uncommitted memory blocks during an initialization procedure
US7743276B2 (en) 2006-09-27 2010-06-22 Hewlett-Packard Development Company, L.P. Sufficient free space for redundancy recovery within a distributed data-storage system
JP2008097155A (ja) * 2006-10-06 2008-04-24 Fujitsu Ltd データ記憶制御装置およびデータ記憶装置
JP2008103936A (ja) 2006-10-18 2008-05-01 Toshiba Corp 秘密情報管理装置および秘密情報管理システム
JP4932427B2 (ja) 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法
US7970873B2 (en) 2006-10-30 2011-06-28 Dell Products L.P. System and method for assigning addresses to information handling systems
JP4573898B2 (ja) 2006-11-27 2010-11-04 富士通株式会社 サーバ管理プログラム、メールサーバ管理プログラム、サーバ管理システム、管理サーバおよびサーバ管理方法
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US8694712B2 (en) 2006-12-05 2014-04-08 Microsoft Corporation Reduction of operational costs of virtual TLBs
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US20080155191A1 (en) 2006-12-21 2008-06-26 Anderson Robert J Systems and methods for providing heterogeneous storage systems
US8046548B1 (en) 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US7908448B1 (en) 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US8498967B1 (en) 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US20080201335A1 (en) 2007-02-20 2008-08-21 Nec Laboratories America, Inc. Method and Apparatus for Storing Data in a Peer to Peer Network
US8370562B2 (en) 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
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
JP4900811B2 (ja) 2007-03-30 2012-03-21 株式会社日立製作所 記憶システムおよび記憶制御方法
JP4529990B2 (ja) 2007-03-30 2010-08-25 ブラザー工業株式会社 画像処理プログラム及び画像処理装置
US7975115B2 (en) 2007-04-11 2011-07-05 Dot Hill Systems Corporation Method and apparatus for separating snapshot preserved and write data
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8706914B2 (en) 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US8086652B1 (en) 2007-04-27 2011-12-27 Netapp, Inc. Storage system-based hole punching for reclaiming unused space from a data container
US7958303B2 (en) 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US7991942B2 (en) 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US8819311B2 (en) 2007-05-23 2014-08-26 Rpx Corporation Universal user input/output application layers
EP2154815A4 (en) 2007-05-30 2012-11-14 Fujitsu Ltd IMAGE ENCRYPTION DEVICE, IMAGE KEYING DEVICE, METHOD AND PROGRAM
US7765426B2 (en) 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
JP4894922B2 (ja) 2007-06-13 2012-03-14 富士通株式会社 Raidグループ変換装置、raidグループ変換方法およびraidグループ変換プログラム
US8051362B2 (en) 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
US8140719B2 (en) 2007-06-21 2012-03-20 Sea Micro, Inc. Dis-aggregated and distributed data-center architecture using a direct interconnect fabric
IES20080508A2 (en) 2007-06-22 2008-12-10 Tenoware R & D Ltd Network distributed file system
US8874854B2 (en) 2007-07-30 2014-10-28 International Business Machines Corporation Method for selectively enabling and disabling read caching in a storage subsystem
JP2009037304A (ja) 2007-07-31 2009-02-19 Hitachi Ltd Raidレベルを変更する機能を有したストレージシステム
US7970919B1 (en) 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US7565446B2 (en) 2007-08-27 2009-07-21 Gear Six, Inc. Method for efficient delivery of clustered data via adaptive TCP connection migration
US7991822B2 (en) 2007-08-29 2011-08-02 International Business Machines Corporation Propagation of updates for attributes of a storage object from an owner node of the storage object to other nodes
US8332375B2 (en) 2007-08-29 2012-12-11 Nirvanix, Inc. Method and system for moving requested files from one storage location to another
US8225006B1 (en) 2007-08-30 2012-07-17 Virident Systems, Inc. Methods for data redundancy across three or more storage devices
US7827439B2 (en) 2007-09-28 2010-11-02 Symantec Corporation System and method of redundantly storing and retrieving data with cooperating storage devices
US8661218B1 (en) 2007-10-18 2014-02-25 Datadirect Networks, Inc. Method for reducing latency in a solid-state memory system while maintaining data integrity
US7870105B2 (en) 2007-11-20 2011-01-11 Hitachi, Ltd. Methods and apparatus for deduplication in storage system
EP2202921B1 (en) 2007-11-22 2013-03-27 China Mobile Communications Corporation A data storage method, a management server, a storage equipment and system
KR20090082784A (ko) 2008-01-28 2009-07-31 삼성전자주식회사 Nvram 셀을 채용한 플래쉬 메모리 장치
US8423739B2 (en) 2008-02-06 2013-04-16 International Business Machines Corporation Apparatus, system, and method for relocating logical array hot spots
US8161309B2 (en) 2008-02-19 2012-04-17 International Business Machines Corporation Apparatus, system, and method for controlling power sequence in a blade center environment
US7885938B1 (en) 2008-02-27 2011-02-08 Symantec Corporation Techniques for granular recovery of data from local and remote storage
US7970994B2 (en) 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild
US8352540B2 (en) 2008-03-06 2013-01-08 International Business Machines Corporation Distinguishing data streams to enhance data storage efficiency
JP4729062B2 (ja) 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
US7873619B1 (en) 2008-03-31 2011-01-18 Emc Corporation Managing metadata
US8621241B1 (en) 2008-04-25 2013-12-31 Netapp, Inc. Storage and recovery of cryptographic key identifiers
US8117464B1 (en) 2008-04-30 2012-02-14 Netapp, Inc. Sub-volume level security for deduplicated data
US8595248B2 (en) 2008-05-21 2013-11-26 Oracle International Corporation Querying a cascading index that avoids disk accesses
FR2931970B1 (fr) 2008-05-27 2010-06-11 Bull Sas Procede de generation de requetes de manipulation d'une base de donnees d'initialisation et d'administration d'une grappe de serveurs , support de donnees et grappe de serveurs correspondants
US9678879B2 (en) 2008-05-29 2017-06-13 Red Hat, Inc. Set partitioning for encoding file system allocation metadata
US8145841B2 (en) 2008-06-06 2012-03-27 Pivot3 Method and system for initializing storage in a storage system
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
US8706694B2 (en) 2008-07-15 2014-04-22 American Megatrends, Inc. Continuous data protection of files stored on a remote storage device
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US8108502B2 (en) 2008-07-24 2012-01-31 Symform, Inc. Storage device for use in a shared community storage network
TW201007574A (en) 2008-08-13 2010-02-16 Inventec Corp Internet server system and method of constructing and starting a virtual machine
US8296547B2 (en) 2008-08-27 2012-10-23 International Business Machines Corporation Loading entries into a TLB in hardware via indirect TLB entries
US20100057673A1 (en) 2008-09-04 2010-03-04 Boris Savov Reusable mapping rules for data to data transformation
US7992037B2 (en) 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8351290B1 (en) 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
US20100077205A1 (en) 2008-09-19 2010-03-25 Ekstrom Joseph J System and Method for Cipher E-Mail Protection
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US8224782B2 (en) 2008-09-29 2012-07-17 Hitachi, Ltd. System and method for chunk based tiered storage volume migration
US8086634B2 (en) 2008-10-07 2011-12-27 Hitachi, Ltd. Method and apparatus for improving file access performance of distributed storage system
US7910688B2 (en) 2008-10-22 2011-03-22 Evonik Stockhausen Inc. Recycling superabsorbent polymer fines
US8086911B1 (en) 2008-10-29 2011-12-27 Netapp, Inc. Method and apparatus for distributed reconstruct in a raid system
JP4399021B1 (ja) 2008-10-29 2010-01-13 株式会社東芝 ディスクアレイ制御装置および記憶装置
WO2010064328A1 (en) 2008-12-03 2010-06-10 Hitachi, Ltd. Information processing system and method of acquiring backup in an information processing system
US7945733B2 (en) 2008-12-12 2011-05-17 Lsi Corporation Hierarchical storage management (HSM) for redundant array of independent disks (RAID)
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
US20110258362A1 (en) 2008-12-19 2011-10-20 Mclaren Moray Redundant data storage for uniform read latency
US7941697B2 (en) 2008-12-30 2011-05-10 Symantec Operating Corporation Failure handling using overlay objects on a file system using object based storage devices
US8397016B2 (en) 2008-12-31 2013-03-12 Violin Memory, Inc. Efficient use of hybrid media in cache architectures
CA2689744C (en) 2009-01-08 2015-05-05 New Flyer Industries Canada Ulc System and method for monitoring operation of vehicles
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8312204B2 (en) 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
US8170997B2 (en) * 2009-01-29 2012-05-01 Microsoft Corporation Unbundled storage transaction services
CA2751358C (en) 2009-02-03 2016-06-07 Bittorrent, Inc. Distributed storage of recoverable data
US8145838B1 (en) 2009-03-10 2012-03-27 Netapp, Inc. Processing and distributing write logs of nodes of a cluster storage system
JP4869368B2 (ja) 2009-03-12 2012-02-08 株式会社東芝 ストレージ装置及び仮想化装置
US9271879B2 (en) 2009-03-13 2016-03-01 The Procter & Gamble Company Article having a seal and process for forming the same
US7941584B2 (en) 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection
US8205065B2 (en) 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US8560787B2 (en) 2009-03-30 2013-10-15 International Business Machines Corporation Incremental backup of source to target storage volume
US8117388B2 (en) 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
TWI397009B (zh) 2009-04-30 2013-05-21 Inventec Corp 基本輸入輸出系統的資料處理裝置
US8180955B2 (en) 2009-05-06 2012-05-15 Via Telecom, Inc. Computing systems and methods for managing flash memory device
EP2435926A4 (en) 2009-05-29 2013-05-29 Hewlett Packard Development Co SYSTEM AND METHOD FOR ASSIGNING RESOURCES OF A SERVER TO A VIRTUAL MACHINE
US8903917B2 (en) 2009-06-03 2014-12-02 Novell, Inc. System and method for implementing a cluster token registry for business continuity
US8145840B2 (en) 2009-06-05 2012-03-27 Lsi Corporation Method and system for storing excess data in a redundant array of independent disk level 6
KR101626528B1 (ko) 2009-06-19 2016-06-01 삼성전자주식회사 플래시 메모리 장치 및 이의 데이터 독출 방법
US9058155B2 (en) 2009-06-19 2015-06-16 Hewlett-Packard Development Company, L.P. Enclosure power controller providing plurality of power control signals to plurality of removable compute nodes based on a duty cycle of each power control signal
TWI460588B (zh) 2009-07-17 2014-11-11 Toshiba Kk Memory management device and memory information processing device
US8458287B2 (en) 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8176284B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
CN102597910B (zh) 2009-09-09 2015-03-25 弗森-艾奥公司 存储设备中用于功率减小管理的装置、系统及方法
EP2302637B1 (fr) 2009-09-21 2014-09-03 STMicroelectronics (Rousset) SAS Méthode d'écriture de données dans une mémoire non volatile, protegée contre l'arrachement
US8706715B2 (en) 2009-10-05 2014-04-22 Salesforce.Com, Inc. Methods and systems for joining indexes for query optimization in a multi-tenant database
US20110119462A1 (en) 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8484259B1 (en) 2009-12-08 2013-07-09 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system
US8510569B2 (en) 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US8140821B1 (en) 2009-12-18 2012-03-20 Emc Corporation Efficient read/write algorithms and associated mapping for block-level data reduction processes
US9134918B2 (en) 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
WO2011104663A1 (en) 2010-02-23 2011-09-01 Confidato Security Solutions Ltd Method and computer program product for order preserving symbol based encryption
US8756387B2 (en) 2010-03-05 2014-06-17 International Business Machines Corporation Method and apparatus for optimizing the performance of a storage system
JP4892072B2 (ja) 2010-03-24 2012-03-07 株式会社東芝 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
US8627138B1 (en) 2010-03-26 2014-01-07 Emc Corporation Data protection system and method
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8239618B2 (en) 2010-05-27 2012-08-07 Dell Products L.P. System and method for emulating preconditioning of solid-state device
JP5521794B2 (ja) 2010-06-03 2014-06-18 株式会社バッファロー 記憶装置及びその制御プログラム
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8738970B2 (en) 2010-07-23 2014-05-27 Salesforce.Com, Inc. Generating performance alerts
US8713268B2 (en) 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US9818478B2 (en) 2012-12-07 2017-11-14 Attopsemi Technology Co., Ltd Programmable resistive device and memory using diode as selector
US8762793B2 (en) 2010-08-26 2014-06-24 Cleversafe, Inc. Migrating encoded data slices from a re-provisioned memory device of a dispersed storage network memory
US8473778B2 (en) 2010-09-08 2013-06-25 Microsoft Corporation Erasure coding immutable data
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US9009724B2 (en) 2010-09-24 2015-04-14 Hewlett-Packard Development Company, L.P. Load balancing data access in virtualized storage nodes
US8327080B1 (en) 2010-09-28 2012-12-04 Emc Corporation Write-back cache protection
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US11232022B2 (en) 2010-10-29 2022-01-25 Samsung Electronics Co., Ltd. Memory system, data storage device, user device and data management method thereof having a data management information matching determination
US20120117029A1 (en) 2010-11-08 2012-05-10 Stephen Gold Backup policies for using different storage tiers
US8949502B2 (en) 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US8484163B1 (en) 2010-12-16 2013-07-09 Netapp, Inc. Cluster configuration backup and recovery
US8627136B2 (en) 2010-12-27 2014-01-07 Netapp Inc. Non-disruptive failover of RDMA connection
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
EP2671160A2 (en) 2011-02-01 2013-12-11 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
KR101502896B1 (ko) 2011-02-14 2015-03-24 주식회사 케이티 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
US20120226934A1 (en) 2011-03-01 2012-09-06 Rao G R Mohan Mission critical nand flash
US20120233416A1 (en) 2011-03-08 2012-09-13 International Business Machines Corporation Multi-target, point-in-time-copy architecture with data deduplication
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9021215B2 (en) 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
US8725730B2 (en) 2011-05-23 2014-05-13 Hewlett-Packard Development Company, L.P. Responding to a query in a data processing system
US8544029B2 (en) 2011-05-24 2013-09-24 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US8782439B2 (en) 2011-06-06 2014-07-15 Cleversafe, Inc. Securing a data segment for storage
US8769304B2 (en) 2011-06-16 2014-07-01 OneID Inc. Method and system for fully encrypted repository
US8595267B2 (en) 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8751463B1 (en) 2011-06-30 2014-06-10 Emc Corporation Capacity forecasting for a deduplicating storage system
US8943313B2 (en) 2011-07-19 2015-01-27 Elwha Llc Fine-grained security in federated data sets
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US8788788B2 (en) 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8793467B2 (en) 2011-09-30 2014-07-29 Pure Storage, Inc. Variable length encoding in a storage system
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2013025540A1 (en) 2011-08-12 2013-02-21 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
JP5768587B2 (ja) 2011-08-17 2015-08-26 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
US8832035B2 (en) 2011-08-30 2014-09-09 Netapp, Inc. System and method for retaining deduplication in a storage object after a clone split operation
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US8886910B2 (en) 2011-09-12 2014-11-11 Microsoft Corporation Storage device drivers and cluster participation
US8959110B2 (en) 2011-09-18 2015-02-17 Microsoft Technology Licensing, Llc Dynamic query for external data connections
US8700875B1 (en) 2011-09-20 2014-04-15 Netapp, Inc. Cluster view for storage devices
US8862928B2 (en) 2011-09-20 2014-10-14 Cloudbyte, Inc. Techniques for achieving high availability with multi-tenant storage when a partial fault occurs or when more than two complete faults occur
US20130173853A1 (en) 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US9699170B2 (en) 2011-09-29 2017-07-04 Oracle International Corporation Bundled authorization requests
US9542413B2 (en) 2011-10-06 2017-01-10 Hitachi, Ltd. Stored data deduplication method, stored data deduplication apparatus, and deduplication program
US8825605B2 (en) 2011-10-11 2014-09-02 Netapp, Inc. Deduplication aware scheduling of requests to access data blocks
US8990495B2 (en) 2011-11-15 2015-03-24 Emc Corporation Method and system for storing data in raid memory devices
US8713405B2 (en) 2011-11-22 2014-04-29 Simplivity Corporation Method and apparatus for allocating erasure coded data to disk storage
JP5923964B2 (ja) 2011-12-13 2016-05-25 富士通株式会社 ディスクアレイ装置、制御装置、およびプログラム
US8788913B1 (en) 2011-12-30 2014-07-22 Emc Corporation Selection of erasure code parameters for no data repair
US8918579B2 (en) 2012-02-06 2014-12-23 Sandisk Technologies Inc. Storage device and method for selective data compression
WO2013118170A1 (en) 2012-02-08 2013-08-15 Hitachi, Ltd. Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life
US8819383B1 (en) 2012-02-17 2014-08-26 Netapp, Inc. Non-disruptive realignment of virtual data
US8856619B1 (en) 2012-03-09 2014-10-07 Google Inc. Storing data across groups of storage nodes
EP2639997B1 (en) 2012-03-15 2014-09-03 ATS Group (IP Holdings) Limited Method and system for secure access of a first computer to a second computer
US9008316B2 (en) 2012-03-29 2015-04-14 Microsoft Technology Licensing, Llc Role-based distributed key management
US9043540B2 (en) 2012-03-30 2015-05-26 Netapp, Inc. Systems and methods for tracking block ownership
US9323667B2 (en) 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
US9519647B2 (en) 2012-04-17 2016-12-13 Sandisk Technologies Llc Data expiry in a non-volatile device
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US8996881B2 (en) 2012-04-23 2015-03-31 International Business Machines Corporation Preserving redundancy in data deduplication systems by encryption
US8793466B2 (en) 2012-04-27 2014-07-29 Netapp, Inc. Efficient data object storage and retrieval
EP2660723A1 (en) 2012-05-03 2013-11-06 Thomson Licensing Method of data storing and maintenance in a distributed data storage system and corresponding device
US9645177B2 (en) 2012-05-04 2017-05-09 Seagate Technology Llc Retention-drift-history-based non-volatile memory read threshold optimization
US8874850B1 (en) 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
US20130318314A1 (en) 2012-05-25 2013-11-28 Red Hat, Inc. Managing copies of data on multiple nodes using a data controller node to avoid transaction deadlock
US8799746B2 (en) 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US8762353B2 (en) 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US8930633B2 (en) 2012-06-14 2015-01-06 International Business Machines Corporation Reducing read latency using a pool of processing cores
US9659077B2 (en) 2012-06-18 2017-05-23 Actifio, Inc. System and method for efficient database record replication using different replication strategies based on the database records
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US8850288B1 (en) 2012-06-27 2014-09-30 Amazon Technologies, Inc. Throughput-sensitive redundancy encoding schemes for data storage
US8959305B1 (en) 2012-06-29 2015-02-17 Emc Corporation Space reclamation with virtually provisioned devices
CN103577274B (zh) 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
US9189650B2 (en) 2012-07-31 2015-11-17 J.D. Power And Associates Privacy preserving method for summarizing user data
KR102003930B1 (ko) 2012-07-31 2019-07-25 삼성전자주식회사 불휘발성 메모리 장치의 데이터 라이팅 제어방법 및 웨어레벨링 제어 기능을 가지는 메모리 콘트롤러
KR102028128B1 (ko) 2012-08-07 2019-10-02 삼성전자주식회사 불휘발성 랜덤 액세스 메모리 및 낸드 플래시 메모리를 포함하는 메모리 시스템의 동작 방법
US8904231B2 (en) 2012-08-08 2014-12-02 Netapp, Inc. Synchronous local and cross-site failover in clustered storage systems
US9489293B2 (en) 2012-08-17 2016-11-08 Netapp, Inc. Techniques for opportunistic data storage
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US8929066B2 (en) 2012-08-28 2015-01-06 Skyera, Inc. Chassis with separate thermal chamber for solid state memory
US9778856B2 (en) 2012-08-30 2017-10-03 Microsoft Technology Licensing, Llc Block-level access to parallel storage
US9021263B2 (en) 2012-08-31 2015-04-28 Cleversafe, Inc. Secure data access in a dispersed storage network
US9613656B2 (en) 2012-09-04 2017-04-04 Seagate Technology Llc Scalable storage protection
US8887011B2 (en) 2012-09-13 2014-11-11 Sandisk Technologies Inc. Erased page confirmation in multilevel memory
US9058244B2 (en) * 2012-09-13 2015-06-16 International Business Machines Corporation Durable and coherent cache transactions between volatile and non-volatile memories
JP5954081B2 (ja) 2012-09-26 2016-07-20 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9116819B2 (en) 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
US9348538B2 (en) 2012-10-18 2016-05-24 Netapp, Inc. Selective deduplication
US9176858B2 (en) 2012-11-19 2015-11-03 Hitachi, Ltd. Storage system configured to selectively utilize data compression based on real pool usage rates
KR20140072637A (ko) 2012-12-05 2014-06-13 삼성전자주식회사 비휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
US9348840B2 (en) 2012-12-14 2016-05-24 Intel Corporation Adaptive data striping and replication across multiple storage clouds for high availability and performance
US20140181402A1 (en) 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US9134908B2 (en) 2013-01-09 2015-09-15 Apple Inc. Logical volume space sharing
US9063967B2 (en) 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
GB2510180A (en) * 2013-01-29 2014-07-30 Ibm Selective restoration of data from non-volatile storage to volatile memory
US8862847B2 (en) 2013-02-08 2014-10-14 Huawei Technologies Co., Ltd. Distributed storage method, apparatus, and system for reducing a data loss that may result from a single-point failure
US20140237164A1 (en) 2013-02-19 2014-08-21 Kabushiki Kaisha Toshiba Hybrid drive that implements a deferred trim list
US8824261B1 (en) 2013-03-07 2014-09-02 Seagate Technology Llc Peer to peer vibration mitigation
US9535836B2 (en) * 2013-03-13 2017-01-03 Hewlett Packard Enterprise Development Lp Non-volatile memory update tracking
US9201733B2 (en) 2013-03-13 2015-12-01 Futurewei Technologies, Inc. Systems and methods for data repair
CN105283857B (zh) * 2013-03-14 2018-09-11 慧与发展有限责任合伙企业 用于持久性存储器的多版本化非易失性存储器层级
US9335932B2 (en) 2013-03-15 2016-05-10 Bracket Computing, Inc. Storage unit selection for virtualized storage units
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9025393B2 (en) 2013-03-25 2015-05-05 Seagate Technology Llc Method of optimizing solid state drive soft retry voltages
US9519575B2 (en) 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
KR101539878B1 (ko) 2013-05-02 2015-07-27 후아웨이 테크놀러지 컴퍼니 리미티드 컴퓨터 시스템, pci 익스프레스 엔드포인트 디바이스에 액세스하는 방법 및 장치
US20140344503A1 (en) * 2013-05-17 2014-11-20 Hitachi, Ltd. Methods and apparatus for atomic write processing
US9244761B2 (en) 2013-06-25 2016-01-26 Microsoft Technology Licensing, Llc Erasure coding across multiple zones and sub-zones
US9378084B2 (en) 2013-06-25 2016-06-28 Microsoft Technology Licensing, Llc Erasure coding across multiple zones
US20150032720A1 (en) 2013-07-23 2015-01-29 Yahoo! Inc. Optimizing database queries
US20150039849A1 (en) 2013-08-02 2015-02-05 Formation Data Systems, Inc. Multi-Layer Data Storage Virtualization Using a Consistent Data Reference Model
US20150039645A1 (en) 2013-08-02 2015-02-05 Formation Data Systems, Inc. High-Performance Distributed Data Storage System with Implicit Content Routing and Data Deduplication
US9465735B2 (en) 2013-10-03 2016-10-11 Qualcomm Incorporated System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US9516016B2 (en) 2013-11-11 2016-12-06 Pure Storage, Inc. Storage array password management
US9553822B2 (en) 2013-11-12 2017-01-24 Microsoft Technology Licensing, Llc Constructing virtual motherboards and virtual storage devices
US8843700B1 (en) 2013-11-29 2014-09-23 NXGN Data, Inc. Power efficient method for cold storage data retention management
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9667496B2 (en) 2013-12-24 2017-05-30 International Business Machines Corporation Configuration updates across peer storage systems
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
JP6233086B2 (ja) 2014-02-20 2017-11-22 富士通株式会社 ストレージ制御装置,ストレージシステム及び制御プログラム
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US9361469B2 (en) 2014-03-26 2016-06-07 Amazon Technologies, Inc. Electronic communication with secure screen sharing of sensitive information
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9829066B2 (en) 2014-04-07 2017-11-28 Gates Corporation Electrically conductive power transmission belt
US9513820B1 (en) 2014-04-07 2016-12-06 Pure Storage, Inc. Dynamically controlling temporary compromise on data redundancy
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
JP6483966B2 (ja) 2014-07-04 2019-03-13 キヤノン株式会社 画像読取装置、画像読取装置を含むシステム、画像読取装置により実行される方法、およびプログラム
US9563509B2 (en) 2014-07-15 2017-02-07 Nimble Storage, Inc. Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9721660B2 (en) * 2014-10-24 2017-08-01 Microsoft Technology Licensing, Llc Configurable volatile memory without a dedicated power source for detecting a data save trigger condition
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893165A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US20040215619A1 (en) * 2003-04-24 2004-10-28 Bsquare Corporation System and method for integrating persistent and non-persistent storage in an integrated storage area
CN101506766A (zh) * 2005-05-10 2009-08-12 微软公司 数据库破坏恢复系统和方法
US20080104344A1 (en) * 2006-10-25 2008-05-01 Norio Shimozono Storage system comprising volatile cache memory and nonvolatile memory
CN102187321A (zh) * 2008-10-20 2011-09-14 微软公司 对事务存储器中的副作用动作的事务处理
CN102282548A (zh) * 2009-01-14 2011-12-14 微软公司 事务性的存储器中的事务处理
CN101650972A (zh) * 2009-06-12 2010-02-17 东信和平智能卡股份有限公司 智能卡的非易失性存储器数据更新方法
US8826273B1 (en) * 2010-12-22 2014-09-02 Vmware, Inc. Synchronously logging to disk for main-memory database systems through record and replay
CN103814354A (zh) * 2011-09-23 2014-05-21 高通股份有限公司 经配置以执行事务型存储器操作的处理器
US20130097136A1 (en) * 2011-10-17 2013-04-18 Pie Digital, Inc. Method and system for acessing domain specific in-memory database management system
US20130198447A1 (en) * 2012-01-30 2013-08-01 Infinidat Ltd. Storage system for atomic write which includes a pre-cache
CN104583989A (zh) * 2012-08-28 2015-04-29 惠普发展公司,有限责任合伙企业 高性能持久性存储器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘扬帆: "硬件事务存储微体系结构及其验证研究", 《中国博士学位论文全文数据库 信息科技辑》 *
姚铭: "高密度高速存储系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111433732A (zh) * 2018-06-30 2020-07-17 西部数据技术公司 在对等存储设备上具有托管服务的多设备存储系统
CN112771515A (zh) * 2018-07-31 2021-05-07 马维尔国际贸易有限公司 具有元数据计算引擎的存储边缘控制器
CN111580789A (zh) * 2018-12-31 2020-08-25 罗克韦尔自动化技术公司 功能块框架生成
CN111580789B (zh) * 2018-12-31 2023-09-12 罗克韦尔自动化技术公司 功能块框架生成
CN112306956A (zh) * 2019-07-31 2021-02-02 伊姆西Ip控股有限责任公司 用于元数据维护的方法、装置和计算机程序产品
CN112306956B (zh) * 2019-07-31 2024-04-12 伊姆西Ip控股有限责任公司 用于元数据维护的方法、装置和计算机程序产品
CN111752685A (zh) * 2020-05-22 2020-10-09 清华大学 多核架构下的持久性内存事务提交方法
CN111752685B (zh) * 2020-05-22 2022-09-23 清华大学 多核架构下的持久性内存事务提交方法
CN113821470A (zh) * 2020-06-19 2021-12-21 平头哥(上海)半导体技术有限公司 总线设备、嵌入式系统和片上系统
CN112214171A (zh) * 2020-10-12 2021-01-12 华东师范大学 一种面向SQLite数据库的非易失性内存缓冲区设计方法
CN112214171B (zh) * 2020-10-12 2022-08-05 华东师范大学 一种面向SQLite数据库的非易失性内存缓冲区设计方法
CN112507187A (zh) * 2020-11-11 2021-03-16 贝壳技术有限公司 索引变更方法及装置

Also Published As

Publication number Publication date
US11231956B2 (en) 2022-01-25
WO2016187443A1 (en) 2016-11-24
US10140149B1 (en) 2018-11-27
US20220107833A1 (en) 2022-04-07
EP3298492A4 (en) 2019-01-02
EP3298492A1 (en) 2018-03-28
EP3298492B1 (en) 2021-04-21
US20190095240A1 (en) 2019-03-28
CN107851061B (zh) 2021-09-28

Similar Documents

Publication Publication Date Title
CN107851061A (zh) 远程存储器中硬件辅助的事务提交
US11645173B2 (en) Resilient mediation between storage systems replicating a dataset
US11188269B2 (en) Configuration for multiple logical storage arrays
US20230376379A1 (en) Storage system accommodating differing types of storage
US11079962B2 (en) Addressable non-volatile random access memory
US10733053B1 (en) Disaster recovery for high-bandwidth distributed archives
US11656768B2 (en) File deletion in a distributed system
US11449485B1 (en) Sequence invalidation consolidation in a storage system
US20230280910A1 (en) Allocation Of Differing Erase Block Sizes
US11144212B2 (en) Independent partitions within an array
CN110062946A (zh) 3d nand的智能刷新
US11797211B2 (en) Expanding data structures in a storage system
EP3292473A1 (en) Logical arrays running on physical hardware where reserve physical capacity is available
CN107851117A (zh) 大目录的有效分配

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