Virtualization 101:
Unraid (it’s using Linux/KVM underneath) will reserve some ram, let’s 8G. It’ll copy a “fake?” UEFI in there, and it’ll run it. KVM (using something called QEMU and virtio) will emulate hardware, so when uefi looks for disks, it’ll get a file or one /two/three partitions or even something that might be ona
network somewhere, or it might compute the contents and substitute it in reply, the guest OS e.g. windows will think and act like it’s talking to real hardware. In reality, software on the host/unraid/kvm/qemu will be processing and translating what the windows/guest os drivers are asking for.
On a real machine, normally, os drivers will normally talk to hardware using memory mapped io. Your GPU will say to your CPU: “Hi, I am a piece of ram between addresss 171TB - 171TB+5GB” and the os drivers running on a cpu will poke/prod/read/write at this memory to get the GPU to do things. Virtualization relies on configuring the cpu to intercept these “fake/not memory” reads and writes, and substitute your own data in there, or process what was written in some other way, that’s what KVM does.
Turns out, these poking and prodding patterns of behavior that work well for software talking to hardware and keep hardware simple, are not the most efficient for letting one piece of software talk to another piece of software. That’s where virtio comes in. The hardware that’s emulated will be of particular virtio brand and model, and the guest os will load a driver for virtio, and it’ll do the network/disk/… poking and prodding a lot more efficiently.
Turns out, sometimes you want to use actual real hardware from your VM directly, with real drivers, and don’t want to translate anything into something it’s not and don’t want to lose any speed either, like your GPU where you want to game on. Well, turns out that much like your CPU pokes/prods at the GPU using fake ram, your GPU will typically poke/prod at real ram to talk to the system. Your GPU needs to think that a piece of ram you’ve reserved for one of your VMs is all the ram there is on that machine, that’s what iommu/vfio do, they setup the memory controller that the GPU would talk to, to translate/map/rewrite/redirect addresses between your pcie cards and actual system ram.
That’s roughly it. You can carve as many pieces of 8GB as you want, run software in there, it’ll think it’s talking to real hardware that can be backed by software, or can be backed by actual real pieces of hardware that can be configured to only see that small piece of the system.
A small part of unraid let’s you deal with setting these things up using a webui in a clicky-clicky way.
In practice, for blue iris you’d use something like remote desktop to reach the windows running in a VM over a real network to unraid machine+emulated network to the VM. That windows would see a single very large disk, that disk would be emulated by some Linux software that unraid will setup for you and you’ll get your reliability and performance and it’ll be backed by actual physical disks. You can carve out more of your virtual disks, for more VMs, or you can resize (increase) existing ones.