Uživatelské nástroje

Nástroje pro tento web


Schnapps

Schnapps je nástroj pro správu snapshotů, což jsou snímky stavu operačního systému v daný okamžik v čase. Snapshoty lze vytvořit manuálně – návod, jak na to, naleznete níže v tomto článku – zároveň se ale automaticky vytvářejí při každé aktualizaci operačního systému a také periodicky jednou za týden.

Díky Schnappsu je možné vrátit se k předchozí verzi OS, například za účelem otestovat danou funkcionalitu v té konkrétní verzi nebo jako záchrana při selhání OS. Pokud plánujete provádět větší změny v nastavení systému, doporučujeme si před tím vytvořit snapshot, ke kterému se můžete vrátit v případě, že by nastala nějaká chyba. K předchozímu snapshotu se také lze vrátit jednoduše podržením tlačítka reset dokud se nerozsvítí dvě diody. O této jednoduché záchraně pojednává článek Obnovení továrního nastavení routeru Turris Omnia. V tomto manuálu naleznete návod k pokročilejšímu zacházení se snapshoty.

Některé příkazy pro práci se Schnappsem:

  • schnapps help – nápověda (kompletní seznam příkazů s popisy jejich funkcí)
  • schnapps create – vytváření snapshotů
  • schnapps list – seznam dostupných snapshotů
  • schnapps rollback – návrat ke konkrétnímu snapshotu
  • schnapps cmp – porovnání snapshotů
  • schnapps diff – porovnání snapshotů s detaily

Vytvoření snapshotu a navrácení se k určitému snapshotu:

Připojte se k routeru pomocí SSH.

Poté pomocí příkazu schnapps create vytvořte snapshot. Můžete přitom použít argument desc, kterým si daný snapshot označíte a usnadníte si tak pozdější orientaci v jednotlivých snapshotech:

root@turris:~# schnapps create "Vsechno funguje"
Snapshot number 24 created

Schnapps vytvořil snapshot, v tomto případě číslo 24. Pomocí příkazu schnapps list můžete zkontrolovat, že snapshot je skutečně v seznamu snímků. Příklad výstupu, který můžete očekávat:

root@turris:~# schnapps list
    # | Type      | Date                      | Description
------+-----------+---------------------------+---------------------------------
   11 | rollback  | 2017-01-12 12:03:09 +0000 | Rollback to snapshot 7
   12 | rollback  | 2017-01-12 12:40:38 +0000 | Rollback to snapshot 6
   14 | rollback  | 2017-01-12 14:27:35 +0000 | Rollback to snapshot 13
   17 | pre       | 2017-01-24 13:00:28 +0100 | Automatic pre-update snapshot
   18 | pre       | 2017-02-02 14:02:24 +0100 | Automatic pre-update snapshot
   19 | pre       | 2017-02-13 09:41:45 +0100 | Automatic pre-update snapshot
   20 | pre       | 2017-02-13 11:05:48 +0100 | Automatic pre-update snapshot
   21 | pre       | 2017-02-20 14:02:12 +0100 | Automatic pre-update snapshot
   22 | pre       | 2017-03-15 14:02:11 +0100 | Automatic pre-update snapshot
   23 | pre       | 2017-03-21 10:11:22 +0100 | Automatic pre-update snapshot
   24 | single    | 2017-03-21 11:02:02 +0100 | Vsechno funguje

Všimněte si, že starší snapshoty v seznamu chybí. Automaticky vytvářené „předaktualizační“ snapshoty jsou totiž pravidelně mazány. Stejně tak je to s periodickými týdenními snapshoty, kterých se zachovává pouze několik nejnovějších a jsou mazány i ty, které se oproti následujícím nijak neliší.

Pomocí příkazu schnapps cmp [číslo] [číslo] můžete porovnat dva snapshoty, abyste zjistili co v dané verzi chybí nebo přebývá. Například:

root@turris:~# schnapps cmp 23 24
Comparing snapshots 23 and 24
This can take a while, please be patient.
Meaning of the lines is following:

   - file    file present in 23 and missing in 24
   + file    file not present in 23 but exists in 24
   ~ file    file in 23 differs from file in 24

 ~ /.rnd
 ~ /etc/config/ucitrack
 + /etc/cron.d/.keep
 + /etc/crontabs/.keep
 ~ /etc/dhparam/dh2048.pem
 ~ /etc/turris-version
- /lib/upgrade/keep.d/vixie-cron
...

Pokud si chcete ověřit verzi OS daného snapshotu, to se může hodit například pokud se chcete vrátit k nějaké konkrétní verzi, můžete to udělat pomocí následujících dvou příkazů:

root@turris:~# schnapps mount 19
Snapshot 19 mounted in /mnt/snapshot-@19
root@turris:~# cat /mnt/snapshot-@19/etc/turris-version
3.5.2

Následně se pomocí příkazu schnapps rollback [číslo] vrátíte k vybranému snapshotu. Současný stav systému při tom bude automaticky uložen jako další snapshot:

root@turris:~# schnapps rollback 23
Current state saved as snapshot number 25
Rolled back to snapshot 23

+ PARTITION=/dev/mtdblock4
+ WORKDIR=/tmp/certstore
+ SUBVOL=certbackup
+ dirname /tmp/certstore
+ mkdir -p /tmp
...

V posledním kroku je nutné router restartovat (ručně nebo příkazem reboot). Systém se nabootuje do kopie systému, která vznikla v momentě vytvoření snapshotu, který jste pro rollback vybrali.

Upozornění: Systém v daném snapshotu pochopitelně nezůstane navždy. Po pár hodinách se automaticky nainstalují aktualizace a od chvíle bootu do určitého snapshotu systém opět začne žít svým vlastním životem. Nástroj Schnapps tedy nelze používat jako navození jakéhosi trvalého nehybného stavu OS.