Is Unraid the right thing for me?


Recommended Posts

Hi everyone,

 

I am trying to figure out whether or not unraid is the right tool to fulfill my requirements. Currently I use a natively installed windows 10 which I use for leisure activities (gaming, browsing, etc). I also have virtual box installed with a bunch of linux VMs which I use for work (mostly programming). There are two reasons I use linux VMs for work. The first being that linux is nicer for programming, the second being that I like to keep things separated as much as possible. However, VM performance kind of sucks which makes heavy tasks such as machine learning a pain. My solution for that is to use windows for such tasks but then work and other stuff starts mixing again which I would like to avoid.

 

So my idea for an unraid system would be to have a CPU with a high core count and two GPUs (a high end one and a mid range one). The idea would then be to have the ability to flexibly assign cores and GPUs to different VMs depending on what I currently need. So lets say I want to train some neural network on the high end GPU and play some (CPU heavy) game while waiting. I would then start the linux VM with the NN with the high end GPU and just a few cores and also start a windows VM with the mid range GPU and the rest of the CPU. This should in theory let me do both things simultaneously without too much interference, right? 

 

Now that you hopefully understand how I plan on using the system on to some more concrete questions.

1. Do you have an easier solution for my requirements?

2. Will unraid let me easily assign different resources to a VM before it is started?

3. Will linux / windows complain if they get assigned different GPUs (or no GPU at all) every time they are started? Let's assume I only have Nvidia GPUs.

4. Is it possible to save the data for each VM on a large (and redundant) HDD and then load it onto an SSD once it is started? In other words basically use the SSD as a cache?

5. How good is remote desktop performance between two VMs? In case it is bad is there any other easy way to use multiple VMs with the same peripherals at the same time?

 

If you read through all of the above thank you for your time! 

 

 

Link to comment

I'm exactly 30 days into the trial

 

1. ESXi. But esxi free is limited to 8 cores per VM, and for the life of me I just can't get nvidia GPUs to passthrough. With unraid it was super easy (as long as I use an older driver, the same with AMD apparently due to the bug in their control panel)

2. easily not really. but easy enough. once you understand how it's rather easy. I just changed the boot line into

 

label Unraid OS
  menu default
  kernel /bzimage
  append vfio-pci.ids=8086:150e,1106:3483 initrd=/bzroot kvm_intel.nested=1

with 8086:150e being my quad port gigabit for example.

3. Refer #1 but no they won't by default without any GPU it'll auto assign an emulated monitor via web-based VNC.

4. I believe if you assign the SSD as cache it'll auto load the files into that.

5. don't think so. only way that I know and currently use is 1 windows VM, with multiple (nested) windows VM via hyper-v and remotefx (1GB of GPU ram per VM). enable RDP, enable remotefx rendering in the windows host's (and the nested VMs' group policy) and use RDP client's connected USB device with the connected VM.

Link to comment

It's not exactly a common use-case, but I'm pretty sure it can be done.

 

To answer your questions:

1: Nothing cheap.

2: Yes. It's trivial to change CPU/memory, etc. GPU is a little trickier, but still simple.

3: They might, yes. NVIDIA's drivers are unified (mostly), so assuming you're using two relatively recent GPUs, in theory you should just be able to reboot it, and everything will come up as you'd expect.

4: It's not natively done like that, but you can.

5: It's remote desktop. You won't be playing games with it, but it's fine for programming.

 

Notes:

1: As C-Fu mentioned, ESXi is an option, but the free version has limitations, and it's hardware passthrough can be pretty damn picky.

More generally, have you considered just using WSL? If you're gaming on Windows anyway, why not use the Linux subsystem for programming in terminal?

4: By default, you'd pick a location for the vDisk to be installed, and that would be that. If the only reason you want the VM's disks on the HDD is for redundancy, then I'd suggest buying a second SSD and making a cache pool. That's what people usually do when running VMs/Docker on cache. 

If there's some other reason you want them on HDD when inactive, then you could create the VM on SSD, and have a script manually move the VD to HDD on shutdown, and move it back to SSD before startup. This means you wouldn't be able to use the GUI to start the VM, but it would accomplish what you want.

Link to comment

Thank you very much for the replies!

 

Daedalus asked why I do not want to use the Linux subsystem for programming. I do have experience using this and it works quite well. However, the whole reason why I'm looking into unraid is that I would like to separate things as much as possible. That means that I do not want to use the same OS for gaming as I do for work. 

About question 4. If I install a VM directly onto an SSD do I need to give it it's own fixed size partition or is unraid able to give a VM more size when needed? So could I just install a couple of SSDs and then put as many VMs on them as I want and unraid will handle the exact allocation for me?

 

From what I have heard so far it does sound like unraid might be the thing I am looking for. Since I'd be buying a whole new setup to use with unraid I wanted to ask if there is anything I need to pay attention to when buying hardware? I know that for the PCIe passthrough my CPU and my mainboard need to support IOMMU passthrough. I think most modern CPUs (AMD and Intel) and mainboards support this, right? Is there anything else I need to look out for?

Link to comment

When you create a VM, you specify the size and location for its primary vDisk.

You can allocate as many other VDs as you like to a VM during setup, or after the fact.

VDs can be in any location. Array, cache, unassigned devices. It makes no difference.

You can resize VDs as well (this must be done through CLI), though you must also resize the VDs on the OS-level as well, obviously.

Disks are thin-provisioned. (they use as much space as required to hold the data they have, and balloon up to the specified size)

You can, if you prefer, pass through an entire disk to be used exclusively by a VM as well.

Edited by -Daedalus
Link to comment

Answers in green.

1. Do you have an easier solution for my requirements?

There are many solutions out there. ESXi would be a popular alternative given you are not after Unraid NAS capability. Even popular Linux server distro e.g. Ubuntu server can do it with the right packages.

Unraid has 30-day trial so you can test out full functionality, unlike ESXi though so perhaps that may entice you to give it a try to see if it works.

 

2. Will unraid let me easily assign different resources to a VM before it is started?

Yes. Most things can be configured in the GUI.

 

3. Will linux / windows complain if they get assigned different GPUs (or no GPU at all) every time they are started? Let's assume I only have Nvidia GPUs.

Not at all, with caveat.

Caveat 1: I can only speak from my own experience with the GPUs I have.

Caveat 2: Nvidia driver, under the right circumstances, can detect that you are running a GTX card in a VM. It will then refuse to load (in the hope that it would force users to buy an expensive Quadro card). To reduce this risk:

  1. Boot Unraid in legacy mode to prevent UEFI messing about with PCIe devices.
  2. Have a dedicated GPU for Unraid (a cheap one will suffice) + have a motherboard that allows you to pick which slot as primary (i.e. use for Unraid to boot).
  3. Turn off Hyper V

 

4. Is it possible to save the data for each VM on a large (and redundant) HDD and then load it onto an SSD once it is started? In other words basically use the SSD as a cache?

If you are after smart read cache then no.

If you are after a manual scripted approach then sort of yes but it's pointless, the wait time to start a VM would be prohibitive.

If you are just after a way to backup your VM vdisk to array then it can be done using bash script (and CA User Script plugin).

 

5. How good is remote desktop performance between two VMs? In case it is bad is there any other easy way to use multiple VMs with the same peripherals at the same time?

It depends on what you mean by "good". I have used RDP, VNC Viewer, NoMachine and have never found any to be limiting.

"any other easy way to use multiple VMs with the same peripherals at the same time" - Synergy

 

 

 

 

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.