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: |
Résumé:
Cet article montre comment utiliser la RAM comme disque dur virtuel.
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:
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ù).
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:
unmount /tmp/ramdisk
.
rmmod rd
insmod rd rd_size=20000
mke2fs /dev/ram0
mount /dev/ram0 /tmp/ramdisk
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.
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.
Site Web maintenu par l´équipe d´édition LinuxFocus
© Mark Nielsen LinuxFocus 1999 |
Translation information:
|
2000-01-28, generated by lfparser version 0.7