System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Créer un tmpfs, un repertoire en memoire ram

tmpfs jpeg

Utiliser sa RAM comme répertoire de stockage.

Avec la quantité de RAM dans les ordinateurs actuels (2 Go voir de plus en plus souvent 4 Go) une bonne partie est souvent inutilisée. Il est donc possible d'utiliser une partie de sa RAM comme espace de stockage.

tmpfs est le nom donné au système de fichier Unix temporaire. L'implémentation de tmpfs dans les noyaux Linux 2.6 est basé sur ramfs. Il est possible de fixer une limite de taille et d'y allouer dynamiquement la mémoire (contrairement à un Ramfs).

Création d'un point de montage sur /mnt/mytmpfs :

mkdir /mnt/mytmpfs

Changer les droits sur ce répertoire :

chmod 777 /mnt/mytmpfs

Un tmpfs se monte comme tous les points de montage sous linux :

mount -t tmpfs -o size=512M tmpfs /mnt/mytmpfs

-t pour le type de fichier, -o pour les options, dont la taille (si elle n'est pas précisé la taille par défaut est égale à 50% de votre RAM), puis le périphérique, ici tmpfs ou none avec tmpfs, il sera plus facile de le repérer avec la commande df, puis /mnt/mytmpfs point de montage.

Pour le monter automatiquement au démarrage, éditez le fichier /etc/fstab comme ceci :

tmpfs /mnt/mytmpfs tmpfs defaults,size=1g 0 0

Mais que faire avec mon tmpfs tout frais ?

Un peu d'imagination ! voyons ! vous pouvez peut être y mettre les logs d'un apache pour gagner en performance, ou vos fichiers en téléchargement, votre cache Firefox, des fichiers de sauvegardes en fabrication avant envoi sur un autre serveur etc.... L'utilisation de cette technique pourra vous permettre de moins sollicité le disque dur de votre machine.

Test de performance :

Écriture sur Tmpfs :

root@dg:~# mount -t tmpfs tmpfs -o size=1024M /mnt/test
root@dg:~# cd /mnt/test
root@dg:/mnt/test# time dd if=/dev/zero of=test.bin bs=1024k count=900
900+0 enregistrements lus
900+0 enregistrements écrits
943718400 octets (944 MB) copiés, 1,60375 s, 588 MB/s

real    0m1.608s
user    0m0.000s
sys    0m1.612s

Écriture sur Ext4 :

root@dg:~# cd /mnt/test1
root@dg:/mnt/test1# time dd if=/dev/zero of=test.bin bs=1024k count=900
900+0 enregistrements lus
900+0 enregistrements écrits
943718400 octets (944 MB) copiés, 12,7702 s, 73,9 MB/s

real    0m12.786s
user    0m0.008s
sys    0m2.340s

Le gain vitesse n'est pas négligeable comme vous pouvez le voir :)

Chose importante à garder à l'esprit, les données présente dans votre tmpfs sont volatile, en cas de coupure de courant sur votre serveur, vous perdrez vos données.

Bonne bidouille à vous.

Par GanGan | le mardi, février 16 2010 07:00

Commentaires

1. nico

mardi, février 16 2010 | 09:15

Je connaissais pas, sympa en tous cas! Merci pour ce tuto!

2. NicoA380

mardi, février 16 2010 | 10:47

J'avais envisager d'utiliser ça, fut un temps (voir http://forum.ubuntu-fr.org/viewtopi...). Mais en fait certaines distributions utilisent déjà ce système pour monter /tmp.

Du coup, pour certaines opérations je travaille directement dans /tmp (compilation, traitements ...).

Pour firefox, je ne pense pas que ça soit nécessaire, il suffit d'augmenter la taille du cache mémoire et couper le cache en disque.

3. bartounet

mardi, février 16 2010 | 12:02

C'est une technique que j'utilise régulièrement, notamment en virtualisation pour installer une VM rapide sur un ramfs.

4. GanGan

mardi, février 16 2010 | 12:11

c'est la meme chose en moins bien le ramfs non ?

5. Herve

mardi, février 16 2010 | 20:00

Pour /etc/fstab

tmpfs /mnt/mytmpfs tmpfs defaults,size=1g 0 0

6. j0rn

vendredi, février 19 2010 | 03:27

sinon y'a /dev/shm aussi qui mappe directement en ram...

-> http://bit.ly/cxCeF7

7. GanGan

vendredi, février 19 2010 | 13:16

Merci à tous pour vos petites contributions d'info.