czwartek, 13 sierpnia 2015

Amanda - sieciowa archiwizacja danych

Co to jest Amanda


Jednymi z trudniejszych zagadnień, najskuteczniej spędzających sen z powiek wielu administratorów sieci w dużych korporacjach są niewątpliwie procedury archiwizacji danych w rozległych i cross-platformowych sieciach komputerowych. Istnieje bardzo szeroki wachlarz rozwiązań umożliwiających zautomatyzowane, bardziej lub mniej skuteczne, procedury zabezpieczania danych w sieci. Amanda jest jednym z tych rozwiązań, które zasługują na więcej uwagi niż inne, ze względu na prostotę obsługi i konfiguracji, skalowalność i niezawodność. System archiwizacji danych pod mianem Amanda to zupełnie darmowe rozwiązanie typu Open Source, a co za tym idzie, jest to świetnie udokumentowane i cross-platformowe oprogramowanie, które może znacznie ułatwić administratorom rozległych sieci wiele trudnych do opanowania procedur. W niniejszym artykule przedstawię niektóre cechy systemu archiwizacji danych Amanda, zaprezentuję i udokumentuję prostą konfigurację systemu Amanda, a także przeprowadzę prosty przykład sieciowej archiwizacji danych z sieciowego folderu Windows.

Jak działa Amanda


Amanda - Sieciowa archiwizacja danych
Amanda Community Server


Amanda jest systemem o architekturze Klient-Serwer, który umożliwia - między innymi - wykonywanie kopii zapasowych danych z wielu maszyn w sieci na jednym serwerze. Amanda oferuje możliwość archiwizacji danych zarówno na dyskach twardych, jak i na taśmach, bądź nośnikach optycznych. Możliwa jest jednoczesna archiwizacja danych na różnych rodzajach nośników. Zarchiwizowane dane mogą znajdować się więc zarówno na szybko dostępnych dyskach, w celu zapewnienia możliwości ich natychmiastowego przywrócenia, jak i na taśmach - w celu ich długoterminowej archiwizacji. Dane mogą zostać dodatkowo zarchiwizowane w chmurze.

System Amanda korzysta ze standardowych sterowników systemowych - jakie są ogólnie stosowane w danym systemie operacyjnym - urządzeń wejścia/wyjścia oraz z powszechnie dostępnych aplikacji archiwizacyjnych, takich jak dump czy GNUTar, wobec czego dostęp do zarchiwizowanych danych jest zawsze możliwy, nawet w przypadku całkowitego odinstalowania systemu Amanda z serwera i z klientów sieciowych. Amanda posiada bardzo dopracowane algorytmy archiwizacji, które są w stanie optymalnie dostroić sposób wykonywania zapisu, mając na uwadze wiele różnych czynników, takich jak ruch w sieci, ilość danych do zarchiwizowania itp.

Typowa konfiguracja serwera Amanda uwzględnia przejściową archiwizację danych w katalogach podręcznych na dysku twardym (holding disk) przed ich docelowym zapisaniem na bardziej trwałych nośnikach, takich jak taśmy. Tego typu rozwiazanie daje optymalne rezultaty jeśli chodzi o wydajność i płynność archiwizacji. Zamiast prawdziwych taśm istnieje możliwość stosowania wirtualnych taśm (vtapes), które są niczym innym jak odpowiednio przygotowanymi w tym celu katalogami na dysku twardym. Katalogi danych podręcznych (holding disk) i wirtualne taśmy, ze względów wydajnościowych powinny mieścić się na odrębnych dyskach fizycznych. Serwer Amanda umożliwia jednoczesne stosowanie wielu oddzielnych zestawów ustawień archiwizacji. W pliku disklist danego zestawu ustawień określa się katalogi, które mają zostać zarchiwizowane oraz sposób ich archiwizacji, który definiowany jest uprzednio w pliku amanda.conf danego zestawu ustawień. Serwer Amanda kontaktuje się z klientami Amanda, zainstalowanymi na maszynach w sieci, a klienci wysyłają archiwa danych w żądany przez serwer sposób. Możliwe jest również wyszukiwanie i odzyskiwanie zapisanych w archiwach serwera plików bezpośrednio poprzez oprogramowanie klienckie na archiwizowanych maszynach.

System archiwizacji Amanda może być z powodzeniem stosowany zarówno w małych sieciach jak i w rozległych korporacyjnych infrastrukturach sieciowych. Amanda oferuje wiele rozmaitych możliwości, nawet takich jak zabezpieczanie danych z serwera NFS, bądź archiwizacja danych z sieciowych folderów Windows z zastosowaniem klienta Samba (smbclient), z którym Amanda idealnie się integruje. W celu wykonania archiwizacji danych w sieci za pomocą systemu Amanda, należy zainstalować i skonfigurować zarówno serwer Amanda, jak i ewentualnie klientów sieciowych na maszynach, które zamierzamy archiwizować. W przypadku konieczności archiwizacji danych z komputerów Windows można, lecz nie trzeba, stosować klienckie oprogramowanie Amanda na maszynach Windows. W przypadku konieczności archiwizacji maszyn Windows, można obejść instalację oprogramowania klienckiego korzystając z oprogramowania smbclient po stronie serwera Amanda - co właśnie zademonstruję w niniejszym artykule.

Instalacja serwera Amanda możliwa jest wyłącznie w środowiskach Linux/UNIX, natomiast oprogramowanie klienckie może zostać zainstalowane na kilku różnych platformach: Linux, UNIX, BSD, Mac OS-X oraz Microsoft Windows. Komunikacja pomiędzy serwerem a klientami Amanda odbywa się w zupełnie bezpieczny sposób, pod warunkiem sporządzenia odpowiedniej konfiguracji systemu.

Od czego zacząć?


System archiwizacji danych Amanda może być skonfigurowany na różne sposoby, w zależności od potrzeb użytkowników i umiejętności administratora. Opanowanie podstaw systemu zajmuje generalnie od kilku do kilkunastu minut. Dogłębne poznanie możliwości systemu Amanda może zająć miesiące, a nawet całe lata. Omówiona w niniejszym artykule instalacja i podstawowa konfiguracja to tylko jedno z ogromnej ilości możliwych podejść do zagadnienia. Dużo informacji można również znaleźć tutaj: http://wiki.zmanda.com/index.php/Getting_Started_with_Amanda


Wstępne uwagi do przykładowej instalacji systemu Amanda


System archiwizacji Amanda dostępny jest w dwóch odmiennych wersjach: komercyjna wersja systemu, oraz Amanda Community – bezpłatna odmiana Amandy. Obie wersje różnią się zasadniczo nie tylko zakresem funkcjonalności, ale rodzajem wsparcia technicznego. W tym artykule skupię się na oprogramowaniu Amanda Community. Pliki niezbędne do instalacji systemu Amanda Community można pozyskać na wiele sposobów. Zaawansowani użytkownicy zapewne skorzystają z plików źródłowych, które można pobrać z witryny http://amanda.org/download.php W oficjalnej witrynie Amanda można także znaleźć pakiety binarne oprogramowania, odpowiednie dla kilku najbardziej popularnych dystrybucji systemu operacyjnego Linux, takich jak Debian, Fedora, Red Hat, Suse i Ubuntu. W opracowanym przeze mnie przykładzie instalacji i konfiguracji Amanda Community skorzystam z narzędzia yum, typowego sposobu instalacji pakietów dla dystrybucji Red Hat i pokrewnych, ponieważ – o dziwo - daje w moim środowisku pracy dostęp do stosunkowo aktualnej wersji oprogramowania.

Instalacja i konfiguracja serwera Amanda Community


