OpenNebula uses backup datastores as storage targets for virtual machine backup images. The datastore object tells the front-end and hypervisor hosts which backup driver to use and where backup data should be transferred, so the OpenNebula definition must match the server that holds the backup storage path.
Registering the datastore from a template file keeps the backup driver and target server explicit. The rsync driver is available for Community Edition environments, stores backup data through SSH access to a backup server, and requires a template with TYPE="BACKUP_DS", DS_MAD="rsync", TM_MAD="-", RSYNC_USER, and RSYNC_HOST.
Begin after the backup server has storage mounted under /var/lib/one/datastores, passwordless SSH works from the front-end and every hypervisor host, and the backup server has rsync plus qemu-img installed. Creating the datastore proves the OpenNebula object exists; scheduling a small backup against it proves OpenNebula can target the storage path.
$ ssh oneadmin@backup01.example.net hostname backup01.example.net
Run this check as the same Unix account that OpenNebula will use for backup transfers, usually oneadmin.
$ ssh oneadmin@backup01.example.net "ls -ld /var/lib/one/datastores" drwxrwxr-x 2 oneadmin oneadmin 4096 Jun 25 09:10 /var/lib/one/datastores
The rsync backup datastore stores VM backup data below this path by datastore ID unless a more specific datastore mount point is prepared.
$ ssh oneadmin@backup01.example.net "rsync --version" rsync version 3.2.7 protocol version 32 ##### snipped #####
$ ssh oneadmin@backup01.example.net "qemu-img --version" qemu-img version 8.2.2
$ vi ds_rsync_backup.txt
NAME = "rsync Backups" TYPE = "BACKUP_DS" DS_MAD = "rsync" TM_MAD = "-" RSYNC_USER = "oneadmin" RSYNC_HOST = "backup01.example.net"
Use a DNS name or IP address that every OpenNebula host can reach. Add BRIDGE_LIST only for shared system datastore layouts where OpenNebula's documented bridge host mode applies, such as Ceph, and ensure each listed host can SSH to both the front-end and backup server.
$ onedatastore create ds_rsync_backup.txt ID: 100
$ onedatastore list ID NAME SIZE AVA CLUSTERS IMAGES TYPE DS TM STAT 100 rsync Backups 1.5T 91% 0 0 bck rsync - on 2 files 19.8G 84% 0 0 fil fs local on 1 default 19.8G 84% 0 1 img fs local on 0 system - - 0 0 sys - local on
The list output should show TYPE as bck, DS as rsync, TM as -, and STAT as on.
$ onedatastore show 100 DATASTORE 100 INFORMATION ID : 100 NAME : rsync Backups TYPE : BACKUP DS_MAD : rsync TM_MAD : - STATE : READY DATASTORE TEMPLATE RSYNC_HOST="backup01.example.net" RSYNC_USER="oneadmin"
$ onevm backup --schedule now -d 100 0 VM 0: backup scheduled at 2026-06-25 09:20:00 +0000
Use a non-production VM for the first backup. If the operation fails before data transfer starts, recheck passwordless SSH from every hypervisor host to backup01.example.net.