Install réalisée sur une debian-etch à jour.

debqmail:/srv# uname -a
Linux debqmail 2.6.22-3-686 #1 SMP Tue Dec 4 02:25:59 UTC 2007 i686 GNU/Linux

Récup du paquet cadeau
debqmail:/usr/local# wget http://mhddfs.uvw.ru/downloads/mhddfs_0.1.17.tar.gz

Détar et rangement
debqmail:/usr/local# tar zxvf mhddfs_0.1.17.tar.gz && mv mhddfs_0.1.17.tar.gz src
debqmail:/usr/local# cd mhddfs-0.1.17/

Un petit coup d'oeil au README
debqmail:/usr/local/mhddfs-0.1.17# less README

Install des dépendances
debqmail:/usr/local/mhddfs-0.1.17# apt-cache search fuse
debqmail:/usr/local/mhddfs-0.1.17# apt-get install libfuse-dev libc6-dev

debqmail:/usr/local/mhddfs-0.1.17# make
renvoie une erreur me précisant d'ajouter -D_FILE_OFFSET_BITS=64 dans les flags de compil

Je modifie donc le Makefile en conséquence:
...
CFLAGS  = -Wall $(shell pkg-config fuse --cflags) -DFUSE_USE_VERSION=26 -MMD -D_FILE_OFFSET_BITS=64
...

Et je relance

debqmail:/usr/local/mhddfs-0.1.17# make clean && make

Je copie ensuite le binaire dans /usr/bin

debqmail:/usr/local/mhddfs-0.1.17# cp mhddfs /usr/bin

Et je vais tester sur des ramdisks. En effet ceux-ci ont une taille par défaut (8 Mo dans mon cas) que l'on peut modifier au boot en précisant ramdisk=<nouvelle taille>. Bon mais admettons que je n'ai pas envie de rebooter ou que je ne puisse pas... Je fais quoi moi ? Eh bien tout simplement j'utilise mhddfs.



debqmail:/srv# mkdir ram{0,1,2}

debqmail:/srv# ll
total 20
drwxr-xr-x  5 root root 4096 Dec 22 08:52 .
drwxr-xr-x 27 root root 4096 Feb 23  2008 ..
drwxr-xr-x  2 root root 4096 Dec 22 08:52 ram0
drwxr-xr-x  2 root root 4096 Dec 22 08:52 ram1
drwxr-xr-x  2 root root 4096 Dec 22 08:52 ram2

debqmail:/srv# mkfs -t ext2 /dev/ram0
debqmail:/srv# mkfs -t ext2 /dev/ram1
debqmail:/srv# mkfs -t ext2 /dev/ram2

debqmail:/srv# mount /dev/ram0 /srv/ram0
debqmail:/srv# mount /dev/ram1 /srv/ram1
debqmail:/srv# mount /dev/ram2 /srv/ram2

debqmail:/srv# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3    1.9G  1.3G  452M  75% /
tmpfs        tmpfs    114M     0  114M   0% /lib/init/rw
udev         tmpfs     10M   60K   10M   1% /dev
tmpfs        tmpfs    114M  4.0K  114M   1% /dev/shm
/dev/sda3     ext3    734M  476M  222M  69% /usr/share
/dev/sda5     ext3    942M  391M  504M  44% /ltsp
/dev/ram0     ext2    7.8M   45K  7.4M   1% /srv/ram0
/dev/ram1     ext2    7.8M   45K  7.4M   1% /srv/ram1
/dev/ram2     ext2    7.8M   45K  7.4M   1% /srv/ram2


Je vais tester l'envoi d'images stockées sur ces ramdisks par un serveur web. Normalement ça
doit être plus rapide et au mieux ça évite les accès disques.

debqmail:/srv# apt-get install apache


debqmail:/etc/apache/conf.d# mkdir /mnt/gallerie && chown www-data:www-data /mnt/gallerie

J'ajoute un alias:

debqmail:/etc/apache/conf.d# cat gallerie
Alias /gallerie /mnt/gallerie


Je dispose de quelques photos (imaginons qu'elle aient été transférées par ftp)

debqmail:/var/www/pictures# du -hs
16M   


Là attention: mhddfs travaille en espace utilisateur. Il faut donc que ce soit l'utilisateur apache
(www-data en l'occurence) qui monte la ressource sans quoi vous vous prendrez des erreurs telles que:

[Wed Feb 13 11:40:51 2008] [error] [client 192.168.0.22] (13)Permission denied: access to /gallerie failed because search permissions are missing on a component of the path"

De plus il faut que l'utilisateur en question appartienne au groupe fuse.

debqmail:/# adduser www-data fuse
Adding user `www-data' to group `fuse' ...
Done.

Je monte donc la ressource sous l'identité www-data:

debqmail:/# su - www-data
www-data@debqmail:~$ mhddfs /srv/ram0,/srv/ram1,/srv/ram2 /mnt/gallerie

mhddfs: directory '/srv/ram0' added to list
mhddfs: directory '/srv/ram1' added to list
mhddfs: directory '/srv/ram2' added to list
mhddfs: mount to: /mnt/gallerie
mhddfs: move size limit 4294967296 bytes


www-data@debqmail:~/pictures$ rsync -av /var/www/pictures/ /mnt/gallerie
p1010148.jpg
p1010149.jpg
p1010150.jpg
....
sent 15646853 bytes  received 3260 bytes  6260045.20 bytes/sec
total size is 15636605  speedup is 1.00



L'espace occupé est bien de 16Mo, réparti entre /dev/ram{0,1,2}

debqmail:/var/www/pictures# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3    1.9G  1.4G  433M  76% /
tmpfs        tmpfs    114M     0  114M   0% /lib/init/rw
udev         tmpfs     10M   60K   10M   1% /dev
tmpfs        tmpfs    114M  4.0K  114M   1% /dev/shm
/dev/sda3     ext3    734M  478M  219M  69% /usr/share
/dev/sda5     ext3    942M  391M  504M  44% /ltsp
/dev/ram0     ext2    7.8M  5.1M  2.4M  69% /srv/ram0
/dev/ram1     ext2    7.8M  5.3M  2.2M  71% /srv/ram1
/dev/ram2     ext2    7.8M  5.1M  2.4M  69% /srv/ram2
/srv/ram0;/srv/ram1;/srv/ram2
       fuse.mhddfs     24M   16M  6.8M  70% /mnt
 

Je démarre apache et je pointe mon navigateur sur http://192.168.0.6/gallerie

Oui effectivement ça booste mais c'est du réseau local donc...

Je teste depuis une autre machine en passant d'abord par le système de fichiers monté sur
les ramdisks:

deb24mod:/tmp/prov# time wget -r http://192.168.0.6/gallerie/

Terminé --12:08:55--
Téléchargement: 15 636 605 octets dans 147 fichiers

real    0m1.416s
user    0m0.012s
sys    0m0.396s

Puis je refais la même chose en pssant par le système de fichiers en dur:

deb24mod:/tmp/prov# time wget -r http://192.168.0.6/pictures/

Terminé --12:16:48--
Téléchargement: 15 636 605 octets dans 147 fichiers

real    0m1.784s
user    0m0.004s
sys    0m0.400s

Faut avouer qu'il n'y a pas de quoi sortir le champagne mais on a tout de même gagné
quelques dizièmes de secondes :)