如何避免三大常见诱因使Windows Server崩溃的方法
下面让我们来细致看一下这三种服务器系统崩溃的详细,并辨别简介一下防止它们的最好方法。
杀毒软件
到当前为止,最罕见的Windows Server崩溃是由旧版杀毒软件所致。一切的杀毒软件都是运用装备驱动顺序,更详细地说是“过滤驱动”来阻拦I / O(读/写)恳求并执行额定的检验。杀毒软件驱动顺序将检验的内容与已知的病毒定义文件实行比较,以确保没有感染病毒。
过滤驱动包括内核方式的代码,它们会与操作系统底层的内核函数和数据结构相互作用这些函数和数据结构包括那些预期会在相应装备驱动调用时呈现的预定义参数和数据类型。假设函数传递的数据类型错误或参数数目不对,就会发作导致内核方式中系统崩溃的错误。
当开发人员在不一样版本的操作系统之间(如服务包更新或新版本操作系统揭晓)修正这些内核函数或数据结构时,疑问就呈现了。虽然微软在测试装备驱动顺序对一切操作系统改动的兼容性方面做得很好,但它显然没有测试第三方装备驱动顺序来确保它们可兼容。因此,当旧版杀毒驱动顺序巧合遭遇了这些修正,最后就会导致系统崩溃。其它过滤驱动也简单遭到这种疑问影响,但是杀毒软件驱动顺序是最简单受影响的一个。
让我们来看一个例子:
下面是一个Stop 0x8E bugcheck -KERNEL_MODE_EXCEPTION_NOT_HANDLED的系统崩溃。在Windows debugger中用命令!analyze –v显示了它的堆栈方式。从下往上读,我们就看到一个NtCreateFile的函数调用,最后引入了buggydrv,从而导致bugcheck。运用命令!lmi buggydrv能够显示出驱动顺序的日期是2006年,而操作系统Windows Server 2003 SP2是2007年揭晓的。如今我们就知晓,旧版的杀毒驱动顺序并没有对新版的操作系统实行测试。
在这个例子中,此种系统崩溃曾经被厂商标识为已知疑问并文档化,新版杀毒软件曾经能够用来防止系统崩溃。真实上,绝大非少数你遇到的Windows Server崩溃,都曾在别人身上发作过,它们的处理方法通常曾经记载在互联网上的某个地点。因此,很主要的一点是,必须要记得即使只是一个服务包更新。在更新操作系统时也该第一时间与第三方厂商确认能否有相应的软件更新。
存储驱动顺序不兼容
另一种最罕见的系统崩溃是由不兼容的存储驱动顺序所致。如你所知,第三方存储厂商提供装备驱动顺序来控制它们的主机总线适配器(HBA)并用于访问存储装备。像Qlogic、Emulex和惠普(HP)等厂商都有不一样的装备驱动顺序,但它们都依托于微软的Storport驱动顺序。Storport驱动顺序提供一套通用顺序,这些特定的厂商驱动顺序在执行I / O操作时运用它们。
这种疑问的呈现方式与杀毒软件驱动顺序的不兼容性很相似。当厂商修正其自用的驱动顺序时,它们必需重新与如今版本的Storport实行测试,以确保仍然兼容。一样的道理,当更新Storport版本时,一切的HBA驱动顺序也必需重新测试,以保证它们仍然与新版的Storport驱动顺序兼容。在Windows Server 2003中当你须要思索Storport的50多个修补顺序时,这才是一个真实的挑战。
体会次序是,在更新Storport驱动之前与你的第三方厂商确认HBA驱动顺序能否有相应的更新,反之亦然。如何才干知晓哪个存储驱动顺序依托于Storport?幸运的是,有一个叫Dependency Walker(depends.exe)的无偿工具,能够揭示驱动顺序间的依托联系。
下载并解紧缩后,运转depends.exe,运用文件下拉菜单挑选你所注重的驱动顺序。在这个例子中,我挑选了驱动顺序Hpcisss2.sys,它运用于HP的硬盘阵列。正如你下面能够看到的,该工具显示,驱动顺序Hpcisss2依托于STORPORT.SYS和Ntoskrnl.exe。
过多的过滤驱动
第三种最罕见的Windows Server崩溃类型与安装了太多的过虑驱动时的堆栈溢出条件相关。任何能够阻拦I / O恳求并执行额定功用的驱动顺序都被以为是一个过滤驱动。我们曾经知晓,杀毒驱动顺序就是一个过滤驱动。其它过虑驱动包括硬盘配额维护、硬盘镜像和备份代理等,在这里我只列举了多个。
虽然安装多个过滤驱动本身不会有疑问,但是在当这些驱动顺序以递归的方式相互调用并因此耗尽了有限的内核堆栈空间时,状况就会发作改动。依据计算机体系结构((x86=12 KB,x64=24 KB),一切装备驱动顺序运用的内核堆栈空间是有限的。当内核堆栈空间耗尽时,就会呈现一个Stop 0x7F bugcheck导致系统崩溃,就像微软数百篇文档的描述一样。
基本没有方法提供额定的内核堆栈空间来容纳更多的过虑驱动。独一的挑选是辨认这些过滤驱动,禁用或卸载其中不须要的那些。有一个内置在Windows Server操作系统中的工具叫FLTMC(过滤器维护器控制顺序),它能够让你辨认出安装的过滤驱动。
正如你看到的,有许多原由会导致Windows Server崩溃。但是绝大非少数服务器停机都是由上述的原由构成的。你完全能够议决两种方式处理这些疑问,它们是在升级Windows操作系统或更新相关的热修补顺序的同时更新第三方驱动顺序和限定未运用的过滤驱动的数目。