在处理客户磁盘相关问题时,您经常会遇到操作系统中数据盘分区丢失的情况。本文档介绍了 Linux 下常见的数据分区丢失问题以及对应的处理方法,同时给出客户最佳实践以避免可能的数据丢失风险。
前提条件
在对数据修复之前,首先需要对分区丢失的数据盘创建快照,快照创建完成后再进行尝试修复。如果在修复过程中出现问题,可以通过快照回滚还原到修复之前的状态。
工具说明
Linux 下磁盘分区修复和数据恢复使用的工具:fdisk,testdisk, partprobe 。
- fdisk Linux 系统默认有的分区工具。
- testdisk Linux 系统默认没有安装。比如 Centos 系统可以通过 yum install -y testdisk 在线进行安装。主要用作对 Linux 系统磁盘分区恢复或者数据恢复。
- partprobe Linux 默认工具。主要是在系统不重启的情况下,让 kernel 重新读取分区。
Linux 下数据盘分区丢失和数据恢复处理办法
Linux 数据盘分区丢失或者数据丢失一般是用户重启系统后显现出来的。首先怀疑可能是用户 /etc/fstab 下没有配置自动挂载,所以先让用户手动挂载下。
如果手动挂载出现报分区表丢失,那么您可以通过如下三种办法先尝试进行处理。
通过 fdisk 进行分区恢复
一般用户对数据盘分区的时候,分区磁盘的起止扇区一般使用默认的值,所以可以先尝试直接使用 fdisk 新建分区进行恢复。
如果这个方法尝试无效,那么就使用 testdisk 工具尝试修复。
fdisk 分区操作说明:格式化和挂载数据盘。
通过 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 目录查看,可以看见文件已经恢复了。
常见误区与最佳实践
数据是用户的核心资产,很多用户在ECS上构建网站、自建数据库(MYSQL/MongoDB/REDIS)。如果出现数据丢失情况,会给用户的业务带来巨大的风险。如下是您在数据安全方面总结常见误区和最佳实践。
常见误区
有些用户认为阿里云的底层存储基于三副本,因此认为操作系统内数据没有任何丢失风险。实际上这是误解,底层存储的三副本提供对数据磁盘的物理层保护,但如果系统内部使用云盘逻辑上出现问题,比如中毒,误删数据,文件系统损坏等情况,还是可能出现数据丢失。此时,您需要通过快照、异地备份等相关技术最大保证数据的安全性。
云盘的三副本说明
ECS 用户对虚拟磁盘的读写最终都会被映射为对阿里云数据存储平台上的文件的读写。阿里云提供一个扁平的线性存储空间,在内部会对线性地址进行切片,一个分片称为一个 Chunk;对于每一个 Chunk,阿里云会复制出三个副本,并将这些副本按照一定的策略存放在集群中的不同节点上,保证用户数据的可靠。至于 ECS 实例内由于病毒感染、人为误删除或黑客入侵等软故障原因造成的数据丢失,需要采用备份、快照等技术手段来解决。任何一种技术都不可能解决全部的问题,因地制宜的选择合适的数据保护措施,才能为宝贵的业务数据筑起一道坚实的防线。具体请参考:云盘三副本技术介绍。
最佳实践
数据盘分区恢复以及数据恢复是处理数据丢失问题最后的一道防线,但未必一定能够恢复数据。您强烈建议用户参考如下最佳实践,通过数据进行自动快照、手动快照快照和各类备份方案,最大程度保证数据的安全性。
启用自动快照
根据实际业务情况,对系统盘、数据盘启动自动快照。需要注意的是,自动快照在更换系统盘、服务器到期后或手动释放磁盘时,自动快照可能会被释放。
关于自动快照释放行为,可以在 ECS控制台>全部磁盘 中找到对应磁盘,选择 修改磁盘属性 进行设置,默认选择 自动快照随磁盘释放,选择后,当磁盘手动释放、磁盘随实例释放或更换系统盘时,该磁盘的自动快照会被自动删除。如果想保留快照,您可以手动去掉该选项。详情请参考:ECS云服务器自动快照FAQ。