Union mount su Linux


11

Una montatura sindacale presenta una vista combinata di più directory (rami) in una singola gerarchia. Ok, ma come posso usarne uno in pratica e quale?

Molte tecnologie di unione sono disponibili su un moderno sistema Linux: OverlayFS , aufs , UnionFS , vari filesystem basati su FUSE, ...

Dato un caso d'uso, come faccio a decidere quale (i) è adatto? In particolare:

  • Quali richiedono l'accesso root su un sistema tipico? (In altre parole, un utente senza privilegi può creare un mount sindacale?)
  • Quali possono essere montati /(ovviamente con accesso root)?
  • Quali supportano la scrittura nei rami sottostanti? (Vale a dire se /fooe /barsono montati su unione /union, posso scrivere su /fooe /bar?)
  • Quali supportano le politiche configurabili per le scritture? (Ad esempio, posso inviare file appena creati al ramo B anche se sto ricevendo contenuto dal ramo A quando esiste un file su entrambi i rami?)
  • Quali supportano un ordine di priorità tra i rami che dipende dai file? (Ad esempio, posso sempre ottenere il file più recente tra tutti i rami che lo hanno?)

Esempi di utilizzo sarebbero apprezzati.

Si prega di evitare risposte che si concentrano su un punto specifico. Sto cercando risposte complete che esaminino il software disponibile (qualcosa di simile a What is a bind mount? ). Le buone risposte saranno fornite.

Risposte:


12

Su ciascuno dei punti specifici:

  • Accesso root: se usa FUSE, non ha bisogno di root, se non usa FUSE, ha bisogno di root a meno che non si esegua una configurazione speciale con funzionalità (potenzialmente pericolose) o spazi dei nomi.

  • Montaggio su /: suppongo che intendi come filesystem di root all'avvio, nel qual caso qualcuno di quelli che girano in modalità kernel dovrebbe in teoria funzionare, anche se alcuni sono più affidabili di altri. La maggior parte dei LiveCD lo fa, quindi è qui che suggerirei di cercare informazioni su questo particolare punto.

  • Scrivere ai rami sottostanti: dipende da cosa intendi. Se intendi propagare le scritture nella vista montata fino ai rami inferiori, non ne ho idea. Se intendi scrivere sui rami inferiori fuori banda dal file system principale stesso, tecnicamente tutti i tre grandi lo fanno, ma richiedono tutti un rimontaggio per garantire che la modifica venga propagata alla vista montata.

  • Criteri di scrittura configurabili: non ne so nulla di specifico, ma penso che i big 3 (UnionFS, AUFS e OverlayFS) non lo supportino.

  • Ordine di priorità dipendente dal file: penso che questo tipo di problemi rientri anche nella terza sottointerrogazione e, come lì, non conosco nessuno che lo supporti specificamente.

Per quanto riguarda alcuni più specifici su ciascuno di essi:

  • UnionFS: Per quanto ne so, questa era l'implementazione del file system union impilabile originale per Linux. È in circolazione da secoli ed è utilizzato da molti LiveCD di Linux. Funziona in modalità kernel e richiede l'uso di patch per il kernel upstream.

  • AUFS: Nato come un fork di UnionFS, e poi è diventato una specie di cosa sua. Questo ha tentato di fondere la mainline ed è stato respinto per motivi di qualità del codice. Ha sostituito UnionFS in alcuni LiveCD di distribuzione, principalmente derivati ​​Debian e Gentoo. Come UnionFS, funziona in modalità kernel e richiede patch per il kernel upstream.

  • OverlayFS: Non so molto sullo sviluppo originale di questo, a parte il fatto che è supportato anche su un paio di derivati ​​BSD. È in particolare l'implementazione del file system overlay / union upstream nel kernel Linux. Funziona anche in modalità kernel.

  • UnionFS-FUSE: questo progetto un po 'confuso non ha nulla a che fare con UnionFS se non quello di fornire essenzialmente la stessa funzionalità. È l'implementazione FUSE più utilizzata di un filesystem union, ma questo è tutto ciò che ne so.

  • mhddfs: questo è uno strano outlier che è più simile a un'implementazione RAID-0 di granularità di file rispetto a un filesystem sindacale convenzionale. Supporta il bilanciamento dei file su più directory di supporto in base all'utilizzo dello spazio. È anche basato su FUSE.

Un paio di cose specifiche da notare che non sono specifiche per una particolare implementazione:

  • Tutte le opzioni nel kernel hanno limitazioni su ciò che possono essere i filesystem di supporto, in particolare non funzionanti con filesystem in rete o BTRFS.

  • Tutte le implementazioni di FUSE presentano problemi se utilizzate come filesystem di root. Questo non è specifico per le implementazioni del filesystem union, ma è più un problema con FUSE in generale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.