Virtual Backup czyli backup syntetyczny w Bacula
13 czerwiec 2010, autor: Marcin Haba (gani)
Od wersji Bacula 3.0.x dostępna jest funkcjonalność Virtual Backupu. Artykuł prezentuje przykład zastosowania tego typu kopii zapasowej na bazie urzadzeń plikowych.
Wstęp
Wykonywanie pełnych kopii zapasowych wiąże się z zapisaniem wszystkich danych ze wskazanych lokalizacji na woluminy urządzenia. Często jest to kosztowna operacja dla zasobów sprzętowych, szczególnie gdy danych jest dużo. Dodając do tego niską przepustowość sieci łatwo zauważyć, że w przypadku kopii pełnych ważnym czynnikiem może okazać się czas potrzebny na zapisanie danych. Ten temat może spędzać sen z powiek niejednego administratora, u którego czas wykonywania pełnego backupu wykracza poza osiągalne okno backupowe. Jednym z rozwiązań takiego problemu jest użycie backupu konsolidacyjnego.
Co to jest backup konsolidacyjny
Nazwa "backup konsolidacyjny" wywodzi się bezpośrednio z zasady działania tego typu kopii zapasowej. Konsolidacja - w znaczeniu połączenia wielu w jedno - w odniesieniu do backupu oznacza połączenie kilku kopii zapasowych i utworzenie na tej podstawie jednej kopii pełnej. Równolegle funkcjonującą nazwą dla backupu konsolidacyjnego jest nazwa "backup syntetyczny", w którym słowo "syntetyczny" odnosi się do tego, że jest on tworzony z danych znajdujących się na woluminach w postaci kopii zapasowych, a nie z danych komputera klienta. W terminologii Baculi backup syntetyczny nazywa się Virtual Backup.
Zasada działania
Virtual Backup generowany jest z kopii pełnej oraz utworzonych na jej podstawie kopii przyrostowych lub różnicowych. Efektem jego wykonania jest kopia pełna zawierająca wszystkie dane wymienionych kopii. Tak wykonana kopia pełna zapisywana jest do innej puli woluminów od tej, z której odczytane zostały backupy składowe Virtual Backupu. Użyte do tego celu są co najmniej dwa urządzenia: jedno czytające dane backupów składowych z woluminów jednej puli, drugie zapisujące pełny backup wynikowy do innej puli woluminów. Takie działanie spowodowane jest tym, że jedno urządzenie może jednocześnie czytać lub zapisywać dane na jednym woluminie. Z konsekwencji tej restrykcji wynika, że pula woluminów źródłowa powinna zawierać woluminy innego urządzenia niż docelowa pula woluminów. Plusem tego rozwiązania jest możliwość składowania w naturalny sposób kopii pełnych na woluminach jednego urządzenia oraz kopii przyrostowych i różnicowych na woluminach innego urządzenia.
Operacja Virtual Backupu wykonywana jest bez udziału klienta, ponieważ, jak już wspomniałem, nowy pełny backup wygenerowany jest z danych innych kopii zapasowych, a nie z danych znajdujących się na komputerze klienta. Takie zachowanie niesie ze sobą znaczne udogodnienie związane z tym, że nie ma potrzeby transportowania danych z komputera klienta do komputera z demonem magazynowania, a co za tym idzie nie obciąża się sieci komputerowej transmisją dużej ilości danych. Oznacza to, że czas potrzebny na wykonanie Virtual Backupu jest krótszy, niż w przypadku wykonania zwykłej kopii pełnej. Co więcej, dostępność komputera klienta nie wpływa na to, czy kopia powiedzie się, czy też nie.
Za realizację Virtual Backupu w znacznej mierze odpowiedzialny jest demon magazynowania. Ten fakt również ma dobry wpływ na czas realizacji backupu, ponieważ operacje na danych do stworzenia kopii pełnej wykonywane są w jego obrębie.
Na poniższych ilustracjach przedstawione zostały dwie metody wykonywania backupów pełnych i przyrostowych. Ilustracja 1 prezentuje tradycyjny sposób wykonywania tych kopii a Ilustracja 2 obrazuje działanie Virtual Backupu na przykładzie tego samego cyklu backupów co Ilustracja 1.
Ilustracja 1: Przykład standardowej metody wykonywania kopii zapasowych pełnych i przyrostowych
Ilustracja 2: Metoda wykonywania kopii zapasowych z wykorzystaniem Virtual Backupu
Podział puli woluminów
Podstawowym zadaniem puli woluminów jest pogrupowanie woluminów w grupy przeznaczone do jednego konkretnego celu. Zestaw dyrektyw zasobu Pool może pomóc w nadaniu cech charakterystycznych woluminom każdej z pul. Na potrzeby wprowadzenia Virtual Backupu dobrą praktyką jest, aby woluminy wynikowych kopii pełnych Virtual Backupu składowane były w przeznaczonej na ten cel osobnej puli woluminów. Proszę spojrzeć na poniższy przykłady zagospodarowania puli woluminów.
Ilustracja 3: Przykład rozplanowania puli woluminów na potrzeby Virtual Backupu
W tym przykładzie użyto trzech pul z woluminami trzech urządzeń. Zastanawiające może być to, że na przedstawionym diagramie (Ilustracja 3) znajdują się dwie pule woluminów na backupy pełne. Podyktowane jest to następującymi faktami:
- Przed uruchomieniem pierwszego Virtual Backupu musi istnieć jeden backup pełny (wykonany z danych na komputerze klienta) oraz odpowiadający mu co najmniej jeden backup przyrostowy lub różnicowy. W zaprezentowanym układzie puli woluminów (Ilustracja 3) złożenie tych backupów w całość będzie wymagało użycia dwóch urządzeń czytających (Urządzenie 2 i Urządzenie 3) oraz jednego zapisującego (Urządzenie 1). Backup pełny znajduje się na woluminie w puli o nazwie Pool 2, natomiast backupy przyrostowe na woluminie w puli woluminów Pool 3. Wynikowa kopia pełna zostanie zapisana na wolumin puli o nazwie Pool 1.
- Nie jest możliwe użycie jednej puli na kopie pełne (zarówno pierwszą kopię pełną jak i kopie pełne uzyskane przy użyciu Virtual Backupu) ponieważ w sytuacji uruchomienia Virtual Backupu demon magazynowania nie użyje jednocześnie jednego urządzenia do odczytu pełnego backupu bazowego (składowego) i do zapisu wynikowego backupu pełnego.
Po wykonaniu pierwszego Virtual Backupu (Ilustracja 3), pełnym backupem bazowym dla kolejnego Virtual Backupu będzie backup z puli woluminów Pool 1. Dlatego też przy wykonaniu drugiego Virtual Backupu potrzeba będzie poinformować o tym Baculę. Poniżej znajduje się rysunek obrazujący drugi Virtual Backup:
Ilustracja 4: Drugi Virtual Backup w założonym rozplanowaniu puli woluminów
Po tej operacji będą istniały już trzy backupy pełne: jeden w puli o nazwie Pool 1 oraz dwa backupy w puli o nazwie Pool 2. Trzeci Virtual Backup powinien przebiegać tak jak pierwszy Virtual Backup, a czwarty tak jak drugi Virtual Backup itd. Jak można zauważyć, w przedstawionym przykładzie chodzi o przemienność Virtual Backupów w ten sposób, że raz backup wynikowy trafi do puli Pool 1, a raz do puli Pool 2. Natomiast do puli Pool 3 będą wykonywane tylko backupy przyrostowe.
Dyrektywy Virtual Backupu
Na potrzeby Virtual Backupu wprowadzona została nowa wartość do określenia poziomu kopii zapasowej (zasób Job):
Level = VirtualFull
Dodatkowo używaną dyrektywą jest:
Next Pool = nazwa_puli_woluminow
która określa do jakiej puli woluminów zostanie zapisana wynikowa kopia pełna Virtual Backupu. Definiowana jest w zasobie puli woluminów (zasób Pool).
Przykładowa konfiguracja
Konfiguracja urządzeń w pliku konfiguracyjnym demona magazynowania bacula-sd.conf:
Device {
Name = "Urzadzenie Plikowe 1"
Media Type = up1_pliki
Archive Device = /mnt/UrzadzeniePlikowe1
Random Access = yes
Automatic Mount = yes
Removable Media = no
Label Media = no
}
Device {
Name = "Urzadzenie Plikowe 2"
Media Type = up2_pliki
Archive Device = /mnt/UrzadzeniePlikowe2
Random Access = yes
Automatic Mount = yes
Removable Media = no
Label Media = no
}
Device {
Name = "Urzadzenie Plikowe 3"
Media Type = up3_pliki
Archive Device = /mnt/UrzadzeniePlikowe3
Random Access = yes
Automatic Mount = yes
Removable Media = no
Label Media = no
}
Konfiguracja w pliku konfiguracyjnym serwisu zarządcy bacula-dir.conf:
Storage {
Name = "Urzadzenie Pierwsze"
Address = darkstar
SD Port = 9103
Password = "xxxxx"
Device = "Urzadzenie Plikowe 1"
Media Type = up1_pliki
Maximum Concurrent Jobs = 1
}
Storage {
Name = "Urzadzenie Drugie"
Address = darkstar
SD Port = 9103
Password = "xxxxx"
Device = "Urzadzenie Plikowe 2"
Media Type = up2_pliki
Maximum Concurrent Jobs = 1
}
Storage {
Name = "Urzadzenie Trzecie"
Address = darkstar
SD Port = 9103
Password = "xxxxx"
Device = "Urzadzenie Plikowe 3"
Media Type = up3_pliki
Maximum Concurrent Jobs = 1
}
Pool {
Name = "Kopie Pelne 1"
Pool Type = Backup
Recycle = no
Storage = "Urzadzenie Pierwsze"
Next Pool = "Kopie Pelne 2"
}
Pool {
Name = "Kopie Pelne 2"
Pool Type = Backup
Recycle = no
Storage = "Urzadzenie Drugie"
Next Pool = "Kopie Pelne 1"
}
Pool {
Name = "Kopie Przyrostowe"
Pool Type = Backup
Recycle = no
Storage = "Urzadzenie Trzecie"
}
Job {
Name = Dokumenty
Type = Backup
Level = Incremental
Pool = "Kopie Przyrostowe"
Client = darkstar-fd
FileSet = "Dokumenty FileSet"
Messages = "Wiadomosci Zarzadcy"
}
FileSet {
Name = "Dokumenty FileSet"
Include {
Options {
signature = MD5
}
File = /home/gani/Dokumenty
}
}
Przykład praktyczny
Jako pierwszy zostaje wykonany pełny backup o nazwie "Dokumenty" z komputera klienta. Będzie on zapisany na wolumin z puli Kopie Pelne 1 przy użyciu urządzenia Urzadzenie Pierwsze.
run job=Dokumenty level=Full pool="Kopie Pelne 1" storage="Urzadzenie Pierwsze"
13-cze 15:25 darkstar-dir JobId 1: Start Backup JobId 1, Job=Dokumenty.2010-06-13_15.25.44_04
13-cze 15:25 darkstar-dir JobId 1: Using Device "UrzadzeniePlikowe1"
13-cze 15:25 darkstar-sd JobId 1: Wrote label to prelabeled Volume "vol-full1-1" on device "Urzadzenie Plikowe 1" (/mnt/UrzadzeniePlikowe1)
13-cze 15:26 darkstar-sd JobId 1: Job write elapsed time = 00:00:22, Transfer rate = 6.621 M Bytes/second
13-cze 15:26 darkstar-dir JobId 1: Bacula darkstar-dir 5.0.1 (24Feb10): 13-cze-2010 15:26:08
Build OS: x86_64-unknown-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 1
Job: Dokumenty.2010-06-13_15.25.44_04
Backup Level: Full
Client: "darkstar-fd" 5.0.1 (24Feb10) x86_64-unknown-linux-gnu,slackware,Slackware 13.0.0.0.0
FileSet: "Dokumenty FileSet" 2010-06-13 15:25:44
Pool: "Kopie Pelne 1" (From User input)
Catalog: "Baza Danych Baculi" (From Client resource)
Storage: "Urzadzenie Pierwsze" (From Pool resource)
Scheduled time: 13-cze-2010 15:25:08
Start time: 13-cze-2010 15:25:46
End time: 13-cze-2010 15:26:08
Elapsed time: 22 secs
Priority: 10
FD Files Written: 2,209
SD Files Written: 2,209
FD Bytes Written: 145,287,361 (145.2 MB)
SD Bytes Written: 145,680,791 (145.6 MB)
Rate: 6604.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s): vol-full1-1
Volume Session Id: 1
Volume Session Time: 1276433837
Last Volume Bytes: 145,858,524 (145.8 MB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK
Następnie zostają wykonane dwa backupy przyrostowe na wolumin w puli Kopie Przyrostowe. Do zapisania tej kopii zostanie użyte urządzenie o nazwie Urzadzenie Trzecie.
run job=Dokumenty level=Incremental pool="Kopie Przyrostowe" storage="Urzadzenie Trzecie"
13-cze 15:29 darkstar-dir JobId 2: Start Backup JobId 2, Job=Dokumenty.2010-06-13_15.29.17_05
13-cze 15:29 darkstar-dir JobId 2: Using Device "UrzadzeniePlikowe3"
13-cze 15:29 darkstar-sd JobId 2: Wrote label to prelabeled Volume "vol-inc-1" on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3)
13-cze 15:29 darkstar-sd JobId 2: Job write elapsed time = 00:00:01, Transfer rate = 96.50 K Bytes/second
13-cze 15:29 darkstar-dir JobId 2: Bacula darkstar-dir 5.0.1 (24Feb10): 13-cze-2010 15:29:19
Build OS: x86_64-unknown-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 2
Job: Dokumenty.2010-06-13_15.29.17_05
Backup Level: Incremental, since=2010-06-13 15:25:46
Client: "darkstar-fd" 5.0.1 (24Feb10) x86_64-unknown-linux-gnu,slackware,Slackware 13.0.0.0.0
FileSet: "Dokumenty FileSet" 2010-06-13 15:25:44
Pool: "Kopie Przyrostowe" (From Job resource)
Catalog: "Baza Danych Baculi" (From Client resource)
Storage: "Urzadzenie Trzecie" (From Pool resource)
Scheduled time: 13-cze-2010 15:28:59
Start time: 13-cze-2010 15:29:19
End time: 13-cze-2010 15:29:19
Elapsed time: 0 secs
Priority: 10
FD Files Written: 22
SD Files Written: 22
FD Bytes Written: 93,921 (93.92 KB)
SD Bytes Written: 96,508 (96.50 KB)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s): vol-inc-1
Volume Session Id: 2
Volume Session Time: 1276433837
Last Volume Bytes: 97,911 (97.91 KB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK
*run job=Dokumenty level=Incremental pool="Kopie Przyrostowe" storage="Urzadzenie Trzecie"
13-cze 15:30 darkstar-dir JobId 3: Start Backup JobId 3, Job=Dokumenty.2010-06-13_15.30.55_06
13-cze 15:30 darkstar-dir JobId 3: Using Device "UrzadzeniePlikowe3"
13-cze 15:30 darkstar-sd JobId 3: Volume "vol-inc-1" previously written, moving to end of data.
13-cze 15:30 darkstar-sd JobId 3: Ready to append to end of Volume "vol-inc-1" size=97911
13-cze 15:30 darkstar-sd JobId 3: Job write elapsed time = 00:00:01, Transfer rate = 54.77 K Bytes/second
13-cze 15:30 darkstar-dir JobId 3: Bacula darkstar-dir 5.0.1 (24Feb10): 13-cze-2010 15:30:57
Build OS: x86_64-unknown-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 3
Job: Dokumenty.2010-06-13_15.30.55_06
Backup Level: Incremental, since=2010-06-13 15:29:19
Client: "darkstar-fd" 5.0.1 (24Feb10) x86_64-unknown-linux-gnu,slackware,Slackware 13.0.0.0.0
FileSet: "Dokumenty FileSet" 2010-06-13 15:25:44
Pool: "Kopie Przyrostowe" (From Job resource)
Catalog: "Baza Danych Baculi" (From Client resource)
Storage: "Urzadzenie Trzecie" (From Pool resource)
Scheduled time: 13-cze-2010 15:30:47
Start time: 13-cze-2010 15:30:57
End time: 13-cze-2010 15:30:57
Elapsed time: 0 secs
Priority: 10
FD Files Written: 12
SD Files Written: 12
FD Bytes Written: 52,820 (52.82 KB)
SD Bytes Written: 54,778 (54.77 KB)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s): vol-inc-1
Volume Session Id: 3
Volume Session Time: 1276433837
Last Volume Bytes: 153,505 (153.5 KB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK
Po tych operacjach w puli woluminów Kopie Pelne 1 znajduje się jeden backup pełny, a w puli o nazwie Kopie Przyrostowe znajdują się dwa backupy przyrostowe. Aby stworzyć z w/w kopii jeden Virtual Backup potrzebne będzie wskazanie puli woluminów, gdzie znajduje się dyrektywa Next Pool wyznaczająca pulę woluminów, do której trafi backup wynikowy. Są do wyboru dwie pule na kopie pełne o nazwach Kopie Pelne 1 oraz Kopie Pelne 2. Pierwsza z nich zawiera już kopię pełną, druga pula nie zawiera żadnych kopii. W celu wykonania pierwszego Virtual Backupu potrzeba wskazać tą pulę, która poprzez dyrektywę Next Pool wskazuje na pulę nie zawierającą żadnej kopii składowej Virtual Backupu, który chce się wykonać. W wywołaniu komendy backupu potrzeba więc użyć puli Kopie Pelne 1, która wskazuje na Kopie Pelne 2. Poniższa komenda wykonuje Virtual Backup.
run job=Dokumenty level=VirtualFull pool="Kopie Pelne 1" storage="Urzadzenie Pierwsze"
13-cze 15:37 darkstar-dir JobId 4: Start Virtual Backup JobId 4, Job=Dokumenty.2010-06-13_15.37.26_08
13-cze 15:37 darkstar-dir JobId 4: Warning: This Job is not an Accurate backup so is not equivalent to a Full backup.
13-cze 15:37 darkstar-dir JobId 4: Bootstrap records written to /usr/local/bacula/var/bacula/working/darkstar-dir.restore.1.bsr
13-cze 15:37 darkstar-dir JobId 4: Using Device "UrzadzeniePlikowe2"
13-cze 15:37 darkstar-sd JobId 4: Ready to read from volume "vol-full1-1" on device "Urzadzenie Plikowe 1" (/mnt/UrzadzeniePlikowe1).
13-cze 15:37 darkstar-sd JobId 4: Wrote label to prelabeled Volume "vol-full2-1" on device "Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2)
13-cze 15:37 darkstar-sd JobId 4: Forward spacing Volume "vol-full1-1" to file:block 0:213.
13-cze 15:37 darkstar-sd JobId 4: End of Volume at file 0 on device "Urzadzenie Plikowe 1" (/mnt/UrzadzeniePlikowe1), Volume "vol-full1-1"
13-cze 15:37 darkstar-sd JobId 4: acquire.c:117 Changing read device. Want Media Type="up3_pliki" have="up1_pliki"
device="Urzadzenie Plikowe 1" (/mnt/UrzadzeniePlikowe1)
13-cze 15:37 darkstar-sd JobId 4: Media Type change. New read device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3) chosen.
13-cze 15:37 darkstar-sd JobId 4: Ready to read from volume "vol-inc-1" on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3).
13-cze 15:37 darkstar-sd JobId 4: Forward spacing Volume "vol-inc-1" to file:block 0:215.
13-cze 15:37 darkstar-sd JobId 4: End of Volume at file 0 on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3), Volume "vol-inc-1"
13-cze 15:37 darkstar-sd JobId 4: End of all volumes.
13-cze 15:37 darkstar-dir JobId 4: Bacula darkstar-dir 5.0.1 (24Feb10): 13-cze-2010 15:30:57
Build OS: x86_64-unknown-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 4
Job: Dokumenty.2010-06-13_15.37.26_08
Backup Level: Virtual Full
Client: "darkstar-fd" 5.0.1 (24Feb10) x86_64-unknown-linux-gnu,slackware,Slackware 13.0.0.0.0
FileSet: "Dokumenty FileSet" 2010-06-13 15:25:44
Pool: "Kopie Pelne 2" (From Job Pool's NextPool resource)
Catalog: "Baza Danych Baculi" (From Client resource)
Storage: "Urzadzenie Drugie" (From Storage from Pool's NextPool resource)
Scheduled time: 13-cze-2010 15:37:01
Start time: 13-cze-2010 15:30:57
End time: 13-cze-2010 15:30:57
Elapsed time: 0 secs
Priority: 10
SD Files Written: 2,240
SD Bytes Written: 145,831,794 (145.8 MB)
Rate: 0.0 KB/s
Volume name(s): vol-full2-1
Volume Session Id: 4
Volume Session Time: 1276433837
Last Volume Bytes: 153,505 (153.5 KB)
SD Errors: 0
SD termination status: OK
Termination: Backup OK
Na powyższym listingu zostały zaznaczone wytłuszczoną czcionką komunikaty informujące o tym, że demon magazynowania w trakcie wykonywania jednej kopii zmienia urządzenia odczytujące składowe backupy oraz przygotowuje urządzenie do zapisania backupu wynikowego.
Gdyby w powyższym wywołaniu komendy run podać pulę woluminów Kopie Pelne 2, Virtual Backup zakończyłby się błędem, ponieważ demon magazynowania nie mógłby czytać pełny backup składowy i jednocześnie zapisywać backup wynikowy na ten sam wolumin z puli Kopie Pelne 1.
Stan wykonanych do tej pory kopii zapasowych przedstawia się następująco:
Widać tutaj, że nowo powstały backup o identyfikatorze 4 jest kopią pełną. Wykonam jeszcze dwa backupy przyrostowe na woluminy puli o nazwie Kopie Przyrostowe:
run job=Dokumenty level=Incremental pool="Kopie Przyrostowe" storage="Urzadzenie Trzecie"
run job=Dokumenty level=Incremental pool="Kopie Przyrostowe" storage="Urzadzenie Trzecie"
Stan backupów wygląda teraz jak poniżej:
Aby na ich podstawie utworzyć Virtual Backup, tak samo jak przy wykonywaniu pierwszego Virtual Backupu, potrzeba podać pulę woluminów, która wskazuje na pulę nie zawierającą backupów składowych przyszłego Virtual Backupu. Składowymi nowego Virtual Backupu będą backup pełny (powstały z poprzedniego Virtual Backupu) o identyfikatorze 4, który znajduje się na woluminie w puli Kopie Pelne 2 oraz dwa backupy przyrostowe o identyfikatorze 5 i 6 znajdujące się na woluminie puli Kopie Przyrostowe. Do drugiego Virtual Backupu potrzeba więc podać pulę Kopie Pelne 2, która wskazuje na pulę Kopie Pelne 1.
run job=Dokumenty level=VirtualFull pool="Kopie Pelne 2" storage="Urzadzenie Drugie"
13-cze 15:44 darkstar-dir JobId 7: Start Virtual Backup JobId 7, Job=Dokumenty.2010-06-13_15.44.34_11
13-cze 15:44 darkstar-dir JobId 7: Warning: This Job is not an Accurate backup so is not equivalent to a Full backup.
13-cze 15:44 darkstar-dir JobId 7: Bootstrap records written to /usr/local/bacula/var/bacula/working/darkstar-dir.restore.2.bsr
13-cze 15:44 darkstar-dir JobId 7: Using Device "UrzadzeniePlikowe1"
13-cze 15:44 darkstar-sd JobId 7: Ready to read from volume "vol-full2-1" on device "Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2).
13-cze 15:44 darkstar-sd JobId 7: Volume "vol-full1-1" previously written, moving to end of data.
13-cze 15:44 darkstar-sd JobId 7: Ready to append to end of Volume "vol-full1-1" size=145858524
13-cze 15:44 darkstar-sd JobId 7: Forward spacing Volume "vol-full2-1" to file:block 0:213.
13-cze 15:44 darkstar-sd JobId 7: End of Volume at file 0 on device "Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2), Volume "vol-full2-1"
13-cze 15:44 darkstar-sd JobId 7: acquire.c:117 Changing read device. Want Media Type="up3_pliki" have="up2_pliki"
device="Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2)
13-cze 15:44 darkstar-sd JobId 7: Media Type change. New read device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3) chosen.
13-cze 15:44 darkstar-sd JobId 7: Ready to read from volume "vol-inc-1" on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3).
13-cze 15:44 darkstar-sd JobId 7: Forward spacing Volume "vol-inc-1" to file:block 0:153505.
13-cze 15:44 darkstar-sd JobId 7: End of Volume at file 0 on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3), Volume "vol-inc-1"
13-cze 15:44 darkstar-sd JobId 7: End of all volumes.
13-cze 15:44 darkstar-dir JobId 7: Bacula darkstar-dir 5.0.1 (24Feb10): 13-cze-2010 15:43:01
Build OS: x86_64-unknown-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 7
Job: Dokumenty.2010-06-13_15.44.34_11
Backup Level: Virtual Full
Client: "darkstar-fd" 5.0.1 (24Feb10) x86_64-unknown-linux-gnu,slackware,Slackware 13.0.0.0.0
FileSet: "Dokumenty FileSet" 2010-06-13 15:25:44
Pool: "Kopie Pelne 1" (From Job Pool's NextPool resource)
Catalog: "Baza Danych Baculi" (From Client resource)
Storage: "Urzadzenie Pierwsze" (From Storage from Pool's NextPool resource)
Scheduled time: 13-cze-2010 15:44:30
Start time: 13-cze-2010 15:43:00
End time: 13-cze-2010 15:43:01
Elapsed time: 1 sec
Priority: 10
SD Files Written: 2,326
SD Bytes Written: 189,476,963 (189.4 MB)
Rate: 189477.0 KB/s
Volume name(s): vol-full1-1
Volume Session Id: 7
Volume Session Time: 1276433837
Last Volume Bytes: 43,836,811 (43.83 MB)
SD Errors: 0
SD termination status: OK
Termination: Backup OK
Przywracanie danych
Lista wszystkich w/w backupów przedstawiona jest poniżej.
Do sprawdzenia przywracania danych użyję kopii o identyfikatorach 4,5,6
restore jobid=4,5,6
13-cze 15:51 darkstar-dir JobId 9: Start Restore Job Odzyskiwanie_danych.2010-06-13_15.51.36_14
13-cze 15:51 darkstar-dir JobId 9: Using Device "UrzadzeniePlikowe2"
13-cze 15:51 darkstar-sd JobId 9: Ready to read from volume "vol-full2-1" on device "Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2).
13-cze 15:51 darkstar-sd JobId 9: Forward spacing Volume "vol-full2-1" to file:block 0:213.
13-cze 15:51 darkstar-sd JobId 9: End of Volume at file 0 on device "Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2), Volume "vol-full2-1"
13-cze 15:51 darkstar-sd JobId 9: acquire.c:117 Changing read device. Want Media Type="up3_pliki" have="up2_pliki"
device="Urzadzenie Plikowe 2" (/mnt/UrzadzeniePlikowe2)
13-cze 15:51 darkstar-sd JobId 9: Media Type change. New read device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3) chosen.
13-cze 15:51 darkstar-sd JobId 9: Ready to read from volume "vol-inc-1" on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3).
13-cze 15:51 darkstar-sd JobId 9: Forward spacing Volume "vol-inc-1" to file:block 0:346638.
13-cze 15:51 darkstar-sd JobId 9: End of Volume at file 0 on device "Urzadzenie Plikowe 3" (/mnt/UrzadzeniePlikowe3), Volume "vol-inc-1"
13-cze 15:51 darkstar-sd JobId 9: End of all volumes.
13-cze 15:51 darkstar-dir JobId 9: Bacula darkstar-dir 5.0.1 (24Feb10): 13-cze-2010 15:51:39
Build OS: x86_64-unknown-linux-gnu slackware Slackware 13.0.0.0.0
JobId: 9
Job: Odzyskiwanie_danych.2010-06-13_15.51.36_14
Restore Client: darkstar-fd
Start time: 13-cze-2010 15:51:38
End time: 13-cze-2010 15:51:39
Files Expected: 3
Files Restored: 3
Bytes Restored: 4,927
Rate: 4.9 KB/s
FD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Restore OK
Na powyższym listingu widać jak demon magazynowania zmienia urządzenia odczytujące dane do przywrócenia. Odpowiadające temu komunikaty zostały zaznaczone pogrubioną czcionką.
O czym warto pamiętać
Przy konfigurowaniu urządzeń plikowych regułą jest, aby każdemu takiemu urządzeniu nadać unikalny typ woluminów (dyrektywa Media Type). W działaniu Virtual Backupu na urządzeniach plikowych jest to również konieczne.
Należy pamiętać o tym, że Virtual Backup wykonany z samej kopii pełnej i bez żadnej kopii przyrostowej zakończy się błędem, ponieważ nie będzie backupów składowych.
Czas rozpoczęcia i czas zakończenia Virtual Backupu pobierany jest z ostatniego backupu składowego, tak aby wynikowa kopia pełna mogła być użyta jako źródło do kopii przyrostowych i różnicowych na danych klienta.
Podsumowanie
Przedstawione i omówione przykłady są jednym ze sposobów na użycie Virtual Backupu na bazie urządzeń plikowych. Użytkownik może sam stworzyć inny plan zagospodarowania puli woluminów i urządzeń dopasowany do jego indywidualnych potrzeb.
Przykład z tego artykułu bazuje na kopiach przyrostowych, lecz nic nie stoi na przeszkodzie użyć kopii różnicowych lub jednych i drugich do budowania kopii pełnych.