一种虚拟机的数据存储方法和装置制造方法及图纸

技术编号:16365362 阅读:33 留言:0更新日期:2017-10-10 21:21
本申请实施例提供了一种虚拟机的数据存储方法和装置,该方法包括:在宿主机中接收虚拟机发送的原数据的写请求;检测所述写请求的请求类型;当所述请求类型为第一写请求时,将所述原数据存储至第一存储设备中。本申请实施例避免直接持久化至第二存储设备,大大减少了存储的I/O路径,减少的时间和设备资源的消耗,提升了虚拟机环境下分布式存储的写性能。

Data storage method and device for virtual machine

The embodiment of the invention provides a data storage method and device of a virtual machine, the method comprises: receiving the original data in the virtual machine host sends the write request; request type detection the write request; when the request type is the first written request, the original data to the first storage device. The embodiment of the invention avoids the direct persistence to the second storage device, greatly reduces the storage I/O path, reduces the time and equipment resource consumption, and improves the writing performance of the distributed storage in the virtual machine environment.

【技术实现步骤摘要】
一种虚拟机的数据存储方法和装置
本申请涉及计算机处理的
,特别是涉及一种虚拟机的数据存储方法和一种虚拟机的数据存储装置。
技术介绍
在云计算的IaaS(InfrastructureasaService,基础设施即服务)中,云运营商提供托管的物理机、虚拟机及其他设施,供不同的用户根据自己的实际需要进行使用。虚拟机(VirtualMachine)服务是IaaS的核心服务之一,是指系统虚拟机,即可以进行模拟的、具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。在云计算中,对于存储服务的I/O(input/output,输入/输出)等要求比较高,并且为了避免硬件错误导致的用户服务中断或者数据丢失,通常应用分布式文件系统进行镜像备份及存储用户数据。在虚拟机的环境下,若后端应用分布式文件系统存储数据,用户每次在虚拟机的用户态触发的数据的写请求,都需要先从虚拟机的内核态传送到宿主机的内核态,然后再将写请求传送到宿主机的用户态,再将数据以多副本方式写到不同的分布式文件系统中。分布式文件系统收到数据,在处理完写请求之后,沿上述I/O路径反向返回给虚拟机的用户态,最终完成用户写请求。这种数据的写方式,存储的I/O路径较长,使得每次写数据,都会消耗较多的时间和设备资源,导致虚拟机环境下分布式存储的写性能比较差。
技术实现思路
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种虚拟机的数据存储方法和相应的一种虚拟机的数据存储装置。为了解决上述问题,本申请实施例公开了一种虚拟机的数据存储方法,包括:在宿主机中接收虚拟机发送的原数据的写请求;检测所述写请求的请求类型;当所述请求类型为第一写请求时,将所述原数据存储至第一存储设备中。可选地,还包括:判断所述第一存储设备中脏数据的数据量是否超过预设的阈值;若是,则将所述原数据发送至第二存储设备进行存储;若否,则对存储在所述第一存储设备的所述原数据标记为脏数据。可选地,还包括:在设定的时间将存储在所述第一存储设备的脏数据发送至第二存储设备进行存储;当存储成功时,取消所述脏数据的标记,以识别为原数据。可选地,还包括:当所述请求类型为第二写请求时,读取存储在所述第一存储设备的全部脏数据;将读取的脏数据发送至第二存储设备进行存储;当存储成功时,取消所述脏数据的标记,以识别为原数据。可选地,还包括:当所述请求类型为第三写请求时,将所述原数据存储至第一存储设备中;将所述原数据发送至第二存储设备进行存储。可选地,所述在宿主机中接收虚拟机发送的原数据的写请求的步骤包括:由位于宿主机内核态中的块设备后端驱动接收、由位于虚拟机内核态中的块设备前端驱动发送的原数据的写请求。可选地,所述检测所述写请求的请求类型的步骤包括:由位于宿主机内核态中的块设备后端驱动从所述写请求中读取请求类型标识,以识别所述写请求的请求类型。可选地,所述将所述原数据存储至第一存储设备中的步骤包括:由位于宿主机内核态的缓存服务对象将所述原数据写入位于宿主机中的第一存储设备中;更新所述原数据的索引信息。可选地,所述将所述原数据发送至第二存储设备进行存储的步骤包括:由所述缓存服务对象将所述原数据发送至位于宿主机用户态的存储客户端;由所述存储客户端发送所述原数据至位于宿主机之外的第二存储设备进行存储。可选地,所述在设定的时间将存储在所述第一存储设备的脏数据发送至第二存储设备进行存储的步骤包括:当超过预设的休眠时间,唤醒位于宿主机内核态的回写线程;由所述回写线程按照所述索引信息读取部分存储在所述第一存储设备的脏数据;由所述回写线程将读取的脏数据发送至位于宿主机用户态的存储客户端;由所述存储客户端发送所述脏数据至位于宿主机之外的第二存储设备进行存储;当存储成功时,计算休眠时间;对所述回写线程进行休眠。可选地,所述读取存储在所述第一存储设备的全部脏数据的步骤包括:由所述缓存服务对象唤醒位于宿主机内核态的回写线程;由所述回写线程按照所述索引信息读取存储在所述第一存储设备的全部脏数据。可选地,所述将读取的脏数据发送至第二存储设备进行存储的步骤包括:由所述回写线程将读取的脏数据发送至位于宿主机用户态的存储客户端;由所述存储客户端发送所述脏数据至位于宿主机之外的第二存储设备进行存储。可选地,所述当存储成功时,取消所述脏数据的标记,以识别为原数据的步骤包括:当所述回写线程接收到所述存储客户端返回的存储成功的消息时,取消所述脏数据的标记,以识别为原数据。本申请实施例还公开了一种虚拟机的数据存储装置,包括:写请求接收模块,用于在宿主机中接收虚拟机发送的原数据的写请求;请求类型检测模块,用于检测所述写请求的请求类型;第一快速存储模块,用于在所述请求类型为第一写请求时,将所述原数据存储至第一存储设备中。可选地,还包括:数据量判断模块,用于判断所述第一存储设备中脏数据的数据量是否超过预设的阈值;若是,则调用第一持久化存储模块,若否,则调用脏数据标记模块;第一持久化存储模块,用于将所述原数据发送至第二存储设备进行存储;脏数据标记模块,用于对存储在所述第一存储设备的所述原数据标记为脏数据。可选地,还包括:第二持久化存储模块,用于在设定的时间将存储在所述第一存储设备的脏数据发送至第二存储设备进行存储;第一脏数据取消标记模块,用于在存储成功时,取消所述脏数据的标记,以识别为原数据。可选地,还包括:脏数据读取模块,用于在所述请求类型为第二写请求时,读取存储在所述第一存储设备的全部脏数据;第三持久化存储模块,用于将读取的脏数据发送至第二存储设备进行存储;第二脏数据取消标记模块,用于在存储成功时,取消所述脏数据的标记,以识别为原数据。可选地,还包括:第二快速存储模块,用于在所述请求类型为第三写请求时,将所述原数据存储至第一存储设备中;第四持久化存储模块,用于将所述原数据发送至第二存储设备进行存储。可选地,所述写请求接收模块包括:驱动接收子模块,用于由位于宿主机内核态中的块设备后端驱动接收、由位于虚拟机内核态中的块设备前端驱动发送的原数据的写请求;可选地,所述请求类型检测模块包括:驱动检测子模块,用于由位于宿主机内核态中的块设备后端驱动从所述写请求中读取请求类型标识,以识别所述写请求的请求类型;可选地,所述第一快速存储模块包括:第一缓存服务写数据子模块,用于由位于宿主机内核态的缓存服务对象将所述原数据写入位于宿主机中的第一存储设备中;第一索引信息更新子模块,用于更新所述原数据的索引信息。可选地,所述第二快速存储模块包括:第二缓存服务写数据子模块,用于由位于宿主机内核态的缓存服务对象将所述原数据写入位于宿主机中的第一存储设备中;第二索引信息更新子模块,用于更新所述原数据的索引信息。可选地,所述第一持久化存储模块包括:第一存储客户端发送子模块,用于由所述缓存服务对象将所述原数据发送至位于宿主机用户态的存储客户端;第一存储客户端存储子模块,用于由所述存储客户端发送所述原数据至位于宿主机之外的第二存储设备进行存储;可选地,所述第四持久化存储模块包括:第二存储客户端发送子模块,用于由所述缓存服务对象将所述原数据发送至位于宿主机用户态的存储客户端;第二存储客户端存储子模块,用于由所述存储客户端发送所述原数据至本文档来自技高网...
一种虚拟机的数据存储方法和装置

