« Bind et VFS Shared subtrees | Home | Superblocs de secours ext3 »
mhddfs pour réunir des points de montage
posté par cep le 17 octobre 2008
Mhddfs ( Multi HDD Fuse Filesystem ) est un système permettant de regrouper virtuellement, et grâce à Fuse, plusieurs points de montages de systèmes de fichiers en un seul point, donnant ainsi l’impression que ce répertoire a la taille de l’ensemble des montages combinés.
La création de nouveaux fichiers ayant pour cible le point de regroupement se fera d’abord dans le premier point de montage, et ainsi de suite s’il y a manque de place. Par exemple si on regroupe /A /B /C en /D et on demande la création du fichier f en /D, f sera créé dans /A sous réserve que /A ait encore au minimum 4 Go de place disponible. Si ce n’est pas le cas, il sera créé en /B. La limite de 4 Go peut être modifié, mais ne peut descendre en dessous de 100 Mo.
- Exemple d’utilisation :
Avec mhddfs on va regrouper /mnt/commun/, /mnt/compil/, et /mnt/hdc4jfs, le tout dans /mnt/test/
:~# mhddfs /mnt/commun/,/mnt/compil,/mnt/hdc4jfs /mnt/test/ mhddfs: directory '/mnt/commun/' added to list mhddfs: directory '/mnt/compil' added to list mhddfs: directory '/mnt/hdc4jfs' added to list mhddfs: mount to: /mnt/test/ mhddfs: move size limit 4294967296 bytes
Avec la commande mount on vérifie ce qui a été monté :
:~# mount -tfuse.mhddfs /mnt/commun/;/mnt/compil;/mnt/hdc4jfs on /mnt/test type fuse.mhddfs (rw,nosuid,nodev)
Idem avec la commande df, qui révèle qu’un ensemble de 87 Go a été créé :
:~# df -aTh -tfuse.mhddfs Sys. de fich. Type Tail. Occ. Disp. %Occ. Monté sur /mnt/commun/;/mnt/compil;/mnt/hdc4jfs fuse.mhddfs 87G 20G 68G 23% /mnt/test
Détail du pool, toujours avec la commande df :
:~# df -aTh /mnt/commun /mnt/compil/ /mnt/hdc4jfs/ /mnt/test Sys. de fich. Type Tail. Occ. Disp. %Occ. Monté sur /dev/hdc6 xfs 53G 17G 36G 32% /mnt/commun /dev/hdc7 ext3 9,2G 3,0G 6,2G 33% /mnt/compil /dev/hdc4 jfs 26G 3,4M 26G 1% /mnt/hdc4jfs /mnt/commun/;/mnt/compil;/mnt/hdc4jfs fuse.mhddfs 87G 20G 68G 23% /mnt/test
Pour tester le fonctionnement du système, nous allons créer un fichier.img d’une taille de 200Mo dans /mnt/test :
:~# head -c 200m < /dev/zero > /mnt/test/fichier.img
Comme /mnt/commun était placé en première position dans la commande de construction du pool, je vérifie que le nouveau fichier y est bien présent, de même que dans /mnt/test/. Bien sûr un seul fichier a été créé :
:~# ls -lh /mnt/commun/fichier.img -rw-r--r-- 1 root root 200M oct 17 10:05 /mnt/commun/fichier.img phusis:~# ls -lh /mnt/test/fichier.img -rw-r--r-- 1 root root 200M oct 17 10:05 /mnt/test/fichier.img
Pour supprimer le regroupement, on va utiliser la commande fusermount avec l’option -u :
:~# fusermount -u /mnt/test
Mhddfs est toujours en développement. Il pourra aussi être avantageusement utilisé pour, par exemple, regrouper deux partitions logiques que l’on aurait voulu réunir mais qu’il est impossible de faire de par leur situation respéctive sans se lancer dans de grosses modifications. Pour autant il ne doit être comparé ni à une solution raid, ni à du lvm.
cep

18 octobre 2008 at 21:30
Merci ! Un outils très intéressant. J’ai toujours pensé que ce niveau d’abstraction était nécessaire : pour moi, l’espace libre d’un disque dur devrait toujours pouvoir être utilisé à partir de n’importe quelle partition.
Cette solution est quand même plus simple à mettre en oeuvre que LVM ou du RAID…La seule limitation est qu’on ne peut pas créer un fichier unique supérieur à l’espace libre le plus gros… (pas de chevauchement).
Sinon, j’ai vu que tu as mis en grappe des fs différents…Ca marche aussi avec du NTFS ? Et avec les futurs Ext4 / Btrfs ? A priori, je dirai que oui, mais il y a peut être des précautions à prendre
@++
19 octobre 2008 at 14:45
Je n’ai pas essayé avec ntfs et btrfs.
Concernant ext4, je l’utilise depuis pas mal de temps en dev, mais l’ai testé très peu avec mhddfs pour avoir une opinion précise.
16 février 2010 at 14:39
bonjour,
très sympa comme doc.
j’ai tenté l’aventure en mettant :
~ $ mhddfs /media/libre_101Go/,/media/stock/,/home /home
mhddfs: directory ‘/media/libre_101Go/’ added to list
mhddfs: directory ‘/media/stock/’ added to list
mhddfs: directory ‘/home’ added to list
mhddfs: mount to: /home
mhddfs: move size limit 4294967296 bytes
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the ‘nonempty’ mount option
1. est-ce possible
2. n’étant pas expert, puis-je poursuivre en mettant l’option indiquée ?
16 février 2010 at 17:09
>>~ $ mhddfs /media/libre_101Go/,/media/stock/,/home /home <<
il y a une incohérence dans la commande. /home ne peut être mis en pool et en même temps servir de point de montage. La commande est même très dangereuse pour les données.
Le montage doit se faire dans un point de montage dédié et vide, par exemple dans /mnt/pool après l’avoir créé.
17 février 2010 at 15:59
comment puis-je alors faire pour l’associer à mon /home
le but étant d’utiliser mon /home comme d’hab et que la répartition des sauvegarde se fasse par ce système ?!
ou autrement comment puis-je dire que mon/home est désormais /pool ?
ainsi je pourrai utiliser ‘Documents’/'Images’/'Musiques’/etc… “normalement”.