CN116431072A - 集成到大容量存储设备的可访问快速耐久存储 - Google Patents

集成到大容量存储设备的可访问快速耐久存储 Download PDF

Info

Publication number
CN116431072A
CN116431072A CN202310422791.6A CN202310422791A CN116431072A CN 116431072 A CN116431072 A CN 116431072A CN 202310422791 A CN202310422791 A CN 202310422791A CN 116431072 A CN116431072 A CN 116431072A
Authority
CN
China
Prior art keywords
storage
data
durable
fast
mass
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310422791.6A
Other languages
English (en)
Inventor
罗纳德·卡尔
康斯坦丁·萨潘扎基斯
彼得·柯克帕特里克
约翰·科尔格洛夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pure Storage Inc
Original Assignee
Pure Storage Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/697,566 external-priority patent/US10417092B2/en
Priority claimed from US15/697,540 external-priority patent/US10552090B2/en
Priority claimed from US15/697,521 external-priority patent/US11592991B2/en
Application filed by Pure Storage Inc filed Critical Pure Storage Inc
Publication of CN116431072A publication Critical patent/CN116431072A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请涉及集成到大容量存储设备的可访问快速耐久存储。在集成了快速耐久存储和大容量耐久存储的存储元件上执行数据存储操作,包括:在所述集成了快速耐久存储和大容量耐久存储的存储元件处,从主机计算机接收数据存储操作;根据所述数据存储操作,确定对快速耐久存储和大容量耐久存储的选择以用于执行所述数据存储操作;以及使用所确定的对快速耐久存储和大容量耐久存储的选择来执行所述数据存储操作。

Description

