Comment créer un lecteur RAM sous Linux –
Au cas où vous vous poseriez la question, les lecteurs RAM et les instances tmpfs ne sont pas les mêmes. Cet article expliquera la différence et vous montrera comment créer un lecteur RAM sous Linux en utilisant la ligne de commande. Configurez un lecteur RAM rapide en quelques minutes!
Sommaire
Qu’est-ce qu’un Lecteur RAM?
Les puces RAM de votre ordinateur peuvent être utilisées pour contenir un lecteur virtuel. Ce lecteur n’est alors pas stocké sur le disque dur mais en RAM. Non seulement la vitesse de ce disque virtuel sera beaucoup plus rapide qu’un disque normal (et surtout par rapport à un disque rotatif de type plus ancien, car le mouvement physique des pièces à l’intérieur d’un disque rotatif entraîne des retards supplémentaires), les puces de RAM ne s’usent pas aussi vite en tant que disques, et encore une fois surtout et d’autant plus avec des disques physiques de type plus ancien.
Cela semble trop beau pour être vrai? Eh bien, il y a effectivement une mise en garde; si vous redémarrez accidentellement votre ordinateur ou s’il tombe en panne, vos données ont toutes disparu. RAM (Random Access Memory), les puces de mémoire de votre ordinateur, nécessitent une alimentation constante afin de conserver leurs informations. Le stockage RAM est considéré comme volatile.
En d’autres termes, les disques RAM se prêtent à des applications temporaires ou à des optimisations spécifiques. Par exemple, lorsque nous utilisons des serveurs de test pour tester des logiciels, nous mettons en place un lecteur de RAM pour permettre aux nombreux tests simultanés d’aller plus vite. Et, même si le serveur venait à perdre de la puissance, il ne perdrait pas grand-chose; nous commencerions simplement un autre essai.
Une autre application consiste à pré-charger les données souvent consultées dans un lecteur RAM. Par exemple, si vous avez un serveur qui accède en permanence à une base de données en lecture seule donnée (la lecture-écriture peut être plus complexe si les données doivent être conservées), qui réside normalement sur le disque, vous pouvez alors copier la base de données en lecture seule sur RAM automatiquement (avec des scripts automatisés au démarrage du serveur par exemple, ou avec une tâche cron), puis laissez le serveur de base de données utiliser ces données.
En d’autres termes, on peut résumer deux cas d’utilisation principaux, l’un étant la mise en cache (comme notre exemple de base de données R / O), l’autre étant le stockage de données «inestimable» (comme notre exemple de test). Vous pouvez ensuite aller plus loin (un troisième cas d’utilisation si vous voulez) et synchroniser les données sur le disque à des intervalles donnés. Par exemple, avec l’exemple de test, qui comprend également les écritures dans le stockage RAM, on pourrait réécrire le résumé et / ou les données de test sur le disque (stockage permanent) à la fin de chaque test terminé.
Une autre mise en garde avec les lecteurs RAM est qu’ils sont limités à la taille de la mémoire de votre système et probablement moins que cela car vous avez besoin d’une autre mémoire pour exécuter le système d’exploitation et d’autres logiciels.
Dimensionner un lecteur RAM à plus de – disons un arbitraire de 80 à 85% de la mémoire système – peut poser des problèmes. Bien sûr, si vous avez 256 Go de RAM dans votre serveur, même 90% alloués à un lecteur de RAM laisseraient toujours plus de 25 Go pour le système d’exploitation et les applications. Avec seulement 4 Go, une allocation de 90% à la RAM laisserait 0,4 Go (400 Mo), ce qui causera probablement des problèmes. Cela dépend donc, dans une certaine mesure, de la mémoire totale de la machine et de la quantité nécessaire pour d’autres logiciels.
De plus, un lecteur RAM ne fonctionne pas de la même manière que l’allocation / l’instance tmpfs.
Lecteur RAM vs instance tmpfs
Un tmpfs peut également être, mais n’est pas obligatoire, stocké dans les puces RAM de votre ordinateur. Le commun /dev/shm
Le mappage tmpfs mis en place automatiquement avec l’installation de la plupart sinon de tous les systèmes d’exploitation Linux est pratique mais ne fonctionne pas de la même manière qu’un lecteur RAM.
La différence entre les deux est qu’un lecteur RAM (le terme rigide vient à l’esprit) est stocké à 100% dans des puces RAM réelles, tandis que tmpfs est stocké dans le pool de mémoire du noyau Linux, qui peut inclure des éléments tels que l’espace d’échange, qui est régulièrement situé sur le disque. Bien que le noyau optimise probablement tous les accès au pool, il donne toujours la possibilité d’écrire des données soit sur la RAM physique, soit sur le DISQUE physique. Et, s’il va sur le disque, ce sera plus lent.
Créer un Lecteur RAM
La création d’un lecteur RAM est relativement simple. Vous pouvez créer un petit script appelé ramdrive.sh
, avec le code suivant:
#!/bin/bash if [ "$(mount | grep -o "/mnt/ram")" != "/mnt/ram" ]; then sudo mkdir -p /mnt/ram sudo mount -t ramfs -o size=1g ramfs /mnt/ram sudo chown -R $(whoami):$(whoami) /mnt/ram fi mount | grep ram
Et un autre script umount_ram.sh
, avec le code suivant:
#!/bin/bash sudo umount /mnt/ram
Jetons un coup d’œil au premier script. Tout d’abord, nous indiquons que nous voulons Bash comme notre interpréteur de commandes avec le symbole Shebang (#!
). Si vous souhaitez en savoir plus sur Shebang, jetez un œil à Bash Automation & Scripting Basics, notre article en 3 parties sur l’automatisation et les scripts Bash.
Après cela, nous vérifions si nous avons déjà une monture sous /mnt/ram
(le répertoire que nous allons utiliser pour monter notre lecteur RAM), en utilisant un grep-only (grep -o
) de /mnt/ram
dans la liste complète ‘actuellement monté’, comme affiché par mount
. Si le même n’est pas trouvé, nous procédons avec trois commandes sudo. Tous les trois nécessitent sudo
, mais pour diverses raisons.
La première commande nécessite sudo car elle crée un répertoire éventuellement racine et au moins dans /mnt
, qui sont des répertoires privilégiés / protégés. La commande suivante, le montage et la création de notre disque RAM réel, nécessite sudo car le montage est une opération privilégiée. Nous définissons la taille sur 1 Go en utilisant size=1g
. Nous indiquons également que nous voulons un lecteur de type ramfs (-t ramfs
) provenant du périphérique ramfs (comme indiqué par le deuxième ramfs
), et nous listons enfin le point de montage comme /mnt/ram
.
Dans la troisième commande sudo-enabled, nous changeons le propriétaire du /mnt/ram
répertoire (maintenant notre lecteur RAM, notre point de montage ramfs) vers l’utilisateur actuel et le propre groupe de l’utilisateur actuel en utilisant le whoami
commande deux fois. Vous voudrez peut-être changer cela pour le groupe spécifique et / ou spécifique qui utilisera le ramdrive ou pour un groupe plus large si plus d’utilisateurs utiliseront le ramdrive.
Après cela, nous finalisons notre conditionnel if .. fi
commande et faites un dernier appel à mount
avec un grep pour ram
pour vous assurer que le script rend compte de ce qui a déjà été monté en termes de RAM, ou de ce qui a été monté tout à l’heure pendant l’exécution du script. Il s’agit d’une vérification pratique / rapide que le script a réussi lors de son exécution.
Notre scénario secondaire, umount_ram.sh
, démonte le lecteur RAM avec point de montage /mnt/ram
, c’est-à-dire le lecteur ramfs que nous venons de créer. AVERTISSEMENT: l’exécuter immédiatement supprime / supprime toutes les données stockées dans la mémoire volatile et le remontage du lecteur RAMFS ne le ramènera pas; il créera simplement un tout nouveau lecteur de RAM vide. Soyez prévenu!
Emballer
Dans cet article, nous avons discuté des lecteurs RAM / ramfs (la même chose) et des instances / allocations tmpfs. Nous avons ensuite créé un lecteur ramfs de 1 Go sous /mnt/ram
en utilisant un petit script pour monter ou un lecteur RAM.
Si vous aimez continuer à lire sur Linux, jetez un œil à notre enregistrement d’écran sous Linux avec SimpleScreenRecorder ou Bits, Bytes and Binary ou From 0 to F: Hexadecimal articles!
Profitez!