故意在Linux中导致IO错误?

故意在Linux中导致IO错误?,第1张

概述无论如何,使用 Linux,故意导致块设备报告I / O错误,或者可能模拟一个用于测试目的? 是的,这是使用设备映射器执行此 *** 作的一种非常合理的方法. 设备映射器可以将块设备重新组合为您选择的新映射/顺序. LVM这样做.它还支持其他目标(有些非常新颖),比如’flakey’来模拟失败的磁盘,而’error’来模拟磁盘的失败区域. 可以构建一个故意在其上有IO黑洞的设备,它将在交叉时报告IO错误. 无论如何,使用 Linux,故意导致块设备报告I / O错误,或者可能模拟一个用于测试目的?解决方法 是的,这是使用设备映射器执行此 *** 作的一种非常合理的方法.

设备映射器可以将块设备重新组合为您选择的新映射/顺序. LVM这样做.它还支持其他目标(有些非常新颖),比如’flakey’来模拟失败的磁盘,而’error’来模拟磁盘的失败区域.

可以构建一个故意在其上有IO黑洞的设备,它将在交叉时报告IO错误.

首先,创建一些虚拟卷以用作目标,并使其可作为块设备进行寻址.

dd if=/dev/zero of=/var/lib/virtualblock.img bs=512 count=1048576losetup /dev/loop0 /var/lib/virtualblock.img

所以,要开始这个创建一个512M文件,它是我们的虚拟块设备的基础,我们将打入一个“洞”.但是还没有洞.如果您使用mkfs.ext4 / dev / loop0,您将获得一个完全有效的文件系统.

所以,让我们使用dmsetup,使用这个块设备 – 将创建一个新的设备,其中有一些洞.
这是一个例子

dmsetup create errdev00 261144 linear /dev/loop0 0261144 5 error261149 787427 linear /dev/loop0 261139

这将创建一个名为“errdev0”的设备(通常在/ dev / mapper中).当你键入dmsetup create errdev0时,它将等待stdin并在^ D输入时结束.

在上面的例子中,我们在循环设备的扇区261144处创建了一个5扇区孔(2.5kb).然后我们继续正常循环设备.

这个脚本将尝试生成一个表,该表将在大约16Mb左右的随机位置放置孔(尽管它非常随机).

#!/bin/bashstart_sector=0good_sector_size=0for sector in {0..1048576}; do    if [[ ${RANDOM} == 0 ]]; then        echo "${start_sector} ${good_sector_size} linear /dev/loop0 ${start_sector}"        echo "${sector} 1 error"        start_sector=$((${sector}+1))        good_sector_size=0    else        good_sector_size=$((${good_sector_size}+1))    fidoneecho "${start_sector} $((${good_sector_size}-1)) linear /dev/loop0 ${start_sector}"

该脚本假设您还创建了一个512Mb设备,并且您的虚拟块设备位于/ dev / loop0上.

您可以将此数据作为表输出到文本文件,并将其传递到dmsetup create errdev0.

创建设备后,您可以像普通的块设备一样开始使用它,首先将其格式化,然后在其上放置文件.在某些时候,您应该遇到一些IO问题,在这些问题中,您会遇到虚拟设备中真正IO漏洞的扇区.

完成后使用dmsetup删除errdev0以删除设备.

如果您希望更容易出现IO错误,可以更频繁地添加孔或更改您创建的孔的大小.注意把错误放在某些部分可能会导致问题从一开始,I.E在32mb进入一个设备你不能写出一个ext通常试图做的超级块,所以格式不会工作..

为了增加乐趣 – 你可以实际上只是losetup然后mkfs.ext4 / dev / loop0并用数据填充它.一旦你有一个很好的工作文件系统,只需卸载文件系统并使用dmsetup添加一些漏洞并重新安装!

总结

以上是内存溢出为你收集整理的故意在Linux中导致I / O错误?全部内容,希望文章能够帮你解决故意在Linux中导致I / O错误?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存