Home Mappa Indice Ricerca Notizie Archivio Link A proposito di LF
[Barra Superiore]
[Barra Inferiore]
[Foto dell'autore]
di Mark Nielsen

L´autore:

L'autore (home page) lavora come impiegato presso The Computer Underground, Inc. e come consulente professionista presso 800linux.com. Nel tempo libero fa attività di volontariato, come scrivere questi documenti. Questo documento è stato scritto usando Nedit e ispell.

Contenuto:

Come usare un Ramdisk per Linux

[Illustration]

Sommario:

Qusto articolo mostra come usare la RAM come un hard disk virtuale.



 

Introduzione ai RamDisk

Questo è un breve articolo su come preparare un RamDisk su un sistema RedHat 6.0. Il procedimento dovrebbe essere molto simile per le altre distribuzioni di Linux.

Cos'è un RamDisk? Un RamDisk è una porzione di memoria che viene allocata per l'uso come una partizione. O, in altre parole, si prende la memoria e la si usa come un disco fisso, salvandovi dei file. Perché usare un RamDisk? Se si sa che certi file verranno usati frequentemente, mettendoli in memoria si aumentano le prestazioni del computer, in quanto la memoria è più veloce del disco fisso. Cose come server web con molti dati possono essere velocizzati in questo modo. O, se siete dei folli e avete un computer con un PII 550 Mhz, un giga di memoria e un vecchio disco fisso da 500 mega, potete usarlo semplicemente per aumentare il vostro spazio disco. O ancora, se volete una macchina quasi senza disco fisso, potrebbe non essere così fuori dal mondo dopotutto.

Ecco alcune risorse che possono aiutarvi.

  1. http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html
  2. http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html
  3. /usr/src/linux/Documentation/ramdisk.txt
 

Come usare un RamDisk

Usare un ramdisk è molto semplice. Prima di tutto, l'installazione standard della RedHat 6.0 ha già il supporto per i ramdisk. Tutto quello che dovete fare è formattare il ramdisk e montarlo su una directory. Per visualizzare tutti i ramdisk disponibili, eseguite un "ls -al /dev/ram*". Questo vi da l'elenco dei ramdisk predisposti per l'uso. Questi ramdisk non consumano memoria finché non li si usa in qualche modo (come formattandoli). Ecco qui un esempio molto semplice di come usare un ramdisk.
# crea un mount point:
mkdir /tmp/ramdisk0
# crea un filesystem:
mke2fs /dev/ram0
# mounta il ramdisk:
mount /dev/ram0 /tmp/ramdisk0
Quei tre comandi creeranno una directory per il ramdisk, ne formatteranno uno (creeranno il filesystem), e monteranno il ramdisk sulla directory "/tmp/ramdisk0". Adesso quella directory potrà essere usata come una finta partizione! Usatela come ogni altra directory o come qualsiasi altra partizione.
Se la formattazione del ramdisk fallisce è possibile che non abbiate il supporto per i ramdisk compilato nel Kernel. L'opzione di configurazione del Kernel per i ramdisk è CONFIG_BLK_DEV_RAM .

La dimensione predefinita dei ramdisk è 4MB=4096 blocchi. Avrete già visto la dimensione del ramdisk ottenuta mentre stavate eseguendo mke2fs. mke2fs /dev/ram0 dovrebbe aver visualizzato un messaggio come questo:

mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09
Linux ext2 filesystem format
Filesystem label=
1024 inodes, 4096 blocks
204 blocks (4.98%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group
Eseguendo df -k /dev/ram0 possiamo sapere quanto di quello spazio è effettivamente utilizzabile (anche il filesystem prende un po' di spazio):
>df -k /dev/ram0
Filesystem  1k-blocks  Used Available Use% Mounted on
/dev/ram0        3963    13      3746   0% /tmp/ramdisk0

A cosa bisogna stare attenti? Beh, quando riavviate il computer, perdete il contenuto dei ramdisk. Non metteteci dati che non siano copiati da qualche altra parte. Se modificate qualcosa in quella directory e se questi cambiamenti devono essere memorizzati, trovate una maniera di farne un backup.  

Cambiare la dimensione dei ramdisk

Per usare un ramdisk occorre o avere il supporto per i ramdisk compilato nel Kernel o compilarlo come modulo caricabile. L'opzione di configurazione del Kernel è CONFIG_BLK_DEV_RAM . Compilando il ramdisk come modulo caricabile si ha il vantaggio che si può decidere a tempo di caricamento quale deve essere la dimensione dei ramdisk.

Okay, prima il modo difficile. Aggiungete questa linea al vostro file lilo.conf:

    ramdisk_size=10000 (o ramdisk=10000 per i vecchi kernel)

e la dimensione predefinita dei ramdisk sarà di 10 mega non appena avrete eseguito il comando "lilo" e avrete riavviato il computer. Ecco come esempio il mio file /etc/lilo.conf.

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
	label=linux
	root=/dev/hda2
	read-only
	ramdisk_size=10000
In effetti, ho ottenuto poco più di 9 mega di spazio utilizzabile in quanto anche il filesystem occupa un po' di spazio.

Quando il supporto per i ramdisk è compilato come modulo la dimensione dei ramdisk può essere decisa al caricamento del modulo. Questo si può fare con una linea di opzione nel file /etc/conf.modules:

options rd rd_size=10000
oppure come parametro nella linea del comando insmod:
insmod rd rd_size=10000
Vediamo un esempio che mostra come usare il modulo:
  1. Smontate il ramdisk mountato nel capitolo precedente, umount /tmp/ramdisk0 .
  2. Scaricate il modulo (che nel capitolo precedente era stato caricato automaticamente), rmmod rd
  3. Caricate il modulo dei ramdisk module scegliendo come dimensione 20MB, insmod rd rd_size=20000
  4. Create il filesystem, mke2fs /dev/ram0
  5. Montate il ramdisk, mount /dev/ram0 /tmp/ramdisk0
 

Esempio di come usare un ramdisk per un server web.

Bene, vediamo un esempio di come usare 3 ramdisk per un server web. Supponiamo di poter affermare al 99% che l'installazione predefinita di Apache per la RedHat 6.0 non userà più di 9 mega per i suoi script CGI, per le pagine HTML e per le icone. Ecco come installarne uno.
Per prima cosa rinominate la directory principale del vostro server web e create le directory per montare i ramdisk.
mv /home/httpd/ /home/httpd_real
mkdir /home/httpd
mkdir /home/httpd/cgi-bin
mkdir /home/httpd/html
mkdir /home/httpd/icons
Successivamente, aggiungete questi comandi alla procedura di avvio del server nel file /etc/rc.d/init.d/httpd.init (o comunque nel file che viene usato nel vostro sistema per avviare httpd):

	### Crea le partizioni per i ramdisk
/sbin/mkfs -t ext2 /dev/ram0
/sbin/mkfs -t ext2 /dev/ram1
/sbin/mkfs -t ext2 /dev/ram2

	### Monta i ramdisk nei rispettivi posti

mount /dev/ram0 /home/httpd/cgi-bin
mount /dev/ram1 /home/httpd/icons
mount /dev/ram2 /home/httpd/html

	### Copia le vere directory nei ramdisk (i dati
        ### sui ramdisk vengono persi dopo un riavvio)
tar -C /home/httpd_real -c . | tar -C /home/httpd -x
  
        ### Fatto questo si può lanciare il server web.
 

Commenti

  1. Ricordatevi una cosa, FATE IL BACKUP DEI VOSTRI DATI se li cambiate e se vi occorrono le modifiche. Quando il computer si riavvia, tutte le modifiche vengono perse.
    Dovrebbe occuparsene cron; fate in modo che ogni 10 minuti controlli se qualche file è stato modificato e che, in caso affermativo, ne faccia una copia di backup. Un'altra cosa che potreste fare è fare le modifiche nelle vere directory e, successivamente, copiare le modifiche nei ramdisk. Questo è molto più sicuro.
  2. Un interessante uso potrebbe essere, in un computer con un giga di memoria, usare 256 mega per la directory "/tmp". Se ci sono molti processi che usano "/tmp", questo dovrebbe aiutare a velocizzare il sistema. Oltretutto, tutto quello che si trova in /tmp sarebbe cancellato quando il computer si riavvia, il che può essere una buona cosa.
  3. Linux usa tutta la memoria che non viene usata dai programmi come cache unificata dei dischi ma la mia esperienza è che i ramdisk vi danno comunque un po' di velocità in più.

Sito web mantenuto dal Team degli Editori di LinuxFocus
© Mark Nielsen
LinuxFocus 1999
Informazioni sulla traduzione:
en -> -- Mark Nielsen
en -> it Antonio Schifano

1999-11-14, generated by lfparser version 0.7

mirror server hosted at Truenetwork, Russian Federation.