因为断网或存储问题等导致的操作系统IO hung问题,在网络或存储等IO设备恢复后,系统是否能自动恢复,而不需要重启恢复?这里面深层的原理是什么,还请帮忙解答,谢谢。
收起在日常运维过程中,操作系统IO hung是较为常见的故障现象。
一般情况下,当操作系统遇到IO设备(如网络或存储)的故障导致IO操作挂起时,操作系统会尝试进行恢复,并在IO设备恢复后自动继续执行。这样可以避免系统重启或进程终止,提高系统的可用性和稳定性。
但是在交易敏感的应用系统中,这种IO hung的情况可能导致交易延时、交易失败、操作系统重启或业务服务中断等风险,所以,建议要加强操作系统的状态监控,当出现hung的情况时及时发出告警,提醒运维工程师紧急介入处理。
以下是涉及操作系统IO相关机制的原理:
1、挂起和超时:当IO设备发生故障或连接中断时,对应的IO操作会被标记为挂起状态。同时,操作系统会设置一个超时时间,如果在超时时间内未能恢复,则会触发相应的处理机制。
2、故障恢复:操作系统会尝试恢复IO设备的故障或连接中断。具体的恢复过程取决于设备和驱动程序的实现。例如,对于网络设备,操作系统可以重新建立连接或重新配置网络参数。对于存储设备,操作系统可以重新初始化设备或尝试重新建立连接。
3、重试和轮询:一旦IO设备恢复,操作系统会重新尝试挂起的IO操作。这可能涉及重新发送请求、重新建立连接或执行其他必要的步骤。操作系统会定期轮询设备状态,以便及时发现设备的恢复并执行相应的操作。
4、错误处理:在恢复过程中,如果操作系统发现无法成功恢复IO设备或IO错误无法修复,它可能会选择终止相应的IO操作,并通知相关进程或应用程序。这样可以防止无限等待或错误的结果。
所以,从总体上来说,操作系统在遇到IO设备故障时,会尝试自动恢复,而不需要重启整个系统,但有些应用系统对IO敏感时可能会主动发出操作系统重启的指令(如oracle)。但具体的会采取什么行为和何种恢复能力取决于操作系统的自身内核实现和具体参数配置,以及设备和驱动程序的特性。