воскресенье, 25 июля 2010 г.

Настройка простейшего сервера Amanda

Небольшой пример настройки сервера amanda, который будет бекапить сам себя. Но при желании, сможет бекапить что угодно.
Для Centos 5 я беру пакеты вот отсюда: Zmanda Downloads, потому что тут более-менее адекватно собранная последняя версия есть всегда.
Устанавливаем:
# yum install xinted
# chkconfig xinetd off (если не нужен)
# rpm -Uivh amanda-backup_server-3.1.1-1.rhel5.i386.rpm



Структура каталога настроек

/etc/amanda/название_конфигурации - каталог, где будут храниться все файлы, которые относятся к какому-либо набору. Например, назовем его daily.

/etc/amanda/название_конфигурации/amanda.conf - единственный файл, который нужно создать руками в этом каталоге - собственно, это и есть настройки сервера для данной конфигурации. Владельцем каталога с конфигурацией нужно сделать пользователя, под которым будет рабоать amanda - в случае использования пакетов от Zmanda это amandabackup.

Структура каталогов для данных
Тут все несколько проще - вы вправе выбрать, где это все будет находиться.
Нужно три каталога
  1. Домашний каталог пользователя amanda (или amandabackup, backup, как вы хотите его обозвать) - обычно создается при установке пакета, вместе с пользователем
  2. Каталог для штуки, которая называется Holding Disk - временное место, в котором хранятся файлы бекапа до записи на "ленту". Необходимо чтобы место, в котором он смонтирован, было достаточно свободным, чтобы в него можно было записать полный бекап всех машин, которые мы обрабатываем
  3. Каталог для виртуальной библиотеки лент. В последствии, в нем мы создадим "ленты". Здесь они и будут храниться, так что места тут должно быть достаточно
  4. Каталог для баз данных с информацией по содержимому лент. Лучше, пожалуй, хранить его недалеко от самих "лент"




Файл конфигурации - /etc/amanda/название_конфигурации/amanda.conf
90% его содержимого понятно, особенно если открыть пример конфига в документации Amanda. Поэтому укажу только его простейшую версию и основные важные моменты.

org      "My Company Weekly Set"   # заголовок для отчетов
mailto   "backup-operator@company.com"   # кому отправлять отчет после того,
# как дамп будет закончен
dumpuser "amandabackup"                  # под каким пользователем делать бекап
inparallel 4
dumporder "sssS"
taperalgo first
displayunit "k"
netusage  8000 Kbps
dumpcycle 4 weeks  # длина цикла резервного копирования
runspercycle 4     # число нормальных запусков резервного копирования за период
# (4 weeks / 4 amdump runs per cycle -- выходит раз в неделю)
tapecycle 6 tapes  # число лент, используемых в ротации. 
# Лучше, чтобы было больше чем runspercycle, на случай ошибок
bumpsize 20 Mb
bumppercent 20
bumpdays 1
bumpmult 4
etimeout 300
dtimeout 1800
ctimeout 30
device_output_buffer_size 1280k
usetimestamps yes
flush-threshold-dumped 0
flush-threshold-scheduled 0
taperflush 0
autoflush no
runtapes 1
tpchanger "chg-disk"  # виртуальный tape-changer для виртуальных же лент, которые
# на самом деле - директории на жестком диске
tapedev "file://srv/dumps/daily/tapes" # место расположения лент

changerfile "/etc/amanda/daily/changer.conf"
changerdev "/dev/null"

maxdumpsize -1
tapetype harddrive              # говорит о том что ленты на самом деле виртуальные
labelstr "^daily-[0-9][0-9]*$"  # по этому регекспу Amanda будет отличать 
# правильные "ленты" из этого backup set от 
# всех прочих. Его нужно запомнить
# и использовать при разметке
amrecover_do_fsf yes
amrecover_check_label yes 
amrecover_changer "chg-disk"    # tape-changer, который используется при операциях 
# восстановления данных

# Holding disk - это временное место на диске, куда записывается резервная копия 
# до того как будет переписана на "ленту"
holdingdisk hd1 {
comment "main holding disk"
directory "/srv/dumps/daily/hold" # расположение диска
use -100 Mb                 # сколько места использовать
# негативное значение значит примерно "использовать 
# все доступное, но оставить 100 свободных мегабайт"
chunksize 1Gb               # Позволяет разбивать файлы на части указанного размера
}

