- 以下内容整理自前实验室服务器管理员们的邮件:
服务器存储与数据恢复记录(2018-01-12)
邮件原文来自 hujian5241:
我们的 sanzi 服务器外挂 40T 存储和 guru 服务器最新外挂的 8T12 存储为 xfs 格式,guru 自带存储为 1.8T24,ext4 格式存储。
这次数据恢复非常幸运的是 16 年给 guru 装机的时候,装机人员没有成功分区,后来我自己通过 gparted 图形交互界面将 guru 自带存储分为了 ext4 格式。ext2/3/4 格式会 180 天滚动的自动备份多份文件结构表,小沈的 dd 命令会破坏文件结构表等重要数据,并且写了 10G 的数据,虽然相对于 1.8T*24 的整个 raid 来说不算很大,但也损坏了自动备份的 25 份文件结构表中的绝大多数。
如果存储容量小,比如我们在测试机上用 1T 硬盘测试的时候,同样用 dd 写了 10G 的数据,就无法恢复了,可能导致所有的结构表的备份都被破坏。
数据恢复的具体操作步骤
1. 升级 e2fsprogs
由于软件限制的原因,ext4 不支持 16T 以上分区(ext4 格式本身支持),因此先升级 e2fsprogs。
|
|
2. 查找 ext4 格式自动备份的 superblock 所在 block 位置
命令:
|
|
说明:
-n参数必须加,否则是格式化;-O后面参数是针对 > 16T ext4 分区;/dev/sda5是我们挂载在/home下的分区名称。
部分输出结果:
Creating filesystem with 9875249664 4k blocks and 2468814848 inodes
Filesystem UUID: dc46c4d8-94ef-4813-ad04-ddb7d5e3f40e
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,
2560000000, 3855122432, 5804752896
3. 磁盘检测、校验和修复
命令示例:
|
|
说明:
-b 20480000是上一步命令中找到的 superblock 备份所在的 block 位置之一;- 需要挨个试,有的也可能损坏;
- 建议 不要加
-y参数,否则会自动修复,无法看到过程中的问题提示; - e2fsck 一共 5 个步骤,成功修复过程中没有任何 error 输出。
4. 挂载硬盘
命令:
|
|
说明:
-t ext4:指定挂载 RAID 的格式为 ext4,别写错。
杨总的碎碎念
Linux 运维水实在非常深,几个工程师也只能说知道一点给点建议(当然也有可能数据恢复风险大,都不敢尝试,也就不愿意讲太多给自己添麻烦)。
看来以后:
- 至少在对服务器修改架构等操作之前需要备份一下系统,提前一天做好就可以;
- 对数据的备份需要狡兔三窟,最好线上线下都有一份,以减少系统性风险,假如医学楼真起火了呢【乌鸦嘴呸呸呸】;
- 代码就更要云笔记存一份,非常方便。
关于百度云备份
百度云备份的话,要不买个年费超级会员吧,年费也只需要 269 元,对容量和传输速度都有很大提升。就相当于买个保险嘛,绝对值得。当然这个账号的管理也要注意,别买了又忘记存。
这次撞大运了,今年不发两篇大文章实在说不过去吧 😄😁
老江的回复
我也希望今年实验室能发大文章!大家一块努力!你说的百度云我想想。