发明内容
基于此,有必要针对上述技术问题,提供一种能够降低云硬盘扩容难度的云硬盘的扩容方法、装置、计算机设备和存储介质。
一种云硬盘的扩容方法,所述方法包括:
获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数;
根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定;其中,所述第二持久化卷声明与扩容程序绑定;
启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容;
在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定。
在其中一个实施例中,在获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数之后,包括:根据所述云硬盘标识对所述云硬盘进行扩容。
在其中一个实施例中,在根据所述云硬盘标识对所述云硬盘进行扩容之后,包括:将扩容后的所述云硬盘挂载到云厂家的云服务器,并在所述云服务器进行登录。
在其中一个实施例中,所述云硬盘的扩容请求在可自定义的资源对象中进行定义。
在其中一个实施例中,所述获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数,包括:实时监控所述可自定义的资源对象,并获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数。
在其中一个实施例中,所述根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定,包括:根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定;启动扩容文件系统的容器组;其中,所述扩容文件系统的容器组用于运行扩容程序;创建第二持久化卷声明,并将第二持久化卷声明与所述持久化卷进行绑定。
在其中一个实施例中,在根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定之前,包括:停止运行使用文件系统的容器组;在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定之后,包括:启动使用文件系统的容器组。
一种云硬盘的扩容装置,所述装置包括:
扩容请求获取模块,用于获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数;
扩容程序绑定模块,根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定;其中,所述第二持久化卷声明与扩容程序绑定;
扩容模块,用于启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容;
持久化卷绑定恢复模块,用于在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数;
根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定;其中,所述第二持久化卷声明与扩容程序绑定;
启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容;
在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数;
根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定;其中,所述第二持久化卷声明与扩容程序绑定;
启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容;
在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定。
上述云硬盘的扩容方法、装置、计算机设备和存储介质,通过将第一持久化卷声明与持久化卷解除绑定,再将第二持久化卷声明与持久化卷进行绑定,通过第二持久化卷声明对云硬盘的文件系统进行扩容修改,因而不需要在原有的第一持久化卷声明进行修改,降低了开发难度,在扩容完成后,再将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定,保证通过原有的第一持久化卷声明来对云硬盘的文件系统进行使用,从而用户在使用扩容后的云硬盘时除了云硬盘大小,其它部分不发生变化,提高了用户体验。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,容器组(POD)运行,通过持久化卷声明(PVC)向持久化存储(StorageClass)申请持久化卷(PV),持久化存储(StorageClass)向云厂家申请云硬盘,云厂家根据申请生成云硬盘,持久化存储(StorageClass)生成持久化卷(PV)与云硬盘绑定,持久化卷声明(PVC)再与持久化卷(PV)绑定,用户终端通过容器组(POD)便可以在云硬盘进行数据的存取。
在一个实施例中,如图3所示,提供了一种云硬盘的扩容方法,包括以下步骤:
S110,获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数。
其中,云硬盘的扩容请求在可自定义的资源对象(CRD,Custom ResourceDefinition)中进行定义,并且通过CRD Controller(CRD控制器)进行监控,以获取云硬盘的扩容请求。所述云硬盘标识为云硬盘的唯一标识,容量参数为扩容后的云硬盘的容量。
S120,根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷绑定;其中,所述第二持久化卷声明与扩容程序绑定。
其中,根据云硬盘标识找到第一持久化卷声明和持久化卷,并将第一持久化卷声明与持久化卷解除绑定,然后将用户新增的第二持久化卷声明与所述持久化卷进行绑定。持久化卷声明(PVC,Persistent Volume Claim)是用户存储的一种声明,PVC消耗的是持久化卷(PV),PVC可以请求特定的存储空间和访问模式,对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用PVC即可。第一持久化卷声明在用户使用云硬盘的文件系统时使用;第二持久化卷声明用于修改云硬盘的文件系统。扩容程序为对云硬盘的文件系统拓充的程序。
S130,启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容。
S140,在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定。
上述云硬盘的扩容方法中,通过将第一持久化卷声明与持久化卷解除绑定,再将第二持久化卷声明与持久化卷进行绑定,通过第二持久化卷声明对云硬盘的文件系统进行扩容修改,因而不需要在原有的第一持久化卷声明进行修改,降低了开发难度,在扩容完成后,再将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定,保证通过原有的第一持久化卷声明来对云硬盘的文件系统进行使用,从而用户在使用扩容后的云硬盘时除了云硬盘大小,其它部分不发生变化,提高了用户体验。
在其中一个实施例中,在获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数之后,包括:根据所述云硬盘标识对所述云硬盘进行扩容。本实施例中,通过云硬盘标识通知云厂家进行云硬盘的扩容,为使用扩容后的云硬盘提供硬件基础。
在其中一个实施例中,在根据所述云硬盘标识对所述云硬盘进行扩容之后,包括:将扩容后的所述云硬盘挂载到云厂家的云服务器,并在所述云服务器进行登录。本实施例中,通过登录云服务器后在进行云硬盘的扩容,设置了扩容的用户的权限。
在其中一个实施例中,所述云硬盘的扩容请求在可自定义的资源对象中进行定义。其中,可自定义的资源对象(CRD,Custom Resource Definition),用于kubernetes进功能拓展;其中Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新和维护的一种机制。
本实施例采用kubernetes的CRD方式,自定义一种专门扩展云硬盘的CRD,用户只需要在用户终端描述哪个PVC需要扩容,剩下的步骤由专门的程序控制运行。
在其中一个实施例中,所述获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数,包括:实时监控所述可自定义的资源对象,并获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数。
在其中一个实施例中,所述根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定,包括:根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定;启动扩容文件系统的容器组;其中,所述扩容文件系统的容器组用于运行扩容程序;创建第二持久化卷声明,并将第二持久化卷声明与所述持久化卷进行绑定。
在其中一个实施例中,在根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定之前,包括:停止运行使用文件系统的容器组。在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定之后,包括:启动使用文件系统的容器组。
在一个具体的实施例中,如图2所示,提供了一种云硬盘的扩容方法,是基于图1中云云硬盘生成方法做的改进,包括:在CRD(Auto-expansion)中定义云硬盘的扩容请求;CRD控制器(Auto-expansion Controller)监控获取云硬盘的扩容请求,CRD控制器向云厂家申请扩容;云厂家根据扩容请求中容量参数对云硬盘进行扩容;CRD控制器停止运行使用文件系统的容器组(POD);CRD控制器将第一持久化卷声明(PVC)与持久化卷解除(PV)绑定;CRD控制器启动使用文件系统的容器组(POD);容器组(POD)创建第二持久化卷声明(PVC),并将第二持久化卷声明与所述持久化卷(PV)绑定;CRD控制器启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容,在扩容成功后退出扩容程序;CRD控制器将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定;CRD控制器重启使用文件系统的容器组(POD)。
应该理解的是,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种云硬盘的扩容装置,包括:扩容请求获取模块210、扩容程序绑定模块220、扩容模块230和持久化卷绑定恢复模块240,其中:
扩容请求获取模块210,用于获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数。
扩容程序绑定模块220,根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定,并将第二持久化卷声明与所述持久化卷进行绑定;其中,所述第二持久化卷声明与扩容程序绑定。
扩容模块230,用于启动与所述第二持久化卷声明绑定的扩容程序,对所述云硬盘的文件系统进行扩容。
持久化卷绑定恢复模块240,用于在对所述文件系统扩容完成后,将所述第二持久化卷声明与所述持久化卷解除绑定,根据所述容量参数修改所述第一持久化卷声明中的容量,并将修改容量后的所述第一持久化卷声明与所述持久化卷进行绑定。
在其中一个实施例中,所述云硬盘的扩容装置,还包括:云硬盘扩容模块,用于根据所述云硬盘标识对所述云硬盘进行扩容。
在其中一个实施例中,所述云硬盘的扩容装置,还包括:挂载模块,用于将扩容后的所述云硬盘挂载到云厂家的云服务器,并在所述云服务器进行登录。
在其中一个实施例中,所述云硬盘的扩容请求在可自定义的资源对象中进行定义。
在其中一个实施例中,扩容请求获取模块,还用于实时监控所述可自定义的资源对象,并获取云硬盘的扩容请求,所述扩容请求包括云硬盘标识和容量参数。
在其中一个实施例中,所述扩容程序绑定模块包括:绑定解除单元,用于根据所述云硬盘标识对第一持久化卷声明与持久化卷解除绑定;启动单元,用于启动扩容文件系统的容器组;其中,所述扩容文件系统的容器组用于运行扩容程序;创建单元,用于创建第二持久化卷声明,并将第二持久化卷声明与所述持久化卷进行绑定。
在其中一个实施例中,所述云硬盘的扩容装置,还包括:停止模块,用于停止运行使用文件系统的容器组。所述云硬盘的扩容装置,还包括:启动模块,用于启动使用文件系统的容器组。
关于云硬盘的扩容装置的具体限定可以参见上文中对于云硬盘的扩容方法的限定,在此不再赘述。上述云硬盘的扩容装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种云硬盘的扩容方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。