当一个被删除的文件从维护开始需要20分钟,但是你生命中的一年

2020-07-07 10:21:37

赞扬UNIX并知道何时故意将服务器推向悬崖。

谁,我吗?周末已被删除。在你开始你自己的职场冒险之旅之前,请稍作停顿,享受另一次奥普斯维尔之旅,这是由谁,我提供的?

今天的故事来自吉姆,讲述了他和一位同事对一家日报的出版系统进行通宵硬件、操作系统、数据库和应用程序升级的情况,该系统运行在Sun/Sybase系统上。

令人遗憾的是,Sun Microsystems的命运已经有了很好的记录,而Sybase仍然是一件事情(尽管SAP早就放弃了这个名字)。

当时两个人都很健康,吉姆和他的朋友被聘为Sun/Sybase VAR和ISV的工程师,报酬丰厚。

升级是按计划进行的。他解释说,用户和我们的培训团队希望在早上到达,并登录到一个完全升级的系统。在升级的关键阶段进行到一半时,我的伙伴(他仍然是我的伙伴)突然安静下来--这总是一个坏兆头。

它泄露了吉姆的搭档一直在玩Solaris的漂亮的GUI文件管理器,并在Sybase主设备文件运行时不小心删除了它。";的合作伙伴一直在玩Solaris的快速GUI文件管理器,并且在它运行时不小心删除了Sybase主设备文件。

很难描述这是一场多大的灾难。主设备文件的丢失将使Sybase非常糟糕。然而,对于粗心大意的人来说,这是一个很容易犯的错误。

这个黑客深情地回忆起上个世纪末的一段时间,当时一个特别过于自信的DBA决定通过运行del*.*";从Microsoft SQL Server数据库目录中删除残渣,因为它需要的文件将被锁定,对吗?";

20多年过去了,他那句话仍然铭刻在我的记忆中:Windows NT按照命令,愉快地粉碎了一个又一个生产数据库。没有,没有最近的备份。

对吉姆来说,事情并没有那么可怕。在Solaris(和其他UNIX系统)中,删除文件只是将其从其目录中取消链接。

只要文件被某个进程保持打开状态,文件空间就不会被回收。

因此,即使切除了一个相对较大的器官,数据库仍将继续工作。但是,没有新的进程会找到该文件,因此不能转储系统数据库。也不能正常关闭,因为文件将被关闭,其字节将被丢弃。

吉姆做了明智的备份,但是从备份中恢复会耗尽整个维护窗口,而且很可能会让这个项目再中止一周。(工业和信息化部电子科学技术情报研究所陈皓)。

出乎意料的是,Jim决定通过在控制台输入中断序列来使系统崩溃(而不是停止)。服务器将没有机会完全关闭该文件.。

他回忆道:我们做了一个小小的祈祷,祈祷,启动服务器,等待文件系统检查(Fsck)来修复我们造成的损害。

当被问及是否想要重新链接孤立的信息节点时,我从未如此仔细地键入过这封信。

随着心率的加快,吉姆登录并检查了文件系统的Lost+Found目录。

果不其然,有几个文件具有整数名称(";他解释说,fsck知道的只是inode编号,所以它就成了文件名";)。经过一点调查之后,他把最有可能的文件放回原处,屏住呼吸,启动了数据库。

耗尽了我所有的好运,数据库开始腾飞,我们完成了升级。

我不会戏剧性地说我因此得了创伤后应激障碍,但重述这个故事仍然让我毛骨悚然。

它距离我们的维护窗口只花了20分钟,但距离我的寿命至少一年。

Unix文件系统的设计者是否保存过您的培根?或者,由于同事的好奇心,看到一项简单的任务突然变得威胁到工作的比例?通过电子邮件向我发送电子邮件,分享您的险些失手和险些命中的故事?

The Register-独立于科技界的新闻和观点。情况发布的一部分