Проект AMANDA или Advanced Maryland Automatic Network Disk Archiver, стартовал в 1992 году в департаменте компьютерных технологий университета Maryland США, под руководством Джеймса да Сильва (James da Silva), когда потребовался инструмент для резервирования информации с многочисленных клиентских систем на единственный сервер. Постепенно проект утратил поддержку в родных стенах, и исходные тексты были перемещены на Sourceforge [2]. В настоящее время AMANDA разрабатывается многими добровольцами, и хотя не заявлена лицензия GNU GPL, любой желающий может модифицировать код по своему усмотрению, распространять и продавать, при условии, что авторство будет сохранено.
AMANDA является удобной надстройкой к стандартным Unix программам dump/restore, GNU tar и некоторым другим. Поэтому его основные характеристики следует рассматривать именно исходя из возможностей базовых утилит. Ведь dump понимает только файловые системы ext2/3, с ReiserFS, Reiser4 и XFS он не дружит. При попытке выполнить резервирования с помощью dump на такой файловой системе вы получите что-то вроде:
/dev/hda5: Bad magic number in super-block while opening filesystem
При работе с XFS, dump в AMANDA подменяется другой утилитой – xfsdump работающей в паре с xfsrestore. А вот файлы с ReiserFS можно резервировать с помощью GNU—tar, к тому же tar различает метки времени и при архивировании позволяет исключить отдельные файлы и каталоги. Есть еще одна особенность, dump может архивировать разделы без их предварительного монтирования, работает dump быстрее tar, но копию “живой” системы с его помощью создавать несколько рисковано. А вот если создается копия с tar, то такой раздел должен быть предварительно смонтирован.
Последние версии AMANDA могут создавать резервные копии информации с компьютеров под управлением Windows посредством SAMBA, либо с помощью клиента компилированного под cygwin.
Сравнить основные возможности AMANDA с другими системами резервного копирования вы можете в статье [3]. AMANDA работает по клиент-серверной схеме. Выглядит это приблизительно так. На сервере запускается команда amdump с указанием задания на резервирование, в задании указывается: источник данных, расположение клиента отвечающего за создание резервной копии, а также параметры создания резервной копии. Клиент может быть установлен на одном компьютере с сервером, либо на всех компьютерах которым требуется архивация. В первом случае для доступа к компьютерам используется все доступные методы аутентификации: Kerberos 4/5, OpenSSH, rsh, пароль Samba. В последней версии добавились еще два: bsdtcp и bsdudp. Во втором случае на клиенте создается специальный файл .amandahosts, в котором записаны системы, которые могут к нему обращаться за данными. Клиент ожидает подключение сервера на 10080 UDP порту или 10081/tcp если используется Kerberos — kamanda, слушая его посредством inetd/xinetd. Если аутентификационная информация его удовлетворяет, то для передачи информации открывается новое соединение. При этом используется свой протокол работающий поверх UDP или TCP. Все настройки параметров резервирования производятся исключительно на сервере. Хотя в последней на момент написания статьи версии AMANDA 2.5.1 появился и необязательный клиентский конфигурационный файл amanda-client.conf, но основное его назначение, безопасное восстановление информации с помощью утилиты amrecover.
AMANDA поддерживает шифрование информации, как на клиенте, так и на сервере, для этих целей используется несимметричный GPG или симметричный amcrypt алгоритм. Гибко реализовано сжатие информации, это можно произвести как на клиенте таки и на сервере. Если сжимать информацию на клиенте это уменьшит нагрузку на сеть, если на сервере, то снизит нагрузку на маломощную машину клиента. Резервирование можно настроить в пределах одной конфигурации, но если на сервере имеются несколько устройств архивации, необходимо использовать несколько независимых конфигураций. Посредством AMANDA можно реализовать полное или инкрементное резервирование информации.
AMANDA изначально построена и оптимизирована для работы с ленточными накопителями, но путем несложных манипуляций можно в качестве источника хранения использовать раздел жесткого диска, CD/DVD и Zip, или раздел Samba. При чем раздел диска может быть размечен на несколько частей, имитирующих несколько лент.
Процессом резервирования можно руководить вручную, хотя обычно его запускают с помощью cron. Результат операции будет записан в журнал, также возможна и отсылка итогового e-mail сообщения.
Установка AMANDA
Настроить AMANDA для работы со стриммером довольно просто, но в небольших и средних организациях не всегда есть средства, да и необходимость в покупке такого дорогого устройства. Здесь лучше использовать жесткий диск или копировать информацию на CD/DVD диски. Вот этим мы и займемся. При написании статьи использовался дистрибутив KUbuntu 6.06 LTS. Вы возразите, что это дистрибутив для настольного применения, но именно в процессе настройки AMANDA в KUbuntu, пришлось столкнуться, с ситуацией которой не было в других дистрибутивах.
Исходные тексты AMANDA и прекомпилированные пакеты для Red Hat Enterprise Linux 3.0/4.0, Fedora Core 3/4/5, SUSE Linux и Enterprise Server 10 и клиент для Windows можно получить с [5]. В репозитарии Ubuntu также есть пакеты AMANDA, правда на момент написания статьи это была более ранняя версия 2.4.5p1. Также в репозитарии имеется и еще один компонент будущей системы архивирования CDRW-Taper [4], который представляет собой замену стандартному компоненту AMANDA – taper, делая возможным запись резервных копий вместо ленты на СD-RW, DVD+R/W или DVD-R/W носители. В документации AMANDA описано, как использовать вместо ленты жесткий диск, но CDRW-Taper также с этим справляется на отлично, к тому же при его использовании не требуется никаких особых манипуляций.
Все это можно установить одной командой.
$ sudo apt-get update
$ sudo apt-get install amanda-server cdrw-taper
И если планируется резервировать информацию и сервера, а также Samba ресурсов, то добавляем и amanda—client.
Если планируется установка с исходных текстов, то в общем случае никаких параметров задавать не надо, deb пакет сервера AMANDA собран с такими параметрами:
./configure—prefix=/usr —bindir=/usr/sbin—mandir=/usr/share/man —libexecdir=/usr/lib/amanda—enable-shared —sysconfdir=/etc —localstatedir=/var/lib —with-debugging=/var/log/amanda
—with—gnutar—listdir=/var/lib/amanda/gnutar—lists – расположение файла, в который заносится информация для GNU—tar, на клиентском компьютере
—with-index-server=localhost — сервер хранения индексов
—with—user=backup —with—group=backup — пользователь и группа, от имени которых будет работать AMANDA.
—with-bsd-security – активация rsh/rlogin
—with-amandahosts – использование специального файла .amandahosts вместо .rhosts или /etc/hosts.equiv
—with-smbclient=/usr/bin/smbclient – расположение файла smbclient, также возможно понадобится опция —with-samba-user для указания пользователя Samba.
—with—tcpportrange=50000,50100 —with—udpportrange=840,860 – привязка TCP и UDP портов в пределах указанных значений, по умолчанию ограничений нет.
Кроме того, возможны параметры —with—client—only (—without—server) для построения только клиентской системы, или —with—server—only (—without—client) – только серверного.
Если в качестве транспорта или аутендификации планируется использовать защищенные протоколы, то добавьте —with—krb4-security, —with—krb5-security, —with—rsh—security, —with—ssh—security, —with—bsdtcp—security или —with—bsdudp—security.
После конфигурирования стандартная установка.
Для работы CDRW-Taper понадобится Perl, пакет cdrtools, и если планируется использование DVD дисков то и dvd+rw-tools, а также для отправки отчетов по электронной почте и SMTP сервер. В качестве последнего можно использовать sendmail, QMail или Postfix. CDRW-Taper является Perl-скриптом. Вся установка производится вручную. Сначала переименовываем файл taper находящийся в каталоге на который указывает переменная libexecdir, то есть в случае с KUbuntu /usr/lib/amanda/ на taper.orig
$ sudo /usr/lib/amanda/taper /usr/lib/amanda/taper.orig
Затем в этот же каталог же необходимо поместить Perl скрипт taper, а также файл taperlib.pm, а amlabel-cdrw в каталог в котором находится файл из комплекта AMANDA amlabel. В нашем случае это /usr/sbin. В документации сказано, что следует заглянуть внутрь taperlib.pm и amlabel-cdrw, чтобы убедиться в том, что все переменные соответствуют системному окружению. В случае с Kubuntu ничего изменять не пришлось. Единственное убедитесь, что каталог, в котором лежит taperlib.pm виден в переменной Perl @INC. Перед установкой необходимо добавить пользователя и группу от имени которых будет работать AMANDA. Этот пользователь должен также быть включенным группу disk.
Файлы настроек AMANDA
Основной файл настроек называется amanda.conf в нем содержатся настройки задания. AMANDA будет его искать в каталоге —sysconfdir=/etc, то есть /etc/amanda. В этом случае команду для резервирования amdump, да и остальные, можно будет запускать без каких-либо дополнительных параметров. Считается хорошим тоном для каждого задания на резервирование, создавать свой подкаталог в /etc/amanda. В Debian и дистрибутивах от него произошедших, по умолчанию создается подкаталог /etc/amanda/DailySet1 содержащий примеры конфигурационных файлов. Его мы и будем использовать в примере. Каждый подкаталог хранит настройки отдельного задания, то есть в том случае если у нас два стриммера, создаются два каталога со своими настройками и так далее. К команде в этом случае добавляется название каталога. Кроме него, в этом же каталоге находится файл disklist, в котором указываются ресурсы, которые должны резервироваться при выполнении этого задания, и файл tapelist с информацией о лентах. Последний файл необходимо просто создать, заполняется он автоматически или с помощью утилит amlabel и amlabel—cdrw.
$ sudo touch /etc/amanda/daily/tapelist
$ sudo chown backup:backup /etc/amanda/daily/tapelist
Конфигурационный файл amanda.conf
Рассмотрим пример файла /etc/amanda/DailySet1/amanda.conf применительно к использованию CDRW—Taper.
org «DailySet1″ # название организации, будет использовано в отчете,
# будет видно в поле Subject:, поэтому есть смысл проставить
# имя задания
mailto «grinder« # пользователь или адрес куда будет отправлено e—mail сообщение dumpuser «backup« # пользователь от имени которого будет выполняться задание
inparallel 4 # максимальное количество параллельно резервируемых ресурсов,
# максимальное число 63 может быть увеличено
# в параметре MAX_DUMPERS в server—src/driverio.h
netusage 600 # максимальная сетевая загрузка в кбайт в сек.
dumpcycle 1 weeks # количество дней через которое производится полное
# резервирование, по умолчанию 10 дней, если установить в 0, то
# полное резервирование будет производиться при каждом запуске
runspercycle 5 # этот необязательный параметр, показывает количество запусков
# amdump в одном dumpcycle, ведь в выходные программу
# резервирования запускать не обязательно.
tapecycle 9 tapes # общее число лент используемых при резервировании, в нашем
# случае это DVD диски. На каждый день dumpcycle минимум один
# диск + резерв, чтобы не перекрывались до следующего полного
# копирования.
bumpsize 20 MB # минимальный порог для перехода на следующий инкрементный
# уровень (по умолчанию 10Мб), взамен возможно использование
# bumppercent, для указания размера в процентах.
bumpdays 1 # позволяет устранить избыточность, AMANADA минимальное
# количество дней для перехода на следующий инкрементный
# уровень, значение по умолчанию 2 дня.
#tpchanger «no—changer»
# интересная опция позволяющая подменить или изменить настройки ленточного
# накопителя (tape changer). В каталоге /vat/lib/amanda/ доступно 13 различных
# обработчиков, например chg—disk позволяет вместо ленты писать на
# жесткий диск, но нам он сейчас не нужен
# Далее параметры идут специфично для CDRW—Taper
tapedev «/media/cdrom0″ # механизм выбора ленты, но в нашем случае это каталог
# куда монтируется CD/DVD устройство, совпадающий с /etc/fstab
rawtapedev «/dev/hdc:0,0,0″ # указывает на реальный файл устройства,
# в случае с CDRW—Taper, плюс номер устройства в
# понимании cdrecord, то есть cdrecord -scanbus
tapetype DVD # тип устройства, его описание, дается в отдельной секции файла
labelstr «^local[0-9]*$» # регулярное выражение, соответствующее меткам которыми
# будут помечаться диски/ленты, то есть в этом случае
# возможно, 11 меток/дисков вида local, local0 – local9.
# обратите внимание, что в метке не допускаются пробелы, табуляция
# и некоторые другие символы.
diskdir «/var/cache/cdrw—taper « # каталог куда будут складываться резервируемые
# копии файлов
disksize 10 GB # сколько места можно использовать в diskdir, лучше когда в него
# помещается вся информация dumpcycle, тогда резервные файлы
# можно будет хранить и там не удаляя.
infofile «/var/lib/amanda/DailySet1/curinfo» # база имен файлов
logfile «/var/log/amanda/DailySet1/log» # журналы
indexdir «/var/lib/amanda/DailySet1/index» # индексные файлы
# tapetypes
# устройства хранения информации, описывается скорость, размер блока и объем.
define tapetype HP-DAT {
comment «DAT tape drives»
length 1900 mbytes
filemark 100 kbytes
speed 500 kbytes
}
# для DVD в документации ничего не сказано, я записал так
define tapetype DVD {
comment «DVD-RW»
length 4700 mbytes
speed 1385 kbytes
}
Описания dumptype в amanda.conf
Дальше в файле идут описания различных типов резервирования, которые затем будут использоваться в файле disklist. Каждое описание может содержать до 23 параметров. Привожу только некоторые из них, чтобы показать некоторые возможности AMANDA:
— auth – аутендификация по умолчанию bsd, возможны krb4, krb5 и ssh;
— comment – комментарий;
— comprate – степень сжатия, отдельно для полного и для инкрементного. По умолчанию “comprate 0.50, 0.50”, если второй цифры нет, то используется первая.
— compress – конкретизируются параметры сжатия. Названия говорят сами за себя. Например, по умолчанию используется, client fast, есть none, server server best и другие.
— program — программа для создания копии, dump по умолчанию, возможно GNUTAR.
— encrypt – шифрование файлов: none (умолчание), client, server.
— kencrypt – шифрование потока.
— exclude – список шаблонов файлов, которые не будут резервироваться;
— index – создание индекса файлов;
— strategy – стратегия создания дампа: standard (первая версия полная, последующие инкрементные ), nofull (всегда изменения), noinc (всегда полный), skip (пропуск), incronly (только инкрементное, но в отличие от nofull, полная копия при первом запуске не создается).
Названия заготовок также говорят сами за себя.
define dumptype always-full {
comment «Full dump of this filesystem always»
options no-compress
priority high
dumpcycle 0
maxcycle 0
}
define dumptype comp-user-tar {
program «GNUTAR»
comment «partitions dumped with tar»
options compress-fast, index, exclude-list «/etc/amanda/exclude.gtar»
priority medium
}
define dumptype comp-user {
comment «Non-root partitions on reasonably fast machines»
options compress-fast
priority medium
}
Настройка ресурсов для архивирования
Ресурсы для архивирования описываются в другом файле – disklist. Каждая запись состоит из трех полей. В первом поле имя узла отвечающего за создание архива, причем рекомендовано применение полного имени. Если архивируется ресурс Samba, то здесь указывают узел, на котором установлен клиент AMANDA работающий с smbclient. Если это локальная система, также необходимо использовать реальное имя системы отличное от localhost. Во втором поле архивируемый ресурс, здесь может использоваться имя раздела диска (hda3), имя устройства (/dev/hda3), но лучше использовать имена каталогов файловой системы (/home), так как при переконфигурации диска не потребуется изменение настроек AMANDA и с tar проблем не будет. В случае сетевого Unix/Samba ресурса следует использовать схему //имя_системы/ресурс — //host1/C$. И последнее поле тип архивирования, взятый с amanda.conf, его название должно быть правильным, иначе получите ошибку.
Например:
client1 //client1/backupc comp-user-tar
amandaserver //windows1/C$ comp-user-tar
amandaserver /home comp—user—tar
За создание архива ресурса //client1/backupc отвечает компьютер client1, именно к нему будет отправлен запрос при запуске amdump. Архивирование //windows1/C$ и /home будет производить сам сервер, поэтому на нем также должен быть установлен клиент AMANDA.
Учтите, что такая запись, работать не будет.
amandaserver /dev/hda5 comp-user-tar
Ошибка в журнале описана так.
sendsize[5573]: time 0.151: /bin/tar: hda9: Cannot chdir: No such file or directory
sendsize[5573]: time 0.152: /bin/tar: Error is not recoverable: exiting now
Описание типа comp—user—tar предполагает использование tar, а он работает только со смонтированными ресурсами. Замените на comp—user, который подразумевает dump и или укажите вместо файла устройства /dev/hda5 точку монтирования.
Для описания параметров доступа к Samba ресурсам, используется файл /etc/amandapass. В нем должно содержаться описание системы, пароль и опционально может быть указана рабочая группа. Примерно так:
//windows1/C$ p@ssw0rd WORKGROUP
При стандартной (bsd) аутентификации доступа к Unix системам, применяется файл amandahosts, который является, по сути, аналогом .rhosts только для AMANDA. По умолчанию этот файл должен находиться в каталоге в домашнем каталоге пользователя backup — ~backup/.amandahosts. Но в большинстве дистрибутивов каталог пользователя AMANDA не создается, поэтому можно использовать /etc/amandahosts. Он состоит из строк описывающих узлы и пользователя, который имеет к ним доступ, с версии 2.5.1 добавился и третий параметр – имя сервиса. Так на клиенте этот файл будет выглядеть так:
amandaserver backup amdump
На сервере:
client1 backup amindexd amidxtaped
amandaserver backup amdump # это для работы клиента на этом же узле
Если использовать в последнем примере вместо имени узла localhost.
localhost backup amdump
То клиент, запущенный на этом же компьютере работать откажется, а в журнале появится такая запись.
amandad: time 0.003: bsd security: remote host localhost user backup local user backup
amandad: time 0.029: check failed: [access as backup not allowed from backup@localhost] amandahostsauth failed
Владельцем файлов amandahosts и amandapass должен быть пользователь backup, права доступа устанавливаются как 0600 или лучше 0400.
Настройка сетевых сервисов
Теперь осталось настроить сетевые сервисы. В первую очередь убеждаемся, что в файле /etc/services, они записаны.
amanda 10080/udp
amandaidx 10082/tcp
amidxtape 10083/tcp
Далее необходимо настроить работу демонов отвечающих за архивирование через xinetd. На клиенте это amandad, на сервере настраивается запуск демонов amindexd, amidxtaped отвечающих за создание индексов и работу с устройствами хранения. Для восстановления информации потребуется и работа amandad на сервере. Заносим в файл /etc/xinetd, либо в отдельные файлы в каталоге /etc/xinet.d/ информацию о сервисах. Здесь также начиная с версии 2.5.1, есть изменения, направленные на усиление безопасности.
Так на клиенте файл должен иметь примерно такой вид:
service amanda
{
only_from = amandaserver # добавилось в 2.5.1
socket_type = dgram
protocol = udp
wait = yes
user = backup
group = backup
groups = yes
server = /usr/lib/amanda/amandad
server_args = -auth=bsd amdump
disable = no
}
На сервере параметр server_args должен дополнительно включать amindexd amidxtaped, а only_from описания всех клиентов. Привожу пример для bsdtcp аутендификации.
service amanda
{
only_from = client1 client2 amandaserver
socket_type = stream
protocol = tcp
wait = no
user = amandabackup
group = disk
groups = yes
server = /usr/lib/amanda/amandad
server_args = -auth=bsdtcp amdump amindexd amidxtaped
disable = no
}
Кстати при установке с помощью пакетов, был создан конфигурационный файл для inetd с необходимыми записями. Полный комплект. Но при попытке заставить перечитать xinetd свои конфигурационные файлы “/etc/init.d/xinetd reload” выяснилось, что хотя в системе автоматически созданы все полагающие каталоги и файлы как для xinetd так и inetd, но они сами в системе не установлены. Странно, что при построении зависимостей об этом не позаботились. Поэтому в Ubuntu xinetd необходимо проверить его наличие и при отсутствии - установить. С AMANDA, закончили.
Настройка CDRW-Taper
Серверы уже работают, и могут выполнять свою функцию, остался CDRW—Taper. Его конфигурационный файл называется /etc/cdrw—taper.conf, хотя можно обойтись и без него, указав все настройки непосредственно в taperlib.pm и amlabel-cdrw. Но это не правильно.
# местонахождение конфигурационных файлов AMANDA
$CONFIG_ROOT = «/etc/amanda«;
# каталог в котором создаются промежуточные файлы = diskdir в amanda.conf
$DUMP_DIR = «/var/cache/cdrw-taper»;
# удалять 1 или оставлять 0 промежуточные файлы после записи на CD/DVD диск
$DELETE_DIRS = 0;
# при =1 использование не перезаписываемого CD/DVD—R диска
$WRITE_NON_ERASABLE = 0;
# Устройство CD/DVD-RW
# $CD_DEVICE_RE = «/dev/s(cd|g)\\d+:?.*»;
# $CD_DEVICE_RE = «^/dev/(ide|scsi)/host\\d/bus\\d/target\\d/lun\\d/(cd|generic):»;
$CD_DEVICE_RE = «/dev/hdc»;
# размер блока
$BLOCKSIZE = 2048;
# блоков в устройстве
# (650MB CDRW: 650 MB = 650 * 1024k / 2k = 332800)
#$MEDIABLOCKS = 332800;
# (700MB CD-RW: 700 MB = 700 * 1024k / 2k = 358400)
$MEDIABLOCKS = 358400;
# Blocks per media (DVD+RW: 4700 MB = 4700 * 1000 * 1000 / 2k = 2294921)
$MEDIABLOCKS = 2294921;
# названия исполняемых файлов
$MOUNT = «mount«;
$UMOUNT = «umount»;
$CDRECORD = «cdrecord»;
$MKISOFS = «mkisofs»;
$SENDMAIL = «/usr/sbin/sendmail»;
$GROWISOFS = «growisofs»;
$DVDRWMEDIAINFO = «dvd+rw—mediainfo«;
# указание, что все загружено успешно
1;
Создаем каталог для промежуточных файлов /var/cache/cdrw—taper.
$ sudo mkdir /var/cache/cdrw-taper
$ sudo chown backup:backup /var/cache/cdrw-taper
Проверка настроек
В комплекте AMANDA идет несколько утилит позволяющих проверить настройки и работу отдельных компонентов. Например, запуск amcheck без параметров позволит проверить настройки сервера и доступность клиентских систем, а также ресурсов на них. Выполняться они должны от имени пользователя backup.
$ sudo su backup —c «amcheck DailySet1″
Amanda Tape Server Host Check
——————————
Holding disk /var/cache/cdrw-taper: 10952816 kB disk space available, that’s plenty
ERROR: /media/cdrom0: Permission denied
(expecting a new tape)
NOTE: skipping tape-writable test
Server check took 0.004 seconds
Amanda Backup Client Hosts Check
———————————
ERROR: grinder: [Can’t open exclude file ‘/etc/amanda/exclude.gtar’: No such file or directory]
Client check: 1 host checked in 0.148 seconds, 1 problem found
Первая ошибка “ERROR: /media/cdrom0: Permission denied” результат адаптации AMANDA и ее утилит под работу со стриммерами. Поэтому с СD/DVD дисками некоторые тесты не проходят. На нее внимания можно не обращать, система работала нормально, хотя ошибка постоянно выдавалась. Файл /etc/amanda/exclude.gtar описан в правиле архивирования. Даже если не планируется его использование, лучше его создать пустым, иначе в журналах она будет фигурировать постоянно. Запись Holding disk говорит о доступном месте в каталоге (разделе) в который будут складываться промежуточные файлы.
После редактирования файлов конфигурации следует проверять права доступа, например, такая ошибка, говорит о том, что процесс не может получить доступ к файлу для записи.
ERROR: tape list /etc/amanda/DailySet1/tapelist: not writable
Еще одна полезная утилита amadmin обладает еще большими возможностями. С ее помощью можно проверить настройки, руководить выполнением заданий и резервированием отдельных ресурсов, принудительно устанавливать уровень архивирования, устанавливать ленты и проверять следующую по списку ленту, просматривать выполненные задания, импортировать и экспортировать базу с других серверов AMANDA. Вот так можно вывести все настройки, в том числе и используемые по умолчанию.
$ sudo su backup -c « amadmin DailySet1 disklist«
line 18:
host grinder:
interface default
disk /media/other:
program «GNUTAR»
exclude list «/etc/amanda/exclude.gtar»
priority 1
dumpcycle 28
maxdumps 1
maxpromoteday 10000
bumpsize 15360
bumpdays 1
bumpmult 4.000000
strategy STANDARD
estimate CLIENT
compress CLIENT FAST
comprate 0.50 0.50
auth BSD
kencrypt NO
holdingdisk YES
record YES
index YES
skip-incr NO
skip-full NO
Первое задание
Перед первым архивированием необходимо разметить DVD диски в количестве равном tapecycle. В AMANDA для этих целей используется утилита amlabel, но она CD диски размечать не умеет. В CDRW—Taper для разметки есть своя утилита amlabel—cdrw. В качестве параметра она принимает название задания и метки соответствующей labelstr. Если попробовать другую метку получите.
$ sudo /usr/sbin/amlabel-cdrw DailySet1 metka
taper: ERROR: Label metka does not match labelstring «^local[0-9]*$».
$ sudo /usr/sbin/amlabel-cdrw DailySet1 local1
WARNING: /dev/hdc already carries isofs!
About to execute ‘mkisofs -J -R -pad -quiet /tmp/amlabel-cdrw.6763 | builtin_dd of=/dev/hdc obs=32k seek=0’
/dev/hdc: «Current Write Speed» is 2.5x1385KBps.
builtin_dd: 192*2KB out @ average 0.0x1385KBps
/dev/hdc: flushing cache
/dev/hdc: stopping de-icing
/dev/hdc: writing lead-out
/dev/hdc: reloading tray
На диске сейчас записан единственный файл AMANDA_LABEL содержащий строку local1. Повторяем эту операцию со всеми 9 дисками, меняя метку. Вся информация о дисках будет заноситься в файл tapelist. После первого диска запись будет такая:
00000000 local1 reuse
Первое задание желательно запустить вручную и оценить результат и работу всех компонентов.
$ sudo su backup -c «amdump DailySet1»
После запуска этой команды в каталоге /var/cache/cdrw—taper должен появиться подкаталог local1, с такой структурой файлов внутри.
$ sudo ls -al /var/cache/cdrw-taper/local1
total 138260
drwx—— 2 backup backup 2048 2006-11-30 22:12 .
drwxr-xr-x 7 root root 192 2006-10-28 19:23 ..
-rw——- 1 backup backup 7 2006-11-30 22:12 AMANDA_LABEL
-rw——- 1 backup backup 141575082 2006-11-30 22:12 grinder.hda9.0.dump.gz
-rw——- 1 backup backup 191 2006-11-30 22:12 grinder.hda9.0.info
Последовательно будут появляться и другие подкаталоги, но опять же всплыл еще один нюанс Ubuntu. Не смотря на то, что dump упоминается в AMANDA как основная утилита, она также не была включена в зависимости и не устанавливается вместе с AMANDA. Результат такой:
sendsize[12307]: time 0.006: running «/sbin/dump 0Ssf 1048576 — /dev/hda9»
sendsize[12307]: time 0.010: exec /sbin/dump failed or no dump program available: No such file or directory
sendsize: time 0.010: pid 12309 finish time Thu Nov 30 21:16:59 2006
sendsize[12307]: time 0.011: running /usr/lib/amanda/killpgrp
Пришлось отдельно устанавливать и dump.
$ sudo apt—get install dump
По окончанию создания архива, создается iso-образ, который автоматически записывается на DVD диск. Если объем архива превышает для установленного в $MEDIABLOCKS типа дисков, будет создан следующий подкаталог. И так далее. Даже если при предыдущем архивировании не был занят весь объем, то для следующего задания будет задействован диск уже с другой меткой. Текущий затребуется для перезаписи, только когда пройдет полный круг. Может возникнуть ситуация когда требуется перезаписать архив на болванку вручную. Сделать это просто. Например, так можно повторно записать архивы с метками local1 и local2.
$ sudo /usr/lib/amanda/taper DailySet1 -flush local1 local2
taper: pid 15001 executable taper version cdrw-taper-0.4
…
Flushed local1.
Done.
Причем обратите внимание, диски должны вставляться в такой же последовательности как при вызове команды. Иначе, получите ошибку.
$ sudo /usr/lib/amanda/taper DailySet1 -flush local local1
taper: pid 14954 executable taper version cdrw-taper-0.3
ERROR taper label on media in /dev/hdc:0,0,0 is not local
Cannot load media with label local!
Когда задание выполнено успешно, автоматизируем его запуск через cron.
$ sudo crontab -u backup -e
0 10 * * 1-5 /usr/sbin/amcheck -m DailySet1
45 0 * * 2-6 /usr/sbin/amdump DailySet1
Восстановление информации
Для восстановления информации служит утилита amrecover, с ее помощью можно восстанавливать как отдельные файлы, так и целые разделы. По характеру работы amrecover напоминает консольный ftp клиент. Восстанавливать информацию может только пользователь с правами администратора, для которого в файле amandahostsauth также должна существовать запись. Иначе.
$ sudo amrecover
Password:
AMRECOVER Version 2.4.5p1. Contacting server on localhost …
220 grinder AMANDA index server (2.4.5p1) ready.
500 Access not allowed: [access as backup not allowed from root@localhost] amandahostsauth failed
При попытке зайти с правами backup, получим — amrecover must be run by root. Добавляем следующую строку в файл /etc/ amandahostsauth.
amandaserver root amindexd amidxtaped
Но для восстановления можно использовать запись с localhost.
localhost root amindexd amidxtaped
Предположим необходимо восстановить один из файлов ранее находящихся в каталоге /home. По назначению используемых команд будут даны комментарии, они выделенны курсивом.
$ sudo amrecover DailySet1
AMRECOVER Version 2.4.5p1. Contacting server on localhost ...
220 grinder AMANDA index server (2.5.1p1) ready.
200 Access OK
Setting restore date to today (2006-12-07)
200 Working date set to 2006-12-07.
Scanning /var/cache/cdrw-taper...
20061202142102: found Amanda directory.
# это были найдены резервные файлы не удаленные с диска.
200 Config set to DailySet1.
200 Dump host set to grinder.
Trying disk / ...
Trying disk rootfs ...
Can't determine disk and mount point from $CWD '/home/grinder'
amrecover> sethost localhost
# выбираем узел данные, с которого собираемся восстанавливать
501 Host localhost is not in your disklist.
Trying host localhost ...
501 Host localhost is not in your disklist.
Trying host grinder ...
200 Dump host set to grinder.
# записи localhost нет в disklist, но amrecover разобрался
amrecover> setdisk /home
200 Disk set to /home.
# выбираем восстанавливаемый раздел с узла
# если перейти каталог занесенный в disklist перед запуском amrecover, “cd /home”
# то раздел будет выбран автоматически
amrecover> ls
2006-12-02 .
2006-12-02 test_file
# смотрим что есть
amrecover> add test_file
Added / add test_file
# добавляем файл в список восстановления, чтобы добавить все, ставим точку
# восстанавливаем
amrecover> extract
Extracting files from holding disk on host localhost.
The following files are needed: /var/cache/cdrw-taper/20061202142102/grinder._media_other.0
Restoring files into directory /home
Continue [?/Y/n]? y
Extracting from file /var/cache/cdrw-taper/20061202142102/grinder._media_other.0
./ test_file
amrecover> quit
200 Good bye.
В данном случае файл был найден на жестком диске, иначе вас попросят вставить CD/DVD с нужной меткой.
Итог
Как видите AMANDA довольно мощный и гибкий инструмент, который в умелых руках позволит выполнить любую задачу по резервированию важной информации. Поддержка других платформ только добавляет ему преимуществ. Также хочется отметить отличную документацию идущую в комплекте. Из нее можно подробно узнать о работе всех компонентов AMANDA. Кстати в файле using.txt, найдете и главу из книги Джона Джексона (John R. Jackson) “Unix Backup and Recovery”, которая посвящена AMANDA (http://www.backupcentral.com/amanda.html).
Ссылки:
1. Сайт проекта AMANDA http://www.amanda.org/
2. Страница на Sourceforge http://sourceforge.net/projects/amanda
3. Яремчук С. Обзор систем резервного копирования – Журнал “Системный администратор”, № 9, 2006 г. – 22 – 29 с.
4. Сайт проекта Amanda CDRW-Taper http://www.tivano.de/software/amanda/
5. Страница для закачки исходных текстов и прекомпилированных пакетов http://www.zmanda.com/downloads.html
Статья опубликована в журнале Системный Администратор (http://www.samag.ru/)