Creating RAID arrays on files instead of block devices

What you're looking for is called the loop device. It makes files appears as devices like /dev/loop0 etc. They can then be mounted as filesystems, and should work with md. From the man page loop(4):

The loop device is a block device that maps its data blocks not to a physical device such as a hard disk or optical disk drive, but to the blocks of a regular file in a filesystem or to another block device.

See e.g.

  • https://man7.org/linux/man-pages/man4/loop.4.html
  • https://man7.org/linux/man-pages/man8/losetup.8.html

For testing things that need block devices, LVM might also be useful. It lets you make multiple logical volumes from a single physical partition (or the other way around) and destroying/recreating/resizing the volumes is also much simpler than with disk partitions.


You can do it. Just create a loop device from the file and use that device to create the array:

$ dd if=/dev/zero of=mydev count=80 bs=1M
$ sudo losetup -f mydev

You will have an 80M device ready and you can use it in any context where you would use a block device.

$ sudo losetup -l

Will tell you the current mapping.