2 votes

Créer un disque RAM sous Linux qui ne change pas de système de fichiers après un redémarrage.

Je crée un disque RAM sur Ubuntu 16.10 (fonctionnant dans une VM) avec les commandes suivantes

sudo mkdir -p /media/RAMDisk
sudo mount -t tmpfs -o size=2048M tmpfs /media/RAMDisk

Après cela, si je vais dans le RAMDisk et que je fais ceci .

df .

J'obtiens ce qui suit

tmpfs            2097152     0   2097152   0% /media/RAMDisk

Jusqu'à présent, tout va bien.

Puis je redémarre Ubuntu (ce qui redémarre la VM exécutée via Workstation Pro).

Après le redémarrage, je m'attends à ce que soit le /media/RAMDisk de ne pas exister du tout, ou d'exister en tant qu'un tmpfs système de fichiers sans contenu.

El /media/RAMDisk existe bel et bien, sans contenu, mais étonnamment comme un /dev/sda1 système de fichiers. Lorsque je fais df . con /media/RAMDisk je vois ça :

    /dev/sda1       17413904 9577448   6928836  59% /

Maintenant, je pourrais facilement placer les commandes dans mon .bashrc et les faire fonctionner et faire les bonnes choses à chaque fois, mais j'ai besoin de savoir ce qui se passe.

De plus, mon gestionnaire de machine virtuelle - Workstation Pro - pourrait-il faire quelque chose ?

2voto

Kamil Maciorowski Points 57004

Que se passe-t-il ?

Rien d'inhabituel.

df /media/RAMDisk lorsqu'il s'agit de /dev/sda1 vous indique que le répertoire actuel appartient au système de fichiers sur /dev/sda1 qui est monté sur / .

C'est parce que l'effet de votre mount n'est pas permanente, elle ne survit pas au redémarrage. D'autre part, la commande mkdir a créé un répertoire dans le système de fichiers de /dev/sda1 et ce système de fichiers est monté après chaque redémarrage, donc le répertoire lui-même survit, mais en tant que partie de /dev/sda1 système de fichiers.

Vous devez monter RAMDisk après (ou à) chaque démarrage en quelque sorte.


Comment le monter ?

Running mount de l'intérieur .bashrc n'est pas une bonne idée car ce fichier peut être sourcé plusieurs fois pendant une seule session. Puisque vous avez besoin sudo de toute façon, il sera préférable d'utiliser /etc/rc.local qui est exécuté une fois au démarrage du système d'exploitation.

Mais la meilleure solution consiste à ajouter la ligne suivante à votre fichier /etc/fstab :

tmpfs /media/RAMDisk tmpfs defaults,nosuid,nodev,size=2048M 0 0

Enquêter sur user y noauto (voir man 5 fstab ) et vous voudriez peut-être les utiliser et invoquer mount /media/RAMDisk sur demande uniquement.


systemd ?

Ce site me fait croire que tu peux diriger un systemd lorsqu'un utilisateur donné se connecte pour la première fois et l'interrompre dès que la dernière session de l'utilisateur est fermée. Je ne suis pas très familier avec systemd donc je ne peux pas vous dire comment (si) vous pouvez le faire avec .mount unité.

Mais si vous utilisez systemd alors vous devriez déjà avoir un tmpfs monté sur /run/user/<UID> . Celui du système devrait être sur /dev/shm .


À propos de /media/

Notez également /media/ est utilisé par Ubuntu pour créer des points de montage, par exemple pour des lecteurs USB externes (je crois que udisks2 est responsable). Ils peuvent ressembler à /media/<username>/<label> donc je suppose /media/RAMDisk ne va pas entrer en collision avec quoi que ce soit. En général, j'éviterais cependant d'utiliser cet emplacement. Dans mes systèmes (Debian, Kubuntu, Raspbian, OpenWRT) j'utilise /mnt/<something> et je n'ai jamais eu de problèmes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X