CN102520994A - 流式加载虚拟文件方法及系统 - Google Patents
流式加载虚拟文件方法及系统 Download PDFInfo
- Publication number
- CN102520994A CN102520994A CN2011104017050A CN201110401705A CN102520994A CN 102520994 A CN102520994 A CN 102520994A CN 2011104017050 A CN2011104017050 A CN 2011104017050A CN 201110401705 A CN201110401705 A CN 201110401705A CN 102520994 A CN102520994 A CN 102520994A
- Authority
- CN
- China
- Prior art keywords
- virtual
- file
- software
- virtual applications
- zone
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种流式加载虚拟文件方法系统,包括:将虚拟应用程序封装为虚拟应用程序包;存储所述虚拟应用程序包;虚拟文件系统驱动模块,用于获取携带有软件标识的软件加载请求若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述虚拟应用程序包远程获取所述虚拟应用程序、加载并存储。本发明的流式加载虚拟文件方法及系统克服了需将虚拟应用程序包预先完全下载到本地而导致软件启动耗时过长的缺陷。
Description
技术领域
本发明涉及无线通信技术,尤其涉及一种流式加载虚拟文件方法及系统。
背景技术
“软件即服务(Software as a Service,SaaS)”技术,是伴随着互联网技术和虚拟化技术的发展,在借鉴网络服务思想的基础上提出来的一种全新的软件发布模式:软件提供商将软件统一部署在自己的服务器上,用户可以根据自己的实际需求,通过网络即时的获取提供商的软件服务。在SaaS模式下,用户不再像过去那样购买软件,而是向提供商租用软件,用户按照使用量来进行付费,并且用户无需对软件的运行进行维护。SaaS模式与远程桌面模式有本质上的不同,虚拟化的软件在客户机本地运行,解决了服务器资源消耗巨大的瓶颈,这是目前最具效益的软件营运模式。
从传统意义上讲,应用程序需要完全存储在本地磁盘上才能正常启动运行,虚拟化软件也是按此方式运行:在第一次启动时,从服务器上下载到本地磁盘,随后由系统的进程控制器加载并运行。
但是这样做的弊端也是很明显的:首次启动时,虚拟应用程序需要完全下载到本地,所以需要等待软件完全下载,然后才开始启动,软件启动耗时长,给用户造成很坏的体验。
发明内容
本发明提供流式加载虚拟文件方法系统,用于实现虚拟化软件的按需加载,以克服需将虚拟化软件全部下载到本地的缺陷。
根据本发明的一方面,提供一种流式加载虚拟文件方法,包括:
将虚拟应用程序封装为虚拟应用程序包;
存储所述虚拟应用程序包;
获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述虚拟应用程序包远程获取所述虚拟应用程序、加载并存储。
根据本发明的另一方面,还提供一种流式加载虚拟文件系统,包括:
虚拟应用封装模块,用于将虚拟应用程序封装为虚拟应用程序包;
软件仓库,用于存储所述虚拟应用程序包;
虚拟文件系统驱动模块,用于获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述软件仓库获取所述虚拟应用程序、加载并存储。
根据本发明的流式加载虚拟文件方法及系统,由于将虚拟应用程序封装为虚拟应用程序包,存储并发布虚拟应用程序包,响应接收到的携带有软件标识的软件加载请求,并仅当判断获知与软件标识对应的虚拟应用程序未下载至本地时,才从软件仓库下载虚拟应用程序,实现了虚拟应用程序的按需加载,克服了现有技术中需将虚拟应用程序包预先完全下载到本地而导致软件启动耗时过长的缺陷,提升了用户体验。
附图说明
图1为应用本发明流式加载虚拟文件系统的网络架构图。
图2为本发明流式加载虚拟文件方法的流程示意图。
图3为本发明流式加载虚拟文件系统的系统架构图。
图4为虚拟应用程序包格式的示意图。
图5为虚拟文件系统驱动模块执行流式加载的流程示意图。
图6为虚拟文件系统驱动模块在Windows NT客户机中通信的示意图。
图7为虚拟文件系统驱动模块的结构示意图。
具体实施方式
图1为用于实现本发明流式加载虚拟文件方法的网络架构图。如图1所示,用于执行本发明流式加载虚拟文件方法的流式加载虚拟文件系统应用于服务器-客户机模式的网络,其中,该流式加载虚拟文件系统同时运行在服务器上和客户机上。
图2为本发明流式加载虚拟文件方法的流程示意图。如图2所示,包括以下步骤:
步骤S201,流式加载虚拟文件系统将虚拟应用程序封装为虚拟应用程序包;
步骤S202,流式加载虚拟文件系统存储所述虚拟应用程序包;
步骤S203,流式加载虚拟文件系统获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述虚拟应用程序包远程获取所述虚拟应用程序、加载并存储。
图3为用于实现本发明流式加载虚拟文件方法的流式加载虚拟文件系统的系统架构图。下面结合图3对上述步骤S201-S203进行详细说明。
如图3所示,该流式加载虚拟文件系统包括:
虚拟应用封装模块31,用于将虚拟应用程序封装为虚拟应用程序包;
软件仓库32,用于存储所述虚拟应用程序包;
虚拟文件系统驱动模块33,用于获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述软件仓库获取所述虚拟应用程序、加载并存储。
其中,虚拟应用封装模块31和软件仓库32运行在网络中的服务器侧,虚拟文件系统驱动模块33运行在网络中的客户机侧。优选地,下面以虚拟应用封装模块31和软件仓库32在视窗网络终端(Windows NT)服务器上运行,且虚拟文件系统驱动模块33在Windows NT客户机上运行为例进行详细说明。
具体地,虚拟应用封装模块31按照预定的封装格式对虚拟应用程序进行封装,形成虚拟应用程序包。该封装过程不会改变虚拟应用程序本身,只是将程序运行所需数据按照封装格式全部封装到同一文件内,以支持服务器与客户机之间的流式加载。在实际应用中,如果企业中包含多个版本的操作系统,那么制作虚拟应用程序包时应该在对应的操作系统上进行,以确保客户端在加载虚拟应用程序包中的虚拟应用程序后,虚拟应用程序可在客户端的操作系统上正常运行。
图4为虚拟应用程序包格式的示意图。如图4所示,虚拟应用程序包包括四个区域:头部区域(HEADER)、位图区域(BITMAP)、目录结构区域(DIRECTORY)和文件数据区域(DATA),其中头部区域、位图区域和目录结构区域用于存储所述虚拟应用程序包的元数据,所述文件数据区域用于存储虚拟应用程序。
更为具体地,头部区域是整个虚拟应用程序包的文件头,它包括位图区域起始位置(bitmap_offset)、文件数据区域起始位置(file_offset)、目录结构区域起始位置(root_directory_record)、文件数据区域总大小(size)、文件数据区域执行流式加载的数据块大小(block_size)和位图大小(bitmap_len)等描述信息。
位图区域用于表征文件数据区域的某数据块是否已经下载到本地(客户机),其包括分别与文件数据区域的各数据块相对应的下载标记,若某一数据块已经下载到本地,则与该数据块对应的下载标记会被标志为已完成(COMPLETED)。
目录结构区域存储了整个虚拟应用程序包的目录树信息,它包括最大为256字节的目录名称(name)字段、指向该文件目录结构(record)的下一个record(即它的第一个子目录,或当没有子目录时它的下一个兄弟目录)起始位置的extent字段。对于文件来说,extent字段为指向该record对应的文件起始位置所在镜像中的偏移值。此外,目录结构区域还可包括flag字段等,其中flag字段为该文件目录的属性,包括文件类型(例如目录、普通文件或链接等)和访问权限等。
文件数据区域用于保存实际的文件内容,即所封装的虚拟应用程序。每个虚拟应用程序在文件数据区域的偏移地址和长度由文件目录结构内的目录信息指出。各虚拟应用程序在文件数据区域连续存放,并且该文件数据区域在逻辑上划分为若干个连续的数据块,各数据块的大小与头部区域的block_size相同,数据块作为流式传输的基本单元。相应地,软件加载请求所携带的软件标识例如为虚拟应用程序存储在所述文件数据区域所占用的数据块的标识。
并且,头部区域、位图区域、目录结构区域和文件数据区域都由统一的普通头(Common Hearder)开始,该普通头不仅可以用来区分数据段类型,而且可便于后期扩展。
采用上述格式的虚拟应用程序包,包含了描述虚拟应用程序信息的全部元数据,还包括在逻辑上以块为单位排列的全部虚拟应用程序的文件数据。
软件仓库例如采用连接在Windows NT服务器侧的软件分发服务器来实现,并且该软件分发服务器可以采用任何支持流式传输的协议实现。例如采用互联网文本传输协议(HTTP),通过互联网信息服务(Internet InformationServices,IIS)或Web服务软件Apache来搭建。虚拟文件系统驱动模块可通过调用传输驱动程序接口(Windows Transport Driver Interface,TDI)自实现HTTP协议与软件仓库进行通信。
图5为虚拟文件系统驱动模块执行流式加载的流程示意图。如图5所示,虚拟文件系统驱动模块33在Windows NT客户机上运行,按以下步骤进行流式加载,其中,该虚拟文件系统驱动模块33已预先从软件仓库下载虚拟应用程序包的所有元数据:
步骤S501,接收携带有全路径名的软件加载请求;其中,该全路径名例如由用户手动输入,或由Windows NT客户机系统根据用户的点击操作自动生成;
步骤S502,检查缓存目录中是否已经存在与该全路径名对应的封装文件;若是,则执行步骤S505,若否,则执行步骤S503;
步骤S503,根据虚拟应用程序包的元数据判断软件仓库中是否存在相应的封装文件;若是,则执行步骤S504,若否,则返回错误提示信息;
步骤S504,在缓存中创建封装文件,从软件仓库下载文件头部并保存,获知所需封装文件对应的数据块;
步骤S505,通过元数据中的位图区域判断所需封装文件对应的数据块是否已下载至本地;若是,则执行步骤S507,若否,则执行步骤S506;
步骤S506,从软件仓库远程下载相应数据块并保存,修改位图区域中与该数据块对应的下载标识为已完成(COMPLETE),将数据填充至缓冲区并返回;
步骤S507,从本地读取数据块并按照相应格式填充缓冲区并返回。
根据上述实施例的流式加载虚拟文件方法,由于将虚拟应用程序封装为虚拟应用程序包,存储并发布虚拟应用程序包,响应接收到的携带有软件标识的软件加载请求,并仅当判断获知与软件标识对应的虚拟应用程序未下载至本地时,才从软件仓库下载虚拟应用程序,实现了虚拟应用程序的按需加载,克服了现有技术中需将虚拟应用程序包预先完全下载到本地而导致软件启动耗时过长的缺陷,提升了用户体验。
进一步地,在上述实施例的流式加载虚拟文件方法中,所述获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述软件仓库获取所述虚拟应用程序、加载并存储具体包括:
接收输入/输出请求包,对所述输入/输出请求包进行解析,以获取携带有全路径信息的软件加载请求;
根据预先获取的所述头部区域和所述目录结构区域对所述全路径信息进行解析,以获取与所述全路径信息对应的软件标识;
根据预先获取的所述位图区域检测获知与所述软件标识对应的虚拟应用程序未下载至本地,其中所述位图区域包括分别与所述文件数据区域的各数据块相对应的、用于标记数据块是否已下载至本地的下载标记,则从所述软件仓库获取所述虚拟应用程序、加载并存储,同时将与所述软件标识对应的数据块的下载标记更新为已下载。
进一步地,在上述实施例的流式加载虚拟文件方法中,还包括:
按照预先设置的预取规则从所述软件仓库中下载预取数据至本地并存储,同时将与所述预取数据所对应的数据块的下载标记更新为已下载。
根据上述实施例的流式加载虚拟文件方法,当某个虚拟应用程序第一次被访问时,封装文件加载层子模块创建一个预取线程,在后台预先下载数据并保存在缓存中,当数据被读取时,直接从缓存加载并返回,数据预取的顺序是按照文件被访问的顺序来下载的,这就有效减少了程序启动加载的时间。为了简化预取线程,直接对虚拟化的封装软件进行排序优化,将文件数据按照访问顺序排好,这样可以采用简单的线性的顺序预取操作。
本发明还提供一种流式加载虚拟文件系统,该流式加载虚拟文件系统包括:
虚拟应用封装模块,用于将虚拟应用程序封装为虚拟应用程序包;
软件仓库,用于存储所述虚拟应用程序包;
虚拟文件系统驱动模块,用于获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述软件仓库获取所述虚拟应用程序、加载并存储。
上述实施例的流式加载虚拟文件系统用于执行上述实施例的流式加载虚拟文件方法,故具体流程此处不再赘述。
根据上述实施例的流式加载虚拟文件系统,由于虚拟应用封装模块将虚拟应用程序封装为虚拟应用程序包,软件仓库存储并发布虚拟应用程序包,虚拟文件系统响应接收到的携带有软件标识的软件加载请求,并仅当判断获知与软件标识对应的虚拟应用程序未下载至本地时,才从软件仓库下载虚拟应用程序,实现了虚拟应用程序的按需加载,克服了现有技术中需将虚拟应用程序包预先完全下载到本地而导致软件启动耗时过长的缺陷,提升了用户体验。
进一步地,在上述实施例的流式加载虚拟文件系统中,虚拟文件系统驱动模块设置在所述Windows NT客户机的内核层。
根据上述实施例的流式加载虚拟文件系统,通过在内核层实现虚拟文件系统驱动模块,使得虚拟文件系统驱动模块与Windows NT客户机的原有模块耦合性小,从而提高了执行效率。
进一步地,在上述实施例的流式加载虚拟文件系统中,所述虚拟文件系统驱动模块用于通过所述Windows NT客户机的应用层获取携带有软件标识的软件加载请求,并若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则通过所述Windows NT客户机的网络驱动从所述软件仓库获取所述虚拟应用程序、加载并存储。
具体地,图6为虚拟文件系统驱动模块在Windows NT客户机中通信的示意图。如图6所示,虚拟文件系统驱动模块与应用层数据访问相通信,从应用层接收软件加载请求,并在接收到软件加载请求后,若判断获知该软件加载请求所请求的虚拟应用程序未下载至本地,则与Windows NT客户机的网络驱动相通信,以使网络驱动与软件仓库进行通信,获取远程封装认为修改后若判断获知该软件加载请求所请求的虚拟应用程序已下载至本地,则与Windows NT客户机的文件分配表/新技术文件系统(FAT/NTFS)相通信,以通过FAT/NTFS和磁盘驱动获取缓存封装文件。
进一步地,图7为虚拟文件系统驱动模块的结构示意图。如图7所示,虚拟文件系统驱动模块包括文件系统接口层子模块71、封装文件解析层子模块72和封装文件加载层子模块73,其中:
文件系统接口层子模块71用于接收输入/输出请求包(I/O RequestPackage,IRP),对所述IRP进行解析,以获取携带有全路径信息的软件加载请求,并将所述携带有全路径信息的软件加载请求发送至封装文件解析层子模块72;
封装文件解析层子模块72用于接收所述携带有全路径信息的软件加载请求,根据预先获取的所述头部区域和所述目录结构区域对所述全路径信息进行解析,以获取与所述全路径信息对应的软件标识,并向封装文件加载层子模块73发送携带有所述软件标识的软件加载请求;
封装文件加载层子模块73用于接收携带有所述软件标识的软件加载请求,若根据预先获取的所述位图区域检测获知与所述软件标识对应的虚拟应用程序未下载至本地,其中所述位图区域包括分别与所述文件数据区域的各数据块相对应的、用于标记数据块是否已下载至本地的下载标记,则从所述软件仓库获取所述虚拟应用程序、加载并存储,同时将与所述软件标识对应的数据块的下载标记更新为已下载。
具体地,文件系统接口层子模块71除执行IRP的解析和转发外,还维护设备信息和资源信息等。Windows NT客户机的应用层的打开、查询、映射和关闭等全部文件操作,都经由I/O管理器转发至文件系统接口层子模块71,由文件系统接口层子模块71在判断IRP所携带的参数合理后进行解析,并调用适当的派遗函数对IRP进行处理。表1为文件系统接口层子模块71所实现的派遣函数列表。
表1
IRP | 派遣函数 |
IRP_MJ_CREATE | DispatchCreate |
IRP_MJ_CLOSE | DispatchClose |
IRP_MJ_READ | DispatchRead |
IRP_MJ_QUERY_INFORMATION | DispatchQueryInformation |
IRP_MJ_SET_INFORMATION | DispatchSetInformation |
IRP_MJ_QUERY_VOLUME_INFORMATION | DispatchQueryVolumeInformation |
IRP_MJ_DIRECTORY_CONTROL | DispatchDirectoryControl |
IRP_MJ_FILE_SYSTEM_CONTROL | DispatchFileSystemControl |
IRP_MJ_LOCK_CONTROL | DispatchLockControl |
IRP_MJ_CLEANUP | DispatchCleanup |
其它 | DispatchRoutine |
封装文件解析层子模块72主要用于根据预先获取的元数据解析封装文件,按照文件系统接口层子模块71传来的携带有全路径信息的软件加载请求,依据格式回填文件数据或信息,生成携带有所述软件标识的软件加载请求。
优选地,封装文件解析层子模块72采用文件控制块(File Control Block,FCB)和上下文控制块(Context Control Block,CCB)存储并管理所述头部区域和所述目录结构区域所存储的元数据。由于封装文件解析层子模块72是该流式加载虚拟文件系统引起系统开销的关键层,因此通过使用FCB和CCB这两种数据结构来实现速度优化,能够极大地提高该流式加载虚拟文件系统的性能。
具体地,FCB以链表形式存储,用来缓存文件相关的资源信息、时间大小信息、共享控制信息、文件偏移信息等,主要目的是为系统提供控制数据、控制文件共享访问和加快信息获取速度。
当需要打开某个文件时,系统首先检查打开的FCB列表,如果不存在相应的FCB,则尝试创建一个新的FCB,否则检查FCB中的共享控制等信息,判断是否可以打开;如果打开成功,会增加FCB的引用计数,当此后需要文件相关的某些信息时,也将直接从FCB中读取;在关闭此文件时,也要减少FCB的引用计数;当引用计数为0时,标志文件已经不被使用,则从列表中删除FCB并释放空间。
CCB主要用于保存上下文相关的文件句柄信息、文件偏移信息、搜索模式串信息等。有些操作有时不能够一次执行完成,需要重复调用派遣函数,比如遍历目录信息,这就需要将某些信息存储在CCB中。这些操作是上下文相关的,在打开文件句柄时创建CCB,保存在文件对象的参数中,在关闭文件句柄时释放。
封装文件加载层子模块73为流式加载的实现层,其依据封装文件解析层子模块72提供的请求即时流式的从软件仓库中或本地获取相关数据并返回。更为具体地,封装文件加载层子模块73例如通过流控制块(Stream ControlBlock,SCB)缓存进行加速优化。封装文件解析层子模块72所发送的请求例如包括<文件(File),偏移(Offset),长度(Length)>形式的参数,表示需从封装文件“File”的偏移“Offset”处读取“Lengt”h长度数据。封装文件加载层子模块73首先检查SCB列表中是否存在“File”文件所对应的项,如果没有,则尝试创建;如果成功找到或创建SCB项,则通过SCB取得位图,检查对应的数据段在BITMAP中相应位置的标志信息,如果全部为COMPLETED,则直接读取数据返回,否则从网络下载相应数据,并且保存后将位图置位。
进一步地,在上述实施例的流式加载虚拟文件系统中,封装文件加载层子模块还用于若根据预先获取的所述位图区域检测获知与所述软件标识对应的虚拟应用程序已下载至本地,则从本地加载所述虚拟应用程序。
进一步地,在上述实施例的流式加载虚拟文件系统中,封装文件加载层子模块还用于按照预先设置的预取规则从所述软件仓库中下载预取数据至本地并存储,同时将与所述预取数据所对应的数据块的下载标记更新为已下载。
根据上述实施例的流式加载虚拟文件系统,当某个虚拟应用程序第一次被访问时,封装文件加载层子模块创建一个预取线程,在后台预先下载数据并保存在缓存中,当数据被读取时,直接从缓存加载并返回,数据预取的顺序是按照文件被访问的顺序来下载的,这就有效减少了程序启动加载的时间。为了简化预取线程,直接对虚拟化的封装软件进行排序优化,将文件数据按照访问顺序排好,这样可以采用简单的线性的顺序预取操作。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种流式加载虚拟文件方法,其特征在于,包括:
将虚拟应用程序封装为虚拟应用程序包;
存储所述虚拟应用程序包;
获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述虚拟应用程序包远程获取所述虚拟应用程序、加载并存储。
2.根据权利要求1所述的流式加载虚拟文件方法,其特征在于,所述将虚拟应用程序封装为虚拟应用程序包和所述存储并发布所述虚拟应用程序包由视窗网络终端Windows NT服务器执行;所述获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述虚拟应用程序包远程获取所述虚拟应用程序、加载并存储由Windows NT客户机执行。
3.根据权利要求1或2所述的流式加载虚拟文件方法,其特征在于,所述虚拟应用程序包包括头部区域、位图区域、目录结构区域和文件数据区域,其中所述头部区域、所述位图区域和所述目录结构区域用于存储所述虚拟应用程序包的元数据,所述文件数据区域用于存储所述虚拟应用程序;所述文件数据区域按照预设块大小逻辑划分为多个连续的数据块,所述数据块为虚拟应用程序传输的基本单元,所述软件标识为所述虚拟应用程序存储在所述文件数据区域所占用的数据块的标识。
4.根据权利要求3所述的流式加载虚拟文件方法,其特征在于,所述获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述软件仓库获取所述虚拟应用程序、加载并存储具体包括:
接收输入/输出请求包,对所述输入/输出请求包进行解析,以获取携带有全路径信息的软件加载请求;
根据预先获取的所述头部区域和所述目录结构区域对所述全路径信息进行解析,以获取与所述全路径信息对应的软件标识;
根据预先获取的所述位图区域检测获知与所述软件标识对应的虚拟应用程序未下载至本地,其中所述位图区域包括分别与所述文件数据区域的各数据块相对应的、用于标记数据块是否已下载至本地的下载标记,则从所述软件仓库获取所述虚拟应用程序、加载并存储,同时将与所述软件标识对应的数据块的下载标记更新为已下载。
5.根据权利要求4所述的流式加载虚拟文件方法,其特征在于,还包括:
按照预先设置的预取规则从所述软件仓库中下载预取数据至本地并存储,同时将与所述预取数据所对应的数据块的下载标记更新为已下载。
6.一种流式加载虚拟文件系统,其特征在于,包括:
虚拟应用封装模块,用于将虚拟应用程序封装为虚拟应用程序包;
软件仓库,用于存储所述虚拟应用程序包;
虚拟文件系统驱动模块,用于获取携带有软件标识的软件加载请求,若检测获知与所述软件标识对应的虚拟应用程序未下载至本地,则从所述软件仓库获取所述虚拟应用程序、加载并存储。
7.根据权利要求6所述的流式加载虚拟文件系统,其特征在于,所述虚拟应用封装模块和所述软件仓库在视窗网络终端Windows NT服务器上运行,所述虚拟文件系统驱动模块在Windows NT客户机上运行。
8.根据权利要求6或7所述的流式加载虚拟文件系统,其特征在于,所述虚拟应用程序包包括头部区域、位图区域、目录结构区域和文件数据区域,其中所述头部区域、所述位图区域和所述目录结构区域用于存储所述虚拟应用程序包的元数据,所述文件数据区域用于存储所述虚拟应用程序;所述文件数据区域按照预设块大小逻辑划分为多个连续的数据块,所述数据块为虚拟应用程序传输的基本单元,所述软件标识为所述虚拟应用程序存储在所述文件数据区域所占用的数据块的标识。
9.根据权利要求8所述的流式加载虚拟文件系统,其特征在于,所述虚拟文件系统驱动模块包括文件系统接口层子模块、封装文件解析层子模块和封装文件加载层子模块,其中:
所述文件系统接口层子模块用于接收输入/输出请求包,对所述输入/输出请求包进行解析,以获取携带有全路径信息的软件加载请求,并将所述携带有全路径信息的软件加载请求发送至所述封装文件解析层子模块;
所述封装文件解析层子模块用于接收所述携带有全路径信息的软件加载请求,根据预先获取的所述头部区域和所述目录结构区域对所述全路径信息进行解析,以获取与所述全路径信息对应的软件标识,并向所述封装文件加载层子模块发送携带有所述软件标识的软件加载请求;
所述封装文件加载层子模块用于接收携带有所述软件标识的软件加载请求,若根据预先获取的所述位图区域检测获知与所述软件标识对应的虚拟应用程序未下载至本地,其中所述位图区域包括分别与所述文件数据区域的各数据块相对应的、用于标记数据块是否已下载至本地的下载标记,则从所述软件仓库获取所述虚拟应用程序、加载并存储,同时将与所述软件标识对应的数据块的下载标记更新为已下载。
10.根据权利要求9所述的流式加载虚拟文件系统,其特征在于,所述封装文件加载层子模块还用于按照预先设置的预取规则从所述软件仓库中下载预取数据至本地并存储,同时将与所述预取数据所对应的数据块的下载标记更新为已下载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104017050A CN102520994A (zh) | 2011-12-06 | 2011-12-06 | 流式加载虚拟文件方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104017050A CN102520994A (zh) | 2011-12-06 | 2011-12-06 | 流式加载虚拟文件方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102520994A true CN102520994A (zh) | 2012-06-27 |
Family
ID=46291935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104017050A Pending CN102520994A (zh) | 2011-12-06 | 2011-12-06 | 流式加载虚拟文件方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102520994A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202332A (zh) * | 2014-10-11 | 2014-12-10 | 中南大学 | 基于Linux内核的移动设备虚拟化系统及即时安装方法 |
CN105354320A (zh) * | 2015-11-16 | 2016-02-24 | 天津南大通用数据技术股份有限公司 | 一种快速加载多个数据文件的方法及装置 |
CN107104955A (zh) * | 2017-04-10 | 2017-08-29 | 深信服科技股份有限公司 | 一种应用发布方法及应用发布系统 |
CN108052536A (zh) * | 2017-11-16 | 2018-05-18 | 中南大学 | 一种IoT设备的文件系统 |
CN110245135A (zh) * | 2019-05-05 | 2019-09-17 | 华中科技大学 | 一种基于numa架构的大规模流式图数据更新方法 |
CN111125007A (zh) * | 2019-12-18 | 2020-05-08 | 鹏城实验室 | 应用封装方法、设备及可读存储介质 |
CN114879986A (zh) * | 2022-07-13 | 2022-08-09 | 紫光同芯微电子有限公司 | 用于程序包下载解析的方法及装置、终端设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081528A (zh) * | 2009-11-26 | 2011-06-01 | 冼剑光 | 一种大型软件边下载边运行的方法 |
-
2011
- 2011-12-06 CN CN2011104017050A patent/CN102520994A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081528A (zh) * | 2009-11-26 | 2011-06-01 | 冼剑光 | 一种大型软件边下载边运行的方法 |
Non-Patent Citations (2)
Title |
---|
崔亚兵;钟亮;康俊彬;沃天宇: "一种面向虚拟化软件的流式加载虚拟文件系统", 《小型微型计算机系统》, no. 11, 30 November 2011 (2011-11-30) * |
钟亮;胡春明;沃天宇;李建欣;康俊彬: "支持软件按需流式加载的预取机制", 《计算机研究与发展》, 31 July 2011 (2011-07-31) * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202332A (zh) * | 2014-10-11 | 2014-12-10 | 中南大学 | 基于Linux内核的移动设备虚拟化系统及即时安装方法 |
CN104202332B (zh) * | 2014-10-11 | 2017-07-28 | 中南大学 | 基于Linux内核的移动设备虚拟化系统及即时安装方法 |
CN105354320A (zh) * | 2015-11-16 | 2016-02-24 | 天津南大通用数据技术股份有限公司 | 一种快速加载多个数据文件的方法及装置 |
CN107104955A (zh) * | 2017-04-10 | 2017-08-29 | 深信服科技股份有限公司 | 一种应用发布方法及应用发布系统 |
CN107104955B (zh) * | 2017-04-10 | 2020-09-11 | 深信服科技股份有限公司 | 一种应用发布方法及应用发布系统 |
CN108052536A (zh) * | 2017-11-16 | 2018-05-18 | 中南大学 | 一种IoT设备的文件系统 |
CN110245135A (zh) * | 2019-05-05 | 2019-09-17 | 华中科技大学 | 一种基于numa架构的大规模流式图数据更新方法 |
CN110245135B (zh) * | 2019-05-05 | 2021-05-18 | 华中科技大学 | 一种基于numa架构的大规模流式图数据更新方法 |
CN111125007A (zh) * | 2019-12-18 | 2020-05-08 | 鹏城实验室 | 应用封装方法、设备及可读存储介质 |
CN114879986A (zh) * | 2022-07-13 | 2022-08-09 | 紫光同芯微电子有限公司 | 用于程序包下载解析的方法及装置、终端设备及存储介质 |
CN114879986B (zh) * | 2022-07-13 | 2022-09-16 | 紫光同芯微电子有限公司 | 用于程序包下载解析的方法及装置、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102520994A (zh) | 流式加载虚拟文件方法及系统 | |
EP3408745B1 (en) | Automatically updating a hybrid application | |
US10212563B2 (en) | Updating web resources | |
CN103116618B (zh) | 基于客户端持久缓存的远程文件系统镜像方法及系统 | |
US8745076B2 (en) | Structured query language syntax rewriting | |
US10664196B2 (en) | Random access file management | |
US20100138479A1 (en) | Software operating system and the software-operating method thereof | |
CN101615159B (zh) | 离线测试系统及其本地数据管理方法及相应的装置 | |
US6807559B1 (en) | System and method for applet management | |
CN102480397A (zh) | 访问互联网页面的方法及设备 | |
CN106506587A (zh) | 一种基于分布式存储的Docker镜像下载方法 | |
CN109564529A (zh) | 基于符号链接的占位符 | |
CN104820602A (zh) | 软件包发布方法、装置及系统 | |
KR101991537B1 (ko) | 자율형 네트워크 스트리밍 기법 | |
US20170249331A1 (en) | Adapting to heterogeneous backend targets in a storage system | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN102520995B (zh) | 软件远程流式加载方法及系统 | |
CN101977217A (zh) | Widget更新方法、系统、Widget客户端及Widget服务器 | |
CN106406748A (zh) | 存储器中心数据库架构 | |
CN111797119B (zh) | 一种缓存装置、系统及缓存方法 | |
US20040117437A1 (en) | Method for efficient storing of sparse files in a distributed cache | |
CN112231055A (zh) | 一种镜像管理方法和装置 | |
CN107408055B (zh) | 代码缓存系统 | |
Zhang et al. | Optimizing the storage of massive electronic pedigrees in HDFS | |
US20030217196A1 (en) | Software on demand system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120627 |