Changes

Jump to: navigation, search

stoney conductor: prov-backup-kvm

947 bytes added, 14:39, 27 June 2014
/* createSnapshot */
= Workflow =
== Backup ==This is the simplified workflow for the Provisioning-Backup-KVM Daemon. The Subroutines (snapshotcreate-, merge export- and retaincommitSnapshot) are shown later.
[[File:KVM-Backup-Workflow.png|thumb|none|400px650px|Figure 1: Simplified prov-backup-kvm workflow]]
You can modify/update this workflow by editing [[File:KVM-Backup-simple.xmi]] (you may need [http://uml.sourceforge.net/ Umbrello UML Modeller] diagram programme for KDE to display the content properly).
== Snapshot = createSnapshot ===[[File:KVM-Backup-Workflow-Snapshot.png|thumb|none|500px650px|Figure 2: Detailed workflow for the snaphshot createsSnaphshot process]]
You can edit this workflow with the following file (you may need umbrello to modify it): [[File:KVM-Backup-Workflow-detailed.xmi]]
See also: [[stoney_conductor:_Backup#createSnapshot | createSnapshot: Basic idea]] == Merge = exportSnapshot ===[[File:KVM-Backup-Workflow-Merge.png|thumb|none|500px|Figure 2: Detailed workflow for the merge exportSnapshot process]]
You can edit this workflow with the following file (you may need umbrello to modify it): [[File:KVM-Backup-Workflow-detailed.xmi]]
See also: [[ stoney_conductor:_Backup#exportSnapshot | exportSnapshot: Basic idea]] == Retain = commitSnapshot ===[[File:KVM-Backup-Workflow-Retain.png|thumb|none|500px|Figure 3: Detailed workflow for the retain commitSnapshot process]]
You can edit this workflow with the following file (you may need umbrello to modify it): [[File:KVM-Backup-Workflow-detailed.xmi]]
 
See also [[stoney_conductor:_Backup#commitSnaphsot | commitSnapshot: Basic idea]]
 
== Restore ==
''' Restore is currently not implemented '''
= Configuration =
== Backend ==
''' Currently the backend configuration is not active. If it is active it will be (maybe some minor modifications) as the following: '''
 
In the backend, you need to have at least one configuration which applies for the whole stoney cloud. This configuration is referenced in the [[#Global|global configuration]]. You are able to overwrite the stoney-cloud-wide configuration for
* A VM-Pool
# The stoney-cloud-wide configuration applies
The backend=== Mandatory Configuration-configuration must contain the following parametersParameters ===* '''sstBackupNumberOfIterations''':An integer value how many backup iterations should be kept. Default is 1 (for disaster recovery).* '''sstBackupRootDirectory''': The path to the backup root directory where all iterations of disk-images and state files are stored. Default is file:///var/backup/virtualization.* '''sstBackupRetainDirectory''': The path to the local retain directory where the temporary snapshots (disk-image and state file) are stored. Default is file:///var/virtualization/retain.* '''sstRestoreVMWithoutState''': Boolean value which indicates whether or not to restore a virtual machine without the state. Default is FALSE (most often we want to restore the state together with the virtual machine).* '''sstBackupRamDiskLocation''': Path to the RAM-Disk. Default is /mnt/ramdisk. Because this attribute can be set for the whole FOSS-Cloud, for a specific VM-Pool, for a specific virtual machine or a specific virtual machine template, this attribute is independent from the VM-Nodes. There for no guarantee can be given, that this RAM-Disk exists on all the VM-Nodes. A check for its existence is mandatory!* '''sstVirtualizationVirtualMachineForceStart''': Force start VM in the case of not being able to restore the VM State during the backup process. TRUE or FALSE, default is FALSE. Attention: If set to TRUE, this could lead to file system inconsistencies in the virtual machine.* '''sstVirtualizationBandwidthMerge''': Bandwidth of the disk merging process (specifies the maximum I/O rate to allow in Megabyte/s). Default is 0 (unlimited). Integer Attribute, single value.* '''sstVirtualizationDiskImageFormat''': The format for the new disk image that is created during the backup process. Default is qcow2.* '''sstVirtualizationDiskImageOwner''': The owner for the new disk image that is created during the backup process. Default is root.* '''sstVirtualizationDiskImageGroup''' : The group for the new disk image that is created during the backup process. Default is vm-storage.* '''sstVirtualizationDiskImagePermission''': The permission (in octal representation) for the new disk image that is created during the backup process. Default is 660 (equivalent to 0660).* '''sstVirtualizationDiskImageDirectoryOwner''': The owner for the new directory where the disk image is located. Default is root.* '''sstVirtualizationDiskImageDirectoryGroup''': The group for the new directory where the disk image is located. Default is vm-storage.* '''sstVirtualizationDiskImageDirectoryPermission''': The permission (in octal representation) for the new directory where the disk image is located. Default is 770 (equivalent to 0770). === Optional Configuration-Parameters ===* sstBackupNumberOfIterations'''sstBackupExcludeFromBackup''': Do we want to exclude a virtual machine from the default backup plan? Default is FALSE.* sstVirtualizationVirtualMachineForceStart'''sstVirtualizationVirtualMachineSequenceStop''': Multiple dependencies for the stopping order can be defined. Example: a web VM depends on the corresponding database VM. IA5String, multi valued. This attribute must exist in all of the virtual machine entries, that are to be stopped in a certain order. Example (0,1,2, ... is the order, UUID1, UUID2, ... is the uuid of a virtual machine):* sstVirtualizationBandwidthMerge* 0: UUID1** 1: UUID2** 2: UUID3* '''sstVirtualizationVirtualMachineSequenceStart''': Multiple dependencies for the starting order can be defined. Example: a database VM must be started before the corresponding web VM. IA5String, multi valued. This attribute must exist in all of the virtual machine entries, that are to be started in a certain order. Example (0,1,2, ... is the order, UUID1, UUID2, ... is the uuid of a virtual machine):** 0: UUID3** 1: UUID2** 2: UUID1
= Exit codes =
The following list defines the return codes and their meaning for the KVM-Backup script see also [https://github.com/stepping-stone/prov-backup-kvm/blob/master/lib/Provisioning/Backup/KVM/Constants.pm KVMConstants.pm]:
<pre>
use constant { SUCCESS_CODE => 0; ### Error codes constants,use constant UNDEFINED_ERROR ERROR_CODE => 1; # Always the first!,use constant MISSING_PARAMETER_IN_CONFIG_FILE => 2; use constant CONFIGURED_RAM_DISK_IS_NOT_VALUD TRUE => 3;1,use constant NOT_ENOUGH_SPACE_ON_RAM_DISK FALSE => 4;0,use constant CANNOT_SAVE_MACHINE_STATE => 5; use constant CANNOT_WRITE_TO_BACKUP_LOCATION => 6; # Specific error codesuse constant CANNOT_COPY_FILE_TO_BACKUP_LOCATION TEMPLATE_NOT_READABLE => 7;101,use constant CANNOT_COPY_IMAGE_TO_BACKUP_LOCATION NO_MACHINE => 8;102,use constant CANNOT_COPY_XML_TO_BACKUP_LOCATION NO_XML_DESCRIPTION => 9;103,use constant CANNOT_COPY_BACKEND_FILE_TO_BACKUP_LOCATION CANNOT_CREATE_SNAPSHOT => 10;104,use constant CANNOT_MERGE_DISK_IMAGES NO_STATE_INFORMATION => 11;105,use constant CANNOT_REMOVE_OLD_DISK_IMAGE CANNOT_START_MACHINE => 12;106,use constant CANNOT_REMOVE_FILE NO_BACKUP_LOCATION => 13;107,use constant CANNOT_CREATE_EMPTY_DISK_IMAGE UNCONSISTENT_BACKUP => 15;108,use constant CANNOT_RENAME_DISK_IMAGE CANNOT_GET_SNAPSHOT => 16;109,use constant CANNOT_CONNECT_TO_BACKEND CANNOT_DELETE_SNAPSHOT => 17;110,use constant WRONG_STATE_INFORMATION CANNOT_UPDATE_XML => 18;111,use constant CANNOT_SET_DISK_IMAGE_OWNERSHIP NO_SPACE_LEFT => 19;112,use constant CANNOT_SET_DISK_IMAGE_PERMISSION => 20;use constant CANNOT_RESTORE_MACHINE => 21;use constant CANNOT_LOCK_MACHINE => 22;use constant CANNOT_FIND_MACHINE => 23;use constant CANNOT_COPY_STATE_FILE_TO_RETAIN => 24;use constant RETAIN_ROOT_DIRECTORY_DOES_NOT_EXIST => 25;use constant BACKUP_ROOT_DIRECTORY_DOES_NOT_EXIST => 26;use constant CANNOT_CREATE_DIRECTORY => 27;use constant CANNOT_SAVE_XML => 28;use constant CANNOT_SAVE_BACKEND_ENTRY => 29;use constant CANNOT_SET_DIRECTORY_OWNERSHIP => 30;use constant CANNOT_SET_DIRECTORY_PERMISSION => 31;use constant CANNOT_FIND_CONFIGURATION_ENTRY => 32;use constant BACKEND_XML_UNCONSISTENCY => 33;use constant CANNOT_CREATE_TARBALL => 34;use constant UNSUPPORTED_FILE_TRANSFER_PROTOCOL => 35;use constant UNKNOWN_BACKEND_TYPE => 36;use constant MISSING_NECESSARY_FILES => 37;use constant CORRUPT_DISK_IMAGE_FOUND => 38;use constant UNSUPPORTED_CONFIGURATION_PARAMETER => 39;use constant CANNOT_MOVE_DISK_IMAGE_TO_ORIGINAL_LOCATION=> 40;use constant CANNOT_DEFINE_MACHINE => 41;use constant CANNOT_START_MACHINE => 42;use constant CANNOT_WORK_ON_UNDEFINED_OBJECT => 43;use constant CANNOT_READ_STATE_FILE => 44;use constant CANNOT_READ_XML_FILE => 45;use constant NOT_ALL_FILES_DELETED_FROM_RETAIN_LOCATION => 46;use constant NOT_ENOUGH_DISK_SPACE => 47;use constant NO_DISK_SPACE_INFORMATION => 48};
</pre>
= Next steps =
* Change the behaviour of the snapshot/merge processImplement restore** No longer merge the original file into the new one but merge (commit) backing store file back into original one*** Like that we are able to reduce the backup (merge) time a lot.= Source Code =*** Needs different behaviour for save The source code is located in our GitHub Repository: https://github.com/stoney-> copycloud/move stoney-> create new image conductor/tree/master/prov-> restore backup-> mergekvm = Links =
[[Category:stoney conductor]][[Category:Provisioning Modules]]
3,368
edits