本发明涉及操作系统,具体地说是快速检测操作系统内存不可恢复错误的系统及方法。
背景技术:
::1、在现代操作系统和云计算架构中,内存错误的处理机制对于确保系统的稳定性和可靠性至关重要。操作系统中的内存错误主要分为两种:不可恢复错误(uncorrectableerrors, uce)和可恢复错误(correctable errors, ce)。虽然可恢复错误(ce)通常不会直接影响操作系统的稳定性,因为它们可以通过错误恢复代码(ecc)被实时更正,但不可恢复错误(uce)却可能导致严重的后果。特别是在内核态触发硬件内存中的不可恢复错误,这种情况会引发操作系统无差别的内核panic,从而影响整个系统的稳定运行。2、云服务的稳定性直接依赖于其底层服务器操作系统的可靠性,在这种环境下,如果操作系统缺乏对uce错误的容错机制,一旦发生不可更正的内存错误,就会导致操作系统挂起或需要复位重启。这不仅中断了云服务,影响了所有运行在操作系统上的进程,而且修复的时间长,成本高,对用户体验产生负面影响。3、因此,云厂商面临的一个重要挑战是如何在不影响其他正常运行进程的前提下,快速检测操作系统是否具备内存uce容错功能。4、在不影响其他其他正常运行进程的前提下、如何快速检测操作系统内存的不可恢复错误,是需要解决的技术问题。技术实现思路1、本发明的技术任务是针对以上不足,提供快速检测操作系统内存不可恢复错误的系统及方法,来解决在不影响其他其他正常运行进程的前提下、如何快速检测操作系统内存的不可恢复错误的技术问题。2、第一方面,本发明一种快速检测操作系统内存不可恢复错误的系统,包括内存uce容错功能快速检测命令模块、内存错误事件接收模块、内存错误事件处理模块以及内存错误日志监测模块;3、所述内存uce容错功能快速检测命令模块面向用户态,用于调用操作系统内的内存模拟注入模块,通过内存模拟注入模块向内存注入各种场景下模拟内存uce错误事件;4、所述内存错误日志监测模块用于面向用户态,用于调用操作系统内的观测和跟踪模块,通过观测和跟踪模块监测内存错误相关的系统调用和内核行为、得到内存错误相关信息,并将内存错误相关信息发送至内存错误事件接收模块;5、所述内存错误事件接收模块面向用户态,用于通过apei驱动实时监听硬件错误事件、获取硬件错误事件信息,将硬件错误事件信息以及内存错误相关信息持久化记录;6、所述内存错误事件处理模块面向用户态,用于从内存错误事件接收模块读取硬件错误事件以及内存错误相关信息,并调用操作系统内的内存错误处理模块,基于预定义的内存错误处理规则、通过操作系统内的内存错误处理模块进行内存错误的修复处理。7、作为优选,通过内存模拟注入模块向内存注入各种场景下模拟内存uce错误事件,各种场景包括来自用户态的复制copy_from_user/get_user、面向用户的复制copy_to_user/put_user、写时复制copy-on-write以及核心存储coredump,对于每种场景,内存uce容错功能快速检测命令模块用于提供命令行解析、分别为每种场景的注入命令。8、作为优选,内存错误事件接收模块用于将硬件错误事件信息以及内存错误相关信息解析为预定格式,将硬件错误事件信息以及内存错误相关信息记录至操作系统日志或数据库中,并为硬件错误事件信息以及内存错误相关信息提供用户态查询服务。9、作为优选,所述内存错误日志检测模块用于调用操作系统内的观测和跟踪模块,在观测和跟踪模块注入内存错误系统调用函数或跟踪点,通过内存错误系统调用函数或跟踪点获取内存错误相关信息,包括如下操作:10、记录内存错误时用户的环境和内核调用栈环境,辅助判断操作系统是否支持内存uce故障容错的各个场景,细化操作系统内存uce错误类型;11、动态监测内存错误相关的系统调用和内核行为,记录内存错误发生时内存页面信息和相关错误上下文信息,包括用户环境、内核调用栈以及错误的具体类型和位置;12、通过操作系统中内存错误日志监测模块提取辅助信息,包括用户态进程参数以及执行命令。13、作为优选,基于预定义的内存错误处理规则、通过操作系统内的内存错误处理模块进行内存错误的修复处理,包括如下操作:14、隔离出错的内存页以防止错误扩散;15、对于软下线轻微或偶发错误的内存页,迁移内容到健康页并重新分配;16、对于硬下线重复出错或严重损坏的内存页,彻底停用;17、对于可恢复或临时性错误,通过写时复制策略在不丢失数据的前提下修复或绕过错误;18、在无法恢复的内存错误发生时,通知内核执行核心转储、并生成详细的错误报告。19、第二方面,本发明一种快速检测操作系统内存不可恢复错误的方法,通过如第一方面任一项所述的一种快速检测操作系统内存不可恢复错误的系统快速检测操作系统的内存不可恢复错误,包括如下步骤:20、通过面向用户态的内存uce容错功能快速检测命令模块调用操作系统内的内存模拟注入模块,通过内存模拟注入模块向内存注入各种场景下模拟内存uce错误事件;21、通过面向用户态的内存错误日志监测模块调用操作系统内的观测和跟踪模块,通过观测和跟踪模块监测内存错误相关的系统调用和内核行为、得到内存错误相关信息,并将内存错误相关信息发送至内存错误事件接收模块;22、面向用户态的述内存错误事件接收模块通过apei驱动实时监听硬件错误事件、获取硬件错误事件信息,将硬件错误事件信息以及内存错误相关信息持久化记录;23、基于面向用户态内存错误事件处理模块从内存错误事件接收模块读取硬件错误事件以及内存错误相关信息,并调用操作系统内的内存错误处理模块,基于预定义的内存错误处理规则、通过操作系统内的内存错误处理模块进行内存错误的修复处理。24、作为优选,通过内存模拟注入模块向内存注入各种场景下模拟内存uce错误事件,各种场景包括来自用户态的复制copy_from_user/get_user、面向用户的复制copy_to_user/put_user、写时复制copy-on-write以及核心存储coredump,对于每种场景,内存uce容错功能快速检测命令模块用于提供命令行解析、分别为每种场景的注入命令。25、作为优选,通过内存错误事件接收模块将硬件错误事件信息以及内存错误相关信息解析为预定格式,将硬件错误事件信息以及内存错误相关信息记录至操作系统日志或数据库中,并为硬件错误事件信息以及内存错误相关信息提供用户态查询服务。26、作为优选,通过内存错误日志检测模块调用操作系统内的观测和跟踪模块,在观测和跟踪模块注入内存错误系统调用函数或跟踪点,通过内存错误系统调用函数或跟踪点获取内存错误相关信息,包括如下操作:27、记录内存错误时用户的环境和内核调用栈环境,辅助判断操作系统是否支持内存uce故障容错的各个场景;28、动态监测内存错误相关的系统调用和内核行为,记录内存错误发生时内存页面信息和相关错误上下文信息,包括用户环境、内核调用栈以及错误的具体类型和位置;29、通过操作系统中内存错误日志检测模块提取辅助信息,包括用户态进程参数以及执行命令。30、作为优选,基于预定义的内存错误处理规则、通过操作系统内的内存错误处理模块进行内存错误的修复处理,包括如下操作:31、隔离出错的内存页以防止错误扩散;32、对于软下线轻微或偶发错误的内存页,迁移内容到健康页并重新分配;33、对于硬下线重复出错或严重损坏的内存页,彻底停用;34、对于可恢复或临时性错误,通过写时复制策略在不丢失数据的前提下修复或绕过错误;35、在无法恢复的内存错误发生时,通知内核执行核心转储、并生成详细的错误报告。36、本发明的快速检测操作系统内存不可恢复错误的系统及方法具有以下优点:37、1、实现了快速检测包括copy_from_user, copy_to_user, getuser, put_user、cow、coredump各种场景下操作系统是否支持内存uce容错功能;38、2、能够快速评估操作系统是否具备内存uce容错功能,从而判断操作系统在服务器内存硬件错误时的可靠性;39、3、为用户提供更加详细的触发内存uce时用户态信息,例如记录触发的用户命令相关参数和内核调用栈等,方便分析定位事件故障原因,降低运维成本;40、4、提供预定义规则,能够在收到内存uce事件后根据内存页的状态选择相应的执行动作,提前降低一些预知的风险隐患;41、5、快速检测操作系统是否具备uce内存容错特性的同时,提供了一种内存uce错误处理方式,同时也降低了处理代价,提升了云用户使用体验。当前第1页12当前第1页12