Giter VIP home page Giter VIP logo

amlvm-snapshot's Introduction

Amanda LVM-snapshot Plugin

This plugin provides support for LVM snapshots in Amanda dumps. It interfaces with Amanda through the Script API.

Install

Sorry, there's no Makefile yet. Simply copy the amlvm-snapshot.pl script into Amanda's application directory.

For example:

install -m 755 -o root -g root amlvm-snapshot /usr/lib/amanda/application/amlvm-snapshot

You may need to edit the location of Amanda's Perl libraries in the script itself, the following line.

use lib '/usr/lib/amanda/perl/';

Configure Amanda

Somewhere in your Amanda config you must define a script-tool that loads the plugin. You can simply include the provided lvm-snapshot.conf file if you like.

cp lvm-snapshot.conf /etc/amanda/DailySet1/lvm-snapshot.conf
echo 'includefile "lvm-snapshot.conf"' >> /etc/amanda/DailySet1/amanda.conf

Once you have the lvm-snapshot script-tool defined, you can include it in a dumptype definition. Note, however, that your dumptype must use an application-tool program: Only application-tool programs can handle the alternate mount point—of the snapshot device—that the script defines.

define dumptype lvm-comp-amgtar {
  comment "LVM snapshot dumped with amgtar"
  global
  program "APPLICATION"
  application "app_amgtar"
  script "lvm-snapshot"
  compress client fast
  index
}

Parallel Backups

To allow Amanda to dump more than one snapshot of the same volume in parallel, you must specify a snapshot size (in PEs) such that multiple snapshots can fit in the available free space—by default, all available free space is used.

For example, if you had a volume with 1000 free extents and required that up to four backups could successfully run in parallel, you would specify the following configuration in lvm-snapshot.conf.

  property "SNAPSHOT-SIZE" "250"

Configure Permissions

This plugin requires elevated permissions in order to create and remove LVM devices. There are two ways to provide access: setting setuid on the plugin script itself, or by configuring sudo to allow execution of the LVM programs.

setuid

NOTE: I'm currently having trouble getting this to work right, as Amanda's Perl libraries don't seem to play nice with setuid scripts.

For setuid, simply configure the ownership and mode on amlvm-snapshot. In this example, disk is the group that Amanda runs under.

chown root:disk /usr/libexec/amanda/application/amlvm-snapshot
chmod 4750 /usr/libexec/amanda/application/amlvm-snapshot

This will require that you have a version of Perl installed that was compiled with ENABLE_SUIDPERL.

sudo

For sudo, add the following to the /etc/sudoers file where "amandabackup" is the name of your Amanda user.

amandabackup    ALL=(ALL) NOPASSWD: /sbin/lvcreate, /sbin/lvdisplay, /sbin/lvremove, /sbin/vgdisplay, /bin/readlink, /bin/mount, /bin/umount, /sbin/blkid

The commands listed are those used by amlvm-snapshot to interact with the LVM volumes.

Remember to enable the SUDO property. This is already included in the example lvm-snapshot.conf file.

define script-tool lvm-snapshot {
  # ...
  property "SUDO" "1"
}

Enjoy, Daniel

amlvm-snapshot's People

Contributors

andrewbasterfield avatar janekr avatar marxarelli avatar

Watchers

 avatar  avatar

Forkers

piotr-sikora-v

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.