Multi-tiered local storage for VMs


I’m running OpenNebula 6.4 installed via minione as front-end coupled with two Dell servers running Rocky Linux 8.6 with KVM as hypervisor, installed via the official AlmaLinux OpenNebula repository following the official docs.

I’m trying to deploy a VM using local storage using the ssh transfer driver configuration but would like to place:

  • the OS disk on a slower (hdd) datastore
  • the data disk on a faster (ssd) datastore

On the frontend I’ve created a cluster together with:

  • a datastore for the slow disks
  • another one for the fast disks

On the hypervisors I’ve mounted the slow & fast disks under their respective /var/lib/one/datastores/<ID> paths.

I’ve downloaded the OpenNebula Marketplace Alpine Linux 3.15 image and launched a VM with a single OS disk pointing to the slow datastore.
Upon launch I tried adding a new data disk but found I couldn’t point to another datastore.
Doing the reverse also works i.e., placing the VM on the fast datastore, so I am sure both datastores are working fine.

I’ve tried various scenarios like:

  • specifying both datastores during VM deployment under Deploy VM in a specific Datastore and later trying to attach another disk from the secondary datastore
  • creating a DATABLOCK image in the image datastore and trying to attach it thru the Storage tab of the new VM as Image
  • creating a new volatile image hoping I’ll be able to specify its location

I also searched the forums for information for similar scenarios but couldn’t find anything relevant except for this thread; the path to fixing the issue unfortunately doesn’t match my scenario.

So my question is: is it possible to use OpenNebula-managed KVM hypervisors with Local Storage while splitting the OS and data disks of a VM on different datastores?

Thank you

i have similar problem. I was tried add disk from another DS via pyone and this way is also wrong.

Hello, any information about it? I think multiple DS in one VM will be very useful.

Hi @rdziwinski :wave:

You can use images from different datastores in a single virtual machine, but you need the IMAGE and SYSTEM datastore to use the same TM_MAD for each disk.

Hey, Victor,

Thanks for the insight; my initial question was whether placing a VMs disks on multiple datastores is possible.

Am I correct in understanding that what you are saying is: that you are able to pull a VMs disks from different image datastores; however, said VMs disks will be placed on the same system datastore?


Hi @spa90,

Let me explain better.

You can have different disks of different datastores in a virtual machine, the only exception is that each disk must share the same type of TM_MAD for its IMAGE and SYSTEM datastore.

So, let’s assume the following. You have a VM with this configuration:

  • A first disk coming from an SSH IMAGE datastore.
  • A second disk coming from an LVM IMAGE datastore.

For both cases, on the host where you are going to deploy the VM, you need to have configured an SSH SYSTEM datastore and an LVM SYSTEM datastore. Otherwise, it will not work properly. Note also that using different datastores within the same virtual machine greatly limits the operations to be performed on it. In this case for example, even if you have a disk in an LVM SYSTEM datastore, you will not be able to migrate the machine in case of Host error because the other disk in the SSH SYSTEM datastore will not allow it.

You can read more about the differences between SYSTEM and IMAGE datastore here.