Cómo crear una unidad RAM en Linux – CloudSavvy IT

Proyecto Shutterstock / Suncheli

En caso de que se lo pregunte, las unidades de RAM y las instancias de tmpfs no son lo mismo. Este artículo explicará la diferencia y le mostrará cómo crear una unidad RAM en Linux usando la línea de comando. ¡Configure una unidad RAM rápida en minutos!

Que es un Unidad RAM?

Los chips de RAM de su computadora se pueden utilizar para almacenar una unidad virtual. Esta unidad no se almacena en el disco duro sino en la RAM. No solo la velocidad de este disco virtual será significativamente más rápida que la de un disco normal (y especialmente en comparación con un disco giratorio de tipo antiguo, ya que el movimiento físico de las partes dentro de un disco giratorio causa retrasos adicionales), los chips de RAM no se desgastan tan rápido como discos, y de nuevo especialmente y más aún con unidades físicas de tipo más antiguo.

Suena demasiado bueno para ser verdad? Bueno, de hecho hay una salvedad; Si reinicia accidentalmente su computadora, o si falla, todos sus datos desaparecerán. RAM (memoria de acceso aleatorio), los chips de memoria en su computadora, requieren energía constante para retener su información. El almacenamiento de RAM se considera volátil.

En otras palabras, las unidades de RAM se prestan para aplicaciones temporales o para optimizaciones específicas. Por ejemplo, cuando usamos servidores de prueba para probar software, configuramos una unidad RAM para permitir que las muchas pruebas simultáneas sean más rápidas. E incluso si el servidor perdiera energía, no se perdería mucho; simplemente comenzaríamos otra ejecución de prueba.

Otra aplicación es la precarga de datos a los que se accede con frecuencia en una unidad RAM. Por ejemplo, si tiene un servidor que accede constantemente a una determinada base de datos de solo lectura (la lectura y escritura puede ser más compleja si es necesario conservar los datos), que normalmente reside en el disco, entonces puede copiar la base de datos de solo lectura a RAM automáticamente (con algunas secuencias de comandos automatizadas en el inicio del servidor, por ejemplo, o con un trabajo cron), y luego deje que el servidor de la base de datos use esos datos.

En otras palabras, uno puede resumir dos casos de uso principales, uno es el almacenamiento en caché (como nuestro ejemplo de base de datos de R / O), el otro es el almacenamiento de datos «invaluable» (como nuestro ejemplo de prueba). Luego, puede dar un paso más (un tercer caso de uso si lo desea) y sincronizar los datos en el disco a intervalos determinados. Por ejemplo, con el ejemplo de prueba, que también incluye escrituras en el almacenamiento RAM, se podría escribir el resumen y / o los datos de prueba en el disco (almacenamiento permanente) al final de cada prueba completa.

Otra advertencia con las unidades de RAM es que están limitadas al tamaño de la memoria en su sistema y probablemente menos que eso, ya que necesita otra memoria para ejecutar el sistema operativo y otro software.

Dimensionar una unidad RAM a más de, digamos un 80-85% arbitrario de la memoria del sistema, puede estar buscando problemas. Por supuesto, si tiene 256 GB de RAM en su servidor, incluso el 90% asignado para una unidad de RAM dejaría más de 25 GB para el sistema operativo y las aplicaciones. Con solo 4 GB, una asignación del 90% a la RAM dejaría 0,4 GB (400 MB), lo que probablemente cause problemas. Por tanto, depende, hasta cierto punto, cuál es la memoria total de la máquina y cuánto se necesitará para otro software.

Además, una unidad RAM no funciona igual que la asignación / instancia tmpfs.

Unidad RAM vs instancia tmpfs

Un tmpfs también puede almacenarse, pero no tiene por qué estarlo, en los chips de RAM de su computadora. Lo común /dev/shm El mapeo tmpfs configurado automáticamente con la instalación de la mayoría, si no todos los sistemas operativos Linux, es útil pero no funciona igual que una unidad RAM.

