Además tmpfsy ramfs, otra opción es el /dev/ram0dispositivo 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 ext4sistema 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_nrparámetro especifica cuántos discos RAM crear (de forma predeterminada, crea 16, es decir, /dev/ram0hasta /dev/ram15). El rd_sizepará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 brdmó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 truncatecomando 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 tmpfsyramfs
Aunque tmpfsy ramfsson más eficientes que usar un dispositivo de bloque, a continuación se detallan algunos de sus inconvenientes.
tmpfspuede 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.
ramfses 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 dfutilidad 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 ramfshasta el destino, mi sistema dejó de responder. La cputilidad aparentemente llenó los agujeros en la lectura , pero no en la escritura.
Ambos tmpfsy ramfspueden comportarse de manera diferente a un ext4sistema de archivos real . La creación de un dispositivo de bloque en la memoria RAM y la inicialización con ext4evita 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