CN114127693A - 虚拟存储系统中的数据恢复 - Google Patents

虚拟存储系统中的数据恢复 Download PDF

Info

Publication number
CN114127693A
CN114127693A CN202080047645.4A CN202080047645A CN114127693A CN 114127693 A CN114127693 A CN 114127693A CN 202080047645 A CN202080047645 A CN 202080047645A CN 114127693 A CN114127693 A CN 114127693A
Authority
CN
China
Prior art keywords
storage
data
storage system
virtual
cloud
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
CN202080047645.4A
Other languages
English (en)
Inventor
罗纳德·卡尔
N·尼拉坎塔姆
J·弗雷利希
A·卡伦布纳森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pure Storage Inc
Original Assignee
Pure Storage Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pure Storage Inc filed Critical Pure Storage Inc
Publication of CN114127693A publication Critical patent/CN114127693A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • 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
    • 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/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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Abstract

虚拟存储系统中的数据恢复包括:在由虚拟存储系统的第一存储层提供的存储内检测数据集内的数据丢失,其中数据集的恢复数据存储在第二存储层中;确定数据集的恢复点,数据集的一致版本可从存储在第二存储层中的恢复数据恢复直到恢复点为止;以及在由虚拟存储系统的第一存储层提供的存储内恢复数据集的一致版本。

Description

虚拟存储系统中的数据恢复
附图说明
图1A例示根据一些实现的数据存储的第一示例系统。
图1B例示根据一些实现的数据存储的第二示例系统。
图1C例示根据一些实现的数据存储的第三示例系统。
图1D例示根据一些实现的数据存储的第四示例系统。
图2A是根据一些实施例的具有多个存储节点以及耦合到各存储节点以提供网络附加存储的内部存储的存储集群的透视图。
图2B是示出根据一些实施例的耦合多个存储节点的互连交换机的框图。
图2C是示出根据一些实施例的存储节点的内容以及非易失性固态存储单元其中之一的内容的多级框图。
图2D示出根据一些实施例的使用一些先前图中的存储节点和存储单元的实施例的存储服务器环境。
图2E是示出根据一些实施例的控制平面、计算和存储平面以及与基础物理资源进行交互的权限的刀片硬件框图。
图2F描绘了根据一些实施例的存储集群的刀片中的弹性软件层。
图2G描绘了根据一些实施例的存储集群的刀片中的权限和存储资源。
图3A阐述了根据本发明的一些实施例的被耦合以与云服务提供商进行数据通信的存储系统的图。
图3B阐述了根据本发明的一些实施例的存储系统的图。
图3C例示可被具体地配置为进行这里所述的处理中的一个或多个处理的示例性计算装置。
图3D阐述了例示根据本发明的一些实施例的支持豆荚(pod)的多个存储系统的框图。
图3E阐述了例示根据本发明的一些实施例的针对跨多个存储系统同步的数据集的服务I/O操作的示例方法的流程图。
图4阐述了根据本发明的一些实施例的基于云的存储系统的示例。
图5阐述了根据本发明的一些实施例的附加的基于云的存储系统的示例。
图6阐述了例示在基于云的存储系统中服务I/O操作的示例方法的流程图。
图7阐述了例示在基于云的存储系统中服务I/O操作的示例方法的流程图。
图8阐述了例示在基于云的存储系统中服务I/O操作的附加示例方法的流程图。
图9阐述了例示在基于云的存储系统中服务I/O操作的附加示例方法的流程图。
图10阐明了例示在基于云的存储系统中服务I/O操作的附加示例方法的流程图。
图11阐述了例示在基于云的存储系统中服务I/O操作的附加示例方法的流程图。
图12例示根据本发明的一些实施例的示例虚拟存储系统架构。
图13例示根据本发明的一些实施例的附加示例虚拟存储系统架构。
图14例示根据本发明的一些实施例的附加示例虚拟存储系统架构。
图15例示根据本发明的一些实施例的附加示例虚拟存储系统架构。
图16例示根据本发明的一些实施例的附加示例虚拟存储系统架构。
图17阐述了例示根据本发明的一些实施例的虚拟存储系统中的数据恢复的附加示例方法的流程图。
具体实施方式
参考以图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)、因特网小型计算机系统接口(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控制器等,该I/O控制器使存储阵列控制器110A~D通过中平面(未示出)耦合至持久存储资源170A~B(这里也称为“存储资源”)以进行数据通信。持久存储资源170A~B主要包括任意数量的存储驱动器171A~F(这里也称为“存储装置”)和任意数量的非易失性随机存取存储器(NVRAM)装置(未示出)。
在一些实现中,持久存储资源170A~B的NVRAM装置可被配置为从存储阵列控制器110A~D接收要存储在存储驱动器171A~F中的数据。在一些示例中,数据可以源自计算装置164A~B。在一些示例中,将数据写入NVRAM装置可以比直接将数据写入存储驱动器171A~F更快地执行。在实现中,存储阵列控制器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可被配置用于从存储阵列102A~B中的存储驱动器171A~F卸下装置管理责任。例如,存储阵列控制器110A~D可以管理控制信息,该控制信息可以描述存储驱动器171A~F中的一个或多个存储器区块的状态。控制信息可以例如指示特定存储器区块已故障并且不应再被写入,特定存储器区块包含存储阵列控制器110A~D的启动代码、已在特定存储器区块上进行的编程-擦除(P/E)周期的次数、特定存储器区块中所存储的数据的年龄、以及特定存储器区块中所存储的数据的类型等。在一些实现中,控制信息可以与相关存储器区块一起存储为元数据。在其它实现中,存储驱动器171A~F的控制信息可以存储在存储驱动器171A~F的由存储阵列控制器110A~D选择的一个或多个特定存储器区块中。所选择的存储器区块可被标记有用于指示所选择的存储器区块包含控制信息的标识符。存储阵列控制器110A~D可以与存储驱动器171A~F相结合地利用该标识符,以快速识别包含控制信息的存储器区块。例如,存储控制器110A~D可以发出命令以定位包含控制信息的存储器区块。可以注意到,控制信息可能如此大以使得控制信息的一部分可能存储在多个位置,控制信息可能例如为了冗余的目的而存储在多个位置,或者控制信息可能以其它方式跨存储驱动器171A~F中的多个存储器区块分布。
在实现中,存储阵列控制器110A~D可以通过从存储阵列102A~B的存储驱动器171A~F中检索描述存储驱动器171A~F中一个或多个存储器区块的状态的控制信息,来从存储驱动器171A~F卸下装置管理责任。从存储驱动器171A~F中检索控制信息可以例如通过由存储阵列控制器110A~D查询存储驱动器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~D(例如,存储阵列控制器110A)可被指定为具有主状况(这里也称为“主控制器”),并且其它存储阵列控制器110A~D(例如,存储阵列控制器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可以经由SAN 158向存储阵列102B发送写入请求。写入请求可以由存储阵列102B的存储阵列控制器110C和110D这两者接收到。存储阵列控制器110C和110D促进通信,例如,将写入请求发送到适当的存储驱动器171A~F。可以注意到,在一些实现中,存储处理模块可以用于增加由主控制器和辅控制器控制的存储驱动器的数量。
在实现中,存储阵列控制器110A~D经由中平面(未示出)而通信耦合到一个或多个存储驱动器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可被体现为诸如第四代双倍数据速率(DDR4)总线等的高速存储器总线。存储在RAM 111中的是操作系统112。在一些实现中,指令113存储在RAM111中。指令113可以包括用于在直接映射闪存存储系统中进行操作的计算机程序指令。在一个实施例中,直接映射闪存存储系统是直接对闪存驱动器内的数据区块进行寻址而无需闪存驱动器的存储控制器所进行的地址转换的系统。
在实现中,存储阵列控制器101包括经由数据通信链路105A~C而耦合到处理装置104的一个或多个主机总线适配器103A~C。在实现中,主机总线适配器103A~C可以是将主机系统(例如,存储阵列控制器)连接到其它网络和存储阵列的计算机硬件。在一些示例中,主机总线适配器103A~C可以是用于使存储阵列控制器101能够连接至SAN的光纤通道适配器或用于使存储阵列控制器101能够连接至LAN的以太网适配器等。主机总线适配器103A~C例如可以经由诸如PCIe总线等的数据通信链路105A~C而耦合到处理装置104。
在实现中,存储阵列控制器101可以包括耦合到扩展器115的主机总线适配器114。扩展器115可以用于将主机系统附接到更多的存储驱动器。扩展器115可以例如是用于在主机总线适配器114被体现为SAS控制器的实现中使主机总线适配器114能够附接到存储驱动器的SAS扩展器。
在实现中,存储阵列控制器101可以包括经由数据通信链路109而耦合到处理装置104的交换机116。交换机116可以是可从一个端点创建多个端点、从而使得多个装置能够共享一个端点的计算机硬件装置。交换机116可以例如是耦合到PCIe总线(例如,数据通信链路109)并向中平面呈现多个PCIe连接点的PCIe交换机。
在实现中,存储阵列控制器101包括用于将存储阵列控制器101耦合到其它存储阵列控制器的数据通信链路107。在一些示例中,数据通信链路107可以是快速通道互连(QPI)互连。
使用传统闪存驱动器的传统存储系统可以实现跨作为传统存储系统的一部分的闪存驱动器的处理。例如,存储系统的高级处理可以发起和控制跨闪存驱动器的处理。然而,传统存储系统的闪存驱动器可以包括其自己的、也进行该处理的存储控制器。因此,对于传统存储系统,可以进行(例如由存储系统发起的)高级处理和(例如由存储系统的存储控制器发起的)低级处理这两者。
为了解决传统存储系统的各种缺陷,可以通过高级处理而非低级处理来进行操作。例如,闪存存储系统可以包括不包含用于提供处理的存储控制器的闪存驱动器。因此,闪存存储系统本身的操作系统可以发起和控制处理。这可以通过直接映射闪存存储系统来实现,该直接映射闪存存储系统直接对闪存驱动器内的数据区块进行寻址而无需闪存驱动器的存储控制器所进行的地址转换。
闪存存储系统的操作系统可以识别和维持跨闪存存储系统的多个闪存驱动器的分配单元的列表。分配单元可以是全部擦除区块或多个擦除区块。操作系统可以维持用于直接将地址映射到闪存存储系统的闪存驱动器的擦除区块的映射或地址范围。
直接映射到闪存驱动器的擦除区块可以用于重写数据和擦除数据。例如,可以对包括第一数据和第二数据的一个或多个分配单元进行操作,其中第一数据将被保持,而第二数据将不再被闪存存储系统使用。操作系统可以发起用以将第一数据写入其它分配单元内的新位置、擦除第二数据、并将分配单元标记为可用于后续数据的处理。因此,该处理可以仅由闪存存储系统的高级操作系统进行,而无需闪存驱动器的控制器进行附加的低级处理。
该处理仅由闪存存储系统的操作系统进行的优点包括提高了闪存存储系统的闪存驱动器的可靠性,这是因为在该处理期间没有进行不必要或冗余的写入操作。这里的一个可能的新颖点是在闪存存储系统的操作系统处发起和控制该处理的概念。另外,该处理可以由操作系统跨多个闪存驱动器进行控制。这与由闪存驱动器的存储控制器进行处理形成对比。
存储系统可以包括共享一组驱动器的两个存储阵列控制器以用于故障转移目的,或者存储系统可以包括用于提供利用多个驱动器的存储服务的单个存储阵列控制器,或者存储系统可以包括各自具有一定数量的驱动器或一定量的闪存存储的存储阵列控制器的分布式网络,其中网络中的存储阵列控制器协作提供完整的存储服务,并在包括存储分配和垃圾收集的存储服务的各个方面进行协作。
图1C例示根据一些实现的数据存储的第三示例系统117。系统117(这里也称为“存储系统”)包括为了例示而非限制的目的的多个元件。可以注意到,系统117可以包括在其它实现中以相同或不同的方式配置的相同、更多或更少的元件。
在一个实施例中,系统117包括具有可单独寻址的快速写入存储的双外围组件互连(PCI)闪存存储装置118。系统117可以包括存储控制器119。在一个实施例中,存储控制器119A~D可以是CPU、ASIC、FPGA或可实现根据本发明所需的控制结构的任何其它电路。在一个实施例中,系统117包括可操作地耦合到存储装置控制器119的各个通道的闪存存储器装置(例如,包括闪存存储器装置120a~n)。闪存存储器装置120a~n可以作为闪存页、擦除区块和/或足以允许存储装置控制器119A~D对闪存的各方面进行编程和检索的控制元素的可寻址集合而呈现给控制器119A~D。在一个实施例中,存储装置控制器119A~D可以对闪存存储器装置120a~n进行操作,该操作包括存储和检索页的数据内容、布置和擦除任何区块、跟踪与闪存存储器页、擦除区块和单元的使用和重复使用相关的统计、跟踪和预测闪存存储器内的错误代码和故障、控制与对闪存单元的内容进行编程和检索相关联的电压电平,等等。
在一个实施例中,系统117可以包括用以存储可单独寻址的快速写入数据的RAM121。在一个实施例中,RAM 121可以是一个或多个单独的分立装置。在另一实施例中,RAM121可以集成到存储装置控制器119A~D或多个存储装置控制器中。RAM 121也可以用于其它目的,诸如存储装置控制器119中的处理装置(例如,CPU)的暂时性程序存储器等。
在一个实施例中,系统117可以包括诸如可充电电池或电容器等的存储能量装置122。存储能量装置122可以存储足够的能量来为存储装置控制器119、一定量的RAM(例如,RAM 121)和一定量的闪存存储器(例如,闪存存储器120a~120n)供电足以将RAM的内容写入闪存存储器的时间。在一个实施例中,如果存储装置控制器119A~D检测到外部电力的损耗,则存储装置控制器可以将RAM的内容写入闪存存储器。
在一个实施例中,系统117包括两个数据通信链路123a、123b。在一个实施例中,数据通信链路123a、123b可以是PCI接口。在另一实施例中,数据通信链路123a、123b可以基于其它通信标准(例如,超传输(HyperTransport)、无限带宽等)。数据通信链路123a、123b可以基于非易失性存储器标准(NVMe)或跨结构的NVMe(NVMf)规范,该规范允许从存储系统117中的其它组件到存储装置控制器119A~D的外部连接。应当注意,为了方便起见,这里可以将数据通信链路可互换地称为PCI总线。
系统117还可以包括外部电源(未示出),该外部电源可被设置在数据通信链路123a、123b其中之一或这两者上,或者可被单独地设置。可选实施例包括专用于存储RAM121的内容的单独的闪存存储器(未示出)。存储装置控制器119A~D可以呈现PCI总线上的逻辑装置,该逻辑装置可以包括可寻址的快速写入逻辑装置、或者可被呈现为PCI存储器或持久存储的存储装置118的逻辑地址空间的不同部分。在一个实施例中,用以存储到装置中的操作旨在存储到RAM 121中。在电力故障时,存储装置控制器119A~D可以将与可寻址的快速写入逻辑存储相关联的存储内容写入闪存存储器(例如,闪存存储器120a~n)以供长期持久存储。
在一个实施例中,逻辑装置可以包括闪存存储器装置120a~n的部分或全部内容的某种呈现,其中该呈现允许包括存储装置118的存储系统(例如,存储系统117)通过PCI总线从存储装置外部的存储系统组件直接对闪存存储器页进行寻址以及直接对擦除区块进行重新编程。该呈现还可以允许一个或多个外部组件控制和检索闪存存储器的其它方面,包括以下各项中的部分或全部:跟踪与跨所有闪存存储器装置的闪存存储器页、擦除区块和单元的使用和重复使用相关的统计;跟踪并预测闪存存储器装置内以及跨闪存存储器装置的错误代码和故障;控制与对闪存单元的内容进行编程和检索相关联的电压电平;等等。
在一个实施例中,存储能量装置122可足以确保完成针对闪存存储器装置120a~120n的正在进行的操作,存储能量装置122可以向存储装置控制器119A~D和相关闪存存储器装置(例如,120a~n)供电以用于这些操作以及用于将快速写入RAM存储到闪存存储器。存储能量装置122可以用于存储闪存存储器装置120a~n和/或存储装置控制器119所保存和跟踪的累积统计和其它参数。针对这里所述的操作中的部分或全部操作,可以使用单独的电容器或存储能量装置(诸如闪存存储器装置附近或本身内嵌的较小电容器等)。
各种方案可以用于跟踪和优化存储能量组件的寿命,诸如随时间调整电压电平、对存储能量装置122进行部分放电以测量相应的放电特性等。如果可用能量随时间减少,则可寻址的快速写入存储的有效可用容量可能减少,以确保其能够基于当前可用的存储能量被安全地写入。
图1D例示根据一些实现的数据存储的第三示例系统124。在一个实施例中,系统124包括存储控制器125a、125b。在一个实施例中,存储控制器125a、125b可操作地分别耦合到双PCI存储装置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的快速写入存储器来记录正在进行的操作,以确保在电力故障、存储控制器移除、存储控制器或存储系统关闭或者存储系统124内的一个或多个软件或硬件组件的某种故障时操作不会丢失。
在一个实施例中,控制器125a、125b作为一个或另一PCI总线128a、128b的PCI主控进行操作。在另一实施例中,128a和128b可以基于其它通信标准(例如,超传输、无限带宽等)。其它存储系统实施例可以使存储控制器125a、125b作为PCI总线128a、128b这两者的多主控进行操作。可选地,PCI/NVMe/NVMf交换基础设施或结构可以连接多个存储控制器。一些存储系统实施例可以允许存储装置彼此直接通信,而不是仅与存储控制器进行通信。在一个实施例中,存储装置控制器119a可以在存储控制器125a的指示下操作,以根据已存储在RAM(例如,图1C的RAM 121)中的数据合成并传送要存储到闪存存储器装置中的数据。例如,可以在存储控制器已经判断为跨存储系统完全提交了操作之后、或者在装置上的快速写入存储器达到了特定使用容量时、或者在特定时间量之后传送RAM内容的重新计算版本,以确保提高数据的安全性或释放可寻址的快速写入容量以供重复使用。该机制可以例如用于避免通过总线(例如,128a、128b)从存储控制器125a、125b进行第二次传送。在一个实施例中,重新计算可以包括压缩数据、附加索引或其它元数据、将多个数据段组合在一起、进行擦除码计算等。
在一个实施例中,在存储控制器125a、125b的指示下,存储装置控制器119a、119b可以可操作地在不涉及存储控制器125a、125b的情况下根据RAM(例如,图1C的RAM 121)中所存储的数据来计算数据并将数据传送到其它存储装置。该操作可以用于在一个控制器125a中将所存储的数据镜像到另一控制器125b,或者其可以用于将压缩、数据聚合和/或擦除编码计算和传送卸载到存储装置,以减少存储控制器或到PCI总线128a、128b的存储控制器接口129a、129b上的负载。
存储装置控制器119A~D可以包括用于实现高可用性原语以供双PCI存储装置118外部的存储系统的其它部分使用的机制。例如,可以提供保留或排除原语,使得在用于提供高可用性存储服务的具有两个存储控制器的存储系统中,一个存储控制器可以防止另一存储控制器访问或继续访问存储装置。该机制可以例如在一个控制器检测到另一控制器运行不正常或两个存储控制器之间的互连本身可能正运行不正常的情况下使用。
在一个实施例中,与具有可单独寻址的快速写入存储的双PCI直接映射存储装置一起使用的存储系统包括将擦除区块或擦除区块组作为用于存储代表存储服务的数据、或用于存储与存储服务相关联的元数据(例如,索引、日志等)、或用于适当地管理存储系统本身的分配单元进行管理的系统。可以在数据到达时或者在存储系统要将数据保持长时间间隔(例如,所定义的时间阈值以上)时写入闪存页,这种闪存页的大小可能是几千字节。为了更快地提交数据,或者为了减少写入闪存存储器装置的次数,存储控制器可以首先将数据写入一个或多个存储装置上的可单独寻址的快速写入存储中。
在一个实施例中,存储控制器125a、125b可以根据存储装置的年龄和预期剩余寿命或者基于其它统计来发起存储装置(例如,118)内和跨存储装置(例如,118)的擦除区块的使用。存储控制器125a、125b可以根据不再需要的页在存储装置之间发起垃圾收集和数据迁移,并管理闪存页和擦除区块寿命以及管理整个系统性能。
在一个实施例中,存储系统124可以利用镜像和/或擦除编码方案作为将数据存储到可寻址的快速写入存储的部分和/或作为将数据写入与擦除区块相关联的分配单元的部分。擦除码可以跨存储装置、以及在擦除区块或分配单元内、或者在单个存储装置上的闪存存储器装置内以及跨单个存储装置上的闪存存储器装置使用,以提供针对单个或多个存储装置故障的冗余或进行保护以防止由闪存存储器操作或闪存存储器单元的劣化导致的闪存存储器页的内部损坏。不同级别的镜像和擦除编码可用于从单独或组合发生的多种类型的故障中恢复。
参考图2A~G所描绘的实施例例示存储集群,该存储集群存储用户数据,诸如源自一个或多个用户或客户端系统或存储集群外部的其它源的用户数据。存储集群使用擦除编码和元数据的冗余副本跨容纳在机箱内的存储节点或者跨多个机箱分布用户数据。擦除编码是指数据保护或重建的方法,其中数据跨诸如磁盘、存储节点或地理位置等的一组不同位置存储。闪存存储器是可以与实施例集成的一种类型的固态存储器,但实施例可以扩展到其它类型的固态存储器或包括非固态存储器的其它存储介质。存储位置的控制和工作负载跨集群对等系统中的存储位置分布。诸如不同存储节点之间的中介通信、检测存储节点何时变得不可用以及平衡跨不同存储节点的I/O(输入和输出)等的任务都在分布式的基础上被处理。在一些实施例中,数据在支持数据恢复的数据片段或条带中跨多个存储节点布局或分布。数据的所有权可以与输入模式和输出模式无关地在集群内重新指派。以下更详细地描述的这种架构允许集群中的存储节点故障,而系统保持可操作,这是因为数据可以从其它存储节点重建并因此保持可用于输入和输出操作。在各种实施例中,存储节点可被称为集群节点、刀片或服务器。
存储集群可被包含在机箱(即,容纳一个或多个存储节点的箱体)内。用以向各存储节点供电的机构(诸如配电总线等)以及使存储节点之间能够通信的通信机构(诸如通信总线等)可以被包括在机箱内。根据一些实施例,存储集群可以在一个位置中作为独立系统运行。在一个实施例中,机箱包含可以独立地启用或禁用的配电总线和通信总线两者的至少两个实例。内部通信总线可以是以太网总线,然而,诸如PCIe和无限带宽等的其它技术同样是合适的。机箱提供用于能够直接地或通过交换机在多个机箱之间以及与客户端系统进行通信的外部通信总线的端口。外部通信可以使用诸如以太网、无限带宽、光纤通道等的技术。在一些实施例中,外部通信总线使用不同的通信总线技术来进行机箱间和客户端通信。如果交换机部署在机箱内或机箱之间,则交换机可以用作多个协议或技术之间的转换。当多个机箱被连接以定义存储集群时,存储集群可以通过客户端使用专有接口或标准接口(诸如网络文件系统(NFS)、通用互联网文件系统(CIFS)、小型计算机系统接口(SCSI)或超文本传送协议(HTTP)等)来访问。来自客户端协议的转换可以发生在交换机、机箱外部通信总线处或各存储节点内。在一些实施例中,多个机箱可以通过聚合器交换机彼此耦合或连接。部分和/或全部耦合或连接的机箱可被指定为存储集群。如以上所讨论的,各机箱可以具有多个刀片,各刀片具有介质访问控制(MAC)地址,但是在一些实施例中,存储集群被呈现给外部网络为具有单个集群IP地址和单个MAC地址。
各存储节点可以是一个或多个存储服务器,并且各存储服务器连接到一个或多个非易失性固态存储器单元,该一个或多个非易失性固态存储器单元可被称为存储单元或存储装置。一个实施例包括在各存储节点中以及在一个至八个非易失性固态存储器单元之间的单个存储服务器,然而该示例并不意味着限制。存储服务器可以包括处理器、DRAM和用于内部通信总线的接口以及用于各电源总线的配电。在一些实施例中,在存储节点内,接口和存储单元共享通信总线(例如,PCI Express)。非易失性固态存储器单元可以通过存储节点通信总线直接访问内部通信总线接口,或者请求存储节点访问总线接口。非易失性固态存储器单元包含嵌入式CPU、固态存储控制器和一定量的固态大容量存储,例如在一些实施例中为2~32太字节(TB)之间等。在非易失性固态存储器单元中包括诸如DRAM等的嵌入式易失性存储介质和能量储备设备。在一些实施例中,能量储备设备是电容器、超级电容器或电池,其使得能够在电力损耗的情况下将DRAM内容的子集传送到稳定的存储介质。在一些实施例中,非易失性固态存储器单元用存储类存储器(诸如替代DRAM并且使电力保持设备能够减小的相变或磁阻随机存取存储器(MRAM)等)构建。
存储节点和非易失性固态存储的许多特征中的一个是在存储集群中主动地重建数据的能力。存储节点和非易失性固态存储可以确定存储集群中的存储节点或非易失性固态存储何时不可达,而不管是否存在读取涉及该存储节点或非易失性固态存储的数据的尝试。然后,存储节点和非易失性固态存储协作以在至少部分新的位置中恢复和重建数据。这构成主动重建,因为系统无需等待直到从采用存储集群的客户端系统发起的读取访问需要该数据为止而重建该数据。以下讨论了存储存储器及其操作的这些和进一步的细节。
图2A是根据一些实施例的具有多个存储节点150以及耦合到各存储节点以提供网络附加存储或存储区域网络的内部固态存储器的存储集群161的透视图。网络附加存储、存储区域网络或存储集群或其它存储存储器可以包括一个或多个存储集群161,各存储集群161具有一个或多个存储节点150,其处于物理组件和由此提供的存储存储器的量这两者的灵活的和可重新配置的布置中。存储集群161被设计以装配在机架中,并且一个或多个机架可以根据存储存储器的需要来设置和填充。存储集群161具有机箱138,该机箱138具有多个槽142。应当理解,机箱138可被称为外壳、箱体或机架单元。在一个实施例中,机箱138具有十四个槽142,但容易设想到其它数量的槽。例如,一些实施例具有四个槽、八个槽、十六个槽、三十二个槽或其它合适数量的槽。在一些实施例中,各槽142可以容纳一个存储节点150。机箱138包括可用于将机箱138安装在机架上的翼片(flap)148。风扇144提供用于冷却存储节点150及其组件的空气循环,但是可以使用其它冷却组件,或者可以设想不具有冷却组件的实施例。交换机结构146将机箱138内的存储节点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以及耦合到CPU156的非易失性固态存储152填充的印刷电路板159,但是在进一步的实施例中可以使用其它安装件和/或组件。存储器154具有由CPU 156执行的指令和/或由CPU 156操作的数据。如以下进一步说明的,非易失性固态存储152包括闪存,或者在进一步的实施例中包括其它类型的固态存储器。
参考图2A,如上所述,存储集群161是可扩展的,这意味着容易添加具有非统一存储大小的存储容量。在一些实施例中,一个或多个存储节点150可以插入到各机箱中或从各机箱移除并且存储集群自行配置。插入式存储节点150,无论是交付时安装在机箱中的还是后来添加的,都可以具有不同的大小。例如,在一个实施例中,存储节点150可以具有4TB的任意倍数,例如,8TB、12TB、16TB、32TB等。在进一步的实施例中,存储节点150可以具有其它存储量或容量的任意倍数。各存储节点150的存储容量被广播,并且影响如何对数据进行条带化的决定。为了最大的存储效率,受到在机箱内多达一个或多达两个非易失性固态存储单元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中以及存储在非易失性固态存储152的何处。该控制有助于确定哪种类型的擦除编码方案被应用于数据以及哪些存储节点150具有数据的哪些部分。各权限168可被指派给非易失性固态存储152。在各种实施例中,各权限可以控制由文件系统、由存储节点150或由非易失性固态存储152指派给数据的索引节点号、段号或其它数据标识符的范围。
在一些实施例中,每条数据和每条元数据在系统中具有冗余。另外,每条数据和每条元数据具有所有者,这可以被称为权限。如果该权限例如由于存储节点的故障而不可达,则存在用于如何找到该数据或该元数据的继承计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168具有与存储节点150和非易失性固态存储152的关系。覆盖数据段号或数据的其它标识符的范围的各权限168可被指派给特定的非易失性固态存储152。在一些实施例中,用于所有此类范围的权限168分布在存储集群的非易失性固态存储152上。各存储节点150具有用于提供对该存储节点150的(一个或多个)非易失性固态存储152的访问的网络端口。在一些实施例中,数据可以存储在与段号相关联的段中,并且该段号是针对RAID(独立磁盘冗余阵列)条带的配置的一种间接性(indirection)。因此,权限168的指派和使用建立了对数据的间接性。根据一些实施例,间接性可被称为在这种情况下经由权限168间接引用数据的能力。段识别可以包含数据的一组非易失性固态存储152和该组非易失性固态存储152中的本地标识符。在一些实施例中,本地标识符是装置中的偏移,并且可以由多个段顺序地重复使用。在其它实施例中,本地标识符对于特定的段是唯一的,且从不重复使用。非易失性固态存储152中的偏移被应用于定位数据以写入非易失性固态存储152或从非易失性固态存储152读取(以RAID条带的形式)。跨非易失性固态存储152的多个单元条带化数据,该非易失性固态存储152可以包括或不同于具有用于特定数据段的权限168的非易失性固态存储152。
在存在特定数据段被定位在何处的改变的情况下,例如在数据移动或数据重建期间,应当在具有该权限168的非易失性固态存储152或存储节点150处查阅针对该数据段的权限168。为了定位特定的数据,实施例计算数据段的散列值或应用索引节点号或数据段号。该操作的输出指向具有用于该特定数据的权限168的非易失性固态存储152。在一些实施例中,针对进行该操作,存在两级。第一级将例如段号、索引节点号或目录号等的实体标识符(ID)映射到权限标识符。该映射可以包括诸如散列或位掩码等的计算。第二级是将权限标识符映射到特定的非易失性固态存储152,其可以通过显式映射来完成。该操作是可重复的,使得在进行计算时,计算的结果可重复地且可靠地指向具有该权限168的特定非易失性固态存储152。该操作可以包括一组可达的存储节点作为输入。如果该组可达的非易失性固态存储单元改变,则最佳组改变。在一些实施例中,持续保持的值是当前指派(其总是为真),并且所计算出的值是集群将尝试重新配置的目标指派。该计算可以用于在存在可达并且构成相同的集群的一组非易失性固态存储152的情况下为权限确定最佳的非易失性固态存储152。该计算还确定一组有序的对等非易失性固态存储152,该对等非易失性固态存储152还将记录对非易失性固态存储映射的权限,使得即使所指派的非易失性固态存储不可达,也可以确定权限。在一些实施例中如果特定权限168不可用,则可以查阅副本或替代权限168。
参考图2A和2B,存储节点150上的CPU 156的许多任务中的两个任务是分解写入数据以及重组读取数据。在系统已判断为要写入数据的情况下,用于该数据的权限168按照如上定位。在已经确定数据的段ID的情况下,将写入请求转发到当前被确定为从段所确定的权限168的主机的非易失性固态存储152。然后,驻留有非易失性固态存储152和相应的权限168的存储节点150的主机CPU 156对数据进行分解或分片,并将数据发送到各种非易失性固态存储152。所发送的数据根据擦除编码方案被写为数据条带。在一些实施例中,请求拉取数据,并且在其它实施例中,推送数据。相反,当读取数据时,包含数据的段ID的权限168按照如上定位。驻留有非易失性固态存储152和相应的权限168的存储节点150的主机CPU156请求来自由权限指向的非易失性固态存储和相应存储节点的数据。在一些实施例中,该数据作为数据条带从闪存存储读取。然后,存储节点150的主机CPU 156重组读取的数据,根据适当的擦除编码方案校正任何错误(如果存在的话),并且将重组数据转发到网络。在进一步的实施例中,这些任务中的部分或全部可以在非易失性固态存储152中处理。在一些实施例中,段主机通过从存储中请求页、然后将数据发送到进行原始请求的存储节点,来请求将数据发送到存储节点150。
在一些系统中,例如在UNIX型文件系统中,使用索引式节点或索引节点来处理数据,其中索引式节点或索引节点指定表示文件系统中的对象的数据结构。对象可以例如是文件或目录。元数据可以伴随该对象,作为诸如许可数据和创建时间戳等的属性以及其它属性。段号可被指派给文件系统中的此类对象的全部或一部分。在其它系统中,使用在其它位置指派的段号来处理数据段。为了讨论的目的,分布单元是实体,并且实体可以是文件、目录或段。也就是说,实体是由存储系统存储的数据或元数据的单元。实体被分组为称为权限的组。各权限具有权限所有者,其是具有对权限中的实体进行更新的专有权的存储节点。换句话说,存储节点包含权限,并且该权限继而包含实体。
根据一些实施例,段是数据的逻辑容器。段是介质地址空间和物理闪存位置之间的地址空间,即数据段号在该地址空间中。段也可以包含元数据,其使得数据冗余能够被恢复(重写到不同的闪存位置或装置),而无需涉及高级软件。在一个实施例中,段的内部格式包含客户端数据和介质映射以确定该数据的位置。在适用的情况下,通过将段分解成多个数据和奇偶校验分片(shard)来保护各数据段,例如,防止存储器故障和其它故障。根据擦除编码方案,该数据和奇偶校验分片跨耦合到主机CPU 156(参见图2E和2G)的非易失性固态存储152分布,即条带化。在一些实施例中,术语段的使用是指容器及其在段的地址空间中的位置。根据一些实施例,术语条带的使用是指与段相同的一组分片,并且包括分片如何与冗余或奇偶校验信息一起分布。
跨整个存储系统发生一系列地址空间变换。在顶部是链接到索引节点的目录条目(文件名)。索引节点指向逻辑地存储数据的介质地址空间。介质地址可以通过一系列间接介质进行映射以分散大文件的负载,或者实现如去重复或快照等的数据服务。介质地址可以通过一系列间接介质进行映射以分散大文件的负载,或者实现如去重复或快照等的数据服务。然后,段地址被转换为物理闪存位置。根据一些实施例,物理闪存位置具有由系统中的闪存量界定的地址范围。介质地址和段地址是逻辑容器,并且在一些实施例中使用128位或更大的标识符以致实际上是无限的,其中重复使用的可能性被计算为比系统的预期寿命更长。在一些实施例中,以分层方式分配来自逻辑容器的地址。最初,各非易失性固态存储单元152可被指派一定范围的地址空间。在该指派的范围内,非易失性固态存储152能够分配地址而无需与其它非易失性固态存储152同步。
数据和元数据由针对不同工作负载模式和存储装置优化的一组基础存储布局来存储。这些布局包含多个冗余方案、压缩格式和索引算法。这些布局中的一些布局存储与权限和权限主控有关的信息,而其它布局存储文件元数据和文件数据。该冗余方案包括容许单个存储装置(诸如NAND闪存芯片等)内的损坏位的错误校正码、容许多个存储节点的故障的擦除码、以及容许数据中心或区域故障的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(LDPC)码。在一些实施例中,在存储集群内使用里德-所罗门(Reed-Solomon)编码,并且在存储网格内使用镜像。元数据可以使用有序日志结构的索引(诸如日志结构的合并树等)来存储,而大数据不可以存储在日志结构的布局中。
为了维持跨实体的多个副本的一致性,存储节点通过计算隐式地商定两个事物:(1)包含实体的权限,以及(2)包含权限的存储节点。实体到权限的指派可以通过将实体伪随机地指派给权限、通过基于外部产生的密钥将实体划分成范围、或者通过将单个实体放置到各权限中来完成。伪随机方案的示例是线性散列和复制下可扩展散列(RUSH)散列族,后者包括受控的复制下可扩展散列(CRUSH)。在一些实施例中,伪随机指派仅用于向节点指派权限,这是因为该组节点可以改变。该组权限不能改变,因此在这些实施例中可以应用任何主观功能。一些放置方案自动在存储节点上放置权限,而其它放置方案依赖于权限到存储节点的显式映射。在一些实施例中,利用伪随机方案以从各权限映射到一组候选权限所有者。与CRUSH相关的伪随机数据分布函数可以向存储节点指派权限,并创建指派了权限的列表。各存储节点具有伪随机数据分布函数的副本,并且可以得到用于分布以及随后查找或定位权限的相同计算。在一些实施例中,伪随机方案各自需要可达的一组存储节点作为输入,以推断出相同的目标节点。一旦实体已被放置在权限中,该实体就可以被存储在物理装置上,使得预期的故障将不会造成非预期的数据丢失。在一些实施例中,重新平衡算法尝试将权限内的所有实体的副本存储在相同布局中并在同一组机器上。
预期故障的示例包括装置故障、被盗机器、数据中心火灾以及诸如核事件或地质事件等的区域灾害。不同的故障造成不同级别的可接受数据丢失。在一些实施例中,被盗存储节点既不影响系统的安全性也不影响系统的可靠性,而根据系统配置,区域事件可能造成无数据丢失、几秒或几分钟的丢失更新或甚至完全数据丢失。
在实施例中,用于存储冗余的数据的放置独立于用于数据一致性的权限的放置。在一些实施例中,包含权限的存储节点不包含任何持久存储。作为替代,存储节点连接到不包含权限的非易失性固态存储单元。存储节点和非易失性固态存储单元之间的通信互连包含多种通信技术,并且具有非统一的性能和容错特性。在一些实施例中,如上所述,非易失性固态存储单元经由PCI Express连接到存储节点,存储节点使用以太网背板在单个机箱内连接在一起,并且机箱连接在一起以形成存储集群。在一些实施例中,存储集群使用以太网或光纤通道连接到客户端。如果多个存储集群被配置到存储网格中,则使用因特网或其它长距离网络链路(诸如不穿过因特网的“城域规模”链路或私人链路等)来连接多个存储集群。
权限所有者具有修改实体、将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元、以及添加和移除实体的副本的专有权。这允许维持基础数据的冗余。当权限所有者故障、将要停用或过载时,权限被转移到新的存储节点。瞬时故障使得确保所有非故障机器在新的权限位置上达成一致是有意义的。由瞬时故障引起的不确定可以通过诸如Paxos、热-温故障转移方案等的共识协议自动地、经由通过远程系统管理员或通过本地硬件管理员的人工干预(诸如通过将故障机器从集群中物理地移除或按压故障机器上的按钮等)来实现。在一些实施例中,使用共识协议,并且故障转移是自动的。根据一些实施例,如果太多的故障或复制事件在太短的时间段内发生,则系统进入自保护模式,并且停止复制和数据移动活动,直到管理员干预为止。
随着权限在存储节点之间转移并且权限所有者在其权限中更新实体,系统在存储节点和非易失性固态存储单元之间传送消息。关于持久消息,具有不同目的的消息具有不同类型。根据消息的类型,系统维持不同的排序和持久性保证。随着持久消息正被处理,该消息以多个持久性和非持久性存储硬件技术被暂时地存储。在一些实施例中,消息被存储在RAM、NVRAM中和NAND闪存装置上,并且使用各种协议以有效地使用各存储介质。延时敏感的客户端请求可以保持在复制的NVRAM中,然后保持在NAND中,而后台重新平衡操作直接保持到NAND。
持久消息在被发送之前被持久地存储。这允许系统继续服务于客户端请求,尽管存在故障和组件替换。虽然许多硬件组件包含对系统管理员、制造商、硬件供应链和持续监视质量控制基础设施可见的唯一标识符,但是运行在基础设施地址顶部上的应用使地址虚拟化。不管组件故障和替换,这些虚拟化地址在存储系统的整个生命周期内不会改变。这允许存储系统的各组件随时间被替换,而不需要重新配置或中断客户端请求处理,即,系统支持非中断升级。
在一些实施例中,虚拟化地址以足够的冗余被存储。连续监视系统将硬件和软件状态以及硬件标识符相关联。这允许检测和预测由于故障组件和制造细节引起的故障。在一些实施例中,监视系统还通过从关键路径移除组件,实现在故障发生之前从受影响的装置主动转移权限和实体。
图2C是示出存储节点150的内容和存储节点150的非易失性固态存储152的内容的多级框图。在一些实施例中,数据通过网络接口控制器(NIC)202相对于存储节点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可以通过以下任意多个方式封装:每个封装一个晶圆、每个封装多个晶圆(即多芯片封装)、以混合封装、作为印刷电路板或其它基板上的裸晶圆、作为封装晶圆等。在所示的实施例中,非易失性固态存储152具有控制器212或其它处理器以及耦合到控制器212的输入输出(I/O)端口210。I/O端口210耦合到闪存存储节点150的CPU 156和/或网络接口控制器202。闪存输入输出(I/O)端口220耦合到闪存晶圆222,并且直接存储器存取单元(DMA)214耦合到控制器212、DRAM 216和闪存晶圆222。在所示的实施例中,在可编程逻辑装置(PLD)208(例如现场可编程门阵列(FPGA))上实现I/O端口210、控制器212、DMA单元214和闪存I/O端口220。在该实施例中,各闪存晶圆222具有被组织为十六kB(千字节)页224的页、以及能够相对于闪存晶圆222写入或读取数据的寄存器226。在进一步的实施例中,代替闪存晶圆222内所例示的闪存存储器或者作为闪存晶圆222内所例示的闪存存储器的附加而使用其它类型的固态存储器。
在这里公开的各种实施例中,存储集群161一般可以与存储阵列形成对比。存储节点150是创建存储集群161的集合的一部分。各存储节点150拥有提供数据所需的数据切片和计算。多个存储节点150进行协作以存储和检索数据。如一般在存储阵列中使用的存储存储器或存储装置较少涉及数据的处理和操纵。存储阵列中的存储存储器或存储装置接收用于读取、写入或擦除数据的命令。存储阵列中的存储存储器或存储装置不知道其所嵌入的更大系统、或者数据意味着什么。存储阵列中的存储存储器或存储装置可以包括各种类型的存储存储器,诸如RAM、固态驱动器、硬盘驱动器等。这里描述的存储单元152具有同时活动且服务于多个目的的多个接口。在一些实施例中,存储节点150的一些功能被转移到存储单元152中,从而将存储单元152转换为存储单元152和存储节点150的组合。将(相对于存储数据的)计算置于存储单元152中使这种计算更接近于数据本身。各个系统实施例包括具有不同能力的存储节点层的分层结构。相比之下,在存储阵列中,控制器拥有并知道与控制器在搁架或存储装置中所管理的所有数据有关的一切。在存储集群161中,如这里所述,多个存储单元152和/或存储节点150中的多个控制器以各种方式协作(例如,用于擦除编码、数据分片、元数据通信和冗余、存储容量扩展或收缩以及数据恢复等)。
图2D示出存储服务器环境,该存储服务器环境使用图2A~C的存储节点150和存储单元152的实施例。在该版本中,各存储单元152在机箱138(参见图2A)中的PCIe(外围组件互连Express)板上具有诸如控制器212(参见图2C)、FPGA(现场可编程门阵列)等的处理器、闪存存储器206和NVRAM 204(即超级电容器支持的DRAM 216,参见图2B和2C)。存储单元152可被实现为包含存储的单个板,并且可以是机箱内的最大容许故障域。在一些实施例中,多达两个存储单元152可能故障,并且装置将继续无数据丢失。
在一些实施例中,基于应用用途将物理存储分割为命名区域。NVRAM 204是存储单元152的DRAM 216中的连续的保留存储器区块,并由NAND闪存支持。NVRAM 204在逻辑上被分割为多个存储器区域,其中两个存储器区域被写入为假脱机(例如,spool_region)。NVRAM 204假脱机内的空间由各权限168独立管理。各装置向各权限168提供一定量的存储空间。该权限168进一步管理该空间内的生命周期和分配。假脱机的示例包括分布式事务或概念。当存储单元152的主电源故障时,板载超级电容器提供短持续时间的电源保持。在该保持间隔期间,NVRAM 204的内容被刷新到闪存存储器206。在下一次接通电源时,从闪存存储器206恢复NVRAM 204的内容。
关于存储单元控制器,逻辑“控制器”的责任跨包含权限168的各刀片分布。逻辑控制的这种分布在图2D中示出为主机控制器242、中间层控制器244和(一个或多个)存储单元控制器246。控制平面和存储平面的管理是独立处理的,但是部件可以物理地共同位于同一刀片上。各权限168有效地用作独立的控制器。各权限168提供其自己的数据和元数据结构、其自己的后台工作者,并维持其自己的生命周期。
图2E是刀片252硬件框图,其示出在图2D的存储服务器环境中使用图2A~C的存储节点150和存储单元152的实施例的控制平面254、计算和存储平面256、258以及与基础物理资源进行交互的权限168。控制平面254被分区为多个权限168,该多个权限168可以使用计算平面256中的计算资源以在任何刀片252上运行。存储平面258被分区为一组装置,其各自提供对闪存206和NVRAM 204资源的访问。在一个实施例中,如这里所述,计算平面256可以对存储平面258(例如,存储阵列)的一个或多个装置进行存储阵列控制器的操作。
在图2E的计算平面256和存储平面258中,权限168与基础物理资源(即,装置)进行交互。从权限168的角度来看,其资源在所有物理装置上条带化。从装置的角度来看,其向所有权限168提供资源,与权限恰好在何处运行无关。各权限168已被分配了或一直被分配有存储单元152中的存储存储器的一个或多个分区260,例如闪存存储器206和NVRAM 204中的分区260。各权限168使用属于它的这些分配分区260来写入或读取用户数据。权限可以与系统的不同量的物理存储相关联。例如,一个权限168与一个或多个其它权限168相比,可以具有一个或多个存储单元152中的更大数量的分区260或更大大小的分区260。
图2F描绘了根据一些实施例的存储集群的刀片252中的弹性软件层。在弹性结构中,弹性软件是对称的,即,各刀片的计算模块270运行图2F所描绘的三个相同的处理层。存储管理器274对存储在本地存储单元152NVRAM204和闪存206中的数据和元数据执行来自其它刀片252的读取和写入请求。权限168通过向存储单元152上驻留有相应数据或元数据的刀片252发出必要的读取和写入来完成客户端请求。端点272解析从交换机结构146监控软件接收到的客户端连接请求,将客户端连接请求转发给负责完成的权限168,并将权限168的响应转发给客户端。对称的三层结构使得存储系统具有高度的并发性。在这些实施例中,弹性有效且可靠地向外扩展。另外,弹性实现了一种独特的向外扩展技术,该技术使得无论客户端访问模式如何都能跨所有资源均匀地平衡工作,并通过消除对通常利用传统分布式锁定发生的刀片间协调的大量需求来最大限度地实现并发性。
仍然参考图2F,运行在刀片252的计算模块270中的权限168进行完成客户端请求所需的内部操作。弹性的一个特征是权限168是无状态的,即它们将活动数据和元数据缓存在其自己的刀片252的DRAM中以供快速访问,但权限将每个更新存储在其三个单独刀片252上的NVRAM 204分区中,直到更新被写入闪存206为止。在一些实施例中,对NVRAM 204的所有存储系统写入都是对三个单独刀片252上的分区进行三次。利用三重镜像NVRAM 204以及受奇偶校验和Reed-Solomon RAID校验和保护的持久存储,存储系统可以在不丢失数据、元数据或对两者中任一者的访问的情况下幸存于两个刀片252的并发故障。
由于权限168是无状态的,因此其可以在刀片252之间迁移。各权限168具有唯一的标识符。在一些实施例中,NVRAM 204和闪存206分区与权限168的标识符相关联,而不是与它们运行于的刀片252相关联。因此,当权限168迁移时,该权限168继续从其新位置管理同一存储分区。当新刀片252安装在存储集群的实施例中时,系统通过以下方式来自动重新平衡负载:对新刀片252的存储进行分区以供系统的权限168使用,将所选择的权限168迁移到新刀片252,在新刀片252上启动端点272,并将这些端点272包括在交换机结构146的客户端连接分布算法中。
迁移的权限168从它们的新位置将它们的NVRAM 204分区的内容保持在闪存206上,处理来自其它权限168的读取和写入请求,并完成端点272针对其的客户端请求。类似地,如果刀片252故障或被移除,则系统将其权限168重新分布在系统的剩余刀片252之中。重新分布的权限168继续从其新位置进行其原始功能。
图2G描绘了根据一些实施例的存储集群的刀片252中的权限168和存储资源。各权限168专门负责各刀片252上的闪存206和NVRAM 204的分区。权限168独立于其它权限168管理其分区的内容和完整性。权限168对传入数据进行压缩,并将其暂时保存在其NVRAM 204分区中,然后合并、RAID保护,并将数据保持在其闪存206分区中的存储段中。随着权限168将数据写入闪存206,存储管理器274进行必要的闪存转换,以优化写入性能并最大限度地延长介质寿命。在后台,权限168进行“垃圾收集”或通过重写数据来回收被客户端淘汰的数据所占据的空间。应当理解,由于权限168的分区是不相连的,因此无需分布式锁定来执行客户端和写入或进行后台功能。
这里描述的实施例可以利用各种软件、通信和/或网络协议。另外,可以调整硬件和/或软件的配置,以适应各种协议。例如,本实施例可以利用活动目录(ActiveDirectory),该活动目录是用于在WINDOWSTM环境中提供认证、目录、策略和其它服务的基于数据库的系统。在这些实施例中,LDAP(轻量级目录访问协议)是用于查询和修改诸如活动目录等的目录服务提供商中的项的一个示例应用协议。在一些实施例中,网络锁管理器(NLM)被用作与网络文件系统(NFS)协作工作以提供系统V风格的咨询文件和通过网络的记录锁定的设施。服务器消息区块(SMB)协议(其一种版本也被称为通用因特网文件系统(CIFS))可以与这里讨论的存储系统集成。SMP作为通常用于提供对文件、打印机和串行端口的共享访问以及网络上的节点之间的各种通信的应用层网络协议进行操作。SMB还提供了经认证的处理间通信机制。AMAZONTM S3(简单存储服务)是由Amazon Web服务(AmazonWeb Service)提供的web服务,并且这里描述的系统可以通过web服务接口(REST(表述性状态转移)、SOAP(简单对象访问协议)和BitTorrent)与Amazon S3进行接合。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的用户提供服务,其中云服务提供商302向订户提供诸如虚拟机和其它资源等的计算基础设施作为服务。另外,云服务提供商302可被配置为通过实现平台即服务(PaaS)服务模型来向存储系统306和存储系统306的用户提供服务,其中云服务提供商302向应用开发者提供开发环境。这种开发环境可以例如包括操作系统、编程语言执行环境、数据库、web服务器或可被应用开发者利用以在云平台上开发和运行软件解决方案的其它组件。此外,云服务提供商302可被配置为通过实现软件即服务(SaaS)服务模型来向存储系统306和存储系统306的用户提供服务,其中云服务提供商302向存储系统306和存储系统306的用户提供应用软件、数据库以及用于运行应用的平台,从而为存储系统306和存储系统306的用户提供按需软件并消除在本地计算机上安装和运行应用的需要,这可以简化应用的维护和支持。云服务提供商302还可被配置为通过实现认证即服务(AaaS)服务模型来向存储系统306和存储系统306的用户提供服务,其中云服务提供商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,从而使组织能够节省其内部存储系统的空间。这种云存储网关可被配置为模拟磁盘阵列、基于区块的装置、文件服务器、或者可将SCSI命令、文件服务器命令或其它适当的命令转换为促进与云服务提供商302的通信的REST空间协议的其它存储系统。
为了使存储系统306和存储系统306的用户能够利用云服务提供商302所提供的服务,可以进行云迁移处理,在该处理期间,将来自组织的本地系统(或甚至来自另一云环境)的数据、应用或其它元素移动至云服务提供商302。为了成功地将数据、应用或其它元素迁移到云服务提供商302的环境,可以利用诸如云迁移工具等的中间件来桥接云服务提供商302的环境与组织环境之间的间隙。这种云迁移工具还可被配置为解决与将大量数据迁移到云服务提供商302相关联的潜在的高网络成本和长传送时间,以及解决与通过数据通信网络将敏感数据迁移到云服务提供商302相关联的安全问题。为了进一步使存储系统306和存储系统306的用户能够利用云服务提供商302所提供的服务,还可以使用云编排器(orchestrator)来布置和协调自动化任务,以寻求创建合并处理或工作流。这种云编排器可以进行诸如配置各种组件(无论这些组件是云组件还是内部组件)以及管理这些组件之间的互连等的任务。云编排器可以简化组件间通信和连接,以确保正确地配置和维护链路。
在图3A所描绘的示例中并且如上文简要描述的,云服务提供商302可被配置为通过使用SaaS服务模型来向存储系统306和存储系统306的用户提供服务,其中云服务提供商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闪存等。在一些实施例中,存储资源308可以包括通过使用磁存储元件存储数据的非易失性磁阻式随机存取存储器(MRAM),其包括自旋转移扭矩(STT)MRAM。在一些实施例中,示例存储资源308可以包括非易失性相变存储器(PCM),其可以具有在单个单元中容纳多个位的能力,因为单元可以实现多个不同的中间状态。在一些实施例中,存储资源308可以包括允许存储和检索光子量子信息的量子存储器。在一些实施例中,示例存储资源308可以包括电阻式随机存取存储器(ReRAM),其中通过改变跨介电固态材料的电阻来存储数据。在一些实施例中,存储资源308可以包括存储类存储器(SCM),其中,固态非易失性存储器可以使用亚微影图案成形(sub-lithographic patterning)技术、每单元多个位和多个装置层等的某种组合以高密度制造。读者将理解,上述的存储系统可以利用其它形式的计算机存储器和存储装置,包括DRAM、SRAM、EEPROM、通用存储器和许多其它存储器。图3B所描绘的存储资源308可以以各种形状因子体现,包括但不限于双列直插式存储器模块(DIMM)、非易失性双列直插式存储器模块(NVDIMM)、M.2和U.2等。
图3B所描绘的存储资源308可以包括各种形式的存储类存储器(SCM)。SCM可以有效地将快速、非易失性存储器(例如,NAND闪存)视为DRAM的扩展,使得整个数据集可被视为完全位于DRAM中的存储器内数据集。SCM例如可以包括诸如NAND闪存等的非易失性介质。这种NAND闪存可以利用NVMe来访问,其中NVMe可以使用PCIe总线作为其传输总线,从而与较早协议相比提供相对较低的访问延时。事实上,用于全闪存阵列中的SSD的网络协议可以包括使用以太网的NVMe(ROCE、NVME TCP)、光纤通道(NVMe FC)和无限带宽(iWARP)等,这些协议使得可以将快速、非易失性存储器视为DRAM的扩展。鉴于DRAM通常是字节可寻址的且快速的、诸如NAND闪存等的非易失性存储器是区块可寻址的这一事实,可能需要控制器软件/硬件堆栈来将区块数据转换为存储在介质中的字节。可用作SCM的介质和软件的示例可以例如包括3D XPoint、Intel Memory Drive Technology(Intel存储器驱动技术)以及Samsung的Z-SSD等。
图3B所描绘的示例存储系统306可以实现各种存储架构。例如,根据本发明的一些实施例的存储系统可以利用区块存储,其中数据存储在区块中,并且各区块基本上用作单独的硬盘驱动器。根据本发明的一些实施例的存储系统可以利用对象存储,其中数据作为对象被管理。各对象可以包括数据本身、可变量的元数据以及全局唯一标识符,其中对象存储可以在多个级(例如,装置级、系统级、接口级)处实现。根据本发明的一些实施例的存储系统利用文件存储,其中数据存储在分层结构中。这类数据可以保存在文件和文件夹中,并以相同格式呈现给存储该数据的系统和检索该数据的系统这两者。
图3B所描绘的示例存储系统306可被体现为存储系统,其中可以通过使用向上扩展模型来添加附加的存储资源,可以通过使用向外扩展模型来添加附加的存储资源,或者通过它们的某种组合来添加附加的存储资源。在向上扩展模型中,可以通过添加附加存储装置来添加附加存储。然而,在向外扩展模型中,可以将附加存储节点添加到存储节点的集群,其中这类存储节点可以包括附加处理资源和附加网络资源等。
图3B所描绘的存储系统306还包括通信资源310,该通信资源310可能有助于促进存储系统306内的组件之间的数据通信以及存储系统306与存储系统306之外的计算装置之间的数据通信。通信资源310可被配置为利用各种不同的协议和数据通信结构,以促进存储系统内的组件之间的数据通信以及存储系统与存储系统之外的计算装置之间的数据通信。例如,通信资源310可以包括诸如FC结构和FC协议等的光纤通道(FC)技术,这些技术可以跨FC网络传输SCSI命令。通信资源310还可以包括跨以太网的FC(FCoE)技术,通过这些技术,封装并跨以太网网络传输FC帧。通信资源310还可以包括无限带宽(IB)技术,其中利用交换机结构拓扑来促进信道适配器之间的传输。通信资源310还可以包括NVM Express(NVMe)技术和跨结构的NVMe(NVMeoF)技术,通过这些技术,可以访问经由PCI Express(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还可以包括有助于促进和优化I/O操作的软件,其中I/O操作针对存储系统306中的存储资源308。例如,软件资源314可以包括进行诸如数据压缩和数据去重复等的各种数据减少技术的软件模块。软件资源314可以包括智能地将I/O操作分组在一起以促进更好地使用基础存储资源308的软件模块、进行数据迁移操作以从存储系统内进行迁移的软件模块、以及进行其它功能的软件模块。这种软件资源314可被体现为一个或多个软件容器或以许多其它方式体现。
读者将理解,这些软件资源314的存在可以提供存储系统306的改进的用户体验、存储系统306所支持的功能的扩展、以及许多其它益处。考虑执行存储系统中所存储的数据可被拷贝和存储在不同的位置以避免在设备故障或某种其它形式的灾难的情况下发生数据丢失的数据备份技术的软件资源314的具体示例。在这样的示例中,这里描述的系统可以相对于需要高度用户交互并提供较不稳健的自动化和特征集等的交互式备份管理系统更可靠地(并且以给用户带来较少负担的方式)进行备份操作。
上述的存储系统可以执行存储系统中所存储的数据可被拷贝和存储在不同的位置以避免在设备故障或某种其它形式的灾难的情况下发生数据丢失的智能数据备份技术。例如,上述的存储系统可被配置为检查各备份,以避免使存储系统恢复为不期望的状态。考虑恶意软件感染存储系统的示例。在这样的示例中,存储系统可以包括软件资源314,软件资源314可以扫描各备份以识别在恶意软件感染存储系统之前捕获的备份以及在恶意软件感染存储系统之后捕获的备份。在这样的示例中,存储系统可以使其自己从不包括恶意软件的备份中恢复,或者至少不使备份中的包含恶意软件的部分恢复。在这样的示例中,存储系统可以包括软件资源314,该软件资源314可以扫描各备份,以例如通过识别由存储系统服务并且来自怀疑已递送恶意软件(或病毒或一些其它不期望事物)的网络子网的写入操作、通过识别由存储系统服务并且来自怀疑已递送恶意软件的用户的写入操作、通过识别由存储系统服务的写入操作并针对恶意软件的指纹图谱检查写入操作的内容、以及采用其它许多方式来识别恶意软件的存在。
读者将进一步理解,备份(通常以一个或多个快照的形式)也可以用于进行存储系统的快速恢复。考虑存储系统被将用户锁定在存储系统之外的勒索软件感染的示例。在这样的示例中,存储系统内的软件资源314可被配置为检测勒索软件的存在,并且可进一步被配置为使用保留的备份将存储系统恢复到勒索软件感染存储系统的时间点之前的某一时间点。在这样的示例中,可以通过使用系统所利用的软件工具、通过使用插入到存储系统中的键(例如,USB驱动器)、或者以类似的方式来显式地检测勒索软件的存在。同样,可以响应于系统活动满足例如预定指纹图谱(诸如,在预定时间段内没有进入系统的读取或写入等)来推断出勒索软件的存在。
读者将理解,图3B所描绘的各种组件可被分组为一个或多个优化的计算封装,作为融合基础设施。这种融合基础设施可以包括计算机、存储和网络资源的池,这些池可以由多个应用共享并使用策略驱动的处理以集体方式进行管理。这种融合基础设施可以最大限度地减少存储系统306内的各组件之间的兼容性问题,同时还减少与建立和操作存储系统306相关联的各种成本。这种融合基础设施可以利用融合基础设施参考架构、利用单独的设备、利用软件驱动的超融合方法(例如,超融合基础设施)或以其它方式实现。
读者将理解,图3B所描绘的存储系统306可以有助于支持各种类型的软件应用。例如,存储系统306可以通过向如下的应用提供存储资源而有助于支持这些应用:人工智能(AI)应用、数据库应用、DevOps项目、电子设计自动化工具、事件驱动的软件应用、高性能计算应用、模拟应用、高速数据捕获和分析应用、机器学习应用、介质生产应用、介质服务应用、图片存档和通信系统(PACS)应用、软件开发应用、虚拟现实应用、增强现实应用和许多其它类型的应用。
上述的存储系统可以操作以支持各种应用。鉴于存储系统包括计算资源、存储资源和各种其它资源,存储系统可能非常适合于支持例如资源密集型的应用,诸如AI应用等。这样的AI应用可以使装置能够感知其环境并采取使在某个目标上取得成功的可能性最大化的动作。这些AI应用的示例可以包括IBM Watson、Microsoft Oxford、Google DeepMind和Baidu Minwa等。上述的存储系统也可以很适合于例如支持资源密集型的其它类型的应用,诸如机器学习应用等。机器学习应用可以进行各种类型的数据分析,以使分析模型构建自动化。使用迭代地从数据中进行学习的算法,机器学习应用可以使计算机能够在没有显式编程的情况下实现学习。机器学习的一个特定领域被称为强化学习,其涉及在特定情况下采取适当的动作来使奖励最大化。可以采用强化学习来寻找特定软件应用或机器在特定情况下应采取的最佳行为或路径。强化学习与机器学习的其它领域(例如,监督学习、无监督学习)的不同之处在于:对于强化学习,无需呈现正确的输入/输出对,也无需显式地校正次优动作。
除已经描述的资源外,上述的存储系统还可以包括图形处理单元(GPU),有时也称为视觉处理单元(VPU)。这种GPU可被体现为专门的电子电路,该电子电路快速地操纵和改变存储器以加速创建旨在输出到显示装置的帧缓冲器中的图像。这种GPU可被包括在作为上述的存储系统的一部分(包括作为存储系统的许多可单独扩展的组件其中之一)的任何计算装置中,其中这种存储系统的可单独扩展的组件的其它示例可以包括存储组件、存储器组件、计算组件(例如,CPU、FPGA、ASIC)、网络组件和软件组件等。除了GPU之外,上述的存储系统还可以包括用于神经网络处理的各个方面的神经网络处理器(NNP)。这种NNP可以作为GPU的替代(或附加)而使用,并且还可独立地可扩展。
如上所述,这里描述的存储系统可被配置为支持人工智能应用、机器学习应用、大数据分析应用以及许多其它类型的应用。这类应用的快速增长是由三种技术驱动的:深度学习(DL)、GPU处理器和大数据。深度学习是利用人类大脑激励的大规模并行神经网络的计算模型。代替专家手工制作的软件,深度学习模型通过从大量的示例中进行学习来编写其自己的软件。GPU是具有数千个核的现代处理器,其非常适合于运行松散地表示人类大脑的并行性质的算法。
深度神经网络的发展引发了一波新的算法和工具,让数据科学家利用人工智能(AI)来挖掘其数据。利用改进的算法、更大的数据集和各种框架(包括用于跨一系列任务的机器学习的开源软件库),数据科学家正在处理例如自主驾驶车辆、自然语言处理和理解、计算机视觉、机器推理和强AI等的新用例。这种技术的应用可以包括:机器和车辆对象检测、识别和避免;视觉识别、分类和标记;算法金融交易策略绩效管理;同时定位和绘制成图;高价值机械的预见性维护;防止网络安全威胁、专业知识自动化;图像识别和分类;问题回答;机器人学;以及文本分析(提取、分类)与文本生成和翻译;等等。已在广泛的产品中实现的AI技术的应用例如包括Amazon Echo的允许用户与其机器进行交谈的语音识别技术、允许基于机器的语言翻译的Google TranslateTM、Spotify的基于用户的使用和业务分析来提供与用户可能喜欢的新歌曲和艺术家有关的建议的Discover Weekly、Quill的获取结构化数据并将其转换为叙述性故事的文本生成提供、以及以对话格式提供实时的、针对问题而上下文特定的回答的聊天机器人等。此外,AI可能影响各种工业和部门。例如,AI解决方案可用于健康护理,以记录临床日志、患者文件、研究数据和其它输入,从而生成供医生探索的可能治疗选项。同样,零售商也可以使用AI解决方案,以基于个人行为的数字足迹、档案数据或其它数据来使消费者建议个性化。
然而,训练深度神经网络需要高质量输入数据和大量计算这两者。GPU是能够同时对大量数据进行操作的大规模并行处理器。当组合成多GPU集群时,可能需要高吞吐量流水线来将输入数据从存储馈送到计算引擎。深度学习不仅仅是构建和训练模型。还存在为了数据科学团队成功所需的规模、迭代和实验而必须设计的整个数据流水线。
数据是现代AI和深度学习算法的核心。在可以开始训练之前,必须解决的一个问题围绕收集对于训练准确的AI模型而言至关重要的标记数据。可能需要全规模AI部署来连续地收集、清理、转换、标记和存储大量数据。添加附加的高质量数据点直接转化为更准确的模型和更好的洞察力。数据样本可以经历一系列处理步骤,包括但不限于:1)将来自外部源的数据摄取到训练系统中并以原始形式存储该数据;2)清理数据并以便于训练的格式转换数据,包括将数据样本链接到适当的标签;3)探索参数和模型,用较小的数据集进行快速测试,并且进行迭代以收敛于最有希望进入生产集群的模型;4)执行训练阶段以选择随机批次的输入数据(包括新样本和老样本这两者),并将这些输入数据馈送到生产GPU服务器进行计算,以更新模型参数;以及5)评价,包括使用训练中未使用的数据的保留部分以评价针对保留数据的模型准确度。该生命周期可以适用于任何类型的并行化机器学习,而不仅仅是神经网络或深度学习。例如,标准机器学习框架可以依赖于CPU而不是GPU,但数据摄取和训练工作流可能相同。读者将理解,单个共享存储数据中心在整个生命周期中创建了协调点,而无需摄取、预处理和训练级之间的额外数据副本。所摄取的数据很少仅用于一个目的,并且共享存储赋予了训练多个不同模型或对数据应用传统分析的灵活性。
读者将理解,AI数据流水线中的各级可以具有来自数据中心(例如,存储系统或存储系统的集合)的不同要求。向外扩展存储系统必须为所有方式的访问类型和模式(从小的元数据量级到大的文件、从随机访问模式到顺序访问模式、以及从低并发性到高并发性)提供不妥协的性能。上述的存储系统可以用作理想的AI数据中心,因为这些系统可以服务于非结构化工作负载。在第一级中,理想情况下,数据被摄取并存储到后续级将使用的同一数据中心,以避免过度的数据拷贝。接着的两个步骤可以在可选地包括GPU的标准计算服务器上完成,然后在第四级和最后级中,在强大的GPU加速服务器上运行完整的训练生产作业。通常,在对同一数据集进行操作的实验流水线旁边存在生产流水线。此外,GPU加速服务器可以独立地用于不同的模型,或者结合在一起以训练一个更大的模型,甚至跨越多个系统以进行分布式训练。如果共享存储层较慢,则必须将数据拷贝到各阶段的本地存储,从而导致浪费时间将数据分级到不同的服务器中。AI训练流水线的理想数据中心提供了与服务器节点上本地存储的数据类似的性能,同时还具有简单性以及用以使得所有流水线级并发操作的性能。
数据科学家致力于通过如下的各种方法来提高训练模型的实用性:更多的数据、更好的数据、更聪明的训练和更深度的模型。在许多情况下,数据科学家团队将共享相同的数据集,并且并行工作以产生新的和改进的训练模型。通常,数据科学家团队在这些阶段内将并发地致力于同一共享数据集。数据处理、实验和全规模训练的多个并发工作负载对存储层上的多个访问模式的需求进行分层。换句话说,存储不能仅仅满足大文件读取,而必须应对大小文件读取和写入的混合。最后,随着多个数据科学家探索数据集和模型,将数据以其本机格式进行存储以针对各用户提供以唯一方式转换、清理和使用数据的灵活性可能是至关重要的。上述的存储系统可以为数据集提供自然共享存储主页,其具有数据保护冗余(例如,通过使用RAID6)以及作为多个开发者和多个实验的共同访问点所必需的性能。使用上述的存储系统可以避免小心地拷贝数据的子集以用于本地工作的需要,从而节省工程和GPU加速服务器使用时间这两者。随着原始数据集和期望变换不断更新和改变,这些副本的负担不断增长。
读者将理解,深度学习的成功激增的根本原因是具有较大的数据集大小的模型的持续改进。相比之下,例如Logistic回归等的经典机器学习算法将准确度的提高停止在较小的数据集大小。正因如此,计算资源和存储资源的分离也可以允许各层的单独扩展,从而避免一起管理这两者所固有的许多复杂性。随着数据集大小增长或考虑到新数据集,向外扩展存储系统必须能够容易地扩展。类似地,如果需要更多的并发训练,可以增加附加的GPU或其它计算资源,而不必担心它们的内部存储。此外,由于存储系统所提供的随机读取带宽、存储系统随机高速率读取小文件(50KB)的能力(意味着不需要额外的努力来聚合单个数据点以生成更大、存储友好的文件)、存储系统随着数据集的增长或吞吐量要求的增长而扩展容量和性能的能力、存储系统支持文件或对象的能力、存储系统针对大文件或小文件调整性能的能力(即,无需用户提供文件系统)、存储系统即使在生产模型训练期间也支持硬件和软件的非中断升级的能力以及许多其它原因,因此上述的存储系统可以更容易地构建、操作和增长AI系统。
存储层的小文件性能可能是至关重要的,因为许多类型的输入(包括文本、音频或图像)将本机地存储为小文件。如果存储层不能很好地处理小文件,则需要额外的步骤来预处理样本并将其分组到更大的文件中。在旋转磁盘上构建的依赖于作为缓存层的SSD的存储可能无法满足所需的性能。由于利用随机输入批次的训练产生更准确的模型,因此整个数据集必须能够以完整的性能访问。SSD缓存器仅为数据的小子集提供高性能,并且在隐藏旋转驱动器的延时方面将无效。
尽管前面的段落讨论了深度学习应用,但读者将理解,这里描述的存储系统也可以是分布式深度学习(DDL)平台的一部分,以支持DDL算法的执行。可以使用分布式深度学习来显著地加速GPU(或其它形式的加速器或计算机程序指令执行器)上的利用分布式计算的深度学习,使得可以实现并行化。另外,训练机器学习和深度学习模型(诸如全面训练的机器学习模型等)的输出可用于各种目的,并且可与其它工具结合使用。例如,经训练的机器学习模型可以与例如Core ML等的工具结合使用,以将各种机器学习模型类型集成到应用中。事实上,经训练的模型可以通过Core ML转换器工具运行,并插入到可被部署在可兼容装置上的定制应用中。上述的存储系统还可以与诸如TensorFlow(一种跨可用于诸如神经网络等的机器学习应用的一系列任务的数据流编程所用的开源软件库)等的其它技术相配对,以促进这种机器学习模型和应用等的开发。
读者将进一步理解,由于AI变得可用于大众消费,因此上述的系统可以以各种方式部署以支持AI的民主化。AI的民主化可以例如包括提供AI作为平台即服务的能力、人工通用智能提供的增长、自主4级和自主5级车辆的激增、自主移动机器人的可用性、以及会话AI平台的发展等。例如,上述的系统可被部署在云环境、边缘环境或有助于支持AI的民主化的其它环境中。作为AI的民主化的一部分,可能发生从狭义AI到人工通用智能的移动,该狭义AI包含瞄准特定任务的大范围机器学习解决方案,在通用人工智能中机器学习的使用被扩展以处理广泛的用例,通用人工智能像人类一样可以基本上进行人类可进行且可动态学习的任何智能任务。
上述的存储系统也可用于神经形态计算环境。神经形态计算是模拟脑细胞的一种计算形式。为了支持神经形态计算,互连“神经元”的架构取代了传统的计算模型,直接在神经元之间传递低功率信号以进行更高效的计算。神经形态计算可以利用包含用以模拟神经系统中所存在的神经生物架构的电子模拟电路的超大规模集成(VLSI)系统、以及模拟、数字、混合模式模拟/数字VLSI、以及用于实现神经系统的模型以进行感知、马达控制或多传感器集成的软件系统。
读者将理解,上述的存储系统可被配置为支持(除其它类型的数据之外的)区块链(blockchain)的存储或使用。这种区块链可被体现为记录(称为区块)的不断增长的列表,这些记录被链接并使用加密进行保护。区块链中的各区块可以包含作为到前一区块的链接的哈希指针、时间戳和事务数据等。区块链可被设计为抵抗数据的修改,并且可以用作开放的分布式分类账,该分类账可以高效地且以可验证和永久的方式记录两方之间的事务。这使得区块链可能适合于记录事件、医疗记录和其它记录管理活动(诸如身份管理和事务处理等)。除了支持存储和使用区块链技术外,上述的存储系统还可以支持存储和使用衍生项,诸如作为IBMTM Hyperledger项目的一部分的开源区块链和相关工具、特定数量的受信任方被允许访问区块链的许可区块链、以及使得开发者能够构建其自己的分布式分类账项目的区块链产品等。读者将理解,区块链技术可能影响各种工业和部门。例如,区块链技术可以在房地产事务中用作基于区块链的合同,基于区块链的合同的使用可以消除对第三方的需求并在满足条件的情况下启用自执行动作。同样,也可以通过将个人的健康历史聚合和放置到区块链分类账上以供任何健康护理提供者或许可的健康护理提供者访问和更新来创建全民健康记录。
读者将理解,区块链的使用不限于金融事务和合同等。事实上,可以利用区块链来实现任何类型的信息(包括结构化数据、对应关系、文档或其它数据)的分散聚合、排序、标记时间戳和存档。通过使用区块链,参与者可以在不依赖受信任的中间方的情况下可查验地和永久地商定确切输入了什么数据、输入的时间以及由谁输入。例如,SAP最近推出的区块链平台(其支持多链和超级分类账结构)针对广泛的供应链和其它非金融应用。
使用区块链记录数据的一种方式是直接将各数据嵌入事务内。每个区块链事务可以由一方或多方进行数字签名,复制到多个节点,通过链的共识算法进行排序和标记时间戳,并以防篡改的方式永久存储。因此,事务内的任何数据将由每个节点以相同但独立的方式连同对于谁写入该数据以及何时写入该数据的证明一起存储。链的用户能够在将来的任何时间检索到该信息。这种类型的存储可被称为链上存储。然而,当试图存储非常大的数据集时,链上存储可能并不特别实用。正因如此,根据本发明的实施例,可以利用这里所述的区块链和存储系统来支持数据的链上存储以及数据的链外存储。
数据的链外存储可以以各种方式实现,并且可以在数据本身不存储在区块链中时发生。例如,在一个实施例中,可以利用散列函数,并且可以将数据本身馈送到散列函数中以生成散列值。在这样的示例中,大量数据的散列可以代替数据本身而嵌入在事务内。各散列可以用作对其输入数据的承诺,其中数据本身存储在区块链之外。读者将理解,需要链外数据的任何区块链参与者都不能根据数据的散列再现数据,但是如果数据可以以其它方式检索到,则链上散列用于确认谁创建了该数据以及何时创建了该数据。正如常规的链上数据一样,散列可能嵌入在数字签名的事务中,该事务共识包括在链中。
读者将理解,在其它实施例中,可以使用区块链的替代来促进信息的分散存储。例如,可使用的区块链的一个替代是区块织网(blockweave)。虽然传统区块链存储每个事务以实现检验,但区块织网许可在不使用整个链的情况下进行安全的分散,从而实现低成本的数据链上存储。这种区块织网可以利用基于访问证明(PoA)和工作证明(PoW)的共识机制。虽然典型的PoW系统仅依赖于前一区块来生成各连续区块,但是PoA算法可以包含随机选择的前一区块中的数据。与区块织网数据结构相结合,挖掘器无需存储(形成区块链的)所有区块,而是可以存储形成区块的织网(区块织网)的任何先前区块。这能够提高可扩展性、速度和低成本的等级,并降低数据存储的成本,其部分地:因为挖掘器无需存储所有区块,从而大大减少了挖掘处理期间所消耗的电量;因为随着网络扩展,电力消耗减少;因为随着数据被添加到系统,区块织网需要越来越少的散列功率以达成共识。此外,可以在分散存储网络中部署区块织网,在该区块织网中创建激励机制,以鼓励快速数据共享。这种分散存储网络还可以利用区块阴影技术,其中节点仅向允许对等体重建完整区块的其它节点发送最小区块“阴影”,而不是发送完整区块本身。
上述的存储系统可以单独地或与其它计算装置相结合地使用以支持存储器内计算应用。存储器内计算涉及将信息存储在跨计算机集群分布的RAM中。存储器内计算帮助包括零售商、银行和公用事业的商业客户快速检测模式、即时分析海量数据量并快速进行其操作。读者将理解,上述的存储系统、特别是可配置有可定制量的处理资源、存储资源和存储器资源的存储系统(例如,刀片包含可配置量的各种类型的资源的这些系统)可以以提供可支持存储器内计算的基础设施的方式配置。同样,上述的存储系统可以包括组件部件(例如,NVDIMM、提供持久的快速随机存取存储器的3D交叉点存储),这些组件部件可以实际提供与依赖于跨专用服务器分布的RAM的存储器内计算环境相比改进的存储器内计算环境。
在一些实施例中,上述的存储系统可被配置为作为混合存储器内计算环境而操作,该混合存储器内计算环境包括所有存储介质(例如,RAM、闪存存储、3D交叉点存储)的通用接口。在这样的实施例中,用户可能不知道关于其数据存储在何处的详情,但是他们仍然可以使用同一完整的统一API来对数据进行寻址。在这样的实施例中,存储系统可以(在后台)将数据移动到最快可用层,包括根据数据的各种特性或根据一些其它启发智能地放置数据。在这样的示例中,存储系统可以甚至利用诸如Apache Ignite和GridGain等的现有产品以在不同存储层之间移动数据,或者存储系统可以利用定制软件以在不同存储层之间移动数据。这里描述的存储系统可以实现各种优化,以例如提高存储器内计算的性能,诸如尽可能地靠近数据进行计算等。
读者将进一步理解,在一些实施例中,上述的存储系统可以与其它资源配对以支持上述应用。例如,一个基础设施可以包括采用服务器和工作站形式的初级计算,该服务器和工作站专门用于图形处理单元(GPGPU)上的通用计算,以加速互连到计算引擎中的深度学习应用,从而训练深度神经网络的参数。各系统可以具有以太网外部连接、无限带宽外部连接、某种其它形式的外部连接或其某种组合。在这样的示例中,GPU可以针对单个大型训练进行分组,或者独立地使用以训练多个模型。基础设施还可以包括存储系统(诸如上述的存储系统等),以例如提供可以经由诸如NFS和S3等的高性能协议来访问数据的向外扩展全闪存文件或对象存储。基础设施还可以例如包括冗余的架顶式以太网交换机,其经由MLAG端口通道中的端口而连接到存储和计算以实现冗余。基础设施还可以包括采用白盒服务器的形式(可选地利用GPU)的附加计算,以进行数据摄取、预处理和模型调试。读者将理解,还有可能有更多的基础设施。
读者将理解,上述的系统相对于可能例如包括服务器节点中所部署的分布式直接附加存储(DDAS)解决方案的其它系统,可能更适合于上述的应用。这样的DDAS解决方案可被构建用于处理大的、较少的顺序访问,但是可能较不能处理小的随机访问。读者将进一步理解,上述的存储系统可用于为上述的应用提供平台,该平台比利用基于云的资源更优选,因为存储系统可以包括在更安全、更多地进行本地和内部管理、在特征集和性能方面更稳健的现场或内部基础设施中,或者该平台比利用基于云的资源作为平台的一部分以支持上述应用更优选。例如,在诸如IBM的Watson等的平台上构建的服务可能要求企业向其它机构分发诸如金融事务信息或可识别患者记录等的个人用户信息。正因如此,出于各种技术原因和各种业务原因,基于云提供AI即服务与诸如上述的存储系统等的存储系统所支持的内部管理和提供的AI即服务相比可能较不期望。
读者将理解,上述的存储系统可以单独地或与其它计算机械相协调地被配置为支持其它AI相关工具。例如,存储系统可以利用使得更容易传送以不同AI框架写入的模型的例如ONXX或其它开放式神经网络交换格式等的工具。同样,存储系统也可被配置为支持允许开发者对深度学习模型进行原型开发、构建和训练的例如Amazon的Gluon等的工具。事实上,上述的存储系统可以是诸如IBMTM Cloud Private for Data(用于数据的IBMTM私有云)等的较大平台的一部分,其包括整合数据科学、数据工程和应用构建服务。这样的平台可以跨企业无缝地收集、组织、保护和分析数据,以及利用单一解决方案来简化混合数据管理、统一数据管治和整合、数据科学和业务分析。
读者将进一步理解,上述的存储系统也可被部署为边缘解决方案。这种边缘解决方案可以通过在靠近数据源的网络边缘进行数据处理来适当地优化云计算系统。边缘计算可以将应用、数据和计算能力(即,服务)从集中点推离至网络的逻辑末端。通过使用诸如上述的存储系统等的边缘解决方案,可以使用这种存储系统所提供的计算资源来进行计算任务,可以使用存储系统的存储资源来存储数据,并且可以通过使用存储系统的各种资源(包括网络资源)来访问基于云的服务。通过对边缘解决方案进行计算任务、存储与边缘解决方案有关的数据以及通常利用边缘解决方案,可以避免消耗昂贵的基于云的资源,并且事实上,相对于对基于云的资源的较大依赖性,性能可以得到改善。
虽然许多任务可能受益于边缘解决方案的利用,但一些特定用途可能特别适合部署在这样的环境中。例如,例如无人机、自主汽车和机器人等的装置可能需要极快的处理,事实上,如此快的处理使得将数据向上发送到云环境并返回来接收数据处理支持可能简直是太慢了。同样,通过使用广泛的数据生成传感器生成大量信息的例如机车和燃气轮机等的机器可以受益于边缘解决方案的快速数据处理能力。作为附加示例,一些IoT装置(诸如连接的摄像机等)可能不适合利用基于云的资源,因为仅由于所涉及的纯数据量,将数据发送到云可能不切实际(不仅是从隐私角度、安全角度或财务角度来看)。正因如此,真正与数据处理、存储或通信有关的许多任务可能更适合于包括边缘解决方案(诸如上述的存储系统等)的平台。
考虑仓库、分布中心或类似位置中的库存管理的具体示例。大型库存、仓储、装运、订单履行、制造或其它操作具有库存货架上的大量库存以及产生大数据的流水(firehose)的高分辨率数字照相机。所有这些数据可被输入到图像处理系统中,该图像处理系统可以将数据量减少到小数据的流水。所有的小数据可以存储在内部部署的存储中。在设施边缘的内部部署的存储可以耦合至云,例如以进行外部报告、实时控制和云存储。可以利用图像处理的结果来进行库存管理,使得库存可以在货架上进行跟踪并且补充、移动、装运、用新的产品修改,或删除停产/废弃的产品等。以上场景是上述的可配置处理和存储系统的实施例的主要候选。适合图像处理的仅计算刀片和卸载刀片可能与关于卸载FPGA或(一个或多个)卸载定制刀片的深度学习的组合可以从所有数字照相机接收大数据的流水,并产生小数据的流水。然后,所有小数据可以由存储节点存储,存储节点与无论何种类型的存储刀片的组合最佳地处理数据流的存储单元一起操作。这是存储和功能加速以及集成的示例。取决于与云的外部通信需求以及云中的外部处理,并且取决于网络连接和云资源的可靠性,系统可按突发性工作负载和可变传导性可靠性被调整大小以用于存储和计算管理。另外,取决于其它库存管理方面,系统可被配置用于混合边缘/云环境中的调度和资源管理。
上述的存储系统可以单独地或者与其它计算资源相结合地用作将计算资源、存储资源、网络资源、云技术和网络虚拟化技术等进行结合的网络边缘平台。作为网络的一部分,边缘可以从客户所在地和回程聚合设施到存在点(PoP)和区域数据中心具有与其它网络设施类似的特征。读者将理解,诸如虚拟网络功能(VNF)等的网络工作负载将驻留在网络边缘平台上。通过容器和虚拟机的组合启用,网络边缘平台可以依赖于不再与数据处理资源位于同一地理位置的控制器和调度器。作为微服务的功能可以分为控制平面、用户平面和数据平面、或者甚至状态机,从而允许应用独立的优化和扩展技术。这种用户平面和数据平面可以通过增加的加速器(驻留在诸如FPGA和智能NIC等的服务器平台上的加速器)以及通过SDN启用的商用硅和可编程ASIC来启用。
上述的存储系统也可以进行优化,以用于大数据分析。大数据分析一般可被描述为检查大型和多种数据集以发现可以帮助组织进行更明智的业务决策的隐藏模式、未知相关性、市场趋势、客户偏好以及其它有用信息的处理。大数据分析应用使数据科学家、预测建模人员、统计员和其它分析专业人员能够分析不断增长的结构化交易数据量、传统商业智能(BI)和分析程序通常尚未开发的其它形式的附加数据。作为该处理的一部分,例如半结构化和非结构化数据(诸如因特网点击流数据、web服务器日志、社交媒体内容、来自客户电子邮件和调查答复的文本、移动电话呼叫详细记录、IoT传感器数据和其它数据等)可被转换为结构化形式。大数据分析是高级分析的一种形式,其涉及利用诸如预测模型、统计算法和基于高性能分析系统的假设分析等的元素的复杂应用。
上述的存储系统还可以支持(包括实现为系统接口)响应于人类语言而进行任务的应用。例如,存储系统可以支持执行智能个人助理应用,诸如Amazon的Alexa、AppleSiri、Google Voice、Samsung Bixby和Microsoft Cortana等。虽然上一句中所描述的示例利用语音作为输入,但上述的存储系统也可以支持聊天机器人、交谈机器人、饶舌虫、或被配置为经由听觉或文本方法进行对话的人工对话实体或其它应用。同样,存储系统实际上可以执行这种应用,以使用户(诸如系统管理员等)能够经由语音来与存储系统进行交互。尽管在根据本发明的实施例中,这种应用可以用作各种系统管理操作的接口,但这种应用一般能够进行语音交互、音乐播放、制作待办事项列表、设置警报、流媒体播客、播放有声读物以及提供天气、交通和其它实时信息(诸如新闻等)。
上述的存储系统还可以实现AI平台,以实现自驱动存储的愿景。这种AI平台可被配置为通过收集和分析大量存储系统遥测数据点来提供全球预测智能,以实现轻松的管理、分析和支持。事实上,这种存储系统可以能够预测容量和性能这两者,以及生成与工作负载部署、交互和优化有关的智能建议。这种AI平台可被配置为对照问题指纹图谱库扫描所有传入的存储系统遥测数据以在事件影响客户环境之前实时地预测和解决事件,并捕获用于预测性能负载的数百个性能相关变量。
上述的存储系统可以支持序列化或同时执行人工智能应用、机器学习应用、数据分析应用、数据转换以及可以共同形成AI阶梯的其它任务。这种AI阶梯可以有效地通过组合这些元素以形成完整的数据科学流水线而形成,其中AI阶梯的元素之间存在依赖性。例如,AI可能要求发生某种形式的机器学习,机器学习可能要求发生某种形式的分析,以及分析可能要求发生某种形式的数据和信息架构设计,等等。正因如此,各元素可被视为可以共同形成完整而复杂的AI解决方案的AI阶梯中的梯级。
上述的存储系统还可以单独地或与其它计算环境相结合地用于提供AI无处不在的体验,其中AI渗透了商业和生活的广泛方面。例如,AI可以在提供深度学习解决方案、深度强化学习解决方案、人工通用智能解决方案、自主车辆、认知计算解决方案、商用UAV或无人机、会话用户界面、企业分类、本体管理解决方案、机器学习解决方案、智能微尘、智能机器人和智能工作场所等方面起重要作用。上述的存储系统也可以单独地或与其它计算环境相结合地用于提供宽范围的透明沉浸式体验,其中技术可以在人、企业和事物之间引入透明度。这种透明沉浸式体验可作为增强现实技术、互联家庭、虚拟现实技术、脑-计算机接口、人体增强技术、纳米管电子、体积显示或4D打印技术等而提供。上述的存储系统也可以单独地或与其它计算环境相结合地用于支持各种数字平台。这种数字平台可以例如包括5G无线系统和平台、数字孪生平台、边缘计算平台、IoT平台、量子计算平台、无服务器PaaS、软件定义安全和神经形态计算平台等。
读者将理解,一些透明沉浸式体验可以涉及使用诸如人、地方、处理和系统等的各种“事物”的数字孪生。这种数字孪生和其它沉浸式技术可以改变人类与技术互动的方式,因为对话平台、增强现实、虚拟现实和混合现实提供了与数字世界的更自然且更沉浸式的互动。事实上,数字孪生可能与现实世界相联系,甚至可能是实时的,以了解事物或系统的状态并且对变化进行响应等。由于数字孪生合并了与个人资产和资产组有关的大量信息(甚至可能提供对这些资产的控制),因此数字孪生可以彼此通信以获得多个相联系的数字孪生的数字工厂模型。
上述的存储系统也可以是多云环境的一部分,其中多个云计算和存储服务被部署在单个异构架构中。为了便于这种多云环境的运行,可以部署DevOps工具来实现跨云的编排。同样,可以部署持续开发和持续集成工具,以使围绕持续集成和交付、新特征推出以及提供云工作负载的处理标准化。通过使这些处理标准化,可以实现多云策略,该多云策略使得能够针对各工作负载利用最佳提供商。此外,可以部署应用监视和可视性工具,以使应用工作负载围绕不同的云移动、识别性能问题并进行其它任务。另外,还可以部署安全和合规工具,以确保遵守安全要求和政府规定等。这种多云环境还可以包括用于应用交付和智能工作负载管理以确保高效的应用交付并帮助跨分布式且异构的架构引导工作负载的工具、以及使云中的封装且定制的应用的部署和维护容易并且实现云间的可移植性的工具。多云环境可以类似地包括用于数据可移植性的工具。
上述的存储系统可以用作平台的一部分以实现加密锚定的使用,该加密锚定可用于对产品的来源和内容进行认证以确保产品与同该产品相关联的区块链记录相匹配。这种加密锚定可以采取许多形式,例如包括作为可食用墨水、移动传感器和微芯片等。类似地,作为用以保护存储系统上所存储的数据的工具套件的一部分,上述的存储系统可以实现各种加密技术和方案,包括格密码学。格密码学可以涉及在构造本身或安全性证明中构建涉及了格的密码原语。与容易受到量子计算机攻击的诸如RSA、Diffie-Hellman或椭圆曲线密码体系等的公钥体制不同,一些基于格的构造似乎对经典计算机和量子计算机这两者的攻击具有抵抗力。
量子计算机是进行量子计算的装置。量子计算是使用诸如叠加和缠结等的量子力学现象的计算。量子计算机与基于晶体管的传统计算机不同,因为这种传统计算机要求数据被编码为二进制数字(位),各二进制数字总是处于两个确定的状态其中之一(0或1)。与传统计算机相对,量子计算机使用量子位,该量子位可以处于状态的叠加。量子计算机维持量子位的序列,其中一个量子位可以表示1、0或这两个量子位状态的任何量子叠加。量子位对可以处于4个状态的任何量子叠加,并且三个量子位可以处于8个状态的任何叠加。具有n个量子位的量子计算机一般可以同时处于多达2^n个不同状态的任意叠加,而传统计算机在任意一个时间只能处于这些状态其中之一。量子图灵机是这种计算机的理论模型。
上述的存储系统也可以与作为更大AI或ML基础设施的一部分的FPGA加速服务器配对。这种FPGA加速服务器可以驻留在上述的存储系统附近(例如,在同一数据中心),或者甚至并入到包括一个或多个存储系统、一个或多个FPGA加速服务器、支持一个或多个存储系统与一个或多个FPGA加速服务器之间的通信的网络基础设施、以及其它硬件和软件组件的设备中。可替代地,FPGA加速服务器可以驻留在云计算环境内,该云计算环境可以用于针对AI和ML作业进行计算相关任务。上述的任一实施例均可用于共同用作基于FPGA的AI或ML平台。读者将理解,在基于FPGA的AI或ML平台的一些实施例中,FPGA加速服务器内所包含的FPGA可以针对不同类型的ML模型(例如,LSTM、CNN、GRU)进行重新配置。重新配置FPGA加速服务器内所包含的FPGA的能力可以基于最优的数值精度以及正使用的存储器模型来实现ML或AI应用的加速。读者将理解,通过将FPGA加速服务器的集合视为FPGA池,数据中心中的任何CPU可以利用FPGA池作为共享硬件微服务,而不是将服务器限制为插入其中的专用加速器。
上述的FPGA加速服务器和GPU加速服务器可以实现计算模型,其中,机器学习模型和参数被固定到高带宽片上存储器中并通过高带宽片上存储器进行大量数据流式传输,而不是像更传统的计算模型中发生的那样在CPU中保留少量的数据并在CPU上运行长的指令流。对于这种计算模型,FPGA甚至可能比GPU更高效,因为FPGA可以仅利用运行这种计算模型所需的指令来编程。
上述的存储系统可被配置为例如通过使用诸如BeeGFS等的并行文件系统来提供并行存储。这种并行文件系统可以包括分布式元数据架构。例如,并行文件系统可以包括分布有元数据的多个元数据服务器、以及包含用于客户端和存储服务器的服务的组件。通过使用并行文件系统,在目录级上文件内容可以使用条带化分布在多个存储服务器上,并且元数据可以分布在多个元数据服务器上,其中各服务器存储完整的文件系统树的一部分。读者将理解,在一些实施例中,存储服务器和元数据服务器可以在现有的本地文件系统上的用户空间中运行。此外,客户端服务、元数据服务器或硬件服务器不需要专用硬件,因为元数据服务器、存储服务器以及甚至客户端服务可以运行在同一机器上。
读者将理解,部分地由于包括移动装置、云服务、社交网络和大数据分析等的上述许多技术的出现,因此可能需要信息技术平台以整合所有这些技术并通过快速交付创收(生成产品、服务和体验)而不是仅提供用以使内部业务流程自动化的技术来推动新的商业机会。信息技术组织可能需要平衡保持核心遗留系统启动和运行所需的资源和投资,同时还需要整合技术以构建信息技术平台,该信息技术平台可以在诸如开发大数据、管理非结构化数据以及与云应用和服务合作等的领域提供速度和灵活性。这种信息技术平台的一个可能实施例是组合式基础设施,该组合式基础设施包括流体资源池,诸如上述的可以通过允许组合和重新组合分解式计算、存储和结构基础设施的区块来满足应用的不断变化的需求的许多系统等。这种组合式基础设施还可以包括用以消除复杂性的单个管理接口、以及用以发现、搜索、清点、配置、提供、更新和诊断组合式基础设施的统一API。
上述的系统可以支持广泛的软件应用的执行。这样的软件应用可以以多种方式(包括基于容器的部署模型)部署。容器化应用可以使用各种工具进行管理。例如,容器化应用可以使用Docker Swarm(一种Docker容器所用的聚集和调度工具,其使得IT管理员和开发者能够建立和管理Docker节点的集群作为单个虚拟系统)进行管理。同样,容器化应用可以通过使用Kubernetes(一种用于使容器化应用的部署、扩展和管理自动化的容器编排系统)进行管理。Kubernetes可以在例如操作系统(诸如红帽企业Linux(Red Hat EnterpriseLinux)、Ubuntu服务器(Ubuntu Server)和SUSE Linux企业服务器(SUSE LinuxEnterprise Server)等)上执行。在这些示例中,主节点可以将任务指派给工作者/下属节点。Kubernetes可以包括管理单个节点的一组组件(例如,kubelet、kube-proxy、cAdvisor)、以及形成控制平面的一组组件(例如,etcd、API服务器、调度器、控制管理器)。各种控制器(例如,复制控制器、守护进程集控制器)可以通过管理包括单个节点上所部署的一个或多个容器的一组吊舱来驱动Kubernetes集群的状态。容器化应用可用于促进软件应用的无服务器、云本机计算部署和管理模型。为了支持软件应用的无服务器、云本机计算部署和管理模型,容器可以用作事件处理机制(例如,AWS Lambdas)的一部分,使得各种事件导致容器化应用加速旋转以作为事件处理程序而操作。
上述的系统可以以各种方式部署,包括以支持第五代(5G)网络的方式部署。5G网络可能支持比前几代移动通信网络快得多的数据通信,结果可能导致数据和计算资源的分解,这是因为现代大规模数据中心可能变得较不突出,并且可能被接近移动网络塔的更本地的微型数据中心取代。上述的系统可以包括在这种本地的微型数据中心中,并且可以是多访问边缘计算(MEC)系统的一部分或与多访问边缘计算(MEC)系统配对。这种MEC系统可以在蜂窝网络边缘启用云计算能力和IT服务环境。通过运行应用并进行更接近蜂窝客户的相关处理任务,网络拥塞可能减少,并且应用可能表现得更好。MEC技术被设计为在蜂窝基站或其它边缘节点处实现,并且能够灵活且快速地为客户部署新应用和服务。MEC还可以允许蜂窝运营商向经授权的第三方(诸如应用开发者和内容提供商等)开放其无线电接入网络(RAN)。此外,边缘计算和微型数据中心可以大大降低与5G网络一起工作的智能手机的成本,因为客户可能不需要具有如此密集的处理能力和昂贵的必要组件的装置。
读者将理解,5G网络可能比前几代网络生成更多的数据,特别是考虑到5G网络所提供的高网络带宽可能使得5G网络处理对于前几代网络而不可行的数据量和类型(例如,来自自动驾驶汽车的传感器数据、利用AR/VR技术所生成的数据)。在这些示例中,由于数据量增加以及新兴技术的采用增多等,因此上述系统所提供的可扩展性可能非常有价值。
为了进一步说明,图3C例示可被具体地配置为进行这里所述的处理中的一个或多个处理的示例性计算装置350。如图3C所示,计算装置350可以包括经由通信基础设施360彼此通信连接的通信接口352、处理器354、存储装置356和输入/输出(I/O)模块358。虽然图3C中示出示例性计算装置350,但图3C所例示的组件不旨在是限制性的。在其它实施例中可以使用附加的或替代的组件。现在将更详细地描述图3C所示的计算装置350的组件。
通信接口352可被配置为与一个或多个计算装置进行通信。通信接口352的示例包括但不限于有线网络接口(诸如网络接口卡等)、无线网络接口(诸如无线网络接口卡等)、调制解调器、音频/视频连接以及任何其它合适的接口。
处理器354一般表示能够处理数据以及/或者解释、执行和/或引导执行这里描述的指令、处理和/或操作中的一个或多个的任何类型或形式的处理单元。处理器354可以通过执行存储装置356中所存储的计算机可执行指令362(例如,应用、软件、代码和/或其它可执行数据实例)来进行操作。
存储装置356可以包括一个或多个数据存储介质、装置或配置,并且可以采用任何类型、形式和组合的数据存储介质和/或装置。例如,存储装置356可以包括但不限于这里所述的非易失性介质和/或易失性介质的任何组合。包括这里所述的数据的电子数据可以暂时和/或永久地存储在存储装置356中。例如,可以将表示被配置为引导处理器354进行这里所述的任何操作的计算机可执行指令362的数据存储在存储装置356内。在一些示例中,数据可被布置在驻留于存储装置356内的一个或多个数据库中。
I/O模块358可以包括被配置为接收用户输入并提供用户输出的一个或多个I/O模块。I/O模块358可以包括支持输入和输出能力的任何硬件、固件、软件或其组合。例如,I/O模块358可以包括用于捕获用户输入的硬件和/或软件,包括但不限于键盘或小键盘、触摸屏组件(例如,触摸屏显示器)、接收器(例如,RF或红外接收器)、运动传感器以及/或者一个或多个输入按钮。
I/O模块358可以包括用于向用户呈现输出的一个或多个装置,包括但不限于图形引擎、显示器(例如,显示屏)、一个或多个输出驱动器(例如,显示驱动器)、一个或多个音频扬声器以及一个或多个音频驱动器。在某些实施例中,I/O模块358被配置为向显示器提供图形数据以呈现给用户。图形数据可以表示一个或多个图形用户界面以及/或者可服务于特定实现的任何其它图形内容。在一些示例中,可以通过计算装置350来实现这里所述的任何系统、计算装置和/或其它组件。
为了进一步说明,图3D阐述了例示根据本发明的一些实施例的支持豆荚的多个存储系统(311-402、311-404、311-406)的框图。尽管描绘得不太详细,但图3D所描绘的存储系统(311-402、311-404、311-406)可以与以上参考图1A~1D、图2A~2G、图3A~3B或其任何组合所述的存储系统类似。事实上,图3D所描绘的存储系统(311-402、311-404、311-406)可以包括与上述的存储系统相比相同、更少或附加的组件。
在图3D所描绘的示例中,存储系统(311-402、311-404、311-406)各自被描绘为具有至少一个计算机处理器(311-408、311-410、311-412)、计算机存储器(311-414、311-416、311-418)和计算机存储(311-420、311-422、311-424)。尽管在一些实施例中,计算机存储器(311-414、311-416、311-418)和计算机存储(311-420、311-422、311-424)可以是相同硬件装置的一部分,但在其它实施例中,计算机存储器(311-414、311-416、311-418)和计算机存储(311-420、311-422、311-424)可以是不同硬件装置的一部分。在该特定示例中,计算机存储器(311-414、311-416、311-418)和计算机存储(311-420、311-422、311-424)之间的区别可能是,计算机存储器(311-414、311-416、311-418)物理上接近计算机处理器(311-408、311-410、311-412)并且可以存储计算机处理器(311-408、311-410、311-412)所执行的计算机程序指令,而计算机存储(311-420、311-422、311-424)被体现为用于存储用户数据和描述用户数据的元数据等的非易失性存储。参考上图1A中的示例,例如,特定存储系统(311-402、311-404、311-406)的计算机处理器(311-408、311-410、311-412)和计算机存储器(311-414、311-416、311-418)可以驻留在控制器(110A~110D)中的一个或多个内,而附加存储装置(171A~171F)可以用作特定存储系统(311-402、311-404、311-406)内的计算机存储(311-420、311-422、311-424)。
在图3D所描绘的示例中,根据本发明的一些实施例,所描绘的存储系统(311-402、311-404、311-406)可以附加到一个或多个豆荚(311-430、311-432)。图3D所描绘的豆荚(311-430、311-432)各自可以包括数据集(311-426、311-428)。例如,三个存储系统(311-402、311-404、311-406)已附加至的第一豆荚(311-430)包括第一数据集(311-426),而两个存储系统(311-404、311-406)已附加至的第二豆荚(311-432)包括第二数据集(311-428)。在这样的示例中,当特定存储系统附加到豆荚时,豆荚的数据集被拷贝到特定存储系统,然后随着数据集被修改而保持最新。存储系统可以从豆荚中移除,从而导致数据集不再在移除的存储系统上保持最新。在图3D所描绘的示例中,对于豆荚而言活动的任何存储系统(它是非故障豆荚的最新的、操作的、非故障的构件)可以接收和处理用于修改或读取豆荚的数据集的请求。
在图3D所描绘的示例中,各豆荚(311-430、311-432)还可以包括一组被管理对象和管理操作、以及用以修改或读取与特定豆荚(311-430、311-432)相关联的数据集(311-426、311-428)的一组访问操作。在这样的示例中,管理操作可以通过任何存储系统等效地修改或查询被管理对象。同样,用以读取或修改数据集的访问操作可以通过任何存储系统等效地操作。在这样的示例中,虽然各存储系统将数据集的单独副本存储为被存储并广告以供该存储系统使用的数据集的适当子集,但在后续的管理对象查询豆荚或后续访问操作读取数据集中反映了通过任一存储系统进行和完成的用以修改被管理对象或数据集的操作。
读者将理解,与仅集群同步复制数据集相比,豆荚可以实现更多能力。例如,豆荚可用于实现租户,由此数据集以某种方式安全地彼此分离。豆荚还可用于实现虚拟阵列或虚拟存储系统,其中各豆荚以单独地址被呈现为网络(例如,存储区域网络或因特网协议网络)上的唯一存储实体。在实现虚拟存储系统的多存储系统豆荚的情况下,与豆荚相关联的所有物理存储系统可以以某种方式将其自身呈现为相同存储系统(例如,就好像多个物理存储系统与单个存储系统的多个网络端口没有区别)。
读者将理解,豆荚也可以是表示卷、文件系统、对象/分析存储、快照和其它管理实体的集合的管理单元,其中对任何一个存储系统进行管理改变(例如,名称改变、属性改变、管理豆荚的数据集的某个部分的导出或许可)自动反映到与豆荚相关联的所有活动存储系统。另外,豆荚还可以是数据收集和数据分析单元,其中性能和容量度量以跨豆荚的所有活动存储系统聚合或针对各豆荚分别呼吁数据收集和分析的方式呈现,或者可能针对各豆荚呈现各附加存储系统对传入内容和性能的贡献。
豆荚成员资格的一个模型可被定义为存储系统的列表以及该列表的子集,其中存储系统被认为针对豆荚同步。如果存储系统至少位于对于与豆荚相关联的数据集的最后写入副本具有相同空闲内容的恢复内,则该存储系统可被认为针对豆荚同步。空闲内容是在已完成任何正在进行的修改而无需处理新修改之后的内容。有时这被称为“崩溃可恢复”一致性。豆荚的恢复执行用于调解对豆荚中的同步存储系统应用并发更新的差异的处理。恢复可以在已针对豆荚的各个成员请求、但是没有以信号形式向任何请求者通知为已成功完成的并发修改完成时解决存储系统之间的任何不一致。作为豆荚成员列出、但未被列出为针对豆荚同步的存储系统可被描述为从豆荚“分离”。作为豆荚成员列出、针对豆荚同步、并且当前可用于主动服务于豆荚的数据的存储系统对豆荚来说是“在线的”。
豆荚的各存储系统成员可以具有其自己的成员资格副本,包括其上次知道的哪些存储系统是同步的、以及其上次知道的哪些存储系统包括整个豆荚成员集。为了对于豆荚来说是在线的,存储系统必须认为其自己对于豆荚来说是同步的,并且必须与其认为对于豆荚来说同步的所有其它存储系统进行通信。如果存储系统不能确定其是同步的并且正在与同步的所有其它存储系统进行通信,则存储系统必须停止处理豆荚的新传入请求(或者必须以错误或异常完成请求),直到存储系统可以确定其是同步的并且正在与同步的所有其它存储系统进行通信为止。第一存储系统可以得出第二配对存储系统应分离这一结论,这将允许第一存储系统继续,因为现在该第一存储系统与列表中现有的所有存储系统同步。但是,必须防止第二存储系统可替代地得出第一存储系统应分离并且第二存储系统继续操作这一结论。这将导致“分裂脑”的状况,该状况可能导致不可调解的数据集、数据集损坏、或应用损坏等危险。
当存储系统正在正常运行然后注意到丢失通信时、当存储系统当前正从某种先前故障中恢复时、当存储系统正在从暂时的功率损耗或恢复通信中断中重启或重新开始时、当存储系统正在无论由于什么原因将操作从一个存储系统控制器集切换到另一存储系统控制器集时、或者在这些或其它种类的事件的任何组合期间或之后,可能发生需要确定如何在不与配对存储系统通信的情况下继续的情形。事实上,每当与豆荚相关联的存储系统不能与所有已知的非分离成员进行通信时,存储系统可以短暂地等待直到可以建立通信为止、离线并继续等待,或者存储系统可以通过某种方式判断为分离非通信存储系统是安全的,而不存在由于非通信存储系统得出另一观点导致分裂脑的风险,然后继续。如果安全分离可以足够快地进行,则存储系统可以对于豆荚来说保持在线,只需稍稍延迟,并且不会导致可向保持在线的存储系统发出请求的应用的应用中断。
这种情形的一个示例是存储系统可能知道其已过时的情况。这例如可能在第一存储系统被首次添加到已与一个或多个存储系统相关联的豆荚时或者在第一存储系统再连接到另一存储系统并发现该另一存储系统已将第一存储系统标记为已分离时发生。在这种情况下,第一存储系统只需等待,直到它连接到对于豆荚来说同步的某个其它存储系统集为止。
该模型需要在一定程度上考虑如何将存储系统添加到豆荚或同步的豆荚成员列表或者从豆荚或同步的豆荚成员列表移除。由于各存储系统将具有其自己的列表副本,并且由于两个独立的存储系统不能完全同时更新其本地副本,并且由于本地副本在重启时或在各种故障场景中都是可用的,因此必须小心确保瞬时不一致不会引起问题。例如,如果一个存储系统对于豆荚来说是同步的、并且添加了第二存储系统,然后如果第二存储系统被更新以首先将这两个存储系统列出为同步的,然后如果这两个存储系统存在故障并再启动,则第二存储系统可能启动并等待连接到第一存储系统,而第一存储系统可能不知道它应当或可以等待第二存储系统。如果第二存储系统通过分离第一存储系统的处理来对无法与第一存储系统连接进行响应,则其可能成功地完成第一存储系统不知道的处理,从而导致分裂脑。正因如此,可能有必要确保存储系统不会不恰当地不同意存储系统在不通信的情况下是否可以选择进行分离处理。
用以确保存储系统不会不恰当地不同意存储系统在不通信的情况下是否可以选择进行分离处理的一种方式是确保在向豆荚的同步成员列表添加新存储系统时,新存储系统首先存储为其是分离成员(也许它是作为同步成员添加的)。然后,现有的同步存储系统可以本地存储为新存储系统是同步豆荚成员,然后新存储系统本地存储该事实。如果在新存储系统存储其同步状况之前存在重启或网络中断的集合,则原始存储系统可能由于不通信而使新存储系统分离,但新存储系统将等待。从豆荚中移除通信存储系统可能需要这种变化的反向版本:首先,正被移除的存储系统存储为其不再同步,然后存储系统将保持存储为正被移除的存储系统不再同步,然后所有存储系统从其豆荚成员资格列表中删除正被移除的存储系统。根据实现,可能不需要中间的持久化分离状态。成员资格列表的本地副本中是否需要谨慎可能取决于用于相互监视或用于验证其成员资格的模型存储系统用途。如果针对两个使用共识模型,或者如果使用外部系统(或外部分布式或集群系统)来存储和验证豆荚成员资格,则本地存储的成员资格列表中的不一致可能无关紧要。
在通信故障或豆荚中的一个或多个存储系统故障时,或者在存储系统启动(或故障转移到辅控制器)并且无法与豆荚的配对存储系统通信时、并且一个或多个存储系统是时候决定分离一个或多个配对存储系统,必须采用某种算法或机制来决定这样做是安全的,并完成分离。解决分离的一个手段是针对成员资格使用多数(或群体(quorum))模型。在三个存储系统的情况下,只要两个正在通信,它们就可以同意分离没有正在通信的第三存储系统,但是第三存储系统不能通过自身选择分离另外两个存储系统。当存储系统通信不一致时,可能产生混淆。例如,存储系统A可能正与存储系统B而不是C进行通信,而存储系统B可能正与A和C这两者进行通信。因此,A和B可以分离C,或者B和C可以分离A,但可能需要豆荚成员之间的更多通信来解决这个问题。
在添加和移除存储系统时,需要注意群体成员资格模型。例如,如果添加了第四存储系统,则此时存储系统中的“多数”为3。从三个存储系统(针对多数需要两个存储系统)转变为包括第四存储系统(针对多数需要三个存储系统)的豆荚可能需要与先前描述的模型类似的某物,以将存储系统小心地添加到同步列表。例如,第四存储系统可能以附加状态开始,但尚未附加,其中该第四存储系统将不会引起对群体的投票。一旦处于该状态,原始的三个豆荚成员各自可被更新为意识到第四个成员以及对三个存储系统多数分离第四个的新要求。从豆荚中移除存储系统可能同样会在更新其它豆荚成员之前将该存储系统移至本地存储的“分离”状态。对此的变形方案是使用诸如PAXOS或RAFT等的分布式共识机制来实现任何成员资格变化或处理分离请求。
管理成员资格转变的另一手段是使用存储系统本身之外的外部系统来处理豆荚成员资格。为了变成对于豆荚来说是在线的,存储系统必须首先与外部豆荚成员资格系统联系,以验证它对于豆荚来说是同步。然后对于豆荚来说在线的任何存储系统都应保持与豆荚成员资格系统的通信,并在丢失通信的情况下应等待或离线。可以使用诸如OracleRAC、Linux HA、VERITAS集群服务器或IBM的HACMP等的多种集群工具将外部豆荚成员资格管理器实现为高度可用的集群。外部豆荚成员资格管理器也可以使用诸如Etcd或Zookeeper等的分布式配置工具或者诸如Amazon的DynamoDB等的可靠分布式数据库。
在图3D所描绘的示例中,根据本发明的一些实施例,所描绘的存储系统(311-402、311-404、311-406)可以接收读取数据集(311-426、311-428)的一部分的请求,并在本地处理读取数据集的一部分的请求。读者将理解,尽管由于数据集(311-426、311-428)应当跨豆荚中的所有存储系统(311-402、311-404、311-406)保持一致,因此对数据集(311-426、311-428)进行修改(例如,写入操作)的请求要求在豆荚中的存储系统(311-402、311-404、311-406)之间进行协调,但是对读取数据集(311-426、311-428)的一部分的请求进行响应无需在存储系统(311-402、311-404、311-406)之间进行类似协调。正因如此,接收读取请求的特定存储系统可以通过读取存储在存储系统的存储装置内的数据集(311-426、311-428)的一部分来在本地服务于读取请求,而无需与豆荚中的其它存储系统进行同步通信。一个存储系统所接收到的对于被复制集群中的被复制数据集的读取请求预期在绝大多数情况下(至少在被正在集群内运行的存储系统接收到时,其中该集群名义上也正在运行)避免任何通信。这种读取通常只需通过从集群数据集的本地副本中读取来进行处理,而无需与集群中的其它存储系统进一步交互。
读者将理解,存储系统可以采取步骤来确保读取一致性,使得无论哪个存储系统处理读取请求,读取请求都将返回相同的结果。例如,由集群中的任何一组存储系统接收的任何一组更新所产生的集群数据集内容应跨集群保持一致,至少在更新空闲(所有先前修改操作已被指示为完成,并且没有以任何方式接收到和处理新的更新请求)的任何时间。更具体地,跨一组存储系统的集群数据集的实例只能因尚未完成的更新而有所不同。这意味着,例如,在卷块范围内重叠的任何两个写入请求、或者写入请求与重叠快照、比较写入或虚拟块范围副本的任意组合必须在数据集的所有副本上产生一致的结果。两个操作不应产生就像它们在被复制集群中的一个存储系统上以一个顺序发生并在另一存储系统上以不同的顺序发生一样的结果。
此外,可以使读取请求时间顺序一致。例如,如果一个读取请求在被复制集群上接收到并完成,并且该读取请求后跟着由被复制集群接收到的针对重叠地址范围的另一读取请求,并且该一个或这两个读取以任何方式在时间和卷地址范围上与被复制集群所接收到的修改请求重叠(无论读取或修改中的任一个是由被复制集群中的相同存储系统还是不同存储系统接收),则如果第一读取反映了更新的结果,第二读取也应反映该更新的结果,而不是可以返回更新前的数据。如果第一读取未反映更新,则第二读取可以反映更新,或可以不反映更新。这确保在两个读取请求之间,数据段的“时间”不能向后滚动。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)也可以检测到与一个或多个其它存储系统的数据通信的中断,并判断特定存储系统是否应保持在豆荚中。由于各种原因,可能发生与一个或多个其它存储系统的数据通信的中断。例如,与一个或多个其它存储系统的数据通信的中断可能是因为存储系统其中之一发生故障、因为网络互连发生故障、或者由于某一其它原因而发生。同步复制集群的重要方面是确保任何故障处理不会导致不可恢复的不一致或响应中的任何不一致。例如,如果两个存储系统之间的网络发生故障,则存储系统中的至多一个存储系统可以继续处理针对豆荚的新传入I/O请求。并且如果一个存储系统继续处理,则另一存储系统无法处理要完成的任何新请求(包括读取请求)。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)还可以响应于检测到与一个或多个其它存储系统的数据通信的中断来判断特定存储系统是否应保持在豆荚中。如上所述,为了作为豆荚的一部分而“在线”,存储系统必须认为其自己对于豆荚来说是同步的,并且必须与其认为对于豆荚来说同步的所有其它存储系统进行通信。如果存储系统不能确定其是同步的并且正在与同步的所有其它存储系统进行通信,则存储系统可以停止处理新传入的访问数据集(311-426、311-428)的请求。正因如此,存储系统可以例如通过判断其是否可以与其认为对于豆荚来说同步的所有其它存储系统进行通信(例如,经由一个或多个测试消息)、通过判断其认为对于豆荚来说同步的所有其它存储系统也认为该存储系统附加至豆荚、通过特定存储系统必须确认为其可以与认为对于豆荚来说同步的所有其它存储系统进行通信并且认为对于豆荚来说同步的所有其它存储系统也认为该存储系统附加至豆荚的两个步骤的组合、或者通过一些其它机制,来判断特定存储系统是否应作为豆荚的一部分而保持在线。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)还可以响应于判断为特定存储系统应保持在豆荚中而使特定存储系统上的数据集可被访问以用于管理和数据集操作。存储系统可以例如通过接受访问存储系统上所存储的数据集(311-426、311-428)的版本的请求并处理这些请求、通过接受并处理主机或经授权管理员所发出的与数据集(311-426、311-428)相关联的管理操作、通过接受并处理一个其它存储系统所发出的与数据集(311-426、311-428)相关联的管理操作、或以某种其它方式,来使特定存储系统上的数据集(311-426、311-428)可被访问以用于管理和数据集操作。
然而,在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)可以响应于判断为特定存储系统不应保持在豆荚中而使特定存储系统上的数据集不可被访问以用于管理和数据集操作。存储系统可以例如通过拒绝访问存储系统所存储的数据集(311-426、311-428)的版本的请求、通过拒绝主机或其它经授权管理员所发出的与数据集(311-426、311-428)相关联的管理操作、通过拒绝豆荚中的一个其它存储系统所发出的与数据集(311-426、311-428)相关联的管理操作、或以某种其它方式,来使特定存储系统上的数据集(311-426、311-428)不可被访问以用于管理和数据集操作。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)还可以检测到与一个或多个其它存储系统的数据通信的中断已被修复,并使特定存储系统上的数据集可被访问以用于管理和数据集操作。存储系统可以例如通过从一个或多个其它存储系统接收消息来检测到与一个或多个其它存储系统的数据通信的中断已被修复。响应于检测到与一个或多个其它存储系统的数据通信的中断已被修复,一旦先前分离的存储系统与保持附加至豆荚的存储系统重新同步,存储系统就可以使特定存储系统上的数据集(311-426、311-428)可被访问以用于管理和数据集操作。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)也可以从豆荚离线,使得特定存储系统不再允许管理和数据集操作。由于各种原因,所描绘的存储系统(311-402、311-404、311-406)可能从豆荚离线,使得特定存储系统不再允许管理和数据集操作。例如,所描绘的存储系统(311-402、311-404、311-406)也可能由于存储系统本身的某些故障、由于存储系统上正在发生更新或其它维护、由于通信故障或出于许多其它原因而离线。在这样的示例中,所描绘的存储系统(311-402、311-404、311-406)随后可以更新特定存储系统上的数据集以将所有更新包括到数据集,因为特定存储系统曾经相对于豆荚离线并再度在线,使得特定存储系统允许管理和数据集操作,如以下包括的重新同步部分中更详细地描述。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)还可以识别用于异步接收数据集的目标存储系统,其中目标存储系统不是数据集被同步复制的多个存储系统其中之一。这种目标存储系统可以例如表示备份存储系统以及利用同步复制数据集的某种存储系统等。事实上,可以利用同步复制以将数据集的副本分配得更接近某些服务器机架,以获得更好的本地读取性能。一种这样的情况是较小架顶存储系统对称地复制到较大存储系统,该较大存储系统位于数据中心或园区的中央,并且其中这些较大存储系统被更仔细地管理以获得可靠性、或连接到外部网络以用于异步复制或备份服务。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)还可以识别数据集中没有正被任何其它存储系统异步复制到目标存储系统的一部分,并将数据集中的没有正被任何其它存储系统异步复制到目标存储系统的一部分异步地复制到目标存储系统,其中,两个或更多个存储系统共同将整个数据集复制到目标存储系统。以这种方式,与异步复制特定数据集相关联的工作可以在豆荚的成员之间进行拆分,使得豆荚中的各存储系统仅负责异步地将数据集的子集复制到目标存储系统。
在图3D所描绘的示例中,所描绘的存储系统(311-402、311-404、311-406)也可以从豆荚分离,使得从豆荚分离的特定存储系统不再包括在数据集同步复制的存储系统集中。例如,如果图3D中的存储系统(311-404)从图3D所示的豆荚(311-430)分离,则豆荚(311-430)将仅包括存储系统(311-402,311-406)作为将同步复制豆荚(311-430)中所包括的数据集(311-426)的存储系统。在这样的示例中,从豆荚中分离存储系统还可以包括从自豆荚分离的特定存储系统中移除数据集。继续图3D中的存储系统(311-404)从图4所示的豆荚(311-430)分离的示例,豆荚(311-430)中所包括的数据集(311-426)可以从存储系统(311-404)中删除或以其它方式移除。
读者将理解,可进一步支持的豆荚模型可以实现多个唯一管理能力。另外,豆荚模型本身引入了可通过实现来解决的一些问题。例如,当(诸如由于互连失败并且豆荚的另一存储系统在中介中胜出等而)存储系统对于豆荚来说离线、但以其它方式正在运行时,可能仍然期望或需要访问离线存储系统上的离线豆荚的数据集。一种解决方案可能只是在某个分离模式下启用豆荚并允许访问数据集。然而,该解决方案可能是危险的,并且当存储系统重新获得通信时,该解决方案可能导致豆荚的元数据和数据更加难以调解。此外,可能仍然存在单独的路径以供主机访问离线存储系统以及仍然在线的存储系统。在这种情况下,主机可以向两个存储系统发出I/O,即使它们不再保持同步,这是因为主机看到目标端口报告具有相同标识符的卷并且主机I/O驱动器假设主机看到通往相同卷的其它路径。这可能导致相当严重的数据损坏,因为发布到这两个存储系统的读取和写入不再一致,即使主机假设它们一致。作为这种情况的变形,在集群应用(诸如共享存储集群数据库等)中,在一个主机上运行的集群应用可能正在读取或写入一个存储系统,并且在另一主机上运行的同一集群应用可能正在读取或写入“分离”存储系统,但是集群应用的两个实例基于它们各自看到的数据集对于已完成的写入完全一致的假定而彼此间正在进行通信。由于它们不一致,因此违反这种假定,并且应用的数据集(例如,数据库)最终可能很快就会被损坏。
解决这两个问题的一种方式是允许离线豆荚或者说是离线豆荚的快照被拷贝到具有新卷的新豆荚,其中新卷具有足以使得主机I/O驱动器和集群应用不会将拷贝卷混淆为与另一存储系统上的仍然在线的卷相同的新身份。由于各豆荚维持数据集的完整副本(其是崩溃一致的,但可能与另一存储系统上的豆荚数据集的副本略有不同),并且由于各豆荚具有对豆荚内容进行操作所需的所有数据和元数据的独立副本,因此使豆荚中的部分或所有卷或快照的虚拟副本成为新豆荚中的新卷是一个简单的问题。例如,在逻辑区图实现中,所需的全部是在新豆荚中定义新卷,其中新卷引用与豆荚的卷或快照相关联的拷贝豆荚中的逻辑区图,并且该逻辑区图在写入时被标记为副本。与可以如何实现被拷贝到新卷的卷快照相同,新卷应被视为新的卷。卷可能具有相同的管理名,但是在新的豆荚命名空间中。但是,它们应具有不同的基础标识符以及与原始卷不同的逻辑单元标识符。
在一些情况下,可以以如下的方式(例如,通过在IP网络的情况下创建虚拟LAN或在光纤通道网络的情况下创建虚拟SAN)使用虚拟网络隔离技术:可以确保被呈现给一些接口的卷的隔离不能从还可能看到原始卷的主机网络接口或主机SCSI发起者端口访问。在这种情况下,提供与原始卷具有相同SCSI或其它存储标识符的卷副本可以是安全的。这可以例如在应用期望看到特定的一组存储标识符以在重新配置时不会以过度的负载运行的情况下使用。
这里描述的一些技术也可以在活动故障上下文之外使用,以测试处理故障的就绪性。灾难恢复配置通常需要就绪性测试(有时称为“消防演习”),其中频繁且重复的测试被认为是必要的,以确保灾难恢复计划的大部分或所有方面都是正确的并考虑到应用、数据集的任何最新变化、或设备的变化。就绪性测试应该对当前的生产操作(包括复制)无干扰。在许多情况下,实际操作实际上不能在活动配置上被调用,但是一个很好的接近方式是使用存储操作以拷贝生产数据集,然后可能将其与虚拟网络的使用相耦合,以创建包含被认为是在发生灾难的情况下必须成功建立的重要应用所需的所有数据的隔离环境。使同步复制(或甚至异步复制)的数据集的这种副本在预期进行灾难恢复就绪性测试过程的站点(或站点集合)内可用、然后开始针对该数据集的重要应用以确保其可以启动和运行是一种强大的工具,因为这有助于确保灾难恢复计划中不会遗漏应用数据集的重要部分。如果必要且切实可行,则这可以与虚拟隔离网络相耦合(也许可能与物理机或虚拟机的隔离集合相耦合),以尽可能接近现实世界的灾难恢复接管场景。实际上,将豆荚(或豆荚集)拷贝到另一豆荚作为豆荚数据集的时间点图像立即创建了隔离数据集,该隔离数据集包含所有拷贝的元素,然后可以与原始豆荚基本相同地操作,并允许从原始豆荚单独地分离到单个站点(或几个站点)。此外,这些是快速的操作,并且它们可以被拆除且容易地重复,从而允许测试如所期望的那样频繁地重复。
可以进行一些增强,以进一步接近完美的灾难恢复测试。例如,与隔离网络相结合,SCSI逻辑单元身份或其它类型的身份可被拷贝到目标豆荚中,使得测试服务器、虚拟机和应用看到相同的身份。此外,服务器的管理环境可被配置为响应于来自特定的一组虚拟网络的请求以响应于对原始豆荚名称的请求和操作,因此脚本无需通过对象名称的替代“测试”版本来使用测试变形。在测试期间可以使用将在灾难接管的情况下进行接管的主机端服务器基础设施的情况下,可以使用进一步增强。这包括灾难恢复数据中心完全储备有替代服务器基础设施的情况,其中替代服务器基础设施一般将不会使用,直到灾难指示这样做为止。其还包括基础设施可用于非关键操作(例如,对生产数据运行分析,或仅仅支持应用开发或其它功能,这些功能可能很重要,但在需要时可以停止以获得更关键的功能)的情况。具体地,可以设置主机定义和配置以及将使用它们的服务器基础设施,因为它们将用于实际的灾难恢复接管事件并作为灾难恢复接管测试的一部分进行测试,其中被测试卷从用于提供数据集的快照的虚拟豆荚副本连接到这些主机定义。然后,从所涉及的存储系统的观点来看,用于测试的这些主机定义和配置以及在测试期间使用的卷到主机连接配置可以在触发实际灾难接管事件时重新使用,从而大大减少了测试配置与在灾难恢复接管的情况下将使用的实际配置之间的配置差异。
在一些情况下,将卷从第一豆荚移出并移入仅包括这些卷的新的第二豆荚可以是有意义的。然后可以单独地调整豆荚成员资格以及高可用性和恢复特性,然后可以将两个所得豆荚数据集的管理相互隔离。可以在一个方向上进行的操作也应该可以在另一个方向上进行。在某种程度上,取两个豆荚并将其合并为一个是有意义的,使得原始的两个豆荚各自中的卷将跟踪彼此的存储系统成员资格以及高可用性和恢复特性和事件。这两种操作可以安全地完成,并且通过依赖于被建议用于改变先前部分中所讨论的豆荚的中介或群体属性的特性而对运行中的应用具有合理最小的中断或没有中断。例如,通过中介,可以使用包含以下步骤的序列来改变豆荚的中介器,其中在步骤中,豆荚中的各存储系统被改变为取决于第一中介器和第二中介器这两者,然后各自被改变为仅取决于第二中介器。如果在序列中间发生故障,则一些存储系统可能取决于第一中介器和第二中介器这两者,但在任何情况下,恢复和故障处理将不会导致一些存储系统仅取决于第一中介器而其它存储系统仅取决于第二中介器。可以通过暂时取决于对第一群体模型和第二群体模型这两者的胜利来类似地处理群体,以继续恢复。这可能导致面对故障的豆荚的可用性取决于附加资源的非常短的时间段,从而减少了潜在可用性,但该时间段很短,并且可用性的减少往往很少。对于中介,如果中介器参数的变化仅仅是中介所用的密钥的变化、并且所使用的中介服务是相同的,则可用性的潜在减少甚至更少,因为它现在仅取决于对同一服务的两次呼叫与对该服务的一次呼叫,而不是取决于对两个单独服务的单独呼叫。
读者将注意到,改变群体模型可能相当复杂。可能需要存储系统将参与第二群体模型、但不会取决于在第二群体模型中获胜的附加步骤,然后是也取决于第二群体模型的步骤。这对于解释如下的事实可以是必要的:如果仅一个系统处理了改变以取决于群体模型,则它将永远不会在群体中获胜,因为永远不会存在多数。利用该模型适当地改变高可用性参数(中介关系、群体模型、接管偏好),可以为这些操作创建安全的过程,以将豆荚拆分为两个或将两个豆荚结合为一个。这可能需要增加另一种能力:将第二豆荚链接到第一豆荚以获得高可用性,使得如果两个豆荚包括兼容的高可用性参数,则链接到第一豆荚的第二豆荚可以取决于第一豆荚来确定和激励与分离相关的处理和操作、离线状态和同步状态、以及恢复和重新同步动作。
为了将一个豆荚拆分成两个(这是用以将一些卷移入到新创建的豆荚中的操作),可以形成分布式操作,该分布式操作可被描述为:形成将先前位于第一豆浆中的一组卷移入其中的第二豆荚、将高可用性参数从第一豆荚拷贝到第二豆荚以确保它们对于链接兼容、并将第二豆荚链接到第一豆荚以获得高可用性。这种操作可被编码为消息,并且应该由豆荚中的各存储系统以下面这样的方式实现,即:存储系统确保该操作完全发生在该存储系统上,或者在处理被故障中断的情况下根本不发生。一旦两个豆荚的所有同步存储系统处理了此操作,存储系统于是就可以处理后续操作,该后续操作改变第二豆荚,使其不再链接到第一豆荚。与针对豆荚的高可用性特性的其它改变一样,这涉及首先将各同步存储系统改变为依赖于先前的模型(该模型是高可用性链接到第一豆荚)和新模型(该模型其自身现在是独立的高可用性)这两者。在中介或群体的情况下,这意味着处理这种改变的存储系统将首先取决于针对第一豆荚适当地实现的中介或群体,并将另外取决于在第二豆荚在要求中介或测试群体的故障之后可以进行之前针对第二豆荚实现的新的单独中介(例如,新的中介密钥)或群体。与先前关于改变群体模型的描述一样,中间步骤可以在存储系统参与并取决于第二豆荚的群体的步骤之前设置存储系统以参与第二豆荚的群体。一旦所有同步存储系统处理了改变以取决于第一豆荚和第二豆荚这两者的中介或群体的新参数,拆分就完成了。
将第二豆荚结合到第一豆荚中基本上是反向的。首先,必须通过具有相同的存储系统列表以及通过具有兼容的高可用性模型来调整第二豆荚以与第一豆荚兼容。这可能涉及一些步骤的集合,诸如本文的其它各处所述的用以添加或移除存储系统或者用以改变中介器或群体模型的步骤等。根据实现,可能只需要达到相同的存储系统列表。结合通过在各同步存储系统上处理操作以将第二豆荚链接到第一豆荚以实现高可用性来继续。然后,处理该操作的各存储系统将取决于第一豆荚以实现高可用性,然后取决于第二豆荚以实现高可用性。一旦第二豆荚的所有同步存储系统处理了该操作,存储系统于是就将处理后续操作,以消除第二豆荚和第一豆荚之间的链接、将卷从第二豆荚迁移到第一豆荚中、并删除第二豆荚。只要实现允许主机或应用数据集修改或读取操作通过身份正确地指向卷即可,并且只要身份被保持为对于存储协议或存储模型适当(例如,只要在SCSI的情况下保持卷的逻辑单元标识符和用于访问卷的目标端口的使用),就可以在整个这些操作过程中保持主机或应用数据集访问。
在豆荚间迁移卷可能出现问题。如果豆荚具有相同的同步成员资格存储系统集,则可以是直接的:暂时暂停对正在迁移的卷的操作,将对这些卷的操作的控制切换到控制新豆荚的软件和结构,然后重新开始操作。这允许无缝迁移,除了非常短暂的操作暂停之外,应用可以继续正常运行,前提是豆荚之间的网络和端口迁移正确。根据实现,暂停操作甚至可以不是必需的,或者可以是系统内部的,使得操作的暂停没有影响。在具有不同同步成员资格的豆荚之间拷贝卷更是一个问题。如果拷贝的目标豆荚具有来自源豆荚的同步成员的子集,这并不是什么问题:成员存储系统可以被足够安全地丢弃,而不必进行更多的工作。但是,如果目标豆荚向源豆荚上的卷添加同步成员存储系统,则添加的存储系统必须在其可以使用之前进行同步以包括卷的内容。直到同步为止,这会使拷贝卷与已同步的卷明显不同,因为故障处理不同、并且来自尚未同步的成员存储系统的请求处理要么不起作用,要么必须被转发,要么不会那样快,因为读取必须穿过互连。另外,内部实现将必须处理一些正同步并为处理故障作好准备的卷以及其它未同步的卷。
在面对故障时,还存在与操作可靠性相关的其它问题。协调多存储系统豆荚之间的卷的迁移是分布式操作。如果豆荚是故障处理和恢复的单元,并且如果使用中介或群体或任何手段来避免分裂脑的情形,则卷从一个具有用于故障处理、恢复、中介和群体的一组特定状态和配置和关系的豆荚切换到另一个豆荚,然后豆荚中的存储系统必须小心地协调与用于任何卷的处理相关的改变。操作不能在存储系统之间以原子的方式分布,但必须以某种方式分级。中介和群体模型本质上为豆荚提供了用于实现分布式事务原子性的工具,但是在不添加到实现的情况下,这可能不会扩展到豆荚间的操作。
即使对于共享相同的第一和第二存储系统的两个豆荚,也考虑从第一豆荚到第二豆荚的卷的简单迁移。在某种程度上,存储系统将协调以定义卷现在位于第二豆荚中,并且不再位于第一豆荚中。如果跨两个豆荚的存储系统不存在事务原子性的固有机制,则在导致用以从两个豆荚分离存储系统的故障处理的网络故障时,本机实现可以将卷留在第一存储系统上的第一豆荚以及第二存储系统上的第二豆荚中。如果豆荚单独确定哪个存储系统成功分离另一存储系统,则结果可能是针对两个豆荚同一存储系统分离该另一存储系统,在这种情况下,卷迁移恢复的结果应该是一致的,否则可能导致针对两个豆荚不同的存储系统彼此分离。如果针对第一豆荚第一存储系统分离第二存储系统,并且针对第二豆荚第二存储系统分离第一存储系统,则恢复可能导致卷恢复到第一存储系统上的第一豆荚和第二存储系统上的第二豆荚,然后在这两个存储系统上卷运行并导出到主机和存储应用。如果作为替代、针对第一豆荚第二存储系统分离第一存储系统,并且针对第二豆荚第一存储系统分离第二存储系统,则恢复可能导致卷由于第一存储系统而从第二豆荚丢弃卷并且由于第二存储系统而从第一豆荚丢弃卷,从而导致卷完全消失。如果卷在其间迁移的豆荚位于不同存储系统集上,则事情就会变得更加复杂。
这些问题的解决方案可以是使用中间豆荚,以及先前所述的用于拆分和结合豆荚的技术。该中间豆荚可能永远不会被呈现为与存储系统相关联的可见被管理对象。在此模型中,要从第一豆荚移动到第二豆荚的卷首先使用先前所述的拆分操作从第一豆荚拆分成新的中间豆荚。然后可以通过根据需要相对于该中间豆荚添加或移除存储系统来调整该豆荚的存储系统成员以使存储系统的成员资格匹配。随后,中间豆荚可以与第二豆荚结合。
为了进一步说明,图3E阐述了例示根据本发明的一些实施例的针对跨多个存储系统(311-38、311-40)同步的数据集(311-42)的服务I/O操作的示例方法的流程图。尽管描绘得不太详细,但图3E所描绘述的存储系统(311-38、311-40)可以与以上参考图1A~1D、图2A~2G、图3A~3B或其任意组合所描述的存储系统类似。事实上,图3E所描绘的存储系统可以包括与上述的存储系统相比相同、更少、附加的组件。
图3E中所描绘的数据集(311-42)可以体现为例如特定卷的内容、卷的特定共享的内容或者一个或多个数据元素的任何其它集合。数据集(311-42)可以跨多个存储系统(311-38、311-40)同步,使得各个存储系统(311-38、311-40)保留数据集(311-42)的本地副本。在本文所描述的示例中,这样的数据集(311-42)以在如下的性能特性的情况下可以通过任何存储系统(311-38、311-40)访问该数据集(311-42)的方式跨存储系统(311-38、311-40)同步复制:使得集群中的任一个存储系统基本上不会比集群中的任何其它存储系统更优地操作,至少只要集群和被访问的特定存储系统名义上运行即可。在这样的系统中,对数据集(311-42)的修改应当以使得访问任何存储系统(311-38、311-40)上的数据集(311-42)将产生一致结果的方式来对驻留在各个存储系统(311-38、311-40)上的数据集的副本进行。例如,向数据集发出的写入请求必须在所有存储系统(311-38、311-40)上服务,或者不在写入开始时名义上运行并且在写入完成期间保持名义上运行的存储系统(311-38、311-40)上服务。同样地,必须在所有存储系统(311-38、311-40)上以相同的顺序执行一些操作组(例如,针对数据集内的相同位置的两个写入操作),或者必须采取如下面更详细描述的其它步骤,使得数据集在所有存储系统(311-38、311-40)上最终相同。对数据集(311-42)的修改不需要在完全相同的时间进行,但是一些动作(例如,发出对针对数据集的写入请求的确认,启用对数据集内的由尚未在两个存储系统上完成的写入请求所针对的位置的读取访问)可能被延迟,直到各个存储系统(311-38、311-40)上的数据集的副本已经被修改为止。
在图3E所描绘的示例方法中,将一个存储系统(311-40)指定为“领导者”并且将另一存储系统(311-38)指定为“跟随者”可以是指出于跨存储系统同步复制特定数据集的目的的各个存储系统的相应关系。在这样的示例中,并且如下面将更详细地描述的,领导者存储系统(311-40)可以负责进行传入I/O操作的一些处理并将这样的信息传递到跟随者存储系统(311-38)或者进行跟随者存储系统(311-40)不需要的其它任务。领导者存储系统(311-40)可以负责进行跟随者存储系统(311-38)对于所有传入I/O操作不需要的任务,或者可替代地,领导者-跟随者关系可以仅特定于由任一存储系统接收到的I/O操作的子集。例如,领导者-跟随者关系可以特定于针对第一卷、第一组卷、第一组逻辑地址、第一组物理地址或者某个其它逻辑或物理描绘符的I/O操作。以这种方式,第一存储系统可以用作针对第一组卷(或其它描绘符)的I/O操作的领导者存储系统,而第二存储系统可以用作针对第二组卷(或其它描绘符)的I/O操作的领导者存储系统。图3E所描绘的示例方法描绘了响应于由领导者存储系统(311-40)接收到修改数据集(311-42)的请求(311-04)而发生同步多个存储系统(311-38、311-40)的实施例,但是也可以响应于由跟随者存储系统(311-38)接收到修改数据集(311-42)的请求(311-04)而执行同步多个存储系统(311-38、311-40),如下面将更详细描述的。
图3E所描绘的示例方法包括由领导者存储系统(311-40)接收(311-06)修改数据集(311-42)的请求(311-04)。修改数据集(311-42)的请求(311-04)可以体现为例如将数据写入存储系统(311-40)内的包含数据集(311-42)中所包括的数据的位置的请求、将数据写入包含数据集(311-42)中所包括的数据的卷的请求、拍摄数据集(311-42)的快照的请求、虚拟范围副本、基本上表示删除数据集(311-42)中的数据的某个部分的UNMAP操作、修改数据集(311-42)的变换(而不是改变数据集内的数据的一部分)、或者导致数据集(311-42)中所包括的数据的某个部分的改变的一些其它操作。在图3E所描绘的示例方法中,用于修改数据集(311-42)的请求(311-04)由主机(311-02)发出,主机(311-02)可以被体现为例如在虚拟机上执行的应用、在连接到存储系统(311-40)的计算装置上执行的应用、或者被配置为访问存储系统(311-40)的一些其它实体。
图3E所描绘的示例方法还包括由领导者存储系统(311-40)生成(311-08)描述对数据集(311-42)的修改的信息(311-10)。领导者存储系统(311-40)可以例如通过确定排序与正在进行的任何其它操作、通过确定重叠修改的适当结果(例如,修改相同存储位置的两个请求的适当结果)、以及计算任何分布式状态改变(诸如元数据的跨豆荚的所有成员(例如,同步复制数据集所跨的所有存储系统)的公共元素等)等来生成(311-08)描述对数据集(311-42)的修改的信息(311-10)。描述对数据集(311-42)的修改的信息(311-10)可以体现为例如用于描述要由存储系统进行的I/O操作的系统级信息。领导者存储系统(311-40)可以通过处理修改数据集(311-42)的请求(311-04)(刚好足以弄清楚为了服务用于修改数据集(311-42)的请求(311-04)应该发生什么)来生成(311-08)描述对数据集(311-42)的修改的信息(311-10)。例如,领导者存储系统(311-40)可以确定是否需要执行修改数据集(311-42)的请求(311-04)相对于修改数据集(311-42)的其它请求的某种排序,或者必须采取如下面更详细描述的一些其它步骤,以在各个存储系统(311-38、311-40)上产生等同的结果。
考虑修改数据集(311-42)的请求(311-04)被体现为将区块从数据集(311-42)中的第一地址范围拷贝到数据集(311-42)中的第二地址范围的请求的示例。在这样的示例中,假设三个其它写入操作(写入A、写入B、写入C)针对数据集(311-42)中的第一地址范围。在这样的示例中,如果领导者存储系统(311-40)在将区块从数据集(311-42)中的第一地址范围拷贝到数据集(311-42)中的第二地址范围之前服务于写入A和写入B(但不服务于写入C),则跟随者存储系统(311-38)也必须在将区块从数据集(311-42)中的第一地址范围拷贝到数据集(311-42)中的第二地址范围之前服务于写入A和写入B(但不服务于写入C),以产生一致的结果。正因如此,当领导者存储系统(311-40)生成(311-08)描述对数据集(311-42)的修改的信息(311-10)时,在该示例中,领导者存储系统(311-40)可以生成标识在跟随者存储系统(311-38)可以处理修改数据集(311-42)的请求(311-04)之前必须完成的其它操作的信息(例如,用于写入A和写入B的序列号)。
考虑两个请求(例如,写入A和写入B)针对数据集(311-42)的重叠部分的附加示例。在这样的示例中,如果领导者存储系统(311-40)服务于写入A并且随后服务于写入B,而跟随者存储系统(311-38)服务于写入B并且随后服务于写入A,则数据集(311-42)跨这两个存储系统(311-38、311-40)将不一致。正因如此,当领导者存储系统(311-40)生成(311-08)描述对数据集(311-42)的修改的信息(311-10)时,在该示例中,领导者存储系统(311-40)可以生成标识应当执行请求的顺序的信息(例如,用于写入A和写入B的序列号)。可替代地,领导者存储系统(311-40)可以生成(311-08)包括标识两个请求的适当结果的信息的、描述对数据集(311-42)的修改的信息(311-10),而不是生成需要来自各个存储系统(311-38、311-40)的中间行为的、描述对数据集(311-42)的修改的信息(311-10)。例如,如果写入B在逻辑上跟随写入A(并且与写入A重叠),则最终结果必须是数据集(311-42)包括写入B的与写入A重叠的部分,而不是包括写入A的与写入B重叠的部分。这样的结果可以通过在存储器中合并结果并且将这样的合并的结果写入数据集(311-42)来促进,而不是严格要求特定存储系统(311-38,311-40)执行写入A然后随后执行写入B。读者将理解,更细微的情况涉及快照和虚拟地址范围副本。
读者将进一步理解,在可以确认操作之前,必须将任何操作的正确结果提交到可恢复的点。但是,可以一起提交多个操作,或者如果恢复将确保正确性,则可以部分地提交操作。例如,可以以对A和B的预期写入的记录依赖来本地提交快照,但是A或B本身可能没有提交。如果丢失的I/O不能从其它阵列恢复,则快照不能被确认,并且恢复可能结束于回退快照。此外,如果写入B与写入A重叠,则领导者可以将B“排序”为在A之后,但是A实际上可以被丢弃,并且然后,写入A的操作将仅等待B。与A、B和C、D之间的快照耦合的写入A、B、C和D可以将一些或所有部分一起提交和/或确认,只要恢复不会导致跨阵列的快照不一致,并且只要在较早的操作已被持久化到保证可恢复的点之前确认没有完成稍后的操作即可。
图3E所描绘的示例方法还包括从领导者存储系统(311-40)向跟随者存储系统(311-38)发送(311-12)描述对数据集(311-42)的修改的信息(311-10)。将描述对数据集(311-42)的修改的信息(311-10)从领导者存储系统(311-40)发送(311-12)到跟随者存储系统(311-38)可以例如通过领导者存储系统(311-40)将一个或多个消息发送到跟随者存储系统(311-38)来执行。领导者存储系统(311-40)还可以在相同的消息中或者在一个或多个不同的消息中发送用于修改数据集(311-42)的请求(311-04)的I/O有效载荷(311-14)。例如,当修改数据集(311-42)的请求(311-04)被体现为将数据写入数据集(311-42)的请求时,I/O有效载荷(311-14)可以被体现为要写入跟随者存储系统(311-38)内的存储的数据。在这样的示例中,由于修改数据集(311-42)的请求(311-04)由领导者存储系统(311-40)接收(311-06),因此跟随者存储系统(311-38)尚未接收到与修改数据集(311-42)的请求(311-04)相关联的I/O有效载荷(311-14)。在图3E所描绘的示例方法中,描述对数据集(311-42)的修改的信息(311-10)和与修改数据集(311-42)的请求(311-04)相关联的I/O有效载荷(311-14)可以经由一个或多个数据通信网络、经由一个或多个专用数据通信链路(例如,用于发送I/O有效载荷的第一链路和用于发送描述对数据集的修改的信息的第二链路)、或者经由某种其它机制从领导者存储系统(311-40)发送(311-12)到跟随者存储系统(311-38),所述一个或多个数据通信网络将领导者存储系统(311-40)耦合到跟随者存储系统(311-38),所述一个或多个专用数据通信链路将领导者存储系统(311-40)耦合到跟随者存储系统(311-38)。
图3E所描绘的示例方法还包括由跟随者存储系统(311-38)接收(311-16)描述对数据集(311-42)的修改的信息(311-10)。跟随者存储系统(311-38)可以例如经由从领导者存储系统(311-40)发送到跟随者存储系统(311-38)的一个或多个消息从领导者存储系统(311-40)接收(311-16)描述对数据集(311-42)的修改的信息(311-10)和I/O有效载荷(311-14)。通过领导者存储系统(311-40)使用RDMA或类似机制或者以其它方式将消息写入跟随者存储系统(311-38)上的预定存储器位置(例如,队列的位置),一个或多个消息可以经由两个存储系统(311-38、311-40)之间的一个或多个专用数据通信链路从领导者存储系统(311-40)发送到跟随者存储系统(311-38)。
在一个实施例中,跟随者存储系统(311-38)可以通过使用SCSI请求(从发送方到接收方的写入,或者从接收方到发送方的读取)作为通信机制来从领导者存储系统(311-40)接收(311-16)描述对数据集(311-42)的修改的信息(311-10)和I/O有效载荷(311-14)。在这样的实施例中,SCSI写入请求用于编码要发送的信息(其包括任何数据和元数据),并且SCSI写入请求可以被递送到特定伪装置或通过特定配置的SCSI网络,或通过任何其它商定的寻址机制。或者,可替代地,模型也可以使用特定装置、特定配置的SCSI网络或其它商定的机制从接收方向发送方发出一组开放SCSI读取请求。作为对这些开放SCSI请求中的一个或多个的响应,包括数据和元数据的编码信息将被递送到接收方。这种模型可以在光纤通道SCSI网络上实现,该光纤通道SCSI网络通常被部署为数据中心之间的“暗光纤(darkfibre)”存储网络基础设施。这种模型还允许使用相同的网络线路以用于主机到远程阵列多路径和批量阵列到阵列通信。
图3E所描绘的示例方法还包括由跟随者存储系统(311-38)处理(311-18)修改数据集(311-42)的请求(311-04)。在图3E所描绘的示例方法中,跟随者存储系统(311-38)可以通过根据从领导者存储系统(311-40)接收到的描述对数据集(311-42)的修改的信息(311-10)以及I/O有效载荷(311-14)以修改跟随者存储系统(311-38)中所包括的一个或多个存储装置(例如,NVRAM装置、SSD、HDD)的内容来处理(311-18)修改数据集(311-42)的请求(311-04)。考虑如下示例,其中修改数据集(311-42)的请求(311-04)被体现为针对数据集(311-42)中所包括的卷的写入操作,并且描述对数据集(311-42)的修改的信息(311-10)指示写入操作只能在先前发出的写入操作已经被处理之后执行。在这样的示例中,处理(311-18)修改数据集(311-42)的请求(311-04)可以由跟随者存储系统(311-38)首先验证先前发出的写入操作已经在跟随者存储系统(311-38)上被处理并且随后将与该写入操作相关联的I/O有效载荷(311-14)写入跟随者存储系统(311-38)中所包括的一个或多个存储装置来执行。在这样的示例中,例如,当I/O有效载荷(311-14)已经被提交到跟随者存储系统(311-38)内的持久存储时,修改数据集(311-42)的请求(311-04)可以被认为已经完成并且被成功处理。
图3E所描绘的示例方法还包括由跟随者存储系统(311-38)向领导者存储系统(311-40)确认(311-20)修改数据集(311-42)的请求(311-04)的完成。在图3E所描绘的示例方法中,由跟随者存储系统(311-38)向领导者存储系统(311-40)确认(311-20)修改数据集(311-42)的请求(311-04)的完成可以由跟随者存储系统(311-38)向领导者存储系统(311-40)发送确认(311-22)消息来执行。这样的消息可以包括例如标识完成的修改数据集(311-42)的特定请求(311-04)的信息以及在跟随者存储系统(311-38)确认(311-20)修改数据集(311-42)的请求(311-04)的完成时有用的任何附加信息。在图3E所描绘的示例方法中,由跟随者存储系统(311-38)向领导者存储系统(311-40)发出确认(311-22)消息来例示向领导者存储系统(311-40)确认(311-20)修改数据集(311-42)的请求(311-04)的完成。
图3E所描绘的示例方法还包括由领导者存储系统(311-40)处理(311-24)修改数据集(311-42)的请求(311-04)。在图3E所描绘的示例方法中,领导者存储系统(311-40)可以通过根据描述对数据集(311-42)的修改的信息(311-10)以及作为修改数据集(311-42)的请求(311-04)的一部分接收到的I/O有效载荷(311-14)以修改领导者存储系统(311-40)中所包括的一个或多个存储装置(例如,NVRAM装置、SSD、HDD)的内容,来处理(311-24)修改数据集(311-42)的请求(311-04)。考虑如下示例,其中修改数据集(311-42)的请求(311-04)被体现为针对数据集(311-42)中所包括的卷的写入操作,并且描述对数据集(311-42)的修改的信息(311-10)指示写入操作只能在先前发出的写入操作已经被处理之后执行。在这样的示例中,处理(311-24)修改数据集(311-42)的请求(311-04)可以由领导者存储系统(311-40)首先验证先前发出的写入操作已经被领导者存储系统(311-40)处理并且随后将与该写入操作相关联的I/O有效载荷(311-14)写入领导者存储系统(311-40)中所包括的一个或多个存储装置来执行。在这样的示例中,例如,当I/O有效载荷(311-14)已经被提交到领导者存储系统(311-40)内的持久存储时,修改数据集(311-42)的请求(311-04)可以被认为已经完成并且被成功处理。
图3E所描绘的示例方法还包括从跟随者存储系统(311-38)接收(311-26)跟随者存储系统(311-38)已经处理修改数据集(311-42)的请求(311-04)的指示。在该示例中,跟随者存储系统(311-38)已经处理修改数据集(311-42)的请求(311-04)的指示被体现为从跟随者存储系统(311-38)发送到领导者存储系统(311-40)的确认(311-22)消息。读者将理解,尽管上述许多步骤被描绘和描述为以特定顺序发生,但是实际上不需要特定顺序。事实上,由于跟随者存储系统(311-38)和领导者存储系统(311-40)是独立的存储系统,因此各个存储系统可以并行地进行上述步骤中的一些。例如,跟随者存储系统(311-38)可以在领导者存储系统(311-40)已经处理(311-24)修改数据集(311-42)的请求(311-04)之前接收(311-16)描述对数据集(311-42)的修改的信息(311-10)、处理(311-18)修改数据集(311-42)的请求(311-04)、或者确认(311-20)修改数据集(311-42)的请求(311-04)的完成。可替代地,在跟随者存储系统(311-38)已经接收(311-16)到描述对数据集(311-42)的修改的信息(311-10)、处理(311-18)修改数据集(311-42)的请求(311-04)、或者确认(311-20)修改数据集(311-42)的请求(311-04)的完成之前,领导者存储系统(311-40)可能已经处理(311-24)修改数据集(311-42)的请求(311-04)。
图3E所描绘的示例方法还包括由领导者存储系统(311-40)确认(311-34)修改数据集(311-42)的请求(311-04)的完成。在图3E所描绘的示例方法中,可以通过使用从领导者存储系统(311-40)发送到主机(311-02)的一个或多个确认(311-36)消息或者经由一些其它适当的机制来执行确认(311-34)修改数据集(311-42)的请求(311-04)的完成。在图3E所描绘的示例方法中,领导者存储系统(311-40)在确认(311-34)修改数据集(311-42)的请求(311-04)的完成之前,可以确定(311-28)修改数据集(311-42)的请求(311-04)是否已经由跟随者存储系统(311-38)处理(311-18)。领导者存储系统(311-40)可以例如通过确定领导者存储系统(311-40)是否已经从跟随者存储系统(311-38)接收到指示修改数据集(311-42)的请求(311-04)已经由跟随者存储系统(311-38)处理(311-18)的确认消息或其它消息来确定(311-28)修改数据集(311-42)的请求(311-04)是否已经由跟随者存储系统(311-38)处理(311-18)。在这样的示例中,如果领导者存储系统(311-40)肯定地(311-30)确定为修改数据集(311-42)的请求(311-04)已经由跟随者存储系统(311-38)处理(311-18)、并且还由领导者存储系统(311-38)处理(311-24),则领导者存储系统(311-40)可以通过向发起修改数据集(311-42)的请求(311-04)的主机(311-02)确认(311-34)修改数据集(311-42)的请求(311-04)的完成来继续进行。然而,如果领导者存储系统(311-40)确定为修改数据集(311-42)的请求(311-04)尚未(311-32)由跟随者存储系统(311-38)处理(311-18)或者尚未由领导者存储系统(311-38)处理(311-24),则领导者存储系统(311-40)可能尚未向发起修改数据集(311-42)的请求(311-04)的主机(311-02)确认(311-34)修改数据集(311-42)的请求(311-04)的完成,这是因为当修改数据集(311-42)的请求(311-04)已经在同步复制数据集(311-42)所跨的所有存储系统(311-38、311-40)上被成功处理时,领导者存储系统(311-40)才可以向发起修改数据集(311-42)的请求(311-04)的主机(311-02)确认(311-34)修改数据集(311-42)的请求(311-04)的完成。
读者将理解,在图3E所描绘的示例方法中,从领导者存储系统(311-40)向跟随者存储系统(311-38)发送(311-12)描述对数据集(311-42)的修改的信息(311-10),以及由跟随者存储系统(311-38)向领导者存储系统(311-40)确认(311-20)修改数据集(311-42)的请求(311-04)的完成可以使用单次往返消息传送来执行。例如,可以通过使用光纤通道作为数据互连来使用单次往返消息传送。通常,SCSI协议与光纤通道一起使用。通常在数据中心之间提供这样的互连,因为一些较旧的复制技术可以被构建为基本上通过光纤通道网络将数据复制为SCSI事务。此外,历史上光纤通道SCSI基础设施与基于以太网和TCP/IP的网络相比具有更少的开销和更低的延时。此外,当使用光纤通道将数据中心内部连接到区块存储阵列时,光纤通道网络可以扩展到其它数据中心,使得当本地存储阵列发生故障时,一个数据中心中的主机可以切换到访问远程数据中心中的存储阵列。
SCSI可以用作通用通信机制,即使其通常被设计为与区块存储协议一起使用以用于在面向区块的卷(或磁带)中存储和检索数据。例如,SCSI读取(SCSI READ)或SCSI写入(SCSI WRITE)可用于在成对存储系统中的存储控制器之间递送或检索消息数据。SCSI写入的典型实现需要两个消息往返:SCSI发起者发送描述SCSI写入操作的SCSI CDB,SCSI目标接收该CDB,并且SCSI目标向SCSI发起者发送“准备接收”消息。然后,SCSI发起者向SCSI目标发送数据,并且当SCSI写入完成时,SCSI目标以成功完成来响应SCSI发起者。另一方面,SCSI读取请求仅需要一个往返:SCSI发起者发送描述SCSI读取操作的SCSI CDB,SCSI目标接收该CDB并用数据响应,然后以成功完成来响应。结果,在距离上,SCSI读取导致与SCSI写入相比一半的距离相关延时。因此,数据通信接收方使用SCSI读请求来接收消息可能比消息发送方使用SCSI写入请求来发送数据更快。使用SCSI读取仅需要消息发送方作为SCSI目标操作,并且消息接收方作为SCSI发起者操作。消息接收方可以向任何消息发送方发送一定数量的SCSI CDB读取请求,并且当消息数据可用时,消息发送方将响应于未完成的CDB读取请求其中之一。由于如果读取请求太长时间(例如,10秒)未完成,则SCSI子系统可能超时,因此即使没有要发送的消息数据,也应该在几秒内响应读取请求。
如来自国际信息技术标准委员会的T10技术委员会的SCSI流命令标准中所述,SCSI磁带请求支持可变响应数据,这对于返回可变大小的消息数据可以更灵活。SCSI标准还支持用于SCSI写入请求的立即模式,这可以允许单次往返SCSI写入命令。读者将理解,下面描述的许多实施例也利用单次往返消息传送。
为了进一步说明,图4阐述了根据本发明的一些实施例的基于云的存储系统(403)的示例。在图4所描绘的示例中,例如,基于云的存储系统(403)完全在诸如Amazon Web服务(Amazon Web Service)(AWS)、Microsoft Azure、谷歌云平台(Google Cloud Platform)、IBM云(IBM Cloud)和Oracle云(Oracle Cloud)等的云计算环境(402)中创建。基于云的存储系统(403)可用于提供与上述的存储系统可能提供的服务类似的服务。例如,基于云的存储系统(403)可用于向基于云的存储系统(403)的用户提供区块存储服务,基于云的存储系统(403)可用于通过使用固态存储来向基于云的存储系统(403)的用户提供存储服务,等等。
图4所描绘的基于云的存储系统(403)包括两个云计算实例(404、406),这两个云计算实例(404、406)各自用于支持存储控制器应用(408、410)的执行。云计算实例(404、406)可例如被体现为云计算环境(402)可能提供以支持诸如存储控制器应用(408、410)等的软件应用的执行的云计算资源(例如,虚拟机)的实例。在一个实施例中,云计算实例(404、406)可被体现为Amazon弹性计算云(Amazon Elastic Compute Cloud)(EC2)实例。在这样的示例中,可以启动包括存储控制器应用(408、410)的Amazon机器图像(AmazonMachine Image)(AMI)以创建和配置可执行存储控制器应用(408、410)的虚拟机。
在图4所描绘的示例方法中,存储控制器应用(408、410)可被体现为计算机程序指令模块,该计算机程序指令模块在被执行时执行各种存储任务。例如,存储控制器应用(408、410)可被体现为计算机程序指令模块,该计算机程序指令模块在被执行时执行与上述的控制器(图1A中的110A、110B)相同的任务,诸如将从基于云的存储系统(403)的用户接收到的数据写入基于云的存储系统(403)、从基于云的存储系统(403)中擦除数据、从基于云的存储系统(403)中检索数据并将这些数据提供给基于云的存储系统(403)的用户、监视和报告磁盘利用率和性能、进行诸如独立驱动冗余阵列(RAID)或RAID类数据冗余操作等的冗余操作、对数据进行压缩、对数据进行加密、以及对数据进行去重复等。读者将理解,由于存在各自包括存储控制器应用(408、410)的两个云计算实例(404、406),因此在一些实施例中,一个云计算实例(404)可以作为如上所述的主控制器进行操作,而另一云计算实例(406)可以作为如上所述的辅控制器进行操作。在这样的示例中,为了节省成本,作为主控制器进行操作的云计算实例(404)可被部署在相对高性能且相对昂贵的云计算实例上,而作为辅控制器进行操作的云计算实例(406)可被部署在相对低性能且相对廉价的云计算实例上。读者将理解,图4所描绘的存储控制器应用(408、410)可以包括在不同云计算实例(404、406)中执行的相同源代码。
考虑云计算环境(402)被体现为AWS且云计算实例被体现为EC2实例的示例。在这样的示例中,AWS提供了许多类型的EC2实例。例如,AWS提供了包括不同级别的存储器和处理能力的一套通用EC2实例。在这样的示例中,作为主控制器进行操作的云计算实例(404)可被部署在具有相对大的存储器量和处理能力的一种实例类型上,而作为辅控制器进行操作的云计算实例(406)可被部署在具有相对小的存储器量和处理能力的一种实例类型上。在这样的示例中,在发生切换主控制器和辅控制器的作用的故障转移事件时,实际上可以执行双重故障转移,使得:1)发生第一故障转移事件,其中以前作为辅控制器进行操作的云计算实例(406)开始作为主控制器进行操作;以及2)作为具有相对大的存储器量和处理能力的实例类型的第三云计算实例(未示出)利用存储控制器应用的副本加速旋转,其中第三云计算实例开始作为主控制器进行操作,而最初作为辅控制器进行操作的云计算实例(406)再次开始作为辅控制器进行操作。在这样的示例中,可以终止以前作为主控制器进行操作的云计算实例(404)。读者将理解,在可选实施例中,在故障转移事件之后作为辅控制器进行操作的云计算实例(404)可以继续作为辅控制器进行操作,而在故障转移事件发生之后作为主控制器进行操作的云计算实例(406)可以在一旦第三云计算实例(未示出)承担主作用后终止。
读者将理解,尽管上述的实施例涉及一个云计算实例(404)作为主控制器进行操作、并且第二云计算实例(406)作为辅控制器进行操作的实施例,但其它实施例也在本发明的范围内。例如,各云计算实例(404、406)可以作为基于云的存储系统(403)所支持的地址空间的某一部分的主控制器进行操作,各云计算实例(404、406)可以作为以某种其它方式对针对基于云的存储系统(403)的I/O操作的服务进行分割的主控制器进行操作,等等。事实上,在成本节省可能优先于性能需求的其它实施例中,可能仅存在包含存储控制器应用的单个云计算实例。在这样的示例中,控制器故障可能需要更多的时间来恢复,因为包括存储控制器应用的新的云计算实例将需要加速旋转,而不是使已创建的云计算实例承担用于服务否则将由故障的云计算实例处理的I/O操作的作用。
图4所描绘的基于云的存储系统(403)包括具有本地存储(414、418、422)的云计算实例(424a、424b、424n)。图4所描绘的云计算实例(424a、424b、424n)可例如被体现为云计算环境(402)可能提供以支持软件应用的执行的云计算资源的实例。图4的云计算实例(424a、424b、424n)可能与上述的云计算实例(404、406)不同,因为图4的云计算实例(424a、424b、424n)具有本地存储(414、418、422)资源,而支持存储控制器应用(408、410)的执行的云计算实例(404、406)无需具有本地存储资源。具有本地存储(414、418、422)的云计算实例(424a、424b、424n)可例如被体现为包括一个或多个SSD的EC2M5实例、包括一个或多个SSD的EC2R5实例、以及包括一个或多个SSD的EC2I3实例等。在一些实施例中,本地存储(414、418、422)必须被体现为固态存储(例如,SSD),而不是利用硬盘驱动器的存储。
在图4所描绘的示例中,具有本地存储(414、418、422)的云计算实例(424a、424b、424n)各自可以包括软件守护进程(412、416、420),该软件守护进程在由云计算实例(424a、424b、424n)执行时可以将自己呈现给存储控制器应用(408、410),就好像云计算实例(424a、424b、424n)是物理存储装置(例如,一个或多个SSD)那样。在这样的示例中,软件守护进程(412、416、420)可以包括与通常包含在存储装置上以使得存储控制器应用(408、410)可以发送和接收存储控制器将发送到存储装置的相同命令的计算机程序指令类似的计算机程序指令。以这种方式,存储控制器应用(408、410)可以包括与上述的存储系统中的控制器将执行的代码相同(或基本上相同)的代码。在这些和类似的实施例中,存储控制器应用(408、410)和具有本地存储(414、418、422)的云计算实例(424a、424b、424n)之间的通信可以利用iSCSI、基于TCP的NVMe、消息传送、定制协议或采用某种其它机制。
在图4所描绘的示例中,具有本地存储(414、418、422)的云计算实例(424a、424b、424n)各自也可以耦合到云计算环境(402)所提供的区块存储(426、428、430)。云计算环境(402)所提供的区块存储(426、428、430)可例如被体现为Amazon Elastic Block Store(EBS)卷。例如,第一EBS卷(426)可以耦合到第一云计算实例(424a),第二EBS卷(428)可以耦合到第二云计算实例(424b),以及第三EBS卷(430)可以耦合到第三云计算实例(424n)。在这样的示例中,云计算环境(402)所提供的区块存储(426、428、430)可以以与如何利用上述的NVRAM装置类似的方式利用,因为在特定云计算实例(424a、424b、424n)中执行的软件守护进程(412、416、420)(或某个其它模块)在接收到写入数据的请求时可以发起数据向其附加EBS卷的写入以及数据向其本地存储(414、418、422)资源的写入。在一些可选实施例中,数据只能写入特定云计算实例(424a、424b、424n)内的本地存储(414、418、422)资源。在可选实施例中,可以使用具有本地存储(414、418、422)的各云计算实例(424a、424b、424n)上的实际RAM作为NVRAM,而不是使用云计算环境(402)所提供的区块存储(426、428、430)作为NVRAM,从而降低与使用EBS卷作为NVRAM相关联的网络利用成本。
在图4所描绘的示例中,具有本地存储(414、418、422)的云计算实例(424a、424b、424n)可以被支持存储控制器应用(408、410)的执行的云计算实例(404,406)利用以服务针对基于云的存储系统(403)的I/O操作。考虑正执行存储控制器应用(408)的第一云计算实例(404)正作为主控制器进行操作的示例。在这样的示例中,正执行存储控制器应用(408)的第一云计算实例(404)可以(直接或经由辅控制器间接地)从基于云的存储系统(403)的用户接收将数据写入基于云的存储系统(403)的请求。在这样的示例中,正执行存储控制器应用(408)的第一云计算实例(404)可以在最终将写入去重复、加密或以其它方式可以更新的数据版本的请求发送至具有本地存储(414、418、422)的一个或多个云计算实例(424a、424b、424n)之前进行各种任务,诸如对请求中所包含的数据进行去重复、对请求中所包含的数据进行压缩、以及确定在何处写入请求中所包含的数据等。在一些实施例中,任一云计算实例(404、406)可以从基于云的存储系统(403)接收读取数据的请求,并可以最终将读取数据的请求发送到具有本地存储(414、418、422)的一个或多个云计算实例(424a、424b、424n)。
读者将理解,当具有本地存储(414、418、422)的云计算实例(424a、424b、424n)接收到写入数据的请求时,软件守护进程(412、416、420)或正在特定云计算实例(424a、424b、424n)上执行的某个其它计算机程序指令模块不仅可被配置为将数据写入其自己的本地存储(414、418、422)资源以及云计算环境(402)所提供的任何适当区块存储(426、428、430),而且软件守护进程(412、416、420)或正在特定云计算实例(424a、424b、424n)上执行的某个其它计算机程序指令模块还可被配置为将数据写入附加到特定云计算实例(424a、424b、424n)的基于云的对象存储(432)。附加到特定云计算实例(424a、424b、424n)的基于云的对象存储(432)可例如被体现为特定云计算实例(424a、424b、424n)可访问的Amazon简单存储服务(Amazon Simple Storage Service)(S3)存储。在其它实施例中,各自包括存储控制器应用(408、410)的云计算实例(404、406)可以发起将数据存储在云计算实例(424a、424b、424n)的本地存储(414、418、422)和基于云的对象存储(432)中。
读者将理解,软件守护进程(412、416、420)或者用于将数据写入区块存储(例如,本地存储(414、418、422)资源)并且还将数据写入基于云的对象存储(432)的其它计算机程序指令模块可以在不相似类型的处理单元(例如,不同类型的云计算实例、包含不同处理单元的云计算实例)上执行。事实上,软件守护进程(412、416、420)或者用于将数据写入区块存储(例如,本地存储(414、418、422)资源)并且还将数据写入基于云的对象存储(432)的其它计算机程序指令模块可以根据需要在不同类型的云计算实例之间迁移。
读者将理解,如上所述,基于云的存储系统(403)可用于向基于云的存储系统(403)的用户提供区块存储服务。虽然云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426、428、430)资源可以支持区块级访问,但附加到特定云计算实例(424a、424b、424n)的基于云的对象存储(432)仅支持基于对象的访问。为了解决这个问题,软件守护进程(412、416、420)或正在特定云计算实例(424a、424b、424n)上执行的某个其它计算机程序指令模块可被配置为获取数据区块、将数据区块封装成对象、并将对象写入附加到特定云计算实例(424a、424b、424n)的基于云的对象存储(432)。
考虑数据以1MB区块写入云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426、428、430)资源的示例。在这样的示例中,假设基于云的存储系统(403)的用户发出写入数据的请求,该数据在被存储控制器应用(408、410)压缩和去重复后导致需要写入5MB的数据。在这样的示例中,将数据写入云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426、428、430)资源相对简单,因为大小为1MB的5个区块被写入云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426、428、430)资源。在这样的示例中,软件守护进程(412、416、420)或正在特定云计算实例(424a、424b、424n)上执行的某个其它计算机程序指令模块可被配置为:1)创建包括第一个1MB数据的第一对象并将第一对象写入基于云的对象存储(432);2)创建包括第二个1MB数据的第二对象并将第二对象写入基于云的对象存储(432);3)创建包括第三个1MB数据的第三对象并将第三对象写入基于云的对象存储(432);等等。正因如此,在一些实施例中,写入基于云的对象存储(432)的各对象的大小可以相同(或几乎相同)。读者将理解,在这样的示例中,与数据本身相关联的元数据可被包括在各对象中(例如,对象的第一个1MB是数据,并且其余部分是与该数据相关联的元数据)。
读者将理解,基于云的对象存储(432)可以并入到基于云的存储系统(403)中,以提高基于云的存储系统(403)的持久性。继续云计算实例(424a、424b、424n)是EC2实例的上述示例,读者将理解,EC2实例只能保证具有99.9%的每月正常运行时间,并且本地实例存储中所存储的数据只在EC2实例的生命周期期间持续。正因如此,依赖于具有本地存储(414、418、422)的云计算实例(424a、424b、424n)作为基于云的存储系统(403)中的持久数据存储的唯一来源可能导致相对不可靠的存储系统。同样,EBS卷被设计用于99.999%的可用性。正因如此,即使依赖于EBS作为基于云的存储系统(403)中的持久数据存储也可能导致不够持久的存储系统。然而,Amazon S3被设计为提供99.999999999%的持久性,意味着可以将S3并入其存储池的基于云的存储系统(403)比其它各种选项明显更持久。
读者将理解,虽然可以将S3并入其存储池的基于云的存储系统(403)比其它各种选项明显更持久,但利用S3作为主要存储池可能导致具有相对慢的响应时间和相对长的I/O延时的存储系统。正因如此,图4所描绘的基于云的存储系统(403)不仅将数据存储在S3中,而且基于云的存储系统(403)还将数据存储在云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426、428、430)资源中,使得可以从云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426、428、430)资源来服务读取操作,从而减少了基于云的存储系统(403)的用户尝试从基于云的存储系统(403)读取数据时的读取延时。
在一些实施例中,基于云的存储系统(403)所存储的所有数据可以存储在以下两者中:1)基于云的对象存储(432)、以及2)云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426,428,430)资源中至少之一。在这些实施例中,云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426,428,430)资源可以有效地作为一般包括同样存储在S3中的所有数据的缓存器进行操作,使得所有数据读取可以在无需云计算实例(424a、424b、424n)访问基于云的对象存储(432)的情况下由云计算实例(424a、424b、424n)服务。然而,读者将理解,在其它实施例中,基于云的存储系统(403)所存储的所有数据可以存储在基于云的对象存储(432)中,但是比基于云的存储系统(403)所存储的所有数据少的数据可以存储在云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426,428,430)资源其中至少之一中。在这样的示例中,可以利用各种策略来确定基于云的存储系统(403)所存储的数据的哪个子集应驻留在以下两者中:1)基于云的对象存储(432)、以及2)云计算实例(424a、424b、424n)所利用的本地存储(414、418、422)资源和区块存储(426,428,430)资源中至少之一。
如上所述,当具有本地存储的云计算实例(424a、424b、424n)被体现为EC2实例时,具有本地存储的云计算实例(424a、424b、424n)只能保证具有99.9%的每月正常运行时间,并且本地实例存储中所存储的数据只在具有本地存储的各云计算实例(424a、424b、424n)的生命周期期间持续。正因如此,正在基于云的存储系统(403)内执行的一个或多个计算机程序指令模块(例如,正在其自己的EC2实例上执行的监视模块)可被设计为处理具有本地存储(414、418、422)的一个或多个云计算实例(424a、424b、424n)的故障。在这样的示例中,监视模块可以通过创建具有本地存储的一个或多个新的云计算实例、从基于云的对象存储(432)中检索存储在故障的云计算实例(424a、424b、424n)上的数据、并将从基于云的对象存储(432)中检索到的数据存储在新创建的云计算实例上的本地存储中,来处理具有本地存储(414、418、422)的一个或多个云计算实例(424a、424b、424n)的故障。读者将理解,可以实现该处理的许多变形。
考虑具有本地存储(414、418、422)的所有云计算实例(424a、424b、424n)都故障的示例。在这样的示例中,监视模块可以创建具有本地存储的新的云计算实例,其中选择允许具有本地存储的新创建的高带宽云计算实例与基于云的对象存储(432)之间的最大数据传送速率的高带宽实例类型。读者将理解,选择允许新的云计算实例与基于云的对象存储(432)之间的最大数据传送速率的实例类型,使得新的高带宽云计算实例能够尽快与来自基于云的对象存储(432)的数据再融合。一旦新的高带宽云计算实例与来自基于云的对象存储(432)的数据再融合,就可以创建较廉价的低带宽云计算实例,可以将数据迁移到较廉价的低带宽云计算实例,并且可以终止高带宽云计算实例。
读者将理解,在一些实施例中,所创建的新的云计算实例的数量可能大大超过本地存储基于云的存储系统(403)所存储的所有数据所需的云计算实例的数量。所创建的新的云计算实例的数量可能大大超过本地存储基于云的存储系统(403)所存储的所有数据所需的云计算实例的数量,以更快速地从基于云的对象存储(432)将数据拉取至新的云计算实例中,因为各新的云计算实例可以(并行地)检索基于云的存储系统(403)所存储的数据的某个部分。在这些实施例中,一旦基于云的存储系统(403)所存储的数据被拉取至新创建的云计算实例中,该数据就可以合并在新创建的云计算实例的子集内,并且过多的新创建的云计算实例可被终止。
考虑需要1000个云计算实例以本地存储基于云的存储系统(403)的用户已写入基于云的存储系统(403)的所有有效数据的示例。在这样的示例中,假设所有1,000个云计算实例都故障。在这样的示例中,监视模块可能导致创建100,000个云计算实例,其中各云计算实例负责从基于云的对象存储(432)中检索基于云的存储系统(403)的用户已写入基于云的存储系统(403)的有效数据的不同的1/100,000的组块,并本地存储其检索到的数据集中的不同组块。在这样的示例中,由于100,000个云计算实例中的各云计算实例可以并行地从基于云的对象存储(432)中检索数据,因此与监视模块仅创建1000个替换云计算实例的实施例相比,缓存层可以以快100倍的方式恢复。在这样的示例中,随着时间的推移,本地存储在100,000个云计算实例中的数据可以合并为1,000个云计算实例,并且剩余的99,000个云计算实例可被终止。
读者将理解,可以(例如,由正在EC2实例中执行的监视模块)监视基于云的存储系统(403)的各种性能方面,使得基于云的存储系统(403)可以根据需要向上扩展或向外扩展。考虑监视模块经由以下方式来监视基于云的存储系统(403)的性能的示例:经由与各自用于支持存储控制器应用(408、410)的执行的一个或多个云计算实例(404、406)的通信、经由监视云计算实例(404、406、424a、424b、424n)之间的通信、经由监视云计算实例(404、406、424a、424b、424n)和基于云的对象存储(432)之间的通信、或者以某种其它方式。在这样的示例中,假设监视模块判断为用于支持存储控制器应用(408、410)的执行的云计算实例(404、406)过小,并且不足以服务基于云的存储系统(403)的用户所发出的I/O请求。在这样的示例中,监视模块可以创建包括存储控制器应用的新的更强大的云计算实例(例如,包括更多处理能力、更多存储器等的一类云计算实例),使得新的更强大的云计算实例可以开始作为主控制器进行操作。同样,如果监视模块判断为用于支持存储控制器应用(408、410)的执行的云计算实例(404、406)过大、并且可以通过切换到较小的较不强大的云计算实例来节省成本,则监视模块可以创建包括存储控制器应用的新的较不强大(且较不昂贵)的云计算实例,使得新的较不强大的云计算实例可以开始作为主控制器进行操作。
考虑监视模块判断为云计算实例(424a、424b、424n)所共同提供的本地存储的利用率已达到预定利用率阈值(例如,95%)的示例作为动态地调整基于云的存储系统(403)的大小的附加示例。在这样的示例中,监视模块可以创建具有本地存储的附加云计算实例,以扩展云计算实例所提供的本地存储池。可选地,监视模块可以创建与已有的云计算实例(424a、424b、424n)相比具有更大本地存储量的一个或多个新的云计算实例,使得已有的云计算实例(424a、424b、424n)中所存储的数据可以迁移到一个或多个新的云计算实例,并且已有的云计算实例(424a、424b、424n)可被终止,从而扩展云计算实例所提供的本地存储池。同样,如果云计算实例所提供的本地存储池不必要地大,则可以合并数据并可以终止某些云计算实例。
读者将理解,基于云的存储系统(403)可以通过监视模块应用可能相对简单或相对复杂的一组预定规则而自动地上下调整大小。事实上,监视模块可能不仅考虑到基于云的存储系统(403)的当前状态,而且监视模块还可以应用例如基于观察到的行为(例如,从每天晚上10点直到上午6点,存储系统的使用相对少)和预定指纹图谱(例如,每次虚拟桌面基础设施增加100个虚拟桌面时,针对存储系统的IOPS的数量增加X)等的预测策略。在这样的示例中,基于云的存储系统(403)的动态扩展可以基于当前的性能指标、预测的工作负载以及许多其它因素(包括其组合)。
读者将进一步理解,由于基于云的存储系统(403)可以动态地扩展,因此基于云的存储系统(403)甚至可以以更动态的方式进行操作。考虑垃圾收集的示例。在传统的存储系统中,存储量是固定的。正因如此,在某个点,存储系统可能会被迫进行垃圾收集,因为可用存储量已经变得如此有限,以至于存储系统处于存储耗尽的边缘。相比之下,这里描述的基于云的存储系统(403)总是可以“添加”附加存储(例如,通过添加具有本地存储的更多云计算实例)。由于这里描述的基于云的存储系统(403)总是可以“添加”附加存储,因此基于云的存储系统(403)可以在关于何时进行垃圾收集作出更明智的决策。例如,基于云的存储系统(403)可以实施如下的策略,即:仅在由基于云的存储系统(403)服务的IOPS的数量低于某个水平时才进行垃圾收集。在一些实施例中,鉴于基于云的存储系统(403)的大小不会以传统存储系统受限的方式受限,还可以响应于系统负载来关闭和开启其它系统级功能(例如,去重复、压缩)。
读者将理解,本发明的实施例解决了一些云计算环境所提供的区块存储服务的问题,因为一些云计算环境单次只允许一个云计算实例连接到区块存储卷。例如,在AmazonAWS中,仅单个EC2实例可以连接到EBS卷。通过使用具有本地存储的EC2实例,本发明的实施例可以提供多连接能力,其中多个EC2实例可以连接到具有本地存储的另一EC2实例(驱动器实例)。在这样的实施例中,驱动器实例可以包括驱动器实例内执行的软件,该软件允许驱动器实例支持从各连接的EC2实例指向特定量的I/O。正因如此,本发明的一些实施例可被体现为多连接区块存储服务,该多连接区块存储服务可以不包括图4所描绘的所有组件。
在一些实施例中,特别是在基于云的对象存储(432)资源被体现为Amazon S3的实施例中,基于云的存储系统(403)可以包括一个或多个模块(例如,在EC2实例上执行的计算机程序指令模块),该一个或多个模块被配置为确保在特定云计算实例的本地存储与来自S3的数据再融合时,适当的数据实际上在S3中。该问题很大程度上是因为S3实现最终一致性模型而发生的,在该最终一致性模型中,当覆盖现有对象时,对该对象的读取将最终(但不一定立即)变为一致,并且将最终(但不一定立即)返回该对象的重写版本。为了解决该问题,在本发明的一些实施例中,S3中的对象从未被重写。作为代替,传统的“重写”将导致创建(包括数据的更新版本的)新对象并最终删除(包括数据的先前版本的)旧对象。
在本发明的一些实施例中,作为从不(或几乎从不)重写对象的尝试的一部分,当数据被写入S3时,所得对象可以用序列号进行标记。在一些实施例中,这些序列号可以保持在其它地方(例如,在数据库中),使得在任何时间点,可以知道与某个数据的最新版本相关联的序列号。以这种方式,可以通过仅读取与对象相关联的序列号而无需实际从S3中读取数据来判断S3是否具有某个数据的最新版本。进行该判断的能力在具有本地存储的云计算实例崩溃的情况下可能是特别重要的,因为不期望将替换云计算实例的本地存储与过时的数据进行再融合。事实上,由于基于云的存储系统(403)无需访问数据来验证其有效性,因此数据可以保持加密,并且可以避免访问费用。
在图4所描绘的示例中并且如上所述,用于支持存储控制器应用(408、410)的执行的云计算实例(404、406)可以以主/辅配置进行操作,其中用于支持存储控制器应用(408、410)的执行的其中一个云计算实例(404、406)负责将数据写入附加到具有本地存储(414、418、422)的云计算实例(424a、424b、424n)的本地存储。然而,在这样的示例中,由于用于支持存储控制器应用(408、410)的执行的各云计算实例(404、406)可以访问具有本地存储的云计算实例(424a、424b、424n),因此用于支持存储控制器应用(408、410)的执行的这两个云计算实例(404、406)可以服务从基于云的存储系统(403)读取数据的请求。
为了进一步说明,图5阐述了根据本发明的一些实施例的附加的基于云的存储系统(502)的示例。在图5所描绘的示例中,例如,基于云的存储系统(502)完全在诸如AWS、Microsoft Azure、谷歌云平台(Google Cloud Platform)、IBM云(IBM Cloud)和Ocacle云(Oracle Cloud)等的云计算环境(402)中创建。基于云的存储系统(502)可用于提供与上述的存储系统可能提供的服务类似的服务。例如,基于云的存储系统(502)可用于向基于云的存储系统(502)的用户提供区块存储服务,基于云的存储系统(502)可用于通过使用固态存储来向基于云的存储系统(502)的用户提供存储服务,等等。
图5所描绘的基于云的存储系统(502)可以以与图4所描绘的基于云的存储系统(403)略相似的方式操作,因为图5所描绘的基于云的存储系统(502)包括在云计算实例(504)中执行的存储控制器应用(506)。然而,在图5所描绘的示例中,执行存储控制器应用(506)的云计算实例(504)是具有本地存储(508)的云计算实例(504)。在这样的示例中,写入基于云的存储系统(502)的数据可以存储在云计算实例(504)的本地存储(508)中,并且也可以以如上使用基于云的对象存储(432)的相同方式存储在基于云的对象存储(510)中。例如,在一些实施例中,存储控制器应用(506)可以负责将数据写入云计算实例(504)的本地存储(508),而软件守护进程(512)可以负责确保以与如上使用基于云的对象存储(432)的相同方式将数据写入基于云的对象存储(510)。在其它实施例中,同一实体(例如,存储控制器应用)可以负责将数据写入云计算实例(504)的本地存储(508),并且还负责确保以与如上使用基于云的对象存储(432)的相同方式将数据写入基于云的对象存储(510)。
读者将理解,图5所描绘的基于云的存储系统(502)可以表示比图4所描绘的基于云的存储系统更廉价、更稳健的版本。在又一可选实施例中,图5所描绘的基于云的存储系统(502)可以包括支持存储控制器应用(506)的执行的具有本地存储的附加云计算实例,使得如果执行存储控制器应用(506)的云计算实例(504)故障,则可以发生故障转移。同样,在其它实施例中,图5所描绘的基于云的存储系统(502)可以包括具有本地存储的附加云计算实例,以扩展基于云的存储系统(502)中的云计算实例所提供的本地存储量。
读者将理解,以上参考图4所描述的许多故障场景也将适用于图5所描绘的基于云的存储系统(502)。同样,图5所描绘的基于云的存储系统(502)可以以与如上所述的类似方式动态地上下扩展。各种系统级任务的性能也可以由图5所描绘的基于云的存储系统(502)以如上所述的智能方式执行。
读者将理解,为了努力提高上述的基于云的存储系统的弹性,各种组件可能位于不同的可用性区内。例如,支持存储控制器应用的执行的第一云计算实例可以位于第一可用性区内,而同样支持存储控制器应用的执行的第二云计算实例可以位于第二可用性区内。同样,具有本地存储的云计算实例可以跨多个可用性区分布。事实上,在一些实施例中,可以在不同的可用性区中创建整个第二个基于云的存储系统,其中原始的基于云的存储系统中的数据(同步或异步地)复制到第二个基于云的存储系统,使得如果整个基于云的存储系统发生故障,则可以在微不足道的时间量内引入替换的基于云的存储系统(第二个基于云的存储系统)。
读者将理解,这里所述的基于云的存储系统可以用作存储系统机群的一部分。事实上,这里描述的基于云的存储系统可以与本地部署的存储系统配对。在这样的示例中,内部存储中所存储的数据可以(同步或异步地)复制到基于云的存储系统,并且反之亦然。
为了进一步说明,图6阐述了例示在基于云的存储系统(604)中服务I/O操作的示例方法的流程图。尽管描绘得不太详细,但图6所描绘的基于云的存储系统(604)可以与上述的基于云的存储系统类似,并且可以由云计算环境(602)支持。
图6所描绘的示例方法包括由基于云的存储系统(604)接收(606)将数据写入基于云的存储系统(604)的请求。例如,可以通过通信耦合到云计算环境的存储系统的用户从在云计算环境中执行的应用以及以其它方式接收写入数据的请求。在这样的示例中,请求可以包括要写入基于云的存储系统(604)的数据。在其它实施例中,将数据写入基于云的存储系统(604)的请求可以在基于云的存储系统(604)正被启动时的启动时间发生。
图6所描绘的示例方法还包括对数据进行去重复(608)。数据去重复是用于消除重复数据的重复副本的数据减少技术。基于云的存储系统(604)可以例如通过将数据的一个或多个部分与已存储在基于云的存储系统(604)中的数据进行比较、通过将数据的一个或多个部分的指纹图谱与已存储在基于云的存储系统(604)中的数据的指纹图谱进行比较、或以其它方式,来对数据进行去重复(608)。在这样的示例中,重复数据可被去除,并替换为对已存储在基于云的存储系统(604)中的数据的已有副本的引用。
图6所描绘的示例方法还包括对数据进行压缩(610)。数据压缩是使用比原始表示少的位对信息进行编码的数据减少技术。基于云的存储系统(604)可以通过对数据(此时,该数据可能不包括已存储在基于云的存储系统(604)中的数据)应用一个或多个数据压缩算法来对数据进行压缩(610)。
图6所描绘的示例方法还包括对数据进行加密(612)。数据加密是涉及将数据从可读格式转换为只有在对数据进行解密之后才能读取或处理的编码格式的技术。基于云的存储系统(604)可以使用加密密钥来对数据(此时,该数据可能已被去重复和压缩)进行加密(612)。读者将理解,尽管图6所描绘的实施例涉及对数据进行去重复(608)、对数据进行压缩(610)以及对数据进行加密(612),但存在进行这些步骤中的较少步骤的其它实施例,并且存在以不同顺序进行相同或较少数量的步骤的实施例。
图6所描绘的示例方法还包括将数据存储(614)在基于云的存储系统(604)的区块存储中。如以上更详细所述,将数据存储(614)在基于云的存储系统(604)的区块存储中可以例如通过将数据存储(616)在一个或多个云计算实例的诸如本地存储(例如,SSD)等的固态存储中来执行。在这样的示例中,数据可以与奇偶校验数据一起跨许多云计算实例的本地存储分散,以实现RAID或RAID类数据冗余。
图6所描绘的示例方法还包括将数据存储(618)在基于云的存储系统(604)的对象存储中。将数据存储(618)在基于云的存储系统的对象存储中可以包括创建(620)一个或多个等大小的对象,其中各等大小的对象包括数据的不同组块。在这样的示例中,由于各对象包括数据和元数据,因此各对象的数据部分可以是等大小的。在其它实施例中,各创建对象的数据部分可能不是等大小的。例如,各对象可以包括来自前一段落中所使用或以某种其它方式使用的区块存储中的预定数量的区块的数据。
图6所描绘的示例方法还包括由基于云的存储系统接收(622)从基于云的存储系统(604)读取数据的请求。例如,可以通过通信耦合到云计算环境的存储系统的用户从在云计算环境中执行的应用以及以其它方式接收从基于云的存储系统(604)读取数据的请求。该请求可以例如包括要从基于云的存储系统(604)读取的数据的逻辑地址。
图6所描绘的示例方法还包括从基于云的存储系统(604)的区块存储中检索(624)数据。读者将理解,基于云的存储系统(604)可以例如通过存储控制器应用将读取请求转发至在本地存储中包括所请求的数据的云计算实例,来从基于云的存储系统(604)的区块存储中检索(624)数据。读者将理解,通过从基于云的存储系统(604)的区块存储中检索(624)数据,可以比从基于云的对象存储中读取数据更快地检索数据,尽管基于云的对象存储中确实包括数据的副本。
读者将理解,在图6所描绘的示例方法中,基于云的存储系统(604)的区块存储相对于基于云的存储系统的对象存储表征为低读取延时。正因如此,通过从区块存储而不是对象存储来服务读取操作,基于云的存储系统(604)可以能够使用低延时区块存储来服务读取操作,同时仍然提供与云服务提供商所提供的对象存储解决方案相关联的弹性。此外,基于云的存储系统(604)的区块存储可以提供相对高的带宽。如本发明的读者将会想到的,基于云的存储系统(604)的区块存储可以以各种方式实现。
为了进一步说明,图7阐述了例示在基于云的存储系统(604)中服务I/O操作的示例方法的流程图。图7所描绘的示例方法与图6所描绘的示例方法类似,因为图7所描绘的示例方法也包括接收(606)将数据写入基于云的存储系统(604)的请求、将数据存储(614)在基于云的存储系统(604)的区块存储中、以及将数据存储(618)在基于云的存储系统(604)的对象存储中。
图7所描绘的示例方法还包括检测(702)为基于云的存储系统的区块存储的至少一部分已变为不能用。如以下更详细所述,检测(702)为基于云的存储系统的区块存储的至少一部分已变为不能用可以例如通过检测为包括本地存储的一个或多个云计算实例已变为不能用来执行。
图7所描绘的示例方法还包括识别(704)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据。识别(704)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据可以例如通过使用用于将数据的某种标识符(例如,序列号、地址)映射到该数据被存储的位置的元数据来执行。这种元数据或单独的元数据还可以将数据映射到用于识别基于云的存储系统的对象存储中所存储的包含该数据的对象的一个或多个对象标识符。
图7所描绘的示例方法还包括从基于云的存储系统的对象存储中检索(706)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据。从基于云的存储系统的对象存储中检索(706)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据可以例如通过使用用于将基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据映射到基于云的存储系统的对象存储中所存储的包含该数据的一个或多个对象的上述元数据来执行。在这样的示例中,检索(706)数据可以通过从基于云的存储系统的对象存储中读取映射到数据的对象来执行。
图7所描绘的示例方法还包括将所检索到的数据存储(708)在基于云的存储系统的区块存储中。如以上更详细所述,将所检索到的数据存储(708)在基于云的存储系统的区块存储中可以例如通过创建具有本地存储的替换云计算实例并将数据存储在一个或多个替换云计算实例的本地存储中来执行。
读者将理解,尽管上述的实施例涉及基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据通过从基于云的存储系统的对象存储层中检索该数据而基本上被带回基于云的存储系统的区块存储层中的实施例,但其它实施例也在本发明的范围内。例如,由于数据可以使用诸如RAID等的数据冗余技术而跨多个云计算实例的本地存储分布,因此在一些实施例中,丢失的数据可以通过RAID重建而被带回基于云的存储系统的区块存储层中。
为了进一步说明,图8阐述了例示在基于云的存储系统(804)中服务I/O操作的附加示例方法的流程图。尽管描绘得不太详细,但图8所描绘的基于云的存储系统(804)可以与上述的基于云的存储系统类似,并且可以由云计算环境(802)支持。
图8所描绘的示例方法包括由基于云的存储系统(804)接收(806)将数据写入基于云的存储系统(804)的请求。例如,可以通过通信耦合到云计算环境的存储系统的用户从在云计算环境中执行的应用以及以其它方式接收写入数据的请求。在这样的示例中,请求可以包括要写入基于云的存储系统(804)的数据。在其它实施例中,将数据写入基于云的存储系统(804)的请求可以在基于云的存储系统(804)正被启动时的启动时间发生。
图8所描绘的示例方法还包括对数据进行去重复(808)。数据去重复是用于消除重复数据的重复副本的数据减少技术。基于云的存储系统(804)可以例如通过将数据的一个或多个部分与已存储在基于云的存储系统(804)中的数据进行比较、通过将数据的一个或多个部分的指纹图谱与已存储在基于云的存储系统(804)中的数据的指纹图谱进行比较、或以其它方式,来对数据进行去重复(808)。在这样的示例中,重复数据可被去除,并替换为对已存储在基于云的存储系统(804)中的数据的已有副本的引用。
图8所描绘的示例方法还包括对数据进行压缩(810)。数据压缩是使用比原始表示少的位对信息进行编码的数据减少技术。基于云的存储系统(804)可以通过对数据(此时,该数据可能不包括已存储在基于云的存储系统(804)中的数据)应用一个或多个数据压缩算法来对数据进行压缩(810)。
图8所描绘的示例方法还包括对数据进行加密(812)。数据加密是涉及将数据从可读格式转换为只有在对数据进行解密之后才能读取或处理的编码格式的技术。基于云的存储系统(804)可以使用加密密钥来对数据(此时,该数据可能已被去重复和压缩)进行加密(812)。读者将理解,尽管图8所描绘的实施例涉及对数据进行去重复(808)、对数据进行压缩(810)以及对数据进行加密(812),但存在进行这些步骤中的较少步骤的其它实施例,并且存在以不同顺序进行相同或较少数量的步骤的实施例。
图8所描绘的示例方法还包括将数据存储(814)在基于云的存储系统(804)的区块存储中。如以上更详细所述,将数据存储(814)在基于云的存储系统(804)的区块存储中可以例如通过将数据存储(816)在一个或多个云计算实例的本地存储(例如,SSD)中来执行。在这样的示例中,数据与奇偶校验数据一起跨多个云计算实例的本地存储分散,以实现RAID或RAID类数据冗余。
图8所描绘的示例方法还包括将数据存储(818)在基于云的存储系统(804)的对象存储中。如以上更详细所述,将数据存储(818)在基于云的存储系统的对象存储中可以包括创建(820)一个或多个等大小的对象,其中各等大小的对象包括数据的不同组块。
图8所描绘的示例方法还包括由基于云的存储系统接收(822)从基于云的存储系统(804)读取数据的请求。例如,可以通过通信耦合到云计算环境的存储系统的用户从在云计算环境中执行的应用以及以其它方式接收从基于云的存储系统(804)读取数据的请求。该请求可以例如包括要从基于云的存储系统(804)读取的数据的逻辑地址。
图8所描绘的示例方法还包括从基于云的存储系统(804)的区块存储中检索(824)数据。读者将理解,基于云的存储系统(804)可以例如通过存储控制器应用将读取请求转发至在本地存储中包括所请求的数据的云计算实例,来从基于云的存储系统(804)的区块存储中检索(824)数据。读者将理解,通过从基于云的存储系统(804)的区块存储中检索(824)数据,可以比从基于云的对象存储中读取数据更快地检索数据,尽管基于云的对象存储中确实包括数据的副本。
为了进一步说明,图9阐述了例示在基于云的存储系统(804)中服务I/O操作的附加示例方法的流程图。图9所描绘的示例方法与图8所描绘的示例方法类似,因为图9所描绘的示例方法也包括接收(806)将数据写入基于云的存储系统(804)的请求、将数据存储(814)在基于云的存储系统(804)的区块存储中、以及将数据存储(818)在基于云的存储系统(804)的对象存储中。
图9所描绘的示例方法还包括检测(902)为基于云的存储系统的区块存储的至少一部分已变为不能用。如以下更详细所述,检测(902)为基于云的存储系统的区块存储的至少一部分已变为不能用可以例如通过检测为包括本地存储的一个或多个云计算实例已变为不能用来执行。
图9所描绘的示例方法还包括识别(904)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据。识别(904)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据可以例如通过使用用于将数据的某种标识符(例如,序列号、地址)映射到数据被存储的位置的元数据来执行。这种元数据或单独的元数据还可以将数据映射到用于识别基于云的存储系统的对象存储中所存储的包含该数据的对象的一个或多个对象标识符。
图9所描绘的示例方法还包括从基于云的存储系统的对象存储中检索(906)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据。从基于云的存储系统的对象存储中检索(906)基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据可以例如通过使用用于将基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据映射到基于云的存储系统的对象存储中所存储的包含该数据的一个或多个对象的上述元数据来执行。在这样的示例中,检索(906)数据可以通过从基于云的存储系统的对象存储中读取映射到数据的对象来执行。
图9所描绘的示例方法还包括将所检索到的数据存储(908)在基于云的存储系统的区块存储中。如以上更详细所述,将所检索到的数据存储(908)在基于云的存储系统的区块存储中可以例如通过创建具有本地存储的替换云计算实例并将数据存储在一个或多个替换云计算实例的本地存储中来执行。
为了进一步说明,图10阐述了例示在基于云的存储系统(604)中服务I/O操作的附加示例方法的流程图。图10所描绘的示例方法与以上许多附图所描绘的示例方法类似,这是因为图10所描绘的示例方法还包括接收(606)将数据写入到基于云的存储系统(604)的请求、将数据存储(614)在基于云的存储系统(604)的区块存储中、以及将数据存储(618)在基于云的存储系统(604)的对象存储中。
在图10所描绘的示例方法中,接收(606)将数据写入到基于云的存储系统的请求可以包括:由在云计算实例中执行的存储控制器应用接收(1002)将数据写入到基于云的存储的请求。在云计算实例中执行的存储控制器应用可以与上述存储控制器应用类似,并且如上面更详细地所描述的可以例如在EC2实例中执行。事实上,基于云的存储系统(604)实际上可以包括多个EC2实例或类似的云计算实例,其中多个云计算实例各自执行存储控制器应用。
在图10所描绘的示例方法中,将数据存储(614)在基于云的存储系统的区块存储中可以包括:由在云计算实例中执行的存储控制器应用发出(1004)将数据写入到具有本地存储的一个或多个云计算实例内的本地存储的指令。具有本地存储的一个或多个云计算实例可以与上述具有本地存储的云计算实例类似。在图10所描绘的示例方法中,在云计算实例中执行的存储控制器应用可以与具有本地存储的多个云计算实例耦合以进行数据通信。以这种方式,在云计算实例中执行的存储控制器应用可以将具有本地存储的多个云计算实例视为单独的存储装置,使得在云计算实例中执行的存储控制器应用可以通过发出与存储控制器应用在将数据写入到所连接的存储装置时将要发出的命令集相同的命令集,来发出(1004)将数据写入到具有本地存储的一个或多个云计算实例内的本地存储的指令。读者将理解,由于在云计算实例中执行的存储控制器应用可以与具有本地存储的多个云计算实例耦合以进行数据通信,因此存储阵列控制器可以连接到多个区块存储源,如果存储阵列控制器被配置为使用EBS作为其区块存储,则存储阵列控制器只能连接到单个EBS卷。
在图10所描绘的示例方法中,具有本地存储的多个云计算实例中的一个或多个可以与各自执行存储控制器应用的多个云计算实例耦合以进行数据通信。读者将理解,在一些实施例中,由于存在各自执行存储控制器应用的多个云计算实例,因此在第一云计算实例上执行的存储控制器应用可以用作主控制器,而在附加云计算实例上执行的附加存储控制器应用可以用作辅控制器,该辅控制器可以在发生一些事件(例如,主控制器故障)时接管主控制器。
为了进一步说明,图11阐述了例示在基于云的存储系统(604)中服务I/O操作的附加示例方法的流程图。图11所描绘的示例方法与以上许多附图所描绘的示例方法类似,这是因为图11所描绘的示例方法还包括接收(606)将数据写入到基于云的存储系统(604)的请求、将数据存储(614)在基于云的存储系统(604)的区块存储中、以及将数据存储(618)在基于云的存储系统(604)的对象存储中。
在图11所描绘的示例方法中,将数据存储(614)在基于云的存储系统的区块存储中可以包括:使用区块级协议将数据写入(1102)到区块存储的一个或多个区块中。在图11所描绘的示例方法中,区块存储可以体现为一个或多个区块存储装置(诸如NAND闪存存储器等),其中数据存储在区块中,各个区块可以用于存储最大大小(即,区块大小)的数据。例如,可以使用区块级协议(诸如iSCSI、光纤通道和FCoE(以太网上的光纤通道)等)将数据写入(1102)到这样的存储装置。读者将理解,使用区块级协议将数据写入(1102)到区块存储的一个或多个区块,被写入到基于云的存储系统的区块存储的数据因此被存储在区块中。
在图11所描绘的示例方法中,将数据存储(618)在基于云的存储系统的对象存储中可以包括:使用对象级协议将数据写入(1104)到对象存储中的一个或多个对象中。在图11所描绘的示例方法中,与其它存储架构(如将数据管理为文件层级的文件系统和将数据管理为区块的区块存储)不同,对象存储可以被配置为将数据管理为对象。这样的对象存储可以以装置级(对象存储装置)、系统级、接口级实现或者以某种其它方式实现。例如,可以使用诸如用于对象存储装置的SCSI命令集、RESTful/HTTP协议、AWS S3 API、以及用于访问云存储的云数据管理接口等的对象级协议将数据写入(1104)到对象存储。读者将理解,通过使用对象级协议将一个或多个对象写入(1104)到对象存储,被写入到基于云的存储系统的对象存储的数据因此被存储在对象中,而不是如前一段落中的情况那样被存储在区块中。
在图11所示的示例方法中,对于各个数据区块,可以将包含在特定区块中的数据写入到唯一对象中。读者将理解,被写入(1104)到对象存储的各个对象可以包括数据本身以及与其相关联的元数据,并且各个对象可以与全局唯一标识符相关联,而不是与文件名和文件路径、区块号等相关联。正因如此,在唯一对象包括数据本身、与该数据相关联的元数据和全局唯一标识符的意义上,包含在特定区块中的数据可以被写入到唯一对象中。因此,在这样的实施例中,基于云的存储系统可以维护来自存储在基于云的存储系统的区块存储中的各个数据区块和存储在基于云的存储系统的对象存储中的各个对象的映射。在一些实施例中,各个对象可以包括被包含在多个区块中的数据,但是被包含在多个区块中的数据仅需要存储在单个对象中。
为了进一步说明,图12例示根据一些实施例的示例虚拟存储系统架构1200。虚拟存储系统架构可以包括与上面参考图4~11所描述的基于云的存储系统类似的基于云的计算资源。
如上面参考图1A~3E所述,在物理存储系统的一些实施例中,物理存储系统可以包括向一个或多个主机提供存储服务的一个或多个控制器,并且其中物理存储系统包括诸如固态驱动器或硬盘等的持久存储装置,并且还包括诸如NVRAM等的一些快速持久存储。在一些示例中,快速持久存储可以用于分级或事务提交,或者用于加速对操作持久性的确认以减少主机请求的延时。
一般地,快速持久存储通常用于意图日志记录、快速完成或快速确保事务一致性,其中这样的(和类似的)目的在本文中被称为分级存储器。通常,物理存储系统和虚拟存储系统这两者都可以具有一个或多个控制器,并且可以具有专用存储组件,诸如在物理存储装置的情况下等的专用存储组件。此外,在一些情况下,在物理存储系统和虚拟存储系统中,可以以各种方式组织和重新组织分级存储器,诸如在稍后描述的示例中那样等。在一些示例中,无论以何种方式构造、生成或组织存储器组件或存储器装置,都可以存在用于执行以实现一组通告的存储服务、并且在不确定的持续时间内存储大容量数据的一组存储系统逻辑,并且还可以存在一定量的分级存储器。
在一些示例中,操作物理存储系统(诸如物理存储系统1A~3E等)的控制器逻辑可以通过提供合适的虚拟组件以单独地或整体地用作物理存储系统中的硬件组件的替代物来在虚拟存储系统内执行,其中虚拟组件被配置为操作控制器逻辑并且与被配置为替换除控制器之外的物理组件的其它虚拟组件交互。
继续该示例,执行控制器逻辑的虚拟组件可以实现和/或适配用于保持虚拟存储系统在故障的情况下操作的高可用性模型。作为另一示例,执行控制器逻辑的虚拟组件可以实现协议以防止虚拟存储系统在继续操作期间在面对可能超过虚拟存储系统可以容忍的瞬时故障时丢失数据。
在一些实施例中,并且特别是关于参考图12~17所描述的各种虚拟存储系统架构,计算环境可以包括对于作为服务平台的基于云的基础设施(诸如由Amazon WebServicesTM、Microsoft AzureTM和/或Google Cloud PlatformTM提供的云基础设施等)来说是典型的一组可用的通告的构造。在一些实施例中,这样的云平台内的示例构造和构造特性可以包括:
·计算实例,其中计算实例可以作为灵活分配给物理主机服务器的虚拟机执行或运行;
·将计算资源划分成单独的地理区域,其中计算资源可以分布或划分在单独的地理区域之间,使得与计算资源的不同区域或不同区中的用户相比,与给定云计算资源相同的区域或相同区内的用户可以体验更快和/或更高的带宽访问;
·将地理区域内的资源划分为在大规模数据中心断电、网络故障、电网故障、管理错误等情况下具有单独的可用性和生存性的“可用性”区。此外,在一些示例中,在同一地理区域内的单独可用性区中的特定云平台内的资源通常彼此之间具有相当高的带宽和合理低的延时;
·本地实例存储(诸如硬盘驱动器、固态驱动器、机架本地存储等),其可以向计算实例提供私有存储。以上参考图4~11描述了本地实例存储的其它示例;
·相对高速和持久的区块存储,并且区块存储可以连接到虚拟机,但是区块存储的访问可以被迁移。一些示例包括AWS中的EBS(Elastic Block StoreTM)、MicrosoftAzureTM中的受管理盘(Managed Disks)以及Google Cloud PlatformTM中的计算引擎持久盘。AWS中的EBS在单个可用性区内操作,但是以其它方式合理可靠和可用,并且旨在供计算实例长期使用,即使这些计算实例可以在物理系统和机架之间移动也是如此;
·对象存储,诸如Amazon S3TM或使用从S3导出、与S3兼容或具有与S3类似的一些特性的协议的对象存储(例如,微软的Azure Blob StorageTM)。通常,对象存储是非常持久的,通过在可用区之间和跨地理复制,在广泛的断电中幸存。
·云平台,其可以支持各种对象存储或其它存储类型,这些存储类型可以在其容量价格、访问价格、预期延时、预期吞吐量、可用性保证或持久性保证的组合方面变化。例如,在AWSTM中,标准和不频繁访问S3存储类(本文称为标准和主要写入存储类)在可用性(但不是持久性)以及容量价格和访问价格方面不同(其中不频繁访问存储层在容量上更廉价,但检索更昂贵,并且具有预期可用性的1/10)。不频繁访问S3还支持不容忍可用性区的完全丢失的、甚至更廉价的变体,其在本文中被称为单可用性区持久存储(single-availability-zone durable store)。AWS还支持提供最低容量价格的存档层(诸如GlacierTM和深GlacierTM等),但是对于Glacier具有非常高的访问延时,大约几分钟到几小时,并且对于深Glacier具有高达12小时的检索频率限制。Glacier和深Glacier在本文中被称为存档和深度存档存储类的示例;
·数据库,并且通常是多个不同类型的数据库,包括具有合理持久性(类似于高速、持久区块存储)和方便的原子更新原语集的高规模键值存储数据库。持久键值数据库的一些示例包括AWS DynamoDBTM、Google Cloud Platform Big TableTM和/或MicrosoftAzure的CosmoDBTM;以及
·动态功能,诸如代码段等,其可以被配置为响应于与配置相关联的事件或动作而在云平台基础设施内动态地运行。例如,在AWS中,这些动态功能被称为AWS LambdasTM,并且Microsoft Azure和Google Cloud Platform分别将这些动态功能称为的AzureFunctionsTM和Cloud FunctionsTM
在一些实施例中,本地实例存储不旨在被提供为用于长期使用,并且在一些示例中,当虚拟机在主机系统之间迁移时,可以不迁移本地实例存储。在一些情况下,本地实例存储也可能不在虚拟机之间共享,并且可能由于它们的本地性质而具有很少的持久性保证(可能在本地电力和软件故障中幸存,但没有必要一定在更广泛的故障中幸存)。此外,在一些示例中,与对象存储相比,本地实例存储可能合理廉价,并且可能不会基于针对其发出的I/O来计费(这通常是更持久的区块存储服务的情况)。
在一些实施例中,对象存储内的对象易于创建(例如,用于创建具有与账户相关联的一些桶内的名称的对象的web服务PUT操作)和检索(例如,web服务GET操作),并且跨足够数量的对象的并行创建和检索可能产生巨大的带宽。然而,在一些情况下,延时通常非常差,并且对对象的修改或替换可能在不可预测的时间量内完成,或者可能难以确定对象何时跨云平台基础设施完全持久且一致可用。此外,通常,与对象存储的持久性相反,对象存储的可用性通常很低,这通常是在云环境中运行的许多服务的问题。
在一些实施例中,作为示例基线,虚拟存储系统可以包括用于构造、提供和/或定义在云平台上构建的虚拟存储系统的以下虚拟组件和概念中的一个或多个:
·虚拟控制器,诸如在云平台的基础设施或云计算环境内的计算实例上运行的虚拟存储系统控制器等。在一些示例中,虚拟控制器可以在虚拟机上、在容器中或在裸机服务器上运行;
·虚拟驱动器,其中虚拟驱动器可以是被提供给虚拟存储系统控制器以表示数据集的特定存储对象;例如,虚拟驱动器可以是在虚拟存储系统内可以类似地服务于物理存储系统“存储装置”的卷或仿真盘驱动器。此外,虚拟驱动器可以由“虚拟驱动器服务器”提供给虚拟存储系统控制器;
·虚拟驱动器服务器可以由计算实例实现,其中虚拟驱动器服务器可以呈现由云平台提供的可用组件(诸如各种类型的本地存储选项等)中的存储(诸如虚拟驱动器等),并且其中虚拟驱动器服务器实现用于向一个或多个虚拟存储系统控制器提供虚拟驱动器、或者在一些情况下向一个或多个虚拟存储系统提供虚拟驱动器的逻辑。
·分级存储器,其可以是快速且持久的,或者至少是合理快速且合理持久的,其中可以根据持久性度量来指定合理持久,并且其中可以根据诸如IOPS等的性能度量来指定合理快速;
·虚拟存储系统数据集,其可以是表示相干管理的内容的数据和元数据的定义集合,该相干管理的内容表示文件系统、卷、对象和存储器的其它类似的可寻址部分的集合;
·对象存储,其可以向分级存储器提供后端持久对象存储。如图12所示,基于云的对象存储432可以由虚拟驱动器1210~1216管理;
·段,其可以被指定为中等大小的数据组块。例如,段可以被定义为在1Mb~64Mb的范围内,其中段可以保持数据和元数据的组合;以及
·虚拟存储系统逻辑,其可以是至少在一个或多个虚拟控制器408、410上运行的一组算法,并且在一些情况下,一些虚拟存储系统逻辑也在一个或多个虚拟驱动器1210~1216上运行。
在一些实现中,虚拟控制器可以(可能通过中间服务器(未示出))从客户端主机1260、1262、或从管理接口或工具接管或接收I/O操作和/或配置请求,然后确保I/O请求和其它操作运行到完成。
在一些示例中,虚拟控制器可以呈现文件系统、基于区块的卷、对象存储和/或某些种类的大容量存储数据库或密钥/值存储,并且可以提供数据服务,诸如快照、复制、迁移服务、提供、主机连接管理、去重复、压缩、加密、安全共享和其它这样的存储系统服务等。
在图12所示的示例虚拟存储系统1200架构中,虚拟存储系统1200包括两个虚拟控制器,其中一个虚拟控制器在一个时区(时区1251)内运行,并且另一虚拟控制器在另一时区(时区1252)内运行。在该示例中,这两个虚拟控制器分别被描绘为在云计算实例404内运行的存储控制器应用408和在云计算实例406内运行的存储控制器应用410。
在一些实现中,如上所述,虚拟驱动器服务器可以将与物理存储装置(诸如盘驱动器或固态驱动器等)类似的某物表示为主机,其中物理存储装置在物理存储系统的上下文内操作。
然而,虽然在该示例中,虚拟驱动器与主机类似地呈现为物理存储装置,但是虚拟驱动器由虚拟存储系统架构实现,其中虚拟存储系统架构可以是图4~16所描绘的那些架构中的任一个。此外,与具有物理存储装置作为类似物的虚拟驱动器相比,如在示例虚拟存储系统架构内所实现的,虚拟驱动器服务器在物理存储系统的上下文内可以不具有类似物。具体地,在一些示例中,虚拟驱动器服务器可以实现超出物理存储系统中的存储装置的典型逻辑的逻辑,并且在一些情况下可以依赖于在物理存储系统中不具有类似物的虚拟驱动器服务器和虚拟存储系统控制器之间的非典型存储系统协议。然而,概念上,虚拟驱动器服务器可以共享与扩展无共享或软件定义的存储系统的相似性。
在一些实现中,参考图12,相应的虚拟驱动器服务器1210~1216可以实现相应的软件应用或守护进程1230~1236以提供功能与物理存储装置的功能类似或甚至相同的虚拟驱动器,这使得能够更容易地移植被设计用于物理存储系统的存储系统软件或应用。例如,它们可以实现标准SAS、SCSI或NVMe协议,或者它们可以实现这些协议但具有较小或显著的非标准扩展。
在一些实现中,参考图12,分级存储器可以由一个或多个虚拟驱动器1210~1216实现,其中一个或多个虚拟驱动器1210~1216将数据存储在相应的区块存储卷1240~1246和本地存储1220~1226内。在该示例中,区块存储卷可以是AWS EBS卷,如图12所示,其可以逐个附接到两个或更多个其它虚拟驱动器。如图12所示,区块存储卷1240附接到虚拟驱动器1212,区块存储卷1242附接到虚拟驱动器1214,以此类推。
在一些实现中,可以将段指定为擦除编码集的一部分,诸如基于RAID型的实现等,其中段可以基于从其它段的内容计算出的擦除码(例如,RAID-5P和Q数据)来存储所计算出的奇偶校验内容。在一些示例中,段的内容可以被创建一次,并且在段被创建和填充之后,直到该段被丢弃或垃圾收集为止才被修改。
在一些实现中,虚拟存储系统逻辑还可以从其它虚拟存储系统组件运行,诸如动态功能等。虚拟存储系统逻辑可以提供由虚拟存储系统1200通告的能力和服务的完整实现,其中虚拟存储系统1200使用一个或多个可用云平台组件(诸如上述那些等)来可靠地且以适当的持久性实现这些服务。
虽然图12所示的示例虚拟存储系统1200包括两个虚拟控制器,但更一般地,如图13~16所示,其它虚拟存储系统架构可以具有更多或更少的虚拟控制器。此外,在一些实现中,并且与图1A~4所描述的物理存储系统类似,虚拟存储系统可以包括主动虚拟控制器以及一个或多个被动虚拟控制器。
为了进一步说明,图13例示根据一些实施例的示例虚拟存储系统架构1300。虚拟存储系统架构可以包括与上面参考图4~12所描述的基于云的存储系统类似的基于云的计算资源。
在该实现中,虚拟存储系统可以诸如通过划分数据集或通过仔细实现并发分布式算法等来在多个虚拟控制器上并发运行(如上面参考图12所指定的)虚拟存储系统逻辑。在该示例中,多个虚拟控制器1320、408、410、1322在相应的云计算实例1310、404、406、1312内实现。
如上文参考图12所述,在一些实现中,主机的特定集合可以优先地或排他地被引导到针对数据集的虚拟控制器的子集,而主机的特定不同集合可以优先地或排他地引导到针对该同一数据集的控制器的不同子集。例如,SCSI ALUA(非对称逻辑单元访问)或NVMeANA(非对称命名空间访问)或一些类似机制可以用于建立从一个主机到控制器子集的优选(有时称为“优化”)路径偏好,其中流量通常被引导到控制器的优选子集,但是其中,诸如在故障请求或网络故障或虚拟存储系统控制器故障等的情况下,该流量可以被重新引导到虚拟存储系统控制器的不同子集。可替代地,SCSI/NVMe卷通告或网络限制或一些类似的替代机制可以将来自主机的特定集合的所有流量排他地强制引到控制器的一个子集,或者可以将来自主机的不同特定集合的流量强制引到控制器的不同子集。
如图13所示,虚拟存储系统可以优先地或排他地将来自主机1260的I/O请求引导到虚拟存储控制器1320和408,而存储控制器410和可能的1322潜在地可用于供主机1260在故障请求的情况下使用,并且可以优先地或排他地将来自主机1262的I/O请求引导到虚拟存储控制器410和1322,而存储控制器408和可能的1320潜在地可用于供主机1262在故障请求的情况下使用。在一些实现中,可以引导主机向与主机在相同的可用性区内的一个或多个虚拟存储控制器发出I/O请求,其中与主机在不同的可用性区内的虚拟存储控制器可用于在故障情况下使用。
为了进一步说明,图14例示根据一些实施例的示例虚拟存储系统架构1400。虚拟存储系统架构可以包括与上面参考图4~13所描述的基于云的存储系统类似的基于云的计算资源。
在一些实现中,虚拟控制器和用于托管虚拟驱动器的虚拟驱动器服务器之间的边界可以是灵活的。此外,在一些示例中,虚拟组件之间的边界对于客户端主机1450a~1450p来说可能不可见,并且客户端主机1450a~1450p可能不检测提供同一组存储系统服务的两个不同架构的虚拟存储系统之间的任何区别。
例如,虚拟控制器和虚拟驱动器可以合并到单个虚拟实体中,该虚拟实体可以提供与传统的基于刀片的扩展存储系统类似的功能。在该示例中,虚拟存储系统1400包括n个虚拟刀片,虚拟刀片1402a~1402n,其中各个相应的虚拟刀片1402a~1402n可以包括相应的虚拟控制器1404a-1404n,并且还包括相应的本地存储1220~1226、1240~1246,但是由于可能是先前所描述的虚拟驱动器实现的情况那样,因此存储功能可以利用平台所提供的对象存储。
在一些实现中,由于虚拟驱动器服务器支持通用计算,因此该虚拟存储系统架构支持在虚拟存储系统控制器和虚拟驱动器服务器之间迁移的功能。此外,在其它情况下,该虚拟存储系统架构支持其它类型的优化,诸如可以在分级存储器内进行的上述优化等。此外,虚拟刀片可以配置有不同级别的处理能力,其中给定的一个或多个虚拟刀片的性能规范可以基于要进行的预期优化。
为了进一步说明,图15例示根据一些实施例的示例虚拟存储系统架构1500。虚拟存储系统架构可以包括与上面参考图4~14所描述的基于云的存储系统类似的基于云的计算资源。
在该实施例中,虚拟存储系统1500可以适于不同的可用性区,其中这样的虚拟存储系统1500可以使用跨存储系统同步复制逻辑来在一个可用性区内隔离虚拟存储系统的实例的尽可能多的部分。例如,所呈现的虚拟存储系统1500可以由一个可用性区(区1)中的第一虚拟存储系统1502构造,该第一虚拟存储系统1502将数据同步复制到另一可用性区(区2)中的第二虚拟存储系统1504,使得所呈现的虚拟存储系统即使在一个可用性区或另一可用性区中丢失数据或可用性的情况下也可以继续运行并提供其服务。可以进一步实现这样的实现以共享对持久对象的使用,使得数据到对象存储中的存储被协调,从而使得这两个虚拟存储系统不复制所存储的内容。此外,在这样的实现中,两个同步复制存储系统可以同步地将更新复制到分级存储器以及这两个存储系统各自的可用性区内的本地实例存储,以大大减少数据丢失的可能,同时协调对对象存储的更新作为稍后的异步活动,以大大减少存储在对象存储中的容量成本。
在该示例中,虚拟存储系统1504在云计算环境1501内实现。此外,在该示例中,虚拟存储系统1502可以使用基于云的对象存储1550,并且虚拟存储系统1504可以使用基于云的存储1552,其中在一些情况下(诸如AWS S3等),不同的对象存储1550、1552可以是具有不同桶的相同云对象存储。
继续该示例,在一些情况下,虚拟存储系统1502可以将数据同步复制到其它可用性区(未示出)中的其它虚拟存储系统或物理存储系统。
在一些实现中,虚拟存储系统1502和1504的虚拟存储系统架构可以是不同的,并且甚至可以是不兼容的,其中同步复制可以替代地取决于协议兼容的同步复制模型。上面参考图3D和3E更详细地描述了同步复制。
在一些实现中,虚拟存储系统1502可以与上面参考图14所描述的虚拟存储系统1400类似地来实现,并且虚拟存储系统1504可以与上面参考图12所描述的虚拟存储系统1200类似地来实现。
为了进一步说明,图16例示根据一些实施例的示例虚拟存储系统架构1500。虚拟存储系统架构可以包括与上面参考图4~15所描述的基于云的存储系统类似的基于云的计算资源。
在一些实现中,与上面参考图15所描述的示例虚拟存储系统1500类似,虚拟存储系统1600可以包括多个虚拟存储系统1502、1504,该多个虚拟存储系统协调以进行从一个虚拟存储系统到另一虚拟存储系统的同步复制。
然而,与上述示例虚拟存储系统1500相反,图16所示的虚拟存储系统1600提供了在虚拟存储系统1502、1504之间共享的单个基于云的对象存储1650。
在该示例中,所共享的基于云的对象存储1650可以被视为附加数据复制目标,其中延迟的更新使用与一致但不同步的复制模型相关联的机制和逻辑。以这种方式,可以在虚拟存储系统1600的多个单独的虚拟存储系统1502、1504之间一致地共享单个基于云的对象存储1650。
在这些示例虚拟存储系统各自中,虚拟存储系统逻辑通常可以包含分布式编程概念以执行虚拟存储系统的核心逻辑的实现。换句话说,虚拟系统逻辑在应用于虚拟存储系统时可以分布在虚拟存储系统控制器、组合虚拟系统控制器和虚拟驱动器服务器的扩展实现、以及在虚拟存储系统控制器和虚拟驱动器服务器之间拆分或以其它方式优化处理的实现之间。
为了进一步说明,图17阐述了例示虚拟存储系统1700内的数据流的示例方法的流程图。图17所描绘的示例方法可以在上面参考图12~16所描述的任何虚拟存储系统上实现。换句话说,虚拟存储系统1700可以由虚拟存储系统1200、1300、1400、1500或1600实现。
如图17所示,示例方法包括:由虚拟存储系统1700接收(1702)将数据写入到虚拟存储系统1700的请求;将数据1754存储(1704)在由虚拟存储系统1700的一个或多个虚拟驱动器提供的分级存储器内;以及将存储在分级存储器内的数据的至少一部分从分级存储器迁移(1706)到由云服务提供商提供的更持久的数据存储。
由虚拟存储系统1700接收(1702)将数据写入到虚拟存储系统1700的请求可以如上面参考图4~16所述来执行,其中数据可以被包括在一个或多个所接收到的存储操作1752内,并且可以使用一个或多个通信协议或者由正在托管虚拟存储系统1700的云计算环境402提供的一个或多个API调用来接收该请求。
将数据1754存储(1704)在由虚拟存储系统1700的一个或多个虚拟驱动器提供的分级存储器内可以如上面参考虚拟存储系统1200~1600所述来执行,其中虚拟存储系统(例如,虚拟存储系统1200)在虚拟控制器408、410处从客户端主机1260接收数据,并且其中虚拟控制器408、410将数据存储在虚拟驱动器1210~1216的层的本地存储之间。上面参考图12更详细地描述了由虚拟驱动器提供的分级存储器。
将存储在分级存储器内的数据的至少一部分从分级存储器迁移(1706)到由云服务提供商提供的更持久的数据存储可以如上面参考图4~16所述来执行,其中数据从分级存储器迁移到基于云的对象存储。
在共同待决的专利申请16/524,861(其全部内容出于所有目的并入本文)内描述了接收数据并将数据存储在分级存储器内、并且随后将数据从分级存储器迁移到更持久的存储的附加示例。具体地,在共同待决的专利申请16/524,861中描述的所有迁移技术描述了将数据存储在分级存储器(也称为第一存储层)内,并且可选地在基于迁移事件将分级存储器数据迁移到更持久的存储器或基于云的对象存储之前处理、修改或优化分级存储器内的数据。
如下面更详细地描述的,虚拟存储系统可以基于云平台定价结构来响应于成本要求的变化而动态地调整云平台资源使用。
在各种条件下,预算、容量、使用和/或性能需求可能改变,并且可以向用户呈现成本预测和各种成本场景,其可以包括增加服务器或存储组件的数量、可用类型的组件、可提供合适组件的平台和/或当前设置的替代方案可能如何工作和未来成本这两者的模型。在一些示例中,考虑到网络传送招致成本,这种成本预测可以包括在替代方案之间迁移的成本,其中迁移倾向于包括管理开销,并且在各种类型的存储或供应商之间传送数据的延时内,可能需要附加总容量,直到必要的服务完全可操作为止。
此外,在一些实现中,用户可以替代地提供预算或以其它方式指定费用阈值来替代定价正在使用的内容并基于潜在成本提供用于配置的选项,并且存储系统服务可以生成具有指定的资源使用的虚拟存储系统配置,使得存储系统服务在预算或费用阈值内操作。
继续存储系统服务在预算或费用阈值内操作的该示例,关于计算资源,虽然限制计算资源限制了性能,但是可以基于通过添加、移除或替换更快或更慢的虚拟存储系统组件以修改虚拟应用服务器、虚拟存储系统控制器和其它虚拟存储系统组件的配置来管理成本。在一些示例中,如果在给定的时间长度内考虑成本或预算(诸如每月、每季度或每年计费等),则通过响应于降低的工作负载而降低虚拟计算资源的成本,可以响应于工作负载的增加而使更多的计算资源可用。
此外,在一些示例中,响应于确定为给定工作负载可以在灵活的时间执行,这些工作负载可以被调度为在操作或发起虚拟存储系统内的计算资源较廉价的时间段期间执行。在一些示例中,可以在计费时段的过程中监视成本和使用,以确定计费时段中较早的使用是否可能影响在计费时段中较晚以预期或可接受的性能水平运行的能力,或者在计费时段的各部分期间低于预期的使用是否表明存在足够的剩余预算来运行可选工作、或者表明重新协商条款将降低成本。
继续该示例,响应于成本或资源约束对虚拟存储系统进行动态调整的这种模型可以从计算资源扩展到还包括存储资源。然而,对存储资源的不同考虑在于,存储资源具有比计算资源更少的弹性成本,这是因为所存储的数据在给定的时间段内继续占用存储资源。
此外,在一些示例中,云平台内可能存在与在具有不同容量和传送价格的存储服务之间迁移数据相关联的传送成本。维护虚拟存储系统资源的这些成本中的各个成本都必须被考虑,并且可以用作配置、部署和修改虚拟存储系统内的计算资源和/或存储资源的基础。
在一些情况下,虚拟存储系统可以基于成本预测而响应于存储成本来进行调整,该成本预测可以包括:与存储内容的传送成本和较廉价的存储资源(诸如由不同云平台提供的存储、或者去往或来自客户管理的数据中心中的存储硬件的存储、或者去往或来自保持在并置共享的管理数据中心中的客户管理的硬件的存储等)的存储成本的组合相比,将使用现有资源的连续存储成本进行比较。以这种方式,在足够长以支持数据传送的给定时间跨度内,并且在一些情况下基于可预测的使用模式,基于预算限制的虚拟存储系统模型可以响应于不同的成本或预算约束或要求而进行调整。
在一些实现中,随着容量响应于存储数据的累积而增长,并且随着工作负载在某时间段内围绕一些平均值或趋势线波动,动态可配置的虚拟存储系统可以计算将一定量的数据传送到一些较廉价类型的存储类或较廉价的存储位置的成本是否可能在给定预算内或在给定预算变化内。在一些示例中,虚拟存储系统可以基于包括计费周期或多个计费周期的时间段内的成本来确定存储传送,并且以这种方式,防止了在后续计费周期中超过预算或成本。
在一些实现中,成本管理或成本受限的虚拟存储系统(换句话说,响应于成本约束或其它资源约束而重新配置自身的虚拟存储系统)也可以利用可从云基础设施提供商获得的主要写入、存档或深度存档存储类。此外,在一些情况下,虚拟存储系统可以根据其它地方关于实现存储系统以与表现不同的存储类一起工作所描述的模型和限制来操作。
例如,如果被确定为具有低访问可能性的数据被合并到诸如合并具有类似访问模式或类似访问可能性特性的数据的段等中,则虚拟存储系统可以基于确定为成本或预算可以被节省并重新用于其它目的来自动使用主要写入存储类。
此外,在一些情况下,之后可以将合并的数据段迁移到主要写入存储类或其它较低成本的存储类。在一些示例中,虚拟驱动器上的本地实例存储的使用可能导致成本降低,这使得虚拟存储系统资源调整能够导致降低成本以满足成本或预算改变约束。在一些情况下,本地实例存储可以使用主要写入对象存储作为后端,并且由于读取加载通常完全由本地实例存储占用,因此本地实例存储可以主要作为缓存操作,而不是存储当前数据集的完整副本。
在一些示例中,如果可以识别出不被需要或预期在可用性区的丢失中幸存的数据集,则也可以使用单可用性持久存储,并且这种使用可以用作动态重新配置虚拟存储系统的成本节省基础。在一些情况下,将单可用性区用于数据集可以包括数据集的显式指定,或通过某一存储策略的间接指定。
此外,指定或存储策略还可以包括与特定可用性区的关联;然而,在一些情况下,特定可用性区可以由与例如正在从特定可用性区内访问虚拟存储系统的主机系统的数据集关联性来确定。换言之,在该示例中,特定可用性区可被确定为是包括主机系统的相同可用性区。
在一些实现中,如果虚拟存储系统能够在存储操作受到存档和/或深度存档存储类的约束的限制期间提供或满足性能要求,则虚拟存储系统可以使动态重新配置基于存档或深度存档存储类的使用。此外,在一些情况下,基于响应于特定活动级别而指定数据传送的存储策略,或者基于响应于在指定时间段内未访问数据而指定数据传送的存储策略,可以使旧快照或连续数据保护数据集或不再活动的其它数据集的传送能够被传送到存档存储类。在其它示例中,虚拟存储系统可以响应于特定的用户请求而将数据传送到存档存储类。
此外,考虑到来自存档存储类的检索可能需要几分钟、几小时或几天,虚拟存储系统可以请求存储在存档或深度存档存储类中的特定数据集的用户提供检索数据集所需的时间的特定批准。在一些示例中,在使用深度存档存储类的情况下,还可能存在对允许数据访问的频率的限制,这可能对数据集可以存储在存档或深度存档存储类中的情况施加进一步的约束。
如下面更详细描述的,实现虚拟存储系统以与不同行为的存储类一起工作可以使用各种技术来执行。
在各种实现中,一些类型的存储装置(诸如主要写入存储类等)对于存储和保持数据可以具有比对于访问和检索数据更低的价格。在一些示例中,如果数据可以被识别或确定为很少被检索,或者检索的频率低于指定阈值频率,则可以通过将数据存储在主要写入存储类内来降低成本。在一些情况下,这样的主要写入存储类可以成为附加的存储层,该附加的存储层可以由具有对用于提供这样的存储类的一个或多个云基础设施的访问的虚拟存储系统使用。
例如,存储策略可以指定主要写入存储类或其它存档存储类可以用于存储来自快照、检查点或历史连续数据保护数据集的数据段,所述快照、检查点或历史连续数据保护数据集已经从它们跟踪的数据集的最近实例中被重写或删除。此外,在一些情况下,可以基于在不被访问的情况下超过时间限制来传送这些段,其中时间限制可以在存储策略中指定,并且其中时间限制与如下项之外检索的低可能性相对应:可能需要访问数据集的较旧历史副本的无意删除或损坏、或者可能需要一些论争调查的故障或更大规模的灾难、犯罪事件、作为勒索软件攻击的一部分的管理错误(诸如无意中删除更近的数据、或者加密或删除数据集及其更近的快照、克隆、或连续数据保护跟踪图像的部分或全部的组合等)。
在一些实现中,云平台主要写入存储类的使用可以创建成本节省,然后可以使用该成本节省来提供计算资源以改善虚拟存储系统的性能。在一些示例中,如果虚拟存储系统跟踪并维护存储访问信息(诸如使用时期(age)和快照/克隆/连续数据保护感知垃圾收集器、或者段合并和/或迁移算法等),则虚拟存储系统可以使用段模型作为建立有效元数据引用的一部分,同时最小化传送到主要写入存储类的数据量。
此外,在一些实施例中,集成快照、克隆或连续数据保护跟踪信息的虚拟存储系统还可以减少可以从主要写入存储库读回的数据量,因为已经驻留在较廉价的存储类(诸如存储在云平台的标准存储类中的虚拟驱动器或对象上的本地实例存储等)中的数据可以用于仍然可从这些本地存储源获得并且自快照、克隆、或连续数据保护恢复点已经被写入到主要写入存储时起尚未被重写或删除的数据。此外,在一些示例中,从主要写入存储类检索到的数据可以被写入到一些其它存储类(诸如虚拟驱动器本地实例存储等)以供进一步使用,并且在一些情况下,以避免因检索而再次收费。
在一些实现中,可以基于上面关于从分级存储器内容的丢失中恢复所描述的方法和技术来提供附加级别的可恢复内容,其中附加级别的可恢复内容可以用于提供完全从存储在这些辅存储其中之一中的数据回到过去的一些一致点的可靠性,这些辅存储包括存储在这些其它存储类中的对象。
此外,在该示例中,可恢复性可以基于使用完全保持在该存储类内的信息来记录回滚到某个一致点(诸如快照或检查点等)所需的信息。在一些示例中,这样的实现可以基于包括数据集的完整过去图像的存储类,来代替仅已经被重写或删除的数据,其中重写或删除可以防止数据存在于来自数据集的更近的内容中。虽然该示例实现可能增加成本,但是因此,虚拟存储系统可以提供有价值的服务,诸如从勒索软件攻击中恢复等,其中免受勒索软件攻击的保护可以基于需要限制存储在给定存储类中的对象被删除或重写的附加级别的许可或访问。
在一些实施例中,除了使用主要写入存储类之外或代替使用主要写入存储类,虚拟存储系统还可以将存档存储类和/或深度存档存储类用于相对于主要写入存储类甚至更不可能被访问的内容、或者仅在预期罕见的灾难事件下才需要的内容,但是对于该内容,高费用值得用于检索内容的能力。这种低访问内容的示例可以包括例如在罕见情况(诸如诉讼中的发现阶段或一些其它类似的灾难等,特别是如果可能预期另一方为检索付费)下可能需要的数据集或快照或克隆的历史版本。
然而,如上所述,在勒索软件攻击的情况下保持数据集或快照或克隆的历史版本可以是另一示例。在一些示例中,诸如诉讼事件等,并且为了减少所存储的数据量,虚拟存储系统可以仅存储已经被重写或删除的数据集内的数据的先前版本。在其它示例中,诸如在勒索软件或灾难恢复的事件下等,如上所述,除了存储控制以消除对存储在给定存档或深度存档存储类中的对象的未授权删除或重写的可能性之外,虚拟存储系统还可以将完整数据集存储在存档或深度存档存储类中,包括存储从至少几个不同时间点恢复一致数据集所需的任何数据。
在一些实现中,虚拟存储系统如何利用:(a)存储在主要写入存储类中的对象和(b)存储在存档或深度存档存储类中的对象之间的差异可以包括访问快照、克隆或连续数据保护检查点,该快照、克隆或连续数据保护检查点访问给定的存储类。在主要写入存储类的示例中,可以以与存储在由虚拟存储系统云平台提供的标准存储类中的对象类似或可能相同的延时来检索对象,其中主要写入存储类中的存储成本可以高于标准存储类。
在一些示例中,虚拟存储系统可以实现使用主要写入存储类作为用于访问与当前仅可从标准存储类中的对象获得的段相对应的内容的常规模型的微小变形。特别地,在该示例中,当一些操作正在读取数据(诸如通过从跟踪卷的快照的逻辑偏移读取等)时,可以检索该数据。在一些情况下,虚拟存储系统可以请求用户同意为在请求访问快照或其它类型的存储图像时的任何此类检索支付额外费用,并且可以将检索到的数据存储到与虚拟驱动器相关联的本地实例存储中或拷贝(或转换)到标准存储类中的对象中,以避免使用未包括在虚拟存储系统的架构内的其它存储类来继续支付更高的存储检索费用。
在一些实施例中,与上面讨论的主要写入存储类中的可忽略的延时相反,与从存档或深度存档存储类检索对象相关联的延时或过程可能使实现不切实际。在一些情况下,如果需要数小时或数天来从存档或深度存档存储类检索对象,则可以实现替代过程。例如,用户可以请求访问快照(已知需要存储在存档或深度存档存储类中所存储的对象中的至少一些段),并且作为响应,代替按需读取任何这样的段,虚拟存储系统可以确定包括所请求的数据集(或快照、克隆或连续数据保护恢复点)并存储到存档或深度存档存储中的对象中的段列表。
以这种方式,在该示例中,虚拟存储系统可以请求检索所确定的段列表中的段,以将其拷贝到例如标准存储类中的对象中或者拷贝到要存储在本地实例存储中的虚拟驱动器中。在该示例中,对段列表的检索可能花费数小时或数天,但是从性能和成本的基础来看,优选的是一次请求整个段列表,来代替按需进行单独的请求。以该示例结束,在已经从存档或深度存档存储检索到段列表之后,然后可以提供对检索到的快照、克隆或连续数据保护恢复点的访问。
考虑到上面参考图12~16描述的虚拟存储系统的不同实现的各种架构,可以向主机装置、应用或其它类型的计算装置、计算节点或计算处理提供多个存储系统服务和特征。
在一些实现中,上述虚拟存储系统各自可以为存储系统内容提供持久存储。通常,使用云平台实现高度可用且合理高容量的存储系统应该考虑到容易获得的云平台组件的能力和限制。
此外,如本文所述,当设计用于提供与物理存储系统等效或更好的存储系统服务和能力的虚拟存储系统架构时,需要考虑云平台组件的能力和限制。例如,存在由云平台提供的基于区块的存储能力,诸如弹性区块存储等,其在虚拟存储系统的一些示例中可以用于代替物理存储系统中的盘驱动器。
然而,设计虚拟存储系统时的考虑是与物理存储系统中可能不存在的使用相关联的成本,例如,云平台中的基于区块的存储可以基于I/O流量以及容量来计费,并且通常不支持计算实例之间的并发共享,所有这些都限制了它们在创建高度可用的基础设施方面的实用性,所述基础设施可以在计算实例故障的情况下通过快速切换到另一计算实例来继续不间断地运行,或者可以通过使用相同的后端区块存储在若干计算实例中并发地运行存储系统控制器软件来更好地扩展。
在一些实现中,从成本角度来看,本地实例存储更实用,但是如果附接到本地实例存储的物理主机故障,则本地实例存储可能变得不可用,其中如果该故障是持久的,则本地实例存储可能无法附接到替代主机。在一些情况下,本地实例存储可用于实现虚拟驱动器,该虚拟驱动器可被共享给运行存储系统控制器软件的其它计算实例。以这种方式,在虚拟存储系统控制器计算实例中运行的RAID型软件可用于容忍直接连接到用于实现存储装置的实例存储的计算实例的故障。然而,这样的解决方案可能不是理想的,因为本地实例存储通常不旨在用于数据集的长期存储;然而,可以基于对所存储的数据集的足够数据冗余的构建来实现长期持久性。
在一些实现中,为了使本地实例存储在每字节的基础上具有成本效益,虚拟存储“装置服务器”计算实例(在本文中也称为虚拟驱动器服务器)可以附接到几十到几百太字节,这基本上大于当前物理存储装置。在一些情况下,结果可能是:例如成本有效的6+2RAID-6存储系统的最小大小可以是例如几百太字节到几乎一拍字节。为了抵消该大的最小大小,这样的虚拟驱动器服务器可以向若干虚拟存储系统提供虚拟驱动器。
此外,在一些示例中,使用擦除码来容忍可用性区故障可能是不切实际的,因为地理区域潜在地不具有足够的可用性区以用于可用性区之间的有效擦除编码,并且跨地理区域可能招致不可容忍的延时成本。在一些实例下,在可用性区之间镜像数据可能以增加的物理容量为成本来工作。
在一些实现中,到目前为止,使用对象存储是当前云平台内可用的最持久形式的规模存储。在一些情况下,对象存储可能具有可用性问题,但是数据丢失或损坏的概率极低。然而,在一些情况下,对象存储可能具有不可接受的长且些许不可预测的延时,从而使得对象存储不太适合作为虚拟存储系统的唯一存储选项。然而,在一些实现中,虚拟存储系统可以在访问对象存储时实现足够的并行性,使得可以以非常高的带宽存储数据和从中检索数据。
在一些实现中,对于在云平台内实现的虚拟存储系统,使虚拟存储具有可接受的性能、持久性和可靠性的一种方式是从实例存储获得性能、并从对象存储获得持久性,诸如上面参考图4~16所描述的虚拟存储系统架构等。在一些示例中,在这样的虚拟存储系统中,具有本地实例存储的计算实例实现存储装置等效物,但是本地实例存储中的所有内容也被写入对象存储。以这种方式,在一些实现中,跨一个或多个虚拟驱动器的本地实例存储作为缓存或作为被写入到对象存储的数据的完整副本来操作。然而,在一些情况下,用于写入对象的高且不可预测的写入延时使得对象存储包含对虚拟存储系统内容的所有最近写入和确认的修改是不切实际的。因此,在一些情况下,如下面更详细地讨论的,如果目标是虚拟存储系统的合理低延时存储,则对象存储的非常高的持久性不能被利用用于零RPO(恢复点目标)可恢复内容。
在一些实现中,设计虚拟存储系统的考虑是优化闪存存储的物理存储系统和优化虚拟存储系统之间的相似点,该相似点在于:这两种类型的存储都基于将内容写入中等大小的组块(在一些情况下,大约一兆字节到几兆字节)、并将所存储的内容保留在适当位置并且不被修改、直到一些垃圾收集处理释放所存储的内容为止来更优地操作。在该示例中,响应于垃圾收集处理确定为不再需要所存储的内容,垃圾收集处理可以删除所存储的内容或使所存储的内容的存储位置可用于存储新内容,其中在对象的情况下删除对象,并且其中在闪存的情况下擦除存储位置以供将来使用,作为准备好擦除区块以供重新使用的操作的一部分。此外,在对象存储的情况下,一次写入整个中等大小的对象而不修改所存储的对象与写入较小的对象、然后递增地写入对象或适当地重写所存储的对象相比更有效和可预测。
在一些实现中,写入大的或中等大小的组块内容的共享最优性提供了架构相似点,该架构相似点可以用作将闪存优化的物理存储系统适配到使用对象存储的虚拟存储系统的基础。例如,由虚拟存储系统实现的虚拟驱动器可以在架构上被配置为接收写入或顺序写入组,这些写入或顺序写入组有意地形成连续的中等大小的段(大约例如1MB~32MB),然后可以由虚拟驱动器服务器接收这些段并将其写入到虚拟驱动器服务器的本地实例存储,以及写入到针对各个连续的中等大小的组块创建的唯一或单个可识别的对象中。继续该示例,对象和对象存储桶的某种组合或所创建的对象可以基于虚拟存储系统的数据集标识符、虚拟驱动器和逻辑偏移来命名,或者基于虚拟存储系统的数据集标识符和与虚拟驱动器分离的某个逻辑数据段标识符以及向后兼容的逻辑偏移来命名。此外,通常,存储在对象存储内的对象包括存储数据、元数据、子资源、键信息、版本信息和/或控制信息的字节序列。换句话说,对象是可以存储诸如文件、区块、段或多个段等的任何数据组织的抽象。以这种方式,虽然虚拟存储系统内的虚拟驱动器或本地实例存储通常可以存储数据区块,但是虚拟存储系统可以向对象存储传送一个或多个区块的聚合、给定对象内的一个或多个段的聚合、或一些其它类型的结构化量的数据字节。
在一些实现中,可以通过重写标识符来保留段寻址兼容性。在一些示例中,写入中等大小的组块的虚拟存储系统模型的优点在于其可以紧密地模仿物理存储系统中所呈现的闪存存储装置的布局特性。在该模型中,从虚拟存储系统的后备对象存储读取内容包括:针对特定虚拟装置、并且在特定的逻辑偏移处针对与所提取的段相关联的虚拟存储系统,提取虚拟存储系统的数据集的对象作为数据段。在该示例中,在虚拟存储系统中,“擦除”已经被垃圾收集的段的等效是删除由虚拟存储系统数据集、虚拟驱动器和段偏移命名的对象。
然而,继续该示例,如果虚拟存储系统将重新使用段地址,则这样的删除可能产生问题,因为写入具有与旧对象相同名称的新对象可能产生由一些对象存储所使用的“最终一致性”模型内的问题。具体地,当写入具有以前从未使用过的名称的新对象时,当新对象的PUT完成时,保证新对象是持久的,但是任何其它情况(诸如重写或重新使用对象名称等)仅提供以下保证:一旦改变被传播到足够的云平台的基础设施,将与平台支持的一样持久,但是关于何时将发生该完全持久性的保证很少(如果有的话)。
此外,在该示例中,如果虚拟存储系统可以被修改为总是生成新的段偏移,则重新使用段不是必要的特征,但是这可能需要改变存储系统如何理解其物理可用容量。在一些实例中,另一问题可能在于删除也具有最终一致性的问题,使得数据集的稍后恢复可能遇到虚拟存储系统实现已经确认的段被删除,并且如果虚拟存储系统没有准备最终一致性的这种后果,则可能导致混淆或数据损坏。
在一些实现中,用于应对用于命名对象的该问题的一个示例是诸如通过将“重写”或历元标识符添加到对象名称等将虚拟存储系统数据集和虚拟驱动器的相同偏移处的段的各个新写入映射到新名称。在该示例中,历元标识符可以在一个或多个段被在逻辑上“擦除”的时间与这些段中的任何段被在逻辑上重写的时间之间改变为新值。此外,在该示例中,重写标识符可以与各个逻辑虚拟驱动器段偏移相关联,并且将在请求擦除的时间与其被重写的时间之间的某处针对该段推进。此外,在该示例中,为了读取段的对象,虚拟装置服务器可以使用存储系统数据集标识符、虚拟驱动器标识符、逻辑段偏移和历元标识符或重写标识符。在一些示例中,只要键值存储具有与对象存储类似的持久性,逻辑段的历元标识符或重写标识符就可以存储在诸如DynamoDB等的高规模键值存储数据库中。
在一些实现中,如果虚拟驱动器服务器故障并且必须通过从虚拟驱动器读取已经拷贝到后备对象存储内的对象中的数据来在新的虚拟驱动器服务器上重构相应的虚拟驱动器的内容,则新的虚拟驱动器服务器可以连接到相关联的段重写表并使用其内容来构造如何命名各个段偏移的对象。此外,在该示例中,虚拟存储系统然后可以根据需要(如果本地实例存储用作缓存)或者(如果本地实例存储旨在作为虚拟驱动器的完整副本则)作为高带宽检索操作,继续从对象存储中提取这些对象以存储在新的虚拟驱动器服务器的本地实例存储或新的虚拟驱动器中。在该示例中,重写标识符表可以用于确定哪些对象存在(并且由此确定哪些逻辑偏移已存储数据)、哪些对象是最新的、以及可以根据虚拟存储系统数据集标识符、虚拟驱动器、逻辑偏移和重写标识符或历元标识符的某种组合构造的对象的实际名称是什么。
在一些实现中,如果预期虚拟驱动器服务器存储虚拟驱动器的整个内容,并且如果预期该虚拟驱动器的新虚拟驱动器服务器在其可以服务虚拟驱动器之前检索所有该内容,则与该虚拟驱动器相关联的简单推进历元标识符可以消除对键值数据库的需要。代替地,在一些示例中,新的虚拟驱动器服务器可以查询对象存储以检索数据集和虚拟装置组合的所有对象名称,并且可以通过逻辑偏移和历元标识符进行排序,从而忽略具有相同逻辑偏移、但具有较早历元标识符的内容。注意,如果用于指示各个段的历元标识符或重写标识符的数据库丢失或损坏,则也可以使用该技术或变形,作为用于重构数据集的一致图像的更昂贵的方法。如果排序是不切实际的,则可以检索潜在相关的段并将其用于重构段数据库以及可能的虚拟驱动器的本地实例存储(如果段的段数据库条目尚未存在或列出较低的重写号或历元标识符,则通过将段存储在段数据库中以及可能的虚拟驱动器的本地实例存储中、或者代替段数据库中以及可能的虚拟驱动器的本地实例存储中的段),否则忽略检索到的段。
继续该示例,虚拟驱动器服务器然后可以基于逻辑偏移的最近历元标识符(其可以根据排序确定)来检索所列出的各个逻辑偏移的对象。此外,在该示例中,当准备好服务虚拟驱动器时,虚拟驱动器服务器可以继续进一步推进(advance)历元标识符,这可能需要当推进历元标识符时,将历元标识符写入到具有与对象存储大致匹配的持久性的某个数据库中。以这种方式,在虚拟驱动器服务器被重启或者虚拟驱动器在替代的虚拟存储装置服务器上被重构的情况下,历元标识符可以被可靠地推进为先前未被使用的新值。
在一些情况下,更高性能的替代解决方案可以在一定数量的推进之后将历元标识符保持到数据库中,并且随后当重启虚拟驱动器服务器或在别处重构虚拟驱动器时,将虚拟驱动器的历元标识符推进至少相同的一定数量的推进。在该替代解决方案中,可以例如每100个历元推进来进行该推进,使得在重启或重构时,当前持久值被检索并推进至少相同的100。
在一些实现中,虚拟存储系统可以实现将对象存储段与本地实例存储段分离。例如,通过虚拟驱动器偏移命名被存储为对象的段的替代方案是修改存储系统实现以保持被垃圾收集的所存储的中等大小的段的概念,但是改变这些段如何被索引和存储。
在这样的实现中,要考虑的一点是对象存储非常持久并且非常耐损坏。因此,可能几乎没有理由在对象之间存储擦除码。然而,相比之下,本地实例存储由于其本地性质而具有持久性问题,并且不如对象存储持久。在一些情况下,如果虚拟驱动器服务器或虚拟驱动器服务器的本地实例存储卷发生故障,则可以从后备对象存储来重构内容,但是从性能角度来看,来自其的延时命中(hit)通常是不可接受的。因此,在一些示例中,虚拟存储系统可以继续跨由存储系统使用的虚拟驱动器使用擦除编码方案(例如,RAID-6的一些变形)来在虚拟驱动器之间恢复丢失的数据,但是除了实现兼容性之外,很少有原因对存储在对象存储中的数据进行相同操作。
继续该示例,作为分级存储器中的虚拟驱动器和对象存储之间的不同持久性特性的结果,可以通过将数据存储到具有擦除编码条带的虚拟驱动器上的本地实例存储中、并且将数据存储在完全没有擦除编码的对象存储中(至少在虚拟存储系统或虚拟驱动器服务器的指导下没有擦除编码,对象存储实现可以在内部很好地进行擦除编码的广泛使用,但是这对于我们在这里描述的虚拟存储系统或虚拟驱动器服务器是不透明的),来实现持久且更高性能的虚拟存储系统。
继续如上所述的虚拟存储系统将没有奇偶校验信息的数据存储到备份本地实例所存储的对象存储中的一些实现。在一个示例中,除了仅是擦除码奇偶校验区块(例如,P和Q奇偶校验)的虚拟驱动器内容将不会被存储到对象存储中之外,虚拟存储系统可以保持相同形式。在该示例中,如果必须从对象重构这样的数据以针对虚拟驱动器上的段重建P和/或Q区块,则可以根据包含匹配数据区块的其它虚拟驱动器上的本地实例存储来重构数据,或者可以从对象存储检索数据区块,并且将根据检索到的数据来重新计算P和/或Q区块。
继续该示例,该模型中的有趣点在于,如果必须重构整个虚拟驱动器,诸如重构为替换的虚拟驱动器服务器等,则虚拟存储系统或虚拟驱动器服务器(无论哪个正在管理该处理或无论哪个正在应对网络流量和请求)将选择直接从对象存储中检索数据区块(这涉及通过网络仅检索和传送正在恢复的数据区块的数量)、或者根据来自与各个条带相关联的其它虚拟驱动器上的本地实例存储的数据以及P或Q区块来重新计算内容(这涉及通过网络检索和传送与正在恢复的数据的N倍一样多的数据,其中N是条带中的数据分片的数量)。例如,在8+2RAID-6型条带模型中,如果奇偶校验分片均匀地分散在虚拟驱动器之间,则虚拟驱动器的80%的内容可以随着该数量的区块的检索和传送而从对象存储重建,而20%的内容(虚拟驱动器的P和Q分片)将通过传送从其它虚拟驱动器服务器上的本地实例存储或从对象存储或从某种组合重建的区块的八倍的数据来重构。
进一步关于该示例,这样的实现可能要求虚拟存储系统向虚拟装置服务器通知哪些区块包含内容数据而不是奇偶校验数据(其中关于奇偶校验或内容的该信息可以用作避免将奇偶校验数据写入到对象存储的基础)、以及哪些数据可能需要从其它分片重构。在一些示例中,虚拟存储系统实现可以向虚拟存储系统通知用于虚拟存储系统正在写入的任何数据条带的条带化和分片模型。在替代示例中,条带化方案可以是针对虚拟驱动器或针对虚拟驱动器的可寻址区域可预测或预配置的,从而允许虚拟驱动器服务器确定区块单位是否包括应当存储在对象存储中的数据,或者区块单位是否包括不需要存储在对象存储中的奇偶校验数据。
在一些实现中,当奇偶校验数据仍然用于虚拟驱动器时,避免将奇偶校验区块存储到对象存储中可能存在缺点。换句话说,如果要将完整的虚拟存储系统数据集从对象存储恢复到虚拟驱动器中,则如果奇偶校验分片未存储在对象存储中,则从对象存储检索到的所有数据可能需要在虚拟驱动器之间进一步传送至少一次,这是因为奇偶校验分片(例如,RAID-6型擦除编码条带的P和Q)是通过使用取决于驻留在同一计算实例上的存储器中的两个操作数(例如,数据内容区块和奇偶校验结果)的二进制数学运算符将条带的数据分片组合在一起来计算的,其中结果被传送到具有本地实例存储的虚拟驱动器服务器(或在虚拟驱动器服务器内计算),该本地实例存储存储有擦除编码条带的奇偶校验分片。
继续该示例,代替地,如果奇偶校验分片也存储在对象存储中,则可以在无需虚拟驱动器服务器之间的任何进一步的网络传送的情况下,将所有内容(包括这些奇偶校验分片)从对象存储并行地检索到所有虚拟驱动器中。换句话说,一个模型还是另一模型是优选的可以取决于以下中的一个或多个:虚拟驱动器服务器之间的网络流量的成本、从对象存储检索的成本、以及在对象存储中存储否则不必要的奇偶校验区块的成本。例如,通过使用更宽的条带,可以显著降低对象存储检索和存储成本。在一个实例中,对于20+2条带,检索和容量开销仅为10%。在这种情况下,整个虚拟存储系统数据集的完全检索可能是罕见的。
此外,只要奇偶校验分片均匀地分散,用于重建仅一个虚拟驱动器的总网络流量就最终在任何一种方式中都大致相同。例如,对于10+2条带,虚拟驱动器的90%的内容可以直接从对象存储检索,并且10%需要从其它虚拟驱动器服务器传送10倍的数据,这累计达到相同的总网络传送。然而,如果虚拟驱动器服务器计算实例之间的网络传送相对于来自对象存储的传送显著更廉价(例如,小于10%的成本),则在此基础上,虚拟存储系统可以被设计为完全从其它虚拟驱动器重建单个虚拟驱动器,并且存储奇偶校验区块的总网络传送节省可能在经济上是不利的。
在一些实现中,虚拟存储系统可以将数据存储到对象中,这与将数据存储在虚拟驱动器本地实例存储中不同。在一些情况下,通过在避免存储在对象存储中的相同数据的擦除码的情况下使用存储在跨虚拟驱动器的本地实例存储中的数据的擦除码来完成实现存储系统的另一方式是将跨虚拟驱动器的段存储与到对象存储中的段存储分开。例如,整个虚拟存储系统可能调用受保护段的数据单位可以跨一组虚拟驱动器进行擦除编码,例如作为一个16MB段分片并交织到数据的8个虚拟驱动器和奇偶校验保护的2个虚拟驱动器上,而该段可以作为单个16MB对象存储在对象存储中。
继续该示例,这样的实现可能产生簿记(bookkeeping)问题,因为存储在虚拟驱动器中的段的各个单独分片的基于偏移的索引可能与将用于存储单独对象的方案不匹配。在一些情况下,对象将更自然地使用由虚拟存储系统数据集标识符和唯一且不可重复使用的段标识符的组合命名的对象来存储。此外,为了应对这一点,索引或其它存储系统元数据结构内的引用可能需要包括基于偏移的寻址和基于段标识符的寻址这两者。
在一些实现中,作为先前示例的替代,应对簿记问题的另一方式是将段标识符到虚拟驱动器的映射构造为单独的结构。对此的有趣的优点在于,存储系统的主要持久性元数据将基于存储在对象存储中的内容,并且当根据对象存储中的对象重建虚拟存储系统数据集时,可以重构面向虚拟驱动器的索引。以这种方式,在该示例中,这然后将允许数据集被重构到包含不同数量的虚拟驱动器服务器和虚拟驱动器的虚拟存储系统中。
继续该实现,虚拟驱动器可以将其自身管理为存储在对象存储中的一系列段的缓存,其中段标识符到虚拟驱动器的映射保持在虚拟驱动器自身内,其中在一些情况下,虚拟驱动器可以使用本地擦除编码来应对本地驱动器故障(平台基础设施内的本地实例存储的实现可能已经这样做),并且如果先前的虚拟驱动器或虚拟驱动器服务器发生故障,则从对象存储进行提取以从未校正的故障中恢复或将一系列段重构到新的虚拟驱动器上,诸如重构到新的虚拟驱动器服务器上等。
在其它实现中,可替代地,可以完全通过虚拟存储系统控制器来管理缓存或虚拟存储系统数据集的完整副本,其中虚拟驱动器用于将段存储为跨虚拟驱动器的擦除编码条带以用于恢复目的,但是虚拟存储系统控制器没有必要知道如何从对象存储传送它们的内容。作为该模型中的优化,虚拟存储系统逻辑可以在保持对虚拟驱动器内的对象和段何时发生以及发生在何处的控制的情况下,通知虚拟驱动器服务器如何将段传送到对象存储和从对象存储传送段。在该示例中,如果跨虚拟驱动器对段进行擦除编码,则将传送卸载到虚拟驱动器服务器可以节省虚拟存储系统控制器内的网络和CPU带宽,但是可能不会在整体联网上节省太多,因为对于N+R擦除码,接收段的虚拟驱动器服务器可能仍然必须将该段的N+R-1个分片传送到其它虚拟驱动器服务器。
在其它实现中,可替代地,段可以存储在单独的虚拟驱动器上(或缓存在单独的虚拟驱动器上),但是跨多个虚拟驱动器选择的一组段可以链接在一起以形成擦除编码集,该擦除编码集将奇偶校验段存储在附加的一组虚拟驱动器上。以这种方式,许多类型的恢复可以在这一组虚拟驱动器内操作(在虚拟驱动器服务器之间,可能通过直接传送或通过虚拟存储系统控制器传送),但是将单独的段传送到虚拟驱动器和从虚拟驱动器传送各个段通常仅涉及虚拟驱动器和段传送中所涉及的其它组件。
继续该示例,在该模型中,虚拟存储系统逻辑响应于存储新段而将该段存储到一个虚拟驱动器中,并且该段也将被存储在对象存储内的对象中。在该示例中,从对象存储检索到的段也可以作为段存储在单独的虚拟驱动器内、或者作为缓存或作为数据集的完整传送的一部分存储到虚拟驱动器中。此外,然后将通过链接跨一组虚拟驱动器的这一组段、并使用其内容来计算擦除码奇偶校验段(例如,RAID-6型擦除码方案中的P和Q奇偶校验段)来保护段。
此外,稍后的垃圾收集操作(或者可能是缓存丢弃操作)可能必须考虑所链接的一组段,诸如通过丢弃或垃圾收集这些所链接的段(连同其奇偶校验段一起)而不是垃圾收集或丢弃各个段等。在写入新段的情况下,虚拟存储系统控制器可以在存储器中累积一组段的内容,然后计算要传送到虚拟驱动器的奇偶校验段,或者虚拟存储系统逻辑可以向虚拟驱动器通知要进行何种传送和计算以计算和存储奇偶校验段。在从对象存储检索段的情况下,虚拟驱动器可以自己管理,或者虚拟存储系统逻辑可以指导虚拟驱动器进行何种传送和计算,或者传送可以流过虚拟存储系统控制器使得虚拟存储系统控制器可以计算和存储奇偶校验段。
在该实现中,虚拟存储系统逻辑可以以各种方式在虚拟驱动器之间划分段,或者对将段传送到对象存储和从对象存储传送段的工作进行划分。例如,可以对段标识符进行散列以产生虚拟驱动器。在该示例中,段标识符可以包括映射到虚拟驱动器的子集标识符。此外,可以通过表将段动态地分配给虚拟驱动器。在该示例中,在虚拟驱动器内,段可以存储在本地存储实例卷内的偏移处。此外,在该示例中,段的动态映射可以指示持久格式的段不能识别该偏移,因此可以使用映射表。在该示例中,该映射表可以由虚拟驱动器服务器管理,或者该映射表可以由虚拟存储系统控制器管理。如果虚拟存储系统控制器保持段标识符到虚拟驱动器的映射表,则将虚拟驱动器卷偏移添加到该映射表是直接的,尽管这可能增加虚拟存储系统控制器计算实例存储器内的该映射表的存储器开销。
在包括将段写入到各个驱动器、但链接跨虚拟驱动器的段并将奇偶校验段写入到一个或多个附加虚拟驱动器的实现中,可能存在以下挑战:确定哪些段被链接在一起。然而,在该示例中,可以通过使用另一表来跟踪确定哪些段被链接在一起;可替代地,段标识符可以包括可以以可预测的方式在虚拟驱动器之间轮换的序列信息。
继续该示例,虚拟存储系统逻辑可以在垃圾收集时、在由于其它原因丢弃段时和/或在重建丢失的数据时考虑该链接。在由虚拟存储系统逻辑考虑的这些因素中,只有重建丢失的数据对虚拟存储系统逻辑具有窄的及时性要素,这是因为响应于客户端主机请求而读取数据被延迟了这所花费的时间;然而,即使当一个或两个虚拟驱动器故障时,大多数请求也可以指向由未故障的驱动器存储的有效数据段,因此引入用于该读取的表读取(特别是与从其它所链接的段读取以重建丢失数据的开销相比)不会导致这么多的整体性能惩罚。此外,虚拟存储系统逻辑还可以使用预测性读取启发法来减少这种延时惩罚。
在一些实现中,虚拟存储系统可以被设计为增加分级存储器的持久性。例如,存储系统通常利用某种形式的快速持久存储器或其它低延时、高重写速率的存储来对数据集的更新进行分级。以这种方式,包括快速持久存储器的分级存储器支持对更新的快速确认,并且还允许组织数据以写入到更长期持久性存储的时间。例如,利用物理存储系统中的闪存存储,分级存储器允许时间来填充一组段以写入到擦除区块中、然后用跨装置的擦除码保护段、或者在擦除区块或装置内添加更多的作为擦除码或改进的校验和的本地化保护以保护防止页级故障。在基于盘的存储系统中,这可以在允许建立更大的工作队列以更有效地调度传送的情况下为读取-计算-写入擦除码更新提供时间。在该示例中,还可以使用快速持久存储器来组织事务更新,以确保写入后备存储的相关更新的一致性。例如,写入数据单位并写入引用该数据单位的索引,或者应对在重写相关卷的数据时保留快照的内容可能需要的更复杂的一组操纵。
在一些实现中,虚拟存储系统可以在基于云基础设施的存储系统中实现快速持久存储。例如,快速持久存储器可以在物理存储系统中实现为存储器和(诸如在不间断电源等中的)大型电池或实现为快速固态驱动器,或者(越来越普遍地)实现为PCI或NVMe或SCSI连接的连接装置,其包括DRAM、电容器或其它形式的可再充电电源(诸如相对小的可再充电电池等)和本地闪存,其中DRAM提供低延时和高重写速率,并且电容器或电池提供电力以在电源发生故障时将DRAM写入到闪存。然而,可以使用较新形式的非易失性存储器(诸如3DXPoint或MRAM等),并且为了确保该分级存储器可以用于在面对存储系统控制器故障时恢复不完整的更新,该存储器可以是双端口的以使得第二存储系统控制器在第一存储系统控制器发生故障的情况下可以读取该存储器内容,或者写入到分级存储器的内容可以由第一存储系统控制器通过某个互连拷贝到第二存储系统控制器,并且在任何更新可以被认为是持久的且被确认之前保存在该控制器上以及第一存储系统控制器上。为了应对持久存储器本身的故障,在物理存储系统和虚拟存储系统这两者中,通常存在两个或更多个这样的存储器,并且跨这两种系统对任意数据进行镜像或擦除编码。
在一些实现中,双端口到多个计算实例的快速持久存储器在许多云平台中不可用;然而,如果它们可用,则可以使用它们,否则,可以使用替代方案。例如,虚拟存储系统控制器之间的镜像是可能的解决方案,尽管可能仍然缺乏等效的快速持久存储器,但是除非运行虚拟存储系统控制器计算实例的主机系统具有作为具有快速互连的固态驱动器的本地实例存储。
在一些实现中,设计虚拟存储系统的快速、持久分级存储器的其它考虑是云基础设施内可用的持久存储器技术的生存性和可访问性。特别地,至少一旦对象存储的内容被验证为持久的,对象存储的内容就可以在相当广泛的故障和暂时断电中存活。此外,不太可能存在具有与对象存储一样持久的低延时的任何事物。在一些情况下,通过光学互连(在各个方向上)的传输的延时是5μs/km,其甚至忽略由排队和网络交换和其它硬件内的其它问题引起的延迟而开始累加。此外,针对往返时间加倍,因此在完全直的光缆上完美实现的网络导致每100km的1ms往返。然而,传统存储系统上的快速持久存储器具有1/10或更好的延时。在实践中,获得在本地区域之外的分级存储器中的条目的副本可以在几十到几百毫秒的范围内。
因此,在一些实现中,对于在云基础设施中实现的合理高性能的虚拟存储系统,同步数据集的持久性和生存性将受到分级存储器的持久性和生存性的限制。在一些情况下,虚拟存储系统中的生存性仍然可能比位于单个物理数据中心中的单个存储系统更好,这是因为作为用于构造虚拟存储系统的工具的可用性区不能在单个数据中心内复制。
在一些实现中,将速度和持久性构建到虚拟存储系统的分级存储器中的解决方案使用由典型云平台提供的合理持久的区块存储服务。例如,AWS提供EBS(弹性区块存储)作为存储数据的可靠且持久且合理快速的方法,该弹性区块存储可以在与在相同可用性区中运行的其它计算实例相同的数据中心内运行,并且旨在供长期使用,这与本地实例存储不同。在该示例中,可以分配该合理持久区块存储平台服务上的适度大小(几千兆字节到几十千兆字节可能就足够了)的卷,并使该卷可由虚拟存储系统控制器计算实例或虚拟驱动器服务器计算实例访问。在一些情况下,EBS本身可以提供足够的可靠性,但是在发生故障的情况下,将需要使持久区块存储可由替代的虚拟存储系统控制器或替代的虚拟驱动器服务器访问。此外,可以由虚拟存储系统写入到相同地理区域内的第二(或甚至第三)可用性区中的第二合理持久区块存储卷来提供附加可靠性。将分级存储器内容镜像到第二或第三合理持久区块存储卷还有助于避免当虚拟驱动器服务器(或虚拟存储系统控制器)发生故障或被替换时的高恢复时间,这是因为其它合理持久区块存储卷可以用于恢复分级存储器内容。
在一些实现中,用于虚拟存储系统中的快速、持久分级存储器的另一解决方案是利用一组虚拟驱动器服务器上的本地实例存储卷来存储分级存储器内容。例如,镜像可以用于将分级存储器内容拷贝到足够的附加虚拟驱动器服务器和本地实例存储卷,以确保数据不太可能由于故障而丢失。此外,云平台可以支持能够为此利用的更快、更低容量的本地实例存储卷,诸如可能基于更高成本的3D XPoint、MRAM或其它非易失性存储器的存储卷等。
继续该示例,由虚拟存储系统逻辑跨虚拟驱动器写入的分级存储器内容的擦除编码可以减少为了实现期望的故障容忍水平而必须传送的总数据。在专利申请16/524,861内提供了附加的示例和讨论,该专利申请出于所有目的以其整体并入本文。此外,通过将分级存储器内容拷贝到位于一个或多个附加可用性区中的虚拟驱动器,可以改善持久性和可用性这两者的鲁棒性。可以组合这些技术以通过将擦除编码的分级存储器内容存储在一个可用性区内、并将数据的附加擦除编码副本存储在另一可用性区中来获得跨可用性区以及附加地跨计算实例的鲁棒性。
此外,在虚拟存储系统的这种实现中,为了减少可用性区之间的传送带宽,一个可用性区或另一可用性区中的虚拟驱动器服务器可以接收要在该可用性区内进行擦除编码的一组更新的所有数据,并且可以(以来自附加网络跳的延时为一定代价)计算和传送在该可用性区内的擦除编码奇偶校验。如果分级内容被擦除编码并拷贝到至少一个其它可用性区,则可以通过确保写入各个区内的擦除编码数据基本上相同(使得各个区包含所有数据和奇偶校验的单独且相同的副本)来稍微提高可恢复性,然后存在可以用于重构分级数据内容的有效副本的潜在幸存且可用区块和虚拟装置的更多组合。例如,如果分级存储器内容跨可用性区1和可用性区2中的虚拟驱动器服务器被写入为相同的N+2个擦除码集,并且如果在一些分级存储器恢复期间,可用性区1中的三个虚拟驱动器服务器不可用、并且可用性区2中的三个虚拟驱动器服务器不可用,则可能这两个可用性区都无法重构所有分级数据内容,但是如果可用虚拟驱动器服务器其中至少之一存储了已经存储在可用性区1中的不可用虚拟驱动器服务器其中之一上的数据或奇偶校验内容,则可以使用该内容代替该不可用内容来重构可用性区1内的所有内容。
在一些实现中,可以在一些云平台中并且对于一些用例起作用的上述技术的变形是简单地将分级存储器存储在计算实例上的易失性存储器中,但是确保被拷贝到足够的其它计算实例(包括可能在其它可用性区中),确保多个同时故障的适当低概率的组合对于丢失所有副本或者在使用擦除编码的情况下丢失所有可恢复副本而言将是必要的。此外,在一个或多个断电的情况下,可以采用写入到本地实例存储(诸如在虚拟驱动器服务器上等)或写入到合理持久区块存储卷的备份模型,从而进一步降低一个或多个附加故障将导致分级存储器内容丢失的可能。
在一些实现中,虚拟存储系统可以通过扩展虚拟驱动器来优化涉及快速存储和大容量存储的传送。例如,如在专利申请16/524,861中更详细地讨论的,可以利用包含用于将写入到存储装置的快速写入部分的内容传送并可能地变换到存储装置的大容量部分(或其它存储装置,或这两者的组合)的要素的存储装置来减少从存储控制器到存储装置的传送次数。如在专利申请16/524,861中所论述,如果存储装置包含适用于频繁重写的分级存储器内容的可寻址快速存储(例如,DRAM、电容器或电池的组合,以及在外部电力的一般损耗的情况下使用来自电容器或电池的剩余电力传送内容所保留的一定量的闪存)和可寻址大容量存储(诸如高容量闪存存储器等),则快速存储可用于各种分级目的。
此外,可以使用基于擦除码的各种技术来写入这样的一组装置(包括仅存储有可寻址快速存储或仅存储有可寻址大容量存储的附加装置),以减少必须从存储控制器传送到这一组装置以记录分级数据的总数据。此外,如果传送到包括快速存储和大容量存储这两者的存储装置的快速存储的内容被存储系统逻辑确定为是随后应该被传送到同一存储装置的大容量存储的数据(可能具有一些变换),则可以指示存储装置在内部自身进行传送,而不需要存储系统控制器再次进行传送。这种类型的技术可用于减少存储系统要素之间的数据传送的总带宽。以这种方式,可以指示存储装置将数据(可能具有变换)从快速存储传送到另一存储装置。然而,在一些示例中,这可能不会减少围绕存储系统的传送的总带宽,但是可以减少存储系统控制器本身上的负载,这可能实现对存储系统性能的整体改进。
在一些实现中,如上所述,可以在虚拟驱动器中实现相同的一组基本技术。换句话说,通过在云平台内实现基于计算实例的虚拟驱动器,与物理存储系统内的典型存储装置上可能所具有的计算功率和计算能力相比,虚拟驱动器可能具有更多的计算功率和更多的计算能力。结果,虚拟驱动器还可以实现用于接收要作为分级存储器内容而存储的内容的能力(如在物理存储装置中的快速存储的情况下),然后可以被指示将该内容(可能具有变换)传送到虚拟驱动器服务器的本地实例存储中的长期大容量存储以及传送到对象存储中的对象。以这种方式,在一些情况下,虚拟驱动器可以进一步包括附加压缩以及甚至增加的去重复水平。在一些示例中,在基于段的虚拟存储系统中,写入到分级存储器的内容可以是整个段,或可以是段或应该通过某种变换被卷入段中的数据的分段。
在一些实现中,虚拟存储系统可以被设计为实现不同的技术以从分级存储器内容的丢失中恢复。例如,无论使用什么技术来存储分级存储器内容,由许多云提供商提供的对象存储在面对更宽范围的持续故障时具有更大的持久性。由于持久性的差异,查看可以用于如在合理可能地不使用任何分级存储器内容的情况下从对象存储中恢复虚拟存储系统数据集的尽可能多的一致内容的技术是有意义的。
此外,物理存储系统可能遇到类似的问题,其中保护其分级存储器的努力失败,但是存储系统的大容量内容是完整的,或者可使用擦除码或其它恢复算法来恢复。因此,这是值得解决的一般问题。为了理解这些考虑,我们可以从存储中的一般原理开始,该原理是:如果两个更新是并发的,这意味着更新操作在发出各个更新请求时与各个更新请求被指示为完成时之间的时间上至少部分地重叠,无论更新是来自用于内部操作的存储系统逻辑还是来自客户端主机更新操作还是组合,则这两个更新可以以任何顺序完成,或者如果在指示完成之前存在故障,则各个更新可以以任何组合发生或不发生。
然而,继续该示例,如果任意两个更新不是并发的(意味着第一更新在请求第二更新之前被指示为完成),则结果必须是第一更新被持久保持,或者这两者都被持久保持,但是结果一定不是第二更新被持久保持而第一更新被丢失。满足该特性的存储系统可以被称为“崩溃一致”。快照也可以是崩溃一致的,作为一种类型的并发操作,使得如果快照本身成功完成,则在接收到快照请求之前完成的更新将被包括在快照中,并且在快照请求被用信号通知为完成之后接收到的任何更新将不被包括在快照中(尽管该更新将在应用快照的数据集的快照后内容中)。
此外,如果存在彼此不重叠但在时间上与快照操作本身重叠的两个更新操作,并且如果第二更新使得进入快照,则第一更新也必须如此,但快照在这种情况下根本不需要包括第一更新。在一些示例中,这可以被简化为快照发生在接收到快照请求的时间与该请求被用信号通知为已经完成的时间之间的某个单个时刻(“快照时间点”)的想法。此外,包括在该时间之前用信号通知为完成的操作,排除在该时间之后接收到的操作,可以单独地包括或不包括与该时间并发的操作,并且这隐含地保留了先前所建议的排序保证。
继续该示例,如果我们将“快照”类型崩溃一致性的概念应用于对象存储(用于云基础设施)或大容量存储(用于常规物理存储系统)的持久内容,则在服务中断或系统故障之后分级存储器丢失并且不能用于恢复的情况下,我们想要得到的是来自存储在对象存储或大容量存储中的内容的崩溃一致数据集,这相当于在过去的某个“快照时间点”已经创建了快照,其中包括了在过去的快照时间点之前完成的所有更新,并且不包括在过去的快照时间点之后开始的所有更新,但是可以单独地包括或不包括在过去的快照时间点彼此并发的任何更新。
在一些实现中,分级存储器的目的是确保对大容量存储的并发更新不必遵守崩溃一致性原则,因为分级存储器可以用于在服务中断之后的恢复中重新应用分级的更新。在该示例中,这种灵活性允许跨大量装置的大容量存储的更新的大得多的并发性。在虚拟驱动器的情况下,这允许各个虚拟驱动器处理对本地实例存储的大量并发更新以及用于将段存储为对象的大量并发PUT操作。在物理存储系统的情况下,这允许对固态驱动器或盘驱动器进行大队列操作,从而确保跨存储装置互连的最大带宽。在一些情况下,这种并发量可能最终受到可以保存在分级存储器中的数据量的限制,因为分级存储器中的条目不能被释放以允许记录更多操作,直到与这些条目的有序集合相关联的后端大容量存储已经完成为止。
在一些实现中,对于客户端主机和存储系统操作,开始将内容存储在分级存储器中的操作与完成该操作(确保分级存储器是适当持久的,并且向虚拟存储系统逻辑内的适当层用信号通知分级存储器内容已经变得持久)之间的时间间隔是在接收虚拟存储系统请求与用信号通知该请求已经完成之间的时间间隔内(就完成和发起请求之间的顺序而言、以及就什么可以被认为是并发的而言)。
此外,在一些情况下,在操作的内容已经存储在分级存储器中之后针对该操作所发生的后端存储操作可能与该顺序没有任何特定关系。因此,在一些情况下,考虑到(对于纯本地存储系统)用于写出到本地大容量存储装置的操作或者后备存储的所有这些并发后端操作,该并发后端操作包括:将大容量内容存储到虚拟驱动器的本地实例存储卷中,计算、传送并存储虚拟驱动器之间的擦除码或进行实现所需的任何故障保护操作,将虚拟存储系统或虚拟驱动器的内容存储到对象存储后备中,所有这些操作可以以各种顺序完成,通常很少或不关心它们的原始请求和完成排序以及并发性。此外,甚至可能的是,存储在分级存储器中的在先前操作完成之后的操作可以更快地完成到后端存储,并且在先前完成的操作已经被写入到任何后端存储之前从分级存储器中移除。
继续该示例,作为所有这些的结果,后备存储中的持久内容可能是相当混乱的,该内容具有来自在故障之前最近或稍微最近接收到并记录在分级存储器中的正在进行的操作以及数据和元数据更新的混合的已完成、部分完成和从未被记录的操作的相对随机的混合。然后,回滚到作为过去的崩溃一致快照等效时间点的“恢复点”可以包括从该恢复点确定并丢弃部分存储的数据,以及从该恢复点确定并丢弃在逻辑上可能晚于未存储或部分存储并由此丢弃的数据的数据,并从该恢复点丢弃该数据。分级存储器条目还可能包括用于将两个或更多个后备存储更新链接在一起以使得应已存储所有这样的更新或应丢弃所有经链接条目(连同丢弃在与经链接条目相关联的操作完成之后接收到的任何更新)的信息。
进一步继续该示例,在确定恢复点之后,所得到的数据集可以被转换为追溯快照,或者可以用于从该数据集引导虚拟存储系统,或者不应被包括在恢复点中的数据实际上可以从所有各种后端存储副本中丢弃(诸如通过从虚拟驱动器、从大容量存储或从后备对象存储删除内容等),尽管可证明丢弃所有这样的副本可能是困难的。然而,在一些情况下,形成追溯快照可能是概念上最简单的解决方案。
在一些实现中,虚拟存储系统还可以确定在恢复操作期间要分析后端对象存储中的哪些数据。例如,在没有分级存储器内容的情况下恢复后端存储内容时的问题是仅确定要筛选什么内容以确定是否应该从恢复点包括或丢弃。在不同示例中,存在与专利申请16/524,861中所论述的该问题相关的多种技术,包括通过写入可能在即将到来的活动中使用的标识符列表或记录标识符范围(对于可排序或包含序列编号的标识符)来记录用于段的或段内的潜在标识符。在一些示例中,这可以特别好地应用于将内容存储在对象存储中。
继续该示例,对象的名称可以包括段标识符,并且如果在正常操作期间,虚拟存储系统逻辑可以确定可能在不久的将来使用的一组潜在的段标识符(作为一组标识符、或作为标识符的相关部分、或作为用作段标识符的一部分的数字范围),则这些潜在的标识符可以记录在与对象存储具有相同的持久性的某处。例如,这些段标识符可以被写为特定对象,或者数据可以被包括在具有标签(该标签可以通过在对象存储中搜索包括该标签的对象来找到)的常规段的子集中,或者潜在的对象标识符信息可以被记录在高度持久数据库(例如,AWS的DynamoDB)中或跨若干可用性区和地理区域的数据库中。此外,数据库的使用是对可以从数字范围构建的标识符特别有效的解决方案。在该示例中,这样的数字范围甚至可以是单个数字:包括等于或高于某个数字的数字的对象标识符可以是变化的(in flux),包括低于该数字的数字的对象标识符不是变化的。在一些情况下,然后可以向对象存储查询名称包括等于或高于该数字的名称分量的对象,并且可以分析这些对象的内容以供从恢复点包括或排除。例如,如果对象被命名为datasetid–segmentid并且段标识符仅仅是递增数字,则搜索与具有至少等于“变化的”数字的段标识符的数据集标识符相关联的对象将返回应当检查的一组对象。在其它示例中,可以利用类似的搜索来应对更复杂的范围或更复杂的段标识符。
在一些实现中,在一组虚拟存储系统控制器上并发操作或者以不通过单个计算实例汇集段创建和定义的其它方式划分虚拟存储系统逻辑的虚拟存储系统的情况下可能更适合的上述方法的变形是创建一组命名空间,各个命名空间具有其自己的段标识符子集,使得关于在定义和处理段的处理和计算实例之间形成段标识符方面不需要协调。例如,可以存在可以用于形成段标识符的64个命名空间,各个命名空间具有其自己的“变化的”数字范围。在这种情况下,各个这样的命名空间可能需要将数字范围信息存储在数据库中。然后,在该示例中,为了获得用于存储“变化的”段的所有对象的列表,恢复任务可以从数据库(或其它源)获得数字范围和命名空间,然后可以搜索具有诸如datasetid–namespaceid–<in-flux-range>等的名称的对象。
继续该示例,利用这种划分的命名空间,必须注意确保在一个段标识符命名空间内管理的变化的标识符的范围不会无意地将段标识符的范围从变化的列表中取出,直到与具有这些段标识符的段可能具有时间序列关系的所有段已被成功且完全地写入到所有后备存储目标为止。例如,这可以跨用于管理不同命名空间的计算实例来应用。因此,在一些示例中,用于管理特定命名空间的计算实例可能需要广播或以其它方式协调关于它们正在完成后备存储写入到什么程度的信息。此外,在一些示例中,该技术可以用于存储在对象存储中的内容的连续数据保护实现。具体地,在这种连续数据保护实现中,检查点或轻量级检查点可以与变化的标识符边界相关联,其中比最旧的已知尚未完成的这种检查点更旧的任何这种标识符表示可以转换为快照或转换为克隆的一致的“崩溃可恢复”数据集。
此外,在一些情况下,这种协调可以通过用于管理段标识符命名空间的各个计算实例将同步点消息(在这种情况下,计算实例作为同步点消息发起者操作)发送到用于管理段标识符命名空间的所有其它计算实例(这里作为同步点消息目标操作)来完成,该同步点消息包括已经完成写入到所有后备存储目标的段标识符的范围信息。在该示例中,作为同步点消息目标操作的各个这样的计算实例响应于接收到同步点消息,来确定其何时完成写入与接收到特定同步点消息的时刻之前或与其并发发生的计算实例的更新相关联的所有段(其中相对于存储系统的同步行为(诸如相对于操作进入分级存储器的时间等)是之前或并发发生的)。
此外,在该示例中,当所有这样的之前和并发发生的更新已完全写入到所有后备存储目标时,可以将同步响应消息发送到同步点的发送方计算实例,这指示目标计算实例已完成所有这样的之前和并发发生的更新。在这种情况下,当同步点消息发起者计算实例已经从所有目标接收到匹配的同步响应消息时,则可以安全地调整其变化的段标识符范围,以排除在其发送该同步点消息之前已经完全写入的所有段标识符。此外,如果用于管理段标识符命名空间的计算实例发生故障,则可能需要恢复动作以继续。
继续该示例,在段存储在本地实例存储卷中或本地存储系统上的存储装置中的常规后备存储中的情况下,用于识别要扫描的段的一些其它方法可能是有用的。然而,在这些情况下,可能更实际的是,在存储本身中保持用于列出段的潜在偏移的表以在从分级存储器故障恢复时进行扫描。作为示例,代替段标识符的范围,可以保持卷地址的列表,其中在基于闪存存储器的后备存储的情况下,可以使用擦除区块的列表(或可以映射到一组擦除区块的卷地址的列表)。同步消息和同步消息响应的类似使用可以用于确定由特定计算实例管理或代表特定计算实例管理的变化的段何时可以以某种方式标记为不再是变化的。
以这种方式,使用这些各种技术,虚拟存储系统可以确定在分级存储器故障之后恢复到恢复点时应该检查哪些段。然而,这些技术不是穷尽性的,并且可以存在各种替代机制。此外,当这些技术在虚拟存储系统中实现时,这些技术基本上作为用于从后备对象存储恢复数据的优化来操作,其中在一些情况下,替代方案是读取和分析后备存储中的所有段。
在一些实现中,虚拟存储系统可以实现用于计算恢复点的一种或多种技术。例如,可以存在用于根据潜在变化的段来实际计算恢复点的各种各样的技术。这些技术通常依赖于将数据和元数据组织成段的方式以及记录在建立恢复点时有用的元数据的方式。
继续该示例,并且作为初始事项,我们可以在定义虚拟存储系统逻辑或物理存储系统逻辑内的活动的滑动窗口时定义通过分级存储器发生的活动,该活动可以被划分为逻辑序列更新和逻辑并发更新。在一些情况下,在任何给定时间点(活动的滑动窗口的任何切片),可能存在完成的更新、尚未开始的更新和并发更新。
此外,在该示例中,还可以存在多段事务,但是这可以通过假设多段事务将跟随有指示提交多段事务的元数据来简化,并且如果我们在恢复点没有找到这一点,则可以认为多段事务被中止。在该示例中,计算恢复点然后是用于确定存储系统逻辑的原始滑动窗口中的如下点的处理,对于该点,发现存在并包括该点之前完成的所有更新,并且排除该点之后开始的任何更新,并且在该点中可以安全地包括或丢弃与该点并发的更新。
继续该示例,用于完成恢复点的计算的一种技术是在将段写入到后备存储目标时对所有非并发更新进行排序。在该示例中,使用此模型,如果段在后备存储中,则可以包括该段,并且如果段不在后备存储中,则可以排除该段。此外,这些后备存储段写入不需要延迟通过分级存储器完成的存储系统逻辑的前端活动,但是该模型有时可能表现不太好。在一些情况下,如果在写入(或PUT)操作中存在低并发性,则对存储的写入(特别是在用于创建对象存储中的对象的PUT操作中)的吞吐量可能受到严重限制。
在一些实现中,虚拟存储系统可以将后端更新的批次定义为事务序列。例如,用于完成恢复点的计算的更复杂但也直接的技术是将批量事务发出到后备存储,以应对已经通过分级存储器进入到写入后备存储的逻辑的更新集合。在该模型中,将一组更新(例如,1000个更新的组,尽管定义分组的方法对于一般算法而言无关紧要)写入到后备存储,作为与事务标识符相关联或与段标识符的“待决”范围相关联的段集合。
此外,在该示例中,可以通过在稍后的段中包括“提交”记录,或者可能通过将“提交”条目写入到高度持久数据库中来“提交”段集合。在一些情况下,为了消除在写入要提交的下一批的更多段之前必须等待提交的写入的任何性能损耗,可以在等待提交完成期间开始写入该下一批,其中,只要在较早提交之前不写入稍后的提交,这就是安全的。如果直到前一批完成之前没有写入后一批更新,则后一批的存在本身就是前一批实际上完成的指示,并且实际上不需要其它指示。这可能由于崩溃恢复而变得复杂,崩溃恢复可以通过将特定类型的批次标记为指示用于修复任何崩溃相关的一致性问题的更新来修复,其中正常操作在这样的恢复批次之后重新开始。
继续该示例,如果存在对数据集进行并发操作的多个虚拟存储系统控制器,将并发内容递送到一组存储装置或虚拟驱动器,则可能需要一些更复杂的协调来建立一致的滑动窗口点。用于这样做的一个示例技术包括通过一个计算实例可以作为分布式提交边界点协调器来操作的方案。在该方案中,提交边界点协调器将延迟分级存储器写入或者将延迟用信号通知用于等待分级存储器写入完成的操作的完成,以强制有效地延长操作在代表客户端主机请求所进行的操作的上下文内或在由存储系统逻辑进行的许多其它内部操作的上下文内有效地并发的时间段。
此外,提交边界点协调器可以将协调提交边界点消息发送到可以写入到分级存储器的其它计算实例。在该示例中,在接收到协调提交边界点消息时,计算实例本身将延迟分级存储器写入,或者将延迟用信号通知等待分级存储器写入完成的操作的完成,从而导致相同的强制延迟,这再次有效地延长了操作有效地并发的时间段,但是这次代表该其它计算实例。
继续该示例,响应于延迟在适当位置,该其它计算实例可以通过向提交边界点协调器发送回提交边界点已是被协调消息的响应来对协调提交边界点消息做出响应。此外,响应于提交边界点协调器接收到来自其它计算实例的所有预期响应,提交边界点协调器建立新的提交边界点,该新的提交边界点然后将与后端更新相关联,该后端更新本身与在此之后到达分级存储器的操作相关联,并且将与在先前提交边界点和该新提交边界点之间到达分级存储器的操作相关联的所有后端更新视为与先前提交点相关联,并且将重新开始进入或离开分级存储器的操作的处理。
此外,在该示例中,提交边界点协调器可以将建立提交边界点消息发送到与其发送协调提交边界点消息的相同的一组其它计算实例。响应于这些其它计算实例其中之一接收到建立提交边界点消息,它还可以建立相同的提交边界点,其中相同的新提交边界点将再次与后端更新相关联,所述后端更新本身与在此之后到达分级存储器的操作相关联,并且将再次将与在先前提交边界点和该新提交边界点之间到达分级存储器的操作相关联的所有后端更新视为与该相同的先前提交点相关联,并且将再次重新开始进入或离开分级存储器的操作的处理。
继续该示例,应对将被建立在两个提交边界点之间的内容写入后备存储的各个计算实例然后将确保直到特定提交边界点为止的所有后备存储更新(以及所有先前提交边界点的所有更新)在写入段或数据库条目(或一些其它持久指示)以指示由该计算实例管理的内容子集已经提交了直到该特定提交边界点为止的后端更新的一部分之前完成。
更进一步继续该示例,可以在多个虚拟存储系统之间使用用于协调边界点的该相同模型。在一些示例中,该模型也可以在多个物理存储系统之间使用,以及在虚拟存储系统和物理存储系统的组合之间使用。可以通过扩展为了在虚拟存储系统控制器之间进行协调而发送和接收的消息,使得该消息可以在与多个虚拟存储系统和/或物理存储系统相关联的某一组虚拟存储系统控制器和/或物理存储系统控制器之间发送和接收,来执行这种协调。
在该示例中,可能存在由等待消息交换的处理延迟引起的短延时停顿,但是如果协调提交边界点的计算实例具有低延时网络互连,则这些延迟可以相当短。然而,如果这些协调的提交边界点每秒或每几秒仅发生几次,则这些停顿将结束于增加非常少的可检测开销。
以该示例结束,利用这样的提交模型,可以不考虑提交之间的滑动窗口点来形成恢复点。此外,被发现已被成功写入到后端存储或用于记录提交点的数据库中的提交点可以是恢复点的候选,并且通常所选择的恢复点将来自最近的此类提交点。在该示例中,并且在协调后的提交边界点涉及分布式存储系统的情况下,如果所有相关计算实例写入其与提交点之间的操作相关联的内容的子集已经完成的持久指示,则提交点通常可被认为是完成的。此外,在一些示例中,这样的潜在恢复序列可以用作记录的连续数据保护恢复点。具体地,在一些情况下,基于存储在对象存储中的内容是潜在恢复点的可计算的时间顺序序列,考虑到恢复点所依赖的任何内容都未被删除,所记录的连续数据保护恢复点可以用于定位和恢复存在一致恢复点的任何先前时间点。此外,该实施例可以扩展到制作这些先前时间点其中之一的快照或克隆,其中该快照或克隆由对象存储中的数据形成,而不需要将内容存储在例如任何虚拟驱动器的本地实例存储中。
在一些实现中,虚拟存储系统可以实现交织的事务标识符作为段内所记录的操作的一部分。例如,不同类型的方案可以取决于确定在恢复期间被确定为已经变化的但实际上被确定为已经被写入的一组段内可以找到的操作的顺序。
继续该实现,在诸如该方案等的方案中,实际和潜在标识符可以与在段中找到的数据相关联,其中标识符可归类为允许、不允许和未来提交标识符。在专利申请16/524,861内描述的并且适用于所描述的虚拟存储系统内的这种方案主要旨在用于进行恢复动作的未完成和重新开始的恢复动作的序列中,但是在该序列中,在不同的重新开始时,可能存在各种擦除编码集合中所涉及的一组不同的存储装置。此外,如果虚拟驱动器服务器变得暂时不可用然后再次变得可用,但是在一组中止和重新开始的恢复期间一组虚拟驱动器稍微不同,则在基于虚拟驱动器的虚拟存储系统中可能出现相同的问题。然而,在一些情况下,在一组不一致的可用存储装置(或在这种情况下,虚拟驱动器)可能不被认为是重要问题的情况下,可以使用该方案的更简单版本。
此外,在该示例中,由于记录的标识符中的间隙如何可以用于识别可能尚未记录的中间更新,因此该方案是有用的。在一些情况下,类似的方案可以基于进入或离开分级存储器的排序来定义用于更新的标识符的有序列表。此外,写入到后备存储的各个段然后可以包括来自标识符的该有序列表的各个段的标识符。以这种方式,当在恢复期间试图找到合适的恢复点时,可以在搜索间隙时针对这些标识符来扫描所有被写入的变化的段,其中任何间隙可以指示尚未被写入并且已经被排序在已经被写入的其它段之前的段。此外,然后可以从被认为是恢复点的一部分的一组段中丢弃包括这些标识符中的在最旧的这样的间隙之后的一个标识符的所有段,并且恢复点可以被认为包括来自紧挨在该最旧的这样的间隙之前的段的所有内容。
以该示例结束,用于确定允许、不允许和未来提交标识符的机制可以扩展该模型以应对在这种中断之前未完全地建立恢复点(并且持久地写入建立该恢复点所需的所有信息)的情况,该中断强制处理被重新启动,但是在一组不同的存储装置或虚拟驱动器上。然而,在这种情况下,段可以由其进入或离开分级存储器的顺序来定义,而不是由其被分级时形成段的逻辑来定义。
在一些实现中,虚拟存储系统可以被设计为在云平台和云计算环境内实现多个不同类型的计算组件。
例如,虚拟存储系统逻辑可以在云平台提供以运行软件组件的处理器上运行,或者直接作为在虚拟机中运行的计算实例或作为容器运行,或者在或多或少作为(尽管通过底层云平台基础设施管理的)传统计算机专用服务器硬件引导的裸机硬件上运行,或者潜在地作为运行事件动态功能(其在通常以受限语言(例如,Python或Java)动态分配的服务器上的一些沙箱(sandboxed)运行时环境中运行)。此外,在该示例中,这些程序、虚拟机、容器、裸机服务器和/或运行事件动态功能连接到虚拟定义的网络(其具有使被配置为彼此对话的组件分开的视图)(或者在一些情况下连接到更广泛的互联网,或者在其它情况下连接到在云平台的基础设施中某处运行的客户端,该客户端被约定为能够使用所通告的服务)。
继续该示例,这些处理器中的一些处理器连接到本地存储。此外,一些计算组件可以连接到所通告的存储服务和数据库(其中一些可以由多个计算组件共享)。
此外,云平台的益处可以是其提供了用于启动和关闭其各种类型的计算组件、并将其动态地附接到其巨大的高带宽物理网络内的虚拟网络的非常灵活的手段。在一些示例中,如果服务的负载突然增加,则可以开始附加计算实例以提供更多的网络端点来接收并响应该负载,并提供更多的计算能力来应对对该负载的处理。在其它示例中,如果用于触发对动态功能的调用的事件的数量增加,则可以立即增加可用于运行这些动态功能的计算基础设施。此外,在一些情况下,可以随着负载减小而移除计算组件,因为不再需要这些计算组件应对负载。
继续各种计算组件的该示例,不具有本地直接附接存储(即,不具有本地实例存储)的计算组件可以被启动和停止或移动到更大和更小的服务器、或者具有更多或更少处理器内核或者更多或更少存储器的计算实例,以提供可用吞吐量或能力的立即提高或者计费成本的立即降低。
此外,具有本地直接附接存储的计算组件可能遇到下沉成本问题。换句话说,存储数据需要时间,并且拷贝数据需要时间。此外,跨一组计算组件可用的读取带宽(其中从计算组件自己的本地直接附接存储来读取)受到已经写入的数据跨该本地直接附接存储的扩展以及当前相关联的计算组件可以读取和处理已经存储的内容的速度的限制。因此,在一些情况下,无法通过添加具有自己的本地直接附接存储的新计算组件来快速改进所存储数据的读取性能。
继续该示例,在可使用附加的新计算组件及其本地存储来改善读取带宽之前,可以首先将数据移动到这些计算组件并且存储在本地直接附接存储上。此外,如果保持在特定计算组件的本地直接附接存储中的数据在该数据的唯一位置,则不能快速降低与用于提供一定量的读取带宽及其本地连接计算带宽的硬件相关联的成本(或者如果数据也保持在例如对象存储中,则直接从对象存储读取相对于从计算组件的本地直接附接存储读取是延时或成本过高的)。即便如此,在一些示例中,必须首先迁移数据。然而,在一些情况下,这一点的替代方案是:如果多个计算组件在本地存储数据的副本,则可立即减少副本的数量,从而产生立即成本降低(这可适用于许多副本在经济上可行的相对小的数据集,诸如到大得多的数据集的索引等)。
在一些实现中,虚拟存储系统可以响应于应用要求和需求来实现扩大和缩小虚拟存储系统。
例如,如果虚拟存储系统可以在若干虚拟存储系统控制器上并发运行,则该虚拟存储系统可用的计算可以相当容易和快速地扩大和缩小。在一些情况下,可能存在缓存在一个存储系统或另一存储系统上的存储器中的数据,但是这通常可以合理快速地传送或重建。此外,不同的虚拟存储系统实现可以或多或少地高效和有效地应对运行虚拟存储系统逻辑的更多或更少的虚拟存储系统控制器,但是(诸如通过使用分片来在虚拟存储系统控制器之间划分工作,或者通过使用锁/虚拟区域分片来协调和写入基于段的模型中的活动、但是共享索引以提供对先前几秒以上写入的数据的并发相对无锁访问以及最近写入的段与读取最新写入的数据的请求之间的一些精细协调等)存在放大和缩小得非常好的合理实现。
继续该示例,考虑到在消耗来自虚拟存储系统的存储的一组客户端主机上运行的应用,该应用可以请求来自虚拟存储系统控制器的一定水平的性能,并且虚拟存储系统逻辑可以监视虚拟存储系统控制器的网络接口和CPU上的负载,并且可以基于客户端主机的预算及其负载的某种组合来快速地上下调整计算能力和网络接口。
此外,在该示例中,可以对虚拟驱动器服务器在其与对象存储的连接中进行相同类型的缩放,该对象存储服务于针对应用的特定虚拟存储系统数据集。在一些情况下,如果虚拟驱动器服务器也服务于分级存储器,则可以通过添加、移除和替换服务于虚拟存储系统数据集的分级存储器的虚拟驱动器来合理快速地扩大和缩小该分级存储器。此外,分级存储器中的数据通常是短暂的(通常仅需要大约一秒),并且通常仅是写入(除了在非常罕见的恢复情况之外)。正因如此,可以添加虚拟驱动器以立即改善分级存储器带宽,并且如果当前使用的虚拟驱动器多于所需的虚拟驱动器,则可以在一秒或两秒内移除虚拟驱动器(除非可能存在故障并且需要它们进行恢复)。在该示例中,为了应对暂时写入突发,特别是如果还可以通过快速添加更多的虚拟存储系统控制器计算实例来添加更多的前端RAM,如果针对数据集计费的客户愿意为所有这些附加资源付费,则可以从越来越多的虚拟驱动器服务器上的越来越多的虚拟驱动器附接越来越多的分级存储器。
继续该实现,并且如前所建议的,在基于段的模型中,或者在通常将数据写入新位置的任何模型中,通常在容量可以重新用于新写入之前需要后台垃圾收集步骤,虚拟存储系统可以通过分配存储在附加虚拟驱动器服务器上的附加虚拟驱动器来快速响应于写入负载的增加,从而为附加本地实例存储提供所有其附加增加的总带宽。此外,如果客户的预算允许该增加,则可以快速适应(诸如由将大量数据摄取到数据集中等所引起的)大的写入负载。以这种方式,虚拟存储系统服务单纯地必须确定负载参数、服务水平协议和该资源增加的预算允许。
此外,在该示例中,通过在新的虚拟驱动器服务器上添加新的虚拟驱动器并在虚拟驱动器之间重新平衡数据、或者用性能更好的虚拟驱动器服务器或本地实例储存来逐渐替换性能较差的虚拟驱动器服务器或本地实例储存,可以随着时间至少逐渐地适应读取负载的增加或虚拟驱动器的预算增加或其组合。在一些情况下,在基于段的模型中,作为示例,这可能需要更新索引以指示哪些虚拟驱动器存储段。可替代地,在其它情况下,垃圾收集服务可能逐渐写入包含剩余有效数据的新段,并且对因此不再需要的较旧段解除分配。此外,在段本身被移动的情况下,如果这些段也被存储在对象存储中的对象内,则可以在不改变对象存储中的对象的情况下,在虚拟驱动器之间移动段(或者将段重新分片成跨一组不同驱动器的擦除编码条带)。在一些情况下,进行这种迁移的工作向虚拟驱动器服务器以及向虚拟驱动器服务器之间的网络(或者如果迁移流过虚拟存储系统控制器,则向虚拟存储系统控制器)添加负载,因此虚拟存储系统逻辑可能必须平衡这些传送的开销、速度和负载以及可用读取带宽的限制,直到足够的数据被传送以使足够的读取带宽可用。
此外,在一些情况下,适应于减小的读取负载或减小的预算或这两者的某种组合可以反向操作,并且通常也可能不会立即发生。例如,为了减少存储用于数据集的虚拟驱动器的虚拟驱动器服务器的数量,或者为了用使用另一类型的本地实例存储的另一虚拟驱动器服务器和虚拟驱动器来替换使用一种类型的本地实例存储的虚拟驱动器服务器和虚拟驱动器,可能必须将数据(例如,段)迁移到其它虚拟驱动器服务器,或者可能必须跨一组不同的段将擦除编码条带化段重写到擦除编码条带中,或者可以触发逐渐垃圾收集处理以加速存储在被标记为被疏散的虚拟驱动器上的段的垃圾收集,以减少与数据集相关联的虚拟驱动器的数量。在该示例中,随着迁移和疏散的这种组合在进行中,可以释放虚拟驱动器,
并且可以逐渐降低与虚拟驱动器相关联的成本。
在一些实现中,虚拟存储系统实现可以通过虚拟存储系统服务来实现缩放方面,而不是在单独的虚拟存储系统内实现所有缩放方面。
例如,重新缩放虚拟驱动器层以应对单独的虚拟存储系统或单独的虚拟存储系统数据集的简单替代方案是创建大规模虚拟驱动器层服务,以服务于代表虚拟存储系统服务的若干负载生成或支付客户端的若干虚拟存储系统或虚拟存储系统数据集。
继续该示例,在该模型中,虚拟驱动器服务(诸如由虚拟存储系统服务的提供商管理的虚拟驱动器服务等)可以获得(诸如通过购买等)具有本地实例存储的非常大量的计算实例。此外,可以将大量虚拟驱动器分配给各个虚拟存储系统,其中虚拟驱动器服务器服务于若干(如果不是许多)虚拟存储系统或虚拟存储系统数据集。在该示例中,这些虚拟驱动器可以如虚拟驱动器服务内的租户那样操作,由其愿意为服务支付多少、其读取带宽、其写入带宽、其写入突发大小、数据摄取和数据分析模式或这些以及其它输入和参数的组合来确定其在服务内的总带宽以及I/O和虚拟驱动器与代表特定客户端和工作负载的虚拟存储系统和虚拟存储系统数据集之间的网络调度优先级的聚合限制。
此外,该模型可以很好地与固态存储一起工作,因为缺少机械延迟极大地减少了单独的负载对彼此的影响。本质上,在一些情况下,可以以与联网类似的方式对固态存储的性能进行建模。此外,只要对于所有请求者存在足够的带宽,就不存在问题,并且如果对于具有与其服务水平协议相关联的优先级和带宽保证的所有请求者存在足够的带宽,则较低优先级的请求者可以使用剩余的可用带宽,而对具有优先级和保证的请求者几乎没有影响。在一些情况下,如果虚拟驱动器还应对去往和来自代表虚拟存储系统的对象存储的PUT和GET操作,则还可能必须考虑网络带宽,这也是相对容易的,因为这是已经可以支持各种优先级和带宽保证的标准联网。
继续该示例,在一些情况下,只要数据(诸如一次写入然后垃圾收集稍后段等)均匀地分散在具有与虚拟存储系统或虚拟存储系统数据集相关联的大量虚拟驱动器的大量虚拟驱动器服务器之间,则由虚拟存储系统、虚拟存储系统数据集所定义的工作负载或者虚拟存储系统的定义工作负载的带宽保证可以以合适的方式在虚拟驱动器之间划分,使得各个虚拟驱动器保证其可用带宽的一部分用于读取和写入以及用于网络流量。以这种方式,利用大量的虚拟驱动器服务器,对于任何特定工作负载,虚拟驱动器服务器上的单个虚拟驱动器所需的保证可以是合理适度的。
此外,在该模型中,可以由虚拟存储系统服务提供商来获得(诸如通过购买等)足够的计算实例和本地实例存储容量以满足其当前客户的需要,从而可能利用不同客户何时可能需要最高性能来降低其成本的差异。在一些情况下,虚拟存储系统服务提供商然后可以随着时间根据所有客户的要求增加而逐渐增加虚拟驱动器服务器的数量及其聚合容量和联网带宽。这可能需要在虚拟驱动器服务器之间逐渐移动虚拟驱动器以重新平衡负载(这可以作为由虚拟驱动器服务管理层应对的相对透明的迁移来完成),或者可能需要将更多的虚拟驱动器添加到虚拟存储系统或虚拟存储系统数据集并期望虚拟存储系统跨附加的虚拟驱动器逐渐重新平衡。
总结该实现示例,虚拟存储系统服务提供商还可以通过向虚拟存储系统或虚拟存储系统数据集添加虚拟驱动器和从虚拟存储系统或虚拟存储系统数据集中移除虚拟驱动器,或者通过从虚拟驱动器服务管理层迁移虚拟驱动器,来适应其客户群上的聚合负载的预期增加和减少。以这种方式,虚拟存储系统服务可以例如准备来自各种客户的季度账目负载的结束,并且然后可以在季度账目负载的结束完成之后降低成本。
为了进一步说明,图17阐述了例示虚拟存储系统1700内的数据流的示例方法的流程图。图17所描绘的示例方法可以在上面参考图4~16所描述的虚拟存储系统中的任一个上实现。换句话说,虚拟存储系统1700可以至少由虚拟存储系统1200、1300、1400、1500、1502、1504或1600实现。
如图17所示,示例方法包括在由虚拟存储系统的第一存储层提供的存储内检测(1702)数据集内的数据丢失,其中数据集的恢复数据存储在第二存储层中;确定(1704)所述数据集的恢复点,所述数据集的一致版本可从存储在所述第二存储层中的所述恢复数据恢复直到所述恢复点为止;以及在由虚拟存储系统1700的第一存储层提供的存储内恢复(1706)数据集的一致版本。
可以如上面参考图4~16所述来执行在由虚拟存储系统1700的第一存储层提供的存储内检测(1702)数据集内的数据丢失,其中数据集的恢复数据存储在第二存储层中,其中详细描述了用于响应数据丢失的不同技术,并且其中由云服务提供商提供的存储器可以包括虚拟存储系统1700内的存储器、来自基于云的对象存储的存储器或来自另一虚拟存储系统的存储器。此外,在一些示例中,由虚拟驱动器提供的分级存储器可以被认为是第一存储层,并且由一个或多个虚拟驱动器服务器提供的虚拟驱动器可以被认为是第二存储层。然而,在其它示例中,由一个或多个虚拟驱动器服务器提供的虚拟驱动器可以被认为是第一存储层,并且由云服务提供商提供的对象存储可以被认为是第二存储层。此外,在其它示例中,第二存储层可以由不同类型的后端存储来提供,诸如由上述不同类的存储提供的任何存储等,包括存档存储类和/或深度存档存储类等。
可以如上面参考图12~16和虚拟存储系统1200~1600所述来执行确定(1704)数据集的恢复点,所述数据集的一致版本可从存储在第二存储层中的恢复数据恢复直到该恢复点为止,其中详细讨论了用于恢复数据的各种技术,包括镜像、擦除码等。
可以如上面参考图4~16所述来执行在由虚拟存储系统的第一存储层提供的存储内恢复(1706)数据集的一致版本,其中使用多种不同的技术来恢复数据。
在共同待决专利申请16/524,861中描述了分级存储器内的数据恢复的附加示例,所述专利申请出于所有目的以其全文并入本文中。具体地,在共同未决专利申请16/524,861中所描述的所有迁移技术描述了将数据存储在分级存储器(也称为第一存储层)内,并且可选地在基于迁移事件将分级存储器数据迁移到更持久的存储器或基于云的对象存储之前处理、修改或优化分级存储器内的数据。
读者将理解,尽管上述的实施例涉及基于云的存储系统的区块存储的已变为不能用的部分中所存储的数据通过从基于云的存储系统的对象存储层中检索该数据而基本上被带回基于云的存储系统的区块存储层中的实施例,但其它实施例也在本发明的范围内。例如,由于数据可以使用诸如RAID等的数据冗余技术而跨多个云计算实例的本地存储分布,因此在一些实施例中,丢失的数据可以通过RAID重建而被带回基于云的存储系统的区块存储层中。
读者将进一步理解,尽管前面的段落描述了基于云的存储系统及其操作,但上述的基于云的存储系统可用于提供区块存储即服务,这是因为基于云的存储系统可以加速旋转并用于以根据请求、按需的方式提供区块服务。在这样的示例中,在云计算环境中提供区块存储即服务可以包括:从用户接收针对区块存储服务的请求;创建供用户使用的卷;接收针对该卷的I/O操作;并将I/O操作转发到与云计算环境所用的硬件资源位于一起的存储系统。
示例实施例主要是在全功能计算机系统的上下文中描述的。然而,本领域技术读者将认识到,本发明也可以体现在计算机程序产品中,该计算机程序产品被设置在计算机可读存储介质上以与任何合适的数据处理系统一起使用。这种计算机可读存储介质可以是机器可读信息的任何存储介质,包括磁介质、光介质或其它合适的介质。这种介质的示例包括硬盘驱动器中的磁盘或软磁盘、光驱用的致密盘、磁带以及本领域技术人员将想到的其它介质。本领域技术人员将立即认识到,具有合适编程手段的任何计算机系统将能够执行计算机程序产品中所体现的方法的步骤。本领域技术人员还将认识到,尽管本说明书中所描述的一些示例实施例面向计算机硬件上所安装和执行的软件,但是作为固件或硬件而实现的可选实施例也在本发明的范围内。
实施例可以包括系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质(或媒介),该计算机可读存储介质(或媒介)上具有用于使处理器执行本发明的方面的计算机可读程序指令。
计算机可读存储介质可以是可保留和存储指令以供指令执行装置使用的有形装置。计算机可读存储介质可以例如是但不限于电子存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置或上述的任何合适组合。计算机可读存储介质的更具体实例的非详尽列表包括以下各项:便携式计算机软磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存存储器)、静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、存储有指令的机械编码装置(诸如穿孔卡或凹槽中的凸起结构等)、以及上述的任何合适组合。如这里所使用的计算机可读存储介质本身不应被理解为诸如以下的暂时信号:无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过电线传输的电信号等。
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理装置,或者经由网络(例如,因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储装置。网络可以包括铜传输线缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。各计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言(包括诸如Smalltalk或C++等的面向对象的编程语言、以及诸如“C”编程语言或类似编程语言等的常规过程编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))而连接到用户的计算机,或者可以(例如,使用因特网服务提供商通过因特网)连接到外部计算机。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,从而进行本发明的方面。
这里参考根据本发明的一些实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图来描述本发明的方面。应当理解,流程图和/或框图中的各框以及流程图和/或框图中的框的组合可以通过计算机可读程序指令来实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得这些指令在经由计算机或其它可编程数据处理设备的处理器执行时创建用于实现流程图和/或框图的框中所指定的功能/动作的手段。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机、可编程数据处理设备和/或其它装置以特定方式运行,使得存储有指令的计算机可读存储介质包括包含用于实现流程图和/或框图的框中所指定的功能/动作的方面的指令的制品。
计算机可读程序指令也可被加载到计算机、其它可编程数据处理设备或其它装置上,以使得在计算机、其它可编程设备或其它装置上进行一系列操作步骤,从而产生计算机实现的处理,使得在计算机、其它可编程设备或其它装置上执行的指令实现流程图和/或框图的框中所指定的功能/动作。
图中的流程图和框图例示根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的各框可以表示包括用于实现(一个或多个)指定逻辑功能的一个或多个可执行指令的模块、段或指令的一部分。在一些可选实现中,框中所标注的功能可能不按图中所标注的顺序发生。例如,连续示出的两个框实际上可以基本上并发执行,或者这些框可以有时以相反的顺序执行,这取决于所涉及的功能。还应当注意,框图和/或流程图的各框、以及框图和/或流程图中的框的组合可以由用于进行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统实现。
本公开的实施例可以包括用于虚拟存储系统中的数据恢复的设备,该设备包括:用于在由该虚拟存储系统的第一存储层提供的存储内检测数据集内的数据丢失的部件,其中,用于该数据集的恢复数据存储在第二存储层中;用于确定所述数据集的恢复点的部件,所述数据集的一致版本可从存储在所述第二存储层中的恢复数据恢复直到所述恢复点为止;以及用于在由所述虚拟存储系统的第一存储层提供的存储内恢复所述数据集的一致版本的部件。在一些实施例中,第一存储层可以包括分级存储器的用于提供事务一致性和写入确认的部件,并且第二存储层包括由虚拟存储系统的虚拟驱动器服务器提供的虚拟驱动器。在一些实施例中,第一存储层包括由虚拟存储系统的虚拟驱动器服务器提供的虚拟驱动器,并且第二层包括由云服务提供商提供的对象存储,所述云服务提供商提供与虚拟存储系统独立的对象存储。在一些实施例中,恢复数据集是基于存储在分级存储器的虚拟驱动器之间的擦除码、基于从分级存储器迁移到对象存储的数据、或基于分级存储器的虚拟驱动器之间的镜像数据。在一些实施例中,用于恢复数据集的部件可以包括用于引用段标识符的数据库以确定对象存储中的段是否可用于恢复丢失的数据的子集的部件。在一些实施例中,恢复点的确定至少部分地基于定义被确定为已经提交的后端更新的批次。在一些实施例中,分级存储器包括多个虚拟驱动器服务器。在一些实施例中,多个虚拟驱动器服务器包括相应的本地存储。在一些实施例中,多个虚拟驱动器服务器提供区块级数据存储。在一些实施例中,向虚拟存储系统写入数据的请求由在虚拟机、容器或裸机服务器内运行的一个或多个虚拟控制器来接收。在一些实施例中,分级存储器由分别包括虚拟控制器和本地存储这两者的多个虚拟驱动器服务器提供。在一些实施例中,存储在分级存储器内的数据的至少一部分在从分级存储器迁移到持久数据存储之前被去重复、加密或压缩。在一些实施例中,虚拟存储系统的分级存储器由相对于云服务提供商所提供的持久数据存储的低读取延时来表征。
本发明的优点和特征可以通过以下声明来进一步描述:
声明1.一种用于虚拟存储系统中的数据恢复的方法,所述方法包括:在所述虚拟存储系统的分级存储器内,检测丢失的数据,所述丢失的数据被包括在由云服务提供商提供的存储器中所存储的数据集内;确定所述丢失的数据内的恢复点,所述丢失的数据的一致子集可从所述数据集恢复直到所述恢复点为止;以及在所述虚拟存储系统的分级存储器内恢复所述丢失的数据的一致子集。
声明2.根据声明1所述的方法,其中,恢复所述丢失的数据是基于存储在所述分级存储器的虚拟驱动器之间的擦除码、基于从所述分级存储器迁移到对象存储的数据、或基于所述分级存储器的虚拟驱动器之间的镜像数据。
声明3.根据声明2或声明1所述的方法,其中,恢复所述丢失的数据包括:引用段标识符的数据库以确定对象存储中的段是否可用于恢复所述丢失的数据的子集。
声明4.根据声明3、声明2或声明1所述的方法,其中,确定所述恢复点至少部分地基于定义被确定为已经提交的后端更新的批次。
声明5.根据声明4、声明3、声明2或声明1所述的方法,其中,所述分级存储器包括多个虚拟驱动器服务器。
声明6.根据声明5、声明4、声明3、声明2或声明1所述的方法,其中,所述多个虚拟驱动器服务器提供区块级数据存储。
声明7.根据声明6、声明5、声明4、声明3、声明2或声明1的方法,其中,将数据写入到所述虚拟存储系统的请求由在虚拟机、容器或裸机服务器内运行的一个或多个虚拟控制器接收。
声明8.根据声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的方法,其中,所述分级存储器由分别包括虚拟控制器和本地存储这两者的多个虚拟驱动器服务器提供。
声明9.根据声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的方法,其中,存储在所述分级存储器内的所述数据的至少一部分在从所述分级存储器迁移到持久数据存储之前被去重复、加密或压缩。
声明10.根据声明9、声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的方法,其中,存储在所述分级存储器内的所述数据的至少一部分在从所述分级存储器迁移到所述持久数据存储之前被去重复、加密或压缩。
声明11.根据声明10、声明9、声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的方法,其中,所述虚拟存储系统的分级存储器由相对于所述云服务提供商所提供的持久数据存储的低读取延时来表征。
本公开的优点和特征可以通过以下声明来进一步描述:
声明1.一种包含在云计算环境中的虚拟存储系统,基于云的存储系统包括:一个或多个虚拟驱动器,用于提供用于存储操作的分级存储器;以及一个或多个虚拟控制器,各个虚拟控制器在云计算实例中执行,其中所述一个或多个虚拟控制器被配置为:在由所述虚拟存储系统的第一存储层提供的存储内,检测数据集内的数据丢失,其中所述数据集的恢复数据存储在第二存储层中;确定所述数据集的恢复点,所述数据集的一致版本可从存储在所述第二存储层中的恢复数据恢复直到所述恢复点为止;以及在由所述虚拟存储系统的第一存储层提供的存储内恢复所述数据集的一致版本。
声明2.根据声明1所述的虚拟存储系统,其中,恢复所述数据集是基于存储在所述分级存储器的虚拟驱动器之间的擦除码、基于从所述分级存储器迁移到对象存储的数据、或基于所述分级存储器的虚拟驱动器之间的镜像数据。
声明3.根据声明2或声明1所述的虚拟存储系统,其中,虚拟控制器的第一子集位于第一可用性区内,以及其中,恢复所述数据集包括引用段标识符的数据库以确定对象存储中的段是否可用于恢复丢失的数据的子集。
声明4.根据声明3、声明2或声明1所述的虚拟存储系统,其中,确定恢复点至少部分地基于定义被确定为已经提交的后端更新的批次。
声明5.根据声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,所述分级存储器包括多个虚拟驱动器服务器。
声明6.根据声明5、声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,所述多个虚拟驱动器服务器包括相应的本地存储。
声明7.根据声明6、声明5、声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,所述多个虚拟驱动器服务器提供区块级数据存储。
声明8.根据声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,将数据写入到所述虚拟存储系统的请求由在虚拟机、容器或裸机服务器内运行的一个或多个虚拟控制器接收。
声明9.根据声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,分级存储器由分别包括虚拟控制器和本地存储器这两者的多个虚拟驱动器服务器提供。
声明10.根据声明9、声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,所述第一存储层包括用于提供事务一致性和写入确认的分级存储器,以及其中,所述第二存储层包括由所述虚拟存储系统的虚拟驱动器服务器提供的虚拟驱动器。
声明11.根据声明9、声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的虚拟存储系统,其中,所述第一存储层包括由所述虚拟存储系统的虚拟驱动器服务器提供的虚拟驱动器,以及其中,所述第二层包括由云服务提供商提供的对象存储,所述云服务提供商提供与所述虚拟存储系统独立的对象存储。

Claims (22)

1.一种用于虚拟存储系统中的数据恢复的方法,所述方法包括:
在所述虚拟存储系统的第一存储层所提供的存储内,检测数据集内的数据丢失,其中所述数据集的恢复数据存储在第二存储层中;
确定所述数据集的恢复点,所述数据集的一致版本能够从存储在所述第二存储层中的所述恢复数据恢复直到所述恢复点为止;以及
在所述虚拟存储系统的第一存储层所提供的存储内,恢复所述数据集的一致版本。
2.根据权利要求1所述的方法,其中,所述第一存储层包括分级存储器,所述分级存储器提供事务一致性和写入确认,以及其中,所述第二存储层包括所述虚拟存储系统的虚拟驱动器服务器所提供的虚拟驱动器。
3.根据权利要求1所述的方法,其中,所述第一存储层包括所述虚拟存储系统的虚拟驱动器服务器所提供的虚拟驱动器,以及其中,所述第二存储层包括由云服务提供商提供的对象存储,所述云服务提供商提供与所述虚拟存储系统独立的对象存储。
4.根据权利要求2所述的方法,其中,恢复所述数据集是基于存储在所述分级存储器的虚拟驱动器之间的擦除码、基于从所述分级存储器迁移到对象存储的数据、或者基于所述分级存储器的虚拟驱动器之间的镜像数据。
5.根据权利要求1所述的方法,其中,恢复所述数据集包括引用段标识符的数据库以确定对象存储中的段是否能够用于恢复丢失的数据的子集。
6.根据权利要求1所述的方法,其中,确定所述恢复点至少部分地基于定义被确定为已经提交的后端更新的批次。
7.根据权利要求1所述的方法,其中,分级存储器包括多个虚拟驱动器服务器。
8.根据权利要求7所述的方法,其中,所述多个虚拟驱动器服务器包括相应的本地存储。
9.根据权利要求7所述的方法,其中,所述多个虚拟驱动器服务器提供区块级数据存储。
10.根据权利要求1所述的方法,其中,将数据写入到所述虚拟存储系统的请求由在虚拟机、容器或裸机服务器内运行的一个或多个虚拟控制器来接收。
11.根据权利要求2所述的方法,其中,所述分级存储器由分别包括虚拟控制器和本地存储器这两者的多个虚拟驱动器服务器提供。
12.根据权利要求2所述的方法,其中,存储在所述分级存储器内的数据的至少一部分在从所述分级存储器迁移到持久数据存储之前被去重复、加密或压缩。
13.根据权利要求2所述的方法,其中,所述虚拟存储系统的所述分级存储器由相对于云服务提供商所提供的持久数据存储的低读取延时来表征。
14.一种包含在云计算环境中的虚拟存储系统,基于云的存储系统包括:
一个或多个虚拟驱动器,用于提供用于存储操作的分级存储器;以及
一个或多个虚拟控制器,各个虚拟控制器在云计算实例中执行,其中,所述一个或多个虚拟控制器被配置为:
在所述虚拟存储系统的分级存储器内检测丢失的数据,所述丢失的数据包括在由云服务提供商所提供的存储器中存储的数据集内;
确定所述丢失的数据内的恢复点,所述丢失的数据的一致子集能够从所述数据集恢复直到所述恢复点为止;以及
在所述虚拟存储系统的分级存储器内恢复所述丢失的数据的一致子集。
15.根据权利要求14所述的虚拟存储系统,其中,恢复所述丢失的数据是基于存储在所述分级存储器的虚拟驱动器之间的擦除码、基于从所述分级存储器迁移到对象存储的数据、或者基于所述分级存储器的虚拟驱动器之间的镜像数据。
16.根据权利要求14所述的虚拟存储系统,其中,恢复所述丢失的数据包括:引用段标识符的数据库以确定对象存储中的段是否能够用于恢复所述丢失的数据的子集。
17.根据权利要求14所述的虚拟存储系统,其中,确定所述恢复点至少部分地基于定义被确定为已经提交的后端更新的批次。
18.根据权利要求14所述的虚拟存储系统,其中,所述分级存储器包括多个虚拟驱动器服务器。
19.根据权利要求18所述的虚拟存储系统,其中,所述多个虚拟驱动器服务器包括相应的本地存储。
20.根据权利要求18所述的虚拟存储系统,其中,所述多个虚拟驱动器服务器提供区块级数据存储。
21.根据权利要求14所述的虚拟存储系统,其中,将数据写入到所述虚拟存储系统的请求由在虚拟机、容器或裸机服务器内运行的一个或多个虚拟控制器来接收。
22.根据权利要求14所述的虚拟存储系统,其中,分级存储器由分别包括虚拟控制器和本地存储器这两者的多个虚拟驱动器服务器来提供。
CN202080047645.4A 2019-07-18 2020-04-29 虚拟存储系统中的数据恢复 Pending CN114127693A (zh)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201962875947P 2019-07-18 2019-07-18
US62/875,947 2019-07-18
US201962878877P 2019-07-26 2019-07-26
US62/878,877 2019-07-26
US201962900998P 2019-09-16 2019-09-16
US62/900,998 2019-09-16
US202062967368P 2020-01-29 2020-01-29
US62/967,368 2020-01-29
US16/777,414 US11526408B2 (en) 2019-07-18 2020-01-30 Data recovery in a virtual storage system
US16/777,414 2020-01-30
PCT/US2020/030385 WO2021011051A1 (en) 2019-07-18 2020-04-29 Data recovery in a virtual storage system

Publications (1)

Publication Number Publication Date
CN114127693A true CN114127693A (zh) 2022-03-01

Family

ID=71094793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080047645.4A Pending CN114127693A (zh) 2019-07-18 2020-04-29 虚拟存储系统中的数据恢复

Country Status (4)

Country Link
US (2) US11526408B2 (zh)
CN (1) CN114127693A (zh)
DE (1) DE112020003420T5 (zh)
WO (1) WO2021011051A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115862417A (zh) * 2023-02-28 2023-03-28 中电运行(北京)信息技术有限公司 一种集成攻防演练学习的虚拟仿真系统及仿真方法
CN117472188A (zh) * 2023-12-07 2024-01-30 联通沃音乐文化有限公司 Vr姿态信息控制装置与方法

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11429417B2 (en) 2019-07-31 2022-08-30 Rubrik, Inc. Asynchronous input and output for snapshots of virtual machines
US11429418B2 (en) * 2019-07-31 2022-08-30 Rubrik, Inc. Asynchronous input and output for snapshots of virtual machines
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US20210218807A1 (en) * 2020-01-14 2021-07-15 EMC IP Holding Company LLC Real-time replication of object storage in cloud storage
US11893064B2 (en) * 2020-02-05 2024-02-06 EMC IP Holding Company LLC Reliably maintaining strict consistency in cluster wide state of opened files in a distributed file system cluster exposing a global namespace
US11204947B2 (en) 2020-03-18 2021-12-21 International Business Machines Corporation Centralized database system with geographically partitioned data
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11275514B2 (en) * 2020-08-10 2022-03-15 International Business Machines Corporation Expanding storage capacity for implementing logical corruption protection
US11960450B2 (en) * 2020-08-21 2024-04-16 Vmware, Inc. Enhancing efficiency of segment cleaning for a log-structured file system
US11436103B2 (en) * 2020-10-13 2022-09-06 EMC IP Holding Company LLC Replication for cyber recovery for multiple tier data
US11442654B2 (en) 2020-10-15 2022-09-13 Microsoft Technology Licensing, Llc Managing and ranking memory resources
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
WO2022159157A1 (en) * 2021-01-25 2022-07-28 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US20220382638A1 (en) * 2021-06-01 2022-12-01 EMC IP Holding Company LLC Method and Apparatus for Creating Recovery Point Objectives in Persistent Memory
US11880593B2 (en) 2021-08-13 2024-01-23 Samsung Electronics Co., Ltd. Host, operating method of host and storage system
US20230179655A1 (en) * 2021-12-06 2023-06-08 Ebay Inc. Techniques to achieve cache coherency across distributed storage clusters
US20230244569A1 (en) * 2022-01-28 2023-08-03 Pure Storage, Inc. Recover Corrupted Data Through Speculative Bitflip And Cross-Validation
US11880605B2 (en) * 2022-02-15 2024-01-23 Netapp, Inc. Managing ephemeral storage of a virtual machine to provide victim caches for use by virtual storage appliances in a cloud environment
US20230401232A1 (en) * 2022-06-09 2023-12-14 Snowflake Inc. Cross-cloud replication of recurrently executing data pipelines
CN115118632B (zh) * 2022-06-21 2024-02-06 中电信数智科技有限公司 一种基于云网融合的主机丢包自动检测方法

Family Cites Families (170)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3042163A (en) 1957-12-26 1962-07-03 Clark Equipment Co Retractable vane fluid clutch
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
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
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
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
EP1533702A4 (en) 2002-08-29 2007-05-23 Matsushita Electric Ind Co Ltd SEMICONDUCTOR MEMORY AND METHOD FOR RECORDING DATA IN A FLASH MEMORY
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
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 パナソニック株式会社 データアクセス装置および記録媒体
US7441096B2 (en) * 2004-07-07 2008-10-21 Hitachi, Ltd. Hierarchical storage management system
US7533292B2 (en) 2004-07-15 2009-05-12 International Business Machines Corporation Management method for spare disk drives in a raid system
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
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
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
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
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
JP4471007B2 (ja) 2008-02-05 2010-06-02 ソニー株式会社 記録装置、記録装置の制御方法、記録装置の制御方法のプログラム及び記録装置の制御方法のプログラムを記録した記録媒体
US8949863B1 (en) 2008-04-30 2015-02-03 Netapp, Inc. Creating environmental snapshots of storage device failure events
US8093868B2 (en) 2008-09-04 2012-01-10 International Business Machines Corporation In situ verification of capacitive power support
US8086585B1 (en) 2008-09-30 2011-12-27 Emc Corporation Access control to block storage devices for a shared disk based file system
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
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 存取儲存裝置的方法及相關控制電路
JP4874368B2 (ja) 2009-06-22 2012-02-15 株式会社日立製作所 フラッシュメモリを用いたストレージシステムの管理方法及び計算機
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
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
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
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
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
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
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
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
US9852017B2 (en) 2011-07-27 2017-12-26 International Business Machines Corporation Generating dispersed 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 メモリ・デバイス
US9374356B2 (en) 2011-09-29 2016-06-21 Oracle International Corporation Mobile oauth service
EP2771802A4 (en) 2011-10-24 2016-05-25 Schneider Electric Ind Sas SYSTEM AND METHOD FOR MANAGING INDUSTRIAL PROCESSES
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
US8613066B1 (en) 2011-12-30 2013-12-17 Amazon Technologies, Inc. Techniques for user authentication
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
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 ストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラム
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
WO2013188382A2 (en) 2012-06-12 2013-12-19 Centurylink Intellectual Property Llc High performance cloud storage
WO2014007516A1 (ko) 2012-07-02 2014-01-09 에스케이플래닛 주식회사 단일 인증 서비스 시스템 및 이의 운용 방법
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
WO2014051552A1 (en) 2012-09-25 2014-04-03 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
US8990905B1 (en) 2012-09-28 2015-03-24 Emc Corporation Protected resource access control utilizing intermediate values of a hash chain
US8990914B2 (en) 2012-09-28 2015-03-24 Intel Corporation Device, method, and system for augmented reality security
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
US9646039B2 (en) 2013-01-10 2017-05-09 Pure Storage, Inc. Snapshots in a storage system
US9483657B2 (en) 2013-01-14 2016-11-01 Accenture Global Services Limited Secure online distributed data storage services
US9052917B2 (en) 2013-01-14 2015-06-09 Lenovo (Singapore) Pte. Ltd. Data storage for remote environment
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
US9577953B2 (en) 2013-09-27 2017-02-21 Intel Corporation Determination of a suitable target for an initiator by a control plane processor
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
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9250823B1 (en) 2014-05-20 2016-02-02 Emc Corporation Online replacement of physical storage in a virtual storage system
US9672165B1 (en) * 2014-05-21 2017-06-06 Veritas Technologies Llc Data management tier coupling primary storage and secondary storage
CN105830166B (zh) 2014-06-27 2018-02-23 华为技术有限公司 一种控制器、闪存装置和将数据写入闪存装置的方法
WO2016004120A2 (en) 2014-07-02 2016-01-07 Hedvig, Inc. Storage system with virtual disks
US9516167B2 (en) 2014-07-24 2016-12-06 Genesys Telecommunications Laboratories, Inc. Media channel management apparatus for network communications sessions
US10380026B2 (en) * 2014-09-04 2019-08-13 Sandisk Technologies Llc Generalized storage virtualization interface
US10204010B2 (en) 2014-10-03 2019-02-12 Commvault Systems, Inc. Intelligent protection of off-line mail data
US9910742B1 (en) * 2015-03-31 2018-03-06 EMC IP Holding Company LLC System comprising front-end and back-end storage tiers, data mover modules and associated metadata warehouse
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
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
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
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US20160350009A1 (en) 2015-05-29 2016-12-01 Pure Storage, Inc. Buffering data to be written to an array of non-volatile storage devices
JP6708948B2 (ja) * 2016-01-21 2020-06-10 日本電気株式会社 ブロックストレージ
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
US10223361B2 (en) 2017-01-18 2019-03-05 Netapp, Inc. Methods and systems for restoring a data container archived at an object-based storage
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US11288138B1 (en) * 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11797197B1 (en) * 2019-07-18 2023-10-24 Pure Storage, Inc. Dynamic scaling of a virtual storage system
US11487715B1 (en) * 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US20210019067A1 (en) * 2019-07-18 2021-01-21 Pure Storage, Inc. Data deduplication across storage systems
US11093139B1 (en) * 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115862417A (zh) * 2023-02-28 2023-03-28 中电运行(北京)信息技术有限公司 一种集成攻防演练学习的虚拟仿真系统及仿真方法
CN117472188A (zh) * 2023-12-07 2024-01-30 联通沃音乐文化有限公司 Vr姿态信息控制装置与方法
CN117472188B (zh) * 2023-12-07 2024-04-19 联通沃音乐文化有限公司 Vr姿态信息控制装置与方法

Also Published As

Publication number Publication date
WO2021011051A1 (en) 2021-01-21
DE112020003420T5 (de) 2022-05-05
US11526408B2 (en) 2022-12-13
US20210019237A1 (en) 2021-01-21
US20230115293A1 (en) 2023-04-13

Similar Documents

Publication Publication Date Title
US11093139B1 (en) Durably storing data within a virtual storage system
US11526408B2 (en) Data recovery in a virtual storage system
US11550514B2 (en) Efficient transfers between tiers of a virtual storage system
US20220035714A1 (en) Managing Disaster Recovery To Cloud Computing Environment
US20220050858A1 (en) Snapshot-Based Hydration Of A Cloud-Based Storage System
US11126364B2 (en) Virtual storage system architecture
US20220083245A1 (en) Declarative provisioning of storage
US11704202B2 (en) Recovering from system faults for replicated datasets
US11416298B1 (en) Providing application-specific storage by a storage system
CN113302584A (zh) 基于云的存储系统的存储管理
CN112470142A (zh) 在存储系统的中介器服务之间进行切换
CN111868676A (zh) 在基于云的存储系统中服务i/o操作
CN115668172A (zh) 管理复制端点的主机映射
US11422751B2 (en) Creating a virtual storage system
US20220229805A1 (en) Snapshot Management in a Storage System
US11442669B1 (en) Orchestrating a virtual storage system
US20220335009A1 (en) Converting Storage Resources to Distributed Persistent Storage for Containerized Applications
US20230080046A1 (en) Online Resize of a Volume of a Distributed Storage System
US20210303528A1 (en) Managing Directory-Tree Operations in File Storage
US11327676B1 (en) Predictive data streaming in a virtual storage system
US20210110055A1 (en) Data Deletion for a Multi-Tenant Environment
US20240012752A1 (en) Guaranteeing Physical Deletion of Data in a Storage System
CN117377941A (zh) 使用近似基线产生数据集
WO2023070025A1 (en) Declarative provisioning of storage
US20220091744A1 (en) Optimized Application Agnostic Object Snapshot System

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