是什么在磨损我的硬盘?我该如何阻止它?

是什么在磨损我的硬盘?我该如何阻止它?

一直有什么东西在磨损我的硬盘(每秒几KB),但我似乎不知道是什么。

我的配置:4个旋转盘片(/dev/sd[cdef])组装成一个raid5阵列,然后bcache设置为缓存(希望)所有内容(cache_mode = writeback,sequential_cutoff = 0)。在 bcache 卷之上,我设置了 lvm。

sda 和 sdb 是 SSD。 sdc、sdd、sde 和 sdf 是旋转磁盘,是 mdadm -> bcache -> lvm -> dm-* 的基础。

所以,这是(第二次打印)的输出iostat -x -d 30

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00     0,77    0,97    0,77    12,40     6,13    21,38     0,00    0,23    0,00    0,52   0,23   0,04
sdb               0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
sdc               0,03     1,60    0,13    4,50     0,67    17,63     7,90     0,05   11,54   15,00   11,44  11,17   5,17
sdd               1,60     0,30    0,43    4,83     8,13    13,77     8,32     0,06   11,27    0,00   12,28  11,04   5,81
sde               1,63     0,00    0,57    4,07     8,80     9,50     7,90     0,05   10,99    0,47   12,46  10,73   4,97
sdf               0,00     1,90    0,00    5,27     0,00    21,90     8,32     0,04    8,53    0,00    8,53   8,35   4,40
md0               0,00     0,00    0,00    0,97     0,00    12,40    25,66     0,00    0,00    0,00    0,00   0,00   0,00
bcache0           0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-0              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-1              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-2              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-4              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-5              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-6              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-7              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-9              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00

在这个 iostat 输出中让我感到奇怪的是 bcache 根本没有被触及,因此我假设逻辑卷上没有活动。

iotop对这个主题也没有提及:没有报告在磁盘上运行的应用程序,所以它一定是一些系统守护进程/服务。

md0卷看到一些活动,但这怎么可能,因为逻辑卷上没有任何写入。好像bcache是做一些维护工作什么的?但每一秒???

最后,sdc - sdf 上的一些活动与 md0 上的活动并不真正匹配。它在所有磁盘上也不对称,所以我认为它甚至不是基于 mdadm 的。

编辑:根据 meuh 的建议,iosnoop输出如下:

Tracing block I/O. Ctrl-C to end.
COMM         PID    TYPE DEV      BLOCK        BYTES     LATms
md0_raid5    281    FFS  8,80     18446744073709551615 0          0.04
md0_raid5    281    FFS  8,32     18446744073709551615 0          0.11
md0_raid5    281    FFS  8,64     18446744073709551615 0          0.10
md0_raid5    281    FFS  8,48     18446744073709551615 0          0.10
<idle>       0      WS   8,80     16           4096       0.08
kworker/3:1H 276    WS   8,32     16           4096       0.10
kworker/3:1H 276    WS   8,64     16           4096       0.10
kworker/3:1H 276    WS   8,48     16           4096       0.09
<idle>       0      FFS  8,80     18446744073709551615 0          8.45
<idle>       0      FFS  8,64     18446744073709551615 0         17.42
<idle>       0      FFS  8,32     18446744073709551615 0         19.36
<idle>       0      FFS  8,48     18446744073709551615 0         20.68
md0_raid5    281    FFS  8,32     18446744073709551615 0          0.11
md0_raid5    281    FFS  8,80     18446744073709551615 0          0.10
md0_raid5    281    FFS  8,64     18446744073709551615 0          0.13
md0_raid5    281    FFS  8,48     18446744073709551615 0          0.14
<idle>       0      WS   8,80     8            512        0.06
<idle>       0      WS   8,32     8            512        0.10
<idle>       0      WS   8,64     8            512        0.08
ksoftirqd/3  28     WS   8,48     8            512        0.08
cat          14719  FFS  8,80     18446744073709551615 0         12.42
cat          14719  FFS  8,64     18446744073709551615 0         17.27
cat          14719  FFS  8,32     18446744073709551615 0         19.21
cat          14719  FFS  8,48     18446744073709551615 0         20.52

这里列出的所有设备都是旋转盘片。

Edit2:根据frostschutz的建议,这是启用block_dump后从系统日志中摘录的内容

[40723.578347] md0_raid5(281): WRITE block 8 on sdc (1 sectors)
[40723.578359] md0_raid5(281): WRITE block 8 on sde (1 sectors)
[40723.578363] md0_raid5(281): WRITE block 8 on sdd (1 sectors)
[40723.578367] md0_raid5(281): WRITE block 8 on sdf (1 sectors)
[40723.824546] md0_raid5(281): WRITE block 16 on sdc (8 sectors)
[40723.824560] md0_raid5(281): WRITE block 16 on sde (8 sectors)
[40723.824566] md0_raid5(281): WRITE block 16 on sdd (8 sectors)
[40723.824570] md0_raid5(281): WRITE block 16 on sdf (8 sectors)

所以看来mdadm罪魁祸首是不断写入(大概)超级块偏移量?

进一步调查证实了这一点:mdadm -E /dev/sdc每秒报告不同的校验和。事件计数通常保持固定,但如果我足够频繁地重新检查驱动器,状态会时不时地从“干净”变为“活动”,并且在此类检查期间,事件计数比其他情况高一。

那么,是否有关于发生的事情的逻辑解释,或者我可以做些什么来更深入地了解我的磁盘发生的情况?

答案1

感谢 meuh &frostschutz 我能够识别出有问题的过程。 mdadm 似乎正在阵列上执行一些同步后操作(几天前我在 RAID-5 阵列中更换了一个驱动器)。

事实上,在更换驱动器几天后,它已经停止了。有趣的是,它会这样做,因为唯一的 I/O 是写入超级块区域。我想只有通过查看代码才能提供权威的答案,而我目前没有资格这样做。

编辑:我刚刚将几个 10GB 的数据复制到阵列中,然后研磨又开始了。所以它不是后同步,而是后任意写入......

相关内容