Linux 文件系统错误的修复方法  ddrescue替代dd的恢复软件  备用超级块

http://www.mamicode.com/info-detail-1372846.html

最近处理的一件 linux 服务器断电导致文件系统启动后文件系统不可读写,数据不可用的案
例,现总结下 Linux 文件系统错误的修复方法。
EXT3-fs error (device hda3) in start_transaction: Journal has aborted
If your system abruptly loses power, or if a RAID card is beginning to fail, you might see an
ominous message like this within your logs:
EXT3-fs error (device hda3) in start_transaction: Journal has aborted
Basically, the system is telling you that it’s detected a filesystem/journal mismatch, and it can’t
utilize the journal any longer. When this situation pops up, the filesystem gets mounted read-only
almost immediately. To fix the situation, you can remount the partition as ext2 (if it isn’t your active
root partition), or you can commence the repair operations.
If you’re working with an active root partition, you will need to boot into some rescue media and
perform these operations there. If this error occurs with an additional partition besides the root partition,
simply unmount the broken filesystem and proceed with these operations.
Remove the journal from the filesystem (effectively turning it into ext2):
# tune2fs -O ^has_journal /dev/hda3
Now, you will need to fsck it to correct any possible problems (throw in a -y flag to say yes to all
repairs, -C for a progress bar):

# e2fsck /dev/hda3

Once that's finished, make a new journal which effectively makes the partition an ext3 filesystem
again

# tune2fs -j /dev/hda3

You should be able to mount the partition as an ext3 partition at this time:

# mount -t ext3 /dev/hda3 /mnt/fixed

Be sure to check your dmesg output for any additional errors after you’re finished!

硬盘故障导致的数据丢失有可能是惨重的,但如果已经发生了,就需要最大程度地将数据恢复出来。

这介绍当磁盘因严重问题无法访问后(但 BIOS 还能识别),数据的抢救方法,并讨论ext2&ext3 格式分区的磁盘短读(short read)错误。

首先约定:需要手动输入的字符用黑体字给出,其余的为终端输出。
如果使用 ext2 或 ext3 文件系统,可能会收到类似下面一些警告信息,该警告信息来自e2fsck 实用程序:

e2fsck /dev/hda1
e2fsck: Attempt to read block from filesystem resulted in short read

如果看到这个消息,首先想到可能是磁盘的主超级块损坏。而在创建文件系统的时候,mke2fs 已经自动创建了磁盘的超级块的备份。

可以告诉 e2fsck 程序使用一个备用超级块检查文件系统。

备用超级块一般创建于块 8193、16384 或 32768,取决于磁盘的大小(可以使用 mkfs.ext3 -n /dev/hda1 查看)。假设是块大硬盘,则使用:

e2fsck -b 32768 /dev/hda1

如果是超级块的问题,则程序返回后,备用超级块被启用,磁盘恢复正常。如果提示下面的问题:

e2fsck: Attempt to read block from filesystem resulted in short read while checking
ext3 journal for /dev/hda1

说明问题不是出在超级块,出自日志文件系统的日志。此时可以安全地删除 ext3 文件系统的日志:

tune2fs -f -O ^has_journal /dev/hda1

这样就删除了/dev/hda1 文件系统上的日志,这时可以重新尝试挂载分区,必要的话可以重建日志系统(使用 tune2fs -j /dev/xxx)。
如果 tune2fs 提示下面的错误:

tune2fs: Attempt to read block from filesystem resulted in short read while
reading journal inode

则说明指向日志的 inode 坏了,意味着无法清除日志。这时可以尝试 debugfs 命令,它是ext2&3 文件系统的调试器。

也可以再次使用 e2fsck,加上-c 参数检查文件系统的坏块。至此,因为无法检查或修复问题磁盘上的文件系统,该拿出杀手锏了。
使用 ddrescue 克隆损坏的磁盘
如果磁盘因为坏块而妨碍了读取,可以使用一个原始的磁盘复制实用程序创建磁盘的一个副本。

Unix/Linux 系统自带了一个简单实用程序 dd,它把一个文件/分区/磁盘复制到另一个(在第一个专题里用到过)。

前提条件时必须在系统里添加一块容量不小于问题磁盘的新硬盘。
新硬盘准备就绪后,输入下面命令:

dd if=/dev/hda of=/dev/hdb conv=noerror,sync

上面的命令将坏磁盘(/dev/hda)复制到新磁盘(/dev/hdb),忽略读取时遇到的错误(noerror),当遇到不能访问的块时用适当数量的空值填充输出(sync)。
但是 dd 有几个缺点:首先是速度太慢;然后是不显示进度信息,直到完成前它都是沉默的;

不重新尝试失败的读取,这会减少能从坏盘恢复的数据量。因此在这里介绍另一个软件——ddrescue,

可以从 http://www.gnu.org/software/ddrescue/ddrescue.html 获取
最新版(Fedora8 用户可以直接用 yum install dd_rescue 安装) 。

http://mirrors.ustc.edu.cn/gnu/ddrescue/

