linux – 为什么badblocks会出现错误?
作者:互联网
我正在尝试检查已安装的分区以查看驱动器是否有错误:
[root@virtuality ~]# /sbin/badblocks -v /dev/sdb1
Segmentation fault
哦,哦.这是什么意思?为什么坏块会发生冲突?我可以修理吗?
(系统是CentOS版本4.6,驱动器是SATA驱动器)
编辑:使用strace:
[root@virtuality ~]# strace /sbin/badblocks -v /dev/sdb1
...[snip]...
open("/dev/sdb1", O_RDONLY) = 3
ioctl(3, BLKGETSIZE, 0x7fbffff878) = 0
close(3) = 0
open("/dev/sdb1", O_RDONLY) = 3
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
解决方法:
这个strace的最后几行告诉了一个相当无聊的故事:badblocks打开驱动器设备,获取它的大小,关闭它,重新打开它然后去做一些工作,这在某种程度上失败了strace没有显示.你必须使用gdb或类似的东西深入挖掘.
如果卸载分区,您的症状可能会消失,因此badblocks可以处理稳定的事情.显然,这不应该仅仅是要进行您正在尝试的只读测试,但这不是第一次某些低级别不常用的操作无法正常工作.
额外:如果卸载分区,可以使用badblocks -n,这在查找和修复磁盘表面问题方面更有效.
标签:linux,segmentation-fault,badblocks,hard-disk 来源: https://codeday.me/bug/20190816/1670695.html