RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Аманду ставим из портов. Думаю излишне будет напоминать что для начала неплохо бы их обновить.
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".
Так как в процессе настройки и отладки Аманды нам придется пользоваться shell'ом, временно дадим "operator'у" шелл:
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"
# директория для служебных index-файлов
indexdir "/usr/local/etc/amanda/DailySet1/index"
# директория для служебных info-файлов
infofile "/usr/local/etc/amanda/DailySet1/curinfo"
# в этом файле указываем что бэкапить
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
#.. и так далее.....
Кроме того, в каталоге /usr/local/etc/amanda/DailySet1 нужно создать пустой файл amanda-client.conf и пустой файл tapelist. В файле amanda-client.conf в последствии можно выполнить более тонкую настройку клиентов (см. man).
На клиенте в корневой директории создаем файл .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
p.s. на других клиентах строки с "localhost" указывать не нужно.
Выставляем права на файл "600" и не забываем сменить владельца (operator).
Amanda запускается inet'ом, поэтому в файл /etc/inetd.conf нужно дописать:
С правкой конфигов покончено. Теперь выполним некоторые действия по настройке сервера.
Прежде всего нам нужно создать "виртуальные ленты". В директории /opt/amanda_backups создадим несколько дополнительных поддиректорий, которые и будут нашими лентами. Их количество должно соответствовать значению tapecycle, указанному в файле amanda.conf В нашем случае это "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
После благополучного завершения в директории /opt/amanda_backups/slot1 появятся архивы, а Аманда отрапортует вам о проделанной работе на емайл.
Следующий этап- Восстановление.
Для восстановления в Аманде используются утилиты 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'а
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
# запустить бэкапирование указанного клиента
amadmin - интерфейс для администрирования сервера Аманда. Доступно множество команд.
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#