网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 中华软件网 >> 技术与方案 >> 技术 >> 文章正文
  操作系统 如何自愈            【字体:
操作系统 如何自愈
作者:谢文砚    文章来源:http://cnw2005.cnw.com.cn/store/detail/detail.asp?articleId=48581&ColumnId=10705&pg=&view=    点击数:    更新时间:2006-8-13    

目前,IT系统只要性能足够强就有竞争力——其维护上的多种成本通常被忽略(尤其是在国内);但未来,一个不具备自愈功能的IT系统,必定不能生存。

  我们从IT广告中得到的信息是,眼下的网络、服务器、操作系统和相当多的应用软件已经可以自我防护、自我诊断、自我修复,甚至还能从所有这些自主活动中余下充足的计算能力来执行其他任务。

  然而真是这样么?我们到达办公室后,就会面对现实:所有IT管理人员、系统管理员和开发员都在与计算复杂性这个巨兽搏斗。而其中最常见的挑战是试图在今天这种错综复杂的环境中确定问题、查找问题根源和解决问题——或许厂商在销售IT系统的时候,附赠自动贩卖机和睡袋是个好主意。

  尽管不需要向业界提醒计算复杂性的成本,但值得关注的是:我们在通向自我修复系统的道路上行进到了哪里?这个领域有多少仍未完成的研究?厂商是否缺少行动或不够重视?我们在硬件方面或在软件方面取得更大的进展?

  虽然业界开始日益关注真正的问题,例如数年前开始的IBMe-liza计划、SunSolaris 10,但现实似乎远远落在了广告宣传的后面。

为何需要自愈?

  业界通常使用三种基本方法来改善计算可用性:一是改进不同部件(硬件及软件)的可靠性和弹性;其二是引入冗余技术来应付部件故障;其三是采取预防措施,避免故障或减少所需要的恢复时间。

  IBMStratus两家公司的产品可以看成是前两种思路的典型实现,IBM的产品一向以可靠性著称;而Stratus在上世纪80年代与NEC合作推出的高冗余的服务器产品,也为其在业内赢得了相当市场。

  然而,业界的一些大趋势在很大程度上是与提高部件可靠性和冗余性相悖的。首先,厂商越来越多地利用来自不同来源的商用硬件部件来生产更为廉价的系统。同样,软件业也是利用商用组件构建的,在很多情况下,来自开放源代码或质量千差万别的现货组件。其次,增加冗余往往与降低系统成本、减少系统管理困难和复杂性的客户需求相悖。

  因此,当前两个领域的改良都不那么容易取得重大进展的时候,如果第三个领域,即操作系统的自愈技术获得突破,必将成为未来IT技术的关注焦点。

  但是,自愈技术所面临领域的复杂性正在迅速增加。例如一台最简单的机架服务器或刀片服务器已经在每块芯片上拥有多个处理器内核,每个内核上具有多条硬件线程,AMDIBMIntelSun都在全力做这方面的工作。甚至部署在单个系统上的服务的深度及复杂性也在不断增加:每个进程多个线程、每个部件多个进程、来自不同部件的多种组件搭在一起。

  在这个领域中,每种操作系统都需要管理更多的内存、计算能力和I/O,以支持更多的应用服务来做更多的工作。

  一种较为简单的实现途径是以单个服务器系统成为恢复单位——如果某部件发生故障,要么重新启动整个系统,要么切换到冗余系统上。但不幸的是,由于不断增加供每个系统使用的物理资源,这种方法本质上是浪费的:如果能够关闭某个处理器内核,如果能够重新启动单个应用,或者如果能够在真正需要停机维护之前,不去使用巨大内存池中的一小块内存或某条I/O路径,那么为什么还要重启整个系统呢?精细粒度的恢复可以使技术工程师更有效地利用计算资源和资金,为最终用户减少停机时间。

