Jul 042011
 

ramdiskOggi il Ram disk ha salvato (almeno temporaneamente) un altro cliente, questa volta abbiamo spostato i suoi file di indice Lucene da un disco locale a /dev/shm, io non sono così sicuro che questa sia la vera soluzione, ma almeno questo ci ha dato delle migliori prestazioni e del tempo per studiare la sua applicazione, per vedere se e dove ci sono dei colli di bottiglia.


Un disco RAM o RAM drive è un blocco di RAM (memoria principale o memoria volatile) che il software di un computer sta trattando come se la memoria fosse una unità disco (memoria secondaria).

Tutti le moderne distribuzioni Linux usano la RAM disk e allocano spazio per essa, nei seguenti esempi userò Ubuntu per semplicità, ma di solito queste regole si applicano a tutti le distro.

Ubuntu di default usa la metà della memoria fisica (RAM) come ramdisk, ed è montata su /dev/shm, può essere utilizzata come spazio su disco normale (creare file e cartelle e manipolarli con migliori prestazioni piuttosto se fossero memorizzati sul disco rigido).

Le prestazioni di un disco RAM è in generale ordini di grandezza più veloce rispetto ad altre forme di supporti di memorizzazione, come ad esempio un SSD, disco rigido, unità nastro o disco ottico. Questo aumento di prestazioni è dovuto a molteplici fattori, tra cui il tempo di accesso che è notevolmente diminuito dal momento che un disco RAM è un dispositivo a stato solido, la massima velocità e tipo di file system.

Il file system in uso, ad esempio FAT, NTFS, usbfs, ext2, ecc, usa accessi extra, legge e scrive sul disco, ed anche se piccoli, si possono sommare rapidamente, soprattutto nel caso di molti file di piccole dimensioni rispetto a pochi file grandi (cartelle internet temporanee, cache internet, ecc.)

Configurare i lmiti della ram disk

Come prima cosa è possibile verificare la dimensione del disco RAM con il comando

df -h /dev/shm
 
Filesystem            Size  Used Avail Use% Mounted on
none                  754M  1.6M  752M   1% /dev/shm

Per cambiare questo limite è necessario modificare il file /etc/fstab e modificare (o aggiungere) una linea come questa:

tmpfs /dev/shm tmpfs defaults,size=512M 0 0

Questo imposterà la dimensione massima di /dev/shm a 512 MB;dovete solo smontare e poi rimonate il filesystem.
Oppure si potrebbe utilizzare l’opzione remout:

mount -o remount,size=512M /dev/shm

Conclusioni

Non ci sono molte altre cose da dire sulla RAM disk, quanto i modi in cui è molto utile utilizzarla, ovunque abbiate del disco che fa fatica, o notiate una grande percentuale della vostra CPU spessa in waiting I/O, la RAM disk potrebbe esservi di aiuto.

In passato io l’ho utilizzata per mettere i file RRD su cui scriveva un monitor Ganglia collegato a circa un migliaio di server, e per spostare i file di Log di Nagios, dove quest’ultimo esegue le statische di availability facendo grep su grossi file.

La cosa importante da ricordarsi è che in caso di reboot questa area è totalmente cancellata, quindi dovete pensare a sistemi di backup (avevo un rsync che ogni 15 minuti salvava tutta la /dev/shm su una area di disco), e sistemi di restore (io avevo al boot uno script che copiava dall’area di disco a /dev/shm).

Se avete abbastanza RAM ed i vostri problemi sono solo legati al disco, questo potrebbe risolverli tutti.

Riferimenti:

Wikipedia


Popular Posts:

flattr this!

  6 Responses to “Ram Disk su Linux”

  1. Mi ricordo il driver per la ramdisk sotto dos… quanti anni… :(

  2. Sorry, but for the most part, Linux handles both RAM and disk in an efficient manner. RAM disks can help when you run a series of apps that insists on writing to file. That is, one app creates a file. Another one reads it and writes another, and so on. Of course, if these apps were written for UNIX, using the standard of piping the stdout of one to the stdin of another, RAM disks would not be needed. Linux would manage the pipes in RAM itself.

    RAM disks under Linux, have only a limited application.

  3. I’ve written two post about using RAM disks to improve computer performance

    Firefox: http://www.go2linux.org/linux/2010/10/optimize-firefox-780

    Webserver: http://www.go2linux.org/linux/2010/10/create-ram-disk-improve-performance-webserver-791

    Thanks for the great write up.

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>