Local Disk for VM 'scratch'


I am wondering what the best practices are around vm disk performance. My current setup is a rather ‘thin’ frontend 1 x ssd(256GB) and 1 hdd (1TB) and 4 hosts 4x4TB. My system images are served via NFS. I am looking to utilize the space on the local disks for vm scratch space. Just need it to live as long as the VMs live on that host and no need to migrate.

I can definitely create a rdm to the devices, but that is going to be a lot of partitioning and keeping up with partition numbers on the host. It seems like there is surely a more elegant solution but I can’t tease it out.



Hi Tony,

It is not clear which version of OpenNebula you are using, and what performance do you need.
It looks like the possible options are from qcow2 files to local LVM volumes. If there is no off-the-shelf solution you can tweak the script for the volatile disks to create local LVM volumes. It depends on the TM_MAD that you are using for the SYSTEM datastore.

Kind Regards


Thanks for the reply. Probably wasn’t as clear as I should have been, sorry.

So my NFS setup works great. I have a new use case for a VM that has some fairly substantial disk io. I know that NFS won’t work for this guy. I don’t have access to more performant shared disk at this time, so I am looking to pass the local disks to the VM. I am not clear how to proceed. My first attempt was doing a raw device map to /dev/sdc on the host. This worked and supported the IO that I was needing. It just seemed like this was clunky, and I wondered if there might be a better way of achieving the result.


As Anton suggested you can create a new image and system datastore of type
SSH. Those will use local disk, you can opt for qow2 image format or raw
image format, probably the later will give you better I/O but you need to
run a couple of benchmarks. The only pitfall here is mount points, you want
the ssh datastores out of your NFS shares so be careful if you are
exporting/mount the whole /var/lib/one/datastores.

Block based datastores will give you more performance like the raw device
mapping or LVM but they may involve more planning…

If I do a SSH datastore, is the front end required to have the same amount of space available? So, if I ultimately want 1 TiB on the host, but only have 200 GiB on the front end, does that matter?

Only if you use the undeploy/stop operations, those moves the images from
the host, otherwise you should be fine.