磁带机的嗡鸣在凌晨三点准时钻进耳朵。
我捏着沾满静电的蓝色手套,把第三盘 ddS-2磁带推进1998年产的hp Storageworks。
金属插槽弹出时带起的凉风里混着机房特有的臭氧味。
cRt显示器上,oracle 8i的备份进程正以每秒 1.2mb的速度蚕食着进度条。
屏幕右下角的系统时间跳动在 2000年 9月 13日 03:17。
“咔哒。”硬盘阵列又开始抗议了。
我俯身贴近机柜,听着那台组装服务器的 IdE硬盘发出老座钟般的异响。
这台负责存储 163邮箱基础用户数据的机器,机箱上还贴着去年台风季留下的水渍痕迹。
每周三午夜,我都要手动执行备份脚本——先通过 telnet登录主数据库服务器,敲入exp system\/manager@maildb file=\/dev\/rmt0 full=y。
等磁带机吞吐完最后一寸磁带,再把生成的日志文件存进 3.5英寸软盘。
那些软盘我都按日期标了号,塞进抽屉里垫着防静电袋的铁盒,就像保管一堆脆弱的胶片。
周五下午
中信广场68楼被空调抽成了密封舱。
运维部的格子间里,七台 cRt显示器同时映着绿色的字符流。
“都打起精神!”
Frank推开门,手里捏着文件。
“用户数据分级方案下来了。”
我立马抬起头。老谭也停下擦眼镜的手。
“付费用户分三级。”
Frank把旁边白板挪过来,“VIp实时备份,普通付费每日,免费用户每周。”
“介质呢?”wingo问。
“VIp用新磁带,单独锁铁皮柜。”
Frank指着墙角,“普通付费用蓝色盒,免费用户红色盒。”
ben翻着笔记本:“迁移前要按这个分好类?”
“必须的。”
Frank合上文件,“第一批五千用户,今晚就得清完类别。”
“刘军,过来搭把手。”Jackson喊我。
服务器机房里,他正盯着屏幕。
进度条爬得慢悠悠。
“这是 VIp用户列表。”他指给我看,“每一百个打包迁移。”
“直接导?”我问。
“先复制到临时库。”
老谭蹲在机柜后,“校验 md5,没问题再删原数据。”
“用户会察觉吗?”berry端着咖啡进来。
“凌晨三点切流量。”
Jackson敲键盘,“弹窗提前一小时发。”
老谭突然喊:“第 378个用户数据异常,容量超上限。”
“标记为待处理。”
Jackson头也不抬,“先迁下一批。”
“平时备份都按规矩来?”老谭递我瓶可乐。
“每天下班前换磁带。”
我拧开瓶盖,猛灌一大口。
“校验步骤省过没?”
“哪敢。”
我笑,“先比对日志,再打校验单,跟磁带盒放一起。”
他指了指服务器:“上周三那批 VIp数据,放哪个柜?”
“最里面那个锁柜。”
我瞥了眼时间,“六点了,快换磁带。”
Frank的鳄鱼皮带在荧光灯下泛着冷光,正用马克笔在白板上圈出第三块区域:“Sun Enterprise 450集群必须在今晚八点前完成切换,付费用户数据要从 Sybase ASE 12.0迁移到新部署的 oracle 8i RAc。”
他的皮鞋跟敲击地面的节奏,和服务器机房里 Sun Fire 280R的风扇转速莫名合拍。
我蹲在服务器机柜前,给那台老掉牙的 hp磁带机换第四盘磁带。
机柜上方的示波器显示,网络流量已经冲到了 100mbps以太网的临界点。
Jackson正对着屏幕大喊:“广州节点的用户暂时切换到深圳镜像,丢包率超过 15%了!”
隔壁桌的 berry把打印出来的用户清单按地域分成三叠,每张 A4纸边缘都被咖啡浸得发卷——那是我们用 Lotus Notes共享的迁移进度表,上面密密麻麻标着用红笔圈出的 VIp用户 Id。
老谭抱着一摞 3.5英寸软盘从走廊过来,塑料盒碰撞的声音像在撒一把硬币。
“刚把华南区的用户配置数据备份完,”他抹了把额头上的汗,“这台 Ibm Netfinity 5000的软驱快不行了,吐盘的时候卡掉我三张盘。”
我抬头看着服务器集群,它们的指示灯像一排喘息的萤火虫
最老的那台 dEc AlphaServer 4000还在运行着最初版本的邮件转发程序,机箱侧面贴着 1999年 Y2K应急小组的黄色封条。
六点整,Frank突然拍响白板:“最后检查一次磁带库!”
我应声启动备份校验程序,屏幕上开始滚动校验码——那是用 cRc32算法生成的一串数字,像给每批数据盖上火漆印。
磁带机发出齿轮咬合的脆响,这声音本该持续到午夜。
但十七分钟后,整栋楼突然坠入黑暗。
应急灯亮起的瞬间,那台 hp磁带机的警报声像被掐住喉咙的野兽,尖锐得刺破耳膜。
我摸着黑摸到机房门口,听见 Jackson在黑暗里吼:“UpS只能撑十五分钟!”
当备用发电机的轰鸣从楼层保安的对讲机中传来时,应急灯重新稳定发光。
我扑到磁带库前——上周三那盘贴着黄色标签的 ddS-2磁带,本该在最上层的插槽里,现在只剩一个空荡荡的黑影。
“谁动过服务器?”
我的声音撞在金属机柜上弹回来,带着自己都没察觉的颤音。
berry手里的咖啡杯在光线下晃出涟漪。
老谭刚从地上爬起来,手里还攥着半截被踩扁的网线。
所有人的影子都被应急灯拉得老长,只有 Frank的办公室门紧闭着,门缝里漏出的光在地板上割出细窄的线条。
“刘军,Jackson叫你去修邮件系统!”berry的声音突然横过来。
我跑过走廊时,听见 Frank在门后压低声音说:“...磁带已经处理了...软盘...”
我在邮件服务器前奋战到八点,满头大汗地回到隔壁机房。
只见老谭蹲在地上,手里举着个拆开的磁带盒,黑色的磁粉像烟灰一样从他指缝漏下来。
“这是……蓝色盒?”我嗓子发干。
他没抬头,指着内部:“看边缘。”
我凑过去。
磁带表面布满螺旋状划痕,像被砂纸磨过。
“磁头刮的?”
“不止。”
wingo的手指悬在磁带机的磁头上,指尖沾着银灰色的划痕:“有人把磁头调到最大张力,不光格式化,还故意让磁头刮过带基。”
“能恢复吗?”
老谭摇头:“塑料卷轴都变形了。有人故意往里面塞了金属片。”
我突然想起昨天整理日志时看到的异常 Ip——来自一个未登记的拨号账号,在凌晨两点登录过备份服务器。
转身冲回座位时,抽屉里的铁盒还在,但标着“9.13应急备份”的软盘已经不见踪影。
服务器集群的嗡鸣里,我听见自己的心跳声混在其中。
那声音和那台老硬盘的“咔哒”声渐渐重合,像某种不祥的倒计时。