Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize | ||
navody:vps:datasety [2015/09/11 10:06] – [Datasety] kvoty, used vs referenced space Aither | navody:vps:datasety [2016/12/06 13:57] – KerryCZE | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | < | ||
====== Datasety ====== | ====== Datasety ====== | ||
Řádek 54: | Řádek 55: | ||
Zálohování probíhá pomocí ZFS snapshotů, které jsou vidět v menu | Zálohování probíhá pomocí ZFS snapshotů, které jsou vidět v menu | ||
- | Backups. Tam je možné je také vytvářet a mazat. | + | Backups. Tam je možné je také vytvářet. Vytvořené snapshoty VPS nelze |
+ | smazat, je nutné počkat, | ||
{{: | {{: | ||
Řádek 67: | Řádek 69: | ||
===== Mounty ===== | ===== Mounty ===== | ||
- | Mounty | + | Mounty |
i snapshoty. Do jakékoliv VPS jde mountnout jakýkoliv dataset či | i snapshoty. Do jakékoliv VPS jde mountnout jakýkoliv dataset či | ||
snapshot. Mounty jednotlivých snapshotů nahrazují trvalý mount záloh do | snapshot. Mounty jednotlivých snapshotů nahrazují trvalý mount záloh do | ||
Řádek 82: | Řádek 84: | ||
{{: | {{: | ||
- | Mount lze pouze vytvořit a smazat. Nelze jej v průběhu jen tak odpojit | + | Mount lze dočasně odpojit |
- | znovu připojit. | + | perzistentní mezi restarty VPS. |
===== Obnova záloh ===== | ===== Obnova záloh ===== | ||
- | Obnovení VPS ze zálohy (snapshotu) funguje stejně, jako doposud. | + | Obnova vždy funguje na úrovni datasetu. Když má VPS subdatasety a rootfs je |
- | vždy funguje na úrovni datasetu. Když má VPS subdatasety a rootfs je | + | |
obnoven ze zálohy, subdatasety obnoveny nejsou. Tzn. je možno obnovit | obnoven ze zálohy, subdatasety obnoveny nejsou. Tzn. je možno obnovit | ||
jakýkoliv dataset, aniž by to mělo vliv na ostatní datasety. Při obnově | jakýkoliv dataset, aniž by to mělo vliv na ostatní datasety. Při obnově | ||
Řádek 102: | Řádek 103: | ||
===== Stahování záloh ===== | ===== Stahování záloh ===== | ||
- | Stahování snapshotů je nyní součástí vpsAdminu. Vygenerované archivy | + | Zálohy můžeme stahovat buď přes webové rozhraní nebo [[navody: |
- | jsou vidět | + | CLI má výhodu |
+ | ale stahujeme ihned, připadně jde celý proces automatizovat. Můžeme stáhnout buď | ||
+ | tar.gz archiv, nebo přímo ZFS data stream (i inkrementálně). | ||
- | ===== Transakce ===== | + | ==== Inkrementální zálohy |
- | Transakce nyní spadají do skupin nazvaných „transaction chain“. Každá | + | Inkrementální záloha obsahuje pouze změněná data od předchozího snapshotu. |
- | operace (vytvoření VPS, start, stop, klon, atd.) je reprezentována | + | Aby klient dokázal vyhodnotit, které snapshoty lze stahovat inkrementálně, |
- | jedním chainem, který seskupuje více transakcí. V transaction logu v | + | každý snapshot obsahuje // |
- | pravém panelu | + | identifikátorem mohou být přeneseny inkrementálně. Tok historie naruší reinstalace |
- | procentech. Kliknutím na ID chainu lze vidět, jaké transakce obsahuje. | + | VPS nebo obnova ze zálohy, poté je identifikátor historie navýšen o 1 a |
+ | znovu se musí stáhnout plná záloha. | ||
- | V ideálním případě se chain buď provede úplně a nebo vůbec. Pokud k | + | Identifikátor historie je znázorněn v tabulce |
- | dojde k neočekávané či neošetřené chybě, bude muset zasáhnout administrátor. | + | |
- | Chainy se starají také o udržování konzistence databáze. Změny v | + | ==== Stažení |
- | databázi se provedou, jen když chain doběhne úspěšně. Může to být trochu | + | |
- | matoucí, když se např. po změně hostname stále zobrazuje to staré. Po | + | |
- | dokončení chainu se hostname aktualizuje a bude správně. | + | |
- | ===== Zámky objektů ===== | + | < |
+ | $ vpsfreectl snapshot download --help | ||
+ | snapshot download [SNAPSHOT_ID] | ||
- | S každým objektem | + | Command options: |
- | provádět jen jednu operaci. Zámky slouží k zaručení | + | -f, --format FORMAT |
- | pod sebou vpsAdmin sám nepodřezal větev. | + | -I, --from-snapshot SNAPSHOT_ID |
+ | -d, --[no-]delete-after | ||
+ | -F, --force | ||
+ | -o, --output FILE Save the download to FILE | ||
+ | -q, --quiet | ||
+ | -r, --resume | ||
+ | -s, --[no-]send-mail | ||
+ | -x, --max-rate N | ||
+ | --[no-]checksum | ||
+ | </ | ||
+ | |||
+ | Není-li ID snapshotu předáno programu jako argument, interaktivně se na něj | ||
+ | zeptá: | ||
+ | |||
+ | < | ||
+ | $ vpsfreectl snapshot download | ||
+ | Dataset 14 | ||
+ | (1) @2015-12-04T00: | ||
+ | VPS #198 | ||
+ | (2) @2015-12-01T09: | ||
+ | (3) @2015-12-01T09: | ||
+ | (4) @2015-12-01T11: | ||
+ | (5) @2015-12-01T11: | ||
+ | (6) @2015-12-01T11: | ||
+ | (7) @2015-12-01T11: | ||
+ | (8) @2015-12-01T12: | ||
+ | (9) @2015-12-01T12: | ||
+ | (10) @2015-12-01T12: | ||
+ | (11) @2015-12-01T12: | ||
+ | (12) @2016-02-29T09: | ||
+ | (13) @2016-02-29T10: | ||
+ | (14) @2016-02-29T10: | ||
+ | Pick a snapshot for download: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Budeme stahovat 4. snapshot ('' | ||
+ | |||
+ | < | ||
+ | Pick a snapshot for download: 4 | ||
+ | The download is being prepared... | ||
+ | Downloading to 198__2015-12-01T12-25-56.tar.gz | ||
+ | Time: 00:01:37 Downloading 0.3 GB: [=====================================================================================] 100% 992 kB/s | ||
+ | </ | ||
+ | |||
+ | Přepínačem '' | ||
+ | stream, nebo inkrementální data stream. Ve výchozím stavu dojde ke stažení | ||
+ | tar.gz archivu. | ||
+ | |||
+ | Soubor můžeme buď nechat pojmenovat vpsAdminem | ||
+ | ([[https:// | ||
+ | nebo si zvolit vlastní umístění pomocí přepínače '' | ||
+ | '' | ||
+ | |||
+ | Program umožňuje stáhování přerušit (třeba '' | ||
+ | navázat. Pokud není použit přepínač '' | ||
+ | program se uživatele zeptá, jestli má pokračovat ve stahování, | ||
+ | znovu. | ||
+ | |||
+ | < | ||
+ | Stahování lze navázat jen v případě, že připravený soubor na serveru mezitím | ||
+ | nebyl smazán (přepínač '' | ||
+ | stahování. | ||
+ | </ | ||
+ | |||
+ | ==== ZFS data stream ==== | ||
+ | |||
+ | < | ||
+ | $ vpsfreectl snapshot send --help | ||
+ | snapshot send SNAPSHOT_ID | ||
+ | |||
+ | Command options: | ||
+ | -I, --from-snapshot SNAPSHOT_ID | ||
+ | -d, --[no-]delete-after | ||
+ | -q, --quiet | ||
+ | -s, --[no-]send-mail | ||
+ | -x, --max-rate N | ||
+ | --[no-]checksum | ||
+ | </ | ||
+ | |||
+ | Rozdíl oproti '' | ||
+ | stdout a to v nekomprimované formě, abychom ho mohli propojit přimo se | ||
+ | '' | ||
+ | |||
+ | < | ||
+ | $ vpsfreectl snapshot send <id> | zfs recv -F <dataset> | ||
+ | </ | ||
+ | |||
+ | Inkrementální data stream lze vyžádat přepínačem '' | ||
+ | |||
+ | < | ||
+ | $ vpsfreectl snapshot send <id2> -- --from-snapshot <id1> | zfs recv -F < | ||
+ | </ | ||
+ | |||
+ | ==== Automatizované stahování záloh ==== | ||
+ | |||
+ | Automatizované stahování záloh řeší příkazy '' | ||
+ | '' | ||
+ | a druhý ID datasetu. | ||
+ | |||
+ | Tyto příkazy vyžadují nainstalované ZFS, vytvořený zpool a práva roota. | ||
+ | Program | ||
+ | |||
+ | Při spuštění se stáhnou snapshoty s aktuálním identifikátorem historie, které | ||
+ | ještě lokálně neexistují, | ||
+ | inkrementální přenos, program musí najít snapshot, který je přitomen lokálně a | ||
+ | zároveň je na serveru. Z toho vyplývá, že je potřeba zálohy stahovat minimálně | ||
+ | jednou za 14 dní, protože poté bude náš nejnovější lokální snapshot smazán ze | ||
+ | serveru a program nebude schopen pokračovat ve stahování záloh -- nebude existovat | ||
+ | žádný společný snapshot. | ||
+ | |||
+ | < | ||
+ | $ vpsfreectl backup vps --help | ||
+ | backup vps [VPS_ID] FILESYSTEM | ||
+ | |||
+ | Command options: | ||
+ | -p, --pretend | ||
+ | -r, --[no-]rotate | ||
+ | -m, --min-snapshots N Keep at least N snapshots (30) | ||
+ | -M, --max-snapshots N Keep at most N snapshots (45) | ||
+ | -a, --max-age N Delete snapshots older then N days (30) | ||
+ | -x, --max-rate N | ||
+ | -q, --quiet | ||
+ | -s, --safe-download | ||
+ | --retry-attemps N Retry N times to recover from download error (10) | ||
+ | -i, --init-snapshots N | ||
+ | --[no-]checksum | ||
+ | -d, --[no-]delete-after | ||
+ | --no-snapshots-as-error | ||
+ | --[no-]sudo | ||
+ | </ | ||
+ | |||
+ | Pokud program nedostane ID VPS/ | ||
+ | zeptá, nebo se pokusí jej zjistit sám. Argument '' | ||
+ | vždy. Měl by obsahovat jméno datasetu, do kterého chceme zálohy ukládat. | ||
+ | |||
+ | <note warning> | ||
+ | První argument programu je **ID VPS/ | ||
+ | datasetu matoucí, jelikož ID není stejné jako název datasetu, ale obojí je | ||
+ | většinou číslo. | ||
+ | </ | ||
+ | |||
+ | Než program spustíme na ostro, může se hodit přepínač '' | ||
+ | nám vypíše, co by program udělal, tedy jaké snapshoty by stáhnul a případně | ||
+ | smazal. | ||
+ | |||
+ | Přepínačem '' | ||
+ | uvolnilo místo pro ty nové. Nezměníme-li další nastavení, budeme mít minimálně | ||
+ | 30 snapshotů (což aktualně znamená 30 denní historii), maximálně 45 snapshotů | ||
+ | (pokud si nějaké vytvoříme manuálně) a budou se mazat snapshoty starší nez 30 | ||
+ | dní. | ||
+ | |||
+ | Obsah datasetu '' | ||
+ | neměl vytvářet další subdatasety/ | ||
+ | subdatasetech, | ||
+ | |||
+ | === Ukázka použití === | ||
+ | |||
+ | < | ||
+ | $ vpsfreectl backup vps storage/ | ||
+ | (1) VPS #198 | ||
+ | (2) VPS #199 | ||
+ | (3) VPS #202 | ||
+ | Pick a dataset to backup: 2 | ||
+ | Will download 8 snapshots: | ||
+ | @2016-03-07T18: | ||
+ | @2016-03-07T18: | ||
+ | @2016-03-07T18: | ||
+ | @2016-03-10T10: | ||
+ | @2016-03-10T10: | ||
+ | @2016-03-10T11: | ||
+ | @2016-03-10T14: | ||
+ | @2016-03-10T14: | ||
+ | |||
+ | Performing a full receive of @2016-03-07T18: | ||
+ | The download is being prepared... | ||
+ | Time: 00:00:56 Downloading 0.3 GB: [====================================================================================] 100% 1755 kB/s | ||
+ | Performing an incremental receive of @2016-03-07T18: | ||
+ | The download is being prepared... | ||
+ | Time: 00:00:00 Downloading 0.0 GB: [=======================================================================================] 100% 0 kB/s | ||
+ | </ | ||
+ | |||
+ | Můžeme si všimnout, že program stáhne první snapshot v plné velikosti a | ||
+ | všechny další pak inkrementálně. | ||
+ | |||
+ | Seznam snapshotů vypíšeme pomocí '' | ||
+ | < | ||
+ | $ sudo zfs list -r -t snapshot storage/ | ||
+ | NAME | ||
+ | storage/ | ||
+ | storage/ | ||
+ | storage/ | ||
+ | storage/ | ||
+ | storage/ | ||
+ | storage/ | ||
+ | storage/ | ||
+ | storage/ | ||
+ | </ | ||
+ | |||
+ | K vlastním datům se lze dostat přes speciální adresář '' | ||
+ | < | ||
+ | $ ls -1 / | ||
+ | 2016-03-07T18: | ||
+ | 2016-03-07T18: | ||
+ | 2016-03-07T18: | ||
+ | 2016-03-10T10: | ||
+ | 2016-03-10T10: | ||
+ | 2016-03-10T11: | ||
+ | 2016-03-10T14: | ||
+ | 2016-03-10T14: | ||
+ | </ | ||
+ | |||
+ | K pravidelnému stahování záloh se dá použít cron. Zápis v crontabu může vypadat | ||
+ | takto: | ||
+ | |||
+ | < | ||
+ | MAILTO=tvuj@mail | ||
+ | |||
+ | # Example of job definition: | ||
+ | # .---------------- minute (0 - 59) | ||
+ | # | .------------- hour (0 - 23) | ||
+ | # | | .---------- day of month (1 - 31) | ||
+ | # | | | .------- month (1 - 12) OR jan, | ||
+ | # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun, | ||
+ | # | | | | | | ||
+ | # * * * * * user-name command to be executed | ||
+ | 0 7 * * * root vpsfreectl backup vps 199 storage/ | ||
+ | </ | ||
+ | |||
+ | Program se tedy spustí každý den v 7 ráno (kdy už by měly být zálohy ve | ||
+ | vpsFree přeneseny na backuper.prg) a budou se stahovat maximální rychlostí | ||
+ | 1 MB/s. Výstup příkazu nám zašle cron na e-mail nastavený v proměnné | ||
+ | '' | ||
+ | Proto má program přepínač '' | ||
+ | případné chyby. | ||
+ | |||
+ | < | ||
+ | Pokud budeme zálohy stahovat pod rootem, ale '' | ||
+ | pod obyčejným uživatelem, | ||
+ | [[navody: | ||
+ | </ | ||
+ | |||
+ | === Stažení plné zálohy po pomalé/ | ||
+ | |||
+ | Příkaz '' | ||
+ | protože nestahuje do žádného souboru, ale data hned předává ZFS. Jestliže máme | ||
+ | k dispozici jen pomalou nebo nespolehlivou linku, může se stát, že stahování | ||
+ | selže a bude nutné jej restartovat -- od začátku. Můžeme si ale pomoct | ||
+ | přepínačem '' | ||
+ | pak je předá ZFS. Díky tomu je možné kdykoli stahování přerušit a později | ||
+ | v něm pokračovat. Nevýhodou je, že je k tomu potřeba 2x více místa na disku, protože | ||
+ | jsou data v jednu chvíli v dočasném souboru i v ZFS datasetu. Dočasný soubor je vytvořen | ||
+ | v adresáři, ze kterého je program spuštěn. | ||
+ | |||
+ | Na další problém můžeme narazit při dlouhé době stahování. Program při prvním | ||
+ | spuštění totiž stahuje všechny snapshoty, od nejstaršiho po nejnovější. Pokud | ||
+ | ale stahujeme ten nejstarší snapshot moc dlouho, může dojít | ||
+ | serveru, což vede k tomu, že ho později nemůžeme použít k inkrementálnímu stahování a | ||
+ | musíme stahovat plnou zálohu znovu. Pro tyto případy existuje přepínač | ||
+ | '' | ||
+ | posledních snapshotů. Nejbezpečnější je použít '' | ||
+ | máme až 14 dní na dokončení | ||
+ | dnech). Není to ale všelék, protože pokud je program ukončen a znovu spuštěn v jiný | ||
+ | den, poslední snapshot bude jiný a stahování začne nanovo, není-li hodnota | ||
+ | '' | ||
+ | |||
+ | === Detekce chybějící zálohy === | ||
+ | |||
+ | Někdy se může stát, že z nějakého důvodu denní záloha neproběhne a program tedy nebude | ||
+ | mít co stáhnout. Tato situace normálně není považována za chybu -- jednoduše | ||
+ | jsou všechny snapshoty už staženy a program nemá co dělat. Probíhá-li však | ||
+ | stahování záloh automaticky za pomocí cronu, nijak se nedozvíme o tom, že se | ||
+ | žádné zálohy nestahují. Z tohoto důvodu má program přepínač | ||
+ | '' | ||
+ | co stáhnout, skončí s chybou. Chyby nejsou potlačeny přepínačem '' | ||
+ | takže nám ji cron pošle na e-mail a o výpadku se dozvíme. | ||
+ | |||
+ | === Stahování záloh pod obyčejným uživatelem s využitím sudo === | ||
+ | |||
+ | Nechceme-li '' | ||
+ | běžet i pod neprivilegovaným uživatelem. K práci se ZFS pak využije sudo. | ||
+ | |||
+ | V následující ukázce budeme program instalovat a používat pod uživatelem | ||
+ | '' | ||
+ | |||
+ | < | ||
+ | # useradd -m -d / | ||
+ | # su vpsfree | ||
+ | $ gem install --user-install vpsfree-client | ||
+ | </ | ||
+ | |||
+ | Následující řádky vložte do ''/ | ||
+ | |||
+ | < | ||
+ | Defaults: | ||
+ | vpsfree ALL=(root) NOPASSWD: /sbin/zfs | ||
+ | </ | ||
+ | |||
+ | Uživatel '' | ||
+ | což je nezbytné, pokud jej chceme pouštět cronem. | ||
+ | |||
+ | Nyní zkusíme program spustit manuálně a potom jej umístíme do crontabu. Zkusme | ||
+ | si tedy vyžádat a uložit autentizační token: | ||
+ | |||
+ | < | ||
+ | # su vpsfree | ||
+ | $ vpsfreectl --auth token --new-token --token-lifetime permanent --save user current | ||
+ | </ | ||
+ | |||
+ | Dostanete-li chybu, že program neexistuje, bude potřeba specifikovat celou | ||
+ | cestu, nebo přidat správný adresář do '' | ||
+ | '' | ||
+ | ''/ | ||
+ | |||
+ | Máme-li funkčního klienta, můžeme stáhnout první zálohu do datasetu, který si | ||
+ | vytvoříme. V této ukázce se bude zálohovat VPS #123 do datasetu | ||
+ | '' | ||
+ | |||
+ | < | ||
+ | # su vpsfree | ||
+ | $ sudo zfs create -p storage/ | ||
+ | $ vpsfreectl backup vps 123 storage/ | ||
+ | </ | ||
+ | |||
+ | Další zálohy budeme stahovat pravidelně cronem, do souboru | ||
+ | ''/ | ||
+ | |||
+ | < | ||
+ | PATH=/ | ||
+ | MAILTO=tvuj@mail | ||
+ | HOME=/ | ||
+ | |||
+ | 0 7 * * * vpsfree vpsfreectl backup vps storage/ | ||
+ | </ | ||
+ | |||
+ | V '' | ||
+ | programu už nemusíme předávat ID VPS, při prvním spuštění si jej totiž uloží. | ||
+ | |||
+ | === Stahování záloh | ||
+ | |||
+ | Solaris/ | ||
+ | různým uživatelům. Program v tomto případě | ||
+ | sudo. | ||
+ | |||
+ | Potřebné práva budeme přidělovat uživateli '' | ||
+ | |||
+ | < | ||
+ | # zfs create storage/ | ||
+ | # zfs allow vpsfree create, | ||
+ | </ | ||
+ | |||
+ | Aby mohl uživatel vytvářet subdatasety a připojit je, musí mít i práva na | ||
+ | úrovni adresářů a souborů: | ||
+ | |||
+ | < | ||
+ | # chown vpsfree: | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Na FreeBSD je potřeba upravit nastavení kernelu tak, aby umožnil uživatelům mount: | ||
+ | |||
+ | < | ||
+ | # sysctl vfs.usermount=1 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Teď můžeme začit stahovat zálohy. Přepínačem '' | ||
+ | program nesnažil použít sudo. | ||
+ | |||
+ | < | ||
+ | # su vpsfree | ||
+ | $ vpsfreectl backup vps 123 storage/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Obecné přepínače ==== | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== Obnova stažené zálohy ===== | ||
+ | |||
+ | Obnova VPS ze stažené zálohy zatím není nijak automatizována. Jedním ze | ||
+ | způsobů je připojit si dataset VPS, který chceme obnovit, do jiné VPS | ||
+ | (playground) a data překopírovat. Tento postup je popsán v | ||
+ | [[navody: | ||
+ | |||
+ | < | ||
+ | aither | ||
+ | kerrycze | ||
+ | krcmar | ||
+ | </ | ||
- | Pokud na vás vyskočí chybová hláška: „Resource is locked. Please try | ||
- | again.“ znamená to, že objekt, se kterým chcete něco udělat, je uzamčen | ||
- | a musíte počkat, až bude k dispozici. |