La diferencia entre los dos es que una unidad RAM (el término rígido viene a la mente) se almacena al 100% en chips de RAM reales, mientras que tmpfs se almacena en el grupo de memoria del kernel de Linux, que puede incluir cosas como el espacio de intercambio, que se encuentra regularmente en el disco. Si bien el kernel probablemente optimizaría todo el acceso al grupo, aún ofrece la posibilidad de que los datos se escriban en la RAM física o en el DISCO físico. Y, si va al disco, será más lento.

Creando un Unidad RAM

Crear una unidad de RAM es relativamente sencillo. Puede crear un pequeño script llamado ramdrive.sh, con el siguiente código:

#!/bin/bash
if [ "$(mount | grep -o "/mnt/ram")" != "/mnt/ram" ]; then
  sudo mkdir -p /mnt/ram
  sudo mount -t ramfs -o size=1g ramfs /mnt/ram
  sudo chown -R $(whoami):$(whoami) /mnt/ram
fi
mount | grep ram

Y otro guion umount_ram.sh, con el siguiente código:

#!/bin/bash
sudo umount /mnt/ram

Echemos un vistazo al primer guión. Primero, indicamos que queremos Bash como nuestro intérprete de comandos con el símbolo Shebang (#!). Si desea obtener más información sobre Shebang, eche un vistazo a Bash Automation & Scripting Basics, nuestro artículo de 3 partes sobre automatización y scripting de Bash.

Después de esto, comprobamos si ya tenemos una montura debajo. /mnt/ram (el directorio que usaremos para montar nuestra unidad de memoria RAM), usando solo grep (grep -o) de /mnt/ram en la lista completa de ‘montados actualmente’, como se muestra en mount. Si no se encuentra el mismo, procedemos con tres comandos sudo. Los tres requieren sudo, aunque por varias razones.

El primer comando requiere sudo, ya que crea un directorio posiblemente de raíz y al menos en /mnt, que son directorios privilegiados / protegidos. El siguiente comando, nuestro montaje y creación de disco RAM real, requiere sudo ya que el montaje es una operación privilegiada. Establecemos el tamaño en 1GB usando size=1g. También indicamos que queremos una unidad de tipo ramfs (-t ramfs) procedente del dispositivo ramfs (como lo indica el segundo ramfs), y finalmente enumeramos el punto de montaje como /mnt/ram.

En el tercer comando habilitado para sudo, cambiamos el propietario del /mnt/ram directorio (ahora nuestra unidad RAM, nuestro punto de montaje ramfs) al usuario actual y al propio grupo del usuario actual usando el whoami comando dos veces. Es posible que desee cambiar esto al grupo específico y / o específico que usará ramdrive oa un grupo más amplio si más usuarios usarán ramdrive.

Después de esto, finalizamos nuestro condicional if .. fi comando y hacer una llamada final a mount con un grep para ram para asegurarse de que el script informa sobre lo que ya estaba montado en términos de RAM, o lo que se montó justo ahora cuando se ejecutó el script. Esta es una verificación práctica / rápida de que el script fue exitoso cuando se ejecutó.

Nuestro guión secundario, umount_ram.sh, desmonta la unidad basada en RAM con punto de montaje /mnt/ram, es decir, la unidad ramfs que acabamos de crear. ADVERTENCIA: ejecutar esto elimina / borra inmediatamente todos los datos almacenados en la memoria volátil y volver a montar la unidad RAMFS no traerá esto de vuelta; simplemente creará una unidad RAM nueva pero vacía. ¡Tenga cuidado!

Terminando

En este artículo, discutimos las unidades RAM / ramfs (lo mismo) y las instancias / asignaciones tmpfs. Luego creamos una unidad ramfs de 1GB bajo /mnt/ram usando un pequeño script para montar o unidad RAM.

Si desea continuar leyendo en Linux, eche un vistazo a nuestros artículos Grabación de pantalla en Linux con SimpleScreenRecorder o Bits, Bytes y Binary o From 0 to F: Hexadecimal!

¡Disfrutar!

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad