Giter VIP home page Giter VIP logo

kvmbackup's Introduction

kvmBackup

a software for snapshotting KVM images and backing them up. More information could be found in our Wiki

License

kvmBackup - a software for snapshotting KVM images and backing them up
Copyright (C) 2015-2016 PTP

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Requirements

Background

Snapshot is a common industry term denoting the ability to record the state of a storage device at any given moment and preserve that snapshot as a guide for restoring the storage device in the event that it fails. A snapshot primarily creates a point-in-time copy of the data. Typically, snapshot copy is done instantly and made available for use by other applications such as data protection, data analysis and reporting, and data replication applications. The original copy of the data continues to be available to the applications without interruption, while the snapshot copy is used to perform other functions on the data.

Snapshots in QEMU are images that refer to an original image using Redirect-on-Write to avoid changing the original image. The main advantage is that new writes to the original volume are redirected to another location set aside for snapshot. The original location contains the point-in-time data of the Guest, that is, snapshot, and the changed data reside on the snapshot storage. While snapshotting, QEMU Guest Agent ensure you have a consistent disk state. Once snapshot is completed, a backup could be done by copying the original image in another location. Once backup is completed, the data from the snapshot storage must be reconciled back into the original volume, before removing snapshot.

You can have a more detailed picture of snapshot by reading our wiki - Introduction

kvmBackup tries to automatize such operations, by backing up domain configuration files and qcow images in a single backup file for each domain. The whole backup process could be executed by cron, and older backup copies are handled by rotation.

Installation

kvmBackup is a simple Python script which use libvirt python API and qemu commands to snapshot KVM images and configuration file. You can install software simply using git:

$ git clone https://github.com/bioinformatics-ptp/kvmBackup.git

More information in installing kvmBackup could be found in our wiki - Install kvmBackup

Configuration

kvmBackup read a yaml file in order to know which Guest need backup. For instance:

cloud1: #The hostname which will do backup
    domains:
        DockerNode1: # A Guest domain name
            #day_of_week: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
            day_of_week: [Sun] #when backup will be done (Dat of week)
            rotate: 4 # how many backup will be stored.
    backupdir: /mnt/cloud/kvm_backup/cloud1 # were backup will be placed

The first level (cloud1 in the example) is the name of the host in which those configurations apply; it could be determined by typing hostname -s. Configurations defined under a different hostname will not by applied in such host. The second yaml level define a domain by specyfing all Guest domains we need to provide a backup, and a backupdir directory in which backup will be placed. In this directory will be placed a directory for each domain, in which backup will be placed. Then in the third level you need to specify the domain names to backup (you can inspect domain names by typing virsh list --all), and in its sublevels you need to specify the day of week where the backup will be done and how many bakcup use for rotation

More information on kvmBackup configuration could be found in our wiki - Configure kvmBackup

Usage

Launch kvmBackup as a provileged user (root or using sudo) by specyfing the path of your config file:

$ kvmBackup.py --config </path/to/config.yaml>

It's better to run kvmBackup every day using cron. Here's an example of /etc/crontab in Centos 7:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  0  2  *  *  * root /mnt/cloud/Utilities/kvmBackup/kvmBackup.py --config /mnt/cloud/Utilities/kvmBackup/config.yml >> /var/log/kvmBackup 2>&1

More information in using kvmBackup could be found in our wiki - Running kvmBackup

Restoring a backup

Pleas see our wiki - Restoring a backup

kvmbackup's People

Contributors

bunop avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.