本技术涉及云计算,特别涉及一种硬盘io控制方法、产品、设备及存储介质。
背景技术:
1、随着大数据与云计算技术的蓬勃发展,具备计算、网络和存储功能的openstack云平台得到了广泛的应用。openstack是一个极为复杂的云管理平台,通常通过对物理机打标签,并对各个模块的角色进行划分以及高可用要求部署在不同的物理机上,并通过一系列相互协作的组件,如cinder(块存储)、glance(镜像服务)、manila(共享文件服务)、mysql(数据库)、rabbitmq(消息队列服务)、keystone(身份服务)、neutron(网络服务)、nova(计算服务)等系统组件来提供云计算服务,这些组件分别管理不同的资源类型,如计算(虚拟机)、存储(块存储和对象存储)和网络。
2、其中,cinder用于对云硬盘的生命周期进行管理,如增删改查、挂卸载、备份恢复、创建等,同时支持将云硬盘上传至镜像glance仓库。然而,在创建镜像云硬盘和上传云硬盘至镜像库的过程中,需要物理机上的本地硬盘做临时中转,将云硬盘对应的镜像下载或导出到本地硬盘,再执行下一步操作,这种方式在镜像体积较大或者高并发的场景下,会持续的对物理机的本地硬盘进行高带宽的io(输入/输出,input/output)读写,而本地硬盘在对cinder进行高带宽读写的同时,还会为其他系统组件,如mysql和rabbitmq等组件提供io服务,因此当有大规模的镜像上传或下载时,很容易导致mysql和rabbitmq等组件因为io资源的争抢或io资源获取超时而出现异常,进而导致整个云平台的服务出现异常,即运行异常,并降低了云平台及物理机操作系统的稳定性,例如,由于io资源获取超时,需要定时写mysql数据的cinder和nova等组件的服务状态变为了离线状态。
技术实现思路
1、有鉴于此,本技术的目的在于提供一种硬盘io控制方法、产品、设备及存储介质,能够使各操作对本地硬盘的io均在可控范围内,并保证有足够的io预留,从而供云平台其他系统组件和操作系统正常运行,进而保障了云平台和物理机的稳定性。其具体方案如下:
2、第一方面,本技术公开了一种硬盘io控制方法,应用于预先在openstack云平台的cinder中创建的全局io控制器,包括:
3、当监测到针对目标物理机的本地硬盘的io读写操作请求时,确定所述io读写操作请求对应的目标io操作中的多个子操作步骤;所述目标物理机上部署有所述openstack云平台;
4、获取各所述子操作步骤分别对应的存储后端的子进程;
5、利用上下文管理器对所述子进程或所述子进程对应的命令行进行修改,得到修改后进程或修改后命令行,并将所述修改后进程或所述修改后命令行添加至预先通过所述全局io控制器创建的cgroup中,以控制所述修改后进程或所述修改后命令行的io性能分配,并在所述cgroup内基于分配的io性能执行所述修改后进程或所述修改后命令行;
6、其中,所述cgroup基于所述本地硬盘的io性能上限创建,且所述cgroup的io性能基于所述io性能上限和所述cinder中的预留io比例进行分配。
7、可选的,所述硬盘io控制方法,还包括:
8、当监测到所述cinder启动时,对所述目标物理机的本地硬盘进行io性能测试,以获取所述本地硬盘的性能上限得到io性能上限,并基于所述io性能上限创建cgroup;
9、根据所述cinder的配置项中的io预留比例计算剩余io比例,并基于所述剩余io比例和所述io性能上限计算所述cgroup对应的目标io性能,并将所述目标io性能分配给所述cgroup;所述io预留比例为基于所述openstack云平台中除所述cinder外的其他系统组件的io性能需求预留的比例。
10、可选的,所述对所述目标物理机的本地硬盘进行io性能测试,以获取所述本地硬盘的性能上限得到io性能上限,包括:
11、在所述本地硬盘上创建临时文件,分别利用预设的第一数据块和第二数据块依次对所述临时文件进行数据块写入操作和数据块读取操作,以获取所述本地硬盘的写性能上限和读性能上限,得到io性能上限;所述第一数据块的大小大于所述第二数据块的大小。
12、可选的,所述基于所述io性能上限创建cgroup,包括:
13、通过linux内核提供的libcgroup工具并基于所述io性能上限创建cgroup。
14、可选的,所述对所述目标物理机的本地硬盘进行io性能测试,以获取所述本地硬盘的性能上限得到io性能上限,包括:
15、利用所述cinder的任一存储后端对应的子进程对所述目标物理机的本地硬盘进行io性能测试,以获取所述本地硬盘的性能上限,得到io性能上限。
16、可选的,所述利用所述cinder的任一存储后端对应的子进程对所述目标物理机的本地硬盘进行io性能测试的过程中,还包括:
17、利用本地锁在所述目标物理机中创建锁文件,并获取所述锁文件的操作权,以便在除所述任一存储后端对应的子进程外的其他子进程查询到所述锁文件的操作权处于非空闲状态时,跳过所述cgroup的创建流程,直接对所述其他子进程对应的存储后端进行初始化操作。
18、可选的,所述确定所述io读写操作请求对应的目标io操作中的多个子操作步骤,包括:
19、确定所述io读写操作请求对应的目标io操作;所述目标io操作为创建镜像云硬盘操作;
20、获取所述目标io操作对应的多个子操作步骤;所述子操作步骤包括镜像下载至本地步骤、本地镜像格式转换步骤及转换后镜像写入至云硬盘步骤。
21、可选的,所述确定所述io读写操作请求对应的目标io操作中的多个子操作步骤,包括:
22、确定所述io读写操作请求对应的目标io操作;所述目标io操作为云硬盘上传镜像操作;
23、获取所述目标io操作对应的多个子操作步骤;所述子操作步骤包括导出云硬盘至本地步骤、本地镜像格式转换步骤及上传转换后镜像至镜像仓库步骤。
24、可选的,所述利用上下文管理器对所述子进程或所述子进程对应的命令行进行修改,得到修改后进程或修改后命令行,并将所述修改后进程或所述修改后命令行添加至预先通过所述全局io控制器创建的cgroup中,包括:
25、利用上下文管理器在所述子进程对应的命令行前增加预设前缀,得到修改后命令行,以在执行所述修改后命令行时,自动将所述修改后命令行执行的进程加入至预先通过所述全局io控制器创建的cgroup中;所述预设前缀中包含所述cgroup相关的标识。
26、可选的,所述利用上下文管理器对所述子进程或所述子进程对应的命令行进行修改,得到修改后进程或修改后命令行,并将所述修改后进程或所述修改后命令行添加至预先通过所述全局io控制器创建的cgroup中,包括:
27、获取所述子进程的进程控制符,并利用上下文管理器将所述进程控制符添加至所述子进程中得到添加后进程,并将所述添加后进程添加至预先通过所述全局io控制器创建的cgroup中。
28、可选的,所述利用上下文管理器将所述进程控制符添加至所述子进程中得到添加后进程,并将所述添加后进程添加至预先通过所述全局io控制器创建的cgroup中,包括:
29、利用上下文管理器并通过cgclassify命令将所述进程控制符添加至所述子进程中,得到添加后进程;
30、将所述添加后进程添加至预先通过所述全局io控制器创建的cgroup中。
31、可选的,所述硬盘io控制方法,还包括:
32、当检测到所述修改后进程或所述修改后命令行执行完成后,将所述修改后进程或所述修改后命令行从所述cgroup中删除。
33、第二方面,本技术公开了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现前述的硬盘io控制方法的步骤。
34、第三方面,本技术公开了一种电子设备,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现前述的硬盘io控制方法。
35、第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述的硬盘io控制方法。
36、可见,本技术应用于预先在openstack云平台的cinder中创建的全局io控制器,当监测到针对目标物理机的本地硬盘的io读写操作请求时,先确定所述io读写操作请求对应的目标io操作中的多个子操作步骤,并获取各所述子操作步骤分别对应的存储后端的子进程,然后利用上下文管理器对所述子进程或所述子进程对应的命令行进行修改,得到修改后进程或修改后命令行,并将所述修改后进程或所述修改后命令行添加至预先通过所述全局io控制器创建的cgroup中,以控制所述修改后进程或所述修改后命令行的io性能分配,并在所述cgroup内基于分配的io性能执行所述修改后进程或所述修改后命令行;其中,所述cgroup基于所述本地硬盘的io性能上限创建,且所述cgroup的io性能基于所述io性能上限和所述cinder中的预留io比例进行分配。本技术在cinder中创建了一个全局io控制器,并预先通过该全局io控制器创建了一个cgroup,在监测到针对本地硬盘的io读写操作请求时,先确定该请求对应的目标io操作中的多个子操作步骤,然后确定各子操作步骤对应的子进程,并利用上下文管理器对各子进程或子进程对应的命令行进行修改,并将修改后进程或修改后命令行添加至cgroup中,从而控制进程或命令行的io性能分配,并在cgroup内执行相应的进程或命令行,需要指出的是,本技术中的cgroup的io性能基于本地硬盘的io性能上限和cinder中的预留io比例进行分配,可见,本技术在对io读写操作进行了拆分,并通过cgroup对各个拆分后子操作对应的进程进行了io性能分配,由于cgroup的io性能基于预留io比例进行分配,从而为其他系统组件预留了io性能,因此能够使各个子操作步骤对本地硬盘的io均在可控范围内,并保证有足够的io预留,从而供云平台其他系统组件和操作系统正常运行,进而保障了云平台和物理机的稳定性。
1.一种硬盘io控制方法,其特征在于,应用于预先在openstack云平台的cinder中创建的全局io控制器,包括:
2.根据权利要求1所述的硬盘io控制方法,其特征在于,还包括:
3.根据权利要求2所述的硬盘io控制方法,其特征在于,所述对所述目标物理机的本地硬盘进行io性能测试,以获取所述本地硬盘的性能上限得到io性能上限,包括:
4.根据权利要求2所述的硬盘io控制方法,其特征在于,所述基于所述io性能上限创建cgroup,包括:
5.根据权利要求2所述的硬盘io控制方法,其特征在于,所述对所述目标物理机的本地硬盘进行io性能测试,以获取所述本地硬盘的性能上限得到io性能上限,包括:
6.根据权利要求5所述的硬盘io控制方法,其特征在于,所述利用所述cinder的任一存储后端对应的子进程对所述目标物理机的本地硬盘进行io性能测试的过程中,还包括:
7.根据权利要求1所述的硬盘io控制方法,其特征在于,所述确定所述io读写操作请求对应的目标io操作中的多个子操作步骤,包括:
8.根据权利要求1所述的硬盘io控制方法,其特征在于,所述确定所述io读写操作请求对应的目标io操作中的多个子操作步骤,包括:
9.根据权利要求1所述的硬盘io控制方法,其特征在于,所述利用上下文管理器对所述子进程或所述子进程对应的命令行进行修改,得到修改后进程或修改后命令行,并将所述修改后进程或所述修改后命令行添加至预先通过所述全局io控制器创建的cgroup中,包括:
10.根据权利要求1所述的硬盘io控制方法,其特征在于,所述利用上下文管理器对所述子进程或所述子进程对应的命令行进行修改,得到修改后进程或修改后命令行,并将所述修改后进程或所述修改后命令行添加至预先通过所述全局io控制器创建的cgroup中,包括:
11.根据权利要求10所述的硬盘io控制方法,其特征在于,所述利用上下文管理器将所述进程控制符添加至所述子进程中得到添加后进程,并将所述添加后进程添加至预先通过所述全局io控制器创建的cgroup中,包括:
12.根据权利要求1至11任一项所述的硬盘io控制方法,其特征在于,还包括:
13.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至12任一项所述方法的步骤。
14.一种电子设备,其特征在于,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至12任一项所述的硬盘io控制方法。
15.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至12任一项所述的硬盘io控制方法。
