
И так... статья....
====================================================
Установка и настройка сервера резервного копирования Amanda на FreeBSD.
Цель- создавать бэкапы юниксовых серверов в хранилище на жестком диске.
Аманду ставим из портов.
Думаю излишне будет напоминать что для начала неплохо бы их обновить.
Код: Выделить всё
asterisk# cd /usr/ports/misc/amanda-server/
asterisk# make install clean
Тут уж смотрите по вашему вкусу и потребностям.
Amanda-server автоматически потянет за собой amanda-client.
Никаких сложностей в процессе установки возникнуть не должно. Всё быстро и стандартно.
Следующий этап - конфигурация нашего сервера...
Править будем 4 файла:
amanda.conf
disklist
.amandahosts
inetd.conf
Файлы конфигурации Amanda расположены в директории /usr/local/etc/amanda/DailySet1.
Кроме того нам нужно создать директорию где будут храниться наши "архивы" (бэкапы).
У меня это - /opt/amanda_backups.
А также проверить наличие директорий:
/var/log/amanda/DailySet1 ;
/tmp/amanda ;
/var/hold (это если будете использовать hold-disk,
кстати разместить его можете где угодно, на ваше усмотрение).
Если чего то нет- создать.
Пользователь от имени которого работает сервер- operator,
группа- operator.
Следовательно все директории (и их содержимое), необходимые для работы сервера,
должны принадлежать "operator".
Проверяем и если это не так- меняем:
Код: Выделить всё
asterisk# chown -R operator:operator /usr/local/etc/amanda
asterisk# chown -R operator:operator /opt/amanda_backups
asterisk# chown -R operator:operator /var/log/amanda
asterisk# chown -R operator:operator /var/hold
asterisk# chown -R operator:operator /tmp/amanda
Код: Выделить всё
asterisk# pw user mod operator -s /bin/sh

