|
Windows 2000的可靠性 Windows 2000作为新一代的网络操作系统家族,无论在性能上还是可靠性上都有了质的飞跃。在Windows 2000中,微软已经针对可能影响可靠性的软硬件和系统管理问题专门进行了加强。Windows 2000在三个主要的方面改进了可靠性。首先,对结构进行了修改,主要目的在保护操作系统的内核和共享内存,因此增强了系统的稳定性。第二,开发了新的工具可以帮助开发者创建更可靠的代码。第三,Windows 2000包含了新的管理特性可以提高可靠性。在本文中将对这些增强和新特性进行专门介绍 介绍 对操作系统来说,用户的主要需求就是系统的可靠性。我们平常提到的可靠性实际上指的是两个方面的操作系统特性:可靠性和可用性。在提到操作系统的时候,可靠性是指一台服务器如何相容的运行应用程序和服务而尽量少的发生错误,可靠性越高就表示系统发生错误的机会越少;而可用性是指系统可以使用的时间,可用性高就表示系统可用使用的时间多,因为日常维护和意外错误导致的宕机时间就少。可靠性可以通过减少潜在的系统失败的原因来提高,而可用性则可以通过解决宕机的原因来解决。简而言之,一个可靠的和可用的系统很少失败,在关机后也很容易重新启动 Microsoft Windows 2000 操作系统家族在硬件、软件和系统管理方面进行了增强以解决可用性和可靠性的问题。微软利用内部和从客户处搜集的大量数据来分析引起Windows NT 4.0失败的原因。这些信息帮助微软增强了Windows 2000的稳定性和可靠性,并且帮助微软开发了工具,这些工具可以帮助管理员更快得分析问题,以及更快得从不可避免的失败中恢复。 Windows 2000 在三个主要方面提高了可靠性和可用性:对操作系统进行基本的改进,帮助开发人员创建可靠的代码,提供管理员提高系统可用性的新的工具。 首先,通过结构的修改,操作系统的稳定性得到了增强,结构的修改主要集中在保护操作系统的内核和共享内存上面。包括:
第二,新的工具可以帮助开发人员创建更可靠得驱动程序。例如,一个公共的驱动程序问题的来源是不正确的使用共享内存。Pool Tagging 和 Guard Pages 特性使得跟踪内存使用更加简单,因此可以帮助开发人员对设备驱动程序进行调试。Driver Verifier 和 Device Path Exerciser 工具可以让开发人员检查错误分类,而在以前这些问题在测试环境中很难发现。 第三,Windows 2000 包括了新的管理特性,这些特性和增强改进了可用性。其中最重要的是减少了要求系统重新启动的维护功能的数目。关键的诊断过程运行的更快速,例如进行硬盘检查或者在系统失败时创建一个关于内存使用的详细报告。另外的几个改进减少了关机和重新启动的时间。 本文将对这些改进在技术方面做一个全面的介绍 系统结构和内存使用 可靠性和可用性的改进的核心是对操作系统和内存的保护。许多会引起系统不稳定的问题主要是由于对操作系统内核(在内核中执行着基本的系统服务)的意外的影响,。因为内核控制着整个操作系统,所以影响内核的代码错误对可靠性有极大的影响。影响内存的错误也是不稳定的一个经常的来源。 Windows 2000操作系统提供了一个应用程序运行的环境。它包含了一系列的小软件组件,它们在一起工作来执行任务。每一个组件提供了一系列的功能来作为系统其它部分的接口。这些模块提供了访问CPU和其他硬件资源的方式。操作系统还提供了使程序和组件可以互相通信的机制。 核心模式和用户模式 Windows 2000 将执行代码分为以下两种模式 用户模式 用户模式中的软件在没有特权的状态下运行,对系统资源只有有限的访问权限。例如,软件不能直接访问硬件。Windows 2000基础的应用程序和被保护的子系统运行在用户模式下。被保护的子系统运行在自己的空间内,不会互相干涉。 核心模式 在核心模式中,软件可以访问所有的系统资源,例如计算机硬件和敏感的系统数据。核心模式中的软件构成了操作系统的核心,它们可以分为如下几组:
内存模型 Windows 2000 增添了新的特性以解决因为共享内存的不同的处理方式引起得问题。要理解这些改进,就要先理解Windows 2000是如何管理内存的。 Windows 2000 使用虚拟内存管理器来管理虚拟内存和物理内存。 虚拟内存指操作系统如何使内存对应用程序可以使用。Windows 2000 支持4GB的虚拟内存。其中2GB为核心模式使用,另外2GB为核心模式和用户模式共同使用。 物理内存指计算机中安装的内存芯片。虚拟内存管理器(VMM)使用内存映射表来跟踪每一个进程使用的虚拟内存地址以及这些地址引用得实际数据在物理内存中的位置。为了让多个应用程序可以共享内存空间,VMM使用一个叫做PAGING的进程在物理内存和硬盘之间交换内容。这些被交换的内容叫做page
files.
由于提供预先检测,阻止了应用程序、服务或设备驱动程序对内存的不正确使用,Windows 2000提高了可靠性。操作系统可以非常出色的管理应用程序以及系统的错误,使得系统不会宕机。另外,为了保证一个程序的失败不会导致影响操作系统或者其他应用程序的运行,其他的子系统与应用程序被隔离在单独的内存空间中。 在Windows 2000中对可靠性的改进主要在三个领域:结构改进,核心模式代码开发工具,以及用户模式代码开发工具。 结构改进有助于保护操作系统核心模式操作。这些改进包括:
核心模式写保护 为了保护操作系统中的每一部分不会受其它部分的错误的影响,Windows 2000在内核部分和设备驱动程序中添加了写保护和只读部分,正象Windows NT总是有用户模式应用程序和动态连接库一样。 为了提供这种保护,物理内存映射标志出包含代码的内存页面,保证它们不能够被覆盖,即使是操作系统也不能。这样就阻止了核心模式软件破坏了其他核心模式软件。这些特性在缺省情况下是激活的,当然如果用户和开发人员愿意的话,可以关闭这些特性。 Windows 文件保护 在Windows 2000以前的Windows版本中,安装软件可能覆盖共享的系统文件(例如,DLL,和可执行文件)。如果系统文件被覆盖,系统性能就会变得不可靠,程序的行为就会混乱,操作系统可能会失败。 Windows 文件保护在安装前检查原来的系统文件的版本。这样就保证象.sys, .dll, .ocx, .ttf, .fon, .exe等系统文件不会被替代。Windows 文件保护在后台运行,保护所有的由Windows 2000安装程序安装的文件。它检测其他程序要替换或删除一个被保护的系统文件的企图。Windows 文件保护检查文件的数字签名来确定新文件是否为正确的版本。如果这个文件的版本不正确,Windows文件保护就从dllcache目录,网络安装路径或者Windows 2000光盘中替换这个文件。如果Windows文件保护找不到合适的文件,它就会提示用户输入正确的路径。Windows文件保护还会将替换文件的企图写入事件日志。 缺省情况下,Windows文件保护是被激活的,只允许在安装下面的软件时替换被保护的系统文件:
驱动程序签名 驱动程序签名有助于提高驱动程序的质量,因为它允许Windows 2000和Windows 98通知用户他们安装的驱动程序是否通过了微软的认证程序。驱动程序签名将一个加密的数字签名附加在通过了Windows Hardware Quality Labs (WHQL) 测试的代码文件上。. 如果驱动程序运行在Windows 2000和Windows 98操作系统中,那么给驱动程序签名则是WHQL测试的一部分。数字签名与独立的驱动程序包结合在一起,Windows 2000可以识别它。这种认证证明用户使用的驱动程序是经过微软测试的那个驱动程序,如果在该驱动程序被放在HCL中后被修改过,Windows 2000就会通知用户。 驱动程序允许三种反应:Warn,Block,Ignore.
缺省情况下,Windows 2000 以Warn方式发布。 核心模式代码开发 如前所述,软件可以被分为两类:用户模式软件和核心模式软件。那些有助于程序员创建可靠的用户模式的应用程序的开发工具对开发核心模式代码的程序员来说就不合适了。因为编写核心模式代码由特定的要求,Windows 2000 Server中的可靠性的改进就包括专为核心模式开发人员使用得开发工具。 设备驱动程序是核心模式代码,它将操作系统和硬件联系到一起。为了使系统的性能达到最大,核心模式代码没有应用程序那样的内存保护机制。相反,操作系统充分信任核心模式代码没有错误。这就是为什么为了与其他的驱动程序和操作系统组件安全的协调工作,这些驱动程序和核心模式代码必须遵循复杂的规则的原因。一点点偏差就会导致其他核心模式的错误。 某些核心模式代码错误在测试阶段就可以发现。但是,像内存不足等错误,则可能经过很长时间才能导致系统崩溃,因此要找到在那儿产生的错误非常困难。另外,对驱动程序开发人员来说,要完全测试核心模式代码也是非常困难的,因为要模拟驱动程序将会碰到的整个环境是非常困难的。 为了解决这些问题,Windows 2000 Server 增加了下面的特性和工具来帮助开发人员创建更高质量的驱动程序:
Pool Tagging Windows NT 4.0 内核包含完全共享的内存池,它被分配给各个任务,当不再需要时内存被返回给内存池。如果设备驱动程序发生错误的话,这种共享内存方式就会带来问题。一个经常发生的错误就是让核心模式组件对分配给它的内存以外的内存空间进行写操作。这样做将会引起另外的核心模式组件崩溃,从而导致系统失败。 另一个经常会发生的错误是为一个驱动程序的进程分配了内存,但是在进程结束后却没有释放,这种情况会产生内存不足的问题。内存不足经常导致系统挂起---挂起的时间依赖于当时的环境。例如,一个请求了很少量的驱动程序,没有释放掉它的内存将会花很长时间才能消耗掉整个内存池。 所有的这些错误可能很难被跟踪。为了帮助开发人员发现并且修复这些错误,微软在Windows 2000中增加了Pool Tagging,或者称为(Special Pool)。这个工具在Windows NT 4的Service Pack 4中就存在了。 Guard Pages Guard Pages 工具创建了Special Pool (Pool Tagging)的边界。这些内存页面让开发核心模式代码的开发人员能够发现覆盖代码的错误。当程序分配内存区域,然后又要在该区域之内进行写操作时就会发生这种错误。而使用了Guard Page,当程序请求内存区域时,操作系统将内存区域从页面内存的边界开始分配。然后,操作系统就映射下一个页面为Guard Page,并且设置这些页面,使得代码不能够访问它们。如果程序试图对这些内存区域进行写操作的话,它会碰到Guard Page,而这些页面是不能写的,系统将产生一个硬件错误,从而导致系统失败。这种引导出的失败警告开发人员,他们的应用程序的写操作超出了范围。 Driver Verifier Driver Verifier 是Windows 2000内核中增加的一系列的检查。这些检查有助于发现核心模式中包含的错误。因为Driver Verifier 影响性能,因此不应该连续使用,也不应该在实际环境中使用。在测试新的应用程序或者在实际环境中为后面的重复使用进行配置时,这是理想的工具。Driver Verifier 在进行技术支持时也非常有用,例如有一个特定的驱动程序被怀疑引起系统崩溃了。Driver Verifier 还包含一个Verifier.exe文件,这是一个用来管理driver verifier设置的图形界面的工具。 Driver Verifier 测试特定的错误条件集合,当发现新的可能的错误模式时,这些错误就被添加到测试集合中。Driver
Verifier可以测试下面几种类型的错误:
Device Path Exerciser Device Path Exerciser (Devctl)测试设备驱动程序如何处理错误。它利用各种各样的用户模式I/O接口同步或者异步调用驱动程序,并且测试驱动程序如何处理错误的请求。例如,它可能连接到网络驱动程序并且请求它回卷磁带。可能连接到打印驱动程序并且请求它重新同步通信线路。或者,它也可能使用一个错误的缓冲区请求某个设备功能。这样的测试帮助开发人员使得驱动程序在错误的条件下更强壮 用户模式代码开发 Windows 2000 包括一个新的工具---PageHeap。它可以帮助开发人员在开发非核心模式代码的时候找到内存访问错误。 PageHeap Heap(堆)指的是用于临时存放代码的内存。堆错误在应用程序开发中是一个经常遇到的问题。最典型的发生堆错误的情况是一个应用程序分配了一个特定大小的内存块,但是却在该范围之外进行写操作。另一个发生错误的原因是正在写的内存块已经被释放掉了。在这些情况下,可能会出现两个应用程序写同一部分内存,从而导致系统失败。Windows 2000中新添加的PageHeap特性就可以帮助开发人员发现它们的内存错误。 当PageHeap 被激活时,该应用程序的所有的堆分配被放到内存中,这样堆的边界就与虚拟内存的边界排在一起了。与堆相邻的虚拟内存页面被设置为NO_ACCESS。在该应用程序中对堆后面的空间的访问就会立刻引起错误,这就可以在一个调试工具中被捕获,开发人员就可以找到出错的代码。 在释放堆时,过程与之类似。PageHeap修改释放的应用程序虚拟页面为NO_ACCESS,这样,如果应用程序试图读写该内存时就会发生访问错误。 如果为一个应用程序运行PageHeap特性,应用程序要比正常时运行得慢,并且需要更多的虚拟内存,因为每一个堆的分配都需要两个完整的虚拟内存页面。随着应用程序对堆的使用的增加,可能需要增加系统的虚拟内存的大小,否则会出现虚拟内存不够的错误信息。除非系统有相当大的虚拟内存,否则建议不要同时运行两个以上的激活了PageHeap特性的应用程序。 可用性的改进 Windows 2000中对可用性的改进减少了为了正常的维护工作而导致系统离线的时间。它还提高了恢复速度,增强了数据存储功能。 既然系统失败是不可避免的,管理员就必须能够快速的备份重要的数据,在系统崩溃时能够迅速抽取信息以确定发生错误的原因---不管这个问题是硬件的,操作系统的,还是第三方的产品。相似的,企业级的关键任务的应用程序还需要能够在发生错误的情况下快速的保存关键的数据,并且能够自动定位响应组件。 下面的特性减少了为了维护而必须使系统离线的时间,也减少了诊断系统错误和重新启动系统的时间:
减少维护宕机时间 Service Pack Slipstreaming Service Pack (SP) 可以非常容易得添加到基本得操作系统中,这就意味着客户不需要在安装完新的组件后重新安装SP。Sp可以作为安装共享,这样就总是可以使用正确的文件和注册表入口。这样就允许用户创建自己的Windows 2000的软件包,其中包含适当的SP和Hotfix。 减少了维护所需要的重新启动的次数 在Windows NT 4.0中有许多配置修改需要重新启动计算机,在Windows 2000中不再需要了。这些工作包括:
硬件安装和维护
网络和通信
内存管理
软件安装
性能优化
改进的诊断能力 在Windows 2000中有助于帮助用户快速排除系统错误的特性包括:
Kernel-Only Crash Dumps 除了完全的崩溃时内存转储之外,Windows 2000 Server支持核心模式的崩溃时内存转储,允许具有大内存的系统能够更快的重新启动。当Windows NT 的系统崩溃时,所有的当时内存中的信息被存储在硬盘上。管理员和开发人员使用这些信息(这些信息被称为crash dump)进行排错。为了保证这些信息被安全的转移到硬盘上,操作系统使用相当保守的算法来处理这些内存信息。 因为Windows 2000支持64GB的物理内存,所以完全的内存转储可能非常慢,这样就会严重的影响系统重新启动的时间。例如,一台安装了1GB的内存的Pentium Pro计算机大约需要20分钟的时间将内存转储到页面文件中。系统重新启动时,将要花费大约25分钟的时间将转储数据从页面文件拷贝到转储文件中。这就意味着大约有45分钟的时间系统不能够使用。 所以,在完全的崩溃时内存转储之外,Windows 2000还支持核心模式崩溃是转储。这样就可以在更短的时间内和更少的空间中完成与核心模式相关的错误。当一个安装了非常大的内存的系统需要很快能够工作时这一特点非常有用。随着系统的使用,核心模式的转储可能会将转储文件的大小和转储的时间减少到80%。 使用核心模式崩溃时转储需要进行平衡。因为重要的数据总是存在于用户模式中而不是核心模式中,所以,使用这种方法可能会丢失重要的数据。 更快的CHKDSK CHKDSK命令用于检查硬盘错误。尽管这是一个强有力的工具, 有时它也可能花费几个小时,时间的长短依赖于该磁盘分区的文件配置。在Windows 2000中的CHKDSK的性能改进了非常多。由于有如此多的因素会影响CHKDSK的性能,因此要评价这些改进非常困难。在某些配置的情况下,Windows 2000中的CHKDSK的速度要比Windows NT 4.0中快10倍。CHKDSK可以在Windows 2000 Recovery Console 中找到。 MSINFO MSINFO提供可以用于排错的信息。在微软的其他产品中也有这个工具,这个工具可以在System Information Microsoft Management Console插件中找到。MSINFO可以用于几种途径。在电话支持中,一个工程师可以要求用户运行MSINFO,提供相关的信息。或者,用户可以使用MSINFO生成系统信息,这些信息可以保存起来交给支持工程师。 更快的系统恢复和重新启动 Windows 2000中的改进减少了从一个崩溃的系统中进行恢复的时间,也较少了重新启动操作系统的时间。这些改进包括:
Recovery Console Windows 2000 Recovery Console 是一个管理员使用的命令行工具,它可以从Windows 2000安装光盘上得到。它可以从Windows 2000光盘或者启动软盘上以文本方式运行,然后在出现Welcome屏幕时选择Repair选项。为了使用起来更加简单,也可以将它配置为boot.ini文件中的一项(运行Winnt32/cmdcons)。 Recovery Console 对于修复系统来说非常有用,它将启动软盘或Windows 2000光盘中的文件拷贝到系统中。利用Recovery Console,用户可以启动和停止服务,格式化驱动器,在本地驱动器上读写数据,以及执行许多其他的管理任务。 因为Recovery Console允许用户在使用Windows 2000引导软盘时读写NTFS分区,它有助于组织减少或者消除在系统恢复时对FAT和DOS引导盘的依赖。另外,它提供了一系列的方式,这些方式有助于管理员可以通过一系列的命令恢复Windows 2000的安装,同时保持了Windows 2000的安全性。用户可以登录到他们要访问的Windows 2000中。另外,使用Recovery Console,文件不能从系统拷贝到任何可移动介质上。 Safe Mode Boot 为了帮助用户和管理员诊断类似于错误的设备驱动程序等系统问题,Windows 2000操作系统可以以Safe Mode Boot启动。用户可以在系统启动的过程中出现Please select the operating system时按F8选择该选项。在安全模式中,Windows 2000使用缺省的硬件设置(鼠标,显示器,键盘,硬盘,基本的显卡,缺省的系统服务,以及没有网络)。安全模式启动允许用户修改缺省设置,或者删除一个产生问题的新安装的驱动程序。 在安全模式选项之外,用户可以选择Step-by-Step Configuration Mode,这种模式可以让用户可以选择基本的文件和服务来启动,或者选择Last Known Good Configuration,这种配置用上次关机时保存的注册表信息来启动计算机。 Kill Process Tree 如果一个应用程序对系统不再响应了,用户需要一种方法来停掉它。Windows NT 4.0使用Task Manager让用户选择一个进程或应用程序并且停止掉它。这个方法并不总是有效,然而,因为程序可能有几个进程,因此很有可能形成一个进程树。问题就产生了,因为很有可能停掉了一个进程,而其他的子进程仍然在运行着。 因此,Windows 2000提供了一个叫做Kill Process Tree的工具,这个工具允许Task Manager不止停掉一个进程,而且还能够不用重新启动系统就停掉该进程产生的其他的进程。Kill Process Tree在系统由于运行了许多进程而非常慢的情况下非常有用。 Recoverable File System Windows 2000 文件系统(NTFS) 更不容易出错,因为它将所有得磁盘I/O作为一个唯一的事务。一旦发生问题,文件系统可以在系统恢复时很快地回滚整个事务或者重新执行整个事务。这样就减少了系统不能使用的时间,因为文件系统可以被很快地恢复到可以正常工作的状态。 Automatic Restart Windows 2000中的错误处理子系统和被保护的子系统减少了系统崩溃的可能性。然而,一旦系统不幸的崩溃了,系统可以设置为自动重新启动。另外,在重新启动前,内存中的内容可以写入日志文件中以帮助管理员确定崩溃的原因。因为Windows 2000中写入的日志文件总是相同的名字(缺省情况下为memory.dmp),因此在系统重新启动后,你应该为它重新命名。 IIS Reliable Restart 过去,重新启动系统是重启IIS服务的一个可以接受的方案,尽管不是一个最有效的方案。为了可靠的重新启动IIS,管理员需要重新启动四个服务,必须具有这一方面的专门知识,例如NET命令的语法。为了避免这些麻烦,Windows 2000中提供了IIS Reliable Restart特性,这是一个更快的,更简单的,也是更灵活的单步启动过程。 用户可以在MMC中通过鼠标右键重新启动IIS,也可以使用命令行应用程序。命令行应用程序可以通过其他的微软软件或第三方的工具来运行。如果INETINFO进程被不正常的停止了,IIS服务就可以通过Windows 2000 Service Control Manager的功能自动重性启动。 Storage Management 为了避免缺少磁盘空间带来的系统问题,Windows 2000提供了一些存储上的改进来帮助管理员花费最少的工作来维护足够的自由空间。例如,管理员可以不用关闭系统或者打断用户的工作就可以执行创建卷,扩展卷,或者镜像卷的任务。. Windows 2000中的存储管理特性包括:
集群指将单独的服务器连接起来并且协调他们之间的通信,使他们可以作为一个整体来运行。如果任何一个服务器不能工作了,它的工作就自动转移到另外一台服务器继续进行(这个过程称为FAILOVER)。某些形式的集群使用负载平衡,这种功能使得计算的工作可以通过网络分配到相互连接的服务器上。 Windows 2000Advanced Server中集群的系统服务是一个标准的部件。一个服务器集群就是一个独立的服务器集合,这些服务器可以互相管理。集群的目标是提供高度的应用程序和数据的可用性。 集群使宕机的时间减到最少,减少了IT支持的花费,因为它提供了一个即使一个系统失败了整个系统也可以继续运行的结构。这就意味着集群解决了计划中的宕机(例如硬件或软件升级)和意外的宕机. 使用集群可以帮助组织减少总体花费。集群可以通过较便宜的硬件来构建,使用标准的连接和存储系统。微软与硬件制造商一起工作来测试和检验服务器和网络产品。 Advanced Server 提供了集群的系统服务,支持两个节点的集群。这个技术基于非常成熟的Windows
NT Server 4.0 Enterprise Edition中的Microsoft Cluster Services (MSCS) 两节点集群技术,同时进行了下面的增强:
Windows 2000 Datacenter Server支持四个节点的集群 总结
可用性通过减少维护和失败后重新启动所用的时间得到提高。Windows 2000引进了新的管理和维护特性来解决这些问题。通过减少大量的要求系统重新启动的任务,日常的维护不再像过去一样要求那么多的宕机。并且在系统失败时,改进了工具使得确定问题的原因和重新启动计算机更快乐。 Windows 2000中的可靠性和可用性的改进意味着商业用户可以信任并且依赖于他们的系统,从而为他们的系统用户和客户提供更高的满意度。对于IT用户来说,改进提供了更强壮的系统结构,更少的重启次数,以及更加可靠的应用程序性能。 (清华微软高级技术培训中心 李栋)
|