info
* Le but de la manœuvre : il s'agit d'aller travailler en RAM directement, sans écrire sur le disque dur. Ceci pour gagner en rapidité.
* Date du tutoriel : septembre 2009.
* Fait par : Minimoineau, aidé par Youki.
* Mise en page : Olinuxx.



Avant propos


Les ordinateurs actuels offrent une quantité de mémoire vive de plus en plus importante. Elle affiche, de plus, des prix de plus en plus attractifs ! L'un des impératifs en MAO étant d'avoir un débit de données constant important, je me suis dit qu'il serait peut-être possible de travailler directement sur la RAM. Petite recherche sur le net, et BINGO ! Notre système d'exploitation préféré permet tout à fait de monter un "lecteur" en RAM grâce à tmpfs ! Alors, si comme moi vous avez un débit trop limité pour vous laisser aller sur Ardour et que votre budget ne vous permet pas de vous offrir un super système RAID, suivez le guide !


Configuration


Allons-y !

Tout d'abord, le support de tmpfs doit être activé dans votre noyau (il l'est dans tous les noyaux récents).

On crée un point de montage sur un nouveau dossier (chez moi /ramdisk) :
Copy to clipboard
mkdir /ramdisk

On change ensuite les droits de ce dossier pour pouvoir y accéder à loisir :
Copy to clipboard
chmod 777 /ramdisk

Et on monte notre "ramdisk" comme ceci :
Copy to clipboard
mount -t tmpfs -o size=3600M tmpfs /ramdisk
en précisant la taille avec -o size= (ici 3600M pour 3.6Go)

le petit plusse
Notez que la taille est gérée de manière dynamique par le noyau. C'est à dire que si le dossier n'est pas rempli, la RAM reste entièrement disponible pour le système.



Peaufinage


Cette dernière commande peut être inscrite dans /etc/rc.local pour que le "ramdisk" se monte automatiquement au démarrage.

Enfin, il suffira de spécifier ce dossier comme chemin pour les fichiers dans Ardour (Édition/Préférences/Chemin/fichiers).

 attention
Tout ce qui sera dans ce dossier s'effacera à l'extinction de l'ordinateur ! Pensez bien à sauvegarder sur un vrai disque votre travail !



Script d'automatisation de la sauvegarde des données


Voila la solution simple que j'ai mis en œuvre et qui semble fonctionner. Mais des tests d'autres personnes seraient les bienvenus.

À essayer d'abord avant de l'utiliser sur des projets importants!

