数据存储方法、装置和设备的制造方法

文档序号:8258813阅读:196来源:国知局
数据存储方法、装置和设备的制造方法
【技术领域】
[0001]本发明涉及计算机和通信技术领域,具体涉及一种数据存储方法、装置和设备。
【背景技术】
[0002]容器虚拟化是一种操作系统级、非常快速和高效的虚拟化技术。它的原理是基于操作系统内核对不同的运行进程提供不同的系统视图。这种隔离可以用于确保在保证安全和效率的情况下授权访问硬件资源,如CPU (Central Processing Unit,中央处理器)和1dnput Output,输入输出)带宽。每个容器拥有一个仅供容器中进程和应用访问的文件系统环境。由于容器虚拟化的快速、轻量和高效,容器适用于大规模部署。在互联网、私有云等场景下,大规模部署的容器中通常会运行一些定制化的特定应用,如数据库、Apache等。
[0003]大规模使用容器的场景下,为了提高容器部署和使用,会使用层次化的存储结构,从而达到节省空间、系统环境复用和便于管理的目的。容器的存储结构一般包括容器存储和Base (基础)存储,其中,容器存储是容器的私有存储,Base存储可供多个容器使用。Base存储可细分为BaSe0、BaSel、BaSe2等多个级别。当前容器的层次化存储主要通过将容器的存储按照类型和作用分类。如:将容器的boot fs (容器启动依赖的一些文件)、系统配置文件等共通的文件作为BaseO级存储,在BaseO存储上会有rootfs基本文件等Basel级存储,Basel之上会有应用文件等Base2存储,依此类推。单个容器运行于BaseN存储之上,对文件的修改采用基于文件粒度的写时拷贝的策略。容器应用要对Base存储中的文件执行写操作,需要先在容器存储中建立该文件的副本后,再对副本操作。
[0004]如图1所示是现有技术的层次化存储结构访问机制。其中容器自有的容器存储中保存其对Base存储的差异化文件。容器访问Base存储时,针对读写分别有不同的处理。读文件时直接操作Base存储中的文件。而针对写操作,要先在容器存储中建立文件的副本,再对这个副本文件进行写操作。容器中的应用访问存储中的文件,当有写文件时,首先复制文件到可写的存储环境中再操作,所以这是一种以文件为粒度的写时拷贝。
[0005]容器应用要访问Base存储中的大文件时,需要等大文件副本在容器存储中建立完成后,才能执行写操作,而大文件副本建立需要较长时间。因此,这种以文件为粒度的写时拷贝(Copy On Write,COW)过程消耗时间长,某些场景下,即使是对大文件做很少一部分的数据修改,也要等待建立副本后才能完成,这样会导致上层应用的写操作请求得不到及时的响应,效率很低。

【发明内容】

