This Quick Guide presents the Bacula RHEV/oVirt Backup Plugin operational procedures for Enterprise Bacula version 10 and above.
The plugin provides clientless automated Virtual Machines image level backup, restore and granular file-level extraction. It also supports LAN Free backups.
The Red Hat Virtualization allows 2 different connection modes and both can be used by the Bacula Plugin: OAuth and HTTP Basic Authentication. For more information refer to https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.1/html/rest_api_guide/documents-002_authentication_and_security#authentication.
The Red Hat Virtualization plugin is a File Daemon plugin. It is based on Java SDK, therefore is non-machine dependent and is compatible with any Operative System where the Bacula File Daemon can run and the Java Virtual Machine is available.
Create a yum/apt repo according to the exclusive Enterprise Bacula repository RHEV plugin path, or download and install the package in a machine with a working Bacula Client. E.g.:
rpm -ivh bacula-enterprise-rhv-plugin-10.2.3.el7.x86_64.rpm
The Java Virtual Machine in an 8 version or greater is required and installed as a dependency.
Restart the bacula-fd service in order to load the plugin library.
VM Disks Preparation
In order to allow correct disks download during the backup processes, and due to an existing bug of RHEV (https://bugzilla.redhat.com/show_bug.cgi?id=1538814), the following configurations must be set:
For RHEV 4.1 (Compatible with RHEV 4.2)
Access the RHEV database PostgreSQL console. E.g.:
su postgres psql -U postgres -d engine UPDATE vdc_options SET option_value=999999 WHERE option_name='ImageTransferClientTicketValidityInSeconds';
For RHEV 4.2
Access the RHEV/oVirt manager machine shell.
engine-config --set ImageTransferClientTicketValidityInSeconds=999999
Certificate and TrustStore
Still at the Client Machine, generate the truststore that allows the Plugin to connect with the RHVM, as follows:
curl -o /root/rhvm.cer http://ovirtman/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA
Generate a password for the truststore certificate. Replace the Java Home Path if necessary.
keytool -import -alias "rhev truststore" -file /root/rhvm.cer -keystore /usr/lib/jvm/java-1.8.0-openjdk-22.214.171.124-0.b14.el7_4.x86_64/jre/lib/security/cacerts
It will ask for a password, the default value is: “changeit”.
RHEV Backup User
It is possible to use the ‘admin’ user for the plugin, or a user with restricted permissions. Read the referenced whitepaper for more details.
It is possible to use the Bacula Plugin directly to test the prior configurations and even list RHEV datacenters, templates, storage_domains, hosts, disks and others, as in the following example:
java -jar /opt/bacula/lib/rhvPlugin.jar --server=ovirtman --truststore_file=/usr/lib/jvm/java-1.8.0-openjdk-126.96.36.199-8.b10.el7_5.x86_64/jre/lib/security/cacerts --truststore_password=changeit --auth=http --profile=internal --user=admin --password=xxx --operation=list --list_datacenters
Create a new FileSet. All the Plugin options can be set at the bweb Bacula graphical interface Include – Plugin Options.
This example will backup all VMs from an RHEV Datacenter. The very same configuration is written below for easy copying and pasting.
rhv: server=rhv.example.com password=rhvpass123
It is also possible to select one or more VMs for backup using their name. Multiple plugin configuration lines can be used for different machines selection.
rhv: server=rhv.example.com password=rhvpass123 target_virtualmachine=vmExample
It is possible to exclude a VM disk from backup adding the following directive. Multiple disks ID can be listed between commas (,):
A regular expression can be used to select multiple VMs by name, and specific VMs can be excluded from backups:
Fetch the referenced Whitepaper for a full list and description of available backup options.
It is also possible to use all the mentioned Plugin options in a configuration file (e.g. /opt/bacula/etc/rhev.conf):
server=192.168.0.50 user=admin password=xxx truststore_file=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/cacerts/rhvm.truststore truststore_password=changeit target_datacenters=myDatacenter operation=backup abort_on_error=0
Just call the configuration file from the bweb FileSet Plugin options.
Save the new FileSet.
Create an ordinary Bacula backup Job, associating it to the RHEV machine File Daemon and the newly created FileSet.
Apply changes and run a test backup Job.
In order to restore a machine directly to RHEV, use the where=/ (origin) restore option and mark the whole VM backup directory for restoration (e.g. @rhev/vmname/).
In order to restore the VM XML configuration and disks to a filesystem, change the where= to the desired restoration directory (e.g. where=/tmp).
From a restored disk, it is possible to mount it and extract one or several files for granular restore using the guestfish package. E.g.
guestmount -a [image.img] -i --ro [/path/to/mount]
Red Hat Virtualization Plugin – http://baculasystems.com