Quick start (old)

From wiki.zmanda.com
Jump to navigation Jump to search

Installation

Amanda can be installed from:

  • Pre-built packages.
    • Zmanda downloads site (Installation packages are available for Debian/Ubuntu, Red Hat Enterprise Linux 4.0, Red Hat Enterprise Linux 3.0, Fedora Core 7, Fedora Core 6, Fedora Core 5, Fedora Core 4, Fedora Core 3, SUSE Linux Enterprise Server 10, SUSE Linux Enterprise Server 10 and SUSE Linux 10.0) and Windows. If you are using packages from Zmanda downloads page, please take a look at Zmanda packages quick start example. If you are using Windows client, please take a look at Windows client for installation instructions.
    • Linux or BSD distributions or Sun freeware site

Please see installation chapter for information on how to install pre-built Amanda packages and compile Amanda source tree.

Pre-built packages make some assumptions about the Amanda configuration. Packages from Zmanda downloads pages perform some configuration steps as part of post-installation procedure. Please see Amanda packages from Zmanda downloads page, for a list of configuration steps that are performed.

Collecting information for configuration

It is necessary to determine the Amanda configuration parameters used in Amanda installation. If you are building from source tree, these are configure script parameters. If you are using pre-built binary packages from another source, use amadmin command to determine the Amanda parameters. These commands must be run as superuser (root).

"CLIENT_LOGIN"
Amanda user. This user id is used by backup process. Example: amandabackup, amanda
# /usr/sbin/amadmin xx version | grep CLIENT_LOGIN
"CONFIG_DIR"
Amanda configuration directory. All Amanda configurations in the Amanda server are kept under this directory. Default: /etc/amanda
# /usr/sbin/amadmin xx version | grep CONFIG_DIR
"AMANDA_DBGDIR"
Amanda directory for debug log files. Default: /tmp/amanda
# /usr/sbin/amadmin xx version | grep AMANDA_DBGDIR
"libexecdir"
Amanda directory where executables started by amandad process are installed. Default: /var/lib/amanda
# /usr/sbin/amadmin xx version | grep libexecdir
"listed_incr_dir"
This directory in Amanda client is used by GNU tar command. This directory only used if GNUTAR is used as backup program in dumptype in amanda.conf. Default: /var/lib/amanda/gnutar-lists
# /usr/sbin/amadmin xx version | grep listed_incr_dir

Backup server configuration

Create an Amanda user on the server

Amanda runs as a normal user, but must be in the same group that has read access to the raw disk devices. Do not use the root user to run the Amanda. The user name is the CLIENT_LOGIN parameter from the Collecting information for configuration section.

It is possible to change the name of the user used during Amanda compilation. Amanda packages from different distributions use different user names and home directories for Amanda.

For example: If you install Amanda using pre-built packages from Zmanda downloads page, a user "amandabackup" gets created, and is added to the group "disk" with the home directory "/var/lib/amanda". You must assign a password to the "amandabackup" user for unlocking the account.

On the other hand if you build Amanda using the source tree, you can create the user using useradd command. For example:

# useradd -u amandabackup -g disk -d /var/lib/amanda -s /bin/bash -c ...

If you are running NIS (aka YP), you can add the Amanda user to your NIS services database. Consult your NIS documentation for details.

Make sure the Amanda programs are in the PATH of the user amanda. If the programs reside in /usr/local/sbini directory, please set PATH environment variable in .profile, and/or .bashrc in Amanda user's home directory. Following script segment shows how to set PATH variable in a shell script:

# Prepend these directories to PATH if needed
for d in /usr/local/bin /usr/local/sbin
do
    case :$PATH: in
        *:$d:*) : ;;
        *)  PATH=$d:$PATH ;;
    esac
done

Invent a name for the configuration

You need to provide a unique name for each configuration in Amanda. The configuration name works as a label for a set of configuration files that describe the source and target for taking the backup. The configuration files specifies the source, such as disks, partitions, or directories that have to be backed up and the target, such as tapes or directories (disks) where the backup data is stored.

You may have many configurations. Commonly used configuration names are: "daily" for normal daily backups, "archive" for offsite stored achive tapes having only full dumps, "test" for your test environment. Some linux-distributions ship Amanda with a default configuration named "DailySet1".

Create a directory with the chosen configuration name under configuration directory (See CONFIG_DIR value from #Collecting information for configuration section:

$ mkdir -p /etc/amanda/daily

This directory works as the configuration name (label) for the configuration files.

Most Amanda commands take the configuration name as the first argument.

Modify amanda.conf

Copy the example amanda.conf (under debian, this file is located in /etc/amanda/DailySet1) into the configuration directory (/etc/amanda/daily). Edit the configuration file to be correct for your site, consulting the amanda.conf(5) man page if necessary.

For a quick start and setting up a test environment for disk based backup, you can copy amanda.conf parameters from Test environment with virtual tapes.

Note the values you choose for the next parameters in amanda.conf:

amanda.conf:

logdir   "/etc/amanda/daily"                # log directory
infofile "/etc/amanda/daily/curinfo"        # database filename
indexdir "/etc/amanda/daily/index"          # index directory
tapelist "/etc/amanda/daily/tapelist"       # list of used tapes

and create the directories or files, making sure the directories and files are owned by the amanda user:

# chown -R amandabackup:disk /etc/amanda
# su - amandabackup
$ mkdir -p /etc/amanda/daily
$ touch /etc/amanda/daily/tapelist

The directories "curinfo" and "index" will be created automatically, if amandabackup has permission to write in /etc/amanda directory.

Specify holding disks in the amanda.conf file:

amanda.conf:

holdingdisk hd1 {
    directory "/space/amandahold/daily"
    ...
}

And create them:

# mkdir -p /space/amandahold/daily
# chown -R amandabackup:disk /space/amandahold

Add entries in /etc/services on the server

Put the Amanda services into your /etc/services file. Check your /etc/services for existing Amanda entries, most UNIX/Linux-distributions already provide the needed entries. If you can't find them, add entries like:

/etc/services:

amanda		10080/udp
amandaidx	10082/tcp
amidxtape	10083/tcp

You may choose a different port number if you like, but it must match the port number in the services file of your Amanda client hosts. If you are running NIS (aka YP), you have to enter the Amanda service into your NIS services database. Consult your NIS documentation for details.

Configure (x)inetd on server

Find out if your server uses inetd, xinetd, or Dan Bernstein's daemontools.

  • Strictly speaking, the serverside configuration of amanda does not include the "amandad" entries below, but because the amanda-server is usually a client for itself (i.e. you make backups of the amanda server too), I added the "amandad" entries already.

Configuring inetd on server

These entries are for Amanda 2.5.0 or earlier versions.
For Amanda 2.5.1 or later versions, please see Configuring_bsd/bsdudp/bsdtcp_authentication section.

If the server uses inetd, then add these lines to the inetd.conf on the tape server host:

/etc/inetd.conf:

amanda dgram udp wait $USER $LIBEXECDIR/amandad amandad
amandaidx stream tcp nowait $USER $LIBEXECDIR/amindexd amindexd
amidxtape stream tcp nowait $USER $LIBEXECDIR/amidxtaped amidxtaped

where $LIBEXECDIR is the complete path to where the amandad, amindexd and amidxtaped executables are located, and $USER is the Amanda user. The first entry (amandad) is not strictly needed when the server itself is not configured as a client.

You may use the `patch-system' script, from client-src, in order to modify this file. Run it with a `-h' argument for usage.

Make inetd reread its configuration file:

# kill -1 <pid-of-inetd>

On older systems you may have to kill it completely and restart it.

Configuring xinetd on server

If the Amanda server uses xinetd, then you have to add the following services to the xinetd-configuration (usually /etc/xinetd.d) and edit the paths:

These entries are for Amanda 2.5.0 or earlier versions.
For Amanda 2.5.1 or later versions, please see Configuring_bsd/bsdudp/bsdtcp_authentication section.

/etc/xinetd.d/amanda:

service amanda
{
    disable          = no
    socket_type      = dgram
    protocol         = udp
    wait             = yes
    user             = $USER
    group            = $GROUP
    groups           = yes
    server           = $LIBEXECDIR/amandad 
}

service amandaidx
{
    disable          = no
    socket_type      = stream
    protocol         = tcp
    wait             = no
    user             = $USER
    group            = $GROUP
    groups           = yes
    server           = $LIBEXECDIR/amindexd 
} 

service amidxtape
{
    disable          = no
    socket_type      = stream
    protocol         = tcp
    wait             = no
    user             = $USER
    group            = $GROUP
    groups           = yes
    server           = $LIBEXECDIR/amidxtaped
} 

The first entry (amandad) is not strictly needed when the server itself is not configured as a client.

Some administrators like to split up the above entries in 3 files instead of one.

Make xinetd reread its configuration file:

# kill -HUP <pid-of-xinetd>

Configuring daemontools on server

If your tape server uses Dan Bernstein's daemontools (http://cr.yp.to/daemontools.html) instead of (x)inetd, you have to create amandaidx and amidxtape services by hand.

mkdir -p $prefix/etc/amanda/supervise/amanda
mkdir -p $prefix/etc/amanda/supervise/amandaidx
mkdir -p $prefix/etc/amanda/supervise/amidxtape

Create service startup files and make them executable:

/etc/amanda/supervise/amandaidx/run:

#!/bin/sh
exec /usr/local/bin/setuidgid amanda \
/usr/local/bin/tcpserver -DHRl0 0 10082 \
/usr/local/libexec/amindexd >/dev/null 2>/dev/null

/etc/amanda/supervise/amidxtape/run:

#!/bin/sh
exec /usr/local/bin/setuidgid amanda \
/usr/local/bin/tcpserver -DHRl0 0 10083 \
/usr/local/libexec/amidxtaped >/dev/null 2>/dev/null

Link service directories into your svscan directory:

# cd /service
# ln -s $prefix/etc/amanda/supervise/amandaidx .
# ln -s $prefix/etc/amanda/supervise/amidxtape .

svscan should detect and start your new services automatically.

Create the disklist file

In the same directory as the amanda.conf file is the disklist file. Begin with a few entries while you are testing.

disklist:

client1.example.com  /some/dir   comp-user-tar
client2.example.com  /var        comp-user-tar

Note that you might want to temporarily set the option "record no" in all your dumptypes when first installing Amanda if you'd like to run tests of Amanda in parallel with your existing dump scheme. Amanda will then run but will not interfere with your current dumpdates. However, you don't want to run with "record no" under normal operations.

Add crontab entries

Schedule the amcheck and amdump command by use of crontab: Example: crontab entries for Amanda user

0 16 * * 1-5 /usr/local/sbin/amcheck -m confname
45 0 * * 2-6 /usr/local/sbin/amdump confname

Note: some OS'es have a shared crontab for all users, and may require a userid on each cron line. See your cron(8) for details.

With these cron lines, Amanda will check that the correct tape is in the drive every weekday afternoon at 4pm (if it isn't, all the operators will get mail). At 12:45am that night the dumps will be run.

It may be wise to add these crontab entries later, when all the tests succeeded.

Create file .amandahosts on the server

Create a file named ".amandahosts" in the home directory of the Amanda user. The syntax is similar as a .rhosts file. Such a file should exist on each client containing a line to allow the server access to the client (see Backup Client configuration). On the server additional entries are needed for each client in the disklist file that wants to use amrecover (amrecover needs to be run as root).

# su - amandabackup
$ cat .amandahosts
amandahost.yourdomain.com  amandabackup
amandahost.yourdomain.com  root
client1.yourdomain.com  root
client2.yourdomain.com  root

The first line in the .amandahosts file above is for the Amanda client running on the server itself. The next lines allow the user root on each client computer to access the Amanda tape server and Amanda index server on this host with the amrecover command.

When compiled with the configure option --without-amandahosts, use the file .rhosts and/or /etc/hosts.equiv instead.

The .rhosts file or (since version 2.5.0) the .amandahosts file need also strict permissions. They should be owned by the Amanda user and not be readable or writeable by anyone else. Also, the home directory of the Amanda user (containing the .amandahosts file) should not be writeable by anyone else:

# chown amandabackup ~amanda ~/.amandahosts
# chmod 755 ~amanda
# chmod 600 ~amanda/.amandahosts

Backup client configuration

Each client in the disklist file of the server needs to be configured with the client part of Amanda.

Note: The server itself is usually also a client; this section applies to the server, too.

Create a backup user on the client

The Amanda user on the client does not have to be same name, uid or gid as the server. It must be in the same group that has read access to the raw disk devices.

If the user does not exist, create one:

# useradd -u amandabackup -g disk -d /var/lib/amanda -s /bin/bash -c ...

If you are running NIS (aka YP), you can add the Amanda user to your NIS services database. Consult your NIS documentation for details.

You can use a Amanda client user name different from the server user name. If a different user is used in the client, it is necessary to configure amanda.conf appropriately. See client_user field in DUMPTYPE section of amanda.conf.

Create file .amandahosts on the client

Create a file named ".amandahosts" in the home directory of the Amanda user on the client. The syntax is similar as a .rhosts file. Fill it with the hostname of the Amanda server and the Amanda user on the server:

amandahost.example.com  amandabackup

This entry allows the user amanda on host amandahost.example.com to initiate a backup on this client.

When compiled with the configure option --without-amandahosts, use the file .rhosts and/or /etc/hosts.equiv instead.

The .rhosts file or (since version 2.5.0) the .amandahosts file also need strict permissions. They should be owned by the Amanda user and not be readable or writeable by anyone else. Also, the home directory of the Amanda user (containing the .amandahosts file) should not be writeable by anyone else:

# chown amandabackup ~amandabackup ~/.amandahosts
# chmod 755 ~amandabackup
# chmod 600 ~amandabackup/.amandahosts

Create file /etc/amandates and chmod /etc/dumpdates

Create an empty file /etc/amandates and make it owned by the Amanda user.

Note: when installing from RPM or debian packages, this step is already done.

# touch /etc/amandates
# chown amandabackup:disk /etc/amandates

Make the file /etc/dumpdates writable by the Amanda user:

# chmod 664 /etc/dumpdates
# chgrp disk /etc/dumpdates

where "disk" is the group that amanda is in, and the group that has read access to the raw disk devices (see "ls -l /dev/hda1" or whatever your disks are).

Add entries in /etc/services on the client

Put the Amanda service into your /etc/services file:

/etc/services:

amanda		10080/udp

You may choose a different port number if you like, but it must match that in the services file on the tape server host, too.

If you are running NIS (aka YP), you have to enter the Amanda service into your NIS services database. Consult your NIS documentation for details.

You may use the `patch-system' script, from client-src, in order to modify this file. Run it with a `-h' argument for usage.

Configure (x)inetd on the Client

Find out if the host uses inetd, xinetd, or Dan Bernstein's daemontools.

Configuring inetd on client

These entries are for Amanda 2.5.0 or earlier versions.
For Amanda 2.5.1 or later versions, please see Configuring_bsd/bsdudp/bsdtcp_authentication section.

If the Amanda client uses inetd, put the Amanda client service into inetd's config file. This file is usually found in /etc/inetd.conf, but on older systems it is /etc/servers. The format is different on different OSes, so you must consult the inetd man page for your site.

/etc/inetd.conf:

amanda dgram udp wait $USER $LIBEXECDIR/amandad amandad

where $LIBEXECDIR is the complete path to where the amandad executable is located and $USER is the Amanda user.

You may use the `patch-system' script, from client-src, in order to modify this file. Run it with a `-h' argument for usage.

Make inetd reread its configuration file:

# kill -1 <pid-of-inetd>

On older systems you may have to kill it completely and restart it.

Configuring xinetd on client

These entries are for Amanda 2.5.0 or earlier versions.
For Amanda 2.5.1 or later versions, please see Configuring_bsd/bsdudp/bsdtcp_authentication section.

If the Amanda client uses xinetd, you have to add the following file to the xinetd-configuration (usually /etc/xinetd.d) and edit it to reflect your settings and paths:

/etc/xinetd.d/amanda:

service amanda
{
     disable           = no
     socket_type       = dgram
     protocol          = udp
     wait              = yes
     user              = $USER
     group             = $GROUP
     groups            = yes
     server            = $LIBEXECDIR/amandad 
}

where $LIBEXECDIR is the complete path to where the amandad executables is located, $USER is the Amanda user, and $GROUP is the group name the Amanda user is in.

Make xinetd reread its configuration file:

# kill -HUP <pid-of-xinetd>

Configuring daemontools on client

If the Amanda client uses Dan Bernstein's daemontools (http://cr.yp.to/daemontools.html) instead of (x)inetd, you have to create the Amanda service by hand. You will need also an UDP super-server (netcat in this example).

Create service directory:

# mkdir -p /etc/amanda/supervise/amanda

Create service startup file and make it executable:

/etc/amanda/supervise/amanda/run:

#!/bin/sh
exec /usr/local/bin/setuidgid amanda \
 /usr/bin/netcat -l -u -p 10080 -q 0 \
 -e /usr/local/libexec/amandad >/dev/null 2>/dev/null

The netcat-binary used in this run-file might also be called /usr/bin/nc on your system, depending on the OS-distribution you use. Refer to http://netcat.sourceforge.net for details of netcat.

Link service directory into your svscan directory:

# cd /service
# ln -s /etc/amanda/supervise/amanda 

svscan should detect and start your new services automatically.

Create the listed_incr_dir for gnutar

If the dumptype for this client uses GNU-tar, then you have to create a directory for it. Create the directory, making sure the Amanda user can write into it:

 # mkdir -p /usr/local/var/lib/amanda/gnutar-lists
 # chown -R amandabackup:disk /usr/local/var/lib/amanda

Special requirements

  • If you intend to back up xfs filesystems on hosts running IRIX, you must create the directory /var/xfsdump/inventory, otherwise xfsdump will not work.

Using the configuration

Label tapes or vtapes

Backup to tapes

Make sure the tapedrive has the correct settings such as compression off and variable blocksize before labelling the tape. Label the tape using the amlabel command. These commands must be executed as Amanda user (amandabackup)

$ mt -t /dev/nst0 compression 0
$ mt -t /dev/nst0 setblk 0
$ amlabel daily Daily-01

The tape label, in the example above "Daily-01", must match the labelstr regular expression specified in the amanda.conf file. Otherwise amlabel will give an error.

Backup to disk

Amanda uses vtapes to emulate tapes on disk. This is useful for testing Amanda configuration.

Add the tapedev entry to the amanda.conf

amanda.conf:

tapedev "file:/space/amanda-vtapes/tape"

A "vtape" is a directory with a "data" subdirectory inside. Following commands create a vtape.

# mkdir /space/amanda-vtapes
# chown amandabackup:disk /space/amanda-vtapes
# su - amandabackup
$ mkdir -p /space/amanda-vtapes/tape/data

You can use ammt command to manipulate the vtape:

$ ammt -t file:/space/amanda-vtapes/tape rewind
$ amlabel test Test-01

You can even emulate a vtape-changer having many tapes, as described in a Test environment with virtual tapes.

Configuration check

Run amcheck command as the backup user (amandabackup in the our example)

 $ amcheck daily

Above amcheck command verifies configuration of Amanda server and Amanda client(s).

Resolve all the errors and warnings found by amcheck command. All messages with prefix NOTE: are informational messages. Error messages are explained in the wiki section Amcheck issues.

Log files

When debugging the setup, the debug log files created by the different Amanda programs can be a great help. The debug directory is usually /tmp/amanda (See #Collecting information for configuration section)

The Amanda client programs create a debug file in this directory. The filename starts with the program name, followed by a date-time stamp.

The Amanda server program writes a log in a file named "amdump" in logdir specified in amanda.conf. When finished the file is named "amdump.1"; the previous file is then found with name "amdump.2", etc.

See Amanda log files for detailed information.

Some specific problem you may encounter are explained in the section Troubleshooting.

Run a backup

Rerun amcheck several times, until all the errors amcheck finds are solved.

Please note that this process is part of the normal way of setting up AMANDA: AMANDA is a complex combination of multiple parts and therefore the initial setup has to meet several requirements like existing directories, proper permissions and so on. The output of the amcheck-binary should provide you with any needed pointers to what is missing where.

Now it is time to make a real backup with amdump(8):

$ amdump daily

This command takes as long as the backup runs. Do not enter large disks in the disklist at this time.

You might also do:

$ amdump daily &

to run that process in the background and log off in the meantime.

When finished, you should receive a mail with the backup report.

When you want to reuse the already labeled tape for another test run, make Amanda forget about it using the amrmtape(8) command, and amlabel it again with the same label:

$ amrmtape daily Daily-01
$ amlabel -f daily Daily-01

Testing recovery

You really need to test that you can restore a file from the backup. We assume that you have indexing on in the dumptype, and use amrecover, which looks like a ftp client program. We'll restore into a temporary location (a very good idea in the real, non-testing world also). To run amrecover you need to be root (and have an entry for that host in .amandahosts on the server, see "The File .amandahosts on the Server" above.

# mkdir /var/tmp/myrestoretest
# cd /var/tmp/myrestoretest

Don't forget to rewind the tape!

# ammt -t file:/space/amanda-vtapes/tape rewind
# amrecover test
...
Invalid directory - /var/tmp/myrestoretest
amrecover> 

Amanda assumes that you are located in the top directory of a entry in the disklist, and complains here the current directory is not a valid disklist entry. No problem, that's what we intended. We set the disk manually, and explore the index, using ftp-client-like commands.

amrecover> setdisk /var
200 Disk set to /var.
amrecover> ls
...
amrecover> cd log
amrecover> add messages.1
Added /log/messages.1
amrecover> extract

Extracting files using tape drive file:/space/amanda-vtapes/tape on host amandahost.
The following tapes are needed: Test-01

Restoring files into directory /var/tmp/myrestoretest
Continue [?/Y/n]? y

Extracting files using tape drive file:/space/amanda-vtapes/tape on host amandahost.
Load tape Test-01 now
Continue [?/Y/n/s/t]? y
./log/messages.1
amrecover> quit

Common configuration errors

  • Directories/files created during the configuration are not writeable by the backup user (amandabackup in our example)
Running some programs as root, instead of the Amanda user, creates some files owned by root instead of the Amanda user. When later running as the Amanda user, there could be permission problems with these files. Do not test or run Amanda suite programs as root (except amrecover, which must be run as root).
  • Specifying the wrong tapedevice: Amanda needs the non-rewind version of the tape device in your amanda.conf file.
  • Forgetting to set "disable = no" for amanda services in xinetd configuration files.
  • Forgetting to have (x)inetd reread the config after adding the entries. Use netstat -a command to verify the ports if xinetd/inetd listening on the ports it should be listening on.
  • Wrong hostname (Use fully qualified domain names) in .amandahosts file. Not specifying IP address and host names in /etc/hosts file
  • Sendmail/postfix/... configuration on the mail server refusing mail from your Amanda server. Amanda sends notification emails as non-root user (Amanda user). Sendmail or Postfix or mail server software should be configured to allow emails from non-root user. Also the SMTP-server of your ISP might block mails from [email protected] if the mailbox does not exist there.
  • When upgrading a client and changing the user from 'amanda' to 'amandabackup', remember to delete all amandarelated files at /tmp. They will have wrong permission. Amanda will create new ones when needed.

For more information on resolving other issues, see Troubleshooting section.

Start production run

  • Remove the "record no" option from the dumptype, if you added this for testing purposes.
  • Add more hosts and disks to the disklist
When you add them all at once, be prepared for loud complaints in the report from Amanda about not being able to get all the data on one tape. But after a few runs, Amanda should settle down.
Alternatively, add hosts and disks a few at a time to avoid an indigestion.
  • Label more tapes. Labeling them one each day a new tape is needed is fine too. After "tapecycle" runs, Amanda will ask for the first, oldest tape again.
  • Verify/activate the crontab entries on the server.
  • Insert the next tape for tonight, and let the amcheck in crontab verify the configuration.
  • Verify the backup report you receive the next day carefully.
  • Study more of the Amanda programs, and tune the amanda.conf to your needs.
  • Exercise/practice a recover using amrecover, amrestore or even a bare metal recovery using dd and gnutar/restore before the real disasters happen.