几天前接到一个客户的求援,说是阿里云上误删除了服务器,问我有没有什么办法进行恢复,我当时的第一反应是:希望渺茫!因为据我所知,可能是出于数据隐私保护的角度考虑,假如客户主动删除了ECS,阿里云的技术人员也是没有办法帮客户恢复的。
所以我首先询问有没有做快照的备份?得到的答复是否定的。这下更悬了,我建议客户还是尽快清点线下的备份数据吧,大概率是没辙了。
接下来,客户的技术人员告诉我们是这样删除的:
看起来本意就是要删除日志目录下的所有文件,但加了一个斜杠把根下的所有文件及目录都连根拔起了。
看到这里情况发生了反转,我立即告诉客户,数据可能还有救,因为毕竟只是Linux下的文件系统操作,假如没有后续的写入操作,通过Linux 的文件系统调试命令是有可能恢复一些关键数据的。这些命令包括debugfs、dd等,具体操作可以自行百度,我在这里就不再赘述了。
接下来,因为服务器已经无法登录,需要将服务器的数据盘挂载到其他服务器进行恢复,在进行恢复之前还可以为数据盘生成快照以支持随时回退到最初状态。另外,还可以通过数据盘生成的快照来克隆出新的数据盘用于数据的并行恢复。
最后,客户那里传来喜讯,数据库全都找了回来,删除并没有删除到数据库,可能是管理人员发现情况不对及时终止了删除进程吧。
通过这件事情,客户为所有的服务器都配置了自动快照策略,毕竟这样的惊喜谁也不想要。
其实对于快照很对客户都存在误区,认为每一次快照都会占用完整的空间,其实阿里云的ECS快照只会记录变化的数据块,当数据的变化不是特别剧烈的情况下快照所占用的空间其实不大。
另外一个启发就是阿里云支持将ECS的系统盘、数据盘先进行卸载后再作为数据盘挂载到其他的ECS,这样出现一些系统无法启动的问题可以方便的进行故障修复和数据恢复。也可以利用系统盘或数据盘的快照来创建新的数据盘挂载到更多的服务器来进行并行的恢复操作。
希望上面的案例对大家有所帮助。