Il y aura peut être de la redite par rapport à ce qui se trouve dans les chapitres précédents. Tout est à taper dans un terminal en super utilisateur.

  1. Je crée un répertoire nomme /ramdisk et j'en change les permissions :
    Copy to clipboard
    mkdir /ramdisk chmod 777 /ramdisk
  2. J'ajoute le montage de la RAM dans ce répertoire au fichier /etc/fstab en y incluant la ligne suivante :
    Copy to clipboard
    tmpfs /ramdisk tmpfs rw,size=2890M 0 0

    À la place de size=2890M mettez la valeur que vous voulez, 2890M c'est pour 2.89G de RAM. Notez que la taille est gérée de manière dynamique par le noyau. C'est à dire que si le dossier n'est pas rempli, la RAM reste entièrement disponible pour le système.
    Le fichier /etc/fstab permet de monter des partions automatiquement au démarrage de la machine.
     
  3. Je monte le tout :
    Copy to clipboard
    mount -a
  4. Je crée un script que je nomme sauvegarde-ramdisk et que je sauve dans /etc/init.d/. Ce répertoire contient les scripts qui sont exécutés aux différents runlevels. Voir : http://www.gcolpart.com/howto/runlevel.php4 Image et http://www.tavuu.net/linux/utilisation-de-update-rcd-sous-debian-ou-comment-lancer-des-scripts-au-demarrage-du-systeme/. Image
     
    Voici ce que contient ce script :
    cliquez ici
    Copy to clipboard
    #! /bin/bash #Le switch case ci-dessous permet de savoir si le système souhaite lancer ou arrêter le script (on le lance au démarrage et l'arrête à la fermeture du système) case "$1" in start) # copie le contenu du répertoire de sauvegarde sur le disque dur vers /ramdisk cp -R /chemin/vers/votre/repertoire/de/sauvegarde/* /ramdisk/ chown -R user:user /ramdisk/ ;; stop) # copie de /ramdisk vers un répertoire de sauvegarde sur le disque dur cp -R /ramdisk/* /chemin/vers/votre/repertoire/de/sauvegarde/ chown -R user:user /chemin/vers/votre/repertoire/de/sauvegarde/ ;; *) # On indique ici comment utiliser le script, c'est dans le cas où le script est appelé sans argument ou avec un argument invalide echo 'Usage: /etc/init.d/repertoire-sauvegarde-ramdisk {start|stop}' exit 1 ;; esac


    Bien sur je n'oublie pas de rendre exécutable le script :
    Copy to clipboard
    chmod +x /etc/init.d/sauvegarde-ramdisk

    Donc quand ce script est exécuté au démarrage, tout ce qui se trouve dans le répertoire de sauvegarde est copie vers le répertoire /ramdisk/, donc dans la RAM de l'ordinateur.
    Et, vous vous en doutez, le script fait la même chose en sens inverse lors de l'extinction de la machine.
    À chaque fois le chown -R user:user remettra les permissions correctement pour l'utilisateur. Remplacez donc le terme user par votre nom d'utilisateur partout dans le script.
     
  5. Ensuite, il faut déterminer à quels runlevels /etc/init.d/sauvegarde-ramdisk s'exécutera ou non et à quelle priorité, pour ça on utilise la commande update-rc.d, j'ai fait ça :
    Copy to clipboard
    update-rc.d sauvegarde-ramdisk start 99 2 3 4 5 . stop 01 0 1 6

    Donc, il s'exécutera en position 99 sur les runlevels 2,3,4 et 5, il s'arrêtera en position 01 sur les runlevels 0, 1 et 6.
    Ma logique est qu'il vaut mieux qu'il s'exécute tard lors du démarrage, mais tôt lors de l'extinction.

 info
Le script peut être appelé à tout moment par les commandes suivantes : /etc/init.d/sauvegarde-ramdisk start ou invoke-rc.d sauvegarde-ramdisk start et /etc/init.d/sauvegarde-ramdisk stop ou invoke-rc.d sauvegarde-ramdisk stop

 info
Il est possible de faciliter la sauvegarde en cours de sessions en créant un lanceur avec la commande gksu invoke-rc.d sauvegarde-ramdisk stop, ou un équivalent si vous n'utilisez pas gksu.



Commentaires


Note de Minimoineau : j'utilise ce petit truc depuis quelque temps sur une Ubuntu Hardy Heron optimisée pour la MAO. Je n'ai pas encore atteint les limites de débit sous Ardour avec 5Go de RAM !

 info
Une architecture 64 bit est nécessaire pour que le système détecte plus de 4 Go de mémoire. L'autre solution consiste à activer l'option "highmem" dans un noyau 32 bit (comme sur les noyaux de serveurs), mais je ne l'ai jamais testée.


 info
Il est désormais possible avec les noyaux "PAE" d'utiliser plus de 4 Go de RAM en architecture 32 bit ! (ce qui n'était pas le cas lors de la rédaction de cet article...).


À titre indicatif, le débit théorique d'une barrette de DDR2 PC2 6400 (800MHz) est de 6.4Go/s 😬 !!!
Plus de problème de débit de données ! La seule limite est la quantité de RAM dont on dispose.

Encore une petite précision (et non des moindres...!) : un autre avantage de l'utilisation du tmpfs est qu'il limite énormément les accès au disque dur. En d'autre termes, il permet d'économiser considérablement les batteries des portables et autres systèmes nomades ! La RAM étant bien évidemment beaucoup moins gourmande en énergie.





[+]
Licence

La licence de cet article est la Creative Commons suivante :
http://creativecommons.org/licenses/by-sa/2.5/deed.fr

Extrait :
Paternité - Partage des Conditions Initiales à l'Identique 2.5

Vous êtes libres :

  • de reproduire, distribuer et communiquer cette création au public
  • de modifier cette création
  • d'utiliser cette création à des fins commerciales

Selon les conditions suivantes :
  • by: Paternité. Vous devez citer le nom de l'auteur original.
  • sa: Partage des Conditions Initiales à l'identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci.

À notez que :
  • À chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création.
  • Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits.

Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...)



voir la version intégrale de la licence