集成到大容量存储设备的可访问快速耐久存储
分案申请的相关信息
本申请为发明名称为“集成到大容量存储设备的可访问快速耐久存储”、申请号为201880037212.3、申请日为2018年4月30日的中国发明专利申请的分案申请。
技术领域
本公开涉及一种可访问快速耐久存储,尤其涉及一种集成到大容量存储设备的可访问快速耐久存储。
发明内容
一方面,本申请提供了一种方法,所述方法包括:在集成了快速耐久存储和大容量耐久存储两者的统一存储元件处的存储系统中,从主机计算机接收数据存储操作;根据对应于RAID N+R格式的第一数据弹性技术,在所述统一存储元件的所述快速耐久存储内存储对应于所述数据存储操作的数据;基于所接收的数据存储操作,确定完整RAID条带已经写入到所述统一存储元件的所述快速耐久存储;以及响应于确定所述完整RAID条带已经写入到所述快速耐久存储,将所存储的数据的一部分从所述快速耐久存储移动至所述统一存储元件的所述大容量耐久存储,所述大容量耐久存储根据对应于RAID M+R格式的第二数据弹性技术存储所述数据,其中M不同于N。
另一方面,本申请进一步提供了一种装置,其包括计算机处理器、可操作地耦合到所述计算机处理器的计算机存储器,所述计算机存储器中设置有计算机程序指令,当所述计算机程序指令被所述计算机处理器执行时,使得所述装置执行以下步骤:在集成了快速耐久存储和大容量耐久存储两者的统一存储元件处的存储系统中,从主机计算机接收数据存储操作;根据对应于RAID N+R格式的第一数据弹性技术,在所述统一存储元件的所述快速耐久存储内存储对应于所述数据存储操作的数据;基于所接收的数据存储操作,确定完整RAID条带已经写入到所述统一存储元件的所述快速耐久存储;以及响应于确定所述完整RAID条带已经写入到所述快速耐久存储,将所存储的数据的一部分从所述快速耐久存储移动至所述统一存储元件的所述大容量耐久存储,所述大容量耐久存储根据对应于RAID M+R格式的第二数据弹性技术存储所述数据,其中M不同于N。
另一方面,本申请进一步提供了一种设置在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括计算机程序指令,当所述计算机程序指令被执行时,使得计算机执行以下步骤:在集成了快速耐久存储和大容量耐久存储两者的统一存储元件处的存储系统中,从主机计算机接收数据存储操作;根据对应于RAID N+R格式的第一数据弹性技术,在所述统一存储元件的所述快速耐久存储内存储对应于所述数据存储操作的数据;以及响应于确定所述完整RAID条带已经写入到所述快速耐久存储,将所存储的数据的一部分从所述快速耐久存储移动至所述统一存储元件的所述大容量耐久存储,所述大容量耐久存储根据对应于RAID M+R格式的第二数据弹性技术存储所述数据,其中M不同于N。
附图说明
图1A示出了根据一些实现方式的用于数据存储的第一示例性系统。
图1B示出了根据一些实现方式的用于数据存储的第二示例性系统。
图1C示出了根据一些实现方式的用于数据存储的第三示例性系统。
图1D示出了根据一些实现方式的用于数据存储的第四示例性系统。
图2A是根据一些实施例的存储集群的透视图,其中该存储集群具有多个存储节点和耦合到每个存储节点以提供网络附连存储的内部存储。
图2B是示出根据一些实施例的耦合多个存储节点的互连交换机的框图。
图2C是根据一些实施例的多级框图,示出了存储节点的内容和非易失性固态存储单元中的一个的内容。
图2D示出了根据一些实施例的存储服务器环境,其使用一些前述附图的存储节点和存储单元的实施例。
图2E是根据一些实施例的刀片(blade)硬件框图,其示出控制平面、计算和存储平面以及与底层物理资源交互的权限(authority)。
图2F描绘了根据一些实施例的存储集群的刀片中的弹性软件层。
图2G描绘了根据一些实施例的存储集群的刀片中的权限和存储资源。
图3A示出了根据本公开的一些实施例的被耦合用于与云服务提供商进行数据通信的存储系统的图。
图3B示出了根据本公开的一些实施例的存储系统的图。
图3C示出了根据本公开的一些实施例的存储系统的图。
图4示出了根据本公开的一些实施例的示出了用于使用集成到大容量存储设备中的可访问快速耐久存储的示例性方法的流程图。
图5示出了根据本公开的一些实施例的示出了用于在统一存储元件内暂存(staging)数据的示例性方法的流程图。
图6示出了根据本公开的一些实施例的示出了用于在统一存储元件内暂存数据的示例性方法的流程图。
图7示出了根据本公开的一些实施例的示出了用于在统一存储元件内暂存数据的示例性方法的流程图。
图8示出了根据本公开的一些实施例的示出了用于在统一存储元件内暂存数据的示例性方法的流程图。
图9示出了根据本公开的一些实施例的示出了用于在统一存储元件内恢复数据的示例性方法的流程图。
图10示出了根据本公开的一些实施例的示出了用于在统一存储元件内恢复数据的示例性方法的流程图。
具体实施方式
从图1A开始,参考附图描述根据本发明的实施例的用于使用集成到大容量存储设备中的可访问快速耐久存储的示例方法、装置和产品。图1A示出了根据一些实现方式的用于数据存储的示例性系统。出于说明而非限制的目的,系统100(在本文中也称为“存储系统”)包括若干元件。可以注意到,在其他实现方式中,系统100可以包括以相同或不同方式配置的相同、更多或更少的元件。
系统100包括多个计算设备164A-B。计算设备(在本文中也称为“客户端设备”)可以体现为例如数据中心中的服务器、工作站、个人计算机、笔记本电脑等。计算设备164A-B可以通过存储区域网络(SAN)158或局域网(LAN)160耦合到一个或多个存储阵列102A-B,以进行数据通信。
SAN 158可以通过各种数据通信结构、设备和协议来实现。例如,用于SAN 158的结构可以包括光纤通道,以太网,无限宽带技术(Infiniband),串行连接的小型计算机系统接口(SAS)等。与SAN 158一起使用的数据通信协议可以包括高级技术附件(ATA)、光纤通道协议、小型计算机系统接口(SCSI)、Internet小型计算机系统接口(iSCSI)、HyperSCSI、结构上的非易失性内存主机控制器接口规范(NVMe)等。可以注意到,提供SAN 158是为了说明而不是限制。可以在计算设备164A-B和存储阵列102A-B之间实现其他数据通信耦合。
LAN 160也可以通过各种结构,设备和协议来实现。例如,用于LAN 160的结构可以包括以太网(802.3),无线(802.11)等。LAN 160中使用的数据通信协议可以包括传输控制协议(TCP)、用户数据报协议(UDP)、互联网协议(IP)、超文本传输协议(HTTP)、无线访问协议(WAP)、手持设备传输协议(HDTP)、会话启动协议(SIP)、实时协议(RTP)等。
存储阵列102A-B可以为计算设备164A-B提供持久性数据存储。在各种实现方式中,存储阵列102A可以被容纳在机箱(未示出)中,并且存储阵列102B可以被包含在另一机箱(未示出)中。存储阵列102A和102B可以包括一个或多个存储阵列控制器110A-D(在本文中也称为“控制器”)。存储阵列控制器110A-D可以体现为包括计算机硬件、计算机软件或计算机硬件和软件的组合的自动计算机器的模块。在一些实现方式中,存储阵列控制器110A-D可以用于执行各种存储任务。存储任务可以包括将从计算设备164A-B接收的数据写入存储阵列102A-B、从存储阵列102A-B擦除数据、从存储阵列102A-B检索数据并将数据提供给计算设备164A-B、监视和报告磁盘利用率和性能、执行冗余操作(例如独立驱动器冗余阵列(RAID)或类RAID的数据冗余操作)、压缩数据,加密数据等。
存储阵列控制器110A-D可以以多种方式来实现,包括作为现场可编程门阵列(FPGA)、可编程逻辑芯片(PLC)、专用集成电路(ASIC)、片上系统(SOC)或包括分立组件(例如处理设备、中央处理单元、计算机存储器或各种适配器)的任何计算设备。存储阵列控制器110A-D可以包括例如数据通信适配器,其被配置为支持经由SAN 158或LAN 160的通信的。在一些实现方式中,存储阵列控制器110A-D可以被独立地耦合到LAN 160。在实现方式中,存储阵列控制器110A-D可以包括I/O控制器等,其将存储阵列控制器110A-D通过中间背板(未示出)耦合到持久性存储资源170A-B(在本文中也称为“存储资源”),以进行数据通信。持久性存储资源170A-B主要包括任意数量的存储驱动器171A-F(在本文中也称为“存储设备”)和任意数量的非易失性随机存取存储器(NVRAM)设备(未示出)。
在一些实现方式中,持久性存储资源170A-B的NVRAM设备可以被配置为从存储阵列控制器110A-D接收要存储在存储驱动器171A-F中的数据。在一些示例中,数据可以源自计算设备164A-B。在一些示例中,相较于将数据直接写入到存储驱动器171A-F,将数据写入到NVRAM设备可以更快地执行。在各种实现方式中,存储阵列控制器110A-D可以被配置为利用NVRAM设备作为用于将被写入存储驱动器171A-F的数据的快速可访问缓冲器。相对于其中存储阵列控制器110A-D将数据直接写入存储驱动器171A-F的系统,使用NVRAM设备作为缓冲器的写入请求的延迟可以被改善。在一些实现方式中,NVRAM设备可以通过具有高带宽、低延迟RAM的形式的计算机存储器来实现。NVRAM设备被称为是“非易失性”的,因为NVRAM设备可以接收或包括单独的电源,该电源可以在主电源对NVRAM设备断电后维持RAM的状态。这样的电源可以是电池、一个或多个电容器等。响应于断电,NVRAM设备可以被配置为将RAM的内容写入诸如存储驱动器171A-F之类的持久性存储。
在各种实现方式中,存储驱动器171A-F可以指被配置为持久性地记录数据的任何设备,其中“持久性地”或“持久性的”是指设备在断电之后维持记录的数据的能力。在一些实现方式中,存储驱动器171A-F可以对应于非磁盘存储介质。例如,存储驱动器171A-F可以是一个或多个固态驱动器(SSD)、基于闪存的存储、任何类型的固态非易失性存储器或任何其他类型的非机械存储设备。在其他实现方式中,存储驱动器171A-F可以包括机械或旋转硬盘,例如硬盘驱动器(HDD)。
在一些实现方式中,存储阵列控制器110A-D可以被配置用于卸下(offload)存储阵列102A-B中的存储驱动器171A-F的设备管理职责。例如,存储阵列控制器110A-D可以管理控制信息,该控制信息可以描述存储驱动器171A-F中一个或多个存储块的状态。控制信息可以指示例如特定存储块已经发生故障并且不应再被写入,特定存储块包括用于存储阵列控制器110A-D的启动代码、已在特定存储块上执行的编程擦除(P/E)周期的数量、存储在特定存储块中的数据的年龄、存储在特定存储块中的数据类型等。在一些实现方式中,控制信息可以与相关的存储块一起存储为元数据。在其他实现方式中,用于存储驱动器171A-F的控制信息可以被存储在由存储阵列控制器110A-D选择的存储驱动器171A-F的一个或多个特定存储块中。可以用指示所选择的存储块包含控制信息的标识符来标记所选择的存储块。存储阵列控制器110A-D可以与存储驱动器171A-F一起利用该标识符来快速识别包含控制信息的存储块。例如,存储控制器110A-D可以发出定位包含控制信息的存储块的命令。应注意,控制信息可以较大,使得:控制信息的多个部分可以被存储在多个位置中;例如出于冗余的目的,控制信息可以被存储在多个位置;或者控制信息可以分布在存储驱动器171A-F中的多个存储块上。
在各种实现方式中,存储阵列控制器110A-D可以通过从存储驱动器171A-F中检索描述存储驱动器中一个或多个存储块的状态的控制信息来从存储阵列102A-B的存储驱动器171A-F中卸载设备管理职责。可以例如通过存储阵列控制器110A-D向存储驱动器171A-F查询用于特定存储驱动器171A-F的控制信息的位置来执行从存储驱动器171A-F检索控制信息。存储驱动器171A-F可以被配置为执行使得存储驱动器171A-F能够识别控制信息的位置的指令。该指令可以由与存储驱动器171A-F相关联或位于存储驱动器171A-F上的控制器(未示出)执行,并且该指令可以使得存储驱动器171A-F扫描每个存储块的一部分,以识别存储用于存储驱动器171A-F的控制信息的存储块。存储驱动器171A-F可以通过向存储阵列控制器110A-D发送包括用于存储驱动器171A-F的控制信息的位置的响应消息来进行响应。响应于接收到该响应消息,存储阵列控制器110A-D可以发出读取数据的请求,该数据存储在与用于存储驱动器171A-F的控制信息的位置相关联的地址处。
在其他实现方式中,存储阵列控制器110A-D还可以通过响应于接收到控制信息而执行存储驱动器管理操作来从存储驱动器171A-F中卸载设备管理职责。存储驱动器管理操作可以包括例如通常由存储驱动器171A-F(例如,与特定存储驱动器171A-F相关联的控制器(未示出))执行的操作。存储驱动器管理操作可以包括例如确保不将数据写入存储驱动器171A-F中的故障存储块、确保以实现足够损耗均衡的方式将数据写入存储驱动器171A-F中的存储块、以及诸如此类。
在各种实现方式中,存储阵列102A-B可以实现两个或更多个存储阵列控制器110A-D。例如,存储阵列102A可以包括存储阵列控制器110A和存储阵列控制器110B。在给定实例中,可以以主状态(本文中也称为“主控制器”)标示存储系统100的单个存储阵列控制器(例如,存储阵列控制器110A)(在本文中也称为“主控制器”),并且可以以辅状态来标示其他存储阵列控制器(例如,存储阵列控制器110A)(在本文中也称为“辅控制器”)。主控制器可以具有特定的权限,例如更改持久性存储资源170A-B中的数据的许可(例如,向持久性存储资源170A-B写入数据)。主控制器的权限中的至少一部分可以替代辅控制器的权限。例如,当主控制器具有更改持久性存储资源170A-B中的数据的权限时,辅助控制器可能没有该许可。存储阵列控制器110A-D的状态可以改变。例如,可以以辅状态来标示存储阵列控制器110A,并且可以以主状态来指定存储阵列控制器110B。
在一些实现方式中,诸如存储阵列控制器110A之类的主控制器可以用作用于一个或多个存储阵列102A-B的主控制器,并且诸如存储阵列控制器110B之类的第二控制器可以用作用于一个或多个存储阵列102A-B的辅控制器。例如,存储阵列控制器110A可以是用于存储阵列102A和存储阵列102B的主控制器,并且存储阵列控制器110B可以是用于存储阵列102A和102B的辅助控制器。在一些实现方式中,存储阵列控制器110C和110D(也称为“存储处理模块”)可能即不具有主状态也不具有辅状态。实现为存储处理模块的存储阵列控制器110C和110D可以用作主控制器和辅助控制器(例如,分别为存储阵列控制器110A和110B)与存储阵列102B之间的通信接口。例如,存储阵列102A的存储阵列控制器110A可以经由SAN158向存储阵列102B发送写入请求。存储阵列102B的存储阵列控制器110C和110D二者都可以接收该写入请求。存储阵列控制器110C和110D促进了通信,例如,将写入请求发送到适当的存储驱动器171A-F。可以注意到,在一些实现方式中,存储处理模块可以用于增加由主控制器和辅控制器控制的存储驱动器的数量。
在实现方式中,存储阵列控制器110A-D通过中间背板(midplane)(未示出)通信耦合到一个或多个存储驱动器171A-F以及被包括为存储阵列102A-B的一部分的一个或多个NVRAM设备(未示出)。存储阵列控制器110A-D可以经由一个或多个数据通信链路耦合至中间背板,并且该中间背板可以经由一个或多个数据通信链路耦合至存储驱动器171A-F和NVRAM设备。本文中所描述的数据通信链路由数据通信链路108A-D共同示出,并且可以包括例如外围组件互连快速(PCIe)总线。
图1B示出了根据一些实现方式的用于数据存储的示例性系统。图1B所示的存储阵列控制器101可以类似于关于图1A描述的存储阵列控制器110A-D。在一个示例中,存储阵列控制器101可以类似于存储阵列控制器110A或存储阵列控制器110B。出于说明而非限制的目的,存储阵列控制器101包括许多元件。可以注意到,在其他实现方式中,存储阵列控制器101可以包括以相同或不同方式配置的相同、更多或更少的元件。可以注意到,图1A的元件可以被包括在下文中以帮助示出存储阵列控制器101的特征。
存储阵列控制器101可以包括一个或多个处理设备104和随机存取存储器(RAM)111。处理设备104(或控制器101)代表一个或多个通用处理设备,例如微处理器、中央处理单元等。更具体地,处理设备104(或控制器101)可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实现其他指令集的处理器或实现指令集组合的处理器。处理设备104(或控制器101)也可以是一个或多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。
处理设备104可以经由数据通信链路106连接到RAM 111,数据通信链路106可以被实现为诸如双倍数据速率4(DDR4)总线之类的高速存储器总线。RAM 111中存储有操作系统112。在一些实现方式中,指令113存储在RAM 111中。指令113可以包括用于在直接映射闪存系统中执行操作的计算机程序指令。在一个实施例中,直接映射闪存系统是一种直接寻址闪存驱动器内的数据块而无需由闪存驱动器的存储控制器执行地址转换的系统。
在实现方式中,存储阵列控制器101包括一个或多个主机总线适配器103A-C,它们经由数据通信链路105A-C耦合到处理设备104。在实现方式中,主机总线适配器103A-C可以是将主机系统(例如,存储阵列控制器)连接到其他网络和存储阵列的计算机硬件。在一些示例中,主机总线适配器103A-C可以是使存储阵列控制器101能够连接到SAN的光纤通道适配器、使存储阵列控制器101能够连接到LAN的以太网适配器等。主机总线适配器103A-C可以经由诸如PCIe总线之类的数据通信链路105A-C耦合到处理设备104。
在实现方式中,存储阵列控制器101可以包括耦合到扩展器115的主机总线适配器114。扩展器115可用于将主机系统连接到大量的存储驱动器。在主机总线适配器被实现为SAS控制器的实现方式中,扩展器115可以例如是SAS扩展器,其用于使主机总线适配器114能够连接到存储驱动器。
在实现方式中,存储阵列控制器101可以包括经由数据通信链路109耦合到处理设备104的交换机116。交换机116可以是计算机硬件设备,其可以由单个端点创建多个端点,从而使多个设备能够共享单个端点。交换机116可以例如是PCIe交换机,其耦合到PCIe总线(例如,数据通信链路109)并且向中间背板提供多个PCIe连接点。
在实现方式中,存储阵列控制器101包括用于将存储阵列控制器101耦合到其他存储阵列控制器的数据通信链路107。在一些示例中,数据通信链路107可以是快速通道互连(QPI)互连。
使用传统闪存驱动器的传统存储系统可以在作为传统存储系统的一部分的多个闪存驱动器上实现过程。例如,存储系统的较高级别的过程可以在多个闪存驱动器上发起和控制过程。然而,传统存储系统的闪存驱动器可以包括自身的存储控制器,该控制器也执行该过程。因此,对于传统的存储系统,可以执行较高级别的过程(例如,由存储系统发起)和较低级别的处理(例如,由存储系统的存储控制器发起)二者。
为了解决传统存储系统的各种缺陷,可以由较高级别的过程而不是较低级别的过程来执行操作。例如,闪存系统可以包括不包括提供该过程的存储控制器的闪存驱动器。因此,闪存系统的操作系统自身可以发起并控制该过程。这可以通过直接映射的闪存系统来实现,该系统直接寻址闪存驱动器内的数据块,而无需由闪存驱动器的存储控制器执行地址转换。
闪存系统的操作系统可以识别和维护闪存系统的多个闪存驱动器中的分配单元的列表。分配单元可以是整体擦除块或多个擦除块。操作系统可以维护直接将地址映射到闪存系统的闪存驱动器的擦除块的映射或地址范围。
到闪存驱动器的擦除块的直接映射可用于重写入数据和擦除数据。例如,可以在包括第一数据和第二数据的一个或多个分配单元上执行该操作,其中第一数据将被保留而第二数据不再被闪存系统使用。操作系统可以发起将第一数据写入其他分配单元内的新位置以及擦除第二数据并将该分配单元标记为对于后续数据可用的过程。因此,该过程可以仅由闪存系统的较高级别的操作系统来执行,其中不存在由闪存驱动器的控制器执行的附加的较低级别的过程。
仅由闪存系统的操作系统执行的过程的优点包括,由于在该过程期间不执行不必要的或冗余的写入操作,因此提高了闪存系统的闪存驱动器的可靠性。这里可能具有新颖性的点是在闪存系统的操作系统处发起和控制过程的概念。此外,操作系统可以在多个闪存驱动器中控制该过程。这与由闪存驱动器的存储控制器执行的过程形成对比。
存储系统可以由两个存储阵列控制器组成,其中出于故障切换的目的,该两个存储阵列控制器共享一组驱动器;或者存储系统可以由提供使用多个驱动器的存储服务的单个存储阵列控制器组成;或者存储系统可以由具有分布式网络的存储阵列控制器组成,其中每个阵列控制器都具有一定数量的驱动器或一定数量的闪存,并且该网络中的存储阵列控制器进行协作以提供完整的存储服务并且在包括存储分配和垃圾回收的存储服务的各个方面进行协作。
图1C示出了根据一些实现方式的用于数据存储的第三示例性系统117。出于说明而非限制的目的,系统117(在本文中也称为“存储系统”)包括多个元件。可以注意到,在其他实现方式中,系统117可以包括以相同或不同方式配置的相同、更多或更少的元件。
在一个实施例中,系统117包括具有单独可寻址快速写入存储的双外围组件互连(PCI)闪存设备118。系统117可以包括存储设备控制器119a-d。在一个实施例中,存储设备控制器119a-d可以是CPU、ASIC、FPGA或可以实现根据本公开的必要的控制结构的任何其他电路。在一个实施例中,系统117包括可操作地耦合到存储设备控制器119a-d的各个通道的闪存设备(例如,包括闪存设备120a-n)。闪存设备120a-n可以对控制器119a-d呈现为闪存页面,擦除块和/或控制元件的可寻址集合,该可寻址集合足以允许存储设备控制器119a-d对闪存的各个方面进行编程和检索。在一个实施例中,存储设备控制器119a-d可以在闪存设备120A-N上执行操作,该操作包括存储和检索页面的数据内容、整理和擦除任何块、跟踪与闪存页面的使用和重用有关的统计信息、对块和单元进行擦除、跟踪和预测闪存中的错误代码和故障、控制与对闪存单元的内容进行编程和检索相关联的电压水平等。
在一个实施例中,系统117可以包括用于存储单独可寻址快速写入数据的RAM121。在一个实施例中,RAM 121可以是一个或多个单独的分立设备。在另一个实施例中,RAM121可以被集成到存储设备控制器119a-d或多个存储设备控制器中。RAM 121也可以用于其他目的,例如用作存储设备控制器119a-d中用于处理设备(例如,CPU)的临时程序存储器。
在一个实施例中,系统117可以包括储能设备122,例如可再充电电池或电容器。储能设备122可以存储足以为存储设备控制器119a-d、一定量的RAM(例如,RAM 121)和一定量的闪存(例如,闪存120a-120n)供电足够的时间,以将RAM的内容写入闪存的能量。在一个实施例中,如果存储设备控制器119a-d检测到外部电源断电,则存储设备控制器119a-d可以将RAM的内容写入闪存。
在一个实施例中,系统117包括两个数据通信链路123a、123b。在一个实施例中,数据通信链路123a、123b可以是PCI接口。在另一个实施例中,数据通信链路123a、123b可以基于其他通信标准(例如,HyperTransport,InfiniBand等)。数据通信链路123a、123b可以基于非易失性内存主机控制器接口规范(NVMe)或NVMe over fabrics(NVMf)规范,该规范允许从存储系统117中的其他组件到存储设备控制器119a-d的外部连接。应注意,为方便起见,数据通信链路在本文中可互换地称为PCI总线。
系统117还可以包括外部电源(未示出),该外部电源可以设置在数据通信链路123a,123b中的一个或两个上,或者该外部电源可以单独地提供。替代实施例包括专用于存储RAM 121的内容的单独的闪存(未示出)。存储设备控制器119a-d可以通过PCI总线呈现逻辑设备,所述逻辑设备可以包括可寻址的快速写入逻辑设备或存储设备118的逻辑地址空间的不同部分,其可以作为PCI存储器或持久存储装置被呈现。在一个实施例中,要存储到设备中的操作被引导到RAM 121中。在电源故障时,存储设备控制器119a-d可以将与可寻址快速写入逻辑存储相关联的存储的内容写入到闪存(例如,闪存120a-n)以用于长期持久性存储。
在一个实施例中,逻辑设备可以包括闪存设备120a-n的内容中的一些或全部的某种呈现,其中该呈现允许包括双PCI存储设备118的存储系统(例如,存储系统117)直接地对闪存页面进行寻址,并且通过PCI总线从存储设备外部的存储系统组件直接地对擦除块进行重新编程。该呈现还可以允许外部组件中的一个或多个控制并检索闪存存储器的其他方面,包括以下各项中的一些或全部:跟踪与使用和重用所有闪存存储器设备中的闪存存储器页面、擦除块和单元有关的统计信息;跟踪并预测在闪存存储器设备内和跨闪存存储器设备的错误代码和故障;控制与对闪存单元的内容进行编程和检索相关联的电压水平等。
在一个实施例中,储能设备122可以足以确保完成对闪存存储器设备107a-120n的进行中的操作,对于这些操作以及为了将快速写入RAM存储到闪存存储器的操作,储能设备122可以给电力存储设备控制器119a-d和关联的闪存存储器设备(例如,120a-n)供电。储能设备122可以用于存储由闪存存储器设备120a-n和/或存储设备控制器119a-d所保持和跟踪的累积统计信息和其他参数。单独的电容器或储能设备(诸如靠近或者嵌入在闪存存储器设备本身内的较小电容器)可以被用于本文描述的操作中的一些或全部。
可以使用各种方案来跟踪并优化储能组件的寿命,诸如随着时间的推移而调整电压水平、对储能设备122部分地放电以测量对应的放电特性等。如果可用能量随着时间的推移而减少,则可以减少可寻址的快速写入存储装置的有效可用容量以确保其可基于当前可用的存储能量安全地进行写入。
图1D示出了根据一些实现方式的用于数据存储的第三示例性系统124。在一个实施例中,系统124包括存储控制器125a、125b。在一个实施例中,存储控制器125a、125b分别可操作地耦合到存储设备119a、119b和119c、119d。存储控制器125a、125b可以可操作地耦合(例如,经由存储网络130)到一定数量的主机计算机127a-n。
在一个实施例中,两个存储控制器(例如,125a和125b)提供存储服务,诸如SCS块存储阵列、文件服务器、对象服务器、数据库或数据分析服务等。存储控制器125a、125b可以通过一定数量的网络接口(例如,126a-d)向存储系统124外部的主机计算机127a-n提供服务。存储控制器125a、125b可以提供完全在存储系统124内的集成服务或应用,从而形成集中的存储和计算系统。存储控制器125a、125b可以利用在存储设备119a-d内或跨存储设备控制器119a-d的快速写入存储器来记录(journal)进行中的操作,以确保在电源故障、存储控制器移除、存储控制器或存储系统关闭或存储系统124内的一个或多个软件或硬件组件的某个故障时,这些操作不丢失。
在一个实施例中,控制器125a、125b作为PCI总线128a、128b中的一个或另一个的PCI主控来操作。在另一实施例中,128a和128b可以基于其他通信标准(例如,HyperTransport、InfiBand等)。其他存储系统实施例可以将存储控制器125a、125b作为用于PCI总线128a、128b二者的多个主控来操作。可替换地,PCI/NVMe/NVMf交换基础设施或结构可以连接多个存储控制器。一些存储系统实施例可以允许存储设备彼此直接地通信,而不是仅与存储控制器进行通信。在一个实施例中,存储设备控制器119a-d可以在来自存储控制器125a的指导下操作,以从已被存储在RAM(例如,图1C的RAM 121)中的数据中合成并转移要存储到闪存存储器设备中数据。例如,在存储控制器已确定操作已跨存储系统完全提交之后,或者当设备上的快速写入存储器已达到某个使用容量时,或者在一定量的时间之后,可以转移RAM内容的重新计算的版本,以确保提高数据的安全性或者释放可寻址快速写入容量以供重用。例如,可以使用这种机制来避免通过总线(例如,128a、128b)进行的从存储控制器125a、125b的第二次转移。在一个实施例中,重新计算可以包括压缩数据、附加索引或其他元数据、将多个数据段组合在一起、执行擦除码计算等。
在一个实施例中,在来自存储控制器125a、125b的指导下,存储设备控制器119a、119b可以操作以在没有存储控制器125a、125b的参与的情况下根据存储在RAM(例如,图1C的RAM 121)中的数据来计算数据并将数据转移到其他存储设备。此操作可以用于将存储在一个控制器125中的数据镜像到另一控制器125b,或者该操作可以用于将压缩、数据聚合和/或擦除编码计算和转换卸载到存储设备,以减少存储控制器上或到PCI总线128a、128b的存储控制器接口129a、129b上的负载。
存储设备控制器119a-d可以包括用于实现高可用性原语(primitives)以供双PCI存储设备118外部的存储系统的其他部分使用的机制。例如,可以提供保留或排除原语,使得在具有提供高度可用存储服务的两个存储控制器的存储系统中,一个存储控制器可以防止另一个存储控制器访问或者继续访问存储设备。这可以在例如一个控制器检测到另一个控制器没有在适当地起作用或者两个存储控制器之间的互连本身可能没有适当地起作用的情况下使用。
在一个实施例中,与具有单独可寻址快速写入存储装置的双PCI直接映射的存储设备一起使用的存储系统包括以下系统,该系统将擦除块或擦除块组作为分配单元来管理,其中该分配单元用于存储代表存储服务的数据、或者用于存储与存储服务相关联的元数据(例如,索引、日志等)、或者用于存储系统本身的适当管理。可以当数据到达时或者当存储系统将在长时间间隔(例如,高于定义的时间阈值)内保持数据时,对闪存页面(其在大小上可以是几千字节)进行写入。为了更快地提交数据,或者为了减少对闪存存储器设备的写入次数,存储控制器可以首先将数据写入到一个或多个存储设备上的单独可寻址快速写入存储器中。
在一个实施例中,存储控制器125a、125b可以根据存储设备的年龄和预期剩余寿命或者基于其他统计信息来发起对在存储设备(例如,118)内和跨存储设备的擦除块的使用。存储控制器125a、125b可以根据不再需要的页面来发起存储设备之间的垃圾收集和数据迁移数据,并且管理闪存页面和擦除块寿命和管理整体系统性能。
在一个实施例中,存储系统124可以将镜像和/或擦除编码方案用作将数据存储到可寻址快速写入存储装置中的一部分和/或用作将数据写入到与擦除块相关联的分配单元中的一部分。可以跨存储设备、以及在擦除块或分配单元内、或者在单个存储设备上的闪存存储器设备内和跨单个存储设备上的闪存存储器设备使用擦除码,以针对单个或多个存储设备故障提供冗余,或者针对由于闪存存储器操作或者由于闪存存储器单元的退化而导致的闪存存储器页面的内部损坏提供保护。可以使用各种级别下的镜像和擦除编码来从单独地或相结合地发生的多种类型的故障中恢复。
参考图2A至图2G所描绘的实施例示出了存储集群,该存储集群存储用户数据,诸如源自一个或多个用户或客户端系统或存储集群外部的其他源的用户数据。存储集群使用擦除编码和元数据的冗余副本来跨容纳在机箱内的存储节点或者跨多个机箱分布用户数据。擦除编码指代数据保护或重建的方法,其中数据被存储在一组不同的位置(诸如磁盘、存储节点或地理位置)上。闪存存储器是可以与实施例集成的一种类型的固态存储器,但是可以将实施例扩展到其他类型的固态存储器或其他存储介质(包括非固态存储器)。存储位置和工作负载的控制分布在集群对等系统中的存储位置上。诸如调解各个存储节点之间的通信、检测存储节点何时已变得不可用以及平衡跨各个存储节点的I/O(输入和输出)之类的任务全部在分布式基础上被处理。在一些实施例中,数据按照支持数据恢复的数据分段或条带被布局或者分布在多个存储节点上。可独立于输入和输出模式在集群内重新指配数据的所有权。下面更详细地描述的这个架构允许集群中的存储节点出现故障,同时系统仍然是可操作的,因为数据可从其他存储节点重建并且因此仍然可用于输入和输出操作。在各种实施例中,存储节点可以被称为集群节点、刀片或服务器。
存储集群可以被包含在机箱(即,容纳一个或多个存储节点的封装)内。用于向每个存储节点提供电力的机制(诸如配电总线)和通信机构(诸如使得能进行存储节点之间的通信的通信总线)被包括在该机箱内。根据一些实施例,存储集群可作为一个位置中的独立系统运行。在一个实施例中,机箱包含可以独立地启用或者禁用的配电总线和通信总线二者的至少两个实例。内部通信总线可以是以太网总线,然而,诸如外围组件互连(PCI)快速线(Express)、InfiniBand等之类的其他技术是同样适合的。机箱为外部通信总线提供端口以使得能实现多个机箱之间(直接地或通过交换机)的通信以及与客户端系统的通信。外部通信可以使用诸如以太网、InfiniBand、光纤通道等的技术。在一些实施例中,外部通信总线将不同的通信总线技术用于机箱间和客户端通信。如果交换机部署在机箱内或者在机箱之间,则该交换机可以用作多种协议或技术之间的转换。当多个机箱被连接以定义存储集群时,客户端可以使用专有接口或诸如网络文件系统(NFS)、通用互联网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本转移协议(HTTP)的标准接口来访问存储集群。客户端协议的转换可以发生在交换机、机箱外部通信总线处或者发生在每个存储节点内。在一些实施例中,多个机箱可以通过聚合器交换机彼此耦合或者连接。可以将耦合或连接的机箱的一部分和/或全部指定为存储集群。如上面所讨论的,每个机箱可具有多个刀片,每个刀片具有MAC(媒体访问控制)地址,但是在一些实施例中,存储集群对于外部网络被呈现为具有单个集群IP地址和单个MAC地址。
每个存储节点可以是一个或多个存储服务器并且每个存储服务器被连接到一个或多个非易失性固态存储器单元,该非易失性固态存储器单元可以被称为存储单元或存储设备。一个实施例在每个存储节点中以及在一个至八个非易失性固态存储器单元之间包括单个存储服务器,但是这一个示例不意在为限制性的。存储服务器可以包括处理器、DRAM以及用于内部通信总线的接口和用于电源总线中的每一条的电力分配的接口。在一些实施例中,在存储节点内部,接口和存储单元共享通信总线,例如PCIExpress。非易失性固态存储器单元可以通过存储节点通信总线来直接地访问内部通信总线接口,或者请求存储节点访问总线接口。在一些实施例中,非易失性固态存储器单元包含嵌入式CPU、固态存储控制器和一定量(例如2至32个太字节(TB)之间)的固态大容量存储。嵌入式易失性存储介质(诸如DRAM)和能量储备装置被包括在非易失性固态存储器单元中。在一些实施例中,能量储备装置是使得能够在失去电源的情况下将DRAM内容的子集转移到稳定存储介质的电容器、超级电容器或电池。在一些实施例中,非易失性固态存储器单元由存储类存储器(storageclass memory)构成,该存储类存储器诸如替代DRAM并且使得能实现减小的功率保持(hold-up)装置的相变或磁阻随机存取存储器(MRAM)。
存储节点和非易失性固态存储装置的许多特征之一是在存储集群中前摄地重建数据的能力。存储节点和非易失性固态存储装置可确定存储集群中的存储节点或非易失性固态存储何时是不可达的,不管是否有读取涉及该存储节点或非易失性固态存储的数据的尝试。然后,存储节点和非易失性固态存储合作以在至少部分新的位置中恢复和重建数据。这构成了前摄重建,因为系统无需等到从利用存储集群的客户端系统发起的读取访问需要数据就重建数据。在下文中讨论了存储存储器及其操作的这些和另外的细节。
图2A是根据一些实施例的存储集群161的透视图,其中存储集群161具有多个存储节点150和耦合到每个存储节点以提供网络附连存储或存储区域网络的内部固态存储器。网络附连存储、存储区域网络或存储集群或其他储存存储器可以按照物理组件和由此提供的储存存储器量这两者的灵活且可重构布置来包括一个或多个存储集群161,每个存储集群161具有一个或多个存储节点150。存储集群161被设计为适合装入机架,并且可像储存存储器所期望的那样设置和填充一个或多个机架。存储集群161有具有多个插槽142的机箱138。应该理解的是,机箱138可以被称为外壳、封装或机箱单元。在一个实施例中,机架138具有十四个插槽142,但是容易地设计其他数量的插槽。例如,一些实施例具有四个插槽、八个插槽、十六个插槽、三十二个插槽或其他适合数量的插槽。在一些实施例中,每个插槽142可容纳一个存储节点150。机箱138包括可用于将机箱138安装在机架上的片状物(flap)148。风扇144提供用于冷却存储节点150及其组件的空气循环,但是可以使用其他冷却组件,或者可以设计没有冷却组件的实施例。交换结构146将机架138内的存储节点150耦合在一起并且存储节点150耦合到网络以用于与存储器进行通信。在本文中描绘的实施例中,出于说明性目的,在交换结构146和风扇144左侧的插槽142被示出为被存储节点150占据,同时在交换结构146和风扇144右侧的插槽142是空的并且可用于插入存储节点150。此配置是一个示例,并且一个或多个存储节点150可以按照各种另外的布置来占据插槽142。在一些实施例中,存储节点布置不需要是顺序的或相邻的。存储节点150是可热插拔的,意味着存储节点150可被插入到机箱138中的插槽142中,或者从插槽142中移除,而不用停止或者关闭系统。在从插槽142中插入或者移除存储节点150时,系统自动地重新配置以便辨识并适应变化。在一些实施例中,重新配置包括恢复冗余和/或重新平衡数据或负载。
每个存储节点150可具有多个组件。在这里所示的实施例中,存储节点150包括由CPU 156(即,处理器)、耦合到CPU 156的存储器154和耦合到CPU 156的非易失性固态存储152填充的印刷电路板159,但是可以在另外的实施例中使用其他安装件和/或组件。存储器154具有由CPU 156执行的指令和/或由CPU 156操作的数据。如在下面进一步说明的,非易失性固态存储152包括闪存,或者在另外的实施例中,包括其他类型的固态存储器。
如上所述,参考图2A,存储集群161是可扩展的,意味着容易添加具有非均匀存储大小的存储容量。在一些实施例中,一个或多个存储节点150可被插入到每个机箱中或者从每个机架中移除并且存储集群自配置。插入式存储节点150无论是随着交付被安装在机箱中还是稍后添加,都可具有不同的大小。例如,在一个实施例中,存储节点150可具有4TB的任意倍,例如,8TB、12TB、16TB、32TB等。在另外的实施例中,存储节点150可以具有其他存储量或容量的任意倍。每个存储节点150的存储容量被广播,并且影响对如何条带化(stripe)数据的判定。为了最大存储效率,受限于在机架内失去多达一个或多达两个非易失性固态存储单元152或存储节点150情况下对连续操作的预定要求,实施例可在条带中尽可能宽地自配置。
图2B是示出耦合多个存储节点150的通信互连173和配电总线172的框图。返回参考图2A,在一些实施例中,通信互连173可以被包括在交换结构146中或者与交换结构146一起实现。在一些实施例中,在多个存储集群161占据机架的情况下,通信互连173可以被包括在架顶式交换机中或者通过架顶式交换机实现。如图2B中所图示的,存储集群161被封装在单个机箱138内。外部端口176通过通信互连173耦合到存储节点150,而外部端口174直接地耦合到存储节点。外部电源端口178耦合到配电总线172。存储节点150可以包括如参考图2A所描述的不同数量和不同容量的非易失性固态存储152。此外,一个或多个存储节点150可以是如图2B中所图示的仅计算存储节点。权限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(形式为RAID条带)或者从非易失性固态存储152读取的数据。跨非易失性固态存储152的多个单元对数据进行条带化,所述非易失性固态存储152可以包括或者不同于具有用于特定数据分段的权限168的非易失性固态存储装置152。
如果数据的特定分段所处的位置有变化,例如,在数据移动或数据重建期间,则应该在该非易失性固态存储152或具有权限168的存储节点150处询问用于该数据分段的权限168。为了定位特定数据条目,实施例计算数据分段的散列值或者应用索引节点(inode)编号或数据分段编号。此操作的输出指向具有用于该特定数据条目的权限168的非易失性固态存储152。在一些实施例中,此操作有两个阶段。第一阶段将实体标识符(ID)(例如,分段编号、索引节点编号或目录编号)映射到权限标识符。此映射可以包括诸如散列或比特掩码的计算。第二阶段是将权限标识符映射到特定非易失性固态存储152,这可以通过显式映射来完成。操作是可重复的,使得当执行计算时,计算的结果重复地且可靠地指向具有权限168的特定非易失性固态存储152。操作可以包括可到达的存储节点的集合作为输入。如果可到达的非易失性固态存储单元的集合改变,则最佳集合改变。在一些实施例中,持久值是当前指派(其总是为真)并且所计算出的值是集群将试图重新配置到的目标指派。此计算可以用于在存在可到达并构成相同集群的一组非易失性固态存储152的情况下为权限确定最佳非易失性固态存储152。计算还确定对等非易失性固态存储装置152的有序集合,该对等非易失性固态存储装置152还将权限记录到非易失性固态存储映射,使得即使所指派的非易失性固态存储器是不可到达的也可以确定权限。在一些实施例中如果具体权限168不可用,则可询问复制或替代权限168。
参考图2A和2B,存储节点150上的CPU 156的许多任务中的两个任务是分解写入数据,以及重组读取数据。当系统已确定数据将被写入时,用于该数据的权限168被如上所述地定位。当已经确定了数据的分段ID时,写入请求被转发到非易失性固态存储装置152,该非易失性固态存储装置152当前被确定为根据分段所确定的权限168的主机。非易失性固态存储装置152和对应的权限168驻留在其上的存储节点150的主机CPU 156然后对数据进行分解或者分片,并且将数据发出到各个非易失性固态存储装置152。根据擦除编码方案将所发送的数据作为数据条带写入。在一些实施例中,请求拉取数据,而在其他实施例中,数据被推送。相反地,当数据被读取时,如上所述地定位针对包含数据的分段ID的权限168。非易失性固态存储152和对应的权限168驻留在其上的存储节点150的主机CPU 156从权限所指向的非易失性固态存储装置和对应的存储节点请求数据。在一些实施例中,以数据条带的形式从闪存存储装置读取数据。存储节点150的主机CPU 156然后重组所读取的数据,根据适当的擦除编码方案来校正任何错误(若存在的话),并且将经重组的数据转发到网络。在另外的实施例中,可在非易失性固态存储152中处理这些任务中的一些或全部。在一些实施例中,分段主机通过从存储装置请求页面并且然后将数据发送到做出原始请求的存储节点,来请求将数据发送到存储节点150。
在一些系统中,例如在UNIX类型的文件系统中,按索引节点或inode处理数据,索引节点或inode指定表示文件系统中的对象的数据结构。例如,对象可能是文件或目录。元数据可以作为诸如许可数据和创建时间戳之类的属性以及其他属性伴随对象。可以将分段编号指派给文件系统中的这样的对象的全部或一部分。在其他系统中,按在别处指派的分段编号处理数据分段。出于讨论的目的,分发的单元是实体,并且实体可以是文件、目录或分段。也就是说,实体是由存储系统存储的数据或元数据的单元。实体被分组成称作权限的集合。每个权限有权限所有者,所述权限所有者是有更新权限中的实体的排他性权限的存储节点。换句话说,存储节点包含权限,并且权限进而包含实体。
根据一些实施例,分段是数据的逻辑容器。分段是介质地址空间之间的地址空间并且物理闪存位置(即,数据分段编号)在此地址空间中。分段还可以包含元数据,元数据使得数据冗余能够在没有更高级软件的参与的情况下被恢复(重写到不同的闪存位置或设备)。在一个实施例中,分段的内部格式包含客户端数据和介质映射以确定该数据的位置。通过在适用的情况下将分段分解成许多数据和奇偶分片,每个数据分段被保护例如免于存储器和其他故障。数据和奇偶分片根据擦除编码方案被分布(即,条带化)在耦合到主机CPU156(参见图2E和图2G)的非易失性固态存储152上。在一些实施例中,术语分段的使用指代容器及其在分段的地址空间中的位置。根据一些实施例,术语条带的使用指代与分段相同的一组分片并且包括分片如何连同冗余或奇偶信息一起被分发。
一系列地址空间转换跨整个存储系统而发生。在顶部的是链接到inode的目录条目(文件名)。Inode指向以逻辑方式存储数据的介质地址空间中。可以通过一系列间接介质来映射介质地址以分散大型文件的负载,或者实现像重复数据删除或快照那样的数据服务。可以通过一系列间接介质来映射介质地址以分散大型文件的负载,或者实现像重复数据删除或快照那样的数据服务。分段地址然后被转换成物理闪存位置。根据一些实施例,物理闪存位置具有受系统中的闪存量约束的地址范围。介质地址和分段地址是逻辑容器,并且在一些实施例中使用128比特或更大的标识符以便实际上是无限大的,具有重用被计算为比系统的预期寿命更长的可能性。在一些实施例中,以分层方式分配来自逻辑容器的地址。最初,可以为每个非易失性固态存储单元152指派地址空间的范围。在该指派的范围内,非易失性固态存储152能够在不用与其他非易失性固态存储152同步的情况下分配地址。
数据和元数据按照针对不同的工作负载模式和存储设备优化的一组底层存储布局来存储。这些布局并入多种冗余方案、压缩格式和索引算法。这些布局中的一些存储关于权限和权限主机的信息,而其他布局存储文件元数据和文件数据。冗余方案包括容忍单个存储设备(诸如NAND闪存芯片)内的损坏比特的纠错码、容忍多个存储节点故障的擦除码、以及容忍数据中心或区域故障的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(LDPC)码。在一些实施例中,在存储集群内使用里德-所罗门(Reed-Solomon)编码,并且在存储网格内使用镜像。可以使用有序日志结构化索引(诸如日志结构化合并树)来存储元数据,并且可以不在日志结构化布局中存储大数据。
为了跨实体的多个副本维持一致性,存储节点通过计算隐式地对以下两项内容取得一致意见:(1)包含实体的权限,以及(2)包含权限的存储节点。可通过将实体伪随机地指派给权限、通过基于外部产生的密钥将实体分割成范围、或者通过将单个实体放置到每个权限中来完成将实体指派给权限。伪随机方案的示例是线性散列和可扩展散列下的复制(RUSH)系列的散列,包括可扩展散列下的受控复制(CRUSH)。在一些实施例中,伪随机指派被仅用于将权限指派给节点,因为节点集可改变。权限集不能改变,所以可以在这些实施例中应用任何隶属函数(subjective function)。一些放置方案将权限自动地放置在存储节点上,而其他放置方案依赖权限到存储节点的显式映射。在一些实施例中,利用伪随机方案来从每个权限映射到一组候选权限所有者。与CRUSH有关的伪随机数据分发函数可以将权限指派给存储节点并且创建指派了权限的存储节点的列表。每个存储节点具有伪随机数据分发函数的副本,并且可得到相同的计算以用于分发,并且稍后查找或者定位权限。在一些实施例中,每种伪随机方案要求可到达存储节点集作为输入以便推断出相同的目标节点。一旦实体已被放置在权限中,该实体就可以被存储在物理设备上,使得预期故障将不会导致意外的数据丢失。在一些实施例中,再平衡算法试图将权限内的所有实体的副本存储在相同布局中并且在同一组机器上。
预期故障的示例包括设备故障、被盗机器、数据中心火灾和区域灾难,诸如核或地质事件。不同的故障导致不同级别的可接受数据丢失。在一些实施例中,被盗存储节点既不影响系统的安全也不影响系统的可靠性,而取决于系统配置,区域事件可能导致没有数据丢失、几秒或几分钟的更新丢失或甚至完全数据丢失。
在实施例中,用于存储冗余的数据的放置独立于用于数据一致性的权限的放置。在一些实施例中,包含权限的存储节点不包含任何持久性存储装置。替代地,存储节点被连接到不包含权限的非易失性固态存储单元。存储节点与非易失性固态存储单元之间的通信互连由多种通信技术构成,并且具有非均匀性能和容错特性。在一些实施例中,如上面所提及的,非易失性固态存储单元经由PCI express连接到存储节点,存储节点使用以太网背板在单个机箱内连接在一起,并且机箱连接在一起以形成存储集群。在一些实施例中,存储集群使用以太网或光纤信道连接到客户端。如果将多个存储集群配置到存储网格中,则使用互联网或其他远程联网链路(诸如不遍历互联网的“地铁规模”的链路或私有链路)来连接多个存储集群。
权限所有者具有修改实体、将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元、以及添加和移除实体的副本的排他性权限。这允许实现维护底层数据的冗余。当权限所有者发生故障、将要报废、或者过载时,权限被转移到新的存储节点。瞬态故障使得确保所有无故障机器对新的权限位置取得一致意见变得很有意义。可通过诸如Paxos、热温故障转移方案的共识协议、经由通过远程系统管理员或者通过本地硬件管理员进行的手动干预(例如通过以物理方式从集群移除已发生故障的机器或者按压已发生故障的机器上的按钮),来自动地实现由于瞬态故障而出现的模糊性。在一些实施例中,使用共识协议,并且故障转移是自动的。如果在过短的时间段内发生过多的故障或复制事件,则根据一些实施例,系统进入自我保存模式并暂停复制和数据移动活动,直到管理员干预为止。
当权限在存储节点与其权限中的权限所有者实体之间转移时,系统在存储节点与非易失性固态存储单元之间转移消息。关于持久性消息,具有不同目的的消息具有不同的类型。取决于消息的类型,系统维持不同的排序和耐久性保证。随着持久性消息被处理,消息被临时存储在多个耐久和非耐久存储硬件技术中。在一些实施例中,消息被存储在RAM、NVRAM中并存储在NAND闪存设备上,并且使用各种协议以便高效地利用每个存储介质。延迟敏感的客户端请求可以被存留在复制的NVRAM中,然后稍后存留在NAND中,而后台再平衡操作被直接地存留到NAND。
持久性消息在被发送之前被持久地存储。这允许系统不管是否有故障和组件更换都继续为客户端请求服务。尽管许多硬件组件包含对系统管理员、制造商、硬件供应链和进行中的监视质量控制基础设施可见的唯一标识符,然而在基础设施地址之上运行的应用对地址进行虚拟化。不管组件故障和更换如何,这些虚拟化的地址都不会在存储系统的生命周期期间改变。这允许在没有客户端请求处理的重新配置或中断的情况下随着时间的推移而更换存储系统的每个组件,即,系统支持非中断升级。
在一些实施例中,利用足够的冗余存储虚拟化地址。连续监视系统使硬件和软件状态与硬件标识符相关联。这允许检测并预测由于故障组件和制造细节而导致的故障。在一些实施例中,监视系统还能够通过从关键路径移除组件来在发生故障之前将权限和实体前摄转移而远离受影响设备。
图2C是示出存储节点150的内容和存储节点150的非易失性固态存储152的内容的多级框图。在一些实施例中,通过网络接口控制器(NIC)202向存储节点150传送数据和从存储节点150传送数据。如上面所讨论的,每个存储节点150具有CPU 156和一个或多个非易失性固态存储152。在图2C中向下移动一个层级,每个非易失性固态存储152具有相对快速的非易失性固态存储器,诸如非易失性随机存取存储器(NVRAM)204和闪存存储器206。在一些实施例中,NVRAM 204可以是不要求编程/擦除周期的组件(DRAM、MRAM、PCM),并且可以是可支持与从存储器读取相比被更经常写入的存储器。在图2C中向下移动另一层级,NVRAM 204在一个实施例中被实现为高速易失性存储器,诸如通过能量储备218支援的动态随机存取存储器(DRAM)216。能量储备218提供足够的电力来使DRAM 216保持被供电足够长时间以便内容在电源故障的情况下被转移到闪存存储器206。在一些实施例中,能量储备218是电容器、超级电容器、电池或其他设备,其提供足以使得能够在失去电源的情况下将DRAM 216的内容转移到稳定存储介质的适合的能量供应。闪存存储器206被实现为多个闪存管芯222,该闪存管芯222可以被称为闪存管芯222的封装或闪存管芯222的阵列。应理解,可以以任意种方式、按每封装单个管芯、每封装多个管芯(即多芯片封装)、在混合封装中、作为印刷电路板或其他基板上的裸管芯、作为胶囊管芯等来封装闪存管芯222。在所示的实施例中,非易失性固态存储152具有控制器212或其他处理器,以及耦合到控制器212的输入输出(I/O)端口210。I/O端口210耦合到闪存存储节点的CPU 156和/或网络接口控制器202。闪存输入输出(I/O)端口220耦合到闪存管芯222,并且直接存储器存取单元(DMA)214耦合到控制器212、DRAM 216和闪存管芯222。在所示的实施例中,I/O端口210、控制器212、DMA单元214和闪存I/O端口220被实现在可编程逻辑器件(PLD)208(例如,现场可编程门阵列(FPGA))上。在此实施例中,每个闪存管芯222具有被组织为十六kB(千字节)页面224的页面以及寄存器226,通过该寄存器226可将数据写入到闪存管芯222或者从闪存管芯222读取数据。在另外的实施例中,使用其他类型的固态存储器代替在闪存芯片222内图示的闪存存储器,或者除了在闪存芯片222内图示的闪存存储器之外还使用其他类型的固态存储器。
在如本文所公开的各种实施例中,存储集群161通常可与存储阵列对比。存储节点150是创建存储集群161的合集的一部分。每个存储节点150拥有数据切片和提供该数据所需要的计算。多个存储节点150合作以存储和检索数据。如通常在存储阵列中使用的储存存储器或存储设备较少参与处理和操纵数据。存储阵列中的储存存储器或存储设备接收用于读取、写入或者擦除数据的命令。存储阵列中的储存存储器或存储设备不知道它们被嵌入其中的更大系统,或数据的含义。存储阵列中的储存存储器或存储设备可包括各种类型的储存存储器,诸如RAM、固态驱动器、硬盘驱动器等。本文描述的存储单元152具有同时地活动并且为多种目的服务的多个接口。在一些实施例中,存储节点150的一些功能性被转移到存储单元152,从而将存储单元152变换成存储单元152和存储节点150的组合。将(与存储数据有关的)计算放置到存储单元152中使这种计算更靠近数据本身。各种系统实施例具有带不同能力的存储节点层的层次。相比之下,在存储阵列中,控制器拥有并知道关于控制器在支架或存储设备中管理的所有数据的一切信息。在存储集群161中,如本文所描述的,多个存储单元152和/或存储节点150中的多个控制器以各种方式合作(例如,用于擦除编码、数据分片、元数据通信和冗余、存储容量扩展或收缩、数据恢复等)。
图2D示出使用图2A至图2C的存储节点150和存储单元152的实施例的存储服务器环境。在此版本中,每个存储单元152在机箱138(参见图2A)中的PCIe(快速外围组件互连)板上具有诸如控制器212(参见图2C)之类的处理器、FPGA(现场可编程门阵列)、闪存存储器206和NVRAM 204(其是超级电容器支持的DRAM 216,参见图2B和图2C)。存储单元152可以作为包含存储装置的单个板被实现,并且可以是机箱内部的最大可容忍的故障域。在一些实施例中,多达两个存储单元152可能发生故障并且设备将在没有数据丢失的情况下继续。
在一些实施例中,物理存储基于应用使用被划分成命名的区域。NVRAM 204是存储单元152DRAM 216中的保留存储器的连续块,并且由NAND闪存来支持。NVRAM 204在逻辑上被划分成作为线轴(spool)写入两次的多个存储器区域(例如,线轴区域)。NVRAM 204线轴内的空间由每个权限168独立地管理。每个设备向每个权限168提供一定量的存储空间。该权限168进一步管理该空间内的寿命和分配。线轴的示例包括分布式事务或概念。当存储单元152的主电源发生故障时,板上超级电容器提供短持续时间的电力保持。在此保持间隔期间,NVRAM 204的内容被刷新到闪存存储器206。在下一次通电时,从闪存存储器206恢复NVRAM 204的内容。
至于存储单元控制器,逻辑“控制器”的责任分布在包含权限168的刀片中的每一个上。逻辑控制的这种分布在图2D中被示为主机控制器242、中间层控制器244和存储单元控制器246。控制平面和存储平面的管理被独立地处理,但是各部分可以以物理方式共同位于同一刀片上。每个权限168有效地用作独立控制器。每个权限168提供它自己的数据和元数据结构、它自己的后台工作者,并且维护它自己的生命周期。
图2E是在图2D的存储服务器环境中使用图2A至图2C的存储节点150和存储单元152的实施例的刀片252硬件框图,该刀片252硬件框图示出控制平面254、计算和存储平面256、258以及与底层物理资源交互的权限168。控制平面254被分区成许多权限168,所述许多权限168可使用计算平面256中的计算资源来在任何刀片252上运行。存储平面258被分区成一组设备,其中的每一个设备提供对闪存206和NVRAM 204资源的访问。
在图2E的计算和存储平面256、258中,权限168与底层物理资源(即,设备)交互。从权限168的角度来看,其资源被条带化在所有物理设备上。从设备的角度来看,它向所有权限168提供资源,而不管权限在何处运行。每个权限168已分配了或者已被分配了存储单元152中的储存存储器的一个或多个分区260,例如闪存存储器206和NVRAM 204中的分区260。每个权限168使用属于它的那些分配的分区260,以用于写入或者读取用户数据。权限可与系统的物理存储装置的不同量相关联。例如,一个权限168可以在一个或多个存储单元152中具有比一个或多个其他权限168更大数量的分区260或更大尺寸的分区260。
图2F描绘根据一些实施例的存储集群161的刀片252中的弹性软件层。在弹性结构中,弹性软件是对称的,即,每个刀片的计算模块270运行图2F中描绘的过程的三个相同的层。存储管理器274执行来自其他刀片252的对存储在本地存储单元152、NVRAM 204和闪存206中的数据和元数据的读取和写入请求。权限168通过向对应数据或元数据驻留在其存储单元152上的刀片252发出必要的读取和写入来实现客户端请求。端点272解析从交换结构146监督软件接收到的客户端连接请求,将客户端连接请求中继到负责实现的权限168,并且将权限168的响应中继到客户端。对称三层结构使得能实现存储系统的高度并发性。在这些实施例中弹性有效地且可靠地横向扩展。此外,弹性实现独特的横向扩展技术,所述独特的横向扩展技术不管客户端访问模式如何都跨所有资源均匀地平衡工作,并且通过消除对于常规分布式锁定通常发生的刀片间协调的大量需要来使并发性最大化。
仍然参考图2F,在刀片252的计算模块270中运行的权限168执行实现客户端请求所要求的内部操作。弹性的一个特征是权限168是无状态的,即,它们将活动数据和元数据缓存在它们自己的刀片168的DRAM中以便于快速访问,但是权限将每一更新存储在其在三个单独的刀片252上的NVRAM 204分区中,直到更新已被写入到闪存206为止。在一些实施例中,对NVRAM 204的所有存储系统写入一式三份地放到三个单独的刀片252上的分区。利用三重镜像NVRAM 204以及通过奇偶校验和里德-所罗门RAID校验和所保护的持久存储装置,存储系统可幸免于两个刀片252的并发故障,而不会丢失数据、元数据或对任何一个的访问。
因为权限168是无状态的,所以它们可在刀片252之间迁移。每个权限168具有唯一标识符。在一些实施例中NVRAM 204和闪存206分区与权限168的标识符相关联,而不与它们正在上面运行的刀片252相关联。因此,当权限168迁移时,权限168继续从其新位置管理相同的存储分区。当在存储集群161的实施例中安装新刀片252时,系统通过以下步骤来自动地再平衡负载:对新刀片252的存储装置进行分区以供系统的权限168使用,将选择的权限168迁移到新刀片252,在新刀片252上启动端点272并且将它们包括在交换结构146的客户端连接分配算法中。
从其新位置,被迁移的权限168将其NVRAM 204分区的内容存留在闪存206上,处理来自其他权限168的读取和写入请求,并且实现端点272指示给它们的客户端请求。类似地,如果刀片252发生故障或者被移除,则系统在系统的剩余刀片252之间重新分配其权限168。经重新分配的权限168继续从其新位置执行其原始功能。
图2G描绘了根据一些实施例的存储集群的刀片252中的权限168和存储资源。每个权限168排他性地负责每个刀片252上的闪存206和NVRAM 204的分区。权限168独立于其他权限168来管理其分区的内容和完整性。权限168压缩传入数据并且将它临时保存在其NVRAM 204分区中,然后合并,RAID保护,并且将数据存留在其闪存206分区中的存储分段中。随着权限168将数据写入到闪存206,存储管理器274执行必要的闪存转换以优化写入性能并且使介质寿命最大化。在后台中,权限168“收集垃圾”,或者回收数据占据的空间,这些空间被客户端通过覆写数据而使得已废弃。应理解,因为权限168的分区是不相交的,所以不需要分布式锁定来执行客户端和写入或者执行后台功能。
本文描述的实施例可以利用各种软件、通信和/或网络协议。此外,可以调整硬件和/或软件的配置以适应各种协议。例如,实施例可以利用活动目录(Active Directory),所述活动目录是在WINDOWSTM环境中提供认证、目录、策略和其他服务的基于数据库的系统。在这些实施例中,LDAP(轻量级目录访问协议)是用于查询并修改诸如活动目录之类的目录服务提供商中的项目的一个示例应用协议。在一些实施例中,网络锁定管理器(NLM)被用作这样的设施,该设施与网络文件系统(NFS)协作地工作以提供系统V风格的咨询文件并且通过网络记录锁定。服务器消息块(SMB)协议(其一个版本还被称为公共互联网文件系统(CIFS))可以与本文讨论的存储系统集成。SMP用作通常用于提供对文件、打印机和串行端口的共享访问以及网络上节点之间的各种通信的应用层网络协议。SMB还提供认证的进程间通信机制。AMAZONTM S3(简单存储服务)是通过Amazon Web服务所提供的Web服务,并且本文描述的系统可以通过web服务接口(REST(表述性状态转移)、SOAP(简单对象访问协议)和BitTorrent)与Amazon S3交互。能够REST的(RESTful)API(应用编程接口)分解事务以创建一系列小模块。每个模块解决事务的特定底层部分。与这些实施例一起(尤其针对对象数据)提供的控制或许可可以包括对访问控制列表(ACL)的利用。ACL是附连到对象的许可的列表并且ACL指定哪些用户或系统进程被授予对对象的访问权限,以及在给定对象上允许什么操作。系统可以利用互联网协议版本6(IPv6)以及IPv4来为网络上的计算机提供识别和定位系统并且跨互联网路由业务的通信协议。在联网系统之间路由分组可以包括等价多路径路由(ECMP),该ECMP是一种路由策略,其中可在多个“最佳路径”上发生转发到单个目的地的下一跳分组,所述多个“最佳路径”在路由度量计算中处于最佳位置。可与大多数路由协议相结合地使用多路径路由,因为它是限于单个路由器的每跳决策。软件可以支持多租户,该多租户是软件应用的单个实例为多个客户服务的架构。每个客户可以被称为租户。在一些实施例中,租户可以被给予定制应用的一些部分的能力,但是可能无法定制应用的代码。这些实施例可以维护审计日志。审计日志是记录计算系统中的事件的文档。除了记录什么资源被访问之外,审计日志条目还通常包括目的地和源地址、时间戳和用户登录信息以便符合各种规定。实施例可以支持各种密钥管理策略,诸如加密密钥轮换。此外,系统可以支持动态根密码或动态地改变密码的一些变体。
图3A提供了根据本公开的一些实施例的被耦合用于与云服务提供商302进行数据通信的存储系统306的图。尽管进行了不太详细的描绘,然而图3A中描绘的存储系统306可以类似于上面参考图1A-1D和图2A-2G所描述的存储系统。在一些实施例中,图3A中描绘的存储系统306可以被具体实现为:包括不平衡主动/主动控制器的存储系统、包括平衡主动/主动控制器的存储系统、包括其中每个控制器的少于全部的资源被利用使得每个控制器具有可以用于支持故障转移的储备资源的主动/主动控制器的存储系统、包括完全主动/主动控制器的存储系统、包括数据集隔离控制器的存储系统、包括具有前端控制器和后端集成存储控制器的双层架构的存储系统、包括双控制器阵列的横向扩展集群的存储系统以及这样的实施例的组合。
在图3A中描绘的示例中,存储系统306经由数据通信链路304耦合到云服务提供商302。数据通信链路304可以被具体实现为专用数据通信链路、通过使用诸如广域网(WAN)或局域网(LAN)的一个或多个数据通信网络来提供的数据通信通路、或者能够在存储系统306与云服务提供商302之间传输数字信息的某种其他机制。这样的数据通信链路304可以是完全有线的、完全无线的,或有线和无线数据通信通路的某种聚合。在这样的示例中,可以使用一个或多个数据通信协议来经由数据通信链路304在存储系统306和云服务提供商302之间交换数字信息。例如,可以使用手持设备转移协议(HDTP)、超文本转移协议(HTTP)、互联网协议(IP)、实时转移协议(RTP)、传输控制协议(TCP)、用户数据报协议(UDP)、无线应用协议(WAP)或其他协议来经由数据通信链路304在存储系统306与云服务提供商302之间交换数字信息。
图3A中描绘的云服务提供商302可以例如被具体实现为经由数据通信链路304通过共享计算资源来向云服务提供商302的用户提供服务的系统和计算环境。云服务提供商302可以提供对诸如计算机网络、服务器、存储装置、应用和服务等的可配置计算资源的共享池的按需访问。可以用最少管理工作量将可配置资源的共享池快速地供应并释放给云服务提供商302的用户。通常,云服务提供商302的用户不知道被云服务提供商302用来提供服务的确切计算资源。尽管在许多情况下可以经由互联网访问这样的云服务提供商302,然而本领域的技术人员将认识到,抽象化共享资源的使用以通过任何数据通信链路来向用户提供服务的任何系统可以被认为是云服务提供商302。
在图3A中描绘的示例中,云服务提供商302可以被配置为通过实现各种服务模型来向存储系统306和存储系统306的用户提供各种服务。例如,云服务提供商302可以被配置为通过实现基础设施即服务(IaaS)服务模型来向存储系统306和存储系统306的用户提供服务,在该IaaS服务模型中,云服务提供商302将诸如虚拟机和其他资源之类的计算基础设施作为服务提供给订户。此外,云服务提供商302可以被配置为通过实现平台即服务(PaaS)服务模型来向存储系统306和存储系统306的用户提供服务,在该PaaS服务模型中,云服务提供商302向应用开发者提供开发环境。这样的开发环境可以包括例如操作系统、编程语言执行环境、数据库、web服务器,或可以由应用开发者用来在云平台上开发和运行软件解决方案的其他组件。此外,云服务提供商302可以被配置为通过实现软件即服务(SaaS)服务模型来向存储系统306和存储系统306的用户提供服务,在所述SaaS服务模型中,云服务提供商302向存储系统306和存储系统306的用户提供应用软件、数据库以及用于运行应用的平台,从而为存储系统306和存储系统306的用户提供按需分配的软件并且消除在本地计算机上安装并运行应用的需要,这可以简化应用的维护和支持。云服务提供商302可以被进一步配置为通过实现认证即服务(AaaS)服务模型来向存储系统306和存储系统306的用户提供服务,在该AaaS服务模型中,云服务提供商302提供可用于保证对应用、数据源或其他资源的访问的认证服务。云服务提供商302还可以被配置为通过实现存储即服务的服务模型来向存储系统306和存储系统306的用户提供服务,在该存储即服务服务模型中,云服务提供商302提供对其存储基础设施的访问以供存储系统306和存储系统306的用户使用。读者将理解的是,云服务提供商302可以被配置为通过实现附加的服务模型来向存储系统306和存储系统306的用户提供附加服务,因为上面描述的服务模型是仅为了说明目的而被包括的,而决不表示对可以由云服务提供商302提供的服务的限制或者关于可以由云服务提供商302实现的服务模型的限制。
在图3A中描绘的示例中,云服务提供商302可以例如作为私有云、作为公用云或作为私有云和公用云的组合被具体实现。在云服务提供商302作为私有云被具体实现的实施例中,云服务提供商302可以专用于向单个组织提供服务而不是向多个组织提供服务。在云服务提供商302作为公用云被具体实现的实施例中,云服务提供商302可以向多个组织提供服务。公用云和私有云部署模型可以不同并且可能具有各种优点和缺点。例如,因为公用云部署涉及跨不同的组织共享计算基础架构,所以这样的部署对于具有安全性关注点、任务关键工作负载、运行时间要求需求等的组织来说可能不是理想的。虽然私有云部署可解决这些问题中的一些,但是私有云部署可能要求本地员工管理私有云。在又一些替代实施例中,可以将云服务提供商302具体实现为私有和公用云服务与混合云部署的混合物。
尽管在图3A中未显式地描绘,然而读者将理解的是,附加硬件组件和附加软件组件可能是必要的以促进将云服务递送给存储系统306和存储系统306的用户。例如,存储系统306可以耦合到(或者甚至包括)云存储网关。这样的云存储网关可以例如被具体实现为与存储系统306一起位于本地的基于硬件或基于软件的应用。这样的云存储网关可以作为正在存储阵列306上运行的本地应用与被存储阵列306利用的远程基于云的存储装置之间的桥接器来操作。通过使用云存储网关,组织可以将主iSCSI或NAS移动到云服务提供商302,从而使得组织能够节省其本地部署的(on-premises)存储系统上的空间。这样的云存储网关可以被配置为模拟磁盘阵列、基于块的设备、文件服务器,或可将SCSI命令、文件服务器命令或其他适当的命令转换成促进与云服务提供商302的通信的REST空间协议的其他存储系统。
为了使得存储系统306和存储系统306的用户能够利用由云服务提供商302提供的服务,云迁移进程可以发生,在所述云迁移进程期间,来自组织的本地系统(或甚至来自另一云环境)的数据、应用或其他元素被移动到云服务提供商302。为了将数据、应用或其他元素成功地迁移到云服务提供商302的环境,可以利用诸如云迁移工具之类的中间件来桥接云服务提供商302的环境与组织的环境之间的间隙。这样的云迁移工具还可以被配置为应对与将大量数据迁移到云服务提供商302相关联的潜在高网络成本和长转移时间,以及应对与通过数据通信网络到云服务提供商302的敏感数据相关联的安全性问题。为了进一步使得存储系统306和存储系统306的用户能够利用由云服务提供商302提供的服务,还可以使用云编配器(orchestrator)来布置和协调自动化任务以寻求创建合并的进程或工作流程。这样的云编配器可以执行诸如配置各种组件(无论组件是云组件还是本地部署的组件)以及管理这样的组件之间的互连之类的任务。云编配器可简化组件间通信和连接以确保链路被正确地配置和维护。
在图3A中描绘的示例中,并且如上面简要地描述的,云服务提供商302可以被配置为通过使用SaaS服务模型来向存储系统306和存储系统306的用户提供服务,在所述SaaS服务模型中,云服务提供商302向存储系统306和存储系统306的用户提供应用软件、数据库以及用于运行应用的平台,从而给存储系统306和存储系统306的用户提供按需分配的软件并且消除在本地计算机上安装和运行应用的需要,这可以简化应用的维护和支持。根据本公开的各种实施例,这样的应用可以采取许多形式。例如,云服务提供商302可以被配置为向存储系统306和存储系统306的用户提供对数据分析应用的访问。这样的数据分析应用可以被例如配置为接收存储系统306通知的遥测数据。这样的遥测数据可以描述存储系统306的各种工作特性并且可以被分析,例如,以确定存储系统306的健康状况,以识别正在存储系统306上执行的工作负载,以预测存储系统306何时将耗尽各种资源,以推荐配置变化、硬件或软件升级、工作流程迁移,或可以改进存储系统306的操作的其他动作。
云服务提供商302还可以被配置为向存储系统306和存储系统306的用户提供对虚拟化计算环境的访问。这样的虚拟化计算环境可以例如作为虚拟机或其他虚拟化计算机硬件平台、虚拟存储设备、虚拟化计算机网络资源等被具体实现。这样的虚拟化环境的示例可包括被创建来模拟实际计算机的虚拟机、使逻辑桌面与物理机器分开的虚拟化桌面环境、允许统一访问不同类型的具体文件系统的虚拟化文件系统以及许多其他环境。
为了进一步说明,图3B描绘了根据本公开的一些实施例的存储系统306的图。尽管进行了不太详细的描绘,但图3B中描绘的存储系统306可以类似于上面参考图1A-1D和图2A-2G所描述的存储系统,因为存储系统可以包括上面描述的许多组件。
图3B中描绘的存储系统306可以包括存储资源308,可以以许多形式具体实现存储资源308。例如,在一些实施例中,存储资源308可包括纳米RAM或利用沉积在基板上的碳纳米管的另一形式的非易失性随机存取存储器。在一些实施例中,存储资源308可以与可堆叠交叉网格化数据存取阵列相结合地包括3D交叉点非易失性存储器,其中比特存储基于体电阻的变化。在一些实施例中,存储资源308可以包括闪存存储器,包括单级单元(SLC)NAND闪存、多级单元(MLC)NAND闪存、三级单元(TLC)NAND闪存、四级单元(QLC)NAND闪存和其他NAND闪存。在一些实施例中,存储资源308可以包括非易失性磁阻随机存取存储器(MRAM),包括自旋转移扭矩(STT)MRAM,其中通过使用磁存储元件来存储数据。在一些实施例中,示例存储资源308可以包括非易失性相变存储器(PCM),该非易失性PCM可以具有在单个单元中保持多个比特的能力,因为单元可实现许多不同的中间状态。在一些实施例中,存储资源308可以包括允许存储和检索光子量子信息的量子存储器。在一些实施例中,示例存储资源308可以包括电阻式随机存取存储器(ReRAM),其中通过改变跨介质固态材料的电阻来存储数据。在一些实施例中,存储资源308可以包括存储类存储器(SCM),其中可以使用亚光刻图案化技术、每单元多个比特、设备的多个层等的某种组合来以高密度制造固态非易失性存储器。读者将理解的是,上面描述的存储系统可以利用其他形式的计算机存储器和存储设备,包括DRAM、SRAM、EEPROM、通用存储器和许多其他存储器。可以采用各种形状因子来具体实现图3A中描绘的存储资源308,所述各种形状因子包括但不限于双列直插存储器模块(DFMM)、非易失性双列直插存储器模块(NVDFMM)、M.2、U.2和其他模块。
图3B中描绘的示例存储系统306可以实现各种存储架构。例如,根据本公开的一些实施例的存储系统可以利用块存储装置,其中数据是按照块存储的,并且每个块实质上作为单独的硬盘驱动器。根据本公开的一些实施例的存储系统可以利用对象存储装置,其中数据作为对象被管理。每个对象可以包括数据本身、可变量的元数据和全局唯一标识符,其中可在多个级别(例如,设备级别、系统级别、接口级别)下实现对象存储装置。根据本公开的一些实施例的存储系统利用文件存储装置,其中数据是按照分层结构存储的。这样的数据可以被保存在文件和文件夹中,并被呈现给存储它的系统和以相同格式检索它的系统两者。
可以将图3B中描绘的示例存储系统306具体实现为存储系统,其中可通过使用纵向扩展模型来添加附加存储资源,可通过使用横向扩展模型或者通过其某种组合来添加附加存储资源。在纵向扩展模型中,可以通过添加附加存储设备来添加附加存储。然而,在横向扩展模型中,可以将附加存储节点添加到存储节点的集群,其中这样的存储节点可包括附加处理资源、附加联网资源等。
图3B中描绘的存储系统306还包括通信资源310,所述通信资源310可用于促进存储系统306内的组件之间的数据通信以及存储系统306与在存储系统306外部的计算设备之间的数据通信。通信资源310可以被配置为利用各种不同的协议和数据通信结构来促进存储系统内的组件以及在存储系统外部的计算设备之间的数据通信。例如,通信资源310可包括光纤通道(FC)技术,诸如可通过FC网络来传输SCSI命令的FC结构和FC协议。通信资源310还可包括以太网FC(FCoE)技术,FC帧通过所述FCoE技术来封装并且通过以太网网络来发送。通信资源310还可包括InfiniBand(IB)技术,其中利用交换结构拓扑来促进信道适配器之间的传输。通信资源310还可包括NVM快速(NVMe)技术和结构NVMe(NVMeoF)技术,通过这些技术可以访问经由PCI快速(PCIe)总线附连的非易失性存储介质。通信资源310还可包括用于利用串行附连SCSI(SAS)来访问存储系统306内的存储资源308的机制、用于将存储系统306内的存储资源308连接到存储系统306内的主机总线适配器的串行ATA(SATA)总线接口、用于提供对存储系统306内的存储资源308的块级访问的互联网小型计算机系统接口(iSCSI)技术、以及可用于促进存储系统306内的组件之间的数据通信和存储系统306与在存储系统306外部的计算设备之间的数据通信的其他通信资源。
图3B中描绘的存储系统306还包括处理资源312,所述处理资源312可用于在存储系统306内执行计算机程序指令并执行其他计算任务。处理资源312可以包括为了某个特定目的而定制的一个或多个专用集成电路(ASIC)以及一个或多个中央处理单元(CPU)。处理资源312还可以包括一个或多个数字信号处理器(DSP)、一个或多个现场可编程门阵列(FPGA)、一个或多个片上系统(SoC),或其他形式的处理资源312。存储系统306可以利用存储资源312来执行各种任务,包括但不限于支持将在下面更详细地描述的软件资源314的执行。
图3B中描绘的存储系统306还包括软件资源314,所述软件资源314当通过存储系统306内的处理资源312来执行时,可以执行各种任务。软件资源314可以包括例如计算机程序指令的一个或多个模块,所述模块当通过存储系统306内的处理资源312来执行时,可用于执行各种数据保护技术以保存被存储在存储系统内的数据的完整性。读者将理解的是,可以例如通过在存储系统内的计算机硬件上执行的系统软件、通过云服务提供商或者以其他方式执行这样的数据保护技术。这样的数据保护技术可包括例如:数据存档技术,所述数据存档技术使不再主动地使用的数据被移动到单独的存储设备或单独的存储系统以便于长期保持;数据备份技术,通过所述数据备份技术可以复制并在不同位置中存储被存储在存储系统中的数据,以在存储系统发生设备故障或某种其他形式的灾难时避免数据丢失;数据复制技术,通过所述数据复制技术将存储在存储系统中的数据复制到另一存储系统,使得可以经由多个存储系统访问数据;数据快照技术,通过所述数据快照技术在各个时间点捕获存储系统内的数据的状态;数据和数据库克隆技术,通过所述数据和数据库克隆技术可以创建数据和数据库的重复副本;以及其他数据保护技术。通过使用这样的数据保护技术,可以满足业务连续性和灾难恢复目标,因为存储系统的故障可能不会导致存储在存储系统中的数据丢失。
软件资源314还可以包括可用于实现软件定义存储(SDS)的软件。在这样的示例中,软件资源314可以包括计算机程序指令的一个或多个模块,所述模块当被执行时,可用于独立于底层硬件的数据存储的基于策略的供应和管理。这样的软件资源314可用于实现存储虚拟化以使存储硬件与管理存储硬件的软件分开。
软件资源314还可以包括可用于促进并优化针对存储系统306中的存储资源308的I/O操作用的软件。例如,软件资源314可以包括执行实行诸如例如数据压缩、重复数据删除等之类的各种数据减少技术的软件模块。软件资源314可以包括智能地将I/O操作分组在一起以促进底层存储资源308的更好使用的软件模块、执行数据迁移操作以从存储系统内迁移的软件模块、以及执行其他功能的软件模块。可以将这样的软件资源314具体实现为一个或多个软件容器或者以许多其他方式来实现。
读者将理解的是,可以将图3B中描绘的各种组件作为融合基础设施分组到一个或多个优化的计算包中。这样的融合基础设施可以包括可被多个应用共享并且使用策略驱动进程来以集体方式管理的计算机、存储和联网资源的池。这样的融合基础设施可以使存储系统306内的各种组件之间的兼容性问题最小化,同时还降低与存储系统306的建立和操作相关联的各种成本。可以用融合基础设施参考架构、用独立应用、用软件驱动的超级融合方法(例如,超级融合的基础设施)或者以其他方式实现这样的融合基础设施。
读者将理解的是,图3B中描绘的存储系统306可用于支持各种类型的软件应用。例如,存储系统306可能在通过向这样的应用提供存储资源来用于支持下列项:人工智能应用、数据库应用、DevOps项目、电子设计自动化工具、事件驱动的软件应用、高性能计算应用、仿真应用、高速数据捕获和分析应用、机器学习应用、媒体制作应用、媒体服务应用、图片存档和通信系统(PACS)应用、软件开发应用以及许多其他类型的应用。
上述存储系统可以操作以支持各种的应用。考虑到存储系统包括计算资源、存储资源和各种其他资源的事实,该存储系统可以非常适合于支持资源密集型的应用,例如AI应用。这样的AI应用可以使设备能够感知其环境,并采取使某些目标成功的机会最大化的行动。此类AI应用的示例可以包括IBM Watson,Microsoft Oxford,Google DeepMind,百度Minwa等。上述存储系统也可以非常适合于支持其他类型的资源密集型应用,例如机器学习应用。机器学习应用可以执行各种类型的数据分析以自动化分析模型的构建。使用从数据中迭代地学习的算法,机器学习应用可使计算机无需进行显式编程即可学习。
除了已经描述的资源之外,上述存储系统还可以包括图形处理单元(GPU),其有时也称为视觉处理单元(VPU)。这样的GPU可以体现为专用电子电路,该专用电子电路快速操纵和更改存储器以加速在旨在输出到显示设备的帧缓冲器中的图像的创建。这样的GPU可以被包括在作为上述存储系统的一部分的任何计算设备内,该计算设备包括作为存储系统的许多可单独扩展的组件中的一个,其中该存储系统的可以单独扩展的组件的其他示例可以包括存储组件、存储器组件、计算组件(例如,CPU、FPGA、ASIC)、网络组件、软件组件等。除了GPU,上述存储系统还可以包括神经网络处理器(NNP),其用于神经网络处理的各个方面。这样的NNP可以代替GPU使用(或除GPU之外附加地使用),并且可以独立扩展。
如上所述,本文所述的存储系统可以被配置为支持人工智能应用、机器学习应用、大数据分析应用以及许多其他类型的应用。这类应用的快速增长是由三种技术推动的:深度学习(DL)、GPU处理器和大数据。深度学习是一种计算模型,利用了受人脑启发的大规模并行神经网络。深度学习模型不是通过专家手工制作软件,而是通过从大量示例中学习来编写自己的软件。GPU是具有数千个内核的现代处理器,非常适合运行松散地代表人脑并行特性的算法。
深度神经网络的进步引发了新一波算法和工具,供数据科学家使用人工智能(AI)来挖掘其数据。借助改进的算法、更大的数据集和各种框架(包括用于跨多种任务的机器学习的开源软件库),数据科学家正在处理自动驾驶汽车、自然语言处理等新用例。然而,训练深度神经网络既需要高质量的输入数据,又需要大量的计算。GPU是大规模并行处理器,能够同时处理大量数据。当组合成多GPU群集时,可能需要高吞吐量管道以将输入数据从存储馈送到计算引擎。深度学习不仅仅是构建和训练模型。还存在一个完整的数据管道,该数据管道是针对数据科学团队取得成功所需的规模、迭代和实验设计的。
数据是现代AI和深度学习算法的要点。在开始训练之前,必须解决的一个问题是围绕收集对于训练准确的AI模型至关重要的标记数据。可能需要全面大规模AI部署以连续地收集、清理、转换、标记和存储大量数据。添加额外的高质量数据点将直接转化为更准确的模型和更好的见解。数据样本可经历一系列处理步骤,包括但不限于:1)将数据从外部源提取到训练系统中,并以原始形式存储数据,2)以便于训练的格式清理和转换数据,包括将数据样本链接到适当的标签,3)探索参数和模型,使用较小的数据集进行快速测试,然后迭代以收敛到用于推送到生产集群地最有希望的模型,4)执行训练阶段以选择随机批次的输入数据,包括新样本和旧样本二者,并将它们馈送到生产GPU服务器以进行计算,以更新模型参数,以及5)进行评估,包括使用训练中未使用的数据的保留部分以评估保留数据上的模型准确性。此生命周期可适用于任何类型的并行化机器学习,而不仅仅是神经网络或深度学习。例如,标准的机器学习框架可依赖于CPU而不是GPU,但是数据提取和训练工作流程可以是相同的。读者将理解,单个共享存储数据中心在整个生命周期中创建协调点,其中在提取、预处理和训练阶段之间无需额外的数据副本。提取的数据很少仅用于一个目的,而共享存储产生用于训练多个不同的模型或将传统分析应用于该数据的灵活性。
读者将理解,AI数据流水线中的每个阶段可能对数据中心(例如,存储系统或存储系统的集合)具有不同的要求。横向扩展存储系统必须为所有类型的访问类型和模式(从较小的充满元数据的文件到大型文件,从随机的访问模式到顺序的访问模式,以及从低到高的并发性)提供卓越的性能。由于系统可以服务于非结构化工作负载,因此上述存储系统可以用作理想的AI数据中心。在第一阶段,理想情况下,数据被提取并存储到后续阶段将使用的同一数据中心上,以避免过多的数据复制。接下来的两个步骤可以在可选地包含GPU的标准计算服务器上完成,然后在第四和最后一个阶段,在功能强大的GPU加速服务器上运行完整的训练生产作业。通常,在同一数据集上有生产管线以及实验管线进行操作。此外,多个GPU加速服务器可以独立用于不同模型,也可以结合在一起以在一个更大的模型上进行训练,甚至可以跨多个系统进行分布式训练。如果共享存储层速度较慢,则必须在每个阶段将数据复制到本地存储中,从而浪费了将数据暂存到不同服务器上的时间。用于AI训练管道的理想数据中心提供与本地存储在服务器节点上的数据类似的性能,同时还具有使所有管道阶段能够同时运行的简单性和性能。
数据科学家致力于通过以下多种方法来提高训练后的模型的实用性:更多数据、更好的数据、更智能的训练以及更深的模型。在许多情况下,会有数据科学家团队共享相同的数据集,并且并行工作以产生新的和改进的训练模型。通常,会有数据科学家团队在这些阶段中同时处理相同的共享数据集。数据处理、实验和全面训练层的多个并发工作负载满足了存储层上多种访问模式的需求。换句话说,存储不能仅满足大型文件的读取,而且必须解决大小文件的混合的读取和写入。最后,随着多个数据科学家探索数据集和模型,以原始格式存储数据以为每个用户提供以独特的方式转换、清理和使用数据的灵活性可能是至关重要的。上述存储系统可以为数据集提供自然的共享存储位置,并具有数据保护冗余(例如,通过使用RAID-6)以及作为多个开发人员和多个实验的公共访问点所必需的性能。使用上述存储系统可以避免为本地工作而仔细复制数据子集的需要,从而节省了工程时间和GPU加速服务器的使用时间。随着原始数据集和所需转换的不断更新和变化,这些副本将成为持续的并且不断增长的重负。
读者将理解,深度学习取得成功的根本原因是通过更大数据集大小而持续改进模型。相反地,经典的机器学习算法(例如逻辑回归)在较小的数据集大小处就停止了提高准确性。这样,计算资源和存储资源的分离还可以允许每个层的独立扩展,从而避免了同时管理两者时固有的许多复杂性。随着数据集大小的增长或考虑使用新的数据集,横向扩展存储系统必须能够轻松扩展。同样,如果需要更多的并行训练,则可以添加额外的GPU或其他计算资源,而无需担心其内部存储。此外,由于存储系统提供的随机读取带宽、存储系统以高速率随机读取较小文件(50KB)的能力(意味着不需要额外的工作量来聚合单独的数据点以生成较大的、易于存储的文件)、(随着数据集的增长或吞吐量需求的增长)存储系统扩展容量和性能的能力、存储系统支持文件或对象的能力、存储系统针对大文件或小文件调整性能的能力(即,无需用户配置文件系统),存储系统即使在生产模型训练期间也支持硬件和软件的无中断升级的能力、以及多个其他原因,上述存储系统可以使得构建、操作和扩展AI系统变得更加容易。
由于许多类型的输入(包括文本、音频或图像)将被本机存储为小文件,存储层的小文件性能可能是至关重要的。如果存储层不能很好地处理小文件,则需要执行额外的步骤来将样本预处理并分组为较大的文件。在旋转磁盘上构建的、依赖SSD作为缓存层的存储可能无法达到所需的性能。由于使用随机输入批次进行训练会生成更准确的模型,因此整个数据集必须是可以完整的性能访问的。SSD缓存仅为数据的较小子集提供高性能,并且在隐藏旋转驱动器的延迟方面将无效。
读者将理解,上述存储系统可以被配置为支持(在多种数据类型中)区块链的存储。这样的区块链可以体现为不断增长的记录列表(称为区块),这些记录列表使用加密进行链接和保护。区块链中的每个区块都可以包含散列指针(作为指向前一区块的链接)、时间戳、事务数据等。区块链可以被设计为对数据修改具有抗性,并且可以充当开放的、分布式的分类账,其可以以可验证的和永久的方式有效地记录双方之间的事务。这使得区块链潜在地适合于记录事件、病历和其他记录管理活动,例如身份管理、事务处理等。
读者将进一步理解,在一些实施例中,上述存储系统可以与其他资源配对以支持上述应用。例如,一个基础设施可以包括服务器和工作站形式的主计算,其专门用于在图形处理单元上使用通用计算(GPGPU)来加速深度学习应用,这些应用互连到计算引擎中以训练用于深度神经网络的参数。每个系统可具有以太网外部连接、InfiniBand外部连接、某种其他形式的外部连接、或其某种组合。在这样的示例中,可以将GPU分组以进行单次大型训练,也可以将其独立用于训练多个模型。基础设施还可以包括诸如上述存储系统之类的存储系统,以提供例如横向扩展的全闪存文件或对象存储,通过该存储可以通过高性能协议(例如NFS、S3等)访问数据。该基础设施还可以包括例如冗余的机架顶式以太网交换机,该交换机通过MLAG端口通道中的端口连接到存储和计算,以实现冗余。该基础设施还可以包括白盒服务器形式的其他计算(可选地带有GPU),其用于数据提取、预处理和模型调试。读者将理解,其他基础设施也是可能的。
读者将理解,相对于可能包括例如部署在服务器节点中的分布式直接附连存储(DDAS)解决方案的其他系统,上述系统可更适合于上述应用。这样的DDAS解决方案可以构建用于处理较大的、顺序性较低的访问,但是处理较小的随机访问的能力较小。读者将进一步理解,上述存储系统可用于为上述应用提供平台,该平台优选地利用基于云的资源,因为该存储系统可包含在本地的(on-site)或位于内部的(in-house)基础设施中,该基础设施更安全、更受本地和内部管理,功能集和性能上更强健,或者该平台优选地利用基于云的资源作为支持上述应用程序的平台的一部分。例如,在诸如IBM Watson之类的平台上构建的服务可能会要求企业将个人用户信息(例如金融交易信息或可识别的患者记录)分发给其他权限。因此,出于各种技术原因以及各种业务原因,与作为由诸如上述存储系统之类的存储系统支持的服务的内部管理和提供的AI相比,基于云服务提供AI可能不那么理想。
读者将理解,上述存储系统(单独地或与其他计算机器协作)可以被配置为支持其他AI相关工具。例如,存储系统可以利用诸如ONXX之类的工具或使得传输以不同AI框架编写的模型更轻松的其他开放式神经网络交换格式。同样地,存储系统可以被配置为支持诸如Amazon的Gluon之类的工具,这些工具允许开发人员原型化,构建和训练深度学习模型。
读者将进一步理解,上述存储系统也可以部署为边缘解决方案。这样的边缘解决方案可以用于通过在数据源附近的网络边缘执行数据处理来优化云计算系统。边缘计算可以将应用、数据和计算能力(即服务)从集中点推向网络的逻辑极限。通过使用诸如上述存储系统之类的边缘解决方案,可以使用由这样的存储系统提供的计算资源来执行计算任务,可以使用该存储系统的存储资源来存储数据,并且可以通过使用该存储系统的各种资源(包括网络资源)来访问基于云的服务。通过按照该边缘解决方案执行计算任务、在该边缘解决方案上存储数据以及一般地使用该边缘解决方案,可以避免消耗大量的基于云的资源,并且实际上,相对于对基于云的资源的较重的依赖,可以经历性能的提升。
尽管许多任务可以受益于边缘解决方案的利用,但某些特定使用可能特别适合在此类环境中进行部署。例如,无人机,自动驾驶汽车,机器人等设备可能需要非常快速的处理,上述处理实际上如此之快,以至于将数据发送到云环境然后再返回以接收数据处理支持可能太慢了。同样地,通过使用各种数据生成传感器来生成大量信息的如机车和燃气轮机之类的机器,也可以从边缘解决方案的快速数据处理能力中受益。再举一个示例,某些物联网设备(例如连接的摄像机)可能不适合使用基于云的资源,因为将数据发送到云可能是不切实际的(不仅从隐私角度、安全角度或财务角度来看),仅仅因为涉及的数据量很大。这样,依赖于数据处理、存储或通信的许多任务可能更适合包含诸如上述存储系统之类的边缘解决方案的平台。
考虑仓库、配送中心或类似地点中的库存管理的特定示例。大型库存、仓储、运输、订单履行、制造或其他操作在库存架子上具有大量库存,而高分辨率数码相机会产生大量数据流水。所有这些数据都可以被带入图像处理系统,该系统可以将数据量减少为少量数据流水。所有小数据都可以在本地(on-premises)存储在存储中。设施边缘的本地存储可以耦合到云,以进行外部报告、实时控制和云存储。可以使用图像处理的结果来执行库存管理,以使库存可以在货架上跟踪并重新进货、移动、运输、使用新产品进行修改或删除已停产/过时的产品等。上述场景是上述可配置处理和存储系统的实施例的主要候选者。仅计算刀片和适合于图像处理的卸载刀片的组合(可能具有在卸载FPGA或(一个或多个)卸载定制刀片上的深入学习)可以接收所有数码相机的大量数据流水,并产生小数据流水。然后,所有小数据都可以由存储节点存储,并以最好地处理数据流的存储刀片类型组合通过存储单元进行操作。这是存储以及功能加速和集成的一个示例。取决于与云的外部通信需求以及云中的外部处理,并取决于网络连接和云资源的可靠性,可以调整系统的大小以进行具有突发性工作负载和可变电导率可靠性的存储和计算管理。此外,取决于其他库存管理方面,可以将系统配置为在混合的边缘/云环境中进行调度和资源管理。
上述存储系统也可以进行优化以用于大数据分析。大数据分析通常被描述为检查大型的、多样的数据集的过程,以发现隐藏的模式、未知的相关性、市场趋势、客户偏好和可以帮助组织做出更明智的业务决策的其他有用的信息。大数据分析应用使数据科学家、预测建模师、统计学家和其他分析专业人员能够分析不断增长的结构化交易数据,以及常规商业智能(BI)和分析程序经常未开发的其他形式的数据。作为该过程的一部分,半结构化和非结构化数据(例如,互联网点主流数据、web服务器日志、社交媒体内容、来自客户电子邮件和调查响应的文本、移动电话呼叫详细记录、物联网传感器数据和其他数据)可以转换为结构化形式。大数据分析是高级分析的一种形式,其涉及复杂的应用,该复杂的应用包括诸如预测模型、统计算法以及由高性能分析系统支持的假设分析等元素。
上述存储系统还可以支持(包括实现为系统接口)响应于人类语音而执行任务的应用。例如,存储系统可以支持执行智能个人助理应用,例如Amazon的Alexa、Apple Siri、Google Voice、Samsung Bixby、Microsoft Cortana等。虽然在前一句中描述的示例使用语音作为输入,但上述存储系统也可以支持聊天机器人、说话机器人、闲聊机器人、人工对话实体或被配置为通过听觉或文本方法进行对话的其他应用。同样地,存储系统可以实际执行这样的应用,以使得诸如系统管理员之类的用户能够通过语音与存储系统交互。这样的应用通常能够进行语音交互、音乐播放、制作待办事项列表、设置警报、流式播客、播放有声读物,以及提供天气、交通和其他实时信息,例如新闻,但在根据本公开的实施例中,这些应用可以用作各种系统管理操作的接口。
上述存储系统还可以实现用于实现自驱动存储的愿景的AI平台。这样的AI平台可以配置为通过收集和分析大量存储系统遥测数据点来启用全球预测智能,从而实现轻松的管理、分析和支持。事实上,这样的存储系统可以预测容量和性能二者,并生成有关工作负载部署、交互和优化的智能建议。这样的AI平台可被配置为在所有传入的存储系统遥测数据影响客户环境之前,根据问题指纹库扫描这些数据,以实时预测和解决事件,并捕获用于预测性能负载的数百个与性能相关的变量。
如在本文实施例中所使用的,针对存储系统、存储系统元件、不同类型的持久性存储、存储控制器、存储设备、存储设备控制器和这些特征的组合,展现了存储系统概念的一些示例性特征。此外,在申请序列号15/697,540中描述了具有多种耐久存储类型、多种寻址数据方式和多种实现耐久存储数据方式的存储器组件的附加示例,其被完整地并入本文中。
在一些示例中,存储系统可被视为包括硬件和软件的组合,其实现用于代表服务器、应用程序、数据库或被配置为与存储系统通信的任何其他软件和/或硬件模块的存储和检索数据的能力。存储系统可以包括数据存储功能和性能管理功能。此外,存储系统可以实现在各种硬件或软件组件故障的情况下通过支持连续操作和降低数据丢失概率来提高可靠性的机制。
在一些示例中,存储系统元件可以是存储系统中的可识别的部件、组件或模块,其中该部件、组件或模块可以实现为电路板、电源、风扇、互连或其子组件。在某些情况下,存储系统元件可以实现为软件模块或应用程序。
在一些示例中,耐久存储可以是一种存储类型,其被设计用于在发生软件崩溃或故障、存储系统重新启动、存储系统断电、附近或连接的存储系统元件发生故障或其他某种类型的故障时保留存储内容。
在一些示例中,存储控制器可以是实现或至少协调存储系统的通知的能力的存储系统的一部分。存储系统可以包括一个或多个存储控制器,以提高可靠性、提高性能或提高可靠性或性能二者。
在一些示例中,存储设备可以是存储系统的元件,该存储系统包括要提供给存储系统用户、客户端、或该存储系统的其他部分的物理耐久存储(除任何其他硬件、软件、固件、或硬件、软件或固件的组合外),以提供可用存储。
在一些示例中,存储设备控制器可以是控制存储设备的存储设备的一部分。存储设备控制器可以实现为CPU、ASIC、FPGA或软件模块,其实现用于管理存储设备的耐久存储和交互能力的能力。
在一些示例中,如上文所述,集成的控制器和存储组件可以实现存储设备控制器和存储设备的功能,其中集成的控制器和存储组件可以组合成统一存储元件(例如可移动电路板),其实现用于与存储控制器交互的存储设备控制器功能和其他集成的控制器和存储组件上的耐久存储功能。此外,该集成的控制器和存储组件的存储设备能力可以呈现为使得该能力可以从多个集成的控制器和存储组件上的存储设备控制器使用。在一些情况下,CPU和各种控制器芯片可以跨实现或协调存储系统功能的两个基本功能而服务于多个、分开或组合的目的,而不是管理物理硬件元件,以使存储的数据耐久化。
在一些示例中,单个存储设备可以包括多个可寻址存储类。在一些实现方式中,存储设备可以指通用SSD,其通常模拟磁盘驱动器并且通常提供简单的块地址范围,该块地址范围例如使用闪存转换层被内部虚拟化以动态映射到擦除块。在其他情况下,特别是如果是快速耐久存储、映射耐久存储或耐久性寄存器的情况下,存储设备被假定包括以下组件中的一个或多个:可寻址快速耐久存储、可寻址大容量耐久固态存储和存储设备控制器。
在一些示例中,可寻址快速耐久存储可以是具有高带宽和低延迟、支持高覆盖次数和高复写率的存储。快速耐久存储可以用PCI事务(例如NVMe)来寻址、用单独计算机系统(例如,单独的存储控制器)上的CPU直接存储器寻址、或者用一些其它通信信道或协议来寻址。可寻址快速耐久存储器可以是一种逻辑结构,其使用服务于多种功能的硬件。快速耐久存储可以多种方式实现,包括:持久性高速存储器,例如3DXpoint;耦合到存储设备控制器以及电池、电容器、或者一般地一种能量充足的电源的易失性RAM,其在失去外部电源或主电源的情况下,能够将存储在RAM中的数据传输到不同的非易失性存储(例如保留的大容量固态存储)。换句话说,为了耐久,从RAM传输到另一个非易失性存储的数据在RAM断电后的某一时刻、或在从其他类型的故障中恢复期间是可识别和可检索的。在一些情况下,可以使用其他类型的快速耐久存储存储器,例如低容量企业单级单元(SLC)闪存存储器,其中快速耐久存储被设计为高带宽、高复写率和更高的寿命,这可以导致该快速耐久存储相对于可以用于长期存储的其他类型的固态耐久存储具有更高的价格或每比特密度更低。
在一些示例中,可寻址大容量耐久固态存储器可以设计为较低的成本和较高的密度,其中该较低的成本和较高的密度可能是以较高的写入或访问延迟以及高复写率的情况下的缩短的寿命作为交换的。一个示例是闪存存储器,特别是多级单元(MLC)、三级单元或四级单元(QLC)闪存存储器,其中每个闪存存储器单元存储两比特、三比特或四比特,而代价是降低的比特级可靠性、增加的写入延迟、更大的对附近读取操作的干扰、或在闪存擦除块重用的情况下的缩短的寿命。包容的存储设备可以使用各种技术来优化这种类型的大容量存储的性能或可靠性,包括内部使用快速存储作为前端,以更快地响应或允许更有效地组织多个操作或实现与大容量存储器操作相关的内部原子操作。
在一些示例中,存储设备控制器可被配置为执行以下操作中的一个或多个:接收和处理从与存储设备上的快速耐久存储相关联的地址存储或检索数据的请求;接收和处理从与存储设备上的大容量耐久存储相关联的地址存储或检索数据的请求;接收和处理将数据从存储设备上的快速耐久存储传输到存储设备上的大容量耐久存储的请求;或响应于电源故障,使用来自电池、电容器或其他储能设备的存储能量,将作为快速耐久存储实现的一部分的易失性存储器中的内容传输到大容量耐久存储。此外,存储设备控制器可以使用与通用存储设备控制器功能相关联的CPU,或者可以使用专用或辅助功能的低功耗CPU,或者这可以是内置在FPGA或ASIC中的特性。
存储设备可以进一步支持以下特征中的一个或多个,并具有其相应的实现:(a)将快速耐久存储的区域作为I/O存储器或虚拟存储器映射到一个或多个CPU核心或存储控制器上的I/O存储器控制器,使得在电源故障的情况下,针对I/O存储器或虚拟存储器的CPU存储操作或者DMA传输可以保持,其中可以由存储控制器的CPU指令对此I/O存储器或虚拟存储器直接进行写入,操作系统调度延迟很少。(b)接收将整数值(例如,8字节、16字节或32字节值)存储到存储器位置索引中的一个的请求,其中存储器位置可称为一种寄存器类型,其中寄存器在断电时是耐久的,其中耐久性可以通过写入耐久快速存储的专用区域来实现;这些接收到的请求可以与其他请求一起承载,例如在其他请求被处理为耐久的时刻的时间点之前、之后或在该时间点处应用这些接收到的请求;(c)使用NVMe存储性能开发工具包API或支持高速存储操作而无需完成中断的一些替代API进行操作;这样的API可以专门支持快速耐久存储,或者可以支持存储设备上的快速耐久存储和大容量耐久存储二者,或者存储设备可以在其前端处内部使用一些快速存储,其中这些操作可以寻址为可寻址大容量存储;(d)接收将快速耐久存储或大容量固态存储的内容传输到存储设备内的快速耐久存储或大容量固态存储(或在某些情况下,传输到包含多个存储设备的存储系统内的另一存储设备的快存储速或大容量存储)的请求;(e)提供多个互连接口(例如基于双NVMe、SCSI或以太网接口),以提高内部存储系统互连故障时的可靠性,或者以通过在存储系统内提供多条路径或允许到例如一个或多个存储控制器中的每个的专用路径来提高性能;以及(f)为一组闪存芯片(包括存储设备的大容量耐久存储)的存储控制器提供直接可寻址页和擦除块,从而允许存储控制器处理损耗均衡、故障擦除块管理以及管理闪存生命周期的其他方面,这些方面在其他情况下通常是与存储设备本身上的闪存存储器芯片配对的控制器芯片处理的。
在一些实现中,存储系统可以由存储设备的集合构建,包括一些实现或协调存储系统本身的特性和逻辑的存储控制器。在图1D的存储系统体系结构中描绘了这样的存储系统的示例。此外,存储控制器逻辑可以实现用于创建可靠的存储服务的逻辑,该存储服务可以在诸如存储设备、存储设备的单个元件、单个存储控制器、存储控制器或存储设备逻辑、电源或内部网络发生故障等故障下继续存在,同时继续操作和提供存储系统服务。这样的存储系统服务可包括实现SCSI存储阵列、基于NFS或SMB的文件服务器、对象服务器、数据库服务、用于实现可扩展存储相关应用的服务或这样的服务的组合。存储操作可以包括创建快照、复制、在线添加或移除存储设备或存储设备托盘、存储控制器或电源或网络接口,或者管理操作(例如创建、修改或移除逻辑元素,例如卷、快照、复制关系,文件系统、对象存储、应用程序或客户机系统关系)以及其他操作。
在一些实现方式中,存储设备可以代表或协调通过存储控制器来存储和检索数据,该操作主要是在存储控制器的方向上,并且存储设备通常是在存储服务的总体实现作出贡献方面上的相对被动的参与者。然而,在一些示例中,存储设备可以被附加地配置为协助或卸载存储控制器功能,以便存储控制器提供更高效的服务,例如由存储设备部分地实现垃圾收集、数据扫描和擦除、或其他这样的服务、或者帮助引导存储控制器。
为了进一步说明,图3C阐述了示出示例性集成的存储控制器和设备元件(其将可访问快速大容量存储集成到大容量存储设备中)的图,这里称为统一存储元件(320),其中存储系统(124)可以使用多个统一存储元件(320)实现。尽管描绘得不太详细,但图3C中描述的统一存储元件(320)可以类似于上面参考图1A至图1D和图2A至图2G描述的存储系统,因为统一存储元件(320)可以包括上面描述的组件的一些或全部。
在图3C所描绘的示例性架构中,多个存储控制器(125)和多个存储设备集成到统一存储元件(320)中,其中统一存储元件(320)可以作为一个整体可移动,或者可以在单个电路板上移动,或者可以是由一个公共CPU控制,或者由多个CPU、FPGAs或ASIC控制,其中,存储系统中的每个这样的统一存储元件(320)同时充当存储控制器和存储设备功能二者。在这样的存储系统中,统一存储元件(320)的存储控制器功能可以访问存储系统中被类似于统一存储元件(320)配置的多个统一存储元件上的存储设备功能。在此示例中,存储控制器功能能够访问存储系统中的其他统一存储元件上的存储设备功能(例如通过存储系统中的内部网络),或者第一统一存储元件上的存储控制器功能可能必须通过第二统一存储元件上的存储控制器功能来获得统一存储元件存储设备功能。
在一些示例中,对存储设备的引用可以是指存储系统内的单独的存储设备,或者是指存储系统内的统一存储元件(320)内的存储设备功能。此外,在其他示例中,对存储控制器的引用可以是指存储系统内的单独的存储控制器,或者是指存储系统内的统一存储元件(320)内的存储控制器功能。
在另一实现方式中,存储系统可以包括各种元件的组合,这些元件包括不具有集成存储设备功能的专用存储控制器、不具有集成存储控制器功能的存储设备、或组合的存储控制器和设备元件。这样的组合可用于将存储系统从以一种方式操作的一代迁移到以不同方式操作的另一代,或者规模的各个方面可能指示一个功能相对于另一功能的一些额外数量,例如,大容量归档存储设备在系统中包括大量扩展存储设备,该系统的核心由组合的存储控制器和设备元件构建,或需要性能或外部互连的面向性能的设备可以从附加的存储控制器中获益,但不会从附加的耐久能力中获益。
在一些示例中,存储系统可以被配置为针对一个或两个或更多的存储设备的完全故障的情况,使用擦除码(例如基于单奇偶校验或双奇偶校验的擦除码,如RAID-5或RAID-6)而具有可靠性,或者针对不可纠正的故障、损坏、或存储设备内的独立元件(例如,闪存存储器中或单独芯片的独立页面或擦除块)的完全故障的情况,通过从同一存储设备内的其他位置重构内容,或者通过用于完全设备故障的单奇偶校验保护和双奇偶校验保护而具有可靠性。换句话说,在一些示例中,统一存储元件(320)的各种存储器组件可以单独地或组合地用于实现多个、不同的RAID级别或RAID级别的组合。在以下示例中,RAID条带是存储在映射到一组存储设备上的一组存储区域间的数据,其中给定存储设备上的每个存储区域存储RAID条带的一部分,并且其可以称为“条带”、“条带元素”或“碎片”。假设存储系统(306)可以同时实现RAID级别的各种组合,则“RAID条带”可以指存储在对应于给定RAID级别的给定RAID条带中的所有数据。通常,在以下示例中,条带、条带元素或碎片是单个固态驱动器上的一个或多个连续内存块—换句话说,单个条带、条带元素或碎片是分布到一组存储设备中的单个存储设备上的RAID条带的一部分。这样,RAID级别可能取决于RAID条带在一组存储设备中的分布方式。关于擦除编码,一般地,可根据N+R方案来描述擦除编码,其中对于每N个单元的内容数据,写入额外的R个单元的冗余数据,使得在能够恢复所有N个单元的内容数据的同时可以容忍高达R个故障。例如,RAID-5是示例性N+1方案,而RAID-6描述了一组N+2方案。在其他示例中,方案可以基于伽罗瓦(Galois)域、或可以覆盖广泛的N和R组合的其他数学类型。具体地,在某些情况下,存储系统中的每个给定存储设备在默认情况下可以本地地和直接地检测故障,作为一些示例,对读取或写入给定存储设备的所有数据使用校验和或数学完整性检查。然而,在存储系统中的给定存储设备不执行本地故障检测的情况下,可以应用其他技术,例如存储超出容错范围的附加碎片的各种编码技术(例如,三个奇偶校验碎片可用于恢复最多两个故障和最多一个附加损坏数据单元),或者通过使用可用于检测损坏数据的方式对所有数据(包括奇偶校验或冗余数据)进行编码。一般而言,在本文描述的实施例中,本地存储设备将在默认情况下执行本地数据完整性检查,其中数据碎片和冗余碎片可以彼此不同。然而,在一些示例中,不假定对局部完整性检查有这样的限制或依赖。
还应注意,擦除编码方案可以以多种方式在存储系统中使用。传统的存储系统最初是为旋转磁盘存储设备而设计的,通常以相对静态的方式将大型RAID-5和RAID-6布局分配为一组相对较大的(例如几千兆字节的)N+R个碎片,其中每个碎片是存储的内容数据的单元或存储的冗余数据的单元。在这样的方案中,对先前存储的内容的复写包括替换现有的内容数据碎片,以及使用某些步骤序列计算和替换现有的冗余数据碎片,以确保在该步骤序列中发生故障的情况下可以安全地完成操作。在一些情况下,这些步骤序列可以是计算密集型的,例如,在一些情况下,该步骤序列包括读取旧内容和冗余数据,或者从RAID布局中的相同逻辑偏移处的大多数现有内容数据碎片中进行读取,以便计算新的冗余数据。在其他示例中,该步骤序列可以包括多个持久化步骤,以确保在安全操作恢复时可以恢复中断的操作。
在使用旋转磁盘存储的示例中,故障可能包括损坏的块,其通常可以通过对这些块进行复写来更正旋转磁盘上的临时编码错误,或者通过允许旋转磁盘将坏块重新引导(revector)到备用位置来更正。旋转磁盘也可能因驱动其电机的问题、电机卡住或读/写磁头或执行器故障而发生电气或机械故障。在一些情况下,突然和过度的振动会导致读/写磁头与旋转的磁盘表面碰撞或物理接触,从而损坏磁头或刮伤磁盘表面,或在密封设备内散射颗粒。在其他情况下,电子设备可能会出现故障或密封件可能会损坏,从而使内部部件暴露在不受控制的环境中,该环境中具有可能导致磁盘故障的湿度或灰尘颗粒。简言之,虽然旋转磁盘通常是可靠的,但旋转磁盘可能会遇到灾难性故障的方式有很多;但是,也有例外,其中故障可以通过内部恢复进行修复,并针对偶发的坏扇区或坏磁道进行复写,或在存在几个坏扇区或坏磁道的情况下运行。
与旋转磁盘相比,固态存储不存在机械故障,性能不受振动影响,并且固态存储不太可能导致电压尖峰或其他电气问题。此外,固态存储设备通常不是单个设备,而是单个集成电路的集合,或特定集成电路中可能单独老化和失效(例如由于闪存单元的擦除/循环次数有限,或者由于芯片到芯片或单元块到单元块的制造变化)的区域的集合。然而,一些固态存储设备技术(尤其是基于闪存的存储设备)的性能可能会受到与擦除块写入、擦除或其他管理操作相关的内部操作、或在附近的单元上执行的读取(尤其是对于TLC和QLC闪存设备)的极大影响。固态设备中执行自身垃圾收集的单独元件在执行垃圾收集时可能会在一段时间内变慢或无响应。特别是闪存,其单独损坏块或不可用块的发生率比磁盘高得多,并且可能需要更多的内部错误更正和更多的备用块。考虑到闪存的工作方式,可以通过降低由随机复写导致的擦除周期的频率和延迟垃圾收集来展现比原始物理容量低得多的可用容量以延长闪存驱动器的寿命。这样的寿命延长技术可以与使写入数据的位置随机化的算法相结合,该算法中,可能取决于所存储的数据的预期寿命,偏向不利于或有利于相比于其他块已经擦除了更多次的块。
一般来说,闪存不会因为数据位置的随机性而受到减速的影响,这时因为假定在读取块时没有机械延迟,那么不论先前的、后续的或并发的读取是来自附近还是更远的位置或逻辑地址,任何不受并发写入或并发垃圾收集影响的读取通常都是非常快的。在一些情况下,将相对顺序的读取转换为相对随机的读取的惩罚对于磁盘来说是如此高的惩罚,以至于基于磁盘的存储系统通常避免随机化数据位置,以使应用程序的逻辑顺序读取在磁盘上保持为顺序的,这就是为什么RAID-5和RAID-6映射通常保持为相对静态的部分原因,其中当数据被复写时保留该映射(一些基于文件系统的模型,如ZFS是例外)。简言之,在磁盘旋转的情况下,对RAID-5和RAID-6数据集的较小复写通常需要读取旧数据、读取旧奇偶校验、写入新数据、写入新奇偶校验序列,其代价很高。用于基于磁盘的存储系统的更简单的映射还减少为了确定块的存储位置而必须保留和管理的索引数据的量。特别地,如果随机读取需要读取索引块(以确定块的存储位置)和块本身两者,则这包括两种随机读取和两种机械延迟,这从性能角度来看更差,因为延迟可能会翻倍,并且由于可用IOPS有限,吞吐量可能会降低。
此外,由于固态存储不具有旋转磁盘所固有的机械延迟,偶尔或甚至频繁地进行额外读取以确定块所在的位置不会导致高性能损失,因此,在写入数据时分散数据(导致可能超过可用的缓存存储器的较大索引,从而需要读取索引以定位数据)几乎没有什么缺点。例如,在执行较大读取之前执行的较小读取对性能的影响可以忽略不计。此外,通过发起一组较小的物理随机读取(在写入和复写时分散内容的结果)来服务较大的顺序读取请求的带宽通常仅比通过发起少量较大的物理读取来服务较大顺序读取请求的带宽小一点。与固态存储相比,在旋转磁盘的情况下,如果存储的逻辑顺序数据在物理上高度碎片化,则IOPS限制可导致由于可以是多个数量级的随机化数据位置而产生的吞吐量打击。
因此,由于旋转磁盘和固态存储的不同特性,固态存储解决方案通常避免在数据持久化时通过写入新位置和写入新擦除编码条带来复写存储的数据。当内容数据被写入时,数据可以被写入到N个动态分配的碎片(几千字节到几兆字节)中,其中分配和写入了R个匹配冗余碎片以进行匹配,从而实现N+R可恢复性。这样的处理协议避免了就地替换现有的数据,从而避免了通过一些安全更新方案修改就地冗余数据的需要。然后,可以基于实现最佳写入吞吐量的模式写出条带集合,其中之后的读取请求的吞吐量取决于固态存储的高IOPS速率,IOPS速率通常受到I/O互连可用吞吐量的限制,而不受到扇区之间切换的延迟的限制,至少只要存储设备经过适当的优化并包含足够数量的闪存芯片即可。
在统一存储元件(320)的一些实现方式中,可使用擦除码来确保任何完全写入的数据能够在一个或多个设备故障、或设备故障与局部数据损坏或段故障的组合下继续存在。此外,通过在存储设备中添加擦除码(例如通过计算在单独的存储设备中跨页、跨擦除块或跨芯片操作的擦除码),可以进一步提高可靠性。利用这种进一步的可靠性,存储设备内的孤立的、损坏的或不可读的块、擦除块或芯片的罕见情况可以内部恢复,而不依赖于附加的存储设备。这种进一步的可靠性在以下情况下是有帮助的:未检测到的和因此未校正的和孤立的错误在较长时间内存在,因此,如果其他两个存储设备由于事故或者作为用新驱动器替换旧驱动器的过程的一部分而完全故障或从存储系统中移除,并且潜在的孤立的损坏块无法通过N+R冗余技术进行纠正,则会使存储系统面临数据丢失。依赖于设备内未修正错误是罕见或其发生概率较低,跨页、跨擦除块或跨芯片的冗余数据可以以闲散的(lazy)方式或随着数据老化而写入。在此示例中,这些闲散的写入在电源故障的情况下可能会导致一些设备内冗余丢失,但存在非常低的可能性该少量的丢失的设备内冗余需要在重新启动时从与要启动的R个设备的同时高效相耦合的罕见的局部不可纠正错误恢复。用于在这样的存储系统中写入数据的带宽通常可以通过一次写入多个条带来提高。可以通过保持多个条带为进一步的更新保持开放,以允许在重载的情况下使用所有存储设备并允许在大量擦除块(如果是闪存的情况下)或大量固态存储芯片之间的活动性是平衡的,来完成一次写入多个条带。保持多个条带开放以最大化跨擦除块、跨芯片或跨存储设备的并行性可取决于支持大量并行传输的自定义存储设备和网络或总线。用于读取数据的带宽通常取决于对存储控制器和存储设备之间的大量并行传输的支持。获得最佳读取吞吐量可能还需要考虑对存储设备、存储设备和内部网络通道、固态芯片或闪存擦除块的特定写入流(或围绕其进行调度),以减少与写入相关操作的争用。可能会因写入争用而减缓、或者其本身可能使写入操作严重减缓(这在闪存设备中很常见)的读取操作可能会被延迟,可能会使写入操作延迟,或者可能会寻找用于读取数据的替代方法,例如从存储设备内或跨存储设备存储的擦除代码中恢复数据。
在一些情况下,存储的数据可能已过时或不再有用但仍继续占用存储空间,例如,已写入和分散的数据,以及从其复写的数据单独地分散的复写,以及通过删除快照或卷、或通过UMAP或TRIM请求、或通过SCSI扩展复制或类似类型的请求的删除的数据。一般地,一些垃圾收集过程可以识别不再使用或完全不再使用的页或段或擦除块,并将段中保留的任何有用数据移动到另一个存储器位置,从而允许页或段或擦除块用于新的存储的数据。在闪存存储器的情况下,可以对擦除块进行垃圾收集和擦除,然后它们才能重新用于新数据。
在一些实现方式中,进一步的优化可以基于存储模型,例如通过统一存储元件(320)的快速存储器进行暂存推测性写入。例如,在一些存储系统中,可以存在对某种快速存储的写入,以通过使操作或结果更快速地持久化的方式记录操作或操作结果,从而实现以下益处中的一个或多个,包括:(a)使能够更快地发信号通知操作已完成;(b)使内部存储系统进程能够更快地被解除阻塞,同时允许建立较大的更改队列以写入较慢的大容量存储;或者降低临时数据(其可能会很快被复写)首先被写入大容量存储的可能性,从而提高闪存的使用寿命;或者(c)使多个操作能够合并在一起,以实现更高效或更有组织的存储操作,从而提高闪存的使用寿命,并可能提高吞吐量。此外,如果存储系统中的单独的存储设备提供快速耐久存储(例如3D Xpoint存储器或在断电时写入闪存的由电池或电容器支持的DRAM)和大容量存储(例如,大容量MLC、TLC或更高的比特/单元的闪存),则可以改进通过快速存储进行暂存的典型方法。在典型的存储系统实现方式中,存储系统向快速存储进行写入(例如通过将至少两个副本写入至少两个单独的快速存储器(每个存储器位于不同的存储设备上)),然后,在稍后的某个时间,存储系统将该数据写入大容量存储。这样的写入操作实现方式可导致从存储控制器到各个存储设备的两组传输,一组传输到快速存储,另一组传输到大容量存储。因为相同的数据被传输至少两次,甚至可能超过两次,这两组传输在存储控制器和存储设备之间使用相当多的额外带宽。例如,通过将三个副本写入三个存储设备上的快速存储并然后将数据一起分组到N+2擦除编码的条带来暂存内容数据写入可导致总带宽超过写入本身大小的四倍。这种带宽消耗可以通过使用M+2编码以用于存储到快速耐久暂存空间中来减少,其中M是内容数据碎片的单独的数量,然后这些内容数据碎片与冗余数据碎片耦合以写入快速暂存空间;然而,可能仍存在超过写入本身大小两倍的带宽使用。
减少带宽开销的一个示例是存储设备将快速存储用作内部暂存空间,从而更快地向存储控制器确认写入,然后在稍后的时间点对大容量存储进行写入,其中该稍后的从快速存储到大容量存储的写入对于存储控制器可能是不可见的,因为在该写入被确认的时刻,对存储控制器而言,写入是持久化的,或者是耐久存储的。在一些情况下,这样的写入协议(其中存储控制器不知道数据的内部传输)可能会消除对单独可寻址快速耐久存储的需求。然而,通过允许存储控制器管理在快速存储和大容量存储之间传输数据的过程,而不是使存储设备在幕后隐式地进行这些传输并对存储控制器隐藏快速耐久存储,将获得显著的灵活性。换句话说,通过允许实现方式的更高级别的方面在处理流水线中较早地记录到快速耐久存储而优化其整体操作,存储系统实现方式获得许多灵活性,并且失去该灵活性以获得较低的后端带宽可能是不可接受的交换。
在一些实施例中,减少用于后端数据传输的带宽的解决方案是利用通过快速存储进行的暂存。在此示例中,如果写入首先被作为三个副本写入三个单独的存储设备的相应的快速存储上的快速存储,其中该多副本写入的内容与其他写入的内容聚合以在大容量存储中形成N+2保护的条带,然后,如果选择用作快速存储的存储设备中的一个是要被选择用于最终写入大容量存储的同一存储设备,则存储控制器可以通过指示存储设备从快速存储传输到大容量存储来避免用于向大容量存储进行传输的额外的存储控制器到存储设备带宽。在一些情况下,可以通过诸如合并之类的转换来避免额外的传输。在此示例中,在写入和提交最后的N+2条带之前,将相应副本存储在快速存储中的其他两个存储设备将保留各自的副本,但在故障和恢复序列之外的情况下,该其他两个存储设备不需要对相应的副本执行附加的、相应的写入或复制。在一些示例中,写入快速存储的数据格式与写入大容量存储的数据格式相同,因此,在传输之前不需要进行数据转换。在其他情况下,其中写入快速存储的数据的格式与写入大容量存储的数据的格式不同,则传输可以包括在从快速存储到大容量存储的传输期间对内容进行转换,其中该转换可以基于来自存储控制器的指令并且可能与来自快速耐久存储中其他存储的写入的合并的内容相协调。
在一些示例中,从大容量存储到快速存储或从快速存储到大容量存储的传输可以同时进行,其中这种并行性可以增加带宽或减少存储控制器软件实现中的锁定争用问题。例如,存储控制器中的单独的CPU核心可以使用到存储设备的单独信道,从而消除锁定争用,同时为传输到存储设备的每个存储控制器CPU核心增加带宽。
此外,将内容传输到快速存储的传输与将内容从快速存储传输到大容量存储的传输之间的分离允许其他类型的优化。例如,数据可以作为M+R1条带被写入在快速大容量存储中,以便以N+R2条带被存储在大容量存储中,或者数据可以部分地或完全地填充N+R条带中的碎片子集,从而产生中间M+R条带(其中M<N)。在一些示例中,R、R1和R2可以相等,但在其他示例中,可以定义为不同的值。此外,作为示例,在10+2条带中,可存在足够的累积数据以将部分段写入为5+2条带,从而允许在两次故障时可靠地写入快速写入数据,但只需要40%的额外开销,而不是写入3个完整副本所需的200%的额外开销。在此示例中,在所有N+2碎片完成之后,可以将校正的P和Q奇偶校验(给定RAID-6擦除码格式)写入存储设备,并且可以指示具有快速耐久存储(其包括完成的数据碎片)的存储设备将完成的数据碎片从快速存储写入大容量存储。
在此示例中,将三个单独的副本写入快速存储,然后进行到大容量存储的优化的N+R传输的开销可导致带宽消耗,该带宽消耗稍多于从存储控制器传输到存储设备的数据的三倍,相比之下,在不存在从存储设备中的快速存储到大容量存储的传输的指令的情况下,带宽消耗是四倍。然而,前面的示例可能会将快速存储和大容量存储之间的总传输减少到总数据的160%,并且在具有较宽条带的示例中,可以进一步减少开销。
在一些示例中,可以将多个M+R部分条带同时写入快速存储器,包括针对相同的N+R条带或针对不同的条带。在此示例中,每个M+R条带可以由其自己的部分或完整的奇偶校验碎片保护。该部分或完整的奇偶校验碎片应在写入的数据中是可识别的,例如通过在写入到快速存储的每个部分的内容中记录M+2布局,或者通过记录序列号或其他标识符,该序列号或标识符可在稍后的恢复期间跨存储设备进行比较。
在一些实施例中,一种变化可以是跨N+R条带的大部分或所有碎片的部分区域交织较小的写入,例如,一次计算P和Q一个部分。当N+R条带的完整内容可用时,存储控制器可以指示存储设备将现在完整的碎片传输到相应的大容量存储。在一些情况下,部分条带的格式可以包括与将写入大容量存储的格式稍有不同的头部或其他信息;如果是这种情况,则可指示存储设备转换格式并计算更新的冗余碎片。
此外,如果数据在传输到大容量存储之前在快速存储中累积了一段时间,则存储控制器可以确定某些内容不再被需要或将不再被请求,并且响应于此确定,存储控制器可以部分或完全地避免到大容量存储地传输。如果确定数据已被复写,或者数据是经过重新组织或优化的元数据,则可以避免此类传输。在重复数据删除操作包括确定某些数据已经写入存储系统某处的大容量存储器的情况下,避免这种传输也可能发生,从而避免已存在的数据的传输。在其他示例中,部分替换的数据(例如如果是M+R条带的情况下)或N+R条带中部分写入的碎片在被传输到大容量存储之前可能变得无效或不必要,作为结果,最终N+R条带的一部分可以在任何这样的传输之前被替换、消除或重新组织。
在不同的实施例中,由于快速存储空间可能受到限制,存储系统的实现方式确保最终要写入大容量存储的数据以足够及时的方式实际上被写入大容量存储并实现跨存储设备可靠,使得存储系统通常不必暂停等待快速存储释放以供重用。
在一些实现方式中,可以使用不同的存储设备子集来执行一致恢复。例如,如果某个存储控制器发生故障并重新启动,或者某个控制器发生故障而另一个控制器接管发生故障的控制器,或者当若干存储设备脱机然后重新联机,或者当某个存储系统通过一系列事件(电源故障、电源浪涌,意外的管理关闭命令,或者出现错误,以及其他示例),存储服务可能必须重新启动并从可用的存储设备恢复。在恢复期间,可能会发生第二事件,导致存储服务脱机,然后再被恢复,并且中断的恢复序列可能会自我重复多次。在每次恢复期间,不同的存储设备集可以联机,或者某些存储设备联机的速度可能比其他存储设备慢得多,从而导致存储服务决定从联机存储设备恢复,但每次都使用不同的此类存储设备集。这种中断恢复序列可能会对跨存储设备冗余存储的数据造成问题,例如通过将相同数据写入多个这样的存储设备(RAID-1或镜像)或通过跨多个存储设备写入擦除码(例如RAID-5或RAID-6)以实现在面临一个或多个存储设备故障时的可靠性。
作为处理中断恢复的一个示例,考虑在两个驱动器故障冗余的存储系统中使用的存储设备,例如将N+2段数据作为RAID-6样式的条带写入的存储设备,这些条带形成一些(例如N个)数据单元(例如,碎片)和存储P和Q奇偶校验的大小类似的两个碎片。进一步考虑当新数据流入存储系统时段会被写出,其中存储的数据的虚拟地址与该数据的物理位置没有固定的对应关系,而不是像传统的RAID存储系统那样被部分重写到固定的位置。
在此示例中,存储系统的内容可以被视为被提交,并且可在重新启动后确定可恢复的内容,其只能访问持久化内容。然而,可能存在问题:可恢复内容取决于恢复开始时可用且准备就绪的特定存储设备集。如果N+2个驱动器中的N个或N+1个驱动器在恢复之前发生的故障之前用于特定的N+2条带写入,那么恢复能力取决于恢复开始时哪些驱动器可用。如果写入的驱动器中有N个在恢复时可用,则该RAID条带的内容是可恢复的。如果已写入的驱动器中有N-1个可用于恢复,则该条带中的至少某些数据不可恢复,但在启动过程中,可能会有未用于写入某些条带的一个或两个驱动器可用,因此,存在可能丢失一些部分写入的数据的一个或两个驱动器故障的组合,以及不会丢失相同的部分写入的数据的一个或两个驱动器故障的其他组合。
继续这个示例,这个问题的一个解决方案是在启动时基于任何可恢复的数据进行操作,而忽略任何不可恢复的数据。在正常操作下,N+2条带的所有碎片的不完整写入应只在以下情况下发生:在存储系统或存储控制器发生故障之前某些正在进行的写入未完成,或者存储设备出现故障导致持久性部分故障时。这样,可以通过在考虑写入完成之前将失败的碎片写入新位置,或者通过以某种方式持久地将该设备标记为已故障来处理存储设备故障,从而使其不会被视为存储系统或存储控制器启动时最新内容的可行源。
以本示例结束,只要条带的写入完成(或通过一种或多种技术使任何数据是N+2冗余的),则存储系统逻辑可以认为该写入是耐久的和可恢复的,因此存储系统可以转向一些新的写入集,该新的写入集依赖于之前的写入是保证可恢复的。例如,第一写入可以存储表示卷的快照的建立的数据,第二写入可以表示在该快照后写入该卷的新数据。该第二写入是在第一写入所建立的结构的上下文中写入的。
在一些实施例中,作为替代,快照和写入可以并发,使得写入包括在快照中(从而与卷及其快照的耐久结构的一个版本相关联),或者可以从快照中排除写入(从而与卷及其快照的耐久结构的另一个版本相关联),或者快照和写入中的一者或两者可以被备份为从未发生过,如果快照请求和写入都未完成并且向请求者用信号发送为已完成,则这些结果都是一致的且可接受的。
继续本示例,在快照和写入正在被处理时,存储系统或控制器可能会第一次出现故障,而快照(在第一次出现故障时)可能已写入了N+2个设备中的N个,而写入可能已写入了N+2个设备中的M个。在此示例中,在恢复期间,存储系统可以采取措施以清理或向前移动数据结构,以使存储系统准备好处理新的写入。此外,如果在恢复期间有一个或两个设备不可用,则在没有该两个不可用的设备的情况下,快照或写入中的一者或二者可能是可恢复的,或者可能二者都不可恢复。后续的第一恢复动作可以取决于哪些设备不可用,这可以涉及在某些其他设备集上写入受某个替代L+2数据保护方案保护的新数据,以最终确定卷及其快照链的干净结构,以及落入或不落入快照中的某个的数据的干净结构。在此示例中,如果在第二存储系统或存储控制器发生故障之前,L+2冗余数据的写入仅写入到L个设备,则第一恢复动作的后续第二恢复也可取决于在第二恢复期间哪些存储设备可用。然而,在第二恢复期间,不同的两个设备可能不可用,从而导致对快照或写入是否可恢复的不同回答,以及对第一恢复动作是否可恢复的一些独立回答。如果第一恢复动作确定对于快照或写操作是否可恢复的一个答案,而第二恢复确定对于快照或写操作是否可恢复的另一个答案,则这种场景可能会导致问题。请注意,可以从可用的存储的数据中计算得出确定写入的信息是可恢复的,而不可恢复的信息可能只是对于恢复是未知的,因此恢复可能不会显式地确定该信息是不可恢复的。例如,对于2+2RAID-6条带,假设在导致稍后恢复的故障之前只写入了两个数据碎片,那么,只要在恢复期间这两个碎片可用,数据就是可恢复的。否则,在此示例中,如果在恢复期间只有P和Q碎片可用,那么根本就没有可用的条带知识。
在此示例中,可能存在以下场景:第一恢复确定卷中的快照和写入都是可恢复的,但是恢复动作之后必须确定写入是否应被包含在快照中或被排除在快照外。然后,第一恢复动作可以包括写入快照存在并具有名称的记录,并且可以包括包含快照中的写入内容的元数据更改(其引用添加到表中的写入内容)。
继续此场景,如果在第二恢复期间,第一次恢复动作中的L+2数据的写入和快照一样被恢复,但快照中包含的写入本身并没有恢复,则可能存在与快照关联的元数据,该元数据包含本身不可恢复的数据(并且可能由于给定的可用的设备集而完全未知)。取决于存储系统实现如何处理此场景,这样的结果可能不一致,并可能损坏元数据。
此外,在第二恢复期间,可以通过基于所恢复的内容写入进一步的数据和元数据来采取动作以完成恢复的动作,并且在该恢复期间可能会发生故障,从而导致基于可能不同的可用和不可用设备集的第三恢复。
但其中一些场景的可能性可能很低,因为这样的场景可能依赖于在针对利用恢复期间可不用的两个或更多个设备可恢复的数据已经写入了足够的数据(而未写入更多的数据,因此无论哪两个设备后续不可用,数据都被保证可恢复)之后,在写入冗余数据期间的狭窄时间窗口期间的故障的特定组合。换句话说,这样的场景可能需要一系列故障和恢复,其中每个故障都发生在这些狭窄时间窗口中的一个期间,并且它们要求在后续恢复期间不同的一个或两个设备集不可用。然而,虽然这样的场景可能只是偶尔发生,或者很少发生,但是这样的场景是可能的,并且实现应该具有减轻它们的策略。
在一些实现方式中,防止这种场景的策略可能包括使用两阶段提交,其中数据作为一组未决更改写出,并且一旦写出所有更改,则会写出小得多的提交。然而,提交可能具有相同的问题。换句话说,如果期望存储系统在具有两个出现故障的存储设备的情况下恢复,则必须至少写入提交的三个副本,或者必须使用N+2冗余方案写入提交本身。例如,如果写入了三个副本中的一个或两个副本,则一个恢复序列可能知道该提交,而第二个恢复序列可能无法知道提交,反之亦然。在这个示例中,如果提交本身的存在被用作恢复中后续步骤的基础,并且如果第二恢复的正确性取决于看到相同的提交(或缺少该提交)来确保后续步骤中写入的任何内容都被正确地处理,那么在第一恢复和第二恢复之间的不一致性可导致损坏的情况下,同样的问题也适用。
此外,本文的示例可以实现任何N+R方案,其中R是表示冗余数据的碎片的数量,其中可以使用任何N个有效的、已写入的和可用的碎片(无论是数据碎片还是冗余碎片)来恢复内容。此外,如果在发生故障之前写入了至少N个(但少于N+R个)碎片,那么如果在恢复期间至少N个写入的碎片可用,那么相关联的数据是可恢复的。然而,如果在恢复期间可用的写入碎片少于N个,则某些内容可能无法恢复。此外,在此示例中,如果在第一恢复期间存在导致第二恢复的第二故障,或最终第三故障导致第三恢复,以此类推,则如上所述,不同的可用设备集可以改变具有足够数量可用碎片的写入的条带集。
在统一存储元件(320)的一些实现方式中,恢复可以基于记录可用存储设备列表。这样的可用存储设备列表可以提供用于确定跨多个重新启动的一致的可恢复数据集的解决方案,其中该解决方案可以包括终止第二恢复的工作,其中,如果该第二恢复是在具有不兼容或不同的检测到的失败存储设备集的第一恢复之后进行的,则该第二恢复检测到故障的存储设备。这样的恢复协议可以以两种方式之一进行操作:在恢复期间,在进行可能导致后续恢复中不一致性的任何其他更改之前,生成可用存储设备列表,该列表指示包含在给定恢复序列中的设备集。该可用存储设备列表可以写入到所有可用存储设备。在可用存储设备列表被写入所有可用存储设备之前,以及在该写入对于这些存储设备中保证恢复的后续检测的的足够数量的存储设备是成功的之前,将阻止继续执行进一步的恢复。
然而,此解决方案可能会带来一个问题:如何以在第二、第三或第四恢复(其中第二、第三或第四恢复中的每个均具有不一致的可用设备集)中是可靠地可恢复的方式来记录可用设备列表?尽管维护这样的列表可能是困难的,但是此信息比所有擦除编码条带集更简单。在针对R个故障而冗余的存储系统中,一个示例性解决方案包括在继续进行恢复之前将可用设备的列表写入至少2×R+1个存储设备。在此示例中,当R为2时,缺少不同的两个存储设备集的后续恢复将看到这些可用存储设备列表中的至少三个。替代地,如果可用存储设备列表的写入已写入R个或更少的存储设备,则后续恢复可能看不到可用存储设备列表,或者可能只看到列表的一个副本。如果后续恢复完全看不到可用存储设备列表,则先前的恢复无法前进到进行任何不兼容的更改,并且新的可用存储设备列表可以表示为另一2×R+1存储设备集。如果后续恢复看不到可用存储设备列表的至少R+1个副本,则先前的恢复无法前进到进行更改的程度,并且当前的可用设备列表可被写出。替代地,如果后续恢复看到先前的可用存储设备列表的任何副本,则可以使用该可用存储设备列表。
继续此解决方案,无论以何种方式使可用存储设备列表可靠,一旦第一恢复期间的故障导致第二恢复的分析,如果确定在第二恢复的分析期间的可用存储设备与第一恢复期间(第一恢复可能已经进行到写入可用存储设备列表的时间点之后)的可用存储设备没有足够的重叠,则停止恢复。如果有足够数量的存储设备恢复联机,则第二恢复可以在该时间点之后进行,但不能在该点之前进行。换句话说,在此示例中,第一恢复的可用存储设备列表和第二恢复的可用存储设备列表的并集不能是大于R个设备的集合。
在统一存储元件(320)的一些实现方式中,恢复可以基于允许的条带的标识。在此示例中,解决方案可更容忍不同的存储设备集在从先前中断的恢复的后续恢复上可用。例如,可以将允许的提交标识集定义为与存储系统中允许的数据相关联,并且可以将不允许的提交标识集定义为与存储系统中由于一个或多个原因而不允许的数据相关联。
在本示例性解决方案中,可能存在包括以下项中的一个或多个的几种类型的数据:擦除编码条带(其中每个条带都与至少一个提交标识相关联)、最近提交的提交标识、允许的提交标识集、不允许的提交标识集、或未来提交标识集。
继续本示例,当将数据写入擦除编码条带时,直到该数据被完全写入,从而保证该数据在恢复期间由任何足够大的可用存储设备集恢复,存储控制器才可认为数据被提交。延迟数据被提交的这种协议可以包括,在等待直到例如N+R条带的所有碎片都全部写入后,该N+R条带中的任何内容才可以提交。在此情况下,可只有一个提交标识与该条带相关联,其中该提交标识可存储在该条带中的某个位置,在恢复期间该位置应可用。如果可以使条带的一部分耐久和可恢复而无需使整个条带耐久和可恢复(如前几段所述),例如通过使用匹配的双奇偶校验对碎片的子区域进行写入,或通过将写入镜像到快速存储器,或通过写入N+R条带的部分M+R碎片(或前述的任何其他技术),则提交标识可与条带的那些部分元素相关联,但随后,此论点的其余部分应用于该部分条带,在继续到提交该部分条带之前,该部分条带仍必须完全持久化。
此外,在此示例中,在可以依赖任何这样的写入的数据之前(在其被视为存储系统的可恢复、耐久的内容之前),必须记下与写入的数据相关联的提交标识,以确保它们最终将位于允许的提交标识集中。允许的提交标识集可以写入后续碎片的头部中,或者允许的提交标识集可以写入存储设备上的快速存储中。在其他情况下,关于上述存储设备,允许或不允许的提交标识集可以存储在存储设备上的存储器映射耐久存储器中,或者写入存储设备上的耐久寄存器中。将允许或不允许的提交标识集写入后续碎片的头部可取决于等待足够的新数据来触发将新数据持久化到新碎片中。在一些示例中,可以快速地完成将提交标识直接写入快速存储器、或存储器映射的耐久存储器或耐久寄存器中,从而允许写入的数据被认为可更快速地耐久地恢复。
为了使数据被视为可靠地被提交,以使存储系统实现可以依赖于已经可靠提交的数据继续操作,用于被视为可靠地被提交的数据的相关提交标识必须写入至少R+1个存储设备,但在继续之前,提交标识可写入比R+1个更多的设备。
在一些实现方式中,最近写入的数据的恢复可以基于识别要恢复的数据的提交标识,以及基于确定这些提交标识是否写出为被提交。在此示例中,如果识别的提交标识被确定为被提交,则数据已完全写入并且可以安全地认为已提交。换句话说,如果确定识别的提交标识为被提交,则无论N+R条带的哪R个或更少的子集不可用,数据是可恢复的。为了确保后续恢复也将看到提交标识为被提交(可能使用不同的可用存储设备子集),如果提交标识的恢复的提交尚未写入足够数量的存储设备以确保其可恢复,则应再次将其记下。
在一些示例中,可能会出现恢复无法识别一组提交标识的提交记录的情况。在一个示例性解决方案中,在给定的恢复期间,如果给定的恢复过程确定其提交未被该给定恢复过程找到的提交标识列表,则该提交标识列表可以写入到不允许列表,其中该不允许列表显式地将提交标识从被认为是对于存储系统有效的内容中移除,或者其中该不允许列表存储该提交标识无效的指示。更具体地,恢复过程可以生成两个列表:(a)允许列表,其表示代表对于存储系统有效的内容的全部提交标识集,以及(b)不允许列表,其表示特定地不代表对于存储系统有效的内容的提交标识集。一旦确定了允许列表和不允许列表,则允许列表和不允许列表可以作为新数据写出,在某些情况下其由新的提交标识集表示,并通过将这些新的提交标识写入足够数量的存储设备来提交。
继续本示例,一个用于确定要添加到不允许集的提交标识集的解决方案是确定哪些提交标识存在于写入数据中但缺少在恢复期间发现的那些提交标识的持久化提交。确定丢失的提交标识集的另一个示例性解决方案是,在存储系统操作期间建立允许的未来提交标识集,并使该允许的未来提交标识集在任何这些提交标识可用于写入新数据之前为耐久的。这将产生三个列表:(a)允许的提交标识、(b)不允许的提交标识、以及(c)潜在的未来提交标识。所有这三个列表可以一起或分开写入,其中该三个列表可以与使列表持久化的写入的提交标识相关联,并通过将这些提交标识的提交记录写入足够数量的存储设备来提交。在一些示例中,在恢复期间确定要添加到不允许列表中的提交标识可包括读取最后一个提交的未来提交标识列表(其中提交的未来提交标识列表可取决于找到可恢复的提交记录的最后一个此类列表),确定未找到提交记录的提交的未来提交标识列表的子集,然后将该子集添加到不允许的提交标识列表中。
在此示例中,可以通过使提交标识顺序化来简化允许、不允许和未来交标识列表。在不包括故障和相应的恢复的正常操作期间,未来提交标识列表可以描述为或可以指示从某个已使用且完全被提交的编号到某个尚未完全被提交的未来编号的范围。在存储系统或存储控制器启动时或在恢复之后,该数字范围的起始可以设置为某个值,该值必须超过由于存储设备不可用而可能丢失的任何提交标识。在已使用范围内的序列号之前,可以写入新的范围,其中写入新范围的过程可以使用并提交至少一个提交标识,因此,应该在使用当前范围内的最后一个序列号之前写出该新的范围。此外,当数据被写入、提交,并且数据提交被添加到允许列表中时,范围的起始可以前进到任何进行中的写入和提交之前的提交标识。
继续本示例,顺序的标识符范围的使用还可以简化允许和不允许列表。例如,在恢复期间,任何未在不允许列表中并位于未来提交标识范围的第一个数字之前的提交标识都可能被视为是允许的,除非该提交标识已例如在先前的未完成的恢复中被不允许。此外,即使这些提交标识中的一个从未被使用过,该提交标识也不可能与部分写入和提交的数据相关联,这就为将允许和不允许列表压缩到一组范围中创造了条件。在此示例中,在未来提交标识范围的起始和找到提交标识的提交记录的范围中第一个编号的前一个之间的提交标识集是不允许的,从而创建一个范围。此外,在找到提交标识的提交记录的未来提交标识范围的最后一个编号之后的一个编号和未来提交标识范围本身的最后一个编号之间的提交标识集也是不允许的,从而创建另一个范围。在某些情况下,未来提交标识范围中的其他提交标识可能会产生更混乱的集合,该集合可包括允许或不允许的各个提交标识,或者其中范围中的所有提交标识都是允许的或不允许的的可压缩子范围。
为了完成本示例,使用范围的另一个步骤或考虑可能是跟踪在提交数据之前写入该数据时遇到错误的实例。例如,如果擦除编码的部分或完整条带由于例如擦除块或存储设备故障而无法完全写出,则可以将内容重写到新设备集上的新部分或完整条带。在此情况下,写入数据的第一次失败的尝试应被无效化,并且此无效化可以通过将与失败的写入相关联的任何提交标识添加到不允许列表来完成。否则,前段中描述的简单范围模型可能无法使恢复中不完整的数据为不允许的,并且可能会将数据添加到允许列表中。
在统一存储元件(320)的一些实现方式中,可以在不使用多个可寻址存储类的情况下实现数据和恢复模型,其中存储系统可以在不可见的情况下执行某些存储类活动。然而,假定统一存储元件(320)可以包括快速耐久存储和大容量耐久存储,则与没有多个可寻址存储类的情况相比,提供多个可寻址存储类可以为加快数据存储和系统恢复提供良好的基础,并且可以为使数据存储和系统恢复与闪存存储一起更好地工作提供良好的基础。示例如下。
作为一个示例,如前所述,可以通过将其写入足够数量的存储设备上的存储器映射耐久存储、快速耐久存储或耐久寄存器来提交提交标识。此外,将部分或完整条带的数据传输到快速耐久存储可以允许在将数据传输到大容量存储之前将其暂存到存储设备,其中该大容量存储的操作可能依赖受限的操作模式以获得最佳性能或最长的存储设备寿命。此外,如上所述,允许、不允许和未来提交标识,尤其是未来提交标识,可以通过将这些不同类型的标识数据写入快速耐久存储来实现。特别地,在一些情况下,未来提交标识的范围可以写为两个编号,并且其可能存储在耐久映射存储或耐久寄存器中,从而允许使用范围(可能是几百个潜在的提交标识的范围)内的任何标识,并且通过写下一个或两个编号以更改该范围的起始或结束来允许扩展或移动该未来范围。
作为另一个示例,在将存储在快速耐久存储中的数据传输到大容量存储时,对其进行重新组织或重新格式化可不需要额外的提交阶段,因为在传输期间,在存储控制器指示对数据进行重新组织或重定格式之前,该数据很可能已经确保位于足够数量的存储设备上。
作为另一个示例,在将内容转换为例如RAID-6格式之前将其镜像到多个存储设备的模型,或者在将M+R内容转换为N+R内容之前将其写入的模型,可能需要将提交标识与M+R内容相关联。在此示例中,对于要提交的完整擦除编码条带的任何其他部分可提交写入,其将具有至少一个与内容相关联的提交标识,以便可以其通过提交算法进行操作。此外,提交标识的记录本身可以作为后续的部分可提交写入来写入,甚至写入到相同的擦除编码条带。
在统一存储元件(320)的一些实现方式中,统一存储元件(320)的特性可以应用于各种冗余模型。此外,存储设备也可以具有内部冗余,或者存储控制器可以在存储设备中存储冗余数据,以处理单独的块、擦除块或芯片的局部故障。以下示例中的大多数考虑完全失效的存储设备,或者没有通电并使其及时可用的存储设备。然而,在一些情况下,例如,N+R条带中的某些数据可能由于操作的和可用的存储设备中的失败的或损坏的读取而不可用。此外,内部冗余可能会减少其成为问题的情况的数量(减少到在统计上不可信),但内部冗余也可能失效,并且一些存储设备可能未部署的足够的内部冗余,以致于无法从所有非灾难性故障模式中恢复。
继续此示例,处理这样的故障可以通过以下实现方式解决,其中如果恰好R个设备没有正确启动,那么该实现方式避免联机,相反地,该实现方式等待直到不可用的存储设备的数量下降到R-1个或更少才联机。或者,一实现方式可以确定在恢复之前的故障发生时可能正在运行的所有数据的可恢复性,然后确保在进行到可能影响后续恢复的更改之前,没有任何数据遇到不可恢复的错误。作为替代方式,如果在可能已写入至少一个附加的(但当前不可用)冗余碎片的块中遇到潜在损坏,则存储系统可能暂停或出现故障,以等待确定该冗余碎片的存储设备是否最终恢复联机。
此外,请注意,存储系统可以对不同的数据使用不同的方案。例如,一些数据可以写入为两个镜像副本,这两个镜像副本对于其中一个出现故障是安全的,其他数据可以以RAID-5样式的N+1方案写入,并且其他数据可以以RAID-6样式的N+2方案写入,或者甚至使用三个或四个镜像副本、或者使用N+3方案来实现三故障冗余(可能用于关键但低容量的元数据)。此外,不同的数据可以跨不同的设备子集被条带化或镜像,其中一些子集可能以不同的方式重叠,而其他子集可能不重叠。关于完整、可恢复、不完整和不可恢复数据之间相互关系的任何陈述都应考虑与每种数据类型相关联的完成和可恢复性模型,因此,例如如果RAID-6条带的内容遵循并依赖于推测已完成的RAID-5或两个镜像拷贝写入,则在恢复期间RAID-6条带的双故障冗余有效性可取决于单故障冗余内容的可恢复性,而不管每个写入的数据集的存储设备集如何重叠或不重叠。
此外,存储系统可以划分存储设备,使得冗余在受约束的设备分组内操作(可能围绕诸如封装或内部网络和总线等自然划分进行组织)。这样的受约束的设备分组可以称为池、或写入分组、或RAID分组,或者称为其他名称。在此示例中,这样受约束的设备分组被称为写入分组,其中写入分组背后的原理是,使用该写入分组中的任何存储设备的任何N+R条带将只将碎片存储在同一写入分组中的其他存储设备上。例如,如果写入分组A中存在12个存储设备,写入分组B中有12个存储设备,则数据和冗余的任何配对都将要么约束在写入分组A中的12个存储设备中,要么约束在写入分组B中的12个存储设备中。在一些情况下,存储系统的写入分组可能具有不同的大小和不一致的大小。此外,随着存储的添加,可以扩展写入分组以包括更多的存储设备,或者可以向存储系统添加额外的写入分组。在一些情况下,存储设备的增量添加可导致在使现有的写入分组过大或使新的写入分组太小之间做出选择,在这种情况下,存储系统可以拆分现有的写入分组并对现有的内容进行转换以匹配新的写入分组布局。这些约束可以通过限制跨所有条带上的故障设备的交集来限制由设备故障引起的损坏。作为说明性示例:如果写入分组A中两个设备出现故障,而写入分组B中一个设备出现故障,在写出条带或恢复期间,没有N+2条带能遇到所有三个故障设备,因为存储在写入分组A中的任何条带(可能包括写入分组A的两个故障设备)都不会包括写入分组B中的故障存储设备,而存储在写入分组B中的任何条带(可能包括写入分组B的一个故障设备)都不会包括写入分组A中的两个故障设备中的任一个。
为了完成这个示例,在分配冗余数据的碎片时实现写入分组或其他类似约束的存储系统中,关于允许继续的操作或成功的恢复的故障存储设备的数量的前述讨论应将这些规则应用于这样的各个设备分组中,而不是应用于整个存储系统。
在一些附加实现方式中,将暂存的数据擦除编码到快速耐久存储和大容量存储可以在存储系统中执行。例如,考虑具有两个或多个控制器的存储系统,其中每个控制器连接到多个存储设备,其中存储设备中的多个连接到存储控制器中的一个或多个,并且其中至少一部分存储设备包括以下两者:(1)支持高传输速率、或可预测的低延迟、或高且持续的复写率或这些特性的组合的可寻址快速耐久存储,以及(2)可寻址大容量存储,其可以实质上大于可寻址快速耐久存储,或者在不降低存储寿命的情况下不支持高复写率,或者可以具有更差或更少的可预测延迟、或这些属性的某些组合。在此示例中,每种类型的存储都是可寻址的,并且对于至少从它们连接的存储控制器中的每个进行读入和写入是单独可访问的,并且其中,存储设备还可以支持从连接的存储控制发出的将内容可能从可寻址快速耐久存储以及可能可能从可寻址大容量存储传输到其他存储设备的命令,或者还可以支持将特定内容从快速耐久存储传输到大容量存储的命令,可能涉及某些格式或计算的擦除码的转换。
在一些实现方式中,存储设备或存储控制器的一些功能可以组合或共存于存储系统的统一单元(即,可移动单元或电路板)上,其中在一个这样的单元上的存储控制器功能中的一个或多个可以进行通信(如本文所述),并且其中存储设备功能可以在单独的这样的单元上实现。
例如,存储控制器可以持久化与应快速持久化的操作相关联的状态,其中该持久的化状态是确保在由于硬件、软件或失去电源而出现故障的情况下的操作的可恢复性(以使跨多个存储设备的快速可寻址存储确保针对故障的可靠性)所需的最低限度,并且其中,该持久化的状态被写入为动态分配的擦除编码的条带或简单的镜像副本,其模式允许在面对多达R1个存储设备故障时进行恢复。在此示例中,可以通过将重复数据删除、压缩或其他可能无效化的操作(例如复写、删除、取消映射/修剪调用、虚拟复制操作)之后剩余的任何内容写入跨多个存储设备的大容量存储中形成的擦除编码的条带来完成对大容量存储的操作,其中该擦除编码的条带允许在面对多达R2个存储设备故障时进行恢复。
在此示例中,R1和R2可以是相同的。例如,如果根据典型的RAID-6擦除编码模型的涉及P和Q奇偶校验碎片的RAID-6方案用于将快速写入内容存储到快速耐久存储以及将较长持续时间内容存储到大容量存储二者,则R1和R2可以都是2。类似地,如果是RAID-5方案的情况,R1和R2可以都是1。例如涉及伽罗瓦(Galois)域其他的方案可以支持R1和R2为3或更大。与写入快速耐久存储的内容相关联的数据碎片可以为一个数量(例如M),使得快速内容的写入包括写入到跨M+R1个存储设备的可寻址快速耐久存储的动态分配的碎片的M+R1个条带,而与写入到大容量存储的内容相关联的数据碎片可以为另一数量(例如N,其可以是与M相同或不同的数字),使得较长持续时间内容的写入包括写入到跨N+R2个存储设备地可寻址大容量存储的碎片的N+R2个条带。
在一些实现方式中,将内容写入快速耐久存储或大容量耐久存储不需要写入为统一宽度的擦除编码的条带。例如,写入快速耐久存储的一些数据可以写入为M1+R1,而其他数据可以写入为M2+R2,其中M1≠M2。类似的变体可适用于写入大容量存储的数据。此外,如果可用于写入的数据小于完整条带的值,则可以将更少的碎片(或完整碎片的子区域)与根据目前可用的数据计算出的中间计算冗余内容(例如,RAID-5或RAID-6的P或P和Q碎片)一起写入。当更多的数据准备好被存储,可以将附加的碎片(或完整碎片的附加子区域)与更新的冗余内容一起写入。此外,在此示例中,对大容量存储的部分写入内容可使得匹配的中间冗余内容被首先写入可寻址快速耐久存储(和与数据内容仅写入快速耐久存储相关联的任何冗余方案分离),并且当完整的相应数据碎片已经完全写入时,最终版本的冗余内容作为完整的冗余碎片写入大容量存储。
在一些实现方式中,如果写入快速耐久存储的内容与写入大容量存储的内容足够相似,则一个或多个存储控制器可以利用存储设备的能力,使得要存储在特定存储设备的可寻址大容量存储中的内容首先被传输到同一存储设备上的快速耐久存储设备(或者替代性地,存储在快速耐久存储中的内容最终被存储到同一存储设备上的大容量存储中),然后,在一个或多个存储控制器上运行的操作的指导下(使用前面描述的命令来传输以及进行可能地对内容重新格式化),由存储设备将其直接从快速耐久存储传输到大容量耐久存储(可能涉及重新格式化)。
在一些实现方式中,如果写入快速耐久存储的内容类似于写入单独的存储设备上的大容量存储的内容,则如果得到存储设备和互连支持,并且存在用于执行的可用命令,并且通过该执行可以增加效率(例如,由于互连带宽的相对可用性),则一个或多个存储控制器可以指示存储设备在第一源存储设备上的快速耐久存储和第二目标存储设备的大容量存储之间传输内容(并且可能进行重新格式化)。
在一些示例性实现方式中,数据在第一存储设备和第二存储设备之间传输是可能的,使得传输的数据加上第二存储设备上已经存在的数据(例如位于快速耐久存储和大容量存储中,或者可能从第三存储或其他附加存储设备传输的)可用于计算要存储的新数据,例如将部分数据组合成组合的格式化数据,或者例如从冗余数据碎片的先前中间内容加上冗余数据碎片的不同的中间内容或来自数据碎片的内容计算冗余数据碎片的内容。例如,使用简单的基于异或奇偶校验的冗余碎片的情况下,可以将第一部分奇偶校验(其通过对数据碎片的第一子集中的数据进行异或运算来计算)和第二部分奇偶校验(其通过对数据碎片的第二子集中的数据进行异或运算来计算)从第一存储设备(其计算第一部分奇偶校验)和第二存储设备(其计算第二部分奇偶校验)传输到第三存储设备,然后,该第三存储设备可以针对第一和第二部分奇偶校验一起进行异或运算以生成完整的计算的奇偶校验,并且该完整的计算的奇偶校验可以被存储到第三存储设备中的大容量耐久存储中。
此外,在一些实现方式中,伽罗瓦域数学允许将类似的部分结果合并在一起,以存储附加类型的计算的冗余碎片,例如RAID-6条带的典型Q碎片。例如,根据H.Peter Anvin在2004年1月20日发表的论文“RAID-6的数学”中描述的伽罗瓦数学,考虑5+2RAID-6条带的最终Q碎片如下计算:
Q=g0·D0+g1·D1+g2·D2+g3·D3+g4·D4
在此示例中,根据前两个数据碎片的部分Q的计算可如以下进行计算:
Qp1=g0·D0+g1·D1
在此示例中,Qp1可以由存储控制器存储在某第一部分Q碎片存储设备上,作为保护最终得到的5+2条带的仅前两个数据碎片的一部分,并且这加上存储在另一存储设备中的附加的异或奇偶校验足以从为此部分条带写入的设备的任何两个故障中恢复,因为只要该部分条带被正确地识别为是部分的,就可以推断g2·D2+g3·D3+g4·D4中的内容从空(零)数据碎片D2、D3和D4计算得出。
继续此示例,根据其他三个数据碎片的部分Q的第二计算可进一步地如下进行计算:
Qp2=g2·D2+g3·D3+g4·D4
在此示例中,Qp2可以存储在第二部分Q分片存储设备上,作为保护这三个数据分片的一部分,并且与第一部分Q分片一样,当与写入另一存储设备的附加写入的部分异或奇偶校验相结合时,该部分内容仍可以被保护以免受任何两个故障的影响,因为可以再次推断与部分Q碎片相关联的g0·D0+g1·D1的内容从空(零)数据碎片D0和D1计算得出。
继续此示例,最终接收到Qp1和Qp2二者的存储设备可以计算包括所有五个数据碎片的完整条带的Q值为Qp1和Qp2的适当伽罗瓦域加法。
在统一存储元件(320)的一些实现方式中,统一存储元件(320)的特征可应用于使用提交标识来实现数据冗余,如上所述并且如下面另外所述。例如,给定上述形式的存储系统,但其中部分或全部存储设备(或组合的存储元件的存储设备方面)可能具有也可能不具有单独可寻址快速耐久存储和大容量耐久存储,或者其中存储设备可能进一步支持也可能不进一步支持在持久映射存储器或可寻址持久寄存器中记录数字,可以使用至少部分基于上述提交标识的各种方案,以可以使用至少部分基于如上所述的提交标识的各种方案,以确保无损坏的存储系统和存储设备故障与恢复序列,而这些恢复本身会因故障而中断,其中后续的恢复受限于不一致的可用的、缓慢变为可用的或故障的存储设备集。
在这些使用提交标识的示例中,一个结果是确保在基于用于所有写入的内容的Rc的冗余级别的存储系统上下文中,未完全写入的擦除编码条带不会导致在这样的故障、恢复和不可用存储设备序列中由后续的恢复执行不一致的动作。作为一个示例,利用依赖于三个提交标识列表的方案,该列表可以有效地表示为数字提交标识的范围,该范围表示并对应于:允许(验证为耐久地提交)的内容、不允许的内容、和在恢复期间应被验证的潜在内容。在此示例中,这三个列表是通过使用具有足以处理Rid个故障的冗余级别的镜像或擦除编码写入快速耐久存储、大容量耐久存储、耐久持久性映射存储器、耐久寄存器或这些类型的存储器的各种组合的内容,该内容通常与存储设备本身的存储设备故障处理要求相匹配。然而,在其他示例中,不同的内容可以使用不同级别的冗余(例如,可以使用比大容量数据更高的冗余度来写入关键元数据,或者可以将事务性内容或快速写入内容写入与用于大容量存储的设备不同的较小数量的设备)。通常,Rid不应小于与任何其他存储系统内容相关联的最高Rc值。然而,在一些示例中,隔离的存储设备还可以被用于记录提交标识列表的部分或全部更新,其中隔离的存储设备(例如,专用的NVRAM设备)以较低的冗余级别操作。
在一些实施例中,存储系统内容(通常包括提交标识列表,但在一些情况下,这些提交标识列表可能是例外情况,尤其是对于记录范围的耐久寄存器)被写入具有相关联的提交标识的存储设备,通常与内容本身一致(例如被写入在碎片、页面或段中,这些碎片、页面或段还存储表示存储系统存储的持久内容的数据或元数据)。在一些示例中,写入的内容可以与潜在内容列表中的提交标识相关联,其中一旦以所需冗余级别(例如,对于典型内容为N+Rc,对于内容存储列表为Rid+1路镜像或Nid+Rid擦除编码)跨存储设备完全写入,则相关联的提交标识可以被添加到允许的列表,其中允许列表可以被写出。在此示例中,在包括提交标识的允许的列表更新已经以相应的冗余度跨存储设备完全写入后,存储系统可以确保是可恢复的(通过任何后续的恢复)。此外,在此示例中,如果在写入内容时存在问题(例如由于正在写入内容时存储设备故障造成的问题),则匹配的内容可以被写入备用设备,或者与该内容相关联的提交标识可以被添加到不允许列表中并写出,并且整个更新可以被再次执行,作为对新位置的最新更新并利用新提交标识。然而,在一些示例中,即使允许或不允许列表的写入本身可以利用未决列表中的提交标识用于列表本身的写入,并且即使一般内容写入依赖于将相关联的提交标识添加到允许列表并写出,在以所需的冗余度写出允许列表后,相关联的内容被提交,而无需进一步提交具有对允许列表的附加更新的允许列表更新(否则,可能会有无限的进程来提交数据)。
在一些实现方式中,在恢复期间,可以扫描存储系统内容以重构允许提交标识列表、不允许提交标识列表、和潜在提交标识列表。添加到潜在提交标识列表的条目可以通过确定潜在提交标识列表更新是否已提交来进行确认,这可以基于潜在提交标识列表中先前提交和确认的条目的使用。在此示例中,可以测试恢复的潜在提交标识列表中的提交标识是否与对允许列表的添加相关联。此外,在此示例中,即使是部分更新(将标识添加到允许列表)也仅在相关联的内容已经被完全写入和完成为完全冗余镜像或擦除编码的条带时才应存在,因此可以得出这样的提交标识可以被安全地恢复到允许列表,即使它仅以所需冗余度被部分地写出。然而,在此示例中,所恢复的潜在提交标识列表中针对其没有可验证条目被添加到允许列表中的标识可以被添加到不允许提交标识列表中,即使是作为部分写入更新(或者可能是明显只部分写入的更新的情况)。在此示例中,为了处理一次恢复未能找到部分写入的允许提交标识,而随后的恢复找到了部分写入的允许提交的情况,第二恢复可以使用不允许列表中存在提交标识来否决将提交标识添加到已确认的允许列表中。
在一些实现方式中,由于恢复的一部分依赖于确认写入的数据的使用,潜在提交标识列表应解析为提交标识列表,因为它们出现在至少部分写入的允许列表更新中,而所有其他潜在提交标识(包括可能已部分写入的任何可能的提交标识)解析到不允许的列表中。此外,在此示例中,在对任何这样的内容的结果执行恢复过程之前,应写出并提交允许和不允许列表更新。在此示例中,此时,与提交标识相关联的任何写入的内容可以被确定为已被允许(其已完全写入并提交)或不允许(其可以是也可以不是已完全写入的,但其尚未成功且完全地提交,并且在完成之前已被撤回)。此外,在此示例中,对允许列表的部分写入更新可能在恢复和故障序列中最后是不允许的,在这种情况下,由于对允许列表的更新是不允许的,最终该更新被丢弃。这样,在此示例中,故障和恢复序列可以防止在一次恢复中丢失更新影响到观察到该更新的后续恢复。
在一些实现方式中,在存储系统的正常运行期间,由于例如影响写入或接收写入完成的状态的故障,擦除编码内容的写入可能未成功完成。在这种情况下,可以将条目添加到不允许列表中,以有效地否定相关联的写入内容(通过不允许其相关的提交标识)。
在一些实现方式中,在正常操作期间,对提交标识列表的更新可以通过写入后续更新(紧随提交标识旨在提交的内容)来持久化。在一些示例中,替代地或附加地,对提交标识列表的某些更新、或对潜在提交标识列表或允许提交标识列表的标识范围的某些添加可以写入到所支持的存储设备上的耐久寄存器或耐久存储器接口。在一些示例中,可以通过写入包含这些列表更新的M+R擦除代码,或者通过将列表更新(或范围)的R+l副本存储在R+l个单独的所支持的存储设备上来支持多个R个设备故障。R+l方案尤其适用于耐久寄存器或耐久存储器。
为了进一步说明,图4示出一流程图,该流程图示出了根据本公开的一些实施例的用于在集成了快速耐久存储和大容量耐久存储的存储元件上执行数据存储操作的示例性方法。尽管以较不详细的方式进行描述,但是统一存储元件(320)可以类似于上面参考图1A至图1D、图2A至图2G、图3A至图3C或其任何组合所描述的存储系统。事实上,诸如统一存储元件(320)之类的存储元件可以包括与上述存储系统相同的、更少的、或附加的组件。
如上所述,统一存储元件(320)集成了快速耐久存储(454)和大容量耐久存储(456)。在此示例中,统一存储元件(320)接收诸如读取或写入操作之类的数据存储操作,并确定在执行或进行数据存储操作中如何利用快速耐久存储(454)或大容量耐久存储(456)中的一者、或快速耐久存储(454)和大容量耐久存储(456)二者。如上所述,数据存储操作可以允许主机计算机显式地使用统一存储元件(320)中的所有存储器类型,或者在一些情况下,统一存储元件(320)可以提供数据存储特征,而无需揭示底层存储器类型的特定方面。上面参照对统一存储元件(320)的存储器架构的描述来描述了快速耐久存储(454)和大容量耐久存储(456)的示例性实现方式。
图4所示的示例性方法包括:在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处,从主机计算机(450)接收(402)数据存储操作(452),其中,数据存储操作(450)可以是读取命令、写入命令、擦除命令,或者一般地利用统一存储元件(320)提供的一个或多个特征的任何类型的命令或操作。在此示例中,存储元件可以是统一存储元件(320),主机计算机(450)可以是远程计算设备,例如远程台式机、移动设备、云计算环境中的虚拟机、或在存储系统中本地执行或在地理远程位置上执行的其他类型的计算设备或实例。在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处接收(402)数据存储操作(452)可以通过以下操作来实现:统一存储元件(320)根据一个或多个网络通信协议在连接到存储区域网络(158)或局域网(160)的通信端口(如图1A所示)处接收消息。
图4所示的示例性方法还包括:根据所述数据存储操作(452),确定(404)对快速耐久存储(454)和大容量耐久存储(456)的选择以用于执行所述数据存储操作。根据所述数据存储操作(452)确定(404)对快速耐久存储(454)和大容量耐久存储(456)的选择以用于执行所述数据存储操作可以根据如上文中关于统一存储元件(320)的特征所描述的多个不同的技术来实现,其中读取和写入协议可以被实现和提供为使得快速耐久存储(454)和大容量耐久存储(456)之间的数据的控制和传输是透明的并且根据一个或多个API命令来提供,或者其中读取和写入协议可以被实现和提供为使得快速耐久存储(454)和大容量耐久存储器(456)之间的内部传输不可见。作为一个示例,单个写入操作可以包括指定将被写入大容量耐久存储的数据的部分的参数,以及指定将被写入快速耐久存储或一个或多个寄存器的数据的其他部分的参数,其中这种写入操作可以被视为原子写入操作。在其它示例中,取决于API,或者取决于提供给给定用户的所支持的操作子集,不同的数据存储操作可以指定对统一存储元件(320)的各种存储器组件(包括快速耐久存储(454)和大容量耐久存储(456))的不同使用。
图4的示例性方法还包括:使用所确定的对快速耐久存储(454)和大容量耐久存储(456)的选择来执行(406)所述数据存储操作(452)。使用所确定的对快速耐久存储(454)和大容量耐久存储(456)的选择来执行(406)所述数据存储操作(452)可以如上关于统一存储元件(320)的特征的描述来实现。
为了进一步说明,图5示出了流程图,该流程图示出了根据本公开的一些实施例的用于在集成了快速耐久存储和大容量耐久存储的存储元件上执行数据存储操作的示例性方法。尽管以较不详细的方式进行描述,但是统一存储元件(320)可以类似于上面参考图1A至图1D、图2A至图2G、图3A至图3C或其任何组合所描述的存储系统。事实上,诸如统一存储元件(320)之类的存储元件可以包括与上述存储系统相同的、更少的、或附加的组件。
如上所述,统一存储元件(320)集成了快速耐久存储(454)和大容量耐久久存储(456)。在此示例中,统一存储元件(320)接收诸如读取或写入操作或其他数据存储操作之类的数据存储操作(452),并确定如何利用快速耐久存储(454)或大容量耐久存储(456)中的一者、或快速耐久存储(454)和大容量耐久存储(456)二者来执行或进行数据存储操作。如上所述,数据存储操作(452)可以允许主机计算机显式地使用统一存储元件(320)中的所有存储器类型,或者在一些情况下,统一存储元件(320)可以提供数据存储特征,而无需揭示底层存储器类型的特定方面。上面参照对统一存储元件(320)的存储器架构的描述来描述了快速耐久存储(454)、大容量耐久存储(456)、以及用于提供或隐藏特征的各种技术的示例性实现方式。
图5所示的示例性方法包括:在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处,从主机计算机(450)接收(502)数据存储操作(452),其中,数据存储操作(452)可以是读取命令、写入命令、擦除命令,或者一般地利用统一存储元件(320)提供的一个或多个特征的任何类型的命令或操作。在此示例中,存储元件可以是统一存储元件(320),主机计算机(450)可以是远程计算设备,例如远程台式机、移动设备、云计算环境中的虚拟机、或在存储系统中本地执行或在地理远程位置上执行的其他类型的计算设备或实例。在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处接收(502)数据存储操作(452)可以通过以下操作来实现:统一存储元件(320)根据一个或多个网络通信协议在连接到存储区域网络(158)、本地通信互联(173)或局域网(160)的通信端口(如图1A所示)处接收消息。
图5所示的示例性方法还包括:根据第一数据弹性技术,将对应于数据存储操作(452)的数据(560)存储(504)在快速耐久存储(454)中。根据第一数据弹性技术将对应于数据存储操作(452)的数据(560)存储(504)在快速耐久存储(454)中可以通过以下操作来实现:统一存储元件(320)的一个或多个控制器将数据(560)存储为RAID N+2模式中的RAID条带的一部分,如上文关于在统一存储元件(320)内存储数据的描述。
图5所示的示例性方法还包括:响应于检测到在快速耐久存储(454)和大容量耐久存储(456)之间传输数据(560)的条件,根据第二数据弹性技术将数据(560)从快速耐久存储(454)传输(506)到大容量耐久存储(456)。检测在快速耐久存储(454)和大容量耐久存储(456)之间传输数据(560)的条件可以使用不同的技术来实现。在一个示例性技术中,该传输数据的条件可以是成功地完成写入一个或多个完整的RAID条带并计算相应的奇偶校验值。根据第二数据弹性技术将来自快速耐久存储器(454)的数据(560)传输为存储在大容量耐久存储器(456)内的数据(562)可以通过以下操作来实现:统一存储元件(320)的一个或多个控制器将快速耐久存储(454)中的数据(560)作为大容量耐久存储(456)中的RAID M+2模式中的RAID条带的一部分移动或复制到大容量耐久存储(456)中,如上文关于在统一存储元件(320)内存储数据所述,其中用于快速耐久存储(454)的RAID N+2模式不同于用于大容量耐久存储(456)的RAID M+2模式。
为了进一步说明,图6示出了根据本公开的一些实施例的示出了用于在统一存储元件(320)内暂存数据的示例性方法的流程图。图6所示的示例性方法与图5所示的示例性方法类似,因为图6所示的示例性方法也包括:在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处,从主机计算机(450)接收(502)数据存储操作(452);根据第一数据弹性技术,将对应于所述数据存储操作(452)的数据(560)存储(504)在快速耐久存储(454)中;响应于检测到在快速耐久存储(454)和大容量耐久存储(456)之间传输数据的条件,根据第二数据弹性技术将所述数据(560)从快速耐久存储(454)传输(506)到大容量耐久存储(456)。
然而,图6中所示的示例性方法与图5中所示的示例性方法不同之处在于图6中所示方法还包括:确定(602)适用于所述快速耐久存储(454)中所存储的数据的一个或多个部分的数据存储优化;修改(604)所述快速耐久存储器(454)中所存储的数据的所述一个或多个部分以生成修改数据(650);以及在修改数据的所述一个或多个部分后,将所述修改数据(650)存储(606)在所述快速耐久存储(454)中。
确定(602)适用于所述快速耐久存储(454)中所存储的数据的一个或多个部分的数据存储优化可以由统一存储元件(320)的一个或多个控制器实现,其中,数据存储优化可以是数据压缩、重复数据删除、垃圾收集或一些其他数据存储优化,该其他数据存储优化产生比原始数据更少的存储空间占用,或者该其他数据存储优化产生可以提供除存储大小减少以外的效果的修改数据,如上文关于适用于存储在统一存储元件(320)的快速耐久存储中的数据的数据存储优化的更详细描述的。
修改(604)所述快速耐久存储器(454)中所存储的数据的所述一个或多个部分可以根据上述确定(602)的数据存储优化来实现,其中,如果该数据存储优化是一个或多个数据压缩技术,则压缩的数据可以是修改数据(650)。类似地,如果上述确定(602)的数据存储优化是垃圾收集,则修改数据可以是原始存储的数据减去、或者不包括已经针对垃圾收集被标识的一个或多个部分,因此修改数据(650)是垃圾收集后的其余数据。对于数据存储优化是重复数据删除或其他数据存储优化的情况也是类似的。
在修改(604)数据的所述一个或多个部分之后将修改数据(650)存储(606)在大容量耐久存储(454)中可以通过统一存储元件(320)的一个或多个控制器将修改数据(650)写入快速耐久存储器(454)来实现,该修改数据(650)通过执行数据存储优化生成。
为了进一步说明,图7示出了根据本公开的一些实施例的示出了用于在统一存储元件(320)内暂存数据的示例性方法的流程图。图7所示的示例性方法与图6所示的示例性方法类似,因为图7所示的示例性方法也包括:在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处,从主机计算机(450)接收(502)数据存储操作(452);根据第一数据弹性技术,将对应于所述数据存储操作(452)的数据(560)存储(504)在快速耐久存储(454)中;响应于检测到在快速耐久存储(454)和大容量耐久存储(456)之间传输数据的条件,根据第二数据弹性技术将所述数据(560)从快速耐久存储(454)传输(506)到大容量耐久存储(456);确定(602)适用于所述快速耐久存储(454)中所存储的数据的一个或多个部分的数据存储优化;以及修改(604)所述快速耐久存储器(454)中所存储的数据的所述一个或多个部分以生成修改数据(650)。
然而,图7中所示的示例性方法与图6中所示的示例性方法不同之处在于图7中所示方法还包括:在修改(604)数据的所述一个或多个部分之后,将所述修改数据(650)存储(702)在所述大容量耐久存储(456)中。在修改数据的所述一个或多个部分之后将所述修改数据(650)存储(702)在所述大容量耐久存储(454)中可以通过统一存储元件(320)的一个或多个控制器将修改数据(650)写入大容量耐久存储器(456)来实现,该修改的数据(650)通过执行数据存储优化生成。
为了进一步说明,图8示出了根据本公开的一些实施例的示出了用于在统一存储元件(320)内暂存数据的示例性方法的流程图。图8所示的示例性方法与图5所示的示例性方法类似,因为图8所示的示例性方法也包括:在集成了快速耐久存储(454))和大容量耐久存储(456)的存储元件处,从主机计算机(450)接收(502)数据存储操作(452);根据第一数据弹性技术,将对应于所述数据存储操作(452)的数据(560)存储(504)在快速耐久存储(454)中;响应于检测到在快速耐久存储(454)和大容量耐久存储(456)之间传输数据的条件,根据第二数据弹性技术将所述数据(560)从快速耐久存储(454)传输(506)到大容量耐久存储(456)。
然而,图8中所示的示例性方法与图5中所示的示例性方法不同之处在于图8中所示方法还包括:基于在时间窗口内接收到的写入操作和相应的数据有效载荷大小,确定(802)数据存储消耗率;以及根据快速耐久存储(454)的数据存储消耗率和存储可用性,以避免使随后接收的数据存储操作暂停(stall)的传输速率将存储数据的一个或多个部分从所述快速耐久存储(454)动态地传输(804)到大容量耐久存储(456)。
基于在时间窗口内接收到的写入操作和相应的数据有效载荷大小确定(802)数据存储消耗率可以通过以下操作来实现:统一存储元件(320)的一个或多个控制器针对在给定时间段(例如,定义的秒数或分钟数)内接收到的每个写入操作跟踪和记录写入快速耐久存储(454)的数据的数据有效载荷大小。此外,给出在定义的时间窗口内的所有数据有效载荷大小的聚合或总和,该一个或多个控制器可以计算快速耐久存储(454)中的存储被消耗的速率,其中,数据存储消耗速率可以计算为时间段内消耗的空间量,其中,该消耗的空间量是聚合计算,而该时间段是定义的时间窗口。
根据快速耐久存储(454)的数据存储消耗率和存储可用性以避免使随后接收的数据存储操作暂停(stall)的传输速率将存储数据的一个或多个部分从所述快速耐久存储(454)动态地传输(804)到大容量耐久存储(456)可以通过以下操作实现:统一存储元件(320)的一个或多个控制器(基于已经使用的存储器量和可用的存储量)计算在给定数据消耗速率的情况下快速耐久存储(454)上没有可用空间的时间量。此外,该实现方式可以包括使用计算出的不再有可用空间(或者不再有可用于平均大小的写入操作有效载荷的空间)的时间,并且在快速耐久存储(454)中的可用空间耗尽之前,将数据从快速耐久存储(454)传输到大容量耐久存储(456),这防止了当数据从快速耐久存储(454)移出时,由于可用空间不足而统一存储单元(320)暂停的问题。
为了进一步说明,图9示出了流程图,该流程图示出了根据本公开的一些实施例的用于在集成了快速耐久存储和大容量耐久存储的存储元件(例如统一存储元件(320))上恢复数据的示例性方法。尽管以较不详细的方式进行描述,但是统一存储元件(320)可以类似于上面参考图1A至图1D、图2A至图2G、图3A至图3C或其任何组合所描述的存储系统。事实上,诸如统一存储元件(320)的存储元件可以包括与上述存储系统相同的、更少的、或附加的组件。
如上所述,统一存储元件(320)集成了快速耐久存储(454)和大容量耐久久存储(456)。在此示例中,统一存储元件(320)接收数据存储操作(452),例如针对数据(960)的一个或多个部分的写入操作。如上所述,提交标识可用于确定跨一个或多个系统重新启动所提交的数据部分,其中跨每个系统重新启动,由于在给定系统启动期间可用的存储设备集不一致,不同的数据集可能是可读的。
图9所示的示例性方法包括:在包括快速耐久存储(454)的存储设备(320)处,从主机计算机接收(902)数据(960)的多个部分;在此示例中,主机计算机(450)可以是远程计算设备,例如远程台式机、移动设备、云计算环境中的虚拟机、或在存储系统中本地执行或在地理远程位置上执行的其他类型的计算设备或实例。在包括快速耐久存储(454)的存储设备处接收(902)数据(960)的多个部分可以通过以下操作来实现:统一存储元件(320)根据一个或多个网络通信协议在连接到存储区域网络(158)、本地通信互联(173)或局域网(160)的通信端口(如图1A所示)处接收消息,该消息为例如写入操作和相应的数据有效载荷。
图9所示的示例性方法还包括:在所述存储设备(320)的所述快速耐久存储(454)中,存储(904)已成功写入的所述数据(960)的所述多个部分中的一个或多个部分的一个或多个提交标识(962)。在所述存储设备(320)的所述快速耐久存储(454)中存储(904)已成功写入的所述数据(960)的所述多个部分中的一个或多个部分的一个或多个提交标识(962)可以由统一存储元件(320)的一个或多个控制器来实现,如上文关于创建和维持用于跟踪成功写入的数据部分的提交标识所描述的。
图9所示的示例性方法还包括:响应于系统恢复,从所述快速耐久存储(454)中读取(906)所述一个或多个提交标识(962)以确定所述数据(960)的有效部分的集合。从所述快速耐久存储(454)中读取(906)所述一个或多个提交标识(962)以确定所述数据(960)的有效部分的集合可以由统一存储单元(320)的一个或多个控制器来实现,如上文关于将提交标识用于确定数据的有效部分的集合所描述的。
为了进一步说明,图10示出了根据本公开的一些实施例的示出了用于在统一存储元件(320)内恢复数据的示例性方法的流程图。图10所示的示例性方法与图9所示的示例性方法类似,因为图10所示的示例行方法也包括:在包括快速耐久存储(454)的存储设备(320)处,从主机计算机接收(902)数据(960)的多个部分;在所述存储设备(320)的所述快速耐久存储(454)中,存储(904)已成功写入的所述数据(960)的所述多个部分中的一个或多个部分的一个或多个提交标识(962);以及响应于系统恢复,从所述快速耐久存储(454)中读取(906)所述一个或多个提交标识(962)以确定所述数据(960)的有效部分的集合。
然而,图10中所示的示例性方法与图9中所示的示例性方法不同之处在于图10中所示方法还包括:将所述数据(960)的成功写入的部分从快速耐久存储(454)传输(1002)到大容量耐久存储(456)。将所述数据(960)的成功写入的部分从快速耐久存储(454)传输(1002)到大容量耐久存储(456)可以由统一存储元件(320)的一个或多个控制器实现,如上文关于基于统一存储元件(320)内的一个或多个事件或条件将数据从快速耐久存储传输到大容量耐久存储所描述的。
关于图3C和图4的实施例的附加描述由以下二十个条款描述,其标记为条款1至20:
1、一种在集成了快速耐久存储和大容量耐久存储的存储元件上执行数据存储操作的方法,方法包括:
在集成了快速耐久存储和大容量耐久存储的存储元件处,从主机计算机接收数据存储操作;
根据数据存储操作,确定对快速耐久存储和大容量耐久存储的选择以用于执行数据存储操作;以及
以及使用所确定的对快速耐久存储和大容量耐久存储的选择来执行数据存储操作。
2、根据条款1所述的方法,其中对快速耐久存储和大容量耐久存储的选择包括:(a)选择快速耐久存储和大容量耐久存储二者;(b)选择快速耐久存储,而不选择大容量耐久存储;或者(c)选择大容量耐久存储,而不选择快速耐久存储。
3、根据条款1所述的方法,其中选择由数据存储操作中的一个或多个指示指定。
4、根据条款1所述的方法,其中选择由存储元件确定,而不由数据存储操作指定。
5、根据条款1所述的方法,其中数据存储操作是写入操作,其中数据存储操作是写入操作,其中,执行写入操作包括将数据以RAID N+2格式的数据条带存储在快速大容量存储中,并且其中,RAID N+2格式的数据条带以RAID M+2格式的数据条带存储在大容量耐久存储中。
6、一种存储元件,包括:
快速耐久存储;
大容量耐久存储;
储能设备;以及
一个或多个控制器,所述一个或多个控制器被配置为:
从主机计算机接收数据存储操作;
根据数据存储操作,确定对快速耐久存储和大容量耐久存储的选择以用于执行数据存储操作;以及
使用对快速耐久存储和大容量耐久存储的选择来执行数据存储操作。
7、根据条款6所述的方法,其中快速耐久存储包括非易失性随机存取存储器。
8、根据条款6所述的方法,其中大容量耐久存储包括一个或多个固态驱动器。
9、根据条款6所述的方法,其中存储元件还包括易失性随机存取存储器,并且其中一个或多个控制器被进一步配置为:响应于对存储元件的断电并且依赖于由储能设备提供的能量,将数据从易失性随机存取存储器转移到快速耐久存储或大容量耐久存储中的一个或多个中。
10、根据条款6所述的方法,其中对快速耐久存储和大容量耐久存储的选择包括:(a)选择快速耐久存储和大容量耐久存储二者;(b)选择快速耐久存储,而不选择大容量耐久存储;或者(c)选择大容量耐久存储,而不选择快速耐久存储。
11、根据条款6所述的方法,其中选择由数据存储操作中的一个或多个指示指定。
12、根据条款6所述的方法,其中选择由存储元件确定,而不由数据存储操作指定。
13、根据条款6所述的方法,其中数据存储操作是写入操作,其中数据存储操作是写入操作,其中,执行写入操作包括将数据以RAID N+2格式的数据条带存储在快速大容量存储中,并且其中,RAID N+2格式的数据条带以RAID M+2格式的数据条带存储在大容量耐久存储中。
14、一种用于集成快速耐久存储和大容量耐久存储的装置,装置包括计算机处理器、可操作地耦合到计算机处理器的计算机存储器,计算机存储器中设置有计算机程序指令,计算机程序指令当被计算机处理器执行时,使得装置执行以下步骤:
从主机计算机接收数据存储操作;
根据数据存储操作,确定对快速耐久存储和大容量耐久存储的选择以用于执行数据存储操作;以及
使用所确定的对快速耐久存储和大容量耐久存储的选择来执行数据存储操作。
15、根据条款14所述的装置,其中快速耐久存储包括非易失性随机存取存储器。
16、根据条款14所述的装置,其中大容量耐久存储包括一个或多个固态驱动器。
17、根据条款14所述的装置,其中存储元件还包括易失性随机存取存储器,并且其中一个或多个控制器被进一步配置为:响应于对存储元件的断电并且依赖于由储能设备提供的能量,将数据从易失性随机存取存储器转移到快速耐久存储或大容量耐久存储中的一个或多个中。
18、根据条款14所述的装置,其中对快速耐久存储和大容量耐久存储的选择包括:(a)选择快速耐久存储和大容量耐久存储二者;(b)选择快速耐久存储,而不选择大容量耐久存储;或者(c)选择大容量耐久存储,而不选择快速耐久存储。
19、根据条款14所述的装置,其中选择由数据存储操作中的一个或多个指示指定。
20、根据条款14所述的装置,其中选择由存储元件确定,而不由数据存储操作指定。
关于图3C和图5至图8的实施例的附加描述由以下二十个条款描述,其标记为条款21至40:
21、一种暂存数据的方法,方法包括:
在集成了快速耐久存储和大容量耐久存储的存储元件处,从主机计算机接收数据存储操作;
根据第一数据弹性技术,将对应于数据存储操作的数据存储在快速耐久存储中;以及
响应于检测到在快速耐久存储和大容量耐久存储之间传输数据的条件,根据第二数据弹性技术将数据从快速耐久存储传输到大容量耐久存储。
22、根据条款21所述的方法,其中数据存储操作是写入操作,其中数据存储操作是写入操作,其中,执行写入操作包括将数据以RAID N+2格式的数据条带存储在快速大容量存储中,并且其中,RAID N+2格式的数据条带以RAID M+2格式的数据条带存储在大容量耐久存储中。
23、.根据条款21所述的方法,还包括:
确定适用于快速耐久存储中所存储的数据的一个或多个部分的数据存储优化;以及
修改快速耐久存储器中所存储的数据的一个或多个部分以生成修改数据。
24、根据条款23所述的方法,还包括:
在修改数据的一个或多个部分后,将修改数据存储在快速耐久存储中。
25、根据条款23所述的方法,还包括:
在修改数据的一个或多个部分后,将修改数据存储在大容量耐久存储中。
26、根据条款23所述的方法,其中数据存储优化是以下项中的一个或多个:数据压缩、重复数据删除、或垃圾收集。
27、根据条款21所述的方法,还包括:
基于在时间窗口内接收到的写入操作和相应的数据有效载荷大小,确定数据存储消耗率;以及
根据快速耐久存储的数据存储消耗率和存储可用性,以避免使随后接收的数据存储操作暂停(stall)的传输速率将存储数据的一个或多个部分从快速耐久存储动态地传输到大容量耐久存储。
28、一种用于暂存数据的装置,该装置包括计算机处理器、可操作地耦合到计算机处理器的计算机存储器、在计算机存储器内部设置有计算机程序指令,计算机程序指令当被计算机处理器执行时,使得装置执行以下步骤:
在集成了快速耐久存储和大容量耐久存储的存储元件处,从主机计算机接收数据存储操作;
根据第一数据弹性技术,将对应于数据存储操作的数据存储在快速耐久存储中;以及
响应于检测到在快速耐久存储和大容量耐久存储之间传输数据的条件,根据第二数据弹性技术将数据从快速耐久存储传输到大容量耐久存储。
29、根据条款28所述的装置,其中快速耐久存储包括非易失性随机存取存储器。
30、根据条款28所述的装置,其中大容量耐久存储包括一个或多个固态驱动器。
31、根据条款28所述的装置,其中存储元件还包括易失性随机存取存储器,并且其中一个或多个控制器被进一步配置为:响应于对存储元件的断电并且依赖于由储能设备提供的能量,将数据从易失性随机存取存储器转移到快速耐久存储或大容量耐久存储中的一个或多个中。
32、根据条款28所述的装置,其中当计算机程序指令被计算机处理器执行时,使得装置执行以下步骤:
确定适用于快速耐久存储中所存储的数据的一个或多个部分的数据存储优化;以及
修改快速耐久存储器中所存储的数据的一个或多个部分以生成修改数据。
33、根据条款32所述的装置,其中计算机程序指令当被计算机处理器执行时,使得装置执行以下步骤:
在修改数据的一个或多个部分后,将修改数据存储在快速耐久存储中。
34、根据条款32所述的装置,其中计算机程序指令当被计算机处理器执行时,使得装置执行以下步骤:
在修改数据的一个或多个部分后,将修改数据存储在大容量耐久存储中。
35、一种用于暂存数据的计算机程序产品,该计算机程序产品设置在计算机可读介质中,并且该计算机程序产品包括计算机程序指令,计算机程序指令当被执行时,使得计算机执行以下步骤:
在集成了快速耐久存储和大容量耐久存储的存储元件处,从主机计算机接收数据存储操作;
根据第一数据弹性技术,将对应于数据存储操作的数据存储在快速耐久存储中;以及
响应于检测到在快速耐久存储和大容量耐久存储之间传输数据的条件,根据第二数据弹性技术将数据从快速耐久存储传输到大容量耐久存储。
36、根据条款35所述的计算机程序产品,其中数据存储操作是写入操作,其中,执行写入操作包括将数据以RAID N+2格式的数据条带存储在快速大容量存储中,并且其中,RAID N+2格式的数据条带以RAID M+2格式的数据条带存储在大容量耐久存储中。
37、根据条款35中所述的计算机程序产品,其中计算机程序指令当被执行时,还使得计算机执行以下步骤:
确定适用于快速耐久存储中所存储的数据的一个或多个部分的数据存储优化;以及
修改快速耐久存储器中所存储的数据的一个或多个部分以生成修改数据。
38、根据条款35中所述的计算机程序产品,其中计算机程序指令当被执行时,还使得计算机执行以下步骤:
在修改数据的一个或多个部分后,将修改数据存储在快速耐久存储中。
39、根据条款35中所述的计算机程序产品,其中计算机程序指令当被执行时,还使得计算机执行以下步骤:
在修改数据的一个或多个部分后,将修改数据存储在大容量耐久存储中。
40、根据条款35所述的计算机程序产品,其中数据存储优化是以下项中的一个或多个:数据压缩、重复数据删除或垃圾收集。
关于图3C、图9和图10的实施例的附加描述由以下二十个条款描述,其标记为条款41至60:
41、一种在统一存储元件中恢复数据的方法,方法包括:
在包括快速耐久存储的存储设备处,从主机计算机接收数据的多个部分;
在存储设备的快速耐久存储中,存储已成功写入的数据的多个部分中的一个或多个部分的一个或多个提交标识;以及
响应于系统恢复,从快速耐久存储中读取一个或多个提交标识以确定数据的有效部分的集合。
42、根据条款41所述的方法,其中数据的多个部分是RAID条带的碎片。
43、根据条款41所述的方法,其中数据的多个部分中的一个或多个部分的一个或多个提交标识被写入后续碎片的头部。
44、根据条款41所述的方法,其中一个或多个提交标识被写入以下项中的一个或多个:存储器映射耐久存储或耐久寄存器。
45、根据条款41所述的方法,还包括:
将数据的成功写入的部分从快速耐久存储传输到大容量耐久存储。
46、根据条款41所述的方法,其中在提交数据的一部分之前,数据的该部分包括在不允许提交标识的列表中,并且在数据的该部分被提交之后,数据的该部分包括在允许提交标识的列表中,并且从不允许提交标识的列表中移除。
47、根据条款46所述的方法,其中确定数据的有效部分的集合取决于允许提交标识的列表和不允许提交标识的列表。
48、一种用于恢复数据的装置,该装置包括计算机处理器、可操作地耦合到计算机处理器的计算机存储器、在计算机存储器内部设置有计算机程序指令,计算机程序指令当被计算机处理器执行时,使得装置执行以下步骤:
在包括快速耐久存储的存储设备处,从主机计算机接收数据的多个部分;
在存储设备的快速耐久存储中,存储已成功写入的数据的多个部分中的一个或多个部分的一个或多个提交标识;以及
响应于系统恢复,从快速耐久存储中读取一个或多个提交标识以确定数据的有效部分的集合。
49、根据条款48所述的装置,其中数据的多个部分是RAID条带的碎片。
50、根据条款48所述的装置,其中数据的多个部分中的一个或多个部分的一个或多个提交标识被写入后续碎片的头部。
51、根据条款48所述的装置,其中一个或多个提交标识被写入以下项中的一个或多个:存储器映射耐久存储或耐久寄存器。
52、根据条款48所述的装置,其中当计算机程序指令被计算机处理器执行时,使得装置执行以下步骤:
将数据的成功写入的部分从快速耐久存储传输到大容量耐久存储。
53、根据条款48所述的装置,其中在提交数据的一部分之前,数据的该部分包括在不允许提交标识的列表中,并且在数据的该部分被提交之后,数据的该部分包括在允许提交标识的列表中,并且从不允许提交标识的列表中移除。
54、根据条款53所述的装置,其中确定数据的有效部分的集合取决于允许提交标识的列表和不允许提交标识的列表。
55、一种用于暂存数据的计算机程序产品,该计算机程序产品设置在计算机可读介质中,并且该计算机程序产品包括计算机程序指令,计算机程序指令当被执行时,使得计算机执行以下步骤:
在包括快速耐久存储的存储设备处,从主机计算机接收数据的多个部分;
在存储设备的快速耐久存储中,存储已成功写入的数据的多个部分中的一个或多个部分的一个或多个提交标识;以及
响应于系统恢复,从快速耐久存储中读取一个或多个提交标识以确定数据的有效部分的集合。
56、根据条款55所述的计算机程序产品,其中数据的多个部分是RAID条带的碎片。
57、根据条款55所述的计算机程序产品,其中数据的多个部分中的一个或多个部分的一个或多个提交标识被写入后续碎片的头部。
58、根据条款55所述的计算机程序产品,其中一个或多个提交标识被写入以下项中的一个或多个:存储器映射耐久存储或耐久寄存器。
59、根据条款55所述的计算机程序产品,其中在提交数据的一部分之前,数据的该部分包括在不允许提交标识的列表中,并且在数据的该部分被提交之后,数据的该部分包括在允许提交标识的列表中,并且从不允许提交标识的列表中移除。
60、根据条款59所述的计算机程序产品,其中确定数据的有效部分的集合取决于允许提交标识的列表和不允许提交标识的列表。
主要在用于在同步地复制数据集的存储系统间同步元数据的全功能计算机系统的上下文中描述示例实施例。然而,本领域的技术人员将认识到,本公开还可以用设置在计算机可读存储介质上以用于与任何适合的数据处理系统一起使用的计算机程序产品加以具体实现。这样的计算机可读存储介质可以是用于机器可读信息的任何存储介质,包括磁介质、光学介质或其他适合的介质。这样的介质的示例包括硬盘驱动器或磁碟中的磁盘、光驱用的光盘、磁带以及如本领域的技术人员将想到的其他介质。本领域的技术人员将立即认识到,具有适合的编程手段的任何计算机系统将能够执行如用计算机程序产品具体实现的方法的步骤。本领域的技术人员还将认识到,尽管本说明书中描述的示例实施例中的一些面向安装并在计算机硬件上执行的软件,然而,作为固件或者作为硬件实现的替代实施例也在本公开的范围内。
实施例可包括系统、方法和/或计算机程序产品。计算机程序产品可以包括其上有计算机可读程序指令以用于使处理器执行本公开的各方面的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以是可保留并存储指令以供由指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述的任何适合的组合。计算机可读存储介质的更具体示例的非详尽列表包括下列的:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、静态随机存取存储器(SRAM)、便携式紧致盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如上面记录有指令的凹槽中的穿孔卡或凸起结构这样的机械编码设备以及前述的任何适合的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线发送的电信号。
本文描述的计算机可读程序指令可经由网络(例如,互联网、局域网、广域区域网络和/或无线网络)被从计算机可读存储介质下载到相应的计算/处理设备或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令并且转发计算机可读程序指令以用于存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本公开的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或用一种或多种编程语言的任意组合编写的任何一种源代码或目标代码,所述编程语言包括诸如Smalltalk、C++等的面向对象编程语言以及诸如“C”编程语言或类似的编程语言的传统过程编程语言。计算机可读程序指令可以完全在用户的计算机上、部分地在用户的计算机上、作为独立软件包、部分地在用户的计算机上并且部分地在远程计算机上或者完全在远程计算机或服务器上执行。在后者场景中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以做出到外部计算机的连接(用于例如,使用互联网服务提供商来通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本公开的各方面。
在本文中参考根据本公开的一些实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应理解的是,可通过计算机可读程序指令来实现流程图图示和/或框图的每个块以及流程图图示和/或框图中的块的组合。
可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由该计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现一个或多个流程图和/或框图块中指定的功能/行为的手段。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,这些计算机可读程序指令可指示计算机、可编程数据处理装置和/或其他设备以特定方式起作用,使得其中存储有指令的计算机可读存储介质包括制品,所述制品包括实现一个或多个流程图和/或框图块中指定的功能/行为的各方面的指令。
还可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上以使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在该计算机、其他可编程装置或其他设备上执行的指令实现一个或多个流程图和/或框图块中指定的功能/行为。
图中的流程图和框图图示了根据本公开的各种实施例的系统、方法和计算机程序产品的可能的实现方式的架构、功能性和操作。在这方面,流程图或框图中的每个块可以表示指令的模块、段或一部分,其包括用于实现所指定的(一个或多个)逻辑功能的一个或多个可执行指令。在一些替代实现方式中,块中指出的功能可以不按图中指出的次序发生。例如,取决于所涉及的功能性,事实上可以基本上同时执行相继示出的两个块,或者有时可以以相反的次序执行块。还应注意的是,框图和/或流程图图示的每个块以及框图和/或流程图图示中的块的组合可由执行所指定的功能或行为或者实行专用硬件和计算机指令的组合的基于专用硬件的系统实现。
读者应理解的是,可以以各种方式执行本文描述的步骤并且不要求特定排序。从前面的描述中应进一步理解的是,可以在本公开的各种实施例中在不脱离其真实精神的情况下进行修改和变化。本说明书中的描述仅用于图示的目的,而不应为在限制性意义上进行解释。本公开的范围仅受所附权利要求书的语言限制。

Claims (20)

1.一种方法,所述方法包括:
在集成了快速耐久存储和大容量耐久存储两者的统一存储元件处的存储系统中,从主机计算机接收数据存储操作;
根据对应于RAID N+R格式的第一数据弹性技术,在所述统一存储元件的所述快速耐久存储内存储对应于所述数据存储操作的数据;
基于所接收的数据存储操作,确定完整RAID条带已经写入到所述统一存储元件的所述快速耐久存储;以及
响应于确定所述完整RAID条带已经写入到所述快速耐久存储,将所存储的数据的一部分从所述快速耐久存储移动至所述统一存储元件的所述大容量耐久存储,所述大容量耐久存储根据对应于RAID M+R格式的第二数据弹性技术存储所述数据,其中M不同于N。
2.根据权利要求1所述的方法,其中所述数据存储操作是写入操作,其中执行所述写入操作包括使用所述第一数据弹性技术将数据存储在快速耐久存储中,其中所述第一数据弹性技术包括RAID N+R格式的使用,且其中移动数据的所述一部分包括使用所述第二数据弹性技术将所述数据存储在大容量耐久存储中,其中所述第二数据弹性技术不同于所述第一数据弹性技术且包括RAID M+R格式的使用。
3.根据权利要求2所述的方法,其中RAID奇偶校验运算是用于部分填充的数据条带更新的伽罗瓦域内的用于多个部分擦除编码的奇偶校验运算的奇偶校验运算的合并,并且其中M小于N。
4.根据权利要求1所述的方法,其进一步包括:
确定适用于所述快速耐久存储内所存储的数据的一个或多个部分的数据存储优化;
修改所述快速耐久存储内所存储的数据的所述一个或多个部分以生成修改数据;以及
在修改数据的所述一个或多个部分后,将所述修改数据存储在所述快速耐久存储内。
5.根据权利要求4所述的方法,其进一步包括:
在修改数据的所述一个或多个部分后,将所述修改数据存储在所述大容量耐久存储内。
6.根据权利要求5所述的方法,其中所述数据存储优化是以下项中的一个或多个:执行重复数据删除、数据压缩或垃圾收集。
7.根据权利要求1所述的方法,其中R等于2。
8.一种装置,其包括计算机处理器、可操作地耦合到所述计算机处理器的计算机存储器,所述计算机存储器中设置有计算机程序指令,当所述计算机程序指令被所述计算机处理器执行时,使得所述装置执行以下步骤:
在集成了快速耐久存储和大容量耐久存储两者的统一存储元件处的存储系统中,从主机计算机接收数据存储操作;
根据对应于RAID N+R格式的第一数据弹性技术,在所述统一存储元件的所述快速耐久存储内存储对应于所述数据存储操作的数据;
基于所接收的数据存储操作,确定完整RAID条带已经写入到所述统一存储元件的所述快速耐久存储;以及
响应于确定所述完整RAID条带已经写入到所述快速耐久存储,将所存储的数据的一部分从所述快速耐久存储移动至所述统一存储元件的所述大容量耐久存储,所述大容量耐久存储根据对应于RAID M+R格式的第二数据弹性技术存储所述数据,其中M不同于N。
9.根据权利要求8所述的装置,其中所述快速耐久存储包括非易失性随机存取存储器。
10.根据权利要求8所述的装置,其中所述大容量耐久存储包括一个或多个固态驱动器。
11.根据权利要求8所述的装置,其中所述存储元件进一步包括易失性随机存取存储器,并且其中一个或多个控制器被进一步配置为:响应于对所述存储元件的断电并且依赖于由储能设备提供的能量,将数据从所述易失性随机存取存储器转移到所述快速耐久存储或所述大容量耐久存储中的一个或多个中。
12.根据权利要求8所述的装置,其中当所述计算机程序指令被所述计算机处理器执行时,使得所述装置执行以下步骤:
在修改数据的所述一个或多个部分之后,将所述修改数据存储在所述快速耐久存储内。
13.根据权利要求8所述的装置,当所述计算机程序指令被所述计算机处理器执行时,使得所述装置执行以下步骤:
确定适用于所述快速耐久存储内所存储的数据的一个或多个部分的数据存储优化;
修改所述快速耐久存储内所存储的数据的所述一个或多个部分以生成修改数据;以及
在修改数据的所述一个或多个部分之后,将所述修改数据存储在所述大容量耐久存储内。
14.根据权利要求13所述的装置,其中所述数据存储优化是以下项中的一个或多个:执行重复数据删除、数据压缩或垃圾收集。
15.根据权利要求8所述的装置,其中R等于2。
16.一种设置在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括计算机程序指令,当所述计算机程序指令被执行时,使得计算机执行以下步骤:
在集成了快速耐久存储和大容量耐久存储两者的统一存储元件处的存储系统中,从主机计算机接收数据存储操作;
根据对应于RAID N+R格式的第一数据弹性技术,在所述统一存储元件的所述快速耐久存储内存储对应于所述数据存储操作的数据;以及
响应于确定所述完整RAID条带已经写入到所述快速耐久存储,将所存储的数据的一部分从所述快速耐久存储移动至所述统一存储元件的所述大容量耐久存储,所述大容量耐久存储根据对应于RAID M+R格式的第二数据弹性技术存储所述数据,其中M不同于N。
17.根据权利要求16所述的计算机程序产品,其中所述数据存储操作是写入操作,其中执行所述写入操作包括使用所述第一数据弹性技术将数据存储在快速耐久存储中,其中所述第一数据弹性技术包括RAID N+R格式的使用,且其中移动数据的所述一部分包括使用所述第二数据弹性技术将所述数据存储在大容量耐久存储中,其中所述第二数据弹性技术不同于所述第一数据弹性技术且包括RAID M+R格式的使用。
18.根据权利要求16所述的计算机程序产品,其中当所述计算机程序指令被执行时,进一步使得所述计算机执行以下步骤:
确定适用于所述快速耐久存储内所存储的数据的一个或多个部分的数据存储优化;
修改所述快速耐久存储内所存储的数据的所述一个或多个部分以生成修改数据;以及
在修改数据的所述一个或多个部分之后,将所述修改数据存储在所述快速耐久存储内。
19.根据权利要求18所述的计算机程序产品,其中当所述计算机程序指令被执行时,进一步使得所述计算机执行以下步骤:在修改数据的所述一个或多个部分之后,将所述修改数据存储在所述大容量耐久存储内。
20.根据权利要求18所述的计算机程序产品,其中所述数据存储优化是以下项中的一个或多个:执行重复数据删除、数据压缩或垃圾收集。
CN202310422791.6A 2017-06-12 2018-04-30 集成到大容量存储设备的可访问快速耐久存储 Pending CN116431072A (zh)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US201762518551P 2017-06-12 2017-06-12
US62/518,551 2017-06-12
US15/697,521 2017-09-07
US15/697,566 US10417092B2 (en) 2017-09-07 2017-09-07 Incremental RAID stripe update parity calculation
US15/697,566 2017-09-07
US15/697,540 US10552090B2 (en) 2017-09-07 2017-09-07 Solid state drives with multiple types of addressable memory
US15/697,540 2017-09-07
US15/697,521 US11592991B2 (en) 2017-09-07 2017-09-07 Converting raid data between persistent storage types
US201762589524P 2017-11-21 2017-11-21
US62/589,524 2017-11-21
US201862631933P 2018-02-18 2018-02-18
US62/631,933 2018-02-18
PCT/US2018/030209 WO2018231350A1 (en) 2017-06-12 2018-04-30 Accessible fast durable storage integrated into a bulk storage device
CN201880037212.3A CN110720088A (zh) 2017-06-12 2018-04-30 集成到大容量存储设备的可访问快速耐久存储

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201880037212.3A Division CN110720088A (zh) 2017-06-12 2018-04-30 集成到大容量存储设备的可访问快速耐久存储

Publications (1)

Publication Number Publication Date
CN116431072A true CN116431072A (zh) 2023-07-14

Family

ID=64660848

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310422791.6A Pending CN116431072A (zh) 2017-06-12 2018-04-30 集成到大容量存储设备的可访问快速耐久存储
CN201880037212.3A Pending CN110720088A (zh) 2017-06-12 2018-04-30 集成到大容量存储设备的可访问快速耐久存储

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201880037212.3A Pending CN110720088A (zh) 2017-06-12 2018-04-30 集成到大容量存储设备的可访问快速耐久存储

Country Status (4)

Country Link
US (1) US11960777B2 (zh)
EP (1) EP3612922A1 (zh)
CN (2) CN116431072A (zh)
WO (1) WO2018231350A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789020B2 (en) 2017-06-12 2020-09-29 Pure Storage, Inc. Recovering data within a unified storage element
CN116431072A (zh) 2017-06-12 2023-07-14 净睿存储股份有限公司 集成到大容量存储设备的可访问快速耐久存储
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
CN111291001B (zh) * 2020-01-22 2024-03-22 奇安信科技集团股份有限公司 计算机文件的读取方法、装置、计算机系统及存储介质
CN111475839B (zh) * 2020-04-06 2023-04-18 华中科技大学 一种用于不可信环境的冗余数据编码方法、存储介质
CN111581330B (zh) * 2020-04-26 2023-04-07 北京明略软件系统有限公司 一种非结构化文本中标记操作的撤销或恢复的方法和装置
CN111627484B (zh) * 2020-05-29 2023-04-18 珠海创飞芯科技有限公司 Nor flash擦除干扰纠正方法及装置
CN112035902B (zh) * 2020-08-12 2024-03-19 北京数盾信息科技有限公司 一种面向高速高并发应用的加密模组
CN112148220B (zh) * 2020-09-17 2024-03-19 合肥大唐存储科技有限公司 一种实现数据处理的方法、装置、计算机存储介质及终端
CN112783689B (zh) * 2021-02-08 2022-09-02 上海交通大学 一种基于lrc编码的部分条带写优化方法及装置
CN112817540B (zh) * 2021-02-23 2022-11-04 上海交通大学 一种基于磁盘阵列扩展的数据块重分布方法及装置
CN112835533B (zh) * 2021-02-25 2023-02-17 上海交通大学 一种基于机架级别的云存储阵列扩展方法及装置
US11809373B2 (en) 2021-03-16 2023-11-07 International Business Machines Corporation Defining redundant array of independent disks level for machine learning training data
US11599300B2 (en) * 2021-04-19 2023-03-07 Micron Technology, Inc. Voltage threshold prediction-based memory management
US11599412B1 (en) 2021-09-15 2023-03-07 Cisco Technology, Inc. Method and apparatus for distributed erasure encoding
CN114143139B (zh) * 2021-11-30 2023-07-04 陕西中源智控科技有限公司 基于硬件冗余分组通信的胶带机保护系统及方法
US11897149B2 (en) * 2021-12-09 2024-02-13 Google Llc Object handling apparatus
CN114398008A (zh) * 2021-12-31 2022-04-26 珠海妙存科技有限公司 数据回收方法、控制器和计算机可读存储介质
US20230350752A1 (en) * 2022-04-27 2023-11-02 Dell Products L.P. Flexible raid scheme allowing fast rebuild
CN116189896B (zh) * 2023-04-24 2023-08-08 北京快舒尔医疗技术有限公司 一种基于云端的糖尿病健康数据预警方法及系统
CN116893787B (zh) * 2023-09-06 2023-12-05 四川易利数字城市科技有限公司 一种基于区块链大数据应用的磁盘存储方法
CN117240610B (zh) * 2023-11-13 2024-01-23 傲拓科技股份有限公司 一种基于数据加密的plc模组运行数据传输方法和系统

Family Cites Families (225)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
JPH08242229A (ja) 1995-03-01 1996-09-17 Fujitsu Ltd ネットワーク監視における状態整合処理システム
US5799200A (en) 1995-09-28 1998-08-25 Emc Corporation Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller
US6012032A (en) 1995-11-30 2000-01-04 Electronic Data Systems Corporation System and method for accounting of computer data storage utilization
US5933598A (en) 1996-07-17 1999-08-03 Digital Equipment Corporation Method for sharing variable-grained memory of workstations by sending particular block including line and size of the block to exchange shared data structures
US6085333A (en) 1997-12-19 2000-07-04 Lsi Logic Corporation Method and apparatus for synchronization of code in redundant controllers in a swappable environment
US6101615A (en) 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
US6647514B1 (en) 2000-03-23 2003-11-11 Hewlett-Packard Development Company, L.P. Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request
US6643641B1 (en) 2000-04-27 2003-11-04 Russell Snyder Web search engine with graphic snapshots
US6675255B1 (en) 2000-06-30 2004-01-06 Micron Technology, Inc. Device initialize command for a synchronous memory
JP2002041305A (ja) 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
US6789162B1 (en) 2000-10-17 2004-09-07 Sun Microsystems, Inc. Storage controller configured to select unused regions of a storage device for data storage according to head position
US7155569B2 (en) 2001-02-28 2006-12-26 Lsi Logic Corporation Method for raid striped I/O request generation using a shared scatter gather list
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
JP2002269065A (ja) 2001-03-08 2002-09-20 Mitsubishi Electric Corp プログラム可能な不揮発性メモリを内蔵したマイクロコンピュータ
US6785696B2 (en) 2001-06-01 2004-08-31 Hewlett-Packard Development Company, L.P. System and method for replication of distributed databases that span multiple primary nodes
US6718435B2 (en) 2001-08-14 2004-04-06 International Business Machines Corporation Method and system for migrating data in a raid logical drive migration
US6857045B2 (en) 2002-01-25 2005-02-15 International Business Machines Corporation Method and system for updating data in a compressed read cache
US6728738B2 (en) 2002-04-03 2004-04-27 Sun Microsystems, Inc. Fast lifetime analysis of objects in a garbage-collected system
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7146521B1 (en) 2002-08-21 2006-12-05 3Pardata, Inc. Preventing damage of storage devices and data loss in a data storage system
CA2461446A1 (en) 2002-08-29 2004-03-11 Matsushita Electric Industrial Co., Ltd. Semiconductor memory apparatus and method for writing data into the flash memory device
US20040153844A1 (en) 2002-10-28 2004-08-05 Gautam Ghose Failure analysis method and system for storage area networks
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7072905B2 (en) 2002-12-06 2006-07-04 Sun Microsystems, Inc. Better placement of objects reachable from outside a generation managed by the train algorithm
US7181580B2 (en) 2003-03-27 2007-02-20 International Business Machines Corporation Secure pointers
US7809252B2 (en) 2003-04-09 2010-10-05 Corel Inc. Systems and methods for caching multimedia data
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7434097B2 (en) 2003-06-05 2008-10-07 Copan System, Inc. Method and apparatus for efficient fault-tolerant disk drive replacement in raid storage systems
US7089272B1 (en) 2003-06-18 2006-08-08 Sun Microsystems, Inc. Specializing write-barriers for objects in a garbage collected heap
US7206991B2 (en) 2003-10-15 2007-04-17 Lsi Logic Corporation Method, apparatus and program for migrating between striped storage and parity striped storage
WO2005042713A2 (en) 2003-10-28 2005-05-12 The Johns Hopkins University Quantitative multiplex methylation-specific pcr
US7434214B2 (en) 2004-01-21 2008-10-07 International Business Machines Corporation Method for determining a close approximate benefit of reducing memory footprint of a Java application
US20050188246A1 (en) 2004-02-25 2005-08-25 Emberty Robert G. Persistent worldwide names assigned to removable media storage
US7526684B2 (en) 2004-03-24 2009-04-28 Seagate Technology Llc Deterministic preventive recovery from a predicted failure in a distributed storage system
US7493424B1 (en) 2004-04-30 2009-02-17 Netapp, Inc. Network storage system with shared software stack for LDMA and RDMA
JP4392601B2 (ja) 2004-05-07 2010-01-06 パナソニック株式会社 データアクセス装置および記録媒体
US8042163B1 (en) 2004-05-20 2011-10-18 Symatec Operating Corporation Secure storage access using third party capability tokens
US7533292B2 (en) 2004-07-15 2009-05-12 International Business Machines Corporation Management method for spare disk drives in a raid system
US7380157B2 (en) 2004-10-27 2008-05-27 Pillar Data Systems, Inc. Staggered writing for data storage systems
EP1829332A2 (en) 2004-12-15 2007-09-05 Exostar Corporation Enabling trust in a federated collaboration of networks
US7426623B2 (en) 2005-01-14 2008-09-16 Sandisk Il Ltd System and method for configuring flash memory partitions as super-units
US7702850B2 (en) 2005-03-14 2010-04-20 Thomas Earl Ludwig Topology independent storage arrays and methods
US20060230245A1 (en) 2005-04-08 2006-10-12 Microsoft Corporation Data storage safety indicator and expander
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7689609B2 (en) 2005-04-25 2010-03-30 Netapp, Inc. Architecture for supporting sparse volumes
US7366825B2 (en) 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
JP4506594B2 (ja) 2005-07-22 2010-07-21 日本電気株式会社 冗長パス制御方法
US7694082B2 (en) 2005-07-29 2010-04-06 International Business Machines Corporation Computer program and method for managing resources in a distributed storage system
US7617216B2 (en) 2005-09-07 2009-11-10 Emc Corporation Metadata offload for a file server cluster
ITVA20050061A1 (it) 2005-11-08 2007-05-09 St Microelectronics Srl Metodo di gestione di un dispositivo di memoria non volatile e relativa memoria
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US7899780B1 (en) 2006-03-30 2011-03-01 Emc Corporation Methods and apparatus for structured partitioning of management information
US20070294564A1 (en) 2006-04-27 2007-12-20 Tim Reddin High availability storage system
US8266472B2 (en) 2006-05-03 2012-09-11 Cisco Technology, Inc. Method and system to provide high availability of shared data
US9455955B2 (en) 2006-05-17 2016-09-27 Richard Fetik Customizable storage controller with integrated F+ storage firewall protection
US7743239B2 (en) 2006-06-30 2010-06-22 Intel Corporation Accelerating integrity checks of code and data stored in non-volatile memory
US7627786B2 (en) 2006-09-26 2009-12-01 International Business Machines Corporation Tracking error events relating to data storage drives and/or media of automated data storage library subsystems
US8620970B2 (en) 2006-10-03 2013-12-31 Network Appliance, Inc. Methods and apparatus for changing versions of a filesystem
US7669029B1 (en) 2006-11-15 2010-02-23 Network Appliance, Inc. Load balancing a data storage system
US20080147963A1 (en) 2006-12-15 2008-06-19 Accusys. Inc. Disk array device
US7710777B1 (en) 2006-12-20 2010-05-04 Marvell International Ltd. Semi-volatile NAND flash memory
US7640332B2 (en) 2006-12-27 2009-12-29 Hewlett-Packard Development Company, L.P. System and method for hot deployment/redeployment in grid computing environment
KR100923990B1 (ko) 2007-02-13 2009-10-28 삼성전자주식회사 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US7975115B2 (en) 2007-04-11 2011-07-05 Dot Hill Systems Corporation Method and apparatus for separating snapshot preserved and write data
US8706914B2 (en) 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US7996599B2 (en) 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US7991942B2 (en) 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7870360B2 (en) 2007-09-14 2011-01-11 International Business Machines Corporation Storage area network (SAN) forecasting in a heterogeneous environment
KR101433859B1 (ko) 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US8271700B1 (en) 2007-11-23 2012-09-18 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US7743191B1 (en) 2007-12-20 2010-06-22 Pmc-Sierra, Inc. On-chip shared memory based device architecture
TWI346944B (en) 2007-12-31 2011-08-11 Qnap Systems Inc Method of raid level migration and system for the same
TWI373768B (en) 2008-02-05 2012-10-01 Phison Electronics Corp System, controller and method for data storage
JP4471007B2 (ja) 2008-02-05 2010-06-02 ソニー株式会社 記録装置、記録装置の制御方法、記録装置の制御方法のプログラム及び記録装置の制御方法のプログラムを記録した記録媒体
JP4999736B2 (ja) 2008-03-13 2012-08-15 キヤノン株式会社 データ処理装置
US20090271564A1 (en) 2008-04-25 2009-10-29 Hitachi, Ltd. Storage system
US8949863B1 (en) 2008-04-30 2015-02-03 Netapp, Inc. Creating environmental snapshots of storage device failure events
JP2010015197A (ja) 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
US8093868B2 (en) 2008-09-04 2012-01-10 International Business Machines Corporation In situ verification of capacitive power support
US8756369B2 (en) * 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US8086585B1 (en) 2008-09-30 2011-12-27 Emc Corporation Access control to block storage devices for a shared disk based file system
JP5192352B2 (ja) 2008-10-30 2013-05-08 株式会社日立製作所 記憶装置及びデータ格納領域管理方法
US9473419B2 (en) 2008-12-22 2016-10-18 Ctera Networks, Ltd. Multi-tenant cloud storage system
US8762642B2 (en) 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication
US20100199036A1 (en) 2009-02-02 2010-08-05 Atrato, Inc. Systems and methods for block-level management of tiered storage
JP4844639B2 (ja) 2009-02-19 2011-12-28 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9134922B2 (en) 2009-03-12 2015-09-15 Vmware, Inc. System and method for allocating datastores for virtual machines
KR101586047B1 (ko) 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8805953B2 (en) 2009-04-03 2014-08-12 Microsoft Corporation Differential file and system restores from peers and the cloud
TWI408689B (zh) 2009-04-14 2013-09-11 Jmicron Technology Corp 存取儲存裝置的方法及相關控制電路
US8504797B2 (en) 2009-06-02 2013-08-06 Hitachi, Ltd. Method and apparatus for managing thin provisioning volume by using file storage system
JP4874368B2 (ja) 2009-06-22 2012-02-15 株式会社日立製作所 フラッシュメモリを用いたストレージシステムの管理方法及び計算機
US20110010485A1 (en) 2009-07-08 2011-01-13 Hou-Yuan Lin Flash Memory Control Device
US7948798B1 (en) 2009-07-22 2011-05-24 Marvell International Ltd. Mixed multi-level cell and single level cell storage device
US8402242B2 (en) 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8868957B2 (en) 2009-09-24 2014-10-21 Xyratex Technology Limited Auxiliary power supply, a method of providing power to a data storage system and a back-up power supply charging circuit
US8706960B1 (en) 2009-09-29 2014-04-22 Emc Corporation Techniques for performing data migration
TWI428917B (zh) 2009-11-25 2014-03-01 Silicon Motion Inc 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法
US8250324B2 (en) 2009-11-30 2012-08-21 International Business Machines Corporation Method to efficiently locate meta-data structures on a flash-based storage device
US8554743B2 (en) 2009-12-08 2013-10-08 International Business Machines Corporation Optimization of a computing environment in which data management operations are performed
TWI442401B (zh) 2009-12-30 2014-06-21 Macronix Int Co Ltd 共享輸入封裝之三維晶片選取
US8387136B2 (en) 2010-01-05 2013-02-26 Red Hat, Inc. Role-based access control utilizing token profiles
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
US8904104B2 (en) * 2010-06-09 2014-12-02 Taejin Info Tech Co., Ltd. Hybrid storage system with mid-plane
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8527698B2 (en) 2010-06-22 2013-09-03 Lsi Corporation Parity-based raid system configured to protect against data corruption caused by the occurrence of write holes
US20120023144A1 (en) 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
US20120054264A1 (en) 2010-08-31 2012-03-01 International Business Machines Corporation Techniques for Migrating Active I/O Connections with Migrating Servers and Clients
US8566546B1 (en) 2010-09-27 2013-10-22 Emc Corporation Techniques for enforcing capacity restrictions of an allocation policy
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8595451B2 (en) 2010-11-04 2013-11-26 Lsi Corporation Managing a storage cache utilizing externally assigned cache priority tags
US8949502B2 (en) 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
US8812860B1 (en) 2010-12-03 2014-08-19 Symantec Corporation Systems and methods for protecting data stored on removable storage devices by requiring external user authentication
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US8589723B2 (en) 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
US8560772B1 (en) 2010-12-29 2013-10-15 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices
US8465332B2 (en) 2011-01-13 2013-06-18 Tyco Electronics Corporation Contact assembly for an electrical connector
US8578442B1 (en) 2011-03-11 2013-11-05 Symantec Corporation Enforcing consistent enterprise and cloud security profiles
US9229816B2 (en) * 2011-03-14 2016-01-05 Taejin Info Tech Co., Ltd. Hybrid system architecture for random access memory
US9063854B1 (en) 2011-04-18 2015-06-23 American Megatrends, Inc. Systems and methods for cluster raid data consistency
US8738882B2 (en) 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US8751463B1 (en) 2011-06-30 2014-06-10 Emc Corporation Capacity forecasting for a deduplicating storage system
US8769622B2 (en) 2011-06-30 2014-07-01 International Business Machines Corporation Authentication and authorization methods for cloud computing security
EP2737431A4 (en) 2011-07-27 2015-03-25 Cleversafe Inc GENERATION OF DISTRIBUTED STORAGE NETWORK EVENT RECORDS
US8931041B1 (en) 2011-07-29 2015-01-06 Symantec Corporation Method and system for visibility and control over access transactions between clouds using resource authorization messages
US20130036272A1 (en) 2011-08-02 2013-02-07 Microsoft Corporation Storage engine node for cloud-based storage
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US9525900B2 (en) 2011-09-15 2016-12-20 Google Inc. Video management system
JP2013077278A (ja) 2011-09-16 2013-04-25 Toshiba Corp メモリ・デバイス
US9237145B2 (en) 2011-09-29 2016-01-12 Oracle International Corporation Single sign-on (SSO) for mobile applications
EP2772025A4 (en) 2011-10-24 2015-12-23 Schneider Electric Ind Sas REMOTE COMMUNICATION SYSTEMS AND METHODS
WO2013071087A1 (en) 2011-11-09 2013-05-16 Unisys Corporation Single sign on for cloud
US20130311434A1 (en) 2011-11-17 2013-11-21 Marc T. Jones Method, apparatus and system for data deduplication
US9330245B2 (en) 2011-12-01 2016-05-03 Dashlane SAS Cloud-based data backup and sync with secure local storage of access keys
US20130219164A1 (en) 2011-12-29 2013-08-22 Imation Corp. Cloud-based hardware security modules
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
US8613066B1 (en) 2011-12-30 2013-12-17 Amazon Technologies, Inc. Techniques for user authentication
US9423983B2 (en) 2012-01-19 2016-08-23 Syncsort Incorporated Intelligent storage controller
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
JP2013161235A (ja) 2012-02-03 2013-08-19 Fujitsu Ltd ストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラム
JP5933755B2 (ja) 2012-04-27 2016-06-15 株式会社日立製作所 ストレージシステム及びストレージ制御装置
US10474584B2 (en) 2012-04-30 2019-11-12 Hewlett Packard Enterprise Development Lp Storing cache metadata separately from integrated circuit containing cache controller
US8832372B2 (en) 2012-05-24 2014-09-09 Netapp, Inc. Network storage systems having clustered raids for improved redundancy and load balancing
US10341435B2 (en) 2012-06-12 2019-07-02 Centurylink Intellectual Property Llc High performance cloud storage
US9130927B2 (en) 2012-07-02 2015-09-08 Sk Planet Co., Ltd. Single certificate service system and operational method thereof
US9047181B2 (en) 2012-09-07 2015-06-02 Splunk Inc. Visualization of data from clusters
US8769651B2 (en) 2012-09-19 2014-07-01 Secureauth Corporation Mobile multifactor single-sign-on authentication
US9462502B2 (en) 2012-09-25 2016-10-04 Empire Technology Development Llc Limiting data usage of a device connected to the internet via tethering
US9245144B2 (en) 2012-09-27 2016-01-26 Intel Corporation Secure data container for web applications
US8862818B1 (en) 2012-09-27 2014-10-14 Emc Corporation Handling partial stripe writes in log-structured storage
US8990914B2 (en) 2012-09-28 2015-03-24 Intel Corporation Device, method, and system for augmented reality security
US8990905B1 (en) 2012-09-28 2015-03-24 Emc Corporation Protected resource access control utilizing intermediate values of a hash chain
US8850546B1 (en) 2012-09-30 2014-09-30 Emc Corporation Privacy-preserving user attribute release and session management
US20140101434A1 (en) 2012-10-04 2014-04-10 Msi Security, Ltd. Cloud-based file distribution and management using real identity authentication
US9209973B2 (en) 2012-11-20 2015-12-08 Google Inc. Delegate authorization in cloud-based storage system
US8997197B2 (en) 2012-12-12 2015-03-31 Citrix Systems, Inc. Encryption-based data access management
US9317223B2 (en) 2012-12-17 2016-04-19 International Business Machines Corporation Method and apparatus for automated migration of data among storage centers
US9075529B2 (en) 2013-01-04 2015-07-07 International Business Machines Corporation Cloud based data migration and replication
US9063967B2 (en) 2013-01-10 2015-06-23 Pure Storage, Inc. Performing copies in a storage system
US9052917B2 (en) 2013-01-14 2015-06-09 Lenovo (Singapore) Pte. Ltd. Data storage for remote environment
US9483657B2 (en) 2013-01-14 2016-11-01 Accenture Global Services Limited Secure online distributed data storage services
US9009526B2 (en) 2013-01-24 2015-04-14 Hewlett-Packard Development Company, L.P. Rebuilding drive data
US20140229654A1 (en) 2013-02-08 2014-08-14 Seagate Technology Llc Garbage Collection with Demotion of Valid Data to a Lower Memory Tier
US20140230017A1 (en) 2013-02-12 2014-08-14 Appsense Limited Programmable security token
US8902532B2 (en) 2013-03-20 2014-12-02 International Business Machines Corporation Write avoidance areas around bad blocks on a hard disk drive platter
GB2513377A (en) 2013-04-25 2014-10-29 Ibm Controlling data storage in an array of storage devices
US9317382B2 (en) 2013-05-21 2016-04-19 International Business Machines Corporation Storage device with error recovery indication
US10038726B2 (en) 2013-06-12 2018-07-31 Visa International Service Association Data sensitivity based authentication and authorization
US9124569B2 (en) 2013-06-14 2015-09-01 Microsoft Technology Licensing, Llc User authentication in a cloud environment
US8898346B1 (en) 2013-06-20 2014-11-25 Qlogic, Corporation Method and system for configuring network devices
US8984602B1 (en) 2013-06-28 2015-03-17 Emc Corporation Protected resource access control utilizing credentials based on message authentication codes and hash chain values
US9454423B2 (en) 2013-09-11 2016-09-27 Dell Products, Lp SAN performance analysis tool
DE112013007296T5 (de) 2013-09-27 2016-04-21 Intel Corporation Bestimmung eines geeigneten Ziels für einen Initiator durch einen Prozessor auf Steuerungsebene
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9519580B2 (en) 2013-11-11 2016-12-13 Globalfoundries Inc. Load balancing logical units in an active/passive storage system
US9619311B2 (en) 2013-11-26 2017-04-11 International Business Machines Corporation Error identification and handling in storage area networks
US9280678B2 (en) 2013-12-02 2016-03-08 Fortinet, Inc. Secure cloud storage distribution and aggregation
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
WO2015104833A1 (ja) 2014-01-10 2015-07-16 株式会社日立製作所 情報システム及びi/o処理方法
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US9612745B2 (en) 2014-01-24 2017-04-04 Silicon Graphics International Corp. Raid set initialization
US20150234595A1 (en) 2014-02-14 2015-08-20 Kabushiki Kaisha Toshiba Storage device
US9547448B2 (en) 2014-02-24 2017-01-17 Netapp, Inc. System and method for transposed storage in raid arrays
US9250823B1 (en) 2014-05-20 2016-02-02 Emc Corporation Online replacement of physical storage in a virtual storage system
NO2988221T3 (zh) 2014-06-27 2018-01-06
US9516167B2 (en) 2014-07-24 2016-12-06 Genesys Telecommunications Laboratories, Inc. Media channel management apparatus for network communications sessions
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US20160080490A1 (en) 2014-09-15 2016-03-17 Microsoft Corporation Online data movement without compromising data integrity
US10204010B2 (en) 2014-10-03 2019-02-12 Commvault Systems, Inc. Intelligent protection of off-line mail data
US10241867B2 (en) 2014-11-04 2019-03-26 International Business Machines Corporation Journal-less recovery for nested crash-consistent storage systems
US20160182542A1 (en) 2014-12-18 2016-06-23 Stuart Staniford Denial of service and other resource exhaustion defense and mitigation using transition tracking
KR20160075229A (ko) 2014-12-19 2016-06-29 삼성전자주식회사 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US10528272B2 (en) 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information
US9521200B1 (en) 2015-05-26 2016-12-13 Pure Storage, Inc. Locally providing cloud storage array services
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US20160350009A1 (en) 2015-05-29 2016-12-01 Pure Storage, Inc. Buffering data to be written to an array of non-volatile storage devices
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9760479B2 (en) * 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US10248617B2 (en) 2015-12-22 2019-04-02 Spectra Logic, Corp. File-level array storage
KR102527992B1 (ko) 2016-03-14 2023-05-03 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10481799B2 (en) 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10567406B2 (en) 2016-08-16 2020-02-18 International Business Machines Corporation Cloud computing environment activity monitoring
US10459657B2 (en) 2016-09-16 2019-10-29 Hewlett Packard Enterprise Development Lp Storage system with read cache-on-write buffer
US11076509B2 (en) 2017-01-24 2021-07-27 The Research Foundation for the State University Control systems and prediction methods for it cooling performance in containment
US11010064B2 (en) 2017-02-15 2021-05-18 Amazon Technologies, Inc. Data system with flush views
CN116431072A (zh) 2017-06-12 2023-07-14 净睿存储股份有限公司 集成到大容量存储设备的可访问快速耐久存储
US10552090B2 (en) 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
US10789020B2 (en) 2017-06-12 2020-09-29 Pure Storage, Inc. Recovering data within a unified storage element
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US11106810B2 (en) 2018-07-30 2021-08-31 EMC IP Holding Company LLC Multi-tenant deduplication with non-trusted storage system
US10877683B2 (en) 2019-04-09 2020-12-29 International Business Machines Corporation Tiered storage optimization and migration

Also Published As

Publication number Publication date
CN110720088A (zh) 2020-01-21
US11960777B2 (en) 2024-04-16
EP3612922A1 (en) 2020-02-26
US20230315346A1 (en) 2023-10-05
WO2018231350A1 (en) 2018-12-20

Similar Documents

Publication Publication Date Title
US11960777B2 (en) Utilizing multiple redundancy schemes within a unified storage element
US11593036B2 (en) Staging data within a unified storage element
US11687423B2 (en) Prioritizing highly performant storage systems for servicing a synchronously replicated dataset
US11112989B2 (en) Utilizing a decentralized storage network for data storage
US11138103B1 (en) Resiliency groups
US11966841B2 (en) Search acceleration for artificial intelligence
US20220217049A1 (en) Path Management For Container Clusters That Access Persistent Storage
WO2018231806A1 (en) Portable snapshot replication between storage systems
US10521151B1 (en) Determining effective space utilization in a storage system
US11614881B2 (en) Calculating storage consumption for distinct client entities
US11797211B2 (en) Expanding data structures in a storage system
US11327676B1 (en) Predictive data streaming in a virtual storage system
US20220398018A1 (en) Tiering Snapshots Across Different Storage Tiers
US20240012752A1 (en) Guaranteeing Physical Deletion of Data in a Storage System
US20230229363A1 (en) Tiering Valid Data after a Disaster Recovery Operation
US11868309B2 (en) Queue management for data relocation
US20240193125A1 (en) Maintaining Data With Different Retention Policies

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