dm-flakey

该目标与线性目标相同,但它会周期性地表现出不稳定的行为。在测试中模拟故障设备时,这被发现非常有用。

从表加载时开始,设备可用 <up interval> 秒,然后表现出不稳定行为 <down interval> 秒,之后此循环重复。

此外,也可以考虑将其与 dm-delay 目标结合使用,dm-delay 目标可以延迟读写操作和/或将其发送到不同的底层设备。

表参数

<dev path> <offset> <up interval> <down interval> \
  [<num_features> [<feature arguments>]]

强制参数

<dev path>

底层块设备的完整路径名,或“主:次”设备号。

<offset>

设备内的起始扇区。

<up interval>

设备可用的秒数。

<down interval>

设备返回错误的秒数。

可选功能参数

如果没有功能参数,在不可靠期间,所有 I/O 都将返回错误。

error_reads

所有读 I/O 均以错误信号失败。写 I/O 处理正常。

drop_writes

所有写 I/O 被静默忽略。读 I/O 处理正常。

error_writes

所有写 I/O 均以错误信号失败。读 I/O 处理正常。

corrupt_bio_byte <Nth_byte> <direction> <value> <flags>

在 <down interval> 期间,将每个匹配 bio 的数据中的第 <Nth_byte> 个字节替换为 <value>。

<Nth_byte>

要替换字节的偏移量。计数从 1 开始,以替换第一个字节。

<direction>

‘r’ 表示破坏读操作,‘w’ 表示破坏写操作。‘w’ 与 drop_writes 不兼容。

<value>

要写入的值(0-255 之间)。

<flags>

仅当 bio->bi_opf 设置了所有选定的标志时才执行替换。

random_read_corrupt <probability>

在 <down interval> 期间,将读 bio 中的随机字节替换为随机值。probability 是一个介于 0 和 1000000000 之间的整数,表示 0% 到 100% 的损坏概率。

random_write_corrupt <probability>

在 <down interval> 期间,将写 bio 中的随机字节替换为随机值。probability 是一个介于 0 和 1000000000 之间的整数,表示 0% 到 100% 的损坏概率。

示例

将读 bio 的第 32 个字节替换为值 1

corrupt_bio_byte 32 r 1 0

将 REQ_META (=32) bio 的第 224 个字节替换为值 0

corrupt_bio_byte 224 w 0 32