平码五不中公式规律
  • / 60
  • 下载费用:30 金币  

用于融合联网和存储的方法和系统.pdf

关 键 ?#21097;?/dt>
用于 融合 联网 存储 方法 系统
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580024169.3

申请日:

2015.03.06

公开号:

CN106688217A

公开日:

2017.05.17

当前法律状态:

实审

有效性:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):H04L 29/06申请日:20150306|||公开
IPC分类号: H04L29/06; G06F3/06 主分类号: H04L29/06
申请人: ?#24050;?#26364;提公司
发明人: J.仇; G.沙马; A.古哈; K.冯; J.S.加内什
地址: 美国加利福尼亚州
优?#28909;ǎ?/td> 2014.03.08 US 61/950036; 2014.06.26 US 62/017257
专利代理机构: 中国专利代理(香港)有限公司 72001 代理人: 张凌苗;刘春元
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580024169.3

授权公告号:

|||

法律状态公告日:

2017.06.09|||2017.05.17

法律状态类型:

实质审查的生效|||公开

摘要

一种设备包括融合输入/输出控制器,其包括物理目标存储介质控制器、物理网络接口控制器以及存储介质控制器与网络接口控制器之间的网关,其中网关提供用于存储介质控制器与网络接口控制器之间的存储业务和网络业务的直接连接。

权利要求书

1.一种设备,包括:
融合输入/输出控制器,其包括:
物理目标存储介质控制器;
物理网络接口控制器;以及
存储介质控制器与网络接口控制器之间的网关,其中网关提供用于存储介质控制器与
网络接口控制器之间的存储业务和网络业务的直接连接。
2.权利要求1的设备,进一步包括虚拟存储接口,其?#36824;?#23384;储介质的位置将被存储介质
控制器控制的存储介质呈现为?#38236;?#38468;着贮存器。
3.权利要求1的设备,进一步包括虚拟存储接口,其?#36824;?#23384;储介质的数量或类型将被存
储介质控制器控制的存储介质呈现为?#38236;?#38468;着贮存器。
4.权利要求1的设备,进一步包括虚拟存储接口,其促进存储介质的动态提供,其中物
理存储可以是?#38236;?#25110;远程的。
5.权利要求1的设备,进一步包括虚拟网络接口,其促进存储介质的动态提供,其中所
述物理存储可以是?#38236;?#30340;或远程的。
6.权利要求1的设备,其中设备被适配成作为控制器卡安装在主机计算系统上。
7.权利要求6的设备,其中网关在没有由操作系统、由管理程序或由在主机计算系统的
CPU上运行的其他软件的介入的情况下操作。
8.权利要求1的设备,其中设备包括现场可编程门阵列、ASIC以及提供设备的存储功能
和网络功能中的至少一个的网络处理器中的至少一个。
9.权利要求1的设备,其中设备被配置为网络部署交换机。
10.权利要求1的设备,进一步包括设备的功能组件,其用于将存储介质指令在第一协
议与至少一个其他协议之间转换。
11.一种存储设备的虚拟化的方法,包括:
访问对按照第一存储协议的指令进行响应的物理存储设备;
将指令在第一存储协议和第二存储协议之间转换;以及
使用第二协议,将物理存储设备呈现给操作系统,使得物理存储设备的存储能够被动
态地提供,不论物理存储设备对使用操作系统的主机计算系统而言是?#38236;?#30340;还是远程的。
12.权利要求11的方法,其中第一协议是SATA协议、NVMe协议、SAS协议、iSCSI协议、光
纤通道协议和以太网光纤通道协议中的至少一个。
13.权利要求11的方法,其中第二协议是NVMe协议。
14.权利要求11的方法,进一步包括提供操作系统与执行指令在第一和第二存储协议
之间的转换的设备之间的接口。
15.权利要求11的方法,进一步包括提供执行指令转换的设备与远程网络部署存储设
备之间的以太网NMVe连接。
16. 一种促进应用、容器以及被存储在目标物理存储设备上的数据中的至少一个的迁
移的方法,包括:
提供融合存储和联网控制器,其中网关在不要求在主机计算机的CPU上运行的操作系
统、管理程序或其他软件的介入的情况下提供用于设备的存储组件和联网组件之间的网络
和存储业务的连接;以及
将至少一个应用或容器?#25104;淶接?#34701;合存储和联网控制器控制的目标物理存储设备,使
得当应用、容器或被存储在目标物理存储设备上的数据被移动到一个或多个其他计算系统
时,应用或容器能够在不要求在目标物理贮存器被附着到的主机系统的CPU上运行的操作
系统、管理程序或软件的介入的情况下访问目标物理贮存器。
17.权利要求16的方法,其中迁移是Linux容器的。
18.权利要求16的方法,其中迁移是在管理程序中运行的虚拟机的。
19.权利要求16的方法,其中迁移是向外扩展应用的。
20.权利要求16的方法,其中目标物理贮存器是使用iSCSI协议、光纤通道协议和以太
网光纤通道协议中的至少一个的网络部署存储设备。
21.权利要求16的方法,其中目标物理贮存器是直接附着存储设备,其使用SAS协议、
SATA协议和NVM协议中的至少一个。
22. 一种提供网络的服务质量(QoS)的方法,包括:
提供融合存储和联网控制器,其中网关提供用于设备的存储组件和联网组件之间的网
络和存储业务的连接,而没有在主机计算机的CPU上运行的操作系统、管理程序或软件的介
入;以及
在没有主机计算机的操作系统的介入的情况下,管理与在其数据路径中部署了存储和
联网控制器的网络相关的至少一个服务质量(QoS)参数,此类管理基于由融合存储和联网
控制器处理的存储业务和网络业务中的至少一个。
23.权利要求22的方法,其中QoS参数选自由带宽参数、网络等待时间参数、IO性能参
数、吞吐量参数、存储类型参数和存储等待时间参数组成的组。
24.权利要求22的方法,其中当由贮存器通过融合存储和网络控制器服务的应用和容
器中的至少一个从主机计算机迁移到另一计算机时,QoS被自动地维持。
25.权利要求22的方法,其中当通过融合存储和网络控制器来服务应用和容器中的至
少一个的至少一个目标存储设备从第一位置迁移至至少一个第二位置时,QoS被自动地维
持。
26.权利要求22的方法,其中安全特征选自由网络业务数据的?#29992;堋?#36142;存器中的数据的
?#29992;?#20197;及网络业务数据和贮存器中的数据的?#29992;?#32452;成的组。
27.权利要求22的方法,其中提供了一个或多个存储特征,存储特征选自由压缩、保护
级别、RAID级别、存储介质类型、全?#31181;馗词?#25454;删除以及用于实?#21482;指?#28857;目标(RPO)和?#25351;?br />时间目标(RTO)中的至少一个的快照间隔组成的组。

说明书

用于融合联网和存储的方法和系统

相关申请的交叉引用

本申请要求以?#28388;?#26102;申请的优?#28909;ǎ?#20854;中的每个被通过引用整体地结合到本文中:
2014年3月8日提交且题为“Method and Apparatus for Application Driven Storage
Access”的美国专利申请61/950,036;以及2014年6月26日提交且题为“Apparatus for
Virtualized Cluster IO”的美国专利申请62/017,257。

技术领域

本申请涉及联网和数据存储的领域,并且更特别地涉及融合联网和数据存储设备
的领域。

背景技术

向外扩展应用的激增已对使用此类应用的企业导?#36335;?#24120;显著的挑战。企业通常在
?#28909;紓?#28041;及?#28909;?#31649;理程序的软件组件和高级硬件组件的)虚拟机的解决方案与(通常涉及比
如Linux?的操作系统和商品硬件的使用的)所谓的“裸金属”解决方案之间进行选择。在大
规模处,虚拟机解决方案通常具有不良的输入-输出(IO)性能、不充分的存储器、不一致的
性能以及高的基础设施成本。裸金属解决方案通常具有静态资源分配(使得资源中的改变
困难并导致硬件的低效使用)、规划容量中的挑战、不一致的性能以及操作复?#26377;浴?#22312;两个
情况下,不一致的性能表征了现有解决方案。存在对于在多租户部署中提供高性能、可以处
理动态资源分配以及可以以高程度的利用使用商品硬件的解决方案的需要。

图1描绘了计算系统102的一般架构,在本文中公开的某些实施例中可能涉及诸
如所述计算系统102的服务器、功能和模块。传统上在(例如,涉及?#30452;?#29992;于网络功能或存储
功能的网络接口控制器118或存储控制器112的)软件栈或硬件设备中单独地执行存储功能
(诸如对服务器102上的诸如介质104(例如旋转介质或闪存(flash))之类的?#38236;?#23384;储设备
的访?#21097;?#21644;诸如转发之类的网络功能。在操作系统栈108(其在包括与用于计算系统的存储
和联网功能相关联的所有软件栈的某些实施例中可以包括操作系统和管理程序)内,软件
存储栈通常包括使得能够使用可以在存储中使用的各种协议的模块,所述各种协议诸如小
?#22270;?#31639;机系统接口(SCSI)协议、串行ATA(SATA)协议、?#19988;资?#24615;存储器express(快速)
(NVMe)协议(用于通过典型的计算系统102的PCI Express(PCIe)总线110访?#26102;热?#22266;态驱
动(SSD)的盘附着存储(DAS)的协议)等。PCIe总线110可以提供(具有(一个或多个)处理器
和存储器的)CPU 106与各种IO卡之间的互连。存储栈还可以包括卷管理器等。存储软件栈
内的操作还可以包括数据保护,诸如镜像或RAID、备份、快照、重?#35789;?#25454;删除
(deduplication)、压缩和?#29992;堋?#26576;些存储功能可被卸载到存储控制器112中。软件网络栈包
括用于使得能够使用各种联网协议的模块、功能等,所述联网协议诸如传输控制协议/因特
网协议(TCP/IP)、域名系统协议(DNS)、地?#26041;?#26512;协议(ARP)、转发协议等。某些网络功能可
诸如经由以太网连接120被卸载到网络接口控制器118(或NIC)或网络结构(fabric)交换机
中,进而(利用各种交换机、路由器等)通向网络。在虚拟化环境中,可根据PCI Express标准
将NIC 118虚拟化成如由SR-IOV指定的若干虚拟NIC。虽然未被PCI Express标准指定?#20063;?br />是作为公共的,但存储控制器还可以被以类似方式虚拟化。该方法允许诸如虚拟机之类的
虚拟实体对其自己的?#25509;?#36164;源的访问。

参考图2,关于管理程序的一个主要问题是关于IO操作的复?#26377;浴?#20363;如,为了处理
涉及跨两个不同计算机(图2中的计算机系统1和计算机系统2)的数据的操作,随着数据在
计算机的?#38236;?#23384;储设备104、存储控制器112、CPU 106、网络接口控制器118和管理程序/操
作系统108中所涉及的不同软件栈之间移动,数据必须被重复地、一遍又一遍地拷贝,每当
采取(undertake)涉及将数据从一个计算机移动至另一个、改变存储的配置等的活动时导
致用于每个IO操作的大量低效数据拷?#30784;?#36335;线(route)124是数据可采取的从一个计算机至
另一个、在两个计算机的软件栈向上和向下移动的复杂路线的许多示例中的一个。由计算
系统2寻找的数据可能最初位于计算系统1的诸如盘之类的?#38236;?#23384;储设备104中,然后被存
储控制器卡112(涉及IO操作和拷贝)拉出,通过PCIe总线110(另一IO操作)发送到CPU 108,
在所述CPU 108处其被计算系统1的OS栈108的管理程序或其他软件组件处理。接下来,可经
由网络控制器118且通过网络122(另一组IO操作)将数据递送(另一IO操作)到计算系统2。
路线在计算系统2上继续,在所述计算系统2处数据可穿过网络控制器118并到计算系统2的
CPU 106(涉及附加IO操作),然后被通过PCIe总线110发送到?#38236;?#23384;储控制器112以用于存
储,然后回到管理程序/OS栈108以用于实际使用。这些操作可跨许多计算系统对发生,其中
每个交换涉及IO操作的该类型的激增(并且许多其他路线是可能的,每个涉及大量的操
作)。在被企业越来越多地采用的向外扩展情况中要求计算系统之间的许多此类复杂的数
据复制和传输活动。例如,当实?#30452;热鏜ongoDB?的向外扩展应用时,客户必须在再平衡操
作期间重复地运行实时查询,并且执行大规模数据加载。此类活动涉及非常大量的IO操作,
这导致管理程序解决方案中的不良性能。那些应用的用户还频繁地重新?#21046;?#25913;变数据被
部署在其上的碎片),对具有静态存储资源分配的裸金属解决方案导致大问题,因为数据从
一个位置到另一位置的迁移还涉及许多拷贝和传输操作以及大量的IO操作。随着在向外扩
展应用中使用的数据量快速地增长和(诸如涉及许多机器的云部署中的)不同系统之间的
连通性增加,这些问题呈指数增长。存在对于减少IO操作的数量和复?#26377;?#24182;另外改善向外
扩展应用的性能和可扩展性而不要求昂贵的高级硬件的存储和联网解决方案的需要。

