I literally just did touch image#.img for each one. Is there something else I should do?
This is indeed the problem. The files are 0 bytes, and you cannot seek inside them. You have to make files that actually have a size. It can be a a sparse file if you want:
[/tmp]$ dd if=/dev/zero of=1.img bs=1M count=25 conv=sparse
25+0 records in
25+0 records out
26214400 bytes (26 MB, 25 MiB) copied, 0.00334608 s, 7.8 GB/s
[/tmp]$ dd if=/dev/zero of=2.img bs=1M count=25 conv=sparse
25+0 records in
25+0 records out
26214400 bytes (26 MB, 25 MiB) copied, 0.00347987 s, 7.5 GB/s
[/tmp]$ dd if=/dev/zero of=3.img bs=1M count=25 conv=sparse
25+0 records in
25+0 records out
26214400 bytes (26 MB, 25 MiB) copied, 0.00330069 s, 7.9 GB/s
[/tmp]$ du 1.img
0 1.img
Now I can make loopdevices and assemble array:
[/tmp]$ sudo losetup loop0 1.img
[/tmp]$ sudo losetup loop1 2.img
[/tmp]$ sudo losetup loop2 3.img
[/tmp]$ sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/loop0 /dev/loop1 /dev/loop2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[/tmp]$ sudo mkfs.ext4 /dev/md0
mke2fs 1.42.11 (09-Jul-2014)
Discarding device blocks: done
Creating filesystem with 73728 1k blocks and 18432 inodes
Filesystem UUID: 8123197c-a9aa-434d-9233-103fe20727ed
Superblock backups stored on blocks:
8193, 24577, 40961, 57345
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[/tmp]$ mkdir mnt/
[/tmp]$ sudo mount /dev/md0 mnt/
[/tmp]$ df -h mnt/
Filesystem Size Used Avail Use% Mounted on
/dev/md0 66M 1.3M 60M 3% /tmp/mnt
[/tmp]$ cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 loop2[2] loop1[1] loop0[0]
73728 blocks super 1.2 512k chunks
unused devices: <none>
[/tmp]$ du -h 1.img 2.img 3.img
1.3M 1.img
1.6M 2.img
1.6M 3.img
Sparse files will grow up to the maximum size, as data is written to them. They will not shrink if files inside the filesystem is deleted.
cat /proc/mdstat
say about this error?