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