一种读取磁盘映射文件的方法、装置及系统与流程

文档序号:15614921发布日期:2018-10-09 21:07阅读:330来源:国知局

本发明涉及计算机技术领域,特别涉及一种读取磁盘映射文件的方法、装置、系统及计算机可读存储介质。



背景技术:

目前,在访问磁盘映射文件时,对磁盘映射文件所有的操作都需要下发网络io请求,而每个网络io请求的延迟都会严重影响磁盘映射文件的读取速度。尤其是对于多个小文件或者单个大型文件的读取,需要以万计的网络io请求来完成相关磁盘映射文件的读取,每个请求的延迟都会严重影响磁盘映射文件的读取速度。其中,磁盘映射是一种将目标端(如客户机)的物理磁盘映射到应用端(如虚拟机),从而使得后者可以直接使用前者物理磁盘介质的技术。

因此,如何提升读取磁盘映射文件时的传输速度,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种读取磁盘映射文件的方法、装置、系统及计算机可读存储介质,能够降低从磁盘映射文件中读取数据的网络io请求的数目,提升文件传输速度,进而提升了磁盘映射文件读取速度。

为解决上述技术问题,本发明提供一种读取磁盘映射文件的方法,所述方法包括:

根据获取的磁盘映射文件操作动作,确定预读取文件信息;

将所述预读取文件信息发送至目标端,以使所述目标端根据所述预读取文件信息读取对应目标磁盘映射文件;

缓存所述目标端发送的所述目标磁盘映射文件;

当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件。

可选的,根据获取的磁盘映射文件操作动作,确定预读取文件信息,包括:

根据获取的磁盘映射文件操作动作,确定磁盘映射文件的操作类型;

当所述操作类型为小文件操作时,则将所述小文件操作对应的文件列表信息作为预读取文件信息;

当所述操作类型为大文件操作时,则将所述大文件操作对应的文件内操作的扇区信息作为预读取文件信息。

可选的,所述磁盘映射文件操作动作的获取方式,包括:

利用监控程序实时监测是否存在磁盘映射文件操作动作;

若存在,则获取所述磁盘映射文件操作动作。

本发明还提供一种读取磁盘映射文件的装置,所述装置包括:

预读取文件信息获取模块,用于根据获取的磁盘映射文件操作动作,确定预读取文件信息;

发送模块,用于将所述预读取文件信息发送至目标端,以使所述目标端根据所述预读取文件信息读取对应目标磁盘映射文件;

缓存模块,用于缓存所述目标端发送的所述目标磁盘映射文件;

文件读取模块,用于当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件。

可选的,所述预读取文件信息获取模块,包括:

操作类型确定单元,用于根据获取的磁盘映射文件操作动作,确定磁盘映射文件的操作类型;

预读取文件信息获取单元,用于当所述操作类型为小文件操作时,则将所述小文件操作对应的文件列表信息作为预读取文件信息;当所述操作类型为大文件操作时,则将所述大文件操作对应的文件内操作的扇区信息作为预读取文件信息。

可选的,所述预读取文件信息获取模块,还包括:

磁盘映射文件操作动作获取单元,用于利用监控程序实时监测是否存在磁盘映射文件操作动作;若存在,则获取所述磁盘映射文件操作动作。

本发明还提供一种读取磁盘映射文件的系统,所述系统包括:

应用端,用于处理器根据获取的磁盘映射文件操作动作,确定预读取文件信息;将所述预读取文件信息发送至目标端;缓存所述目标磁盘映射文件;当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件;

所述目标端,用于根据所述预读取文件信息读取对应目标磁盘映射文件,并将所述目标磁盘映射文件发送至所述应用端。

可选的,所述应用端具体用于根据获取的磁盘映射文件操作动作,确定磁盘映射文件的操作类型;当所述操作类型为小文件操作时,则将所述小文件操作对应的文件列表信息作为预读取文件信息;当所述操作类型为大文件操作时,则将所述大文件操作对应的文件内操作的扇区信息作为预读取文件信息。

可选的,所述目标端具体用于将所述目标磁盘映射文件压缩后发送至所述应用端。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述读取磁盘映射文件的方法的步骤。

本发明所提供的一种读取磁盘映射文件的方法,包括:根据获取的磁盘映射文件操作动作,确定预读取文件信息;将预读取文件信息发送至目标端,以使目标端根据预读取文件信息读取对应目标磁盘映射文件;缓存目标端发送的目标磁盘映射文件;当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件。

可见,该方法通过预读取目标磁盘映射文件,将其存放在本端,后续在发起磁盘映射文件读取操作时可以直接从本端缓存中读取对应的目标磁盘映射文件,从而降低从磁盘映射文件中读取对应目标磁盘映射文件的网络io请求的数目,提升磁盘映射文件传输速度,进而提升了磁盘映射文件读取速度。本发明还提供了一种读取磁盘映射文件的装置、系统及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的读取磁盘映射文件的方法的流程图;

