tmpfs : utiliser sa RAM comme répertoire de stockage.
Cet article a été publié par Xenom
le 08-05-09 à 11:40 dans la catégorie Trucs - Astuces
Tags :
- Libre
- TrucsAstuces
- Ubuntu
Avec la quantité de RAM dans les ordinateurs actuels (2Go voir de plus en plus souvent 4Go) une bonne partie est souvent inutilisée (même avec la mémoire cache). Il est possible sous GNU/Linux d'utiliser une partie de sa RAM comme espace de stockage, et en plus du coté technique et intéressant, cela présente des avantages.
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 il alloue dynamiquement la mémoire (contrairement à un Ram Disque).
1 Mise en place.
Nous allon creer un point de montage sur /media/montmpfs.
Il faut d'abord creer le dossier :
mkdir /media/montmpfs
Puis si il le faut changer les droits sur ce dossier, pour que tout le monde puisse lire/ecrire/executer
chmod 777 /media/montmpfs
Enfin un tmpfs se monte comme tous les points de montage sous linux, avec la commande mount
.
mount -t tmpfs -o size=256M tmpfs /media/montmpfs
Donc -t pour spécifier 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 à la moitié de la RAM), puis le périphérique, ici tmpfs ou none (personnellement j'utilise tmpfs, car avec la commande df il y est écrit tmpfs comme Système de fichiers), puis le point de montage.
Pour le monter automatiquement au démarrage il faut éditer le fichier /etc/fstab
Exemple de ligne à rajouter:
tmpfs /tmp tmpfs defaults,size=1g 0 0
2 Que faire avec tmpfs ?
L'utiliser comme espace de stockage temporaire, par exemple pour réaliser des conversions audio, ou si vous avez un lecteur cd trop bruyant,..
L'utiliser pour /tmp, /var/tmp et /var/lock. /tmp contient les fichiers temporaires, et est de toute façons effacé à chaque redémarrage, utiliser un tmpfs est donc parfait. /var/tmp contient les fichiers temporaires des applications, mais qui ne sont pas effacés après un redémarrage. Cette fonctionnalité est donc perdue, mais ça n'affecte pas le programme (peut être juste la vitesse,..), vu que ce ne sont que des fichiers temporaires. /var/lock contient les verrous que certains programmes posent pour empêcher un autre programme d'accéder à ses valeurs (par exemple les verrous des gestionnaires de paquets comme apt-get ou pacman).
Accélérer Firefox : Il est possible aussi de mettre le cache de Firefox en ram, et ainsi améliorer les performances.
Allez dans la configuration de Firefox (about:config dans la barre d'adresse) et cherchez l'option browser.cache.disk.parent_directory. Si cette clé n'existe pas créez la (clic droit, Nouveau>Chaîne de caractères), puis modifiez sa valeur par le point de montage de votre tmpfs.
L'utilisation de tmpfs permet aussi d'éviter les accès au disque, utile pour les SSD.
Il est aussi possible de mettre des dossier comme /var/log, /var/cache/pacman,... (des dossiers qui ont besoins d'être sauvegardés, mais qui ne sont pas trop gros et permettent d'améliorer les performances ou réduire les accès disque) dans un tmpfs, et de copier les fichiers du disque dur vers le tmpfs au démarrage et l'inverse à l'arrêt du système, grâce au fichiers rc.local et rc.local.shutdown.
Un exemple dans le wiki d'archlinux. (Attention, il vous que vous sachiez ce que vous faites avant d'entreprendre ce genre de manipulation!).
/!\ Vos données sont en RAM, donc en cas de coupure de courant, vous perdez vos données, faites attention à ce que vous stockez en RAM /!\
Et voila, vous savez comment utiliser votre RAM comme espace de stockage.
Commentaires
Très bonne idée pour firefox il ne me reste plus qu'a acheter une barrette de 1go et c'est parti
Très interessant, j'ai mis ça en place sur mon eeepc histoire d'économiser la réserve d'écritures du SSD...
Juste une question : imaginons que la RAM soit entièrement remplie par ces données temporaires ?? Il se passe quoi ? La même chose que lorsqu'un disque physique est plein ?
Ouah super découverte, je vais tester ca dès que j'aurais un peu plus de 512Mo de ram :'(
@nico : tmpfs gere aussi le swap. Mais il y a une taille limite alloué, donc si elle est atteinte le systeme ne peut plus rien ecrire, meme chose que sur un disque physique. Si la taille limite n'est pas atteinte, mais que la RAM est remplie, le systeme Swap.
Firefox possède déjà un cache en mémoire (configurable aussi) c'est pas pour rien qu'il y a deux sortes de cache : un sur disque et un autre en mémoire, je ne suis pas sûr que mettre le cache disque de firefox dans la mémoire soit une si bonne idée que ça...
Les performances sont-elles vraiment améliorées ?
A la rigueur pour limiter les écritures sur disque...
Pour un firefox plus rapide et plus efficace concernant la mémoire, il faut se tourner vers les dernières versions du navigateur (facilement installables sous Jaunty en plus de la version stable)
@mel : oui, on peut aussi mettre le cache disque à 0, et augmenter le cache memoire, mais la ca n'illustre pas le tmpfs ;). Les performances sont assez ameliorés (sans etre non plus extraordinaire), et surtout cela economise les accés en ecriture (pratique surtout pour les SSD)
L'interet d'avoir deux cache et surtout de moins utiliser la RAM, deplacer le cache disque en RAM n'est pas dangereux.
Et oui Firefox 3.5 est plus rapide (surtout sur le javascript) et plus efficace niveau memoire, et bien stable en plus, je l'utilise depuis quelque temps deja.
C'était au temps de mon PC AT à 8Mhz . J'avais un utilitaire appelé RAMDisk, qui permettait d'utiliser un peu de RAM comme un disque.
C'était magique : au boot (sur la disquette 5'1/4), on chargeait le dos, créait un disque RAM, et copiait le command.com (et autres outils) sur ce disque RAM... ça allait vraiment à fond et ça permettait d'utiliser la partie de RAM au delà des 640K
'tain, ça y est ! j'suis un dynosaure!
@Thierry : il me semble qu'un peu plus tard, avec MS-DOS 5 ou 6, il y avait un truc nommé Smartdrive et qui faisait pareil, les applications allaient carrément plus vite avec.
Sinon ce tmpfs à l'air d'un bon truc. Ca va me permettre de mettre à profit les 1Go de RAM que je n'utilise quasiment jamais.
@Xenom : Heu... tu as oublié la création du point de montage. En toute rigueur : mkdir /media/montmpfs/
Le premier / était le répertoire "racine" qui contient le répertoire media/ qui lui même contient montmpfs/
@Etienne : Avec peu de RAM...ben on peut faire du swapping dynamique ! Il y a un début de réponse ici : http://www.road2mayotte.org/blog/?p=2178
Ce n'est qu'un début. Un article plus conséquent devrait suivre.
@Christophe : C'est vrai j'y avais pas pensé, je vais le rajouter.
Sinon j'avais vu ton tres bon article sur le tmpfs en regardant un peu ce qui avait deja etait ecrit. Merci pour le lien vers l'article sur le swapiness.
Salut,
L'idée me paraît excellente, et avec mes 8 Go de RAM (ma bécane tourne sous Ubuntu Jaunty en 64 bits), j'ai hâte de la tester... Mais je ne pige pas ce passage :
"L'utiliser pour /tmp, /var/tmp et /var/lock. /tmp contient les fichiers temporaires, et est de toute façons effacé à chaque redémarrage, utiliser un tmpfs est donc parfait." : concrètement, quelqu'un peut m'expliquer où et comment je configure tout ça ?
Merci ;)
c'est une tres bonne idee cet article!
pour ma part j'ai rajouté cette ligne dans mon fichier /etc/fstab:
tmpfs /tmp tmpfs size=1024M,mode=1777,rw 0 0
ça a pour effet de monter a chaque demarrage mon repertoire /tmp en RAM
comme j'ai de la place j'y consacre 1Go (sur 4)
j'ai ensuite placé le cache firefox sur /tmp/firefox en utilisant les explications là:
http://www.generation-nt.com/deplacer-repertoire-cache-firefox-astuce-24599-1.html
@Le Viking :
Il faut monter ces dossier avec tmpfs.
Comme je l'ai ecrit plus haut dans l'article et comme la dit Maxxam, il faut editer le fichier /etc/fstab.
fstab definit les partitions à monter et comment.
Ouvre ton fstab en sudo (ou root).(sudo nano /etc/fstab)
Tu dois avoir quelquechose comme ca :
proc /proc proc defaults 0 0
/dev/sda2 / ext3 errors=remount-ro 0 1
/dev/sda4 /home ext3 defaults 0 2
/dev/sda3 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
et rajoute :
tmpfs /tmp tmpfs defaults,size=1g 0 0
/var/tmp /tmp tmpfs defaults,size=1g 0 0
Pour monter /tmp et /var/tmp en tmpfs avec chacun une taille maxiale de 1g.
Et pareil pour les autres dossier que tu veux mettre en tmpfs.
Juste pour signaler que par défaut il y a un tmpfs disponible dimensionné à la moitié de la mémoire RAM (c.à.d sans tenir compte du swap): /dev/shm
On voir le point de montage en tapant "mount"; il n'est pas marqué dans fstab (c'est normal).
@Xenom : Merci pour tout ! j'y vois plus clair, maintenant ;-)
Très sympa, moi qui avait justement envie de trafiquer un peu mon linux :D
Merci pour les infos!
Bonjour, cet article est très intéressant! Merci
J'ai une petite question, j'ai suivis votre tuto pour me créer un RamDisk de 128M dans /media/monramdisk
Je souhaiterais m'en servir pour cacher les infos d'eAccelerator donc j'ai modifier la config d'eAccelerator et apparemment ça fonctionne bien :) Maintenant j'ai un soucis c'est pour monter le RamDisk au démarrage (bien que je redémarre quasiment jamais mon serveur).
tmpfs /media/monramdisk tmpfs size=128M Suffit?
Merci
@Pierre : Oui cette ligne dans le fstab suffit, a part que pour la taille c'est "m" pour mega (en minuscule).
Merci beaucoup Xenom ;)
J'ai encore une petite question je me rends compte que eAccelerator n'utilise que environ 10m sur les 32m que je lui laisse. Je voudrais donc réduire en conséquence la taille du ramdisk (32m ou 35m pour plus de sécurité). Comment faire? Merci
@Pierre : il suffit de mettre size=32m par exemple. C'est possible de le faire "à chaud" avec l'option "remount". Mais de toute maniere tmpfs alloue la memoire de facon dynamique, l'option size fixe la limite maximum, donc la place vraiment utilisée est de 10Mo pour ton exemple.
J'ai découvert ce procédé avec un ami il y a peu...Quel superbe trouvaille.
Lors que l'on fait de la compilation, on gagne très facilement 30% de temps...Simplement du fait que les temps d'access en ram sont beaucoup plus rapide que pour un HDD classique...
Par contre, ne pas oublier que ceci est un tmpfs ;) Et que ce répertoire est donc détruit à l'extinction de la machine :)
Très intéressant !! Mais il doit y avoir moyen de sauver sa "ramdisk" ver le disque physique a l’arrêt de la machine puis de la restaurer au démarrage (un peut comme la veille prolongé) du coup il n'y aurait plus qu'a craindre une coupure d’électricité . Du coup derrière un onduleur , on pourrait y faire tenir une machine virtuelle avec sont système de fichier entier ... Du coup t'as un V.M super rapide ;-) J'avais dit quand on fera de la mémoire de masse aussi rapide que la mémoire vive , on ressentirait l’accélération ,on m'avait répondu ça existe : -" Le SSD" . Ok c'est mieux mais c'est pas encore la vitesse de la mémoire vive ...
J'ai que 3 ans et demi de retard sur le sujet , mais c'est pas grave. Maintenant les machines avec un core I3 peuvent facilement avoir 8 gigas de mémoire, rendant l'article d'autant plus utile. Faire tourner ubuntu sur un système de fichier de 4gigas c'est possible, qui plus est stocké sur un tmpfs ça doit bien marcher .encore ma V.M ;-)
Salut, Alors faudrait m'expliquer cette phrase la parce que ça veut rien dire on dirait presque un oxymore ... :
L'utiliser /var/tmp contient les fichiers temporaires, et est de toute façons effacé à chaque redémarrage ... /var/tmp contient les fichiers temporaires des applications, mais qui ne sont pas effacés après un redémarrage
understood ?
En effet :D
Alors si Xenom (l'auteur de l'article) passe par ici, il pourra nous expliquer ça à tous les 2 :)
@Ju; @Benjamin : Je pense qu'il voulait dire quelque chose du style:
On peut principalement l'utiliser pour /tmp, /var/tmp et /var/lock. /tmp contient les fichiers temporaires, et est de toute façons effacé à chaque redémarrage, utiliser un tmpfs est donc parfait. /var/tmp contient les fichiers temporaires des applications, mais qui ne sont pas effacés après un redémarrage.
C'est à dire que le dossier /temp est effacé à chaque démarrage donc on a aucune perte d'information si on le place sur la RAM par rapport au DD.
Pour /var/temp, si on le place sur la ram, on perds les informations contenues à chaque démarrage alors que l'utilité de ce dossier pour les logiciels est de stocker des fichiers temporaires même durant l'arrêt de la machine (On peut également créer un script de chargement/déchargement qui sauvegarde/restore ce contenu à chaque démarrage/extinction (hors extinction brutale) pour palier à cet inconvénient).
Salut c'est marrant comment on peut déterrer un topic vieux de 3ans
pour polémiquer sur le contenu du dossier /tmp qui est vidé à chaque
reboot sur débian depuis 10 ans déjà ...
Mais le système de fichier contenu en ram reste d'actualité .
Encore ma machine virtuelle qui offrirait des performances
plus élevées que la machine hôte hi! hi! hi!
Attention !
/var/tmp doit être préservé entre chaque reboot.
Source : Le FHS http://proton.pathname.com/fhs/pub/...
http://linuxfr.org/users/okcomputer...