- /dev/sda2? ? ? ? ? ? 591467212 237121952 323815736? 43% /
- tmpfs? ? ? ? ? ? ? ? ? 4149320? ? ? ? ?0? ?4149320? ?0% /dev/shm
- /dev/sda1? ? ? ? ? ? 117927380? ? ?11016 111829340? ?1% /boot
使用命令 badblocks -s -v -o /root/sda1_blocks.txt /dev/sda 可以检测 / dev/sda1 和 / dev/sda2 坏道的信息,
但是根目录卸载不了, 没办法同时卸载 / dev/sda1 和 / dev/sda2 之后重新挂载 (忽略坏道的方式).
如果这个时间执行 e2fsck -l /root/sda1_blocks.txt /dev/sda1 会出现以下提示:
Bad block 126569731 out of range; ignored.
原因是 badblocks -s -v 目录记录下的坏道序号, 都是从 0 开始, 不是独占的.
所以需要只能单独对 / dev/sda1 进行检测及重新挂载, 步骤如下:
- badblocks -s -v -o /root/sda1_blocks.txt /dev/sda1
- umount?/dev/sda1
- e2fsck -l /root/sda1_blocks.txt?/dev/sda1
- mount /dev/sda1 /boot
badblocks 命令
badblock 命令用于查找磁盘中损坏的区块. 硬盘是一个损耗设备, 当使用一段时间后可能会出现坏道等物理故障. 电脑硬盘出现坏道后, 如果不及时更换或进行技术处理, 坏道就会越来越多, 并会造成频繁死机和数据丢失. 最好的处理方式是更换磁盘, 但在临时的情况下, 应及时屏蔽坏道部分的扇区, 不要触动它们. badblocks 就是一个很好的检查坏道位置的工具.
语法
badblock (选项) (参数)
选项
-b < 区块大小 >: 指定磁盘的区块大小, 单位为字节;
-o < 输出文件 >: 将检查的结果写入指定的输出文件;
-s: 在检查时显示进度;
-v: 执行时显示详细的信息;
-w: 在检查时, 执行写入测试.
参数
磁盘装置: 指定要检查的磁盘装置;
磁盘区块数: 指定磁盘装置的区块总数;
启始区块: 指定要从哪个区块开始检查.
实例
badblocks 以 4096 的一个 block, 每一个 block 检查 16 次, 将结果输出到 "hda-badblocks-list" 文件里.
badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list
hda-badblocks-list 是个文本文件, 内容如下:
- cat hda-badblocks-list
- 51249
- 51250
- 51251
- 51253
- 51254
- ......
- 61245
- ......
可以针对可疑的区块多做几次操作. 下面, badblocks 以 4096 字节为一个 "block", 每一个 "block" 检查 1 次, 将结果输出到 "hda-badblocks-list.1" 文件中, 由第 51000 block 开始, 到 63000 block 结束.
badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000
这次花费的时间比较短, 硬盘在指定的情况下在很短的时间就产生 "嘎嘎嘎嘎" 的响声. 由于检查条件的不同, 其输出的结果也不完全是相同的. 重复几次同样的操作, 因条件多少都有些不同, 所以结果也有所不同. 进行多次操作后, 直到产生最后的 hda-badblock-list.final 文件.
e2fsck 命令
e2fsck 命令用于检查第二扩展文件系统的完整性, 通过适当的选项可以尝试修复出现的错误.
e2fsck 执行后的传回值及代表意义如下:
0 没有任何错误发生.
1 文件系统发生错误, 并且已经修正.
2 文件系统发生错误, 并且已经修正.
4 文件系统发生错误, 但没有修正.
8 运作时发生错误.
16 使用的语法发生错误.
128 共享的函数库发生错误.
语法
e2fsck(选项)(参数)
选项
-a: 不询问使用者意见, 便自动修复文件系统;
-b<superblock>: 指定 superblock, 而不使用预设的 superblock;
-B < 区块大小 >: 指定区块的大小, 单位为字节;
-c: 一并执行 badblocks, 以标示损坏的区块;
-C: 将检查过程的信息完整记录在 file descriptor 中, 使得整个检查过程都能完整监控;
-d: 显示排错信息;
-f: 即使文件系统没有错误迹象, 仍强制地检查正确性;
-F: 执行前先清除设备的缓冲区;
-l < 文件 >: 将文件中指定的区块加到损坏区块列表;
-L < 文件 >: 先清除损坏区块列表, 再将文件中指定的区块加到损坏区块列表. 因此损坏区块列表的区块跟文件中指定的区块是一样的;
-n: 以只读模式开启文件系统, 并采取非互动方式执行, 所有的问题对话均设置以 "no" 回答;
-p: 不询问使用者意见, 便自动修复文件系统;
-r: 此参数只为了兼容性而存在, 并无实际作用;
-s: 如果文件系统的字节顺序不适当, 就交换字节顺序, 否则不做任何动作;
-S: 不管文件系统的字节顺序, 一律交换字节顺序;
-t: 显示时间信息;
-v: 执行时显示详细的信息;
-V: 显示版本信息;
-y: 采取非互动方式执行, 所有的问题均设置以 "yes" 回答.
参数
文件系统或者分区: 指定文件系统或者分区所对应的设备文件名.
实例
检查 / dev/sda1 是否有问题, 如发现问题便自动修复:
e2fsck -a -y /dev/sda1
执行 e2fsck 或 fsck 前请先 umount partition, 否则有机会令档案系统毁损. 如果需要对根目录 / 进行检查及修复, 便需要进入 singal user mode 执行.
来源: http://www.bubuko.com/infodetail-2922973.html