A plugin for Amanda that provides LVM snapshot-ing.
Perl
Switch branches/tags
Nothing to show
Pull request Compare This branch is 2 commits ahead, 10 commits behind marxarelli:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
README.mkd
amlvm-snapshot.pl
lvm-snapshot.conf

README.mkd

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:

cp amlvm-snapshot.pl /usr/libexec/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/local/share/perl/5.8.4';

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
}

To allow amanda to dump more than one lvm-snapshot in parallel, lvm-snapshot.conf has to have something like:

  property "SNAPSHOT-SIZE" "250"

(the unit is PEs, for LVM PE Size 4,00 MiB it results in 1G snapshot-size)

otherwise the first snapshot uses up all extents and the second snapshot fails.

If you use star to do backups, you will need to add this to lvm-snapshot.conf:

  property "STABLE-MOUNTPOINT" "1"

star is keeping directory name in stardumps file, and random mount-points generated by amlvm-snapshot prevent star from properly doing incremental backups.

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