Sommaire Carte Index Recherche Nouvelles Archives Liens A propos
[Barre Superieure]
[Barre Inferieure]
[Photo of the Author]
par Mark Nielsen

L´auteur:

L'auteur (home page) travaille � The Computer Underground, Inc., employ� de bureau et comme consultant professionnel aupr�s de 800linux.com. A ses heures perdues, il effectue des actions b�n�voles, telles qu'�crire ces documents.

Ce document a �t� �dit� avec Nedit et Ispell.

Sommaire:

Comment utiliser un Ramdisk sous Linux

[Illustration]

Résumé:

Cet article montre comment utiliser la RAM comme disque dur virtuel.



 

Introduction

Il s'agit d'un bref article sur la configuration et la mise en oeuvre d'un ramdisk sur un syst�me bas� sur une distribution Red Hat 6.0. Les manipulations d�crites sont applicables sans probl�mes sous d'autres distributions Linux.

Qu'est-ce qu'un ramdisk ? Un ramdisk est une portion de la m�moire que vous d�limitez, afin de l'exploiter comme une partition. Ou, en d'autres termes, vous prenez de la m�moire, vous la consid�rez comme un disque dur et y sauvegardez vos fichiers. Pourquoi voudriez-vous utiliser un ramdisk ? Eh bien, si vous savez que vous poss�dez des fichiers qui vont �tre constamment utilis�s, les mettre en m�moire am�liorera les performances de votre syst�me, car l'acc�s � la m�moire est plus rapide que l'acc�s � votre disque dur. Des choses telles que les serveurs Web avec beaucoup de donn�es, peuvent �tre acc�l�r�es par ce biais. Ou si vous �tes cingl�, et que vous disposez d'un Pentium-II 550 Mhz avec 1 Go de m�moire et un vieux disque dur de 500 Mo, vous pouvez utiliser cette technique pour augmenter votre espace disque utilisable. L� encore, si vous voulez un ordinateur quasiment d�nu� de disque (diskless), cela n'est pas une id�e si folle, apr�s tout...

Voici quelques pistes suppl�mentaires pour vous aider:

  1. Le Kernel-HOWTO
  2. Le LILO mini-HOWTO
  3. La documentation sur les ramdisks, situ�e dans les sources du noyau (/usr/src/linux/Documentation/ramdisk.txt en principe).
 

Comment utiliser un ramdisk

Eh bien, c'est tr�s facile. Avant tout, l'installation par d�faut de la RedHat 6.0 fournit le support des ramdisks. Tout ce que vous avez � faire, c'est de formater un ramdisk et de le monter dans un r�pertoire.

Pour savoir de combien de ramdisks vous pouvez disposer, faites un ls -al /dev/ram*. Cela vous donnera les noms de tous les ramdisks pr�d�finis qui attendent votre bon plaisir. Ces ramdisks ne prennent aucune place en m�moire pour l'instant, du moins, jusqu'� ce que vous les utilisiez (en les formatant par exemple).

Voici un petit exemple d'exploitation d'un ramdisk:

# cr�er un point de montage:
mkdir /tmp/ramdisk0
# cr�er un syst�me de fichiers:
mke2fs /dev/ram0
# monter le ramdisk:
mount /dev/ram0 /tmp/ramdisk0

Ces trois commandes cr�eront un r�pertoire pour le ramdisk, formateront celui-ci (cr�eront dessus un syst�me de fichiers), et le monteront sur le r�pertoire /tmp/ramdisk.

Maintenant, vous pouvez consid�rer ce r�pertoire comme le point de montage d'un disque r�el ! Allez-y, utilisez maintenant le ramdisk comme n'importe quel r�pertoire ou partition.

Si le formatage du ramdisk �choue, c'est probablement parce que le support des ramdisks n'est pas activ� dans le noyau. Cette option de configuration s'appelle CONFIG_BLK_DEV_RAM.

La taille par d�faut d'un ramdisk est de 4 Mo = 4096 blocs.

Vous avez pu constater la taille du disque virtuel, quand vous avez lanc� mke2fs. La commande mke2fs /dev/ram0 aura sans doute produit les messages suivants:

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

Ex�cuter la commande df -k /dev/ram0 vous dira combien de place vous pouvez exactement utiliser (le syst�me de fichiers prend �galement un peu de place).

>df -k /dev/ram0
Filesystem  1k-blocks  Used Available Use% Mounted on
/dev/ram0        3963    13      3746   0% /tmp/ramdisk0

O� se trouve l'embrouille, me direz-vous ? Eh bien, quand l'ordinateur red�marre, tout est effac�. NE METTEZ SUR LE DISQUE VIRTUEL, AUCUNE DONN�E QUI NE SOIT PAS STOCK�E QUELQUE PART AILLEURS, SUR UN SUPPORT S�R. Si vous effectuez des changements sur les fichiers contenus dans ce r�pertoire, et que vous avez besoin de conserver ces modifications, conservez ces modifications sur un autre support, afin de pouvoir les restaurer (au cas o�).

   

Changer la taille des ramdisks