[0006]本发明实施例提供一种数据存储方法、装置和设备,以解决现有技术中容器对Base存储中的文件执行的写时拷贝操作耗时长,效率低的缺陷。
[0007]本发明第一方面提供一种数据存储方法,用于容器虚拟化系统,所述容器虚拟化系统中运行多个容器,所述多个容器具有各自的容器存储单元,且所述多个容器共用基础Base存储单元,所述多个容器包括第一容器,所述第一容器具有第一容器存储单元;所述方法包括:检测到第一容器中的应用通过可写方式打开保存在Base存储单元中的文件时,开始在第一容器存储单元中建立所述文件的副本;检测到所述第一容器中的应用对所述文件进行写操作时,获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据项;检测到所述文件的副本建立完成时,从所述数据项中获取所述文件的更新数据,将所述文件的更新数据同步到所述文件的副本中。
[0008]结合第一方面,在第一种可能的实现方式中,所述方法还包括:同步操作完成后,如果所述第一容器中的应用对所述文件继续进行写操作时,将文件操作对象切换到所述文件的副本,后续对所述文件的更新数据直接写入所述文件的副本中。
[0009]结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据项包括:从所述第一容器的内存中读取所述文件的更新数据,将所述文件的更新数据及其数据控制信息,以及对应的Base存储单元中的源数据和所述写操作信息封装为一个数据项,将所述数据项保存在所述第一容器存储单元的一个存储文件中。
[0010]结合第一方面或者第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述从所述数据项中获取所述文件的更新数据,将所述文件的更新数据同步到所述文件的副本中包括:读取所述数据项信息,将每一个数据项都挂到一个总的处理队列中;依次将所述处理队列中每个数据项中记录的所述文件的更新数据,按照记录的所述写操作信息,同步到所述文件的副本中。
[0011]结合第一方面或者第一方面的第一种至第三种可能的实现方式中的任一种,在第四种可能的实现方式中,所述容器虚拟化系统部署于单个计算机设备上,所述计算机设备包括硬件层和运行在硬件层上的宿主机,所述多个容器运行在所述宿主机中,所述硬件层包括所述Base存储单元和所述多个容器存储单元,所述多个容器存储单元分别从属于所述多个容器。
[0012]结合第一方面或者第一方面的第一种至第三种可能的实现方式中的任一种,在第五种可能的实现方式中,所述容器虚拟化系统部署于分布式的计算机集群系统中,所述计算机集群系统包括多个计算节点和存储节点以及存储管理节点,所述多个容器分布式的运行于所述多个计算节点中,所述存储节点包括所述基础Base存储单元和所述多个容器存储单元,所述多个容器存储单元分别从属于所述多个容器,所述管理存储节点用于管理所述存储节点,所述多个计算节点包括第一计算节点,所述第一容器运行在所述第一计算节点中。
[0013]本发明第二方面提供一种数据存储装置,用于容器虚拟化系统,所述容器虚拟化系统中运行多个容器,所述多个容器具有各自的容器存储单元,且所述多个容器共用基础Base存储单元,所述多个容器包括第一容器,所述第一容器具有第一容器存储单元;所述数据存储装置包括:容器数据记录模块,用于检测到第一容器中的应用通过可写方式打开保存在Base存储单元中的文件时,发送同步通知给容器数据同步模块;所述容器数据同步模块,用于在收到所述同步通知后,开始在第一容器存储单元中建立所述文件的副本;所述容器数据记录模块,还用于检测到所述第一容器中的应用对所述文件进行写操作时,获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据项;所述容器数据同步模块,还用于检测到所述文件的副本建立完成时,从所述数据项中获取所述文件的更新数据,将所述文件的更新数据同步到所述文件的副本中。
[0014]结合第二方面,在第一种可能的实现方式中,所述容器数据同步模块,还用于在同步操作完成后,发送切换通知给容器数据记录模块;所述容器数据记录模块,还用于接收到切换通知后,如果检测到所述第一容器中的应用对所述文件继续进行写操作时,将文件操作对象切换到所述文件的副本,后续对所述文件的更新数据直接写入所述文件的副本中。
[0015]结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述容器数据记录模块,具体用于从所述第一容器的内存中读取所述文件的更新数据,将所述文件的更新数据及其数据控制信息,以及对应的Base存储单元中的源数据和所述写操作信息封装为一个数据项,将所述数据项保存在所述第一容器存储单元的一个存储文件中。
[0016]结合第二方面或者第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述容器数据同步模块,具体用于读取所述数据项信息,将每一个数据项都挂到一个总的处理队列中;依次将所述处理队列中每个数据项中记录的所述文件的更新数据,按照记录的所述写操作信息,同步到所述文件的副本中。
[0017]结合第二方面或者第二方面的第一种至第三种可能的实现方式中的任一种,在第四种可能的实现方式中,所述容器虚拟化系统部署于单个计算机设备上,所述计算机设备包括硬件层和运行在硬件层上的宿主机,所述多个容器运行在所述宿主机中,所述硬件层包括所述Base存储单元和所述多个容器存储单元,所述多个容器存储单元分别从属于所述多个容器。
[0018]结合第二方面或者第二方面的第一种至第三种可能的实现方式中的任一种,在第五种可能的实现方式中,所述容器虚拟化系统部署于分布式的计算机集群系统中,所述计算机集群系统包括多个计算节点和存储节点以及存储管理节点,所述多个容器分布式的运行于所述多个计算节点中,所述存储节点包括所述基础Base存储单元和所述多个容器存储单元,所述多个容器存储单元分别从属于所述多个容器,所述管理存储节点用于管理所述存储节点,所述多个计算节点包括第一计算节点,所述第一容器运行在所述第一计算节点中。
[0019]本发明第三方面提供一种数据存储方法,用于计算机设备,所述计算机设备包括硬件层和运行在硬件层上的宿主机,所述宿主机中运行多个容器,所述硬件层包括基础Base存储单元和多个容器存储单元,所述多个容器存储单元分别从属于所述多个容器,所述多个容器包括第一容器,所述多个容器存储单元包括从属于所述第一容器的第一容器存储单元;所述方法包括:检测到第一容器中的应用通过可写方式打开保存在Base存储单元中的文件时,开始在第一容器存储单元中建立所述文件的副本;检测到所述第一容器中的应用对所述文件进行写操作时,获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据项;检测到所述文件的副本建立完成时,从所述数据项中获取所述文件的更新数据,将所述文件的更新数据同步到所述文件的副本中。
[0020]结合第三方面,在第一种可能的实现方式中,方法还包括:同步操作完成后,如果所述第一容器中的应用对所述文件继续进行写操作时,将文件操作对象切换到所述文件的副本,后续对所述文件的更新数据直接写入所述文件的副本中。
[0021]结合第三方面或者第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据项包括:从所述第一容器的内存中读取所述文件的更新数据,将所述文件的更新数据及其数据控制信息,以及对应的Base存储单元中的源数据和所述写操作信息封装为一个数据项,将所述数据项保存在所述第一容器存储单元的一个存储文件中。
[0022]结合第三方面或者第三方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述从所述数据项中获取所述文件的更新数据,将所述文件的更新数据同步到所述文件的副本中包括:读取所述数据项信息,将每一个数据项都挂到一个总的处理队列中;依次将所述处理队列中每个数据项中记录的所述文件的更新数据,按照记录的所述写操作信息,同步到所述文件的副本中。
[0023]本发明第四方面提供一种数据存储方法,包括:用于计算机集群系统,所述计算机集群系统包括多个计算节点和存储节点以及存储管理节点,所述多个计算节点中的每一个计算节点上运行多个容器,所述存储节点包括基础Base存储单元和多个容器存储单元,所述多个容器存储单元分别从属于所述多个计算节点上运行的多个容器,所述管理存储节点用于管理所述存储节点,所述多个计算节点包括第一计算节点,所述第一计算节点上运行有第一容器,所述多个容器存储单元包括从属于所述第一容器的第一容器存储单元;所述方法包括:第一计算节点检测到第一容器中的应用通过可写方式打开保存在Base存储单元中的文件时,发送副本建立通知给所述存储管理节点,以便所述存储管理节点开始在所述存储节点的第一容器存储单元中建立所述文件的副本;所述第一计算节点检测到所述第一容器中的应用对所述文件进行写操作时,获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据项,以便所述存储管理节点检测到所述文件的副本建立完成时,从所述数据项中获取所述文件的更新数据,将所述文件的更新数据同步到所述文件的副本中。
[0024]结合第四方面,在第一种可能的实现方式中,方法还包括:所述第一计算节点接收到所述存储管理节点在所述同步操作完成后发送的切换通知后,如果所述第一容器中的应用对所述文件继续进行写操作时,将文件操作对象切换到所述文件的副本,后续对所述文件的更新数据直接写入所述文件的副本中。
[0025]结合第四方面或者第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获取所述文件的更新数据,根据所述文件的更新数据构建并保存数据
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1