应用软件的安装方法和应用软件的安装装置
技术领域
本发明涉及计算机及通信技术领域,尤其涉及一种应用软件的安装方法及一种应用软件的安装装置。
背景技术
硬件虚拟化技术在一台物理主机上虚拟出一台或多台虚拟机,从而使得几个甚至几十个虚拟机可以共用一个物理主机的硬件资源。云计算是硬件虚拟化技术的一个重要应用场景。云计算是指一种信息技术基础设施的交付和使用模式,用户通过网络以按需、易扩展的方式来获得所需资源。云计算也被推广为服务的交付和使用模式,用户通过网络以按需、易扩展的方式来获得所需服务。云计算的核心思想,是将大量用网络连接的资源(这里的资源包括存储资源、计算资源、各种应用软件)统一管理和调度,构成一个资源池向用户按需提供服务。提供资源的网络被称为“云”。
在云计算场景下,在“云”根据用户的申请,分配一个虚拟机供用户使用的情况下,如果用户想要在虚拟机中安装应用软件,则安装过程包括:
用户启动虚拟机,进入操作系统后,手动触发浏览器或客户端工具连接能够提供应用软件的资源服务器,请求下载应用软件;虚拟机在从资源服务器下载到应用软件后进行安装,或者;
用户启动虚拟机后,在虚拟机操作系统后台会自动运行资源更新客户端,该客户端会向资源服务器发送上线提示消息。接收到上线提示消息后,资源服务器会根据预先配置的推送策略,将应用软件推送到虚拟机上。
发明人在实现本发明过程中,发现现有技术至少存在以下问题:需要在虚拟机中预先安装浏览器或客户端工具,以获得需要安装的应用软件。并且,如何选择安全、适宜的应用软件的版本、及安装包,需要用户具备较高的信息技术知识和技能。因此现有技术存在着应用软件的安装过程操作复杂,实施难度大的问题。
发明内容
本发明实施例提供一种应用软件的安装方法,用以解决现有应用软件的安装过程操作复杂,实施难度大的问题。
对应地,本发明实施例还提供了一种应用软件包的创建方法、一种应用软件的安装装置和一种应用软件包的创建装置。
本发明实施例提供的技术方案如下:
一种应用软件的安装方法,包括:
挂载虚拟机的镜像数据,所述虚拟机为待安装应用软件的虚拟机,将所述镜像数据映射为本地文件系统中的一个虚拟磁盘;
根据所述应用软件的应用软件包所包含的注册表变更记录数据,更新所述虚拟磁盘中的注册表文件,所述应用软件包包含安装过程中增加或修改的文件、注册表变更记录数据和文件变更记录数据,所述注册表变更记录数据和文件变更记录数据是根据安装所述应用软件前后主机操作系统环境的差异获得的;
根据所述文件变更记录数据、以及应用软件包包含的安装过程中增加或修改的文件,更新所述虚拟磁盘中的文件结构,从而实现在所述虚拟机中安装所述应用软件。
一种应用软件包的创建方法,包括:
获取安装应用软件前后主机操作系统环境的差异;
根据所述差异,确定注册表变更记录数据和文件变更记录数据;
生成包含所述注册表变更记录数据和文件变更记录数据、以及安装程序过程中所述主机中增加或修改的文件的应用软件包。
一种应用软件的安装装置,包括:
挂载模块,用于挂载虚拟机的镜像数据,所述虚拟机为待安装应用软件的虚拟机,将所述镜像数据映射为本地文件系统中的一个虚拟磁盘;
第一更新模块,用于根据所述应用软件的应用软件包所包含的注册表变更记录数据,更新所述虚拟磁盘中的注册表文件,所述应用软件包包含安装过程中增加或修改的文件、注册表变更记录数据和文件变更记录数据,所述注册表变更记录数据和文件变更记录数据是根据安装所述应用软件前后主机操作系统环境的差异获得的;
第二更新模块,用于根据所述文件变更记录数据、以及应用软件包包含的安装过程中增加或修改的文件,更新所述虚拟磁盘中的文件结构,从而实现在所述虚拟机中安装所述应用软件。
一种应用软件包的创建装置,包括:
获取单元,用于获取安装应用软件前后主机操作系统环境的差异;
确定单元,用于根据获取单元获得的所述差异,确定注册表变更记录数据和文件变更记录数据;
创建单元,用于生成应用软件包,该应用软件包包含确定单元确定出的所述注册表变更记录数据和文件变更记录数据、以及安装程序过程中所述主机中增加或修改的文件。
本发明实施例先通过挂载待安装应用软件的虚拟机的镜像数据,将其映射为软件安装服务器文件系统中的一个虚拟磁盘;然后根据应用软件包的注册表变更记录数据,更新所述驱动器中的注册表文件;根据应用软件包中安装过程中增加或修改的文件、以及文件变更记录数据,更新所述虚拟磁盘中的文件结构,从而实现安装应用软件的目的。在安装应用软件的过程中,无需预先在虚拟机中安装浏览器或客户端工具,也无需虚拟机用户进行复杂的操作,对用户而言降低了软件安装难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的主要实现原理流程图;
图2a为本发明实施例提供的应用软件包的创建过程的流程图;
图2b为本发明实施例提供的一种获取安装应用软件前后主机操作系统环境的差异的方式的流程图;
图2c为本发明实施例提供的生成应用软件包的流程图;
图2d为本发明实施例提供的应用软件包的示意图;
图3a为本发明实施例提供的软件安装系统的部署环境示意图;
图3b为本发明实施例提供的镜像数据在存储区域网络(SAN,Storage AreaNetwork)中存储的示意图;
图3c为本发明实施例提供的镜像数据在网络附属存储(NAS,NetworkAttached Storage)中存储的示意图;
图4为本发明实施例提供的一种应用软件安装方法的流程图;
图5为本发明实施例提供的另一种应用软件安装方法的流程图;
图6a为本发明实施例提供的另一种软件安装系统的部署环境示意图;
图6b为本发明实施例提供的另一种应用软件安装方法的流程图;
图7为本发明实施例提供的一种应用软件的安装装置的结构示意图;
图8为本发明实施例提供的挂载模块的结构示意图;
图9a为本发明实施例提供的第一种确定单元的结构示意图;
图9b为本发明实施例提供的第二种确定单元的结构示意图;
图10为本发明实施例提供的一种应用软件包的创建装置的结构示意图;
图11为本发明实施例提供的创建单元的结构示意图。
具体实施方式
现有技术除了存在安装过程操作复杂,实施难度大的问题之外,由于各虚拟机中防火墙配置的差异,用户采用类似的安装过程可能出现在有的虚拟机中能够安装成功,而在其他虚拟机中安装失败的情况。
另外,如果出于安全、可靠性等方面的考虑,需要对一定范围内的大量虚拟机都安装应用软件时,采用现有的安装方法还存在着效率较低、不可控的缺陷。
下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
如图1所示,本发明实施例的主要实现原理流程如下:
步骤10,挂载待安装应用软件的虚拟机的镜像数据,将所述镜像数据映射为本地文件系统中的一个虚拟磁盘。
其中,镜像数据是指虚拟机实例的静态存储形式,其中包含虚拟机操作系统文件和用户文件等。在云计算基础设施构架中,虚拟机的存储资源和运行资源可能分布在不同的物理实体中。当分配某个用户使用一个虚拟机时,用于启动虚拟机的物理主机通过加载该虚拟机的镜像数据,实现启动虚拟机的目的。
镜像数据载荷内容(包括虚拟机操作系统文件和用户文件等)的存储方式与个人计算机中数据的存储方式相同,即用于存储数据的物理磁盘扇区中的字段定义等相同。差别之处在于不同的虚拟机厂商在载荷内容的基础上进行了封装,增加了数据头,或者有的厂商还对镜像数据进行了压缩等处理。
挂载具体来说,在不同操作系统中,挂载操作结果的形式也会有所不同。在本实施例中,虚拟磁盘是指可被软件安装服务器的操作系统识别出的存储对象。在软件安装服务器为Windows系列操作系统的情况下,挂载完成后,镜像数据被映射为软件安装服务器文件系统中的一个驱动器;在软件安装服务器为Linux、UNIX系列操作系统的情况下,挂载完成后,镜像数据被映射为软件安装服务器文件系统中的一个块设备。无论是驱动器还是块设备,后续的操作原理基本类似。
步骤20,根据所述应用软件的应用软件包中的注册表变更记录数据,更新所述虚拟磁盘中的注册表文件。
本领域技术人员可以理解,数据的组织方式千变万化,不可能将其进行一一列举。可选地,本实施例给出了应用软件包所包含的注册表变更记录数据、文件变更记录数据、以及安装过程中增加或修改的文件,这三类数据的一种组织方式:
所述应用软件包中包括变更记录文件、以及安装过程中增加或修改的文件。
所述变更记录文件至少包含注册表变更记录数据和文件变更记录数据,所述注册表变更记录数据和文件变更记录数据是预先在主机(例如,一台物理主机)中执行所述应用软件的安装程序,通过对比运行安装程序前后所述主机操作系统环境快照间的差异获得的。具体来说:所述注册表变更记录数据是通过对比执行软件安装程序前后快照中,注册表文件之间的差异获得的;所述注册表变更记录数据包括增加、删除或修改的键,增加、删除或修改的值。所述文件变更记录数据是通过对比运行软件安装程序前后快照中,文件结构之间的差异获得的,所述文件变更记录数据包括磁盘中增加、删除或修改文件的记录,或增加、删除或修改目录的记录。
步骤30,根据应用软件包中的文件变更记录数据、以及应用软件包包含的安装过程中增加或修改的文件,更新所述虚拟磁盘中的文件结构。
在步骤10中,待安装应用软件的虚拟机的镜像数据可以是根据用户申请虚拟机时,输入的硬件配置参数和操作系统版本标识生成的,即该镜像数据是在创建虚拟机的过程中生成的,在这种情况下,应用软件包是根据申请虚拟机时,输入的预装软件标识从应用软件资源库中获取的;待安装应用软件的虚拟机的镜像数据也可以是虚拟机创建完成后,接收到用户指定的待安装的软件标识后,获取虚拟机镜像数据的存储位置,并根据获取的存储地址获得的,在这种情况下,应用软件包是根据用户输入的预装软件标识,或者虚拟机管理系统指示的需要安装的软件标识,从应用软件资源库中查找到的。
需要说明的是,上述步骤20和步骤30并无执行顺序上的限制,当步骤20和步骤30执行完成后,可以实现在所述虚拟机中安装所述应用软件的目的。
下面将依据本发明上述发明原理,详细介绍四个实施例来对本发明方法的主要实现原理进行详细的阐述和说明。
实施例一
附图2a是本发明实施例提供的应用软件包的创建过程的流程图。
步骤200,应用软件包的创建装置获取安装应用软件前后主机操作系统环境的差异。
步骤210,应用软件包的创建装置根据所述差异,确定注册表变更记录数据和文件变更记录数据。
所述注册表变更记录数据中包含在安装所述应用软件后,主机注册表中增加、删除或修改的键,或者增加、删除或修改的值。当然注册表变更记录数据可以既包含注册表中增加、删除或修改的键,也包含增加、删除或修改的值。
所述文件变更记录数据中包含在安装所述应用软件后,磁盘中增加、删除或修改文件的记录,或增加、删除或修改目录的记录。
步骤220,应用软件包的创建装置生成包含所述注册表变更记录数据和文件变更记录数据、以及安装程序过程中增加或修改的文件的应用软件包。
可选地,在上述步骤200中获取安装应用软件前后主机操作系统环境的差异的方式,包括但不限于以下三种:
方式一:参照附图2b:
步骤201,应用软件包的创建装置将应用软件提供商提供的待安装应用软件的安装包复制到主机host0的操作系统环境中。
可选地,为了便于在后续生成快照时减少不必要的垃圾信息,提高快照对比效率,此时应用软件包的创建装置应根据注册表文件中的信息,选择一个具有“干净”的操作系统环境的主机作为用于创建应用软件包的专用主机,“干净”的操作系统环境是指安装有尽可能少的非必要应用软件的操作系统,例如未安装任何其他应用软件时的操作系统。
步骤202,应用软件包的创建装置对当前主机操作系统环境建立第一快照。所述主机操作系统环境包含注册表和磁盘。
其中,注册表(Registry)是操作系统中的一个重要数据库,用于存储系统和应用程序的配置信息。
对注册表建立快照是指通过枚举方式记录注册表中的所有键和值。对磁盘建立快照是指通过枚举方式记录磁盘上的文件结构信息,即所有目录和文件、以及目录和文件的存储路径、修改时间和大小等信息。
此时建立的第一快照反映了在安装所述应用软件之前,host0注册表和磁盘的状态信息。
步骤203,应用软件包的创建装置在所述主机host0中安装所述应用软件。
例如,通常现有的应用软件包中都包含可执行文件格式的安装程序,如setup.exe,运行该安装程序即可实现实现安装应用软件的目的。
步骤204,应用软件包的创建装置对当前主机操作系统环境建立第二快照。
建立快照的方法参照步骤202中的介绍。此时建立的第二快照反映了在安装所述应用软件之后,host0注册表和磁盘的状态信息。
步骤205,应用软件包的创建装置对比第一快照和第二快照,根据第一快照和第二快照的差异,确定安装应用软件前后主机操作系统环境的差异,并继而从中获得注册表变更记录数据和文件变更记录数据。可选地,为了加快对比的效率,可以预先指定磁盘中的对比范围,例如指定只对比预定磁盘扇区中、或者存储路径下的文件、目录的改变。
方式二:预先选择两个操作系统环境完全相同的主机,分别为host1和host2。应用软件包的创建装置将待安装应用软件提供商提供的安装包复制到主机host2的操作系统环境中,并在host2中运行所述安装包中的安装程序;应用软件包的创建装置对比此时host1和host2操作系统环境的差异,从而获得安装应用软件前后主机操作系统环境的差异。
方式三:应用软件包的创建装置对应用软件提供商提供的安装包中的安装程序进行反向编译,从反向编译结果中获得对操作系统环境所做的操作符,例如修改注册表文件的操作符,以及在文件系统中增加或修改文件的操作符,从而推断安装应用软件前后主机操作系统环境预期应有的差异。
可选地,参照附图2c,上述步骤220生成应用软件包的过程包括:
步骤221,将所述注册表变更记录数据和文件变更记录数据写入变更记录文件;
可选地,可以使用描述语言,如可扩展标记语言(XML,Extensible MarkupLanguage),来描述注册表变更记录数据和文件变更记录数据,并将使用描述语言描述的注册表变更记录数据和文件变更记录数据写入变更记录文件。变更记录文件的格式不限,可以是文本格式文件。
步骤222,对所述变更记录文件,和安装程序过程中增加或修改的文件进行打包处理,生成所述应用软件的应用软件包。
附图2d为本发明实施例提供的应用软件包的示意图,其中变更记录文件中记录了在路径C;/programe file/abc/下,增加一个名为fileA的文件,在注册表中增加一个值key1.value1;应用软件包中还包括增加的文件fileA。
可选地,通过打包程序,例如rar(Roshal ARchive)、zip,将变更记录文件和安装程序过程中增加或修改的文件进行打包封装,从而生成应用软件包。
需要说明的是:上述第一快照和第二快照并不是表示顺序关系,而是为了区别不同的快照,下文中提到的第一、第二等也是为了区别不同的信息、数据、请求、消息或单元模块等。
本发明实施例提供了一种应用软件包的创建方案,利用采用该创建方案创建的应用软件包,可用于对虚拟机的镜像数据进行修改,从而实现在虚拟机中安装应用软件的目的。
实施例二
附图3a为本发明实施例提供的软件安装系统的部署环境示意图,是一种较为典型的云计算基础实施构架。该系统中包含至少一个软件安装服务器,至少一个弹性计算控制器,至少一个物理主机、以及分布式存储设备。其中,弹性计算控制器是现有云计算基础设施构架中的一个核心组成部分,是管理存储资源、计算资源、以及其他资源的中枢。弹性计算控制器根据用户的申请为用户分配存储资源、计算资源,控制在分布式存储设备中创建虚拟机的镜像数据。在本实施例中,每个虚拟机的镜像数据存储于分布式存储设备中,其中分布式存储设备以SAN和NAS分别为例进行说明。软件安装服务器与应用软件资源库连接,应用软件资源库中存储有至少一个采用附图2a所示方法创建的应用软件包。
需要说明的是:附图3a所示的只是一种云计算基础实施构架的示例,本发明实施例提供的软件安装方法也适用于其他构架场景。
本发明实施例提供了一种应用软件的安装方法,该安装方法是基于附图2a所示方法创建的应用软件包,在附图3a所示的场景中进行的,用于实现在用户申请虚拟机的过程中安装软件,具体流程请参照附图4。
步骤410,弹性计算控制器接收用户申请虚拟机时输入的硬件配置参数、操作系统版本标识、和预装软件标识。
用户在申请虚拟机时,可以根据虚拟机申请页面中提供的虚拟机管理系统能够支持的若干配置选项中,选择出所申请的虚拟机应具备的硬件配置参数、操作系统版本标识、和预装软件标识等;用户可以通过物理主机中的客户端工具发送虚拟机申请请求消息,该请求消息中携带选择出的硬件配置参数、操作系统版本标识、和预装软件标识。
当然,上述硬件配置参数、操作系统版本标识、和预装软件标识也可以是虚拟机管理系统提供的默认配置选项,例如,用户在选择典型安装时,根据默认的配置参数、操作系统版本标识、和预装软件标识生成镜像数据。
步骤420,弹性计算控制器根据用户申请虚拟机时,输入的硬件配置参数和操作系统版本标识,控制在分布式存储设备中创建虚拟机镜像数据。
具体地,根据硬件配置参数配置虚拟机硬件规格,根据操作系统版本标识从操作系统模板集合中选择对应的操作系统模板;然后根据虚拟机硬件规格和操作系统模板创建虚拟机镜像数据。本实施例中,根据用户申请创建虚拟机WM1的镜像数据WMdata1。
镜像数据在分布式存储设备中的存储方式与分布式存储设备的类型有关。例如对于SAN来说,虚拟机镜像数据为指定存储空间(即虚拟机镜像数据区)内的硬盘扇区数据。其他设备,例如用于启动虚拟机的物理主机,可以用在访问请求中携带“IP地址+端口号”的方式来访问SAN上的待启动虚拟机对应的虚拟机镜像数据区,“IP地址+端口号”对应着SAN中的一块存储区。如附图3b所示。
对于NAS来说,虚拟机镜像数据为指定存储路径下的镜像文件。其他设备,例如用于启动虚拟机的物理主机,可以通过网络文件系统(NFS,NetworkFile Svstem)来访问NAS上的待启动虚拟机对应的虚拟机镜像文件。如附图3c所示。
在表1中虚拟机VM1和WM2的镜像数据存储在NAS中,而虚拟机VM3的镜像数据存储在NAS中。
需要说明的是:附图3a所示的只是一种云计算基础实施构架的示例,本发明实施例提供的应用软件的安装方法也适用于其他构架场景,例如在其他构架场景中是由管理数据库来维护虚拟机标识和镜像数据地址的对应关系。
表1
步骤430,软件安装服务器确定所述虚拟机镜像数据的类型。
可选地,确定镜像数据类型的方式包括但不限于:
方式一:
软件安装服务器先测试是否能够从虚拟机镜像数据的存储位置,成功读取镜像数据的数据头,所述虚拟机镜像数据的存储位置可以是SAN或NAS通知软件安装服务器的。
若能够成功读取镜像数据的数据头,则根据所述数据头,确定所述镜像数据的类型。例如,根据镜像数据格式的定义,读取数据头中的文件类型字段,将读取的字段与各类型标识进行比较,若一致,则确定虚拟机镜像数据的类型为与读取的字段一致的类型标识对应的文件类型。镜像数据的类型包括QCOW(QEMU Copy-on-write)、VMDK(VMWare Virtual Machine Disk Format)、VHD(Microsoft Virtual Hard Disk format)、VDI(Sun xVM VirtualBox Virtual DiskImages)等等,一种虚拟机系统可以兼容多种镜像数据类型。
若不能成功读取镜像数据的数据头,则测试按照RAW格式是否能够成功解析所述镜像数据,若解析操作成功,则确定所述镜像数据的类型为RAW格式。RAW格式存储镜像数据的方式与个人计算机中存储数据的方式相同,即与物理磁盘数据是1:1的对应关系,未在物理磁盘数据上进行封装,因此按照物理磁盘数据格式进行解析,物理磁盘数据格式的特征包括但不限于:第0扇区(首个512字节)是主引导记录(MBR,Main Boot Record),该扇区末尾存在签名字“55AA”;以第0扇区初始位置为基准,偏移量为01BEH-01FDH的数据是磁盘分区表,其中包含描述各分区文件系统标识的字段,等等。
方式二:
当根据用户的虚拟机申请,创建虚拟机实例对应的镜像数据时,将每个虚拟机的镜像数据的类型标识记录在数据库中,在本实施例中,可以将类型标识记录在弹性计算控制器维护的管理列表中,如表2所示。当软件安装服务器需要获知某个虚拟机镜像数据的类型时,如需要获知虚拟机WM1的镜像数据类型时,通过与弹性计算控制器进行消息交互,来获得弹性计算控制器管理列表中存储的镜像数据的类型。例如软件安装服务器向弹性计算控制器发送携带有虚拟机标识“WM1”或虚拟机镜像数据的存储位置“192.168.0.1:/vmimages/vm1.QCOW”的类型确认请求消息,弹性计算控制器根据携带的虚拟机标识或虚拟机镜像数据的存储位置,查询管理列表,并将查找到的镜像数据的类型“raw”携带在类型确认响应消息中返回给软件安装服务器。软件安装服务器从类型确认响应消息中提取携带的镜像数据的类型即可。
表2
在本实施例中,为用户创建的虚拟机镜像数据WMdata1的类型为QCOW。
步骤440,软件安装服务器根据所述镜像数据类型,调用对应的挂载程序挂载虚拟机镜像数据。
在本实施例中,软件安装服务器根据镜像数据WMdata1的类型QCOW,调用文件类型QCOW对应的挂载程序挂载镜像数据WMdata1。
现有操作系统大多都提供能够实现挂载功能的命令或命令集合,如linux系统中的mount、kpartx等命令。
挂载过程中,根据镜像数据类型与文件系统类型的对应关系,确定虚拟机镜像数据内部的文件系统类型(即虚拟机的文件系统类型)。镜像数据内部的文件系统类型可以为16位文件分配表(FAT16,File Allocation Table)、FAT32、第二扩展文件系统(EXT2,Second extended file system)、第三扩展文件系统(EXT3,Third extended file system)、网络文件系统(NTFS,Network File System)等,在挂载过程中需要使用文件系统类型对应的驱动程序来实现对文件系统的支持。
对于SAN来说,指定存储空间内的硬盘扇区数据经驱动程序的处理被映射为驱动器,驱动器中包含若干文件。
对于NAS来说,指定存储路径下的镜像文件经驱动程序的处理被映射为驱动器,驱动器中包含若干文件。
挂载完成后,镜像数据被映射为软件安装服务器文件系统中的一个驱动器,后续对该驱动器中文件的操作等价于对虚拟机内文件的操作。
软件安装服务器挂载镜像数据WMdata1后,将镜像数据映射为驱动器DriverW1。
步骤450,软件安装服务器根据所述预装软件标识,从应用软件资源库中获取对应的应用软件包。
在本实施例中,以安装定时器软件对应的应用软件包clock-Package为例进行说明。应用软件包中包括变更记录文件,以及安装过程中修改或增加的文件。变更记录文件中包括注册表变更记录数据和文件变更记录数据。
步骤460,软件安装服务器根据应用软件包所包含的变更记录文件中的注册表变更记录数据,更新所述驱动器中的注册表文件。
在本实施例中,以用户申请虚拟机时输入的操作系统版本标识为WindowsXP为例,挂载镜像文件后驱动器DriverW1中包含的注册表文件包括:
DriverW1:\WINDOWS\system32\config\SAM
DriverW1:\WINDOWS\system32\config\SECURITY
DriverW1:\WINDOWS\system32\config\software
DriverW1:\WINDOWS\system32\config\system
DriverW1:\WINDOWS\system32\config\default
DriverW1:\Documents and Settings\LocalService\NTUSER.DAT
DriverW1:\Documents and Settings\LocalService\Local Settings\ApplicationData\Microsoft\Windows\UsrClass.dat
DriverW1:\Documents and Settings\NetworkService\NTUSER.DAT
DriverW1:\Documents and Settings\NetworkService\Local Settings\ApplicationData\Microsoft\Windows\UsrClass.dat
DriverW1:\Documents and Settings\Administrator\NTUSER.DAT
DriverW1:\Documents and Settings\Administrator\Local Settings\ApplicationData\Microsoft\Windows\UsrClass.dat
注册表文件的格式为HIVE格式,一个HIVE文件由多个巢箱(BIN)组成。HIVE文件的首部有一个文件头(基本块),用于描述这个HIVE文件的一些全局信息。一个BIN由多个巢室(CELL)组成,CELL可以分为具体的5种(键巢室、值巢室、子键列表巢室、值列表巢室、安全描述符巢室),用于存储不同的注册表数据,上述注册表文件中的内容从逻辑上可以被映射成注册表树。具体说明可以参考相关文档,在这里不再详述。
变更记录文件中的注册表变更记录数据包含上述至少一个注册表文件中一个CELL的内容(即至少一个键或值),以及对该CELL所需执行的操作类型,如增加、删除或修改等等。
根据注册表变更记录数据中包含的CELL的内容、及对该CELL所需执行的操作类型,以及CELL对应的键或值的位置,对驱动器DriverW1中注册表文件进行更新。
步骤470,软件安装服务器根据应用软件包中包含的安装过程中增加或修改的文件、以及变更记录文件中的文件变更记录数据,更新所述驱动器中的文件结构。
软件安装服务器根据变更记录文件中的文件变更记录数据,在所述驱动器中增加、删除或修改文件,或增加、删除或修改目录,从而更新所述驱动器中的文件结构。具体地,根据文件变更记录数据中删除文件的记录,在磁盘中删除对应路径下的文件;或者根据文件变更记录数据中增加、或修改文件的记录,以及应用软件包中安装过程中增加或修改的文件,在磁盘中修改已有文件或增加文件。其中,增加、删除或修改的文件都有对应的路径信息,文件操作可以使用脚本程序来实现文件操作。
步骤480,软件安装服务器取消挂载虚拟机的镜像数据。
后续需要启动虚拟机时,用于启动该虚拟机的物理主机,从该虚拟机镜像数据的存储地址中读取经过步骤430~步骤480处理的镜像数据进行加载后,所启动的虚拟机上已安装有应用软件。
本发明实施例提供了另一种应用软件的安装方法,该安装方法是基于附图2a所示方法创建的应用软件包,在附图3a所示的场景中进行的,用于实现在已为用户分配虚拟机后,安装软件,具体流程请参照附图5。
在本实施例中,弹性计算控制器存储的管理列表中存储有用于启动每个虚拟机的物理主机的标识、每个虚拟机的镜像数据的存储地址等信息,如表1所示,表1描述了镜像数据存储于SAN中的情况。当分配某个用户使用一个虚拟机时,通过读取该管理列表,指示用于启动该虚拟机的物理主机,从该虚拟机镜像数据的存储地址中读取镜像数据进行加载,从而启动虚拟机。
步骤510,弹性计算控制器接收软件安装请求消息,该软件安装请求消息可以是用户发送的,也可以是虚拟机管理系统发送的,如需要对指定范围内的每个虚拟机安装一个杀毒软件等等。软件安装请求消息中携带虚拟机标识和待安装应用软件标识。
步骤520,软件安装服务器获得所述虚拟机标识对应的虚拟机镜像数据的存储位置。
可选地,在本实施例中,软件安装服务器与弹性计算控制器进行消息交互,来获得弹性计算控制器管理列表中虚拟机WM1对应的镜像数据的存储位置。
步骤530,软件安装服务器确定所述虚拟机镜像数据的类型。
具体确定镜像数据类型的方法可参照步骤430中的介绍,在这里不再重复。
步骤540,软件安装服务器根据所述镜像数据类型,调用对应的挂载程序挂载虚拟机镜像数据,将所述镜像数据映射为软件安装服务器文件系统中的一个虚拟磁盘。
步骤550,软件安装服务器根据所述待安装应用软件标识,从应用软件资源库中获取对应的应用软件包。
步骤560,软件安装服务器根据应用软件包所包含的变更记录文件中的注册表变更记录数据,更新所述虚拟磁盘中的注册表文件。
步骤570,软件安装服务器根据应用软件包中安装过程中增加或修改的文件、以及变更记录文件中的文件变更记录数据,更新所述虚拟磁盘中的文件结构。
步骤580,软件安装服务器取消挂载虚拟机的镜像数据。
步骤540~步骤580的具体处理方式与附图4中的步骤440~步骤480相类似,在这里不再重复。
本发明实施例提供的应用软件的安装方法,先挂载待安装应用软件的虚拟机的镜像数据,挂载完成之后,该虚拟机的镜像数据被映射为软件安装服务器文件系统中的一个虚拟磁盘。根据应用软件包的注册表变更记录数据,更新所述驱动器中的注册表文件;根据应用软件包中安装过程中增加或修改的文件、以及文件变更记录数据,更新所述虚拟磁盘中的文件结构,从而实现安装应用软件的目的。在安装应用软件的过程中,无需预先在虚拟机中安装浏览器或客户端工具,从而节约了存储资源,同时也无需虚拟机用户进行复杂的操作,对用户而言降低了软件安装难度。
在需要对大范围内数目较多的虚拟机同步安装应用软件时,本发明实施例提供的软件安装方案能够从软件安装服务器的角度,控制每个虚拟机安装应用软件的进程,从而确保软件安装范围的可控性。
实施例三
本发明实施例提供的应用软件的安装方法除了可应用于附图3a所示的云计算基础实施构架中之外,还适用于其他较为简单的虚拟机应用场景。在这种情况下附图4所示的各步骤可以由同一个实体设备来实现,但基本原理与附图4相类似。
附图6a为本发明实施例提供的应用场景的示意图,需要在物理主机host上创建3个虚拟机VM1、VM2、VM3以实现并行计算或软件测试。物理主机的安装管理模块根据用户输入的虚拟机创建需求创建虚拟机。
附图6b为本发明实施例提供的应用软件安装方法的流程图。
步骤610,物理主机的安装管理模块接收用户输入的硬件配置参数、操作系统版本标识、和预装软件标识。
可选地,用户可以通过安装管理模块的用户界面来输入创建需求。
步骤620,物理主机的安装管理模块根据硬件配置参数和操作系统版本标识,在该物理主机中创建虚拟机镜像数据。
在创建虚拟机镜像数据的过程中,可以维护一个存储有虚拟机标识和虚拟机镜像数据存储位置的对应关系表,如表3所示。
表3
虚拟机标识 |
虚拟机镜像数据的存储地址 |
VM1 |
E:/vmimages/vm1.QCOW |
VM2 |
E:/vmimages/vm2.vmdk |
VM3 |
E:/vmimages/vm3.vmdk |
...... |
...... |
步骤630,安装管理模块确定所述虚拟机镜像数据的类型。
具体确定镜像数据类型的方法可参照步骤430中的介绍,在这里不再重复。
可选地,安装管理模块在步骤620中创建指定格式的虚拟机镜像数据,如QCOW,则在本步骤中可以确定虚拟机镜像数据的类型为所述指定格式。
步骤640,安装管理模块根据所述镜像数据类型,调用对应的挂载程序挂载虚拟机镜像数据,将所述镜像数据映射为物理主机文件系统中的一个虚拟磁盘。
步骤650,安装管理模块根据所述待安装应用软件标识,从存储的至少一个应用软件包中查找到该待安装应用软件标识对应的应用软件包。
应用软件包中包括变更记录文件,以及安装过程中修改或增加的文件。变更记录文件中包括注册表变更记录数据和文件变更记录数据。
步骤660,安装管理模块根据应用软件包所包含的变更记录文件中的注册表变更记录数据,更新所述虚拟磁盘中的注册表文件。
步骤670,安装管理模块根据应用软件包中包含的安装过程中增加或修改的文件、以及变更记录文件中的文件变更记录数据,更新所述虚拟磁盘中的文件结构。
步骤680,安装管理模块取消挂载虚拟机的镜像数据。
步骤640~步骤680的具体处理方式与附图4中的步骤440~步骤480相类似,在这里不再重复。
本发明实施例提供了一种附图1所示的应用软件的安装方法,在同一实体设备上的应用实例。该方案能够简化用户在虚拟机中安装应用软件时的操作步骤。
实施例四
相应地,本发明实施例还提供了一种应用软件的安装装置,如图7所示,该装置包括挂载模块701、第一更新模块702和第二更新模块703,具体如下:
挂载模块701,用于挂载虚拟机的镜像数据,所述虚拟机为待安装应用软件的虚拟机,将所述镜像数据映射为本地文件系统中的一个虚拟磁盘;
第一更新模块702,用于根据所述应用软件的应用软件包所包含的注册表变更记录数据,更新所述虚拟磁盘中的注册表文件,所述应用软件包包含安装过程中增加或修改的文件、注册表变更记录数据和文件变更记录数据,所述注册表变更记录数据和文件变更记录数据是根据安装所述应用软件前后主机操作系统环境的差异获得的;
第二更新模块703,用于根据所述文件变更记录数据、以及应用软件包包含的安装过程中增加或修改的文件,更新所述虚拟磁盘中的文件结构,从而实现在所述虚拟机中安装所述应用软件。
可选地,附图7所示的装置还包括:
取消挂载单元704,用于在第一更新模块702更新所述虚拟磁盘中的注册表文件和第二更新模块703更新所述虚拟磁盘中的文件结构后,取消挂载所述虚拟机的镜像数据。
可选地,如附图8所示,所述挂载模块701包括:
确定单元801,用于确定所述虚拟机的镜像数据的类型;
挂载单元802,用于根据确定单元801确定出的镜像数据的类型,调用对应的挂载程序挂载所述虚拟机镜像数据的存储位置上的虚拟机镜像数据。
可选地,如附图9a所示,所述确定单元801包括:
第一测试子单元901,用于根据所述虚拟机镜像数据的存储位置,测试是否能够成功读取镜像数据的数据头;
第一确定子单元902,用于若第一测试子单元901能够成功读取镜像数据的数据头,则根据所述数据头中的数据格式类型字段,确定所述镜像数据的数据格式类型;
第二测试子单元903,用于若第一测试子单元901不能成功读取镜像数据的数据头,则测试按照RAW格式是否能够成功解析所述镜像数据;
第二确定子单元904,用于若第二测试子单元903能成功解析所述镜像数据,则确定所述镜像数据的数据格式类型为RAW格式。
可选地,如附图9b所示,所述确定模块801包括:
发送子单元905,用于向弹性计算控制器发送携带有虚拟机标识或虚拟机镜像数据的存储位置的类型确认请求消息;
接收子单元906,用于接收弹性计算控制器返回的类型确认响应消息;
第三确定子单元907,用于从接收子单元906接收到的所述类型确认响应消息中提取携带的镜像数据的类型,所述镜像数据的类型是弹性计算控制器根据类型确认请求消息中的虚拟机标识,从虚拟机镜像文件创建时保存的虚拟机标识与镜像数据类型的对应关系中查找到的;或者是弹性计算控制器根据类型确认请求消息中的存储位置,从虚拟机镜像数据创建时保存的虚拟机镜像数据的存储位置与镜像数据类型的对应关系中查找到的。
请参照附图10,本发明实施例还提供了一种应用软件包的创建装置,该装置包括获取单元110、确定单元120和创建单元140,其中:
获取单元110,用于获取安装应用软件前后主机操作系统环境的差异;
确定单元120,用于根据获取单元110获得的所述差异,确定注册表变更记录数据和文件变更记录数据;
创建单元140,用于生成应用软件包,该应用软件包包含确定单元120确定出的所述注册表变更记录数据和文件变更记录数据、以及安装程序过程中增加或修改的文件。
可选地,请参照附图11,创建单元140包括:
写入子单元111,用于将所述注册表变更记录数据和文件变更记录数据写入变更记录文件;例如,可以采用XML,将所述注册表变更记录数据和文件变更记录数据写入文本格式的写入变更记录文件;
生成子单元112,用于对所述变更记录文件,和安装程序过程中增加或修改的文件进行打包处理,生成所述应用软件的应用软件包。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。