Hlavní navigace

PC-BSD: způsoby a možnosti zálohování (dokončení)

29. 7. 2013
Doba čtení: 7 minut

Sdílet

V minulém díle našeho seriálu o operačním systému PC-BSD jsme skončili popisem zálohy uživatelských adresářů. Dnes tuto část dokončím popisem možností automatizace této činnosti. Následně se potom pustím do zálohování jailů a na závěr dílu i seriálu se zmíním o způsobu zálohování na externí disk.

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_de­vices=„YES“

weekly_locate_enable=„NO“

daily_status_security_chkse­tuid_enable=„NO“

daily_status_security_neg­grpperm_enable=„NO“

daily_status_security_chkmou­nts_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, securityweekly

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

CS24 tip temata

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.

Autor článku