Bacula.pl

- rozwiązanie kopii zapasowych dla wymagających
Kategorie: WSZYSTKIE Newsy Artykuły Blog

Backup na płyty DVD

5 kwiecień 2010, autor: Marcin Haba (gani)

news

Artykuł zawiera przedstawienie podstawowych zagadnień z zakresu wykonywania kopii bezpieczeństwa na nośnik DVD przy pomocy oprogramowania Bacula.

PŁYTY DVD W ARCHIWIZACJI DANYCH

Nie chcę ani zachęcać ani też odradzać użycia płyt DVD jako nośnika do archiwizacji danych, aczkolwiek pokuszę się o przedstawienie kilku faktów.

TRWAŁOŚĆ PŁYT DVD

Sugerując się gwarantowaną przez producentów żywotnością płyt DVD, która deklarowana jest średnio na kilkadziesiąt lat, można stwierdzić, że ma się do czynienia z trwałymi nośnikami. Nie polegałbym jednak jedynie na tej opinii. Zaznajamiając się bliżej z warunkami, jakie płyta musi spełnić, aby zachować dane przez taki okres czasu, wrażenie o dużej trwałości może wydać się mniej realne. Producenci podają m.in. takie parametry jak:

  • temperatura pomieszczenia, gdzie przechowywana jest płyta DVD, musi mieć tyle a tyle stopni i nie może zmieniać się o więcej niż 2 stopnie,
  • wilgotność powietrza na określonym poziomie,
  • w powietrzu pomieszczenia brak domieszek gazów, które mogą powodować korozję płyty (m.in. dym papierosowy),
  • brak jakichkolwiek rys na powierzchni płyty, a nawet odcisków palców,
  • płyta powinna być przechowywana w specjalnie do tego przystosowanym pudełku.

Dodatkowo żaden z producentów nie sprawdził gwarantowanej trwałości swych płyt DVD z racji tego, że kilkadziesiąt lat temu nie istniała jeszcze technologia DVD. Szacowana żywotność jest więc obliczana w warunkach laboratoryjnych poprzez wywołanie sztucznego starzenia się płyty.

Patrząc na budowę napędu DVD, ciekawym może wydać się fakt, że podczas pracy powierzchnia płyty DVD, na której znajdują się dane, nie jest dotykana przez układ czytający dane, co jest typowe dla napędów optycznych. Nie ma więc mowy o żadnej ścieralności, rozciąganiu czy efekcie shoe-shining, które to problemy są charakterystyczne dla nośników napędów taśm magnetycznych.

WYMAGANIA

Wsparcie dla backupu na płyty DVD pojawiło się w Baculi od wersji 1.37. W dokumentacji projektu Bacula istnieje informacja o tym, że odpowiedzialny za tą funkcjonalność kod został wprowadzony w wersji beta. Ja sam do tej pory nie spotkałem się z żadną wzmianką o tym, aby coś zmieniło się w tej sprawie. Z tego powodu należy być ostrożnym w testach przed wprowadzaniem tego typu rozwiązania do własnej struktury archiwizacyjnej.

Oprócz posiadania Baculi ze wsparciem dla backupu na DVD, konieczne jest posiadanie w swym systemie zainstalowanego zestawu programów o nazwie dvd+rw-tools. Niestety, nie każda wersja dvd+rw-tools jest gotowa do użycia wraz Baculą. W zależności od posiadanego systemu operacyjnego może zajść potrzeba zaaplikowania łaty umożliwiającej nagrywanie backupów przy pomocy dvd+rw-tools. Z tego powodu powinno się sprawdzić czy w wersji posiadanego programu łata ta została nałożona. Jeżeli tak nie jest, potrzebne będzie przeprowadzenie własnej kompilacji ze wcześniejszym nałożeniem odpowiedniej łaty. Łaty te dostarczone są ze źródłami oprogramowania Bacula, a znajdują się w katalogu patches. W repozytoriach niektórych dystrybucji systemu operacyjnego GNU/Linux, pakiet binarny dvd+rw-tools zawiera już nałożoną łatę.

TEORIA DZIAŁANIA

Nagrywanie kopii bezpieczeństwa na płytę DVD składa się z dwóch etapów. Pierwszym z nich jest "nawinięcie" przez Baculę archiwizowanych danych do jednego pliku. Termin "nawinięcie" może kojarzyć się z techniką nagrywania backupu nazywaną spooling. Nie będzie w tym skojarzeniu nic mylnego, ponieważ jest to dokładnie ten sam spooling, jaki jest możliwy do skonfigurowania Baculi do celów umieszczania danych stałym strumieniem na taśmach magnetycznych. Jest jednak w tym jedna znacząca różnica - spooling dla nagrywania na płyty DVD, w odróżnieniu od spoolingu dla taśm magnetycznych, nie wymaga żadnej konfiguracji. Można więc powiedzieć, że jest on przezroczysty dla konfiguracji Baculi. Takie zachowanie jest spowodowane tym, że nagrywanie płyt DVD "w locie" byłoby mocno problematyczne, choćby z powodu możliwości występowania opóźnień w dostarczaniu danych do urządzenia nagrywarki.

Drugim etapem umieszczania backupów na płyty DVD jest wysłanie do urządzenia nagrywarki DVD przygotowanych "nawiniętych" danych. Odpowiedzialny za tą operację jest skrypt o nazwie dvd-handler, który dostarczany jest wraz z oprogramowaniem Bacula. Wykorzystuje on program do nagrywania danych growisofs (wchodzący w skład programów dvd+rw-tools).

DYREKTYWY BACKUPU NA DVD

Dyrektywy zasobu Storage w pliku konfiguracyjnym daemon'a magazynowania bacula-sd.conf:

Requires Mount = Yes/No - jeśli ustawiona na "yes", mówi Baculi o tym, że urządzenie wymaga podmontowania przy pomocy komendy zdefiniowanej w dyrektywie Mount Command.

Mount Point = nazwa katalogu - definiuje katalog, do którego montowane będzie urządzenie. W omawianym temacie będzie to punkt montowania nagrywarki DVD.

Np.

Mount Point = /mnt/dvd-writer

Mount Command = komenda montowania - mówi Baculi, jaką komendę ma użyć do podmontowania urządzenia. Jeżeli w systemie operacyjnym jest aktywna usługa automatycznego montowania urządzeń, konieczne będzie wyłączenie jej dla urządzenia archiwizującego. W omawianym temacie potrzeba będzie wyłączyć takie działanie dla nagrywarki DVD.

W systemie operacyjnym GNU/Linux definicja tej dyrektywy może wyglądać w następujący sposób:

Mount Command = "/bin/mount -t iso9660 -o ro %a %m"

Widać tu "magiczne" znaki %a i %m. Są to specjalne słowa, w których miejsce Bacula wstawia odpowiadające im wartości. Wartości te to:

  • %% = % (znak procenta)
  • %a = plik urządzenia archiwizującego
  • %e = przyjmuje 1, jeśli płyta jest nagrywana po raz pierwszy oraz 0 przy każdym kolejnym nagraniu
  • %n = kolejny numer nagrywanego backupu
  • %m = punkt montowania urządzenia (zdefiniowany w dyrektywie Mount Point)
  • %v = nazwa nagrywanego pliku

Niektóre wymienione tu specjalne słowa mogą być niezrozumiałe dla czytelnika. Zostaną one wyjaśnione w dalszej części artykułu.

Istnieje możliwość zdefiniowania punktu montowania urządzenia w pliku fstab. W tym wypadku komenda montowania może wyglądać w następujący sposób:

Mount Command = "/bin/mount /media/dvd"

Unmount Command = nazwa komendy - mówi Baculi, jaką komendę użyć do odmontowania urządzenia.

Przykładowa definicja:

Unmount Command = "/bin/umount %m"

Write Part Command = nazwa komendy - określa komendę, jaka zostanie użyta do nagrania danych na urządzenie. W przypadku nagrywarki DVD definiuje się tu skrypt dvd-handler wraz z odpowiednimi parametrami w następujący sposób:

Write Part Command = "/lokalizacja/skryptu/dvd-handler %a write %e %v"

Przyglądając się specjalnym słowom (ze znakiem procenta), można zauważyć, że w miejsce %a Bacula wstawi plik urządzenia archiwizującego (np. /dev/scd0). Słowo %e będzie przybierało postać liczby 1, w sytuacji gdy następuje pierwszy zapis na płytę DVD. W każdym innym wypadku będzie to liczba 0. Ostatnie słowo %v przybierze postać lokalizacji pliku obrazu z danymi do nagrania (np. /usr/local/bacula/var/bacula/working/nazwa_woluminu.5).

Free Space Command = nazwa_komendy - zadaniem tej dyrektywy, jest określenie komendy, jaka zostanie użyta do sprawdzenia tego, ile wolnego miejsca znajduje się na płycie DVD. Wspomniany już w artykule skrypt dvd-handler posiada możliwość wykonania tej operacji. Definicja tej dyrektywy może mieć postać:

Free Space Command = "/lokalizacja/skryptu/dvd-handler %a free"

Jeżeli czytelnik zechciałby użyć własnej komendy zwracającej wolne miejsce na płycie DVD, nie ma co do tego przeciwwskazań, po za tym, aby rozmiar zwracany na standardowe wyjście był zgodny co do formatu z tym, który zwraca skrypt dvd-handler.

Wywołując opisywaną komendę z tekstowej konsoli można uzyskać podobny rezultat do poniższego.

# /usr/local/bacula/etc/scripts/dvd-handler /dev/scd0 free
3615227904
No Error reported.

Określenie tej dyrektywy nie jest konieczne, lecz bez niej Bacula będzie przyjmować, że na płycie DVD zawsze jest wolna przestrzeń do nagrania.

Dyrektywy zasobu Job w pliku konfiguracyjnym zarządcy bacula-dir.conf:

Write Part After Job = Yes/No - jedna z dyrektyw  używanych do spoolingu. Jeśli jest ustawiona na "Yes", to po wykonaniu każdej kopii bezpieczeństwa, obraz z danymi będzie zapisywany na nośnik. Pozornie działanie takie wydaje się pożądane, niemniej jednak w przypadku płyty DVD może mieć nieco szersze znaczenie.

Podczas backupu na DVD, każda kopia bezpieczeństwa zostaje zapisana jako osobny plik o nazwie składającej się z etykiety woluminu oraz kolejnego numeru backupu na płycie DVD.

Przykład

Płyta DVD została zaetykietowana pod nazwą disc-20100405. Wykonano na nią 4 backupy z dyrektywą Write Part After Job ustawioną na "Yes". Struktura plików na płycie DVD to:

./disc-20100405
./disc-20100405.2
./disc-20100405.3
./disc-20100405.4
./disc-20100405.5

Pierwszy plik zawiera metadane woluminu umożliwiające jego identyfikację. Kolejne pliki zawierają dane kopii bezpieczeństwa. Mimo tak podzielonej struktury, nadal jest to jeden wolumin i tak właśnie traktowany jest przez Baculę. Jak obrazuje powyższy listing, numeracja plików z danymi backupów zaczyna się od liczby 2.

Używając tego samego nośnika, dyrektywa Write Part After Job ustawiona zostaje na "No" dla każdego wykonanego backupu. Następnie zostaje wykonane 5 takich backupów. Dyrektywa Write Part After Job zostaje przełączona z powrotem na "Yes". Przy kolejnej (szóstej) kopii bezpieczeństwa wszystkie dane (5 poprzednich backupów + 1 bieżący) zostają nagrane na płytę DVD w postaci jednego pliku. Struktura plików na płycie wygląda teraz w ten sposób:

./disc-20100405    <--- plik z metadanymi
./disc-20100405.2  <--- 1 backup
./disc-20100405.3  <--- 1 backup
./disc-20100405.4  <--- 1 backup
./disc-20100405.5  <--- 1 backup
./disc-20100405.6  <--- 6 backupów

Zapisanie kilku kopii bezpieczeństwa w jednym pliku charakteryzuje się m.in. tą zaletą, że dzięki temu oszczędza się nieco miejsca na płycie. Dzieje się tak za sprawą odstępów, które powstają pomiędzy plikami backupów zapisywanymi z włączoną opcją Write Part After Job = yes na stałe. Odstęp taki stanowi około 10MB. Proporcjonalnie dla 10 plików, miejsce zajmowane przez odstępy wynosić będzie około 100MB itd. Inną zaletą, którą niesie ze sobą ten sposób zapisu danych na płycie DVD, to wzrost szybkości wykonywania backupów, ponieważ nie traci się czasu na dostęp Baculi do napędu oraz samo nagrywanie mniejszych porcji. Dodatkowo, jeżeli ma się w zamiarze wykonywanie bardzo wielu kopii bezpieczeństwa na jednej płycie, należy pamiętać o tym, że tego typu nośniki charakteryzują się skończoną liczbą zapisów. Co do samej oszczędności miejsca to zważywszy na obecne ceny płyt DVD może to nie mieć dużego znaczenia.

PRZYKŁADOWA KONFIGURACJA

Poniżej znajduje się przykład konfiguracji zasobu Device oraz Job.

Plik konfiguracyjny bacula-sd.conf:

Device {
    Name = DVDDev
    Device Type = DVD
    MediaType = DVD
    ArchiveDevice = /dev/scd0
    Label Media = no
    Automatic Mount = yes
    Random Access = yes
    Removable Media = yes
    Requires Mount = yes
    Mount Point = /mnt/dvd
    Mount Command = "/bin/mount -t iso9660 -o ro %a %m"
    Unmount Command = "/bin/umount %m"
    Write Part Command = "/usr/local/bacula/etc/scripts/dvd-handler %a write %e %v"
    Free Space Command = "/usr/local/bacula/etc/scripts/dvd-handler %a free"
}

Plik konfiguracyjny bacula-dir.conf:

Storage {
Name = DVD
Address = darkstar
SD Port = 9103
Password = "xxxxxx"
Media Type = DVD
Device = DVDDev
}

Job {
    Name = RepozytoriumSVN
    Type = Backup
    Level = Full
    Pool = DVDDiscs
    Client = darkstar-fd
    Storage = DVD
    Messages = DirMessages
    FileSet = RepozytoriumSVNFileSet
    Write Part After Job = yes
}

ETYKIETOWANIE PŁYT DVD

Nadawanie etykiet z poziomu tekstowej konsoli Baculi odbywa się dokładnie w ten sam sposób, co etykietowanie woluminów na innego typu nośnikach (np. dysk, taśma magnetyczna). Poniższy listing przedstawia nadanie etykiety o nazwie disc-20100406 na nośnik DVD.

*label storage=DVD pool=DVDDiscs 
Enter new Volume name: disc-20100406
Connecting to Storage daemon DVD at darkstar:9103 ...
Sending label command for Volume "disc-20100406" Slot 0 ...
Part 1 (203 bytes) written to DVD.
Remaining free space 4,685,332,480 on "DVDDev" (/dev/scd0)
3000 OK label. VolBytes=203 DVD=1 Volume="disc-20100406" Device="DVDDev" (/dev/scd0)
Catalog record for Volume "disc-20100406", Slot 0  successfully created.
Requesting to mount DVDDev ...
3002 Device "DVDDev" (/dev/scd0) is mounted.

BACKUP

*run job=RepozytoriumSVN
Run Backup job
JobName:  RepozytoriumSVN
Level:    Full
Client:   darkstar-fd
FileSet:  RepozytoriumSVNFileSet
Pool:     DVDDiscs (From Job resource)
Storage:  DVD (From Pool resource)
When:     2010-04-05 17:38:57
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=489
*messages
05-kwi 17:39 darkstar-dir JobId 489: Start Backup JobId 489, Job=RepozytoriumSVN.2010-04-05_17.38.59_28
05-kwi 17:39 darkstar-dir JobId 489: Using Device "DVDDev"
05-kwi 17:39 darkstar-sd JobId 489: Volume "disc-20100406" previously written, moving to end of data.
05-kwi 17:39 darkstar-sd JobId 489: Ready to append to end of Volume "disc-20100406" part=3 size=102992716
05-kwi 17:39 darkstar-sd JobId 489: Job write elapsed time = 00:00:01, Transfer rate = 102.8 M Bytes/second
05-kwi 17:39 darkstar-sd JobId 489: Part 3 (102992513 bytes) written to DVD.
05-kwi 17:39 darkstar-sd JobId 489: Remaining free space 4,470,177,792 on "DVDDev" (/dev/scd0)
05-kwi 17:39 darkstar-dir JobId 489: Bacula darkstar-dir 5.0.0 (26Jan10): 05-kwi-2010 17:39:38
  Build OS:               x86_64-unknown-linux-gnu debian 5.0.3
  JobId:                  489
  Job:                    RepozytoriumSVN.2010-04-05_17.38.59_28
  Backup Level:           Full
  Client:                 "darkstar-fd" 5.0.0 (26Jan10) x86_64-unknown-linux-gnu,debian,5.0.3
  FileSet:                "RepozytoriumSVNFileSet" 2009-10-19 23:40:09
  Pool:                   "DVDDiscs" (From Job resource)
  Catalog:                "MojaBazaBaculi" (From Client resource)
  Storage:                "DVD" (From Pool resource)
  Scheduled time:         05-kwi-2010 17:38:57
  Start time:             05-kwi-2010 17:39:01
  End time:               05-kwi-2010 17:39:38
  Elapsed time:           37 secs
  Priority:               10
  FD Files Written:       488
  SD Files Written:       488
  FD Bytes Written:       102,843,115 (102.8 MB)
  SD Bytes Written:       102,898,873 (102.8 MB)
  Rate:                   2779.5 KB/s
  Software Compression:   None
  VSS:                    no
  Encryption:             no
  Accurate:               no
  Volume name(s):         disc-20100406
  Volume Session Id:      16
  Volume Session Time:    1270460277
  Last Volume Bytes:      205,985,229 (205.9 MB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

PODSUMOWANIE

Artykuł ten może stanowić podstawową wiedzę z zakresu wykonywania przy pomocy Baculi zapisu backupu na nośniki DVD. Został opracowany na  podstawie dokumentacji "Miscellaneous Guide" jak i na podstawie własnych doświadczeń. Starałem się nie zgłębiać treści w rozległy opis samego nośnika DVD w odniesieniu do archiwizacji, aby, jak napisałem na początku, ani nie zniechęcać ani nie zachęcać do używania tej techniki backupu.


Ta strona używa plików cookies (niezbędnych do prawidłowego działania oraz analitycznych). Odmów Wybierz ciasteczka Zezwól na wszystkie (więcej informacji)