Instalacja serwera Amanda wymaga obecności i prawidłowego funkcjonowania pakietu xinetd, za pomocą którego są uruchamiane usługi związane z serwerem archiwizacji. Xinetd, w porównaniu z Inetd zapewnia o wiele większe bezpieczeństwo pracy uruchamianych za jego pomocą usług. Aby zainstalować serwer Amanda i przeprowadzić jego podstawową konfigurację należy wykonać kilka prostych czynności. Aby zademonstrować prostotę i funkcjonalność systemu archiwizacji danych Amanda przygotowałem przykład prostej konfiguracji serwera do archiwizacji danych z klienta sieciowego Windows. Cała procedura instalacji i tego typu konfiguracji nie powinna czasowo przekroczyć 5-10 minut. Wiele jednak zależy od wersji instalowanego oprogramowania i od wersji systemu operacyjnego. W opracowanym przeze mnie przykładzie instalacji pakietów Amanda posługuję się wersjami pakietów 3.3.3, instalowanych w środowisku Scientific Linux 7.

Aby rozpocząć, jako użytkownik root należy zainstalować pakiety amanda oraz amanda-server za pomocą narzędzia yum:
[root@amanda1 ~]# yum install amanda amanda-server
W trakcie instalacji zostaje automatycznie utworzony użytkownik amandabackup, co można zweryfikować zaglądając do /etc/passwd:
amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
Jako użytkownik root należy ustawić hasło dla uzytkownika amandabackup!

Następnie należy utworzyć plik konfiguracyjny xinetd /etc/xinetd.d/amandaserver dla serwera Amanda:
# default: on
#
# opis: Usługi serwera i klienta Amanda uruchamiane przez xinetd
#
service amanda
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = amandabackup
group = disk
groups = yes
server = /usr/lib64/amanda/amandad
server_args = -auth=bsdtcp amdump amindexd amidxtaped
}
Po zapisaniu pliku /etc/xinetd.d/amandaserver można przeładować xinetd. Warto wówczas także sprawdzić czy xinetd i usługa amanda działają prawidłowo:
[root@amanda1 ~]# systemctl reload xinetd
[root@amanda1 ~]# systemctl status xinetd xinetd.service - Xinetd A Powerful Replacement For Inetd
Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled)
Active: active (running) since Wed 2015-08-12 23:00:56 CEST; 9min ago
Process: 18344 ExecReload=/usr/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 18216 ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $EXTRAOPTIONS (code=exited, status=0/SUCCESS)
Main PID: 18217 (xinetd)
CGroup: /system.slice/xinetd.service
└─18217 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid

Aug 12 23:08:25 amanda1 xinetd[18217]: readjusting service amanda
Aug 12 23:08:25 amanda1 xinetd[18217]: Reconfigured: new=0 old=1 dropped=0 (services)
Aug 12 23:08:29 amanda1 systemd[1]: Started Xinetd A Powerful Replacement For Inetd.
Przejdźmy teraz do ustawień koniecznych do archiwizowania danych z sieciowego klienta Windows o przykładowej nazwie sphinx. Aby archiwizacja danych z klienta Windows o nazwie sphinx była możliwa, po stronie serwera Amanda należy wykonać następujące czynności jako użytkownik root:
[root@amanda1 ~]# echo //sphinx/DoArchiwizacji amandabackup%tajnehasloamandy BIURO.LAN >> /etc/amandapass
[root@amanda1 ~]# chown amandabackup:disk /etc/amandapass
[root@amanda1 ~]# chmod 700 /etc/amandapass
Po stronie klienta Windows, należy odpowiednio udostępnić wybrany folder, w tym przypadku jest to folder o udostępnionej nazwie DoArchiwizacji. W niniejszym przykładzie folder jest udostępniany w grupie roboczej BIURO.LAN użytkownikowi systemu Windows (którego należy ewentualnie utworzyć) o nazwie Amandabackup, z hasłem użytkownika tajnehasloamandy.

Należy utworzyć konfigurację serwera Amanda jako użytkownik amandabackup, np. o nazwie Codziennie1.
bash-4.2$  amserverconfig Codziennie1
Logging to /var/log/amanda/amserverconfig.20150813112215.debug
mkdir /etc/amanda/Codziennie1
/var/lib/amanda/gnutar-lists directory exists
/etc/amanda/Codziennie1/advanced.conf created and updated
mkdir /etc/amanda/Codziennie1/curinfo
mkdir /etc/amanda/Codziennie1/index
curinfo and index directory created
tapelist file created
disklist file created
custom amanda.conf created
DONE.
Po udanym utworzeniu konfiguracji Codziennie1 należy edytować zawartość pliku konfiguracyjnego /etc/amanda/Codziennie1/amanda.conf. Plik zawiera mnóstwo opcji, których przeważnie nie trzeba zmieniać, chyba że się dokładnie wie co się robi. Jak widać z poniżej przedstawionej zawartości, plik zawiera załączoną zawartość kolejnego pliku - advanced.conf.

Poniżej zawartość przykładowego pliku amanda.conf z niektórymi typowymi opcjami, ważnymi dla niniejszego przykładu:

org "Przykładowa nazwa" # nazwa Organizacji
dumpuser "amandabackup" # użytkownik uprawniony do wykonywania archiwizacji
mailto "admin@przykladowyadres" # lista operatorów (adresy email oddzielone spacją)
dumpcycle 1 week # długość cyklu archiwizacji
runspercycle 5 # ilość uruchomień amdump w każdym cyklu archiwizacji
tapecycle 10 tapes # ilość taśm w rotacji
runtapes 1 # maks. taśm stosowanych w każdym uruchomieniu amdump

tpchanger "chg-disk://backup/vtapes/Codziennie1/slots"
tapetype HARDDISK
labelstr "^Codziennie1-[0-9][0-9]*$"
dtimeout 1800
ctimeout 30
etimeout 300

define dumptype global {
comment "Global definitions"
auth "bsdtcp"
}

define dumptype gui-base {
global
program "GNUTAR"
comment "gui base dumptype dumped with tar"
compress none
index yes
}

define tapetype HARDDISK {
comment "Virtual Tapes"
length 32768 mbytes
}

define dumptype encrypt-simple {
program "GNUTAR"
comment "szyfrowanie symetryczne - zrzut tar"
encrypt client
compress fast
client_encrypt "/usr/sbin/amcryptsimple"
client_decrypt_option "-d"
}


define holdingdisk Archiwizacja1 { 
directory /amandabackup/dumps/amanda 
use 300 Gb 
}

includefile "advanced.conf"
includefile "/etc/amanda/template.d/dumptypes"
includefile "/etc/amanda/template.d/tapetypes"

Prawidłowe ustawienia dotyczące taśm i rotacji taśm w pliku amanda.conf mają kluczowe znaczenie.

dumpcykle - Długość cyklu archiwizacji. Wartość parametru określa przedział czasowy, w którym wymienione w odpowiednim pliku disklist "dyski" są objęte co najmniej 1 pełną archiwizacją danych.

runspercykle - Wartość tego parametru określa ilość uruchomień programu archiwizacyjnego w przedziale czasowym określonym w dumpcykle. 

runtapes - Maksymalna ilość taśm stosowana przy każdy uruchomieniu programu archiwizacji.

tapecykle -  Ten parametr określa ilość taśm w rotacji, a jego błędne ustawienie może być przyczyną nieprawidłowo wykonywanej archiwizacji. Wartość tego parametru powinna zawsze przewyższać (np. 2x, 3x) ilość taśm stosowanych w danym cyklu archiwizacji, którą można łatwo obliczyć mnożąc wartość parametrów runspercykle x runtapes. Przykładowo, jeśli runspercykle wynosi 7, a runtapes jest 1, to Amanda nadpisuje zestaw 7 taśm w danym cyklu. Jeśli wówczas w rotacji jest 14 taśm (tapecykle = 14) to oznacza, że dane z każdego poprzedniego pełnego cyklu archiwizacji przechowywane są na pozostałym zestawie 7 taśm. Dobrym zwyczajem jest ustawienie parametru tapecykle:

               tapecykle >= 2 x runspercykle x runtapes

