J’ai conscience ne pas vous révéler ici une astuce 0-day, je dirais même que c’est vieux comme le monde… si, si, c’était déjà possible sous OS9 avec vos 64Mb de Ram. Je vous re-sort directement cette astuce de mes vieux cartons, car aujourd’hui la mémoire vive est à un prix plus qu’abordable et que toute personne travaillant sur de gros fichiers: vidéos, dumps de toutes sortes, etc.. sait a quel point il est fatiguant d’attendre que le disque ai fini de gratter pour pouvoir travailler.
J’entends d’ici certain d’entre vous, dire « Mais #!$@, c’est quoi ce RamDisk ? » Et bien, comme son nom l’indique, il s’agit d’un disque dur virtuel travaillant directement sur la Mémoire vive de votre machine préférée… Oui, c’est sexy et très rapide !
Trêve de blabla, mettons en application et voyons ce que ça donne réellement. Ouvrez votre terminal page 1:
La commande dont nous aurons besoin pour créer ce disque se résume en une ligne:
$ diskutil erasevolume HFS+ "ramdisk" 'hdiutil attach -nomount ram://2330860'
Output:Started erase on disk1Unmounting diskErasingInitialized /dev/rdisk1 as a 1 GB HFS Plus volumeMounting diskFinished erase on disk1 ramdisk
« Mais attend c’est quoi ce chiffre, à la fin, tu nous parlais de 1Go !? » En réalité les partitions/volumes/images (rayez la mention inutile) sont composées de bloc de 512 Bytes. Pour calculer ce nombre de bloc (ici, 2330860 blocs pour 1Go recherché) il suffit d’une simple multiplication/division:
2330860 * 512 = 1.191.400.320. Soit 1 GB.
Donc la formule à utiliser est: NombreDeBlocs = (Taille du volume MB) * 2048
Voilà, notre disque est monté sur le Bureau et est directement exploitable. Pour l’éjecter, il suffit – comme pour tous les volumes sur Os X – de le jeter à la corbeille.
ATTENTION ! ATTENTION ! ATTENTION ! CECI N’EST PAS UN EXERCICE.
S’agissant d’un volume virtuel en mémoire, une fois éjecté, toutes les donnés présente à l’intérieur a ce moment-là son purement et simplement PERDUES. Il vous faudra les sauvegarder sur un support physique avant de le démonter… De plus, si votre ordinateur plante (kernel panic..) ou est éteint (coupure électrique..) la sanction est la même. Je vous aurais prévenu !
Il est possible (voir indispensable) de mettre en place un système de sauvegarde régulier (via cron, par exemple).. on ne va pas être idiot non plus :)
Petit rappel — qui ne fera pas de mal a certain et je ne vise personne. Hein, Stef ! ;):
Des nos jours, nous utilisons souvent les termes bit, byte, octet, etc. Pourtant, certaines personnes semblent confondre les unités et me semble qu’un petit point récapitulatif serait de bon augure.
Il existe trois unités utilisées dans le monde de l’électronique et de l’informatique – mais seulement deux unités en pratique. L’unité de base est le bit, toujours écrit en minuscule: « b ». Le bit est l’unité binaire de base des ordinateurs (ayant pour valeur soit 0, soit 1). Puis viens le byte, noté en majuscule: « B ». Un byte est formé de 8 bits « b ». En France, le mot byte n’est pas utilisé et c’est l’octet « o » (en minuscule) qui est de mise (ndlr: théoriquement…). En simplifiant : 1 octet « o » = 1 byte « B » = 8 bits « b ».
A noter qu’en anglais, il faut se méfier de la confusion possible entre bit (bit) et byte (octet):
kb, Mb, Gb… signifient kilobit, mégabit, gigabit…tandis que que kB, MB, GB… signifient kilobyte, megabyte, gigabyte… Une erreur que l’on voit trop souvent !
Voyons maintenant l’utilisation de la mémoire par le Ramdisk.
MacBook-Pro$ vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 516790.
Pages active: 106586.
...
$ diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://2330860`
... Mounting disk
MacBook-Pro$ cp /Users/tintin/Desktop/Mes_vacances.FRENCH.DVDRiP.XviD.avi /Volumes/ramdisk/
MacBook-Pro$ vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 2713.
Pages active: 293000.
...
On voit clairement que tout est directement chargé en mémoire, inutile d’en dire plus. Passons maintenant directement aux tests de débit.
Notre avons vu comment créer le disque, voyons maintenant ce que ça donne en terme de performance par rapport à un disque « classique » (en l’occurrence il s’agit du disque 5400tr/mn d’un MacBook, certes pas le plus performant du marché, mais suffisamment représentatif pour ce test):
Test en ECRITURE sur le DISQUE PHYSIQUE:
MacBook-Pro$ time dd if=/dev/zero of=/Volumes/Macintosh\ HD/testfile bs=1024k count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 18.411572 secs (58.318 Mbytes/sec)
-----
real 0m18.829s, user 0m0.004s, sys 0m1.304s
Test en ECRITURE sur le RAMDISK
MacBook-Pro$ time dd if=/dev/zero of=/Volumes/ramdisk/testfile bs=1024k count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 2.880844 secs (372.717 Mbytes/sec)
-----
real 0m2.907s, user 0m0.005s,sys 0m1.499s
Test en LECTURE sur le DISQUE PHYSIQUE:
MacBook-Pro$ time dd of=/dev/null if=/Volumes/Macintosh\ HD/testfile bs=1024k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 13.821304 secs (77.687 Mbytes/sec)
-----
real 0m13.861s, user 0m0.006s, sys 0m1.018s
Test en LECTURE sur le RAMDISK:
MacBook-Pro$ time dd of=/dev/null if=/Volumes/ramdisk/testfile bs=1024k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 1.812593 secs (592.378 Mbytes/sec)
-----
real 0m1.829s, user 0m0.005s, sys 0m1.176s
Pour un fichier de 1Go:
_____ Disque Physique | Ramdisk _____
Lecture: 13.8s (77Mb/s) | 1.8s (592Mb/s)
Ecriture: 18.4s (58Mb/s) | 2.8s (372Mb/s)
Joli tableau, n’est-ce pas ? … Bref, les performances parlent d’elles mêmes !
Je vous livre un applescript et un script bash, trouvé sur macosxhints.com pour automatiser le biniou:
Applescript:
tell application "Finder"
activate
display dialog "This script will create a RAM Disk on your desktop.
How many megabytes would you like it to be?" default answer "" buttons {"OK", "Cancel"} default button 1
set diskSize to (text returned of the result)
set diskSize to diskSize * 2048
do shell script "hdid -nomount ram://" & diskSize
set dskImg to the result
set prevTextDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"/"}
set myDevDisk to the last text item of dskImg
log result
set myShellCmd to "/sbin/newfs_hfs /dev/r" & myDevDisk as text
do shell script myShellCmd
display dialog result
do shell script "hdiutil mount /dev/" & myDevDisk
set AppleScript's text item delimiters to prevTextDelims
end tell
Bash:
#!/bin/sh
if [ $# -ne 1 ]; then
echo " Usage: newRamDisk.sh
echo "Example: newRamDisk.sh 20"
exit
fi
if [ $1 -lt 4 ]; then
echo "Error: Size must be greater than or equal to four megabytes"
exit
fi
ramDiskSize=`echo "${1}*2048" | bc`
echo "Allocating $ramDiskSize blocks"
ramDiskPath="/dev/r"`hdid -nomount ram://${ramDiskSize} | awk -F / '{print $3}'`
echo -n "Creating HFS Plus filesystem on $ramDiskPath"
newfs_hfs -v "Ram Disk" $ramDiskPath
echo "Mounting $ramDiskPath"
hdiutil mount $ramDiskPath
En résumé, a l’heure ou l’on peu se gaver de RAM pour un investissement réduit ça peut être une solution intéressante pour ceux qui ont besoin de disques très – très – rapides.
Possibly Related Posts:
- ECiD/ iBEC & iBSS Grabber for Mac
- Installer Os X sur un Thinkpad R52
- The Cheat 1.2.2 pour (Snow) Leopard
- Les applications indispensables pour Os X
- Les options de boot sur Mac OS X détaillés