图2为本发明实施例所提供的具体的读取磁盘映射文件的方法的过程示意图;

图3为本发明实施例所提供的具体的读取磁盘映射文件的方法的时序示意图;

图4为本发明实施例所提供的读取磁盘映射文件的装置的结构框图;

图5为本发明实施例所提供的读取磁盘映射文件的系统的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请中各个实施例可以适用于任何网络场景。例如局域网场景或广域网场景。本申请中各个实施例中将需要读取目标磁盘映射文件的一端称为应用端,提供目标磁盘映射文件的一端称之为目标端。本申请中各个实施例中并不对目标端和应用端进行限定(如应用端和目标端可以对应为物理机和虚拟机、或虚拟机和虚拟机、或物理机和物理机、或虚拟机和物理机),进而不对目标端和应用端的操作系统进行限定。例如目标端的操作系统和应用端的操作系统可以是异构的。其中,虚拟机(vm)是指通过软件模拟的、具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。物理机例如客户机,即专门用于接入虚拟机的终端设备,客户机包括个人物理pc和瘦终端。

现有技术中在访问磁盘映射文件时,对磁盘映射文件所有的操作都需要下发网络io请求,而每个网络io请求的延迟都会严重影响磁盘映射文件的读取速度。下面以应用端和目标端分别为虚拟机和物理机如客户端为例说明读取磁盘映射文件的过程。其中,虚拟机通过vdi技术访问客户端。vdi(virtualdesktopinfrastructure,虚拟桌面基础架构)通过在数据中心的服务器运行桌面操作系统,用户通过客户端设备(客户机或pc)的传输协议与这些远程的桌面进行连接,使得用户访问他们的桌面就像是访问传统的本地桌面一样。即在虚拟化场景下,磁盘映射使用rpc技术实现,从磁盘映射中传输文件的大致操作过程如下:

1、虚拟机调用(例如应用程序调用)操作系统提供的api,发起相关文件读请求。

2、虚拟机内核驱动对api操作进行打包,并封装成网络消息发送给客户机。

3、客户机解析(例如代理程序解析)消息并调用相关的api,读取本地磁盘文件,然后进行压缩。

4、客户机将压缩后的数据封装成消息返回给虚拟机。

5、虚拟机接收(例如应用程序接收)消息并对相关数据解压缩,完成api调用。

