外围设备中的增强的存储协议仿真的制作方法

文档序号:31697541发布日期:2022-10-01 06:15阅读:210来源:国知局
外围设备中的增强的存储协议仿真的制作方法
外围设备中的增强的存储协议仿真
1.相关申请的交叉引用
2.本技术是2021年3月25日提交的美国专利申请17/211,928的部分继续申请,其公开内容通过引用并入本文。
技术领域
3.本发明总体上涉及数据存储,并且具体涉及外围设备中的存储协议的仿真。


背景技术:

4.使用网络适配器进行数据存储的各个技术在本领域中是已知的。例如,美国专利9696942和9727503描述了用于使用本地总线协议来访问远程存储设备的技术。所公开的方法包括在主计算机上配置驱动程序以接收根据为访问连接到主计算机的外围组件接口总线的本地存储设备定义的协议的命令。当驱动程序从在主计算机上运行的应用程序接收到根据指定存储事务的协议的存储访问命令时,由连接到主计算机的网络接口控制器(nic)执行远程直接存储器访问(rdma)操作,以便经由远程存储设备上的网络执行存储事务。
5.美国专利10657077描述了高融合nvmf存储nic卡。一种插入服务器的存储与通信装置,包括电路板、总线接口、媒体接入控制(mac)处理器、一个或更多个存储设备和至少一个中央处理单元(cpu)。总线接口被配置成将装置至少连接到服务器的处理器。mac被安装在电路板上并且被配置为连接至通信网络。存储设备被安装在电路板上并且被配置为存储数据。cpu被安装在电路板上,并且被配置为将存储设备(i)经由总线接口暴露给服务器的处理器,以及(ii)通过通信网络间接暴露给其他服务器。


技术实现要素:

6.本文描述的本发明的实施例提供了包括主机接口和处理电路的外围设备。主机接口用于通过外围总线与一个或更多个主机通信。所述处理电路用于在所述外围总线上暴露外围总线设备,所述外围总线设备使用至少一个总线存储协议的一个或更多个实例与所述一个或更多个主机通信,使用所述暴露的外围总线设备接收由所述一个或更多个主机发出的输入/输出(i/o)事务,并且通过运行至少一个网络存储协议的主机侧协议栈的至少一部分,根据所述至少一个网络存储协议的一个或更多个实例来完成针对所述一个或更多个主机的所述i/o事务。
7.在一些实施例中,处理电路用于使用外围总线设备将多个单独的文件系统(fs)暴露给一个或更多个主机。在示例实施例中,处理电路跨单独的fs中的至少两个对数据进行去重。在另一个实施例中,处理电路用于根据取决于跨单独的fs中的至少两个的数据的使用的高速缓存策略来高速缓存用于单独的fs中的至少两个的数据。
8.在所公开的实施例中,处理电路通过将数据存储在多个存储层中来完成i/o事务。在一个实施例中,处理电路用于根据一个或更多个主机对数据的使用来在存储层之间移动数据的至少一部分。
9.在一些实施例中,处理电路用于(i)经由外围总线设备从主机接收通过网络向远程主机发送指定数据的请求,该指定数据先前由外围设备根据网络存储协议存储,以及(ii)响应于该请求,通过网络向远程主机传输先前存储的数据,同时将数据的传输从主机卸载。
10.在一个实施例中,处理电路通过以下操作将指定数据传输到远程主机:(i)从数据先前存储在其中的存储位置提取数据,以及(ii)将所提取的数据发送到远程主机。在一个实施例中,在传输先前存储的数据时,不经由主机传输先前存储的数据。在另一个实施例中,处理电路用于通过网络指示对等外围设备将先前存储的数据发送到远程主机。在示例实施例中,在传输先前存储的数据时,不经由外围设备传输先前存储的数据。
11.根据一个实施例,还提供了一种方法,包括:在外围设备中,通过外围设备总线与一个或更多个主机通信。使用至少一个总线存储协议的一个或更多个实例与该一个或更多个主机通信的外围总线设备使用该外围设备暴露在该外围总线上。使用所暴露的外围总线设备,在外围设备中接收由一个或更多个主机发出的输入/输出(i/o)事务。通过运行至少一个网络存储协议的主机侧协议栈的至少一部分,由外围设备根据至少一个网络存储协议的一个或更多个实例来针对一个或更多个主机完成i/o事务。
12.根据一个实施例,还提供了一种用于在外围设备中仿真存储协议的方法。所述方法包括:使用通过外围总线连接到一个或更多个主机的外围设备,在所述外围总线上暴露专用外围总线设备,所述专用外围总线设备使用至少一个总线存储协议与所述主机通信。使用暴露的外围总线设备,在外围设备中接收由主机发出的输入/输出(i/o)事务。通过运行至少一个网络存储协议的主机侧协议栈的至少一部分,由外围设备根据至少一个网络存储协议来针对主机完成i/o事务。
13.本文描述的本发明的另一个实施例提供了包括主机接口和处理电路的外围设备。主机接口被配置为通过外围总线与主机通信。处理电路被配置为在外围总线上暴露使用总线存储协议与主机通信的外围总线设备,使用所暴露的外围总线设备接收由主机发出的输入/输出(i/o)事务,并且通过运行网络存储协议的主机侧协议栈的至少一部分,根据网络存储协议完成针对主机的i/o事务。
14.在一些实施例中,在运行主机侧协议栈的至少一部分时,处理电路被配置为将主机与网络存储协议的控制平面操作隔离。在一个实施例中,处理电路被配置为在本地存储中完成针对主机的i/o事务的至少一些或至少部分。在另一个实施例中,外围设备还包括被配置为通过网络通信的网络端口,并且处理电路被配置为由通过网络与根据网络存储协议操作的存储系统通信来完成针对主机的i/o事务的至少一些或至少部分。
15.在一些实施例中,在通过网络完成i/o事务时,处理电路被配置为使用零复制传输直接在主机的存储器和存储系统之间传输数据。在示例性实施方式中,处理电路被配置为确定存储系统中的数据的一个或更多个地址,并且然后直接在一个或更多个地址与主机的存储器之间传输数据,而不将数据中间存储在网络适配器中。
16.在一个公开的实施例中,总线存储协议和网络存储协议中的至少一个是块存储协议。在另一个实施例中,总线存储协议和网络存储协议中的至少一个是文件系统(fs)协议。在又一个实施例中,总线存储协议和网络存储协议中的至少一个为对象存储协议。在又一个实施例中,总线存储协议和网络存储协议中的至少一个为键值(kv)协议。
17.在一个实施例中,在暴露外围总线设备时,处理电路被配置为仿真热插拔指示,向主机通知存储设备已经连接到外围总线。在一些实施例中,处理电路被配置为从主机接收指示队列的门铃,主机在该队列上发布与i/o事务有关的一个或更多个工作请求,并且处理电路被配置为读取并执行一个或更多个工作请求以完成i/o事务。在示例实施例中,处理电路包括被配置为接收门铃并且响应于门铃从队列读取一个或更多个工作请求的硬件。
18.在另一个实施例中,处理电路被配置为在完成i/o事务时向主机发出消息信号中断(message signaled interrupt)。在一个公开的实施例中,处理电路被配置为经由暴露在外围总线上的一个或更多个寄存器与主机通信。在另一个实施例中,处理电路还被配置为执行存储虚拟化和数据操纵操作中的一个或更多个。
19.根据本发明的实施例,还提供了一种方法,包括:在通过外围总线与主机通信的外围设备中,在外围总线上暴露使用总线存储协议与主机通信的外围总线设备。
20.使用暴露的外围总线设备,在外围设备中接收由主机发出的输入/输出(i/o)事务。通过运行网络存储协议的主机侧协议栈的至少一部分,由外围设备根据网络存储协议来完成针对主机的i/o事务。
21.从下面结合附图对实施例的详细描述,将更充分地理解本发明。
附图说明
22.图1是示意性地示出了根据本发明的一个实施例的计算与存储系统的框图;
23.图2是示意性地示出了根据本发明的一个实施例的以上图1的系统中的文件系统仿真的示例用例的框图;
24.图3是示意性地示出了根据本发明的一个实施例的用于仿真外围设备中的存储协议的方法的流程图;
25.图4是示意性地示出了根据本发明的一个实施例的文件系统仿真的示例用例的框图,该文件系统仿真包括跨文件系统去重和高速缓存;
26.图5是示意性地示出了根据本发明的一个实施例的包括多层存储(multi-tier storage)的文件系统仿真的示例用例的框图;以及
27.图6是示意性地示出了根据本发明的一个实施例的文件系统仿真的示例用例的框图,包括

发送文件’(

sendfile’)命令的加速和卸载。
具体实施方式
28.概述
29.本文描述的本发明的实施例提供改进的数据存储技术,其中外围设备通过外围总线向主机提供存储服务。主机可包括例如数据中心中的服务器。外围设备可以包括例如高性能网络适配器,有时被称为数据处理单元(dpu)或“智能nic”。本文描述的实施例主要涉及dpu,所述dpu通过高速外围组件互连(pcie)总线向主机提供存储服务。然而,一般来说,所公开的技术可适用于各个其他类型的外围设备和总线。
30.在所公开的实施例中,外围设备使用网络存储协议(例如,块存储协议、文件系统(file-system,fs)协议、对象存储协议或键值(kv)存储协议)为主机服务。具体地,外围设备(i)向主机暴露仿真总线存储协议的专用pcie设备,以及(ii)运行网络存储协议的主机
侧协议栈的至少一部分。外围设备接收由主机发出的输入/输出(i/o)事务,并且根据网络存储协议,使用内部运行协议栈来完成主机的i/o事务。
31.在本上下文中,短语“在外围总线上暴露外围总线设备”意味着运行接口,该接口朝向主机仿真以呈现为不同的外围总线设备,供主机与其通信。外围总线设备通常是网络型设备(例如,与存储型设备相对)。
32.当使用所公开的技术时,主机与存储服务的控制平面(也称为管理平面或编排平面)完全隔离。专用pcie设备向主机呈现存储接口,该存储接口本质上比网络接口更特定和受限制。主机与存储服务的交互限于数据平面存储操作,即与专用pcie设备交换i/o事务。主机和专用pcie设备之间的通信通常使用有限的一组命令并且实际上没有安全权限来实现。在外围设备(例如,dpu)与任何相关(远程和/或本地)存储系统之间执行与存储服务有关的控制和管理操作,例如,登录、身份管理、凭证和访问权限的管理以及其他安全相关操作。主机以及因此可在其上运行的任何不可信软件与这些操作完全隔离。
33.在一些实施例中,仅暴露于总线存储协议,主机可能不知道外围设备使用的网络存储协议的类型。这样,总线存储协议和网络存储协议甚至可以是不同类型的。例如,专用pcie设备根据文件系统协议从主机接收i/o事务,并且根据对象或键值协议通过网络完成i/o事务。
34.从以上描述中显而易见的是,所公开的架构为存储服务提供高度的安全性。在许多应用和用例下,将主机与存储服务的管理和控制隔离是重要的。一个示例是多租户云应用,其中主机不总是能对其运行的不同应用进行控制。另一示例是“裸金属(bare metal)”云应用,其中,租户被提供有对主机的完全访问权限。在这样的场景中,所公开的技术使得存储提供者能够以良好控制、安全和相互隔离的方式向在主机上运行的各个应用提供存储服务。
35.所公开的技术还提高性能,因为主机被卸载网络存储协议栈的大部分(如果不是全部)。存储任务经常表现出不可预测的计算负载突发,例如,由于复杂的操作,诸如元数据结构的操纵、垃圾收集、数据压缩和碎片整理。可以由主机执行的一些计算任务(例如,一些高性能计算(hpc)工作负载)对计算负载的此类变化敏感。因此将主机侧协议栈卸载到外围设备是非常有利的。
36.此外,当使用所公开的技术时,网络存储协议栈的维护和管理(例如,安装、升级和配置)完全在外围设备(例如,dpu)内执行。在执行这样的动作时不需要来自主机或主机管理员的协作或意识。
37.本文描述了所公开的技术的若干示例实现和用例。还描述了补充技术,诸如i/o事务的零复制完成和专用门铃机制。
38.额外公开的实施例提供对多个单独文件系统的支持,例如用于多租户主机。另外的其他实施例以对主机透明的方式提供多层存储,以及诸如

sendfile’的文件传输命令的加速和卸载。
39.系统描述
40.图1是示意性地示出了根据本发明的一个实施例的计算与存储系统20的框图。系统20包括高性能网络接口控制器(nic)24,也称为数据处理单元(dpu),其服务于主机28。dpu 24通过外围总线(在本示例中为高速外围组件互连(pcie)总线36)与主机28通信。
41.在本上下文中,dpu 24被认为是连接到pcie总线36的外围设备。dpu 24为主机28提供数据存储服务,可能还有其他任务。在图1的示例中,dpu 24将主机28连接到采用网络/集群文件系统(fs)32的网络。fs 32根据一定的网络存储协议来操作。网络存储协议的非限制性示例包括nfs、nfsordma、smb、smb-direct、lustre、gpfs、beegfs、ceph,以及由诸如vastdata和weka的供应商提供的专有协议。
42.主机28包括主机cpu 40,主机cpu 40可以根据适用的用例运行各个软件应用。在一个实施例中,主机40包括基于云的数据中心中的服务器,该服务器托管属于多个客户(“租户”)的应用。在另一个实施例中,主机40包括“裸金属”数据中心中的服务器,其中,租户“拥有”服务器,在某种意义上,租户被给予对服务器的完全访问权限。
43.在其他功能中,在主机cpu 40上运行的应用发出输入/输出(i/o)事务,例如,将数据写到文件、从文件读取数据或创建、修改或删除文件或目录的事务。通常,i/o事务可由在主机cpu 40上运行的任何软件发布,例如由虚拟机(vm)、进程、容器或任何其他软件发布。
44.在本示例中,dpu 24包括用于通过pcie总线36与主机28通信的主机接口44、用于通过网络(例如,使用以太网分组)与fs 32通信的网络端口48、以及用于执行dpu的各个联网和存储功能的处理电路52。处理电路52通常包括运行适当软件的一个或更多个cpu 56,以及专用硬件60。处理电路52的任务可以以任何合适的方式在软件(cpu 56)和硬件(专用硬件60)之间进行划分。
45.在一些实施例中,处理电路52通过运行fs 32的网络存储协议的主机侧协议栈的至少一部分来向主机cpu 40提供存储服务。此外,处理电路52向主机cpu 40暴露pcie总线36上的专用pcie设备62。在一些实施例中,处理电路52可执行增强fs 32的指定的网络存储协议的附加处理。例如,如果网络存储协议不提供密码能力,则dpu 24的处理电路52可以在网络存储协议之上添加该功能。
46.为了清楚起见,pcie设备62在图中被描绘在主机28内部,以便强调设备62和主机cpu 40之间的交互。然而,实际上,pcie设备62是由dpu24通过总线36呈现给主机28的逻辑接口。因此,术语“pcie设备”和“pcie接口”可以互换地使用。pcie设备62可包括pcie物理功能或虚拟功能。
47.pcie设备62被配置成相对于主机cpu仿真总线存储协议。主机cpu40通过使用总线存储协议与pcie设备62通信来进行i/o事务。dpu 24的处理电路52使用网络存储协议的内部运行协议栈完成(即,执行)fs 32中(和/或如下文详述的本地存储中)的主机cpu 40的i/o事务。与pcie设备62的主机交互可使用标准操作系统(os)驱动程序来实现,或者视情况而定实现为供应商特定驱动程序。
48.pcie设备62和主机cpu 40之间的协议通常限于专用的一小组与存储相关的命令,与由常规网络设备实现的任意通信相反。因此,该协议的安全漏洞大大减少,并且确保安全漏洞的任务大大简化。例如,dpu 24中的处理电路56可以分析经由pcie设备62到达的事务,并且应用根据所使用的存储协议指定的安全策略。例如,安全策略可以检查与存储协议有关的属性(例如,文件名、偏移量、对象标识符等),并且根据属性值采取动作。动作可以包括例如允许或拒绝对某些文件或对象的访问、或任何其他合适的动作。
49.在一些实施例中,dpu 24还包括本地存储64,例如一个或更多个闪存设备。在一些实施例中,系统20还包括附加外围设备68,该附加外围设备包括本地存储72,例如一个或更
多个闪存设备。附加外围设备可以是例如另一nic(dpu或其他)或固态驱动器(ssd)。在一些实施例中,i/o事务的完成可涉及将数据存储在本地存储中,例如,dpu 24中的存储64或附加外围设备68中的存储72。
50.通常,dpu 24可以通过网络完成i/o事务的至少一些或至少部分,并且可以在本地存储中完成i/o事务的至少一些或至少部分。因此,例如,在dpu中运行的协议栈可以将给定的i/o事务转换成网络存储协议的多个存储操作(读或写)。这些存储操作中的一个或更多个可以通过网络执行,并且存储操作中的一个或更多个可以在本地存储中执行。
51.图1中所示的系统20及其组件(例如,dpu 24和主机28)的配置是纯粹为了概念清晰而描绘的示例配置。在替换实施例中可以使用任何其他合适的配置。
52.例如,在替代实施例中,暴露pcie设备62并运行主机侧网络存储协议栈的外围设备可能根本不具有网络连接。在这种示例实施例中,外围设备是诸如ssd的存储设备。在这样的实施例中,在没有网络通信的情况下在本地执行用于主机的数据存储。进一步替代地,外围设备可以执行本地存储和远程存储两者。
53.此外,所公开的技术不限于文件系统协议或任何其他类型的存储协议。在替代实施例中,总线存储协议可包括各个其他类型的存储协议。示例总线存储协议包括块存储(“块设备”)协议,如nvme、virtio-blk、scsi、sata和sas、各个对象存储协议、kv存储协议(如nvme-kv)、或任何其他合适的协议。作为fs 32的替换,dpu 24可以使用各个网络存储协议来完成i/o事务,例如,块存储协议,诸如nvme-over-fabrics、nvme-over-tcp、iscsi、iser、srp和fibre-channel;对象存储协议,诸如amazon s3、microsoft azure、openstack swift和google cloud storage;kv存储协议,诸如nosql、redis和rocksdb,或者任何其他合适的存储系统或协议。
54.如上所述,总线存储协议(暴露给主机)和网络存储协议(用于事务完成)为相同类型不是强制性的。例如,在一个实施例中,总线存储协议可包括fs协议,而网络存储协议包括对象或kv协议。也可以使用任何其他合适的组合。
55.系统20的各个元件及其组件(例如,dpu 24和主机28)可以使用软件、使用诸如在一个或更多个专用集成电路(asic)或现场可编程门阵列(fpga)中的合适的硬件、或使用软件和硬件元件的组合来实现。
56.通常,dpu 24的主机cpu 40和cpu 56包括可编程处理器,其在软件中被编程以执行本文描述的功能。软件可以例如通过网络以电子形式下载到任何处理器,或者它可以替代地或附加地被提供和/或存储在非暂态有形介质上,诸如磁性、光学或电子存储器。
57.图2是示意性地示出了根据本发明实施例的以上图1的系统20中的文件系统仿真的示例用例的框图。在本实施例中,由dpu 24仿真的总线存储协议是virtio-fs文件系统。virtio-fs是被设计成服务虚拟机(vm)的共享文件系统,并且例如在2019年4月11日的“虚拟i/o设备(virtio)版本1.1(virtual i/o device(virtio)version 1.1)”的委员会规范01的5.11节中描述。
58.在图2的示例中,dpu 24的处理电路56运行virtio-fs snap控制器80和文件系统驱动器84。处理电路56向主机28暴露专用virtio-fs pcie设备88。驱动器84可以被配置为与各个类型的联网的、集群的或并行的文件系统32接口连接。文件系统的非限制性示例包括lustre、gpfs、beegpfs、nfs(通过tcp或通过rdma)、或由供应商(如weka和vastdata)提供
的专有解决方案。可替代地,可以支持任何其他合适类型的文件系统。
59.在一个实施例中,virtio-fs驱动器88向主机28呈现待安装的本地目录,该本地目录被映射到dpu 24中的目录。dpu 24和virtio-fs驱动器88之间的协议在以上引用的virtio-fs规范中定义,并且基于通过virtio-queues传送的fuse命令。在更一般的情况下,virtio-fs snap控制器80和文件系统驱动器84彼此紧密耦合,并且呈现给主机的virtio-fs文件夹直接源自网络,而无需表示它的本地dpu文件夹。
60.图3是示意性地示出了根据本发明一个实施例的用于仿真外围设备(本示例dpu 24中)中的存储协议的方法的流程图。该方法开始于dpu 24在暴露步骤90向主机28暴露呈现总线存储协议的专用pcie设备(例如,图1的设备62或图2的设备88)。在事务发送步骤94,主机28向专用pcie设备发出i/o事务。
61.在i/o执行步骤98,dpu 24的处理电路56根据网络存储协议在合适的存储系统中执行主机的i/o事务。在完成步骤102,当i/o事务完成时,dpu 24的处理电路56向主机28发送完成通知。
62.i/o事务的零复制完成
63.如可以理解的,通过dpu 24完成i/o事务涉及在主机28的存储器和由fs 32管理的存储系统的存储器之间传输数据。当完成写命令时,例如,dpu 24的处理电路56将数据从主机28的存储器传输到存储系统的存储器。当完成读命令时,处理电路56在相反方向上将数据从存储系统的存储器传输到主机28的存储器。
64.在一些实施例中,处理电路56以“零复制”方式执行这些数据传输。在本上下文中,术语“零复制”意味着数据在主机28的存储器与存储系统的存储器之间直接传输,而不在dpu 24中有中间存储。i/o事务的零复制完成显著地降低了总事务延迟,并且增加了可实现的吞吐量。
65.通常,使用远程直接存储器访问(rdma)执行数据传输。在一些实施例中,处理电路56在两个阶段中执行零复制数据传输。在第一阶段中,处理电路56确定用于完成i/o事务的存储系统中的适当的一个或更多个地址(在写命令的情况下将数据写入的一个或更多个地址,或在读取命令的情况下将从其读取的一个或更多个地址)。只有这样,在第二阶段中,处理电路56才在主机28的存储器中和存储系统的存储器中的适当地址之间传输数据。
66.在一些实施例中,处理电路56通过使用主机自身的地址空间直接访问主机28的存储器来执行零复制数据传输。此类技术公开于2021年3月2日提交的名称为“交叉地址空间桥接(cross address-space bridging)”的美国专利申请17/189303,其公开内容通过引用并入本文。在这种类型的实施例中,dpu 24的处理电路56创建描述主机28的存储器的rdma mkey。以此方式,可以直接在主机28的存储器和存储系统(网络实体)的存储器之间执行rdma操作,从而消除对dpu存储器的额外复制的需要。
67.在替代实施例中,处理电路56可以任何其他合适的方式执行零复制数据传输。
68.门铃和其他dpu硬件机构
69.在各个实施例中,dpu 24包括增强接收和处理由主机28发出的i/o事务的灵活性并且还减少延迟的各个硬件或硬件-软件机制。这样的机制可以包括例如队列和对应的门铃、硬件寄存器、中断等。下面给出几个示例。
70.通常,主机cpu 40通过将一个或更多个工作请求张贴在可由dpu 24的处理电路56
读取的队列上来发出i/o事务。主机和dpu可以经由多个队列并行交互,例如,每个主机核心、每个应用、每个线程、每个qos类、每个用户或每个租户的队列。为了减少延迟,在一些实施例中,主机和dpu使用门铃机制,其中主机处理器40(i)向处理电路56发信号通知一个或更多个工作请求已经被发布,以及(ii)指示dpu应该从其读取工作请求的队列。通常,门铃触发处理电路52中的硬件60从指定队列读取工作请求并将工作请求传递到cpu 56用于处理。
71.在示例性实施例中,硬件60被配置为将pcie基地址寄存器(bar)上的一个或更多个地址视为门铃。bar经由专用pcie设备62被暴露给主机。在该实施例中,主机cpu 40通过写入这些地址之一来发出门铃。这样的写入触发dpu中的硬件60,硬件60继而从指定队列读取任何待决工作请求。
72.可以使用各个技术来指定待读取的队列的身份。在一个实施例中,单个bar地址被指派为充当门铃,并且主机将合适的队列标识符写到该地址。在另一个实施例中,每个队列被指派了各自的不同bar地址;对这些bar地址之一的任何写入由硬件60解释为对应队列的门铃。写入到地址的值可解释为队列的产生者索引。可替代地,可以使用任何其他合适的机制或惯例。
73.在一些实施例中,在cpu 56上运行的dpu软件被配置来在完成i/o事务时向主机发出消息信号中断(msi或msi-x)。中断触发主机cpu 40,且因此减少延迟。
74.在一些实施例中,(在dpu 24中的)cpu 56和(在主机28中的)主机处理器40被配置为通过写入和读取在pcie总线bar上定义的寄存器来彼此交换信息和/或报告事件。这些寄存器经由专用pcie设备62被暴露给主机。在一些情况下,cpu 56(在dpu 24中的)写入寄存器,并且主机处理器40(在主机28中的)读取寄存器。在其他情况下,主机处理器40(在主机28中的)写入寄存器,并且cpu 56(在dpu 24中的)读取寄存器。在一些实施例中,可以定义更复杂的寄存器机制。例如,对一个寄存器的写入可以影响对另一寄存器的后续写入的含义。
75.在一些实施例中,在暴露专用pcie设备62时,处理电路52被配置为向主机28仿真“热插拔”指示。热插拔指示通知主机存储设备已经连接到pcie总线36。
76.附加的实施例和变化
77.在一些实施例中,作为对主机仿真存储协议的一部分,dpu 24中的处理电路52被配置为对主机28仿真各个fs服务。可以仿真任何合适的fs服务,诸如例如目录服务和统计信息收集。
78.另外或可替代地,作为对主机仿真存储协议的一部分,dpu 24中的处理电路52被配置为执行一个或更多个存储虚拟化和数据操纵操作。可以由dpu 24执行的存储虚拟化操作包括例如密码操作,例如加密、解密、签名和认证、去重、镜像、安全隔离、服务质量(qos)、目录服务、锁定、压缩、人工智能(ai)操作等。在一些实施例中,这样的操作可以至少部分地由处理电路52中的硬件60执行,和/或由耦合到dpu 24的图形处理单元(gpu)加速。
79.多个文件系统的有效仿真
80.在一些实施例中,所公开的外围设备的处理电路(例如,dpu)将多个单独的文件系统(fs)暴露给它使用专用存储pcie设备服务的(一个或更多个)主机。在一些实施例中,外围设备通过执行跨不同fs的联合去重和/或高速缓存来高效地支持多个单独的fs。
81.图4是示意性地示出了根据本发明的一个实施例的文件系统仿真的示例用例的框图,该文件系统仿真包括跨文件系统去重和高速缓存。在该实施例中,主机28运行使用两个或更多个单独的fs 32(在本示例中为三个fs 32)的多个应用程序和/或访客106。fs 32可以是相同类型或不同类型。例如,当主机28和dpu 24服务于多个租户时,或者在任何其他合适的场景中,可以部署多个分离的fs。
82.在这些实施例中,由dpu 24通过pcie总线36暴露的专用pcie存储设备(在本示例中为专用virtio-fs pcie设备88)向应用程序/访客106暴露多个单独的fs。
83.因此,每个应用程序/访客106能够使用适当的总线存储协议向其被配置来使用的文件系统发送i/o事务。dpu 24的处理电路运行virtio-fs仿真模块110,除其他仿真任务之外,virtio-fs仿真模块110在总线存储协议的i/o事务与对应的网络存储协议的i/o事务之间转换。如在上面讨论的单个fs的情况下,dpu 24使用总线存储协议与每个应用程序/访客106通信,并且使用网络存储协议与对应的fs 32通信。为此目的,图4的dpu 24运行多个文件系统驱动器118(在图中表示为fs1、fs2和fs3)。
84.在实践中,很可能不同的应用程序/访客在他们各自的fs中存储相同的数据。原始实现方式将是忽略这些共性,但是这种简化可能导致性能降级。显著更有效的解决方案是跨多个fs 32执行去重。获得存储效率的另一方式是跨多个fs 32执行高速缓存。在图4的实施例中,dpu 24的处理电路包括执行这些任务的跨文件系统去重和高速缓存模块114。
85.在示例实施例中,模块114识别由fs 32中的两个或更多个使用的相同数据项,并且将该数据去重。在本上下文中,术语“去重”意味着存储所标识的数据的更少副本(少于使用这个数据的文件系统32的数量),例如,仅单个副本。模块114使得这些更少副本(例如,单个副本)可用于各种fs 32。由多个文件系统使用的任何数据可以以这种方式被去重,例如,用户数据、诸如数据结构的用户元数据、和/或文件系统本身的对象或其他信息。模块114可跨fs对数据去重,即使当fs是不同类型时。任何合适的去重方案可用于此目的。
86.另外或可替代地,在一些实施例中,模块114根据取决于跨多个fs的数据的使用的高速缓存策略高速缓存至少两个单独的fs 32的数据。例如,高速缓存策略可以在高速缓存时将高优先级给予最频繁使用(mfu)或最近期使用(mru)数据项,和/或从高速缓存驱逐最不频繁使用(lfu)或最不近期使用(lru)数据项。当评估此类标准时,模块114跨多个fs而非单独地针对每个fs来计算使用频率和/或记录使用时间。可替代地,可以使用任何其他合适的高速缓存策略。
87.此外,同一高速缓存(例如,单级或多级高速缓存存储器)用于联合服务于多个fs。相对于每个单独的fs的独立高速缓存,这种联合高速缓存使得可用的高速缓存资源的使用显著更高效。
88.多层存储的抽象
89.在一些实施例中,所公开的外围设备的处理电路(例如,dpu)将某个fs暴露给它使用专用存储pcie设备服务的(一个或更多个)主机。然而,数据的实际存储由dpu在多个存储层中执行。多层存储通常对于存储数据的应用程序/访客是透明的。
90.图5是示意性地示出了根据本发明的一个实施例的包括多层存储的文件系统仿真的示例用例的框图。在本上下文中,术语“多个存储层(storage tier)”是指特征在于不同存储速度(或延迟)的多个存储介质或子系统的层级结构。通常,较慢的存储层也倾向于具
有较大的容量和较低的成本,且较快的存储层倾向于具有较小的容量和较高的成本。
91.示例四层存储方案可以使用从最快到最慢排序的以下层:
92.存储器内持久化(pim)——主机中存储数据的存储器。
93.本地固态驱动器(ssd)——主机的ssd。
94.远程存储器(与主机跨网络定位的存储器)。
95.远程ssd(与主机跨网络定位的ssd)。
96.在图5的示例中,dpu 24将数据存储在pim 126、本地ssd 130和网络fs 32(其本身可以使用远程存储器和/或远程ssd)中。或者,可使用任何其他合适的存储层的层级结构。
97.除了仿真模块110之外,dpu 24的处理电路还运行分层fs驱动器122,该分层fs驱动器122执行不同存储层中的分层存储。除了其他任务之外,驱动器122追踪(一个或更多个)主机对数据项的使用,基于所追踪的使用为每个数据项选择适当的存储层,并相应地将数据从层到层移动。通常,驱动器122会将频繁访问的数据(“热数据”)存储在更靠近主机的存储层中,并且将不频繁访问的数据(“冷数据”)存储在更远离主机的存储层中。由于数据使用模式可随时间而改变,因此驱动器122可通过将数据从一个层移动到另一层来适应这些改变。应用程序/访客106通常不知道各个数据项的分层结构和实际存储位置。
98.‘
sendfile’命令的加速和卸载
99.在一些实际情况中,主机可以请求向远程主机传输存储在文件系统中的数据(例如,文件)。一个示例是linux

