Changes

Jump to: navigation, search

stoney conductor: prov-backup-kvm

5,240 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 === Global = Exit codes =
<pre>
use constant SUCCESS_CODE =# Copyright (C) 2013 stepping stone GmbH# Switzerland# http://www.stepping-stone.ch# support@stepping-stone.ch## Authors:# Pat Kläy <pat.klaey@stepping-stone.ch> 0;# # Licensed under the EUPL, Version 1.1.## You may not use this work except in compliance with the# Licence.# You may obtain a copy of the Licence at:## http://www.osor.eu/eupl## Unless required by applicable law or agreed to in# writing, software distributed under the Licence is# distributed on an "AS IS" basis,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either# express or implied.# See the Licence for the specific language governing# permissions and limitations under the Licence.#
  [Global]### Error codes constantsIf true the script logs every information to the log-file.use constant UNDEFINED_ERROR LOG_DEBUG => 1;  # Always If true the first!script logs additional information to the log-file.use constant MISSING_PARAMETER_IN_CONFIG_FILE LOG_INFO => 2;1use constant CONFIGURED_RAM_DISK_IS_NOT_VALUD => 3;use constant NOT_ENOUGH_SPACE_ON_RAM_DISK => 4;#If true the script logs warnings to the log-file.use constant CANNOT_SAVE_MACHINE_STATE LOG_WARNING => 5;1use constant CANNOT_WRITE_TO_BACKUP_LOCATION => 6;use constant CANNOT_COPY_FILE_TO_BACKUP_LOCATION #If true the script logs errors to the log-file.LOG_ERR => 7;1use constant CANNOT_COPY_IMAGE_TO_BACKUP_LOCATION # The environment indicates the hostname (fqdn) on which the prov-backup-kvm # daemon is runningENVIRONMENT =<STONEY-CLOUD-NODE-NAME> 8;use constant CANNOT_COPY_XML_TO_BACKUP_LOCATION # All information related to the database (backend) the daemon connects to[Database]BACKEND => 9;LDAPuse constant CANNOT_COPY_BACKEND_FILE_TO_BACKUP_LOCATIONSERVER =<STONEY-CLOUD-LDAP-SERVER> 10;use constant CANNOT_MERGE_DISK_IMAGES PORT =<STONEY-CLOUD-LDAP-PORT> 11;use constant CANNOT_REMOVE_OLD_DISK_IMAGE ADMIN_USER =<STONEY-CLOUD-LDAP-BINDDN> 12;use constant CANNOT_REMOVE_FILE ADMIN_PASSWORD =<STONEY-CLOUD-LDAP-BIND-PASSWORD> 13;use constant CANNOT_CREATE_EMPTY_DISK_IMAGE SERVICE_SUBTREE =<STONEY-CLOUD-LDAP-SERVICE-SUBTREE> 15;use constant CANNOT_RENAME_DISK_IMAGE # A cookie file will be used to be able to restart the daemon without# processing every entry again (they appear as new if the daemon is started) COOKIE_FILE =<STONEY-CLOUD-LDAP-COOKIE-FILE> 16;use constant CANNOT_CONNECT_TO_BACKEND # The default cookie just contains an empty CSN, in that way, all entries# are processedDEFAULT_COOKIE = rid=001,csn=> 17;use constant WRONG_STATE_INFORMATION # The search filter for the database. Only process entries found with this# filterSEARCH_FILTER =(&(entryCSN> 18;=%entryCSN%)(objectClass=*))use constant CANNOT_SET_DISK_IMAGE_OWNERSHIP # Indicates the prov-backup-kvm configuration which applies for every# VM-Pool and every VM if not overwritten by a VM-Pool- or VM-specific # configurationSTONEY_CLOUD_WIDE_CONFIGURATION =<STONEY-CLOUD-LDAP-PROV-BACKUP-KVM-DEFAULT-CONFIGURATION> 19;use constant CANNOT_SET_DISK_IMAGE_PERMISSION # Configuration concerining the provisioning module[Service] # The modus should always be selfcareMODUS => 20;selfcareuse constant CANNOT_RESTORE_MACHINE # Which TransportApi is used to execute the commands on the destination system# TransportApi can be "LocalCLI" or "CLISSH"TRANSPORTAPI => 21;LocalCLIuse constant CANNOT_LOCK_MACHINE # The name of the provisioning serviceSERVICE => 22;Backupuse constant CANNOT_FIND_MACHINE # The name of the provisioning typeTYPE => 23;KVMuse constant CANNOT_COPY_STATE_FILE_TO_RETAIN # The syslog tag (normally service-type)SYSLOG => 24;Backup-KVMuse constant RETAIN_ROOT_DIRECTORY_DOES_NOT_EXIST # All information concerning the gateway (TransportApi)[Gateway]HOST => 25;localhostuse constant BACKUP_ROOT_DIRECTORY_DOES_NOT_EXIST USER => 26;provisioninguse constant CANNOT_CREATE_DIRECTORY DSA_FILE => 27;noneuse constant CANNOT_SAVE_XML # Service specific configuration which is not present in the backend[Backup] # Which command is used to export filesEXPORT_COMMAND =cp -p</pre> 28;use constant CANNOT_SAVE_BACKEND_ENTRY == Backend ==> 29;use constant CANNOT_SET_DIRECTORY_OWNERSHIP ''' 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* A single VMThe configuration which applies for the VM is evaluated in the following way:# Check if the VM has a VM-specific configuration#* If yes, this one applies#* If not, continue# Check if the VM-Pool has a specific configuration#* If yes, this one applies#* If not, continue# The stoney-cloud-wide configuration applies === Mandatory Configuration-Parameters ===> 30;use constant CANNOT_SET_DIRECTORY_PERMISSION * '''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 ===> 31;use constant CANNOT_FIND_CONFIGURATION_ENTRY * '''sstBackupExcludeFromBackup''': Do we want to exclude a virtual machine from the default backup plan? Default is FALSE.* '''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):** 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:<pre> 32;use constant BACKEND_XML_UNCONSISTENCY { SUCCESS_CODE => 33;0,use constant CANNOT_CREATE_TARBALL ERROR_CODE => 34;1,use constant UNSUPPORTED_FILE_TRANSFER_PROTOCOL TRUE => 35;1,use constant UNKNOWN_BACKEND_TYPE FALSE => 36;0,use constant MISSING_NECESSARY_FILES # Specific error codes TEMPLATE_NOT_READABLE => 37;101,use constant CORRUPT_DISK_IMAGE_FOUND NO_MACHINE => 38;102,use constant UNSUPPORTED_CONFIGURATION_PARAMETER NO_XML_DESCRIPTION => 39;103,use constant CANNOT_MOVE_DISK_IMAGE_TO_ORIGINAL_LOCATION CANNOT_CREATE_SNAPSHOT => 40;104,use constant CANNOT_DEFINE_MACHINE NO_STATE_INFORMATION => 41;105,use constant CANNOT_START_MACHINE => 42;106,use constant CANNOT_WORK_ON_UNDEFINED_OBJECT NO_BACKUP_LOCATION => 43;107,use constant CANNOT_READ_STATE_FILE UNCONSISTENT_BACKUP => 44;108,use constant CANNOT_READ_XML_FILE CANNOT_GET_SNAPSHOT => 45;109,use constant NOT_ALL_FILES_DELETED_FROM_RETAIN_LOCATION CANNOT_DELETE_SNAPSHOT => 46;110,use constant NOT_ENOUGH_DISK_SPACE CANNOT_UPDATE_XML => 47;111,use constant NO_DISK_SPACE_INFORMATION NO_SPACE_LEFT => 48112,};
</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