First post here, so please bear with me
I would like to install ONE on a single node and configure a ZFS backend for VMs. The goal is to have separate ZFS volumes for each VM and to be able to make snapshots and clones of them (on top of the obvious performance and security benefits offered by ZFS).
I was able to install OpenNebula using the minione
script, after which I added the OpenNebula ZFS Storage Driver (GitHub - OpenNebula/addon-zfs: ZFS Storage Driver) and followed the configuration steps. So far, so good.
These are some details about the system (hope I have included all of the relevant information):
Components
- CentOS 7.6.1810
- OpenNebula 5.8.1
ZFS
[root@minione01 ~]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zfs4one 34.9G 2.48T 1.94G /var/lib/one/datastores
zfs4one/one-12 8.25G 2.49T 902M -
[...some other unused volumes...]
Datastores
[root@minione01 ~]# onedatastore list
ID NAME SIZE AVAIL CLUSTERS IMAGES TYPE DS TM STAT
100 images 2.5T 99% 0 1 img zfs shared on
0 system 2.5T 100% 0 0 sys - shared on
Details on datastore 100 (images)
[root@minione01 ~]# onedatastore show 100
DATASTORE 100 INFORMATION
ID : 100
NAME : images
USER : oneadmin
GROUP : oneadmin
CLUSTERS : 0
TYPE : IMAGE
DS_MAD : zfs
TM_MAD : shared
BASE PATH : /var/lib/one//datastores/100
DISK_TYPE : BLOCK
STATE : READY
DATASTORE CAPACITY
TOTAL: : 2.5T
FREE: : 2.5T
USED: : 34.9G
LIMIT: : -
PERMISSIONS
OWNER : um-
GROUP : u--
OTHER : ---
DATASTORE TEMPLATE
ALLOW_ORPHANS="NO"
BRIDGE_LIST="localhost"
CLONE_TARGET="SYSTEM"
CLONE_TARGET_SSH="SYSTEM"
CLUSTER="0"
DATASET_NAME="zfs4one"
DISK_TYPE="BLOCK"
DISK_TYPE_SSH="FILE"
DS_MAD="zfs"
LN_TARGET="NONE"
LN_TARGET_SSH="SYSTEM"
RESTRICTED_DIRS="/"
SAFE_DIRS="/var/tmp"
TM_MAD="shared"
TM_MAD_SYSTEM="ssh"
TYPE="IMAGE_DS"
IMAGES
12
Details about image 12
[root@minione01 ~]# oneimage show 12
IMAGE 12 INFORMATION
ID : 12
NAME : CentOS 7 - KVM
USER : oneadmin
GROUP : oneadmin
LOCK : None
DATASTORE : images
TYPE : OS
REGISTER TIME : 05/16 09:11:14
PERSISTENT : No
SOURCE : localhost:zfs4one/one-12
PATH : https://marketplace.opennebula.systems//appliance/4e3b2788-d174-4151-b026-94bb0b987cbb/download/0
SIZE : 8G
STATE : used
RUNNING_VMS : 1
PERMISSIONS
OWNER : um-
GROUP : ---
OTHER : ---
IMAGE TEMPLATE
DEV_PREFIX="vd"
DRIVER="qcow2"
FORMAT="qcow2"
FROM_APP="30"
FROM_APP_MD5="dbc81ae029a17e12e51c0aac3cc5ac4d"
FROM_APP_NAME="CentOS 7 - KVM"
VIRTUAL MACHINES
ID USER GROUP NAME STAT UCPU UMEM HOST TIME
8 oneadmin oneadmin example.com pend 0 0K 0d 23h47
The problem
I could download a VM image from the marketplace just fine (see above), but when I try to instantiate it (VMs > Create Virtual Machine), I get the following error (I am instantiating it as non-persistent):
[one.vm.deploy] Image Datastore does not support transfer mode: shared
The expected behaviour would be as follows:
- The original image gets cloned (via ZFS)
- A new VM is instantiated
I am a bit stuck… the oned.log
does not contain any extra information.
Can anyone please suggest how to debug this error?
Thanks a lot,
Corrado