Następnie, jako użytkownik root należy utworzyć po stronie serwera Amanda katalogi danych archiwizacji przechowywanych tymczasowo na dysku twardym (holding disk). W tym celu należy wykonać następujące czynności:
[root@amanda1 ~]# mkdir -p /amandabackup/dumps/amanda
[root@amanda1 ~]# chown amandabackup:disk /amandabackup/dumps/amanda
[root@amanda1 ~]# chmod 750 /amandabackup/dumps/amanda

Kolejne kroki polegają na utworzeniu katalogów do przechowywania wirtualnych taśm zarchiwizowanych danych. Polecenia, które należy wydać jako użytkownik root:
[root@amanda1 ~]# mkdir -p /backup/vtapes
[root@amanda1 ~]# chown amandabackup:disk /backup/vtapes
[root@amanda1 ~]# chmod 750 /backup/vtapes

Następnie, jako użytkownik amandabackup, należy wydać następujące polecenia w celu utworzenia katalogów wirtualnych taśm:
bash-4.2$ mkdir -p /backup/vtapes/Codziennie1/slots
bash-4.2$ cd /backup/vtapes/Codziennie1/slots
bash-4.2$ for ((i=1; $i<=10; i++)); do mkdir slot$i;done
bash-4.2$ ln -s slot1 data

Warto teraz sprawdzić, również jako użytkownik amandabackup, czy wirtualne taśmy są w porządku:
bash-4.2$ amtape Codziennie1 show
amtape: scanning all 10 slots in changer:
slot 1: unlabeled volume
slot 2: unlabeled volume
slot 3: unlabeled volume
slot 4: unlabeled volume
slot 5: unlabeled volume
slot 6: unlabeled volume
slot 7: unlabeled volume
slot 8: unlabeled volume
slot 9: unlabeled volume
slot 10: unlabeled volume

Błąd: amtape: running as user "amandabackup" instead of "root"


Ten błąd pojawia się w przypadku gdy następuje próba uruchomienia aplikacji archiwizujących z pakietu Amanda przez użytkownika innego, niż użytkownik określony jako „dumpuser” w pliku amanda.conf dla danej konfiguracji serwera. Jeżeli po uruchomieniu aplikacji amtape nie wyświetlają się jakiekolwiek błędy, to można kontynuować konfigurację serwera Amanda.

Jako użytkownik amandabackup, pozostając w /backup/vtapes/Codziennie1/slots, należy nadać uprzednio utworzonym wirtualnym taśmom odpowiednie etykietki - w następujący sposób:
bash-4.2$ for ((i=1; $i<=10;i++)); do amlabel Codziennie1 Codziennie1-0$i slot $i; done
Reading label...
Found an empty tape.
Writing label 'Codziennie1-01'...
Checking label...
Success!
...
Po nadaniu etykiet warto się upewnić czy wszystko jest w porządku:
bash-4.2$ amtape Codziennie1 show
amtape: scanning all 10 slots in changer:
slot 10: date X label Codziennie1-010
slot 1: date X label Codziennie1-01
slot 2: date X label Codziennie1-02
slot 3: date X label Codziennie1-03
slot 4: date X label Codziennie1-04
slot 5: date X label Codziennie1-05
slot 6: date X label Codziennie1-06
slot 7: date X label Codziennie1-07
slot 8: date X label Codziennie1-08
slot 9: date X label Codziennie1-09
Następnie należy zresetować wirtualny streamer:
bash-4.2$ amtape Codziennie1 reset
changer is reset
Jako użytkownik amandabackup należy dodać następującą zawartość do pliku /etc/amanda/Codziennie1/disklist:
amanda1 //sphinx/DoArchiwizacji comp-user-tar
Kolejna czynność polega na skonfigurowaniu, jako użytkownik amandabackup, pliku /var/lib/amanda/.amandahosts, którego zawartość powinna wyglądać następująco:
localhost amandabackup admump amanda1 root amindexd amidxtaped amanda1 amandabackup admump
W tej chwili warto sprawdzić za pomocą narzędzia amcheck, czy wszystkie ustawienia systemu archiwizacji zostały dokonane prawidłowo. Należy pamiętać o uprzednim udostępnieniu odpowiedniego folderu użytkownikowi amandabackup w systemie Windows, w przeciwnym razie program amcheck poinformuje o problemie z dostępem do sieciowego folderu. Jak widać poniżej wszelkie ustawienia zostały dokonane prawidłowo i serwer Amanda jest w stanie poprawnie wykonywać ustawione archiwizacje danych.
bash-4.2$ amcheck Codziennie1
Amanda Tape Server Host Check
-----------------------------
slot 1: volume 'Codziennie1-01'
Will write to volume 'Codziennie1-01' in slot 1.
NOTE: skipping tape-writable test
NOTE: host info dir /etc/amanda/Codziennie1/curinfo/amanda1 does not exist
NOTE: it will be created on the next run.
NOTE: index dir /etc/amanda/Codziennie1/index/amanda1 does not exist
NOTE: it will be created on the next run.
Server check took 0.767 seconds
Amanda Backup Client Hosts Check
--------------------------------
Client check: 1 host checked in 0.130 seconds. 0 problems found.