其中,rpc(remoteprocedurecall,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。api(applicationprogramminginterface,应用程序编程接口)是指操作系统提供给应用程序的服务接口函数。上述方式中,在虚拟机中读取磁盘映射文件的时候,对磁盘映射文件的所有请求操作都需要在客户机交互情况下完成。对于多个小文件或者单个大型文件的读取,需要以万计的请求来完成相关文件的读取。即对于磁盘映射中文件的读取,虚拟机可能会在短时间之内产生大量的读请求,这些请求都必须通过网络和客户端交互完成。每个读请求数据的延迟或者请求数据网络传输的延迟都会影响磁盘映射文件读写的速度。本实施例可以降低从映射磁盘中读取数据的网络io请求数目,提升磁盘映射文件传输速度。具体请参考图1,图1为本发明实施例所提供的读取磁盘映射文件的方法的流程图;该方法的执行主体为应用端,具体过程可以包括:

s100、根据获取的磁盘映射文件操作动作,确定预读取文件信息;

该步骤的目的是要根据应用端当前对磁盘映射文件操作动作,确定预读取文件信息。即根据应用端当前对磁盘映射文件操作,获取将来需要读取的文件信息。后续步骤主要目的是提前将未来需要读取的文件信息即预读取文件信息对应的磁盘映射文件作为目标磁盘映射文件提前读取到应用端。在应用端实际需要读取该磁盘映射文件时可以直接从应用端读取相应的目标磁盘映射文件,而不需要利用网络io请求从目标端实时获取目标磁盘映射文件。从而降低从目标端的磁盘映射文件中读取数据的网络io请求的数目,提升文件传输速度,进而提升了磁盘映射文件读取速度。

本实施例并不限定获取的磁盘映射文件操作动作的具体方式和获取频率,例如可以是利用监控程序(如应用端中安装的插件)识别应用端应用程序文件读取的操作判断其是否包含磁盘映射文件操作动作。对应的获取的磁盘映射文件操作动作可以是按照预设周期进行,也可以是实时执行。可选的,利用监控程序实时监测是否存在磁盘映射文件操作动作;若存在,则获取磁盘映射文件操作动作。本实施例通过实时监测,可以及时确定预读取文件信息,进而保证在应用端每次执行文件读取操作时都可以提升磁盘映射文件的读取速度。即通过在监控程序识别应用端应用程序文件读取的操作,将需要读取的文件预读缓存到应用端;应用端应用程序读取磁盘映射文件的时候,直接从应用端缓存中读取对应的目标磁盘映射文件数据,从而降低从映射磁盘中读取数据的网络io请求数目,提升磁盘映射文件传输速度。

本实施例中并不对具体的磁盘映射文件操作动作的内容进行限定,进而不限定具体的从磁盘映射文件操作动作确定预读取文件信息对应规则的内容。例如当磁盘映射文件操作动作为存在访问文件信息的指令时,通过该指令的具体内容可以确定其后续需要访问的文件信息数据,进而可以确定预读取文件信息。如当应用端当前的指令为若是,则获取第一文件,对应的预读取文件信息为第一文件。即若当前执行指令的内容包含后续需要访问的文件信息时根据当前执行指令的内容确定对应的预读取文件信息。当磁盘映射文件操作动作为获取某一个文件时,通过该指令的具体内容可以确定某一个文件信息,进而可以确定与某一个文件相关联的文件信息作为预读取文件信息。如当应用端当前的指令为获取第一文件,对应的预读取文件信息为与第一文件具有连续关系的文件。即通过当前访问的文件信息预估后续需要访问的文件信息作为预读取文件信息。

可选的,根据获取的磁盘映射文件操作动作,确定预读取文件信息可以包括:

根据获取的磁盘映射文件操作动作,确定磁盘映射文件的操作类型;

当操作类型为小文件操作时,则将小文件操作对应的文件列表信息作为预读取文件信息;

当操作类型为大文件操作时,则将大文件操作对应的文件内操作的扇区信息作为预读取文件信息。

其中,本实施例中所定义的小文件和大文件是根据文件对应的数据量的大小进行划分的。当文件的数据量大于数据阈值时该文件为大文件,当文件的数据量小于数据阈值时该文件为小文件。例如,当数据阈值500kb时,300kb大小的文件即为小文件,1mb大小的文件即为大文件。本实施例并不限定数据阈值的具体数值,其具体数值可以根据用户根据自身应用场景进行设定或修改。

具体的,应用端(如应用端的监控程序)获取磁盘映射文件操作动作:如果是从磁盘映射中读取多个小文件,那么插件获取到需要读取的文件列表;如果是读取单个大文件,那么获取文件内操作的扇区信息。其中,文件列表信息可以是小文件操作对应的全部小文件组成的文件列表信息,也可以是小文件操作对应的小文件以及与这些小文件相关的其他小文件共同组成文件列表信息。本实施例并不限定相关的其他小文件的确定规则,例如可以是通过文件之间的内在关联确定。文件内操作的扇区信息即大文件操作对应的整个大文件所对应的空间即扇区信息。

本实施例通过该操作可以提前将小文件操作对应的其他小文件或者是大文件操作对应的大文件内的其他文件信息提前从目标端缓存到应用端,使应用端在实际使用时不需要再实时向目标端下发网络io请求获取对应的文件。

s110、将预读取文件信息发送至目标端,以使目标端根据预读取文件信息读取对应目标磁盘映射文件;

具体的,将后续需要的预读取文件信息发送至目标端,提前从目标端获取对应的目标磁盘映射文件。通常情况下应用端会通过内核代理驱动将预读取文件信息发送至目标端。为了预读取文件信息发送的准确性和可靠性,本实施例中可以将预读取文件信息进行封装后发送至目标端。

目标端根据接收的预读取文件信息读取预读取文件信息对应的目标磁盘映射文件。进一步,当接收到的是封装后的数据包时,需要对数据包进行解析,获取解析后的预读取文件信息,进而根据预读取文件信息获取到需要读取磁盘的信息并读取磁盘数据,得到对应的目标磁盘映射文件。在目标端获取到目标磁盘映射文件后需要将其发送至应用端。进一步,为了提高数据发送效率,可以将目标磁盘映射文件利用压缩技术进行压缩后发送至应用端。本实施例并不限定具体的压缩方式。

s120、缓存目标端发送的目标磁盘映射文件;

具体的,应用端将接收到的目标磁盘映射文件保存到缓存中。进一步,当目标磁盘映射文件为压缩后的数据时,先进行解压操作,在将解压后的目标磁盘映射文件进行缓存。此时解压操作与压缩操作相对应。

s130、当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件。

具体的,当应用端发起磁盘映射文件读取操作时,应用端直接从本端缓存中读取对应的目标磁盘映射文件即可,不需要向目标端发送网络io请求。即可以看到本实施例仅需要在确定预读取文件信息后向目标端发送一次网络io请求即可,不需要每次需要读取文件时都要向目标端发送一次网络io请求。进而降低从磁盘映射文件中读取对应目标磁盘映射文件的网络io请求的数目,提升磁盘映射文件传输速度,进而提升了磁盘映射文件读取速度。

请参考图2,下面以应用端和目标端分别为虚拟机和物理机(图中以客户机为例)如客户端为例说明本实施例的操作过程。

1、虚拟机的监控程序(如虚拟机插件)获取磁盘映射文件操作动作,进而确定预读取文件信息;其中,预读取文件信息具体为若从磁盘映射中读取多个小文件,那么获取到需要读取的文件列表作为预读取文件信息;若读取单个大文件,那么获取文件内操作的扇区信息作为预读取文件信息。

2、虚拟机的内核代理驱动将预读取文件信息封装发送到客户端代理。

3、客户端的优化层解析数据包,获取到需要读取磁盘的信息并读取磁盘数据作为目标磁盘映射文件。

4、客户端的优化层使用压缩技术,对目标磁盘映射文件进行压缩;然后发送给代理层。

5、客户端的代理层将数据发送到虚拟机的优化层,虚拟机的优化层将数据进行缓存。

6、虚拟机的应用程序发起文件读取操作。

7、虚拟机的内核代理层直接从虚拟机的优化层缓存中读取虚拟机的目标磁盘映射文件。

通过虚拟机插件识别磁盘映射文件操作动作,获取到需要读取的映射磁盘的文件列表和扇区信息,根据文件列表和扇区信息提前将目标磁盘映射文件读取到虚拟机缓存;虚拟机应用程序读取目标磁盘映射文件的时候直接从虚拟机的优化层读取,减少读取的时间。

整个磁盘映射文件的传输操作分为两部分:第一、目标磁盘映射文件预读和缓存;第二、应用端的应用程序从缓存中读取目标磁盘映射文件。相关时序图请参考图3。图3中文件读取动作识别即磁盘映射文件操作动作的获取。

基于上述技术方案,本发明实施例提供的读取磁盘映射文件的方法,该方法通过预读取目标磁盘映射文件,将其存放在本端,后续在发起磁盘映射文件读取操作时可以直接从本端缓存中读取对应的目标磁盘映射文件,从而降低从磁盘映射文件中读取对应目标磁盘映射文件的网络io请求的数目,提升磁盘映射文件传输速度,进而大大提升了磁盘映射文件读取速度。

下面对本发明实施例提供的读取磁盘映射文件的装置、系统及计算机可读存储介质进行介绍,下文描述的读取磁盘映射文件的装置、系统及计算机可读存储介质与上文描述的读取磁盘映射文件的方法可相互对应参照。

请参考图4,图4为本发明实施例所提供的读取磁盘映射文件的装置的结构框图;该装置可以包括:

预读取文件信息获取模块110,用于根据获取的磁盘映射文件操作动作,确定预读取文件信息;

发送模块120,用于将预读取文件信息发送至目标端,以使目标端根据预读取文件信息读取对应目标磁盘映射文件;

缓存模块130,用于缓存目标端发送的目标磁盘映射文件;

文件读取模块140,用于当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件。

基于上述实施例,预读取文件信息获取模块110可以包括:

操作类型确定单元,用于根据获取的磁盘映射文件操作动作,确定磁盘映射文件的操作类型;

预读取文件信息获取单元,用于当操作类型为小文件操作时,则将小文件操作对应的文件列表信息作为预读取文件信息;当操作类型为大文件操作时,则将大文件操作对应的文件内操作的扇区信息作为预读取文件信息。

基于上述任意实施例,预读取文件信息获取模块110还可以包括:

磁盘映射文件操作动作获取单元,用于利用监控程序实时监测是否存在磁盘映射文件操作动作;若存在,则获取磁盘映射文件操作动作。

需要说明的是,基于上述任意实施例,所述装置可以是基于可编程逻辑器件实现的,可编程逻辑器件包括fpga,cpld,单片机等。

请参考图5,图5为本发明实施例所提供的读取磁盘映射文件的系统的结构框图,该系统可以包括:

应用端100,用于处理器根据获取的磁盘映射文件操作动作,确定预读取文件信息;将预读取文件信息发送至目标端;缓存目标磁盘映射文件;当发起磁盘映射文件读取操作时,从缓存中读取对应的目标磁盘映射文件;

目标端200,用于根据预读取文件信息读取对应目标磁盘映射文件,并将目标磁盘映射文件发送至应用端。

基于上述实施例,应用端100具体用于根据获取的磁盘映射文件操作动作,确定磁盘映射文件的操作类型;当操作类型为小文件操作时,则将小文件操作对应的文件列表信息作为预读取文件信息;当操作类型为大文件操作时,则将大文件操作对应的文件内操作的扇区信息作为预读取文件信息。

基于上述任意实施例,目标端200具体用于将目标磁盘映射文件压缩后发送至应用端。

本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意实施例所述的读取磁盘映射文件的方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种读取磁盘映射文件的方法、装置、系统及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1