家里的NAS是ESXi上跑的群晖虚拟机(黑裙),主板的Intel SATA控制器直通给它,挂了四块硬盘。这一年里它莫名其妙掉盘了六次:直通控制器上的四块盘同一秒一起掉盘,存储池直接crashed,重启一下又全好了。有时候隔3天,有时候隔半年多,完全摸不着规律。
之前每次都是重启了事,这次忍住没重启,登进去看了内核日志。结果硬盘和线都没毛病,是DSM自带的irqbalance想把直通控制器的中断挪到别的CPU上。真机上设备会照办,可ESXi直通的时候根本不理会这个改动,中断还是往开机时的位置送。内核这边一直留着旧位置所以没事,直到某一天把它释放了(do_IRQ: 0.145 No irq handler for vector),驱动再也收不到中断,四块盘的命令全部超时,最后被内核一个个禁用。
解决办法是启动irqbalance的时候加个--banirq,不让它动这个中断。改完重启,两分钟后NAS回来,存储池自己就组好了。下面记一下过程。