(brought to you by Amanda 3.3.3)
Aby sprawdzić, czy na pewno ustawiona archiwizacja klienta Windows działa prawidłowo, wystarczy uruchomić działanie ręcznie, po uprzednim skopiowaniu przykładowych plików do udostępnianego użytkownikowi amandabackup folderze w systemie Windows.
bash-4.2$ amdump Codziennie1
W przypadku problemów z dostępem systemu Amanda do udostępnionego folderu sieciowego, warto sprawdzić jak sobie z tym radzi smbclient:
bash-4.2$ smbclient //sphinx/DoArchiwizacji -U amandabackup -W BIURO.LAN
Enter amandabackup's password:
Domain=[SPHINX] OS=[Windows 10 Pro 10243] Server=[Windows 10 Pro 6.4]
Po uruchomieniu narzędzia amdump zostaje wykonana archiwizacja Codziennie1 i serwer wysyła wiadomość email z odpowiednim powiadomieniem na adres pocztowy wskazany w pliku amanda.conf odpowiadającemu wykonanej archiwizacji. Wiadomość zawiera wiele informacji związanych z wykonaną archiwizacją.

Aby sprawdzić co zostało zarchiwizowane:

bash-4.2$ amadmin Codziennie1 find

date host disk lv tape or file file part status
2015-08-13 22:48:00 amanda1 //sphinx/DoArchiwizacji 0 Codziennie1-08 1 1/1 OK

Aby jednak archiwizacje miały większy sens, warto określić odpowiedni harmonogram działań za pomocą narzędzia crontab.

Dodawanie klienta Linux do bieżącej konfiguracji Amanda


Aby do aktualnej - przykładowej -  konfiguracji systemu archiwizacji Amanda dodać nowego klienta, tym razem Linux, wystarczy wykonać kilka prostych czynności:

1. Na maszynie Linux, która ma być archiwizowana na serwerze Amanda należy zainstalować oprogramowanie amanda-client;

2. Należy utworzyć plik konfiguracyjny xinetd dla zainstalowanego oprogramowania amanda-client - analogicznie do czynności wykonanej po stronie serwera archiwizacji;

3. Nazwa serwera archiwizacji powinna zostać dodana do pliku .amandahosts na maszynie klienckiej, a nazwa klienta powinna zostać dodana do pliku .amandahosts po stronie serwera. Należy posługiwać się odpowiednią składnią zawierającą nazwę hosta, użytkownika i oprogramowania:
amandaserver.przyklad.com użytkownik-archiwizator usługa(i)
4. Po stronie serwera należy uwzględnić katalogi klienta Linux, które mają być archiwizowane, w odpowiednim pliku .disklist, np:
kot-filemon.dom.net /home/kicia1 comp-user-tar
5. Po stronie klienta należy utworzyć odpowiedni plik amanda-client.conf, co umożliwi przywracanie danych z serwera Amanda, przykładowo:
# /etc/amanda/amanda-client.conf
#
conf "Codziennie1"
index_server "amanda"
tape_server "amanda"
auth "bsdtcp"

Brak komentarzy:

Prześlij komentarz