CN115686346A - 一种数据存储方法、设备及计算机可读存储介质 - Google Patents

一种数据存储方法、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN115686346A
CN115686346A CN202110862252.5A CN202110862252A CN115686346A CN 115686346 A CN115686346 A CN 115686346A CN 202110862252 A CN202110862252 A CN 202110862252A CN 115686346 A CN115686346 A CN 115686346A
Authority
CN
China
Prior art keywords
data
task
stored
storage
disk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110862252.5A
Other languages
English (en)
Inventor
陈东东
罗韩梅
蒋杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110862252.5A priority Critical patent/CN115686346A/zh
Publication of CN115686346A publication Critical patent/CN115686346A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据存储方法、设备及计算机可读存储介质,涉及云技术和区块链领域;该数据存储方法应用于数据存储设备,数据存储设备用于执行第一任务,数据存储设备的本地磁盘用于存储第一待存储数据,第一待存储数据是执行第一任务时所产生的数据;该数据存储方法包括:运行挂载客户端,其中,挂载客户端用于向分布式存储设备存储数据;获取执行第二任务时所产生的第二待存储数据,其中,第二任务的优先级低于第一任务的优先级;通过运行的挂载客户端,向分布式存储设备发送携带第二待存储数据的数据存储请求,以使分布式存储设备响应于数据存储请求,将第二待存储数据存储至分布式存储设备中。通过本申请,能够提升混部效果。

Description

一种数据存储方法、设备及计算机可读存储介质
技术领域
本申请涉及计算机网络领域中的存储技术,尤其涉及一种数据存储方法、设备及计算机可读存储介质。
背景技术
混部是指将具有不同优先级的任务部署在同一个设备上;比如,将在线任务和离线任务部署在同一个设备上的在线离线混部,其中,在线任务的优先级高于离线任务的优先级。
一般来说,在混部过程中,提交较高优先级的任务时通常会申请更多的资源,且较高优先级的任务运行过程中会有波峰波谷现象,尤其是在波谷时段,资源得不到充分利用,通过混部,在较高优先级的任务运行过程中填充执行较低优先级的任务,能够提高资源的利用率。然而,在混部时,常常存在较低优先级的任务与较高优先级的任务在磁盘空间上的竞争问题,导致较高优先级的任务正常运行受到影响;因此,混部效果较差。
发明内容
本申请实施例提供一种数据存储方法、装置、设备及计算机可读存储介质,能够提升混部效果。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据存储方法,应用于数据存储设备,所述数据存储设备用于执行第一任务,所述数据存储设备的本地磁盘用于存储第一待存储数据,所述第一待存储数据是执行所述第一任务时所产生的数据,包括:
运行挂载客户端,其中,所述挂载客户端用于向分布式存储设备存储数据;
获取执行第二任务时所产生的第二待存储数据,其中,所述第二任务的优先级低于所述第一任务的优先级;
通过运行的所述挂载客户端,向所述分布式存储设备发送携带所述第二待存储数据的数据存储请求,以使
所述分布式存储设备响应于所述数据存储请求,将所述第二待存储数据存储至所述分布式存储设备中。
本申请实施例提供一种数据存储装置,包括:
任务执行模块,用于执行第一任务,并将执行所述第一任务时所产生的第一待存储数据存储至所述数据存储设备的本地磁盘;
客户端运行模块,用于运行挂载客户端,其中,所述挂载客户端用于向分布式存储设备存储数据;
数据获取模块,用于获取执行第二任务时所产生的第二待存储数据,其中,所述第二任务的优先级低于所述第一任务的优先级;
数据存储模块,用于通过运行的所述挂载客户端,向所述分布式存储设备发送携带所述第二待存储数据的数据存储请求,以使所述分布式存储设备响应于所述数据存储请求,将所述第二待存储数据存储至所述分布式存储设备中。
在本申请实施例中,所述数据存储装置还包括状态检测模块,用于检测所述数据存储请求对应的存储状态;统计所述存储状态为不可中断的睡眠状态的状态数量;当所述状态数量大于数量阈值时,停止调度下一第二任务。
在本申请实施例中,所述状态检测模块,还用于当所述状态数量大于所述数量阈值时,降低所述第二任务的磁盘读写速率。
在本申请实施例中,所述状态检测模块,还用于当所述状态数量大于所述数量阈值时,生成告警提示信息,其中,所述告警提示信息为用于提示所述分布式存储设备的工作异常的信息;展示所述告警提示信息。
在本申请实施例中,所述状态检测模块,还用于获取所述状态数量的更新信息,并基于所述状态数量的更新信息确定更新状态数量;当所述更新状态数量小于或等于所述数量阈值时,调度所述下一第二任务。
在本申请实施例中,所述状态检测模块,还用于当所述更新状态数量小于或等于所述数量阈值时,恢复所述第二任务的磁盘读写速率。
在本申请实施例中,所述状态检测模块,还用于当所述更新状态数量小于或等于所述数量阈值时,生成恢复提示信息,其中,所述恢复提示信息为用于提示所述分布式存储设备的工作恢复正常的信息;展示所述恢复提示信息。
在本申请实施例中,所述数据存储装置还包括空间限制模块,用于获取所述第一任务对应的磁盘空间占用量;结合所述磁盘空间占用量和磁盘总空间量,确定磁盘空闲空间量,其中,所述磁盘总空间量为所述本地磁盘的空间量;在调度所述第二任务时,创建与所述第二任务关联的本地存储目录;基于所述磁盘空闲空间量,生成所述本地存储目录的空间量限制信息。
在本申请实施例中,所述空间限制模块,还用于基于所述空间量限制信息,在所述本地存储目录中存储所述第二待存储数据。
在本申请实施例中,所述空间限制模块,还用于获取所述第一任务对应的下一磁盘空间占用量;结合所述下一磁盘空间占用量和所述磁盘总空间量,更新所述磁盘空闲空间量。
在本申请实施例中,所述空间限制模块,还用于基于更新后的磁盘空闲空间量,生成所述本地存储目录的所述空间量限制信息。
在本申请实施例中,所述空间限制模块,还用于在调度所述第二任务时,构建所述第二任务对应的容器;创建至少一个数据存储目录、以及每个所述数据存储目录对应的至少一个子数据存储目录;将至少一个所述数据存储目录、以及每个所述数据存储目录对应的至少一个所述子数据存储目录,挂载至所述第二任务对应的容器中,得到所述本地存储目录。
在本申请实施例中,所述空间限制模块,还用于基于所述磁盘空闲空间量,生成所述空间量限制信息;针对所述本地存储目录中的至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,建立与所述空间量限制信息的关联。
在本申请实施例中,所述空间限制模块,还用于获取所述本地存储目录中的已存储空间量;基于所述空间量限制信息对应的所述磁盘空闲空间量和所述已存储空间量,确定可存储空间量;当所述第二待存储数据对应的存储空间量小于或等于所述可存储空间量时,将所述第二待存储数据存储至所述本地存储目录中;当所述第二待存储数据对应的存储空间量大于所述可存储空间量时,结束所述第二待存储数据在所述本地存储目录中的数据存储流程。
在本申请实施例中,所述数据存储装置还包括远程存储模块,用于建立与远程存储设备之间的存储关联关系。
在本申请实施例中,所述远程存储模块,还用于基于所述存储关联关系,向所述远程存储设备发送携带所述第二待存储数据的远程存储请求,以使所述远程存储设备响应于所述远程存储请求,将所述第二待存储数据存储至所述远程存储设备中。
本申请实施例提供一种数据存储设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的数据存储方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的数据存储方法。
本申请实施例至少具有以下有益效果:在实现混部的数据存储设备上,通过挂载客户端实现虚拟磁盘的挂载,使得执行较低优先级的第二任务时所产生的第二待存储数据能够存储至分布式存储设备,进而与数据存储设备上执行第一任务时所产生的第一待存储数据在本地磁盘的存储隔离开来;也就是说,第一任务的第一待存储数据的存储与第二任务的第二待存储数据的存储是独立的,互不影响的,因此,能够提升混部效果。
附图说明
图1是本申请实施例提供的数据存储***的一个可选的架构示意图;
图2是本申请实施例提供的数据存储***的另一个可选的架构示意图;
图3是本申请实施例提供的图1中的一种服务器的组成结构示意图;
图4是本申请实施例提供的数据存储方法的一个可选的流程示意图;
图5是本申请实施例提供的一种示例性的数据存储方法的实现示意图;
图6是本申请实施例提供的数据存储方法的另一个可选的流程示意图;
图7是本申请实施例提供的数据存储方法的又一个可选的流程示意图;
图8是本申请实施例提供的数据存储方法的再一个可选的流程示意图;
图9是本申请实施例提供的一种示例性的数据存储方法的架构示意图;
图10是本申请实施例提供的另一种示例性的数据存储方法的架构示意图;
图11是本申请实施例提供的一种示例性的基于存储状态调整第二任务的执行的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是为了限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)云技术(Cloud Technology),是指在广域网或局域网内将硬件、软件和网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
2)容器,是一组受到资源限制、且彼此间相互隔离的进程;而容器技术,是一种基于操作***能力的隔离技术。在本申请实施例中,第二任务可以以容器的形式执行。
3)容器编排,容器编排是指自动化容器的部署、管理、扩展和联网。在不同环境中部署相同的应用,而无需重新设计。其中,容器编排工具比如“Kubernetes”,简称K8s,用于管理云平台中多个主机上的容器化的应用,是容器云平台的底座;这里,通过容器编排工具提交的任务,是以容器的形式执行的。在本申请实施例中,第二任务可以是通过“Kubernetes”提交的。
4)控制组(cgroups,Control Groups),用于对CPU、内存、存储和网络等资源进行限制的进程组。在本申请实施例中,可通过控制组实现对第二任务的磁盘读写速率的限制。
5)在线任务,是指至少一种服务,实时性较强;通常在线任务需要资源相对较少,但要求响应时间短,比如,网络(web)服务。在本申请实施例中,第一任务可以是在线任务。
6)离线任务,是指至少一种任务,不具有实时性;通常离线任务不需要对任务进行迅速响应,但是计算量相对较大,且占用资源多,比如,机器学习。在本申请实施例中,第二任务可以是离线任务。
7)分布式存储***(Ceph),是指文件存储管理的物理磁盘空间不一定直接连接在本地节点上,而是通过计算机网络与节点相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的存储***,可靠性和扩展性较高。在本申请实施例中,分布式存储设备可以是分布式存储***,远程存储设备也可以是分布式存储***。
8)块存储,在块存储***中,所有数据按照固定的大小分块,每一块赋予一个用于寻址的编号。在本申请实施例中,挂载客户端对应的存储形式可以是块存储。
9)磁盘配额管理(DiskQuota),用于限制对磁盘空间的使用量;当设置磁盘最大配额后,DiskQuota进程监控磁盘使用量,并维护超出最大配额的黑名单任务,当往黑名单任务中***数据时,操作会被禁止。在本申请实施例中,可通过磁盘配额管理实现对本地存储目录的最大配额限制,其中,最大配额为磁盘空闲空间量。
10)存储目录,用于提供对容器存储的支持,比如,“emptyDir”类型的存储目录,“hostPath”类型的存储目录;其中,“emptyDir”类型的存储目录在“pod”容器分配到宿主机上时被创建,是自动分配的存储目录;“hostPath”类型的存储目录为“pod”容器挂载宿主机上的目录或文件,使得容器可以使用宿主机的文件***进行存储。在本申请实施例中,本地存储目录即是存储目录。
11)区块链(Block Chain),是由区块(Block)形成的加密的、链式的交易存储结构。
12)区块链网络(Block Chain Network),通过共识的方式将新区块纳入区块链形成的的一系列的节点的集合。
一般来说,为了实现混部,通常获取较高优先级对应的数据存储后的剩余空间,将较低优先级的任务对应的数据存储至剩余空间中,但未对较低优先级的任务对应的数据的空间占用量进行限制,可能导致较低优先级的任务对应的数据占满整个磁盘的分区,从而影响较高优先级的任务的正常执行。
另外,为了实现混部,还可以在混部设备上部署部分具有较低优先级的任务;如此,由于缩小了具有较低优先级的任务的部署量,一方面不具有通用性,另一方面,无法有效提升处理器和内存等资源的利用率。
示例性地,在线离线混部时,在线任务占用了宿主机的存储空间,但还存在剩余空闲空间,可以将剩余空闲空间分配给离线任务,离线任务使用剩余空闲空间资源;由于未对分配给离线任务的存储空间进行限制,在离线任务的某时段需要更多临时空间资源时,存在离线任务的空间占用量较多,而影响在线任务的运行的情况。
示例性地,为了实现在线离线混部,还可以只部署对磁盘空间需要较少类型的离线任务,或依据磁盘空间可用量部署定量的离线任务。但只部署对磁盘空间需要较少类型的离线任务缩小了混部离线任务的范围,不具有通用性;若只能运行定量的离线任务,则未能充分利用空闲的CPU或内存资源,资源利用率较低。
基于此,本申请实施例提供一种数据存储方法、装置、设备和计算机可读存储介质,能够使得具有较高优先级的第一任务对应的数据与具有较低优先级的第二任务对应的数据的存储是物理分离的,互不影响,且具有足够大的存储空间存储具有较低优先级的第二任务对应的数据,通用性较高,且能够提升处理器和内存等资源的利用率。
下面说明本申请实施例提供的用于数据存储设备的示例性应用,本申请实施例提供的数据存储设备可以实施为智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备和智能音箱等各种类型的终端,也可以实施为服务器。下面,将说明数据存储设备实施为服务器时的示例性应用。
参见图1,图1是本申请实施例提供的数据存储***的一个可选的架构示意图;如图1所示,为支撑一个数据存储应用,在数据存储***100中,服务器400(分布式存储设备)连接服务器200(数据存储设备)。另外,该数据存储***100中还包括通过网络300与服务器200连接的终端500,网络300可以是广域网或者局域网,又或者是二者的组合。
服务器200,用于通过网络300接收终端500提交的第一任务和第二任务;还用于执行第一任务,将执行第一任务时所产生的第一待存储数据存储于本地磁盘中。还用于运行挂载客户端,其中,挂载客户端用于向服务器400存储数据;获取执行第二任务时所产生的第二待存储数据,其中,第二任务的优先级低于第一任务的优先级;通过运行的挂载客户端,向服务器400发送携带第二待存储数据的数据存储请求,以使服务器400响应于数据存储请求,将第二待存储数据存储至分布式存储设备中。
服务器400,用于接收服务器200发送的携带第二待存储数据的数据存储请求,并响应于数据存储请求,将第二待存储数据存储至服务器400中。
终端500,用于通过网络300向服务器200提交第一任务和第二任务。
在本申请的一些实施例中,服务器200和服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,Content Delivery Netwo rk)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不作限制。
本申请实施例提供的数据存储方法所涉及的空间量限制信息可保存于区块链上。
另外,本申请实施例提供的数据存储方法中,数据存储设备可作为区块链上的节点;参见图2,图2是本申请实施例提供的数据存储***的另一个可选的架构示意图。图2示出的数据存储***100中,通过服务器200向多个服务器(服务器400-1和服务器400-2,即图1中服务器400)发送携带第二待存储数据的数据存储请求。
在本申请的一些实施例中,服务器200、服务器400-1和服务器400-2可以加入区块链网络600而成为其中的一个节点。区块链网络600的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备,都可以在不需要授权的情况下接入区块链网络600,以作为区块链网络600的共识节点,比如,服务器400-1映射为区块链网络600中的共识节点600-1,服务器200映射为区块链网络600中的共识节点600-2,服务器400-2映射为区块链网络600中的共识节点600-3。
以区块链网络600为联盟链为例,服务器200、服务器400-1和服务器400-2在获得授权后可以接入区块链网络600而成为节点。服务器200可以通过执行智能合约的方式将携带第二待存储数据的数据存储请求发送至区块链网络600中进行共识。当共识通过时,服务器再将携带第二待存储数据的数据存储请求发送至服务器400-1和服务器400-2。可见,通过区块链网络中的多个节点对携带第二待存储数据的数据存储请求进行共识确认后再发送至服务器400-1和服务器400-2,能够提高数据存储过程中携带第二待存储数据的数据存储请求传输的可靠性和准确性。
参见图3,图3是本申请实施例提供的图1中的一种服务器的组成结构示意图,图3所示的服务器200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。服务器200中的各个组件通过总线***240耦合在一起。可理解,总线***240用于实现这些组件之间的连接通信。总线***240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线***240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。
在本申请的一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作***251,包括用于处理各种基本***服务和执行硬件相关任务的***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算机设备,示例性的网络接口220包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块253,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作***设备和显示内容和信息的用户接口);
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在本申请的一些实施例中,本申请实施例提供的数据存储装置可以采用软件方式实现,图3示出了存储在存储器250中的数据存储装置255,其可以是程序和插件等形式的软件,包括以下软件模块:任务执行模块2551、客户端运行模块2552、数据获取模块2553、数据存储模块2554、状态检测模块2555、空间限制模块2556和远程存储模块2557,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在本申请的另一些实施例中,本申请实施例提供的数据存储装置可以采用硬件方式实现,作为示例,本申请实施例提供的数据存储装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据存储方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(A SIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Progra mmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面,将结合本申请实施例提供的数据存储设备的示例性应用和实施,说明本申请实施例提供的数据存储方法。
参见图4,图4是本申请实施例提供的数据存储方法的一个可选的流程示意图,将结合图4示出的步骤进行说明。其中,该数据存储方法应用于数据存储设备,该数据存储设备用于执行第一任务,数据存储设备的本地磁盘用于存储第一待存储数据,第一待存储数据是执行第一任务时所产生的数据。
S401、运行挂载客户端。
在本申请实施例中,数据存储设备上安装有挂载客户端,该挂载客户端用于向分布式存储设备存储数据;从而,数据存储设备运行安装的挂载客户端,以通过运行的挂载客户端执行数据存储方法。
需要说明的是,分布式存储设备用于对数据存储设备中的数据进行分布式存储,是独立于数据存储设备的设备;并且,分布式存储设备可以是单个设备,还可以是设备集群,本申请实施例对此不作限定。而挂载客户端是数据存储设备与分布式存储设备之间的桥梁,用于以一定的存储形式将数据存储设备中的数据存储在分布式存储设备上;比如,当分布式存储设备为“Ceph”分布式存储***时,挂载客户端为“Ceph”分布式存储***中的RBD(RADOS Block Device,块设备)。
S402、获取执行第二任务时所产生的第二待存储数据。
在本申请实施例中,数据存储设备还用于执行第二任务,以实现混部;数据存储设备在执行第二任务时会产生需要存储的数据,获取执行第二任务时所产生的需要存储的数据(比如,数据存储设备本地计算的临时数据),也就获得了第二待存储数据。
需要说明的是,第二任务的优先级低于第一任务的优先级,其中,优先级是指任务执行的优先级;数据存储设备通过执行第一任务和第二任务,实现混部。其中,第一任务可以是容器化任务,还可以是非容器化任务,本申请实施例对此不作限定;第二任务可以是容器化任务,当然也可以是非容器化任务,本申请实施例对此不作限定;以及,第一任务可以是离线任务也可以是在线任务,当第一任务为离线任务时,第二任务为优先级低于第一任务的优先级的离线任务;当第一任务为在线任务时,第二任务为优先级低于第一任务的优先级的离线任务或在线任务。
S403、通过运行的挂载客户端,向分布式存储设备发送携带第二待存储数据的数据存储请求,以使分布式存储设备响应于数据存储请求,将第二待存储数据存储至分布式存储设备中。
在本申请实施例中,数据存储设备对获得的第二待存储数据进行存储时,是通过运行的挂载客户端实现的。这里,数据存储设备通过运行的挂载客户端,生成携带第二待存储数据的数据存储请求,并通过运行的挂载客户端向分布式存储设备发送数据存储请求;此时,分布式存储设备也就接收到了数据存储请求,由于数据存储请求用于请求将第二待存储数据存储至分布式存储设备中,从而,分布式存储设备响应于数据存储请求,将第二待存储数据存储在分布式存储设备的本地,也就完成了第二任务对应的第二待存储数据的存储。
需要说明的是,运行的挂载客户端即是挂载的虚拟磁盘,数据存储设备采用在本地磁盘存储数据的方式,将第二待存储数据存储至运行的挂载客户端中,以通过运行的挂载客户端将第二待存储数据存储至分布式存储设备中。
还需要说明的是,执行第一任务时所产生的第一待存储数据可以存储于数据存储设备的本地磁盘中,还可以存储于其他设备上,本申请实施例对此不作限定;另外,当执行第一任务时所产生的第一待存储数据存储于其他设备上时,该其他设备可以是不同于分布式存储设备的设备;而在分布式存储设备的存储空间足够大时,该其他设备也可以是分布式存储设备。
示例性地,参见图5,图5是本申请实施例提供的一种示例性的数据存储方法的实现示意图;如图5所示,数据存储设备5-1中安装有挂载客户端5-11,数据存储设备5-1执行第一任务5-21时,将所产生的第一待存储数据存储至数据存储设备5-1的本地磁盘5-12中;数据存储设备5-1执行第二任务5-22时,将所产生的第二待存储数据通过挂载客户端5-11存储至分布式存储设备5-3中。
可以理解的是,在实现混部的数据存储设备上,通过挂载客户端实现虚拟磁盘的挂载,使得执行较低优先级的第二任务时所产生的第二待存储数据能够存储至分布式存储设备,进而与数据存储设备上执行第一任务时所产生的第一待存储数据在本地磁盘的存储隔离开来;也就是说,第一任务的第一待存储数据的存储与第二任务的第二待存储数据的存储是独立的,互不影响的,因此,能够提升混部的实现效果。另外,通过挂载客户端,能够满足第二任务的第二待存储数据的存储需求,进而,能够提升第二任务的适用性和数据存储设备的资源利用率。
参见图6,图6是本申请实施例提供的数据存储方法的另一个可选的流程示意图;如图6所示,在本申请实施例中,S403之后还包括S404至S406;也就是说,通过运行的挂载客户端,向分布式存储设备发送携带第二待存储数据的数据存储请求之后,该数据存储方法还包括S404至S406,下面对各步骤分别进行说明。
S404、检测数据存储请求对应的存储状态。
需要说明的是,数据存储设备通过运行的挂载客户端向分布式存储设备发送数据存储请求之后,数据存储设备对该数据存储请求进行监听,以检测数据存储请求对应的状态,也就获得了存储状态。也就是说,存储状态是数据存储请求的处理状态,比如,可以是进程状态,又比如,还可以是线程状态。
S405、统计存储状态为不可中断的睡眠状态的状态数量。
在本申请实施例中,数据存储设备对存储状态进行判断,如果确定存储状态为不可中断的睡眠状态,表明分布式存储设备未完成对数据存储请求的响应,从而此时在状态的数量上进行加一计算,以统计出存储状态为不可中断的睡眠状态的状态数量。
需要说明的是,不可中断的睡眠状态是指数据存储设备向分布式存储设备发送数据存储请求之后,未收到数据存储设备的回复的状态,比如,“UNINTE RRUPTIBLE”状态。
这里,还可通过获取资源限制的数据来获取状态数量。在资源限制的数据中,包括各种存储状态的数量。
S406、当状态数量大于数量阈值时,停止调度下一第二任务。
需要说明的是,状态数量与分布式存储设备的稳定性负相关,状态数量越大,分布式存储设备的稳定性越低;状态数量越小,分布式存储设备的稳定性越高。这里,用预设的数量阈值衡量分布式存储设备的稳定性;当状态数量大于数量阈值时,表明分布式存储设备的稳定性较低,不能满足数据存储设备的数据存储需求,从而此时,数据存储设备停止对下一第二任务进行调度;而当状态数量小于或等于数量阈值时,表明分布式存储设备的稳定性较高,能够满足数据存储设备的数据存储需求,从而此时,数据存储设备对下一第二任务进行调度。
可以理解的是,数据存储设备通过运行挂载客户端,实现了虚拟磁盘的挂载;由于通过挂载虚拟磁盘实现第二任务的第二待存储数据的存储时,分布式存储设备的稳定性是影响第二待存储数据的存储的重要因素,因此,通过检测存储状态,并统计存储状态为不可中断的睡眠状态的状态数量,在状态数量大于数量阈值时停止第二任务的调度,能够确保数据存储设备的正常工作。
在本申请实施例中,S405之后还包括S407;也就是说,数据存储设备统计存储状态为不可中断的睡眠状态的状态数量之后,该数据存储方法还包括S407,下面对该步骤进行说明。
S407、当状态数量大于数量阈值时,降低第二任务的磁盘读写速率。
在本申请实施例中,数据存储设备在确定状态数量大于数量阈值时,还可以继续执行当前正在执行的第二任务,但对第二任务的磁盘读写速率进行降低,以减少状态数量,从而降低分布式存储设备的负载,确保数据存储设备的正常工作。
在本申请实施例中,S405之后还包括S408和S409;也就是说,数据存储设备统计存储状态为不可中断的睡眠状态的状态数量之后,该数据存储方法还包括S408和S409,下面对该步骤进行说明。
S408、当状态数量大于数量阈值时,生成告警提示信息。
在本申请实施例中,数据存储设备在确定状态数量大于数量阈值时,还可以生成告警提示信息;其中,告警提示信息为用于提示分布式存储设备的工作异常的信息。
S409、展示告警提示信息。
需要说明的是,数据存储设备通过展示告警提示信息,以提示分布式存储设备的工作异常。
在本申请实施例中,S408和S409,S406,以及S407三者中,数据存储设备可以都执行,也可以只执行其中一个,还可以执行其中两个,本申请实施例对此不作限定。
在本申请实施例中,S406之后还包括S410和S411;也就是说,当状态数量大于数量阈值时,数据存储设备停止调度下一第二任务之后,该数据存储方法还包括S410和S411,下面对各步骤分别进行说明。
S410、获取状态数量的更新信息,并基于状态数量的更新信息确定更新状态数量。
需要说明的是,如果存储状态由不可中断的睡眠状态转变为能够继续进行处理的状态(比如,运行状态,睡眠状态,或停止状态等),或者不可中断的睡眠状态的数量增加了,则表明状态数量发生了更新;从而,数据存储状态获取状态数量的更新信息,即状态数量的增减信息,并根据状态数量的更新信息确定当前的状态数量,该当前的状态数量即更新状态数量。
S411、当更新状态数量小于或等于数量阈值时,调度下一第二任务。
在本申请实施例中,当状态数量的更新信息为状态数量的减信息时,如果更新状态数量小于或等于数量阈值,则可以继续进行下一第二任务的调度。
在本申请实施例中,S410之后还包括S412;也就是说,数据存储设备基于状态数量的更新信息确定更新状态数量之后,该数据存储方法还包括S412,下面对该步骤进行说明。
S412、当更新状态数量小于或等于数量阈值时,恢复第二任务的磁盘读写速率。
需要说明的是,如果状态数量大于数量阈值时,数据存储设备降低了第二任务的磁盘读写速率,即数据存储设备执行了S407时,则当更新状态数量小于或等于数量阈值时,恢复第二任务的磁盘读写速率。
在本申请实施例中,S410之后还包括S413;也就是说,数据存储设备基于状态数量的更新信息确定更新状态数量之后,该数据存储方法还包括S413和S414,下面对该步骤进行说明。
S413、当更新状态数量小于或等于数量阈值时,生成恢复提示信息。
S414、展示恢复提示信息。
需要说明的是,恢复提示信息为用于提示分布式存储设备的工作恢复正常的信息;如果状态数量大于数量阈值时,数据存储设备展示了告警提示信息,即数据存储设备执行了S408和S409时,则当更新状态数量小于或等于数量阈值时,展示恢复提示信息;通过展示恢复提示信息,以提示分布式存储设备的工作已恢复正常。
可以理解的是,通过运行挂载客户端,实现分布式存储虚拟磁盘的挂载,比如,“CEPH”的“RBD”盘,能够扩展本地磁盘的存储空间,充分利用空闲的CPU或内存资源,提升混部的的资源利用率;同时还能够提高第二任务的通用性。
参见图7,图7是本申请实施例提供的数据存储方法的又一个可选的流程示意图;如图7所示,在本申请实施例中,S402之前还包括S415至S418;也就是说,数据存储设备获取执行第二任务时所产生的第二待存储数据之前,该数据存储方法还包括S415至S418,下面对各步骤分别进行说明。
S415、获取第一任务对应的磁盘空间占用量。
在本申请实施例中,数据存储设备可以通过虚拟磁盘挂载实现第一任务和第二任务的独立存储,解决混部过程中的存储空间的竞争问题;还可以通过对第二任务在本地磁盘的存储空间量进行限制,解决混部过程中的存储空间的竞争问题。这里,数据存储设备对第二任务在本地磁盘的存储空间量进行限制时,先获取第一任务对应的磁盘空间占用量,即第一待存储数据在本地磁盘存储时的占用量。
S416、结合磁盘空间占用量和磁盘总空间量,确定磁盘空闲空间量。
需要说明的是,数据存储设备可以将磁盘总空间量与磁盘空间占用量之间的磁盘空间量差,确定为磁盘空闲空间量;还可以将磁盘空间量差中除去磁盘预留空间量之后确定为磁盘空闲空间量;本申请实施例对此不作限定。其中,磁盘总空间量为本地磁盘的空间量。
S417、在调度第二任务时,创建与第二任务关联的本地存储目录。
在本申请实施例中,数据存储设备在调度第二任务时,创建用于存储第二任务对应的数据的存储目录,也就完成与第二任务关联的本地存储目录的创建。
S418、基于磁盘空闲空间量,生成本地存储目录的空间量限制信息。
需要说明的是,数据存储设备将磁盘空闲空间量作为本地存储目录的磁盘空间的最大配额,以限制存储本地存储目录的数据量;其中,本地存储目录的磁盘空间的最大配额即空间量限制信息。
继续参见图7,在本申请实施例中,S402之后还包括S419;也就是说,数据存储设备获取执行第二任务时所产生的第二待存储数据之后,该数据存储方法还包括S419,下面对该步骤进行说明。
S419、基于空间量限制信息,在本地存储目录中存储第二待存储数据。
需要说明的是,数据存储设备在获得了执行第二任务时所产生的第二待存储数据之后,向本地存储目录中存储该第二待存储数据时,如果数据存储设备确定将第二待存储数据存储至本地存储目录之后,本地存储目录的数据的总的磁盘占用量小于或等于空间量限制信息中的磁盘空闲空间量,则将第二待存储数据存储在本地存储目录中;如果数据存储设备确定将第二待存储数据存储至本地存储目录之后,本地存储目录的数据的总的磁盘占用量大于空间量限制信息中的磁盘空闲空间量,则不再将第二待存储数据存储在本地存储目录中。
在本申请实施例中,S416之后还包括S420和S421;也就是说,数据存储设备结合磁盘空间占用量和磁盘总空间量,确定磁盘空闲空间量之后,该数据存储方法还包括S420和S421,下面对各步骤分别进行说明。
S420、获取第一任务对应的下一磁盘空间占用量。
需要说明的是,数据存储设备基于第一任务对应的第一待存储数据在本地磁盘的实时占用量,动态地调整空间量限制信息的最大配额;从而,数据存储设备周期性地或者事件触发式地获取第一任务对应的磁盘空间占用量。这里,下一磁盘空间占用量,是在磁盘空间占用量获取之后,又获得的最新的磁盘空间占用量。
S421、结合下一磁盘空间占用量和磁盘总空间量,更新磁盘空闲空间量。
需要说明的是,数据存储设备结合下一磁盘空间占用量和磁盘总空间量,更新磁盘空闲空间量,使得到更新后的磁盘空闲空间量具有实时性。
相应地,在本申请实施例中,S418中数据存储设备基于磁盘空闲空间量,生成本地存储目录的空间量限制信息,包括:数据存储设备基于更新后的磁盘空闲空间量,生成本地存储目录的空间量限制信息,使得空间量限制信息中的最大配额是与第一任务的数据在本地磁盘的占用量动态相关的。
可以理解的是,数据存储设备通过动态地获取第一任务的数据在本地磁盘的占用量,动态地对第二任务的数据在本次磁盘的存储进行控制,能够解决第一任务和第二任务在数据存储上存在的竞争问题。
在本申请实施例中,S417可通过S4171至S4173实现;也就是说,数据存储设备在调度第二任务时,创建与第二任务关联的本地存储目录,包括S4171至S4173,下面对各步骤分别进行说明。
S4171、在调度第二任务时,构建第二任务对应的容器。
需要说明的是,第二任务是以容器的形式执行的;从而,数据存储设备在调度第二任务时,构建第二任务对应的容器,以执行第二任务。
S4172、创建至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录。
需要说明的是,数据存储设备在本地磁盘中创建的存储目录包括至少一个数据存储目录,并且,至少一个数据存储目录中的每个数据存储目录对应至少一个子数据存储目录。
S4173、将至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,挂载至第二任务对应的容器中,得到本地存储目录。
在本申请实施例中,数据存储设备将至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,挂载至第二任务对应的容器中,如此,至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录也就建立了与第二任务的关联,从而,数据存储设备也就完成了与第二任务关联的本地存储目录的创建。也就是说,挂载至第二任务对应的容器中的至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录即是本地存储目录。
在本申请实施例中,S418可通过S4181和S4182实现;也就是说,数据存储设备基于磁盘空闲空间量,生成本地存储目录的空间量限制信息,包括S4181和S4182,下面对各步骤分别进行说明。
S4181、基于磁盘空闲空间量,生成空间量限制信息。
需要说明的是,数据存储设备将磁盘空闲空间量作为最大配额来生成空间限制信息。
S4182、针对本地存储目录中的至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,建立与空间量限制信息的关联。
需要说明的是,数据存储设备将本地存储目录中的至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,均与空间量限制信息建立关联,以实现对空间量限制信息的共享。也就是说,空间量限制信息用于限制至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录的总存储量。
可以理解的是,至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,共享一个空间量限制信息,对第二任务的数据的存储能够实现有效且准确的限制。
在本申请实施例中,S419可通过S4191至S4194实现;也就是说,数据存储设备基于空间量限制信息,在本地存储目录中存储第二待存储数据,包括S4191至S4194,下面对各步骤分别进行说明。
S4191、获取本地存储目录中的已存储空间量。
需要说明的是,数据存储设备统计本地存储目录中的所有存储目录所存储的数据量,也就获得了已存储空间量;易知,已存储空间量为所有第二任务对应的数据在本地存储目录的存储量。
S4192、基于空间量限制信息对应的磁盘空闲空间量和已存储空间量,确定可存储空间量。
在本申请实施例中,数据存储设备获得的磁盘空闲空间量和已存储空间量之间的差,即可存储空间量;也就是说,可存储空间量是指本地存储目录中用于存储第二任务的数据的空闲空间量。
S4193、当第二待存储数据对应的存储空间量小于或等于可存储空间量时,将第二待存储数据存储至本地存储目录中。
需要说明的是,当第二待存储数据对应的存储空间量小于或等于可存储空间量时,表明本地存储目录能够存储第二待存储数据,从而,数据存储设备将第二待存储数据存储至本地存储目录中。
S4194、当第二待存储数据对应的存储空间量大于可存储空间量时,结束第二待存储数据在本地存储目录中的数据存储流程。
需要说明的是,当第二待存储数据对应的存储空间量大于可存储空间量时,表明本地存储目录的存储空间不足够,无法满足第二待存储数据的存储,从而,数据存储设备结束第二待存储数据在本地存储目录中的数据存储流程;此时,还可以生成空间已满的提示信息,并将该空间已满的提示信息展示出来,以提示本地存储目录的磁盘空间已满。
可以理解的是,在实现混部的过程中,通过对第二任务的磁盘空间使用进行管理,防止第二任务使用过多的磁盘空间而影响第一任务的正常运行;使得第二任务共享本地磁盘的分区的磁盘空间资源,但第二任务所使用的空间量是基于第一任务的空间使用量确定的,以确保第一任务的正常运行。
参见图8,图8是本申请实施例提供的数据存储方法的再一个可选的流程示意图;如图8所示,在本申请实施例中,S402之前还包括S422;也就是说,数据存储设备获取执行第二任务时所产生的第二待存储数据之前,该数据存储方法还包括S422,下面对该步骤分别进行说明。
S422、建立与远程存储设备之间的存储关联关系。
需要说明的是,数据存储设备通过建立与远程存储设备之间的存储关联关系,以通过该存储关联关系存储第二任务对应的第二待存储数据。其中,远程存储设备可以是文件存储形式的存储设备,还可以是对象存储形式的存储设备,又可以是计算存储分离的存储设备,等等,本申请实施例对此不作限定。
继续参见图8,S402之后还包括S423;也就是说,数据存储设备获取执行第二任务时所产生的第二待存储数据之后,该数据存储方法还包括S423,下面对该步骤进行说明。
S423、基于存储关联关系,向远程存储设备发送携带第二待存储数据的远程存储请求,以使远程存储设备响应于远程存储请求,将第二待存储数据存储至远程存储设备中。
需要说明的是,数据存储设备基于存储关联关系,向远程存储设备发送携带第二待存储数据的远程存储请求;此时,远程存储设备也就接收到了该远程存储请求,又由于远程存储请求为在远程存储设备上存储第二待存储数据的请求,从而,远程存储设备响应于远程存储请求,将第二待存储数据存储至远程存储设备中。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
参见图9,图9是本申请实施例提供的一种示例性的数据存储方法的架构示意图;如图9所示,在混部宿主机9-1(数据存储设备)中,新增代理组件9-11,用于动态地获取本地磁盘9-12的分区中在线任务9-13(第一任务)的磁盘空间使用情况9-14(磁盘空间占用量);进而更新离线任务9-15(第二任务)的磁盘可用空间量9-16(磁盘空闲空间量);以及,基于磁盘可用空间量9-16对离线任务9-15的磁盘空间使用进行管理,即针对离线任务9-15对应的离线目录9-17(本地存储目录,示例性地示出了“HostPath”存储目录9-171、“Ho stPath”存储目录9-172、“EmptyDir”存储目录9-173和“EmptyDir”存储目录9-174),利用磁盘配额管理9-18(DiskQuota)的项目配额管理(project quota)功能限制离线目录9-17的磁盘空间使用量为磁盘可用空间量9-16(也就获得了上述空间量限制信息),同时为离线目录9-17生成一个项目标识(project id),该离线目录9-17下创建的所有存储目录(至少一个数据存储目录)、以及每个存储目录的子存储目录(至少一个子数据存储目录)均继承同一个项目标识,共同受磁盘可用空间量9-16的限制,以实现限制的共享。如此,离线任务9-15的离线目录9-17的可使用的磁盘空间大小,由在线任务9-13的磁盘空间使用情况9-14决定。其中,离线目录9-17是通过在本地磁盘9-12的分区中创建存储目录,并将创建的存储目录挂载到离线任务9-15所在的容器中获得的,离线任务9-15在容器内部就可以像访问本地磁盘的存储目录一样,使用离线目录9-17进行读写操作。
需要说明的是,由于混部宿主机是基于“kubenretes”实现的混部,从而,将“DiskQuota”作用于“kubenretes”的“EmptyDir”类型的存储目录和“Hos tPath”的存储目录,基本覆盖了“kubenretes”主流的存储目录挂载形式。
可以理解的是,通过获取在线任务的磁盘空间使用情况,来调整离线任务的磁盘空间可用值,以采用“DiskQuota”功能限制离线任务的磁盘空间使用值,解决了混部中离线任务和在线任务在数据存储方面的竞争问题。另外,离线目录的各个存储目录不是单独限制,而是共享同一限制,避免离线任务使用过多磁盘资源。以及,通过“DiskQuota”对离线任务进行限制的处理,对业务完全透明,业务无需做任何改动。
参见图10,图10是本申请实施例提供的另一种示例性的数据存储方法的架构示意图;如图10所示,混部宿主机10-1(数据存储设备)用于执行在线任务10-11(第一任务),还用于执行离线任务10-12(第二任务,示例性的示出了离线任务10-121、离线任务10-122和离线任务10-123)。其中,在线任务10-11在执行时产生的数据10-31(第一待存储数据)存储在本地磁盘10-4中;离线任务10-12在执行时产生的数据10-32(第二待存储数据)存储在分布式存储虚拟盘10-5(挂载客户端,比如为“Ceph”集群中的块存储实现形式“RBD”)中,而分布式存储虚拟盘10-5再将数据10-32存储至后端分布式存储服务设备10-6(分布式存储设备,比如为“Ceph”集群)中。
可以理解的是,由于离线任务运行过程中一般需要大量的磁盘空间,用于存储计算中的临时数据,若由于混部宿主机剩余的空闲磁盘空间较少而不能满足离线任务的存储需求时,则只能混部少量的离线任务;如此,未能充分利用空闲的CPU和内存资源,对混部效果的提升有限。针对磁盘空间的瓶颈问题,本申请实施例采用挂载分布式存储虚拟盘的方式,在混部宿主机上动态挂载一个任意容量大小的或与离线任务的数据存储量适配的虚拟磁盘,用于存储离线任务在执行时产生的数据,这对于离线任务是完全无感知的。继续参见图9,离线任务的数据存储和在线任务的数据存储是完全隔离的,无需配置空间量限制信息;并且,能够解决磁盘空间不足问题,可根据离线任务的存储需求,任意扩展。
需要说明的是,采用挂载分布式存储虚拟盘的方式,在混部宿主机上动态挂载虚拟磁盘时,往往会出现存储后端分布式存储服务设备不稳定的问题;若后端分布式存储服务设备不稳定,则混部宿主机上会因为离线任务的离线进程发送的输入/输出数据没有返回消息而卡住,随着离线任务的不断调度,堆积的离线任务的进程越来越多,最终会影响混部宿主机的稳定性。针对存储后端分布式存储服务设备不稳定的问题,参见图11,图11是本申请实施例提供的一种示例性的基于存储状态调整第二任务的执行的流程示意图;如图11所示,该示例性的基于存储状态调整第二任务的执行的流程包括:
S1101、获取离线进程的控制组。
需要说明的是,离线任务处于“cgroup”中,离线进程的控制组是指离线进程的“cgroup”。
S1102、获取内核的控制组状态数据。
需要说明的是,混部宿主机基于获取的离线进程的“cgroup”,获取内核的控制组状态数据(“cgroupstats”数据);这里,混部宿主机通过“Netlink”机制获取内核的“cgroupstats”数据。
S1103、获取D状态进程的数量(状态数量)。
需要说明的是,混部宿主机从控制组状态数据中获取D状态(UNINTERR UPTIBLE,不可中断的睡眠状态)进程的数量。
还需要说明的是,离线进程发送的输入/输出数据没有返回消息,离线进程会处于D状态,混部宿主机从内核的控制组状态数据(“cgroupstats”数据)中,获取D状态进程的数量。其中,“cgroupstats”数据可通过以下代码描述:
Figure BDA0003186159730000251
其中,“__u64 nr_sleeping”是指睡眠状态的离线进程的数量;“__u64 n r_running”是指运行状态的离线进程的数量;“__u64 nr_stopped”是指停止状态的离线进程的数量;“__u64 nr_uninterruptible”是指D状态的离线进程的数量;“__u64 nr_io_wait”是指等待状态的离线进程的数量。
S1104、判断D状态进程的数量是否大于阈值(数量阈值)。如果是则执行S1105,如果否则执行S1108。
这里,如果D状态进程数量大于阈值,表明后端分布式存储服务设备不稳定;如果D状态进程数量小于或等于阈值,表明后端分布式存储服务设备稳定,即使当前已有少量的D状态进程堆积,但不影响在线任务正常运行。
S1105、停止调度离线任务。
需要说明的是,在后端分布式存储服务设备不稳定时,混部宿主机采取禁止调度离线任务的策略,冻结离线任务调度,避免接收更多的离线任务,对后端分布式存储服务设备造成更大的压力。
S1106、限速挂载的虚拟磁盘。
需要说明的是,在后端分布式存储服务设备不稳定时,对于还在运行的离线任务,还是会继续产生输入/输出读写操作,混部宿主机还采用对挂载盘限速的方式,减缓输入/输出数据的产生,以减缓后端分布式存储服务设备压力。
这里,混部宿主机采用“Blkio cgroup”对挂载的虚拟磁盘进行限速,可以对“cgroup”根目录进行速率配置(比如,针对“cgroup”的版本1进行限速时),还可以对离线任务所在的各个“cgroup”目录进行速率配置(比如,针对“cgr oup”的版本2进行限速时)。通过进行速率配置的速率进行限制,降低当前正在运行的离线任务产生的输入/输出数据的读写操作的速率,以降低后端分布式存储服务设备的压力。
S1107、发送告警信息(告警提示信息)。继续执行S1102。
需要说明的是,混部宿主机发送告警信息,以通知人为参与解决。
S1108、恢复离线任务的调度。
需要说明的是,待后端分布式存储服务设备恢复后,D状态进程会自动恢复;待D状态进程解除后,再重新开启离线任务的调度。
S1109、恢复挂载的虚拟磁盘的速率。继续执行S1102。
需要说明的是,待D状态进程解除后,解除输入/输出数据的读写操作的速率限制,恢复输入/输出数据的读写操作的。
在本申请实施例中,后续随着存储计算分离技术(比如,Remote ShuffleService)的发展,离线任务对应的数据存储可直接访问远程即可实现存储。
可以理解的是,在基于“kubernetes”的混部宿主机中,通过“DiskQuota”功能限制离线任务的磁盘空间使用,避免与在线任务形成存储资源的竞争。还可以通过挂载分布式存储虚拟磁盘的方式,给离线任务一个足够大的存储空间,充分利用空闲的CPU和内存资源;同时,采用挂载分布式存储虚拟磁盘的方式,不再局限于部署磁盘空间需求量少的离线任务,从而,能够扩展离线任务的适用范围,拓宽混部的场景。
下面继续说明本申请实施例提供的数据存储装置255的实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器250的数据存储装置255中的软件模块可以包括:
任务执行模块2551,用于执行第一任务,并将执行所述第一任务时所产生的第一待存储数据存储至所述数据存储设备的本地磁盘;
客户端运行模块2552,用于运行挂载客户端,其中,所述挂载客户端用于向分布式存储设备存储数据;
数据获取模块2553,用于获取执行第二任务时所产生的第二待存储数据,其中,所述第二任务的优先级低于所述第一任务的优先级;
数据存储模块2554,用于通过运行的所述挂载客户端,向所述分布式存储设备发送携带所述第二待存储数据的数据存储请求,以使所述分布式存储设备响应于所述数据存储请求,将所述第二待存储数据存储至所述分布式存储设备中。
在本申请实施例中,所述数据存储装置255还包括状态检测模块2555,用于检测所述数据存储请求对应的存储状态;统计所述存储状态为不可中断的睡眠状态的状态数量;当所述状态数量大于数量阈值时,停止调度下一第二任务。
在本申请实施例中,所述状态检测模块2555,还用于当所述状态数量大于所述数量阈值时,降低所述第二任务的磁盘读写速率。
在本申请实施例中,所述状态检测模块2555,还用于当所述状态数量大于所述数量阈值时,生成告警提示信息,其中,所述告警提示信息为用于提示所述分布式存储设备的工作异常的信息;展示所述告警提示信息。
在本申请实施例中,所述状态检测模块2555,还用于获取所述状态数量的更新信息,并基于所述状态数量的更新信息确定更新状态数量;当所述更新状态数量小于或等于所述数量阈值时,调度所述下一第二任务。
在本申请实施例中,所述状态检测模块2555,还用于当所述更新状态数量小于或等于所述数量阈值时,恢复所述第二任务的磁盘读写速率。
在本申请实施例中,所述状态检测模块2555,还用于当所述更新状态数量小于或等于所述数量阈值时,生成恢复提示信息,其中,所述恢复提示信息为用于提示所述分布式存储设备的工作恢复正常的信息;展示所述恢复提示信息。
在本申请实施例中,所述数据存储装置255还包括空间限制模块2556,用于获取所述第一任务对应的磁盘空间占用量;结合所述磁盘空间占用量和磁盘总空间量,确定磁盘空闲空间量,其中,所述磁盘总空间量为所述本地磁盘的空间量;在调度所述第二任务时,创建与所述第二任务关联的本地存储目录;基于所述磁盘空闲空间量,生成所述本地存储目录的空间量限制信息。
在本申请实施例中,所述空间限制模块2556,还用于基于所述空间量限制信息,在所述本地存储目录中存储所述第二待存储数据。
在本申请实施例中,所述空间限制模块2556,还用于获取所述第一任务对应的下一磁盘空间占用量;结合所述下一磁盘空间占用量和所述磁盘总空间量,更新所述磁盘空闲空间量。
在本申请实施例中,所述空间限制模块2556,还用于基于更新后的磁盘空闲空间量,生成所述本地存储目录的所述空间量限制信息。
在本申请实施例中,所述空间限制模块2556,还用于在调度所述第二任务时,构建所述第二任务对应的容器;创建至少一个数据存储目录、以及每个所述数据存储目录对应的至少一个子数据存储目录;将至少一个所述数据存储目录、以及每个所述数据存储目录对应的至少一个所述子数据存储目录,挂载至所述第二任务对应的容器中,得到所述本地存储目录。
在本申请实施例中,所述空间限制模块2556,还用于基于所述磁盘空闲空间量,生成所述空间量限制信息;针对所述本地存储目录中的至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,建立与所述空间量限制信息的关联。
在本申请实施例中,所述空间限制模块2556,还用于获取所述本地存储目录中的已存储空间量;基于所述空间量限制信息对应的所述磁盘空闲空间量和所述已存储空间量,确定可存储空间量;当所述第二待存储数据对应的存储空间量小于或等于所述可存储空间量时,将所述第二待存储数据存储至所述本地存储目录中;当所述第二待存储数据对应的存储空间量大于所述可存储空间量时,结束所述第二待存储数据在所述本地存储目录中的数据存储流程。
在本申请实施例中,所述数据存储装置255还包括远程存储模块2557,用于建立与远程存储设备之间的存储关联关系。
在本申请实施例中,所述远程存储模块2557,还用于基于所述存储关联关系,向所述远程存储设备发送携带所述第二待存储数据的远程存储请求,以使所述远程存储设备响应于所述远程存储请求,将所述第二待存储数据存储至所述远程存储设备中。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据存储方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据存储方法,例如,如图4示出的数据存储方法。
在本申请的一些实施例中,计算机可读存储介质可以是FRAM、ROM、P ROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在本申请的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件***中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(H TML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算机设备上执行(此时,这一个计算机设备即数据存储设备),或者在位于一个地点的多个计算机设备上执行(此时,位于一个地点的多个计算机设备即数据存储设备),又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行(此时,分布在多个地点且通过通信网络互连的多个计算机设备即数据存储设备)。
综上所述,本申请实施例在实现混部的数据存储设备上,通过挂载客户端实现虚拟磁盘的挂载,使得执行较低优先级的第二任务时所产生的第二待存储数据能够存储至分布式存储设备,进而与数据存储设备上执行第一任务时所产生的第一待存储数据在本地磁盘的存储隔离开来;也就是说,第一任务的第一待存储数据的存储与第二任务的第二待存储数据的存储是独立的,互不影响的,因此,能够提升混部的实现效果。另外,通过挂载客户端,能够满足第二任务的第二待存储数据的存储需求,进而,能够提升第二任务的适用性和数据存储设备的资源利用率。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (15)

1.一种数据存储方法,应用于数据存储设备,其特征在于,所述数据存储设备用于执行第一任务,所述数据存储设备的本地磁盘用于存储第一待存储数据,所述第一待存储数据是执行所述第一任务时所产生的数据,包括:
运行挂载客户端,其中,所述挂载客户端用于向分布式存储设备存储数据;
获取执行第二任务时所产生的第二待存储数据,其中,所述第二任务的优先级低于所述第一任务的优先级;
通过运行的所述挂载客户端,向所述分布式存储设备发送携带所述第二待存储数据的数据存储请求,以使
所述分布式存储设备响应于所述数据存储请求,将所述第二待存储数据存储至所述分布式存储设备中。
2.根据权利要求1所述的方法,其特征在于,所述通过运行的所述挂载客户端,向所述分布式存储设备发送携带所述第二待存储数据的数据存储请求之后,所述方法还包括:
检测所述数据存储请求对应的存储状态;
统计所述存储状态为不可中断的睡眠状态的状态数量;
当所述状态数量大于数量阈值时,停止调度下一第二任务。
3.根据权利要求2所述的方法,其特征在于,所述统计所述存储状态为不可中断的睡眠状态的状态数量之后,所述方法还包括:
当所述状态数量大于所述数量阈值时,降低所述第二任务的磁盘读写速率。
4.根据权利要求2或3所述的方法,其特征在于,所述统计所述存储状态为不可中断的睡眠状态的状态数量之后,所述方法还包括:
当所述状态数量大于所述数量阈值时,生成告警提示信息,其中,所述告警提示信息为用于提示所述分布式存储设备的工作异常的信息;
展示所述告警提示信息。
5.根据权利要求2或3所述的方法,其特征在于,所述当所述状态数量大于数量阈值时,停止调度下一第二任务之后,所述方法还包括:
获取所述状态数量的更新信息,并基于所述状态数量的更新信息确定更新状态数量;
当所述更新状态数量小于或等于所述数量阈值时,调度所述下一第二任务。
6.根据权利要求5所述的方法,其特征在于,所述基于所述状态数量的更新信息确定更新状态数量之后,所述方法还包括:
当所述更新状态数量小于或等于所述数量阈值时,恢复所述第二任务的磁盘读写速率。
7.根据权利要求5或6所述的方法,其特征在于,所述基于所述状态数量的更新信息确定更新状态数量之后,所述方法还包括:
当所述更新状态数量小于或等于所述数量阈值时,生成恢复提示信息,其中,所述恢复提示信息为用于提示所述分布式存储设备的工作恢复正常的信息;
展示所述恢复提示信息。
8.根据权利要求1所述的方法,其特征在于,所述获取执行第二任务时所产生的第二待存储数据之前,所述方法还包括:
获取所述第一任务对应的磁盘空间占用量;
结合所述磁盘空间占用量和磁盘总空间量,确定磁盘空闲空间量,其中,所述磁盘总空间量为所述本地磁盘的空间量;
在调度所述第二任务时,创建与所述第二任务关联的本地存储目录;
基于所述磁盘空闲空间量,生成所述本地存储目录的空间量限制信息;
所述获取执行第二任务时所产生的第二待存储数据之后,所述方法还包括:
基于所述空间量限制信息,在所述本地存储目录中存储所述第二待存储数据。
9.根据权利要求8所述的方法,其特征在于,所述结合所述磁盘空间占用量和磁盘总空间量,确定磁盘空闲空间量之后,所述方法还包括:
获取所述第一任务对应的下一磁盘空间占用量;
结合所述下一磁盘空间占用量和所述磁盘总空间量,更新所述磁盘空闲空间量;
所述基于所述磁盘空闲空间量,生成所述本地存储目录的空间量限制信息,包括:
基于更新后的磁盘空闲空间量,生成所述本地存储目录的所述空间量限制信息。
10.根据权利要求8或9所述的方法,其特征在于,所述在调度所述第二任务时,创建与所述第二任务关联的本地存储目录,包括:
在调度所述第二任务时,构建所述第二任务对应的容器;
创建至少一个数据存储目录、以及每个所述数据存储目录对应的至少一个子数据存储目录;
将至少一个所述数据存储目录、以及每个所述数据存储目录对应的至少一个所述子数据存储目录,挂载至所述第二任务对应的容器中,得到所述本地存储目录。
11.根据权利要求8或9所述的方法,其特征在于,所述基于所述磁盘空闲空间量,生成所述本地存储目录的空间量限制信息,包括:
基于所述磁盘空闲空间量,生成所述空间量限制信息;
针对所述本地存储目录中的至少一个数据存储目录、以及每个数据存储目录对应的至少一个子数据存储目录,建立与所述空间量限制信息的关联。
12.根据权利要求8或9所述的方法,其特征在于,所述基于所述空间量限制信息,在所述本地存储目录中存储所述第二待存储数据,包括:
获取所述本地存储目录中的已存储空间量;
基于所述空间量限制信息对应的所述磁盘空闲空间量和所述已存储空间量,确定可存储空间量;
当所述第二待存储数据对应的存储空间量小于或等于所述可存储空间量时,将所述第二待存储数据存储至所述本地存储目录中;
当所述第二待存储数据对应的存储空间量大于所述可存储空间量时,结束所述第二待存储数据在所述本地存储目录中的数据存储流程。
13.根据权利要求1所述的方法,其特征在于,所述获取执行第二任务所产生的待存储数据之前,所述方法还包括:
建立与远程存储设备之间的存储关联关系;
所述获取执行第二任务时所产生的第二待存储数据之后,所述方法还包括:
基于所述存储关联关系,向所述远程存储设备发送携带所述第二待存储数据的远程存储请求,以使
所述远程存储设备响应于所述远程存储请求,将所述第二待存储数据存储至所述远程存储设备中。
14.一种数据存储设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至13任一项所述的数据存储方法。
15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至13任一项所述的数据存储方法。
CN202110862252.5A 2021-07-29 2021-07-29 一种数据存储方法、设备及计算机可读存储介质 Pending CN115686346A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110862252.5A CN115686346A (zh) 2021-07-29 2021-07-29 一种数据存储方法、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110862252.5A CN115686346A (zh) 2021-07-29 2021-07-29 一种数据存储方法、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN115686346A true CN115686346A (zh) 2023-02-03

Family

ID=85059049

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110862252.5A Pending CN115686346A (zh) 2021-07-29 2021-07-29 一种数据存储方法、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115686346A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257326A (zh) * 2023-05-11 2023-06-13 安徽海马云科技股份有限公司 容器存储空间的管理方法及装置
CN116627356A (zh) * 2023-07-21 2023-08-22 江苏华存电子科技有限公司 一种大容量存储数据的分布控制方法及***
CN116974473A (zh) * 2023-07-26 2023-10-31 中科驭数(北京)科技有限公司 存储空间管理方法、装置、设备及计算机可读存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257326A (zh) * 2023-05-11 2023-06-13 安徽海马云科技股份有限公司 容器存储空间的管理方法及装置
CN116257326B (zh) * 2023-05-11 2023-08-29 安徽海马云科技股份有限公司 容器存储空间的管理方法及装置
CN116627356A (zh) * 2023-07-21 2023-08-22 江苏华存电子科技有限公司 一种大容量存储数据的分布控制方法及***
CN116627356B (zh) * 2023-07-21 2023-11-14 江苏华存电子科技有限公司 一种大容量存储数据的分布控制方法及***
CN116974473A (zh) * 2023-07-26 2023-10-31 中科驭数(北京)科技有限公司 存储空间管理方法、装置、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN109565515B (zh) 分布式资源管理***中的动态租户结构调整的***、设备和过程
CN113110848B (zh) 跨应用实例的标识符
US11799952B2 (en) Computing resource discovery and allocation
CN115686346A (zh) 一种数据存储方法、设备及计算机可读存储介质
US9411646B2 (en) Booting secondary processors in multicore system using kernel images stored in private memory segments
US20200081731A1 (en) Method, system and apparatus for creating virtual machine
CN104216767B (zh) 多线程之间访问共享数据的方法及装置
CN110941481A (zh) 资源调度方法、装置及***
CN114020470B (zh) 资源分配方法、装置、可读介质及电子设备
WO2016039963A2 (en) Resource sharing between two resource allocation systems
CN110069346B (zh) 多进程间资源共享方法、装置、电子设备
CN111880936A (zh) 资源调度方法、装置、容器集群、计算机设备和存储介质
CN113382077B (zh) 微服务调度方法、装置、计算机设备和存储介质
US20190227918A1 (en) Method for allocating memory resources, chip and non-transitory readable medium
CN108073423A (zh) 一种加速器加载方法、***和加速器加载装置
US11777991B2 (en) Forecast-based permissions recommendations
CN113674131A (zh) 硬件加速器设备管理方法、装置及电子设备和存储介质
CN113204353A (zh) 一种大数据平台组件部署方法及装置
CN116166395A (zh) 任务调度方法、装置、介质及电子设备
CN114625533A (zh) 分布式任务调度方法、装置、电子设备及存储介质
CN117130571A (zh) 基于多核异构***的显示方法、设备、芯片、存储介质
CN108345496B (zh) 一种运行应用程序的方法及装置
CN115757611A (zh) 大数据集群切换方法、装置、电子设备及存储介质
CN113886058A (zh) 一种跨集群资源调度方法和装置
CN115421787A (zh) 指令执行方法、装置、设备、***、程序产品及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40081611

Country of ref document: HK