IBM AIX 持续可用性dumpctrl.docx
- 文档编号:5910667
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:7
- 大小:22.48KB
IBM AIX 持续可用性dumpctrl.docx
《IBM AIX 持续可用性dumpctrl.docx》由会员分享,可在线阅读,更多相关《IBM AIX 持续可用性dumpctrl.docx(7页珍藏版)》请在冰豆网上搜索。
IBMAIX持续可用性dumpctrl
IBMAIX持续可用性:
第3部分
多年以来,AIX操作系统一直包含由IBM技术支持的许多可靠性特性,现在通过应用更先进的技术进一步提高了AIX的可靠性。
其中一些新特性包括对POWER6存储键的内核支持、并行更新、动态跟踪和增强的软件初次故障数据捕捉等等。
错误检查
Run-TimeErrorChecking
Run-TimeErrorChecking(RTEC)让服务人员能够使用产品二进制代码中内置的调试功能。
RTEC提供强大的初次故障数据捕捉和二次故障数据捕捉错误探测特性。
基本的RTEC框架是在AIXV5.3TL3中引入的,现在已经增加了更多的特性。
RTEC特性包括ConsistencyChecker和XmallocDebug特性。
这些特性一般可以通过errctrl命令调整。
一些特性还有专门针对给定子系统的属性或命令,比如sodebug命令与新的套接字调试功能相关联。
AIX出版物中描述了增强的套接字调试功能,可以在以下站点上找到:
内核堆栈溢出探测
从AIXV5.3TL5开始,内核提供用来探测堆栈溢出的增强的逻辑。
所有运行的AIX代码都维护一个称为堆栈的内存区,堆栈用来存储执行代码所需的数据。
在代码运行时,堆栈会增长和收缩。
堆栈可能增长到超过其最大的范围并覆盖其它数据。
这些问题很难解决。
AIXV5.3TL5引入了一个异步的运行时检查功能,用来检查特定的内核堆栈是否溢出。
探测到溢出时的默认操作是在AIX错误日志中记录错误。
堆栈溢出运行时错误检查特性由ml.stack_overflow组件控制。
AIXV6.1改进了内核堆栈溢出探测,支持用同步溢出探测功能保护某些堆栈。
另外,在启用恢复框架时,以前属于重大问题的某些内核堆栈溢出现在是完全可恢复的。
内核非执行(no-execute)探测
非执行探测也是在AIXV5.3TL5中引入的,可以为不应该作为可执行代码的各种内核数据区设置这种保护。
这个特性利用了页面级执行启用/禁用硬件特性。
如果错误的设备驱动程序或内核代码的执行分支能够意外地进入这些页面,这个特性会马上探测到。
以前,这种情况可能会导致崩溃,但尚未确定。
这个改进会立即捕捉到执行无效地址的指令,使它们没有机会进一步损害或导致难以调试的次级故障,从而提高内核可靠性和可服务性。
这个特性对于用户差不多是透明的,因为大多数受保护的数据区显然应该是不可执行的。
扩展的错误处理
在2001年,IBM引入了一种结合使用系统固件和扩展错误处理(ExtendedErrorHandling,EEH)设备驱动程序的方法,可以从间歇性PCI总线错误中恢复。
这种方法会恢复并重置适配器,由此开始对持久性PCI总线错误的系统恢复。
出故障的设备不会立即失效,而是被“冻结”并重新启动,从而避免一次机器检查。
POWER6技术把这个功能扩展到了PCIE总线错误。
分页空间检验
如果系统崩溃、挂起或其他症状的根源是数据损坏,那么很难找到问题的根源,这是因为症状出现的地方远离数据损坏的位置。
分页空间检验的设计目的是,检查从分页空间读入的数据是否与以前写出的数据匹配,从而改进FirstFailureDataCapture(FFDC)对分页空间数据损坏引起的问题的处理。
当一个页面被换出(Pageout)时,会为页面中的数据计算校验和,并把校验和保存在与分页设备相关联的一个固定数组中。
当页面被换回(Pagein)时,会为从分页空间读入的数据计算一个新的校验和,并与数组中的值进行比较。
如果这两个值不匹配,内核就在日志中记录一个错误并终止(如果错误发生在系统内存中),或者向应用程序发送一个异常(如果错误发生在用户内存中)。
可以使用mkps和chps命令针对每个分页空间启用或禁用分页空间检验。
这些命令的细节可以在对应的AIX手册页中找到。
存储键
大多数应用程序程序员都曾经遇到过意外的内存覆盖问题,也就是一段代码意外地写一个不属于该组件内存区域的内存位置。
有一个新的硬件特性称为存储保护键(storageprotectionkey,本文中简称为存储键)。
它可以帮助应用程序程序员找到这些意外的内存覆盖。
内存覆盖和寻址错误属于最难诊断和处理的问题。
随着软件大小和复杂性的增加,这个问题也会变得更复杂。
在AIX上,许多软件组件共享一个大的全局地址空间。
这给应用程序和AIX内核带来了可服务性问题。
根据设计,AIX64位内核大量使用一个大的地址空间。
这对于避免在POWER处理器上执行高成本的MMU操作很重要。
尽管这种设计对性能很有好处,但也增加了可靠性、可用性和可服务性(RAS)方面的困难。
大型的64位应用程序(比如DB2®)由于相似的原因也使用全局地址空间,也面对内存覆盖问题。
存储键是在PowerPC®体系结构中引入的,其目的是在允许软件维护平面地址空间的同时提供内存隔离。
这个概念源自Systemz™和IBM390系统。
存储键允许给地址空间设置与上下文相关的保护。
可以对内存区域访问进行限制,从而防止和捕捉非法存储引用。
此外,还增加了一个新的CPU特性AuthorityMaskRegister(AMR),它定义CPU可以访问的键集。
AMR实现为以键号作为索引的位对向量,其中用不同的位控制对每个键的读和写访问。
键保护是和现有的页面保护位一起应用的。
对于任何装载或存储过程,CPU在转换期间获取分配给目标页的内存键。
使用键号在AMR中选择位对,根据位对决定是否允许访问。
当这个检查失败时,发生一个数据存储中断。
AMR是一个与上下文相关的寄存器,可以高效率地更新。
TLB/ERAT包含每个虚拟页面的存储键值。
这使AMR更新更为高效,因为它们不要求TLB/ERAT无效。
PowerPC硬件为软件提供了一种高效地改变存储可访问性的机制。
在内核模式和用户模式API中都使用存储键。
在内核模式中,存储键支持被称为内核键。
在用户模式中,管理硬件键的API把这个功能称为用户键。
用户键支持主要作为应用程序的可靠性、可用性和可服务性(RAS)特性。
实现用户键的第一个大型应用程序软件是DB2。
在DB2中,用户键有两个用途。
它们的主要用途是保护DB2核心代码不受用户定义函数(UDF)中的错误的影响。
第二个用途是作为调试工具,防止并诊断内部内存覆盖错误。
但是,任何应用程序都可以使用这个功能。
DB2提供了一个UDF功能,客户可以通过它在数据库中添加额外的代码。
UDF可以在两种模式下运行,即隔离(fenced)和非隔离(unfenced):
在隔离模式中,UDF在一个单独的进程中执行,与数据库隔离开。
数据库和UDF进程之间通过共享内存进行通信。
隔离模式会显著地降低性能,因为在执行UDF时需要进行上下文切换。
在非隔离模式中,UDF直接装载到DB2地址空间中。
非隔离模式会显著地改进性能,但是会损害RAS。
尽管DB2推荐使用隔离模式,但是为了提高性能,许多客户都使用非隔离模式。
使用用户键可以在数据库和UDF之间实现有效的隔离,而开销并不高。
用户键用于应用程序。
它们是PowerPC存储键硬件的虚拟化。
可以在用户空间AMR中添加和删除用户键,还可以给应用程序的内存页面分配一个用户键。
用户键的管理由应用程序开发人员负责。
在AIXV5.3TL6中提供了用于用户空间应用程序的存储保护键应用程序编程接口(API),运行这种操作系统版本的基于IBMSystempPOWER6处理器的所有服务器都支持这个API。
内核键是一种重要的可靠性、可用性和可服务性(RAS)功能。
它们限制了一个软件组件可能对系统其他部分造成的损害,从而提高了可靠性。
它们防止内核扩展损害核心内核组件,并在内核扩展类之间提供隔离。
内核键还有助于防止错误传播,从而显著提高可用性——当AIX开始实现内核错误恢复处理器时,内核键会是一个关键特性。
通过更早地探测到内存寻址错误的根源,可以提高可服务性。
内核键可以在许多随机覆盖错误发生时马上探测到它们,而不是等到使用被破坏的内存时才发现问题。
由于有了内核键支持,AIX内核又引入了内核域(kerneldomain)和私有内存访问(private
memoryaccess)的概念。
内核域是组件数据组,用来隔离内核和内核扩展所用的内存。
AIX对内核内存域提供和实施硬件保护。
另外,还隔离和保护全局存储堆。
这会把堆损坏错误的影响限制在内核域之内。
还有私有内存键,它们只允许获得授权的组件访问内存对象。
除了可靠性、可用性和可服务性方面的好处之外,私有内存键还是一种实施数据封装的工具。
内核键是在AIXV6.1中提供的。
内核键将会成为Unix市场上引人注目的一个特性。
可以预料,AIX将是使用这种内存保护技术的惟一的UNIX操作系统。
系统可服务性
IBM已经在AIX中实现了系统可服务性,从而简化了系统的问题诊断、纠正性维护和预防性维护。
高级的FirstFailureDataCapture特性
FirstFailureDataCapture(FFDC)是一种可服务性技术,探测到错误的程序可以通过它保存随后分析和纠正问题所需的所有数据。
这样就不必等待错误再次出现,也不必专门应用跟踪来收集诊断问题所需的数据。
AIXV5.3TL3包引入了这些新的FirstFailureDataCapture(FFDC)功能。
FFDC特性集在AIXV5.3TL5和AIXV6.1中得到了进一步扩展。
下面几节讲解以下特性:
LightweightMemoryTrace(LMT)
Run-TimeErrorChecking(RTEC)
ComponentTrace(CT)
LiveDump
这些特性在默认情况下是启用的,可以提供有价值的FFDC信息,同时保持最低的性能影响。
可以单独操作高级的FFDC特性。
另外,还提供一个方便的SMIT操作界面,这样就可以通过单一命令持久地禁用或启用特性(也就是说,修改的效果在重新引导之后仍然有效)。
要想启用或禁用所有四个高级FFDC特性,应该输入以下命令:
smittyffdc
这指定是启用还是禁用高级内存跟踪、活动转储和错误检查功能。
注意,禁用这些特性会降低系统的可靠性、可用性和可服务性。
注意:
在修改高级FirstFailureDataCapture特性的状态之后,必须运行/usr/sbin/bosboot命令,然后重新启动操作系统,这样修改才会完全生效。
某些修改在下一次引导之前不会完全生效。
传统的系统转储
系统转储提供一种捕捉操作系统状态的快照的机制。
系统转储收集系统的内存内容并提供关于AIX内核的信息,这些信息可供以后的专家分析使用。
在把保留的映像写到转储设备之后,系统会重新引导,如果需要,还可以返回生产环境。
当发生严重错误时(即系统崩溃时),系统会生成系统转储。
系统转储还可以由根用户发起。
在调试新的应用程序时,系统管理员和程序员可以生成转储并分析其内容。
系统转储常常和其它系统配置信息一起提交给IBM支持人员,以便帮助他们分析问题。
AIX系统转储通常包含判断问题性质所需的所有信息。
转储包含:
操作系统(内核)代码和内核数据
关于每个CPU上当前运行的应用程序的内核数据
大多数内核扩展代码和所有正在运行的内核扩展的数据
AIXV6.1还提供一些用来减少转储大小和创建转储所需的时间的特性。
可以控制系统转储涉及哪些组件。
可能希望在系统转储中排除某些组件,以便减少转储大小。
注意:
从AIXV6.1开始,传统的系统转储总会执行压缩,以便进一步减少转储大小。
dumpctrl命令包含系统转储涉及的组件的相关信息。
如果要诊断一个问题,而且需要多个系统转储,那么可以从系统转储中排除不需要的组件。
在解决了问题之后,系统管理员应该重新启用所有系统转储组件。
AIXV6.1还提供一个活动转储(livedump)功能,从而支持只转储故障数据而不需要转储整个系统。
活动转储很可能只涉及很少几个系统组件。
而在AIXV6.1之前,如果一个内核组件(比如一个设备驱动程序)探测到问题,通常的做法是转储整个系统。
系统转储现在可以复制到DVD上。
还可以使用DVD作为主或辅助转储设备。
注意,snap命令可以使用DVD作为源和输出设备。
固件辅助系统转储
固件辅助转储尽可能减少发生故障的操作系统所做的工作,从而提高了传统系统转储的可靠性。
其思想是先“冻结”内存并重新引导系统,然后再把内存内容转储到磁盘。
固件辅助系统转储是指用固件帮助执行AIX转储,在分区重新启动时通过固件获得以前的内存内容。
固件帮助系统跨重新引导保存内存,最终减少对内存和处理器寄存器的使用。
要点:
在AIXV6.1中,传统的转储在所有配置中仍然以默认方法执行系统转储。
只有在诊断问题期间IBMService提示您使用固件辅助系统转储的情况下,才应该使用这种转储。
选择性内存转储是由(或使用)AIX实例触发的固件辅助系统转储。
完全内存转储是对所有分区内存进行转储的固件辅助系统转储,并且不与发生故障的AIX实例进行任何交互。
选择性内存转储和传统系统转储都需要与发生故障的AIX实例交互。
随着系统内存的增加,完成转储所需的时间也会增加。
因此,固件辅助系统转储特性的第二个目的是,并行执行转储和系统重新启动,从而减少系统停机时间。
注意:
固件辅助系统转储要求POWER6系统至少为这个分区分配4GB内存。
固件辅助转储不支持某些磁盘适配器。
另外,也不支持某些多路径配置。
为了启用固件辅助系统转储,AIX必须在启动和转储时执行以下配置操作:
1.在系统启动时,AIX检查内存大小,判断是否有启用固件辅助系统转储所需的内存。
2.AIX获取设备树中的固件辅助系统转储属性,判断平台是否支持固件辅助系统转储。
3.AIX检查管理员是否启用了固件辅助系统转储。
如果系统满足了固件辅助系统转储的所有条件,AIX就保留一个抓取区(scratcharea)并执行固件辅助系统转储的配置操作。
抓取区不会被释放,除非管理员显式地配置传统系统转储。
当动态重配置操作改变内存大小时,不会执行检查。
因为传统系统转储总是会初始化,所以AIX可以在转储时从固件辅助系统转储切换到传统系统转储。
传统系统转储有两种情况:
用户指定的传统系统转储,以及只在AIX无法启动固件辅助系统转储时初始化的传统系统转储。
AIX可以配置为在固件辅助系统转储和传统系统转储之间选择转储类型。
当转储类型从固件辅助系统转储变成传统系统转储时,新的配置立即生效。
当转储类型从传统系统转储变成固件辅助系统转储时,新的配置在重新启动之后才会生效。
如果平台和AIX支持固件辅助系统转储,而且管理员启用了这种转储,那么选择性内存转储是默认的转储配置。
在默认情况下,不允许完全内存转储。
在使用固件辅助系统转储配置时,管理员可以通过配置AIX允许完全内存转储。
如果允许但不要求执行完全内存转储,那么只在AIX无法执行选择性内存转储的情况下,才会执行完全内存转储。
管理员可以通过配置AIX要求总是执行完全内存转储,即使AIX可以执行选择性内存转储。
在这两种情况下(允许或要求执行完全内存转储),管理员都可以通过AIX或HMC菜单启动完全内存转储。
活动转储和组件转储
组件转储允许用户指定要转储的一个或多个组件(与它们相关联的内存和内核数据结构)。
在与活动转储一起使用时,组件转储功能可以只转储组件,而不是转储整个系统。
在与系统转储功能一起使用时,这可以限制系统转储的大小。
活动转储是不需要系统重新启动的小型转储。
它只转储那些为活动转储注册的而且要求必须包含的组件。
可以使用dumpctrl命令获取为活动转储注册的组件的相关信息。
系统转储被写到专门的转储设备,但是活动转储被写到文件系统中。
在默认情况下,活动转储放在/var/adm/ras/livedump目录中。
可以使用dumpctrl命令修改这个目录。
在AIXV6.1中,只能使用序列化的(serialized)活动转储。
序列化的活动转储在转储数据时会冻结或暂停系统。
这会停止所有处理器,但运行转储的处理器除外。
在冻结系统时,数据被复制到固定内核内存中的活动转储堆。
然后,把这些数据写到文件系统中,但是这只在系统解冻之后进行。
活动转储冻结系统的时间常常不超过100ms。
heapsz属性(堆大小)可以设置为零(0),这意味着在转储初始化时,系统会根据实际内存量计算活动转储堆的大小,最小值是16MB或实际内存量的1/64(取其中较小者)。
系统会消除快速出现的重复的活动转储,以防止系统过载并节省文件系统空间。
消除重复的转储要求通过cron作业定期扫描活动转储存储库(每5分钟一次)。
可以通过dumpctrl命令停止重复消除操作。
每个活动转储都有一个数据优先级。
具有info优先级的活动转储用于提供信息,而具有critical优先级的活动转储用于问题调试。
可以删除具有info优先级的转储,从而为具有critical优先级的转储让出空间。
可以使用dumpctrlldmpon/ldmpoff命令或使用SMIT快速路径启用或禁用所有活动转储:
smittylivedump
dumpctrl命令
还需要用一个命令修改组件转储、活动转储和系统转储的属性。
为此,在AIXV6.1中实现了dumpctrl命令。
dumpctrl命令用来查询和修改全局系统转储和活动转储属性,还可以查询和修改每个组件的系统转储和活动转储属性。
注意:
活动转储是压缩的,必须用dmpumcompress命令解压。
并行转储
当发生严重的不可恢复错误时,AIX系统会生成系统转储。
系统转储还可以由具有根用户权力的用户启动。
系统转储创建系统内存内容的快照。
但是,系统中的内存和CPU数量越来越大,在更大的系统上转储花费的时间更长。
因此,在AIXV5.3TL5中引入了一个新特性,并行转储。
在AIXV5.3中引入了一种优化的压缩转储格式。
这种新格式的转储文件扩展名是.BZ。
在这种新的压缩转储文件中,块是压缩且无序的;由于块是无序的,所以多个处理器可以并行地转储系统的各个部分。
如果AIX版本支持并行转储,就会自动进行并行转储。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBM AIX 持续可用性dumpctrl 持续 可用性 dumpctrl
![提示](https://static.bdocx.com/images/bang_tan.gif)