Not sure how fast it would be but creating an .img file of 15GB and using it as mounted as storage will do exactly what you want.You can do all the normal things with it like create partitions format them if wanted.
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# fdisk -l ubuntu-20.10-preinstalled-desktop-arm64+raspi.img
Disk ubuntu-20.10-preinstalled-desktop-arm64+raspi.img: 8.15 GiB, 8750736384 bytes, 17091282 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb6b5c3c7
Device Boot Start End Sectors Size Id Type
ubuntu-20.10-preinstalled-desktop-arm64+raspi.img1 * 2048 526335 524288 256M c W95 FAT32
ubuntu-20.10-preinstalled-desktop-arm64+raspi.img2 526336 17091247 16564912 7.9G 83 Linux
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# losetup -P /dev/loop0 ubuntu-20.10-preinstalled-desktop-arm64+raspi.img
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# mkdir /tmp/imgboot
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# mkdir /tmp/imgroot
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# mount /dev/loop0p2 /tmp/imgroot
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# mount /dev/loop0p1 /tmp/imgboot
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# ll /tmp/imgboot/
total 68870
-rwxr-xr-x 1 root root 26530 Oct 22 11:21 bcm2710-rpi-2-b.dtb
-rwxr-xr-x 1 root root 28028 Oct 22 11:21 bcm2710-rpi-3-b.dtb
snip.....
-rwxr-xr-x 1 root root 24222208 Oct 22 11:21 vmlinuz
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# ll /tmp/imgroot/
total 1048660
lrwxrwxrwx 1 root root 7 Oct 22 11:00 bin -> usr/bin
drwxr-xr-x 4 root root 4096 Oct 22 11:12 boot
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# rm -r /tmp/imgroot/*
root@zeus-H370M-DS3H:/home/zeus/qemu_vms# ll /tmp/imgroot/
total 0
You can do pretty much anything you want with them, how fast it would be as I say no clue.