CN109716279B - 用于写入持久性的自适应并发 - Google Patents
用于写入持久性的自适应并发 Download PDFInfo
- Publication number
- CN109716279B CN109716279B CN201780056770.XA CN201780056770A CN109716279B CN 109716279 B CN109716279 B CN 109716279B CN 201780056770 A CN201780056770 A CN 201780056770A CN 109716279 B CN109716279 B CN 109716279B
- Authority
- CN
- China
- Prior art keywords
- data
- inode
- write
- nvram
- storage
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种由存储系统执行的用于该存储系统中的写入持久性的自适应并发的方法。该方法包括响应于接收到用于将数据写入存储系统的写入请求,从多个写入过程中选择写入过程,以及根据所选择的写入过程将数据写入存储系统。多个写入过程之一包括将数据传输到存储系统中,将与数据的文件信息相关联的inode锁定在存储器中,在锁定inode时更新inode中的文件信息,在锁定inode时提交数据,及解锁inode。
Description
背景技术
诸如闪存之类的固态存储器当前在固态驱动器(SSD)中用于增强或替换传统硬盘驱动器(HDD)、可写CD(压缩盘)或可写DVD(数字通用盘)驱动器(统称为旋转介质),和磁带驱动器,用于存储大量数据。闪存和其他固态存储器具有与旋转介质不同的特性。然而,出于兼容性原因,许多固态驱动器被设计为符合硬盘驱动器标准,这使得难以提供增强特征或利用闪存和其他固态存储器的独特方面。在硬盘驱动器上运行良好的写入过程对于写入固态存储器不一定是最佳的,并且对于所有写入请求不一定是最佳的。
在此背景下,提出了各个实施例。
发明内容
在一些实施例中,提供了一种由存储系统执行的用于该存储系统中的写入持久性的自适应并发的方法。该方法包括响应于接收到用于将数据写入存储系统的写入请求,从多个写入过程中选择写入过程,以及根据所选择的写入过程将数据写入存储系统。多个写入过程之一包括将数据传输到存储系统中,将与数据的文件信息相关联的inode锁定在存储器中,在锁定inode时更新inode中的文件信息,在锁定inode时提交数据,及解锁inode。该方法可以体现在计算机可读介质上并通过处理器执行。
通过以下结合附图的详细描述,实施例的其他方面和优点将变得显而易见,附图通过示例的方式示出了所描述的实施例的原理。
附图说明
通过参考以下结合附图的描述,可以最好地理解所描述的实施例及其优点。这些附图决不限制在不脱离所描述的实施例的精神和范围的情况下本领域技术人员可以对所描述的实施例进行的形式和细节上的任何改变。
图1是根据一些实施例的具有多个存储节点和耦合到每个存储节点以提供网络附连存储装置的内部存储装置的存储装置集群的透视图。
图2是示出根据一些实施例的耦合多个存储节点的互连交换机的框图。
图3是多级框图,示出了根据一些实施例的存储节点的内容和非易失性固态存储单元之一的内容。
图4示出了根据一些实施例的存储装置服务器环境,其使用图1-图3的存储节点和存储单元的实施例。
图5是根据一些实施例的刀片硬件框图,示出了控制平面、计算和存储装置平面以及与底层物理资源交互的权限。
图6示出了根据一些实施例的存储装置集群的刀片中的弹性软件层。
图7示出了根据一些实施例的存储装置集群的刀片中的权限和存储装置资源。
图8示出了根据一些实施例的写入过程选择器,其从多个写入过程中选择过程以满足数据写入请求。
图9示出了适用于图8的写入过程选择器的多个写入过程。
图10示出了适用于图8和图9的写入过程的具有锁的inode。
图11将文件范围后备示出为适合与图8和图9的写入过程一起使用的数据结构。
图12是根据一些实施例的用于写入持久性的自适应并发的方法的流程图,其可以使用图8-图11的写入过程选择器在图1-图7的存储装置集群中实施。
图13是根据一些实施例的示出存储系统中的分布式文件删除的系统和操作图。
图14是根据一些实施例的示出存储系统中的分布式文件截断的系统和操作图。
图15是根据一些实施例的用于分布式文件删除和截断的方法的流程图,其可以在图1-图7和图13-图14以及其他存储系统中实施。
图16是示出可以实施本文描述的实施例的示例性计算设备的图示。
具体实施方式
在本文描述的多个实施例中,存储系统具有写入过程选择器,其在多个写入过程中进行选择以优化对不同写入请求的写入。写入过程的可能性包括将数据写入NVRAM(非易失性随机存取存储器),以便稍后在后台写入过程中刷新到闪存,在inode锁定之外写入NVRAM,在锁定inode时更新inode并提交数据,在inode锁定之外,直接写入闪存并绕过NVRAM,在锁定inode时更新inode并提交数据。写入过程的选择基于数据相对于阈值是少量还是大量,或者数据是串行还是并行到达,因为不同的写入过程在这些情况下具有不同的效率。写入过程使用锁定,以便在存储节点和固态存储单元之间进行并发写入时,文件的I节点保持一致。数据通过写入提交而持久化。在持久化数据的同时在可以在存储装置集群中的不同存储节点和存储单元中同时运行的多个写入过程中进行选择会使系统受用于写入持久性的自适应并发的影响。
在一些实施例中,本文描述的存储装置集群,更一般地,存储系统,可以执行分布式文件删除和/或分布式文件截断。各种后台任务删除文件的各个片段,即分布在整个存储装置集群或存储系统中的数据,从而加快对请求客户端的文件删除或截断的确认。该确认不必等到文件的片段或部分被物理删除。因此,系统改进了从客户端发出删除或截断文件的请求时直到存储系统确认文件删除或截断为止的响应时间或延迟。
在存储系统中的存储节点中由inode下的权限拥有和记录不同的数据片段或文件的部分。在一些实施例中,拥有该文件的inode的权限还负责该文件的文件范围。当客户端删除文件(即,请求删除文件)时,请求被路由到作为文件的inode的所有者的权限。拥有该文件的inode的权限将inode的删除记录为NVRAM(非易失性随机存取存储器)中的单个记录,并在NVRAM中记录“待办”清理记录(例如,工作或清理任务列表或其他数据结构,例如清理任务的记录)。一旦inode的删除被记录为NVRAM中的单个记录并且“待办”清理被记录在NVRAM中,拥有文件的inode的权限将向客户端报告确认文件删除。在后台,清理工作是与可能具有每个文件片段的所有权限共享的批量获取的。一旦拥有正在删除的文件的inode的权限确认所有清理都已完成,该权限删除“待办”清理任务记录。最初,删除inode的事实被记录在NVRAM中,然后由存储节点的处理器驱动,该记录被刷新(例如,在一些实施例中,在30秒内)到闪存(即,存储单元中的闪存)。
当客户端截断文件(即,请求截断文件)时,该请求被路由到作为文件的inode的所有者的权限。该权限将消息发送或广播给具有数据片段或文件部分(例如,段系列)的所有权的所有权限,并且每个接收权限向NVRAM发送单个消息。每个NVRAM记录在逻辑上表现得像全零写入。来自这个权限的任何读取都将接收回该权限报告的全零。对于一些实施例,示例性流程如下:
向可能具有文件的数据的所有权限发送消息
每个接收权限都将截断记录写入NVRAM
当从接收权限收集到所有响应时,作为文件的inode所有者的权限向客户端确认截断操作
在这样的确认之后,对文件的截断部分的任何读取保证全零的返回
清理数据的方式与覆写相同,即一旦将NVRAM刷新到闪存,清理操作就用零覆写闪存。
以下实施例描述了存储用户数据的存储装置集群,例如源自一个或多个用户或客户端系统或存储装置集群外部的其他源的用户数据。存储装置集群使用擦除编码和元数据的冗余副本,在机箱内容纳的存储节点之间分配用户数据。擦除编码是指一种数据保护或重构方法,其中数据存储在一组不同的位置,例如磁盘、存储节点或地理位置。闪存是可以与实施例集成的一种类型的固态存储器,但是实施例可以扩展到其他类型的固态存储器或其他存储介质,包括非固态存储器。存储位置和工作负载的控制分布在集群对等系统中的各存储位置上。诸如调解各个存储节点之间的通信,检测存储节点何时变得不可用以及平衡各个存储节点上的I/O(输入和输出)等的任务都是在分布式的基础上处理的。在一些实施例中,数据被布置或分布在支持数据恢复的数据片段或条带中的多个存储节点上。可以在集群内重新分配数据的所有权,而与输入和输出模式无关。下面更详细描述的该架构允许集群中的存储节点失败,而系统保持可操作,因为数据可以从其他存储节点重构,因此保持可用于输入和输出操作。在各种实施例中,存储节点可以被称为群集节点、刀片或服务器。下面参考图1-7讨论各种系统方面。参考图8-12描述写入过程选择器和各种写入过程。
存储装置集群包含在机箱内,即,容纳一个或多个存储节点的壳体。诸如配电总线的向每个存储节点提供电力的机构和诸如能够在存储节点之间进行通信的通信总线的通信机构包括在机箱内。根据一些实施例,存储装置集群可以作为独立系统在一个位置运行。在一个实施例中,机箱包含功率分配和通信总线的至少两个实例,其可以独立地启用或禁用。内部通信总线可以是以太网总线,然而,诸如外围组件互连(PCI)高速、InfiniBand等的其他技术同样适用。机箱为外部通信总线提供端口,以实现多个机箱之间,直接或通过交换机,以及与客户端系统的通信。外部通信可以使用诸如以太网、InfiniBand、光纤通道等技术。在一些实施例中,外部通信总线使用不同的通信总线技术来进行机箱间和客户端通信。如果在机箱内部或机箱之间部署交换机,则交换机可以充当多个协议或技术之间的转换。当连接多个机箱以定义存储装置集群时,客户端可以使用专有接口或标准接口(如网络文件系统(NFS)、通用互联网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本传输协议(HTTP))访问存储装置集群。从客户端协议的转换可以发生在交换机、机箱外部通信总线或每个存储节点内。
每个存储节点可以是一个或多个存储装置服务器,并且每个存储装置服务器连接到一个或多个非易失性固态存储器单元,其可以被称为存储单元或存储设备。一个实施例包括在每个存储节点中的以及一个到八个非易失性固态存储器单元之间的单个存储设备服务器,但是这个示例并不意味着是限制性的。存储设备服务器可以包括处理器、动态随机存取存储器(DRAM)以及用于内部通信总线和用于每个电源总线的电力分配的接口。在一些实施例中,在存储节点内,接口和存储单元共享通信总线,例如PCI高速。非易失性固态存储器单元可以通过存储节点通信总线直接访问内部通信总线接口,或者请求存储节点访问总线接口。非易失性固态存储器单元包含嵌入式中央处理单元(CPU)、固态存储设备控制器和一定量的固态大容量存储装置,例如,在一些实施例中,在2-32太字节(TB)之间。诸如DRAM的嵌入式易失性存储介质和能量储备装置包括在非易失性固态存储器单元中。在一些实施例中,能量储备装置是电容器、超级电容器或电池,其能够在功率损耗的情况下将DRAM内容的子集传送到稳定的存储介质。在一些实施例中,非易失性固态存储器单元用存储装置级存储器构造,例如替代DRAM并且能够实现减少功率的保持装置的相变或磁阻随机存取存储器(MRAM)。
存储节点和非易失性固态存储装置的许多特征之一是主动重建存储装置集群中的数据的能力。存储节点和非易失性固态存储装置可以确定存储装置集群中的存储节点或非易失性固态存储装置何时不可达,而与是否尝试读取涉及该存储节点或非易失性固态存储装置的数据无关。然后,存储节点和非易失性固态存储装置协作以在至少部分新位置中恢复和重建数据。这构成了主动重建,因为系统重建数据而无需等待从使用存储装置集群的客户端系统发起的读取访问需要数据。下面讨论储存存储器及其操作的这些和进一步的细节。
图1是根据一些实施例的存储装置集群160的透视图,具有多个存储节点150和耦合到每个存储节点的内部固态存储器以提供网络附连存储装置或存储装置区域网络。网络附连存储装置、存储装置区域网络或存储装置集群或其他储存存储器可以包括一个或多个存储装置集群160,每个存储装置集群160具有一个或多个存储节点150,处于物理部件和由此提供的储存存储器的数量两者的灵活且可重新配置的布置中。将存储装置集群160设计成适配机架,并且可以根据储存存储器的需要设置和填充一个或多个机架。存储装置集群160具有机箱138,机箱138具有多个插槽142。应当理解,机箱138可以称为外壳、壳体或机架单元。在一个实施例中,机箱138具有十四个插槽142,但是容易设计其他数量的插槽。例如,一些实施例具有四个插槽、八个插槽、十六个插槽、三十二个插槽或其他合适数量的插槽。在一些实施例中,每个插槽142可以容纳一个存储节点150。机箱138包括可用于将机箱138安装在机架上的襟翼148。风扇144提供用于冷却存储节点150及其部件的空气循环,但是可以使用其他冷却部件,或者可以设计没有冷却部件的实施例。交换结构146将机箱138内的存储节点150耦合在一起并耦合到网络以与存储器通信。出于说明的目的,在图1所示的实施例中,交换结构146和风扇144左侧的插槽142显示为由存储节点150占用,而交换结构146和风扇144右侧的插槽142是空的并且可用于插入存储节点150。该配置是一个示例,并且一个或多个存储节点150可以以各种其他布置占用插槽142。在一些实施例中,存储节点布置不需要是顺序的或相邻的。存储节点150是可热插拔的,这意味着存储节点150可以插入机箱138中的插槽142中,或者从插槽142移除,而不会停止或关闭系统。在插入插槽142或从插槽142移除存储节点150时,系统自动重新配置以便识别并适应该改变。在一些实施例中,重新配置包括恢复冗余和/或重新平衡数据或负载。
每个存储节点150可以具有多个部件。在此处所示的实施例中,存储节点150包括印刷电路板158,填充有CPU 156,即处理器,耦合到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。
图2是示出耦合多个存储节点150的通信互连170和配电总线172的框图。返回参考图1,在一些实施例中,通信互连170可以包括在交换结构146中或用交换结构146实现。在一些实施例中,在多个存储装置集群160占用机架的情况下,通信互连170可以包括在机架顶部交换机中或者用机架顶部交换机实现。如图2所示,存储装置集群160封闭在单个机箱138内。外部端口176通过通信互连170耦合到存储节点150,而外部端口174直接耦合到存储节点。外部电源端口178耦合到配电总线172。存储节点150可以包括如参考图1所述的变化数量和不同容量的非易失性固态存储装置152。此外,一个或多个存储节点150可以是如图2所示的仅计算存储节点。权限168在非易失性固态存储装置152上实现,例如作为存储在存储器中的列表或其他数据结构。在一些实施例中,权限存储在非易失性固态存储装置152内,并由在非易失性固态存储装置152的控制器或其他处理器上执行的软件支持。在另一实施例中,权限168在存储节点150上实现,例如作为存储在存储器154中的列表或其他数据结构并由在存储节点150的CPU 156上执行的软件支持。在一些实施例中,权限168控制数据存储在非易失性固态存储装置152中的方式和位置。该控制有助于确定将哪种类型的擦除编码方案应用于数据,以及哪些存储节点150具有数据的哪些部分。每个权限168可以被分配给非易失性固态存储装置152。在各种实施例中,每个权限可以控制由文件系统、存储节点150或由非易失性固态存储装置152分配给数据的inode号、段号或其他数据标识符的范围。
在一些实施例中,每条数据和每条元数据在系统中具有冗余。此外,每条数据和每条元数据都有所有者,可以称之为权限。如果该权限不可达,例如通过存储节点的故障,则存在如何查找该数据或该元数据的后继计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168与存储节点150和非易失性固态存储装置152具有关系。覆盖一定范围数据段号或数据的其他标识符的每个权限168可以被分配给特定的非易失性固态存储装置152。在一些实施例中,用于所有这些范围的权限168分布在存储装置集群的非易失性固态存储装置152上。每个存储节点150具有网络端口,该网络端口提供对该存储节点150的非易失性固态存储装置152的访问。数据可以存储在与段号相关联的段中,并且在一些实施例中,该段号是用于配置RAID(独立磁盘冗余阵列)条带的间接性。因此,权限168的分配和使用建立了对数据的间接性。根据一些实施例,间接性可以被称为间接地引用数据的能力,在这种情况下是经由权限168。段将非易失性固态存储装置152和本地标识符的集合标识到可包含数据的非易失性固态存储装置152的集合中。在一些实施例中,本地标识符是在设备中的偏移,并且可以由多个段顺序地重用。在其他实施例中,本地标识符对于特定段是唯一的并且从不重用。将非易失性固态存储装置152中的偏移应用于定位数据,以便写入非易失性固态存储装置152或从非易失性固态存储装置152读取(以RAID条带的形式)。跨越非易失性固态存储装置152的多个单元将数据分条,其可包括或不同于对特定数据段具有权限168的非易失性固态存储装置152。
如果特定数据段的位置发生变化,例如,在数据移动或数据重构期间,应该在具有该权限168的该非易失性固态存储装置152或存储节点150处查询该数据段的权限168。为了定位特定数据,实施例计算数据段的哈希值或应用inode号或数据段号。该操作的输出指向对该特定数据具有权限168的非易失性固态存储装置152。在一些实施例中,该操作有两个阶段。第一阶段将实体标识符(ID)(例如,段号、inode号或目录号)映射到权限标识符。该映射可以包括诸如哈希或位掩码的计算。第二阶段是将权限标识符映射到特定非易失性固态存储装置152,这可以通过显式映射来完成。该操作是可重复的,因此当执行计算时,计算结果重复且可靠地指向具有该权限168的特定非易失性固态存储装置152。该操作可包括可达存储节点集合作为输入。如果可达的非易失性固态存储单元集合改变,则最佳集合改变。在一些实施例中,持久值是当前分配(其总是为真),并且计算的值是群集将尝试重新配置的目标分配。该计算可以用于在存在可达的并且构成相同群集的非易失性固态存储装置152集合的情况下,为权限确定最佳非易失性固态存储装置152。该计算还确定了对等非易失性固态存储装置152的有序集合,其还将权限记录到非易失性固态存储装置映射,使得即使所分配的非易失性固态存储装置不可达,也可以确定该权限。在一些实施例中,如果特定权限168不可用,则可以查询重复或替代权限168。
参考图1和图2,CPU 156在存储节点150上的许多任务中的两个是分解写入数据,并重组读数据。当系统确定要写入数据时,如上所述地定位该数据的权限168。当已经确定了数据的段ID时,将写入请求转发到当前确定为从段确定的权限168的主机的非易失性固态存储装置152。非易失性固态存储装置152和相应的权限168位于其上的存储节点150的主机CPU 156然后分解或分片数据并将数据传送到各种非易失性固态存储装置152。根据擦除编码方案将传送的数据写为数据条带。在一些实施例中,请求拉取数据,在其他实施例中,推送数据。相反,当读取数据时,如上所述地定位包含数据的段ID的权限168。非易失性固态存储装置152和相应的权限168位于其上的存储节点150的主机CPU 156从权限指向的非易失性固态存储装置和相应存储节点请求数据。在一些实施例中,从闪存读取数据作为数据条带。然后,存储节点150的主机CPU 156重组读取数据,根据适当的擦除编码方案校正任何错误(如果存在),并将重组的数据转发到网络。在进一步的实施例中,这些任务中的一些或全部可以在非易失性固态存储装置152中处理。在一些实施例中,段主机通过从存储装置请求页面然后将数据发送到发出原始请求的存储节点来请求将数据发送到存储节点150。
在一些系统中,例如在UNIX样式的文件系统中,利用索引节点或inode处理数据,索引节点或inode指定表示文件系统中的对象的数据结构。例如,对象可以是文件或目录。元数据可以伴随对象,作为诸如许可数据和创建时间戳之类的属性以及其他属性。可以将段号分配给文件系统中的这种对象的全部或一部分。在其他系统中,使用在别处分配的段号处理数据段。出于讨论的目的,分配的单元是实体,实体可以是文件、目录或段。即,实体是由存储系统存储的数据或元数据的单元。实体被分组为称为权限的集合。每个权限都有权限所有者,它是存储节点,拥有更新权限中实体的专有权。即,存储节点包含权限,而权限又包含实体。
根据一些实施例,段是数据的逻辑容器。段是中间地址空间和物理闪存位置之间的地址空间,即数据段号,在该地址空间中。段还可以包含元数据,这使得能够恢复数据冗余(重写到不同的闪存位置或设备)而无需更高级别的软件参与。在一个实施例中,段的内部格式包含客户端数据和介质映射以确定该数据的位置。通过在适用的情况下将段分成多个数据和奇偶校验分片,保护每个数据段免受例如存储器和其他故障影响。根据擦除编码方案,数据和奇偶校验分片在耦合到主机CPU 156(见图5)的非易失性固态存储装置152上分布,即条带化。在一些实施例中,术语段的使用是指容器及其在段的地址空间中的位置。根据一些实施例,术语条带的使用是指与段相同的分片集合,并且包括分片如何与冗余或奇偶校验信息一起分布。
在整个存储系统中发生一系列地址空间变换。在顶部是链接到inode的目录条目(文件名)。Inode指向中间地址空间,其中数据以逻辑方式存储。中间地址可以通过一系列间接中介进行映射,以分散大型文件的负载,或实现如去重或快照的数据服务。然后将段地址转换为物理闪存位置。根据一些实施例,物理闪存位置具有由系统中的闪存量限定的地址范围。中间地址和段地址是逻辑容器,并且在一些实施例中,使用128位或更大的标识符以便实际上是无限的,重用的可能性被计算为比系统的预期寿命更长。在一些实施例中,来自逻辑容器的地址以分层方式分配。最初,可以为每个非易失性固态存储单元152分配一定范围的地址空间。在该分配范围内,非易失性固态存储装置152能够在不与其他非易失性固态存储装置152同步的情况下分配地址。
数据和元数据由底层存储装置布局集合存储,该底层存储装置布局针对变化的工作负载模式和存储设备进行了优化。这些布局包含多种冗余方案、压缩格式和索引算法。其中一些布局存储有关权限和权限主机的信息,而其他布局存储文件元数据和文件数据。冗余方案包括容忍单个存储设备(例如NAND闪存芯片)中的损坏位的纠错码,容忍多个存储节点故障的擦除码,以及容忍数据中心或区域故障的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(LDPC)码。在一些实施例中,在存储装置集群内使用Reed-Solomon编码,并且在存储网格内使用镜像。可以使用有序的日志结构化索引(诸如日志结构化合并树)来存储元数据,并且可以不将大数据存储在日志结构化布局中。
为了保持实体的多个副本之间的一致性,存储节点通过计算隐含地对两件事达成一致:(1)包含实体的权限,以及(2)包含权限的存储节点。将实体分配给权限可以通过伪随机地将实体分配给权限,通过基于外部生成的密钥将实体分成范围,或者通过将单个实体放入每个权限来完成。伪随机方案的示例是线性哈希和可扩展哈希下的复制(RUSH)系列哈希,包括可扩展哈希下的受控复制(CRUSH)。在一些实施例中,伪随机分配仅用于将权限分配给节点,因为节点集合可以改变。权限集合不能改变,因此在这些实施例中可以应用任何主观函数。某些放置方案会自动将权限放置在存储节点上,而其他放置方案则依赖于权限到存储节点的显式映射。在一些实施例中,利用伪随机方案从每个权限映射到候选权限所有者集合。与CRUSH相关的伪随机数据分布函数可以将权限分配给存储节点并创建权限的分配位置的列表。每个存储节点都具有伪随机数据分布函数的副本,并且可以得出相同的计算以便分发及稍后查找或定位权限。在一些实施例中,每个伪随机方案需要可达的存储节点集合作为输入,以便达成相同的目标节点。一旦将实体放入权限中,该实体就可以存储在物理设备上,以便预期的故障不会导致意外的数据丢失。在一些实施例中,重新平衡算法尝试将相同布局中的权限内的所有实体的副本存储在同一组机器上。
预期故障的示例包括设备故障,被盗机器,数据中心火灾和区域灾难,例如核或地质事件。不同的故障会导致不同级别的可接受数据丢失。在一些实施例中,被盗存储节点既不影响系统的安全性也不影响系统的可靠性,而取决于系统配置,区域事件可能不会导致数据丢失,几秒或几分钟的更新丢失,甚至完全数据丢失。
在实施例中,用于存储装置冗余性的数据的放置独立于用于数据一致性的权限的放置。在一些实施例中,包含权限的存储节点不包含任何持久存储装置。相反,存储节点连接到不包含权限的非易失性固态存储单元。存储节点和非易失性固态存储单元之间的通信互连由多种通信技术组成,并且具有不一致的性能和容错特性。在一些实施例中,如上所述,非易失性固态存储单元通过PCI高速连接到存储节点,存储节点使用以太网底板在单个机箱内连接在一起,并且机箱连接在一起以形成存储装置集群。在一些实施例中,存储装置集群使用以太网或光纤信道连接到客户端。如果将多个存储群集配置到存储装置网格中,则使用互联网或其他远程网络链接(例如“都市规模”链接或不通过互联网的专用链接)连接多个存储群集。
权限所有者具有修改实体,将实体从一个非易失性固态存储单元迁移到另一个非易失性固态存储单元以及添加和移除实体副本的专有权。这允许维护底层数据的冗余性。当权限所有者故障,将要退役或过载时,权限将转移到新的存储节点。瞬态故障使得确保所有无故障机器在新的权限位置达成一致非常重要。由于瞬态故障而产生的模糊性可以通过共识协议(例如Paxos、热温故障转移方案)自动实现,通过远程系统管理员或本地硬件管理员的手动干预(例如通过从群集中物理移除故障机器,或按下故障机器上的按钮)实现。在一些实施例中,使用共识协议,并且故障转移是自动的。根据一些实施例,如果在太短的时间段内发生太多故障或复制事件,则系统进入自保持模式并停止复制和数据移动活动,直到管理员进行干预。
由于权限在存储节点之间转移,并且权限所有者更新其权限中的实体,因此系统在存储节点和非易失性固态存储单元之间传送消息。关于持久性消息,具有不同目的的消息具有不同类型。根据消息的类型,系统保持不同的排序和耐久性保证。在处理持久性消息时,消息临时存储在多个持久和非持久的存储装置硬件技术中。在一些实施例中,消息存储在RAM、NVRAM中和NAND闪存设备上,并且使用各种协议以便有效地使用每个存储介质。延迟敏感的客户端请求可以持久保存在复制的NVRAM中,然后持久保存在NAND中,而后台重新平衡操作可以直接持久保存到NAND。
在传输之前持久存储持久性消息。这允许尽管故障和部件更换,系统仍继续服务客户端请求。虽然许多硬件部件包含系统管理员、制造商、硬件供应链和持续监控质量控制基础结构可见的唯一标识符,但运行在基础结构地址之上的应用程序可以虚拟化地址。无论部件故障和更换如何,这些虚拟化地址都不会在存储系统的生命周期内发生变化。这允许随时间替换存储系统的每个部件而无需重新配置或中断客户端请求处理。
在一些实施例中,以足够的冗余存储虚拟化地址。连续监视系统将硬件和软件状态与硬件标识符相关联。这允许检测和预测由于故障部件和制造细节而导致的故障。在一些实施例中,通过从关键路径移除部件,监视系统还能够在故障发生之前主动转移权限和实体远离受影响的设备。
图3是多级框图,示出了存储节点150的内容和存储节点150的非易失性固态存储装置152的内容。在一些实施例中,通过网络接口控制器(NIC)202往来于存储节点150传送数据。如上所述,每个存储节点150具有CPU 156和一个或多个非易失性固态存储装置152。图3中向下移动一个级别,每个非易失性固态存储装置152具有相对快速的非易失性固态存储器,例如非易失性随机存取存储器(NVRAM)204和闪存206。在一些实施例中,NVRAM 204可以是不需要编程/擦除周期的部件(DRAM、MRAM、PCM),并且可以是可以支持比读取存储器更频繁得多地写入的存储器。图3中向下移动到另一级别,NVRAM 204在一个实施例中实现为高速易失性存储器,例如动态随机存取存储器(DRAM)216,由能量储备218支持。能量储备218提供足够的电力以保持DRAM 216供电足够长,以便在电源故障的情况下将内容传送到闪存206。在一些实施例中,能量储备218是电容器、超级电容器、电池或其他设备,其提供合适的能量供应,足以在断电的情况下能够将DRAM 216的内容传送到稳定的存储介质。闪存206被实现为多个闪存管芯222,其可以被称为闪存管芯222的封装或闪存管芯222的阵列。应当理解,闪存管芯222可以以任何数量的方式封装,每个封装单个管芯,每个封装多个管芯(即多芯片封装),在混合封装中,作为印刷电路板或其他基板上的裸管芯,作为封装管芯等。在所示实施例中,非易失性固态存储装置152具有控制器212或其他处理器,以及耦合到控制器212的输入输出(I/O)端口210。I/O端口210耦合到闪存存储节点150的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,以及寄存器226,通过该寄存器226可以将数据写入闪存管芯222或从闪存管芯222读取数据。在进一步的实施例中,代替闪存管芯222内所示的闪存,或者除了闪存管芯222内所示的闪存之外使用其他类型的固态存储器。
在本文所公开的各种实施例中,存储装置集群160通常可与存储装置阵列形成对比。存储节点150是创建存储装置集群160的集合的一部分。每个存储节点150拥有提供数据所需的数据片段和计算。多个存储节点150协作以存储和取回数据。储存存储器或存储设备(通常在存储装置阵列中使用)较少涉及处理和操纵数据。存储装置阵列中的储存存储器或存储设备接收用于读取、写入或擦除数据的命令。存储装置阵列中的储存存储器或存储设备不知道它们嵌入的更大系统,或数据意味着什么。存储装置阵列中的储存存储器或存储设备可以包括各种类型的储存存储器,例如RAM、固态驱动器、硬盘驱动器等。本文描述的存储单元152具有同时有效并且用于多种目的的多个接口。在一些实施例中,存储节点150的一些功能被转移到存储单元152,将存储单元152转换成存储单元152和存储节点150的组合。将计算(相对于存储数据)放入存储单元152使该计算更接近数据本身。各种系统实施例具有具有不同能力的存储节点层的侧记结构。相比之下,在存储装置阵列中,控制器拥有并知道关于控制器在机架或存储设备中管理的所有数据的所有内容。在存储装置集群160中,如本文所述,多个存储单元152和/或存储节点150中的多个控制器以各种方式协作(例如,用于擦除编码、数据分片、元数据通信和冗余、存储容量扩展或收缩、数据恢复等等)。
图4示出了存储装置服务器环境,其使用图1-3的存储节点150和存储单元152的实施例。在该版本中,每个存储单元152具有处理器,诸如在机箱138(参见图1)中的PCIe(外围组件互连高速)板上的控制器212(参见图3)、FPGA(现场可编程门阵列)、闪存206和NVRAM204(其是超级电容器支持的DRAM 216,参见图2和3)。存储单元152可以实现为包含存储装置的单板,并且可以是机箱内最大可容忍的故障域。在一些实施例中,多达两个存储单元152可能发生故障并且设备将继续而没有数据丢失。
在一些实施例中,基于应用程序使用将物理存储装置分成命名区域。NVRAM 204是存储单元152DRAM 216中的预留存储器的连续块,并且由NAND闪存支持。NVRAM 204在逻辑上被划分为多个存储区域,作为假脱机写为两个(例如,spool_region)。NVRAM 204假脱机内的空间由每个权限512独立管理。每个设备向每个权限512提供一定量的存储装置空间。该权限512还管理该空间内的使用寿命和分配。假脱机的示例包括分布式事务或概念。当存储单元152的主电源发生故障时,板载超级电容器提供短时间的电力保持。在该保持间隔期间,将NVRAM 204的内容刷新到闪存206。在下一次通电时,从闪存206恢复NVRAM 204的内容。
对于存储单元控制器,逻辑“控制器”的责任分布在包含权限512的每个刀片上。逻辑控制的这种分布在图4中示为主机控制器402、中间层控制器404和存储单元控制器406。控制平面和存储装置平面的管理被独立地处理,尽管部件可以物理地共同位于同一刀片上。每个权限512有效地用作独立控制器。每个权限512提供其自己的数据和元数据结构,其自己的后台工作者,并维护其自己的生命周期。
图5是刀片502硬件框图,示出了在图4的存储装置服务器环境中使用图1-3的存储节点150和存储单元152的实施例的控制平面504、计算和存储装置平面506、508及与底层物理资源交互的权限512。控制平面504被划分为多个权限512,其可以使用计算平面506中的计算资源在任何刀片502上运行。存储装置平面508被划分为设备集合,每个设备提供对闪存206和NVRAM 204资源的访问。
在图5的计算平面506和存储装置平面508中,权限512与底层物理资源(即,设备)交互。从权限512的角度来看,其资源在所有物理设备上被条带化。从设备的角度来看,它为所有权限512提供资源,而不管权限在何处运行。每个权限512已经在存储单元152中分配或被分配了储存存储器的一个或多个分区510,例如,闪存206和NVRAM 204中的分区510。每个权限512使用属于它的那些分配的分区510,用于写入或读取用户数据。权限可以与系统的不同数量的物理存储装置相关联。例如,一个权限512可以在一个或多个存储单元152中具有比一个或多个其他权限512更大数量的分区510或更大尺寸的分区510。
图6示出了根据一些实施例的存储装置集群160的刀片502中的弹性软件层。在弹性结构中,弹性软件是对称的,即,每个刀片502的计算模块602运行图6中所示的三个相同的过程层。存储装置管理器606执行来自其他刀片502的读取和写入请求,用于存储在本地存储单元152 NVRAM 204和闪存206中的数据和元数据。权限168通过向相应数据或元数据在其存储单元152上的刀片502发出必要的读取和写入来完成客户端请求。端点604解析从交换结构146监督软件接收的客户端连接请求,将客户端连接请求中继到负责完成的权限168,并将权限168的响应中继到客户端。对称的三层结构使存储系统具有高度的并发性。弹性可以有效可靠地扩展。此外,弹性实现了一种新颖的扩展技术,无论客户端访问模式如何,都均匀地在所有资源上平衡工作,并通过消除对传统分布式锁定通常发生的刀片间协调的大量需求来最大化并发性。
在刀片502计算模块602中运行的权限168执行完成客户端请求所需的内部操作。弹性的一个特征是权限168是无状态的,即,它们将活动数据和元数据缓存在它们自己的刀片的168DRAM中以便快速访问,但是它们将其NVRAM 204分区中的每个更新存储在三个单独的刀片502上,直到更新写入闪存206为止。对NVRAM 204的所有存储系统写入一式三份地复制到三个单独刀片502上的分区。对于由奇偶校验和Reed-Solomon RAID校验和保护的三重镜像NVRAM 204和持久存储装置,存储系统可以经受住两个刀片502的并发故障,数据、元数据或对任一的访问都没有丢失。
因为权限168是无状态的,所以它们可以在刀片502之间迁移。每个权限168具有唯一标识符。NVRAM 204和闪存206分区与权限168的标识符相关联,而不与它们在其上运行的刀片502相关联。因此,当权限168迁移时,权限168继续从其新位置管理相同的存储装置分区。当新刀片502安装在存储装置集群160的实施例中时,系统通过以下来自动重新平衡负载:
对新刀片502存储装置进行分区以供系统权限168使用,
将所选权限168迁移到新刀片502,
在新刀片502上启动端点604并将它们包括在交换结构146的客户端连接分配算法中。
从其新位置,迁移的权限168将其NVRAM 204分区的内容持久保存在闪存206上,处理来自其他权限168的读取和写入请求,并完成端点604指向它们的客户端请求。类似地,如果刀片502发生故障或被移除,则系统在系统的剩余刀片502中重新分配其权限168。重新分配的权限168从其新位置继续执行其原始功能。
图7示出了根据一些实施例的存储装置集群160的刀片502中的权限168和存储资源。每个存储装置集群160权限168专门负责每个刀片502上的闪存206和NVRAM 204的分区。权限168独立于其他权限168管理其分区的内容和完整性。权限168压缩传入数据并将其临时保存在它们的NVRAM 204分区中,然后整合、RAID保护并将数据持久保存在其闪存206分区中的存储装置段中。当权限168将数据写入闪存206时,存储装置管理器606执行必要的闪存转换以优化写入性能并最大化介质寿命。在后台,权限168“垃圾收集”,或者通过覆盖回收客户端废弃的数据占用的空间。由于权限168的分区是不相连的,因此不需要分布式锁定来执行客户端和写入或执行后台功能。
图8示出了根据一些实施例的写入过程选择器802,其从多个写入过程804中选择过程以满足数据写入请求806。在接收到数据写入请求806时,写入过程选择器802根据一个或多个规则808评估写入请求806,并从写入过程804中选择写入过程812、814、816。执行单元810执行选择的写入过程812、814、816。写入过程804可以包括写入NVRAM 204和/或绕过NVRAM直接写入闪存206。后台写入过程将数据从NVRAM 204刷新到闪存206。NVRAM 204由能量储备208支持,如上面参考图3所述。
为了实现写入过程选择器802,写入过程804可以是软件、固件和/或硬件的部分,其中规则808在数据结构中或嵌入在软件或固件中或甚至在硬件中。写入过程选择器802和执行单元810可以作为在处理器、固件和/或硬件上执行的软件。通过从多个写入过程804中进行选择,写入过程选择器802针对系统效率使写入请求处理适应数据的长度或类型,数据的到达率,串联或并行的数据到达或数据的其他特性。在一些实施例中,规则808是动态的和可重新配置的,例如通过将新规则下载到数据结构,或重新编程可编程逻辑设备。在各种实施例中,每个刀片502可以有一个写入过程选择器802,例如,在具有CPU 156的存储节点150中的计算模块602(参见图3)中,或者每个存储单元152一个,例如在控制器212和/或相关联的可编程逻辑设备208(参见图3)或存储单元152的其他电路中。
图9示出了适用于图8的写入过程选择器802的多个写入过程812、814、816(来自多个写入过程804)和后台写入过程902。这些写入过程涉及数据或元数据如何由刀片502的计算模块602中的权限168写入存储单元152中的NVRAM 204和闪存206。在一些情况下,最有效的是将数据写入NVRAM 204,例如如图7所示的在跨越刀片502的RAID条带中条带化,并且使后台写入过程902将数据从NVRAM 204刷新到闪存206。在其他情况下,将数据直接写入闪存206更有效,绕过NVRAM 204但再次如图7所示的在跨越刀片502的RAID条带中条带化。本文描述的写入过程的编号是任意的,并且写入过程选择器802使用的写入过程的总数可以是固定的或可变的且大于或等于两个。可以使用这些写入过程的子集或超集。本文描述的写入过程可以用于除了下面描述的那些之外的其他条件。
在一些实施例中,响应于数据写入请求806针对小于阈值量的数据(即,小写入),选择第一写入过程812。对于小写入,写入过程是锁定正在为其写入数据的文件的inode,更新inode(参见图10),将数据传输到NVRAM 204中,并解锁inode。此处,作为前台过程更新inode并将数据传输到NVRAM中,其中锁定inode,以便任何其他写入过程不能尝试更新inode或将与该inode相关的数据传输到存储器中。后台写入过程902将数据从NVRAM 204刷新到闪存206。
前台任务是应该顺序、并行或与客户端可见的任何操作一致地执行的任务。后台任务是可以立即或稍后执行的任务,但是不一定需要在客户端可见的操作(例如,对客户端的确认、回复或其他响应)之前执行。后台任务不在关键路径中,前台任务处于关键路径中,客户端可以看到操作。
在一些实施例中,响应于数据写入请求806针对大于阈值量的数据,并且针对数据的串行写入,即非并行写入,选择第二写入过程814。对于大数据串行写入,写入过程是将数据传输到NVRAM 204中,锁定inode,更新inode,提交数据(参见图11),并解锁inode。在该写入过程中,在锁定inode之前将数据传输到NVRAM中。同样在锁定inode的情况下,更新inode并提交数据,以便其他写入过程不能尝试更新inode或提交其数据而干扰正在进行的inode更新和数据提交。后台写入过程902将数据从NVRAM 204刷新到闪存206。
在一些实施例中,响应于数据写入请求806针对大于阈值量的数据并且数据以并行写入写入,选择第三写入过程816。对于大数据并行写入,写入过程是将数据绕过NVRAM204直接传输到闪存206,锁定inode,更新inode,提交数据,及解锁inode。在该写入过程中,在锁定inode之前将数据传输到闪存。同样在锁定inode的情况下,更新inode并提交数据,以便其他写入过程不能尝试更新inode或提交其数据而干扰正在进行的inode更新和数据提交。在第三写入过程816中,不需要后台写入过程将数据从NVRAM 204刷新到闪存206,因为数据被直接写入闪存206中。
第二写入过程814和第三写入过程816的比较揭示了为什么第三写入过程816对于涉及相同inode的大量并行数据写入更有效。对这么大量的并行写入应用第二写入过程会冻结NVRAM,并且由于inode的多个更新(每个并行写入一个更新)会产生瓶颈。此外,所有其他并行写入将在一个并行写入锁定并更新inode的同时等待,因为它们无法提交其数据,直到一个写入再次解锁inode。通过使所有并行写入将数据直接传输到闪存206中,然后进行具有数据提交的inode的仅一个锁定和更新,这种瓶颈情况得到缓解,并且第三写入过程806对于大量并行写入变得更有效。
相反,第二写入过程814对于大数据串行写入更有效,因为写入NVRAM 204比写入闪存206更快。对闪存206的较慢写入可以在后台进行。第一写入过程812和第二写入过程814的比较表明,通过在锁定inode的情况下将数据传输到NVRAM 204,可以有效地完成小写入,因为这不会长时间冻结inode。通过在锁定inode用于inode更新和数据提交之前将数据传输到NVRAM 204中来有效地完成更大的串行写入,因为这不会长时间冻结inode,如果在锁存inode的情况下进行到NVRAM 204的大数据传输就会发生这种情况。
在一个实施例中,第二写入过程814和第三写入过程816可以与条件传输组合成第四写入过程904。在写入过程选择器802在第一写入过程814和第四写入过程904之间进行选择的实施例中,该第四写入过程904替换第二写入过程814和第三写入过程816。在一些实施例中,响应于数据写入请求806针对大于阈值量的数据,即大写入,选择第四写入过程904。对于大数据写入,写入过程是将数据传输到存储系统,条件性地对于串行写入临时写入NVRAM 204,对于并行写入临时写入闪存206,锁定inode,更新inode,提交数据,并解锁inode。在该写入过程中,在锁定inode之前将数据传输到存储系统。在锁定inode的情况下,更新inode并提交数据,以便其他写入过程不能尝试更新inode或提交其数据而干扰正在进行的inode更新和数据提交。后台写入过程902将数据从NVRAM 204刷新到闪存206。
存储系统的各种实施例可以使用第一写入过程812和第四写入过程904,第一写入过程812和第二写入过程814,第一写入过程812和第三写入过程816,第一写入过程812、第二写入过程814和第三写入过程816,第二写入过程814和第三写入过程816,这些中的任何一个与一些其他写入过程或写入过程的其他组合。
图10示出了适用于图8和9的写入过程的具有锁1004的inode 1002。具有锁1004的inode 1002可以实现为存储系统中的元数据,例如作为多个存储单元152和刀片502中的NVRAM 204中的复制元数据以用于冗余。用于文件的inode 1002具有文件信息1006,例如文件名、文件范围、许可、修改时间戳等,以及锁1004,其可以实现为一个或多个位、字节或其他数据量。锁的一个值指示锁被锁定,另一个值指示锁未锁定,并且其他数据可以向锁的所有者(例如,inode的权限168所有者)指示何时取得锁,即锁定。可以应用用于锁定一致性和相干性的各种机制,使得两个权限168不可能同时取得锁。
图11将文件范围后备示出为适合与图8和9的写入过程一起使用的数据结构1102。在一些实施例中,文件范围后备被实现为inode 1002中的元数据的一部分,并且受到inode1002的锁1004的锁定和解锁。文件日志1104,例如示出为文件“abc”的日志,包括在文件范围后备数据结构1102中。针对0到16MB的数据范围显示该示例性文件日志。随着时间的推移,跨越数据范围内的各种范围的数据部分被记录在文件范围后备中。这些数据范围中的一些可能重叠。在写入过程814、816、904中提交数据涉及写入文件范围后备,以记录所提交的数据范围。后台过程通过文件范围后备解析数据覆写。数据覆写的分辨率象征性地示出为新添加的数据范围向下投影到较旧的数据范围的垂直虚线,产生过时的数据,在此较新的数据覆写较旧的数据。覆写的数据受到后台垃圾收集的影响,因此可以合并由过时数据占用的闪存206并进行块擦除以便重复使用。提交数据会将数据从临时写入转换为允许写入或持久写入。在inode锁定之外写入NVRAM 204或闪存206的数据是临时写入的数据或临时数据,直到在锁定inode的情况下通过写入到文件范围后备来提交数据。
图12是根据一些实施例的用于写入持久性的自适应并发的方法的流程图,其可以使用图8-11的写入过程选择器在图1-7的存储装置集群中实施。该方法中的一些或所有操作可以由各种处理器执行,例如存储节点中的处理器或存储单元中的处理器。在操作1202中,例如从客户端将写入请求接收到存储系统中。在操作1204中,基于规则评估写入请求。这些规则指定数据或写入请求的各个方面的写入过程,并且可以保存在数据库中或内置到软件、硬件或固件中。在一些实施例中,规则是动态的并且可以更新,例如使用新阈值或新选择标准、指令或写入过程的其他指示。
在操作1206中,基于评估从多个写入过程中选择写入过程。图9中示出了几个写入过程,作为一组写入过程的候选者考虑。在操作1208中,根据所选择的写入过程将数据写入存储系统。将数据写入NVRAM,后台刷新到闪存或直接写入闪存的效率是选择写入过程可能考虑的因素。inode锁的操作以及在有或没有inode锁定的情况下执行哪些操作是选择写入过程的其他可能考虑的因素。选定的写入过程在存储装置集群的存储节点和存储单元之间自适应地并发地操作,具有数据的写入持久性。
图13是示出存储系统中的分布式文件删除607的系统和操作图。在该示例中,存储系统体现在多个刀片502中,其可以安装在如图1所示的一个或多个机箱138中,作为存储装置集群160。每个刀片502具有存储节点150和一个或多个存储单元152。每个存储节点150具有处理器603和一个或多个权限168,如上面参考图1-7所述的。每个存储单元还具有处理器605、NVRAM 204和闪存206,也如上所述。分布式文件删除607可以体现在其他存储装置集群和存储系统中,如与本文的教导一致地容易设计的。
为了删除文件,客户端609向存储系统发送请求611,例如删除文件的请求。在一些实施例中,请求611由存储节点150之一接收,其确定哪个权限168是文件的inode的所有者,并且将请求610转发到拥有inode的权限168所在的存储节点150。图13中示出了在文件删除607过程下和存储系统中的位置处的各种操作,并且表示为前台613或后台615操作或任务。前台任务613是应该顺序、并行或与客户端609可见的任何操作一致地执行的任务。后台任务615是可以立即执行或稍后执行的任务,但不一定需要在客户端609可见的操作之前执行(例如,对客户端608的确认、回复或其他响应)。在操作(1)中(即,带圆圈的“1”),接收删除文件的请求611,作为在存储节点150中的权限168处发生的前台任务615,即,权限168从客户端609接收请求。更具体地,权限168所在的存储节点150中的处理器603接收请求611并代表该权限168执行操作。
在操作(2)中,权限168将“待办”列表记录,例如,清理任务列表记录,写入到存储单元152中的NVRAM 204中,作为前台任务615。在操作(3)中,权限168在存储单元152中的NVRAM 204中记录文件删除,即文件删除记录,作为前台任务615。在各种实施例中,文件删除的记录,以及要执行的清理任务的记录,例如如上所述作为冗余消息被持久保存在存储装置集群中。在记录文件删除之后,操作(4)开始,拥有文件的inode的权限168向客户端609发送确认616,例如,以确认文件删除,作为前台任务615。在一些实施例中,拥有文件的inode的权限168还负责文件范围(即,记录在元数据中的文件大小,并响应于客户端查询而报告给客户端608)并且记录(例如,在NVRAM 204中的元数据中)文件范围的任何更改。
作为接收请求611、写入“待办”列表和/或记录文件删除的内部响应(即,存储系统内部的响应),启动各种后台任务613。在操作(5)中拥有文件的inode的权限168确定拥有要删除的文件的数据部分的权限168,作为后台任务613。在操作(6)中拥有inode的权限168向这些权限168发送消息,作为后台任务613。这些消息也在持久保存在存储装置集群中,例如如上所述作为冗余消息。在操作(7)中,存储单元152,或者更具体地,该存储单元152的处理器605,将“待办”任务列表和文件删除记录(在操作(2)和(3)中记录在NVRAM 204中)刷新(即,传输)到该存储单元152的闪存206,后台任务613。在一些实施例中,由一个或多个存储节点150的处理器603指示刷新,以各种时间间隔,或者响应于记录文件删除,以便将文件删除记录从NVRAM刷新到闪存并触发后台任务613。
在操作(8)中,拥有文件的数据部分的权限168批量删除文件的各个部分,后台任务613。在一些实施例中,刷新触发数据删除的批次或批次作业的创建和执行。可能有数十、数百或数千或更多的文件或来自其他文件删除或截断的其他文件要删除,这些可以分批次以便删除。在一些实施例中,这可以与垃圾收集组合作为后台任务(参见操作(11))。然后,这些权限168在操作(9)中确认删除,作为后台任务613。例如,执行数据删除的权限168将消息发送到拥有文件的inode的权限168。如上所述,这些消息在存储系统中冗余地持久保存,以便在存储系统出现故障时进行稳健的恢复。在操作(10)中,在接收到确认时并响应于此,确认例如作为来自执行删除的权限168的消息,拥有文件的inode的权限168删除“待办”列表(例如,清理“待办”任务记录),作为后台任务613。操作(11),还执行垃圾收集,作为后台任务613。在一些实施例中,数据的后台删除和垃圾收集由刷新触发,更具体地说是由传输文件删除记录触发。通过执行实际删除数据以及相关通信,作为分布式后台任务613的准备和后续任务(即,分布在存储系统的多个处理器和部件中),存储系统可以比在前台完成这些任务更快地向客户端609确认文件删除请求。
图14是示出存储系统中的分布式文件截断703的系统和操作图。类似于图13,在该示例中,存储系统体现在具有相似特征和内容的多个刀片502中,并且分布式文件截断703可以体现在容易设计的其他存储装置集群和存储系统中。为了截断文件,客户端609向存储系统发送请求705,例如截断文件的请求。在一些实施例中,请求705由存储节点150之一接收。存储节点150,或者更具体地是存储节点150中的处理器603,确定哪个权限168是文件的inode的所有者,并且将请求705转发到拥有inode的权限168所在的存储节点150。在文件截断703过程下,在操作(1)中,权限168接收截断文件的请求705,作为前台任务612。
仍然参考图14,在操作(2)中,拥有inode的权限168确定拥有要在截断中删除的文件的数据部分的权限168,作为前台任务613。在操作(3)中,拥有inode的权限168向那些权限168发送消息,作为前台任务613。在操作(4)中,在各种刀片502和存储节点150中的这些权限168将截断记录写入存储单元152中的各自的NVRAM 204。即,接收用于截断数据部分的消息的每个权限168将截断记录写入NVRAM 204,作为前台任务613。如上所述,这些和其他消息冗余地持久保存在整个存储系统中,以便在故障的情况下进行稳健的恢复。每个截断记录用作清除指定地址范围内的数据的指令。
继续图14,在操作(5)中,在写入截断记录之后,权限168例如通过发送消息来回复拥有inode的权限168,作为前台任务613。在操作(6)中,在从所有响应权限168接收此类消息时并响应于此,拥有inode的权限168将文件截断记录在存储单元152中的NVRAM 204中,作为前台任务613。在记录文件截断之后,拥有inode的权限168向客户端609发送确认707,例如,确认文件截断的消息,作为前台任务613。作为接收截断文件的请求705,发送和/或接收消息,写入截断记录,发送和接收消息以回复写入截断记录,和/或记录文件截断的内部响应,启动各种后台任务615。在操作(8)中,将截断记录和文件截断的记录刷新(即,传输)到各种存储单元152中的闪存206,作为后台任务615,例如由存储单元152或更具体地是它们的处理器605。在一些实施例中,该刷新以规则的时间间隔发生,在其他实施例中,通过记录文件截断来触发刷新。在一些实施例中,刷新截断记录触发数据部分的后台删除和垃圾收集。在操作(9)中拥有要在文件截断中删除的数据部分的权限168进行批量删除,作为后台任务613,类似于在分布式文件删除607中进行的操作。在一些实施例中,如上所述,刷新触发数据删除批次或批次作业的创建和执行。在一些实施例中,批次或批处理组合了对来自分布式文件删除607和分布式文件截断703的数据部分的删除,用于多个文件和更高的系统效率。在后台任务615中作为操作(10)执行垃圾收集,其在一些实施例中与批量数据删除相结合。如上所述,在一些实施例中,由刷新触发垃圾收集。通过执行实际删除数据作为分布式后台任务613,存储系统可以比在前台完成这些任务更快地向客户端609确认文件截断请求。
在各种版本中,权限168将信息推送到其他权限168,但是它们也可以从权限168轮询或提取信息。一旦拥有inode的权限168从其他权限168接收到对拥有inode的权限168发送的数据删除消息的确认,即使存在系统故障,系统也具有完成清理的稳健性。接收权限168在发送确认时承担责任,并将清理文件(即,执行定向的分布式数据删除),并且拥有inode的权限168可以持久地将文件的那些区域标记为已删除。数据部分的实际删除在后台进行,垃圾收集最终执行块擦除以恢复由数据删除释放的存储空间。
图15是用于分布式文件删除和截断的方法的流程图,其可以在图1-7和13-14及其进一步的实施例的存储装置集群中以及其他存储系统中实施。该方法中的一些或所有操作可以由各种处理器执行,例如存储节点中的处理器或存储单元中的处理器。在操作803中,从客户端接收对文件删除或截断的请求。在一些实施例中,由拥有文件的inode的权限接收该请求,例如,由权限所在的存储节点中的处理器。在操作805中,确定哪些权限拥有要删除的数据部分。这可以由拥有inode的权限来完成,例如,由该权限所在的存储节点中的处理器。对于文件删除,此过程或操作可以作为后台任务完成,因为假定要删除文件的所有数据部分。对于文件截断,该过程或操作可以作为前台任务完成,因为在一些实施例中,拥有inode的权限将需要等待来自将要删除数据部分的权限的回复。
在操作807中,记录文件删除或截断。在一些实施例中,由拥有inode的权限完成该操作。在记录文件删除或截断之后,在操作809中向客户端确认该请求。这使得在确认客户端之前可以持久保存所记录的文件删除或截断,并且该持久保存确保即使系统出现故障和恢复,也会完成文件删除或截断,使对客户端的确认可靠。在操作811中,在后台删除数据部分。通过上面的文件删除或截断的记录以及持久保存,即使存在故障和恢复,也可以获取后台任务,这就是它们不需要在前台完成的原因。
除了具有本文描述的存储节点和存储单元的存储装置集群之外,上述方法及其变型可以在其他存储系统中执行。与在前台执行删除数据部分相比,在后台执行删除数据部分允许更快地将确认发送到客户端,从而减少延迟。在变型中,上面讨论的在后台操作的任务可以移到前台,代价是对客户端的确认的延迟更大。上面讨论的在前台操作的任务可以移到后台,代价是降低了可靠性和可恢复性。
应当理解,本文描述的方法可以用数字处理系统执行,例如传统的通用计算机系统。在替代方案中可以使用被设计或编程为仅执行一个功能的专用计算机。图16是示出可以实施本文描述的实施例的示例性计算设备的图示。根据一些实施例,图13的计算设备可以用于执行用于写持久性的自适应并发的功能的实施例。计算设备包括中央处理单元(CPU)1301,其通过总线1305耦合到存储器1303,以及大容量存储装置1307。大容量存储装置1307表示持久数据存储设备,例如软盘驱动器或固定磁盘驱动器,其在一些实施例中可以是本地的或远程的。在一些实施例中,大容量存储装置1307可以实现备份存储装置。存储器1303可以包括只读存储器、随机存取存储器等。在一些实施例中,驻留在计算设备上的应用程序可以存储在诸如存储器1303或大容量存储装置1307之类的计算机可读介质上或者经由计算机可读介质访问。应用还可以是经由网络调制解调器或计算设备的其他网络接口调制访问的调制电子信号的形式。应当理解,在一些实施例中,CPU 1301可以体现在通用处理器、专用处理器或专门编程的逻辑器件中。
显示器1311通过总线1305与CPU 1301、存储器1303和大容量存储装置1307通信。显示器1311被配置为显示与本文描述的系统相关联的任何可视化工具或报告。输入/输出设备1309耦合到总线1305,以便将命令选择中的信息传送到CPU 1301。应当理解,可以通过输入/输出设备1309往来于外部设备传送数据。CPU 1301可以被定义为执行本文描述的功能以实现参考图1-15描述的功能。在一些实施例中,体现该功能的代码可以存储在存储器1303或大容量存储装置1307中,以便由诸如CPU 1301的处理器执行。计算设备上的操作系统可以是iOSTM、MS-WINDOWSTM、OS/2TM、UNIXTM、LINUXTM或其他已知的操作系统。应当理解,本文描述的实施例还可以与利用物理计算资源实现的虚拟化计算系统集成。
应当理解,尽管本文可以使用术语第一、第二等来描述各种步骤或计算,但是这些步骤或计算不应受这些术语的限制。这些术语仅用于区分一个步骤或计算与另一个步骤或计算。例如,在不脱离本公开内容的范围的情况下,第一计算可以称为第二计算,并且,类似地,第二步骤可以被称为第一步骤。如本文所使用的,术语“和/或”和“/”符号包括一个或多个相关所列项目的任何和所有组合。
如本文所用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,术语“包括”、“包含”,当在本文中使用时,指定所述特征、整数、步骤、操作、元件和/或部件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件和/或其组。因此,本文使用的术语仅出于描述特定实施例的目的,而不旨在是限制性的。
还应注意,在一些替代实施方式中,所记载的功能/操作可以不按图中所示的顺序发生。例如,连续示出的两个图实际上可以基本上同时执行,或者有时可以以相反的顺序执行,这取决于所涉及的功能/操作。
考虑到上述实施例,应该理解,实施例可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要物理操纵物理量的操作。通常,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。此外,所执行的操纵通常用术语来表示,例如产生、识别、确定或比较。形成实施例的一部分的本文描述的任何操作都是有用的机器操作。实施例还涉及用于执行这些操作的设备或装置。该装置可以为所需目的而专门构造,或者该装置可以是由存储在计算机中的计算机程序选择性地启动或配置的通用计算机。特别地,各种通用机器可以与根据本文的教导编写的计算机程序一起使用,或者可以更方便地构造更专用的装置以执行所需的操作。
模块、应用、层、代理或其他方法可操作实体可以实现为硬件、固件或处理器执行软件,或其组合。应当理解,在本文中公开了基于软件的实施例的情况下,软件可以体现在诸如控制器的物理机器中。例如,控制器可以包括第一模块和第二模块。控制器可以被配置为执行例如方法、应用程序、层或代理的各种操作。
实施例还可以体现为非暂态计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储设备,其随后可以由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储装置(NAS)、只读存储器、随机存取存储器、CD-ROM、CD-R、CD-RW、磁带以及其他光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦合的计算机系统上,使得以分布式方式存储和执行计算机可读代码。本文描述的实施例可以用各种计算机系统配置来实施,包括手持设备、平板电脑、微处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、大型计算机等。实施例还可以在分布式计算环境中实施,其中任务由通过有线或无线网络链接的远程处理设备执行。
尽管以特定顺序描述了方法操作,但是应当理解,可以在所描述的操作之间执行其他操作,可以调整所描述的操作以使得它们在略微不同的时间发生或者所描述的操作可以分布在允许处理操作以与处理相关联的各种间隔发生的系统中。
在各种实施例中,本文描述的方法和机制的一个或多个部分可以形成云计算环境的一部分。在这样的实施例中,可以根据一个或多个不同模型在互联网上提供资源作为服务。这些模型可以包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。在IaaS中,计算机基础设施作为服务提供。在这种情况下,计算设备通常由服务提供商拥有和操作。在PaaS模型中,开发人员用于开发软件解决方案的软件工具和底层设备可以作为服务提供并由服务提供商托管。SaaS通常包括服务提供商授权软件作为按需服务。服务提供商可以托管软件,或者可以在给定的时间段内将软件部署到客户。上述模型的许多组合是可能的并且是可以预期的。
可以将各种单元、电路或其他部件描述或要求保护为“被配置为”或“可配置为”执行一个或多个任务。在这样的上下文中,短语“被配置为”或“可配置为”用于通过指示单元/电路/部件包括在操作期间执行一个或多个任务的结构(例如,电路)来意指结构。这样,即使当指定的单元/电路/部件当前不可操作(例如,未打开)时,也可以说单元/电路/部件被配置为执行任务,或者可配置为执行任务。与“被配置为”或“可配置为”术语一起使用的单元/电路/部件包括硬件-例如,电路,存储可执行以实施操作的程序指令的存储器等。表述单元/电路/部件“被配置为”执行一个或多个任务,或者“可配置为”执行一个或多个任务,明确意图不要援引35 USC 112,第六段,用于该单元/电路/部件。另外,“被配置为”或“可配置为”可以包括由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵以便以能够执行讨论的任务的方式操作的通用结构(例如,通用电路)。“被配置为”还可以包括调整制造过程(例如,半导体制造设施)以制造适于实现或执行一个或多个任务的器件(例如,集成电路)。“可配置为”明确意图不适用于空白介质、未编程的处理器或未编程的通用计算机,或未编程的可编程逻辑器件、可编程门阵列或其他未编程的器件,除非伴随有赋予未编程的器件被配置为执行所公开的功能的能力的编程介质。
出于解释的目的,已经参考具体实施例描述了前述说明。然而,上面的说明性讨论并非旨在是穷举的或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。选择和描述实施例是为了最好地解释实施例的原理及其实际应用,从而使得本领域的其他技术人员能够最好地利用可能适合于预期的特定用途的实施例和各种修改。因此,当前实施例应被认为是说明性的而非限制性的,并且本发明不限于本文给出的细节,而是可以在所附权利要求的范围和等同变换内进行修改。
Claims (20)
1.一种由存储系统执行的用于所述存储系统中的写入持久性的自适应并发的方法,包括:
根据从多个写入过程中选择的写入过程来将数据写入存储系统,所选择的写入过程是至少部分地基于要被写入所述存储系统中的数据量来选择的,其中,所述多个写入过程中的各个写入过程指示与所述数据的文件信息相关联的inode何时被锁定以及与所述数据的文件信息相关联的inode何时未锁定,以及其中,所述多个写入过程中的一者包括:
在所述inode未锁定的情况下将所述数据传输到所述存储系统中;
将与所述数据的文件信息相关联的inode锁定在存储器中;
在所述inode被锁定时更新所述inode中的所述文件信息以提交所述数据;以及
解锁所述inode。
2.根据权利要求1所述的方法,其中,所述写入过程的选择包括响应于写入请求中的数据小于阈值数据量而选择第一写入过程,所述第一写入过程包括:
在所述inode被锁定时在非易失性随机存取存储器即NVRAM中更新所述inode以将所述数据传输到所述NVRAM中,其中后台写入过程将所述数据从所述NVRAM刷新到闪存。
3.根据权利要求1所述的方法,其中,所述写入过程的选择包括响应于写入请求中的数据大于阈值数据量且所述写入请求用于串行写入而选择第二写入过程,所述第二写入过程包括:
在所述inode被锁定时在NVRAM中更新所述inode以在所述NVRAM中提交所述数据,其中在锁定所述inode之前将所述数据传输到所述NVRAM中,以及后台写入过程用于将所述数据从所述NVRAM刷新到闪存。
4.根据权利要求1所述的方法,其中,所述写入过程的选择包括响应于写入请求中的数据大于阈值数据量且所述写入请求用于多个并行写入而选择第三写入过程,所述第三写入过程包括:
在锁定所述inode之前,绕过NVRAM而将所述数据传输到所述存储系统的闪存,其中在所述inode被锁定的情况下更新所述inode并且提交所述数据。
5.根据权利要求1所述的方法,其中:
将所述数据传输到所述存储系统中包括在锁定所述inode之前作为前台过程将所述数据写入NVRAM,并作为后台过程将所述数据从所述NVRAM刷新到所述存储系统的闪存。
6.根据权利要求1所述的方法,其中:
将所述数据传输到所述存储系统中包括在锁定所述inode之前作为前台过程绕过NVRAM将所述数据写入所述存储系统的闪存。
7.根据权利要求1所述的方法,其中,更新所述文件信息包括写入NVRAM中的数据结构,并且还包括:
作为后台过程,通过所述数据结构解析数据覆写。
8.一种有形非暂态计算机可读介质,其上具有指令,当由处理器执行时,所述指令使处理器执行包括以下的方法:
接收用于将数据写入存储系统的写入请求;
根据从多个写入过程中选择的写入过程来将所述数据写入所述存储系统,所选择的写入过程是至少部分地基于要被写入所述存储系统中的数据量来选择的,其中,所述多个写入过程中的各个写入过程指示与所述数据的文件信息相关联的inode何时被锁定以及与所述数据的文件信息相关联的inode何时未锁定,以及其中,所述多个写入过程中的一者包括:
在所述inode未锁定的情况下将所述数据传输到所述存储系统中;
将与所述数据的文件信息相关联的inode锁定在存储器中;
在所述inode被锁定时更新所述inode中的所述文件信息以提交所述数据;以及
解锁所述inode。
9.根据权利要求8所述的计算机可读介质,其中:
所述写入过程的选择包括响应于所述写入请求中的数据小于阈值数据量而选择第一写入过程;以及所述第一写入过程包括:
在所述inode被锁定时在NVRAM中更新所述inode以将所述数据传输到所述NVRAM中,其中后台写入过程用于将所述数据从所述NVRAM刷新到闪存。
10.根据权利要求8所述的计算机可读介质,其中:所述写入过程的选择包括响应于所述写入请求中的数据大于阈值数据量以及所述写入请求用于串行写入而选择第二写入过程;以及所述第二写入过程包括:
在所述inode被锁定时在NVRAM中更新所述inode以在所述NVRAM中提交所述数据,其中在锁定所述inode之前将所述数据传输到所述NVRAM中,以及后台写入过程用于将所述数据从所述NVRAM刷新到闪存。
11.根据权利要求8所述的计算机可读介质,其中:
所述写入过程的选择包括响应于所述写入请求中的数据大于阈值数据量以及所述写入请求用于多个并行写入而选择第三写入过程;以及所述第三写入过程包括:
在所述inode被锁定时在NVRAM中更新所述inode以在所述NVRAM中提交所述数据。
12.根据权利要求8所述的计算机可读介质,其中:
更新所述文件信息在NVRAM中执行,并包括将所述写入转换为允许的写入;以及
所述方法还包括作为后台过程将所述数据从所述NVRAM刷新到所述存储系统的闪存。
13.根据权利要求8所述的计算机可读介质,其中:
将所述数据传输到所述存储系统中包括绕过NVRAM将所述数据写入所述存储系统的闪存;以及
提交数据在所述NVRAM中执行,并包括将所述写入转换为允许的写入。
14.根据权利要求8所述的计算机可读介质,其中,更新所述文件信息包括写入NVRAM中的文件范围后备数据结构,并且其中,所述方法还包括通过所述文件范围后备数据结构解析数据覆写的后台过程。
15.一种具有用于写入持久性的自适应并发的存储系统,包括:
非易失性随机存取存储器即NVRAM;
闪存;以及
一个或多个处理器,可配置为
根据从多个写入过程中选择的写入过程将数据写入所述存储系统,所选择的写入过程是至少部分地基于要被写入所述存储系统中的数据量来选择的,所述多个写入过程中的各个写入过程指示与所述数据的文件信息相关联的inode何时被锁定以及与所述数据的文件信息相关联的inode何时未锁定,以及所述多个写入过程中的一个包括:
在所述inode未锁定的情况下将所述数据传输到所述存储系统中;
锁定与所述数据的文件信息相关联的inode;
在所述inode被锁定时在所述NVRAM中更新所述inode以提交所述数据;以及
解锁所述inode。
16.根据权利要求15所述的存储系统,其中,所述一个或多个处理器可配置为响应于将少于阈值数据量的数据写入所述存储系统的请求而选择第一写入过程,其中,所述第一写入过程包括:在所述inode被锁定时在所述NVRAM中更新所述inode以将所述数据传输到所述NVRAM中。
17.根据权利要求15所述的存储系统,其中,所述一个或多个处理器可配置为响应于以串行形式将多于阈值数据量的数据写入所述存储系统的请求而选择第二写入过程,其中,所述第二写入过程包括:
在所述inode被锁定时,在所述NVRAM中更新所述inode以在所述NVRAM中提交所述数据,其中在锁定所述inode之前将所述数据传输到所述NVRAM中。
18.根据权利要求15所述的存储系统,其中,所述一个或多个处理器可配置为响应于以并行写入将多于阈值数据量的数据写入所述存储系统的请求而选择第三写入过程,其中,所述第三写入过程包括:
在所述inode被锁定时在所述NVRAM中更新所述inode以在所述NVRAM中提交所述数据,其中在锁定所述inode之前将所述数据传输到闪存。
19.根据权利要求15所述的存储系统,其中,所述一个或多个处理器可配置为作为后台过程将所述数据从所述NVRAM刷新到所述闪存。
20.根据权利要求15所述的存储系统,其中,所述NVRAM包括耦合到随机存取存储器即RAM的能量储备,并且其中,所述RAM可配置为保持用于提交所述数据的数据结构。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662395338P | 2016-09-15 | 2016-09-15 | |
US62/395,338 | 2016-09-15 | ||
US15/379,310 US11422719B2 (en) | 2016-09-15 | 2016-12-14 | Distributed file deletion and truncation |
US15/379,310 | 2016-12-14 | ||
US15/415,760 | 2017-01-25 | ||
US15/415,760 US11301147B2 (en) | 2016-09-15 | 2017-01-25 | Adaptive concurrency for write persistence |
PCT/US2017/051368 WO2018053003A1 (en) | 2016-09-15 | 2017-09-13 | Adaptive concurrency for write persistence |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109716279A CN109716279A (zh) | 2019-05-03 |
CN109716279B true CN109716279B (zh) | 2023-02-17 |
Family
ID=61560097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780056770.XA Active CN109716279B (zh) | 2016-09-15 | 2017-09-13 | 用于写入持久性的自适应并发 |
Country Status (4)
Country | Link |
---|---|
US (6) | US11422719B2 (zh) |
EP (2) | EP3485366A4 (zh) |
CN (1) | CN109716279B (zh) |
WO (2) | WO2018053003A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
CN108885671B (zh) * | 2016-11-16 | 2021-06-22 | 华为技术有限公司 | 一种目录删除方法、装置和存储服务器 |
JP7006406B2 (ja) * | 2018-03-16 | 2022-01-24 | 富士通株式会社 | ストレージ管理装置、ストレージシステム、及びストレージ管理プログラム |
US11301421B2 (en) * | 2018-05-25 | 2022-04-12 | Microsoft Technology Licensing, Llc | Scalable multi-tier storage structures and techniques for accessing entries therein |
CN109032509A (zh) * | 2018-06-29 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种分布式存储系统的数据删除方法及相关装置 |
CN109145163B (zh) * | 2018-08-22 | 2021-08-24 | 深圳前海微众银行股份有限公司 | 区块链数据缩容方法、装置及存储介质 |
CN109614237A (zh) * | 2018-12-10 | 2019-04-12 | 浪潮(北京)电子信息产业有限公司 | 一种资源释放方法、装置、设备及介质 |
US20200250134A1 (en) * | 2019-01-31 | 2020-08-06 | EMC IP Holding Company, LLC | System and method for adaptive aggregated snapshot deletion |
US11204892B2 (en) | 2019-03-21 | 2021-12-21 | Microsoft Technology Licensing, Llc | Techniques for snapshotting scalable multitier storage structures |
CN110597646B (zh) * | 2019-09-16 | 2021-09-07 | 五八有限公司 | 一种数据读写方法、系统、电子设备及存储介质 |
CN111125024B (zh) * | 2019-11-29 | 2022-05-24 | 浪潮电子信息产业股份有限公司 | 一种分布式系统文件的删除方法、装置、设备及存储介质 |
CN112905159A (zh) * | 2019-12-04 | 2021-06-04 | 北京华航无线电测量研究所 | 一种基于cvi的文件夹清空的方法 |
US20210271393A1 (en) * | 2020-03-02 | 2021-09-02 | Silicon Motion, Inc. | Method and apparatus for performing data access management of all flash array server |
CN114442910A (zh) * | 2020-11-06 | 2022-05-06 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、电子设备和计算机程序产品 |
KR20220076969A (ko) * | 2020-12-01 | 2022-06-08 | 삼성전자주식회사 | 무결성 검사를 수행하는 방법 및 이를 이용하는 전자 장치 |
TWI770732B (zh) * | 2020-12-22 | 2022-07-11 | 威聯通科技股份有限公司 | 儲存管理系統及其搜尋排序方法 |
US11520516B1 (en) * | 2021-02-25 | 2022-12-06 | Pure Storage, Inc. | Optimizing performance for synchronous workloads |
CN114237507B (zh) * | 2021-11-02 | 2024-04-12 | 支付宝(杭州)信息技术有限公司 | 管理数据的方法及装置 |
CN114579525B (zh) * | 2022-05-09 | 2022-07-22 | 山东省计算中心(国家超级计算济南中心) | 面向ext4文件系统的数据无痕删除方法及系统 |
CN115113827B (zh) * | 2022-08-24 | 2023-02-03 | 苏州浪潮智能科技有限公司 | 一种数据销毁方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987477A (en) * | 1997-07-11 | 1999-11-16 | International Business Machines Corporation | Parallel file system and method for parallel write sharing |
WO2015188008A1 (en) * | 2014-06-04 | 2015-12-10 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
Family Cites Families (452)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0812632B2 (ja) | 1992-04-30 | 1996-02-07 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 情報化システムおよび情報化方法 |
JP2888401B2 (ja) | 1992-08-03 | 1999-05-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 冗長ディスクドライブアレイに対する同期方法 |
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 |
US5504858A (en) | 1993-06-29 | 1996-04-02 | Digital Equipment Corporation | Method and apparatus for preserving data integrity in a multiple disk raid organized storage system |
US6269453B1 (en) | 1993-06-29 | 2001-07-31 | Compaq Computer Corporation | Method for reorganizing the data on a RAID-4 or RAID-5 array in the absence of one disk |
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 |
JP3516362B2 (ja) * | 1995-03-01 | 2004-04-05 | 富士通株式会社 | 共有データ処理装置及び共有データ処理システム |
US5574882A (en) | 1995-03-03 | 1996-11-12 | International Business Machines Corporation | System and method for identifying inconsistent parity in an array of storage |
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 |
US5883909A (en) | 1996-11-06 | 1999-03-16 | Lsi Logic Corporation | Method and apparatus for reducing data transfers across a memory bus of a disk array controller |
US6000010A (en) | 1997-05-09 | 1999-12-07 | Unisys Corporation | Method of increasing the storage capacity of a level five RAID disk array by adding, in a single step, a new parity block and N--1 new data blocks which respectively reside in a new columns, where N is at least two |
US6453428B1 (en) | 1998-07-17 | 2002-09-17 | Adaptec, Inc. | Dual-drive fault tolerant method and system for assigning data chunks to column parity sets |
US6260156B1 (en) | 1998-12-04 | 2001-07-10 | Datalight, Inc. | Method and system for managing bad areas in flash memory |
US7133511B2 (en) | 1998-12-11 | 2006-11-07 | Securelogix Corporation | Telephony security system |
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 |
GB2359153A (en) | 2000-02-10 | 2001-08-15 | Int Computers Ltd | Device discovery in a shared data storage system |
US6643748B1 (en) | 2000-04-20 | 2003-11-04 | Microsoft Corporation | Programmatic masking of storage units |
US6826570B1 (en) | 2000-07-18 | 2004-11-30 | International Business Machines Corporation | Dynamically switching between different types of concurrency control techniques to provide an adaptive access strategy for a parallel file system |
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 |
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 |
US6523087B2 (en) | 2001-03-06 | 2003-02-18 | Chaparral Network Storage, Inc. | Utilizing parity caching and parity logging while closing the RAID5 write hole |
US6836816B2 (en) | 2001-03-28 | 2004-12-28 | Intel Corporation | Flash memory low-latency cache |
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 |
US7047358B2 (en) | 2001-12-26 | 2006-05-16 | Boon Storage Technologies, Inc. | High-performance log-structured RAID |
US7055058B2 (en) | 2001-12-26 | 2006-05-30 | Boon Storage Technologies, Inc. | Self-healing log-structured RAID |
US7200715B2 (en) * | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
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 |
US7076606B2 (en) | 2002-09-20 | 2006-07-11 | Quantum Corporation | Accelerated RAID with rewind capability |
US7188270B1 (en) | 2002-11-21 | 2007-03-06 | Adaptec, Inc. | Method and system for a disk fault tolerance in a disk array using rotating parity |
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 |
EP1599812A2 (en) | 2003-02-28 | 2005-11-30 | Koninklijke Philips Electronics N.V. | A method of sharing files between user stations in a network |
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 |
WO2005008524A1 (en) | 2003-07-16 | 2005-01-27 | Joltid Ltd. | Distributed database system |
US7398285B2 (en) | 2003-07-30 | 2008-07-08 | International Business Machines Corporation | Apparatus and system for asynchronous replication of a hierarchically-indexed data store |
US7685436B2 (en) | 2003-10-02 | 2010-03-23 | Itt Manufacturing Enterprises, Inc. | System and method for a secure I/O interface |
US7647355B2 (en) | 2003-10-30 | 2010-01-12 | International Business Machines Corporation | Method and apparatus for increasing efficiency of data storage in a file system |
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 |
EP1695220B1 (en) * | 2003-12-19 | 2013-02-20 | Network Appliance, Inc. | System and method for supporting asynchronous data replication with very short update intervals |
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 |
US8700585B2 (en) * | 2004-02-06 | 2014-04-15 | Vmware, Inc. | Optimistic locking method and system for committing transactions on a file system |
US7334156B2 (en) | 2004-02-13 | 2008-02-19 | Tandberg Data Corp. | Method and apparatus for RAID conversion |
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 |
US8019937B2 (en) * | 2004-07-21 | 2011-09-13 | Infortrend Technology, Inc. | Applying storage device commit-cached-data-to-media functionality to improve data security in systems that allow storage devices to cache writes |
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 |
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 |
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 |
US8316438B1 (en) * | 2004-08-10 | 2012-11-20 | Pure Networks Llc | Network management providing network health information and lockdown security |
US7925729B2 (en) * | 2004-12-07 | 2011-04-12 | Cisco Technology, Inc. | Network management |
CA2590361C (en) | 2004-11-05 | 2012-01-03 | Data Robotics Incorporated | Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method |
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 |
US8478849B2 (en) * | 2004-12-07 | 2013-07-02 | Pure Networks LLC. | Network administration tool |
US7730257B2 (en) | 2004-12-16 | 2010-06-01 | Broadcom Corporation | Method and computer program product to increase I/O write performance in a redundant array |
US7437653B2 (en) | 2004-12-22 | 2008-10-14 | Sandisk Corporation | Erased sector detection mechanisms |
US8180855B2 (en) | 2005-01-27 | 2012-05-15 | Netapp, Inc. | Coordinated shared storage architecture |
US7962689B1 (en) * | 2005-04-29 | 2011-06-14 | Netapp, Inc. | System and method for performing transactional processing in a striped volume set |
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 |
US7685360B1 (en) * | 2005-05-05 | 2010-03-23 | Seagate Technology Llc | Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device |
US8660131B2 (en) | 2005-06-09 | 2014-02-25 | Nxp B.V. | Storage unit for communication system node, method for data storage and communication system node |
US7600083B2 (en) * | 2005-06-10 | 2009-10-06 | Network Appliance, Inc. | Method and system for automatic write request suspension |
US8812501B2 (en) | 2005-08-08 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | Method or apparatus for selecting a cluster in a group of nodes |
US7318138B1 (en) | 2005-08-30 | 2008-01-08 | Symantec Operating Corporation | Preventing undesired trespass in storage arrays |
US7647335B1 (en) * | 2005-08-30 | 2010-01-12 | ATA SpA - Advanced Technology Assessment | Computing system and methods for distributed generation and storage of complex relational data |
US7856583B1 (en) | 2005-09-16 | 2010-12-21 | Network Equipment Technologies, Inc. | Techniques for enhanced reliability of data transfer with dynamic scaling |
US7386666B1 (en) | 2005-09-30 | 2008-06-10 | Emc Corporation | Global sparing of storage capacity across multiple storage arrays |
US20070079068A1 (en) | 2005-09-30 | 2007-04-05 | Intel Corporation | Storing data with different specified levels of data redundancy |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US7558859B2 (en) | 2005-10-17 | 2009-07-07 | Microsoft Corporation | Peer-to-peer auction based data distribution |
US8010485B1 (en) | 2005-10-20 | 2011-08-30 | American Megatrends, Inc. | Background movement of data between nodes 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 |
US8010829B1 (en) | 2005-10-20 | 2011-08-30 | American Megatrends, Inc. | Distributed hot-spare storage 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 |
US7634618B2 (en) | 2006-01-03 | 2009-12-15 | Emc Corporation | Methods, systems, and computer program products for optimized copying of logical units (LUNs) in a redundant array of inexpensive disks (RAID) environment using buffers that are smaller than LUN delta map chunks |
US7634617B2 (en) | 2006-01-03 | 2009-12-15 | Emc Corporation | Methods, systems, and computer program products for optimized copying of logical units (LUNs) in a redundant array of inexpensive disks (RAID) environment using buffers that are larger than LUN delta map chunks |
US8020047B2 (en) | 2006-01-17 | 2011-09-13 | Xyratex Technology Limited | Method and apparatus for managing storage of data |
US7783955B2 (en) | 2006-01-18 | 2010-08-24 | Sandisk Il Ltd. | Method for implementing error-correction codes in flash memory |
US20070185936A1 (en) | 2006-02-07 | 2007-08-09 | Derk David G | Managing deletions in backup sets |
US9390019B2 (en) | 2006-02-28 | 2016-07-12 | Violin Memory Inc. | Method and apparatus for providing high-performance and highly-scalable storage acceleration |
US20070214314A1 (en) | 2006-03-07 | 2007-09-13 | Reuter James M | Methods and systems for hierarchical management of distributed data |
US20070214194A1 (en) | 2006-03-07 | 2007-09-13 | James Reuter | Consistency methods and systems |
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 |
EP2357552A1 (en) | 2006-05-24 | 2011-08-17 | Compellent Technologies | System and method for RAID management, reallocation and restriping |
US8577042B2 (en) | 2006-06-21 | 2013-11-05 | Rf Code, Inc. | Location-based security, privacy, access control and monitoring system |
US8583861B1 (en) | 2006-06-29 | 2013-11-12 | Emc Corporation | Presentation of management functionality of virtual arrays |
US8452928B1 (en) | 2006-06-29 | 2013-05-28 | Emc Corporation | Virtual array non-disruptive migration of extended storage functionality |
US7484056B2 (en) | 2006-06-29 | 2009-01-27 | Emc Corporation | Partitioning of a storage array into N-storage arrays using full array non-disruptive data migration |
US7757059B1 (en) | 2006-06-29 | 2010-07-13 | Emc Corporation | Virtual array non-disruptive management data migration |
US7484057B1 (en) | 2006-06-29 | 2009-01-27 | Emc Corporation | Consolidating N-storage arrays into one storage array using full array non-disruptive data migration |
US7484059B1 (en) | 2006-06-29 | 2009-01-27 | Emc Corporation | Full array non-disruptive migration of extended storage functionality |
US8533408B1 (en) | 2006-06-29 | 2013-09-10 | Emc Corporation | Consolidating N-storage arrays into one storage array using virtual array non-disruptive data migration |
US8539177B1 (en) | 2006-06-29 | 2013-09-17 | Emc Corporation | Partitioning of a storage array into N-storage arrays using virtual array non-disruptive data migration |
US8539253B2 (en) * | 2006-07-18 | 2013-09-17 | Netapp, Inc. | System and method for securing information by obscuring contents of a persistent image |
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 |
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 |
US7831768B2 (en) | 2006-11-03 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for writing data to a disk array |
US7613947B1 (en) | 2006-11-30 | 2009-11-03 | Netapp, Inc. | System and method for storage takeover |
US9153337B2 (en) | 2006-12-11 | 2015-10-06 | Marvell World Trade Ltd. | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US9124650B2 (en) * | 2006-12-13 | 2015-09-01 | Quickplay Media Inc. | Digital rights management in a mobile environment |
US20080155191A1 (en) | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
US7908448B1 (en) | 2007-01-30 | 2011-03-15 | American Megatrends, Inc. | Maintaining data consistency in mirrored cluster storage systems with write-back cache |
US8046548B1 (en) | 2007-01-30 | 2011-10-25 | American Megatrends, Inc. | Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging |
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 |
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 |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
US7752489B2 (en) | 2007-05-10 | 2010-07-06 | International Business Machines Corporation | Data integrity validation in storage systems |
US8751859B2 (en) | 2007-05-10 | 2014-06-10 | International Business Machines Corporation | Monitoring lost data in a storage system |
US8819311B2 (en) | 2007-05-23 | 2014-08-26 | Rpx Corporation | Universal user input/output application layers |
WO2008152708A1 (ja) | 2007-06-13 | 2008-12-18 | Fujitsu Limited | 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 |
US9063895B1 (en) | 2007-06-29 | 2015-06-23 | Emc Corporation | System and method of non-disruptive data migration between heterogeneous storage arrays |
US9063896B1 (en) | 2007-06-29 | 2015-06-23 | Emc Corporation | System and method of non-disruptive data migration between virtual arrays of heterogeneous storage arrays |
US9098211B1 (en) | 2007-06-29 | 2015-08-04 | Emc Corporation | System and method of non-disruptive data migration between a full storage array and one or more virtual arrays |
US7921268B2 (en) | 2007-07-12 | 2011-04-05 | Jakob Holger | Method and system for function-specific time-configurable replication of data |
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 |
US7930499B2 (en) | 2007-08-15 | 2011-04-19 | Digi-Data Corporation | Method to accelerate block level snapshots in archiving storage systems |
US7882068B2 (en) * | 2007-08-21 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for adaptive copy on write |
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 |
US8639863B1 (en) | 2007-08-30 | 2014-01-28 | Virident Systems, Inc. | Memory apparatus for replaceable non-volatile memory |
US8650343B1 (en) | 2007-08-30 | 2014-02-11 | Virident Systems, Inc. | Methods for upgrading, diagnosing, and maintaining replaceable non-volatile memory |
US8689042B1 (en) | 2007-08-30 | 2014-04-01 | Virident Systems, Inc. | Methods for data redundancy across replaceable non-volatile memory storage devices |
US8706932B1 (en) | 2007-08-30 | 2014-04-22 | Virident Systems, Inc. | Replaceable non-volatile memory apparatus with a plurality of pluggable electrical connectors |
US8225006B1 (en) | 2007-08-30 | 2012-07-17 | Virident Systems, Inc. | Methods for data redundancy across three or more storage devices |
US7873878B2 (en) | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US8176405B2 (en) | 2007-09-24 | 2012-05-08 | International Business Machines Corporation | Data integrity validation in a computing environment |
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 |
WO2009054827A1 (en) | 2007-10-25 | 2009-04-30 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
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 |
US7890504B2 (en) | 2007-12-19 | 2011-02-15 | Netapp, Inc. | Using the LUN type for storage allocation |
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 |
JP4729062B2 (ja) | 2008-03-07 | 2011-07-20 | 株式会社東芝 | メモリシステム |
US8346778B2 (en) | 2008-05-21 | 2013-01-01 | Oracle International Corporation | Organizing portions of a cascading index on disk |
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 |
EP2304568B1 (en) | 2008-06-06 | 2013-08-14 | Pivot3 | Method and system for distributed raid implementation |
US9123422B2 (en) | 2012-07-02 | 2015-09-01 | Super Talent Technology, Corp. | Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells |
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 |
US8117521B2 (en) | 2008-08-26 | 2012-02-14 | Spansion Llc | Implementation of recycling unused ECC parity bits during flash memory programming |
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 |
US8325691B2 (en) * | 2008-09-26 | 2012-12-04 | Optical Cable Corporation | Method and apparatus for providing wireless communications within a building |
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 |
WO2010049928A1 (en) | 2008-10-27 | 2010-05-06 | Kaminario Tehnologies Ltd. | System and methods for raid writing and asynchronous parity computation |
US8086911B1 (en) | 2008-10-29 | 2011-12-27 | Netapp, Inc. | Method and apparatus for distributed reconstruct in a raid system |
JP5217967B2 (ja) | 2008-11-28 | 2013-06-19 | 富士通株式会社 | 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム |
WO2010064328A1 (en) | 2008-12-03 | 2010-06-10 | Hitachi, Ltd. | Information processing system and method of acquiring backup in an information processing system |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
US8473815B2 (en) | 2008-12-22 | 2013-06-25 | Industrial Technology Research Institute | Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data |
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 |
US8548669B2 (en) | 2009-01-08 | 2013-10-01 | 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 |
ES2528245T3 (es) | 2009-02-03 | 2015-02-05 | Bittorrent, Inc. | Almacenamiento distribuido de datos recuperables |
US8145838B1 (en) | 2009-03-10 | 2012-03-27 | Netapp, Inc. | Processing and distributing write logs of nodes of a cluster storage system |
US8209469B2 (en) | 2009-03-10 | 2012-06-26 | Microsoft Corporation | Offline device-side logical unit number controller |
US8175012B2 (en) | 2009-03-26 | 2012-05-08 | Mediatek Inc. | Decoding/encoding method for booting from a NAND flash and system thereof |
US8364920B1 (en) | 2009-04-06 | 2013-01-29 | Network Appliance, Inc. | System and method for transferring and backing up luns and lun clones on primary and secondary servers |
US10395054B2 (en) | 2011-06-06 | 2019-08-27 | Pure Storage, Inc. | Updating distributed storage network software |
US8261016B1 (en) | 2009-04-24 | 2012-09-04 | Netapp, Inc. | Method and system for balancing reconstruction load in a storage array using a scalable parity declustered layout |
US8510496B1 (en) * | 2009-04-27 | 2013-08-13 | Netapp, Inc. | Scheduling access requests for a multi-bank low-latency random read memory device |
US8117388B2 (en) | 2009-04-30 | 2012-02-14 | Netapp, Inc. | Data distribution through capacity leveling in a striped file system |
US8074038B2 (en) | 2009-05-12 | 2011-12-06 | Microsoft Corporation | Converting luns into files or files into luns in real time |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
WO2010138130A1 (en) | 2009-05-29 | 2010-12-02 | Hewlett-Packard Development Company, L.P. | System and method for allocating 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 |
CN102782606B (zh) | 2009-06-19 | 2015-11-25 | 惠普开发有限公司 | 外壳功率控制器 |
KR101626528B1 (ko) | 2009-06-19 | 2016-06-01 | 삼성전자주식회사 | 플래시 메모리 장치 및 이의 데이터 독출 방법 |
JP4874368B2 (ja) * | 2009-06-22 | 2012-02-15 | 株式会社日立製作所 | フラッシュメモリを用いたストレージシステムの管理方法及び計算機 |
WO2011007599A1 (ja) | 2009-07-17 | 2011-01-20 | 株式会社 東芝 | メモリ管理装置 |
US8458287B2 (en) | 2009-07-31 | 2013-06-04 | Microsoft Corporation | Erasure coded storage aggregation in data centers |
US9250687B1 (en) | 2009-08-10 | 2016-02-02 | Ajoy Aswadhati | High performance flexible storage system architecture |
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 |
JP5342014B2 (ja) | 2009-08-31 | 2013-11-13 | 株式会社日立製作所 | 複数のフラッシュパッケージを有するストレージシステム |
EP2476039B1 (en) | 2009-09-09 | 2016-10-26 | SanDisk Technologies LLC | Apparatus, system, and method for power reduction management in a storage device |
US8671072B1 (en) | 2009-09-14 | 2014-03-11 | Netapp, Inc. | System and method for hijacking inodes based on replication operations received in an arbitrary order |
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 |
US8806143B1 (en) * | 2009-10-09 | 2014-08-12 | Netapp, Inc. | Queuing received write blocks for reducing file fragmentation |
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 |
US8549224B1 (en) | 2009-12-16 | 2013-10-01 | Emc Corporation | Migration analyzer for hardware-based storage tiering |
US8140821B1 (en) | 2009-12-18 | 2012-03-20 | Emc Corporation | Efficient read/write algorithms and associated mapping for block-level data reduction processes |
US8341118B2 (en) | 2010-02-09 | 2012-12-25 | Google Inc. | Method and system for dynamically replicating data within a distributed storage system |
US8862617B2 (en) | 2010-02-09 | 2014-10-14 | Google Inc. | System and method for replicating objects in a distributed storage system |
US8756387B2 (en) | 2010-03-05 | 2014-06-17 | International Business Machines Corporation | Method and apparatus for optimizing the performance of a storage system |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
US8627138B1 (en) | 2010-03-26 | 2014-01-07 | Emc Corporation | Data protection system and method |
US8793447B2 (en) | 2010-03-30 | 2014-07-29 | Netapp, Inc. | Restoration of a parent LUN through modification of a read-write clone LUN as the parent LUN |
US8239589B1 (en) * | 2010-03-31 | 2012-08-07 | Amazon Technologies, Inc. | Balancing latency and throughput for shared resources |
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 |
US9852150B2 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Avoiding client timeouts in a distributed filesystem |
US8719621B1 (en) | 2010-05-05 | 2014-05-06 | Marvell International Ltd. | Solid-state disk cache assisted redundant array of independent disks |
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 |
US8719675B1 (en) | 2010-06-16 | 2014-05-06 | Google Inc. | Orthogonal coding for data storage, access, and maintenance |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US9009384B2 (en) * | 2010-08-17 | 2015-04-14 | Microsoft Technology Licensing, Llc | Virtual machine memory management in systems with asymmetric memory |
US8352691B2 (en) * | 2010-08-17 | 2013-01-08 | International Business Machines Corporation | Facilitation of simultaneous storage initialization and data destage |
US9818478B2 (en) | 2012-12-07 | 2017-11-14 | Attopsemi Technology Co., Ltd | Programmable resistive device and memory using diode as selector |
US8904226B2 (en) | 2010-08-26 | 2014-12-02 | Cleversafe, Inc. | Migrating stored copies of a file to stored encoded data slices |
US8473778B2 (en) | 2010-09-08 | 2013-06-25 | Microsoft Corporation | Erasure coding immutable data |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US8600944B2 (en) | 2010-09-24 | 2013-12-03 | Hitachi Data Systems Corporation | System and method for managing integrity in a distributed database |
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 |
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
JP5602572B2 (ja) | 2010-10-06 | 2014-10-08 | 富士通株式会社 | ストレージ装置、データ複写方法およびストレージシステム |
TWI579692B (zh) | 2010-10-29 | 2017-04-21 | 三星電子股份有限公司 | 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法 |
US8949502B2 (en) | 2010-11-18 | 2015-02-03 | Nimble Storage, Inc. | PCIe NVRAM card based on NVDIMM |
KR101694984B1 (ko) | 2010-12-08 | 2017-01-11 | 한국전자통신연구원 | 비대칭 클러스터링 파일시스템에서의 패리티 산출 방법 |
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 |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US8627136B2 (en) | 2010-12-27 | 2014-01-07 | Netapp Inc. | Non-disruptive failover of RDMA connection |
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 |
US9021215B2 (en) | 2011-03-21 | 2015-04-28 | Apple Inc. | Storage system exporting internal storage rules |
US9213709B2 (en) | 2012-08-08 | 2015-12-15 | Amazon Technologies, Inc. | Archival data identification |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8880793B2 (en) | 2011-04-08 | 2014-11-04 | Symantec Corporation | Storage management systems and methods |
US9159422B1 (en) | 2011-04-12 | 2015-10-13 | Sk Hynix Memory Solutions Inc. | Cross page management to avoid NAND physical page size limitation |
EP2702502A4 (en) | 2011-04-29 | 2015-06-03 | Tata Consultancy Services Ltd | ARCHIVING AND RECOVERY SYSTEM |
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 |
US8769304B2 (en) | 2011-06-16 | 2014-07-01 | OneID Inc. | Method and system for fully encrypted repository |
US8805786B1 (en) | 2011-06-24 | 2014-08-12 | Emc Corporation | Replicating selected snapshots from one storage array to another, with minimal data transmission |
EP2726092B1 (en) * | 2011-06-28 | 2019-06-19 | Inhibrx, LP | Serpin fusion polypeptides and methods of use thereof |
US8930714B2 (en) | 2011-07-19 | 2015-01-06 | Elwha Llc | Encrypted memory |
US9575903B2 (en) | 2011-08-04 | 2017-02-21 | Elwha Llc | Security perimeter |
US8880977B2 (en) | 2011-07-22 | 2014-11-04 | Sandisk Technologies Inc. | Systems and methods of storing data |
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 |
US9710535B2 (en) | 2011-08-12 | 2017-07-18 | Nexenta Systems, Inc. | Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories |
US9323659B2 (en) | 2011-08-12 | 2016-04-26 | Sandisk Enterprise Ip Llc | Cache management including solid state device virtualization |
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 |
US9910904B2 (en) | 2011-08-30 | 2018-03-06 | International Business Machines Corporation | Replication of data objects from a source server to a target server |
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 |
US9235502B2 (en) * | 2011-09-16 | 2016-01-12 | Apple Inc. | Systems and methods for configuring non-volatile memory |
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 |
US9544294B2 (en) | 2011-09-29 | 2017-01-10 | Oracle International Corporation | Pluggable authorization policies |
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 | 富士通株式会社 | ディスクアレイ装置、制御装置、およびプログラム |
US8639669B1 (en) | 2011-12-22 | 2014-01-28 | Emc Corporation | Method and apparatus for determining optimal chunk sizes of a deduplicated storage system |
US8712963B1 (en) | 2011-12-22 | 2014-04-29 | Emc Corporation | Method and apparatus for content-aware resizing of data chunks for replication |
US8788913B1 (en) | 2011-12-30 | 2014-07-22 | Emc Corporation | Selection of erasure code parameters for no data repair |
US9185499B2 (en) * | 2012-07-06 | 2015-11-10 | Gn Resound A/S | Binaural hearing aid with frequency unmasking |
CN104115109A (zh) | 2012-02-08 | 2014-10-22 | 株式会社日立制作所 | 具有多个非易失性半导体存储单元的存储装置及其用于在具有较高残留寿命长度的存储单元中放置热数据而在具有较低残留寿命长度的存储单元中放置冷数据的控制方法 |
US8819383B1 (en) | 2012-02-17 | 2014-08-26 | Netapp, Inc. | Non-disruptive realignment of virtual data |
US9619430B2 (en) | 2012-02-24 | 2017-04-11 | Hewlett Packard Enterprise Development Lp | Active non-volatile memory post-processing |
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 |
WO2013147785A1 (en) | 2012-03-29 | 2013-10-03 | Hitachi Data Systems Corporation | Highly available search index with storage node addition and removal |
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 |
US9335942B2 (en) | 2012-04-18 | 2016-05-10 | Avago Technologies General IP (Technologies) Pte. Ltd. | Methods and structure for LUN masking in a switching device |
US8996828B2 (en) | 2012-04-20 | 2015-03-31 | International Business Machines Corporation | Systems and methods for migrating data |
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 |
CN103389920B (zh) | 2012-05-09 | 2016-06-15 | 深圳市腾讯计算机系统有限公司 | 一种磁盘坏块的自检测方法和装置 |
US9183136B2 (en) | 2012-05-16 | 2015-11-10 | Hitachi, Ltd. | Storage control apparatus and storage control method |
US9047214B1 (en) | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US8972478B1 (en) | 2012-05-23 | 2015-03-03 | Netapp, Inc. | Using append only log format in data storage cluster with distributed zones for determining parity of reliability groups |
US9430542B2 (en) | 2012-06-05 | 2016-08-30 | International Business Machines Corporation | User initiated replication in a synchronized object replication system |
US8762353B2 (en) | 2012-06-13 | 2014-06-24 | Caringo, Inc. | Elimination of duplicate objects in storage clusters |
US8799746B2 (en) | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
US8930633B2 (en) | 2012-06-14 | 2015-01-06 | International Business Machines Corporation | Reducing read latency using a pool of processing cores |
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 |
US9229656B1 (en) | 2012-06-28 | 2016-01-05 | Emc Corporation | Managing settings and queries in host-based data migration |
US9189650B2 (en) | 2012-07-31 | 2015-11-17 | J.D. Power And Associates | Privacy preserving method for summarizing user data |
CN103577274B (zh) | 2012-07-31 | 2016-07-06 | 国际商业机器公司 | 管理存储器阵列的方法和装置 |
KR102003930B1 (ko) | 2012-07-31 | 2019-07-25 | 삼성전자주식회사 | 불휘발성 메모리 장치의 데이터 라이팅 제어방법 및 웨어레벨링 제어 기능을 가지는 메모리 콘트롤러 |
US9298760B1 (en) | 2012-08-03 | 2016-03-29 | Google Inc. | Method for shard assignment in a large-scale data processing job |
KR102028128B1 (ko) | 2012-08-07 | 2019-10-02 | 삼성전자주식회사 | 불휘발성 랜덤 액세스 메모리 및 낸드 플래시 메모리를 포함하는 메모리 시스템의 동작 방법 |
US9549037B2 (en) * | 2012-08-07 | 2017-01-17 | Dell Products L.P. | System and method for maintaining solvency within a cache |
US8904231B2 (en) | 2012-08-08 | 2014-12-02 | Netapp, Inc. | Synchronous local and cross-site failover in clustered storage systems |
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 |
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 |
KR20140040998A (ko) * | 2012-09-27 | 2014-04-04 | 삼성전자주식회사 | 로그기반 데이터 저장 시스템의 관리방법 |
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 |
KR101544356B1 (ko) | 2012-10-31 | 2015-08-13 | 삼성에스디에스 주식회사 | 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드 |
US9430250B2 (en) | 2012-12-03 | 2016-08-30 | Kingston Digital, Inc. | Bootability with multiple logical unit numbers |
KR20140072637A (ko) | 2012-12-05 | 2014-06-13 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법 |
US9355022B2 (en) | 2012-12-07 | 2016-05-31 | Sandisk Technologies Inc. | Systems and methods for intelligent flash management |
US9002805B1 (en) * | 2012-12-14 | 2015-04-07 | Amazon Technologies, Inc. | Conditional storage object deletion |
US9110898B1 (en) | 2012-12-20 | 2015-08-18 | Emc Corporation | Method and apparatus for automatically detecting replication performance degradation |
US20140181402A1 (en) | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Selective cache memory write-back and replacement policies |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9286002B1 (en) | 2012-12-28 | 2016-03-15 | Virident Systems Inc. | Dynamic restriping in nonvolatile memory systems |
WO2014101117A1 (zh) | 2012-12-28 | 2014-07-03 | 华为技术有限公司 | 数据存储方法和存储设备 |
US8959388B1 (en) | 2012-12-28 | 2015-02-17 | Emc Corporation | Managing TLU recovery using pre-allocated LUN slices |
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 |
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 |
US9128944B2 (en) * | 2013-02-13 | 2015-09-08 | Edgecast Networks, Inc. | File system enabling fast purges and file access |
US20140237164A1 (en) | 2013-02-19 | 2014-08-21 | Kabushiki Kaisha Toshiba | Hybrid drive that implements a deferred trim list |
US9124300B2 (en) | 2013-02-28 | 2015-09-01 | Sandisk Technologies Inc. | Error correction coding in non-volatile memory |
US9110964B1 (en) | 2013-03-05 | 2015-08-18 | Emc Corporation | Metadata optimization for network replication using differential encoding |
US9235475B1 (en) | 2013-03-05 | 2016-01-12 | Emc Corporation | Metadata optimization for network replication using representative of metadata batch |
US8824261B1 (en) | 2013-03-07 | 2014-09-02 | Seagate Technology Llc | Peer to peer vibration mitigation |
US9201733B2 (en) | 2013-03-13 | 2015-12-01 | Futurewei Technologies, Inc. | Systems and methods for data repair |
US9021188B1 (en) | 2013-03-15 | 2015-04-28 | Virident Systems Inc. | Small block write operations in non-volatile memory systems |
US10073626B2 (en) | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
US9025393B2 (en) | 2013-03-25 | 2015-05-05 | Seagate Technology Llc | Method of optimizing solid state drive soft retry voltages |
KR101539878B1 (ko) | 2013-05-02 | 2015-07-27 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 컴퓨터 시스템, pci 익스프레스 엔드포인트 디바이스에 액세스하는 방법 및 장치 |
US9152214B2 (en) * | 2013-05-16 | 2015-10-06 | Qualcomm Innovation Center, Inc. | Dynamic load and priority based clock scaling for non-volatile storage devices |
US9158472B2 (en) | 2013-06-25 | 2015-10-13 | Google Inc. | Hierarchical chunking of objects in a distributed storage system |
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 |
US9891860B1 (en) | 2013-06-28 | 2018-02-13 | EMC IP Holding Company, LLC. | Managing copying of data in storage systems |
CN105593804B (zh) * | 2013-07-02 | 2019-02-22 | 日立数据系统工程英国有限公司 | 用于文件系统虚拟化的方法和设备、用于文件系统虚拟化的数据存储系统、以及用于数据存储系统的文件服务器 |
US20150032720A1 (en) | 2013-07-23 | 2015-01-29 | Yahoo! Inc. | Optimizing database queries |
US9268806B1 (en) | 2013-07-26 | 2016-02-23 | Google Inc. | Efficient reference counting in content addressable storage |
US10146787B2 (en) | 2013-07-26 | 2018-12-04 | Quest Software Inc. | Transferring differences between chunks during replication |
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 |
US20150039849A1 (en) | 2013-08-02 | 2015-02-05 | Formation Data Systems, Inc. | Multi-Layer Data Storage Virtualization Using a Consistent Data Reference Model |
CN104423889B (zh) | 2013-08-26 | 2017-06-16 | 国际商业机器公司 | 一种多路径管理方法和系统 |
CN105579980A (zh) | 2013-09-27 | 2016-05-11 | 仁荷大学校产学协力团 | 基于ssd的raid系统中的校验数据的去重 |
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 |
US9952809B2 (en) | 2013-11-01 | 2018-04-24 | Dell Products, L.P. | Self destroying LUN |
US9553822B2 (en) | 2013-11-12 | 2017-01-24 | Microsoft Technology Licensing, Llc | Constructing virtual motherboards and virtual storage devices |
US9740700B1 (en) | 2013-11-18 | 2017-08-22 | EMC IP Holding Company LLC | Snapshot map |
US9250999B1 (en) | 2013-11-19 | 2016-02-02 | Google Inc. | Non-volatile random access memory in computer primary memory |
KR20150061258A (ko) | 2013-11-27 | 2015-06-04 | 한국전자통신연구원 | 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치 |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US8843700B1 (en) | 2013-11-29 | 2014-09-23 | NXGN Data, Inc. | Power efficient method for cold storage data retention management |
US9798486B1 (en) | 2013-12-18 | 2017-10-24 | EMC IP Holding Company LLC | Method and system for file system based replication of a deduplicated storage system |
US9594652B1 (en) | 2013-12-19 | 2017-03-14 | Veritas Technologies | Systems and methods for decreasing RAID rebuilding time |
US9417960B2 (en) | 2013-12-20 | 2016-08-16 | Seagate Technology Llc | Preventing programming errors from occurring when programming flash memory cells |
US9667496B2 (en) | 2013-12-24 | 2017-05-30 | International Business Machines Corporation | Configuration updates across peer storage systems |
US9396202B1 (en) | 2013-12-27 | 2016-07-19 | Google Inc. | Weakly synchronized garbage collection and compaction for aggregated, replicated object stores |
US9563517B1 (en) | 2013-12-30 | 2017-02-07 | EMC IP Holding Company LLC | Cloud snapshots |
US10031703B1 (en) | 2013-12-31 | 2018-07-24 | Emc Corporation | Extent-based tiering for virtual storage using full LUNs |
CN104765693B (zh) | 2014-01-06 | 2018-03-27 | 国际商业机器公司 | 一种用于存储数据的方法、装置和系统 |
US9251064B2 (en) | 2014-01-08 | 2016-02-02 | Netapp, Inc. | NVRAM caching and logging in a storage system |
US9454434B2 (en) | 2014-01-17 | 2016-09-27 | Netapp, Inc. | File system driven raid rebuild technique |
US9979783B2 (en) * | 2014-01-21 | 2018-05-22 | Red Hat, Inc. | Distributed coordinated snapshots |
US9804925B1 (en) | 2014-02-25 | 2017-10-31 | Google Inc. | Data reconstruction in distributed storage systems |
US10372685B2 (en) * | 2014-03-31 | 2019-08-06 | Amazon Technologies, Inc. | Scalable file storage service |
US9495478B2 (en) * | 2014-03-31 | 2016-11-15 | Amazon Technologies, Inc. | Namespace management in distributed storage systems |
US11093468B1 (en) | 2014-03-31 | 2021-08-17 | EMC IP Holding Company LLC | Advanced metadata management |
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 |
US9747298B2 (en) * | 2014-05-02 | 2017-08-29 | Vmware, Inc. | Inline garbage collection for log-structured file systems |
US9378067B1 (en) * | 2014-05-08 | 2016-06-28 | Springpath, Inc. | Automated load balancing across the distributed system of hybrid storage and compute nodes |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
JP5901698B2 (ja) | 2014-06-17 | 2016-04-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリ管理方法 |
US9811546B1 (en) | 2014-06-30 | 2017-11-07 | EMC IP Holding Company LLC | Storing data and metadata in respective virtual shards on sharded storage systems |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
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 | キヤノン株式会社 | 画像読取装置、画像読取装置を含むシステム、画像読取装置により実行される方法、およびプログラム |
EP2998881B1 (en) | 2014-09-18 | 2018-07-25 | Amplidata NV | A computer implemented method for dynamic sharding |
US9904688B2 (en) * | 2014-09-30 | 2018-02-27 | International Business Machines Corporation | Buffering and replicating data written to a distributed storage system |
US9483187B2 (en) * | 2014-09-30 | 2016-11-01 | Nimble Storage, Inc. | Quality of service implementation in a networked storage system with hierarchical schedulers |
US10657105B2 (en) * | 2014-10-30 | 2020-05-19 | Hitachi, Ltd. | Method and computer system for sharing objects |
US9569515B2 (en) | 2014-11-13 | 2017-02-14 | Dropbox, Inc. | Facilitating distributed deletes in a replicated storage system |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9489141B2 (en) * | 2014-12-18 | 2016-11-08 | Nimble Storage, Inc. | Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device |
US10185730B2 (en) | 2014-12-31 | 2019-01-22 | Nexenta Systems, Inc. | Methods and systems for key-value-tuple-encoded storage |
US9946604B1 (en) | 2015-02-04 | 2018-04-17 | Tintri Inc. | Optimized remote cloning |
US9600193B2 (en) | 2015-02-04 | 2017-03-21 | Delphix Corporation | Replicating snapshots from a source storage system to a target storage system |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US9529542B2 (en) | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US9525737B2 (en) | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
US10013177B2 (en) | 2015-04-20 | 2018-07-03 | Hewlett Packard Enterprise Development Lp | Low write amplification in solid state drive |
US9892005B2 (en) | 2015-05-21 | 2018-02-13 | Zerto Ltd. | System and method for object-based continuous data protection |
US10089012B1 (en) | 2015-06-25 | 2018-10-02 | EMC IP Holding Company LLC | Zero on demand operations based on zeroed chunk tables of storage drive objects stored in main memory |
US11175995B2 (en) | 2015-06-29 | 2021-11-16 | Vmware, Inc. | Data protection for a document database system |
US9959167B1 (en) | 2015-07-01 | 2018-05-01 | Amazon Technologies, Inc. | Rebundling grid encoded data storage systems |
US10089176B1 (en) | 2015-07-01 | 2018-10-02 | Amazon Technologies, Inc. | Incremental updates of grid encoded data storage systems |
US9904589B1 (en) | 2015-07-01 | 2018-02-27 | Amazon Technologies, Inc. | Incremental media size extension for grid encoded data storage systems |
US10162704B1 (en) | 2015-07-01 | 2018-12-25 | Amazon Technologies, Inc. | Grid encoded data storage systems for efficient data repair |
US10108819B1 (en) | 2015-07-01 | 2018-10-23 | Amazon Technologies, Inc. | Cross-datacenter extension of grid encoded data storage systems |
US9998539B1 (en) | 2015-07-01 | 2018-06-12 | Amazon Technologies, Inc. | Non-parity in grid encoded data storage systems |
US9268648B1 (en) | 2015-07-28 | 2016-02-23 | Zerto Ltd. | System and method for consistency verification of replicated data in a recovery system |
TWI575531B (zh) | 2015-08-10 | 2017-03-21 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10496614B2 (en) | 2015-10-07 | 2019-12-03 | Oracle International Corporation | DDL processing in shared databases |
US9619321B1 (en) | 2015-10-08 | 2017-04-11 | Seagate Technology Llc | Internal copy-back with read-verify |
US9384082B1 (en) | 2015-10-23 | 2016-07-05 | Pure Storage, Inc. | Proactively providing corrective measures for storage arrays |
US20170123975A1 (en) * | 2015-11-03 | 2017-05-04 | Samsung Electronics Co., Ltd. | Centralized distributed systems and methods for managing operations |
US10126981B1 (en) * | 2015-12-14 | 2018-11-13 | Western Digital Technologies, Inc. | Tiered storage using storage class memory |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10437502B2 (en) | 2015-12-29 | 2019-10-08 | EMC IP Holding Company LLC | Efficient deduplication of logical units |
US9910748B2 (en) | 2015-12-31 | 2018-03-06 | Futurewei Technologies, Inc. | Rebuilding process for storage array |
US10152268B1 (en) | 2016-03-30 | 2018-12-11 | EMC IP Holding Company LLC | System and methods for replication resource management in asymmetric secure multi-tenancy deployments in protection storage |
US10019317B2 (en) | 2016-04-25 | 2018-07-10 | Nexenta Systems, Inc. | Parity protection for data chunks in an object storage system |
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10552057B2 (en) * | 2016-05-27 | 2020-02-04 | Netapp, Inc. | Methods for improving journal performance in storage networks and devices thereof |
US10180875B2 (en) | 2016-07-08 | 2019-01-15 | Toshiba Memory Corporation | Pool-level solid state drive error correction |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
TWI607312B (zh) | 2016-10-07 | 2017-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
KR20180040767A (ko) | 2016-10-12 | 2018-04-23 | 삼성전자주식회사 | Raid 방식으로 데이터를 저장하는 스토리지 장치 |
US10261719B2 (en) | 2017-01-31 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Volume and snapshot replication |
US10705911B2 (en) | 2017-04-24 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Storing data in a distributed storage system |
US20180321874A1 (en) | 2017-05-03 | 2018-11-08 | Alibaba Group Holding Limited | Flash management optimization for data update with small block sizes for write amplification mitigation and fault tolerance enhancement |
US20190036703A1 (en) | 2017-07-28 | 2019-01-31 | Nexenta Systems, Inc. | Shard groups for efficient updates of, and access to, distributed metadata in an object storage system |
-
2016
- 2016-12-14 US US15/379,310 patent/US11422719B2/en active Active
-
2017
- 2017-01-25 US US15/415,760 patent/US11301147B2/en active Active
- 2017-01-31 US US15/421,284 patent/US10678452B2/en active Active
- 2017-09-13 CN CN201780056770.XA patent/CN109716279B/zh active Active
- 2017-09-13 EP EP17851458.4A patent/EP3485366A4/en not_active Withdrawn
- 2017-09-13 WO PCT/US2017/051368 patent/WO2018053003A1/en unknown
- 2017-09-15 WO PCT/US2017/051760 patent/WO2018053251A1/en unknown
- 2017-09-15 EP EP17851591.2A patent/EP3485401B1/en active Active
-
2020
- 2020-04-30 US US16/863,464 patent/US11656768B2/en active Active
-
2022
- 2022-07-14 US US17/865,123 patent/US11922033B2/en active Active
-
2023
- 2023-04-21 US US18/305,014 patent/US20230251783A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987477A (en) * | 1997-07-11 | 1999-11-16 | International Business Machines Corporation | Parallel file system and method for parallel write sharing |
WO2015188008A1 (en) * | 2014-06-04 | 2015-12-10 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
Also Published As
Publication number | Publication date |
---|---|
US10678452B2 (en) | 2020-06-09 |
WO2018053003A1 (en) | 2018-03-22 |
EP3485401A4 (en) | 2020-03-18 |
US20180075056A1 (en) | 2018-03-15 |
US20180075053A1 (en) | 2018-03-15 |
US20180074735A1 (en) | 2018-03-15 |
US11922033B2 (en) | 2024-03-05 |
US20220357860A1 (en) | 2022-11-10 |
US11422719B2 (en) | 2022-08-23 |
WO2018053251A1 (en) | 2018-03-22 |
EP3485366A1 (en) | 2019-05-22 |
EP3485366A4 (en) | 2020-03-18 |
CN109716279A (zh) | 2019-05-03 |
US20200326863A1 (en) | 2020-10-15 |
EP3485401A1 (en) | 2019-05-22 |
US11301147B2 (en) | 2022-04-12 |
US11656768B2 (en) | 2023-05-23 |
EP3485401B1 (en) | 2024-06-12 |
US20230251783A1 (en) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109716279B (zh) | 用于写入持久性的自适应并发 | |
US11204701B2 (en) | Token based transactions | |
US11289169B2 (en) | Cycled background reads | |
US20220107833A1 (en) | Maintaining coherency in a distributed system | |
US11704073B2 (en) | Ownership determination for accessing a file | |
JP2017519320A (ja) | ストレージクラスター | |
US20160275156A1 (en) | Sql-like query language for selecting and retrieving systems telemetry including performance, access and audit data |
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 |