已阅读5页,还剩59页未读, 继续免费阅读
(计算机科学与技术专业论文)运营级linux驱动加固的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国防科学技术大学研究生院学位论文 摘要 运营级l i n u x 以其成本低、源代码开放、平台无关、升级快的特点深受广大电信运营 商的亲睐。c l i n u x 是华为公司正在开发中的一种运营级l i n u x 。它对设备的可用性具有较 高的要求,因此,对设备驱动程序加固是其中必不可少的一部分。 本文重点研究了l i n u x 下的传统驱动程序加固技术,根据c l i n u x 的需要对其进行扩展 和改进。完成的工作主要分为以下三个部分: 1 分析了运营级l i n u x 的基本体系结构,重点研究了传统驱动加固技术,并分析了它 的缺陷。 2 对传统驱动加固技术进行扩展和完善,设计并实现了c 1 i n u x 的设备驱动加固。 3 基于c l i n u x 的驱动加固技术,本文对c l i n u x 中的失效处理进行了研究。为了模拟设 备的失效,课题设计并实现了一种失效注入方法,并针对e 1 0 0p r o1 0 0 + 月a 务器网络适配 器进行了几个失效注入实验。我们从实验中的获得失效数据,运用数据分析的方法对这些 数据进行了分析。通过分析得出了一些有利于提高网卡可用性的结论。另外,课题设计了 种驱动程序失效恢复算法来提高驱动程序失效恢复效率,并使用两个失效注入实验证明 了它的意义。 论文完成的工作成果是c l i n u x 的重要组成部分,对运营级l i n u x 驱动加固的研究和实 现也具有一定的理论和实际意义,以及较高的研究参考价值。 关键字;运营级k in u x 驱动程序加固公共统计管理器诊断管理层失效注入 a b s t r a o t c a r r i e rg r a d el i n u xh a sb e e ne n j o y e d b ym a n yt e l e c o mc a r r i e rm a n u f a c t u r e r s f o ri t si n e x p e n s i v ec o s t ,o p e n i n gc o d e ,i n d e p e n d e n tw i t hp l a t f o r m r a p i d u p g r a d e c l i n u xi sad e v e l o p i n gc a r r i m rg r a d el if l u xi nh u a w e ii n c d r i v e rh a r d e n i n gi sa n e c e s s a r yp a r ti nc 1 i n u xb e c a u s ei th i g h l yr e q u i r e sa v a i l a b i l i t yo fd e v i c e r h i sp a p e re m p h a s i z e so nt r a d i t i o n a ld r i v e rh a r d e n i n gt e c h n i q u ei nl i n u x ,a n d i m p r o v e so ni tf o rc l i n u xr e q u i p e m e n t i ta i m sa tm a k i n gt h r e em a j o rc o n t r i b u t i o n s : f i r s t l y ,b a s e do nt h ep r o j e c tb a c k g r o u n d ,t h i sp a p e ra n a l y z e st h ea r c h i t e c t u r e o fc a r r i e rg r a d el i n u x ,e m p h a t i c a l l yi n t r o d u c e st r a d i t i o n a ld r i v e rh a r d e n i n g t e c h n i q u ea n da n a l y z e si t ss h o r t c o m i n g s e c o n d l y ,t h ep a p e rd e s i g n sa n di m p l e m e n t sc l i n u x sd r i v e rh a r d e n i n g ,w h i c h p e r f e c t st r a d i t i o n a ld r i v e rh a r d e n i n gt e c h n i q u e t h i r d l y ,b a s e do nc l i n u x sd r i v e rh a r d e n i n ga r c h i t e c t u r e 。t h i sp a p e r r e s e a r c h sc l i n u x sf a u l th a n d l i n g t h i sp a p e rd e s i g n sa n di m p l e m e n t saf a u l t i n j e c t l o nm e t h o df o rs i m u l a t i n gd e v i c ef a u l ta n dp e r f o r m ss o m ef a u l ti n j e c t i o n e x p e r i m e n t so fe 1 0 0p r o1 0 0 + n e t w o r kc a r d f r o mt h e s ee x p e r i m e n t s ,w eo b t a i nf a u l t d a t aa n da p p l yd a t am i n i n gm e t h o dt oa n a l y z et h e s ed a t a f r o ma n a l y s i s ,t h i sp a p e r d r a w ss o m ec o i c 1 u s i o n s w h i c ha r ei nf a v o ro fi m p r o v i n gn e t w o r kc a r d s a v a i l a b i l i t y i na d d i t i o n ,t h i sp a p e rd e s i g n sa na l g o r i t h mf o ri m p r o v i n g e f f i c i e n c yo ff a u l tr e c o v e r ya n dv e r i f i e si t ss i g n i f i c a n c eb yt w of a u l ti n j e c t i o n e x p e r i m e n t s t h ew o r ka n dc o n t r i b u t i o no ft h i sp a p e ra r ei m p o r t a n tp a r to fc l i n u xa f l dh a v e r e a l i s t i cs i g n i f i c a n c et ot h er e s e a r c ha n di m p i e m e n t a t i o no fc a r r i e rg r a d el i n u x , a n dh a v ec o n s i d e r a b l er e f e r e n t i a lv a l u e st or e l a t e dr e s e a r c h k e y w o r d s c a rri e r6 r a d el i n u x c o m m o ns t a ts to sm a n a g er f a u i tn j e c t io n d r i v e th a r d e n in g da g n o s to sm a n a g el a y e r 第1 l 页 国防科学技术大学研究生院学位论文 图l 一1 图1 2 图卜3 图1 4 图l 一5 图3 1 图3 2 图3 - 3 图3 - 4 图3 5 图4 一l 图4 2 图4 - 3 图4 - 4 图4 - 5 图5 一l 图5 - 2 图5 3 图5 - 4 图目录 电信级服务器系统层次结构 运营级l i n u x 体系结构 运营级l i n u x 的增强特性, a d v a n c e d t c a 系统管理的全局视图 a t c a 机框中交换接口的数据传输方式 c l i n u x 中的设备驱动加固监控 设备统计数据监控流程 设备诊断测试运作流程 基于p r o c 的设备诊断文件系统结构 k s 日志系统工作方式。 设备统计能力数据结构, 设备统计数据注销流程 设备诊断测试能力数据结构, 设备统计数据注销流程 e v e n ts c h e m a 事件分类层次图, 使用j o e t l 进行失效注入结构 使用a p r i o r i 算法来推导网卡发送事务的统计数据关联规则 使用决策树来定位e 1 0 0 驱动程序失效 基于局部性原理的驱动失效恢复记录数据结构 2 2 2 3 2 6 2 7 3 0 3 1 3 6 3 8 4 l 4 5 4 8 3 4 7 8 掩均n , 国防科学技术大学研究生院学位论文 表3 - i 表4 - i 表4 2 表5 1 表目录 e v e n tl o g g i n g 日志与k s 日志比较 e 1 0 0 网络设配器i o 统计 c l i n u x 驱动加固技术事件源属性列表 e i o o 网络适配器的硬件失效诊断测试结果 2 3 2 9 3 5 4 4 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 学位论文题目:垂萱熟垦i 些墨堡边擅固鲍盟窒皇塞丑 学位论文作者签名:蕴墨日期:三口。,年1 2 月r 日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定。本人授权 国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子 文档,允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密学位论文在解密后适用本授权书。) 学位论文题目:重萱熟圣i 业! 壁垒红固的盟究生塞理 学位论文作者签名:! 趱 日期:三。r 年三月,日 作者指导教师签名_ 鬈垒塑墨日期:弘炉噼,月f 厂日 国防科学技术人学研究生院学位论文 第一章绪论 i i 课题研究背景 第一台计算机问世已经半个世纪了,在这期间计算机技术经历了五次更新换代。更新 换代的标志主是计算机的器件。从第一代到第五代计算机,计算机器件发生了根本的变化: 从电子管、晶体管发展到集成电路,而集成电路又经小规模、中规模、大规模等阶段发展 到超大规模阶段。计算机硬件结构的进步以及众多新概念、新技术的提出,推动计算机技 术向更高的层次发展。 应用程序 标准接e l 高可用中间件 标准接口 运营级操作系统 标准接口 高可用硬件平台 图卜l电信级服务器系统层次结构 当今,计算机系统的发展已经不仅仅是对性能的追求,更多的是向行业应用靠拢。电 信行业近年来发展迅速,对行业应用的需求也与日俱增。其中最为明显的是电信运营商对 服务器的可用性要求已经达到了9 9 9 9 9 ,也就是说电信服务器在一年的运行中仅仅允许 5 分钟左右的故障时间。这样的电信系统并不能仅仅依靠高质量硬件来搭建,它应该采用 标准接1 7 1 将可互操作的硬件、软件,管理中间件和应用程序融合为一个和谐的系统,图l l 展示了电信级服务器中软硬件的基本层次结构。为了实现这一目标,众多计算机工业组织 为电信级平台制定了开放式的软硬件高可用规范。以下列举了其中几个重要的组织及其职 能: 1 p i c m g ( t h ep c ii n d u s t r i a lc o m p u t e rm a n u f a c t u r e r sg r o u p ) ,p i c m g 组织是一 个出超过4 5 0 家公司联合成立的计算机协会。它们联合开发高可用通信开源规范以及工业 计算机应用丌源规范 1 。 2o s d l ( f h eo p e ns o u r c ed e v e l o p m e n tl a b s ) , o s d l 是丌放源代码丌发实验室的 简称,它是一个非营利性组织,致力于l i n u x 和基于t i n u x 的产品在电信行业的功能应用 2 。 3 s a f ( t h es e r v i c ea v a i l a b i l i t yf o r u m ) ,s a f 是一个服务可用性论坛,此论坛 第1 页 国防科学技术大学研究生院学位论文 致力于制定服务可用性工业标准,使得电信运营商可集成出达到电信级要求的通信系统 3 。 以上计算机工业组织的工作为电信行业的高可用应用需求提供了基础,由于它们开源 的特性使得电信系统的开发具有许多优点。一方面,使用开源规范开发产品节省开发成本, 降低开发风险。另一方面,由于统一的标准使开放式平台具有良好的互操作性,使得基于 开源规范开发的电信服务器能够更快融入市场。 目前,新一代电信服务器的研究还是起步阶段,在很多方面还有待完善。本文的研究 工作主要基于新一代电信服务器硬件平台改进,通过对设备驱动程序的改进达到提高设备 可用性的目的。 1 2 1 运营级概念的提出 1 2 国内外相关研究 由于电信行业对服务器可用性的要求越来越高,人们提出了运营级的概念。运营级是 一个公共网络术语,般用来描述那种需要可靠度百分比在5 到6 个九的电信产品。般 来说运营级服务器需要5 个九的可靠度。而运营级交换设备则需要6 个九的可靠度。因此, 电信级服务器电被称为运营级服务器。 1 2 2c g l 组织制定的运营级l i n u x 规范 为了帮助电信产品开发商开发适应电信领域的服务器操作系统,o s d l 开放源代码开发 实验室建立y c g l ( c a r r i e rg r a d el i n u xg r o u p ) 工作组。到今年为止,i n t e l 、i b m 、n e c 、 惠普、阿尔卡特、思科、诺基亚、爱立信、日立、东芝、三菱、m o n t a v i s t a 、r e dh a t 、 s u s e 、t u r b o l i n u x 等公司都已经加入到c g l 组织。 c g l 工作组以开源的l i n u x 操作系统为基础,制定运营级l if l u x 规范,根据主要任务 的不同它分为如下三个子工作组: 规范定义组:定义运营缴l i n u x 需求定义。 原型没计组:制定实现和集成运营级l i n u x 的方案。 验证组;制定测试方法和测试环境,包括服务有效性,可用性验证等 4 。 以上三个工作组于2 0 0 3 年3 月共同发布了运营级l i n u x 2 0 规范,此规范对运营级 l i n u x 体系结构进行了需求定义以及实现方案。 从图1 2 可知,运营级l i n u x 的体系结构分为应用程序,高可用管理,中间件,开发工 具以及管理工具等七个部分。图中深色部分是运营级l i n u x 范围,浅色部分为运营级l i n u x 外围部件,各部分的说明如下: 软件丌发工具它包括编译器、调试器、分析工具等运营级t i n u x 内核必须附属 的丌发工具。 运营级l i n u x 内核它是对普通l i n u x 内核的改进,包括p o s i x 接口、h a 接口、服 务接口、驱动加固、硬件管理、存储阵列管理等规范和技术。 第2 页 国防科学技术大学研究生院学位论文 图卜2 运营级l i n u x 体系结构 高可用管理它包括监测进程、监测系统参数以及管理集群机制。它通过运营 级l i n u x 中h a 接口对服务器进行管理,这些接口按照功能可分为: l 、可用性管理服务接口( a m s a v a i l a b i l i t ym a n a g e m e n ts e r v i c e ) :维护集群系统 模型,并根据集群系统模型进行故障修复处理。 2 、分和式消息服务接口( d m s d i s t r i b u t e dm e s s a g i n gs e r v i c e ) :提供集群范围内 的一对一、一对多、多对一的消息服务。 3 、管理数据库服务接口( m d s m a n a g e m e n td a t a b a s es e r v i c e ) :为h a - c l u s t e r 的各 种服务提供ln m e m o r y 的数据库管理。 4 、集群管理服务接口( c m s c l u s t e rm a n a g e m e n ts e r v i c e ) :维护集群节点的组织结 构,包括节点的检测、节点的加入、节点的删除、节点故障的发现和上报等。c m s 在 各集群节点之间建立了通信通道,并利用d m s 进行通信。 5 、故障管理服务接口( f m s f a u l tm a n a g e m e n ts e r v i c e ) :负责被管理对象( m a n a g e d o b j e c t ) 的监控,并上报a m s ;a m s 负责相应的修复措施( 如采取切换动作) 。 高可用中间件它包括数据库系统、对象管理系统、j a v a 运行时等。 高可用应用程序加强系统的可用性,处理异常,控制系统资源是高可用应用 程序的工作,它使用p o s i x 标准接口与内核通信。 管理工具管理工具把系统中每个部分的管理信息联系集中起来,形成一个统 一的管理中枢。 1 2 3 电信产品开发商的相关研发 基于c ( ,嘲i 织提h 了运营级l in o x 规范,众多l in u x 产品丌发商都投入了大力度进行相 第3 页 国防科学技术大学研究生院学位论文 关研究,s u s e 、r e d h a t 、m o n t a v i s t a 等公司都相继推出了自己的运营级l i n u x 解决方案。 根据对这些方案的分析,我们总结了这些运营级l i n u x 对传统l i n u x 的增强特性,如图i - 3 所示。下文将对这些特性分别进行介绍:( 其中,集群支持和高安全性不是必要特性,可 以基于通用运营级l i n u x 内核按需加入) 图卜3 运营级l i n u x 的增强特性 1 标准 运营级l i n u x 应服从以下标准: a)ltn u xs t a n d a r db a s e b ) p o s i xt i m e ri n t e r f a c e c ) p o s i xs i g n a li n t e r f a c e d ) p o s i xm e s s a g eq u e u ei n t e r f a c e e ) p o s i xs e m a p h o r ei n t e r f a c e f )e v e n tl o g g i n gp o s i xi e e e1 0 0 3 2 5 g ) i p v 6r f c s h )i p s e c v 6r f c s i ) m i p v 6r f c s j ) s n m ps u p p o r t k ) p o s i xt h r e a d s 2 ,硬件平台支持 运营级l i n u x 支持与硬件平台的交互能力。例如: 热交换:支持在热状态下插拔硬件设备和控制器,并提供标准的软件操作处理 热插拔事件。 远程启动支持:可通过网络连接远程启动系统。 循环重启检测:循环重启产生于系统失效,在系统发生重复重启问题时,操作 系统将服务器o f f l i n e 以防止重复启动带来的额外问题。 无盘系统:支持通过网络加载的无盘系统。 串口连接支持:支持串口通信,可以使用串口控制系统。 第4 页 国防科学技术大学研究生院学位论文 3 可用性 可用性需求是运营级服务器的重要需求,为了达到9 9 9 9 9 的可用性,运营级l i n u x 内核中加入了如下机制: 驱动加固( d r i v e rh a r d e n i n g ) :驱动加固研究提高驱动程序的稳定性和可靠 性,并支持对设备的分析管理能力。加固的目的在于使软硬件的失效对于他们所 服务的应用程序尽可能透明。 看门狗时钟:支持看门狗时钟,在系统出现超时错误后执行某些特定的操作。 多以太网卡绑定:多个网络地址聚合成一个逻辑地址,使得网络中一个网络地 址的失效不会影响整个网络的工作,从而加强网络的容错能力。 4 服务能力 运营级l i n u x 通过各种手段为软硬件提供高质量的管理服务。例如: 内核d u m p :可以生成并存储内核的d u m p 映像。 动态调试探测:支持动态的调试、探测正在运行的内核或者应用程序。 硬件异常信号处理:支持硬件错误时的信号处理,并使用事件日志记录硬件错 误。 远程访问事件日志:支持远程访问事件日志信息。 5 性能 一个仅仅高可用的系统是不能满足电信级需求的。为了保证一个系统能够满足实 时、高效的需求运营级l if i u x 采用了相应的机制: 软实时:使用调度器来提供软件方式的实时调度策略。 内核可剥夺:引入内核态程序可剥夺机制。 使用r a i d o :支持存储效率很高的并发存储。使用能够多磁盘同时读写的r a i d o 阵列。 应用程序预读:通过预测,提前将应用程序读入内存。当应用程序需要执行时, 可以直接在内存中运行,而不需临时从硬盘中读取数据。 6 工具 运营级l i n u x 除了改进内核,还应该提供许多应用工具,包括多线程调试器,内核 d u m p 分析器,内核级调试器等。 7 集群 为了提高系统的性能价格比,大多数运营商使用集群体系结构。可以看到集群的 优势在于它在节省成本的前提下增强了服务器性能、可用性并提高了服务器可维护的 能力。因此,运营级l i n u x 加入了支持集群的特性。 共享存储优化:在网络中提供对共享存储的管理,加入类似r a i d l 的网络磁盘备 份,以及访问一致性控制。 集群范围的资源管理:提供整个集群内所有节点的监测,记录,控制等管理机制。 节点失效容错:提供网络文件系统容错,节点健康检查,节点失效快速检测的方 法。 节点问透明通信:基于t i p c 协议 1 9 2 3 进行集群内部通信。 8 安全性 在运营级服务器上的机密数据需要安全性支持。在运营级l i n u x 加入了如下安全 性支持: 第5 页 国防科学技术人学研究生院学位论文 安全访问控制机制:在文件系统层提供访问控制列表,并提供进程级粒度的访问 控制。 密码完整性机制:提供工具检验密码,确保密码不能被轻易破解;并支持密码一 次作废机制,每一次登录都必须更改密码。 日志安全性和保密性:提供| = ;【志信息的来源验证,保证日志信息的完整性,确保 同志不被篡改。 信息加密:基于i p s e c 协议体系结构,提供软硬件的加密支持。包括对p k k e y 协 议的支持以及文件系统层的加密函数支持 2 4 2 5 2 6 。 动态安全机制:提供可以动态配置系统安全级别的安全机制。 以上简要介绍了国际上几大l i n u x 研发厂商所研究的运营级l i n u x 的关键内容。我国 最大的电信产品制造商华为有限公司也正在与国内外各大科研机构的合作开发国内第一 个运营级l i n u x c l i n u x 。c l i i u x 是一个与国际接轨的标准运营级l i n u x ,它也应当具 有上文所述的运营绒l i n u x 特性,本课题的工作诈是其中驱动程序加固的研究工作。 1 3 1 工程环境 1 3 课题简介 本文的实现工作基于i n t e l 公司所研发的高级电信计算架构( a d v a n c e dt e l e c o m c o m p u t i n ga r c h i t e c t u r e ) 服务器。由于高级电信计算架构是一项新标准它的特点较多。 在此对其做简要介绍。 高级电信计算架构( a t c a ) 是p i c m g 组织制定的最新规范,旨在满足下一代运营商通信 设备的要求。a t c a 系列规范纳入了最新高速互连技术和下一代处理器体系结构,提高了集 群系统的可靠性、可管理性和可服务- 性。同时,a t c a 规范还整合了机箱管理的概念,使得 整个机箱管理通过一一个中心模块来完成,这样,就能够为机箱内的所有模块提供集中的、 可扩展的、松祸合的管理。相比以往的专有解决方案,a t c a 规范定义的运营级电信设备不 仅提供了高可用性,同时也降低了服务器成本。下面我们将简要分析基于a t c a 规范的硬件 的特性。 集中系统管理是a t c a 的一个重要特点,a t c a 具有基于i p m i ( 智能平台管理接口) 的集 中平台管理能力。 整个a d v a n e e d t c a 系统管理的全局视图如图卜4 所示,它由以下组件构成: 智能平台管理控制器( i p m c ) :系统的每个现场置换单元( f r u ) 中都有一个独立的管 理控制器,他们可以监视对系统的操作以及系统的健康状况。 机箱管理模块:机箱管理模块在整个机箱中处于一个中心的地位,s h m c 控制器属 于它的一部分。它通过智能平台管理接口( i p m b ) 来与其它管理模块进行通信。 机箱外部系统管理模块:一个更高级别的外部管理模块,它负责对集群间的多框 管理。 州c a 的系统管理通过机框管理控制器( s h m c ) 执行。机框管理控制器负责完成对a t c a 系统中的可置换单元( f r u ) 如单板、电源、风扇、温度传感器的管理。s h m c 能够读取当 前f 阢的状态也可以下达指令使f r u 进入不同的电源状态。例如,如果s h 犯观测到机框内 温度发生跃升,它就可能控制风扇提高转速降低服务器温度。同样,s h m c 负责对a t c a 机 第6 页 国防科学技术大学研究生院学位论文 架内电源的管理,如果电源开始对a c t a 单板进行供电,单板最先运行的部分是系统管理, 然后由s h m c 决定哪些单扳可以启动以及何时启动。 图卜4a d v a n c e d t c a 系统管理的全局视图 a t c a 规范涵盖多种数据传输方式是它的另一大特点,a t c a 提供三种方式传输数据: 基本接口( b a s ei n t e r f a c e ) ,交换接口( f a b r i ci n t e r f a c e ) ,更新通路( u p d a t ec h a n n e l ) 。 基本接口提供a t c a 机框内的i p 传输,它是一个支持1 0 1 0 0 1 0 0 0b a s t t 以太 网的双星型结构。根据a t c a 规范定义,服务器由背板支持所有的交换连接,单扳并不要 求支持基本接口,但必须提供一个i p 传输通道,以保证交换槽位与s h m c 槽位之间具有至 少一个连接。 交换接口是a t c a 机框中的主要数据传输接口。a t c a 协议为背板上定义了多达1 5 个通讯通路。这些通讯通路可以被配置成全网状拓扑结构或双星型拓扑结构。在双星拓扑 结构中每块板同两个不同的交换板都有通路。交换板在机框中扮演交换核心的角色。在全 网状拓扑结构中,每一个单板与其它任意单板都保持一个链接通路。图卜5 描绘了双星型 和全网状结构中的内部互连的配置。 更新通路是两个相临的a t c a 单板之间提供l o 对信号连接线。在a t c a 协议中要求 背板支持更新通路,而单板对其的支持是可选的,由设计者决定。在一个需要双备援备份 的应用中,两个相似的板子可以更新通路去共享状态信息。 i 3 。2 课题工作内容 运营级l i n d x 驱动程序加固的研究是一项较新的课题。传统l i n u x 内核的发展过程中 已经使用了许多方法来提高驱动程序的稳定性和可靠性,可以说是狭义的驱动程序的加 固。但这种加固方式仍然有扩展的需求和空问。本文基于运营级l i n u x 标准,在c l i n u x 第7 页 国防科学技术大学研究生院学位论文 内核中对驱动程序加固进行扩展。 驱动程序是操作系统内核的重要组成部分,几乎所有的i 0 设备都需要相应的驱动程 序才能f 常工作。同时,由于驱动程序运行在内核态,它的f 常工作与否对运营级系统的 影响极大。本文的工作在传统的驱动程序加固基础上展开研究,采用新的管理机制和监控 技术来提高设备的可用性,并将这种技术运用到c l i n u x 的实现中。同时使用失效注入测 试和数据分析的相关方法验证了这一驱动加固技术的作用。 全网络互连 烈星型互迮 图1 - 5a t c a 机框中交换接口的数据传输方式 本文围绕运营级l i n u x 的驱动程j 芋技术中的加固方法和技术开展研究工作,研究工作 主要有以下内容: 分析了运营级l i n u x 的特性及其需求。研究并分析了l i n u x 中传统的驱动加固方法 及其缺陷。 分析l i n u x 中设备驱动程序的相关技术和代码,重点研究了l i n u x 中i n , e lp r o 1 0 0 + 网络适配器驱动代码。 分析了e v e n tl o g g i n g 企业级日志系统的内核空间接口和基本使用方法a 结合以上研究,在传统驱动加固的基础上,设计并实现了c l i n u x 的驱动加固技术。 结合工程需要,在c l i n u x 中加入了相关改迸代码。 结合工程需要,编写了驱动程序失效注入控制程序以及诊断控制应用程序。 研究了数据分析的相关知识,提出分析设备效数据的关联方法和分类方法,并进行 了实际应用。 设计并实现了提高驱动程序失效恢复效率的失效恢复算法。 本课题的完成为在c l i n u x 操作系统中完善设备驱动程序加固技术提供了理论基础和 初步的实现原型。对运营级l i n u x 的发展也具有参考价值。 第8 页 国防科学技术犬学研究生院学位论文 1 4 论文结构 本文是对我们研究工作的总结,全文共分为五章。 第一章绪论。介绍了课题的研究背景。分析了国内外的相关研究课题,包括运营级概 念的提出,运营级l i f l u x 相关的标准以及电信产品制造商们的研究动向。另外,本章介绍了 本课题使用的工程环境基于a t c a 体系架构的运营级集群服务器特点。最后列出了本 文的研究内容以及论文的研究成果。 第二章传统的h i f l u x 驱动加固技术研究。本章介绍了驱动加固需求以及驱动加固技 术的关键问题。总结并分析了传统的加固方法及其缺陷。指出传统的驱动加固方法仅仅是 对驱动程序本身的改进,是狭义的可以扩展的。 第三章c 1 i n u x 驱动加固技术的研究与设计。本章主要的内容是研究c 1 i n u x 的驱动加 固技术的设计工作总结。本章在研究c 1 i n u x 具体需求的基础上,对c 1 i n u x 中驱动加固的 设备管理机制和设备监控技术进行了设计。本章构建了一套层次结构以提高驱动加固技术 的设备管理能力;并弥补了传统加固方法在信息收集和诊断管理方面的不足。 第四章c 1 i f l u x 驱动加固技术的实现。本章的内容是对第三章所设计的c 1 i n u x 驱动加 固技术的实现工作总结。 第五章c l i n u x 驱动加固的失效处理研究。本章分为三个部分:失效注入,失效分析 以及失效恢复。基于c l i n u x 驱动加固技术,本章设计并实现了一套失效注入方法对设备 失效进行模拟得到失效数据,并使用数据分析的一些方法,对这些失效数据进行了分析。 通过分析结果证明了c 1 i n u x 驱动加固技术和失效数据分析的价值。本章最后分析了传统 失效恢复算法的不足,设计了一种新的失效恢复算法提高失效恢复效率。 第六章结束语。总结了论文的主要工作、遇到的困难和收获,对今后的驱动加固技 术的前景进行了展望。 1 5 论文的研究成果 本文的主要贡献和创新工作包括以下几个方面: 研究并实现了c l i 1 u x 的驱动加固技术。 c 1 i n u x 驱动加固技术是对传统驱动加固方法的扩展,它包括了驱动加固的管理机制和 监控技术。这一技术提高了运营级设备的可管理性,并为上层应用程序异步的提供了可分 析的数据。 提出了使用数据分析的关联和分类模式分析失效数据的方法。 关联和分类是数据分析的两种模式。本文将其作为驱动程序失效数据分析的手段,通 过试验中证明这些方法对运营级系统的失效定位和失效预测具有一定实际意义和研究价 值。 设计了驱动程序的失效恢复算法。 驱动程序失效恢复一般分为三种:重启恢复,软件复位恢复,硬件复位恢复。本文依 据程序访问的局部性原理设计了一种失效恢复算法。并通过实验证明了此算法的效率。 第9 页 国防科学技术大学研究生院学位论文 第二章传统l i n u x 驱动加固技术研究 运营级电信系统对高可用性以及基于l i n u x 操作系统的系统管理有严格要求。设备驱 动程序则直接为这些要求提供支持。编写劣质的驱动程序可能成为操作系统不稳定、性能 下降、服务损耗的主要根源。甚至,一个编写良好的驱动程序也可能因为不可预料的软硬 件行为而出现问题。因此,出现了驱动程序加固概念。本章对l i n u x 下驱动加固进行介绍, 并分析传统的驱动加固方法。 2 1l i n u x 驱动加固 2 1 1 驱动加固概述 驱动程序是用来控制设备的内核模块 2 0 ,一个“编写良好”的驱动程序应该拥有对 设备高效、方便、灵活的控制能力。“加固”驱动程序则是对“编写良好”范畴的驱动程 序的超越和扩展,它包括些高度专业化的方式来获取硬件信息、检测软硬件问题、分析 相关数据。当设备出现问题时,加固的驱动程序应该具有一定的容错能力,温和的处理非 致命错误,并提供分析、定位问题的数据。 设备驱动程序在l i n u x 内核中扮演着特殊的角色。它们是一个个独立的“黑盒子”, 是操作系统中某个特定的硬件的内部编程接口,同时完全隐藏设备的工作细节 5 。用户 对硬件设备的操作通过一组标准化的调用完成,而这些调用是和特定的驱动程序无关的。 这样保证了驱动程序的运作对用户的透明,有助于用户方便、简洁的使用硬件。但同时, 由于这种“黑盒子”效应,当硬件或者驱动程序出现错误时,用户也无法得到相关的数据 来分析、预测失效,更无法实时地解决设备问题。因此,在加固的驱动程序编写中应该尽 可能的考虑到避免错误、验证错误、失效恢复、防止错误信息传播等内容。 2 1 2 驱动加固的关键问题 驱动程序加固的关键问题在于使设备和驱动程序失效对于他们所服务的应用程序尽 可能的透明化,并在问题无法解决时为上层程序或者系统管理员提供可分析的失效数据。 首先,加固驱动程序应该具有发现问题、控制问题的能力。普通的设备驱动程序设计 集中关注的是汇常的、适当的硬件运作;通常很少关注驱动狸序在硬件错误事件中的行为。 在驱动加固设计中应当勤勉的检查软硬件错误,花大力度的关注那些影响整个系统的错 误;严格的限制那些错误的数据和信息在系统中弥漫。 其次,加固驱动程序需要具有处理问题的能力。加固的设备驱动必须积极参与设备的 错误恢复,尽可能通过失效恢复程序解决问题。当出现不能解决的问题时将错误报告给上 层的系统管理,由管理程序分析错误,下达指令来控制驱动程序和设备的行动。比如,进 行渗断测试或者从服务器中卸载错误设备。 2 2 传统的驱动加固方法 传统的l i n u x 驱动加固研究主要集中在驱动程序代码本身的编写上,可以说是一种狭 第1 0 页 国防科学技术大学研究生院学位论文 义的驱动程序加固。一般包括以下内容。 使驱动在系统中更容易使用和配置。 使驱动源代码更容易理解和维护。 保证驱动不在它的内存空间以外的内存中写数据,以保护内核。 保证驱动不传播和使用错误的数据,以提高系统的稳定性。 检测不可预料的操作系统和硬件异常。 记录驱动和相关设备状态的关键信息。 传统的驱动加固方法是本课题研究的基础。因此,本节下面的内容将对传统加固方法 进行分门别类的总结分析。 2 2 1 基本运行时和配置信息 加固驱动程序经由p r o c 文件系统提供人们可以识别的驱动版本、配置信息。这些信 息的位置和格式是任意的,但必须包括以下内容: 设备驱动版本信息。 驱动在哪个版本的内核中编译。 编译时的配置选项。 驱动加载配置信息。 所有运行时配置选项。比如设备读写的速度、自检的频率等等。 2 2 2 软件编码方法 加固驱动遵循以下一些代码编写方法。这些方法将代码错误的可能降到最低并增强代 码的可维护性。 以l i n u x 内核代码风格为基准,保持与内核代码的一致性,这样有利于代码的可读 陆。其中包括括号位置,命名方法以及函数,注释,配置文件,数据结构的编写方法。 使用具有检测错误能力的函数,例如:使用s t r n c p y ,s t r n c a t ,s t r n c m p 函数就能 够控制字符串操作的字节数 6 。相反,如果使用功能相同c i 勺s t r c p y ,s t r c a t ,s t r c m p 则有可能出现访问越界。因为这些字符串操作函数通过搜索字符串末端的结束符来终 止操作,当字符串的结束符号被意外丢失时,函数便会无休止的搜索下去,一直搜索 到内存中下一个字符串的结束符停止。显然,它们是可能影响系统稳定性的。因此在 选择函数时,应该适当的使用具有检测保护的函数以防止越界使用已分配的内存。 尽量减少全局变量和静态变量的使用。在各个驱动实例中使用共享数据是一件危 险的事情。这是因为当一个驱动实例出现数据错误时,共享数据会把错误蔓延到其他 驱动程序实例。 切忌使用全局数据在函数之州传递数据。因为,全局数据可能会被中断或被其它 并行进程所更改,使得接收函数得到了错误的数据。 在驱动程序中,应当动态的分配数据结构以避免结构创建限制( 例如,设备数支 持) 。这是因为明确设备最大数会限制驱动容量,而如果不限制设备最大数则会浪费 内存。动态分配内存可保证最高效的使用内核空间,使得添加删除驱动实例更加简便。 使用“s iz e o f ”获取数掘大小,而不是使用数组,数据结构,字符串的定义大小。 因为代码在经过维护后,数据的大小可能改变。使用s i z e o f 保证获得数据当前的实际 大小。 第1 i 页 国防科学技术大学研究生院学位论文 尽可能的限定变量和函数的适用范围限。使用“s t a t i c ”声明一个函数或者变量 以限制它在源文件中的作用范围。另外,应该尽量使用局部变量,防止变量使用中的 名字冲突。 使用“v o l a t i l e ”声明表示寄存器的变量,例如,状态寄存器。这是因为编译器 不会对v o l a t i l e 类型的变量进行优化,每一次对变量的访问都会直接从寄存器中获取, 以保证数据的一致性。 使用“c o n s t ”修饰那些不变的数据。当有代码试图重新指定常量的类型时,编译 器就会发出警告。 写出清晰的注释( 并不是过分的注释) ,尽量使用段释的方式而不是行释,因为 单独一行代码通常是没有什么实际意义的。段释的方法能够较好的解释那些不明确的 代码。 2 2 3 分离设备实例 对于每一个设备,加固的驱动程序都使用分离的数据结构实例来控制硬件设备。分离 的设备实例可以屏蔽其它设备的无效信息:并且允许每个设备的初始,执行,停止等行为 都独立于其它设备。分离驱动实例对于热交换,热升级,失效隔离和设备容错都有重要意 义。 2 2 4 硬件访问的公共点 加固的驱动通过公共访问函数访问硬件。每种输入输出操作必须有一个统一的访问 电,这样做的优点如下: 由于访问硬件可能影响系统的稳定性,一般在访问硬件时需要进行设备与系统的 隔离,但并不是彻底关闭驱动。在公共访问函数中加入使能和关闭设备访问的语句, 就可以将所有设备访问时的隔离工作透明的完成。 减少冗余代码,使得修改设备访问函数更加简便,减小了代码出错机会。 有助于其它驱动加固特征,使得多种操作类型在记录和统计时更方便的分类。 为那些模拟硬件错误的注入函数提供集中的i o 拦截点。 2 2 5 数据验证 加固驱动程序在数据的使用之前对数据做验证。如果数据有错误,驱动拒绝使用该数 据以保证系统的稳定。另外,驱动程序记录已知的错误信息,并返回一个适当的错误代码 柬调用错误处理函数。 以下是几种不同类型的数据验证方法。 资源分配数据验证:驱动对成功的资源(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产安全质量管理
- 物业管理经理年度履职总结报告
- 学生食堂改造项目施工方案
- 化水安全培训课件
- 建筑工地应急预防措施计划
- 身体健康的演讲
- 天天好心情健康活动
- 课程考试《教育传播学》练习测试题库及答案
- 华东师范大学《实验心理学》练习试题及答案(二)
- 国家开放大学电大《现代教师学导论》期末论述题题库及答案
- 2026年常用电机检修工职业技能鉴定题库(附答案与解释)
- 2026成都兴城投资集团有限公司成都蓉城数字科技有限公司招聘产品经理岗位1人笔试题库(能力提升)附答案详解
- SGLT2抑制剂临床应用专家共识
- 盘扣脚手架技术交底
- 招商银行智慧营销体系规划方案(2022年-2023年)
- von frey丝K值表完整版
- 《勾股定理》整章综合测试(一)338345
- NB/T 10943-202210 kV及以下有源型电压暂降治理设备检测规程
- GB/T 17880.6-1999铆螺母技术条件
- YY 0899-2020医用微波设备附件的通用要求
- JJF 1915-2021倾角仪校准规范
评论
0/150
提交评论