frogdev site francophone sur Gentoo
Vous êtes ici : unionfs
Dernière modification : February 15 2007 19:31:41.

Le système UNIONFS

1. Introduction :
Unionfs permet de réunir plusieurs systèmes de fichier sur un même point de montage.
unionfs se compile en tant que module pour le noyau. Il est disponible pour la branche 2.4 à partir de la version 2.4.20 et pour la branche 2.6 à partir de la version 2.6.9.

Ce type de système de fichier est de plus en plus utilisé dans les LiveCD. Cela permet d'ajouter des programmes qui ne sont pas sur le CD ou même de définir un nouveau repertoire /home qui pointe vers une partition d'un disque dur. Ce type de système de fichiers peut être utile même un système déjà installé. Par exemple, vous venez d'acheter un disque votre partition /home est pleine et ne peux pas être transféré vers le nouveau disque (pas assez de place), il suffit de fusionner les deux disques vers /home. Ou vous avez des documents que vous ne voulez pas que l'on puisse modifier sur une partition et d'autres sur une autre partition qui sont accéssible en lecture/écriture. Il suffit de monter la première partition en lecture seule puis la seconde en lecture/ecriture.

2. Installation :
# emerge unionfs
# modprobe unionfs
A partir de maintenenant unionfs est disponible sur votre système

3. Utilisation :
Exemple :
Deux lecteurs cdrom sont montés sur /mnt/cdrom et /mnt/cdrom2. Vous voulez qu'il soit accessibles tous les deux sur /mnt/union.
# mount -t unionfs -o dirs=/mnt/cdrom1=ro:/mnt/cdrom2=ro unionfs /mnt/union
Maintenant le contenu des deux lecteurs est accéssible sur /mnt/union.
Les différentes options :
=ro signifie que le système de fichiers n'est monté qu'en lecture seul
=rw signifie que le système de fichiers n'est monté qu'en lecture/écriture

4. Utilitaire unionctl :
unionctl est un outil qui est installé avec le paquet unionfs. Il permet de visualiser ou de modifier les branches du montage de type unionfs.
Pour visualiser la liste des unions de /mnt/union :
# unionctl /mnt/union --list
Cela affichera :
/mnt/cdrom1 (r-)
/mnt/cdrom2 (r-)
Pour ajouter une partition à /mnt/union en écriture :
# unionctl /mnt/union --add --after /mnt/cdrom2 --mode rw /mnt/hda7
Pour vérifier l'ajout de /mnt/hda7.
# unionctl /mnt/union --list
/mnt/cdrom1 (r-)
/mnt/cdrom2 (r-)
/mnt/hda7 (rw)
A partir de maintenant, si vous écrivez sur /mnt/union cela écrira sur /mnt/hda7
Pour supprimer une branche :
# unionctl /mnt/union --remove /mnt/hda7
La branche /mnt/hda7 n'est plus disponible.

5. Unionfs sur liveCD :
Je vais décomposer le lancement du liveCD SLAX pour donner une idée des possibilités de unionfs.
Le fichier /linuxrc trouvé dans le ramdisk est éxecuté en premier par le noyau, si init=/linuxrc est passé en paramètre. L'éxecution de ce fichier sur SLAX lance les opérations qui suivent :

. Monte le système de fichier /proc
. Monte le système de fichier /sys
. Chargement des modules contenu dans le ramdisk
. Active le DMA
. Charge les modules de prise en charge usb si demandé
. Création des répertoires pour l'union :
/union
/memory
. Monte le système de fichier tmpfs dans /memory
. Création des répertoires :
/memory/images
/memory/changes
. Monte /memory/changes en mode lecture/ecriture sur /union grâce à unionfs.
. Recherche du cdrom contenant le liveCD et renseigne $DATA
. Création /union/boot
. Monte le contenu du répertoire /boot du liveCD dans /union/boot
. Ajoute le contenu des modules de type squashfs contenu sur le livecd sur /memory/images puis une fois monté, ajoute pour chacun une branche à /union.
. Copie le contenu du repertoire /rootcopy du liveCD vers /union
. Mise à jour du fichier /etc/fstab de /union
. Création des répertoires système de /union :
/union/proc
/union/sys
/union/dev
/union/tmp
. Donne les droits en écriture à /union/tmp
. Création du repertoire /mnt/live
. Rentre dans le répertoire /union (Important pour faire le pivot_root)
. Démonte /sys
. Création du périphérique console dans /union/dev si besoin.
. Défini l'emplacement de l'éxecutable chroot
. Fait un pivot_root du répertoire en cours vers /mnt/live

Page Man de pivot_root : pivot_root remplace le répertoire racine et le répertoire courant de tous les processus en cours d'exécution (ayant anc_rac comme racine ou répertoire courant) par celui spécifié par le chemin nouv_rac. Ce répertoire sera utilisé comme origine des chemins commençant par /. Le répertoire racine est hérité par tous les enfants du processus ayant fait le changement. Seul le Super-User peut effectuer un changement de répertoire racine. Notez que cet appel-système modifie le répertoire de travail.

. Lance init system V par le biais d'un chroot

Voici une petit graphique de la mise en place du LiveCD SLAX :

/(initrd, 4MB)
     |
     |---- /memory(tmpfs, 80% of RAM)
     |        |-- images
     |        |     |-- base.mo   <--loop--+
     |        |     |      |-- bin         |
     |        |     |      |-- usr         |
     |        |     |      +-- var         |
     |        |     |                      |
     |        |     |-- xwindow.mo <-loop------+   
     |        |     |      |-- etc         |   |
     |        |     |      |-- usr         |   |
     |        |     |      +-- var         |   |
     |        |     |                      |   | 
     |        |     +-- kde.mo     <-loop----------+
     |        |            |-- opt         |   |   |
     |        |            |-- usr         |   |   |
     |        |            +-- var         |   |   |
     |        |                            |   |   |
     |        +-- changes                  |   |   |
     |                                     |   |   |
     +---- /union                          |   |   |
              |---- /mnt/cdrom             |   |   |
              |          |--- base.mo -----+   |   |
              |          |--- xwindow.mo ------+   |
              |          +--- kde.mo --------------+
              +---- /mnt/live

5. Prochainement :
Genkernel devrait intégrer prochainement le support de unionfs dans l'initrd. Pour le moment il faut soit se créer un ramdisk manuellement soit si vous n'avez pas l'utiliter de unionfs dans le ramdisk le charger à chaque démarrage.

Conclusion :
L'utilisation de unionfs en soit n'est pas compliqué et peut rendre quelques services, même sur un système déjà installé. (Cela rappelle LVM en version très simplifié)

Voir les commentairesAjouter un commentaire

Imprimer cette page Imprimer cette page

Liste de diffusion

Valider 


Espace téléchargement

Téléchargement
Livres (pdf)
Howto



Promouvoir et soutenir le logiciel libre
Go Frugalware, Go

Get Firefox

Gentoo

Logo Apache

Logo Mysql

Logo PHP



nobrevet

Read and comment at the BadVista.org blog

L'Association Francophone des Utilisateurs de Linux et des logiciels libres (AFUL)

Logo greenpeace


grenouille

Me contacter / Mes expériences GNU/Linux

- [ Basé sur Itseasy | Thème : Frogdev ] -
Les informations ne sont données qu'à titre indicatif.
© frogdev site francophone sur Gentoo, Licence FDL 2008

[ Page générée en 0.01227 secondes | Compression gZip active ]
Poids XHTML : 22.46 ko (26.48 ko non compressé) - CSS : 5.92 ko
Eléments chargés : 7.65 ko