Automatizace nejen zálohovacích úloh je možná v principu trojím způsobem. První a nejjednodušší z nich je ten, který je obsažen v samotné aplikaci, jejíž provoz se má automatizovat, nebo nějaké aplikaci zálohovací. Toto v konkrétním případě k dispozici není.
Další možností je využít systémové aplikace na bázi cronu. Samotný cron je instalovaný defaultně a je možné ho využít pro administrátora i běžného uživatele. Blíže ho zde popisovat asi nemá větší smysl. Je možné také využít některé podobné aplikace na stejném základu. Hlavní jejich předností je možnost provozu na strojích, které neběží v režimu 24/7. Jako příklady bych uvedl třeba anacron a fcron, které jsou v repozitářích.
V PC-BSD je pak možné využít ještě další možnost, a sice systém periodic. Tento systém provádí periodické spouštění shellových skriptů, umístěných do vyhrazených adresářů. Samotný systém periodic je spouštěn přes cron. Tento systém pochází z FreeBSD. Bližší podrobnosti je možné najít např. na webu FreeBSD.org (man periodic).
Systém se skládá z několika konfiguračních souborů. Tím hlavním je /etc/defaults/periodic.conf. Tento soubor obsahuje poměrně značné množství spouštěných skriptů. Pro uživatele je ale zajímavější konfigurace v souboru /etc/periodic.conf. Pokud se zde uvedou skripty se stejným názvem, jako jsou v hlavní konfiguraci, dojde k jejich přednostnímu provedení. Defaultně má soubor tento obsah:
monthly_statistics_enable=„YES“
monthly_statistics_report_devices=„YES“
weekly_locate_enable=„NO“
daily_status_security_chksetuid_enable=„NO“
daily_status_security_neggrpperm_enable=„NO“
daily_status_security_chkmounts_enable=„NO“
Pro přepsání skriptů v /etc/periodic.conf je také možné použít stejně nazvané položky v souboru /etc/periodic.conf.local (soubor není defaultně přítomný).
Další součástí je adresář /etc/periodic, ve kterém jsou defaultně následující podadresáře: daily, monthly, security a weekly
Systém funguje následovně:
– v /etc/periodic.conf se vytvoří nebo povolí odkaz na příslušný adresář a skript. V defaultním nastavení je např. položka: weekly_locate_enable=„NO“
– v příslušném adresáři (konkrétně weekly) najdeme a upravíme nebo vytvoříme skript s požadovaným názvem – konkrétně se jedná o soubor /etc/periodic/weekly/310.locate. Jeho obsah je v souboru locate.txt.
– v souboru /etc/crontab se povolí spouštění systému periodic. Defaultní nastavení pro systém je takové, které ho nespouští:
# Perform daily/weekly/monthly maintenance.
#1 3 * * * root periodic daily
#15 4 * * 6 root periodic weekly
#30 5 1 * * root periodic monthly
Jak je ze stručného popisu zřejmé, jedná se o systém velmi výkonný a dobře konfigurovatelný. Proto se v rámci automatizace zaměřím přednostně na něj a hlavně vyzkouším tvorbu příslušných skriptů. To bude ale až někdy později. Tím bych exkurzi do automatizace spouštění aplikací opustil a zmínil se o poslední součásti zálohování – jailech.
Zálohování jailů – interní
Něco málo o zálohování jailů bylo již zmíněno. Nyní se na to podíváme trochu podrobněji. Jaily je možné zálohovat pomocí třech základních operací: vytváření snapshotů, klonování snapshotů a export jailu do souboru *.wdn. Tyto operace je možné provádět jak z příkazové řádky, tak z Warden GUI.
Vzhledem k tomu, že se budou zálohy jailů přenášet na externí úložiště, budu v převážné míře využívat jejich export do interního adresáře a následné kopírování wdn souborů na externí disk. Příkaz pro export jailu je velmi jednoduchý:
# sudo warden export jail-name
Pokud použijeme tento příkaz, soubor jail-name.wdn se vytvoří v adresáři /usr/jails. Pokud použijeme tento příkaz:
# sudo warden export jail-name --dir=/zalohy/jails
dojde sice také k prvotnímu vytvoření wdn souboru v tom samém adresáři, ale po ukončení exportu je soubor automaticky kopírován do zvoleného adresáře/datasetu.
Ještě upozorním na to, že soubor *.wdn je již komprimovaný a není tak nutné se pokoušet o jeho externí komprimaci!
Ostatní možnosti asi moc využívat nebudu, ale přesto se o nich krátce zmíním. Vytvoření snapshotu je velmi jednoduché ve Warden GUI. Stačí stisknout tlačítko Add na záložce Snapshots a akce proběhne prakticky okamžitě – viz obrázek.
Vytvořený snapshot je možné vymazat, obnovit a připojit/odpojit.
Pokud je snapshotů vytvořeno víc, můžeme se mezi nimi přesouvat pomocí posuvníku – viz obrázek.
Pro bližší informace je možné využít příkaz systému Warden:
# sudo warden
zfslistsnap percona
2013–07–23–12–38–12
2013–07–23–12–43–21
2013–07–23–12–43–25
nebo obecný příkaz ZFS:
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/jails/percona@2013–07–23–12–38–12 0 – 657M –
tank1/usr/jails/percona@2013–07–23–12–43–21 0 – 657M –
tank1/usr/jails/percona@2013–07–23–12–43–25 0 – 657M –
Jak je z příkazu patrné, samotný snapshot jailu nezabírá prakticky žádný prostor na disku. Vybraný snapshot je také možné klonovat. To se provede poměrně jednoduchým příkazem:
# sudo warden
zfsclonesnap percona 2013-07-23-12-43-25
Snapshot cloned and mounted to: /usr/jails/clones/percona-2013–07–23–12–43–25
Klonovaný snapshot je uložen do speciálního adresáře /usr/jails/clones/percona-2013–07–23–12–43–25. Přehled o klonech je možné získat opět oběma způsoby:
# sudo warden
zfslistclone percona
Clone Directory: /usr/jails/clones
-----------------------------------
2013–07–23–12–43–25
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/jails 11,0G 641G 837K /usr/jails
tank1/usr/jails/clones 232K 641G 221K /usr/jails/clones
tank1/usr/jails/clones/percona-2013–07–23–12–43–25 11,6K 641G 657M /usr/jails/clones/percona-2013–07–23–12–43–25
Klon je vlastně plnohodnotný jail, se kterým je také tak možné zacházet. Snapshoty a klony je možné mazat pomocí příkazů zfsrmsnap a zfsrmclone, např:
# sudo warden zfsrmclone percona 2013-07-23-12-43-25
Jak je asi už na první pohled zřejmé, je možnostem manipulace s jaily věnována systémem Warden velká a určitě zasloužená pozornost. To jistě napomáhá jeho rozšíření, protože tím jenom podporuje další zajímavé vlastnosti, které již byly zmíněny v dřívějších dílech.
Ještě než ukončím poměrně rozsáhlý text o zálohování, doplním ho o další informace. Tentokrát se týkají externího úložiště, na které se všechny interní zálohy kopírují. Jedná se o klasický USB externí disk. Problém ale nastal v momentě, kdy se měly kopírovat soubory větší než cca 4 GB. Jak je asi zřejmé, byl disk formátován jako FAT32. Vzhledem k tomu, že všechny snapshoty domovského adresáře jsou nad 9GB a kromě toho se zálohují ještě virtuální stroje a multimediální soubory, bylo nutné disk formátovat jinak. Vzhledem k tomu, že občas někdo potřebuje zálohovat z různých verzí Windows, nemohl jsem se dát cestou unixových a linuxových FS. Na výběr tak zbývaly pouze dvě možnosti: NTFS a exFAT. Já jsem se rozhodl, že použiju ten druhý v pořadí.
Defaultně je již instalovaný jeden z potřebných balíčků – fuse-exfat v aktuální verzi 1.0.0. K tomu je nutné přidat ještě další balíček pro administraci souborového systému – exfat-utils. Nyní je nutné provést tři základní kroky k tomu, aby bylo možné externí disk s tímto souborovým systémem využít:
1. upravit systém PC-BSD
Úpravy směřují k tomu, aby se potřebné moduly automaticky spouštěly při startu systému.
To spočívá v úpravě souboru /etc/rc.conf, kam je třeba přidat řádek
fusefs_enable="YES"
Dále je nutné upravit soubor /boot/loader.conf a přidat do něj řádek
fuse_load="YES"
Pokud se soubor fuse.ko nachází pouze v adresáři /usr/local/modules, je nutné ho nakopírovat do adresáře /boot/modules. Pak se restartuje stroj a vše by mělo být připravené k práci se novým souborovým systémem.
2. vytvořit nový oddíl na externím disku
Jako první je třeba určit, který oddíl je třeba formátovat. Seznam všech připojených zařízení je ve vyhrazeném adresáři a je možné ho zobrazit třeba příkazem:
# ls /dev/da*
/dev/da0 /dev/da1 /dev/da2 /dev/da3
Pokud je disk připojený a zapnutý, vypadá situace následovně:
# ls /dev/da*
/dev/da0 /dev/da2 /dev/da4
/dev/da1 /dev/da3 /dev/da4s1
Hledaným oddílem je tedy zařízení /dev/da4s1 a můžeme provést jeho formátování příkazem:
# sudo mkexfat /dev/da4s1
3. připojení externího disku
Na ruční připojení (automaticky se mi připojují jenom disky nebo flashky do 32 GB) jsem vytvořil jednoduchý skript:
#!/bin/bash read -p "Set device aka daXsY: " v sudo mount.exfat-fuse -o umask=0777 /dev/$v /media
Zatím jsem s externím diskem celkem spokojený, mám zatím jenom dvě výhrady:
– vzhledem k umístění do userspace je přenosová rychlost nižší, než bylo na FAT32
– při každém kopírování na exFAT správce souborů (emelfm2) vytrvale hlásí nemožnost změny přístupových práv k souborů a adresářům
S prvním problémem asi nic moc neudělám a na druhý se pokusím zaměřit do budoucna.
Tímto bych považoval poslední díl o zálohování za ukončený. Tímto dílem také končí celý poměrně rozsáhlý seriál. Pokud vše dopadne podle plánu, měl by ve velmi krátké době začít vycházet seriál o konkrétním využití a nastavení jailů pro různé serverové aplikace.