Niezbędnik administratora Bacula cz.2 - narzędzie bls z taśmami magnetycznymi

20 kwiecień 2013 autor: Marcin Haba (gani)

W drugiej części cyklu artykułów "Niezbędnik administratora Bacula" przedstawione zostały sposoby użytkowania narzędzia bls wraz z taśmami magnetycznymi.

W pierwszej części cyklu artykułów pt. "Niezbędnika administratora Bacula" przedstawiłem to, w jaki sposób można używać narzędzie bls wraz z wolumenami plikowymi. Dziś spróbuję zaprezentować użycie tego samego narzędzia bls lecz tym razem w aspekcie taśm magnetycznych.

Wstęp

Taśma magnetyczna w swej charakterystyce różni się od wolumenów plikowych pod wieloma względami. Twórcy Bacula jednak zatroszczyli się o to, aby użycie narzędzi Bacula wraz z napędami taśmowymi nie różniło się zbyt mocno od użytkowania narzędzi Bacula z wolumenami plikowymi. Mam tu na myśli głównie interfejs tychże narzędzi. Zaliczyć do nich można również komendę bls.

Środowisko

Dla potrzeb napisania tego artykułu użyłem napędu taśm magnetycznych LTO-1 oraz dwóch taśm LTO-1 o etykietach "HABA01L1" oraz "HABA02L1". Taśmy te są zaetykietowane w Bacula pod takimi samymi nazwami.

Przed użyciem bls z napędem taśmowym

Pierwszą komendą jaką potrzeba wykonać przed wylistowaniem zawartości taśm magnetycznych poprzez komendę bls jest odmontowanie napędu od serwisu daemon’a magazynowania bacula-sd (ang. Storage Daemon). Można tego dokonać z konsoli Bacula (np. bconsole) poprzez użycie komendy:

umount storage=nazwa_napedu_tasm

Przykład

umount storage=TapeDevice

gdzie:

TapeDevice - nazwa pod jaką serwis zarządcy bacula-dir (ang. Director) zna napęd taśmowy.

Odmontowanie jest konieczne do tego, aby zwolnić urządzenie napędu z serwisu bacula-sd. Jeżeli nie zostanie to wykonane, to można liczyć się z tym, że komenda bls zwróci komunikat o zajętości napędu przez inny proces.

Komenda bls a taśma magnetyczna

Po pomyślnym odmontowaniu napędu od serwisu bacula-sd spróbuję wylistować zawartość taśmy o etykiecie "HABA02L1". W tym celu ładuję taśmę do napędu taśmowego oraz wykonuję komendę jak poniżej:

# /usr/local/bacula/sbin/bls -V "HABA02L1" -c /usr/local/bacula/etc/bacula-sd.conf /dev/nst0

gdzie:

/usr/local/bacula/sbin/bls - moja lokalizacja komendy bls.

-V "HABA02L1" - podana nazwy etykiety, jaka została nadana przy etykietowaniu taśmy.

-c /usr/local/bacula/etc/bacula-sd.conf - moja lokalizacja pliku konfiguracyjnego daemon’a magazynowania bacula-sd.

/dev/nst0 - moja lokalizacja pliku specjalnego urządzenia napędu taśm, pod jaką jest ono dostępne.

W wyniku powyższej komendy otrzymuję listing jak poniżej. Z racji dużej ilości plików zapisanych w backupie na taśmie, zamieszczam tylko skrócony wycinek listingu:

# /usr/local/bacula/sbin/bls -V "HABA02L1" -c /usr/local/bacula/etc/bacula-sd.conf /dev/nst0
bls: butil.c:287 Using device: "/dev/nst0" for reading.
20-kwi 15:41 bls JobId 0: Ready to read from volume "HABA02L1" on device "TapeDrive_Storage" (/dev/nst0).
bls JobId 925: -rw-r--r--   1 gani     gani            2307 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-revprop-change.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2982 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-commit.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2764 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-revprop-change.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            1980 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-unlock.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2038 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-lock.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2000 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-commit.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            1690 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-lock.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2758 2009-07-25 19:22:49  /media/archiwum/repo/hooks/start-commit.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            1606 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-unlock.tmpl
bls JobId 925: drwxr-xr-x   2 gani     gani            4096 2009-07-25 19:22:49  /media/archiwum/repo/hooks/
bls JobId 925: -rw-r--r--   1 gani     gani             309 2009-07-25 19:22:49  /media/archiwum/repo/conf/passwd
bls JobId 925: -rw-r--r--   1 gani     gani            1080 2009-07-25 19:22:49  /media/archiwum/repo/conf/authz
bls JobId 925: -rw-r--r--   1 gani     gani            2279 2009-07-25 19:22:49  /media/archiwum/repo/conf/svnserve.conf
bls JobId 925: drwxr-xr-x   2 gani     gani            4096 2009-07-25 19:22:49  /media/archiwum/repo/conf/
bls JobId 925: -rw-r--r--   1 gani     gani             139 2009-07-25 19:22:49  /media/archiwum/repo/locks/db-logs.lock
bls JobId 925: -rw-r--r--   1 gani     gani             139 2009-07-25 19:22:49  /media/archiwum/repo/locks/db.lock
bls JobId 925: drwxr-xr-x   2 gani     gani            4096 2009-07-25 19:22:49  /media/archiwum/repo/locks/
...
...
...
20-kwi 15:44 bls JobId 0: End of Volume at file 1 on device "TapeDrive_Storage" (/dev/nst0), Volume "HABA02L1"
20-kwi 15:44 bls JobId 0: End of all volumes.
956 files found.

Z listingu widać pliki backupowane na tą taśmę z lokalizacji:

/media/archiwum/repo/

oraz ich podstawowe metadane.

Na końcu listingu widoczne jest podsumowanie z ilością znajdujących się na taśmie plików (956 plików).

Listowanie zawartości więcej niż jednej taśmy

Komenda bls jest też przygotowana do wylistowania zawartości więcej niż jednej taśmy magnetycznej. Nie chodzi tutaj bynajmniej o to, aby dla 10 taśm wydawać komendę bls 10 razy. Wystarczy w przełączniku -V podać etykiety wszystkich taśm, których zawartość chce się wylistować. Kolejne etykiety taśm powinny być oddzielone znakiem | (tzw. pipe). Co więcej, po zakończeniu listowania taśmy pierwszej program bls poprosi o włożenie kolejnej taśmy i potwierdzenie przez użytkownika, że taśma jest już załadowana do napędu.

Poniżej zamieszczam listing z dwóch taśm o etykietach "HABA01L1" oraz "HABA02L1". W chwili wykonywania komendy w napędzie znajdowała się taśma o etykiecie "HABA02L1". W związku z tym, że podałem taśmy w kolejności "HABA01L1", "HABA02L1", to bls zauważa tą zmianę i prosi o podanie najpierw taśmy pierwszej czyli "HABA01L1".

# /usr/local/bacula/sbin/bls -V "HABA01L1|HABA02L1" -c /usr/local/bacula/etc/bacula-sd.conf /dev/nst0
bls: butil.c:287 Using device: "/dev/nst0" for reading.
20-kwi 15:45 bls JobId 0: Warning: acquire.c:280 Read acquire: Wrong Volume mounted on device "TapeDrive_Storage" (/dev/nst0): Wanted HABA01L1 have HABA02L1
Mount Volume "HABA01L1" on device "TapeDrive_Storage" (/dev/nst0) and press return when ready:

Załadowuję taśmę, o którą prosi mnie narzędzie bls ("HABA01L1") oraz - zgodnie z wypisaną instrukcją - potwierdzam enterem gotowość do działania napędu z taśmą. W wyniku tej akcji bls zaczyna listować zawartość taśmy:

20-kwi 15:47 bls JobId 0: Ready to read from volume "HABA01L1" on device "TapeDrive_Storage" (/dev/nst0).
bls JobId 75: -rw-r--r--   1 gani     gani            2307 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-revprop-change.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            2982 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-commit.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            2764 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-revprop-change.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            1980 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-unlock.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            2038 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-lock.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            2000 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-commit.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            1690 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-lock.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            2758 2009-07-25 19:22:49  /media/archiwum/repo/hooks/start-commit.tmpl
bls JobId 75: -rw-r--r--   1 gani     gani            1606 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-unlock.tmpl
bls JobId 75: drwxr-xr-x   2 gani     gani            4096 2009-07-25 19:22:49  /media/archiwum/repo/hooks/
bls JobId 75: -rw-r--r--   1 gani     gani             309 2009-07-25 19:22:49  /media/archiwum/repo/conf/passwd
bls JobId 75: -rw-r--r--   1 gani     gani            1080 2009-07-25 19:22:49  /media/archiwum/repo/conf/authz
bls JobId 75: -rw-r--r--   1 gani     gani            2279 2009-07-25 19:22:49  /media/archiwum/repo/conf/svnserve.conf
bls JobId 75: drwxr-xr-x   2 gani     gani            4096 2009-07-25 19:22:49  /media/archiwum/repo/conf/
...
...
...
20-kwi 15:54 bls JobId 0: End of Volume at file 7 on device "TapeDrive_Storage" (/dev/nst0), Volume "HABA01L1|HABA02L1"
20-kwi 15:57 bls JobId 0: Warning: acquire.c:280 Read acquire: Wrong Volume mounted on device "TapeDrive_Storage" (/dev/nst0): Wanted HABA02L1 have HABA01L1
Mount Volume "HABA02L1" on device "TapeDrive_Storage" (/dev/nst0) and press return when ready:

Gdy program bls zakończy listowanie plików z taśmy podanej jako pierwsza, to prosi o włożenie kolejnej ("HABA02L1") i potwierdzenie enterem. Poniżej zamieszczam dalszy listing (a raczej jego wycinek) z taśmy o etykiecie "HABA02L1".

20-kwi 15:59 bls JobId 0: Ready to read from volume "HABA02L1" on device "TapeDrive_Storage" (/dev/nst0).
bls JobId 925: -rw-r--r--   1 gani     gani            2307 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-revprop-change.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2982 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-commit.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2764 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-revprop-change.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            1980 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-unlock.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2038 2009-07-25 19:22:49  /media/archiwum/repo/hooks/pre-lock.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2000 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-commit.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            1690 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-lock.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            2758 2009-07-25 19:22:49  /media/archiwum/repo/hooks/start-commit.tmpl
bls JobId 925: -rw-r--r--   1 gani     gani            1606 2009-07-25 19:22:49  /media/archiwum/repo/hooks/post-unlock.tmpl

...
...
...

20-kwi 16:00 bls JobId 0: End of Volume at file 1 on device "TapeDrive_Storage" (/dev/nst0), Volume "HABA02L1"
20-kwi 16:00 bls JobId 0: End of all volumes.
59153 files found.

Na zakończenie bls wyświetla podsumowanie o ilości wylistowanych plików (59153) i,  jako że nie ma więcej taśm do wylistowania, to kończy swe działanie.

Opcje bls

Ze względu na to, że większość przełączników do bls została opisana w pierwszej części cyklu artykułów "Niezbędnik administratora Bacula", pozostaje mi odesłać Cię tutaj, drogi Czytelniku, do tego artykułu. Jak zapewne zauważysz, działają one w taki sam lub bardzo podobny sposób zarówno dla taśm magnetycznych jak i woluminów plikowych. Jak przykład podam użycie przełącznika -j komendy bls, który listuje backupy zawarte na taśmie/woluminie.

# /usr/local/bacula/sbin/bls -j -V "HABA02L1" -c /usr/local/bacula/etc/bacula-sd.conf /dev/nst0
bls: butil.c:287 Using device: "/dev/nst0" for reading.
20-kwi 16:02 bls JobId 0: Ready to read from volume "HABA02L1" on device "TapeDrive_Storage" (/dev/nst0).
Volume Record: File:blk=0:1 SessId=2 SessTime=1366463758 JobId=0 DataLen=167
Begin Job Session Record: File:blk=0:2 SessId=2 SessTime=1366463758 JobId=925
   Job=repozytorium_svn.2013-04-20_15.36.27_13 Date=20-kwi-2013 15:36:33 Level=F Type=B
End Job Session Record: File:blk=0:2910 SessId=2 SessTime=1366463758 JobId=925
   Date=20-kwi-2013 15:36:57 Level=F Type=B Files=956 Bytes=187,433,321 Errors=0 Status=T
20-kwi 16:04 bls JobId 0: End of Volume at file 1 on device "TapeDrive_Storage" (/dev/nst0), Volume "HABA02L1"
20-kwi 16:04 bls JobId 0: End of all volumes.

Podsumowanie

Użycie bls z napędem taśm magnetycznych nie jest różne od bls operującego na taśmach plikowych. W odróżnieniu od wolumenów plikowych użytkowanie bls z taśmami może wydać się nieco wolniejsze od pracy z woluminami zapisanymi na dyskach. Napędy taśmowe jako urządzenia o dostępie sekwencyjnym, zapewne nie są tak wygodne jak dyski, lecz myślę, że w sytuacji awaryjnej wszystkie te za i przeciw dysków czy taśm nabierają mniejszego znaczenia, gdy ważne jest odzyskanie danych.

Na koniec życzę Ci czytelniku udanych kopii zapasowych i przywracania danych :)