首页 / 专利库 / 资料储存系统 / 大容量存储 / 可扩展存储装置

可扩展存储装置

阅读:43发布:2024-02-13

专利汇可以提供可扩展存储装置专利检索,专利查询,专利分析的服务。并且本 发明 涉及可扩展存储装置,具体提供了一种系统,包括:主机 接口 逻辑,能实现经由主机接口协议接口连接至主机,并经由对等协议接口连接至二级代理,所述接口连接至所述主机包括从提交队列中的条目读取存储 请求 ,所述接口连接至所述二级代理包括将存储子请求转发至所述二级代理,所述接口连接至所述主机和所述接口连接至所述二级代理经由相同物理信道实施;子请求生成逻辑,能实现至少部分基于包括在所述存储请求中的地址信息来确定所述存储子请求;以及存储容量报告逻辑,能实现回报所述主机总存储容量,所述总存储容量至少部分基于所述二级代理的存储容量。,下面是可扩展存储装置专利的具体信息内容。

1.一种系统,包括:
主机接口逻辑,能实现经由主机接口协议接口连接至主机,并经由对等协议接口连接至二级代理,所述接口连接至所述主机包括从提交队列中的条目读取存储请求,所述接口连接至所述二级代理包括将存储子请求转发至所述二级代理,所述接口连接至所述主机和所述接口连接至所述二级代理经由相同物理信道实施;
子请求生成逻辑,能实现至少部分基于包括在所述存储请求中的地址信息来确定所述存储子请求;以及
存储容量报告逻辑,能实现回报所述主机总存储容量,所述总存储容量至少部分基于所述二级代理的存储容量。
2.根据权利要求1所述的系统,其中,所述物理信道与快速外围组件互联PCIe信道和无限带宽信道中的至少一个兼容。
3.根据权利要求1所述的系统,还包括所述主机、所述二级代理以及将所述主机耦接至所述主机接口逻辑和/或所述二级代理的交换机中的一个或多个。
4.根据权利要求1所述的系统,还包括存储接口逻辑和大容量存储器,所述存储接口逻辑被实现为接口连接至所述大容量存储器,且其中,所述总存储容量还根据所述大容量存储器的存储容量。
5.根据权利要求1所述的系统,其中,所述接口连接至所述主机还包括将整体状态写入完成队列中的条目,以及所述接口连接至所述二级代理还包括经由将所述整体状态写入所述完成队列而将来自所述二级代理的子状态作为所述整体状态的至少一部分转发至所述主机;且还包括子状态积累逻辑,被实现为至少部分基于所述子状态来确定所述整体状态。
6.根据权利要求1所述的系统,其中,所述系统包括在固态磁盘SSD中。
7.一种方法,包括:
经由主机接口逻辑,经由主机接口协议接口连接至主机,并经由对等协议接口连接至二级代理,所述接口连接至所述主机包括从提交队列中的条目读取存储请求,所述接口连接至所述二级代理包括将存储子请求转发至所述二级代理,所述接口连接至所述主机和所述接口连接至所述二级代理经由相同物理信道实施;
经由子请求生成逻辑,至少部分基于包括在所述存储请求中的地址信息来确定所述存储子请求;以及
经由存储容量报告逻辑,回报所述主机总存储容量,所述总存储容量至少部分基于所述二级代理的存储容量。
8.根据权利要求7所述的方法,其中,所述物理信道与快速外围组件互联PCIe信道和无限带宽信道中的至少一个兼容。
9.根据权利要求7所述的方法,其中,交换机将所述主机耦接至所述主机接口逻辑和/或所述二级代理。
10.根据权利要求7所述的方法,还包括经由存储接口逻辑,接口连接至大容量存储器,且其中,所述总存储容量还根据所述大容量存储器的存储容量。
11.根据权利要求7所述的方法,其中,所述接口连接至所述主机还包括将整体状态写入完成队列中的条目,以及所述接口连接至所述二级代理还包括经由将所述整体状态写入所述完成队列而将来自所述二级代理的子状态作为所述整体状态的至少一部分转发至所述主机;且还包括经由子状态积累逻辑,至少部分基于所述子状态来确定所述整体状态。
12.根据权利要求7所述的方法,其中,所述主机接口逻辑、所述子请求生成逻辑以及所述存储容量报告逻辑包括在固态磁盘SSD中。
13.一种非易失性计算机可读介质,其中存储有一组指令,所述指令在被处理装置执行时使所述处理装置执行包括以下的步骤:
经由主机接口逻辑,经由主机接口协议接口连接至主机,并经由对等协议接口连接至二级代理,所述接口连接至所述主机包括从提交队列中的条目读取存储请求,所述接口连接至所述二级代理包括将存储子请求转发至所述二级代理,所述接口连接至所述主机和所述接口连接至所述二级代理经由相同物理信道实施;
经由子请求生成逻辑,至少部分基于包括在所述存储请求中的地址信息来确定所述存储子请求;以及
经由存储容量报告逻辑,回报所述主机总存储容量,所述总存储容量至少部分基于所述二级代理的存储容量。
14.根据权利要求13所述的非易失性计算机可读介质,其中,所述物理信道与快速外围组件互联PCIe信道和无限带宽信道中的至少一个兼容。
15.根据权利要求13所述的非易失性计算机可读介质,其中,交换机将所述主机耦接至所述主机接口逻辑和/或所述二级代理。
16.根据权利要求13所述的非易失性计算机可读介质,其中,所述步骤还包括经由存储接口逻辑,接口连接至大容量存储器,且其中,所述总存储容量还根据所述大容量存储器的存储容量。
17.根据权利要求13所述的非易失性计算机可读介质,其中,所述接口连接至所述主机还包括将整体状态写入完成队列中的条目,以及所述接口连接至所述二级代理还包括经由将所述整体状态写入所述完成队列而将来自所述二级代理的子状态作为所述整体状态的至少一部分转发至所述主机;且其中,所述步骤还包括经由子状态积累逻辑,至少部分基于所述子状态来确定所述整体状态。
18.根据权利要求13所述的非易失性计算机可读介质,其中,所述主机接口逻辑、所述子请求生成逻辑以及所述存储容量报告逻辑包括在固态磁盘SSD中。
19.一种系统,包括:
用于经由主机接口协议接口连接至主机的装置以及用于经由对等协议接口连接至二级代理的装置,用于接口连接至所述主机的所述装置包括用于从提交队列中的条目读取存储请求的装置,用于接口连接至所述二级代理的所述装置包括用于将存储子请求转发至所述二级代理的装置,所述接口连接至所述主机和所述接口连接至所述二级代理经由相同物理信道实施;
用于至少部分基于包括在所述存储请求中的地址信息来确定所述存储子请求的装置;
以及
用于回报所述主机总存储容量的装置,所述总存储容量至少部分基于所述二级代理的存储容量。
20.根据权利要求19所述的系统,其中,所述物理信道与快速外围组件互联PCIe信道和无限带宽信道中的至少一个兼容。
21.根据权利要求19所述的系统,其中,交换机将所述主机耦接至所述主机接口逻辑和/或所述二级代理。
22.根据权利要求19所述的系统,还包括用于接口连接至大容量存储器的装置,且其中,所述总存储容量还根据所述大容量存储器的存储容量。
23.根据权利要求19所述的系统,其中,用于接口连接至所述主机的所述装置还包括用于将整体状态写入完成队列中的条目的装置,以及用于接口连接至所述二级代理的所述装置还包括用于经由将所述整体状态写入所述完成队列而将来自所述二级代理的子状态作为所述整体状态的至少一部分转发至所述主机的装置;且还包括用于至少部分基于所述子状态来确定所述整体状态的装置。
24.根据权利要求19所述的系统,其中,所述系统包括在固态磁盘SSD中。

说明书全文

可扩展存储装置

[0001] 本申请是申请号为201180040009.X、申请日为2011年6月17日、发明名称为“可扩展存储装置”的发明专利申请的分案申请。
[0002] 相关申请的交叉引用
[0003] 在所附的申请数据表、请求或传递单(如适用,如果有的话)中列出了对该申请的优先权要求。在即时申请的类型所允许的范围内,为了所有目的,本申请结合所有由即时申请的所有者拥有的下列申请供参考:
[0004] 于2010年6月18日提交的美国临时申请第61/356,443号(案号SF-10-05),第一署名发明人为Timothy Lawrence Canepa,且题为“SCALABLE STORAGE DEVICES”;以及[0005] 于2011年6月16日提交的美国临时申请第61/497,525号(案号SF-10-05B),第一署名发明人为Timothy Lawrence Canepa,且题为“SCALABLE STORAGE DEVICES”。

技术领域

[0006] 本发明涉及一种可扩展存储装置。

背景技术

[0007] 领域:访问存储装置的进步对于提供性能、效率和使用实用性的提高是必要的。
[0008] 相关技术:除非被明确认定被公开或众所周知,否则为了上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公开为已知的或者是现有技术的一部分。为了所有目的,将本文中所引用的所有参考文献(如有的话)(包括专利、专利申请和出版物)整体上结合于此供参考,而无论是否被具体结合。

发明内容

[0009] 本发明可以多种方式实现,这些方式包括过程、制品、设备、系统、物质组分和计算机可读介质(诸如计算机可读存储介质(例如,光学和/或磁性大容量存储装置中的介质(诸如盘),或具有诸如闪存存储的非易失性存储器的集成电路))或计算机网络,其中,通过光学或电子通信链路发送程序指令。在本说明书中,这些实施或本发明可采取的任何其他形式可被称为技术。具体实施方式提供了能实现在上文认定的领域中的性能、效率和使用实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分更迅速理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的实例性实施方式。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。附图说明
[0010] 图1A示出了用于可扩展存储装置的技术的实施方式的所选结构细节,包括主机、具有作为相应的一级代理而可运行的一个或多个存储装置的主机可视存储、和具有作为相应的二级代理而可运行的一个或多个存储装置的主机可视存储。
[0011] 图1B示出了用于可扩展存储装置的技术的另一实施方式的所选结构细节,包括主机、具有作为相应的一级代理而可运行的一个或多个存储装置的主机可视存储、和具有作为相应的二级代理而可运行的一个或多个存储装置的主机可视存储。
[0012] 图2示出了用于可扩展存储装置的技术的实施方式的所选处理细节,包括由一级代理和一个或多个二级代理执行的动作。
[0013] 图3示出了用于可扩展存储装置的技术的实施方式中的主机、一级代理和二级代理寻址的所选细节。
[0014] 图4示出了能实现作为一级代理而运行的可扩展存储装置的实施方式的所选结构细节。
[0015] 图5示出了能实现作为二级代理而运行的可扩展存储装置的实施方式的所选结构细节。
[0016] 附图中的附图标记列表
[0017]附图标记 元件名称
100 主机
101 耦接器
110 主机可视
存储
110.A 存储装置
110.N 存储装置
111.A 耦接
111.N 耦接
120 主机不可
视存储
120.A 存储装置
120.N 存储装置
121.A 耦接
121.N 耦接器
130 主机可视
存储
130.A 存储装置
130.N 存储装置
131.A 耦接器
131.N 耦接器
140 主机不可
视存储
140.A 存储装置
140.N 存储装置
141.A 耦接器
141.N 耦接器
151 虚线箭头
152 虚线箭头
153 虚线箭头
154 虚线箭头
180 主机-存储
装置耦接

181 主机-存储
装置耦接

190A 附加卡
190B 附加卡
201 开始
202 接受来自
主机的请

203 本地?
203N 否
203Y 是
204 转换为本
地LBA
205 本地处理
206 将状态提
供至主机
207 转发至二
级代理
207R 子请求
208 等待完成
209A 接受来自
二级代理
的子状态
209 一级动作
211 接受来自
一级代理
的子请求
212 转换为本
地LBA
213 本地处理
214 将子状态
提供至一
级代理
214S 子状态
219 二级动作
299 结束
310 主机地址
空间
311 主机LBA范
围1
312 主机LBA范
围2
313 主机LBA范
围3
314 主机LBA范
围4
315 主机LBA范
围5
320 一级地址
空间
321 一级LBA范
围1
322 一级LBA范
围2
323 一级LBA范
围3
330 二级地址
空间
331A 二级A LBA
范围1
331B 二级B LBA
范围1
332A 二级A LBA
范围2
332B 二级B LBA
范围2
333A 二级A LBA
范围3
401 PCIe接口
402 LBA,长度
转换
403 存储接口
404 大容量存

404F 闪存
404M 磁性
404O 光学
405 子请求生
成&子状态
累积
501 子请求接
受&子状态
生成
[0018]
[0019]
[0020]

具体实施方式

