Además tmpfs
y ramfs
, otra opción es el /dev/ram0
dispositivo de bloqueo. En versiones recientes de Ubuntu, este dispositivo no existe de forma predeterminada, pero se puede crear a través de modprobe brd
.
Este enfoque es más predecible ya que crea un ext4
sistema de archivos real y nunca excede el límite que especifique. Pero se requieren más pasos para configurarlo y usa la RAM de manera menos eficiente.
Usando el módulo kernel brd (/ dev / ram0)
Para crear e inicializar un disco RAM de 4GB:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
El rd_nr
parámetro especifica cuántos discos RAM crear (de forma predeterminada, crea 16, es decir, /dev/ram0
hasta /dev/ram15
). El rd_size
parámetro es el tamaño en kilobytes . La $(( ... ))
sintaxis le permite hacer aritmética en el shell.
Para desasignar el disco RAM, desmóntelo y retire el brd
módulo del núcleo:
umount /ramdisk
modprobe -r brd
Crear un dispositivo de bloque dentro ramfs
Alternativamente, puede crear un dispositivo de bloque dentro 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
El truncate
comando crea un archivo vacío de un tamaño determinado de modo que se inicializa (es decir, consume memoria) a pedido.
Para desasignar el disco RAM, desmóntelo y elimine la imagen del disco:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Comparación con tmpfs
yramfs
Aunque tmpfs
y ramfs
son más eficientes que usar un dispositivo de bloque, a continuación se detallan algunos de sus inconvenientes.
tmpfs
puede cambiar al disco. Esto es más eficiente, pero puede haber ocasiones en que desee un disco RAM puro:
- Los archivos con los que está trabajando son confidenciales (por ejemplo, archivos de una partición cifrada).
- Está realizando pruebas de rendimiento y no desea que la E / S de disco sea un factor (los tiempos de escritura de SSD pueden variar mucho).
- Está desempacando un archivo grande y no desea desgastar su SSD.
ramfs
es fácil de configurar, recupera espacio una vez que elimina los archivos y usa la RAM de manera más eficiente (el sistema no almacena los archivos en el búfer porque sabe que están en la RAM). Pero tiene sus propios inconvenientes y sorpresas:
La df
utilidad no informa el uso del espacio:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
No hay parámetro de límite de tamaño. Si coloca demasiado en el disco RAM, su sistema se bloqueará.
Los archivos dispersos pueden volverse dispersos cuando menos lo esperas. Esta mañana, copié una imagen de VM (150G, pero 49G utilizada en el disco) a ramfs
(tengo 128G de RAM). Eso funciono. Pero cuando he copiado desde el ramfs
hasta el destino, mi sistema dejó de responder. La cp
utilidad aparentemente llenó los agujeros en la lectura , pero no en la escritura.
Ambos tmpfs
y ramfs
pueden comportarse de manera diferente a un ext4
sistema de archivos real . La creación de un dispositivo de bloque en la memoria RAM y la inicialización con ext4
evita esto.
Para una comparación más profunda: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs