Instalace Bacula na FreeBSD
Instalace zálohovacího systému Bacula na operační systém FreeBSD, toho času verze 11.
Instalace Baculy z portů
portmaster sysutils/bacula-server sysutils/bacula-client
Vybírám si podporu IPv6 a budeme používat databázový systém PostgreSQL. Páskovou mechaniku nevlastním, takže podporu MTX nepotřebuji. Pro menší instalace může být zajímavou volbou SQLite, nezkoušel jsem.
Vytvoření DB pro Baculu. Potřebujeme mít nainstalovaný PostgreSQL.
su postgres
cd /usr/local/share/bacula/
createuser -d bacula
./create_bacula_database
./make_bacula_tables
./grant_bacula_privileges
Popis komponent Baculy
Bacula je tvořena několika službami a ovládacími programy. Všechny programy mezi sebou komunikují po síti, tedy ve větších instalacích je možné každou komponentu umístit na vlastní stroj, pokud by ten jeden jediný nestíhal.
- Bacula Director - centrální komponenta, která vše řídí. Director komunikuje s klienty, se storage démony, má uložen katalog v databázi. Director je jen jeden a tvoří centrální prvek instalace.
- Bacula Console - ovládací program, napojuje se na directora. Pomocí tohoto programu budeme řídit directora. Konzolí můžeme mít nastavených kolik chceme a ovládat directora z mnoha míst.
- Databáze - zde jsou uloženy katalogy directora. Databáze není služba Baculy jako takové, uvádím to zde pouze pro kompletnost a jako další komponentu, která může běžet na samostatném stroji.
- Storage démon - tato služba slouží k ukládání záloh na médium. Tímto mediem může být disk nebo páska, ovládá páskovou knihovnu apod. Storage démonů může být víc.
- File démon nebo též klient - tato služba běží na stroji, který chceme zálohovat. Stará se o čtení dat ze zálohovaného místa a posílá je storage démonovi. Klientů je typicky hodně.
Nastavení propojení director a bconsole
Soubor bacula-dir.conf
:
Potřebujeme nastavit Name
a Password
:
Director {
Name = MyBaculaDirector
DIRport = 9101
QueryFile = "/usr/local/share/bacula/query.sql"
WorkingDirectory = "/var/db/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 20
Password = "EgJU8blo9Z....."
Messages = Daemon
}
Soubor bconsole.conf
:
V tomto souboru musíme nastavit Name
a Password
stejné jako je v Directoru.
Director {
Name = MyBaculaDirector
DIRport = 9101
address = bsd
Password = "EgJU8blo9Z....."
}
Můžeme zkusit nastartovat director a zkusit se připojit z bconsole
:
service bacula-dir onestart
bconsole
a můžeme zkusit status dir
.
Pokud se chceme na director připojit z jiného počítače, stačí na něm
nainstalovat pouze balíček bacula-console
a nastavit bconsole.conf
sekci
director. Tímto způsobem můžeme directora ovládat z mnoha počítačů.
Nastavení propojení directora a storage démona
Soubor bacula-sd.conf
:
Director {
Name = MyBaculaDirector
Password = "WIhOYQ7Wj9....."
}
A toto heslo musíme přidat do directora do definice Storage.
Soubor bacula-dir.conf
:
Storage {
Name = File1
Address = bsd
SDPort = 9103
Password = "WIhOYQ7Wj9....."
Device = FileChgr1
Media Type = File1
Maximum Concurrent Jobs = 10
}
Opět můžeme otestovat:
service bacula-dir onerestart
service bacula-sd onerestart
bconsole
a příkaz status dir
a status sd
.
Nastavení zálohovacího adresáře
Ve výchozí konfiguraci je zálohovací adresář nastaven na /tmp
a je vytvořeno
několik zařízení a virtuální autochanger. Toto nebudeme potřebovat, vytoříme si
jeden adresář pro zálohy. Jsme na ZFS, takže s chutí do vytváření datasetu.
(Tady pozor na nastavení komprese, bacula umí komprimovat sama, je tedy
zbytečné mít kompresi ještě v ZFS. Já ji mám vypnutou, ale ve výchozí instalaci
FreeBSD na ZFS je komprese pro root dataset zapnutá.)
zfs create zroot/var/bacula
mkdir /var/bacula/volumes
chown bacula:bacula -R /var/bacula
Nastavení v bacula-sd.conf
:
Device {
Name = BackupDevice
Media Type = Files
Archive Device = /var/bacula/volumes
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
}
Nastavení v bacula-dir.conf
:
Tady musíme definovat storage, na který se potom budeme odkazovat v jobech.
Storage {
Name = MyBackupStorage
Address = bsd
SDPort = 9103
Password = "WIhOYQ7Wj9....."
Device = BackupDevice
Media Type = Files
Maximum Concurrent Jobs = 10
}
Nastavení propojení directora a klienta (file daemon)
V souboru bacula-dir.conf
:
Client {
Name = bsd-fd
Address = bsd
FDPort = 9102
Catalog = MyCatalog
Password = "wSChzpdfRQ....."
File Retention = 60 days
Job Retention = 6 months
AutoPrune = yes
}
V souboru bacula-fd.conf
:
Director {
Name = MyBaculaDirector
Password = "wSChzpdfRQ....."
}
Opět otestujeme:
service bacula-dir onerestart
service bacula-fd onerestart
bconsole
a status client
.
Poslední kroky
Pokud je vše (tj director, storage daemon a alespoň jeden client) ok, můžeme nastavit spouštění při startu:
/etc/rc.conf
:
bacula_dir_enable="YES"
bacula_sd_enable="YES"
bacula_fd_enable="YES"
A můžeme vyzkoušet run job=BackupClient1
a potom restore
.
Tím je počáteční instalace nastavená.
Závěrem
Baculu jsem dlouho považoval za strašáka. Za šíleně složitý systém, který je složité nastavit. Není to tak. Bacula je rozhodně velmi komplexní systém, který toho umí opravdu velmi hodně. V tomto startovacím článku jsme se dotkli jen povrchu. Ale to nevadí. Cokoliv složitějšího si lze nastavit později.
Osobně doporučuji postupovat pomalu a krůček po krůčku. V klidu nainstalovat databázi. To je komplentně oddělená komponenta. Potom nainstalovat directora a propojit s DB. Ostatně, pokud běží na stejném stroji, není třeba nastavovat nic, bacula se připojí přes unix socket.
Potom nainstalovat bconsole a připojit na directora. To je velmi jednoduché,
stačí jméno, heslo a ip. Příkazy status
a messages
jsou vašim přítelem.
Až tohle bude funkční, je možné se pustit do připojení storage démona.
A až úplně nakonec připojit klienta (file démona). Tady opět pomůže příkaz
status
, ale taky estimate
a run
.
Ostatně tu poslední činnost, připojování dalších klientů, si zopakujete několikrát.
Takže není třeba se stresovat tím, že je toho hodně, protože si to lze krásně rozdělit na jednotlivé kroky. Alespoň takto jsem si to rozdělil já na doporučení z návodu, ze kterého jsem vycházel.