MergerFS

MergerFS permet l’union de partitions de différentes tailles et différents types et différents systèmes de fichiers en un seul volume logique. Il peut être utile dans bien des cas . un schema explicatif rapide :

     A         +      B         =       C
/disk1           /disk2           /merged
|                |                |
+-- /dir1        +-- /dir1        +-- /dir1
|   |            |   |            |   |
|   +-- file1    |   +-- file2    |   +-- file1
|                |   +-- file3    |   +-- file2
+-- /dir2        |                |   +-- file3
|   |            +-- /dir3        |
|   +-- file4        |            +-- /dir2
|                     +-- file5   |   |
+-- file6                         |   +-- file4
                                  |
                                  +-- /dir3
                                  |   |
                                  |   +-- file5
                                  |
                                  +-- file6

En image :

En cliquant sur :

méthode recommandée mergerfs

en ligne de commande :

sudo apt install mergerfs

en compilant :

Déconseillé et uniquement pour utilisateurs très avertis :

git clone https://github.com/trapexit/mergerfs.git
cd mergerfs
sudo tools/install-build-pkgs
make deb
sudo dpkg -i ../mergerfs*.deb
Avant de commencer à trifouiller le fichier /etc/fstab , il est impératif de le sauvegarder en passant cette commande :
sudo cp /etc/fstab /etc/fstab.bak

Considérons que nous avons deux disques présents dans notre système , chacun contenant une partition qui feront parti du " pool " que nous monterons dans /media/Stock . On peut facilement obtenir la liste des partitions en présence sur le système grâce à la commande :

lsblk -fe7 -o+ model

ce qui donne par exemple :

NAME         FSTYPE FSVER LABEL           UUID                                 FSAVAIL FSUSE% MOUNTPOINTS              MODEL
sda                                                                                                                    ST4000VX000-2AG166
└─sda1       ext4   1.0   Seagate      4f8cc284-cd84-4eeb-b412-7539f81664c4    2,7T    21% /mnt 
sdb                                                                                                                    WDC WD82PURZ-85TEUY0
└─sdb1       ext4   1.0   WD           1db8a5b3-ff12-4d31-9463-b188ffefe43b    2,3T    65% /media/Videos/WD8 

Vous devez avoir au moins une partition dans chaque disque (comme c’est le cas ici). Si vous utilisez des disques neufs, une procédure est nécessaire pour les initialiser et créer une ou des partitions , voir : GParted : éditeur de partitions .

afin de préparer le " pool " , il est indispensable de monter les partitions au démarrage de l' ordinateur et donc d' inscrire les montages de ces partitions dans le fichier /etc/fstab . Le fichier /etc/fstab est le fichier de configuration utilisé au démarrage par le système pour monter tous les systèmes de fichiers que contient les partitions . Nous allons donc indiquer dans ce fichier nos partitions et notre volume MergerFS. on commence par créer donc les points de montage , un pour chaque partition ainsi que le dossier du futur volume :

sudo mkdir -pv /media/mergerfs/partition_sd{a,b}1  /media/Stock

Nous devons maintenant récupérer les UUIDS de partitions pour les ajouter dans le fichier fstab ( il existe d' autres moyens , mais celui-ci est le plus conventionnel tout type de système de fichiers confondus ) , pour cela la commande suivante sera fort utile :

ls -l /dev/disk/by-uuid | grep sda1 | cut -d ' ' -f10

et

ls -l /dev/disk/by-uuid | grep sdb1 | cut -d ' ' -f10

Maintenant , pour ajouter au fstab les lignes de montages automatiques des partitions sda1 et sdb1 , on peut procéder ainsi pour sda1 :

echo "UUID=$(ls -l /dev/disk/by-uuid | grep sda1 | cut -d ' ' -f10)   /media/mergerfs/partition_sda1    auto   defaults" | sudo tee -a /etc/fstab

et pour sdb1 :

echo "UUID=$(ls -l /dev/disk/by-uuid | grep sdb1 | cut -d ' ' -f10)   /media/mergerfs/partition_sdb1    auto   defaults" | sudo tee -a /etc/fstab

Pour le " pool " , il faut ajouter la ligne suivante :

echo "# MergerFS Volume
/media/mergerfs/partition_*   /media/Stock   fuse.mergerfs threads=16,allow_other,use_ino,cache.files=off,dropcacheonclose=true,category.create=mfs,moveonenospc=true,minfreespace=10G,fsname=mergerfsPool,nonempty 0 0" | sudo tee -a /etc/fstab

cette ligne a pour objectif d' unifier tous les disques montés depuis /media/mergerfs/ dont le point de montage commence par " partition_ " dans /media/Stock avec le système fuse.mergerfs. Pour ce qui est des options , je vous invite a consulter la signification de celles-ci sur le site de l ' éditeur ( en anglais ) : https://trapexit.github.io/mergerfs/config/options/

On vérifie qu ' il n' y a pas d' erreur dans le fichier fstab avec la commande suivante :

sudo mount -av
il ne faut en aucun cas que cette commande renvoie une erreur , sinon il est possible que votre ordinateur ne démarre plus du tout la prochaine fois ! En cas d' erreur , ne redémarrer surtout pas l' ordinateur ! et restaurer le fichier fstab.bak avec la commande suivante :
sudo mv /etc/fstab.bak /etc/fstab

Maintenant , il faut appliquer les modifications que l' on vient de faire dans le fichier /etc/fstab , afin de faire prendre en compte par le système . Pour cela on passe la commande suivante :

sudo systemctl daemon-reload

Et voilà , votre pool de partitions est maintenant disponible dans /media/Stock .

  • mergerfs.txt
  • Dernière modification: Le 29/03/2025, 12:20
  • par iznobe