(计算机应用技术专业论文)linux平台自动软件发布系统的设计和实现.pdf_第1页
(计算机应用技术专业论文)linux平台自动软件发布系统的设计和实现.pdf_第2页
(计算机应用技术专业论文)linux平台自动软件发布系统的设计和实现.pdf_第3页
(计算机应用技术专业论文)linux平台自动软件发布系统的设计和实现.pdf_第4页
(计算机应用技术专业论文)linux平台自动软件发布系统的设计和实现.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机应用技术专业论文)linux平台自动软件发布系统的设计和实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕上学位论文摘要 摘要 随着企业信息化程度的提高,企业应用软件的管理负担也随之提高。企业中 的信息部门承担着对企业应用软件的维护,更新,打安全补丁等任务。很多公司 目前主要的软件部署方式是依赖于i t 部的常规人工技术支持:其维护、管理成 本都很高,尤其是出新的病毒或补救新的漏洞时,以及下发应用软件,升级新的 应用软件,打安全补丁等工作,由于电脑终端众多造成i t 部人员经常加班加点 进行工作,尚且无法得到满意的结果。因此,为了提高软件部署工作的效率和降 低成本,开发一种可以复用的自动软件部署系统就成为了当务之急。 z s d t ( z j us o f t w a r ed e l i v e r yt o o l k i t ) l i n u x 平台自动软件发布系统就是在 这种需求下产生的。它的目的是能够降低企业软件部署的复杂度和风险。该系统 的目标是实现在l i n u x 平台下软件部署的各个关键环节,包括计划,执行,监视, 恢复等等。z s d t 的核心功能是软件的无人值守自动安装。本论文所要阐述的就 是如何在l i n u x 平台下实现z s d t 的打包器和发布器两个模块。这两个模块互相 配合,可以实现软件的无人值守安装,卸载和监视功能。 z s d t l i n u x 版本的打包器模块通过一台目标讨算机作为“样本”,在该计算 机上进行软件安装的操作,打包器截获安装过程中特定的系统调用,对截获信息 进行处理来记录整个软件安装过程中的行为。通过产生的记录来生成z s d t 专用 的文件包。发布器模块是运行在需要部署的目标计算机上的守护进程。发布器监 听z s d t 系统的指令,通过指令在目标计算机上自动下载,安装,卸载相应的软 件包。本文介绍了这两个模块的设计思路和实现手段,主要工作如下: 设计和实现了支持l i n u x 平台下多种格式软件包的打包器。文中提出了多种 可能的设计方案,并且最终选择了比较有效的“记录软件安装行为”的方案。设 计和开发了打包器的系统调用截获模块和分析并处理截获的系统调用信息的打 包模块。打包器的设计过程中主要解决的问题是如何有效的截取l i n u x 的系统调 用和如何通过截获调用的信息并利用l i n u x2 6 内核中的i n o t i f y 功能米“记录软 件安装行为”。 设计了发布器,发布器通过网络监听z s d t 控制系统发来的指令,通过指令 来进行软件下载,安装,回滚,监视。实现了软件的无人值守安装。 浙江大学硕士学位论文摘要 关键词:l i n u x 软件自动发布系统,软件部署,系统调用截获,i n o t i f y 浙江人学硕士学位论文 a b s t r a c t 摘要 w i t ht h ec o r p o r a t ei n f o r m a t i o n t e c h n o l o g yi m p r o v e m e n t , t h eb u r d e no f e n t e r p r i s ea p p l i c a t i o ns o f t w a r em a n a g e m e n ti sa l s oi n c r e a s e d t h ei td e p a r t m e n t so f t h ee n t e r p r i s et a k er e s p o n s i b i l i t yf o rs o f t w a r em a i n t e n a n c e ,u p d a t e s ,a p p l y i n gs e c u r i t y p a t c h e sa n do t h e rt a s k s a tp r e s e n t ,m a n yc o m p a n i e sp a t hd e p l o y m e n tm a n n e ri s m a i n l yd e p e n d e n to nt h eh i g hc o s th a n dw o r ko fi td e p a i r t m e n ts t a f f s e s p e c i a l l y w h e nn e wv i r u sb u r s t i n go u to rr e m e d y i n gu r g e n ts e c u r i t yh o l e s ,t h ei td e p a r t m e n t s t a f f so f t e nn e e dt ow o r ko v e r t i m eb e c a u s eo ft h eg r e a tn u m b e ro fc o m p u t e rt e r m i n a l s b u tt h ew o r kr e s u l t sa r eu s u a l l yn o ti d e a l t h e r e f o r e ,i no r d e rt oi n c r e a s et h es o f t w a r e d e p l o y m e n tw o r ke f f i c i e n c ya n dr e d u c et h ec o s t s ,d e v e l o p m e n to fr e u s a b l es o f t w a r e d e p l o y m e n ts y s t e mb e c o m e sa nu r g e n ta f f a i r z s d t ( z j us o f t w a r ed e l i v e r yt o o l k i t ) a u t o m a t i cs o f t w a r ed e l i v e r ys y s t e m l i n u xv e r s i o ni sb o r ni ns u c hd e m a n d t h ep u r p o s eo ft h es y s t e mi st or e d u c et h e c o m p l e x i t ya n dr i s ko fe n t e r p r i s es o f t w a r ed e p l o y m e n t t h eg o a lo ft h i ss y s t e mi st o i m p l e m e n te v e r yk e yp r o c e s s e si n s o f t w a r e d e p l o y m e n t ,i n c l u d i n gp l a n n i n g , e x e c u t i n g ,m o n i t o r i n g ,r e c o v e r ya n ds oo n t h ec o r ef u n c t i o no fz s d ti su n a t t e n d e d a u t o m a t i c a l l ys o f t w a r ei n s t a l l a t i o n t h i sp a p e rw i l ld e s c r i b eh o wt oi m p l e m e n t p a c k a g e rm o d u l ea n dd e l i v e r ym o d u l eo fz s d ti nl i n u xp l a t f o r m t h ec o o p e r a t i o no f t h e s et w om o d u l e sw i l li m p l e m e n tu n a t t e n d e da u t o m a t i c a l l ys o f t w a r ei n s t a l l a t i o n , u n i n s t a l l a t i o na n dm o n i t o rf u n c t i o n s z s d tp a c k a g e rl i n u xv e r s i o nw o r k st h r o u g h i n s t a l l i n gs o f t w a r eo na s a m p l e c o m p u t e r t h ep a c k a g e rw i l li n t e r c e p ts o m es p e c i f i cs y s t e mc a l l sd u r i n gt h ei n s t a l l p r o g r e s s a c c o r d i n gt ot h ea n a l y s i so ft h ei n t e r c e p t e ds y s t e mc a l li n f o r m a t i o n ,t h e p a c k a g e rw i l lg e n e r a t ez s d ts p e c i f i cs o f t w a r ep a c k a g e d e l i v e r ym o d u l ei s a d a e m o np r o c e s sr u n n i n go nt a r g e tp l a t f o r m i tw i l ll i s t e nt ot h ec o n t r o lc o m m a n df r o m z s d ta d m i n i s t r a t o rs y s t e ma n da c c o m p l i s hs o f t w a r ed o w n l o a d i n g ,i n s t a l l a t i o na n d r o l l i n gb a c kw o r k s t h i sp a p e rw i l li n t r o d u c eh o wt od e s i g na n di m p l e m e n tt h e s et w o m o d u l e s t h em a i nc o n t r i b u t i o n so ft h er e s e a r c ha r ea sf o l l o w s : 浙江大学硕l 学位论文摘要 d e s i g na n di m p l e m e n tap a c k a g e rs o f t w a r e t h ep a c k a g e rs u p p o r t sv a r i o u so f s o f t w a r ep a c k a g ef o r m a to nl i n u xp l a t f o r m t h i sp a p e rp r e s e n t ss e v e r a lp o s s i b l e d e s i g np l a n sa n df i n a l l yc h o s et h er e l a t i v e l ye f f e c t i v e r e c o r dt h es o f t w a r ei n s t a l l b e h a v i o r s o l u t i o n d e s i g na n di m p l e m e n ts y s t e mc a l li n t e r c e p tm o d u l ea n dp a c k a g e r m o d u l e t h em a i nc h a l l e n g ed u r i n gt h ew o r ki sh o wt o i n t e r c e p ts y s t e mc a l l e f f e c t i v e l ya n dh o wt or e c o r dt h es o f t w a r ei n s t a l lb e h a v i o rw i t ht h eh e l po ft h e i n t e r c e p t e ds y s t e mc a l li n f o r m a t i o na n dt h ei n o t i f yu t i l i t yi n t r o d u c e di nl i n u x2 6 k e m e l d e s i g nad e l i v e r ys o f t w a r e a c c o r d i n gt h ec o n t r o lc o m m a n d sa c c e p t e dt h r o u g h n e t w o r k ,t h ed e l i v e r ys o f t w a r ew i l lp r o c e s ss o f t w a r ed o w n l o a d i n g ,i n s t a l l a t i o n ,r o l l i n g b a c ka n dm o n i t o r i n gu n a t t e n d e d k e y w o r d s :l i n u xa u t o m a t i c a l l ys o f t w a r ed e l i v e r ys y s t e m ,s o f t w a r ed e p l o y m e n t , s y s t e mc a l li n t e r c e p t ,i n o t i f y 浙江大学硕十学位论文 摘要 图目录 图1 1z s d t 系统架构1 图3 1 打包器结构图1 1 图3 2 应用程序,c 函数库,内核之间的关系1 3 图3 3r e a d ( ) 系统调用的执行过程1 3 图3 - 4 系统调用截获和处理过程2 4 图4 1 监控打包程序结构图2 6 图4 - 2 i n o t i f y 事件结构体2 8 图4 3 读取i n o t i f y 事件缓冲区3 0 图4 4 同志格式3l 图4 5 原始r 志文件记录3 2 图4 6 打包器专用同志文件3 3 图4 7 基于红黑树的同志记录存储结构3 3 图4 8 打包文件列表一3 6 图4 - 9t o c 文件格式3 7 图5 - 1 发布程序架构3 9 图5 2 安装命令处理流程4 0 图5 3 集成自a c em e s s a g eb l o c k 的控制命令类4 l 图5 - 4 下载流程图4 4 图5 5 软件部署过程4 6 浙江火学硕t :学位论文摘要 表目录 表3 1 全部需要截获的系统调用2 2 表5 1 控制命令表4 1 v * 人¥l 学n 论女 1 1 研究背景 第1 章绪论 在企业信息化带来工作效率提高的同时也带来了企业应用软件系统管理的 负担。企l k 中的信息部门承担着对企业应用软件的维护,更新,打安全补丁等 仟务。很多公司目前主要的补丁部署方式是依赖于i t 部的常规人工技术芷持: 其维护、管理成奉都很高,尤其是出新的病毒或补被新的漏洞时,以及f 发应 用软件,升级新的应用软件,打安全补1 等i 一作,山f 电脑终端多造成l t 部人 员经常加班加点进行工作,尚且无法得到满意的结果。因此,为了提高软件部署 工作的效率和成本,丌发一种可以复闱的部署过程管理软件就成为了当务之急。 1 1 1z s b t 系统介绍 z s 叫( z j us o f t w a r ed e liv e r yt o o l k i t ) l i n u x 半台自动软件发廿j 系统就是 n 这种需求下,”生的。它的日的是能够降低余业软件部署的复杂度和m 险。浚系 统的日标是实现在l i n u x 平台下软件部署的荇个关键环节,包括计划,执 亍,监 视,恢复等等。它的系统架构女i ( 1 矧1 一1 ) 所h i 。 一1 膦 4 擀 陡 ”力畸 ( 多:7f 。h * # q “” * * “* e 2 筇,、 1 i 自_ * 8 疃,弘” m m | 1 妙 、 妒魏f m 8 ,7 ,、 芋| k ri 。, 蚓。 1 * 镕 ( z h 】i t m * v r ) 幽1 - iz s d t 系统架 i 浙江人学硕:l 二学位论文第l 章绪论 l i n u x 平台下软件的安装可以分为两大类:通过编译好的二甾锄娥铆i 源 行殍编泽。不同的l i n u x 发行版有种类繁多的二进制安装包格式。常见的有 r e d h a t 系列的r p m 格式,d e b i a n 系列的d e b 格式,s l a c k w a r e 发行版的t g z 格 式等等。这些软件包都有一套自己的包管理系统。通过发行版内置的包管理系统 来实现软件的安装,依赖性检查,卸载等基本功能。这些不同的包管理系统在复 杂度和功能上各有区别。例如d e b i a n 系列的d e b 包管理系统功能强大完善,而 s l a c k w a r e 的包管理系统就相对简单。除了基于包管理系统的二进制安装包,绝 大多数商业软件提供的是自己独立于包管理系统的安装包。 由于l i n u x 是一个基于丌放与代码的平台,所以绝大多数的l i n u x 软件都可 以获得源代码在本地机器上进行编译和安装。往往一些软件的最新版本,首先可 以获得的都是它的源代码。对于一些紧急和重大的更新,通过获耿源代码来编译 安装是最快捷的方式。因此通过源代码包来安装软件在l i n u x 平台下是一个很重 要和常用的途径。 z s d t 系统的管理员( 即负责统一管理企业中的计算机的人员) 在l i n u x 平台 下安装软件时的工可以简化为以下步骤: ( 1 ) 首先,z s d t 要求管理员根据具体的应用,来确定软件包的来源,即采 取何种途径,何种格式的软件包。然后根据这个软件包来创建一个新的安装包。 这个过程需要管理员在一台参考莠统匕,使用一个为称为抛器( z s d t a p p ) 的程 序完成。参考系统就是指与终端计算机的软硬件环境基本相同的系统。 ( 2 ) 管理员通过w e b 界面注册该安装包,这时安装包将被上传到结嬲器。 软件包存放在传输服务器的f t p 服务器上。 ( 3 ) 管理员通过w e b 界面躺移僦务。z s d t 早的任务包含任务执行的时间、 任务类别( 安装或卸载) 、任务的目标终端计算机、任务所需资源( 如安装包) 等信息。 ( 4 ) z s d t 会在终端矛第铌安装一个发布龙理程序,它从命令服务器 ( z s d t c m d s v r ) 得到命令,并根据命令来按时执行软件的安装卸载等操作。 ( 5 ) 管理员通过w e b 界面查询该软件包的安装状态。查询可以在发布安装任 务后的任意时问进行。 ( 6 ) 如果需要,管理员可以黝费定务,z s d t 会自动完成卸载工作。 2 浙江人学硕七学位论文第1 章绪论 根据上面的描述,软件的安装包需要管理员的协助创建。软件的卸载包是 z s d t 在利用安装包安装软件时创建的,它对管理员来说是透明的。因此,在z s d t 中又把软件的安装包称为嚣斧包。另外,还把软件的安装成为韶署( d e p l o y ) ,把 软件的卸载成为回苈( r o l l b a c k ) ,把发布安装任务和卸载任务统称为黼夯。 本人所做的工作,包括z s d t 打包器( z s d t a p p ) 的设计与开发、z s d t 发布代 理( z s d t i n s t a l l e r ) 的设计与开发。 1 2 相关研究的现状 关于软件系统的部署,通常定义为软件的“获取”和“执行”之间所进行的 操作。这些操作是由软件部署管理员来完成的。他负责下载,配置运行环境,完 成软件执行前所需要的准备操作乜1 。因此,软件部署行为是由一系列内在相关的 操作所组成的,通常包括开发周期结束时的发白( r e l e a s e ) ,配置( c o n f i g u r a t i o n ) 和软件的安装( i n s t a l l a t i o n ) 以及最后的执行( a c t i v a t i o n ) 秘1 。 对于软件自动分发的问题,市场上已经有了很多成熟的解决方案。软件自动 分发的功能通常是一整套软件中所提供的一项具体功能,而不是作为一个单独功 能的软件来实现。包含软件自动发靠功能的软件通常统称为桌面管理软件1 。 桌面管理软件能够自动给指定的或全部终端计算机批量分发及安装应用软件 包,保证终端计算机始终处于最佳工作状态,大大减轻了管理员批量部署程序的 负担。软件分发满足了大型分布式网络软件统一和数据更新的需求,每一个分 发都有胡晰的过程跟踪和记录,管理员可实时查询分发的即时状念嵋3 。 目前市场上所流行的桌面管理系统大多是基于w i n d o w s 平台的产品。比如微 软自己的系统管理服务器( s y s t e m sm a n a g e m e n ts e r v e r ,s m s ) ,实现对客户端 进行远程管理、软件自动分发、补丁管理、i t 资产管理等功能。 软件自动分发的核心任务就是创建软件分发的包,常用的技术需要包括几个 步骤。首先,需要一个目标系统的安装前快照。其次,在目标系统上安装软件。 最后,获得目标系统上安装软件后的快照。通过比较这两个安装前后的快照来生 成一个软件安装包。 r e dh a tn e t w o r k 同r e dh a te n t e r p r i s el i n u x 紧密地结合在一起。它是一 种要付费的商业服务,而且在吸引人的g u i 和自动化的能力方面,提供了比a p t 和y u m 更多的功能。 3 浙江大学硕1 :学位论文第1 章绪论 a p t 比r e dh a tn e t w o r k 有更好的文档说明,移植性更强,而且是免费的。 在您可以用它来做什么这方面,它也更为灵活。a p ,i 源自于d e b i a n 和d p k g 阳1 , 但是它已经扩展到能够支持r p m 。对于软件发布来说,a p t 是目前我们可以有的 最接近通用标准的工具口1 。 y u m 的功能类似a p t ,但它专门用于r p m 乜1 。尽管如果把它指到格式f 确的软 件库上,它能在任何基于r p m 的系统上运行,但它默认只是f e d o r a 的软件包管 理工具陋3 。 z e n w o r k s 1 属于更大的一个产品线,z e n w o r k s 是一个跨平台的配置管理解决 方案。目前支持s u s el i n u xe n t e r p r i s es e r v e r9 和1 0 , r e dh a ta d v a n c e d s e r v e r2 1 和r e dh a te n t e r p r i s es e r v e r2 1 ,r e dh a te n t e r p r is el i n u x a s3 、4 和5 以及r e dh a te n t e r p r i s el i n u xe s3 、4 和5 。 j a v a b e a n s 是s u n 公司推出的一款面向企业的构建服务器端组件的一个标 准。它的设计目的是为了简化企业中软件的开发,部署和管理的工作。j a v ab e a n s 软件包的特点是,必须严格按照s u n 公司所规定的标准来进行打包,包括一个标 准的j a r 包,和一个x m l 说明文档。而且在j a v ab e a n s 软件包中包含了管理和 部署该软件所需要的专有工具。j a v ab e a n s 的原理就足通过一系列标准的容器 接口,来把软件封装起来。从而简化了移植所需要的工作,相应的,采用j a v a b e a n s 柬进行部署的软件在丌发的时候,就要遵循这些相应的接口末丌发。n 岫 1 3 本项研究中面临的几个主要问题 首要的l u j 题就是软件包来源的多样性。不同的l i n u x 发行版有不同的软件包 格式。不同的软件包格式又依赖各自不同的包管理系统。通常商业软件的安装包 和本地编译安装的软件包更是不依赖任何包管理系统。z s d t 的首先要解决的就 是如何支持众多的软件包格式。 l i n u x 软件的安装过程中,需要设置很多安装信息,如安装路径的设置,环 境变量的设置,文件的权限设置,软件的初始化设置等等。那么在设计一个软件 分发系统的时候,就要考虑如何让这些通常需要手动设置的操作实现自动化。 解决软件之间的依赖关系。l i n u x 是一个开放的平台,所以软件之间通常 有很多复杂的依赖关系,比如很多软件需要特定的运行库。前面提到的r p m 和 a p t 系统都是通过包管理系统的数据库来解决这个问题n 引。 4 浙江大学硕:b 学位论文 第l 章绪论 保证系统的稳定性和容错性。部署软件的过程中通常会发生各种意外情况导 致部署失败。比如机器断电,网络中断,错误的修改删除了文件等等。面对部署 失败的情况,系统要能够提供相当的容错性,使目标机器恢复到正常工作的状态。 1 4 主要的工作 设计开发了监控和打包程序。打包程序( z s d t a p p ) 使管理员通过在样本机器上 的安装操作来生成要部署到目标机器上的软件安装包。在分析了多种可能的实现 方案后选择了“记录软件行为u 加”的方案n4 l 。打包器通过截获系统调用并配合 l i n u x2 6 内核提供的i n o t i f y 功能来实现对文件系统变化的监控。从而记录下 软件安装的过程。其中截获系统调用是通过设置l d p r e l o a d 环境变量来加载我 们自己l i b s y s s o 这个动态链接库修改默认的系统调用的行为来实现的。 设计了基于a c e 框架的软件发布程序。发布程序( z s d t i n s t a l l e r ) 运行在目标 机器上。这是一个基于a c e 框架网络应用程序,运行在后台。通过网络端口来监 听管理系统发布的命令,来实现软件的无人值守安装,回滚任务。 1 5 文章的组织结构 全文分为六章 第一章介绍了项目背景。 第二章阐明了设计方案。分析了采取该方案的原因。以及如何实现这一方案 的思路。 第三章详细说明了打包器模块中截获系统调用的原理。 第四章说明了打包器模块如何利用2 6 内核中的i n o t i f y 功能来监视文件系 统的变化并生成同志文件。最后通过同志文件来创建需要的安装包。 第五章介绍了发布器的设计思路。通过a c e 框架来实现一个标准的网络应用 程序。划分了功能模块,阐述了工作流程。分析了软件包部署的各个环节,并提 出了相应的设计方案。 第六章总结工作。并对项目的优缺点进行分析和未来展望。 浙江人学硕j :学位论文第2 章系统架构分析 第2 章系统架构分析 2 1 设计中面对的几个主要问题 打包器要解决的核心问题是如何把格式众多,安装方式各异的软件包统一成 同一种格式。这种格式又必须尽量简单,以便发布器可以比较容易的实现无人值 守自动安装,回滚的功能。 除了统一安装格式,另外一个难点是解决软件包之间的依赖关系。一个软件 包往往要依赖其它特定的软件包甚至某软件包的特定版本才能f 常工作,通常是 库文件的依赖。打包器必须要解决软件包之问的依赖问题n5 1 。 最后一个就是解决用户定制信息的问题。很多软件包要在安装时手动设置一 些安装信息,如安装目录,环境变量,用户权限等等。还有些需要在安装完成后 第一次运行时进行设置。打包器就要尽量实现在无人值守情况下软件包的设置问 题。 2 2 设计方案的选择 2 2 1 直接转换软件包格式 看起来这是一个最直接的解决方案,尤其是在l i n u x 平台下更是如此。l i n u x 是一个自由丌放的平台n6 。,因此无论是r p m n 7 1 格式,d e b 格式还是其它发行版的 各种格式,都是完全开放的。因此直接解析这些格式并且对其进行转换,是比较 方便的乜1 。实际上现在已经有现成的转换工具,如r p m 2 t g z ,、r p b 2 d e b 、d e b 2 r p m 等等,我们可以考虑直接使用某种现成的工具进行转换,然后再选择一个现成的 包管理系统。 但是转换软件包格式主要有以下几个问题: 不够灵活。一旦软件包格式有变,或者出现某种新的软件包,就要用新的打 包器。 有些软件包根本无法转换。比如面对某些商业软件的二进制的安装包,就无 能为力。 复杂度较高。虽然这种方案看起来很直白,但是实际工作却很繁琐。软件包 的格式通常是很复杂的。实现起来工作量较大。 6 浙江大学硕1 :学位论文第2 章系统架构分析 没有解决自动重现安装信息的问题。如何自动重现安装过程中各种需要设置 的用户信息? 这种方案很难解决。 2 2 2 记录用户操作 记录用户的操作,也是一种可行的方案。记录管理员在一台参考系统上执行 一次安装和卸载操作,然后由一个后台程序监视管理员的操作,并把记录的操作 和软件自身的安装包发送到终端计算机。 理论上这种方案可以重现安装过程,尤其是重现安装过程中用户自定义安装 信息的步骤。但是这种记录键盘鼠标操作的方案仍然有很多缺陷。 ( 1 )安装过程不可监控。l i n u x 下很多安装包是以脚本文件来执行的。安 装过程中会启动一个或多个子进程进行安装。那么,在控制端看来, 最多只能监控到父进程的丌始和结束,如果父进程先于子进程结束, 就无法知道安装脚本启动的子进程运行的情况。 ( 2 ) 容错性差。记录用户操作必须要求在目标计算机上的安装流程严格按 照样本计算机的流程来走。一旦中间一个环节出现错误,比如一个输 入窗口的顺序被打乱,整个安装步骤就都失效了。 2 2 3 软件安装行为抽象 软件部署的整个过程,本质上其实是对文件系统的修改。无论采用何种安装 包,最后终归会反映到文件系统的变化上。l i n u x 上没有w i n d o w s 中注册表的概 念,在l i n u x 平台上,一切都是文件。所以我们可以尝试对软件安装行为进行一 次抽象:能否把软件部署的全过程抽象成对文件系统的修改呢? n 们 幸运的是,l i n u x 平台下有着“一切皆是文件”的内在特征。把软件部署的 整个过程抽象成文件系统的修改,理论上是可行的。这样,我们就可以略过种种 不同软件包的具体安装过程,把注意力集中到安装结果上来。只需要关注“安装 前后文件系统发生了什么变化”。一旦我们找到了这种变化,就可以通过重现这 种变化来在目标计算机上重现这个软件部署过程。 这个方案具有以下几个优点: ( 1 ) 和软件包格式无关。无论是软件包,源代码编译还是二进制的安装包, 安装完成后终归要反映在对文件系统的修改上来。我们只要记录下文 7 浙江大学硕:1 二学位论文第2 章系统架构分析 件系统的变化,就不需要知道安装步骤具体是什么样子的。只要关心 最终结果就可以了。 ( 2 )可以记录下安装过程中用户的自定义安装信息。不同的软件有不同的 自定义设置步骤。我们如果直接记录文件系统的变化,就可以不必关 心用户是如何设置这些信息的。只要把最终结果记录下来。 ( 3 )回滚部署容易。如同软件部署的过程一样,软件的回滚也是对文件系 统的修改。要回滚一个部署,只需要把文件系统恢复到部署前的状态 就可以了。用这个方案实现回滚变得相对容易很多。 那么如何复制对文件系统的修改呢? 可以想到的有两种选择 一种是安装前对整个( 或者部分) 文件系统进行扫描,安装完成后再次对文件 系统进行扫描。比较前后的变化即可。这种方案简单直接,也是可行的。但是实 现起来效率不高。因为无论是扫描整个文件系统还是根据安装的软件屏蔽掉部分 不可能修改的目录只扫描部分文件系统,都可能要扫描巨量的文件。这样当文件 系统很大的时候就会需要很长时间。在效率上来说,是不合算的。 另外一种方案就是截获软件安装过程中的系统调用。因为任何操作系统对文 件系统的最终修改,都是由操作系统内核束执行的。各种应用软件无法直接修改 文件系统,如果要修改文件系统,都要通过操作系统提供的一组固定的系统调用 来执行。 系统调用是操作系统内核和用户之间交互的必经通道。那么我们就呵以采取 某种办法来在系统调用这个必经的环节上来获取软件安装过程中对文件系统进 行修改的信息。通过截获系统调用,分析截获的信息,就可以分析出软件部署过 程中对文件系统的具体修改。 这种方案相对扫描文件系统来说,效率更高,也更加灵活。因此,我们采取 了截获系统调用的方案。 2 3 安装行为的抽象 确定了要采取截获系统调用的方案以后,就可以对软件安装的行为进行一次 抽象。l i n u x 下软件安装过程中的行为可以抽象为以下几种: ( 1 ) 创建文件 ( 2 )删除文件 8 浙江人学硕 :学位论文第2 章系统架构分析 ( 3 ) 修改文件 ( 4 ) 创建符号链接 ( 5 ) 修改符号链接 ( 6 ) 删除符号链接 ( 7 ) 创建硬链接 ( 8 ) 删除硬链接 ( 9 ) 文件改名 ( 1 0 ) 目录改名 ( 1 1 ) 创建目录 ( 1 2 ) 删除目录 2 4 模块的划分 以上1 2 种对文件系统的操作,都是通过l i n u x 下提供的几个系统调用来实现 的。比如创建文件是通过o p e n ,删除文件是通过u n l i n k ,创建目录是m k d i r 等等。 因此我们要截获的就是影响文件系统操作的这些系统调用。截获的信息是这些系 统调用的参数。根据对参数信息的分析,就可以知道要监控文件系统的哪些地方。 获得了软件安装过程的信息以后,就可以把安装过的文件进行打包。然后在 待部署的目标计算机上下载这个软件包,把软件包解丌,把文件复制到和样本计 算机上相同的目录,就丁以熏现安装过程。 而部署的回滚,则可以通过复制文件的记录来进行删除。 根据以上三点分析,可以把软件分为以下三个部分 2 4 1 截获系统调用模块( 1 i b s y s s o ) l i n u x 下的的系统调用是运行在用户进程的上下文中的,因此要截获系统调 用,就要获取并修改安装进程的内部信息。我们采用了l d p r e l o a d 环境变量和 动态链接库相结合的办法。l i b s y s s o 是一个动态链接库。通过设置安装进程的 l d p r e l o a d 环境变量加载到安装进程中。1 i b s y s s o 中重写了修改文件系统的几 个系统调用。安装进程和安装进程的子进程都会加载这个库。1 i b s y s s o 覆盖了 系统默认的1 i b c 库中提供的系统调用函数,当安装进程试图调用默认的c 函数 库的时候,就会进入我们自己写好的修改过的系统调用函数,我们把系统调用的 9 浙江人学硕t :学位论文第2 章系统架构分析 参数获取并处理后,通过有名管道( f i f o ) 传递给打包模块( z s d t a p p ) 进程进行进 一步的处理。 2 4 2 分析打包模块( z s d t a p p ) 打包模块的任务是分析安装进程发送来的系统调用信息,对安装的过程进行 监控。当安装结束之后,根据记录生成要部署到目标计算机上的软件包。 打包模块进程和安装进程通过有名管道( f i f o ) 进行通信,接收安装进程发送 来的系统调用信息,然后返回给安装进程一个确认信息。安装进程收到打包模块 返回的确认信息以后才能继续执行。也就是说,安装进程相对于打包进程是一个 标准的客户端服务器模式。通过客户端发送请求,等待确认,继续执行的办法 来确保同步。保证不会遗漏需要监控的信息。 打包模块的核心功能对文件系统进行监控。这早利用了l i n u x2 6 内核中新 加入的i n o t i f y 模块。i n o t i f y 是内核提供的一组系统调用,它的功能是由用户 进程通过系统调用设置需要监控的目录文件,当这些文件或目录发生任何改变 的时候,会通过一个文件描述符向用户进程返回文件改变的信息。客户端可以根 据内核提供的文件描述符方便的通过读文件的操作米读取文件系统的改变信息。 最后的打包过程利用了l i n u x 下标准的打包器t a r 和压缩器b z i p 来对文件进 行打包。 2 4 3 发布代理模块( z s d t i n s t a l l e r ) 发布代理模块是运行在等待部署软件的同标计算机上的一个网络程序。它的 任务相对简单,通过网络端口监听服务器发来的指令,来完成软件的下载,安装, 回滚等操作。 2 5 小结 本章概述了软件包创建、部署和回滚的设计方案。列举了多种可选方案,并 通过分析对比最终选定了“记录软件行为”这一方案。在此基础上,通过分析软 件安装程序的安装行为,归纳了通过截获系统凋用,创建软件包的基本思路。最 后,构思了这一思路的实现方案,提出了打包器和终端计算机模块的设计思路。 l o * 人 1 :半位论第3 十t j 包8 中系统谢用的槭簌 第3 章打包器中系统调用的截获 3 1 打包器的结构 如上一章所述,打包器共分为两个部分:系统调用截获部分和监控文件系统 变化生成开志和安装包的部分。两个部分分别属于两个进程。其中系统调用截获 部分属于软件安装程序的进程,把我们自己的一个动态链接库1 i b s y s s o 嵌入到 软件安装进程中,截获系统调用。文件系统监控和打包裔| ;分是通过另外一个程序 ( z s d t a p p ) 来实现谈程序接受安装进程发送束的系统调用信息,通过l in u x 内 核提供的l n o t i f y 功能束监控文件系统,生成h 志,并打包。两个进程之问通过 有名管道( f i f o ) 柬进行通信”。 整千打包器的结构如图3 - 1 所示 【m “ f o ,1 5 f i f 0 # 避牲; :! 竺1 : 蚓3 - i 打乜器结构幽 f m 吖 f o3 5 3 2 f i f 0 & 拄过程j :竺3 5 3 如e 图所示,z s d t a p p 首先肩动,创建t m p f i f os f v ,然后z s d t a p p 对 r l f os r 7 进行读操作,当没有输入信息时,z s d t a p p 阻塞在r e a d 0 龋数处。 安装进程通过z s d t a p p 提供的管道t m p f i os r v ,向z s d t a p p 进程发送要监 控的目录信息。然后读取t m p f i f op i d 管道,等待z s d t a p p 返回确认信息,当 z s d t a p p 返剧确认信息之前,安装进程阻塞在r e a d 0 函数处。 z s d t a p p 读取管道把需要监控的目录加入到1 n o t i f y 的监控目录巾。然后 向安装进程的t m p f i f op i d 返回确认信息。安装进程收到确认信息以后才能继 浙江人学顾十学位论文第3 章打包器中系统调用的截获 续执行。系统通过这样一个同步机制来保证不会漏掉需要监控的目录。 之所以上图会有多个安装进程,是因为l i n u x 下的软件安装程序通常会启动 多个线程或者多个进程,还有很多安装程序本身就是一个s h e l l 脚本,这个脚本 会启动多个进程来安装软件。所以保持对多个进程同时进行监控的设计是必须 的。 本章所要详细叙述的内容,是系统调用的截获部分。也就是安装进程截获系 统调用,发送监控请求,等待z s d t a p p 回复,继续执行这样一个过程。至于z s d t a p p 如何监控文件系统并且生成安装包,则在下一章再详细叙述。 3 2l i n u x 系统调用原理 在现代操作系统中,系统调用是操作系统为用户念进程提供的接口。用户态 进程通过系统调用这个接口来与操作系统内核进行通信。用户进程通过调用不同 的系统调用来对各种由操作系统统一管理的资源( 如磁盘,网络等等) 进行各种操 作。 l i n u x 下的系统调用和u n i x 家族中的其它系统一样,是通过c 函数库束对用 户应用程序提供系统调用接口的乜。也就是说,用户应用程序想使用系统调用, 需要使用系统中的c 函数库中提供的函数,比如c 函数库中的o p e n 0 、r e a d 0 , c l o s e 0 等等。l i n u x 。f 现在使用的c 函数库基本都是由g n u 组织提供的g l i b c 库。这个库文件通常就是u s r 1i b 1i b c s o 。l i n u x 下常见的其它库,比如g t k 库、q t 库,j a v a 库等等,都是在g l i b c 的基础上又进行了一次包装来实现它们 自己的接口。 用户应用程序只需要直接或者问接的调用g l i b c 库中提供的系统调用函数接 口,至于如何和内核通信,将程序转为内核念,执行系统调用并返回的操作细节, 都在g 1 i b c 中进行完成。这个过程对用户进程来说是透明的,用户进程无需知道 g l i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论