之前碰到过一个问题,正常运行的机器报出HBA卡的临时链路错误,从snap中看出并没有实质性的硬件问题,执行过删除该设备,并重新扫描设备的时候,有一条链路丢失,重启之后还是不行,然后反复重启了3次,最终恢复了问题,所以想问一下各位,从原理上来讲,重启真的有效能解决一些这种问题的原理是什么,这个和微码版本有关系吗?
重启不是万能的,但是不重启有时候是万万不能的
我觉得兄弟你问的这个问题真是太好了,很亲切。
我们在运维过程中经常有句至理名言,叫:“重启治百病”。包括我以前的师傅和我现在带的运维团队,我也会经常给他们灌输这个概念,常常会有意想不到的效果,但是我很少深入去想这个问题。今天你问了,就此机会我也谈谈我的想法。
在我的概念里,任何一个系统都会出问题,只是时间早晚的问题,就好航空安全史,过段时间就会听到有空难发生一样。我们作为运维团队来讲,只能延缓事故的发生和在事故发生后,能够有效恢复数据和系统,减少损失,并尽快恢复生产。
一个系统建立初期,到正常对外服务,除了了对外服务的接口,肯定会有成百上千乃至更多的进程在后面去支撑着业务的连续性,某些进程很重要,某些进程无关紧要。就好比我们乘坐飞机,不光是那架飞机在给我服务,飞机上的飞行组、漂亮的空姐儿、指挥飞机的塔台、地勤等等很多很多,都属于后台进程。那么某些后台进程可以忽略,比方说,今天五个空姐,只有四个上了飞机,为我们服务,无所谓,但是有些进程就很重要,比方说,两个飞行员一个都没有来,那飞机要么就是不能起飞,要么就是要出事儿。这就是应用要出问题的时候。
任何一个系统,在建立初期肯定是正常对外服务的,如果不正常的话,验收也通不过,款子也收不回,对吧。但是呢,用着用着,除了明显的硬件问题,有些软件也会滋生一些惰性,比方说,进程死了,占用资源(内存或CPU)不释放等等,这时候,重启治百病肯定是能生效的,因为重启以后,一切又归零或者回到刚刚开始的那个状态了,就好比发生空难后,安全飞行从1XXX天回到0天。
当然了,不是每次这个万能药都能生效,更多情况需要具体问题具体分析,硬件的问题,重启一万遍也没有用,该换换。有些系统本身损坏了,该修复修复,该重装重装,就不要去指望重启治百病了,哈哈。