起因:
云服务器到期,随挂载磁盘到期,到期后服务器关机就续费了,不会导致服务器和数据盘释放,续费后,服务器开机,发现一块云盘没有挂载,没有修改fstab文件不会开启自动挂载,然后挂载,之后发现这块云盘里面没有任何数据,确定没有重新分区。
环境:
阿里云服务器,centos7,系统盘40G,数据盘100G。
分析
出现事故原因有两种情况会导致数据盘数据丢失问题。
1、服务器、云盘到期厂商宿主机故障导致,这里其实和配置fstab没有什么关系,也不一定,但是厂商是可能存在这个。
2、手动挂载磁盘误操作导致数据丢失,这个也可能存在。
解决方案
结合上面两条可能出现事故原因情况来看,首先和官方沟通,主要是摸清数据丢失原因,官方回复需要进入服务器排查,但是因为这账号关系,官方不能授权进入到服务器排查,但是最终官方也给出了几个可能出现事故的原因,①、服务器遭入侵②、挂载磁盘操作不当③、可能是官方问题但是需要排查。①可以暂时排除因为停机之前正常,系统正常运行,基于以上让官方接入这条路不通。
因为时间比较紧急,已经造成服务不可用,但是目前可以先舍去不摸清数据丢失原因,目前唯一一条路就是恢复数据,其实官方也给出了恢复数据的解决方案,购买一台window服务器,把磁盘挂载至window看是否能扫出数据。
然后目前解决方案就是先恢复数据。
实施
基于官方给出的数据恢复方案,我使用的是testdisk工具,好处是不用再开一台机器,window和linux都可以使用。
testdisk主要是修复磁盘和恢复数据,这个工具是开源的,介绍这里就不过多叙述,可以去官方看,https://www.cgsecurity.org/wiki/TestDisk_CN
开始
1、操作之前先创建快照,避免数据二次丢失。
2、安装testdisk工具
yum install -y testdisk
3
testdisk /dev/vdb
解释:/dev/vdb是设备名字 恢复那个设备就用哪个设备的名字,根据实际情况而定。
结果如下图:
选择 Proceed 回车进入下一步
4、选择分区类型,默认是Intel这里官方文档有说明,如果数据盘采用GPT分区,选择EFI GPT。
如下图:
我就默认了,然后回车,进入下一步。
5、选择分析
选择Analyse,然后回车进入下一步,如下图
6、分析结果
然后并没有看到任何信息,不要慌,选择Quick Search后按回车键快速搜索。
7、搜索结果
8、检索数据列表
根据搜索结果提示按p列出所有文件
9、选择要恢复的文件
根据提示按a全选,然后按c复制,然后会进到下一步
10、选择复制目录
我是复制到 /recovery/data目录下,然后按c 然后会进入下一步正在复制中,只需静静等待结果就好。
11、恢复完成
到此数据已恢复完成,如下图。
终于放心了。
但是数据丢失的具体原因还没找到,需要找到原因,避免下次出现此情况发生。
注意事项:
1、操作之前一定要创建快照。
2、遇见不明白的不要乱操作,避免数据彻底丢失。
3、不一定所有丢失数据都能找回,这里官方给出了解释,可以去官方看下。
官方地址:https://www.cgsecurity.org/wiki/TestDisk_CN