办公室那台老服务器又蓝屏了,屏幕上滚动着一串十六进制错误码,像某种古老的咒语。客户电话那头的声音急得冒火:“财务系统全瘫了,账都出不来。”
我赶到机房时,机器已经自动重启了三次,每次都在加载系统服务时卡死。这场景太熟悉了——Win2008,一个微软早已停止主流支持的操作系统,却还倔强地撑着一堆企业的核心业务。不是不想换,是换了要花钱、要迁移、要担风险,于是大家默契地选择“能用就行”。
先别急着重装系统,那是最笨的办法。我拔掉所有外接设备,只留键盘鼠标和显示器,用安装光盘引导进入修复模式。Win2008的修复控制台比后来的版本简陋得多,没有图形化的“启动修复”按钮,全靠命令行敲命令。我输入bootrec /fixmbr和bootrec /fixboot,屏幕跳出一行“操作成功完成”,但重启后依旧蓝屏。
问题不在引导区。我怀疑是最近一次Windows Update补丁惹的祸——这种老系统经常被补丁打挂,尤其那些针对Spectre和Meltdown漏洞的微码更新,跟老硬件八字不合。进安全模式,把最近安装的补丁挨个卸载,卸到KB4103718时,系统居然稳定了。但别高兴太早,这只是缓兵之计,下次自动更新还会装上它。
干脆关掉Windows Update服务,一了百了。在服务管理器里找到“Windows Update”,启动类型改成“禁用”,再把后台智能传输服务也停掉。有人会说这不安全,但一台跑着财务内网、不接外网的老服务器,最大的安全风险其实是它自己突然死机。
重启后系统活了,但速度还是慢得像蜗牛。打开任务管理器,内存占用飙到90%,查看进程列表,一个叫“sqlservr.exe”的进程独占2.8GB——客户说数据库只有500MB数据量,这明显不正常。我猜是索引碎片积累太久,加上临时数据库文件膨胀到了几个GB。用SQL Server Management Studio连上去,收缩临时库,重建所有索引,内存占用立刻降下来。
最后一步,给系统盘做一次磁盘检查。Win2008的老机械硬盘常年高负荷运转,坏道是家常便饭。命令行输入chkdsk /f /r,提示重启后执行。客户问要不要等,我说你该下班了,让它自己跑一夜吧。
第二天早上,系统正常启动了。财务大姐在电话里连声道谢,说报表终于能打出来了。我告诉她,这机器还能撑一两年,但建议尽快规划迁移,Win2008的架构太老,新硬件驱动都找不到,出了问题只能拆东墙补西墙。
她沉默了几秒,说:“先撑着吧,老板说预算明年才有。”
我挂断电话,看着屏幕右下角那个“安全模式”的角标慢慢消失,知道这不过是又一次续命。老系统就像老伙计,你了解它每一个脾气,但它的时间终究在倒数。修完这台,还有下一台,直到某天它彻底罢工,或者终于有人拍板换新。到那时候,今天的修复记录,大概会成为一份没人再看的旧文档。