infofile "/srv/dumps/daily/info/curinfo"    # database DIRECTORY
logdir   "/srv/dumps/daily/info/logs"               # log directory
indexdir "/srv/dumps/daily/info/index"              # index directory
tapelist "/etc/amanda/daily/tapelist"  # list of used tapes
define tapetype harddrive {
comment "Local hard drive"
length 150000 mbytes
}

# Типы данных. Самая интересная часть. Это, собственно, то самое, что вы 
# будете указывать в disklist. 
# То что будет делать amanda. И да, их можно наследовать, подобно классам в ООП :)
define dumptype global {
comment "Global definitions"
# Я уже говорил, что предпочитаю ssh другим способам коммуникации между сервером и клиентом. 
auth "ssh"
# Ключ, который использует сервер для подключения 
# (его публичный кусок и добавим в authorized_keys на клиентах)
ssh_keys "/var/lib/amanda/.ssh/id_rsa"
# пользователь, под которым запускается резервное копирование на клиенте
client_username "amandabackup"
amandad_path "/usr/libexec/amanda/amandad"
}

# наследуемый из global тип дампа с помощью tar без сжатия
define dumptype root-tar {
global
program "GNUTAR"
comment "root partitions dumped with tar"
compress none
index
#exclude list "/etc/amanda/exclude.gtar"
priority low
}

# А это то же самое, но со сжатием GZ
define dumptype comp-root-tar {
root-tar
comment "Root partitions with compression"
compress client fast
}

define interface local {
comment "a local disk"
use 8000 kbps
}

# Можно даже включать в конфигурацию какие-то отдельные файлы. 
# Это может быть удобно чтобы хранить dumptypes в отдельном файле и использовать, 
# разделяя их между разными конфигурациями

#includefile "/etc/amanda/amanda.conf.main" 


С такой конфигурацией остается только создать все необходимые каталоги и промаркировать "ленты".
[root@amanda-server ~]# mkdir /srv/dumps
[root@amanda-server ~]# chown amandabackup:disk /srv/dumps
[root@amanda-server ~]# su - amandabackup
-sh-3.2$ cd /srv/dumps
-sh-3.2$ mkdir -p mkdir -p daily/hold daily/info/{curinfo,logs,index} daily/tapes
-sh-3.2$ for i in `seq 1 6` ; do mkdir slot$i ; done # 6 "лент"
-sh-3.2$ ln -s slot1 data
-sh-3.2$ for i in `seq 1 6` ; do amlabel daily daily-0$i slot $i; done
Reading label...
Found an empty tape.
Writing label 'daily-01'...
Checking label...
Success!
...

После этого надо сделать возможной авторизацию по ключам SSH:
-sh-3.2$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/amanda/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/amanda/.ssh/id_rsa.
Your public key has been saved in /var/lib/amanda/.ssh/id_rsa.pub.


Чтобы протестировать возможность резервного копирования на самом себе, содержимое id_rda.pub нужно скопировать в /var/lib/amanda/.ssh/authorized_keys.
-sh-3.2$ cp /var/lib/amanda/.ssh/id_rsa.pub ~/.ssh/authorized_keys

Далее сделаем так, чтобы ключ хоста стал известен:
-sh-3.2$ ssh amanda-server
The authenticity of host 'amanda-server (127.0.0.1)' can't be established.
RSA key fingerprint is 78:39:b0:50:8c:5f:be:ab:90:da:2b:55:36:24:46:94.
Are you sure you want to continue connecting (yes/no)? yes

Создадим файл /etc/amanda/daily/disklist:
amanda-server /etc comp-root-tar

И протестируем то что получилось:
-sh-3.2$ amcheck daily
Amanda Tape Server Host Check
-----------------------------
Holding disk /srv/dumps/daily/hold: 17190912 KB disk space available, using 17088512 KB
slot 6: volume 'daily-06'
Will write to volume 'daily-06' in slot 6.
NOTE: skipping tape-writable test
NOTE: host info dir /srv/dumps/daily/info/curinfo/amanda-server does not exist
NOTE: it will be created on the next run.
NOTE: index dir /srv/dumps/daily/info/index/amanda-server does not exist
NOTE: it will be created on the next run.
Server check took 1.233 seconds

Amanda Backup Client Hosts Check
--------------------------------
Client check: 1 host checked in 6.614 seconds.  0 problems found.

Вроде-бы все ОК

Если вдруг вам говорят что EOF on read, Host key verification failed, внимательно проверьте хостнейм клиента.
Теперь можно попробовать сделать первый бекап:
-sh-3.2$ amdump daily

Отчет придет на почту, указанную в файле конфигурации

Комментариев нет:

Отправить комментарий