GNU/Linux >> Linux Esercitazione >  >> Linux

Linux – Unisci le modifiche al filesystem superiore al filesystem inferiore in Linux Overlay (overlayfs) Mount?

Vorrei essere in grado di unire le modifiche dal filesystem superiore di un montaggio overlay a un filesystem inferiore.

Sono interessato sia online (cioè unire mentre l'overlay è montato) e offline (smontare l'overlay e quindi unire) soluzioni.

Ho trovato un paio di soluzioni offline, che ho aggiunto come risposte.

Qualcuno sa di qualsiasi online soluzioni? Sarebbe utile avere un comando di tipo "commit" da eseguire per unire i livelli mentre l'overlay è ancora montato.

Qualcosa del genere è stato posto nelle seguenti domande senza risposta:

  • È possibile modificare un file e sincronizzarlo con la directory inferiore in OverlayFs?
  • Come modificare un file inferiore tramite una directory OverlayFS?
  • OverlayFS Modifica facilmente il file nella directory inferiore
  • OverlayFS – Come rendere persistenti le modifiche al filesystem superiore senza smontare?

I commenti in questi post suggeriscono varie fusioni e bcache, che risolvono entrambi casi d'uso specifici ma non il caso d'uso generico indipendente dal filesystem fornito dagli overlay.

Il mio obiettivo è avere una sandbox del filesystem sicura con snapshot che possono essere utilizzati con qualsiasi applicazione Linux su qualsiasi filesystem sottostante (ove possibile), consentendoti di ripristinare le modifiche o eseguirne il commit manualmente quando sei pronto.

Ho il sospetto che il moderno Linux mainline abbia tutte le funzionalità necessarie per farlo, grazie a tutte le innovazioni di sandboxing/virtualizzazione degli ultimi anni, se solo sapessi come usarle.

Risposta accettata:

Un tentativo di online soluzione, ma non è proprio lì.

L'impostazione (ad es. /tmp directory, come root):

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

Quindi puoi lavorare in O directory, che è una sovrapposizione su $LOWER . Quando vuoi fare lo snapshot:

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

(Nota che overlay nidificati come questo non funzioneranno su kernel meno recenti).

Ma poi voglio in qualche modo cambiare atomicamente il montaggio del binding su O per puntare a o2 invece di o1 . Non so come farlo se non:

umount O
mount --bind o2 O

(Non atomico; c'è una finestra dove O è smontato).

Idealmente, i processi in esecuzione potrebbero continuare a essere eseguiti senza sapere che il filesystem sottostante di O era cambiato da o1 a o2 . Non so se questo sia possibile, o se cambiare il filesystem sottostante di O in questo modo interromperà troppo le applicazioni aperte. Devo indagare ulteriormente.

Quindi, una volta O è stato reindirizzato a o2 , possiamo rimontare o1 di sola lettura per precauzione, quindi eseguire un'unione offline utilizzando ad esempio rdifdir o overlayfs-tools.

Correlati:Cheat Sheet di Holy Sheet

Infine, vorremmo un modo per rimontare atomicamente o2 come lowerdir=$HOME,upperdir=u2,workdir=w2 in modo che o1 , u1 e w1 (tutte le directory ora vuote) potrebbero essere rimosse. Ancora una volta, non so se questo sia possibile.

Altrimenti, possiamo ottenere istantanee semplicemente annidando gli overlay sempre più in profondità e lasciando l'overlay e le directory superiori per ogni montato senza tentare di unire o pulire. Ma probabilmente c'è un limite al numero di overlay nidificati che possono essere montati. E ad un certo punto, dobbiamo ancora unire i livelli verso il basso se vogliamo mantenere le modifiche.


Linux
  1. Come crittografare un singolo filesystem Linux

  2. Linux:quali punti di montaggio esistono su un tipico sistema Linux?

  3. Come montare e smontare filesystem/partizione in Linux (esempi di comando di montaggio/smontaggio)

  4. Quali sono le opzioni di montaggio per migliorare le prestazioni del filesystem ext4 in Linux

  5. Linux unisci cartelle:rsync?

Come montare una condivisione NFS in Linux

Come montare file ISO su Linux

Personalizzazione dei comandi del filesystem Linux

Come montare un filesystem Linux remoto usando SSHFS

Come montare un dispositivo in Linux?

Linux:filesystem senza distinzione tra maiuscole e minuscole