fsck修复以及在lost+found找丢失的文件

转自:http://www.aslibra.com/blog/post/lost_found_fsck_find.php

 

Linux的每个分区默认都有一个 lost+found 目录,是用来存放fsck过程中部分修复的文件的。

近日一块硬盘发生错误:

引用
EXT3-fs error (device sdb1) in start_transaction: Journal has aborted
EXT3-fs error (device sdb1) in start_transaction: Journal has aborted
EXT3-fs error (device sdb1) in start_transaction: Journal has aborted
EXT3-fs error (device sdb1) in start_transaction: Journal has aborted

会提示硬盘有问题,估计硬盘快不行了咯 (⊙o⊙)
重启的时候还需要键盘按any key继续,这硬盘有问题啦,可怜的
在远程重启一直都没有启动好,原来真的是需要确认才能继续。。

在rw模式下操作,文件系统会在某个时候自动切换至read-only模式,不知道啥问题,出现IO错误多了就会这样?

umount后可以进行fsck:
如果没有umount,肯定是比较危险的事情,可能会导致现在被读取或者打开的文件都会丢到lost-found里面,到时候有你找的了,是不是这样我也不太肯定。
我胆敢尝试了一下在挂载为只读的时候fsck,发现lost-found里面的文件很多是samba共享的文件,不知道是否这个原因,但是要知道linux启动的时候也是挂载根分区为只读查盘的,而后在remount为rw。

翻开红帽系统管理的书找到依据,表明可以不umount而修复:
一个只读的挂载的文件系统可用fsck命令进行操作,并被修复。

[root@aslibra /]# fsck.ext3 -h
fsck.ext3: invalid option — h
Usage: fsck.ext3 [-panyrcdfvstDFSV] [-b superblock] [-B blocksize]
[-I inode_buffer_blocks] [-P process_inode_size]
[-l|-L bad_blocks_file] [-C fd] [-j ext-journal]
[-E extended-options] device

Emergency help:
-p                   Automatic repair (no questions)
-n                   Make no changes to the filesystem
-y                   Assume “yes” to all questions
-c                   Check for bad blocks and add them to the badblock list
-f                   Force checking even if filesystem is marked clean
-v                   Be verbose
-b superblock        Use alternative superblock
-B blocksize         Force blocksize when looking for superblock
-j external-journal  Set location of the external journal
-l bad_blocks_file   Add to badblocks list
-L bad_blocks_file   Set badblocks list

对照一下中文注释:

引用
fsck的语法如下:
fsck (-F fstype) (-v) (-m) (-special…)
fsck (-F fstype) (-v) (-y|Y|n|N)
(-o fstype options) (special…)
其中:
-F fstype : 说明被检查的文件系统的类型
-v : 返回完成的命令行,但不运行
-y|Y: 对所有问题均回答Yes
-n|N: 对所有问题均回答No
-m: 对文件系统进行检查,不修复文件系统,
如果文件系统经检查后是可安装的,则显示
ufs fsck : sanity check : /dev/rdsk/c0t0d0s0 okay.
-o: 文件系统类型选项,选项由逗号分隔,
最常用的选项有两个:
P: 整理(preen)模式
F: 强制检查模式,此选项忽略文件系统状态标志。
1) 移去一个没有相关文件的目录入口 答Yes或Y来删除该目录入口
2) 重连接一个已分配但不能访问的文件
对fsck的”RECONNECT?”回答Yes,即把该I节点连接到lost+found目录下,文件名即是I节点号
3) 连接数调整 回答Yes或Y来改正连接数
4) 自由块表不一致 回答Yes或Y来修正超级块
对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用” -y”选项来执行该命令
对硬盘进行检查和修复。

可以使用 -y 参数让它碰到需要修正的时候自动确认修复: fsck.ext3 -y /dev/sdb1
之后也许会在 lost+found 有很多文件:

引用
#10928130
#11042820
#11108357
#11223043
#11386881
#11403265

按节点命名的吧?不清楚细节,打开文件夹可以看到里面的文件,认识的就可以复制恢复,不认识的就没法了,根据文件名称找吧:

[root@aslibra lost+found]# find . -name *.rar
./#1638402/www.aslibra.com.rar
./#1638402/Zmaker_1.093.rar
./#1638402/安装包测试/08-12-05.rar

附上fsck参考资料:

运行fsck后,该命令会分6个阶段对文件系统
进行检查,这六个阶段分别是:
阶段1: 检查块和块的大小
阶段2: 检查路径名
阶段3: 检查连接性
阶段4: 检查参考记数
阶段5: 检查自由块列表
阶段6: 补救自由块列表

fsck在对每个阶段进行检查时,如果发现错误,会提示用户进行修改,常见的一些错误有:

1) 移去一个没有相关文件的目录入口
这时用户可以回答Yes或Y来删除该目录入口。

2) 重连接一个已分配但不能访问的文件:
fsck找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对fsck的”RECONNECT?”回答Yes,即把该I节点连 接到lost+found目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。

3) 连接数调整
在交互方式下,fsck若发现连接数不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。
这时用户应该回答Yes或Y来改正连接数。

4) 自由块表不一致
fsck查出未分配块数与超级块中所给出的自由块表不一致。
这时用户应该回答Yes或Y来修正超级块。
从上面的出错信息和处理方法可以发现,对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用” -y”选项来执行该命令对硬盘进行检查和修复。

此条目发表在未分类分类目录。将固定链接加入收藏夹。