坏块需要很长时间。还是它被冻结了?

坏块需要很长时间。还是它被冻结了?

在此处输入图片描述

sudo badblocks -nv /dev/sda6昨天发的,刚起床还是这样。

文档表示该-n参数指定测试应该是非破坏性的,但需要更长的时间。

它能正常工作吗?还是冻结了?有人知道吗?

答案1

你可以使用 来观察每个进程的 I/O 活动iotop。安装:

sudo apt-get install iotop

然后启动:

sudo iotop

观察 30 秒。它是否显示badblocks正在进行任何 I/O?如果是,则表示它正在运行,如果没有,则表示它可能已冻结。

下次您可以badblocks使用以下-s参数启动:

sudo badblocks -nsv /dev/sda6

这将显示出进步。

答案2

您可以通过查看它来了解其badblocks当前在驱动器中的位置,即:fdinfoproc

root@ubuntu:/home/ubuntu# ps ax | grep badblock
 3772 tty1     D+    12:11 badblocks -v /dev/sdb
 5478 tty2     S+     0:00 grep --color=auto badblock

root@ubuntu:/home/ubuntu# ls -l /proc/3772/fd
total 0
lrwx------ 1 root root 64 Mar  3 00:41 0 -> /dev/tty1
lrwx------ 1 root root 64 Mar  3 00:41 1 -> /dev/tty1
lrwx------ 1 root root 64 Mar  3 00:41 2 -> /dev/tty1
lr-x------ 1 root root 64 Mar  3 00:41 3 -> /dev/sdb

root@ubuntu:/home/ubuntu# cat /proc/3772/fdinfo/3
pos:    1707980816384
flags:  0140000
mnt_id: 24

root@ubuntu:/home/ubuntu# lsblk -bd /dev/sdb
NAME   MAJ:MIN RM          SIZE RO TYPE MOUNTPOINT
sdb      8:16   0 2000398934016  0 disk 

因此,此次badblocks运行已完成约 85%。

@falconer 的回答(使用iotop)是一种观察其当前速率的好方法,但fdinfo可以显示该计划取得了多少进展。

答案3

除了 iotop,你可能还想看看消息

dmesg -w

在我的例子中,坏块停留在 2.81%,没有 iotop 活动,并且 dsmesg 定期显示以下消息:

[ 7371.945131] INFO: task badblocks:19760 blocked for more than 120 seconds.
[ 7371.945134]       Tainted: G           OE     5.0.0-29-generic #31~18.04.1-Ubuntu
[ 7371.945135] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 7371.945136] badblocks       D    0 19760  19759 0x00000004
[ 7371.945137] Call Trace:
[ 7371.945140]  __schedule+0x2bd/0x850
[ 7371.945141]  schedule+0x2c/0x70
[ 7371.945145]  io_schedule+0x16/0x40
...

不确定我的情况是什么问题但这可能是一个错误?

相关内容