Snímky ZFS: Jak je vytvářet, obnovovat a automatizovat?
10 min čtení - 5. května 2026

Naučte se vytvářet, obnovovat a automatizovat snímky ZFS v systému Linux. Zahrnuje příkazy, zpětné obnovení, zásady uchovávání a replikaci mimo pracoviště pomocí nástroje Sanoid
Snímky ZFS: Jak je vytvářet, obnovovat a automatizovat?
Snímek systému ZFS je bodová kopie souborového systému určená pouze pro čtení. Je vytvořen okamžitě, nezabírá žádné místo, dokud se data nezmění, a umožňuje vrátit nebo obnovit soubory během několika sekund. Pokud spravujete servery, instance VPS nebo cokoli s daty, jejichž ztrátu si nemůžete dovolit, měly by být snímky součástí vašeho pracovního postupu.
Tento příspěvek se zabývá tím, jak snímky ZFS fungují, jak je používat a jak automatizovat jejich uchovávání, aby se nehromadily.
Jak snímky ZFS fungují
Systém ZFS používá model kopírování při zápisu (CoW). Při pořizování snímku systém ZFS neduplikuje žádná data. Pouze zaznamená aktuální stav stromu ukazatelů bloků. Nové zápisy jdou do volných bloků, zatímco snímek se stále odkazuje na originály.
To znamená, že snímky se vytvářejí v mikrosekundách bez ohledu na velikost datové sady a při vytváření spotřebovávají nulový prostor navíc. Prostor začnou využívat až při změně živé datové sady, protože snapshot si ponechává původní bloky, které by jinak byly uvolněny.
Tím se zásadně liší od nástrojů pro zálohování na úrovni souborů, jako je rsync nebo tar, které skenují a kopírují celé soubory. Pokud změníte 4KB z 10GB souboru, rsync zkopíruje celý soubor. Systém ZFS uloží pouze blok o velikosti 4KB.
Snímky jsou také neměnné. Na úrovni jádra je vynuceno, že jsou určeny pouze pro čtení, takže procesy v uživatelském prostoru (včetně ransomwaru) je nemohou měnit. V kombinaci s integrovaným kontrolním součtem systému ZFS to znamená, že při obnově můžete ověřit integritu dat.
Vytváření snímků
Předpoklady
Budete potřebovat nainstalovaný systém ZFS a nastavený fond. V systému Ubuntu 20.04+:
sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfsVytvořte fond. Pro jeden disk (typicky na VPS):
sudo zpool create tank /dev/sdbU zrcadleného nastavení na vyhrazeném serveru používejte ID disků místo názvů zařízení, abyste se vyhnuli problémům po restartu:
sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2Zapněte kompresi (LZ4 je rychlá a účinná):
sudo zfs set compression=lz4 tankPoté vytvořte datové sady pro pracovní zátěže:
sudo zfs create tank/web
sudo zfs create tank/databasesPořízení snímku
Základní příkaz:
sudo zfs snapshot tank/web@before-updatePro názvy s časovým razítkem (užitečné s cronem):
sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)Pro zachycení všech podřízených datových sad najednou použijte příznak rekurzivní:
sudo zfs snapshot -r tank@daily_backupOvěřte pomocí:
sudo zfs list -t snapshotObnovení ze snímků
Obnovení jednotlivých souborů
Každá datová sada ZFS má ve svém přípojném bodě skrytý adresář .zfs/snapshot. V seznamu ls se nezobrazí, ale můžete do něj přímo přejít:
ls /tank/web/.zfs/snapshot/before-update/Chcete-li obnovit jednotlivý soubor:
cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/Příznak -p zachovává oprávnění a časové značky.
Obnovení celé sady dat
Pokud potřebujete vrátit vše, například po neúspěšné aktualizaci:
sudo zfs rollback tank/web@before-updateJe to téměř okamžité, protože systém ZFS aktualizuje ukazatele bloků, nikoli kopíruje data. Je však destruktivní: všechny změny provedené po vytvoření snímku jsou trvale ztraceny.
Pokud mezi cílovým a aktuálním stavem existují novější snímky, systém ZFS vrácení zablokuje. Pomocí parametru -r jej vynutíte a tyto mezisnímky odstraníte:
sudo zfs rollback -r tank/db@20260426_090000Dobrý zvyk: před vrácením zpět vytvořte snímek aktuálního (poškozeného) stavu, abyste měli v případě potřeby náhradní řešení.
| Metoda obnovy | Rychlost | Riziko ztráty dat | Nejlepší pro |
|---|---|---|---|
Obnovení souborů prostřednictvím souboru .zfs | Závisí na velikosti souboru | Žádné | Náhodné smazání, obnova jednotlivých souborů |
| Úplné obnovení | Okamžité | Vysoká (ztráta všech změn po provedení snímku) | Neúspěšné aktualizace, problémy celého systému |
| Klonování pro testování | Okamžitý | Žádné (vytvoří paralelní datovou sadu) | Ověření před odevzdáním zpětného kopírování |
Správa a ořezávání snímků
Snímky začínají na nulové velikosti, ale rostou s tím, jak se pod nimi mění živá data. Kontrola využití prostoru:
zfs list -t snapshot -o name,used,refer,creationSloupec USED ukazuje, kolik místa je pro daný snímek jedinečné. REFER zobrazuje celkovou velikost datové sady v době pořízení snímku.
Chcete-li snímek odstranit:
sudo zfs destroy tank/web@before-updateSnímky můžete mazat také podle vzoru:
sudo zfs destroy tank/web@daily-2026-04-%Vždy nejprve proveďte suché spuštění:
sudo zfs destroy -nv tank/web@daily-%ZFS technicky zvládne miliony snímků, ale po několika tisících na datovou sadu se výkon zhorší. Příkazy jako zfs list a zfs destroy se znatelně zpomalí. Udržujte retenci na uzdě.
Automatizace retence pomocí nástroje Sanoid
Sanoid je standardní nástroj pro automatizaci vytváření a ořezávání snímků ZFS. V souboru sanoid.conf definujete zásady uchovávání a o zbytek se postará on.
Typická produkční konfigurace může vypadat takto:
| Typ pracovní zátěže | Hodinový | Denně | Týdenní | Měsíční |
|---|---|---|---|---|
| Standardní výroba | 24-48 | 30 | 8 | 12 |
| Databáze (vysoká odlivovost) | 72 | 30 | 12 | 24 |
| Protokoly / nízká priorita | 12-24 | 7 | 0 | 3 |
| Statická média | 0 | 7 | 0 | 3 |
Sanoid podporuje také dílčí hodinové snímky prostřednictvím parametru frequently. Nastavením frequently = 96 a frequent_period = 15 získáte snímek každých 15 minut.
Naplánujte aplikaci Sanoid prostřednictvím programu cron, aby se spouštěla každou minutu nebo každých 15 minut, a bude automaticky vytvářet a ořezávat snímky.
Replikace mimo pracoviště pomocí zfs send
Snímky na jednom serveru chrání před náhodnými změnami a selháním softwaru, ale ne před ztrátou hardwaru. K tomu slouží replikace mimo pracoviště pomocí zfs send a zfs receive přes SSH:
zfs send tank/web@backup | ssh user@remote zfs receive backup/webPro inkrementální přenosy (odesílání pouze toho, co se změnilo od posledního snímku):
zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/webTento proces automatizuje doprovodný nástroj Sanoidu, syncoid, který se stará o inkrementální odesílání, obnovu chyb a protokolování.
Poznámka k ochraně před ransomwarem
Snímky systému ZFS jsou na úrovni jádra určeny pouze pro čtení, což znamená, že je standardní malware nemůže upravovat ani šifrovat. To je silná vrstva ochrany. Není však neprůstřelná: pokud útočník získá přístup roota, může snímky odstranit ještě před zašifrováním vašich dat.
Snímky by měly být jednou z vrstev širší strategie. Kombinujte je s replikací mimo pracoviště, omezeným přístupem root a zabezpečením na úrovni sítě. Nespoléhejte se pouze na snímky.
Doporučené video
Závěrečné myšlenky
Snímky ZFS jsou rychlé, prostorově úsporné a jejich použití je jednoduché, jakmile pochopíte základy. Nenahrazují zálohování mimo pracoviště, ale vyplňují mezeru, kterou tradiční zálohovací nástroje nemohou: okamžité body obnovy s nulovými režijními náklady, které můžete provádět tak často, jak potřebujete.
Pokud používáte systém ZFS na serveru VPS nebo dedikovaném serveru, nastavte systém Sanoid, definujte zásady uchovávání a automatizujte replikaci. Konfigurace zabere 30 minut a ušetří hodiny, když se něco pokazí. Vyzkoušejte jej na VPS nebo dedikovaném serveru FDC.

Snímky ZFS: Jak je vytvářet, obnovovat a automatizovat?
Naučte se vytvářet, obnovovat a automatizovat snímky ZFS v systému Linux. Zahrnuje příkazy, zpětné obnovení, zásady uchovávání a replikaci mimo pracoviště pomocí nástroje Sanoid
10 min čtení - 5. května 2026
Jak nainstalovat a používat Redis na VPS
9 min čtení - 7. ledna 2026

Máte dotazy nebo potřebujete vlastní řešení?
Flexibilní možnosti
Globální dosah
Okamžité nasazení
Flexibilní možnosti
Globální dosah
Okamžité nasazení