Difference between revisions of "stoney conductor: VM Backup"
From stoney cloud
[unchecked revision] | [unchecked revision] |
(→Snapshot) |
(→Snapshot) |
||
Line 32: | Line 32: | ||
#** The file <code>/path/to/retain/vm-001.xml</code> contains the XML description of VM <code>vm-001</code> at time T<sub>1</sub> | #** The file <code>/path/to/retain/vm-001.xml</code> contains the XML description of VM <code>vm-001</code> at time T<sub>1</sub> | ||
#** The file <code>/path/to/retain/vm-001.backend</code> contains the backend entry of VM <code>vm-001</code> at time T<sub>1</sub> | #** The file <code>/path/to/retain/vm-001.backend</code> contains the backend entry of VM <code>vm-001</code> at time T<sub>1</sub> | ||
+ | # Move the state file from the RAM-Disk to the retain location (if you used the RAM-Disk to save the VMs state) | ||
+ | #* <syntaxhighlight lang="bash">mv /path/to/ram-disk/vm-001.state /path/to/retain/vm-001.state</syntaxhighlight> | ||
== Merge == | == Merge == |
Revision as of 14:15, 22 October 2013
Overview
This page describes how the VMs and VM-Templates are backed-up inside the stoney cloud.
Basic idea
The main idea to backup a VM or a VM-Template is, to divide the task into three subtasks:
- Snapshot: Save the machines state (CPU, Memory and Disk)
- Merge: Merge the Disk-Snapshot with the live-image
- Retain: Export the snapshot files
A more detailed and technical description for these three sub-processes can be found in the following sub-chapters.
Snapshot
- Create a snapshot with state:
- If the VM
vm-001
is running:- Save the state of VM
vm-001
to the filevm-001.state
(This file can either be created on a RAM-Disk or directly in the retain location. This example however saves the file to a RAM-Disk):virsh save vm-001 /path/to/ram-disk/vm-001.state
- After this command, the VMs CPU and memory state is represented by the file
/path/to/ram-disk/vm-001.state
and the VMvm-001
is shut down.
- Save the state of VM
- If the VM
vm-001
is shut down:- Create a fake state file for the VM:
echo "Machine is not runnung, no state file" > /path/to/ram-disk/vm-001.state
- Create a fake state file for the VM:
- If the VM
- Move the disk image
/path/to/images/vm-001.qcow2
to the retain location:mv /path/to/images/vm-001.qcow2 /path/to/retain/vm-001.qcow2
- Please note: The retain directory (
/path/to/retain/
) has to be on the same partition as the images directory (/path/to/images/
). This will make themv
operation very fast (only renaming the inode). So the downtime (remember the VMvm-001
is shut down) is as short as possible.
- Please note: The retain directory (
- Create the new (empty) disk image with the old as backing store file:
qemu-img create -f qcow2 -b /path/to/retain/vm-001.qcow2 /path/to/images/vm-001.qcow2
-
chmod 660 /path/to/images/vm-001.qcow2
-
- Set correct ownership and permission to the newly created image:
-
chown root:vm-storage /path/to/images/vm-001.qcow2
-
- Save the VMs XML description
- Save the current XML description of VM
vm-001
to a file at the retain location:virsh dumpxml vm-001 > /path/to/retain/vm-001.xml
- Save the current XML description of VM
- Save the backend entry
- There is no generic command to save the backend entry (since the command depends on the backend). Important here is, that the backend entry of the VM
vm-001
is saved to the retain location:/path/to/retain/vm-001.backend
- There is no generic command to save the backend entry (since the command depends on the backend). Important here is, that the backend entry of the VM
- Restore the VMs
vm-001
from its saved state (this will also start the VM):virsh restore /path/to/ram-disk/vm-001.state
- Please note: After this operation the VM
vm-001
is running again (continues where we stopped it), and we have a consistent backup for the VMvm-001
:- The file
/path/to/ram-disk/vm-001.state
contains the CPU and memory state of VMvm-001
at time T1 - The file
/path/to/retain/vm-001.qcow2
contains the disk state of VMvm-001
at time T1 - The file
/path/to/retain/vm-001.xml
contains the XML description of VMvm-001
at time T1 - The file
/path/to/retain/vm-001.backend
contains the backend entry of VMvm-001
at time T1
- The file
- Please note: After this operation the VM
- Move the state file from the RAM-Disk to the retain location (if you used the RAM-Disk to save the VMs state)
-
mv /path/to/ram-disk/vm-001.state /path/to/retain/vm-001.state
-
Merge
- Merge the disk images my-vm.qcow2 and my-vm-snap.qcow2 to a single image:
virsh qemu-monitor-command my-vm --hmp "block_stream drive-virtio-disk0"
.
Retain
- Move the files to the backup location:
- Move the old disk image to the backup location and add the date as suffix to not overwrite older backups:
mv my-vm-backup.qcow2 /path/to/backup/my-vm-backup.qcow2.date
- Move the state file to the backup location and add the date as suffix to not overwrite older backups:
mv my-vm.state /path/to/backup/my-vm.state.date
- Move the old disk image to the backup location and add the date as suffix to not overwrite older backups: