新概念运维之文件都到哪儿去了

原创
运维 系统运维
管理员们常常将大部分注意力集中于数据库升级过程中的关键性工作上,但这种工作的性质是,即使你99步都做对,只做错了一步,也会全盘皆输,遭遇升级失败甚至宝贵数据丢失的悲剧。在下面这篇技术故事中,大家可以看到人为因素导致的失误是如何破坏管理员的既有计划的。

 【51CTO精选译文】编者按:管理员们常常将大部分注意力集中于数据库升级过程中的关键性工作上,但这种工作的性质是,即使你99步都做对,只做错了一步,也会全盘皆输,遭遇升级失败甚至宝贵数据丢失的悲剧。在下面这篇技术故事中,大家可以看到人为因素导致的失误是如何破坏管理员的既有计划的。

在这个故事发生时,我正为一家大型高科技企业工作;而且我们陷入了一种困境:无论在预先规划方面付出多少努力,人为失误总会时不时出现,彻底破坏我们的日常工作。

由于整个项目由外包公司中散处于各个国家的分支机构共同负责,因此对应的管理员当然也不止一位。当时某位客户的一个大规模数据库已然陈旧过时,我们需要为整套系统提供支持,而这套系统的全部细节都需要升级,包括服务器硬件、操作系统、集群及数据库软件。

这是一个关键性数据库,必须采取一切预防措施,包括对当前资料进行适当的备份,并为故障情况准备一套紧急的回档机制,以保证其工作安全。所有关于变更的说明都被总结成书面材料,并得到了参与到该项目当中的各家科技企业的一致认可。当时我们采取的是一套相当简便的执行手段,而所部署的每个细节似乎都能在最短的时间内,获得易行、快捷及代价极小的升级效果。

变更过程终于开始了。基于某种原因,真正的开始时间为周日傍晚。首先进行全面备份,按照计划,存储在某个旧有文件系统当中的资料即将被迁移到新服务器上。迁移过程正式启动。

刚开始各项工作进行得有条不紊:全部文件系统正在被安装到新的服务器上,而新服务器中则已经运行着新的操作系统及集群软件。接下来,服务器管理员运行了一个脚本,该脚本由负责数据库的管理员提供,旨在对数据库系统进行更新。

致命的错误就出在这一步上:脚本的功能设计初衷是既要能处理一个全新对象的安装,又要能对现有对象的更新操作进行管理。然而,这两种截然不同的处理方式由一个单独的命令行开关控制,其内容为:进行更新,否则进行全新安装。

该命令行选项的内容并没有包含在服务器管理员所参照的项目变更说明文件当中。该脚本具有这样一种功能,在安装新对象时,脚本会检索是否存在可能与新安装间存在冲突的旧有文件。而为了获得比较准确的检索结果,脚本将在安装二进制文件前发出另一项不同的指令,以消除可能造成影响的与数据库相关的文件系统。

服务器管理员就眼睁睁地看着该脚本运行了数分钟之久。不知道出于何种原因,他忽略掉了脚本给出的需要删除这些或那些文件的提示信息,也许是因为这些信息被淹没在了满屏幕的其它信息之中吧。脚本运行顺利结束了,因此数据库管理员开始着手启动数据库。

这时他发现了一点“小”问题:数据不见了。新安装的数据库二进制文件都在,但所有数据文件系统的内容都消失了。

他们将问题归结为文件系统损坏,最近这一原因已经在其它项目中造成过不良影响。他们尝试卸载并重新加载文件系统,但数据仍然没有出现。他们紧接又着运行了一些文件系统检查工具,结果显示正常。再次查看,还是没有数据。***,他们打电话给存储域网络的技术支持团队来对硬盘进行验证,结论是:硬盘没问题。

经过了数次这类徒劳的尝试,他们开始将硬盘接回旧服务器以进行数据归档、由备份文件恢复并启动数据库。

他们将上述方案付诸实践。在将文件系统安装在旧服务器上之后,他们注意到文件系统仍然没有内容(这时他们万分确定文件系统绝对已经损坏),甚至连存储备份文件的区域也是空的。又一次,他们进行了一些故障排查,尝试修复这套所谓“损坏”了的文件系统。

忙碌到这里,时间已经是周一上午八点钟,终端用户需要立即开始使用新服务器,紧迫的事态使每个人都变得越来越焦虑。他们终于意识到,数据已经***消失,而且他们别无选择,只能利用日常磁带备份进行彻底的恢复工作。

***个问题:他们并没有在变更工作开始之前就检查备份磁带,这导致从他们着手变更项目之时起,磁带上周日部分的数据备份就已经不再完整。因此,他们不得不回头从周六的备份下手,这意味着周日一整天的宝贵数据正式宣告丢失。第二个问题:要从磁带上恢复1TB容量的庞大数据需要消耗大量时间。事实上,数据恢复工作要持续到周一下午才能完成。

接下来又发生了一大堆各种各样的问题。一致性检查过不去、日志文件丢失等等。他们不得不对数据库二进制文件进行降级,在此期间用户们失去了包括访问在内的各种权限。最终,直到周二夜里,数据库才完全恢复到正常的工作状态。

问题发生的根源正是数据库管理员提供的那个脚本:它移除了所有文件,当然也包括备份文件。而且服务器管理员在此期间还犯下了严重错误,他甚至搞不清空白的文件系统和损坏的文件系统应该如何辨别。

退一步来说,彻底的审查流程与完善的计划实施(有望)能够防止此类事件重演,包括如何与身处不同国家、不同时区、使用不同母语的项目参与者们互相沟通。但无论技术的发展达到什么样的高度,或者说一家企业在全球化方面做得多么成功,人为因素永远是项目中不能忽略的重要组成部分之一——无论其作用是好还是坏。

【有关新概念运维】

在日常的系统管理运维工作中,每个人对于系统、工具、应用、命令、架构等方面都会有自己的理解。理解方式的不同也意味着不同的认知,因此,这种理解方式的交流,也可能碰撞出更多思维的火花,让每个人从另一个角度了解自己每天从事的工作。51CTO系统频道从日常和运维人员的交流中收集这些理解方式,组合成短文集,名为《新概念运维》

【51CTO.com译文,转载请注明原文作译者和出处。】

原文:Where have all the files gone?

【编辑推荐】

  1. 新概念运维之REJECT和DROP的区别
  2. 新概念运维之强迫症会害死系统管理员
  3. 新概念运维之No news is good news
责任编辑:黄丹 来源: 51CTO.com
相关推荐

2011-04-22 11:00:17

运维

2011-06-02 13:45:33

2012-09-27 10:18:25

机房运维监控

2012-12-21 12:40:15

智慧云手机软件

2011-07-13 17:45:14

新概念运维备份

2011-05-04 09:27:45

系统管理员强迫症

2012-12-28 09:32:16

健康数据App

2022-11-02 09:44:20

Linux运维json

2019-03-15 10:13:10

运维云计算运营

2011-07-11 12:13:47

2015-04-03 17:26:34

Adobe

2019-10-08 15:08:28

人脸数据AI数据收集

2011-08-05 14:11:28

技术周刊

2018-05-08 13:25:20

程序员裁员退休

2009-10-13 15:53:43

机房管理系统

2009-06-28 21:09:16

IT云计算物联网

2014-08-04 10:10:35

IT运维自动化运维

2013-05-03 14:11:43

程序员

2021-04-06 15:45:01

AI

2011-11-14 09:17:14

Linux运维ClusterShel
点赞
收藏

51CTO技术栈公众号