====== Unionfs ======
Esistono molte implementazioni di Unionfs, in kernel space e in user space.
==== unionfs ====
L'implementazione di **[[http://www.filesystems.org/|www.filesystems.org]]**, si tratta di un modulo kernel che tuttavia non è incluso nel kernel ufficiale. È disponibile per kernel recenti (anche l'ultimo 2.6.32) ed è alla sua seconda versione. **Debian** lo ha incluso fino alla versione **4 Etch** con il pacchetto **%%unionfs-modules-*%%**, il relativo **unionfs-tools** e **unionfs-source**. Il pacchetto è stato abbandonato in favore di aufs con il bug [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484842|#484842]].
==== aufs ====
L'implementazione [[http://aufs.sourceforge.net/|aufs.sourceforge.net]], anch'essa alla versione 2, è nata come fork di unionfs versione 1. **Debian 5 Lenny** include i pacchetti **%%aufs-modules-*%%**, **aufs-tools** e **aufs-source**. Anche in questo caso Linus ha rifiutato l'inclusione nel kernel ufficiale.
==== unionfs-fuse ====
[[http://podgorny.cz/moin/UnionFsFuse|unionfs-fuse]] implementazione di unionfs in user-space tramite **fuse**.
==== funionfs ====
[[http://funionfs.apiou.org/|funionfs.apiou.org]]
===== Esempio con unionfs =====
Supponiamo che esistano le directory **''/opt/data_ro''** e **''/opt/data_rw''** che vogliamo montare in **''/media/union''**, la componente ''data_ro'' sarà montata in sola lettura, tutte le modifiche andranno in ''data_rw''.
Ecco il comando da eseguire:
mount -t unionfs -o dirs=/opt/data_rw=rw:/opt/data_ro=ro unionfs /media/union
oppure la corrispondente riga da aggiungere in ''/etc/fstab'':
none /media/union unionfs rw,dirs=/opt/data_rw=rw:/opt/data_ro=ro 0 0
===== I file nascosti .wh. =====
Nella componente read/write montata più in alto nella pila unionfs si possono trovare diversi file nascosti il cui nome inizia per **''%%.wh.%%''**, si tratta di flag che indicano se un file deve essere //whited out// (nascosto), oppure indica se una directory deve essere //opaca// (''%%.wh.__dir_opaque%%'') cioè nascondere altri oggetti sottostanti.
//Unionfs On Disk Format// (ODF) è una versione migliorata; le meta-informazioni sui file eliminati ecc. vengono memorizzate in una partizione separata, senza inquinare i filesystem sottostanti. Altri dettagli in [[http://filesystems.org/unionfs-odf.txt|ODF: On Disk Format for Unionfs 2.x]].
===== Scrivere direttamente nelle componenti di uno unionfs =====
Non è consigliabile modificare il contenuto delle directory componenti mentre l'unionfs è montato, sia che si tratti di componenti **ro** che componenti **rw**. Vale la semantica dello unionfs, compresi i file nascosti **''.wh.''**, ma potrebbero capitare casi indesiderati (unionfs ha in cache informazioni non più consistenti).
Per gestire questi problemi il filesystem aufs ha l'opzione di montaggio **''udba''** (User's Direct Branch Access) con vari gradi di affidabilità e performance inversamente proporzionali. Vedere **''man mount.aufs(8)''**.