本期分享嘉宾 子岳 多年客户系统和网络运维经验,擅长系统故障分析和排查,目前聚焦VPC网络相关问题处理。
ECS数据分区丢失问题处理方法、常见误区和最佳实践
概述
我们在处理客户磁盘相关问题时,经常遇到操作系统中数据盘分区丢失的情况。本文档介绍了Linux和Windows下常见的数据分区丢失问题,以及对应的处理方法,同时给出客户最佳实践以避免可能的数据丢失风险。
重要
在对数据修复之前,首先需要对分区丢失的数据盘创建快照。快照创建完成后再进行尝试修复,如果在修复过程中出现问题,可以通过快照回滚还原到修复之前的状态。
工具说明
磁盘分区修复和数据恢复使用的工具:
Linux : fdisk testdisk partprobe
1、fdisk
Linux 系统默认有的分区工具。
2、testdisk
Linux 系统默认没有安装。比如 Centos 系统可以通过 yum install -y testdisk 在线进行安装。主要用作对 Linux 系统磁盘分区恢复或者数据恢复。
3、partprobe
Linux 默认工具。主要是在系统不重启的情况下,让 kernel 重新读取分区。
**Windows:磁盘管理,数据恢复软件
1、磁盘管理 **
系统自带工具,可以对磁盘进行分区格式化等操作。
2、数据恢复软件
一般是商业软件,可以去相应的官网进行下载使用。主要作用是文件系统异常恢复数据。
案例分析
案例1:Linux 下数据盘分区丢失和数据恢复处理办法
Linux 数据盘分区丢失或者数据丢失一般是用户重启系统后显现出来的。首先怀疑可能是用户 /etc/fstab 下没有配置自动挂载,所以先让用户手动挂载下。
如果手动挂载出现报分区表丢失:
那么我们通过如下3个办法先尝试进行处理。
一、通过 fdisk 进行分区恢复
一般用户对数据盘分区的时候,分区磁盘的起止扇区一般使用默认的值,所以可以先尝试直接使用fdisk 新建分区进行恢复。
如果这个方法尝试无效,那么就使用 testdisk 工具尝试修复。
fdisk 分区操作说明:
https://help.aliyun.com/document_detail/25426.html
二、通过 testdisk 工具恢复分区
1、输入 testdisk /dev/xvdb (请写需要回复的磁盘名称),然后默认“Proceed” 回车
2、选择 默认一般选择 “Intel” ,如果您是 GPT 分区,则选择 “EFI GPT” 进行扫描:
3、选择 “Analyse” 分析回车
4、可以看到没有任何信息,我们继续 “Quick Search” 快速搜索回车
5、可以看到找到一个分区信息,选中回车继续
6、选择 “Write”保存分区,如果不是我们需要的分区,可以继续搜索
7、按 “Y” 确认保存分区
8、这个时候可能的/dev 下还是看不到这个分区文件,我们需要通过partprobe /dev/xvdb 命令手动刷新分区表。
然后重新挂载,查看数据盘里的数据情况。
TestDisk使用说明:
http://www.cgsecurity.org/wiki/TestDisk
三、通过 testdisk 直接恢复数据
在某些情况下,tedisk 扫描出分区,但是无法保存分区的时候,可以尝试直接把文件恢复处理,具体处理步骤如下:
1、testdisk 已经找到分区,我们可以按 “P” 列出文件:
2、可以看见存在的文件,将要恢复的文件选中,然后按 “C”
3、然后选择需要复制的目标目录,我们以恢复到home为例
4、可以看到提示复制成功
5、切换到 home 目录查看,可以看见文件已经恢复了
案例2:Windows 下数据盘分区丢失和数据恢复处理办法
一、磁盘显示为 “外部”磁盘导致没有显示分区
1、我们可以通过磁盘管理查看磁盘,磁盘显示“外部”
2、针对显示为“外部”的磁盘,可以在磁盘区块上右击,选择导入外部磁盘,点击确定即可
二、磁盘显示为 “脱机”状态导致没有显示分区
1、我们可以通过磁盘管理查看磁盘,磁盘显示“脱机”
2、针对显示为“脱机”的磁盘,可以在磁盘区块上右击,选择联机,点击确定即可
三、未分配盘符导致无法显示分区
1、在磁盘管理,可以看到数据盘可以被系统正确识别,但是未分配盘符给这块磁盘。
2、右击磁盘右侧的色块,在弹出的菜单中选择“更改驱动器号和路径”:重新分配驱动号即可。
四、在磁盘管理无法查看到该数据盘,出现“枚举卷期间出错”的报错
1、在磁盘管理里面无法查看到数据盘,在系统日志里面报“枚举卷期间出错”错误:
2、打开Windows PowerShell 命令窗口,执行winrm quickconfig命令进行修复,在弹出询问: 执行这些更改吗【y/n】? 输入 “y” 确认执行
3、修复完毕后重新打开磁盘管理,数据盘已可以正常显示
五、数据盘变成RAM
在某些特殊情况下,我们发现Windows下Disk变为RAW格式。Disk显示Raw disk是因为Windows无法识别其上的文件系统。这通常是记录文件系统类型或者位置的信息丢失或者损坏了,如partition table或者boot sector。比较可能的原因列举如下:
外接硬盘发生这种问题通常是因为断开时没有使用”safely remove hardware” 的选项;
意外断电导致的磁盘问题也比较常见;
硬件层故障也可能导致磁盘分区信息丢失;
底层与磁盘相关的driver或应用,例如我们使用的diskprobe工具就可以直接修改磁盘的表结构;
计算机病毒。
微软官方给出的修复磁盘RAM是使用Dskprobe工具进行修复,详情请参考微软官方文档:
Dskprobe Overview
https://technet.microsoft.com/en-us/library/cc736327(v=ws.10).aspx
除了上述此外,Windows下有大量的免费或商业的数据恢复软件来进行丢失数据的找回。例如,您可以尝试使用Disk Genius工具扫描,来尝试恢复相应的文件。
常见误区与最佳实践
数据是用户的核心资产,很多用户在ECS上构建网站、自建数据库(MYSQL/MongoDB/REDIS)。如果出现数据丢失情况,会给用户的业务带来巨大的风险。如下是我们在数据安全方面总结常见误区和最佳实践。
常见误区
有些用户认为阿里云的底层存储基于三副本,因此认为操作系统内数据没有任何丢失风险。实际上这是误解,底层存储的三副本提供对数据磁盘的物理层保护,但如果系统内部使用云盘逻辑上出现问题,比如中毒,误删数据,文件系统损坏等情况,还是可能出现数据丢失。此时,我们需要通过快照、异地备份等相关技术最大保证数据的安全性。
云盘的三副本说明
ECS 用户对虚拟磁盘的读写最终都会被映射为对阿里云数据存储平台上的文件的读写。阿里云提供一个扁平的线性存储空间,在内部会对线性地址进行切片,一个分片称为一个 Chunk;对于每一个 Chunk,阿里云会复制出三个副本,并将这些副本按照一定的策略存放在集群中的不同节点上,保证用户数据的可靠。至于 ECS 实例内由于病毒感染、人为误删除或黑客入侵等软故障原因造成的数据丢失,需要采用备份、快照等技术手段来解决。任何一种技术都不可能解决全部的问题,因地制宜的选择合适的数据保护措施,才能为宝贵的业务数据筑起一道坚实的防线。
具体参考:
https://help.aliyun.com/document_detail/35108.html
最佳实践
数据盘分区恢复以及数据恢复是处理数据丢失问题最后的一道防线,但未必一定能够恢复数据。我们强烈建议用户参考如下最佳实践,通过数据进行自动快照、手动快照快照和各类备份方案,最大程度保证数据的安全性。
1、启用自动快照
根据实际业务情况,对系统盘、数据盘启动自动快照。需要注意的是,自动快照在更换系统盘、服务器到期后或手动释放磁盘时,自动快照可能会被释放。
关于自动快照释放行为,可以在 ECS控制台>全部磁盘 中找到对应磁盘,选择 修改磁盘属性 进行设置,默认选择 自动快照随磁盘释放,选择后,当磁盘手动释放、磁盘随实例释放或更换系统盘时,该磁盘的自动快照会被自动删除。如果想保留快照,您可以手动去掉该选项。
详情请参考:
ECS云服务器自动快照FAQ
https://help.aliyun.com/knowledge_detail/40552.html
2、手动快照
请在任何重要或有风险的操作前,请手动执行快照。例如:
系统升级内核
应用升级变更
磁盘数据恢复
在对用户磁盘做恢复的时候,一定要先对创建该磁盘的快照,快照完成后做相应的操作。
3、OSS、线下、异地备份
用户可酌情使用OSS、线下、异地的方式进行重要数据的备份。