Pour utiliser un ramdisk, vous devez disposer du support des ramdisks,soit en l'int�grant directement au noyau, soit pr�sent sous la forme d'un module. Compiler l'option CONFIG_BLK_DEV_RAM comme module chargeable a l'avantage de vous permettre de d�finir la taille de celui-ci, au moment o� vous l'appellerez.

Bien, voici la m�thodebrutale. Ajoutez la ligne suivante � votre fichier lilo.conf:

ramdisk_size=10000 (ou ramdisk=10000 pour les vieux noyaux)

Les ramdisks auront une taille par d�faut de 10 Mo, d�s que vous aurez tap� lilo et red�marr� l'ordinateur.

A titre d'exemple, voici le fichier /etc/lilo.conf de mon syst�me.

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

En r�alit�, j'ai un petit peu plus de 9 M�ga-octets d'espace utilisable, car le syst�me de fichiers prend un peu de place.

Quand vous compilez le support des ramdisks en tant que module, vous pouvez d�cider de la taille de ceux-ci, lors de son chargement. Cela peut �tre d�fini, soit en ajoutant une ligne de ce type dans le fichier /etc/conf.modules:

options rd rd_size=10000

ou en ajoutant un argument de ce type � la commande insmod:

insmod rd rd_size=10000

Voici une mani�re canonique d'utiliser ce module:

  1. D�montez le ramdisk activ� dans le chapitre pr�c�dent, unmount /tmp/ramdisk.
  2. D�charger le module pr�sent en m�moire (il �tait charg� automatiquement dans le chapitre pr�c�dent), rmmod rd
  3. Recharger le module ramdisk, et fixez-en la taille � 20 Mo, insmod rd rd_size=20000
  4. Cr�er un syst�me de fichiers, mke2fs /dev/ram0
  5. Monter le ramdisk, mount /dev/ram0 /tmp/ramdisk
 

Exemple de la mani�re d'utiliser un ramdisk sur un serveur Web

Eh bien, voici un petit exemple d'application: 3 ramdisks sur un serveur Web. Admettons que vous soyez surs � 99% que l'installation par d�faut d'Apache, sur la RedHat 6.0, n'utilisera pas plus de 9 Mo pour ses scripts-CGI, le code HTML et les ic�nes. Voici comment faire.

Premi�rement, copiez en lieu sur le r�pertoire racine de votre serveur Web dans un autre endroit. Puis cr�ez les r�pertoires dans lesquels vous monterez les ramdisks:

mv /home/httpd/ /home/httpd_real
mkdir /home/httpd
mkdir /home/httpd/cgi-bin
mkdir /home/httpd/html
mkdir /home/httpd/icons

Puis, ajoutez ces commandes � la proc�dure de d�marrage dans votre fichier /etc/rc.d/init.d/httpd.init (ou n'importe o� le daemon httpd est lanc� sur votre syst�me):

# Initialise les Ramdisks

/sbin/mkfs -t ext2 /dev/ram0
/sbin/mkfs -t ext2 /dev/ram1
/sbin/mkfs -t ext2 /dev/ram2

# Monte les Ramdisks aux emplacements appropri�s

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

# Copie le contenu du r�pertoire r�el sur les ramdisks
# (Les donn�es contenues sur les ramdisks seront perdues apr�s un reboot)
tar -C /home/httpd_real -c . | tar -C /home/httpd -x
  
# Apr�s cela, vous pouvez lancer le serveur web.
 

Commentaires

  1. Souvenez-vous d'une chose, ENREGISTREZ VOS DONN�ES si vous les modifiez ou que vous en avez besoin. Quand l'ordinateur red�marre,tous les changements sont perdus.

    Notre ami cron s'en chargerait avec plaisir. Programmez une v�rification toutes les 10 minutes, afin de voir si aucun fichier n'a subi de changements, et si tel est le cas, sauvegarder ces modifications. Une autre chose que vous pouvez faire �galement, est de faire les modifications dans le r�pertoire d'origine, et de transf�rer les nouveaux fichiers dans les disques virtuels. C'est une m�thode beaucoup plus s�re.

  2. Une utilisation assez sympa de ceci, serait d'avoir un ordinateur dot� de 1 Go de m�moire, et d'attribuer 256 Mo au r�pertoire /tmp. Si vous avez beaucoup de processus qui utilisent ce r�pertoire, cela aidera � acc�l�rer votre syst�me. De plus, tout ce qui se trouve dans le r�pertoire /tmp sera effac� lors du red�marrage, ce qui peut �tre une tr�s bonne chose.
  3. Linux utilise toute la m�moire qui n'est attribu�e � aucun programme, comme une sorte de cache-disque unifi�, mais selon mon exp�rience, les ramdisks procurent en sus de cela, de la rapidit� suppl�mentaire.

Site Web maintenu par l´équipe d´édition LinuxFocus
© Mark Nielsen
LinuxFocus 1999
Translation information:
en -> -- Mark Nielsen
en -> fr Diégo D´Oliveira Granja

2000-01-28, generated by lfparser version 0.7