Quiero crear un ramdisk de Linux de tamaño fijo que nunca se cambie al disco. Tenga en cuenta que mi pregunta no es "por qué" quiero hacer esto (digamos, por ejemplo, que es con un propósito educativo o para la investigación): la pregunta es cómo hacerlo.
Según tengo entendido ramfs
, no puede tener un tamaño limitado, por lo que no se ajusta a mi requisito de tener un disco RAM de tamaño fijo.
También parece que se tmpfs
puede cambiar al disco. Por lo tanto, no se ajusta a mi requisito de nunca cambiar a disco.
¿Cómo se puede crear un disco RAM de Linux de tamaño fijo que nunca se cambie al disco?
¿Es posible, por ejemplo, crear tmpfs
dentro de un ramfs
(tal solución encajaría con mis requisitos) y, de ser así, ¿cómo?
Tenga en cuenta que el rendimiento no es un problema y que el disco RAM se llena y desencadena errores de "disco lleno" tampoco es un problema.
fuente
ram
dispositivodev
. Si no, inténtalomodprobe rd
.Respuestas:
Esto es solo un pensamiento y tiene más de un inconveniente, pero podría ser lo suficientemente útil de todos modos.
¿Qué tal crear un archivo de imagen y un sistema de archivos dentro de él encima de ramfs, luego montar la imagen como un dispositivo de bucle? De esa manera, podría limitar el tamaño de ramdisk simplemente limitando el tamaño del archivo de imagen. Por ejemplo:
En el ejemplo (algo demasiado largo) anterior, el archivo de imagen se crea para tener 2 megabytes y cuando se intenta escribir más de 2 megabytes en él, la escritura simplemente falla porque el sistema de archivos está lleno.
Una reducción obvia de todo esto es, por supuesto, que hay mucha complejidad adicional, pero al menos para fines académicos esto debería ser suficiente.
fuente
El libro (¡fechado!) "Controladores de dispositivos Linux" de Corbet, Rubini y Kroah-Hartman tiene un controlador de ejemplo que simplemente asigna un área de memoria fija para perder el tiempo. No es un sistema de archivos, pero ...
fuente
No se puede hacer. Toda la RAM está sujeta a paginación tanto por el diseño del hardware de la CPU como por el diseño del microkernel de Linux. NO hay razones legítimas para tratar la memoria de otra manera. TODOS los algoritmos de software PUEDEN adaptarse para utilizar el esquema de almacenamiento en caché de archivos y la memoria paginada. Virtual es SIEMPRE mejor y más eficiente.
Los discos RAM de tamaño limitado van en contra de los principios básicos del mundo virtual. Debe suponer que solo se realizan solicitudes de archivos útiles al sistema de archivos host y que todas esas solicitudes tienen la misma importancia y prioridad en el mundo virtual (el único modelo que cuenta).
Se ha demostrado matemáticamente que incluso los procesos en tiempo real se ajustan a esta regla. Si tiene un problema de velocidad, NUNCA PUEDE resolverse usando RAM como almacenamiento == todo el sistema host necesita operar más rápido desde la CPU al bus de E / S al dispositivo de almacenamiento permanente. Todos los problemas de computación, excepto los degenerados artificiales, tienen suficientes ramas y requisitos de E / S de archivos para que el aumento de la velocidad promedio del almacenamiento en caché de RAM sea lo mejor que puede hacer.
fuente
mlock()
,mlock2()
ymlockall()
bloquea parte o la totalidad del espacio de direcciones virtuales del proceso de llamada en la RAM, evitando que esa memoria se localice en el área de intercambio".