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.