当我输入
mdadm --detail /dev/md0
我得到了很多有用的信息,其中大部分我都理解了。但是我也得到了一行这样的信息:
Events : 0.710
数字会发生变化。
我天真地以为一个事件要么发生,要么没发生。我怎么可能只有 0.710 个事件?或者,如果您愿意,为什么“事件”不是整数值?
编辑
在看到下面用户的回答后,我深入研究了一下代码,发现
`#如果 __BYTE_ORDER == __BIG_ENDIAN
144 __u32 events_hi; /* 超级块更新计数的高位 7 */
145 __u32 events_lo; /* 超级块更新计数的低 8 位 */
...
148 #其他
149 __u32 events_lo; /* 7 超级块更新计数的低位 */
150 __u32 events_hi; /* 超级块更新计数的高 8 位 */
...
153 #结束`
因此“事件”是“超级块更新计数”的高位和低位https://raid.wiki.kernel.org/index.php/Superblock
答案1
printf("\n Events : %d.%d\n\n", sb->events_hi, sb->events_lo);
events_hi 和 events_lo 是一个 64 位数字的两个 32 位部分。除非您有超过 2^31 个“事件”,否则您可能只会看到其中一个。
至于它们的意思,我将引用维基页面:
“事件”是指以下情况之一:
- 从“活跃”切换到“清洁”
- 从“清洁”切换到“
- 设备
- 设备是
- 备用设备在重建后替代发生故障的设备
请注意,正常的读/写不是一个事件。
这些对于 RAID0 来说都没有意义,所以 RAID0 上的‘事件’计数器应该是稳定的。
不幸的是,这个数字看起来像小数,但实际上不是。它是一个 64 位数字。我们打印出前 32 位、一个句点,然后打印出后 32 位。也许有一天它会被“修复”……