И так, начнем.
Файл amanda.conf
Код: Выделить всё
org "Company" # имя вашей компании, используется в отчетах e-mail
mailto "root@localhost" # собственно сам e-mail для отчетов
inparallel 4 # количество одновременно работающих процессов dumper
netusage 100000 # какую пропускную способность канала использовать
dumpcycle 5 days # цикл за который создается бэкап 0 -уровня
tapecycle 7 # число лент, используемых в цикле (dumpcycle),
# неплохо иметь некоторый запас
usetimestamps # параметр который можно указать на период отладки и тестирования
# без него Аманда будет слать алерты о том,
# что amdump запускается чаще чем один раз в сутки
runspercycle 5 # сколько раз за цикл (dumpcycle) будет запущен amdump
runtapes 1 # сколько лент будет использовано за один запуск amdump
tpchanger "chg-disk" # чейнджер для смены виртуальных лент на жестком диске
changerfile "/usr/local/etc/amanda/DailySet1/changer" # служебный файл чейнджера,
# создавать его не надо
tapedev "file:/opt/amanda_backups" # устройство вывода
logdir "/var/log/amanda/DailySet1" # куда писать логи
indexdir "/usr/local/etc/amanda/DailySet1/index" # директория для служебных index-файлов
infofile "/usr/local/etc/amanda/DailySet1/curinfo" # директория для служебных info-файлов
diskfile "/usr/local/etc/amanda/DailySet1/disklist" # в этом файле указываем что бэкапить
tapelist "/usr/local/etc/amanda/DailySet1/tapelist" # служебный файл управления лентами
# создайте пустым
# Параметры необходимые для процесса восстановления
amrecover_do_fsf yes
amrecover_check_label yes
amrecover_changer "chg-disk"
# Описание ленточных накопителей
tapetype HARD-DISK # тип накопителя;
labelstr "^ARCHIVE-[0-9][0-9]*$" # шаблон для маркировки лент;
# "характеристики" накопителя; для архивации на жесткий диск достаточно минимума;
define tapetype HARD-DISK {
comment "On Hard Disk"
length 3000 mbytes # объем накопителя
}
# Глобальные опции
define dumptype global {
comment "Global definitions"
index yes # создавать ли индекс бэкапа;
record yes # изменять ли информацию в файлах dumpdates
# или gnutar-lists во время тестов;
ignore no # пропускать ли бэкапирование;
priority high # приоритет;
}
# Параметры архивации с использованием TAR
define dumptype hard-disk-tar {
global
comment "Backup to hard disk- using tar"
compress none
dumpcycle 5
program "GNUTAR"
holdingdisk yes # используем "резервный" временный носитель
# если лента по какой либо причине не доступна;
}
# Параметры архивации с использованием DUMP
define dumptype hard-disk-dump {
global
comment "Backup to hard disk- using dump"
compress none
dumpcycle 5
program "DUMP"
holdingdisk yes
}
# Характеристики hold-диска
# hold-disk выступает в качестве резервного накопителя,
# на случай если по какой то причине ленты будут не доступны
# архивация будет все равно выполнена; после устранения неполадок,
# архив автоматически будет записан на ленту
holdingdisk hd1 {
comment "For holding disk"
directory "/var/hold"
use 7 g # максимальный используемый объем
chunksize 1 g # на части какого размера разбивать архивы
}
# Описание сетевых интерфейсов
define interface local {
comment "a local disk"
use 100000 kbps
}
define interface xl0 {
comment "100 Mbps ethernet"
use 100 Mbps
}
Аманда имеет массу других опций и настроек.
За дополнительной информацией обращайтесь man amanda(8).
Теперь укажем Аманде что мы хотим архивировать.
Файл disklist.
Код: Выделить всё
# ахивируем нужные каталоги с самого сервера с Амандой
# клиент диск профиль интерфейс
amanda.mydomain.com /etc hard-disk-tar -1 xl0
# архивируем нужную информацию с серверов-клиентов в локальной сети
mxs.mydomain.com /var/spool/domain hard-disk-tar -1 xl0
#.. и так далее.....
и пустой файл tapelist.
В файле amanda-client.conf в последствии можно выполнить более тонкую настройку клиентов (см. man).
Код: Выделить всё
asterisk# touch /usr/local/etc/amanda/DailySet1/amanda-client.conf
Код: Выделить всё
asterisk# ln -s /usr/local/etc/amanda/DailySet1/amanda-client.conf \
/usr/local/etc/amanda/amanda-client.conf
Код: Выделить всё
asterisk# touch /usr/local/etc/amanda/DailySet1/tapelist
На клиенте в корневой директории создаем файл .amandahosts
Код: Выделить всё
asterisk# touch /.amandahosts
Мы должны разрешить коннект серверу Аманда.
Пишем следующее:
(пример файла .amandahosts, расположенного на самом сервере с Амандой)
Код: Выделить всё
## хост пользователь опции
localhost operator amindexd amidxtaped amdump
amanda.mydomain.com operator amindexd amidxtaped amdump
# и для рута; нужно для восстановления
localhost root amindexd amidxtaped
amanda.mydomain.com root amindexd amidxtaped
Код: Выделить всё
## разрешаем коннект серверу Аманда для снятия дампа с клиента
amanda.mydomain.com operator amindexd amidxtaped amdump
# собственно этого вполне достаточно
# но если вы решите производить какие либо действия со стороны клиента,
#то добавтье это:
client.mydomain.com root amindexd amidxtaped
Выставляем права на файл "600" и не забываем сменить владельца (operator).
Amanda запускается inet'ом, поэтому в файл /etc/inetd.conf нужно дописать:
Код: Выделить всё
amanda dgram udp wait operator /usr/local/libexec/amanda/amandad amandad \
-auth=bsd amdump amindexd amidxtaped
amandaidx stream tcp nowait operator /usr/local/libexec/amanda/amindexd amindexd \
-auth=bsd amdump amindexd amidxtaped
amidxtape stream tcp nowait operator /usr/local/libexec/amanda/amidxtaped amidxtaped \
-auth=bsd amdump amindexd amidxtaped
Код: Выделить всё
asterisk# /etc/rc.d/inetd start
Код: Выделить всё
asterisk# netstat -a | grep amanda
tcp4 0 0 *.amandaidx *.* LISTEN
udp4 0 0 *.amanda *.*
Теперь выполним некоторые действия по настройке сервера.
Прежде всего нам нужно создать "виртуальные ленты".
В директории /opt/amanda_backups создадим несколько дополнительных поддиректорий,
которые и будут нашими лентами.
Их количество должно соответствовать значению tapecycle, указанному в файле amanda.conf
В нашем случае это "7".
Код: Выделить всё
asterisk# mkdir /opt/amanda_backups/slot1
asterisk# mkdir /opt/amanda_backups/slot2
asterisk# mkdir /opt/amanda_backups/slot3
asterisk# mkdir /opt/amanda_backups/slot4
asterisk# mkdir /opt/amanda_backups/slot5
asterisk# mkdir /opt/amanda_backups/slot6
asterisk# mkdir /opt/amanda_backups/slot7
Код: Выделить всё
asterisk# ln -s /opt/amanda_backups/slot1 /opt/amanda_backups/data
p.s. не забываем менять владельца на "operator".
Теперь их (ленты) нужно промаркировать.
Код: Выделить всё
asterisk# su operator
asterisk$ amlabel DailySet1 ARCHIVE-1 slot 1
asterisk$ amlabel DailySet1 ARCHIVE-2 slot 2
asterisk$ amlabel DailySet1 ARCHIVE-3 slot 3
asterisk$ amlabel DailySet1 ARCHIVE-4 slot 4
asterisk$ amlabel DailySet1 ARCHIVE-5 slot 5
asterisk$ amlabel DailySet1 ARCHIVE-6 slot 6
asterisk$ amlabel DailySet1 ARCHIVE-7 slot 7
Код: Выделить всё
asterisk$ amtape DailySet1 show
slot 1: date Х label ARCHIVE-1
slot 2: date Х label ARCHIVE-2
slot 3: date Х label ARCHIVE-3
slot 4: date Х label ARCHIVE-4
slot 5: date Х label ARCHIVE-5
slot 6: date Х label ARCHIVE-6
slot 7: date Х label ARCHIVE-7
Код: Выделить всё
asterisk$ amcheck -s DailySet1
Amanda Tape Server Host Check
-----------------------------
Holding disk /var/hold: 7680740 kB disk space available, that's plenty
amcheck-server: slot 1: date X label ARCHIVE-1 (new tape)
NOTE: skipping tape-writable test
Tape ARCHIVE-1 label ok
Server check took 0.107 seconds
Код: Выделить всё
asterisk$ amcheck -c DailySet1
--------------------------------
Client check: 1 host checked in 0.041 seconds, 0 problems found
Код: Выделить всё
asterisk$ amdump DailySet1
а Аманда отрапортует вам о проделанной работе на емайл.
Следующий этап- Восстановление.
Для восстановления в Аманде используются утилиты amrecover и amrestore.
Мы будем использовать amrecover,
т.к. amrestore используется в основном с ленточными накопителями
для извлечения архива с ленты на жесткий диск и последующего восстановления.
Если восстановить информацию нужно с локалхоста, то переходим в каталог,
который нужно восстановить и даем команду amrecover
(работаем от пользователя root).
Пример:
Код: Выделить всё
asterisk# cd /etc
asterisk# amrecover
AMRECOVER Version 2.5.1p3. Contacting server on asterisk.mydomain.com ...
220 asterisk AMANDA index server (2.5.1p3) ready.
Setting restore date to today (2008-05-05)
200 Working date set to 2008-05-05.
200 Config set to DailySet1.
200 Dump host set to asterisk.mydomain.com.
Use the setdisk command to choose dump disk to recover
amrecover>
Код: Выделить всё
amrecover> sethost asterisk.mydomain.com # хост информацию с которого нужно восстановить
200 Dump host set to asterisk.mydomain.com
amrecover> setdisk /etc # директория которую нужно восстановить
200 Disk set to /etc
amrecover> add * # восстановить всё что есть в архиве
Added dir /zfs/ at date 2008-05-05-09-35-00
Added file /ttys
Added file /termcap
Added file /syslog.conf
Added file /sysctl.conf.bak
Added file /sysctl.conf
Added dir /ssl/ at date 2008-05-05-09-35-00
Added dir /ssh/ at date 2008-05-05-09-35-00
Added file /spwd.db
....
amrecover> extract
Extracting files using tape drive chg-disk on host asterisk.mydomain.com.
The following tapes are needed: ARCHIVE-1
Restoring files into directory /etc
WARNING: Existing entry /etc/aliases will be deleted
WARNING: Existing file /etc/amandates will be overwritten
WARNING: Existing file /etc/amd.map will be overwritten
WARNING: Existing file /etc/apmd.conf will be overwritten
WARNING: Existing file /etc/auth.conf will be overwritten
WARNING: All existing files in /etc/bluetooth will be deleted.
WARNING: Existing file /etc/crontab will be overwritten
....
Continue [?/Y/n]? # запрос на подтверждение; жмем "y"
amrecover> quit
200 Good bye.
asterisk#
то лучше создать временную директорию для распаковки архива.
Код: Выделить всё
asterisk# mkdir /tmp/recover
asterisk# cd /tmp/recover
asterisk# amrecover
.....
amrecover> sethost mxs.mydomain.com
......
и далее по аналогии.
можно отбирать шелл у operator'а
Код: Выделить всё
asterisk# pw user mod operator -s /sbin/nologin
Код: Выделить всё
16 0 * * 1-5 operator /usr/local/sbin/amcheck -m DailySet1
18 0 * * 1-5 operator /usr/local/sbin/amdump DailySet1
P.S. Некоторые полезные команды для работы с сервером Amanda.
Код: Выделить всё
amtape DailySet1 show # показать состояние
amtape DailySet1 current # показать текущую ленту
amtape DailySet1 slot next # загрузить следующую ленту
amtape DailySet1 slotX # загрузить указанную ленту (где Х- это номер)
amcheck DailySet1 # проверить настройки серверной и клиентской части
amcheck -s DailySet1 # проверить только серверную часть
amcheck -с DailySet1 # проверить только клиентскую часть
amcheck -c DailySet1 my.server.com # проверить указанного клиента
amdump DailySet1 # запустить бэкапирование
amdump DailySet1 my.server.com /etc # запустить бэкапирование указанного клиента
Доступно множество команд.
Код: Выделить всё
asterisk# amadmin -h
Usage: amadmin <conf> <command> {<args>} [-o configoption]* ...
Valid <command>s are:
version # Show version info.
config # Show configuration.
force [<hostname> [<disks>]* ]+ # Force level 0 at next run.
unforce [<hostname> [<disks>]* ]+ # Clear force command.
force-bump [<hostname> [<disks>]* ]+ # Force bump at next run.
force-no-bump [<hostname> [<disks>]* ]+ # Force no-bump at next run.
unforce-bump [<hostname> [<disks>]* ]+ # Clear bump command.
disklist [<hostname> [<disks>]* ]* # Debug disklist entries.
reuse <tapelabel> ... # re-use this tape.
no-reuse <tapelabel> ... # never re-use this tape.
find [<hostname> [<disks>]* ]* # Show which tapes these dumps are on.
delete [<hostname> [<disks>]* ]+ # Delete from database.
info [<hostname> [<disks>]* ]* # Show current info records.
due [<hostname> [<disks>]* ]* # Show due date.
balance [-days <num>] # Show nightly dump size balance.
tape [-days <num>] # Show which tape is due next.
bumpsize # Show current bump thresholds.
export [<hostname> [<disks>]* ]* # Export curinfo database to stdout.
import # Import curinfo database from stdin.
asterisk#