====== 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)''**.