【技术保护点】
一种虚拟机的数据存储方法,其特征在于,包括:在宿主机中接收虚拟机发送的原数据的写请求;检测所述写请求的请求类型;当所述请求类型为第一写请求时,将所述原数据存储至第一存储设备中。

【技术特征摘要】
1.一种虚拟机的数据存储方法,其特征在于,包括:在宿主机中接收虚拟机发送的原数据的写请求;检测所述写请求的请求类型;当所述请求类型为第一写请求时,将所述原数据存储至第一存储设备中。2.根据权利要求1所述的方法,其特征在于,还包括:判断所述第一存储设备中脏数据的数据量是否超过预设的阈值;若是,则将所述原数据发送至第二存储设备进行存储;若否,则对存储在所述第一存储设备的所述原数据标记为脏数据。3.根据权利要求1或2所述的方法,其特征在于,还包括:在设定的时间将存储在所述第一存储设备的脏数据发送至第二存储设备进行存储;当存储成功时,取消所述脏数据的标记,以识别为原数据。4.根据权利要求1或2或3所述的方法,其特征在于,还包括:当所述请求类型为第二写请求时,读取存储在所述第一存储设备的全部脏数据;将读取的脏数据发送至第二存储设备进行存储;当存储成功时,取消所述脏数据的标记,以识别为原数据。5.根据权利要求1或2或3所述的方法,其特征在于,还包括:当所述请求类型为第三写请求时,将所述原数据存储至第一存储设备中;将所述原数据发送至第二存储设备进行存储。6.根据权利要求1或2或3或4或5所述的方法,其特征在于,所述在宿主机中接收虚拟机发送的原数据的写请求的步骤包括:由位于宿主机内核态中的块设备后端驱动接收、由位于虚拟机内核态中的块设备前端驱动发送的原数据的写请求;所述检测所述写请求的请求类型的步骤包括:由位于宿主机内核态中的块设备后端驱动从所述写请求中读取请求类型标识,以识别所述写请求的请求类型;所述将所述原数据存储至第一存储设备中的步骤包括:由位于宿主机内核态的缓存服务对象将所述原数据写入位于宿主机中的第一存储设备中;更新所述原数据的索引信息。7.根据权利要求6所述的方法,其特征在于,所述将所述原数据发送至第二存储设备进行存储的步骤包括:由所述缓存服务对象将所述原数据发送至位于宿主机用户态的存储客户端;由所述存储客户端发送所述原数据至位于宿主机之外的第二存储设备进行存储;所述在设定的时间将存储在所述第一存储设备的脏数据发送至第二存储设备进行存储的步骤包括:当超过预设的休眠时间,唤醒位于宿主机内核态的回写线程;由所述回写线程按照所述索引信息读取部分存储在所述第一存储设备的脏数据;由所述回写线程将读取的脏数据发送至位于宿主机用户态的存储客户端;由所述存储客户端...

【专利技术属性】
技术研发人员:王强朱延海
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1