GNU/Linux >> Znalost Linux >  >> Linux

Linux – Sloučit změny do horního souborového systému do nižšího souborového systému v Linuxu Překryvné (overlayfs) Mount?

Chtěl bych být schopen sloučit změny z horního souborového systému překryvného připojení do nižšího souborového systému.

Mám zájem jak online (tj. sloučit zatímco překryvná vrstva je připojena) a offline (odpojte překryv a poté sloučte) řešení.

Našel jsem několik offline řešení, která jsem přidal jako odpovědi.

Nevíte někdo o nějakém online řešení? Bylo by dobré mít příkaz typu „commit“, který byste mohli spustit ke sloučení vrstev, zatímco je překrytí stále připojeno.

Něco takového bylo položeno v následujících otázkách bez odpovědi:

  • Je vůbec možné upravit jeden soubor a synchronizovat jej do nižšího adresáře v OverlayFs?
  • Jak upravit nižší soubor prostřednictvím adresáře OverlayFS?
  • OverlayFS hladce upravovat soubor v nižším adresáři
  • OverlayFS – Jak provést změny v horním souborovém systému trvalé bez odpojení?

Komentáře v těchto příspěvcích naznačují různé slučování a bcache, které oba řeší konkrétní případy použití, ale ne obecný případ použití s ​​agnostickým souborovým systémem, který poskytují překryvy.

Mým cílem je mít bezpečnou karanténu souborového systému se snímky, které lze použít s libovolnou linuxovou aplikací nad jakýmkoli (tam, kde je to praktické) základním souborovým systémem, což vám umožní vrátit změny nebo je ručně potvrdit, až budete připraveni.

Mám podezření, že moderní Linux hlavní řady má všechny potřebné funkce, aby to dokázal, díky všem inovacím v oblasti sandboxu/virtualizace za posledních několik let, kdybych jen věděl, jak je používat.

Přijatá odpověď:

Pokus o online řešení, ale není tam úplně.

Nastavení (např. /tmp adresář, jako root):

LOWER=$HOME
mkdir u1 w1 o1 O
mount -t overlay overlay -o lowerdir=$LOWER,upperdir=u1,workdir=w1 o1
mount --bind o1 O

Pak můžete pracovat v O adresář, který je překrytím nad $LOWER . Když chcete udělat snímek:

mkdir u2 w2 o2
mount -t overlay overlay -o lowerdir=o1,upperdir=u2,workdir=w2 o2

(Všimněte si, že vnořené překryvy, jako je toto, nebudou fungovat na starších jádrech).

Ale pak chci nějaký způsob, jak atomicky změnit připojení vazby na O přejděte na o2 místo o1 . Nevím, jak to udělat jinak než:

umount O
mount --bind o2 O

(Není atomové; tam je okno, kde O je odpojeno).

V ideálním případě by běžící procesy mohly pokračovat v běhu, aniž by věděly, že základní souborový systém O se změnil z o1 na o2 . Nevím, jestli je to možné, nebo jestli se mění základní souborový systém O takhle to příliš naruší otevřené aplikace. Musím to dále prozkoumat.

Poté jednou O byl přesměrován na o2 , můžeme znovu připojit o1 jen pro čtení jako preventivní opatření, poté proveďte offline sloučení pomocí například rdiffdir nebo overlayfs-tools.

Související:Holy Sheet Cheat Sheet

Nakonec bychom chtěli nějaký způsob, jak atomově znovu připojit o2 jako lowerdir=$HOME,upperdir=u2,workdir=w2 takže o1 , u1 a w1 (všechny nyní prázdné adresáře) lze odstranit. Znovu, nevím, jestli je to možné.

Jinak můžeme dosáhnout snímků pouhým vnořením překryvů hlouběji a hlouběji a ponecháním překryvů a horních dirů u každého namontovaného, ​​aniž bychom se pokoušeli sloučit nebo vyčistit. Počet vnořených překryvů, které lze připojit, je však pravděpodobně omezen. A v určitém okamžiku stále potřebujeme sloučit vrstvy směrem dolů, pokud chceme zachovat změny.


Linux
  1. Jak zašifrovat jeden souborový systém Linux

  2. Jak připojit a odpojit souborový systém / oddíl v Linuxu (Příklady příkazů Mount/Umount)

  3. Jak připojit soubor iso v Linuxu

  1. Příklady příkazů mount v Linuxu

  2. Jak mohu ručně připojit linuxový souborový systém pro čtení/zápis jako běžný uživatel?

  3. Jak připojit zařízení v Linuxu?

  1. Linux – jaké přípojné body existují na typickém systému Linux?

  2. Linux – Union Mount na Linuxu?

  3. Linux:Souborový systém INSENSITIVE pro malá a velká písmena