[0021] 以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是实例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显着的)可应用于独立的实施方式组;如本文所使用,这些标签并不明确地意指传送质量、或任何形式的偏爱或偏见,而只是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施方式用于描述过程、方法和/或程序指令特征的变化,其他实施方式均被设想为根据预定的或动态确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。许多具体细节列于以下描述中,以提供对本发明的透彻理解。为实例的目的而提供细节,且本发明可根据未列出一些或所有细节的权利要求来实践。为清楚的目的,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要模糊。
[0022] 介绍
[0023] 仅包括该介绍,以便于更迅速理解具体实施方式;本发明不限于在介绍中提出的概念(包括明确的实例,如有的话),因为任何介绍的段落均是整个主题的缩略图,且不意味着是详尽或限制的描述。例如,以下介绍仅对某些实施方式提供由空间和组织限定的概述信息。有许多其他实施方式,包括最终将针对其描绘权利要求的那些实施方式,在整个说明书的其余部分中讨论。
[0024] 缩略语
[0025] 本文中所限定的各种速记缩写或首字母缩写词中的至少一些是指本文所使用的某些元件。
[0026]缩写 说明
AHCI 高级主机控制器接口
CF 紧凑型闪存
DIF 数据完整性字段
DIX 数据完整性扩展
DMA 直接存储器存取
eNVMHCI 企业非易失性存储器主机控制器接口
eSATA 外部串行高级技术附件
IC 集成电路
IDE 集成驱动电子装置
IO 输入/输出
JBOD 简单磁盘
LBA 逻辑地址
MMC 多媒体卡
MsgD 带有数据载荷的消息请求
PC 个人计算机
PCIe 快速外围组件互联(快速PCI)
PDA 个人数字助理
RAID 廉价/独立磁盘的冗余阵列
RMW 读-修改-写
ROM 只读存储器
SAS 串行连接小型计算机系统接口(串行SCSI)
SATA 串行高级技术附件(串行ATA)
SCSI 小型计算机系统接口
SD 安全数字
SSD 固态磁盘/驱动器
USB 通用串行总线
[0027]
[0028] 使用可扩展存储装置的技术表示作为单一逻辑接口的多个主机可访问存储装置,概念性集合由所述装置实施的存储。装置的一级代理使用主机接口协议接受来自主机的存储请求,在内部处理请求和/或使用对等协议将请求作为子请求转发至存储装置的二级代理。二级代理接受并处理子请求,并向一级代理和/或主机报告针对每个子请求的子状态信息。可选地,一级代理将子状态积累成整体状态以提供给主机。一级代理将可用的存储(包括由一级代理实施的存储以及由二级代理实施并被分配以集合的存储)报告至主机。在集合分配之后,二级代理将零可用存储报告至主机或可代替地存储其余部分。
[0029] 在主机访问和/或故障恢复期间,代理之间的对等通信可选地用于传送冗余信息。各种故障恢复技术重新分配存储、重新指定一级/二级/可配置代理、经由冗余信息恢复数据或者它们的任何组合。
[0030] PCIe接口与系统中的主机具有固有的奇异关系(singular relationship)。每个PCIe接口均表示装置功能的单一入口、无论所述功能是否是存储、网络化或一些其他计算系统容量。系统中的每个PCIe装置均表示系统中的相应不同实体。然而,通过对等通信流量,几个单个PCIe装置分组到一起,使得装置作为主机的单一PCIe装置而出现。通过利用PCIe的对等容量,可经由能使集合/分组的装置作为主机的单一存储子系统而出现的对等通信,通过将多个PCIe存储装置集合和/或分组到一起来实现可扩展存储架构。在一些实施方式中,仅基于LBA在PCIe存储装置之间分配请求。仅LBA分配不要求组中的任何特定装置的存储被用于特定装置来请求路由,从而消除作为单点故障的存储。
[0031] 在一些实施方式和/或使用场景中,集合/分组能够提高性能和/或容量,同时使主机作为单一逻辑接口而出现。在一些实施方式和/或使用场景中,经由基于LBA的请求路由来消除所有单点的存储故障。在一些实施方式和/或使用场景中,集合/分组在多个存储装置之间分配请求载荷,从而缩放对主机透明的容量和性能。除容量和延迟变化之外,在主机不需要控制集合/分组的可观察性且不需要集合/分组的可观察性的意义上,容量和性能缩放对于主机是透明的。在一些实施方式和/或使用场景中,集合/分组提供了对称多处理器存储复合体
[0032] 在一些实施方式和/或使用场景中,集合/分组能使主机作为单一逻辑装置来访问在多个物理装置上分配的资源的集合。例如,集合/分组能使主机作为单一逻辑存储装置来访问在多个物理存储装置上分配的多个存储范围的集合。将如由主机提供的LBA(和可选长度)作为请求的一部分转发保留了LBA(和可选长度)信息。在目标装置上保留LBA(可选长度)信息和转换能实现保持准确的完整性元数据(诸如DIV/DIX参照完整性)和/或能实现装置的独立(例如并行)运行。
[0033] 在一些实施方式和/或使用场景中,集合/分组能针对存储容量实现透明冗余和/或恢复,诸如各种RAID、镜像和故障转移实施。在各种实施方式中,主机通信流量主要是数据通信流量,而对等通信流量主要是控制通信流量。在各种实施方式中,对等通信流量包括数据(例如,在RAID恢复运行期间,或在传输积累的奇偶校验信息期间)。
[0034] 在一些实施方式和/或使用场景中,集合/分组能实现带有耦接至SSD(其中耦接至主机的一个或多个PCIe链路(每个均具有一个或多个通道(lane))的带宽被分配(对主机透明)在多个SSD、多个闪存控制器(诸如用于SSD中)和/或多个闪存芯片之间)的主机的系统。例如一个主机耦接的PCIe链路(例如,具有八个通道)的带宽被分配在四个SSD或可替代的八个闪存控制器(每个SSD或闪存控制器具有一个PCIe链路,其带有例如少于八个通道)之间。对于另一实例,四个主机耦接的PCIe链路的带宽被分配在64个SSD或可替代的256个闪存控制器之间。对于另一实例,一个主机耦接的PCIe链路的带宽被分配在32个闪存芯片或可替代的64个闪存芯片之间。对于另一实例,四个主机耦接的PCIe链路的带宽被分配在128个闪存芯片或可替代的256个闪存芯片之间。
[0035] 在各种实施方式中,一级代理确定主机对二级代理存储映射(例如,其主机LBA范围对应于其二级代理)。例如,主机LBA以预定大小(例如64KB)在物理驱动器之间条带化。对于另一实例,主机LBA根据RAID实施(例如,RAID0、RAID1或RAID5)而条带化。对于又一实例,条带化根据工作负荷而动态改变(例如,第一条带化用于第一工作负荷,以及第二条带化用于第二工作负荷)。
[0036] 在一些实施方式中,一组PCIe存储装置(可从一个或多个主机中访问)经由总线拓扑结构耦接,从而能实现彼此对等通信。所述组的PCIe存储装置被配置为使得所述组中仅一个PCIe存储装置接收用于特定主机逻辑连接的请求。在一些实施方式中,有连接到组的多个连接,从而能使不同主机逻辑连接来供应由组中的不同PCIe存储装置接收的请求。
[0037] 所述组的PCIe存储装置的配置取决于装置如何暴露于主机。若组中的所有装置例如经由透明交换机直接暴露于主机,则所有装置(但能实现主机逻辑连接的装置)将零存储容量报告回主机,同时装置能使主机逻辑连接报告用于特定主机逻辑连接的所配置的组容量。所配置的容量取决于组的存储如何在主机逻辑连接之间被划分,以及存储如何被配置或组织(诸如JBOD或RAID)。若一些装置隐藏在主机后面,例如,桥或非透明交换机,则零容量报告不会被不暴露于主机的装置执行。主机逻辑连接仅将请求直接发送至单一PCIe装置接口,该单一PCIe装置接口随后对组中的其他装置分配和协调请求。
[0038] 在其他实施方式中,能实现相应主机逻辑连接的两个或多个装置报告与装置和/或其他装置的存储容量重叠的存储容量。例如,能实现第一主机逻辑连接的第一装置报告等于第一装置的总存储容量和第二装置的总存储容量的集合存储容量。能实现第二主机逻辑连接的第三装置也报告集合存储容量。经由第一主机逻辑连接接收的主机请求或经由第二主机逻辑连接接收的主机请求引用第一装置和第二装置的相同物理存储(可选地和/或选择性地使用不同LBA)。
[0039] 由存储装置实施的存储无需完全直接暴露(或不暴露)于主机。例如,特定存储装置实施存储,该存储被部分分配至一组存储装置(例如,不直接暴露于主机),并被部分分配以用于直接暴露于主机。特定存储装置不对主机报告零容量,而是报告对应于部分分配以用于直接暴露于主机的存储量。
[0040] 在一些实施方式中,所述组的装置的初始配置由驻留在主机上和/或一个或多个可选ROM中的软件实施。初始配置的实例是哪些装置能实现主机逻辑连接,以及那些不能。初始配置的另一实例是有多少存储可分配至不直接暴露于主机的一组装置。
[0041] 在一些实施方式中,例如响应于故障,所述组的装置的配置是在系统运行的同时(诸如当“热备件”被插入或当装置被添加或动态从组中移除时)被执行。例如,当热备用装置被插入时,涉及主机和一级代理上的一个或多个装置驱动器的发现处理识别插入装置,并相应地配置插入装置(诸如更换有故障的装置)。经由例如来自插入装置和/或“热插拔”事件的公告来表示装置的插入。
[0042] 当主机发出存储读/写请求(诸如eNVMHCI或AHCI兼容的请求)时,接收该请求的装置使用请求的LBA(和可选长度)将该请求转发至所述组的装置以实施所请求的存储。根据请求的长度和组的组织(例如,JBOD或RAID),该请求例如作为多个子请求被路由至所述组的多以一个的装置。
[0043] 根据各种实施方式,当所述组中的特定装置接收到子请求时,特定装置将LBA(和可选的任何所提供的长度)转换为本地LBA(和长度)、处理子请求、以及随后将子请求的数据直接传送至主机存储器/从主机存储器传送子请求的数据。主机存储器的实例是一种元件,其能实现经由执行以特定地址存储数据到存储器的指令而保留通过主机写入的数据,并能针对主机来实现经由执行以特定地址从存储器中读取数据的指令而读取写入的数据。特定装置可选和/或选择性地获取将来自以下中的一个或多个的数据传送至其上的主机存储器地址:(a)(转发的)子请求、(b)主机中驻留的转换结构(诸如分散/收集列表)、以及(c)通过向用作主机的控制接口的装置发出代理请求。在一些实施方式中,仅针对IO虚拟化执行发出代理请求。
[0044] 当用于每个子请求的数据传送完成时,传送装置向用作主机的控制接口的装置报告子状态。当在请求中所涉及的所有装置已报告子状态时,用作主机的控制接口的装置随后将状态张贴至主机。
[0045] 非数据命令(例如SATA识别装置(SATA IDENTIFY DEVICE)命令)被同样处理。当非数据命令被用作主机的控制接口的特定装置接收时,特定装置询问所述组中的其他装置(如有必要),随后向主机回报总结和/或集合的询问结果。
[0046] 在各种实施方式中,主机会看到作为涵盖所有装置(例如,装置作为单一逻辑装置而被虚拟化)的存储的单一逻辑装置的多个装置(诸如每个均具有x1或x2PCIe连接的装置)的集合。在各种实施方式中,主机会看到如具有整体存储的部分的任何或所有装置,从而能实现分离除了数据流量之外的控制流量。
[0047] 来自主机的请求经由提交队列(诸如活动的并行流的多个同时活动的提交队列中的一个提交队列)例如通过主机知悉的一个特定装置处理。提交队列中的单个请求被可选和/或选择性地作为子请求而(经由来自特定装置的对等请求)转发至实施由请求引用的所有或部分存储的装置。例如,存储被单个LBA或成组LBA在装置之间条带化。在一些实施方式和/或使用场景中,成组LBA的条带化可经由对单个装置的较大块的集合来实现性能益处。在具有多个提交队列的一些实施方式中,主机通知新提交队列的一个特定装置,且该特定装置对其他装置分配对新提交队列的服务。
[0048] 单个装置独立处理转发的子请求,包括向/从主机的数据传送。一些协议(诸如一些PCIe兼容的协议)使用经由每个提交队列的相应完成队列提供的“完成”。对于提交队列中的每个条目,相应完成通知被发送回相应完成队列。装置中的任何一个或多个可选地和/或选择性地被使能,以“集合”完成信息,并更新针对给定请求的完成队列。在各种实施方式中,每个完成队列分配一个装置以实现可分性(atomicity)。在一些实施方式中,所分配的装置是处理对应提交队列中的条目的相同装置,而在其他实施方式中,所分配的装置不同于处理对应提交队列中的条目的装置。
[0049] 实例性实施方式
[0050] 在结束对具体实施方式的介绍时,如下是实例性实施方式的集合,包括明确列举为“EC”(实例性组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些实施方式并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些实例性实施方式,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
[0051] EC1)一种系统,包括:
[0052] 用于接受来自主机的请求来以地址访问存储的装置;
[0053] 用于至少部分基于地址来确定请求所对应的多个存储装置中的一个或多个的装置;
[0054] 用于至少部分基于地址来确定对应于每个所确定的存储装置的相应子请求的装置;
[0055] 用于向相应确定的存储装置发送子请求的装置;
[0056] 用于接受来自每个所确定的存储装置的相应子状态的装置;
[0057] 用于至少部分基于每个相应子状态确定整体状态的装置;
[0058] 用于将整体状态提供至主机的装置;
[0059] 其中,用于接受请求的装置与主机接口协议兼容,以及用于发送子请求的装置和用于接受子状态的装置可与可独立于主机运行的对等协议兼容;以及
[0060] 其中,存储装置中的至少一个实施经由子请求中的一个可访问的存储,以及存储装置中的所述至少一个经由主机接口协议禁用对所实施的存储的访问。
[0061] EC2)根据EC1所述的系统,其中,用于接受请求的装置、用于发送子请求的装置、用于接受相应子状态的装置和用于提供整体状态的装置中的两个或更多个可在共享物理接口上运行。
[0062] EC3)根据EC2所述的系统,其中,快速外围组件互联(PCIe)拓扑结构和无限带宽拓扑结构中的至少一个包括共享物理接口。
[0063] EC4)根据EC2所述的系统,其中,快速外围组件互联(PCIe)接口和无限带宽接口中的至少一个包括共享物理接口。
[0064] EC5)根据EC1所述的系统,还包括存储装置中的特定一个,其包括用于接受请求的装置、用于确定存储装置的装置、用于确定子请求的装置、用于发送子请求的装置、用于接受子状态的装置、用于确定整体状态的装置和用于提供整体状态的装置。
[0065] EC6)根据EC1所述的系统,其中,存储装置中的两个或更多个被使能以经由主机接口协议与主机通信。
[0066] EC7)根据EC6所述的系统,其中,存储装置中的两个或更多个是所有存储装置。
[0067] EC8)根据EC1所述的系统,其中,地址包括起始位置和长度。
[0068] EC9)根据EC1所述的系统,其中,地址是逻辑块地址(LBA)。
[0069] EC10)根据EC1所述的系统,其中,装置在单一集成电路(IC)中被集中实现。
[0070] EC11)根据EC1所述的系统,其中,装置在单一附加卡中被集中实现。
[0071] EC12)根据EC1所述的系统,其中,装置包括在固态磁盘(SSD)中。
[0072] EC13)根据EC1所述的系统,其中,主机接口协议与以下中的一个或多个兼容:
[0073] 通用串行总线(USB)接口标准,
[0074] 紧凑型闪存(CF)接口标准,
[0075] 多媒体卡(MMC)接口标准,
[0076] 安全数字(SD)接口标准,
[0077] 记忆棒接口标准,
[0078] xD图片卡接口标准,
[0079] 集成驱动电子装置(IDE)接口标准,
[0080] 串行高级技术附件(SATA)接口标准,
[0081] 外部SATA(eSATA)接口标准,
[0082] 小型计算机系统接口(SCSI)接口标准,
[0083] 串行连接小型计算机系统接口(SAS)接口标准,
[0084] 光纤信道接口标准,
[0085] 以太网接口标准,以及
[0086] 快速外围组件互联(PCIe)接口标准。
[0087] EC14)根据EC1所述的系统,还包括主机的所有或任何部分。
[0088] EC15)根据EC14所述的系统,其中,主机包括以下中的一个或多个:
[0089] 计算机,
[0090] 工作站计算机,
[0091] 服务器计算机,
[0092] 存储服务器,
[0093] 个人计算机(PC),
[0094] 膝上型计算机,
[0095] 笔记本计算机,
[0096] 上网本计算机,
[0097] 个人数字助理(PDA),
[0098] 媒体播放器,
[0099] 媒体记录机,
[0100] 数码相机
[0101] 蜂窝手机,
[0102] 无绳电话听筒,以及
[0103] 电子游戏机
[0104] EC16)根据EC1所述的系统,还包括存储装置的所有或任何部分。
[0105] EC17)根据EC1所述的系统,还包括在存储装置中的一个或多个中包括的闪存。
[0106] EC18)一种计算机可读介质,其具有存储在其中的一组指令,当所述指令被处理元件执行时能使处理元件执行包括以下的操作:
[0107] 管理接受来自主机的请求来以地址访问存储;
[0108] 管理至少部分基于地址来确定请求所对应的多个存储装置中的一个或多个;
[0109] 管理至少部分基于地址来确定对应于每个所确定的存储装置的相应子请求;
[0110] 管理向相应确定的存储装置发送子请求;
[0111] 管理接受来自每个所确定的存储装置的相应子状态;
[0112] 管理至少部分基于每个相应子状态确定整体状态;
[0113] 管理将整体状态提供至主机;
[0114] 其中,接受请求经由主机接口协议进行,以及发送子请求和接受子状态经由可独立于主机运行的对等协议进行;以及
[0115] 其中,存储装置中的至少一个实施经由子请求中的一个可访问的存储,以及存储装置中的所述至少一个经由主机接口协议禁用对所实施的存储的访问。
[0116] EC19)根据EC18所述的计算机可读介质,其中,主机接口和对等协议可与快速外围组件互联(PCIe)信道兼容。
[0117] EC20)一种方法,包括:
[0118] 接受来自主机的请求来以地址访问存储;
[0119] 至少部分基于地址来确定请求所对应的多个存储装置中的一个或多个;
[0120] 至少部分基于地址来确定对应于每个所确定的存储装置的相应子请求;
[0121] 向相应确定的存储装置发送子请求;
[0122] 接受来自每个所确定的存储装置的相应子状态;
[0123] 至少部分基于每个相应子状态确定整体状态;
[0124] 将整体状态提供至主机;
[0125] 其中,接受请求与主机接口协议兼容,以及发送子请求和接受子状态可与可独立于主机运行的对等协议兼容;以及
[0126] 其中,存储装置中的至少一个实施经由子请求中的一个可访问的存储,以及存储装置中的所述至少一个经由主机接口协议禁用对所实施的存储的访问。
[0127] EC21)一种系统,包括:
[0128] 主机接口逻辑硬件,能实现接受来自主机的请求来以地址访问存储;
[0129] 控制逻辑硬件,能实现
[0130] 至少部分基于地址来确定请求所对应的多个存储装置中的一个或多个以及对应于每个所确定的存储装置的相应子请求;
[0131] 向相应确定的存储装置发送子请求;
[0132] 接受来自每个所确定的存储装置的相应子状态;以及
[0133] 至少部分基于每个相应子状态确定整体状态;
[0134] 其中,主机接口逻辑硬件被进一步实现为将整体状态提供至主机;
[0135] 其中,接受请求与主机接口协议兼容,以及发送子请求和接受子状态可与可独立于主机运行的对等协议兼容;以及
[0136] 其中,存储装置中的至少一个实施经由子请求中的一个可访问的存储,以及存储装置中的所述至少一个经由主机接口协议禁用对所实施的存储的访问。
[0137] EC22)一种方法,包括:
[0138] 第一存储装置,从多个主机请求队列中的第一个读取第一请求;
[0139] 第二存储装置,从主机请求队列中的第二个读取第二请求,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0140] 第一存储装置将第一请求的至少一部分转发至第二存储装置;
[0141] 第二存储装置将第二请求的至少一部分转发至第一存储装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0142] 第一存储装置根据第二请求的至少一部分访问第一存储装置的第一存储,并至少部分基于由第一存储装置进行的访问将第一子状态发送至第二存储装置;以及[0143] 第二存储装置根据第一请求的至少一部分访问第二存储装置的第二存储,并至少部分基于由第二存储装置进行的访问将第二子状态发送至第一存储装置。
[0144] EC23)一种系统,包括:
[0145] 用于使第一存储装置从多个主机请求队列中的第一个读取第一请求的装置;
[0146] 用于使第二存储装置从主机请求队列中的第二个读取第二请求的装置,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0147] 用于使第一存储装置将第一请求的至少一部分转发至第二存储装置的装置;
[0148] 用于使第二存储装置将第二请求的至少一部分转发至第一存储装置的装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0149] 用于使第一存储装置根据第二请求的至少一部分访问第一存储装置的第一存储并至少部分基于由第一存储装置进行的访问将第一子状态发送至第二存储装置的装置;以及[0150] 用于使第二存储装置根据第一请求的至少一部分访问第二存储装置的第二存储并至少部分基于由第二存储装置进行的访问将第二子状态发送至第一存储装置的装置。
[0151] EC24)一种系统,包括:
[0152] 第一存储装置的主机接口逻辑硬件,能实现从多个主机请求队列中的第一个读取第一请求;
[0153] 第二存储装置的主机接口逻辑硬件,能实现从主机请求队列中的第二个读取第二请求,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0154] 第一存储装置的请求转发逻辑硬件,能实现将第一请求的至少一部分转发至第二存储装置;
[0155] 第二存储装置的请求转发逻辑硬件,能实现将第二请求的至少一部分转发至第一存储装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0156] 第一存储装置的存储接口逻辑硬件,能实现根据第二请求的至少一部分访问第一存储装置的第一存储;
[0157] 第一存储装置的子状态生成逻辑硬件,能实现至少部分基于由第一存储装置进行的访问确定第一子状态;
[0158] 第一存储装置的子状态转发逻辑硬件,能实现将第一子状态转发至第二存储装置;
[0159] 第二存储装置的存储接口逻辑硬件,能实现根据第一请求的至少一部分访问第二存储装置的第二存储;
[0160] 第二存储装置的子状态生成逻辑硬件,能实现至少部分基于由第二存储装置进行的访问确定第二子状态;以及
[0161] 第二存储装置的子状态转发逻辑硬件,能实现将第二子状态转发至第一存储装置。
[0162] EC25)一种方法,包括:
[0163] 第一存储装置从多个主机请求队列中的第一个读取第一请求;
[0164] 第二存储装置从主机请求队列中的第二个读取第二请求,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0165] 第一存储装置将第一请求的至少一部分转发至第二存储装置;
[0166] 第二存储装置将第二请求的至少一部分转发至第一存储装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0167] 第一存储装置根据第二请求的至少一部分访问第一存储,并至少部分基于由第一存储装置进行的访问将第一状态写入多个主机状态队列的第一个中;以及
[0168] 第二存储装置根据第一请求的至少一部分访问第二存储,并至少部分基于由第二存储装置进行的访问将第二状态写入主机状态队列的第二个中,由第二存储装置进行的访问独立于由第一存储装置进行的访问,第二存储不同于第一存储。
[0169] EC26)一种系统,包括:
[0170] 用于使第一存储装置从多个主机请求队列中的第一个读取第一请求的装置;
[0171] 用于使第二存储装置从主机请求队列中的第二个读取第二请求的装置,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0172] 用于使第一存储装置将第一请求的至少一部分转发至第二存储装置的装置;
[0173] 用于使第二存储装置将第二请求的至少一部分转发至第一存储装置的装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0174] 用于使第一存储装置根据第二请求的至少一部分访问第一存储并至少部分基于由第一存储装置进行的访问将第一状态写入多个主机状态队列的第一个中的装置;以及[0175] 用于使第二存储装置根据第一请求的至少一部分访问第二存储并至少部分基于由第二存储装置进行的访问将第二状态写入主机状态队列的第二个中的装置,由第二存储装置进行的访问独立于由第一存储装置进行的访问,第二存储不同于第一存储。
[0176] EC27)一种系统,包括:
[0177] 第一存储装置的主机接口逻辑硬件,能实现从多个主机请求队列中的第一个读取第一请求;
[0178] 第二存储装置的主机接口逻辑硬件,能实现从主机请求队列中的第二个读取第二请求,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0179] 第一存储装置的请求转发逻辑硬件,能实现将第一请求的至少一部分转发至第二存储装置;
[0180] 第二存储装置的请求转发逻辑硬件,能实现将第二请求的至少一部分转发至第一存储装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0181] 第一存储装置的存储接口逻辑硬件,能实现根据第二请求的至少一部分访问第一存储;
[0182] 第一存储装置的状态生成逻辑硬件,能实现至少一部分基于由第一存储装置进行的访问确定第一状态,且还能实现将第一状态提供至第一存储装置的主机接口逻辑硬件,以被写入多个主机状态队列中的第一个;
[0183] 第二存储装置的存储接口逻辑硬件,能实现根据第一请求的至少一部分访问第二存储;以及
[0184] 第二存储装置的状态生成逻辑硬件,能实现至少一部分基于由第二存储装置进行的访问确定第二状态,且还能实现将第二状态提供至第二存储装置的主机接口逻辑硬件,以被写入主机状态队列中的第二个,由第二存储装置进行的访问独立于由第一存储装置进行的访问,第二存储不同于第一存储。
[0185] EC28)一种系统,包括:
[0186] 能使主机作为单一逻辑接口访问分配在多个物理存储装置上的多个存储范围的集合的装置,多个物理存储装置中的一个被实现为作为一级代理而运行,以及物理存储装置中的一个或多个被实现为作为二级代理而运行;
[0187] 用于传送一级代理与二级代理中的至少一个之间的对等流量的装置;
[0188] 其中,一级代理被实现为管理用于冗余数据存储的二级代理的至少一部分;以及[0189] 其中,对等流量包括用于实施冗余数据存储的冗余流量。
[0190] EC29)根据EC28所述的系统,其中,冗余流量的至少一部分包括积累的奇偶校验信息。
[0191] EC30)根据EC29所述的系统,其中,所述至少一部分被从一级代理和/或二级代理中的一个转发。
[0192] EC31)根据EC29所述的系统,其中,所述至少一部分被转发至二级代理中的实施对应于积累的奇偶校验信息的奇偶校验存储的一个。
[0193] EC32)根据EC28所述的系统,其中,由一级代理将所述冗余流量的至少一部分提供至二级代理中的一个或多个。
[0194] EC33)根据EC28所述的系统,其中,由二级代理中的一个或多个将冗余流量中的至少一部分提供至一级代理。
[0195] EC34)根据EC28所述的系统,其中,冗余流量中的至少一部分位于多个二级代理之间。
[0196] EC35)根据EC28所述的系统,其中,冗余流量包括控制信息量、未转换的数据和转换的数据中的一个或多个。
[0197] EC36)根据EC35所述的系统,其中,控制信息包括对有多少个冗余更新会针对特定存储地址而发生的指示。
[0198] EC37)根据EC36所述的系统,其中,一级代理和二级代理中的至少一个被实现为使用对与冗余更新相关的缓存信息的指示,直到已发生针对特定存储地址的冗余更新。
[0199] EC38)根据EC35所述的系统,其中,未转换的数据包括来自主机的写入数据的一部分或多部分。
[0200] EC39)根据EC38所述的系统,其中,至少部分基于镜像操作来确定写入数据的部分。
[0201] EC40)根据EC35所述的系统,其中,转换的数据包括以下中的一个或多个:至少部分基于来自主机的写入数据的一个或多个奇偶校验数据、至少部分基于来自主机的写入数据的异或(XOR)数据和至少部分基于廉价/独立磁盘的冗余阵列(RAID)实施的冗余信息。
[0202] EC41)根据EC28所述的系统,其中,冗余流量包括读-修改-写(RMW)操作控制和/或数据冗余流量。
[0203] EC42)根据EC41所述的系统,其中,RMW操作数据冗余流量是来自主机的写入数据的所有或任何部分的副本。
[0204] EC43)根据EC41所述的系统,其中,RMW操作数据冗余流量是至少部分基于来自主机的写入数据的一部分的转换的数据。
[0205] EC44)根据EC41所述的系统,其中,RMW操作控制冗余流量是对有多少个冗余更新会针对特定地址而发生的指示。
[0206] EC45)根据EC28所述的系统,其中,冗余流量包括数据恢复操作控制和/或数据冗余流量。
[0207] EC46)根据EC28所述的系统,其中,冗余数据存储根据一个或多个廉价/独立磁盘的冗余阵列(RAID)技术进行。
[0208] EC47)根据EC28所述的系统,其中,一级代理被实现为接受来自主机的请求,以访问存储、将请求作为一个或多个子请求转发至二级代理的所有或任何部分、以及接受来自与子请求被转发至其上的二级代理的子请求相关联的子状态。
[0209] EC48)根据EC47所述的系统,其中,至少部分基于冗余数据存储所根据的冗余技术来确定子请求。
[0210] EC49)根据EC48所述的系统,其中,冗余技术根据廉价/独立磁盘的冗余阵列(RAID)实施。
[0211] EC50)根据EC47所述的系统,其中,子请求的至少一部分部分基于子请求被转发至其上的物理装置之间的条带化。
[0212] EC50)根据EC50所述的系统,其中,条带化根据廉价/独立磁盘的冗余阵列(RAID)实施。
[0213] EC52)根据EC50所述的系统,其中,条带化根据工作负荷动态改变。
[0214] EC53)根据EC28所述的系统,其中,每个二级代理被实现为接受来自一级代理的一个或多个子请求、转换所接受的子请求的主机环境寻址信息以访问本地存储、以及至少部分基于本地访问将相应子状态提供至一级代理。
[0215] EC54)根据EC28所述的系统,其中,每个二级代理被实现为接受来自一级代理的一个或多个子请求、转换所接受的子请求的主机环境寻址信息以访问本地存储、访问本地存储、以及传送利用主机的数据、访问的被读取/写入的数据。
[0216] EC55)根据EC28所述的系统,还包括用于在主机和一级代理之间传送主机流量的装置。
[0217] EC56)根据EC55所述的系统,其中,用于传送对等流量的装置经由至少一个逻辑信道进行,该逻辑信道不同于用于传送主机流量的装置的逻辑信道。
[0218] EC57)根据EC55所述的系统,其中,用于传送对等流量的装置经由至少一个物理信道进行,该物理信道不同于用于传送主机流量的装置的物理信道。
[0219] EC58)根据EC55所述的系统,其中,用于传送对等通信流量的一个或多个装置和用于传送主机通信流量的装置可与快速外围组件互联(PCIe)标准兼容。
[0220] EC59)根据EC55所述的系统,其中,用于传送对等流量的一个或多个装置和用于传送主机流量的装置可与无限带宽标准兼容。
[0221] EC60)根据EC55所述的系统,其中,用于传送对等流量的装置包括非透明交换机的所有或任何部分。
[0222] EC61)根据EC55所述的系统,其中,用于传送主机流量的装置包括透明交换机的所有或任何部分。
[0223] EC62)一种方法,包括:
[0224] 能使主机以作为单一逻辑装置访问在多个物理存储装置上分配的多个存储范围的集合,能使物理存储装置中的一个作为一级代理而运行,以及能使物理存储装置中的一个或多个作为二级代理而运行;
[0225] 在一级代理和二级代理中的至少一个之间传送对等流量;
[0226] 其中,一级代理被实现为针对冗余数据存储管理二级代理的至少一部分;以及[0227] 其中,对等流量包括用于实施冗余数据存储的冗余流量。
[0228] EC63)一种系统,包括:
[0229] 主机接口逻辑硬件;
[0230] 多个物理存储装置,被实现为至少部分经由主机接口逻辑硬件与主机选择性通信,物理存储装置中的至少一个被实现为作为一级代理而运行,以及物理存储装置中的一个或多个被实现为作为相应二级代理而运行;
[0231] 对等通信逻辑硬件,能实现在一级代理和二级代理中的至少一个之间的对等流量;
[0232] 其中,物理存储装置实施在物理存储装置上分配的多个存储范围的集合;
[0233] 其中,一级代理被实现为管理二级代理的至少一部分以实施冗余数据存储;以及[0234] 其中,对等流量包括用于实施冗余数据存储的冗余流量。
[0235] EC64)一种系统,包括:
[0236] 用于经由对等协议在多个存储代理之间接口连接的装置;
[0237] 用于检测存储代理的有故障的一个代理的故障的装置,该故障是不再实施存储的特定部分的有故障存储代理;以及
[0238] 用于分配经过再分配的存储以实施存储的特定部分的装置,经过再分配的存储包括由存储代理的无故障代理实施的存储的任何组合。
[0239] EC65)根据EC64所述的系统,其中,存储代理包括二级代理。
[0240] EC66)根据EC64所述的系统,其中,存储代理包括一级代理。
[0241] EC67)根据EC64所述的系统,其中,装置包括在一级代理中,且存储代理包括二级代理。
[0242] EC68)根据EC64所述的系统,其中,每个存储代理都实施物理存储的至少相应部分。
[0243] EC69)根据EC68所述的系统,其中,相应部分包括一个或多个非易失性存储器。
[0244] EC70)根据EC64所述的系统,还包括本地存储,且其中,经过分配的存储还包括本地存储。
[0245] EC71)根据EC64所述的系统,其中,故障是局部故障,且有故障存储代理继续以在局部故障之后实施至少一些存储。
[0246] EC72)根据EC71所述的系统,其中,经过分配的存储还包括至少一些存储。
[0247] EC73)根据EC64所述的系统,其中,用于检测的装置至少部分经由一个存储代理来实施。
[0248] EC74)根据EC64所述的系统,其中,用于检测的装置至少部分经由装置驱动器来实施。
[0249] EC75)根据EC64所述的系统,还包括用于经由一个或多个冗余技术恢复数据的装置。
[0250] EC76)根据EC75所述的系统,其中,冗余技术包括镜像技术。
[0251] EC77)根据EC75所述的系统,其中,冗余技术包括廉价/独立磁盘的冗余阵列(RAID)技术。
[0252] EC78)一种方法,包括:
[0253] 经由对等协议在多个存储代理之间接口连接;
[0254] 检测存储代理中的有故障的一个代理的故障,该故障是不再实施存储的特定部分的有故障存储代理;以及
[0255] 分配经过再分配的存储以实施存储的特定部分,经过再分配的存储包括由存储代理的无故障代理实施的存储的任何组合。
[0256] EC79)一种系统,包括:
[0257] 对等通信逻辑硬件,能实现多个存储代理之间的对等协议通信;
[0258] 故障检测逻辑硬件,能实现检测存储代理中的有故障的一个代理的故障;该故障是不再实施存储的特定部分的有故障的存储代理;以及
[0259] 处理器,被实现为执行指令,该指令在被处理器执行时会使处理器执行包括以下的操作:分配经过再分配的存储以实施存储的特定部分,经过再分配的存储包括由存储代理中的无故障的一个代理实施的存储的任何组合。
[0260] EC80)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行时会使处理元件执行包括以下的操作:
[0261] 管理经由对等协议在多个存储代理之间的接口连接;
[0262] 管理检测存储代理中的有故障的一个代理的故障,该故障是不再实施存储的特定部分的有故障的存储代理;以及
[0263] 管理分配经过再分配的存储以实施存储的特定部分,经过再分配的存储包括由存储代理中的无故障的一个代理实施的存储的任何组合。
[0264] EC81)一种系统,包括:
[0265] 用于检测多个存储代理中的有故障的一个代理的故障的装置,该故障是不再使主机作为单一逻辑装置访问在存储代理上分配的多个存储范围的集合的有故障的存储代理;
[0266] 用于识别替代存储代理以替换有故障的存储代理的装置;以及
[0267] 用于配置替代存储代理以提供单一逻辑接口的装置。
[0268] EC82)根据EC81所述的系统,其中,替代存储代理是热备件。
[0269] EC83)根据EC81所述的系统,其中,替代存储代理是存储代理中的一个,且不是有故障的存储代理。
[0270] EC84)根据EC83所述的系统,其中,替代存储代理是一级代理。
[0271] EC85)根据EC83所述的系统,其中,替代存储代理是可配置的代理,其可作为一级代理或二级代理来选择性运行。
[0272] EC86)根据EC81所述的系统,其中,用于检测的装置至少部分经由存储代理中的一个来实施。
[0273] EC87)根据EC81所述的系统,其中,用于的检测装置至少部分经由在主机上执行的装置驱动器来实施。
[0274] EC88)根据EC81所述的系统,还包括用于经由主机接口协议接口连接至主机的装置,接口连接至主机包括从提交队列中的条目读取存储请求;用于根据提供单一逻辑接口来接口连接的装置。
[0275] EC89)根据EC88所述的系统,还包括用于至少部分基于存储请求的地址信息来确定一个或多个存储子请求的装置。
[0276] EC90)根据EC89所述的系统,还包括用于将子请求转发至存储代理中的二级代理的装置。
[0277] EC91)根据EC90所述的系统,还包括用于接收分别对应于子请求的子状态信息并至少基于所接收的子状态信息将整体状态返回至主机的装置。
[0278] EC92)根据EC81所述的系统,还包括用于在存储代理之间传送对等流量的装置。
[0279] EC93)一种方法,包括:
[0280] 检测多个存储代理中的有故障的一个代理的故障,该故障是不再使主机作为单一逻辑接口来访问在存储代理上分配的多个存储范围的集合的有故障的存储代理;
[0281] 识别替代存储代理以替换有故障的存储代理;以及
[0282] 配置替代存储代理以提供单一逻辑接口。
[0283] EC94)一种系统,包括:
[0284] 故障检测逻辑硬件,能实现检测多个存储代理中的有故障的一个代理的故障;该故障是不再使主机作为单一逻辑接口来访问在存储代理上分配的多个存储范围的集合的有故障的存储代理;以及
[0285] 处理器,被实现为执行指令,该指令在被处理器执行时会使处理器执行包括以下的操作:
[0286] 识别替代存储代理以替换有故障的存储代理,以及
[0287] 配置替代存储代理以提供单一逻辑接口。
[0288] EC95)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行会使处理元件执行包括以下的操作:
[0289] 管理检测多个存储代理中的有故障的一个代理的故障,该故障是不再使主机作为单一逻辑接口访问在存储代理上分配的多个存储范围的集合的有故障的存储代理;
[0290] 管理识别替代存储代理以替换有故障的存储代理,以及
[0291] 管理配置替代存储代理以提供单一逻辑接口。
[0292] EC96)一种系统,包括:
[0293] 存储接口装置,用于接口连接至大容量存储;
[0294] 主机接口装置,用于经由主机接口协议接口连接至主机,主机接口装置包括用于从提交队列中的条目读取存储请求的装置;
[0295] 一级代理接口装置,用于经由对等协议接口连接至一级代理;
[0296] 地址确定装置,用于确定至少一个地址,以经由存储接口装置访问大容量存储;用于确定的装置可至少部分基于包括在存储请求中的地址信息来操作;
[0297] 存储容量报告装置,用于向主机回报零存储容量,且还用于根据大容量存储的存储容量向一级代理回报存储容量;以及
[0298] 其中,主机接口装置和一级代理接口装置至少部分经由相同物理信道实施。
[0299] EC97)根据EC96所述的系统,还包括目的地确定装置,其用于至少部分基于地址信息确定至少一个目的地,以将积累的奇偶校验数据转发至其上。
[0300] EC98)根据EC97所述的系统,其中,所述至少一个目的地经由对等协议可到达。
[0301] EC99)根据EC98所述的系统,其中,所述至少一个目的地是一级代理。
[0302] EC100)根据EC98所述的系统,其中,所述至少一个目的地是二级代理。
[0303] EC101)根据EC96所述的系统,其中,地址确定装置根据一个或多个冗余技术运行。
[0304] EC102)根据EC101所述的系统,其中,冗余技术包括一个或多个镜像技术和/或一个或多个廉价/独立磁盘的冗余阵列(RAID)技术。
[0305] EC103)根据EC96所述的系统,其中,主机接口装置还包括用于在主机和大容量存储之间传送数据的装置。
[0306] EC104)根据EC96所述的系统,其中,相同物理信道可与快速外围组件互联(PCIe)标准兼容。
[0307] EC105)根据EC96所述的系统,其中,相同物理信道可与无限带宽标准兼容。
[0308] EC106)根据EC96所述的系统,其中,大容量存储包括一个或多个非易失性存储器。
[0309] 107EC)一种方法,包括:
[0310] 接口连接至大容量存储;
[0311] 经由主机接口协议接口连接至主机,接口连接至主机包括从提交队列中的条目读取存储请求;
[0312] 经由对等协议接口连接至一级代理;
[0313] 确定至少一个地址以经由接口连接至大容量存储来访问大容量存储,该确定可至少部分基于包括在存储请求中的地址信息来操作;
[0314] 向主机回报零存储容量,并根据大容量存储的存储容量向一级代理回报存储容量;以及
[0315] 其中,接口连接至主机和接口连接至一级代理至少部分经由相同物理信道实施。
[0316] EC108)一种系统,包括:
[0317] 大容量存储硬件接口,能实现与大容量存储接口连接;
[0318] 主机接口逻辑硬件,能实现与主机接口连接,可与主机接口协议兼容,以及能实现从提交队列中的条目读取存储请求;
[0319] 对等通信逻辑硬件,能实现经由对等协议与一级代理接口连接;
[0320] 访问地址确定逻辑硬件,能实现确定至少一个地址以经由大容量存储硬件接口访问大容量存储,该确定可至少基于包括在存储请求中的地址信息来操作;
[0321] 存储容量报告逻辑硬件,能实现向主机回报零存储容量,且还能实现根据大容量存储的存储容量向一级代理回报存储容量;以及
[0322] 其中,与主机的接口连接和与一级代理的接口连接至少部分经由相同物理信道实现。
[0323] EC109)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行时会使处理元件执行包括以下的操作:
[0324] 管理接口连接至大容量存储;
[0325] 管理经由主机接口协议接口连接至主机,接口连接至主机包括从提交队列中的条目读取存储请求;
[0326] 管理经由对等协议接口连接至一级代理;
[0327] 管理确定至少一个地址以经由接口连接至大容量存储来访问大容量存储,该确定可至少部分基于包括在存储请求中的地址信息来操作;
[0328] 管理向主机回报零存储容量,并根据大容量存储的存储容量向一级代理回报存储容量;以及
[0329] 其中,接口连接至主机和接口连接至一级代理至少部分经由相同物理信道实施。
[0330] EC110)一种系统,包括:
[0331] 存储接口装置,用于接口连接至大容量存储;
[0332] 主机接口装置,用于经由主机接口协议接口连接至主机,该主机接口装置包括用于在主机和大容量存储装置之间传输数据的装置;
[0333] 一级代理接口装置,用于经由对等协议接口连接至一级代理,该一级代理接口装置包括用于接收从一级代理的转发的存储请求的装置;
[0334] 地址确定装置,用于确定至少一个地址以访问大容量存储;用于确定的装置可至少部分基于包括在转发的存储请求中的地址信息来操作;
[0335] 其中,转发的存储请求对应于从提交队列中获得的请求,该请求和转发的请求是指相同的一个或多个地址范围;以及
[0336] 其中,主机接口装置和一级代理接口装置经由相同物理信道实施。
[0337] EC111)根据EC110所述的系统,还包括目的地确定装置,其用于至少部分基于地址信息确定至少一个目的地,以将积累的奇偶校验数据转发至其上。
[0338] EC112)根据EC111所述的系统,其中,所述至少一个目的地经由对等协议可到达。
[0339] EC113)根据EC112所述的系统,其中,所述至少一个目的地是一级代理。
[0340] EC114)根据EC112所述的系统,其中,所述至少一个目的地是二级代理。
[0341] EC115)根据EC110所述的系统,其中,地址确定装置根据一个或多个冗余技术运行。
[0342] EC116)根据EC115所述的系统,其中,冗余技术包括一个或多个镜像技术和/或一个或多个廉价/独立磁盘的冗余阵列(RAID)技术。
[0343] EC117)根据EC110所述的系统,还包括存储容量报告装置,其用于向主机回报零存储容量,且还用于根据大容量存储的存储容量向一级代理回报存储容量。
[0344] EC118)根据EC110所述的系统,其中,相同物理信道可与快速外围组件互联(PCIe)标准兼容。
[0345] EC119)根据EC110所述的系统,其中,相同物理信道可与无限带宽标准兼容。
[0346] EC120)根据EC110所述的系统,其中,大容量存储包括一个或多个非易失性存储器。
[0347] EC121)一种方法,包括:
[0348] 接口连接至大容量存储;
[0349] 经由主机接口协议接口连接至主机,接口连接至主机包括在主机和大容量存储之间传输数据;
[0350] 经由对等协议接口连接至一级代理,接口连接至一级代理包括接收从一级代理转发的存储请求;
[0351] 确定至少一个地址以经由接口连接至大容量存储来访问大容量存储,该确定可至少部分基于包括在存储请求中的地址信息来操作;
[0352] 其中,转发的存储请求对应于从提交队列中获得的请求,该请求和转发的请求是指相同的一个或多个地址范围;以及
[0353] 其中,接口连接至主机和接口连接至一级代理经由相同物理信道实施。
[0354] EC122)一种系统,包括:
[0355] 大容量存储硬件接口,能实现与大容量存储接口连接;
[0356] 主机接口逻辑硬件,能实现与主机的接口连接,可与主机接口协议兼容,以及能实现至少部分经由大容量存储硬件接口在主机和大容量存储之间传送数据;
[0357] 对等通信逻辑硬件,能实现经由对等协议与一级代理的接口连接;
[0358] 存储请求接受逻辑硬件,能实现至少部分经由对等通信逻辑硬件接收从一级代理转发的存储请求;
[0359] 访问地址确定逻辑硬件,能实现确定至少一个地址以经由大容量存储硬件接口访问大容量存储,该确定可至少基于包括在存储请求中的地址信息来操作;
[0360] 其中,转发的存储请求对应于从提交队列中获得的请求,该请求和转发的请求是指相同的一个或多个地址范围;以及
[0361] 其中,接口连接至主机和接口连接至一级代理经由相同物理信道实施。
[0362] EC123)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行时会使处理元件执行包括以下的操作:
[0363] 管理接口连接至大容量存储;
[0364] 管理经由主机接口协议接口连接至主机,接口连接至主机包括在主机和大容量存储之间传输数据;
[0365] 管理经由对等协议接口连接至一级代理,接口连接至一级代理包括接收从一级代理转发的存储请求;
[0366] 管理确定至少一个地址以经由接口连接至大容量存储来访问大容量存储;该确定可至少部分基于包括在存储请求中的地址信息来操作;
[0367] 其中,转发的存储请求对应于从提交队列中获得的请求,该请求和转发的请求是指相同的一个或多个地址范围;以及
[0368] 其中,接口连接至主机和接口连接至一级代理经由相同物理信道实施。
[0369] EC124)一种系统,包括:
[0370] 主机接口装置,用于经由主机接口协议接口连接至主机,该主机接口装置包括用于从提交队列中的条目读取存储请求的装置;
[0371] 二级代理接口装置,用于经由对等协议接口连接至二级代理,该二级代理接口装置包括用于将存储子请求转发至二级代理的装置;
[0372] 子请求生成装置,用于至少部分基于包括在存储请求中的地址信息确定子请求;
[0373] 存储容量报告装置,用于向主机回报总存储容量,该总存储容量至少部分基于二级代理的存储容量;以及
[0374] 其中,主机接口装置和二级代理接口装置至少部分经由相同物理信道实施。
[0375] EC125)根据EC124所述的系统,还包括存储接口装置,其用于接口连接至大容量存储。
[0376] EC126)根据EC125所述的系统,其中,大容量存储包括一个或多个非易失性存储器。
[0377] EC127)一种方法,包括:
[0378] 经由主机接口协议接口连接至主机,主机接口连接包括从提交队列中的条目读取存储请求;
[0379] 经由对等协议接口连接至二级代理,二级代理接口连接包括将存储子请求转发至二级代理;
[0380] 至少部分基于包括在存储请求中的地址信息来确定子请求;
[0381] 向主机回报总存储容量,该总存储容量至少部分基于二级代理的存储容量;以及[0382] 其中,与主机的接口连接和与二级代理的接口连接至少部分经由相同物理信道实施。
[0383] EC128)一种系统,包括:
[0384] 主机接口逻辑硬件,能实现与主机的接口连接,可与主机接口协议兼容,以及能实现从提交队列中的条目读取存储请求;
[0385] 对等通信逻辑硬件,能实现经由对等协议与二级代理的接口连接;
[0386] 请求转发逻辑硬件,能实现至少部分经由对等通信逻辑硬件将存储子请求转发至二级代理;
[0387] 子请求确定逻辑硬件,能实现至少部分基于包括在存储请求中的地址信息来确定子请求;
[0388] 存储容量报告逻辑硬件,能实现向主机回报总存储容量,该总存储容量至少部分基于二级代理的存储容量;以及
[0389] 其中,与主机的接口连接和与二级代理的接口连接至少部分经由相同物理信道实施。
[0390] EC129)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行时会使处理元件执行包括以下的操作:
[0391] 管理经由主机接口协议与主机的接口连接,主机接口连接包括从提交队列中的条目读取存储请求;
[0392] 管理经由对等协议与二级代理的接口连接,二级代理接口连接包括将存储子请求转发至二级代理;
[0393] 管理至少部分基于包括在存储请求中的地址信息来确定子请求;
[0394] 管理向主机回报总存储容量,该总存储容量至少部分基于二级代理的存储容量;以及
[0395] 其中,与主机的接口连接和与二级代理的接口连接至少部分经由相同物理信道实施。
[0396] EC130)一种系统,包括:
[0397] 存储接口装置,用于接口连接至大容量存储;
[0398] 主机接口装置,用于经由主机接口协议接口连接至主机,该主机接口装置包括用于在主机和大容量存储装置之间传输数据的装置;
[0399] 一级代理接口装置,用于经由对等协议接口连接至一级代理,该一级代理接口装置包括用于接收从一级代理转发的存储请求的装置;
[0400] 存储容量报告装置,用于向主机回报零存储容量,且还用于根据大容量存储的存储容量向一级代理回报存储容量;以及
[0401] 其中,主机接口装置和一级代理接口装置至少部分经由相同物理信道实施。
[0402] EC131)根据EC130所述的系统,其中,大容量存储包括一个或多个非易失性存储器。
[0403] EC132)一种方法,包括:
[0404] 接口连接至大容量存储;
[0405] 经由主机接口协议接口连接至主机,接口连接至主机包括在主机和大容量存储之间传输数据;
[0406] 经由对等协议接口连接至一级代理,一级代理接口连接包括接收从一级代理转发的存储子请求;
[0407] 向主机回报零存储容量,并还根据大容量存储的存储容量向一级代理回报存储容量;以及
[0408] 其中,接口连接至主机和接口连接至一级代理至少部分经由相同物理信道实施。
[0409] EC133)一种系统,包括:
[0410] 大容量存储硬件接口,能实现与大容量存储接口连接;
[0411] 主机接口逻辑硬件,能实现与主机的接口连接,可与主机接口协议兼容,以及能实现至少部分经由大容量存储硬件接口在主机和大容量存储之间传送数据;
[0412] 对等通信逻辑硬件,能实现经由对等协议与一级代理的接口连接;
[0413] 子请求逻辑硬件,能实现至少部分经由对等通信逻辑硬件接收从一级代理转发的存储子请求;
[0414] 存储容量报告逻辑硬件,能实现向主机回报零存储容量,且还能实现根据大容量存储的存储容量向一级代理回报存储容量;以及
[0415] 其中,接口连接至主机和接口连接至一级代理至少部分经由相同物理信道实施。
[0416] EC134)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行时会使处理元件执行包括以下的操作:
[0417] 管理与大容量存储的接口连接;
[0418] 管理经由主机接口协议与主机的接口连接,主机接口连接包括在主机和大容量存储之间传输数据;
[0419] 管理经由对等协议与一级代理的接口连接,一级代理接口连接包括接收从一级代理转发的存储子请求;
[0420] 管理向主机回报零存储容量,并还根据大容量存储的存储容量向一级代理回报存储容量;以及
[0421] 其中,与主机接口连接和与一级代理接口连接至少部分经由相同物理信道实施。
[0422] EC135)一种系统,包括:
[0423] 存储接口装置,用于接口连接至大容量存储;
[0424] 主机接口装置,用于经由主机接口协议接口连接至主机,该主机接口装置包括用于在主机和大容量存储之间传输数据的装置;
[0425] 一级代理接口装置,用于经由对等协议接口连接至一级代理,该一级代理接口装置包括用于接收来自一级代理的子请求的装置,以及用于将子状态发送至一级代理的装置,该子状态至少部分基于根据子请求访问大容量存储的结果;
[0426] 存储容量报告装置,用于向主机回报零存储容量,且还用于根据大容量存储的存储容量向一级代理回报存储容量;以及
[0427] 其中,主机接口装置和一级代理接口装置至少部分经由相同物理信道实施。
[0428] EC136)根据EC135所述的系统,其中,一级代理接口装置还包括用于与一级代理传送冗余信息的装置。
[0429] EC137)根据EC136所述的系统,其中,冗余信息可与一个或多个镜像技术和/或一个或多个廉价/独立磁盘的冗余阵列(RAID)技术兼容。
[0430] EC138)根据EC135所述的系统,其中,相同物理信道可与快速外围组件互联(PCIe)标准兼容。
[0431] EC139)根据EC135所述的系统,其中,相同物理信道可与无限带宽标准兼容。
[0432] EC140)根据EC135所述的系统,其中,大容量存储包括一个或多个非易失性存储器。
[0433] EC141)一种方法,包括:
[0434] 接口连接至大容量存储;
[0435] 经由主机接口协议与主机接口连接,与主机接口连接包括在主机和大容量存储之间传输数据;
[0436] 经由对等协议与一级代理接口连接,与一级代理接口连接包括接收来自一级代理的子请求,并将子状态发送至一级代理,该子状态至少部分基于根据子请求访问大容量存储的结果;
[0437] 向主机回报零存储容量,并还根据大容量存储的存储容量向一级代理回报存储容量;以及
[0438] 其中,与主机的接口连接和与一级代理的接口连接至少部分经由相同物理信道实施。
[0439] EC142)一种系统,包括:
[0440] 大容量存储硬件接口,能实现与大容量存储接口连接;
[0441] 主机接口逻辑硬件,能实现与主机的接口连接,可与主机接口协议兼容,以及能实现至少部分经由大容量存储硬件接口在主机和大容量存储之间传送数据;
[0442] 对等通信逻辑硬件,能实现经由对等协议与一级代理的接口连接;
[0443] 子请求接收逻辑硬件,能实现至少部分经由对等通信逻辑硬件接收从一级代理转发的存储子请求;
[0444] 子状态确定逻辑硬件,能实现至少部分基于根据子请求并经由大容量存储硬件接口访问大容量存储来确定子状态;
[0445] 子状态转发逻辑硬件,能实现至少部分经由对等通信逻辑硬件将子状态转发至一级代理;
[0446] 存储容量报告逻辑硬件,能实现向主机回报零存储容量,且还能实现根据大容量存储的存储容量向一级代理回报存储容量;以及
[0447] 其中,与主机的接口连接和与一级代理的接口连接至少部分经由相同物理信道实施。
[0448] EC143)一种计算机可读介质,其具有存储在其中的一组指令,该指令在被处理元件执行时会使处理元件执行包括以下的操作:
[0449] 管理接口连接至大容量存储;
[0450] 管理经由主机接口协议与主机的接口连接,与主机的接口连接包括在主机和大容量存储之间传输数据;
[0451] 管理经由对等协议与一级代理的接口连接,与一级代理的接口连接包括接收来自一级代理的子请求,以及将子状态发送至一级代理,该子状态至少部分基于根据子请求访问大容量存储的结果;
[0452] 管理向主机回报零存储容量,并还管理根据大容量存储的存储容量向一级代理回报存储容量;以及
[0453] 其中,与主机的接口连接和与一级代理的接口连接至少部分经由相同物理信道实施。
[0454] EC144)一种方法,包括:
[0455] 接受来自主机的请求来以地址访问存储;
[0456] 至少部分基于地址确定请求所对应的多个存储装置中的一个或多个;
[0457] 至少部分基于地址确定对应于所确定的存储装置的每一个的相应子请求;
[0458] 将子请求发送至对应确定的存储装置;
[0459] 接受来自每个所确定的存储装置的相应子状态;
[0460] 至少部分基于每个相应子状态确定整体状态;
[0461] 将整体状态提供至主机;
[0462] 其中,由存储装置中的特定一个装置执行接受请求、确定存储装置、确定和发送子请求、接受子状态、以及确定和提供整体状态;
[0463] 其中,经由主机接口协议接受请求,且经由可独立于主机操作的对等协议发送子请求和接受子状态;以及
[0464] 其中,存储装置中的至少一个实施经由一个子请求可访问的存储,且至少一个存储装置可经由主机接口协议禁止访问实施的存储。
[0465] EC145)根据EC144所述的方法,其中,主机接口和对等协议可与快速外围组件互联(PCIe)信道兼容。
[0466] EC146)根据EC144所述的方法,其中,接受请求包括读取保留在主机存储器中的提交队列中的条目。
[0467] EC147)根据EC144所述的方法,其中,提供整体状态包括在保留在主机存储器中的完成队列中写入条目。
[0468] EC148)根据EC144所述的方法,还包括通过每个所确定的存储装置独立执行对应子请求的数据传送部分。
[0469] EC149)根据EC148所述的方法,其中,独立执行包括访问主机存储器。
[0470] EC150)一种方法,包括:
[0471] 第一存储装置,用于从多个主机请求队列中的第一个读取第一请求;
[0472] 第二存储装置,用于从主机请求队列中的第二个读取第二请求,第二主机请求队列不同于第一主机请求队列,由第二存储装置进行的读取独立于由第一存储装置进行的读取;
[0473] 第一存储装置,用于将第一请求的至少一部分转发至第二存储装置;
[0474] 第二存储装置,用于将第二请求的至少一部分转发至第一存储装置,由第二存储装置进行的转发独立于由第一存储装置进行的转发;
[0475] 第一存储装置根据第二请求的所述至少一部分访问第一存储,并至少部分基于由第一存储装置进行的访问将第一状态返回至第二存储装置;以及
[0476] 第二存储装置根据第一请求的所述至少一部分访问第二存储,并至少部分基于由第二存储装置进行的访问将第二状态返回至第一存储装置,由第二存储装置进行的访问独立于由第一存储装置进行的访问,第二存储不同于第一存储。
[0477] EC151)根据EC150所述的方法,其中,主机请求队列可由主机访问,且还包括第二存储装置至少部分基于第二请求将第三状态返回至主机,以及第一存储装置至少部分基于第一请求将第四状态返回至主机。
[0478] EC152)根据EC150所述的方法,其中,第二请求的至少一部分是至少第一部分,且还包括第二存储装置根据第二请求的至少第二部分访问第三存储,第二请求的第一和第二部分不同于第二请求的部分。
[0479] EC153)根据EC150所述的方法,其中,主机请求队列由主机可访问,以及第二请求的至少一部分是至少第一部分,且还包括第二存储装置根据第二请求的至少一部分访问第三存储,以及第二存储装置至少部分基于第三存储的访问将第三状态返回至主机,第二请求的第一和第二部分不同于第二请求的部分。
[0480] EC154)一种方法,包括:
[0481] 将主机作为单一逻辑接口提供至多个物理存储装置,物理存储装置中的一个作为一级代理而运行,以及物理存储装置中的一个或多个作为二级代理而运行;
[0482] 其中,所述提供包括:
[0483] 一级代理接受来自主机的请求以访问存储,将请求作为一个或多个子请求转发至二级代理的所有或任何部分,接受与来自子请求转发至其上的二级代理的子请求相关联的子状态,以及至少基于子状态将整体状态提供至主机,以及
[0484] 二级代理的所有或任何部分接受子请求、将子请求的主机环境寻址信息转换为本地环境寻址信息、至少部分基于本地环境寻址信息来访问本地存储,以及将子状态提供至一级代理;
[0485] 其中,当由主机查询有关存储容量时,一级代理至少部分基于由一级代理实施的存储和由二级代理实施的存储报告存储容量;以及
[0486] 其中,当由主机查询有关存储容量时,二级代理中的每一个至少部分基于由一级代理报告的存储容量报告相应存储容量。
[0487] EC155)根据EC154所述的方法,其中,由一级代理报告的存储容量根据由二级代理中的特定一个代理实施的存储的至少部分来增加;且还包括特定二级代理向主机报告特定二级代理的存储容量,如根据由特定第二代理实施的存储的至少部分来降低。
[0488] EC156)根据EC154所述的方法,其中,当由主机查询有关存储容量时,二级代理中的特定一个代理回报零存储容量,条件是如果由特定二级代理实施的所有存储占用了由一级代理报告的存储容量。
[0489] EC157)根据EC154所述的方法,其中,一级代理被实现为经由主机接口协议与主机通信。
[0490] EC158)根据EC154所述的方法,其中,一级代理和二级代理被实现为经由对等协议彼此通信。
[0491] EC159)根据EC154所述的方法,其中,一级代理被实现为经由相同物理链路与主机和二级代理中的至少一个通信。
[0492] EC160)一种系统,包括:
[0493] 主机接口逻辑,能实现经由主机接口协议接口连接至主机,并经由对等协议接口连接至二级代理,接口连接至主机包括从提交队列中的条目读取存储请求,接口连接至二级代理包括将存储子请求转发至二级代理,接口连接至主机和接口连接至二级代理可经由相同物理信道实施;
[0494] 子请求生成逻辑,能实现至少部分基于包括在存储请求中的地址信息来确定子请求;以及
[0495] 存储容量报告逻辑,能实现回报主机总存储容量,该总存储容量至少部分基于二级代理的总存储容量。
[0496] EC161)根据EC160所述的系统,其中,物理信道可与快速外围组件互联(PCIe)信道和无限带宽信道中的至少一个兼容。
[0497] EC162)根据EC160所述的系统,还包括主机、二级代理以及将主机耦接至主机接口逻辑和/或二级代理的交换机中的一个或多个。
[0498] EC163)根据EC160所述的系统,还包括存储接口逻辑和大容量存储,存储接口逻辑被实现为接口连接至大容量存储,且其中,总存储容量还根据大容量存储容量的存储容量。
[0499] EC164)根据EC160所述的系统,其中,接口连接至主机还包括将整体状态写入完成队列中的条目,以及接口连接至二级代理还包括经由将整体状态写入完成队列而将来自二级代理的子状态作为整体状态的至少一部分转发至主机;且还包括子状态积累逻辑,其被实现为至少部分基于子状态来确定整体状态。
[0500] EC165)根据EC160所述的系统,其中,系统包括在固态磁盘(SSD)中。
[0501] EC166)一种系统,包括:
[0502] 主机接口逻辑,能实现经由主机接口协议接口连接至主机,并经由对等协议接口连接至二级代理,接口连接至主机包括从提交队列中的条目读取存储请求,接口连接至二级代理包括将存储子请求转发至二级代理,接口连接至主机和接口连接至二级代理可经由相同物理信道实施;
[0503] 子请求生成逻辑,能实现至少部分基于包括在存储请求中的地址信息来确定子请求;以及
[0504] 存储容量报告逻辑,能实现回报主机总存储容量,该总存储容量至少部分基于二级代理的存储容量。
[0505] EC167)根据EC166所述的系统,其中,物理信道可与快速外围组件互联(PCIe)信道和无限带宽信道中的至少一个兼容。
[0506] EC168)根据EC166所述的系统,还包括主机、一级代理、将主机耦接至主机接口逻辑和/或一级代理的交换机、和大容量存储的所有或任何部分中的一个或多个。
[0507] EC169)根据EC166所述的系统,其中,大容量存储包括多个闪速存储装置。
[0508] EC170)根据EC166所述的系统,其中,系统包括在固态磁盘中。
[0509] EC171)一种系统,包括:
[0510] 存储子系统,具有物理组件,其包括多个物理存储装置和具有多个端口的物理交换机部分;
[0511] 主机,经由专用对等链路耦接至多个端口中的专用端口;
[0512] 其中,每个物理存储装置包括:
[0513] 至少一个存储范围,
[0514] 至少一个端口,能实现经由相应对等链路耦接至多个端口的相应端口,以及[0515] 代理逻辑,能使物理存储装置作为存储子系统的一个或多个一级代理和一个或多个二级代理中的至少一个代理而运行,每个一级代理被实现为接受主机发起的存储访问请求以生成子请求并积累子状态,每个二级代理被实现为接受子请求中的至少一个并产生至少一个子状态;以及
[0516] 其中,存储子系统被实现为运行一个或多个逻辑存储装置,每个逻辑存储装置能使主机经由单一逻辑接口访问在对应于一级代理中的一个一级代理和二级代理中的至少一个二级代理的存储装置上分配的存储范围的集合。
[0517] EC172)根据EC171所述的系统,还包括:
[0518] 其中,代理逻辑包括可配置逻辑,其能使物理存储装置至少有时作为一级代理中的至少一个以及至少有时作为二级代理中的至少一个来运行。
[0519] EC173)根据EC171所述的系统,还包括:
[0520] 其中,代理逻辑包括并行逻辑,其能使物理存储装置同时作为一级代理的至少一个和二级代理中的至少一个来运行。
[0521] EC174)根据EC171所述系统,还包括:
[0522] 其中,代理逻辑包括专用代理逻辑,其能使物理存储装置作为一级代理和二级代理中的专用代理来运行。
[0523] EC175)根据EC171所述的系统,还包括:
[0524] 其中,逻辑存储装置的第一逻辑存储装置包括一级代理中的至少第一一级代理和二级代理中的一个或多个;以及
[0525] 其中,物理交换机部分能实现第一一级代理和每个二级代理之间的主机闭塞的对等通信。
[0526] EC176)根据EC171所述的系统,还包括:
[0527] 其中,具有多个端口的物理交换机部分是具有第一多个端口的第一物理交换机部分,以及物理组件还包括具有第二多个端口的第二物理交换机部分;以及
[0528] 其中,每个物理存储装置还包括至少一个端口,其可被被实现为经由相应的点对点链路被耦接至第二多个端口的相应端口。
[0529] EC177)根据EC176所述的系统,还包括:
[0530] 其中,第二物理交换机部分能实现经由对等通信实施的存储冗余技术,且对可用于经由第一物理交换机部分的通信的带宽的影响不重要。
[0531] EC178)根据EC177所述的系统,还包括:
[0532] 其中,对等通信经由第二物理交换机部分进行,且包括控制信息、未转化的冗余数据和转化的冗余数据中的一个或多个。
[0533] EC179)根据EC176所述的系统,还包括:
[0534] 其中,单一物理交换机包括第一物理交换机部分和第二物理交换机部分。
[0535] EC180)根据EC171所述的系统,还包括:
[0536] 其中,单一逻辑接口能实现经由一级代理和二级代理之间的主机闭塞的对等通信实施的镜像、条带化、RAID奇偶校验和故障转移中的一个或多个。
[0537] EC181)根据EC171所述的系统,还包括:
[0538] 其中,一级代理包括第一一级代理和第二一级代理,二级代理包括第一二级代理和第二二级代理,物理存储装置包括第一物理存储装置和第二物理存储装置,以及逻辑存储装置包括第一逻辑存储装置和第二逻辑存储装置;
[0539] 其中,对于第一子集的请求,第一物理存储装置作为第一一级代理和第一二级代理而运行;
[0540] 其中,对于第二子集的请求,第二物理存储装置作为第二一级代理和第二二级代理而运行;以及
[0541] 其中,第一逻辑存储装置包括第一一级代理和第二二级代理,第二逻辑存储装置包括第二一级代理和第一二级代理,且第一逻辑存储装置与第二逻辑存储装置同时运行。
[0542] EC182)根据EC181所述的系统,还包括:
[0543] 其中,第一子集的请求来自第一主机请求队列,以及第二子集的请求来自第二主机请求队列。
[0544] EC183)根据EC181所述的系统,还包括:
[0545] 其中,主机是第一主机,且第一子集的请求来自第一主机,以及第二子集的请求来自第二主机。
[0546] EC184)根据EC181所述的系统,还包括:
[0547] 其中,第一子集的请求和第二子集的请求来自相同的主机请求队列。
[0548] EC185)根据EC171所述的系统,还包括:
[0549] 其中,逻辑存储装置的第一逻辑存储装置包括一级代理的至少第一一级代理和二级代理的至少第一二级代理;
[0550] 其中,第一逻辑存储装置的代理的存储范围的集合是第一逻辑存储子空间;以及[0551] 其中,代理逻辑包括存储恢复逻辑,其能使第一一级代理识别由一个或多个代理提供的可用的空闲存储,并在确定第一逻辑存储子空间的特定部分不再由一个代理提供之后,从空闲存储分配以恢复先前提供的特定部分。
[0552] EC186)根据EC171所述的系统,还包括:
[0553] 其中,逻辑存储装置的第一逻辑存储装置包括一级代理的至少第一一级代理和二级代理的至少第一二级代理,物理存储装置包括第一物理存储装置和第二物理存储装置,且其中,第一物理装置最初作为第一一级代理而运行;
[0554] 监测代理,其实现为确定第一一级代理已发生故障并将一级代理替换请求发送至其他代理中的所选的一个;以及
[0555] 其中,第二物理装置的代理逻辑包括一级代理替换逻辑,其响应于从监测代理接收一级代理替换请求而使第二物理存储装置作为第一一级代理的替代而运行。
[0556] EC187)一种方法,包括:
[0557] 作为一级代理而运行第一存储装置,以及作为一个或多个二级代理而运行至少第二存储装置,一级代理和二级代理中的每个存储装置均具有至少一个相应存储范围;
[0558] 一级代理提供逻辑接口,其能使主机作为单一逻辑装置访问在一级代理和二级代理中的存储装置上分配的存储范围的集合,一级代理经由逻辑接口与主机通信,该通信包括由一级代理接受来自主机的存储访问请求和由一级代理发送至主机的整体状态;
[0559] 一级代理将作为一个或多个子请求而被接受的每个请求转发至二级代理的所有或任何部分、接受与来自子请求被转发至其上的二级代理的子请求相关联的子状态、以及至少基于子状态制定每个发送的整体状态;以及
[0560] 二级代理中的所有或任何部分接受子请求、将子请求的主机环境寻址信息转换为本地环境寻址信息、至少部分基于本地环境寻址信息来访问本地存储、以及将子状态提供至所述一级代理。
[0561] EC188)根据EC187所述的方法,还包括:
[0562] 一级代理至少部分基于一级和二级代理的存储范围来确定单一逻辑装置的集合存储容量;
[0563] 响应于主机查询有关存储容量的单一逻辑装置,一级代理报告集合存储容量;以及
[0564] 响应于主机查询有关存储容量的二级代理,每个二级代理报告相应存储容量,该容量排除了对在集合存储容量中表示的二级代理的任何存储范围的表示。
[0565] EC189)根据EC187所述的方法,还包括:
[0566] 响应于主机查询有关存储容量的二级代理中的特定一个代理,特定二级代理回报特定存储容量,该容量排除了对通过在由一级代理确定的集合存储容量中表示的由特定二级代理实施的那些存储部分的表示。
[0567] EC190)根据EC187所述的方法,还包括:
[0568] 根据主机接口协议执行至少一些一级代理与主机的通信。
[0569] EC191)根据EC187所述的方法,还包括:
[0570] 经由共享相同物理链路执行至少一些一级代理与主机的通信和至少一些一级代理与二级代理中的至少一个的通信;以及
[0571] 其中,一级代理与二级代理中的至少一个的通信包括在一级代理和二级代理之间交换的至少一些子请求和至少一些子状态。
[0572] EC192)根据EC187所述的方法,还包括:
[0573] 根据对等协议执行至少一些一级代理与二级代理的通信;以及
[0574] 其中,一级代理与二级代理的通信包括在一级代理和二级代理之间交换的至少子请求和子状态。
[0575] EC193)根据EC192所述的方法,还包括:
[0576] 一级代理与二级代理的通信还包括经由对等协议交换冗余信息。
[0577] EC194)一种设备,包括:
[0578] 用于作为一级代理而运行第一存储装置以及作为一个或多个二级代理而运行至少第二存储装置的装置,一级和二级代理的每个存储装置均具有至少一个相应存储范围;
[0579] 用于使一级代理提供逻辑接口从而能使主机作为单一逻辑装置来访问在一级代理和二级代理的所述存储装置上分配的存储范围的集合的装置,一级代理经由逻辑接口与主机通信包括由一级代理从主机中接收的存储访问请求和由一级代理发送至主机的整体状态;
[0580] 用于使一级代理将作为一个或多个子请求而接受的每个请求转发至二级代理的所有或任何部分、接受与来自子请求被转发至其上的二级代理的子请求相关联的子状态以及至少基于子状态制定每个发送的整体状态的装置;以及
[0581] 用于使二级代理的所有或任何部分接受子请求、将子请求的主机环境寻址信息转换为本地环境寻址信息、至少部分基于本地环境寻址信息来访问本地存储以及将子状态提供至一级代理的装置。
[0582] EC195)根据EC194所述的设备,还包括:
[0583] 用于使一级代理至少部分基于一级和二级代理的存储范围来确定单一逻辑装置的集合存储容量的装置;
[0584] 用于使一级代理响应于主机查询有关存储容量的单一逻辑装置而报告集合存储容量的装置;以及
[0585] 用于使每个二级代理响应于主机查询有关存储容量的二级代理而报告相应存储容量的装置,该存储容量排除了对在集合存储容量中表示的二级代理的任何存储范围的表示。
[0586] EC196)根据EC194所述的设备,还包括:
[0587] 用于使特定二级代理响应于主机查询有关存储容量的二级代理中的特定一个而回报特定存储容量的装置,该存储容量排除了对通过在由一级代理确定的集合存储容量中表示的由特定二级代理实施的那些存储部分的表示。
[0588] EC197)根据EC194所述的设备,还包括:
[0589] 用于根据主机接口协议执行至少一些一级代理与主机的通信的装置。
[0590] EC198)根据EC194所述的设备,还包括:
[0591] 用于经由共享相同物理链路来执行至少一些一级代理与主机的通信和至少一些一级代理与至少一个二级代理的通信的装置;以及
[0592] 其中,一级代理与至少一个二级代理的通信包括在一级代理和二级代理之间交换的至少一些子请求和至少一些子状态。
[0593] EC199)根据EC194所述的设备,还包括:
[0594] 用于根据对等协议执行至少一些一级代理与二级代理的通信的装置;以及[0595] 其中,一级代理与二级代理的通信包括在一级代理和二级代理之间交换的至少子请求和子状态。
[0596] EC200)根据EC199所述的设备,其中:
[0597] 一级代理与二级代理的通信还包括经由对等协议交换的冗余信息。
[0598] 可扩展存储系统
[0599] 图1A示出了用于可扩展存储装置的技术的实施方式的所选结构细节,包括主机、具有作为相应一级代理而可运行的一个或多个存储装置的主机可视存储和具有作为相应二级代理而可运行的一个或多个存储装置的主机可视存储。主机100经由主机-存储装置耦接器180耦接至主机可视存储110和主机不可视存储120。主机存储装置耦接器以及主机可视和主机不可视存储可选地作为可插式模块(如附加卡190A所示)来实施和/或耦接器101可选地作为电缆来实施。在一些实施方式中,附加卡的所有或任何部分作为SSD来实施。主机可视存储具有一个或多个存储装置(如存储装置110.A和存储装置110.N所示)。类似地,主机不可视存储具有一个或多个存储装置(如存储装置120.A和存储装置120.N所示)。在各种实施方式中,存储装置中的任何一个或多个均是物理存储装置,诸如SSD。
[0600] 耦接器101、111.A、111.N、121.A和121.N使能主机、主机可视存储和主机不可视存储之间的请求、状态和数据传输。一个或多个耦接器经由主机接口协议使能传输(诸如用作主要元件的主机,和作为从属元件而运行的主机可视存储的元件中的一个)。耦接器中的一个或多个经由对等协议使能传输(诸如作为一级代理而运行的主机可视存储元件中的一个,以及作为二级代理而运行的主机不可视存储的元件中的一个或主机可视存储的其他元件中的一个)。在各种实施方式中,耦接器中的一个或多个可与接口标准(如PCIe或者无限带宽)兼容。在各种实施方式中,主机-存储装置耦接器180经由一个或多个PCIe和/或无限带宽交换机实施。在一些实施方式中,主机-存储装置耦接器180与主机100集成,作为主机计算复合体的所有或任何部分。
[0601] 主机可视存储元件实施存储,并在初始化期间,这些元件被配置为能使主机访问实施的存储中的至少一些,从而诸如经由主机接口协议提供对主机“可视的”存储。主机不可视存储元件也实施存储,但在初始化期间,元件被配置为禁用主机访问实施的存储中的至少一些,从而提供对主机“不可视的”存储。然而,对主机“不可视的”存储可诸如经由对等协议经由主机可视存储的元件通过主机间接访问。
[0602] 虚线箭头151概念性示出主机100和存储装置110.A之间的信息传输,且表示主机和主机可视存储110的任何元件之间的信息传输。信息传输包括源自主机的一个或多个请求以访问存储、与请求有关的状态响应和与请求有关的数据传输。请求包括地址(诸如LBA)和长度(诸如以字节或LBA量为单位)中的一个或多个。从主机向存储装置的信息传输经由耦接器101、主机-存储装置耦接器180、以及随后经由耦接器111.A来传送,且用于从存储装置向主机的信息传输相反。
[0603] 虚线箭头152概念性示出存储装置110.A和存储装置120.A之间的信息传输,且表示主机可视存储110的任何元件和主机不可视存储120的任何元件之间的对等信息传输。信息传输包括从存储装置110.A(用作一级代理)到主机不可视存储120的任何元件(用作二级代理)的一个或多个子请求、关于子请求的子状态响应和关于子请求的数据传输。子请求包括一个或多个地址(诸如LBA)和长度(诸如以字节或LBA量为单位)。从一级代理到二级代理的信息传输经由耦接器111.A、主机-存储装置耦接器180通信、以及随后经由耦接器121.A来传送,且用于从二级代理到一级代理的信息传输相反。
[0604] 虚线箭头153概念性示出存储装置110.A和存储装置110.N之间的信息传输,并表示主机可视存储110的任何元件之间的对等信息传输。信息传输包括从存储装置110.A(用作一级代理)到主机可视存储110的任何其他元件(用作二级代理)的一个或多个子请求、关于子请求的子状态响应和关于子请求的数据传输。从一级代理到二级代理的信息传输经由耦接器111.A、主机-存储装置耦接器180、以及随后经由耦接器111.N来传送,且用于从二级代理到一级代理的信息传输相反。
[0605] 虚线箭头154概念性示出主机100和存储装置120.A之间的信息传输,并表示主机可视存储和主机不可视存储120的任何元件之间的信息传输。信息传输包括关于请求的整体状态响应和关于请求的数据传输中的一个或多个。尽管未在图中清楚示出,但从主机到存储装置的信息传输经由耦接器101、主机-存储装置耦接器180、以及随后经由耦接器121.A来传送,且用于从存储装置到主机的信息传输相反。
[0606] 在一些实施方式中,源自主机的请求经由可经由耦接器101访问的主机存储器中的一个或多个提交队列来进行(例如,通过一级代理经由一个或多个DMA操作读取提交队列中的条目)。在一些实施方式中,提供至主机的状态经由可访问一级和/或二级代理的主机存储器中的一个或多个完成队列来进行(例如,通过一级和/或二级代理经由一个或多个DMA操作写入完成队列中的条目)。在一些实施方式中,请求和/或状态至少部分经由一个或多个铃和/或尾部寄存器、可选地与一个或多个提交和/或完成队列一起来传送。在一些实施方式中,请求和/或状态至少部分经由被主机发起的编程IO操作被传送至一级代理。在一些实施方式中,提交和/或完成队列描述符至少部分经由被主机发起的编程IO操作被传送至一级代理。
[0607] 在一些实施方式中,接受来自主机的请求包括从提交队列读取一个或多个条目。例如主机将特定条目写入保留在主机存储器内的提交队列中、相应地修改尾部寄存器、以及设置对应的门铃寄存器(诸如在一级代理中实施和/或可由一级代理访问的门铃寄存器)。响应于门铃寄存器的设置,一级代理访问尾部寄存器并读取特定的提交队列条目(诸如经由从主机存储器中读取的DMA)。在一些实施方式中,将状态提供至主机包括在完成队列中写入一个或多个条目。例如一级代理将特定条目写入保留在主机存储器中的提交队列中(诸如经由DMA写入主机存储器)、相应地修改尾部寄存器、以及通知主机已完成的操作(例如,通过设置对应的门铃寄存器或提供中断)。响应于门铃寄存器的设置,主机访问尾部寄存器并读取特定的完成队列条目。
[0608] 在一些实施方式中,使用与确定子请求所根据的请求不同的路由、寻址和/或封装将子请求发送至二级代理,且在与请求相同的耦接器上输送子请求。例如,在使用用于传输请求、子请求和子状态流量中的任何或所有的PCIe耦接器的示例性系统中,请求被提供至一级代理以作为来自读取请求的完成,而子请求在MsgD请求中被转发至二级代理。在一些实施方式中,子请求被重新封装以包括除了确定子请求所根据的请求之外的信息。例如,重新封装的子请求包括额外信息,诸如流量控制、增强的路由信息、或关于请求内容的其他额外信息。在一些实施方式中,增强的路由信息可经由一个或多个耦接器来实现将子请求发送至远程二级代理。
[0609] 在一些实施方式中,使用与子状态所对应的请求不同的路由、寻址和/或封装将子状态发送至一级代理,且在与请求相同的耦接器上传输子状态。例如,在使用用于传输请求、子请求和子状态流量中的任何或所有的PCIe耦接器的示例性系统中,请求被提供至一级代理以作为来自读取请求的完成,而子状态在MsgD请求中通过二级代理被转发至一级代理。在一些实施方式中,子状态被重新封装以包括除子状态和/或子状态所对应的请求之外的信息。例如,重新封装的子状态包括额外信息,诸如流量控制、增强的路由信息、或关于请求内容的其他额外信息。在一些实施方式中,增强的路由信息可经由一个或多个耦接器来实现将子状态从远程二级代理发送至一级代理。
[0610] 作为具体的实例,主机100(用作主要元件)将经由主机接口协议访问存储(由虚线箭头151概念性示出)的请求提供至存储装置110.A。作为响应,存储装置110.A(用作从属元件)响应该请求。存储装置110.A经由主机接口协议接受该请求(也由虚线箭头151概念性示出),并随后确定有关请求的存储是否由存储装置110.A和/或由主机不可视存储120的一个或多个元件或主机可视存储110的任何其他元件来实施。存储装置110.A随后内部处理请求(如果由存储装置110.A实施至少一些存储)和/或用作一级代理经由对等协议将请求作为一个或多个对等子请求转发至存储装置120.A(由虚线箭头152概念性示出)。存储装置120.A(作为二级代理)经由对等协议接受子请求(也由虚线箭头152概念性示出),并随后内部处理子请求。存储装置120.A随后将对应于子请求的子状态返回至存储装置110.A(也由虚线箭头152概念性示出)。存储装置110.A随后确定请求的整体状态,并将整体状态提供至主机(由虚线箭头152概念性示出)。可替代地,并非存储装置
120.A将子状态返回至存储装置110.A(随后转发至主机100),而是存储装置120.A将子状态直接返回至主机100(由虚线箭头154概念性示出)。
[0611] 继续具体的实例,用于读取的数据类似地流向状态。存储装置120.A将对应于子请求的数据返回至存储装置110.A(由虚线箭头152概念性示出),且随后存储装置110.A将数据提供至主机(由虚线箭头151概念性示出)。可替代地,并非存储装置120.A将数据返回至存储装置110.A(随后转发至主机100),而是存储装置120.A将数据直接返回至主机100(由虚线箭头154概念性示出)。用于特定请求的状态和数据不限制于相同的流量。例如,对于一个请求,状态和数据均经由一级代理(诸如存储装置110.A)从二级装置(例如,存储装置120.A)流向主机100。对于另一请求,状态经由一级代理从二级代理流向主机,且数据从二级代理直接流向主机。用于写入的数据经由一级代理从主机流向二级代理(由虚线箭头151和152概念性示出),或可替代地直接从主机流向二级代理(由虚线箭头154概念性示出)。
[0612] 其他实例包括用作一个或多个一级代理的主机可视存储110的元件中的任何一个或多个和用作一个或多个二级代理的主机不可视存储120的元件中的任何一个或多个或主机可视存储110的其他元件中的任何一个或多个。
[0613] 图1B示出了用于可扩展存储装置的技术的另一实施方式的所选结构细节,包括主机、具有作为相应一级代理而可运行的一个或多个存储装置的主机可视存储和具有作为相应二级代理而可运行的一个或多个存储装置的主机不可视存储。技术使用了一些元件,这些元件在操作和结构上与图1A的类似确定的元件相同(主机100、主机-存储装置耦接器180以及耦接器101、111.A、111.N、121.A和121.N)。主机可视存储130类似于图1A的主机可视存储110,除了其中的存储装置(存储装置130.A和存储装置130.N)各自经由额外的耦接器(分别为耦接器131.A和131.N)来实现通信。主机不可视存储140类似于图1A的主机不可视存储120,除了其中的存储装置(存储装置140.A和存储装置140.N)经由额外的耦接器(分别为耦接器141.A和141.N)来实现通信。装置-存储装置耦接器181耦接至耦接器131.A、131.N、141.A和141.N,且可在主机可视存储130和主机不可视存储
140的任何元件之间实现额外的通信带宽,例如用于对等通信。例如,装置-存储装置耦接器181可在存储装置130.A和主机不可视存储140中的任何元件之间实现额外的通信带宽。对于另一实例,装置-存储装置耦接器181可在存储装置130.A和存储装置130.N之间实现额外的通信带宽。
[0614] 主机-存储装置耦接器和装置-存储装置耦接器以及主机可视和主机不可视存储可选地作为可插式模块(如附加卡190B所示)来实施和/或耦接器101作为电缆被可选地实施。在一些实施方式中,附加卡的所有或任何部分均作为SSD来实施。在各种实施方式中,存储装置中的任何一个或多个均是SSD。
[0615] 在一些实施方式和/或使用场景中,由装置-存储装置耦接器181提供的额外通信带宽能实现经由对等通信(诸如RAID5)实施的存储冗余技术,且对可用于在主机和存储装置之间的通信的带宽的影响很少或没有影响。对等通信包括未转化的数据(诸如在RAID镜像操作期间)、转化的数据(诸如在RAID奇偶校验产生和/或写入期间的XOR数据)和控制信息中的一个或多个。
[0616] 在一些实施方式中,RAID冗余可通过以条带化方式在多个存储装置之间分配RAID数据(诸如与(非RAID)数据如何分配正交(orthogonal))来实现。在一些情况下,当主机请求被读取时,信息从两个或更多个存储装置中被读取。当主机请求被写入时,保持RAID冗余信息可选地包括针对存储装置中的两个或更多个来执行RMW操作,或可替代地,数据复制操作。
[0617] 当一级代理或二级代理由于主机写入请求的结果而检索数据时,代理随着特定RAID数据将对等请求(诸如,经由装置-存储装置耦接器181)传送至另一代理(一级代理或二级代理)。在一些情况下(诸如镜像RAID),特定RAID数据是对写入请求的数据的复制。在一些情况下(诸如RAID5),特定RAID数据基于写入请求的数据和对应于写入请求的LBA的先前数据(例如先前数据与写入请求的数据用于RMW操作(诸如XOR))来计算。
[0618] 例如,代理接收写入请求的数据通过异或写入请求的数据与对应于写入请求的LBA的先前数据来计算RAIDδ。代理将RAIDδ发送至储存与LBA相关联的RAID冗余的代理中的一个。储存RAID冗余的代理随后执行RMW,以使用RAIDδ更新RAID冗余。若储存RAID冗余的代理已被通知期望RAID冗余的多个更新,则存储RAID冗余的代理可选和/或选择性地组合RMW操作以提高效率。
[0619] 在一些实施方式和/或使用场景中,一级代理通知另一代理(另一一级代理或二级代理)将有多少个RAID更新用于特定LBA。在各种实施方式中,被通知的代理能实现缓存与RAID更新有关的信息,直到特定LBA的所有更新被执行。在各种实施方式中,RAID更新的数量无论是隐式或显式均作为子请求的一部分被传送。当RAID更新完成后,被通知的代理将子状态发送至一级代理。
[0620] 在各种实施方式中,全部或部分独立执行有关单一主机请求的多个数据传输。例如,在一些RAID RMW场景中,写入数据的传输独立于先前积累的奇偶校验数据的传输。在各种情况下,由任何一级代理和多个二级代理从主机存储器中读取写入数据,通过一级代理和二级代理中的任何一个从存储装置中读取累积的奇偶校验数据,以及随后将新的奇偶校验数据写入例如累积的奇偶校验数据从其中被读取的存储装置。
[0621] 在各种实施方式中,耦接器131.A、131.N、141.A和141.N中的一个或多个与图1A的耦接器111.A、111.N、121.A和121.N相同或基本类似。在一些实施方式中,装置存储耦接装置-存储装置耦接器181与主机-存储装置耦接器180的实施相同或基本类似。在一些实施方式中,主机-存储装置耦接器180和装置-存储装置耦接器181被组合成单一元件。在一些实施方式中,耦接器131.A、131.N、141.A和141.N中的任何一个或多个耦接至主机-存储装置耦接器180(而不是装置-存储装置耦接器181)的变形的额外端口。
[0622] 在各种实施方式,诸如与图1A和图1B相关的一些实施方式中,主机可视存储具有可作为相应一级代理操作的一个或多个存储装置和可作为二级代理操作的零个或多个存储装置,而主机不可视存储具有可作为相应二级代理操作的零个或多个存储装置。
[0623] 在各种实施方式中,存储装置对应于物理存储装置,且物理存储装置可被实现为根据一个或多个操作模式实施主机可视存储和主机不可视存储的任何组合。在第一操作场景中,特定物理装置被操作以仅实施主机可视存储。在第二操作场景中,特定物理装置被操作以仅实施主机不可视存储。在第三操作场景中,特定物理装置被操作以实施主机可视存储和主机不可视存储的组合。在一些情况下(诸如响应于工作负荷的变化和/或故障),操作动态地从一个操作场景改变为另一操作场景。
[0624] 例如,参照图1A,如图所示开始操作,其中主机可视存储110具有存储装置110.A和存储装置110.N,且主机不可视存储120具有存储装置120.A和存储装置120.N。继续实例,存储装置110.A、110.N、120.A和120.N中每一个对应于相应物理存储装置。响应于工作负荷的变化,存储装置110.N被动态配置为从作为主机可视存储的元件(重新)而运行到作为主机不可视存储的元件而运行。在动态重新配置后,主机可视存储110具有存储装置110A,且主机不可视储存120具有存储装置110.N、存储装置120.A和存储装置120.N(未示出)。
[0625] 对于另一实例,参照图1B,如图所示开始操作,其中主机可视存储130具有存储装置130.A和存储装置130.N,且主机不可视存储140具有存储装置140.A和存储装置140.N。继续实例,存储装置130.A、130.N、140.A和140.N中的每一个对应于相应物理存储装置。响应于存储装置130.A的故障,存储装置140.A被动态(重新)配置为作为主机可视存储的元件而运行以及继续作为主机不可视存储的元件而运行。例如,由存储装置140.A实施的存储被分配在故障之前被用作替换由存储装置130.A实施的存储的所有或任何部分和继续用作主机不可视存储之间。在动态重新配置之后,主机可视存储130具有由存储装置
140.A和存储装置130.N实施的存储的一部分,且主机不可视存储140具有存储装置140.A(少于用于替换存储装置130.A的部分)和存储装置140.N(未示出)。
[0626] 在各种实施方式中,主机可视存储是经由透明交换机可访问主机的存储,和/或主机不可视存储是经由非透明交换机隐藏在主机中的存储。主机可视存储和主机不可视存储可例如经由透明和/或非透明交换机的所有或任何部分来实现对等通信。在一些实施方式中,一体交换机提供透明部分和非透明部分(分别对应于上述透明和非透明交换机)。例如,参照图1B,主机100、耦接器101、主机-存储装置耦接器180和装置-存储装置耦接器181的所有或任何部分中的一个或多个实施一体交换机。一体交换机可针对主机可视存储
130的一个或多个元件作为透明交换机来运行,且同时也可针对主机不可视存储140的一个或多个元件作为非透明交换机来运行。
[0627] 可扩展存储系统操作
[0628] 图2示出了用于可扩展存储装置的技术的实施方式的所选处理细节。所示的是由用作一级代理的存储装置(诸如图1A的主机可视存储110的元件中的一个或多个)执行的动作,如“一级动作”209;以及由用作二级代理的存储装置(诸如图1A的主机不可视存储120的元件中的一个或多个和/或主机可视存储110的其他元件中的任何一个或多个)执行的动作,如“二级动作”219。
[0629] 首先描述由单一对应代理满足访问存储的请求的场景,且随后描述由多于一个对应代理满足单个请求的场景。主机(如图1A的主机100)将访问存储的请求提供至用作一级代理(由“开始”201概念性示出)的存储装置。一级代理诸如通过以下方式接受来自主机的请求:读取保留在主机存储器中的提交队列条目、可选地提供与主机的信号交换以表示请求已被接受而没有错误(“接受来自主机的请求”202)。一级代理随后检查请求,以确定请求是否是由一级代理(“本地?”203)实施的存储。如果是(“是”,203Y),则流程继续进行至一级代理处理被提供有以下请求的地址信息:将地址信息从与该请求相关联的(主机)环境转换为与由一级代理实施的对应存储相关联的(一级代理)环境(“转换为本地LBA”204)。对于一个实例,请求指定LBA100,且一级代理将LBA100转换为LBA0,对应于由一级代理实施的存储的开始位置(本地)。一级代理随后执行请求(“本地处理”205),并将状态提供至主机(“将状态提供至主机”206),诸如通过写入保留在主机存储器中的完成队列条目,从而完成请求的处理(“结束”299)。在一些实施方式中,转换包括LBA的函数和本地存储地址之间的映射,类似于页表。
[0630] 若请求不是由一级代理实施的存储(“否”,203N),则一级代理中的流量继续将请求作为子请求发送至用作二级代理的存储装置(“转发至二级代理”207)。一级代理确定请求中的子请求,且子请求从一级代理到二级代理的通信由虚线“子请求”207R示出。在一级代理中,流量随后继续等待由二级代理完成子请求(“等待完成”208)。当二级代理已完成子请求(有或没有错误)时,二级代理将子状态供应至一级代理(由虚线“子状态”214S概念性示出)。一级代理随后接受来自二级代理的子状态,可选地提供与主机的信号交换以表示子状态已被接受而没有错误(“接受来自二级代理的子状态”209A)。一级代理随后继续进行以将子状态作为状态提供至主机(“将状态提供至主机”206),并随后完成处理该请求(“结束”299)。
[0631] 在二级代理中,流程通过接受来自一级代理的子请求开始,可选地提供与一级代理的信号交换以表示子请求已被接受而没有错误(“接受来自一级代理的子请求”211)。子请求包括如由主机在子请求所对应的请求中提供的地址信息(诸如LBA)。二级代理处理提供有子请求的地址信息,该子请求用于将地址信息从与请求相关联的(主机)环境转换为与由二级代理实施的对应存储相关联的(二级代理)环境(“转换为本地LBA”212)。例如,请求指定LBA200,子请求指定LBA200,且二级代理将(主机)LBA200转换为(本地)LBA0,对应于由二级代理实施的(本地)存储的开始位置。继续进行实例,另一请求指定LBA201,对应子请求指定LBA201,且二级代理将(主机)LBA201转换为(本地)LBA1,对应于由二级代理实施的(本地)存储的下一个位置。接下来,在图3的描述中描述其他实例。在转换子请求之后,随后流程继续至二级代理执行请求(“本地处理”213),并随后将子状态返回至一级代理(“将子状态提供至一级代理”214),如由虚线“子状态”214S所示。
[0632] 在访问存储的单一请求由对于一个的对应代理满足的场景中,单个请求概念上被分成多个子请求。零个、一个或更多个子请求由一级代理满足,且零个、一个或更多个子请求由零个、一个或更多个二级代理满足。例如,对长度为两个LBA的LBA400的请求由对LBA400的二级代理的子请求和对LBA401的另一二级代理的另一子请求满足。每个二级代理独立地将相应子请求的LBA转换为对应于相应二级代理的本地存储的LBA。
[0633] 一级代理基于请求的地址和长度信息确定哪个二级代理(如有的话)接收子请求。因此,在图2中,确定请求是否是由一级代理实施的存储(“本地”203)针对多个子请求的每个被概念性确定。对于一些子请求,结果是子请求是本地的,而对于其他子请求,结果是其他子请求不是本地的,并作为子请求随着一个或多个二级代理被转发(“转发至二级代理”207和“子请求”207R)。在一些场景中,单一二级代理接收单一子请求,而在其他场景中,单一二级代理接收多个子请求。随后针对多个子请求的每个执行“二级动作”219中表示的流程(在各种实施方式中,串行和/或并行处理的任何组合中)。在一些场景中,多个二级代理中的每一个接收一个或更多的子请求。在“二级动作”219中表示的流程随后由多个二级代理中的每个独立执行。
[0634] 一级代理确定如何诸如经由一个或多个功能和/或映射表(例如,在图1A的存储装置110.A中实施)将单一请求映射成对一个或多个二级代理的多个子请求,以作为在“转发至二级代理”207中执行的部分处理。当多个子请求被发送至一个或多个二级代理时,一级代理针对独立于其他子请求的每个子请求通过等待完成(“等待完成”208)和接受对应子状态(“接受来自二级代理的子状态”209A)来概念性积累状态信息。当特定请求的所有子请求的子状态已被接收时,一级代理产生整体状态以提供至主机,作为在“将状态提供至主机”206中执行的处理的一部分。
[0635] 在一些实施方式中,二级代理接收请求的条目,作为相同子请求(或可替代地,读取来自提交队列中的条目的请求)。每个二级代理随后确定相应二级代理要执行请求的哪个部分(如果有的话),以及可选地要将积累的奇偶校验数据(如有的话)发送至哪个代理。例如,请求指定长度为200LBA的LBA500。一级代理将相同子请求发送至第一和第二二级代理(或可替代地,指向第一和第二二级代理的单一子请求)。子请求指定长度为200LBA的LBA500。第一二级代理(独立于主机和第二二级代理)确定子请求的LBA600-699对应于第一二级代理要执行的子请求的一部分。第二二级代理(独立于主机和第一二级代理)确定子请求的LBA500-599对应于第二二级代理要执行的子请求的一部分。第一和第二二级代理根据特定的冗余方案确定积累的奇偶校验信息是适当的一个代理。
[0636] 在一些实施方式中和/或使用场景中,通过二级代理(而不是通过一级代理来转发)将状态直接提供至主机(由图1A中的虚线箭头154概念性示出)。例如,当请求的条目的子请求被转发至单一二级代理时,直接提供状态发生。单一二级代理随后将状态直接返回至主机(例如,通过单一二级代理将条目写入保留在主机存储器中的完成队列)。注意,单一二级代理写入条目的动作由主机来与一级代理写入条目相区别,且因此,即使单一二级代理写入条目,由单一二级代理满足请求对于主机是透明的。在一些实施方式中,二级代理(不是一级代理)针对对应于特定请求的多个子请求积累子状态,并将累积的子状态作为整体状态提供至主机。
[0637] 在一些实施方式中,一个或多个存储装置至少针对来自一个或多个主机的一些请求而同时作为一级代理和作为二级代理来运行。例如,系统具有两个存储装置。存储装置的第一个针对作为二级代理而运行的存储装置的第二个而作为一级代理来运行,以及第二存储装置针对作为二级代理而运行的第一存储装置而作为一级代理来运行。更具体地,第一存储装置接受来自主机的特定一个的请求,并将请求作为子请求发送至第二存储装置。第二存储装置接受来自特定主机的另一请求,并将其他请求作为子请求转发至第一存储装置。在一些实施方式和/或使用场景中,请求来自相同的主机请求队列。在一些实施方式和/或使用场景中(诸如请求来自不同的主机的情况),请求来自不同的主机请求队列。
[0638] 根据各种实施方式,请求、状态和数据传输中的一个或多个经由例如可访问主机(或部分)(诸如主机存储器)的存储器和可访问存储装置中的一个(或部分)(诸如存储装置中实施的缓冲器)的存储器之间的DMA进行。因此,前述请求、状态和数据传输中的一个或多个流程通过一个或多个散/集列表的传送和根据散/集列表的随后DMA传输进行。此外(或可代替地),请求、状态和数据传输中的一个或多个流程通过通信完成和/或状态队列信息和向/从队列的条目的随后DMA传输进行。在各种实施方式中,请求、状态和数据传输中的任何由存储装置中的一个或多个中的一个或多个处理器直接执行和/或管理。
[0639] 寻址
[0640] 图3示出了用于可扩展存储装置的技术的实施方式中的主机、一级代理以及二级代理寻址的所选细节。图中示出由主机(诸如图1A的主机100)观看的存储地址空间(主机地址空间310)的实例窗口。主机存储地址空间具有主机LBA范围1-5311-315。图中进一步示出由一级代理(诸如图1A的主机可视存储110的任何一个元件)观看的存储地址空间(一级地址空间320)的实例窗口。一级代理存储地址空间具有一级LBA范围1-3321-323。图中还示出如由两个二级代理(二级代理A和B,诸如图1A的主机不可视存储120的任何两个元件和/或主机可视存储110的任何其他元件)观看的存储地址空间(二级地址空间
330)的实例窗口。二级代理A存储地址空间具有二级LBA范围1-3331A、332A和333A。二级代理B存储地址空间具有二级B LBA范围1-2331B和332B。尽管未按照任何特定的比例绘制,但图中的各个地址范围元件的垂直高度变化,概念性表示在每个范围内有多少位置的变化。
[0641] 在第一实例中,单一主机地址范围(主机LBA范围1311)对应于二级A的单一地址范围(二级A LBA范围1331A)。一级代理(诸如图1A的存储装置110.A)确定对主机LBA范围1311内的地址的主机请求对应于不由一级代理实施的存储(诸如经由与图2的“本地?”203和“否”203N相关联的处理),并确定请求对应于由二级A实施的存储。一级代理随后将子请求转发至二级A。二级A随后转换子请求(诸如与图2的“转换为本地LBA”212相关联的处理),并执行对经由二级A LAB范围1331A可访问的存储的本地访问(诸如经由图2的“本地处理”213处理)。
[0642] 在第二实例中,单一主机地址范围(主机LBA范围2312)对应于二级B的单一地址范围(二级B LBA范围1331B)。一级代理确定对主机LBA范围2312内的地址的请求对应于由二级B实施的存储,并随后将子请求转发至二级B。二级B随后转换子请求,并执行对经由二级B LBA范围1331B可访问的存储的本地访问。
[0643] 在第三实例中,单一主机地址范围(主机LBA范围3313)对应于一级代理的单一地址范围(一级LBA范围1321)。一级代理确定对主机LBA范围3313内的地址的请求对应于由一级代理实施的存储,转换请求(诸如经由与“转换为本地LBA”204相关联的处理),以及执行对经由一级LBA范围1321可访问的存储的本地访问。
[0644] 在第四实例中,单一主机地址范围(主机LBA范围4314)对应于二级A的两个地址范围(二级A LBA范围2332A和3333A)和二级B的单一地址范围(二级B LBA范围332B)。一级代理确定对主机LBA范围4314的LBA的条目的请求(基于例如起始LBA和要访问的多个连续LBA)对应于由二级A和二级B实施的存储。一级代理随后将两个子请求转发至二级A并将单一子请求转发至二级B。二级A转换两个子请求并执行对经由二级A LBA范围332A和333A可访问的存储的本地访问(串行或全部或部分并行)。二级B转换单一子请求,并执行对经由二级B LBA范围2332B可访问的存储的本地访问。
[0645] 在第五实例中,单一主机地址范围(主机LBA范围5315)对应于一级代理(一级LBA范围2322和3323)的两个地址范围。一级代理确定对主机LBA范围5315的LBA的条目的请求(基于例如起始LBA和多个要访问的连续LBA)对应于由二级代理实施的存储。一级代理将请求转换为两个本地LBA范围,并执行对经由一级LBA范围2322和3323可访问的存储的本地访问。
[0646] 在一些实施方式中,一级代理被实现为单独将主机请求的每个子请求转发至一个或多个二级代理中特定的一个代理。在其他实施方式中,一级代理被实现为将主机请求的两个或更多个子请求作为单一组合的子请求转发至多个二级代理中的特定一个代理。例如,在各种实施方式中,一级代理确定一个或多个代理以处理主机请求的一个或多个子请求,并将LBA范围和长度相同的主机请求转发至一个或多个二级代理。一个或多个二级代理被实现为随后解释LBA范围和长度,以确定主机请求的相应部分会被处理并对应于所述一个或多个二级代理中的每一个。在其他实施方式中,一级代理处理主机请求的LBA范围和长度,并将LBA范围和长度的处理版本发送至一个或多个二级代理中的每一个。例如,若数据在64KB边界上的N个代理(N-1个二级代理和一级代理)之间被条纹化,则一级代理将用N*64KB划分LBA范围,以对N-1个二级代理分配子请求。N-1个二级代理中的每个均接收开始划分的LBA的相应子请求,长度的部分对应于在N个代理之间的条带化数据,且可选和/或选择性地划分LBA后面的剩余部分;因此,二级代理的第一和/或最后一个可选地处理小于64KB的传输。
[0647] 可扩展存储装置
[0648] 图4示出了能实现作为一级代理而运行的可扩展存储装置(具体为图1A的存储装置110.A)的实施方式的所选结构细节。存储装置包括到PCIe总线的接口(PCIe接口401)。PCIe接口包括DMA单元,其能实现直接在主机存储器和PCIe接口的缓存器之间的可选和/或选择性的传输,例如读/写完成/状态队列条目和/或直接将数据从/向主机存储器传输。PCIe接口耦接至转换块(LBA,长度转换逻辑402)。转换块被实现为将主机存储地址信息(例如LBA和长度)转换为本地存储地址信息,诸如参照图2的“转换至本地LBA”204所描述。转换块耦接至与一个或多个大容量存储单元(如统称为大容量存储404所示)耦接的大容量存储接口(存储接口403)。大容量存储单元包括闪存存储装置(闪存
404F)、磁盘存储单元(磁性404M)、光盘存储单元(光学404O)中的任何一个或多个和/或任何类型的非易失性存储单元。在各种实施方式中,闪存存储单元包括一个或多个闪存芯片和/或管芯,诸如NAND闪存或NOR闪存。
[0649] 存储装置110.A包括控制块,其被实现为作为一级代理执行有关操作的各个操作(子请求生成&子状态积累405),其可选地耦接至PCIe接口401、LBA、长度转换逻辑402和存储接口逻辑403中的一个或多个。操作包括例如实施和/或管理与图2的“一级动作209”的元件的任何一个或多个相关联的处理的所有或任何部分。在一些实施方式中,子请求&子状态积累405实施一个或多个功能和/或映射表,该表跟踪主机地址如何被分配至各个二级装置(诸如由图2的“转发至二级代理”207使用的映射表)。操作还包括响应于主机查询有关存储容量,如由一个或多个二级代理(诸如图5的存储装置120.A)实施的存储容量由存储装置110.A来实施。
[0650] 图5示出了被实现为作为二级代理(诸如图1A的存储装置120.A)而运行的可扩展存储装置的实施方式的所选结构细节。存储装置包括在操作和结构上类似地与图4的确定的元件相同的一些元件(PCIe接口401、LBA、长度转换逻辑402、存储接口逻辑403以及具有元件闪存404F、磁性404M和404O的大容量存储404)。
[0651] 存储装置120.A包括控制块,其被实现为作为二级代理执行有关操作的各个操作(子请求接受&子状态生成501),且其可选地耦接至PCIe接口401、LBA、长度转换逻辑402和存储接口逻辑403中的一个或多个。操作包括例如实施和/或管理与图2的“二级动作219”的元件中的任何一个或多个相关联的处理的所有或任何部分。操作还包括响应于主机查询有关存储容量,如没有由存储装置120.A实施的存储,或可替代地,如针对经由一级代理通过主机(而不是直接通过主机)的访问而分配的存储不由存储装置实施。相反,由存储装置120.A实施的存储由一级代理(诸如图4的存储装置110.A)报告。
[0652] 在一些实施方式(未示出)中,可配置的存储装置包括对应于在图4的存储装置110.A中示出的所有元件的功能的元件,且还包括对应于图5的子请求接受&子状态生成
501的功能的元件。实例性可配置的存储装置包括PCIe接口401、LBA、长度转换逻辑402、存储接口逻辑403和大容量存储404以及子请求生成&子状态积累405和子请求接受&子状态生成501。例如响应于包括的可编程的模式状态,可配置的存储装置被实现为作为一级代理或二级代理可选择地运行。模式状态通过各种技术而可编程和/或可改变,诸如通过使用特定(例如供应商特定的)命令的管理软件经由所包括的PCIe接口、经由诸如非易失性存储器(例如,闪存或选项ROM)的初始化元件、或通过可配置的存储装置和/或与可配置的存储装置通信的另一存储装置而经由检测事件。在一些实施方式和/或使用场景中,可配置的存储装置能实现在操作模式下的动态变化,诸如二级代理动态替换有故障的一级代理,从而消除作为单点故障的存储。
[0653] 故障场景
[0654] 在各种实施方式和/或使用场景(其中一级代理以及一个或多个代理作为单一逻辑接口出现至主机)中,能实现几种故障恢复技术。恢复技术对于主机是完全透明的或仅对于在主机上执行的装置驱动器是可见的。
[0655] 当二级代理全部或部分出现故障时,第一故障恢复技术是适用的,使得有故障的二级代理不再实施存储的特定部分。一级代理知悉故障(例如一级代理检测故障或有故障的二级代理将故障报告至一级代理)。作为响应,一级代理经由来自一级代理的存储和/或来自二级代理的零个或多个(可选地和/或选择性地包括发生故障的二级代理)的分配来(重新)分配存储以实施存储的特定部分。一级代理和二级代理随后根据参照图1A、图1B和图2-5所描述的任何上述实施方式和/或场景运行。
[0656] 在一些情况下,例如,当二级代理出现故障使得二级代理不能将存储贡献于重新分配时,重新分配不包括有故障的二级代理。在各个场景中,由于各种原因(诸如没有可运行的足够空闲存储、与一级代理和/或主机适当通信的不可能性、物理移除、或全部故障),二级代理不能贡献存储。在其他情况下,例如,当二级代理部分出现故障并继续实施至少一些存储时,重新分配可选地包括部分有故障的第二代理的存储。在替代性相关实施方式和/或使用场景中,在主机上执行的装置驱动器(而不是一级代理)知悉故障,并通知一级代理故障和/或指示一级代理来执行重新分配。
[0657] 当一级代理全部或部分出现故障时,第二故障恢复技术是适用的,使得一级代理不再实施存储的特定部分。第二故障恢复技术类似于第一故障恢复技术,除了重新分配针对不再由全部或部分故障的一级代理实施的存储。与在第一故障恢复技术中一样,适当实施存储的一级代理的故障可由一级代理、二级代理或主机上的装置驱动器中的一个或多个来检测。
[0658] 当一级代理不能适当用作一级代理以例如与一个或多个二级代理和/或主机传送信息(例如,子请求和/或子状态)时,第三故障恢复技术可适用。监测代理知悉故障并响应地识别另一一级或二级代理,以用作替代一级代理。在一些实施方式中,替代一级代理是热备件。监测代理的实例是包括有故障的一级代理的存储装置的另一一级(或二级)代理。监测代理的另一实例是主机上的装置驱动器,诸如在故障之前能实现在主机上执行的OS和/或应用与有故障的一级代理之间的通信的装置驱动器。若有故障的一级代理故障也会导致不再实施存储的特定部分的有故障的一级代理,则替代一级代理重新分配存储以诸如在第二故障恢复技术中实施存储的特定部分。重新分配经由来自以下的任何一个或多个的存储的分配:有故障的一级代理(如果任何存储在有故障的一级代理中仍可操作)、替代一级代理、和/或二级代理中的零个或多个。替代一级代理在故障之前用作有故障的一级代理,并根据参照图1A、图1B和图2-5描述的任何上述实施方式和/或场景来运行。
[0659] 第四故障恢复技术可由一个或多个可配置的代理在系统中实现,且当一级代理不能适当地作为一级代理时,第四故障恢复技术是适用的。诸如基于概念性包括图4和图5的所有元件的可配置的存储装置,可配置代理的实例是可作为一级代理或二级代理而运行的可配置的存储装置。类似于第三故障恢复技术,响应于监测代理知悉一级代理的故障以适当地用作一级代理,监测代理识别可配置代理中的一个以用作替代一级代理。监测代理请求所识别的可配置代理被配置为(例如,经由编程模式信息)作为替代一级代理而运行。所识别的可配置元件动态响应配置变化请求,并开始用作一级代理以作为替代一级代理而执行。类似于第三故障恢复技术,若有故障的一级代理故障也导致不再实施存储的特定部分的有故障的一级代理,则替代一级代理重新分配存储以诸如在第二故障恢复技术中实施存储的特定部分。替代一级代理在故障之前用作有故障的一级代理,并根据参照图1A、图
1B和图2-5描述的任何上述实施方式和/或场景来运行。
[0660] 在上述故障恢复技术中的任何一个或多个中,在故障之后,可选地经由经冗余信息尽可能地恢复数据。数据恢复可选地经由主机侧耦接器(例如,图1A或图1B的主机-存储装置耦接器180)和设备侧耦接器(例如图1B的装置-存储装置耦接器181)的任何组合进行。如本文其他地方所描述,冗余信息根据例如各种RAID和/或镜像实施。
[0661] 在上述故障恢复技术中的任何一个或多个中,重新分配可选地减少可用的空闲空间,例如,如对主机所表示。
[0662] 在上述故障恢复技术中的任何一个或多个中,任何一个或多个重新分配至少部分由执行指令的处理器执行和/或管理。
[0663] 在上述故障恢复技术中的任何一个或多个中,识别一级或二级代理的故障经由以下中的一个或多个进行:由代理进行的特定故障检测、用于由代理接收心跳(heartbeat)指示的故障、以及故障已发生的更高级别的指示。特定检测包括以下中的任何一个或多个:一级代理、二级代理或装置驱动器确定(另一代理已发生故障),例如经由确定返回的状态是不恰当的、已违反协议或者请求已超时。
[0664] 在透明交换机能实现主机和主机可视存储之间的通信的一些实施方式中,主机可视存储的元件的故障对于例如在主机上执行的装置驱动器是可视的。装置驱动器可选地参与从故障中恢复。在主机和主机不可视存储之间具有非透明交换机的一些实施方式中,主机不可视存储的元件的故障对于主机是不可视的。从故障中恢复可选地对于主机是不可视的。
[0665] 在各种实施方式中,由图1A和图1B的主机可视存储110、主机不可视存储120、主机可视存储130和主机不可视存储140中的任何元件以及单元和其内部的子单元执行的操作的所有或任何部分由执行存储在可选有形的计算机可读介质中的指令的一个或多个处理器(诸如固件)管理和/或实施。例如,子请求生成&子状态积累405和/或子请求接受&子状态生成501由执行存储在计算机可读介质中的指令的处理器(诸如固件)管理和/或实施。继续实例,计算机可读介质是包括在可扩展存储装置中的闪存(诸如闪存404F)的一部分。在各种实施方式中,由图1A和图1B的主机可视存储110、主机不可视存储120、主机可视存储130和主机不可视存储140的任何元件以及单元和其内部的子单元执行的操作的所有或任何部分由一个或多个状态机管理和/或实施。例如,由子请求生成&子状态积累405和/或子请求接受&子状态生成501执行的操作的所有或任何部分由至少部分由逻辑门电路实施的一个或多个状态机管理和/或实施。
[0666] 在各种实施方式中,具有一个或多个可扩展存储装置(被实现为作为一级和/或二级代理而运行)的可扩展存储系统的所有或任何部分在设备机架的一个或多个抽屉和/或架子(诸如在数据中心)中实施。可扩展存储系统可选地被实现为用一个或多个主机运行,诸如在设备机架的其他抽屉和/或架子中实施的计算复合体。
[0667] 实例性实施技术
[0668] 在一些实施方式中,由可扩展存储装置或包括在可扩展存储装置中的块执行的操作的所有或部分的各种组合(诸如图4的存储装置110.A或图5的存储装置120.A)和处理器、微处理器、片上系统、专用集成电路、硬件加速器的一部分或提供上述操作或块的所有或部分的其他电路由与由计算机系统的处理兼容的规范来指定。该规范根据各种描述,诸如硬件描述语言、电路描述、网表描述、掩膜(mask)描述或布局描述。实例性描述包括:Verilog、VHDL、SPICE、诸如PSpice的SPICE变形、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任何组合,以产生、验证或指定适用于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路根据各种技术可设计和/或制造。所述技术包括可编程的技术(诸如字段或掩模可编程门阵列集成电路)、半定制技术(诸如全部或部分基于单元的集成电路)和全定制技术(诸如实质上特定的集成电路)、它们的任何组合、或与集成电路的设计和/或制造兼容的任何其他技术。
[0669] 在一些实施方式中,如由具有存储在其中的一组指令的计算机可读介质描述的操作的所有或部分的各种组合可通过以下来执行:执行和/或解释一个或多个程序指令、解释和/或编译一个或多个源和/或脚本语言语句、或执行通过编译、转换和/或解释在编程和/或脚本语言语句中表达的信息而产生的二进制指令。语句与任何标准的编程或脚本语言(诸如C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。程序指令、语言语句或二进制指令中的一个或多个可选地存储在一个或多个计算机可读存储介质元件中。在各种实施方式中,程序指令中的一些、所有或各个部分被实现为功能、例程、子例程、在线例程、程序、宏或其部分中的一个或多个。
[0670] 结论
[0671] 在准备文字和附图中,仅为了方便,在描述中已做了某些选择,且除非有相反的指示,否则选择本身不应被解释为传达了有关所描述的实例的结构或操作的额外信息。选择的实例包括:用于附图标记指定的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如标注或数字标识符)的特定组织或分配。
[0672] 词语“包括”或“包含”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不意味着传达物理包含物,除非后面明确跟随词语“之内”。
[0673] 尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是实例性的,而不是限制性的。
[0674] 应理解构造、布置和使用的许多变化可能与说明书一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速度和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是实例性的,且不应被解释为限制所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变化。另外,除非特别说明与此相反,否则指定的值范围、使用的最高值和最低值或其他特定的规范(诸如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述的那些实施方式,期望跟踪实施技术的改进和变化,且不应被解释为限制。
[0675] 可采用本领域公知的功能相当的技术,而不是用于实施各种组件、子系统、操作、功能、例程、子例程、在线例程、程序宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某种方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形式因素和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议、或通信链路;以及当根据特定应用的独特工程和商业限制实施在本文中描述的概念时预期的其他变化。
[0676] 已通过超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施方式省略了公开的元素或特征,且无需改变剩余元素之间的基本合作。因此,应理解大部分公开的细节不需要实施所描述的实施方式的各个方面。在剩余元素可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
[0677] 设计的所有这些变化是在由所描述的实施方式传达的教导上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的适用性,且并不仅限于所描述的实施方式的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