GNU/Linux >> Znalost Linux >  >> Linux

Podman získává podporu překrytí bez kořenů

Podman může používat nativní překryvný souborový systém s linuxovým jádrem verze 5.13. Až dosud jsme používali fuse-overlayfs. Jádro získalo podporu bez root v jádře 5.11, ale chyba zabránila použití SELinuxu se souborovým systémem; tato chyba byla opravena v 5.13.

Vypadá to, že Fedora tuto opravu zpětně portuje do svých jader 5.12, takže uživatelé by ji měli mít možnost používat, jakmile získají přístup k jádru.

Proč by vás to mělo zajímat?

Až do verze 5.11 umožňovalo jádro uživatelům připojit omezený počet typů souborových systémů v uživatelském jmenném prostoru. Zahrnovaly tmpfs, bind mounts, procfs, sysfs a fuse. Podman používal souborový systém fuse-overlayfs připojený pomocí této podpory pro připojení pojistek v uživatelském jmenném prostoru po mnoho let.

Překryvná pojistka byla skvělá. Je to však souborový systém v uživatelském prostoru, což znamená, že potřebuje téměř dvakrát tolik práce než jádro. Každé čtení/zápis musí být před předáním do hostitelského jádra interpretováno pojistkovým překrytím. Při velkém pracovním zatížení, které zatěžuje souborový systém, trpí výkon funkce fuse-overlay. Bylo vidět, jak pojistkové překryvy odpojují CPU. Sečteno a podtrženo, měli bychom vidět lepší výkon s nativními překryvnými vrstvami, zejména u těžkých kontejnerů pro čtení/zápis v režimu bez kořenů. Například podman build . výkon by se měl výrazně zlepšit. Všimněte si, že při zápisu na svazky se pojistkové překryvy používají zřídka, takže výkon nebude ovlivněn.

Další nevýhodou fuse-overlayf je to, že vyžaduje přístup k /dev/fuse . Když se lidé pokusí spustit Podman a Buildah v omezeném kontejneru, odebereme jim oprávnění CAP_SYS_ADMIN, i když běží jako root. To nás nutí používat uživatelský jmenný prostor, abychom mohli připojovat svazky. Aby to fungovalo, uživatelé musí přidat /dev/fuse do kontejneru. Jakmile budeme mít nativní překrytí pro režim bez kořenů (bez CAP_SYS_ADMIN ), /dev/fuse již nebude vyžadován.

Jak jej mohu použít?

Je smutné, že nativní překrytí budete moci používat pouze s čerstvým úložištěm, což znamená, že budete muset zničit veškeré stávající úložiště vašeho kontejneru. Je nutné provést podman system reset pokud již máte obrázky/kontejnery.

Důvodem je to, že když je použit připojovací program, ukládáme příznakový soubor do adresáře úložiště:$STORAGE/overlay/.has-mount-program . Pokud je soubor přítomen, c/storage ignoruje podporu nativního překrytí. Důvodem takové kontroly je, že existují rozdíly v tom, jak fuse-overlayfs ukládal metadata, včetně souborů whiteout na starších jádrech, která neumožňovala vytvoření speciálního whiteout zařízení pro neprivilegované uživatele, a to by nefungovalo, pokud by bylo povoleno nativní překrytí . To znamená, že pouhé odstranění souborů způsobí problémy s vašimi stávajícími kontejnery.

podman system reset příkaz také odstraní soubor vlajky. Poté bude použito nativní překrytí, pokud je podporováno základním jádrem.

Pokud jde o ostatní distribuce, tato podpora se projeví po vydání jádra 5.13. Pro RHEL/CentOS Stream plánujeme backporting funkce pro vydání RHEL8.5 na podzim.

Budeme nadále používat/podporovat fuse-overlayf?

Plánujeme i nadále používat a dokonce vylepšovat pojistkové překryvy. Tuto platformu používáme k experimentování s novými funkcemi a poté o nich diskutujeme s týmem jádra, abychom zjistili, zda je dokážeme dostat do nativní verze.

Jednou z významných funkcí, kterou jsme přidali, je podpora pro ukládání atributů zabezpečení souborů v rozšířených atributech souboru (xattrs). Potřebujeme to pro podporu domovských adresářů NFS. Servery NFS blokují použití kontejnerů s více než jedním UID v rámci uživatelského jmenného prostoru. To zastaví uživatele NFS homedirs od používání Podman bez nastavení dalšího úložiště. S fuse-overlayfs můžeme mít veškerý obsah vytvořený Podmanem uložený v souborovém systému, který vlastní uživatel spouštějící Podman. V rámci běžícího kontejneru je obsah reprezentován jako různé UID/GID na základě xattrs. Když proces běžící v tomto režimu vytvoří soubor s jiným UID, fuse-overlay zachytí vytvoření UID, vytvoří soubor s UID montážního programu a uloží různé UID do xattr.

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

Sbalit

Kontejnery Podman bez kořenů se stále vyvíjejí a stávají se stále praktičtějšími. Pro velké pracovní zatížení by nativní overlayf mělo poskytovat mnohem lepší výkon než s fuse-overlayf. Pro lepší podporu jsou také backportována jádra. Dejte nám vědět, jak hodláte tuto skvělou novou funkci používat.


Linux
  1. Používání souborů a zařízení v kontejnerech Podman rootless

  2. Řízení přístupu k rootless Podman pro uživatele

  3. Pořadí přesměrování?

  1. Spuštění rootless Podman jako uživatel bez root

  2. Hledáte alternativní editor souborů Gui s podporou velkých souborů?

  3. Jak vytvořit soubor v Linuxu z okna terminálu?

  1. Proč nemůže bezkořenový Podman vytáhnout můj obrázek?

  2. Co se děje v zákulisí kontejneru Podman bez kořenů?

  3. Linux – všechno je soubor?