Difference between revisions of "Backup of a running container with vzdump"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(uGtqzBTDlcdDCgrCF)
m (Reverted edits by 210.175.233.11 (talk) to last revision by 82.77.174.69)
Line 1: Line 1:
The paragon of understanndig these issues is right here!
+
Vzdump is a utility to make consistent snapshots of running OpenVZ containers (and KVM virtual machines if you are using [http://pve.proxmox.com Proxmox VE]). It basically creates a tar archive of the container's private area, which also includes the CT configuration files.
 +
 
 +
There are several ways to provide consistency:
 +
 
 +
* Stop the CT during backup (very long downtime)
 +
* Use rsync and suspend/resume (minimal downtime)
 +
* Use LVM2 (no downtime)
 +
 
 +
Vzdump stores the backup on the disk in a single file. This file should go to a tape backup for archiving.
 +
 
 +
== Download ==
 +
Download vzdump rpm or deb packages from http://download.openvz.org/contrib/utils/vzdump/ or for newest version, check http://download.proxmox.com/debian/dists/lenny/pve/binary-amd64/ .
 +
 
 +
For Debian based systems:
 +
<pre>wget http://download.proxmox.com/debian/dists/lenny/pve/binary-amd64/vzdump_1.2-13_all.deb</pre>
 +
 
 +
 
 +
For future versions, Proxmox will not release rpm´s, so you need to take a look at the sources. (maybe someone else can maintain vzdump rpm packages?)
 +
 
 +
== Installation ==
 +
For rpm based systems:
 +
<pre>rpm -i vzdump-1.2-5.noarch.rpm</pre>
 +
 
 +
For Debian based systems:
 +
<pre>dpkg -i vzdump_1.2-13_all.deb</pre>
 +
 
 +
== Synopsis ==
 +
 
 +
see also:
 +
<pre>man vzdump</pre>
 +
 
 +
vzdump OPTIONS [--all | <VMID>]
 +
      --exclude VMID          exclude VMID (assumes --all)
 +
      --exclude-path REGEX    exclude certain files/directories. You
 +
                              can use this option more than once to specify
 +
                              multiple exclude paths
 +
      --stdexcludes          exclude temporary files and logs
 +
      --compress              compress dump file (gzip)
 +
      --storage STORAGE_ID    store resulting files to STORAGE_ID (PVE only)
 +
      --script                execute hook script
 +
      --dumpdir DIR          store resulting files in DIR
 +
      --maxfiles N            maximal number of backup files per VM.
 +
      --tmpdir DIR            store temporary files in DIR. --suspend and --stop
 +
                              are using this directory to store a copy of the VM.
 +
      --mailto EMAIL          send notification mail to EMAIL. You can use
 +
                              this option more than once to specify multiple
 +
                              receivers
 +
      --stop                  stop/start VM if running
 +
      --suspend              suspend/resume VM when running
 +
      --snapshot              use LVM snapshot when running
 +
      --size MB              LVM snapshot size (default 1024)
 +
      --bwlimit KBPS          limit I/O bandwidth; KBytes per second
 +
      --lockwait MINUTES      maximal time to wait for the global
 +
                              lock. vzdump uses a global lock file to make
 +
                              sure that only one instance is running
 +
                              (running several instance puts too much load
 +
                              on a server). Default is 180 (3 hours).
 +
      --stopwait MINUTES      maximal time to wait until a VM is stopped.
 +
 
 +
== Examples ==
 +
Use a running container, for example install this: [[Proxmox Mail Gateway in container]].
 +
 
 +
=== Backup ===
 +
 
 +
Simply dump CT 777 — no snapshot, just archive the container private area and configuration files to the default dump directory (usually <code>/vz/dump/</code>).
 +
 
 +
vzdump 777
 +
 
 +
Use rsync and suspend/resume to create a snapshot (minimal downtime).
 +
 
 +
vzdump --suspend 777
 +
 
 +
Backup all containers and send notification mails to root.
 +
 
 +
vzdump --suspend --all --mailto root
 +
 
 +
Use LVM2 to create snapshots (no downtime).
 +
 
 +
vzdump --dumpdir /space/backup --snapshot 777
 +
 
 +
Note that using LVM2 and vzdump to create snapshots requires 512Mb of free space in your VG as described  [http://weblogs.amtex.nl/index.php?blog=2&title=using_vzdump_snapshot_to_backup_without_downtime&more=1&c=1&tb=1&pb=1 here].
 +
 
 +
=== Restore ===
 +
 
 +
Restore the above backup to CT 600:
 +
 
 +
vzrestore /space/backup/vzdump-777.tar 600
 +
OR
 +
vzdump --restore /space/backup/vzdump-777.tar 600
 +
 
 +
Note : vzdump --restore is not present in version 1.2-7, use vzrestore instead.
 +
 
 +
== Bugs ==
 +
'''(not fixed in 1.2-4)'''
 +
The rsync command used by vzdump to create the backup in suspend mode partially ignores the "--exclude-path" option.
 +
In fact, even if the excluded paths won't appear in the final output, the whole VPS will be moved to the temporary directory, meaning that you need as much free disk space as your VPS size to use vzdump. It can be an issue in the case of a file server handling many files...
 +
 
 +
''Workaround:'' A workaround has been proposed on OpenVZ forum, see below for the excerpt. (http://forum.openvz.org/index.php?t=msg&goto=36924&)
 +
<pre>
 +
User: tatawaki
 +
Messages: 3
 +
Registered: December 2008  Junior Member
 +
From: *sbm.shawcable.net
 +
 
 +
Line 694:
 +
my $rsyncopts = "--stats --numeric-ids --bwlimit=${opt_bwlimit}";
 +
 
 +
# changes to
 +
 
 +
my $rsyncopts = "--stats --numeric-ids --bwlimit=${opt_bwlimit}";
 +
$rsyncopts = $rsyncopts." --exclude-from=/home/backups/exclude_vzdump.txt";
 +
 
 +
the txt file contains <VEID>/home/:
 +
 
 +
1094/home/
 +
510/opt/
 +
...
 +
</pre>
 +
 
 +
'''(fixed in 1.1-1)'''
 +
vzdump will fail under Debian Etch in version 1.0-2 if it is invoked with parameter "--snapshot" and if the logical volume name contains a hyphen.
 +
 
 +
''Workaround:'' One possible workaround is to rename the logical volume in question thus it doesn't contain any hyphen.
 +
A bug report was sent to proxmox on 02 June 2008.
 +
Other distributions or versions may be affected, too.
 +
 
 +
== Hooks ==
 +
 
 +
http://nachtmann.it/blog/vzdump-hook-ftp-backup-script - Backup to FTP with limited capacity
 +
 
 +
[[Category: HOWTO]]

Revision as of 05:27, 28 November 2011

Vzdump is a utility to make consistent snapshots of running OpenVZ containers (and KVM virtual machines if you are using Proxmox VE). It basically creates a tar archive of the container's private area, which also includes the CT configuration files.

There are several ways to provide consistency:

  • Stop the CT during backup (very long downtime)
  • Use rsync and suspend/resume (minimal downtime)
  • Use LVM2 (no downtime)

Vzdump stores the backup on the disk in a single file. This file should go to a tape backup for archiving.

Download

Download vzdump rpm or deb packages from http://download.openvz.org/contrib/utils/vzdump/ or for newest version, check http://download.proxmox.com/debian/dists/lenny/pve/binary-amd64/ .

For Debian based systems:

wget http://download.proxmox.com/debian/dists/lenny/pve/binary-amd64/vzdump_1.2-13_all.deb


For future versions, Proxmox will not release rpm´s, so you need to take a look at the sources. (maybe someone else can maintain vzdump rpm packages?)

Installation

For rpm based systems:

rpm -i vzdump-1.2-5.noarch.rpm

For Debian based systems:

dpkg -i vzdump_1.2-13_all.deb

Synopsis

see also:

man vzdump

vzdump OPTIONS [--all | <VMID>]

      --exclude VMID          exclude VMID (assumes --all)
      --exclude-path REGEX    exclude certain files/directories. You
                              can use this option more than once to specify
                              multiple exclude paths
      --stdexcludes           exclude temporary files and logs
      --compress              compress dump file (gzip)
      --storage STORAGE_ID    store resulting files to STORAGE_ID (PVE only)
      --script                execute hook script
      --dumpdir DIR           store resulting files in DIR
      --maxfiles N            maximal number of backup files per VM.
      --tmpdir DIR            store temporary files in DIR. --suspend and --stop
                              are using this directory to store a copy of the VM.
      --mailto EMAIL          send notification mail to EMAIL. You can use
                              this option more than once to specify multiple
                              receivers
      --stop                  stop/start VM if running
      --suspend               suspend/resume VM when running
      --snapshot              use LVM snapshot when running
      --size MB               LVM snapshot size (default 1024)
      --bwlimit KBPS          limit I/O bandwidth; KBytes per second
      --lockwait MINUTES      maximal time to wait for the global
                              lock. vzdump uses a global lock file to make
                              sure that only one instance is running
                              (running several instance puts too much load
                              on a server). Default is 180 (3 hours).
      --stopwait MINUTES      maximal time to wait until a VM is stopped.

Examples

Use a running container, for example install this: Proxmox Mail Gateway in container.

Backup

Simply dump CT 777 — no snapshot, just archive the container private area and configuration files to the default dump directory (usually /vz/dump/).

vzdump 777

Use rsync and suspend/resume to create a snapshot (minimal downtime).

vzdump --suspend 777

Backup all containers and send notification mails to root.

vzdump --suspend --all --mailto root

Use LVM2 to create snapshots (no downtime).

vzdump --dumpdir /space/backup --snapshot 777

Note that using LVM2 and vzdump to create snapshots requires 512Mb of free space in your VG as described here.

Restore

Restore the above backup to CT 600:

vzrestore /space/backup/vzdump-777.tar 600

OR

vzdump --restore /space/backup/vzdump-777.tar 600

Note : vzdump --restore is not present in version 1.2-7, use vzrestore instead.

Bugs

(not fixed in 1.2-4) The rsync command used by vzdump to create the backup in suspend mode partially ignores the "--exclude-path" option. In fact, even if the excluded paths won't appear in the final output, the whole VPS will be moved to the temporary directory, meaning that you need as much free disk space as your VPS size to use vzdump. It can be an issue in the case of a file server handling many files...

Workaround: A workaround has been proposed on OpenVZ forum, see below for the excerpt. (http://forum.openvz.org/index.php?t=msg&goto=36924&)

User: tatawaki
Messages: 3
Registered: December 2008  Junior Member
From: *sbm.shawcable.net

Line 694:
my $rsyncopts = "--stats --numeric-ids --bwlimit=${opt_bwlimit}";

# changes to

my $rsyncopts = "--stats --numeric-ids --bwlimit=${opt_bwlimit}";
$rsyncopts = $rsyncopts." --exclude-from=/home/backups/exclude_vzdump.txt";

the txt file contains <VEID>/home/:

1094/home/
510/opt/
...

(fixed in 1.1-1) vzdump will fail under Debian Etch in version 1.0-2 if it is invoked with parameter "--snapshot" and if the logical volume name contains a hyphen.

Workaround: One possible workaround is to rename the logical volume in question thus it doesn't contain any hyphen. A bug report was sent to proxmox on 02 June 2008. Other distributions or versions may be affected, too.

Hooks

http://nachtmann.it/blog/vzdump-hook-ftp-backup-script - Backup to FTP with limited capacity