Par ailleurs tmpfs
et ramfs
, une autre option est le /dev/ram0
dispositif de bloc. Sur les versions récentes d'Ubuntu, ce périphérique n'existe pas par défaut, mais peut être créé via modprobe brd
.
Cette approche est plus prévisible, car elle crée un ext4
système de fichiers réel et ne dépasse jamais la limite spécifiée. Mais la configuration nécessite plus d’étapes et la mémoire vive est utilisée moins efficacement.
Utilisation du module de noyau brd (/ dev / ram0)
Pour créer et initialiser un disque RAM de 4 Go:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
Le rd_nr
paramètre spécifie le nombre de disques RAM à créer (par défaut, il en crée 16, c'est- /dev/ram0
à- dire par le biais /dev/ram15
). Le rd_size
paramètre est la taille en kilo-octets . La $(( ... ))
syntaxe vous permet de faire de l'arithmétique dans le shell.
Pour désallouer le disque RAM, démontez-le et retirez le brd
module du noyau:
umount /ramdisk
modprobe -r brd
Créer un périphérique bloc à l'intérieur ramfs
Sinon, vous pouvez créer un périphérique bloc à l'intérieur de ramfs
:
mkdir /ramdisk-storage /ramdisk
mount -t ramfs ramfs /ramdisk-storage
truncate -s 4G /ramdisk-storage/ramdisk.img
mkfs.ext4 /ramdisk-storage/ramdisk.img
mount /ramdisk-storage/ramdisk.img /ramdisk
La truncate
commande crée un fichier vide d’une taille donnée de sorte qu’il soit initialisé (c’est-à-dire qu’il consomme de la mémoire) à la demande.
Pour désallouer le disque RAM, démontez-le et supprimez l’image disque:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Comparaison avec tmpfs
etramfs
Bien tmpfs
et ramfs
sont plus efficaces que d' utiliser un dispositif de bloc, ci - dessous quelques - unes de leurs inconvénients.
tmpfs
peut permuter sur le disque. Ceci est plus efficace, mais vous voudrez peut-être parfois un disque purement RAM:
- Les fichiers avec lesquels vous travaillez sont sensibles (par exemple, les fichiers d'une partition cryptée).
- Vous effectuez des tests de performances et vous ne voulez pas que les E / S de disque jouent un rôle important (les temps d'écriture sur les disques SSD peuvent varier beaucoup).
- Vous décompressez un fichier volumineux et vous ne voulez pas utiliser votre disque SSD.
ramfs
est facile à configurer, récupère de l’espace une fois les fichiers supprimés et utilise la RAM plus efficacement (le système ne met pas les fichiers en mémoire tampon, car il sait qu’ils sont dans la RAM). Mais il a ses propres inconvénients et surprises:
L' df
utilitaire ne rapporte pas l'utilisation de l'espace:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Il n'y a pas de paramètre de limite de taille. Si vous mettez trop dans le disque mémoire, votre système se bloquera.
Les fichiers fragmentés peuvent devenir épargnés lorsque vous vous y attendez le moins. Ce matin, j'ai copié une image de machine virtuelle (150G, mais 49G utilisée sur le disque) vers ramfs
(j'ai 128G de RAM). Ça a marché. Mais quand j'ai copié de la ramfs
à la destination, mon système est devenu insensible. L' cp
utilitaire a apparemment comblé les lacunes en lecture , mais pas en écriture.
Les deux tmpfs
et ramfs
peuvent se comporter différemment d'un vrai ext4
système de fichiers. Créer un périphérique bloc dans la RAM et l’initialiser avec ext4
évite cela.
Pour une comparaison plus approfondie: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs