Amanda


Предыдущая | Следующая

AMANDA — это гибкая масштабируемая система резервного копирования (http://www.amanda.org/ http://amanda.zmanda.com/. Краткий обзор системы приведён на странице http://ru.wikipedia.org/wiki/Amanda.

2.2.1. Введение

AMANDA — название системы, которая позволяет организовать процедуру резервного копирования на одном сервере для множества компьютеров в сети. Система имеет архитектуру клиент-сервер. Клиент — это машина, которая нуждается в резервном копировании; сервер — это машина, где находятся внешние системы памяти для хранения резервных копий. В сети может быть большое число клиентов и много серверов. Эта система вполне может использоваться в качестве инструмента для резервного копирования масштаба предприятия. На сервере AMANDA могут использоваться различные внешние устройства:

  • магнитофоны;

  • жёсткие диски;

  • оптические диски;

  • облачная память (http://www.amazon.com/s3).

Перечислим основные технические особенности этой системы:

  • AMANDA — это акроним от Advanced Maryland Automatic Network Disk Archiver (продвинутый автоматический сетевой дисковый архиватор из университета Мериленда);

  • Написана на C и Perl.

  • Система работает на всех операционных платформах Linux/Unix, а также Windows/XP/Vista/7. Копирование с платформы Windows осуществляется с использованием средств SAMBA.

  • Является свободно распространяемым продуктом (исходные тексты и готовые к исполнению программы) в соответствии с лицензией университета в Мериленде и GPL.

  • Разработана с использованием стандартных средств архивирования (dump/restoreGNU tar и др.); описаны возможности расширения, чтобы использовать новые (дополнительные) средства архивирования;

  • Имеет открытый стандартный формат резервной копии на внешнем носителе (на ленте), таким образом при необходимости можно использовать команды mtGNU tar для восстановления файлов с резервной копии;

  • Имеется возможность создания резервной копии и восстановления 32 и 64 битных машин под Windows;

  • Запоминает в специальном каталоге все файлы, для которых были созданы резервные копии;

  • Проверяет магнитную ленту, кода планируется выводить резервную копию; если лента не предназначена для резервного копирования, то система не будет её использовать;

  • При восстановлении сообщает оператору, какую ленту следует установить и найдёт верную версию резервной копии на ленте;

  • Может быть легко сконфигурирована для использования практически любой ленточной системы (простой магнитофон, ленточная библиотека, ленточный робот и т.п.);

  • Посредством набора API можно использовать как ленточные устройства, включая RAIT (Redundant Arrays of Inexpensive Tape — избыточный массив недорогих магнитофонов), так и виртуальные ленты и диски, DVD-RW, а также облачную память типа AMAZON S3;

  • Поддерживает аутентификацию в сети с использованием OpenSSH;

  • Поддерживает шифрование резервной копии с использованием GPG или других средств шифрования;

  • По запросу может выполнить уплотнение информации, для которой создаётся резервная копия, посредством gzip или другой программы;

  • Поддерживает протокол Kerberos 5, включая зашифрованную передачу данных по сети;

  • Детально сообщает о всех выполненных операциях и возникших ошибках по электронной почте;

  • Динамически подгоняет расписание резервного копирования с различных клиентских машин, чтобы минимизировать ручное изменение конфигурации при изменении числа машин или дисков на клиентской машине;

  • Поддерживает IPv6;

  • Если размер резервной копии больше ёмкости одной ленты (тома), то резервная копия распределяется по нескольким лентам; при восстановлении оператор (человек) будет информирован, в какой последовательности потребуются магнитные ленты;

  • Набор API позволяет сконфигурировать резервное копирование для специализированных приложений, например, СУБД;

  • Можно добавить скрипты, которые будут выполнены до выполнения резервной копии и/или после выполнения резервной копии, например, для проверки согласованности значений в базе данных.

Первые варианты AMANDA начали работать в 1991 году. С тех пор AMANDA активно развивалась (развивается по настоящее время — 2010) и использовалась во множестве организаций (на сайте sourceforge.net в феврале 2010 года показано более 200 тысяч скачиваний этой системы).

AMANDA может быть скачана со следующих сайтов:

ttp://sourceforge.net/projects/amanda

http://www.amanda.org/download.php

RPM пакеты могут быть получены со страницы

http://www.zmanda.com/download-amanda.php

2.2.2. Архитектура системы и конфигурационные файлы

AMANDA продолжает активно развиваться. Коллектив разработчиков поддерживает несколько списков рассылки, которые могут помочь найти ответ на специфические технические вопросы относительно системы, её портирования на новые платформы, разработки новых компонентов.

Серверная часть системы AMANDA выполняется на отдельном компьютере, т.е. сервере резервного копирования, который имеет возможность записывать данные на магнитофон с картриджами большой ёмкости или другое внешнее устройство, на которое будет выводиться резервная копия. Сервер системы AMANDA использует, если возможно, локальное дисковое пространство для временного сохранения данных резервного копирования, которые передаются с клиентской машины. Вывод данных на ленту из дискового кэша производится после завершения операции резервного копирования с клиентской машины. Эта особенность организации копирования позволяет выполнять несколько операций параллельно. Если нет возможности использовать локальный кэш, то AMANDA будет работать правильно и без кэша. Общая архитектура системы AMANDA показана на Рис. 2.8. На рисунке имеется ссылка на компанию Zmanda, Inc. (http://www.zmanda.com/). В настоящее время Zmanda финансирует разработку системы AMANDA, а также выполняет коммерческую поддержку и адаптацию системы для потребителей, если имеется такая нужда. Сходная бизнес-модель используется в паре RedHat/Fedora. Более подробно про сходство и отличие Amanda и Zmanda можно прочесть на странице http://www.zmanda.com/amanda-enterprise-faq.html в разделе «What is Amanda Enterprise?».

Общая схема работы системы AMANDA состоит в следующем. На сервере AMANDA в соответствии с расписанием запускается главная программа системы, которая проверяет конфигурацию и доступность клиентских машин, часть из которых может быть недоступна по любым причинам. По содержанию конфигурационных файлов определяется тип копии (полная, инкрементная) для каждой доступной в сети клиентской машины. Доступность клиента определяется путём опроса специального демона системы AMANDA, который должен быть установлен и запущен на каждой клиентской машине. При этом на клиентской машине имеются средства определения (аутентификации), что к ней обратился правильный сервер системы. В общем случае в сети могут быть сконфигурированы несколько серверов AMANDA.

В обычных условиях данные с клиентских машин передаются на сервер системы, где записываются в специальный дисковый кэш (промежуточную память). Вывод содержимого дискового кэша на внешние носители совершается независимо от других операций системы.

Архитектура системы резервного копирования AMANDA

Рисунок 2.8. Архитектура системы резервного копирования AMANDA

Во время работы серверная часть системы использует конфигурационный файл amanda.conf, который содержит не один десяток параметров, позволяющий произвести тонкую настройку работы сервера. На каждой машине клиенте имеется клиентский конфигурационный файл amanda-client.conf несколько меньшего размера. Большинство параметров устанавливается автоматически во время процедуры установки серверной части на сервере или клиентской части на клиентской машине соответственно.

Основными разделами конфигурационного файла amanda.conf являются следующие:

  • глобальные установки системы;

  • описание внешних устройств;

  • параметры инкрементального копирования;

  • параметры, описывающие использование компьютерной сети;

  • типы сменных носителей;

  • расположение дискового кэша;

  • определение типа программы для резервного копирования, следует ли индексировать скопированные данные, относительные приоритеты процесса резервного копирования для различных машин в сети и другие параметры.

Например, ниже приведено описание программы для резервного копирования, которое является частью файла amanda.conf.

define dumptype  normal {                               # 1
           comment     "обычная резервная копия"        # 2
           holdingdisk  yes                             # 3
           index        yes                             # 4
           program      "DUMP"                          # 5
           priority     medium                          # 6
           starttime      2000                          # 7
	                  }

Пояснения к строкам конфигурационного файла amanda.conf:

  1. Определить тип копирования (здесь - normal).

  2. Комментарий (произвольная строка).

  3. Использовать дисковый кэш.

  4. Построить индекс скопированных имён файлов.

  5. Для копирования использовать программу dump.

  6. Установить приоритет по отношению к другим заданиям копирования «medium».

  7. Установить время запуска процедуры копирования в 20.00.

В описании сказано, что используется дисковый кэш, во время копирования создаётся индексный файл, необходимый для интерактивного выборочного восстановления, для выполнения резервной копии используется программа dump. Программа выполняется со средним приоритетом по отношению к другим процессам резервного копирования (если машин в сети много, то и процессов резервного копирования может быть несколько в одно и то же время). Система AMANDA имеет несколько образцов для подобного конфигурационного описания. Так что потребитель сможет выбрать один из уже подготовленных образцов.

Данные, которые должны быть скопированы, описываются в конфигурационном файле disklist. Ниже приведён пример такого файла:


# формат: имя-хоста  файловая-система тип-копии шпиндель
компьютер1   /home   stable  -1
компьютер2   /home   normal  -1

В первой колонке — имя хоста в сети, вторая колонка — точка монтирования файловой системы, далее тип резервной копии и параметр, который содержит "-1", т.е. значение этого параметра игнорируется. Последним параметром "шпиндель" является номер шпинделя (диска) — параметр был введён в системе, чтобы AMANDA не запустила копирование сразу двух файловых систем с одного дисковода, что не эффективно. Каждая строка является элементом файла disklist (каждая строка в этом файле имеет название Disk List Entry — DLE).

2.2.3. Основные компоненты системы AMANDA

Сиcтема AMANDA включает несколько важных программ (утилит).

  • Среди клиентских програм центральной является утилита amandad. Этот демон взаимодействует с сервером системы AMANDA во время выполнения резервного копирования и вызывает по указанию сервера другие программы:

    • selfcheck — проверить конфигурацию клиента;

    • sendsize — оценить объем резервной копии;

    • sendbackup — выполнить операцию резервного копирования;

    • amcheck — проверить конфигурацию AMANDA.

  • Серверные программы используются в различных фазах резервного копирования. Головной программой является amdump, которая инициирует все операции резервного копирования и обычно вызывается периодически по cron. Головная программа контролирует выполнение других программ:

    • planner — опеределить, что копировать;

    • driver — интерфейс к внешнему устройству;

    • dumper — связывается с клиентским процессом amandad;

    • taper — запись данных на внешнее устройство;

    • amreport — подготовка сообщения о выполненном копировании;

  • Административные программы:

    • amcheck — проверка системы AMANDA, чтобы убедиться, что система готова к работе (установлена ли верная лента, готовы ли клиентские файловые системы для резервного копирования);

    • amlabel — записать метку на сменный носитель перед использованием в системе AMANDA;

    • amcleanup — очистить систему AMANDA после системной аварии (не плановой перезагрузке сервера) или после не планового завершения операции резервного копирования;

    • amflush — переписать данные из дискового кэша на внешний носитель;

    • amadmin — выполнение большого количества различных административных операций.

  • Конфигурационные файлы amanda.confdisklist.

  • Программы (утилиты) восстановления данных:

    • amrestore — программа, которая может быть использована для восстановления данных с носителей, на которых записаны резервные копии, выполненные системой AMANDA;

    • amrecover — программа для интерактивного восстановления данных с резервных копий; в своей работе эта утилита использует демоны amindex и amidxtaped.

2.2.4. Установка системы AMANDA

Конфигурирование и установка системы AMANDA состоит из нескольких шагов, детальное описание которых следует смотреть на сайте http://www.amanda.org. Конфигурирование клиентской машины, откуда данные будут копироваться на сервер AMANDA, является совсем простым:

  • создать пользователя, под которым будет выполняться AMANDA, и группы для этого пользователя; необходимо, чтобы этому пользователю было доступно чтение любых директорий, которые предполагается копировать;

  • установить клиентскую часть AMANDA;

  • добавить сервисы, связанные с AMANDA, в конфигурационный файл Линукс /etc/services и в директорию /etc/xinetd.d;

  • выбрать и сконфигурировать схему аутентификации, которая будет использоваться системой AMANDA в начале обмена данными между клиентом и сервером. По умолчанию предполагается использование файла .amandahosts, который содержит список доверенных имён хостов для системы AMANDA.

Несколько больше необходимо установить для сервера AMANDA.

  • создать пользователя и группу для него;

  • установить серверную часть AMANDA;

  • добавить сервисы, связанные с AMANDA, в конфигурационный файл Линукс /etc/services и в директорию /etc/xinetd.d;

  • подготовить конфигурационные файлы;

  • подготовить сменные носители путём специальной инициализации каждого сменного носителя (ленты, диска, проч.) утилитой AMANDA amlabel.

  • сконфигурировать crontab, чтобы запускать демон AMANDA amdump по расписанию, которое вам удобно.

Система AMANDA имеет массу дополнительных возможностей по наблюдению за выполнением резервного копирования, восстановления данных (утилита amrecover), тонкой настойки для повышения производительности системы в целом, поддерживает детальные логи и т.д.

2.2.5. Конкретный пример установки и использования системы AMANDA

Перед установкой системы AMANDA в среде ОС НауЛинукс, чтобы узнать, какие компоненты потребуются для установки, воспользуемся следующей командой (под root):

yum list | grep amanda

В ответ можно увидеть что-то вроде нижеследующего:

amanda.i386                                    2.5.0p2-4             installed  
amanda-client.i386                             2.5.0p2-4             installed  
amanda-devel.i386                              2.5.0p2-4             installed  
amanda-server.i386                             2.5.0p2-4             installed

Здесь видно, что все необходимые пакеты системы уже установлены. Если это не так, то их потребуется установить командой:

yum install amanda.i386 amanda-client.i386 amanda-devel.i386 amanda-server.i386

Как видно из названий, здесь потребовались модули для 32-битной машины. Для 64-битной машины имена будут содержать суффикс x86_64, а не i386.

После завершения установки можно посмотреть, куда были помещены файлы системы:

# rpm -ql amanda.i386
/etc/amanda
/etc/amandates
/usr/lib/libamanda-2.5.0p2.so
/usr/lib/libamclient-2.5.0p2.so
/usr/lib/libamserver-2.5.0p2.so
/usr/lib/libamtape-2.5.0p2.so
/usr/lib/librestore-2.5.0p2.so
/usr/sbin/amrestore
/usr/share/man/man5/amanda.conf.5.gz
/usr/share/man/man8/amrestore.8.gz
/var/lib/amanda
/var/lib/amanda/.amandahosts
/var/log/amanda
# rpm -ql amanda-server.i386
/etc/amanda
/etc/amanda/DailySet1
/etc/amanda/DailySet1/amanda.conf
/etc/amanda/DailySet1/disklist
/etc/amanda/crontab.sample
/etc/xinetd.d/amandaidx
/etc/xinetd.d/amidxtape
.......................................
/usr/share/doc/amanda-server-2.5.0p2/examples/amanda.conf
/usr/share/doc/amanda-server-2.5.0p2/examples/amanda.conf.in
/usr/share/doc/amanda-server-2.5.0p2/examples/chg-mcutil.conf
/usr/share/doc/amanda-server-2.5.0p2/examples/chg-mcutil.conf.in
/usr/share/doc/amanda-server-2.5.0p2/examples/chg-multi.conf
/usr/share/doc/amanda-server-2.5.0p2/examples/chg-scsi.conf
/usr/share/doc/amanda-server-2.5.0p2/examples/disklist
......................................................
/var/lib/amanda/DailySet1
/var/lib/amanda/DailySet1/index

Итак, мы видим, что конфигурационные файлы disklist и amanda.conf находятся в директории /etc/amanda/DailySet1. В этом месте создадим новую директорию для тестирования:

mkdir /etc/amanda/CSD-test

и скопируем в неё все файлы и поддиректории из /etc/amanda/DailySet1

cd /etc/amanda/DailySet1;
tar cvf - . / (cd /etc/amanda/CSD-test; tar xf - )

Затем подкорректируем конфигурационный файл /etc/amanda/CSD-test/amanda.conf. Ниже приведём лишь те строки, которые нам придётся скорректировать:

org "Средняя школа номер 17"                            # 1
mailto "amanda"                                         # 2
dumpuser "amanda"                                       # 3
holdingdisk hd1 {                                       # 4
    comment "Основной дисковый кэш для AMANDA"          # 5
    directory "/virtual/amandadump"                     # 6
    use -10000 Mb                                       # 7
    chunksize 1Gb                                       # 8
    }                                                   # 9
tpchanger "chg-disk"                                    # 10
tapedev "file:/virtual/dump"                            # 11
rawtapedev "file:/virtual/dump"                         # 12
changerfile "/etc/amanda/CSD-test/changer"              # 13
changerdev "/dev/null"                                  # 14
tapetype HARD-DISK                                      # 15
labelstr "School-17-[0-9][0-9]*$"                       # 16
define tapetype HARD-DISK {                             # 17
           length 12000 mbytes                          # 18
      }                                                 # 19

Пояснения к строкам конфигурационного файла:

  1. Название организации (школа, класс) где используется система копирования.

  2. Одно или более имён акаунтов (через пробел), куда будут посланы почтовые сообщения о выполнении копирования.

  3. Акаунт под которым будет выполняться система AMANDA.

  4. Начало блока описания дискового кэша (имя кэша установлено «hd1»).

  5. Комментарий для дискового кэша (любые символы).

  6. Установить директорию, в которой находится дисковый кэш.

  7. Установить размер дискового кэш -10000 Mb (перед числом стоит знак «минус»). Не положительная величина означает, что следует использовать всё доступное пространство, кроме указанной величины.

  8. Размер блоков, на которые будет разбита копия. Если вы желаете, чтобы ваша копия была распределена по нескольким дисковым кэшам, то следует подобрать соответствующий размер блока, на который разбивается копия. Максимальный размер блока не должен быть больше размера максимального размера файла в вашей операционной системе минус 1 Мбайт.

  9. Конец блока описания дискового кэша (закрывающая фигурная скобка).

  10. Установить имя скрипта chg-disk, который служит интерфейсом между устройством памяти и программой taper.

  11. Установить тип устройства file:/virtual/dump, т.е. которое не выполняет операцию «перемотка к началу».

  12. Используется псевдолента file:/virtual/dump.

  13. Имя файла, используемого системой AMANDA для хранения текущей информации о состоянии (положении) устройства.

  14. Устройство для смены внешних носителей.

  15. Тип магнитофона.

  16. Описание формата метки на ленте (или псевдоленте) даётся по правилам программы regex.

  17. Начало блока описания устройства, куда будет производиться копирование (здесь: HARD-DISK).

  18. Установить размер псевдоленты (фактически области на диске) 12000 Мбайт (почти 12 Гбайт).

  19. Конец блока описания устройства, на которое будет производиться копирование (закрывающая фигурная скобка).

Поскольку мы используем псевдоленту, т.е. область на жёстком диске, то важно обратить внимание на иерархию файлов в директории в её начальном состоянии, которая используется как псевдолента:

# ls -l /virtual/dump/ 
total 28 
lrwxrwxrwx 1 amanda disk   19 Feb 11 13:26 data -> /virtual/dump/slot1
-rw-r--r-- 1 amanda disk   11 Feb 11 13:26 info 
drwxr-xr-x 2 amanda disk 4096 Feb 11 13:05 slot1 
drwxr-xr-x 2 amanda disk 4096 Feb 11 13:26 slot2 
drwxr-xr-x 2 amanda disk 4096 Feb 11 13:07 slot3 
drwxr-xr-x 2 amanda disk 4096 Feb 11 13:07 slot4 
drwxr-xr-x 2 amanda disk 4096 Feb 11 13:08 slot5

В дальнейшем система AMANDA сама будет менять содержимое файлов в этой директории и точку, куда указывают «мягкая» ссылка data.

Создадим пустой файл /etc/amanda/CSD-test/tapelist, его использует система для своей работы.

Затем добавим в файл /etc/amanda/CSD-test/disklist строку для тестового копирования:

localhost /etc comp-user-tar

Это означает копировать с клиентской машины localhost директорию /etc в соответствии с типом копии comp-user-tar, который описан в конфигурационном файле /etc/amanda/CSD-test/amanda.conf.

Наконец, выполним команду

chown -R amanda:disk /etc/amanda

чтобы гарантировать, что программы системы могут читать и писать во все поддиректории /etc/amanda.

Далее скорректируем файл /etc/xinetd.d/amanda (установим disable no), который будет теперь выглядеть следующим образом:

# default: off
# description:  The client for the Amanda backup system.\
#               This must be on for systems being backed up\
#               by Amanda.service amanda
{
        socket_type	= dgram
        protocol		= udp
        wait		= yes
                user		= amanda
        group		= disk
        server		= /usr/lib/amanda/amandad
        disable		= no
}

Затем выполним следующие шаги:

# su - amanda

Проверим, каким серверам AMANDA разрешено присоединяться к данному клиенту:

$ cat ~/.amandahosts
localhost amanda
localhost.localdomain amanda

А теперь проверим конфигурацию AMANDA:

$ /usr/sbin/amcheck CSD-test
Amanda Tape Server Host Check
-----------------------------
WARNING: tapedev is null:, dumps will be thrown away
Holding disk /virtual/amandadump: 46851452 KB disk space available, using 36611452 KB
NOTE: skipping tape checks
NOTE: info dir /etc/amanda/CSD-test/curinfo/localhost: does not exist
NOTE: it will be created on the next run.
NOTE: index dir /etc/amanda/CSD-test/index/localhost: does not exist
NOTE: it will be created on the next run.
Server check took 0.000 secondsAmanda Backup Client Hosts Check
--------------------------------
WARNING: Usage of fully qualified hostname recommended for Client localhost.
WARNING: Usage of fully qualified hostname recommended for Client localhost.
WARNING: Usage of fully qualified hostname recommended for Client localhost.
Client check: 1 host checked in 0.015 seconds, 0 problems found(brought to you by Amanda 2.5.0p2)

В основном всё в порядке. Поскольку в нашем тесте мы не имеем магнитофонов и вообще внешних устройств, то следует подготовить директории на диске, которые AMANDA будет использовать в качестве псевдолент. В примере мы используем 5 псевдолент (должно быть столько же, сколько указано в параметре tapecycle в главном конфигурационном файле amanda.conf).

PSEUDOTAPES=/virtual/dump
mkdir -p ${PSEUDOTAPES}
touch ${PSEUDOTAPES}/info
mkdir -p ${PSEUDOTAPES}/slot1
mkdir -p ${PSEUDOTAPES}/slot2
mkdir -p ${PSEUDOTAPES}/slot3
mkdir -p ${PSEUDOTAPES}/slot4
mkdir -p ${PSEUDOTAPES}/slot5
cd ${PSEUDOTAPES}
ln -s slot1 data

Важно проследить, чтобы директория ${PSEUDOTAPES} имела разрешение для записи под именем пользователя amanda, под которым работает система резервного копирования.

Теперь пометим псевдоленты метками:

/usr/sbin/amlabel CSD-test School-17-0 slot 1
/usr/sbin/amlabel CSD-test School-17-1 slot 2
/usr/sbin/amlabel CSD-test School-17-2 slot 3
/usr/sbin/amlabel CSD-test School-17-3 slot 4
/usr/sbin/amlabel CSD-test School-17-4 slot 5

При попытке записать новые метки, которая могла бы привести к порче ленты, вы получите сообщение примерно такого вида:

$ /usr/sbin/amlabel CSD-test School-17-9 slot 5
changer: got exit: 0 str: 5 file:/virtual/dump
labeling tape in slot 5 (file:/virtual/dump):
rewinding, reading label School-17-4, tape is active
rewinding
tape not labeled

Т.е. лента не будет помечена.

Далее запускаем тестовое резервное копирование:

$ /usr/sbin/amdump CSD-test

Информация о завершении будет послана почтовым сообщением на акаутнты, указанные в параметре mailto конфигурационного файла amanda.conf.

Кроме этого в директории /etc/amanda/CSD-test/ (по условиям рассматриваемого примера) появятся логи с именами amdump* и log.*, в которых можно найти массу деталей о произведённых операциях.

Осталось только поместить командную строку:

/usr/sbin/amdump CSD-test

в crontab и установить желаемое расписание для резервного копирования.