CN111868676A - 在基于云的存储***中服务i/o操作 - Google Patents
在基于云的存储***中服务i/o操作 Download PDFInfo
- Publication number
- CN111868676A CN111868676A CN201980019304.3A CN201980019304A CN111868676A CN 111868676 A CN111868676 A CN 111868676A CN 201980019304 A CN201980019304 A CN 201980019304A CN 111868676 A CN111868676 A CN 111868676A
- Authority
- CN
- China
- Prior art keywords
- cloud
- data
- storage
- storage system
- based storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 1568
- 239000007787 solid Substances 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims description 151
- 238000004891 communication Methods 0.000 claims description 108
- 238000004590 computer program Methods 0.000 claims description 29
- 230000015654 memory Effects 0.000 description 167
- 238000012545 processing Methods 0.000 description 76
- 238000013473 artificial intelligence Methods 0.000 description 46
- 238000005516 engineering process Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 28
- 238000007726 management method Methods 0.000 description 26
- 238000010801 machine learning Methods 0.000 description 24
- 238000012544 monitoring process Methods 0.000 description 24
- 230000002085 persistent effect Effects 0.000 description 24
- 238000012549 training Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 20
- 238000003491 array Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 210000004027 cell Anatomy 0.000 description 16
- 238000013500 data storage Methods 0.000 description 16
- 239000004744 fabric Substances 0.000 description 16
- 230000005055 memory storage Effects 0.000 description 16
- 230000001133 acceleration Effects 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 15
- 238000005192 partition Methods 0.000 description 15
- 238000012546 transfer Methods 0.000 description 15
- 238000013135 deep learning Methods 0.000 description 14
- 238000004458 analytical method Methods 0.000 description 11
- 239000000835 fiber Substances 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 11
- 230000008093 supporting effect Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 10
- 239000000047 product Substances 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000007405 data analysis Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 7
- 230000001976 improved effect Effects 0.000 description 7
- 230000010354 integration Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 239000003990 capacitor Substances 0.000 description 6
- 238000005094 computer simulation Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 230000005012 migration Effects 0.000 description 6
- 238000012384 transportation and delivery Methods 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000012517 data analytics Methods 0.000 description 5
- 238000013144 data compression Methods 0.000 description 5
- 230000036541 health Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 230000002787 reinforcement Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 235000012431 wafers Nutrition 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 238000012550 audit Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000001816 cooling Methods 0.000 description 3
- 238000013523 data management Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 230000037406 food intake Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 239000002096 quantum dot Substances 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 241000282412 Homo Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 238000004146 energy storage Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000012010 growth Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 210000000653 nervous system Anatomy 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000009987 spinning Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- -1 NVMe TCP) Substances 0.000 description 1
- 238000012896 Statistical algorithm Methods 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004873 anchoring Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 210000004958 brain cell Anatomy 0.000 description 1
- 239000002041 carbon nanotube Substances 0.000 description 1
- 229910021393 carbon nanotube Inorganic materials 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000012411 cloning technique Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 208000002161 echolalia Diseases 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000001459 lithography Methods 0.000 description 1
- 230000003137 locomotive effect Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000012466 permeate Substances 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 230000005233 quantum mechanics related processes and functions Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
在基于云的存储***中服务I/O操作包括:由基于云的存储***接收将数据写入基于云的存储***的请求;将数据存储在基于云的存储***的固态存储中;将数据存储在基于云的存储***的对象存储中;检测到基于云的存储***的固态存储的至少一些部分已变为不能用;识别基于云的存储***的固态存储的已变为不能用的部分中所存储的数据;从基于云的存储***的对象存储中检索基于云的存储***的固态存储的已变为不能用的部分中所存储的数据;以及将所检索到的数据存储在基于云的存储***的固态存储中。
Description
附图说明
图1A例示根据一些实现的数据存储的第一示例***。
图1B例示根据一些实现的数据存储的第二示例***。
图1C例示根据一些实现的数据存储的第三示例***。
图1D例示根据一些实现的数据存储的第四示例***。
图2A是根据一些实施例的具有多个存储节点以及耦合到各存储节点以提供网络附加存储的内部存储的存储集群的透视图。
图2B是示出根据一些实施例的耦合多个存储节点的互连交换机的框图。
图2C是示出根据一些实施例的存储节点的内容以及非易失性固态存储单元其中之一的内容的多级框图。
图2D示出根据一些实施例的使用一些先前图中的存储节点和存储单元的实施例的存储服务器环境。
图2E是示出根据一些实施例的控制平面、计算和存储平面以及与基础物理资源进行交互的的权限的刀片硬件框图。
图2F描绘了根据一些实施例的存储集群的刀片中的弹性软件层。
图2G描绘了根据一些实施例的存储集群的刀片中的权限和存储资源。
图3A阐述了根据本发明的一些实施例的被耦合以与云服务提供商进行数据通信的存储***的图。
图3B阐述了根据本发明的一些实施例的存储***的图。
图3C例示可被具体地配置为进行这里所述的处理中的一个或多个处理的示例性计算装置。
图4阐述了根据本发明的一些实施例的基于云的存储***的示例。
图5阐述了根据本发明的一些实施例的附加的基于云的存储***的示例。
图6阐述了例示在基于云的存储***中服务I/O操作的示例方法的流程图。
图7阐述了例示在基于云的存储***中服务I/O操作的示例方法的流程图。
图8阐述了例示在基于云的存储***中服务I/O操作的附加示例方法的流程图。
图9阐述了例示在基于云的存储***中服务I/O操作的附加示例方法的流程图。
图10阐述了例示在基于云的存储***中服务I/O操作的附加示例方法的流程图。
图11阐述了例示在基于云的存储***中服务I/O操作的附加示例方法的流程图。
具体实施方式
参考以图1A开始的附图来描述根据本发明的实施例的用于在基于云的存储***中服务I/O操作的示例方法、设备和产品。图1A例示根据一些实现的数据存储的示例***。***100(这里也称为“存储***”)包括为了例示而非限制的目的的多个元件。可以注意到,***100可以包括在其它实现中以相同或不同的方式配置的相同、更多或更少的元件。
***100包括多个计算装置164A~B。计算装置(这里也称为“客户端装置”)可以体现为例如数据中心的服务器、工作站、个人计算机或笔记本等。计算装置164A~B可被耦合以通过存储区域网(SAN)158或局域网(LAN)160来与一个或多个存储阵列102A~B进行数据通信。
SAN 158可以利用各种数据通信结构、装置和协议来实现。例如,SAN158的结构可以包括光纤通道、以太网、无限带宽(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可能故障,并且装置将继续无数据丢失。
在一些实施例中,基于应用用途将物理存储分割为命名区域。NVRAM204是存储单元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资源的访问。在一个实施例中,如这里所述,计算平面25可以对存储平面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的用户提供服务,其中在SaaS服务模型中云服务提供商302向存储***306和存储***306的用户提供应用软件、数据库以及用于运行应用的平台,从而为存储***306和存储***306的用户提供按需软件并消除在本地计算机上安装和运行应用的需要,这可以简化应用的维护和支持。根据本发明的各种实施例,这些应用可以采取多种形式。例如,云服务提供商302可被配置为向存储***306和存储***306的用户提供对数据分析应用的访问。这种数据分析应用可例如被配置为接收由存储***306回拨的遥测数据。这种遥测数据可以描述存储***306的各种操作特性,并且可被分析以例如确定存储***306的健康状态、识别在存储***306上执行的工作负载、预测存储***306何时将耗尽各种资源、建议配置改变、硬件或软件升级、工作流迁移或可能改进存储***306运行的其它动作。
云服务提供商302还可被配置为向存储***306和存储***306的用户提供对虚拟化计算环境的访问。这种虚拟化计算环境可例如被体现为虚拟机或其它虚拟化计算机硬件平台、虚拟存储装置和虚拟化计算机网络资源等。这种虚拟化环境的示例可以包括为了模拟实际计算机而创建的虚拟机、将逻辑桌面与物理机分开的虚拟化桌面环境、允许统一访问不同类型的具体文件***的虚拟化文件***以及许多其它环境。
为了进一步说明,图3B阐述了根据本发明的一些实施例的存储***306的图。尽管描绘得不太详细,但图3B所描绘的存储***306可以与以上参考图1A~1D和图2A~2G所述的存储***类似,因为该存储***可以包括上述的许多组件。
图3B所描绘的存储***306可以包括存储资源308,该存储资源308可以以多种形式体现。例如,在一些实施例中,存储资源308可以包括纳米RAM或利用沉积在基板上的碳纳米管的其它形式的非易失性随机存取存储器。在一些实施例中,存储资源308与可堆叠交叉网格数据访问阵列相结合的可以包括3D交叉点非易失性存储器,其中位存储是基于体电阻的变化。在一些实施例中,存储资源308可以包括闪存存储器,其包括单级单元(SLC)NAND闪存、多级单元(MLC)NAND闪存、三级单元(TLC)NAND闪存和四级单元(QLC)NAND闪存等。在一些实施例中,存储资源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和BaiduMinwa等。上述的存储***也可以很适合于支持资源密集型的其它类型的应用,诸如机器学习应用等。机器学习应用可以进行各种类型的数据分析,以使分析模型构建自动化。使用迭代地从数据中进行学习的算法,机器学习应用可以使计算机能够在没有显式编程的情况下实现学习。机器学习的一个特定领域被称为强化学习,其涉及在特定情况下采取适当的动作来使奖励最大化。可以采用强化学习来寻找特定软件应用或机器在特定情况下应采取的最佳行为或路径。强化学习与机器学习的其它领域(例如,监督学习、无监督学习)的不同之处在于:对于强化学习,无需呈现正确的输入/输出对,也无需显式地校正次优动作。
除已经描述的资源外,上述的存储***还可以包括图形处理单元(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算法的执行。可以使用分布式深度学习来显著地加速GPU(或其它形式的加速器或计算机程序指令执行器)上的利用分布式计算的深度学习,使得可以实现并行化。另外,训练机器学习和深度学习模型(诸如全面训练的机器学习模型等)的输出可用于各种目的,并且可与其它工具结合使用。例如,经训练的机器学习模型可以与例如CoreML等的工具结合使用,以将各种机器学习模型类型集成到应用中。事实上,经训练的模型可以通过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或其它开放式神经网络交换格式等的工具。同样,存储***也可被配置为支持允许开发者对深度学***台的一部分,其包括整合数据科学、数据工程和应用构建服务。这样的平台可以跨企业无缝地收集、组织、保护和分析数据,以及利用单一解决方案来简化混合数据管理、统一数据管治和整合、数据科学和业务分析。
读者将进一步理解,上述的存储***也可被部署为边缘解决方案。这种边缘解决方案可以通过在靠近数据源的网络边缘进行数据处理来适当地优化云计算***。边缘计算可以将应用、数据和计算能力(即,服务)从集中点推离至网络的逻辑末端。通过使用诸如上述的存储***等的边缘解决方案,可以使用这种存储***所提供的计算资源来进行计算任务,可以使用存储***的存储资源来存储数据,并且可以通过使用存储***的各种资源(包括网络资源)来访问基于云的服务。通过对边缘解决方案进行计算任务、存储与边缘解决方案有关的数据以及通常利用边缘解决方案,可以避免消耗昂贵的基于云的资源,并且事实上,相对于对基于云的资源的较大依赖性,性能可以得到改善。
虽然许多任务可能受益于边缘解决方案的利用,但一些特定用途可能特别适合部署在这样的环境中。例如,例如无人机、自主汽车和机器人等的装置可能需要极快的处理,事实上,如此快的处理使得将数据向上发送到云环境并返回来接收数据处理支持可能简直是太慢了。同样,通过使用广泛的数据生成传感器生成大量信息的例如机车和燃气轮机等的机器可以受益于边缘解决方案的快速数据处理能力。作为附加示例,一些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可以在提供深度学***台。这种数字平台可以例如包括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来实现这里所述的任何***、计算装置和/或其它组件。
为了进一步说明,图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的EC2 M5实例、包括一个或多个SSD的EC2 R5实例、以及包括一个或多个SSD的EC2 I3实例等。在一些实施例中,本地存储(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)在基于云的存储***的对象存储中可以包括使用对象级协议将数据写入对象存储中的一个或多个对象中。在图11所描绘的示例方法中,与例如将数据作为文件分层结构进行管理的文件***以及将数据作为区块进行管理的区块存储等的其它存储架构相反,对象存储可被配置为将数据作为对象进行管理。这种对象存储可以在装置级(对象存储装置)、***级、接口级或以某种其它方式实现。数据可以使用诸如对象存储装置的SCSI命令集、RESTful/HTTP协议、AWS S3 API、以及用于访问云存储的云数据管理接口等的对象级协议而写入(1104)对象存储。读者将理解,通过使用对象级协议写入(1104)对象存储中的一个或多个对象内,被写入基于云的存储***的对象存储的数据因此被存储在对象中,而不是像前一段中的情况那样存储在区块中。
在图11所描绘的示例方法中,针对数据的各区块,可以将特定区块中所包含的数据写入唯一对象中。读者将理解,写入(1104)对象存储的各对象可以包括数据本身及其相关元数据,并且各对象可以与全局唯一标识符相关联,而不是与文件名和文件路径、以及区块号等相关联。正因如此,在唯一对象包括数据本身、与数据相关联的元数据以及全局唯一标识符的意义上,特定区块中所包含的数据可被写入唯一对象中。因此,在这样的实施例中,基于云的存储***可以维持来自基于云的存储***的区块存储中所存储的数据的各区块和基于云的存储***的对象存储中所存储的各对象的映射。在一些实施例中,各对象可以包括多个区块中所包含的数据,但多个区块中所包含的数据只需要存储在单个对象中。
读者将理解,尽管上述的实施例涉及基于云的存储***的区块存储的已变为不能用的部分中所存储的数据通过从基于云的存储***的对象存储层中检索该数据而基本上被带回基于云的存储***的区块存储层中的实施例,但其它实施例也在本发明的范围内。例如,由于数据可以使用诸如RAID等的数据冗余技术而跨多个云计算实例的本地存储分布,因此在一些实施例中,丢失的数据可以通过RAID重建而被带回基于云的存储***的区块存储层中。
读者将进一步理解,尽管前面的段落描述了基于云的存储***及其操作,但上述的基于云的存储***可用于提供区块存储即服务,这是因为基于云的存储***可以加速旋转并用于以根据请求、按需的方式提供区块服务。在这样的示例中,在云计算环境中提供区块存储即服务可以包括:从用户接收针对区块存储服务的请求;创建供用户使用的卷;接收针对该卷的I/O操作;并将I/O操作转发到与云计算环境所用的硬件资源位于一起的存储***。
可以通过以下声明来进一步描述本发明的优点和特征:
1.一种在基于云的存储***中服务I/O操作的方法,所述方法包括:由所述基于云的存储***接收用以将数据写入所述基于云的存储***的请求;将所述数据存储在所述基于云的存储***的区块存储中;以及将所述数据存储在所述基于云的存储***的对象存储中。
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所述的方法,还包括:由所述基于云的存储***接收用以从所述基于云的存储***读取数据的请求;从所述基于云的存储***的区块存储中检索所述数据。
12.根据声明11、声明10、声明9、声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的方法,其中,将所述数据存储在所述基于云的存储***的对象存储中还包括:创建一个或多个等大小的对象,其中,各等大小的对象包括所述数据的不同组块。
13.根据声明12、声明11、声明10、声明9、声明8、声明7、声明6、声明5、声明4、声明3、声明2或声明1所述的方法,其中,所述基于云的存储***的区块存储相对于所述基于云的存储***的对象存储表征为低读取延时。
示例实施例主要是在全功能计算机***的上下文中描述的。然而,本领域技术读者将认识到,本发明也可以体现在计算机程序产品中,该计算机程序产品被设置在计算机可读存储介质上以与任何合适的数据处理***一起使用。这种计算机可读存储介质可以是机器可读信息的任何存储介质,包括磁介质、光介质或其它合适的介质。这种介质的示例包括硬盘驱动器中的磁盘或软磁盘、光驱用的致密盘、磁带以及本领域技术人员将想到的其它介质。本领域技术人员将立即认识到,具有合适编程手段的任何计算机***将能够执行计算机程序产品中所体现的方法的步骤。本领域技术人员还将认识到,尽管本说明书中所描述的一些示例实施例面向计算机硬件上所安装和执行的软件,但是作为固件或硬件而实现的可选实施例也在本发明的范围内。
实施例可以包括***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质(或媒介),该计算机可读存储介质(或媒介)上具有用于使处理器执行本发明的方面的计算机可读程序指令。
计算机可读存储介质可以是可保留和存储指令以供指令执行装置使用的有形装置。计算机可读存储介质可以例如是但不限于电子存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置或上述的任何合适组合。计算机可读存储介质的更具体实例的非详尽列表包括以下各项:便携式计算机软磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存存储器)、静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、存储有指令的机械编码装置(诸如穿孔卡或凹槽中的凸起结构等)、以及上述的任何合适组合。如这里所使用的计算机可读存储介质本身不应被理解为诸如以下的暂时信号:无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过电线传输的电信号等。
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理装置,或者经由网络(例如,因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储装置。网络可以包括铜传输线缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。各计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言(包括诸如Smalltalk或C++等的面向对象的编程语言、以及诸如“C”编程语言或类似编程语言等的常规过程编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))而连接到用户的计算机,或者可以(例如,使用因特网服务提供商通过因特网)连接到外部计算机。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,从而进行本发明的方面。
这里参考根据本发明的一些实施例的方法、设备(***)和计算机程序产品的流程图和/或框图来描述本发明的方面。应当理解,流程图和/或框图中的各框以及流程图和/或框图中的框的组合可以通过计算机可读程序指令来实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得这些指令在经由计算机或其它可编程数据处理设备的处理器执行时创建用于实现流程图和/或框图的框中所指定的功能/动作的手段。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机、可编程数据处理设备和/或其它装置以特定方式运行,使得存储有指令的计算机可读存储介质包括包含用于实现流程图和/或框图的框中所指定的功能/动作的方面的指令的制品。
计算机可读程序指令也可被加载到计算机、其它可编程数据处理设备或其它装置上,以使得在计算机、其它可编程设备或其它装置上进行一系列操作步骤,从而产生计算机实现的处理,使得在计算机、其它可编程设备或其它装置上执行的指令实现流程图和/或框图的框中所指定的功能/动作。
图中的流程图和框图例示根据本发明的各种实施例的***、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的各框可以表示包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或指令的一部分。在一些可选实现中,框中所标注的功能可能不按图中所标注的顺序发生。例如,连续示出的两个框实际上可以基本上并发执行,或者这些框可以有时以相反的顺序执行,这取决于所涉及的功能。还应当注意,框图和/或流程图的各框、以及框图和/或流程图中的框的组合可以由用于进行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的***实现。
Claims (27)
1.一种在基于云的存储***中服务I/O操作的方法,所述方法包括:
由所述基于云的存储***接收用以将数据写入所述基于云的存储***的请求;
将所述数据存储在所述基于云的存储***的区块存储中;以及
将所述数据存储在所述基于云的存储***的对象存储中。
2.根据权利要求1所述的方法,还包括:
检测到所述基于云的存储***的区块存储的至少一些部分已变为不能用;
识别所述基于云的存储***的区块存储的已变为不能用的部分中所存储的数据;
从所述基于云的存储***的对象存储中检索所述基于云的存储***的区块存储的已变为不能用的部分中所存储的数据;以及
将所检索到的数据存储在所述基于云的存储***的区块存储中。
3.根据权利要求1所述的方法,其中,
接收用以将数据写入所述基于云的存储***的请求包括:由在云计算实例中执行的存储控制器应用接收用以将数据写入基于云的存储的请求;以及
将所述数据存储在所述基于云的存储***的区块存储中包括:由在云计算实例中执行的存储控制器应用发出用以将所述数据写入具有本地存储的一个或多个云计算实例内的本地存储的指令,其中,在云计算实例中执行的存储控制器应用被耦合以与具有本地存储的多个云计算实例进行数据通信。
4.根据权利要求3所述的方法,其中,具有本地存储的多个云计算实例中的一个或多个云计算实例被耦合以与各自执行所述存储控制器应用的多个云计算实例进行数据通信。
5.根据权利要求1所述的方法,其中,将所述数据存储在所述基于云的存储***的区块存储中还包括:将所述数据存储在一个或多个云计算实例的本地存储中。
6.根据权利要求1所述的方法,其中,
将所述数据存储在所述基于云的存储***的区块存储中还包括:使用区块级协议将所述数据写入所述区块存储的一个或多个区块中;以及
将所述数据存储在所述基于云的存储***的对象存储中还包括:使用对象级协议将所述数据写入所述对象存储中的一个或多个对象中。
7.根据权利要求6所述的方法,其中,针对数据的各区块,将特定区块中所包含的数据写入单个对象中。
8.根据权利要求1所述的方法,还包括:
对所述数据进行压缩。
9.根据权利要求1所述的方法,还包括:
对所述数据进行去重复。
10.根据权利要求1所述的方法,还包括:
对所述数据进行加密。
11.根据权利要求1所述的方法,还包括:
由所述基于云的存储***接收用以从所述基于云的存储***读取数据的请求;
从所述基于云的存储***的区块存储中检索所述数据。
12.根据权利要求1所述的方法,其中,将所述数据存储在所述基于云的存储***的对象存储中还包括:创建一个或多个等大小的对象,其中,各等大小的对象包括所述数据的不同组块。
13.根据权利要求1所述的方法,其中,所述基于云的存储***的区块存储相对于所述基于云的存储***的对象存储表征为低读取延时。
14.一种包含在云计算环境中的基于云的存储***,所述基于云的存储***包括:
一个或多个存储控制器应用,各存储控制器应用在云计算实例中执行;
一个或多个云计算实例,其具有本地区块存储;以及
基于云的对象存储。
15.根据权利要求14所述的基于云的存储***,其中,所述本地区块存储包括一个或多个固态驱动器即一个或多个SSD。
16.根据权利要求14所述的基于云的存储***,其中,具有本地存储的多个云计算实例中的一个或多个云计算实例被耦合以与各自执行所述存储控制器应用的多个云计算实例进行数据通信。
17.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***包括计算机程序指令,所述计算机程序指令在被执行时使所述基于云的存储***执行以下的步骤:
由所述基于云的存储***接收用以将数据写入所述基于云的存储***的请求;
将所述数据存储在所述基于云的存储***的区块存储中;以及
将所述数据存储在所述基于云的存储***的对象存储中。
18.根据权利要求17所述的基于云的存储***,其中,将所述数据存储在所述基于云的存储***的区块存储中还包括:将所述数据存储在一个或多个云计算实例的本地存储中。
19.根据权利要求17所述的基于云的存储***,其中,在被执行时使所述基于云的存储***执行将所述数据存储在所述基于云的存储***的区块存储中以及将所述数据存储在所述基于云的存储***的对象存储中的步骤的计算机程序指令能够在不同类型的云计算实例之间迁移。
20.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***包括计算机程序指令,所述计算机程序指令在被执行时使所述基于云的存储***执行以下的步骤:
检测到所述基于云的存储***的区块存储的至少一些部分已变为不能用;
识别所述基于云的存储***的区块存储的已变为不能用的部分中所存储的数据;
从所述基于云的存储***的对象存储中检索所述基于云的存储***的区块存储的已变为不能用的部分中所存储的数据;以及
将所检索到的数据存储在所述基于云的存储***的区块存储中。
21.根据权利要求14所述的基于云的存储***,其中,
将数据存储在所述基于云的存储***的区块存储中还包括:使用区块级协议将所述数据写入所述区块存储的一个或多个区块中;以及
将所述数据存储在所述基于云的存储***的对象存储中还包括:使用对象级协议将所述数据写入所述对象存储中的一个或多个对象中。
22.根据权利要求14所述的基于云的存储***,其中,将数据存储在所述基于云的存储***的对象存储中还包括:创建一个或多个等大小的对象,其中,各等大小的对象包括所述数据的不同组块。
23.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***包括计算机程序指令,所述计算机程序指令在被执行时使所述基于云的存储***执行用于对数据进行压缩的步骤。
24.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***包括计算机程序指令,所述计算机程序指令在被执行时使所述基于云的存储***执行用于对数据进行去重复的步骤。
25.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***包括计算机程序指令,所述计算机程序指令在被执行时使所述基于云的存储***执行用于对数据进行加密的步骤。
26.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***包括计算机程序指令,所述计算机程序指令在被执行时使所述基于云的存储***执行以下的步骤:
由所述基于云的存储***接收用以从所述基于云的存储***读取数据的请求;
从所述基于云的存储***的区块存储中检索所述数据。
27.根据权利要求14所述的基于云的存储***,其中,所述基于云的存储***的区块存储相对于所述基于云的存储***的对象存储表征为低读取延时。
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862643641P | 2018-03-15 | 2018-03-15 | |
US62/643,641 | 2018-03-15 | ||
US201862692602P | 2018-06-29 | 2018-06-29 | |
US62/692,602 | 2018-06-29 | ||
US201862768952P | 2018-11-18 | 2018-11-18 | |
US62/768,952 | 2018-11-18 | ||
US201862769277P | 2018-11-19 | 2018-11-19 | |
US62/769,277 | 2018-11-19 | ||
US16/353,775 US10976962B2 (en) | 2018-03-15 | 2019-03-14 | Servicing I/O operations in a cloud-based storage system |
US16/353,775 | 2019-03-14 | ||
PCT/US2019/022454 WO2019178470A1 (en) | 2018-03-15 | 2019-03-15 | Servicing i/o operations in a cloud-based storage system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111868676A true CN111868676A (zh) | 2020-10-30 |
Family
ID=67905627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980019304.3A Pending CN111868676A (zh) | 2018-03-15 | 2019-03-15 | 在基于云的存储***中服务i/o操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10976962B2 (zh) |
CN (1) | CN111868676A (zh) |
DE (1) | DE112019000841T5 (zh) |
WO (1) | WO2019178470A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112333283A (zh) * | 2020-11-20 | 2021-02-05 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 自主高端存储阵列***架构 |
CN112445770A (zh) * | 2020-11-30 | 2021-03-05 | 清远职业技术学院 | 多维乱序存储的超大规模高性能数据库引擎及云服务平台 |
CN112783419A (zh) * | 2019-11-06 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 分布式存储方法及装置、电子设备和存储介质 |
CN112887744A (zh) * | 2021-01-21 | 2021-06-01 | 上海薏欣文化传播有限公司 | 一种大健康智慧直播厅直播数据传输控制方法 |
CN112988080A (zh) * | 2021-05-10 | 2021-06-18 | 鹏城实验室 | 多数据页同时写入方法、3d闪存装置及计算机存储介质 |
CN113518002A (zh) * | 2021-05-24 | 2021-10-19 | 平安普惠企业管理有限公司 | 一种基于无服务器平台的监控方法、装置、设备及存储介质 |
CN113703676A (zh) * | 2021-07-30 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种双活卷的调用方法、装置、设备和介质 |
CN113778620A (zh) * | 2021-08-12 | 2021-12-10 | 桂林电子科技大学 | 基于多sdn控制器与软硬件协同的大规模集群存储***架构 |
CN116719480A (zh) * | 2023-08-04 | 2023-09-08 | 青岛鼎信通讯股份有限公司 | 一种基于数据孪生的电能表数据存储方法、装置及介质 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11238164B2 (en) * | 2017-07-10 | 2022-02-01 | Burstiq, Inc. | Secure adaptive data storage platform |
US10880071B2 (en) * | 2018-02-23 | 2020-12-29 | Samsung Electronics Co., Ltd. | Programmable blockchain solid state drive and switch |
US11288138B1 (en) | 2018-03-15 | 2022-03-29 | Pure Storage, Inc. | Recovery from a system fault in a cloud-based storage system |
US10924548B1 (en) | 2018-03-15 | 2021-02-16 | Pure Storage, Inc. | Symmetric storage using a cloud-based storage system |
US11190599B2 (en) * | 2018-06-27 | 2021-11-30 | Oracle International Corporation | Method and system for cloud service pre-provisioning |
US10708082B1 (en) * | 2018-08-31 | 2020-07-07 | Juniper Networks, Inc. | Unified control plane for nested clusters in a virtualized computing infrastructure |
US10819589B2 (en) * | 2018-10-24 | 2020-10-27 | Cognizant Technology Solutions India Pvt. Ltd. | System and a method for optimized server-less service virtualization |
US11516247B2 (en) * | 2018-12-11 | 2022-11-29 | Acronis International Gmbh | System and method for protecting network resources |
US11150978B2 (en) | 2019-04-26 | 2021-10-19 | Bank Of America Corporation | Automated system for intelligent error correction within an electronic blockchain ledger |
US10949125B2 (en) * | 2019-06-28 | 2021-03-16 | Amazon Technologies, Inc. | Virtualized block storage servers in cloud provider substrate extension |
US10949131B2 (en) * | 2019-06-28 | 2021-03-16 | Amazon Technologies, Inc. | Control plane for block storage service distributed across a cloud provider substrate and a substrate extension |
US11374789B2 (en) | 2019-06-28 | 2022-06-28 | Amazon Technologies, Inc. | Provider network connectivity to provider network substrate extensions |
US11044118B1 (en) | 2019-06-28 | 2021-06-22 | Amazon Technologies, Inc. | Data caching in provider network substrate extensions |
US11411771B1 (en) | 2019-06-28 | 2022-08-09 | Amazon Technologies, Inc. | Networking in provider network substrate extensions |
US10949124B2 (en) | 2019-06-28 | 2021-03-16 | Amazon Technologies, Inc. | Virtualized block storage servers in cloud provider substrate extension |
US11431497B1 (en) * | 2019-06-28 | 2022-08-30 | Amazon Technologies, Inc. | Storage expansion devices for provider network substrate extensions |
EP3695304B1 (en) * | 2019-09-12 | 2023-04-12 | Advanced New Technologies Co., Ltd. | Log-structured storage systems |
EP3682344A4 (en) | 2019-09-12 | 2020-12-02 | Advanced New Technologies Co., Ltd. | ENERGY STORAGE SYSTEMS |
EP3669263B1 (en) | 2019-09-12 | 2022-03-02 | Advanced New Technologies Co., Ltd. | Log-structured storage systems |
EP3695328A4 (en) * | 2019-09-12 | 2020-12-09 | Alibaba Group Holding Limited | NEWSPAPER STRUCTURE STORAGE SYSTEMS |
WO2019228570A2 (en) | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
WO2019228571A2 (en) | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
CN115398874A (zh) | 2019-09-12 | 2022-11-25 | 创新先进技术有限公司 | 日志结构存储*** |
US10942852B1 (en) | 2019-09-12 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Log-structured storage systems |
CN111183450B (zh) | 2019-09-12 | 2024-04-19 | 创新先进技术有限公司 | 日志结构存储*** |
US11079944B2 (en) | 2019-10-04 | 2021-08-03 | Zettaset, Inc. | Dynamic provisioning of container storage |
US11340797B2 (en) | 2019-10-04 | 2022-05-24 | Zettaset, Inc. | Dedicated encrypted container storage |
US11256816B2 (en) | 2019-10-04 | 2022-02-22 | Zettaset, Inc. | Dynamic provisioning of encrypted container storage |
US11392458B2 (en) * | 2019-10-25 | 2022-07-19 | EMC IP Holding Company LLC | Reconstructing lost data objects by generating virtual user files from available nodes within a cluster |
US11290259B2 (en) * | 2019-10-28 | 2022-03-29 | Gregory Tichy | Data distribution platform |
US11847503B2 (en) | 2020-01-28 | 2023-12-19 | Hewlett Packard Enterprise Development Lp | Execution of functions by clusters of computing nodes |
US12014065B2 (en) * | 2020-02-11 | 2024-06-18 | Pure Storage, Inc. | Multi-cloud orchestration as-a-service |
US11418931B2 (en) | 2020-04-06 | 2022-08-16 | Dell Products, Lp | Method and apparatus for operating a thin client across a 5G infrastructure |
US11470014B2 (en) | 2020-04-30 | 2022-10-11 | Dell Products, Lp | System and method of managing data connections to a communication network using tiered devices and telemetry data |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11789907B2 (en) * | 2020-07-27 | 2023-10-17 | Red Hat, Inc. | Quantum file metadata service |
US11651096B2 (en) | 2020-08-24 | 2023-05-16 | Burstiq, Inc. | Systems and methods for accessing digital assets in a blockchain using global consent contracts |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US12021759B2 (en) | 2020-09-28 | 2024-06-25 | VMware LLC | Packet processing with hardware offload units |
US11636053B2 (en) * | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11792134B2 (en) | 2020-09-28 | 2023-10-17 | Vmware, Inc. | Configuring PNIC to perform flow processing offload using virtual port identifiers |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US11736565B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Accessing an external storage through a NIC |
KR20220049329A (ko) * | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 및 스토리지 장치의 동작 방법 |
CN114442903B (zh) * | 2020-10-30 | 2024-07-05 | 伊姆西Ip控股有限责任公司 | 管理存储***的方法、电子设备和计算机程序产品 |
JP2022099948A (ja) * | 2020-12-23 | 2022-07-05 | 株式会社日立製作所 | ストレージシステムおよびストレージシステムにおけるデータ量削減方法 |
US11776090B2 (en) | 2021-04-12 | 2023-10-03 | Sas Institute Inc. | Dynamic per-node pre-pulling in distributed computing |
US20230032836A1 (en) * | 2021-07-30 | 2023-02-02 | Pure Storage, Inc. | Storage System with Blockchain Based Features |
US11698858B2 (en) | 2021-08-19 | 2023-07-11 | Micron Technology, Inc. | Prediction based garbage collection |
US11989421B2 (en) | 2021-08-19 | 2024-05-21 | Micron Technology, Inc. | Adjustable data protection scheme using artificial intelligence |
US20230054838A1 (en) * | 2021-08-23 | 2023-02-23 | Verizon Patent And Licensing Inc. | Methods and Systems for Location-Based Audio Messaging |
US11847510B2 (en) * | 2021-11-12 | 2023-12-19 | Nec Corporation | System for application self-optimization in serverless edge computing environments |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11971900B2 (en) | 2022-02-04 | 2024-04-30 | Bank Of America Corporation | Rule-based data transformation using edge computing architecture |
US20230403340A1 (en) * | 2022-06-13 | 2023-12-14 | Nec Laboratories America, Inc. | Flexible and efficient communication in microservices-based stream analytics pipeline |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
US11789784B1 (en) | 2023-02-08 | 2023-10-17 | Bank Of America Corporation | Monitoring and management of a cloud-based computing system |
CN116755640B (zh) * | 2023-08-21 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 联盟链的数据处理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150052392A1 (en) * | 2013-08-19 | 2015-02-19 | Microsoft Corporation | Disconnected Operation for Systems Utilizing Cloud Storage |
US20160321654A1 (en) * | 2011-04-29 | 2016-11-03 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
CN107615730A (zh) * | 2015-03-31 | 2018-01-19 | 伊姆西知识产权控股有限责任公司 | 跨文件***对象和客户端共享的数据的安全的基于云的存储 |
WO2018022779A1 (en) * | 2016-07-26 | 2018-02-01 | Pure Storage, Inc. | Evacuating blades in a storage array that includes a plurality of blades |
US9910618B1 (en) * | 2017-04-10 | 2018-03-06 | Pure Storage, Inc. | Migrating applications executing on a storage system |
Family Cites Families (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6718352B1 (en) | 2001-03-20 | 2004-04-06 | Emc Corporation | Methods and apparatus for managing a data set stored on a data storage device |
US6857045B2 (en) | 2002-01-25 | 2005-02-15 | International Business Machines Corporation | Method and system for updating data in a compressed read cache |
US6728738B2 (en) | 2002-04-03 | 2004-04-27 | Sun Microsystems, Inc. | Fast lifetime analysis of objects in a garbage-collected system |
US6895464B2 (en) | 2002-06-03 | 2005-05-17 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows |
US7334124B2 (en) | 2002-07-22 | 2008-02-19 | Vormetric, Inc. | Logical access block processing protocol for transparent secure file storage |
US7146521B1 (en) | 2002-08-21 | 2006-12-05 | 3Pardata, Inc. | Preventing damage of storage devices and data loss in a data storage system |
CA2461446A1 (en) | 2002-08-29 | 2004-03-11 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory apparatus and method for writing data into the flash memory device |
US6831865B2 (en) | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
US20040153844A1 (en) | 2002-10-28 | 2004-08-05 | Gautam Ghose | Failure analysis method and system for storage area networks |
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 |
WO2004095201A2 (en) | 2003-04-09 | 2004-11-04 | Intervideo 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 | パナソニック株式会社 | データアクセス装置および記録媒体 |
US8042163B1 (en) | 2004-05-20 | 2011-10-18 | Symatec Operating Corporation | Secure storage access using third party capability tokens |
US7533292B2 (en) | 2004-07-15 | 2009-05-12 | International Business Machines Corporation | Management method for spare disk drives in a raid system |
US7953979B2 (en) | 2004-12-15 | 2011-05-31 | Exostar Corporation | Systems and methods for enabling trust in a federated collaboration |
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 |
WO2006116183A1 (en) | 2005-04-25 | 2006-11-02 | Network Appliance, 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 |
US9645943B2 (en) | 2011-02-22 | 2017-05-09 | Infinidat Ltd. | Storage arrangement and method using a plurality of storage spaces which have separate control layers and separate mapping structures |
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 |
WO2013016013A1 (en) | 2011-07-27 | 2013-01-31 | Cleversafe, Inc. | 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 | メモリ・デバイス |
US9544294B2 (en) | 2011-09-29 | 2017-01-10 | Oracle International Corporation | Pluggable authorization policies |
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 |
WO2013074106A1 (en) | 2011-11-17 | 2013-05-23 | Intel Corporation | 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 |
US10341435B2 (en) | 2012-06-12 | 2019-07-02 | Centurylink Intellectual Property Llc | High performance cloud storage |
US9130927B2 (en) | 2012-07-02 | 2015-09-08 | Sk Planet Co., Ltd. | Single certificate service system and operational method thereof |
US9047181B2 (en) | 2012-09-07 | 2015-06-02 | Splunk Inc. | Visualization of data from clusters |
US8769651B2 (en) | 2012-09-19 | 2014-07-01 | Secureauth Corporation | Mobile multifactor single-sign-on authentication |
US9462502B2 (en) | 2012-09-25 | 2016-10-04 | Empire Technology Development Llc | Limiting data usage of a device connected to the internet via tethering |
US9245144B2 (en) | 2012-09-27 | 2016-01-26 | Intel Corporation | Secure data container for web applications |
US8990914B2 (en) | 2012-09-28 | 2015-03-24 | Intel Corporation | Device, method, and system for augmented reality security |
US8990905B1 (en) | 2012-09-28 | 2015-03-24 | Emc Corporation | Protected resource access control utilizing intermediate values of a hash chain |
US8850546B1 (en) | 2012-09-30 | 2014-09-30 | Emc Corporation | Privacy-preserving user attribute release and session management |
US20140101434A1 (en) | 2012-10-04 | 2014-04-10 | Msi Security, Ltd. | Cloud-based file distribution and management using real identity authentication |
US9209973B2 (en) | 2012-11-20 | 2015-12-08 | Google Inc. | Delegate authorization in cloud-based storage system |
US8997197B2 (en) | 2012-12-12 | 2015-03-31 | Citrix Systems, Inc. | Encryption-based data access management |
US9317223B2 (en) | 2012-12-17 | 2016-04-19 | International Business Machines Corporation | Method and apparatus for automated migration of data among storage centers |
US9075529B2 (en) | 2013-01-04 | 2015-07-07 | International Business Machines Corporation | Cloud based data migration and replication |
US9063967B2 (en) | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
US9052917B2 (en) | 2013-01-14 | 2015-06-09 | Lenovo (Singapore) Pte. Ltd. | Data storage for remote environment |
US9483657B2 (en) | 2013-01-14 | 2016-11-01 | Accenture Global Services Limited | Secure online distributed data storage services |
US9009526B2 (en) | 2013-01-24 | 2015-04-14 | Hewlett-Packard Development Company, L.P. | Rebuilding drive data |
US20140229654A1 (en) | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier |
US20140230017A1 (en) | 2013-02-12 | 2014-08-14 | Appsense Limited | Programmable security token |
US8902532B2 (en) | 2013-03-20 | 2014-12-02 | International Business Machines Corporation | Write avoidance areas around bad blocks on a hard disk drive platter |
GB2513377A (en) | 2013-04-25 | 2014-10-29 | Ibm | Controlling data storage in an array of storage devices |
US9317382B2 (en) | 2013-05-21 | 2016-04-19 | International Business Machines Corporation | Storage device with error recovery indication |
US10038726B2 (en) | 2013-06-12 | 2018-07-31 | Visa International Service Association | Data sensitivity based authentication and authorization |
US9124569B2 (en) | 2013-06-14 | 2015-09-01 | Microsoft Technology Licensing, Llc | User authentication in a cloud environment |
US8898346B1 (en) | 2013-06-20 | 2014-11-25 | Qlogic, Corporation | Method and system for configuring network devices |
US8984602B1 (en) | 2013-06-28 | 2015-03-17 | Emc Corporation | Protected resource access control utilizing credentials based on message authentication codes and hash chain values |
US9454423B2 (en) | 2013-09-11 | 2016-09-27 | Dell Products, Lp | SAN performance analysis tool |
US10216949B1 (en) | 2013-09-20 | 2019-02-26 | Amazon Technologies, Inc. | Dynamic quorum membership changes |
CN105531690B (zh) | 2013-09-27 | 2018-11-09 | 英特尔公司 | 用于确定合适目标的方法、***及存储介质 |
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 |
CN105830166B (zh) | 2014-06-27 | 2018-02-23 | 华为技术有限公司 | 一种控制器、闪存装置和将数据写入闪存装置的方法 |
US9516167B2 (en) | 2014-07-24 | 2016-12-06 | Genesys Telecommunications Laboratories, Inc. | Media channel management apparatus for network communications sessions |
US10204010B2 (en) | 2014-10-03 | 2019-02-12 | Commvault Systems, Inc. | Intelligent protection of off-line mail data |
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 |
US20160350009A1 (en) | 2015-05-29 | 2016-12-01 | Pure Storage, Inc. | Buffering data to be written to an array of non-volatile storage devices |
US10021170B2 (en) | 2015-05-29 | 2018-07-10 | Pure Storage, Inc. | Managing a storage array using client-side services |
US9300660B1 (en) | 2015-05-29 | 2016-03-29 | Pure Storage, Inc. | Providing authorization and authentication in a cloud for a user of a storage array |
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 |
EP3479252A1 (en) * | 2016-06-30 | 2019-05-08 | British Telecommunications Public Limited Company | Data storage system |
US10459657B2 (en) * | 2016-09-16 | 2019-10-29 | Hewlett Packard Enterprise Development Lp | Storage system with read cache-on-write buffer |
US10620860B2 (en) * | 2017-02-13 | 2020-04-14 | Oracle International Corporation | System for storing data in tape volume containers |
-
2019
- 2019-03-14 US US16/353,775 patent/US10976962B2/en active Active
- 2019-03-15 DE DE112019000841.2T patent/DE112019000841T5/de active Pending
- 2019-03-15 WO PCT/US2019/022454 patent/WO2019178470A1/en active Application Filing
- 2019-03-15 CN CN201980019304.3A patent/CN111868676A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160321654A1 (en) * | 2011-04-29 | 2016-11-03 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
US20150052392A1 (en) * | 2013-08-19 | 2015-02-19 | Microsoft Corporation | Disconnected Operation for Systems Utilizing Cloud Storage |
CN107615730A (zh) * | 2015-03-31 | 2018-01-19 | 伊姆西知识产权控股有限责任公司 | 跨文件***对象和客户端共享的数据的安全的基于云的存储 |
WO2018022779A1 (en) * | 2016-07-26 | 2018-02-01 | Pure Storage, Inc. | Evacuating blades in a storage array that includes a plurality of blades |
US9910618B1 (en) * | 2017-04-10 | 2018-03-06 | Pure Storage, Inc. | Migrating applications executing on a storage system |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783419A (zh) * | 2019-11-06 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 分布式存储方法及装置、电子设备和存储介质 |
CN112783419B (zh) * | 2019-11-06 | 2024-05-24 | 阿里巴巴集团控股有限公司 | 分布式存储方法及装置、电子设备和存储介质 |
CN112333283A (zh) * | 2020-11-20 | 2021-02-05 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 自主高端存储阵列***架构 |
CN112445770A (zh) * | 2020-11-30 | 2021-03-05 | 清远职业技术学院 | 多维乱序存储的超大规模高性能数据库引擎及云服务平台 |
CN112887744B (zh) * | 2021-01-21 | 2022-03-04 | 上海薏欣文化传播有限公司 | 一种大健康智慧直播厅直播数据传输控制方法 |
CN112887744A (zh) * | 2021-01-21 | 2021-06-01 | 上海薏欣文化传播有限公司 | 一种大健康智慧直播厅直播数据传输控制方法 |
CN112988080B (zh) * | 2021-05-10 | 2021-07-30 | 鹏城实验室 | 多数据页同时写入方法、3d闪存装置及计算机存储介质 |
CN112988080A (zh) * | 2021-05-10 | 2021-06-18 | 鹏城实验室 | 多数据页同时写入方法、3d闪存装置及计算机存储介质 |
CN113518002A (zh) * | 2021-05-24 | 2021-10-19 | 平安普惠企业管理有限公司 | 一种基于无服务器平台的监控方法、装置、设备及存储介质 |
CN113518002B (zh) * | 2021-05-24 | 2022-11-25 | 平安普惠企业管理有限公司 | 一种基于无服务器平台的监控方法、装置、设备及存储介质 |
CN113703676A (zh) * | 2021-07-30 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种双活卷的调用方法、装置、设备和介质 |
CN113703676B (zh) * | 2021-07-30 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种双活卷的调用方法、装置、设备和介质 |
CN113778620A (zh) * | 2021-08-12 | 2021-12-10 | 桂林电子科技大学 | 基于多sdn控制器与软硬件协同的大规模集群存储***架构 |
CN116719480A (zh) * | 2023-08-04 | 2023-09-08 | 青岛鼎信通讯股份有限公司 | 一种基于数据孪生的电能表数据存储方法、装置及介质 |
CN116719480B (zh) * | 2023-08-04 | 2023-11-14 | 青岛鼎信通讯股份有限公司 | 一种基于数据孪生的电能表数据存储方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019178470A1 (en) | 2019-09-19 |
US20190286373A1 (en) | 2019-09-19 |
DE112019000841T5 (de) | 2020-11-12 |
US10976962B2 (en) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113302584B (zh) | 基于云的存储***的存储管理 | |
US11354058B2 (en) | Local relocation of data stored at a storage device of a storage system | |
US11307998B2 (en) | Storage efficiency of encrypted host system data | |
US11822807B2 (en) | Data replication in a storage system | |
US11133076B2 (en) | Efficient relocation of data between storage devices of a storage system | |
US11869586B2 (en) | Increased data protection by recovering data from partially-failed solid-state devices | |
US10963189B1 (en) | Coalescing write operations in a cloud-based storage system | |
CN111868676A (zh) | 在基于云的存储***中服务i/o操作 | |
CN114127693A (zh) | 虚拟存储***中的数据恢复 | |
US10929046B2 (en) | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device | |
CN114041112A (zh) | 虚拟存储***架构 | |
US11194473B1 (en) | Programming frequently read data to low latency portions of a solid-state storage array | |
US20200327953A1 (en) | Adaptive threshold for bad flash memory blocks | |
US11086713B1 (en) | Optimized end-to-end integrity storage system | |
US11487665B2 (en) | Tiered caching of data in a storage system | |
US11294588B1 (en) | Placing data within a storage device | |
US20200210376A1 (en) | Optimizing local data relocation operations of a storage device of a storage system | |
US11899582B2 (en) | Efficient memory dump | |
US12001700B2 (en) | Dynamically selecting segment heights in a heterogeneous RAID group | |
US11494109B1 (en) | Erase block trimming for heterogenous flash memory storage devices | |
US20210110055A1 (en) | Data Deletion for a Multi-Tenant Environment | |
US11403043B2 (en) | Efficient data compression by grouping similar data within a data segment | |
US11775189B2 (en) | Segment level heterogeneity | |
US20220092025A1 (en) | Queue management for data relocation | |
US11334254B2 (en) | Reliability based flash page sizing |
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 |