sendfile’命令。sendfile的原始实现方式将是从fs向主机读取文件,并且然后通过网络从主机向请求的远程主机写入文件。在一些实施例中,所公开的外围设备(例如,dpu)代表主机执行sendfile命令,从而卸载主机。除了减少主机上的处理负载之外,所公开的技术还减少向主机和从主机传输数据的量。
100.图6是示意性地示出了根据本发明的一个实施例的文件系统仿真的示例用例的框图,包括

sendfile’命令的加速和卸载。在本示例中,dpu 24执行存储仿真和网络仿真两者。
101.为了执行存储仿真,dpu 24的处理电路包括virtio-fs仿真模块110,并且向主机暴露专用virtio-fs设备88。为了执行网络仿真,dpu 24的处理电路包括virtio-传输仿真模块142,并且向主机暴露专用virtio-网设备134。
102.virtio-fs仿真模块110与如上所述的联网的fs 32进行通信。virtio-传输仿真模块142连接到互联网146,用于与作为sendfile命令的目的地的远程主机通信(以及其他网络仿真任务)。此外,dpu 24的处理电路包括执行sendfile加速和卸载的sendfile加速模块138。
103.在示例实施例中,以卸载方式传输文件的过程开始于主机28上的应用程序/访客106向virtio-fs设备88发送合适的请求。该请求在本文中被称为“已卸载sendfile”并且与常规sendfile命令不同。“已卸载sendfile”请求指定(i)先前存储在fs 32中的文件,以及(ii)文件将被发送至的远程主机。
104.virtio-fs设备88通过pcie总线36将请求传输到dpu 24中的sendfile加速模块138。响应于该请求,sendfile加速模块138使用virtio-fs仿真模块110从fs 32检索文件,并且经由virtio-传输仿真模块142向远程主机发送文件。如所见,贯穿此过程,文件数据不遍历pcie总线36且不经由主机28传递。
105.在一些实施例中,dpu 24中的sendfile加速模块138可以将“已卸载sendfile”的执行委托给另一个dpu 24。例如,模块138可以指示更靠近作为文件的最终目的地的远程主机的对等dpu传输文件。在这样的实施例中,对等dpu将文件直接传输到远程主机。文件数据不通过发起“已卸载sendfile”的主机,也不通过服务于发起主机的dpu。
106.以上描述通过实例涉及文件的传输和sendfile命令。在替代实施例中,所公开的技术可用于传输任何其他合适类型的数据。
107.应当理解,上述实施例是以示例的方式引用的,并且本发明不限于在上文中具体示出和描述的内容。相反,本发明的范围包括在上文中描述的各种特征的组合和子组合,以及在阅读以上描述时本领域技术人员会想到的并且在现有技术中未公开的其变化和修改。通过引用结合在本专利申请中的文献被认为是本技术的组成部分,除了在这些并入的文献中以与本说明书中明确或隐含的定义相冲突的方式定义任何术语的程度上,仅应当考虑本说明书中的定义。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1