Simulating bad drive blocks with Device Mapper
Say you have a 0.5 MiB (= 1,024 sectors of 512 bytes each) drive at /dev/loop1
and would like to boot it with QEMU while simulating a broken sector at position 256.
You can use dm-error
for this.
Write the following into a file and call it broken-drive.dm
:
0 256 linear /dev/loop0 0
256 1 error
257 767 linear /dev/loop0 257
Alternatively, you can make use of dm-flakey
to simulate a sector that is only sometimes broken, or that does something even worse such as drop any writes made to it. For example:
0 256 linear /dev/loop0 0
256 1 flakey /dev/loop0 256 5 5
257 767 linear /dev/loop0 257
Refer to the documentation of dm-flakey
on how exactly it works and what the parameters are that it expects.
Create a virtual device at /dev/mapper/broken-drive
using dmsetup create
:
dmsetup create broken-drive <broken-drive.dm
You can now use it with QEMU just like any other drive or drive image.