目前 ddrescue 最新版本是 1.7,直接下载链接: http://ftp.gnu.org/gnu/ddrescue/ddrescue-1.7.tar.bz2
编译、安装后,可以使用下面命令完成相同的任务:

ddrescue --max-retries=-1 /dev/hda /dev/hdb

其中 max-retries=-1 参数表示无论遇到多少错误都不要停止。程序从 hda 读取数据并写到 hdb 中时,不断更新各项数据,可以方便地查看工作进行情况。
在 ddrescue 结束磁盘复制后,在新硬盘上运行 e2fsck,以消除原始磁盘的坏块引起的文
件系统错误。由于肯定会有大量错误,可以用-y 参数运行 e2fsck,指示 e2fsck 对每个问题都回答 yes:

e2fsck -y /dev/hdb

此时,可以使用 mount 命令挂载文件系统,看看数据的恢复情况了。记得检查驱动器根目录下的 lost+found 文件夹,

fsck 把不能正确链接的文件和目录放在了这个文件夹里

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/5552528.html

Linux 文件系统错误的修复方法 ddrescue替代dd的恢复软件 备用超级块相关推荐

  1. U盘文件乱码最新修复方法

    我的U盘一直都好好的~ 1G 台电~ 今天在朋友的机子上拷了2个word文件,   拷了过了一会里面的文件就变成了乱码.开始我以为是中毒了,结果杀毒也没有,杀了好几次~ 下了个U盘专杀也没病毒! 删也 ...

  2. 禁用sslv3协议linux,SSLv3协议漏洞修复方法

    SSL3.0被曝出存在协议漏洞:"通过此漏洞可以窃取客户端与server端使用SSLv3加密通信的明文内容,危害严重",目前官方暂无升级修复补丁和攻击利用方式公布. 最佳建议:&q ...

  3. 打开文件位置在计算机游戏里面,Win7电脑“打开或关闭windows功能”里面没有游戏文件夹的修复方法...

    平时系统中可以使用"打开或关闭windows功能"来删除或安装系统默认的游戏.但是最近有雨林木风win7系统的用户打开"打开或关闭windows功能"却发现里面 ...

  4. mp4视频文件损坏的修复方法

    视频打包方案中目前使用最为广泛的就是苹果的QT结构,像MP4.MOV.3GP等文件就是使用QT结构进行封装.市场上此类视频修复软件鱼龙混杂,很多修复软件只是用FFMPEG进行了后台转码导致修复后的素材 ...

  5. Linux命令修复方法,Linux系统MBR的修复方法

    MBR boot loader介绍 MBR是硬盘中第一个扇区的前512个字节,称为main boot record,512字节中的前446个字节为boot loader 所在部分,boot loade ...

  6. linux 已打开的文件夹里,打开linux文件的三种方法

    怎么打开linux文件,方法如下: 方法一(利用Vim文本编辑器): 1.打开终端.点击菜单,然后找到终端程序.程序的图标是一个黑色的方框,上面有一个白色的">_".点击它. ...

  7. gzip压缩文件损坏的修复方法

    修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点.根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志.使用的哈夫曼树类型.以及3个哈夫曼树的树元素个数等.如果某个gz ...

  8. 修复损坏的gzip压缩文件原理和修复方法

    引用一下GZIP的底层结构图如下: 已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点.根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志.使用的哈夫曼树类型.以及 ...

  9. linux开权限变绿了,解读Linux文件权限的设置方法

    Windows系统其实和Linux系统有相似的地方,Windows系统文件.目录的属性有只读.隐藏,而Linux也一样.Linux中,每一个文件都具有特定的属性.主要包括文件类型和文件权限两个方面.可 ...

最新文章

  1. 网络获取json数据并解析
  2. matlab怎么实现循环,matlab怎么实现直到型循环
  3. spring框架学习(二)依赖注入
  4. 设计模式09----门面设计模式
  5. 单机版kubernetes1.13安装
  6. js简单操作Cookie
  7. 3ds Max 中的导航控件SteeringWheels入门介绍
  8. Cadence OrCAD Capture 原理图设计过程产生的文件总结与说明
  9. 用互联网思维去做事之-(2)用户思维
  10. Docker容器之compose容器集群的快速编排
  11. 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》...
  12. libnuma详解-A NUMA API for LINUX
  13. 敏感文件/目录扫描工具 dirsearch
  14. win10怎么取消文件默认打开方式
  15. 解决Win10任务栏图标消失
  16. 在win10安装Charles和证书
  17. 《剑指offter》第十九题(js)
  18. 服务器定位cpu高占用率代码php,面试官:线上服务器CPU占用率高如何排查定位问题?,...
  19. 交换机hybrid模式
  20. iOS5打开系统setting页面

热门文章

  1. SpringMVC框架
  2. 在伦敦工作生活—随笔-1
  3. Go 1.9 sync.Map揭秘
  4. SpringMvc 事务的注解配置、实现、挂起
  5. 创业故事:腾讯的创始人们
  6. 3.Struts2的输入验证
  7. fckeditor编辑器上传文件出现invalid Request问题解决
  8. matlab ga rbf,GA PSO优化的RBF神经网络
  9. POJ1328贪心放雷达
  10. POJ2186 强联通