仍参考图2,对于许多应用和使用情况而言,需要跨计算系统102之间的网络访问
数据(并且进而访问存储)。该操作的三个高级步骤包括数据离开箱子(box)从一个计算系
统的存储介质的传送、跨网络122的移动以及数据到第二箱子(第二计算系统102)中到该第
二计算系统102的存储介质104的传送。第一,离开箱子传送可能涉及来自存储控制器112、
OS 108中的存储栈、OS 108中的网络栈以及网络接口控制器118的介入。花费了跨内部总线
(PCIe 110和存储器)以及CPU 106处理循环的许多遍历和拷?#30784;?#36825;不仅使操作的性能降级
(产生等待时间和吞吐量问题),而?#20063;?#21033;地影响在CPU上运行的其他应用。第二,一旦数据
离开箱子102并移动到网络122上,其被像任何其他网络业务一样处理并且需要被转发/路
由到其目的地。执行策略并做出决定。在其中大量业务正在移动的环境中,?#31561;?#21487;能发生在
网络122中,引起性能中的降级以及关于可用性的问题(例如,被丢弃的分组、失去的连接以
及不?#31245;?#27979;的等待时间)。网络具有用以避免?#31561;?#30340;扩散的机制和算法,诸如暂停功能、后
向?#31561;?#36890;知(BCN)、显?#25509;等?#36890;知(ECN)等。然而,这些是反应性方法;即,其检测?#31561;?#28857;的形
成并在源上向后推以减少?#31561;?#28508;在地导致?#26144;?#21644;性能影响。第三,一旦数据到达其“目的
地”计算系统102,其需要被处理,这涉及来自网络接口控制器118、OS 108中的网络栈、OS
108中的存储栈以及存储控制器112的介入。如上文记载的离开箱子操作一样,花费跨内部
总线以及CPU 106处理循环的许多遍历和拷?#30784;?#36827;一步地,数据的最终目的地有可能存在于
仍不同的箱子中。这可能是对更多数据保护(例如,镜像和跨箱子RAID)的需要或对重?#35789;?br />据删除的需要的结果。如果是这样,则需要再次地重复离开箱子、跨网络以及进入箱子数据
传送的整个序列。如所述,该方法的限制包括原始性能中的降级,不?#31245;?#27979;的性能,对其他
租户或操作、可用性和可靠性的影响,以及资源的低效使用。存在对于避免当前方法的复杂
性和性能影响的数据传送系统的需要。

作为对管理程序(其为其管理的每个虚拟机提供单独的操作系统)的替换,已开发
了诸如Linux?容器之类的技术(其使得单个操作系统能?#36824;?#29702;多个应用容器)。并且,已经
开发了诸如Dockers之类的工具,其提供了对用库来封装应用的供应。在贯穿本公开描述的
许多其他创新之中,存在用于利用这些新兴技术的能力来提供用于向外扩展应用的改进的
方法和系统的机会。

发明内容

在本文中提供了包括将发起者、目标存储功能和网络功能组合到单个数据和控制
路径中的硬件中的融合存储和网络控制器的方法和系统,其允许网络与存储之间的“直通”
路径,而不要求主机CPU的介入。为了便于参考,贯穿本公开,在本公开中将这不同地称为融
合硬件解决方案、融合设备、融合适配器、融合IO控制器、“数据智能(datawise)”控制器等,
并且应将此类术语理解成包含(除在上下文另外指明的情况下之外)将目标存储功能和网
络功能组合到单个数据和控制路径中的硬件中的融合存储和网络控制器。

除其他益处之外,融合解决方?#38468;?#22686;加计算和/或存储资源集群的原始性能;实行
跨集群的服务级协议(SLA)并帮助保证?#31245;?#27979;的性能;提供多租户环?#24120;?#20854;中租户将不影响
其邻居;提供具有硬件的较高利用的稠密集群,导致较小的数据中心覆盖区(footprint)、
较少的功率、较少的系统要管理;提供更加可扩展的集群;以及在不损失性能的情况下跨集
群汇集(pool)存储资源。

在本文中公开的各种方法和系统提供了向外扩展应用所需的资源的高密度合并
和高性能多节点汇集。这些方法和系统提供了多个客户益处,其包括动态集群范围资源供
应,保证关于网络和存储功能的服务质量(QoS)、安全性、隔离等的能力以及将共享基础设
施用于生产和测试/开发的能力。

在本文中还提供了用以通过网络执行存储功能并将存储和网络设备虚拟化以用
于单或多租户环境中的高性能和确定性性能的方法和系统。

在本文中还提供了用于存储设备的虚拟化(诸如使用NVMe和类似协议的那些)以
及那些虚拟设备到不同物理设备的转换(诸如使用SATA的转换)的方法和系统。

在本文中公开的方法和系统还包括用于仅涉及主机(与网络结构相反)上的硬件
的端到端?#31561;?#25511;制的方法和系统,该端到端?#31561;?#25511;制包括远程信用管理和以箱子级别的分
布式调度算法。

在本文中还提供了由融合网络/存储控制器使能的各种系统和方法,包括用于存
储集群或使能集群的其他元件(诸如存储适配器、网络适配器、容器(例如,Linux容器)、
Solaris区等)的虚拟化的方法和系统。在优点之中,将集群虚拟化的一个方面是容器可以
在物理集群中变成位置无关的。除了其他优点,这允许容器在下面描述的大大简化过程中
在机器之间的移动。

在本文中提供了用于将直接附着存储(DAS)虚拟化使得操作系统栈108仍看到本
地的持久性设备、即使物理储存被移动且位于远程的方法和系统;即,在本文中提供了用于
DAS的虚拟化的方法和系统。在实施例中,这可以包括通过结构将DAS虚拟化,即,获取DAS存
储系统并将其移到箱子外面且将其放在网络上。在实施例中,这可以包括将DAS切分成?#25105;?br />的名字空间。在实施例中,使得虚拟化DAS如同其是实际DAS一样对操作系统可访?#21097;?#35832;如经
由NVMe通过PCIe由OS 108可访问。因此,在本文中提供了如下能力:将存储(包括DAS)虚拟
化,使得OS 108将其视为DAS,即使存储被通过诸如以太网之类的网络协议实际上访?#20160;?#19988;
OS 108不被要求做不同于将关于?#38236;?#29289;理存储要求的事的任?#38382;隆?br />

在本文中提供了用于提供跨结构的DAS的方法和系统,包括使虚拟化DAS暴露于
OS 108而不要求OS 108的任何修改。

在本文中还提供了用于存储适配器(指的是目标存储系统)的虚拟化的方法和系
统。

在本文中提供了用于将存储发起和存储目标确定组合在单个硬件系统中的方法
和系统。在实施例中,这些可被PCIe总线110附着。可应用单根虚拟化功能(SR-IOV)来获取
任何标准设备并使其动作如同其是数百个此类设备一样。本文中公开的实施例包括使用
SR-IOV来给出物理存储适配器的多个虚拟实例。SR-IOV是将IO功能虚拟化的PCIe标准,并
且虽然其已被用于网络接口,但本文中公开的系统和方法将其扩展至用于存储设备。因此,
在本文中提供的是虚拟目标存储系统。

实施例可以包括交换机形状因数或网络接口控制器,其中本文中公开的系统和
方法可以包括(在软件或硬件中的)主机代理。实施例可以包括在前端与后端之间破坏
(break up)虚拟化。

实施例可以包括用于融合网络和目标存储控制器的各种部署点。虽然某些实施例
将融合设备定位于主机计算系统102上,但在其他情况下,可以将盘移动至另一箱子(例如,
通过以太网连接到在下面的各种箱子之间切换的交换机)。虽然可能需要对层进行虚拟化,
但可以将存储分离,使得可以单独地对存储和计算资源进行扩展。并且,然后可以使能刀片
服务器(例如,无状态服务器)。以前本来会涉及昂贵的刀片服务器?#20918;?#38468;着到存储区域网
络(SAN)的安装可以代之以附着到交换机。在实施例中,这包括其中在机架级别处将资源解
聚合的“机架规模”架构。

本文中公开的方法和系统包括用于将各种类型的非DAS存储虚拟化为融合联网/
目标存储装置中的DAS存储的方法和系统。在实施例中,可在将存储作为DAS暴露给OS栈108
的同时使用到存储系统的各种前端协议将期望的?#36824;?#20160;么存储虚拟化为DAS。

本文中公开的方法和系统包括融合网络/存储适配器的虚拟化。从业务观点出
发,可将系统组合成一个。将存储和网络适配器组合并加入虚拟化提供显著的优点。例如,
存在具有两个PCIe总线110的单个主机102。为了从PCIe 110进?#26032;?#30001;,您可以使用?#28909;?br />RDMA的系统来到达另一机器/主机102。如果想要单独地完成这一点,必须单独地配置存储
和网络RDMA系统。一个必须结合每一个并将在两个不同的地点对其进?#20449;?#32622;。在融合场景
中,设立QoS的整个步骤(由于这是RDMA?#20197;?#21035;处存在另一结构)是零接触过程,因为用组合
的存储联网,可以在单个步骤中对两者进?#20449;?#32622;。也就是说,一旦知道了存储,就不需要单
独地在网络上设立QoS。

本文中公开的方法和系统包括在硬件中、可选地在融合网络适配器/存储适配器
装置中体现的联网和存储功能的虚拟化和/或间接(indirection)。虽然虚拟化是一种级别
的间接,但协议是另一级别的间接。本文中公开的系统和方法可将适合于大部分操作系统
用来处理?#38236;?#23384;储的协议(诸如NVMe)转换成另一协议,诸如SAS、SATA等。可将一致性接口
暴露于OS 108,诸如NVMe,但是在后端中,可转换?#27801;?#26412;有效的?#36824;?#20160;么存储介质。这为用
户提供了价格/性能优点。如果组件更加便宜/更快速,则可以连接其中的任何一个。后端可
以是任何东西,包括NVMe。

在本文中提供了包括用于装置中的设备和存储功能的融合数据路径的方法和系
统。替换实施例可以提供用于交换机中的网络和存储功能的融合数据路径。

在实施例中,本文中公开的方法和系统包括存储/网络隧道,其中通过网络的存
储系统之间的隧道路径并未涉及源或目标计算机的操作系统。在常规系统中,具有单独的
存储和网络路径,因此远程地访问存储,需要到和来自存储器、I/O总线等的大量拷?#30784;?#23558;两
个路径合并意味着存储业务径直转到网络上。每个计算机的OS 108仅看到?#38236;?#30424;。另一优
点是编程的简单化。用户不需要单独地对SAN进行编程,意味着在本文中公开的方法包括一
步可编程SAN。作为要求区等的发现和规范的替代,?#29992;堋?#38468;着、分离等可在中央并以编程方
式完成。

本文中公开的实施例可以包括将存储虚拟化给OS 108,使得OS 108将存储视为
?#38236;?#30424;。本文中公开的方法和系统中所涉及的间接级别允许融合系统不仅隐藏存储介质的
位置,而且隐藏其介质类型。所有OS看到的是存在?#38236;?#30424;,即使实际存储位于远程和/或是
不同类型的,诸如SAN。因此,提供了存储的虚拟化,其中OS 108和应用不必进行改变。可以
隐藏在后面配置复杂存储类型正常地需要的所有管理、分层策略、备份策略、保护策略等。

提供了用于选择间接在存储虚拟化中的?#26410;?#21457;生的方法和系统。某些功能的虚拟
化可用硬件(例如,在主机上的适配器中、在交换机中以及用不同的形状因数(例如,FPGA或
ASIC))和用软件发生。不同的拓扑可用,诸如其中在主机上、在机架交换机的顶部上或者以
其组合的方式部署本文中公开的系统和方法。进入选择的因素包括使用容易性。想要运行
无状态服务器的用户可优选机架顶部。不关心该方法的用户可能优选主机上的控制器。

本文中公开的方法和系统包括提供以太网NVMe。这些方法可以是用于在设备之间
使用的隧道协议的基础。NVMe是按照惯例意图转到?#38236;豍CIe的适当的DAS协议。本文中公开
的实施例可以通过以太网隧道传输NVMe协议业务。NVMe(?#19988;资?#24615;存储器express)是在
Linux和Windows中提供对基于PCIe的Flash的访问的协议。这通过绕过在常规系统中使用
的软件栈来提供高性能。

本文中公开的实施例可以包括提供被虚拟化且动态地分配的NVMe设备。在实施例
中,可背载NVMe,但是对NVMe设备进行划分并虚拟化且动态地分配。在实施例中,在软件中
不存在覆盖区。操作系统保持相同(仅仅是看到融合网络/存储卡的小驱动)。这导致?#28909;?#30452;
接附着盘一样呈现的虚拟存储,但差别在于现在我们跨网络将此类设备汇集在一起。

在本文中提供了用于提供具有?#28909;?#23384;储区域网络(SAN)中的共享优点的直接附着
存储(DAS)的简单化的方法和系统。在本文中公开的各种实施例中的每个融合装置可以是
主机,并且任何存储驱动器可在特定主机?#38236;兀?#20294;是被其他主机看到(如在SAN或其他网络
可访问存储中一样)。由本公开的网络/存储控制器使能的每个箱子中的驱动器表现如同
SAN一样(即,在网络上可用),但是管理方法简单得多。当存储管理员设立SAN时,典型的企
业可使整个部门设立用于SAN(例如,光纤通道交换机)的区,诸如设立“谁看到什?#30784;薄?#35813;知
识是预加载的,并且用户必须让SAN管理员完成该工作以将其设立。在典型的传统SAN架构
中不存在可编程性。本文中公开的方法和系统提供了在网络上的?#38236;?#21333;元,但是该?#38236;?#21333;
元仍可以访问其存储而不必经历?#28909;?#21306;定义等复杂管理步骤。这些设备可以仅仅通过兼具
网络和存储意识而完成SAN所完成的东西。同样地,其表?#38236;?#19968;编程SAN。

本文中公开的方法和系统可以包括由提供融合网络和存储数据管理的硬件装置
使能的持久性、有状态、解集存储。

本文中公开的方法和系统还可以包括网络和存储数据管理在单个装置中的融合,
适合于支持用于虚拟化的容器的使用。该方法和系统与新兴的容器生态系统兼容,但是提
供某些附加优点。

在本文中公开了用于实现NVMe的虚拟化的方法和系统。?#36824;?#22810;少资源至多少目的
地,只要来自源的数据在进入集线器之前首先被串行化,则集线器连续地将数据分发到指
定目的地。如果是这样,则可以将诸如DMA引擎之类的数据传输源缩减为仅一个拷?#30784;?#36825;可
以包括各种使用场景。在一个场景中,针对NVMe虚拟功能(VF),如果其全部被连接到同一
PCIe总线,则?#36824;?#22810;少VF被配置,数据将串?#26800;?#36827;入VF的此池,因此存在仅一个DMA引擎,并
且只需要一个存储块(用于控制信息)。在另一使用场景中,针对具有分立盘/控制器的池的
盘存储系统,如果数据源自于物理总线,即PCIe,由于数据正在串?#26800;?#36827;入此盘池,然后不
管多少盘/控制器在池中,可以将诸如DMA引擎之类的传输资源缩减至仅一个而不是每个控
制器一个。

根据各种示例性且非限制性实施例,一种设备包括:融合输入/输出控制器,其包
括物理目标存储介质控制器、物理网络接口控制器;以及存储介质控制器与网络接口控制
器之间的网关,其中网关提供用于存储介质控制器与网络接口控制器之间的存储业务和网
络业务的直接连接。

根据各种示例性且非限制性实施例,一种存储设备的虚拟化的方法包括:访问对
按照第一存储协议的指令进行响应的物理存储设备,在第一存储协议和第二存储协议之间
转换指令,以及使用第二协议,将物理存储设备呈现给操作系统,使得可以动态地提供物理
存储设备的存储,?#36824;?#29289;理存储设备在使用操作系统的主机计算系统的?#38236;?#36824;是远程。

根据各种示例性且非限制性实施例,一种促进应用与容器中的至少一个的迁移的
方法包括提供融合存储和联网控制器,其中网关在没有主机计算机的操作系统的介入的情
况下提供用于设备的存储组件与联网组件之间的网络和存储业务的连接,并且将所述至少
一个应用或容器?#25104;?#21040;被融合存储和联网控制器控制的目标物理存储设备,使得当应用或
容器移动至另一计算系统时,在没有目标物理存储器被附着到的主机系统的操作系统的介
入的情况下,该应用或容器可以访问目标物理存储器。

根据各种示例性且非限制性实施例,一种为网络提供服务质量(QoS)的方法包括
提供融合存储和联网控制器,其中网关在没有主机计算机的操作系统、管理程序或在CPU上
运行的其他软件的介入的情况下提供用于设备的存储组件与联网组件之间的网络和存储
业务的连接,并且也在没有主机计算机的操作系统、管理程序或在CPU上运行的其他软件的
介入的情况下,管理与在其数据路径中部署了存储和联网控制器的网络相关的至少一个服
务质量(QoS)参数,此类管理是基于由融合存储和联网控制器处理的存储业务和网络业务
中的至少一个。

QoS可基于各种参数,诸如带宽参数、网络等待时间参数、IO性能参数、吞吐量参
数、存储类型参数和存储等待时间参数中的一个或多个。当被通过融合存储和网络控制器
提供存储服务的应用和容器中的至少一个从主机计算机迁移到另一计算机时,可QoS被自
动地维持。同样地,当通过融合存储和网络控制器来服务于应用和容器中的至少一个的至
少一个目标存储设备从第一位置迁移至另一位置或多个位置时,可QoS被自动地维持。例
如,可对存储进行扩展,或者可选择不同的存储介质类型,以随着要求增加而满足存储需
要。在实施例中,可以提供安全特征,诸如网络业务数据的?#29992;堋?#23384;储中数据的?#29992;?#25110;两者。
也可以提供各种存储特征,诸如压缩、保护级别(例如,RAID级别)、不同存储介质类型的使
用、全?#31181;馗词?#25454;删除以及实?#21482;指?#28857;目标(RPO)和?#25351;?#26102;间目标(RTO)中的至少一个的快
照间隔。

附图说明

附图用于进一步图示各种实施例及用于解?#36879;?#31181;原理和优点,其全部根据本文中
公开的系统和方法,在所述附图中同样的参考数?#31181;?#30340;是贯穿单独的视图的相同或功能上
类似的元素并且所述附图连同下文的详细描述被结合在本说明书中并且形成本说明书的
部分。

图1图示了根据示例性且非限制性实施例的一般架构。

图2图示了根据示例性且非限制性实施例的计算机系统。

图3图示了根据示例性且非限制性实施例的融合解决方案。

图4图示了根据示例性且非限制性实施例的由融合解决方案使能的两个计算系
统。

图5图示了根据示例性且非限制性实施例的融合控制器。

图6图示了根据示例性且非限制性实施例的融合控制器的部署。

图7图示了根据示例性且非限制性实施例的多个系统。

图8图示了根据示例性且非限制性实施例的现场可编程门阵列(FPGA)的框图。

图9图示了根据示例性且非限制性实施例的控制器卡的架构。

图10图示了根据示例性且非限制性实施例的软件栈。

图11-15图示了根据示例性且非限制性实施例的跨多个系统的应用容器的移动。

图16图示了根据示例性且非限制性实施例的分组传输。

图17图示了根据示例性且非限制性实施例的存储访问方案。

图18图示了根据示例性且非限制性实施例的文件系统的操作。

图19图示了根据示例性且非限制性实施例的分布式文件服务器的操作。

图20图示了根据示例性且非限制性实施例的高性能分布式文件服务器(DFS)。

图21图示了根据示例性且非限制性实施例的系统。

图22图示了根据示例性且非限制性实施例的主机。

图23图示了根据示例性且非限制性实施例的访问数据块的应用。

图24图示了根据示例性且非限制性实施例的访问数据块的应用。

图25图示了根据示例性且非限制性实施例的系统。

图26图示了根据示例性且非限制性实施例的方法。

图27图示了根据示例性且非限制性实施例的方法。

图28图示了根据示例性且非限制性实施例的方法。

有经验的技术人员将领会到图中的元件为了简单和清楚而被图示?#20063;?#19968;定被按
比例描绘。例如,图中的某些元件的尺寸可能相对于其他元件被放大以有助于提高对本文
中公开的系统和方法的实施例的理解。

具体实施方式

现在将通过参考附图和展示来描述本公开的各种说明性、非限制性实施例而详细
地描述本公开。然而,本公开可以许多不同的形式体现,并?#20063;?#24212;被解释为限于在本文中阐
述的说明性实施例。相反地,实施例被提供以使得本公开将是透彻的并且将向本领域那些
技术人员全面地传达本公开的概念。应查阅权利要求以确定本公开的真正范围。

在详细地描述根据本文中公开的系统和方法的实施例之前,应观察到实施例主要
存在于与融合联网和存储相关的方法步骤和/或系统组件的组合中。因此,系统组件和方法
步骤已经被在图中通过常规符号在适当的情况下表示,仅示出了关于理解本文中公开的系
统和方法的实施例的那些特定?#38468;?#20197;便不利用对本文领域那些普通技术人员而言将容易
地?#36828;?#26131;见的?#38468;?#20351;本公开模糊。

参考图3,融合解决方案300可以包括三个重要方面并且可被实现在包括硬件和
软件模块和功能的组合的硬件设备中。第一,可在网络控制器118与存储控制器112之间提
供直通数据路径304,使得向和从网络的对存储的访问可以是直接的,而不要求OS栈108、
PCIe总线110或CPU 106的任何介入。第二,可以提供诸如对存储设备302的直通式存储栈访
?#21097;?#35832;如向和从?#38236;?#20027;机上的实体的对存储的访?#21097;?#20854;允许绕过用于存储访问的复杂传统
软件栈,诸如SCSI/SAS/SATA栈。第三,可以诸如通过用以保留数据和调度对数据跨网络的
传送的机制来提供网络的端到端?#31561;?#31649;理和流控制,其保证目标的数据对远程发起者的可
用性并?#20197;?#25152;述目标的数据流过中间网络结构交换机时使业务的?#31561;?#26368;小化。第一和第二
方面从数据的路径移除软件栈(因此移除CPU 106和存储器),消除了冗余或不必要的移动
和处理。端到端?#31561;?#31649;理和流控制递送数据的确定且可靠的传输。

如上面记载的那样,融合解决方案300的一个益处是操作系统栈108通过常规
PCIe 110或类似总线连接到融合解决方案300,使得OS栈108看到融合解决方案300以及其
通过到存储设备302的直通而控制的任何贮存器,如一个或多个?#38236;?#25345;久性设备,即使物理
贮存器位于远程。除了其他之外,这还包括用于DAS 308的虚拟化的能力,其可以包括通过
结构将DAS 308虚拟化,即获取DAS 308存储系统并将其移到计算系统102外面且将其放在
网络上。融合解决方案300的存储控制器112可经由诸如SAS、SATA或NVMe之类的各种已知协
议连接到并控制网络122上的DAS 308。在实施例中,虚拟化可以包括将DAS 308切分成?#25105;?br />的名字空间。在实施例中,使得虚拟化DAS 308如同其是实际的、?#38236;?#30340;、物理的DAS对操作
系统可访?#21097;?#35832;如经由诸如NVMe之类的标准协议、通过到融合解决方案300的存储控制器
112的PCIe总线 110由OS 108可访问。再次地,OS 108将整个解决方案300视为?#38236;?#30340;物理
设备,诸如DAS。因此,在本文中提供?#31169;?#23384;储(包括DAS及其他存储类型,诸如SAN 310)虚拟
化的能力,使得OS 108将任何存储类型视为DAS,即使存储实际上被通过网络112访?#21097;?#24182;且
OS 108不被要求做不同于将关于?#38236;?#29289;理存储要求事情的任?#38382;隆?#22312;其中存储设备302是
SAN 310存储的情况下,融合解决方案的存储控制器112可通过被用于存储区域网络的适当
协议(诸如因特网小?#22270;?#31639;系统接口(iSCSI)、光纤通道(FC)或通过以太网的光纤通道
(FCoE))来控制SAN 310。因此,融合解决方案300为OS栈108提供了从在存储中使用的任何
其他协议(除其他之外还诸如以太网、SAS、SATA、NVMe、iSCSI、FC或FCoE)到使得不同的存储
类型和协议表现为通过PCIe 110可访问的?#38236;?#23384;储的?#28909;鏝VMe的简单协议的转换。该转换
进而使能存储适配器(指的是任何种类的目标存储系统)的虚拟化。因此,本文中公开的方
法和系统包括用于在融合联网/目标存储装置300中将各种类型的非DAS存储虚拟化为DAS
的方法和系统。在实施例中,人们可以在将存储作为DAS暴露给OS栈108时使用到存储系统
的各种协议将期望的?#36824;?#20160;么存储虚拟化为DAS。因此,在本文中提供了用于存储设备的虚
拟化(诸如使用NVMe和类似协议的那些)以及那些虚拟设备到不同的物理设备的转换(诸如
使用SATA的转换)的方法和系统。

其中通过网络112的存储系统之间的隧道路径不涉及源或目标计算机的操作系
统的存储/网络隧道304使能多个益处。在常规系统中,其具有单独的存储和网络路径,因此
远程地访问存储要求到和来自存储器、I/O总线等的大量拷?#30784;?#23558;两个路径合并意味着存储
业务径直到网络上。优点是编程的简单。用户不需要单独地对SAN 310进行编程,意味着在
本文中公开的方法使能一步可编程SAN 310。可在中央并以编程方式完成配置、?#29992;堋?#38468;着、
分离等,而不是要求对区(zone)的发现和规范等。作为示例,典型的SAN由“发起者”、“目标”
和连接发起者与目标的交换机结构组成。通常,哪些发起者看到哪些目标由结构交换机定
义/控制,被称作“区”。因此,如果发起者移动或目标移动,则需要更新区。SAN的第二控制部
分通常属于“目标”。其可以控制哪个发起者端口可以看到什么逻辑单元号(LUN)(由目标暴
露的存储单元)。这通常被称为LUN掩蔽和LUN?#25104;洹?#20877;次地,如果发起者移动位置,则必须对
“目标”重新编程。现在考虑的是在此类环境中如果应用(诸如由于失效转移、负载再平衡
等)从一个主机移动至另一个,则需要更新分区和LUN掩蔽/?#25104;洹?#26367;换地,可以对SAN预编
程,使得每个发起者看到每个目标。然而,这样做导致不可扩展?#20063;?#23433;全的SAN。在贯穿本公
开描述的替换解决方案中,应用、容器或存储设备的此类移动不要求任何SAN重新编程,导
致零接触解决方案。由融合解决方案300维持和执行的?#25104;?#20801;许应用或容器、目标存储介质
或两者被独立地移动(包括到多个位置)和扩展(scale),而没有由OS、管理程序或在主机
CPU上运行的其他软件的介入。

OS 108将存储视为?#38236;?#30424;的事实允许存储的简化虚拟化。本文中公开的方法和
系统中所涉及的间接的级别允许融合系统300不仅隐藏存储介质的位置而且隐藏存储介质
的介质类型。OS 108看到的全部是存在?#38236;?#30424;,即使实际存储位于远程和/或是不同的类
型,诸如SAN 310。因此,通过融合解决方案300来提供存储的虚拟化,其中OS 108和应用不
必改变。可以隐藏在后面配置复杂的存储类型正常地需要的管理、分层策略、备份策略、保
护策略等中的全部。

融合解决方案300使能利用存储区域网络(SAN)的优点的直接附着存储(DAS)的
简单。在本文中公开的各种实施例中的每个融合装置300可充当主机,并且任何存储设备
302可能对于特定主机而言是?#38236;?#30340;但是被其他主机看到(如在SAN 310或其他网络可访问
存储中的情况)。由本公开的网络/存储控制器使能的每个箱子中的驱动器行为像SAN 310
(例如,在网络上可用),但是管理方法简单得多。当存储管理员正常地设立SAN 310时,典型
的企业可使整个部门设立用于SAN 310(例如,光纤通道交换机)的区,诸如设立“谁看到什
?#30784;薄?#35813;知识必须被预加载,并且用户必须要求SAN 310管理员做该工作以将其设立。在典型
的传统SAN 310架构中不存在可编程性。本文中公开的方法和系统提供了在网络上的?#38236;?br />单元,但是?#38236;?#21333;元仍可以访问其存储而不必经历?#28909;?#21306;定义等的复杂管理步骤。这些设
备可以仅通过具有网络和存储意?#35835;?#32773;而做SAN所做的事。照此(as such),其表?#38236;?#19968;可
编程SAN。

可以将解决方案300描述为“融合IO控制器?#20445;?#20854;控制存储介质302和网络122两者。
该融合控制器300不仅仅是存储控制器112和网络控制器(NIC)118的简单集成。存储和网络
的实?#20351;?#33021;被合并,使得随着数据向和从网络接口穿过而执行存储功能。可在诸如如下文
详述的FPGA(一个或多个)或ASIC(一个或多个)之类的硬件解决方案中提供该功能。

参考图4,由融合解决方案300使能的两个或更多计算系统102可用作用于相应的
存储目标的主机,其中通过将存储和网络合并以及控制两个接口,可以诸如通过点到点路
径400或者通过?#25509;?#34701;合解决方案300使能的另一计算机系统102的以太网交换机402经由
网络122远程地实现对存储302的直接访问而不穿过内部总线或CPU/软件工作。可以实现最
高性能(高IOP和低等待时间)。进一步地,现在可以跨集群汇集存储资源302。在图4中,这被
通过点线椭圆404概念性地图示。

在实施例中,可将融合解决方案300包括在主机计算系统102上,其具有如图1中描
绘的常规计算系统的各种组件连同如结合图3描述的融合IO控制器300。参考图5,在替换实
施例中,可将融合控制器300布置在交换机(诸如机架交换机的顶部)中,因此使能使能存储
的交换机500。交换机可驻留在网络122上并由诸如常规计算系统102的网络控制器118之类
的网络控制器118访问。

参考图6,可部署其中融合控制器300既被布置在一个或多个主机计算系统102上
?#30452;?#24067;置在使能存储的交换机500上的系统,所述使能存储的交换机500可被连接?#25509;?#34701;合
解决方案300使能的系统102和非使能系统102。如上文记载的那样,用于主机计算系统102
上和使能存储的交换机500上的(一个或多个)融合控制器300的目标存储302可以跨网络对
彼此可见,诸如被视为诸如对虚拟化解决方案而言的统一资源。总而言之,在本公开的各种
替换实施例中,包括处理同一设备上的经融合的网络和存储业务的智能可以位于主机系统
中、交换机中或两者。

本文中公开的实施例因此可以包括交换机形状因数或网络接口控制器或两者,其
可以包括主机代理(在软件或硬件中)。这些变化的部署允许诸如在主机上和/或在交换机
上和/或在前端与后端之间破坏虚拟化能力。虽然可能需要层来将某些功能虚拟化,但可以
将存储分离,使得可以对存储和计算资源进?#26800;?#29420;地扩展。并且,然后可以使能刀片服务器
(即,无状态服务器)。以前本来会涉及昂贵的刀片服务器和被附着的存储区域网络(SAN)的
安装可以代之以附着到使能存储的交换机500。在实施例中,这包括其中在机架级别处将资
源解聚合的“机架规模”架构。

提供了用于选择间接发生在存储的虚拟化中的?#26410;?#30340;方法和系统。某些功能的
虚拟化可能发生在硬件中(例如,在主机102上的融合适配器300中、在使能存储的交换机
500中、在变化的硬件形状因数(例如,FPGA或ASIC)中)和在软件中。不同的拓扑可用,诸如
其中本文中公开的方法和系统被部署在主机机器102上、在机架交换机500的顶部上或者被
以其组合部署。进入(go into)虚拟化应该发生在?#26410;?#30340;选择的因素包括使用的容易。想要
运行无状态服务器的用户可优选使能机架存储的交换机500的顶部。不关心该方法的用户
可能优选主机102上的融合控制器300。

图7示出了用融合控制器300使能的一组系统的更详细的视图,其包括两个计算
机系统102(计算机系统1和计算机系统2)以及使能存储的交换机500。诸如DAS 308和SAN
310之类的存储设备302可被融合控制器300或使能存储的交换机500控制。在任一情况下可
使用SAS、SATA或NVMe协议来控制DAS 308。在任一情况下可使用iSCSI、FC或FCoE来控制SAN
310。具有存储控制器300的主机102之间的连接可以通过点到点路径400、通过以太网交换
机402或者经由使能存储的交换机500,其还可以提供到常规计算系统的连接。如上文记载
的那样,具有智能融合控制器300的多个系统中的每个可以用作主机和用作其他主机看到
的存储目标位置,从而出于计算系统102的操作系统108的目的提供被视为存储的单个集群
的选项。

本文中公开的方法和系统包括在硬件融合控制器300中(可选地在融合网络适配
器/存储适配器装置300中)体现的联网和存储功能的虚拟化和/或间接。虽然虚拟化是一个
级别的间接,但协议是另一级别的间接。本文中公开的方法和系统可将适合于由大部分操
作系统用来处理?#38236;?#23384;储的协议(诸如NVMe)转换成另一协议,诸如SAS、SATA等。可将诸如
NVMe之类的一致性接口暴露到OS 108,并?#20197;?#34701;合控制器300的另一侧上可转换成划算的
?#36824;?#20160;么存储介质302。这给予用户价格/性能优点。如果组件更便宜/更快速,则可以连接
其中的任一个。融合控制器300的侧面可以面对任何种类的存储,包括NVMe。更进一步地,存
储介质类型可以是以下中的任何,包括但不限于HDD、SSD(基于SLC、MLC或TLC闪存
(flash))、RAM等或其组合。

在实施例中,融合控制器可被适配成将NVMe虚拟功能虚拟化,并?#20918;?#36866;配成通过
以太网交换机402经由NVMe提供对远程存储设备302(诸如被连接到使能存储的交换机500
的远程存储设备302)的访问。因此,融合解决方案300使能通过以太网700的NVMe或NVMeoE
的使用。因此,本文中公开的方法和系统包括通过以太网提供NVMe。这些方法可以是用于在
设备之间使用的隧道协议的基础,所述设备诸如由融合控制器300和/或使能存储的交换机
500使能的主机计算系统102。NVMe是按照惯例意图转到?#38236;豍CIe 110的适合的DAS协议。本
文中公开的实施例可通过以太网隧道传送NVMe协议业务。NVMe(?#19988;资?#24615;存储器express)
是在Linux和Windows中提供对基于PCIe的闪存的访问的协议。这经由绕过在常规系统中使
用的软件栈来提供高性能,同时避免了从(如由OS栈108所使用的)NVMe和通过以太网向其
他设备隧道传输的业务进行转换的需要。

图8是FPGA 800的框图,其可驻留在IO控制器卡上并使能融合解决方案300的实
施例。请注意,虽然描绘?#35828;?#20010;FPGA 800,但可以将各种功能块组织成多个FPGA、组织成一
个或多个客户专用集成电路(ASIC)等。例如,可以在单独(但互连)的FPGA或ASIC中处理各
种联网块和各种存储块。除在上下文另外指示的情况下之外,贯穿本公开的对FPGA 800的
引用应被理解成包含可以使能在图8中反映的功能能力和类似功能的硬件的这些其他形
式。并且,可以在商用硅晶中体现某些功能组,诸如用于联网功能和/或存储功能。

图8的FPGA 800的实施例具有四个主要接口。第一,存在PCIe接口,诸如到主机计
算机102的PCIe总线110的PCIe接口。因此,卡是PCIe端点。第二,存在DRAM/NVRAM接口。例
如,可以提供到外部DRAM或NVRAM的DDR接口,其被嵌入式CPU、元数据和数据结构以及分组/
数据缓冲使用。第三,存在到诸如DAS 308和SAN 310之类的介质的存储接口。存储接口可以
包括用于SAS、SATA、NVMe、iSCSI、FC和/或FCoE的存储接口,并?#20197;?#23454;施例中可以是到旋转
介质、闪存或其他持久形式的存储(其对于?#28909;鏢AN 310的网络使能(network-enabled)的
存储而言是?#38236;?#30340;或者通过直通到?#28909;鏢AN 310的网络使能的存储)的任何接口。第?#27169;?#25552;
供网络接口,诸如到网络结构的以太网。存储接口和网络接口可以被部分地用来使能通过
以太网的NVMe。

FPGA 800的内部功能可以包括用于融合解决方案300和自始至终记载的本公开
的其他方面的多个使能特征。可为主机提供一组虚拟端点(vNVMe)802。类似于被用于网络
接口的SR-IOV协议,这向主机呈?#20013;?#25311;存储目标。在FPGA 800的该实施例中,NVMe具有低软
件开销的益处,其进而提供高性能。虚拟NVMe设备802可以被动态地分配/解除分配/移动和
调整尺寸。如SR-IOV一样,存在与PCIe驱动110(参见下文)对接的一个物理功能(PF)806以
及其中每个表现为NVMe设备的多个虚拟功能807(VF)。

在FPGA 802功能中还提供了一个或多个读和写直接存储访?#21097;―MA)队列804,在
本文中的某些情况下被称为DMA引擎804。这些可以包括中断队列、门铃及其他标准功能以
向和从主机计算系统102执行DMA。

FPGA 800上的设备?#25104;?#35774;施808可确定虚拟NVMe设备802的位置。位置选项将是
?#38236;兀?#21363;——被附着到所示的存储介质接口824中的一个)或在存储控制器300的另一主机
102上的远程。对远程vNVMe设备的访问要求通过隧道828到网络122。

NVMe虚拟化设施810可将NVMe协议指令和操作转换成后端存储介质302的相应协
议和操作,诸如其中使用DAS 308的SAS或SATA(在后端存储介质302上的NVMe的使用的情况
下,可能不需要转换)或者诸如其中在后端中使用SAN 310存储的情况下的iSCSI、FC或
FCoE。在这里对后端的引用指的是从主机102来看的融合控制器300的另一侧。

数据变?#36824;?#33021;812可在数据被存储到存储介质302上时将数据格式化。这些操作可
以包括重?#30784;?#21464;换、压缩、保护(诸如RAID)、?#29992;?#21644;其他功能,其涉及以在必要时允许数据被
适用类型的目标存储介质308处理的任何方式改变数据的格式。在某些实施例中,存储介质
308可以是远程的。

在实施例中,存储读和写队列814可以包括用于在传送期间使数据登台
(staging)的数据结构或缓冲。在实施例中,可将诸如NVRAM的DRAM(其可位于FPGA 800外)
之类的瞬时存储器用于数据的瞬时存储。

?#38236;?#23384;储调度器和成形器818可以?#36828;?#23384;储介质302的访?#26159;?#20998;优先次序并控制
对存储介质302的访问。可在调度器和成形器818中实行用于?#38236;?#23384;储的任何可适用的SLA
策略,其可以包括可以在每个队列、每个发起者、每个目标或每个c-组的基础?#31995;?#36866;用的严
格的优先次序、加权的轮询调度、IOP成形器以及策略器。

数据放置设施820可实现确定如何在存储介质302上布?#36136;?#25454;的算法。其可涉及对
本领域那些技术人?#24065;?#30693;的各种放置方?#31119;?#35832;如跨介质分条(stripping)、局部化到单个设
备302、使用设备302的子集或者局部化到设备302上的特定块。

存储元数据管理设施822可以包括用于数据放置、块和对象i节点、压缩、重?#35789;?br />据删除以及保护的数据结构。元数据可被存储在FPGA 800外NVRAM/DRAM中或者存储介质
302中。

多个控制块824可以提供到存储介质的接口。在每个情况下根据对于适当类型的
目标存储介质302的需要,除了其他可能的控制块之外,这些还可以包括SAS、SATA、NVMe、
PCIe、iSCSI、FC和/或FCoE。

FPGA 800的存储网络隧道828可以提供结合融合解决方案300贯穿本公开描述的
隧道传输/直通能力。除了其他之外,隧道828还提供存储业务与网络业务之间的网关。其包
括封装/解封装或存储业务、数据的重写和格式化以及数据的传送的端到端协调。协调可以
在跨主机计算系统102内的或者超过一个计算系统102中的节点的FPGA 800之间,诸如针对
结合图4描述的点到点路径404。可执行各种功能,诸如序列号、分组丢失、超时以及重传。隧
道传输可通过以太网发生,包括通过FCoE或NVMeoE发生。

虚拟网络接口卡设施830可以包括到主机102的多个SR-IOV端点,被呈现为虚拟网
络接口卡。一个物理功能(PF)836可与PCIe驱动110(参见下文的软件描述)以及多个虚拟功
能(VF)837对接,其中每个虚拟功能表现为网络接口卡(NIC)118。

一组接收/发射DMA队列832可以包括中断队列、门铃及其他标准功能以向和从主
机102执行DMA。

分类器和流管理设施834可执行标准网络业务分类,通常到IEEE标准802.1Q服务
级(COS)?#25104;?#25110;其他优先次序别。

访问控制和重写设施838可处理访问控制列表(ACL)和重写策略,包括通常对以
太网元组(MAC SA/DA、IP SA/DA、TCP端口等)进行操作以将分组重新分类或重写的访问控
制列表。

转发功能840可诸如通过层2(L2)或层3(L3)机制确定分组的目的地。

一组网络接收和发射队列842可处理到网络接口的数据结构或缓冲。FPGA 800外
的DRAM可被用于分组数据。

网络/远程存储调度器和策略器844可提供优先次序并且控制对网络接口的访问。
在这里可实行用于远程存储和网络业务的SLA策略,其可以包括在每个队列、每个发起者、
每个目标、每个c组或每个网络流基础上的严格优先次序、加权的轮询、IOP和带宽成形器以
及策略器等。

?#38236;?#32593;络交换机848可在FPGA中的队列之间转发分组,使得如果目的地对于FPGA
800或主机102而言是?#38236;?#30340;,则业务不需要退出FPGA 800到网络结构122。

端到端?#31561;?#25511;制/信用设施850可防止网络?#31561;?#36825;用两个算法被实现。第一,可
存在利用远程FPGA 800的端到端保留/信用机制。这可类似于SCSI传送就绪功能,其中远程
FPGA 800在其可以立即接受数据的情况下允许存储传送。类似地,?#38236;谾PGA 800在远程
FPGA 800请求传送时向其分配信用。在这里还可实行用于远程存储的SLA策略。第二,可存
在分布式调度算法,诸如迭代轮询算法,诸如在由Nick McKeown发表的出版物“The iSLIP
Scheduling Algorithm for Input-Queues Switches”IEEE/ACM TRANSACTIONS ON
NETWORKING,卷7,号2,1999年4月中提出的用于输入队列的iSLIP算法。可使用中间网络结
构作为横杆(crossbar)而在集群范围内执行该算法。

重?#30784;?#26631;签以及CRC设施852可用适当的标签和CRC保护将分组封装/解封装。

一组接口854(诸如MAC接口)可以提供到以太网的接口。

一组嵌入式CPU和高速缓存复合体858可实现过程控制计划、异常处理以及到和
来自?#38236;?#20027;机和网络远程FPGA 800的其他通信。

存储器控制器860(诸如DDR控制器)可充当用于外部DRAM/NVRAM的控制器。

由于由融合解决方案300提供的功能的集成,如在一个示例中通过FPGA 800体现
的那样,在本文中提供了用于将存储发起和存储目标确定组合在单个硬件系统中的方法和
系统。在实施例中,这些可被PCIe总线110附着。可应用单根虚拟化功能(SR-IOV)等来获取
任何标准设备(例如,任何存储介质302设备)并使其动作如同其是数百个此类设备一样。本
文中公开的实施例包括使用?#28909;鏢R-IOV的协议来给出物理存储适配器的多个虚拟实例。
SR-IOV是将IO功能虚拟化的PCIe标准,并且虽然其已被用于网络接口,但本文中公开的方
法和系统将其扩展至用于存储设备。因此,在本文中提供了虚拟化的目标存储系统。在实施
例中,虚拟目标存储系统可处理不同的介质,如同该介质是一个或多个盘(诸如DAS 310)一
样。

被?#28909;鏔PGA 800的实施例使能,本文中公开的方法和系统的实施例还可以包括
提供被虚拟化并动态地分配的NVMe设备。在实施例中,可背负正常NVMe协议,但是对NVMe设
备进行划分、虚拟化和动态分配。在实施例中,在软件中不存在覆盖区。操作系统108保持相
同或?#36127;?#30456;同(可能具有看到融合网络/存储卡300的小驱动)。这导致看起来像直接附着盘
的虚拟存储,但是区别在于现在我们可以跨网络122将汇集此类存储设备302。

在本文中公开了用于实现NVMe的虚拟化的方法和系统。?#36824;?#22810;少资源与多少目
的地相关,只要来自源的数据在进入集线器之前被首先串行化,则集线器就将数据连续地
分发到指定目的地。如果是这样,则可以将诸如DMA队列804、832之类的数据传输资源减少
到仅一个拷?#30784;?#36825;可以包括各种使用场景。在一个场景中,针对NVMe虚拟功能(VF),如果其
全部被连接到同一PCIe总线110,则?#36824;?#22810;少VF 807被配置,数据将串?#26800;?#36827;入VF 807的该
池中,因此只存在一个DMA引擎804,并且只需要一个存储块(用于控制信息)。

在另一使用场景中,针对具有分立的盘/控制器的池的盘存储系统,如果数据源
自于物理总线,即PCIe 110,由于数据正在串?#26800;?#36827;入盘的该池中,则?#36824;?#22810;少盘/控制器
在池中,可以将诸如DMA引擎804之类的传输资源减少到仅一个而不是每个控制器一个。

本文中公开的方法和系统还可以包括融合网络/存储适配器300的虚拟化。从业
务观点出发,可将系统组合成一个。将存储和网络适配器组合并加入虚拟化给出显著的优
点。例如,存在具有两个PCIe总线110的单个主机102。为了从PCIe 110进?#26032;?#30001;,您可以使
用?#28909;?#36828;程直接存储访?#21097;≧DMA)的系统来到达另一机器/主机102。如果想要单独地完成这
一点,必须单独地配置存储和网络RDMA系统。一个必须结合每一个并将在两个不同的地点
对其进?#20449;?#32622;。在融合解决方案300中,设立QoS的整个步骤由于这是RDMA?#20197;?#21035;处存在另
一结构而是零接触过程,因为用组合的存储和联网可以在单个步骤中对两者进?#20449;?#32622;。也
就是说,一旦知道了存储,就不需要单独地在网络上设立QoS。因此,由融合解决方案300使
能用于RDMA解决方案的网络和存储的单步配置。

再次参考图4,由如结合图8描述的FPGA 800或类似硬件使能远程访问。在图4中
用点线408来指示虚拟化边界。在该线的左边,虚拟存储设备(例如,NVMe 802)和虚拟网络
接口830被呈现给操作系统108。操作系统不能辨别这些是虚拟设备。在虚拟化边界408?#20918;?br />是物理存储设备302(例如,使用SATA或上文记载的其他协议)和物理网络接口。存储虚拟化
功能由图8的vNVMe 802和NVMe虚拟化设施810实现。网络虚拟化功能由vNIC设施830实现。
物理存储介质的位置也针对操作系统108被隐藏。有效地,跨服务器的物理盘302可以被汇
集并被远程地访问。操作系统108向存储介质302(其是虚拟设备,但操作系统108将其视为
物理设备)发出读或?#35789;?#21153;。如果物理存储介质302碰巧是远程的,则读/?#35789;?#21153;被?#25104;?#21040;适
当的物理位置、封装以及通过以太网隧道传输。该过程可由图8的设备?#25104;?#35774;施808、NVMe虚
拟化设施810、数据变换设施812和存储-网络隧道828实现。目标服务器(第二计算系统)将
存储读/写解除隧道传输(un-tunnel)并直接地访问其?#38236;?#23384;储介质302。如果事务是写,则
数据被写入到介质302。如果事务是读,则数据被准备、?#25104;?#21040;源服务器、封?#23433;?#36890;过以太网
隧道传输。事务完成到达源操作系统102。在常规系统中,这些步骤将要求软件介入以便处
理存储请求、数据格式化以及网络访问。如所示,所有这些复杂的软件步骤都被避免。

参考图9,作为如贯穿本公开描述的融合解决方案300的一个实施例,提供了控制
器卡902的架构的简化框图。控制器卡902可以是例如标准的、全高的、半高的PCIe卡,诸如
Gen3 x16卡。然而,非标准卡大小是可接受的,优选地被定大小使得其可以安装到各种类型
的作为目标的机箱中。PCIe形状因数限制在PCB上使用的堆叠和层。

控制器卡902可被用作商品机箱(诸如2RU 4节点机箱)上的附加卡。机箱的每个
节点(被称作滑轨)通常是1RU和6.76”宽的。母板通常可在背面附近提供PCIe Gen3 x16连
接器。可使用转接卡来允许将控制器卡902安装在母板的顶部上;因此,卡与母板之间的空
隙?#19978;?#20110;大致在槽宽上。

在实施例中,由PCIe连接器供应的最大功率是75W。控制器卡902?#19978;脑?0W或更
少。

机箱可以提供好的气流,但是卡应预期环境温度中的10C上升,因为在本示例中空
气将被双Xeon处理器和16个DIMM加温。对于大部分服务器而言的最大环境温度是35C,因此
控制器卡902处的气温在某些情况下将可能是45C或更高。可将定制的散暖器和暖挡板视为
暖解决方案的部分。

在图9中描绘的控制器卡902的实施例中存在两个FPGA,数据路径FPGA或数据路径
芯片904以及联网FPGA或联网芯片908。

数据路径芯片904提供通过PCIe连接器110到主机计算机102的连通性。从主机处
理器的观点出发,控制器卡902看起来像多个NVMe设备。数据路径芯片904将NVMe桥接到标
准SATA/SAS协议,并?#20197;?#26412;实施例中通过SATA/SAS链路而控制多达六个外部盘驱动。请注
意,SATA支持达到6.0Gbps,而SAS支持达到12.0Gbps。

联网芯片908将NIC设备118和eCPU 1018的两个10G以太网端口切换成两个外部
10G以太网端口。其还包含供在虚拟化中使用的大量数据结构。

主机102的母板通常提供PCIe Gen3 x16接口,其可以被划分成Intel芯片组中的
两个单独PCIe Gen3 x8总线。PCIe Gen3 x8总线110中的一个被连接到Intel NIC设备118。
第二PCIe Gen3 x8总线110被连接到PLX PCIe交换机芯片1010。交换机芯片1010的下游端
口被配置为两个PCIe Gen3 x8总线110。总线110中的一个被连接到eCPU,而第二个被连接
到数据路径芯片904。

数据路径芯片904将外部存储器用于数据存储。单x72 DDR3通道1012应提供对于
大部分情况而言足够的带宽。联网芯片908也将外部存储器用于数据存储,并?#19994;72 DDR3
通道对于大部分情况而言很可能是足够的。另外,数据结构要求使用?#19988;资?#24615;存储器,诸如
提供高性能和足够密度的存储器,诸如?#19988;资?#24615;DIMM(NVDIMM),其通常具有内置电力开关
电路和超级电容器,作为用于数据保持的储能元件。

eCPU 1018使用两组接口与联网908通信。其具有用于类NVMe的通信的PCIe
Gen2x4接口。eCPU 1018还具有诸如通过其L2交换机连接到联网芯片908的两个10G以太网
接口。

将贯穿两个芯片904、908的内部设计使用AXI总线1020(ARM芯片组的总线规范)。
为了允许数据路径芯片904与联网芯片908之间的无缝通信,AXI总线1020被用于芯片?#21015;?br />片连接。可使用 Xilinx Aurora?协议、串行接口作为物理层。

对FPGA配置的关键要求是(1)数据路径芯片904必须在PCIe配置开始之前就绪
(QSPI闪存(具有四SPI总线接口的串行闪存)可以足够快)和(2)芯片优选地是现场可升级
的。用于配置的闪存优选地大到足以存储配置位流的至少3个拷?#30784;?#20301;流指的是由Xilinx?
FPGA所使用的配置存储器模式。位流通常被存储在?#19988;资?#24615;存储器中并被用来在初始通电
期间配置FPGA。eCPU 1018可以被提供有用以读和写配置闪存的设施。新位流可驻留在主机
102的处理器。安全和?#29616;?#21487;由eCPU 1018在尝试将闪存升级之前处理。

在联网子系统中,控制器卡902可处理主机处理器与外面世界之间的所有网络业
务。联网芯片908可拦截来自NIC 118和外部的所有网络业务。

本实施例中的Intel NIC 118将两个10GigE、XFI接口1022连接到联网芯片908。
嵌入式处理器将做同样的事情。联网芯片908将执行L2交?#36824;?#33021;并将以太网业务路由出到
两个外部10GigE端口。类似地,传入的10GigE业务将直接地到NIC 118、eCPU 1018或联网芯
片908的内部逻辑。

控制器卡902可将SFP+光连接器用于两个外部10G以太网端口。在其他实施例中,
卡可使用外部PHY和RJ45连接器来支持10GBASE-T;但是可能需要单独的卡,或者可能需要
定制的切换卡布置以允许SFP+与RJ45之间的切换。

外部端口和光学件的所有管理(包括LED的操作)可被联网芯片908控制。因此,诸
如PRST、I2C/MDIO等的信号可被连接到联网芯片908而不是NIC 118。

在存储子系统中,数据路径芯片904可直接地驱动小型SAS HD连接器。在诸如图
10中描绘的实施例中,信号可被设计成以12Gbps操作以支持最新的SAS标准。

为了提供板空间的高效使用,可使用两个x4小型SAS HD连接器。全部的八组信号
可被连接到数据路径芯片904,即使在任何一个时间可能只有六组信号被使用。

在机箱上,可使用高速铜线缆来将小型SAS HD连接器连接到母板。小型SAS HD连
接器的放置可考虑到各种机箱的物理空间和线缆的布线。

到控制器卡902的功率可由PCIe x16连接器供应。不需要使用外部电力连接。根
据PCIe规范,PCIe x16连接器可在?#31995;?#20043;后供应仅多达25W的功率。控制器卡902可被设计
成使得其直到PCIe配置之后汲取小于25W。因此,可能需要在初始?#31995;?#20043;后将多个接口和组
件保持在复位中。连接器可在配置之后供应多达75W的功?#21097;?#20854;可被布置成使得75W被分离
在3.3V和12V导轨(rail)之间。

图10示出了软件栈1000,其包括用以对接到融合解决方案300(诸如由FPGA 800
使能的融合解决方案300)的驱动1002。NVMe控制器1004是服务于NVMe控制器的功能并向主
机分配虚拟设备1012的硬件(例如,FPGA 800)的功能的集合。在图10中,dev1、dev2、dev3分
别是被动态地分配给容器1018 LXC1、LXC2以及LXC3的虚拟设备1012的示例。NVMe至SATA桥
接器1008是将虚拟设备1012(dev1、dev2、dev3)转换并?#25104;?#21040;存储设备302(例如,图中的
SSD)的硬件子系统(例如,FPGA 800)的部分。连接1010是提供SATA连接(除了上文记载的其
他可能的连接选项之外)的硬件系统的部分。以太网链路120,其可以使用存储隧道传输协
议将虚拟设备1012(即dev1、dev2、dev3)暴露给经由以太网链路120连接的(一个或多个)其
他主机102。PCI-E(NVMe驱动)1002可对用于存储侧的硬件子系统进行编程和驱动。该驱动
1002可在主机上作为操作系统(例如本示例中的Linux OS)的部分运行。块层1014可以是
Linux操作系统的常规SCSI子系统,其可与融合解决方案PCIe驱动1002对接以使虚拟存储
设备1012暴露。容器1018(LXC1、LXC2、LXC3)可请求并被动态地分配虚拟存储设备1012(分
别地分配dev1、dev2和dev3)。

图11至15示出了首先在缺少融合解决方案300的情况下且然后在存在此类融合
解决方案300的情况下的应用容器1018(例如,Linux容器)跨多个系统102的移动的示例。图
11示出?#21496;?#26377;主控OS/管理程序栈108中的虚拟化软件的常规存储控制器112和网络控制器
118的两个常规计算机系统102的示例。计算机系统1(C1)具有与图1中所示的配置类似的配
置,具有CPU、存储器及常规存储控制器112和网络控制器118。系统运行操作系统108(诸如
Linux?、Microsoft Windows?等)和/或管理程序软件(诸如Xen、VMware等)以自然地
(natively)或通过虚拟化环?#24120;?#35832;如经由虚拟机或容器)为多个应用提供支持。在该计算机
系统102中,应用App1 1102在虚拟机VM1 1104内部运行。应用App2 1108和App3 1112?#30452;?br />地在虚拟化容器LXC1 1110和LXC2 1114内运行。除这些之外,应用App4 1118自然地通过操
作系统108运行。虽然通常实?#39135;?#26223;可能仅具有虚拟机或容器或本机应用(并非全部三个),
但在这里以组合方式故意地将其描绘成涵盖虚拟化环境的所有情况。计算机系统2(C2)102
具有?#30452;?#22320;在容器中和自然地支持App5和App6的类似配置。这些应用中的每个相互独立地
访问其存储设备302,即App1使用S1、App2使用S2等。这些存储设备302(指定为S1-S6)不限
于是独立的物理实体。其可以在被认为必要时在逻辑上从一个或多个物理存储元件切分出
来。如可以看到的(用?#29992;?#20010;存储设备302至应用的箭头表示),存储302与应用1102、1108、
1112、1118之间的数据流在其到达应用之前通过存储控制器112和操作系统/管理程序栈
108,引起结合图1描述的挑战。

参考图12,当应用或容器从C1移动至C2时,其相应存储设备也需要被移动。可能
由于如下事实而需要移动: C1可能在一段时间内诸如由于现有应用(App1-App4)内的行为
改变而用完了用以支持这些应用的资源(诸如CPU、存储器等)。

通常,只要应用状态和存储设备在大小方面合理,在合理的时间量内实现移动更
容易。通常,存储密集的应用可使用大量(例如,几万亿?#32440;冢?#23384;储,在该情况下,在可接受的
时间量内移动存储302可能是实际的。在那个情况下,存储可继续停留在其所在的地方,并
且将采取软件级分路/隧道传输来远程地访问存储,如图13中所示。

如图13中所示,App2 1108在其移动至计算机系统C2之后通过穿过系统C1和C2两
者的操作系统或管理程序108来继续访问位于计算机系统C1上的其原始存储S2。这是因为
由在主CPU内运行的操作系统或管理程序软件栈108完成通过网络控制器118到该存储控制
器112及其附着存储设备302的存储访问的?#25104;洹?br />

如图13中所示,在其移动至C2之后,App2 1108通过穿过系统C1和C2两者的操作
系统或管理程序108来继续访问位于C1中的其原始存储S2。这是因为由在每个计算机系统
的主CPU内运行的操作系统或管理程序软件108完成通过网络控制器118从C2到C1且接着到
C1的该存储控制器112的存储访问的?#25104;洹?br />

当如图14中所?#38236;?#24212;用融合控制器300时考虑类似场景。如可以看到的,该场景
与图11?#36127;?#30456;同,除了融合IO控制器300替换?#35828;?#29420;的存储控制器112和网络控制器118。在
该情况下,当App2 1108连同其容器LXC1仪器移动至C2时(如图15中所示),存储S2不移动,
并且通过避免穿过在存在于计算系统C1中的主CPU中运行的任何软件(操作系统、管理程序
108或任何其他)来优化访问。

因此,在本文中提供了绕过存储设备位于的主CPU的新型方式,这进而(a)允许在
跨多个计算机系统访问存储中显著地减少等待时间和带宽,并且(b)大大地简化并改善其
中需要使应用从其存储位于其上的机器移开的情况。

以太网在最好的努力的基础上运转,并且因此本质上是有损的且突发的。任何分
组都可能被永远丢失或缓冲并连同其他分组以突发?#20918;謊映?#30340;方式递送。虽然典型的以存
储为中心的应用?#36816;?#22833;和突发是敏感的,但重要的是何时通过以太网来发送存储业务。

通过其总线/网络的常规存储访问涉及可靠且?#31245;?#27979;的方法。例如,光纤通道网络
采用基于信用的流控制来限制由最终系统做出的访问的数量。并且给予最终系统的信用的
数量基于存储设备是否具有足够的命令缓冲器以在满足所要求的等待时间和带宽需要的
?#31245;?#27979;时间量中接收和满足存储请求。下图示出了由不同类型的总线(诸如SATA、光纤通道
(FC)、SCSI、SAS等)所采用的某些信用方案。

参考图16,以太网在最好的努力的基础上运转,并且因此趋向于是本质上有损的
且是突发的。任何分组都可能被永远丢失或者缓冲并连同许多其他分组以?#26144;?#30340;方式在引
发?#31561;?#30340;突发中被递送。典型的以存储为中心的应用?#36816;?#22833;和突发是敏感的,因?#35828;?#36890;过
总线和以太网来发送存储业务时重要的是那些涉及用于维持完整性的可靠且?#31245;?#27979;的方
法。例如,光纤通道网络按照惯例采用基于信用的流控制来限制在任何一个时间由最终系
统做出的访问的数量。给予最终系统的信用的数量可以基于存储设备302是否具有足够的
命令缓冲器以在满足所要求的等待时间和带宽要求的?#31245;?#27979;时间量中接收和满足存储请
求。图16示出了由不同类型的总线(诸如SATA总线1602、光纤通道(FC)1604以及SCSI/SAS连
接1608)所采用的除了其他类型的此类方案之外的某些信用方案。

如可以看到的,例如,FC控制器1610可在将存储命令发送到基于FC的存储设备
1612之前使其自己的缓冲达到“N?#22791;?#23384;储命令的极限,但是FC设备1612可能具有不同的缓
冲极限,在本示例中例如“M?#20445;?#20854;可以大于、等于或小于“N”。典型的基于信用的方案使用目
标级(在本示例中,存储设备302中的一个(诸如FC设备1602)是目标)聚合信用,关于所述信
用的信息被传播到尝试访问目标302的各种源(在本示例中,控制器(诸如FC控制器1610)是
源)。例如,如果两个源正在访问具有“N”的队列深度的目标,则给予源的信用的和将不超过
“N?#20445;?#20351;得在任何给定时间,目标将不接收到超过“N?#22791;?#21629;令。源之间的信用的分配可以是任
意的,或者其可基于各种类型的策略(例如,基于成本/定价、SLA等的优先次序)。当服务于
队列时,通过满足命令请求,可酌情在源处补充信用。通过遵守该类型的基于信用的存储访
?#21097;?#21487;以避免将由目标处的队列被埋没(overwhelm)引起的损失。

通过以太网(诸如FCOE iSCSI等)的典型存储访问可将面向目标、基于信用的命
令履行扩展至通过以太网链路的传送。在该情况下,其可以是面向目标设备的而不是面向
源的。在本文中提供了新的基于信用的方?#31119;?#20854;可以代之以基于哪一或什么种类的源应得
到多少信用。例如,直接地将网络对接到存储的上文描述的融合解决方案300可采用复用器
来将面向源、基于信用的调度方案?#25104;?#21040;面向目标设备、基于信用的方?#31119;?#22914;图17中所示。

如图17中所示,四个源位于以太网上,并且存在两个目标存储设备302。典型的面
向目标、基于信用的方?#38468;?#20351;两个队列(每个目标一个)或每个源的两个连接暴露于每个目
标。代之以,如图17中所示,队列(Q1、Q2、Q3、Q4)1702在每个源的基础上,并且其被跨(一个
或多个)复用器1708而?#25104;?复用到两个面向目标的队列(Q5、Q6)1704。通过采用此类面向
源、基于信用的方?#31119;?#21487;独立于目标存储设备302的数量而保证访问带宽和?#31245;?#27979;的访?#23454;?br />待时间。作为示例,一种类型的复用是确保Q1的队列大小“P”不超过Q5和Q6的“L+M?#20445;?#20351;得
Q1不被其源所埋没。

在实施例中,描述了用以提供对来自存储设备302的数据块的访问的方法和系统。
特别地,描述了一种用以允许应用访问其数据、满足特定的一组访问要求的新型方法。

如本文所使用的术语“应用驱动的数据存储?#20445;ˋDS)包含在应用的数据如何被存
储、访问、传送、高速缓存和递?#36879;?#24212;用方面向任何应用提供透明性的存储。ADS?#31245;?#35768;应用
控制这些单独的阶段以解决特定应用的特定需要。作为示例,应用可能由其本身的多个实
例以及跨越跨网络的多个Linux节点散布的多个过程组成。这些过程可能在其之间以共享
或排他的方式访问多个文件。基于应用想要如?#26410;?#29702;这些文件,这些过程可能想要更频繁
地访问文件的不同部分,可能需要快速访问或使用一次并丢弃。基于这些准则,其可能想要
预取和/或保持高速缓存和/或贮存器的不同层中的文件的特定部分,用于在每个会话或每
个文件基础上的立即访?#21097;?#22914;其希望的那样。这些应用特定的要求不能被以一般方式满足,
诸如整个文件系统的盘分条、预读连续块的预取、保留服务器中的物理存储器或者文件内
容的基于LRU或FIFO的高速缓存。

应用驱动的数据存储I/O不可单独简单地应用于存储实体。其以若干方?#25509;?#21709;整
个存储栈。第一,其影响其中应用正在运行的计算节点中的存储I/O栈,包括由联网硬件和
软件提供的Linux寻呼系统、缓冲、底层文件系统客户端、TCP/IP栈、分类、QoS处理和分组排
队。第二,其影响将应用节点及其存储互连的联网基础设施,包括以太网段、最佳路径选择、
交换机中的缓冲、等待时间敏感存储业务的分类和QoS处理以及与存储I/O相关的内爆问
题。并且,其在文件方面影响存储和维?#36136;?#25454;的存储基础设施,包括底层文件布局、冗余、访
问时间、各种类型的存储之间的分层以及远程储存库。

本文中公开的方法和系统包括涉及影响应用节点内的典型应用的元素和融合解
决方案300可如何改变现状以解决应用的某些关键要求的方法和系统。

常规Linux栈可由简单的构造块、此类一般存储器分配、过程调度、文件访问、存储
器?#25104;洹?#39029;面高速缓存等组成。虽然这些对于应用在Linux上运行而言是必不可少的,但这
对于输入/输出(IO)密集的某些种类的应用(诸如NoSQL)而言并不是最佳的。NoSQL应用是
非常IO密集的,并且更难以以一般方式预测其数据访问。如果应用必须被部署在实用计算
环境中,则对于Linux而言提供这些构造块的一般最?#32479;?#24230;的实?#36136;?#19981;理想的。优选的是使
这些构造块是高度灵活的且具有可以从(一个或多个)应用可控制的应用相关特征。

虽然每个应用具有其自己的特定要求,但在示例性实施例中,应用的NoSQL类具有
以下要求:其在通过Linux栈寻址时可以大大地提高NoSQL应用及其他IO密集应用的性能。
要求首先是文件级别优先次序的使用。Linux文件系统应在最低限度上提供不同文件之间
的访问级别优先次序。例如,应用进程(由多个线程组成)访问两个不同的文件,其中一个文
件被给予比另一个高的优先次序(诸如比另一个高的一个数据库/表格/索引)。这将使得能
?#25442;?#20110;被访问的数据而优选地利用的宝贵的存储I/O资源。将争辩的是这可以通过运行以
较高或?#31995;?#20248;先次序运行的一个线程/进程来间接地解决,但是那些进程级别优先次序未
被传送到文件系统或存储组件上。进程或线程级别优先次序仅仅意图用于利用CPU资源。而
且,可能的是同一线程可能访问这两个文件,并且因?#31169;?#22522;于什?#35789;?#25454;(文件)被访问而以
两个不同的级别利用存储资源。第二,可存在对访问级别偏好的要求。Linux文件系统可在
文件(打开的文件)的会话期间提供各种偏好(主要是SLA),诸如文件会话之间的优先次序、
块的缓冲量、各种块的保持/寿命时间偏好、针对资源阈值和竞争的提醒以及性能统计。作
为示例,当诸如MongoDB或Cassandra之类的NoSQL应用将具有用于写和读的两个或更多线
程时,其中如果写可能必须被相比于读给予偏好,则用于写的文件会话可能必须被相比于
用于同一文件的读的文件会话被给予偏好。该能力使得同一文件的两个会话能够具有两个
不同的优先次序。

许多NoSQL应用将不同类型的数据存储到同一文件中;例如,MongoDB将用户集合
以及(b树)索引集合存储在同一组数据库文件中。MongoDB可能想要将索引页(b树和集合)
优先于用户集合页保持在存储器中。当这些文件被打开时,MongoDB可能想要影响Linux、文
件和存储系统以根据MongoDB策略来处理页面,与在不知道应用的要求的一般FIFO或LRU基
础上处理这些页面相?#30784;?br />

资源提醒和性能统计使得NoSQL数据库能够理解底层文件和存储系统的行为,并
且可以因此服务于其数据库查询或将被执行的触发动作,诸如数据库的?#21046;?#25110;针对在同一
主机中运行的其他作业(诸如备份、?#21046;?#26381;务的编号读/写查询等)的文件I/O偏好的减少/
增加。例如,关于IOP和等待时间的最小、最大和平均数以及在给定时间?#25991;?#36827;出(thrash
in and out)主机存储器的前十个候选页面的性能说明将使得应用能够动态地微调它本
身,调整上面记载的参数。

还可存在用于高速缓存偏好和对偏好进行分层的要求。Linux文件系统可能需要
在应用访问其文件的同时具有动态可配置的高速缓存策略。当前,Linux文件系统通常预取
文件的连续块,希望应用以?#28909;?#27969;的连续方式读文件。虽然对于?#28909;鐆eb服务器和视频流式
传输器之类的许多传统应用而言是正确的,但新兴的NoSQL应用并不严格地遵循连续读。这
些应用随机地读块。作为示例,MongoDB以b树形式将文档密钥存储在索引表中,在文件的一
部分上平面布局,其在密钥被搜索时随机地访问块直至其将密钥定位为止。而且,这些文件
并未单独地专用于此类基于b树的索引表。这些文件在诸如用户文档和系统索引文件之类
的各种类型的表格(集合)之间?#36824;?#20139;。由于这,Linux文件系统不能预测文件的什么部?#20013;?br />要被高速缓存、提前读、换出用于高效的存储器使用等。

在本文中描述的方法和系统的实施例中,在其对存储的要求中存在跨各种应用的
公共线程。特别地,在需要的特定时间和位置处用于特定类型的数据的等待时间和IOP对这
些应用的性能是非常有影响的。

例如,为?#31169;?#20915;上面列出的主机级要求,在本文中公开了用于良好地微调的文件
系统客户端的方法和系统,所述文件系统客户端使得应用能够根据主机内和在别处的偏好
来完全影响和控制数据的存储、检索、保持和分层。

如图18中所示,文件系统(FS)客户端1802保持用于文件(fd1和fd2)的单独会话
的单独缓冲池。其还为每个应用或进程集合预分配和维持聚合存储器池。可由应用在其中
文件I/O被执行的进程/线程内内部地或者从另一组进程外部地运用SLA代理 1804,以影响
FS客户端1802以动态地提供适当的存储I/O SLA。从外部进程控制SLA在没有这些较新的存
储控制特征的知识的情况下使能传统应用,而直接不修改应用本身。

本文中公开的方法和系统可为跨网络和主机的数据检索提供广泛的(extensive)
分层服务。如在下文中的图19中可看到的,高性能分布式文件服务器(DFS)1902使得应用能
够以容器化形式在平台1904中运行以确定并执行文件的什么部分应动态地以高速缓存形
式存储形式驻留在哪些介质(DRAM、NVRAM、SSD或HDD)中。这些应用容器1908可以确定其他
存储策略,诸如文件是否也必须被分条、镜像、搜捕和灾难?#25351;矗―R)。

本文中公开的方法和系统还提供了广泛的高速缓存服务。其中高性能DFS 1902
中的应用容器可以从?#38236;?#23384;储和/或远程位置前摄地(proactively)检索文件的特定页面
并将这些页面推送到特定位置,用于在稍后需要时的快速检索。例如,该方法和系统可检索
运行应用的主机的?#38236;?#23384;储器和SSD使用,并将应用?#34892;?#36259;的页面前摄地推送到这些主机
的?#38236;?#23384;储器/SSD中的任何中。该方法和系统可在子DFS平台1904中使用出于该目的提供
的存储器、SSD和HDD的?#38236;?#23618;,用于在其需要的稍后时间由应用进行非常低的等待时间检
索。

跨应用的主机扩展高速缓存的使用是无限的。例如,在MongoDB中,当工作集合瞬
时地增长超过其?#38236;?#20027;机的存储器时,颠簸发生,并且其显著地?#26723;?#26597;询处理性能。这是因
为当所需的文件数据页被丢弃以便带入新页面以满足查询且随后在必须将原始页面带回
来的情况下,系统必须?#20248;?#23376;系统重新读页面刷新时,从而招致完成查询中的巨大等待时
间。应用驱动的存储访问通过将丢弃页面的高速缓存瞬时地保持在网络中的别处(在另一
应用主机的存储器/SSD中或者在高性能DFS系统1902的存储的?#38236;?#23618;中)直至MongoDB再次
要求页面为止并且从而显著地减少完成查询中的等待时间来帮助这些种类的场景。

参考图20,高性能DFS 1902在单个、统一的基于RAM和SSD的层/高速缓存2002中
跨应用主机利用DRAM和SSD资源,以便在必要时并如由应用影响和控制的那样高速缓存和
服务应用数据。

如图21中所示,在本文中公开了由一组主机(H1至HN)、文件或块服务器2102和存
储子系统2104组成的系统。主机H1-H通常是运行需要对被永久地或瞬时地存储在贮存器中
的数据的访问的应用的计算机。文件或卷服务器2102可以是数据组织器和数据服务器,通
常运行包括中央处理单元(CPU)、存储器和用以连接到诸如联网和存储设备之类的外部设
备的专用硬件的硬件。文件或卷服务器2102在被称为块的多个固定或可变数量的?#32440;?#26041;面
组织用户数据。其将这些数据块存储在内部或外部贮存器中。随机但逻辑上相关的块序列
被组织成文件或卷。一个或多个主机H1-HN可以通过应用编程界面(API)或任何其他协议来
访问这些文件或卷。文件或卷服务器可以向一个或多个主机提供一个或多个文件和卷。应
注意的是主机和文件或卷服务器可以在被直接地或者通过网络连接的两个不同物理实体
中,或者其可以在逻辑上一起位于单个物理计算机中。

存储器2104可以是能够瞬时地或永久地保?#36136;?#25454;片的实体的集合。这通常包括静
态或动态随机访问存储器(RAM)、固态贮存器(SSD)、硬盘驱动(HDD)或所有这些的组合。贮
存器可以是通过链路或网络连接到文件或卷服务器2102的独立物理实体。其还可以被与文
件或卷服务器2102集成在单个物理实体中。因此,主机H1-HN、文件或卷服务器2102和贮存
器2104可以在物理上共同位于单个硬件实体中。

如图22中所示,主机通常由多个逻辑实体组成。应用2202通常在主机中运行并将
通过由其?#38236;?#25805;作系统2204或替代其的任何其他实体提供的API来访问其数据元素。操作
系统2204通常具有标准API接口以通过其文件系统客户端2206对接到文件系统。文件系统
客户端2206是在主机内运行以与位于远程或?#38236;?#30340;文件或卷服务器2210对接的软件实体。
其将通过从文件或卷服务器2210检索应用2202所需的数据元素(存在于单个或多个文件或
卷中)并将其保持在主机的存储器2208中直至应用完成其对数据元素的处理来提供所述数
据元素。在典型的应用场景中,特定的数据片将根据要求被读和/或修改多次。在某些类型
的应用中,由多个数据元素组成的整个文件或卷潜在地比?#38236;?#23384;储器2208的大小大得多也
是典型的。这使得操作系统2204和文件系统客户端2206在其实?#31181;?#26356;复杂,以便基于应用
2202在未来可能或者可能不访问数据块的预测来决定什?#35789;?#25454;块将被保持在存储器2208
中或从存储器2028驱逐。到目前为止,现有的实?#31181;?#34892;某些一般的和应用无关的方法,诸如
先进先出(FIFO)或最近最少使用(LRU),以保?#21482;?#39537;逐存储器中的数据块以便从文件或卷
服务器2210带入新的数据块。而且,当被数据块占用的存储器将被收回以便存储另一数据
块时,原始数据被简单地擦掉而不考虑其未来使用。正常地,盘子系统是非常缓慢的,并且
当数据块被从其读并被文件或卷服务器2210传送到文件系统客户端2206至存储器2208时
招致高的等待时间。因此,当原始数据块被擦除时,应用可能必须等待更长时间,如果其尝
试在近期访?#35797;?#22987;数据的话。关于该种类的实现的主要问题是数据访问路径中的模块(即
操作系统2204、文件系统客户端2206、存储器2208、块服务器2210和贮存器)中没有一个具
有什?#35789;?#25454;块将被应用2202访问、数据块何时将被应用2202访问以及数据块将被应用2202
多么频繁访问的任何知识。

在图23中示出了描绘从贮存器2212访问数据块的应用2202的示例场景。被编号的
圆圈示出在访问数据块的过程中涉及的步骤。下文解释这些步骤。第一,应用2202使用文件
或操作系统2204的API来访问数据块。操作系统2204调用用于文件系统客户端2206的等价
API以对其进行访问。第二,文件系统客户端2206尝试?#19994;?#25968;据是否存在于专用于此目的的
其?#38236;?#23384;储器缓冲器中。如果?#19994;劍?#21017;跳过下面的步骤(3)至(7)。第三,发送用以从块服务
器2210检索数据的命令。第?#27169;?#22359;服务器2210向贮存器2212发送用以从贮存器读数据块的
读命令。第五,贮存器2212在从贮存器读数据块之后将其返回到块服务器2210。第六,块服
务器2210将数据块返回到文件系统客户端2206。第七,文件系统客户端2206将数据保存在
存储器2208中的存储器缓冲器中以用于任何未来访问。第八,文件系统客户端2206将所请
求的数据返回?#25509;?#29992;2202。

在本文中公开的方法和系统中,为?#31169;?#20915;与由在NoSQL和大数据领域中的最新类
别的应用进行的数据访问相关的性能要求,已提出由任何应用2202控制数据块访问中的组
件,其包括操作系统2204、文件系统客户端2206、存储器2208、块服务器2210和贮存器2212。
即,我们提出以下各项。第一,使得操作系统2204能够提供附加API以允许应用控制文件系
统客户端2206。第二,增强文件系统客户端2206以支持以下各项:(a)允许应用2202针对特
定的文件或卷在存储器2208中创建专用存储器池,在该意义上,文件或卷将具有专用的存
储器缓冲器池以保持出于其他文件或卷的目的而未?#36824;?#20139;或移除的特定于其的数据;(b)
允许应用2202针对具有文件或卷的特定会话在存储器2208中创建专用存储器池,使得具有
文件或卷的两个独立会话将具有独立的存储器缓冲器来保?#21046;?#25968;据。作为示例,关键重要
的文件会话可在存储器2208中具有大量存储器缓冲器,使得?#27809;?#35805;可以利用更多被呈现的
数据用于更快?#31227;?#32321;的访?#21097;?#32780;具有同一文件的第二会话可被分配非常少的缓冲器,并且
因此其可能必须招致更多?#26144;?#21644;用以访问文件的各种部分的其缓冲器的再使用;(c)允许
应用2202创建跨其他主机或块服务器2210的超出存储器2208的扩?#22815;?#20914;器池用于更快的
访问。这使得能够将数据块保持在其他主机的存储器2208以及存在于文件或块服务器2210
中的任何存储器2402中;(d)允许应用2202使得任何数据块相对于用于文件、卷或会话的其
他数据块而言在存储器2208中更加持久。这允许应用挑拣和选择将始终可用于立即访问的
数据块?#20063;?#35753;操作系统2204或文件系统客户端2206基于其自己的驱逐策略将所述数据块
驱逐;以及(e)允许应用2202使得任何数据块相对于用于文件、卷或会话的其他数据块而言
在存储器存储器2208中不那么持久。这允许应用让操作系统2204和文件系统客户端2206随
着和在其选择时驱逐和再使用数据块的缓冲器。这帮助将其他正常数据块保持达更长的时
间段。第三,使得块服务器2210能够用以下能力如图24中所?#38236;?#22312;应用容器2400方面主控
应用特定的模块:(a)使得应用容器2400能够提前获取应用2202?#34892;?#36259;的数据块并将其存
储在?#38236;?#23384;储器2402中用于稍后的快速访?#21097;?#24182;避免与贮存器2212相关联的等待时间损失
和(b)使得能够将从主机的存储器2208驱逐的页面存储在?#38236;?#23384;储器2402中以用于由应用
2202进行的任何稍后访问。

上文的应用驱动的特征(2)(c)需要进一步解释。存在两个场景。第一个涉及从块
服务器2210的存储器检索数据块。另一场景涉及从另一主机检索该数据块。假设已由两个
主机(H1)和(H2)从贮存器2212读完全相同的数据块,本文中公开的方法和系统提供诸如在
图25中描绘的系统。当注意到数据块存在于另一主机(H2)中时,其被文件系统客户端2206
从所述主机(H2)直接地检索而不是要求块服务器2210将其从贮存器2212检索所述数据块,
那将更慢并招致高等待时间。

在实施例中,如果文件系统客户端2206由于在其地点上存储更重要的数据块而决
定将数据块从(D1)驱逐,则文件系统客户端2206可以将被驱逐数据块发送到文件系统客户
端2206'以代表其被存储在存储器2208'中。

应注意的是上面提及的技术可以在主机的(一个或多个)?#25910;?#30340;情况下被应用于
实现快速的失效转移。更进一步地,上述高速缓存技术、尤其是关于RAM的高速缓存技术可
以被用来用暖高速缓存实?#36136;?#25928;转移。图25示出了用暖高速缓存的快速失效转移系统的示
例。最终结果是在节点的?#25910;?#26399;间,新节点上的最终应用将不在(RAM中的)高速缓存变暖之
前经受一段时间并从而招致一定时段的?#31995;?#24212;用性能。

在本文中提供?#21496;?#26377;带有应用特定模块以根据应用的需要来控制存储访问的的
文件服务器和处理器的系统和方法。

在本文中还提供?#21496;?#26377;使得应用特定模块能够根据应用的需要来控制存储访问
的处理器和数据(组成固定大小?#32440;?#30340;块、具有可变?#32440;?#25968;的类似或不同对象)存储器的系
统和方法。

在本文中还提供了一种系统和方法,其从主机的存储器和/或其瞬时或永久存储
元件检索出于应用使用的目的而预先保持的旧文件或存储数据块,并将其存储在另一主机
的存储器和/或其瞬时或永久存储元件中,以供应用在稍后的时间使用。

在本文中还提供了一种系统和方法,其从主机的存储器和/或其瞬时或永久存储
元件检索出于应用使用的目的而预先保持的任何文件或存储数据块,并将其存储在另一主
机的存储器和/或其瞬时或永久存储元件中,以供应用在稍后的时间使用。

在本文中还提出了一种系统和方法,其出于减少数据访问的等待时间的目的而利
用主机的存储器和/或其瞬时或永久存储元件来存储随后将被在另一主机中运行的应用访
问的任何文件或存储数据块。

出于应用使用的目的而预先保持的任何文件或存储数据块可被存储在另一主机
的存储器和/或其瞬时或永久存储元件中,以供应用在稍后的时间使用。

通过网络将出于应用使用的目的而预先保持的文件或存储数据块从主机的存储
器和/或其瞬时或永久存储元件传输到另一主机的机制。

根据各种示例性且非限制性实施例,公开了一种设备,该设备包括融合输入/输出
控制器,其包含物理目标存储介质控制器、物理网络接口控制器和存储介质控制器与网络
接口控制器之间的网关,其中网关提供用于存储介质控制器与网络接口控制器之间的存储
业务和网络业务的直接连接。

根据某些实施例,所述设备还可以包括虚拟存储接口,其将被存储介质控制器控
制的存储介质呈现为?#38236;?#38468;着存储,?#36824;?#23384;储介质的位置如何。根据其他实施例,所述设备
还可以包括虚拟存储接口,其将被存储介质控制器控制的存储介质呈现为?#38236;?#38468;着存储,
?#36824;?#23384;储介质的类型如何。根据其他实施例,所述设备还可以包括促进存储介质的动态提
供的虚拟存储接口,其中物理存储可以是?#38236;?#30340;或远程的。

根据其他实施例,所述设备还可以包括促进存储介质的动态提供的虚拟网络接
口,其中物理存储可以是?#38236;?#30340;或远程的。根据其他实施例,所述设备可适合于作为控制器
卡安装在主机计算系统上,特别地,其中网关在没有主机计算系统的操作系统的介入的情
况下操作。

根据其他实施例,设备可以包括提供设备的存储功能和网络功能中的至少一个的
至少一个现场可编程门阵列。根据其他实施例,设备可被配置为网络部署交换机。根据其他
实施例,所述设备还可以包括用于在第一协议与至少一个其他协议之间转换存储介质指令
的设备的功能组件。

参考图26,图示了存储设备的虚拟化的示例性且非限制性方法。第一,在步骤2600
处,访问对按照第一存储协议的指令进行响应的物理存储设备。第二,在步骤2602中,将指
令在第一存储协议与第二存储协议之间转换。最后,在步骤2604处,使用第二协议,将物理
存储设备呈现给操作系统,使得物理存储设备的存储可以被动态地提供,?#36824;?#29289;理存储设
备对使用操作系统的主机计算系统而言是?#38236;?#30340;还是远程的。

根据各种实施例,第一协议是SATA协议、NVMe协议、SAS协议、iSCSI协议、光纤通道
协议和以太网光纤通道协议中的至少一个。在其他实施例中,第二协议是NVMe协议。

在某些实施例中,所述方法还可以包括提供操作中系统与执行指令在第一和第二
存储协议之间的转换的设备之间的接口和/或提供执行指令的转换的设备与远程网络部署
存储设备之间的以太网NMVe连接。

参考图27,图示了促进应用和容器中的至少一个的迁移的示例性且非限制性方
法。第一,在步骤2700处,提供了融合存储和联网控制器,其中网关在没有主机计算机的操
作系统的介入的情况下提供用于设备的存储组件与联网组件之间的用于网络和存储业务
的连接。接下来,在步骤2702处,将至少一个应用或容器?#25104;?#21040;被融合存储和联网控制器控
制的目标物理存储设备,使得当应用或容器移动到另一计算系统时,在没有目标物理存储
器被附着到的主机系统的操作系统的介入的情况下,应用或容器可以访问目标物理存储
器。

根据各种实施例,迁移是Linux容器或向外扩展应用的。

根据其他实施例,目标物理存储器是使用iSCSI协议、光纤通道协议和以太网光纤
通道协议中的至少一个的网络部署存储设备。在其他实施例中,目标物理存储器是盘附着
存储设备,其使用SAS协议、SATA协议和NVMe协议中的至少一个。

参考图28,图示?#23435;?#32593;络提供服务质量(QoS)的示例性且非限制性方法。第一,在
步骤2800处,提供了融合存储和联网控制器,其中网关在没有主机计算机的操作系统的介
入的情况下提供用于设备的存储组件与联网组件之间的用于网络和存储业务的连接。接下
来,在步骤2802处,在没有主机计算机的操作系统的介入的情况下,管理与在其数据路径中
部署了存储和联网控制器的网络相关的至少一个服务质量(QoS)参数,此类管理是基于由
融合存储和联网控制器处理的存储业务和网络业务中的至少一个。

虽然仅示出并描述了本公开的几个实施例,但对于本领域的技术人员而?#22312;逑远?br />易见的是在不脱离如在以下权利要求中描述的本公开的精神和范围的情况下可对其进行
许多变更和修改。在本文中参考的所有专利申请和专利(国外和国内两者)以及所有其他公
开被整体地通过引用结合到本文中至法?#31245;?#35768;的最大程度。

本文中描述的方法和系统可部分地或完全地通过在处理器上执行计算机软件、程
序代码和/或指令的机器来部署。本公开可被实现为机器上方法、作为机器的部?#21482;?#30456;对于
机器的系统或装置或者作为在机器中的一个或多个上执行的计算机可读介质中所体现的
计算机程序产品。在实施例中,处理器可以是服务器、?#21697;?#21153;器、客户端、网络基础设施、移
动计算平台、固定计算平台或其他计算平台的部分。处理器可以是能够执行程序指令、代
码、二进制指令等的任何种类的计算或处理设备。处理器可以是或者可以包括信号处理器、
数字处理器、嵌入式处理器、微处理器或任何变体,诸如协处理器(数学协处理器、图形协处
理器、通信协处理器等)等,其可直接地或间接地促进存储在其上面的程序代码或程序指令
的执行。另外,处理器可使得能够执行多个程序、线程以及代码。该线程可被同时地执行以
增强处理器的性能并促进应用的同时操作。通过实现,可在一个或多个线程中实?#30452;?#25991;中
描述的方法、程序代码、程序指令等。该线程可衍生出其他线程,其可具有与之相关联的分
配优先次序;处理器可基于优先次序或者基于在程序代码中提供的指令的任何其他顺序来
执行这些线程。处理器或利用处理器的任何机器可以包括存储如在本文中和别处所述的方
法、代码、指令和程序的非瞬时存储器。处理器可通过可接口来访问存储如在本文中和别处
所述的方法、代码以及指令的非瞬时存储介质。用于存储方法、程序、代码、程序指令或能够
被计算或处理设备执行的其他类型的指令的与处理器相关联的存储介质可以包括但不限
于CD-ROM、DVD、存储器、硬盘、?#20102;?#39537;动、RRAM、ROM、高速缓存等中的一个或多个。

处理器可以包括?#31245;?#24378;多处理器的速度和性能的一个或多个核。在实施例中,处
理器可以是双核处理器、四核处理器、将两个或更多独立的核(称为管芯)组合的其他芯片
级多处理器等。

本文中描述的方法和系统可部分地或完全地通过在服务器、客户端、隔火墙、网
关、集线器、路由器或其他此类计算机和/或网络硬件上执行计算机软件的机器来部署。软
件程序可与服务器相关联,该服务器包括文件服务器、打印服务器、域服务器、因特网服务
器、内部网服务器、?#21697;?#21153;器以及其他变体,诸如辅助服务器、主机服务器、分布式服务器
等。服务器可以包括存储器、处理器、计算机可读介质、存储介质、端口(物理和虚拟)、通信
设备以及能够通过有线或无线介质等访问其他服务器、客户端、机器以及设备的接口中的
一个或多个。如在本文中和别处所述的方法、程序或代码可被服务器执行。另外,执行如在
本申请中所述的方法所需的其他设备可被视为与服务器相关联的基础设施的部分。

服务器可以提供到其他设备的接口,该设备在没有限制的情况下包括客户端、其
他服务器、打印机、数据库服务器、打印服务器、文件服务器、通信服务器、分布式服务器、社
交服务器等。另外,此耦合和/或连接可促过程序跨网络的远程执行。在不违背本公开的范
围的情况下,某些或所有这些设备的联网可促进一个或多个位置处的程序或方法的并行处
理。另外,通过接口被附着到服务器的任何设备可以包括能够存储方法、程序、代码和/或指
令的至少一个存储介质。中央储存库可以提供要在不同设备上执行的程序指令。在本实现
中,远程储存库可充当用于程序代码、指令以及程序的存储介质。

软件指令可与客户端相关联,该服务器包括文件客户端、打印客户端、域客户端、
因特网客户端、内部网客户端、?#21697;?#21153;器以及其他变体,诸如辅助客户端、主机客户端、分布
式客户端等。客户端可以包括存储器、处理器、计算机可读介质、存储介质、端口(物理和虚
拟)、通信设备以及能够通过有线或无线介质等访问其他客户端、服务器、机器以及设备的
接口中的一个或多个。如在本文中和别处所述的方法、程序或代码可被客户端执行。另外,
执行如在本申请中所述的方法所需的其他设备可被视为与客户端相关联的基础设施的部
分。

客户端可以提供到其他设备的接口,该设备在没有限制的情况下包括服务器、其
他客户端、打印机、数据库服务器、打印服务器、文件服务器、通信服务器、分布式服务器等。
另外,该耦合和/或连接可促进程序跨网络的远程执行。在不违背本公开的范围的情况下,
某些或所有这些设备的联网可促进一个或多个位置处的程序或方法的并行处理。另外,通
过接口被附着到客户端的任何设备可以包括能够存储方法、程序、应用、代码和/或指令的
至少一个存储介质。中央储存库可以提供要在不同设备上执行的程序指令。在本实?#31181;校?#36828;
程储存库可充当用于程序代码、指令以及程序的存储介质。

本文中描述的方法和系统可部分地或完全地通过网络基础设施来部署。网络基础
设施可以包括诸如计算设备、服务器、路由器、集线器、防火墙、客户端、个人计算机、通信设
备、路由设备和如本领域中已知的其他有源和无源设备、模块和/或部件之类的元件。与网
络基础设施相关联的计算和/或非计算设备除其他部件之外还可以包括存储介质,诸如闪
存、缓冲器、堆栈、RAM、ROM等。在本文中和别处所述的过程、方法、程序代码、指令可被网络
基础设施元件中的一个或多个执行。本文中描述的方法和系统可适合于与任何种类的私
人、团体或混合式云计算网络或云计算环境一起使用,包括涉及软件即服务(SaaS)、平台即
服务(PaaS)和/或基础设施即服务(IaaS)的特征的那些。

在本文中和别处所述的方法、程序代码以及指令可在具有多个小区的蜂窝网络
上实现。该蜂窝网络可以是频分多址(FDMA)网络或码分多址(CDMA)网络。该蜂窝式网络可
以包括移动设备、小区?#38236;恪?#22522;站、重发器、天线、塔架等。蜂窝网络可以是GSM、GPRS 3G、
EVDO、网状网络或其他网络类型。

在本文中和别处所述的方法、程序代码以及指令可在移动设备上或通过移动设备
?#35789;?#29616;。移动设备可以包括导航设备、蜂窝电话、移动电话、移动个人数?#31181;?#29702;、膝上计算
机、掌上式电脑、上网本、寻呼机、电子书阅读器、音乐播放器等。这些设备除其他部件之外
还可以包括存储介质,诸如闪存、缓冲器、ROM、ROM和一个或多个计算设备。可使得与移动设
备相关联到计算设备能够执行存储在其上面的程序代码、方法以及指令。替换地,移动设备
可被配置成与其他设备相合作地执行指令。移动设备可与跟服务器对接?#20918;?#37197;置成执行程
序代码的基站通信。移动设备可在端对端网络、网状网络或其他通信网络上通信。程序代码
可被存储在与服务器相关联的存储介质上并被嵌入服务器内的计算设备执行。基站可以包
括计算设备和存储介质。存储设备可存储被与基站相关联的计算设备执行的程序代码和指
令。

可在可以包括以下各项的机器可读介质上存储和/或访问计算机软件、程序代码
和/或指令:保?#30452;?#29992;于在一定时间间隔内的计算的数?#36136;?#25454;的计算机部件、设备以及记录
介质;称为随机访问储器(RAM)的半导体储存器;通常用于更持久的存储的大容量储存器,
诸如光盘、?#28909;?#30828;盘、磁带、鼓、卡片及其他类型的形式;处理器寄存器、高速缓冲存储器、易
失性存储器、?#19988;资?#24615;存储器?#36824;?#23398;储存器,诸如CD、DVD;可移动介质,诸如闪存(例如USB棒
或键)、软盘、磁带、织带、穿孔卡、独立RAM盘、压缩驱动器、可移动大容量储存器、离线等;其
他计算机存储器,诸如动态存储器、静态存储器、读/写储存器、可变储存器、只读、随机访
问、顺序访问、位置可寻址、文件可寻址、内容可寻址、网络附加存储、存储区域网络、条形
码、磁?#38405;?#27700;等。

本文中描述的方法和系统可将物理和/或无形项目从一个状态变换成另一个。本
文中描述的方法还可将表示物理和/或无形项目的数据从一个状态变换成另一个。

在本文中(包括直通各图用流程图和框图)描述和描绘的元件暗示元件直接的逻
辑边界。然而,根据软件或硬件工程实践,所描绘的元件及其功能可在机器上通过具有处理
器的计算机可执行介质?#35789;?#29616;,该处理器能够将存储在其上面的程序指令作为单块软件结
构、作为独立软件模块或者作为采用外部例程、代码、服务等的模块或者这些的任何组合来
执行,并且所有此类实现都可以在本公开的范围内。此类机器的示例可以包括但可不限于
个人数?#31181;?#29702;、膝上计算机、个人计算机、移动电话、其他手持计算设备、医疗设备、有线或
无线通信设备、换能器、芯片、计算器、卫星、平板电脑PC、电子图书、小配件、电子设备、具有
人工智能的设备、计算设备、联网设别、服务器、路由器等。进一步地,用流程图或框图描绘
的元件或任何其他逻辑部件可在能够执行程序指令的机器上实现。因此,虽然前文的附图
和描述阐述了公开系统的功能方面,但不应从这些描述推断用于实现这些功能方面的软件
的特定布置,除非明确地叙述或者另外从上下文?#36828;?#26131;见。同样地,将领会到的是上文识别
和描述的各种步骤可改变,并?#20063;?#39588;的顺序可适应于本文中公开的技术的特定应用。所有
此类变化和修改意图落在本公开的范围内。同样地,不应将用于各种步骤的顺序的描绘和/
或描述理解成要求用于按下步骤的特定执行顺序,除非特定应用要求或者明确地叙述或者
另外从上下文?#36828;?#26131;见。

上文描述的方法和/或过程以及与之相关联的步骤可用硬件、软件或适合于特定
应用的硬件和软件的任何组合?#35789;?#29616;。硬件可以包括通用计算机和/或专用计算设备或特
定计算设备或特定计算设备的特定方面或部件。可在一个或多个微处理器、微控制器、嵌入
式微控制器、可编程数?#20013;?#21495;处理器或其他可编程设备以及内部和/或外部存储器中实现
各过程。可同样或代之以在专用集成电路、可编程门阵列、可编程阵列逻辑或可被配置成处
理电?#26377;?#21495;的任何其他设备或设备组合中体现该过程。将进一步领会到的是可将过程中的
一个或多个实现为能够在机器可读介质上执行的计算机可执行代码。

可使用诸如C之类的结构化编程语言、诸如C++之类的面向对象编程语言或者可以
被存储、编译或解释以在上述设备中的一个以及处理器的异构组合、处理器架构或不同硬
件和软件的组合或者能够执行程序指令的任何其他机器上执行的任何其他高级或?#22270;?#32534;
程语言(包括汇编语言、硬件描述语言以及数据库编程语言和技术)来创建计算机可执行代
码。

因此,在一个方面,可用当在一个或多个计算设备上执行时执行上文所述的方法
及其组合的步骤的计算机可执行代码来体现上文所述的方法及其组合。在另一方面,可在
执行该方法的步骤的系统中体现该方法,并且可以许多方式跨设备分布,或者可将所有功
能集成到专用、独立设备或其他硬件中。在另一方面,用于执行与上述过程相关联的步骤的
手段可以包括任何上文所述的硬件和/或软件。所有此类置换和组合意图落在本公开的范
围内。

虽然已结合详细地示出并描述的优选实施例公开了本公开,但其各种修改和改进
对于本领域的技术人员而言将是?#36828;?#26131;见的。因此,本公开的精神和范围不限于前述示例,
而是应在法?#31245;?#35768;的最宽泛意义上理解。

术语“一”和“一个”和“所述”和类似指示物在描述本公开的上下文中(尤其是在
以下权利要求的上下文中)的使用应被理解成涵盖单数和?#35789;?#20004;者,除非在本文中另外指
明或明显地与上下文矛盾。应将术语“包括”、“具有” 、“包含”和?#26114;?#26377;”理解为开放式术语
(即,意指“包括但不限于?#20445;?#38500;非另外说明。本文中的值范围的叙述仅仅意图充当单独地提
及落在该范围内的每个单独值的简写方法(除非在本文中另外指明),并且每个单独?#24403;?#32467;
合到本文中,如同其在本文中被单独地叙述一样。可以按照任何适当的顺序来执行本文中
描述的所有方法,除非在本文中另外指明或者很明显与上下文矛盾。在本文中提供的任何
和所有示例或示例性语言(例如"诸如")的使用仅仅意图更好地举例说明本公开,而不对本
公开的范围施加限制,除非另外要求保护。不应将本说明书中的语言理解为指示对于本公
开的实施而言必不可少的任何未要求保护要素。

虽然本发明的前文编写描述使得普通技术人员能够完成和使用目前被认为是其
最佳方式的内容,但普通技术人员将理解并领会到本文中的特定实施例、方法以及示例的
变体、组合以及等价物的存在。因此本公开不应受到上述实施例、方法以及示例的限制,而
是受到在本公开的精神和范围内的所有实施例和方法的限制。

在本文中参考的所有文献被通过引用结合到本文中。

关于本文
本文标题:用于融合联网和存储的方法和系统.pdf
链接地址:http://www.pqiex.tw/p-6091591.html
关于我们 - 网?#26087;?#26126; - 网?#38236;?#22270; - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 河南快3预测与推荐 360足球直播 3d所有组三有几个 五星选胆组技巧 猎鱼达人3d聚宝盆炉子 时时缩水过滤器 怎么换ip赚钱 欢乐炸金花 ag电子哪个游戏好打 湖南快乐10分开奖视频