2

查看存储阵列的 IO 延迟数据。当驱动器即将发生故障时,一个迹象是 IO 操作“完成时间”增加。数组好心地以这种格式提供这些数据:

     Time                           Disk Channels
    seconds   A      B      C      D      E      F      G      H      P      S
      0.017 5e98bd 64008b 62a559 68eb45 676ccf 5d3a86 46242b 62dd2e 6976c9 6da51f
      0.033 1e821c 1be769 1c372a 185134 19a2c2 21802c 2fa2ba 1d91c4 17b3ca 14cea6
      0.050  6638e  3a93b  4b19f  258aa  28b64  4d3ae  d92dc  32899  26a5b  1290d
      0.067   2df3   1c17   1f1b   180f   1291   1f05   5201   15f4   1856   10d8
      0.083    365    293    2b9    296    269    291    3c4    26f    2ae    25d
      0.100     ce     ae     94     aa     92     86     ce     81     9f     91
    ...

(时间迭代最多 2.00 秒,计数为十六进制)。

左列是 IO 完成的时间,其他列是针对给定主轴在该时间内完成的 IO 计数。

当驱动器即将发生故障时,该驱动器的“尾部”会明显“变宽”......大多数驱动器的 IO 数量很少 > 0.2 秒,故障驱动器可能会在 0.2 秒内获得大量 IO。例子 :

    Time Disk channels
    seconds    A      B      C      D      E      F      G      H      P      S
    ...
    0.200      4    52d      2      7      3      2      1      6      1      8
    0.217      2    2a6      0      1      0      0      1      4      0      1
    0.233      0    1a1      0      1      0      0      0      1      1      0
    0.250      0     cb      0      1      0      0      1      1      0      1
    0.267      0     73      0      0      0      0      0      0      0      0
    0.283      0     44      0      0      0      0      0      0      0      0
    0.300      0     2d      0      0      0      0      0      0      0      0
    ...

我可以在 0.2 秒内查找超过 10 个 IO,但我正在寻找一个可以更准确地识别故障的数学模型。我的第一个想法是计算每列的方差……任何一组方差太大的驱动器都会标记违规者。但是,这会错误地标记驱动器行为正常:

    min variance is 0.0000437, max is 0.0001250.  <== a good set of drives
    min variance is 0.0000758, max is 0.0000939.  <== a set with one bad drive.

还有其他想法吗?

(这应该在 math.stackexchange.com 上而不是 stackoverflow 上吗?)

4

1 回答 1

0

这只是一个建议,不涉及任何数学严谨性,但您能否将数据集缩减为仅包含 > 0.2 秒的操作。然后使用该数据集简单地计算每个驱动器的总计数 > 0.2 并计算出每个驱动器的总数比例。然后,如果您将这些比例相互(以及总数)进行比较,您应该能够识别出故障驱动器。例如,如果只有一个驱动器发生故障,它与其他驱动器的比率应该非常高,其值将略低于 100%(基于您上面的示例数据)。同样,如果有 2 个驱动器发生故障,则其他驱动器的比例应该非常小,而 2 个驱动器发生故障的比例将略低于 50%。

如果您正在寻找更严格的统计数据,可能值得一看 Kruskal-Wallis http://en.wikipedia.org/wiki/Kruskal%E2%80%93Wallis_one-way_analysis_of_variance,它用于测试是否有多个样本来自相同的统计分布。我提到这一点的原因是因为每个磁盘样本显然不是正态分布的,而且 Kruskal-Wallis 不需要正态性。它可能不适合,但可能是一个有用的起点,可以为您的数据研究正确的统计测试,或者直到您找到统计专家。

于 2012-11-10T10:41:28.173 回答