GNU/Linux >> Znalost Linux >  >> Linux

Nová funkce kontejneru:Volatile overlay mounts

Nedávné verze Podman, Buildah a CRI-O začaly využívat výhod nové funkce jádra, volatilních překryvných připojení. Tato funkce vám umožňuje připojit překryvný souborový systém s příznakem, který mu říká, že se nemá synchronizovat s diskem.

Pokud potřebujete připomenout použití a výhody překryvných držáků, podívejte se na můj článek z minulého léta.

Co je synchronizace a proč je důležitá?

V Linuxu, když zapisujete do souboru nebo adresáře, jádro okamžitě nezapíše data na disk. Místo toho ukládá do vyrovnávací paměti spoustu zápisů a poté pravidelně ukládá data na disk, aby se zvýšil výkon. Tomu se říká synchronizace . Problém je v tom, že proces myslí data byla uložena po dokončení zápisu, ale ve skutečnosti to není, dokud jádro tato data nesynchronizuje. To znamená, že pokud jste zapsali data a jádro se zhroutilo, existuje šance, že data nebyla nikdy uložena.

Z tohoto důvodu se mnoho souborových systémů pravidelně synchronizuje a nástroje mohou vyžadovat, aby synchronizace probíhala často. Když dojde k synchronizaci, jádro přestane zpracovávat data se zámkem a synchronizuje všechna data na disk. To samozřejmě způsobuje horší výkon. Pokud máte proces, který způsobuje časté synchronizace, může být výkon vaší práce skutečně narušen. Některé nástroje, jako je RPM, vyžadují synchronizaci po zapsání každého souboru na disk, což způsobí vyprázdnění všech nečistých stránek daného souboru, což je značná režie.

[ Začínáte s kontejnery? Podívejte se na tento bezplatný kurz. Nasazení kontejnerových aplikací:technický přehled. ]

Kontejnery možná nevyžadují synchronizaci

Ve světě kontejnerů máme mnoho případů použití, kdy nám nezáleží na tom, zda jsou data uložena. Pokud by se jádro zhroutilo, zapsaná data bychom stejně nepoužili.

Když děláte buildah bud nebo podman build , je obraz kontejneru zapsán do překryvného přípojného bodu, často pomocí DNF nebo YUM. Pokud by se jádro zhroutilo uprostřed vytváření obrázku, byl by obsah zapsaný do překryvné vrstvy k ničemu a musí jej uživatel vyčistit. Cokoli, co se nepodařilo zapsat, bude smazáno. Po dokončení sestavení se však překryvná vrstva roztrhá na svazek obrázků, který lze poté synchronizovat s diskem.

Dalším případem použití nestálých překryvných připojení je spuštění Podman s --rm vlajka. --rm flag říká Podmanovi, aby zničil kontejner a překryvný bod připojení, když kontejner dokončí. Zhroucení kontejneru by zanechalo obsah, o kterém uživatel již uvedl, že pro něj nemá využití, takže není důvod se starat o to, zda byl zápis úspěšný.

Ve světě Kubernetes je CRI-O kontejnerový engine. Kubernetes je téměř vždy nastaven tak, aby při spouštění odstranil všechny kontejnery. V podstatě to chce začít s čistým stavem. To znamená, že pokud jádro zkolabuje během zapisování dat do překryvného připojení, tato data budou zničena, jakmile se systém zavede. Je také bezpečné používat takové konfigurace se stavovými kontejnery, protože data se obvykle zapisují na externí svazky, které nebudou za běhu ovlivněny příznakem „volatile“.

Přidání nestálé možnosti

Kontejnerový týmový inženýr Giuseppe Scrivano si všiml těchto případů použití a myslel si, že bychom mohli zlepšit výkon přidáním nestálé možnosti do překryvného souborového systému linuxového jádra a implementovali toto chování. Výsledkem je, že novější verze Buildah, Podman a CRI-O budou v těchto případech použití jako výchozí používat volatilní příznak a doufejme, že dosáhnou lepšího výkonu.

Pamatujte, že všechny svazky připojené do kontejneru budou mít i nadále výchozí synchronizační chování typických souborových systémů, takže se nemusíte obávat ztráty dat zapsaných do trvalého úložiště.

Níže uvedený graf ukazuje, jak se snižuje počet IOPS zápisu v kontejneru, který běží yum install -y texlive na stroji s 16 GB RAM. Kromě toho, když kontejner běží se zapnutým nestálým příznakem, je ovlivněn také čas jeho nástěnných hodin a končí rychleji.

Nečisté stránky budou nakonec zapsány do úložiště, jakmile vyprší časový limit špinavého poměru nebo inodu, protože tato nastavení nejsou ovlivněna příznakem nestálého připojení.

Sbalit

Díky technologii kontejnerů neustále posouváme hranice toho, co systém Linux zvládne, a experimentujeme s novými případy použití. Přidání nestálé možnosti do překryvného souborového systému jádra pomáhá zvýšit výkon a umožňuje kontejnerům pokračovat ve vývoji a poskytovat větší výhody.

[ Zdarma ke stažení:cheat sheet pro pokročilé příkazy Linuxu. ]


Linux
  1. Jak vytvořit kontejner Anaconda Python Data Science Docker

  2. Nová funkce šifrování v Ubuntu 12.10:Domácí šifrování nebo úplné šifrování disku? Nebo oboje?

  3. Jak opustit kontejner Docker

  1. Co je to relační databáze?

  2. Owncloud disk havaroval, data jsou v bezpečí, jak nastavit nový server

  3. Jak používat novou funkci inline dat ext4? (ukládání dat přímo do inode)

  1. Jak sdílet data mezi kontejnery Docker

  2. Připojení nového souborového systému ovlivní připojení nerekurzivních vazeb?

  3. Je potřeba GPT na 16TB datovém disku?