Ramdisk ubuntu 10.04

12

J'utilise Ubuntu 10.04 (64 bits) pour mon bureau.
La machine dispose d'une mémoire vive de 5 Go.

Je souhaite utiliser un disque RAM (1G ou 2G) mais je ne sais pas comment procéder.

Existe-t-il un produit opensource de disque RAM?

Benjamin
la source

Réponses:

18

La technologie est intégrée au noyau, vous n'avez pas besoin d'outils supplémentaires. En fait, vous avez déjà quelques disques RAM (que vous ne devriez pas utiliser, ils sont réservés au système), que vous pouvez voir en faisant

grep -w tmpfs /proc/mounts

Pour configurer un disque RAM de 2 Go monté sur /ramdisk, ajoutez la ligne suivante à /etc/fstab:

ramdisk  /ramdisk  tmpfs  mode=1777,size=2g

Montez ensuite le disque avec la commande mount /ramdisk(cela se fera automatiquement au redémarrage).

La taille indiquée est un maximum, le disque utilise seulement autant de mémoire que les fichiers qui s'y trouvent.


Vous pouvez changer /tmppour être un disque RAM. Dans la /etc/fstabligne ci-dessus, mettez /tmpplutôt que /ramdisk, puis redémarrez.

La première fois que vous redémarrez après avoir changé /tmpen disque RAM, les fichiers qui s'y trouvaient /tmpseront masqués. C'est inoffensif, sauf qu'ils gaspillent un peu d'espace disque. Vous pouvez les nettoyer ( après avoir redémarré avec /tmpsur le disque RAM) en faisant

mount --bind / /mnt
rm -r /mnt/tmp/* /mnt/tmp/.*
umount /mnt

La mount --bindcommande crée /mntune vue en double de votre système de fichiers racine; mais alors que le disque RAM obscurcit maintenant /tmpsur la vue racine, rien n'est obscurci /mnt/tmp.

AJOUT : Vous pouvez passer /tmpà un disque RAM sans redémarrer, c'est juste un peu plus compliqué. Ajoutez la ligne /etc/fstabcomme ci-dessus, puis exécutez les commandes suivantes:

mkdir /tmp.old
mount --bind /tmp /tmp.old
mount /tmp
cd /tmp
ln -s /tmp.old/* /tmp/.* .

Supprimez ensuite /tmp.oldaprès votre prochain redémarrage.

La raison pour laquelle vous ne pouvez pas simplement déplacer des fichiers de /tmp.oldvers /tmpest que certains programmes critiques ont des fichiers ouverts /tmp, par exemple /tmp/.X11-unix/X0que le serveur X écoute et que chaque programme GUI s'ouvre au démarrage. Déplacer un fichier vers un autre système de fichiers signifie le copier et supprimer l'ancien, vous vous retrouveriez donc avec le serveur X toujours à l'écoute /tmp.old/.X11-unix/X0mais les clients X communiquant /tmp/.X11-unix/X0en vain. Sur un serveur, vous pouvez vous en sortir si vous faites attention.

Gilles 'SO- arrête d'être méchant'
la source
@giles: Existe-t-il un moyen de le faire sans modifier fstab et redémarrer? Je suppose qu'il existe une méthode mkfs correspondante, suivie d'un montage, mais "man mkfs" n'a pas été très utile.
hotei
1
@hotei: Le redémarrage consiste uniquement à basculer /tmpvers tmpfs. Ce n'est pas nécessaire, et j'ai édité ma réponse pour expliquer comment le faire, mais c'est plus compliqué. Il n'y a rien à faire mkfscar il n'y a pas de stockage sous-jacent à préparer, le noyau gère tout.
Gilles 'SO- arrête d'être méchant'
@giles: Merci pour la mise à jour. Il me manquait la partie où "la magie opère" lors de la lecture par le montage de la ligne fstab. Je crois que je comprends pourquoi cela fonctionne maintenant.
hotei
Puis-je demander si cela se traduit par une accélération notable?
Robert Massaioli
@Robert: Je pense que cela a provoqué une accélération notable sur le SSD très lent de mon netbook (principalement parce que les synchronisations peuvent durer plusieurs secondes et /tmpsur le disque augmente la fréquence des synchronisations), mais c'est une impression subjective peu fiable. Je n'ai jamais essayé de comparer.
Gilles 'SO- arrête d'être méchant'