自愈技术的挑战

  未来或许是光明的,而眼下自愈技术面临的困难是确定的。自愈技术需要更深入地了解硬件/软件的依存性,并且更深入地理解部署在其上软件栈中的关系和依存性,才能实施智能的自我诊断和自我修复。

  例如,内核可以通过处理不同类型的异常,来决定结束进程还是将异常传递下去(就Unix而言,它可以向进程发出像SIGSEGVSIGBUS这样的信号),来检测任何运行进程的故障。按照缺省设计,这些异常通常造成进程的结束,但也可以被更聪明的应用程序截获,以便在进程结束前整理或保存数据。从目前来看,这类信号指出编程错误,例如错误的进程试图从未映射的或未命中的地址中读数据。

  然而一个大问题是: 通知进程或结束进程仍安全吗?如果结束进程,系统还可以重新启动它吗?如何重新启动?还有什么可能受到影响?操作系统需要向用户如何解释?这种解释能被用户理解么?

  最通俗的例子当然是微软的错误代码,微软将发生在处理器或内存中的底层故障进行这样的描述:“X进程因为物理地址0x12345678处发生了致命错误而终止,估计没有用户能从这样的错误代码中找出问题原因并解决。因而自愈技术要解决的问题就是,从管理人员可以理解的角度去记录和管理:什么服务受到了影响,故障对其他服务产生什么影响;影响到什么;系统为我们做些什么;以及如果需要的话,需要什么样的人工干预。

未来还是美好的

  目前来看,Sun似乎在系统自愈技术上走得更远一点,它采取了一种双管齐下的方法来改进Solaris 10的可用性:Sun开发了一个可扩展的故障管理器,这个管理器可以接收来自系统部件(包括内核)的远程数据,然后将它们传送给自我修复诊断与响应软件;还有一个管理Solaris系统上的服务描述,以及服务之间依存性的服务管理器,这个管理器可以执行智能化的自动重启;Sun还有一种名为合同的新操作系统基元的概念,服务管理器可以利用合同实现将受到管理的进程集合恢复到内核中。

  Sun认为该模型可扩展到任何系统或扩展到分层联网的系统组合。故障管理器本身是一种接收系统观测到错误数据的服务,它利用相应的算法或专家系统规则尝试自动诊断这些错误,发现潜在的问题,如硬件故障或应用程序中可能存在的缺陷。服务管理器管理运行在系统上的各种应用服务,并利用它们的依存性来依次执行启动、关闭和重新启动。因此,尽管Solaris10故障管理器和服务管理器与CPU、内存、I/O设备和单系统服务等本地资源打交道,但我们认为在为刀片服务器组或联网的数据中心设计自我修复特性时,可应用同样的概念。在刀片服务器组或联网的数据中心应用中,故障管理器跟踪已知的服务故障清单,服务管理器作为一个整体观测和管理提供给网络或数据中心的最高级别的服务集合。

  对于未来IT系统的用户而言,自愈技术将提供精细粒度的故障隔离和精确重启。若想做到这点,操作系统就必须提供对IT系统上发现的错误进行智能的、自动的、主动的诊断。诊断系统必须能触发自动化响应或受指导的人工干预,来解决特定问题或者至少防止问题恶化。最后,这些新系统功能必须连接在一个更简单、更高层的抽象系统管理模型上。

自愈技术要点

 用可以远程管理的自动数据检测、处理和修正来取代传统的错误信息 

 提供对系统软硬件错误的远程自动诊断和响应

 根据服务的依存性,提供IT系统上应用/服务的精细粒度重启

 对诊断出的问题以及该问题对服务和资源的影响进行简单的管理

 

文章录入:hanzhihong    责任编辑:Michaelhou 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    采用VMware软件的IBM刀片服务…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    公司地址:北京市海淀区学院路40号研7楼A座101 邮编:100083
    电话:010-62303159-8006 传真:010-62303199
    销售咨询:sales@dwsoft.com.cn 技术支持:service@dwsoft.com.cn