¿La diferencia entre initrd y initramfs?
Por lo que sé,initrd
actúa como un dispositivo de bloque, por lo que requiere un controlador de sistema de archivos (comoext2
). El kernel debe tener al menos un módulo incorporado para detectar el sistema de archivos deinitrd
. En este articulo,Presentamos initramfs, un nuevo modelo para discos RAM iniciales, esta escrito que
Pero los ramdisk en realidad desperdician aún más memoria debido al almacenamiento en caché. Linux está diseñado para almacenar en caché todos los archivos y las entradas de directorio leídas o escritas en dispositivos de bloqueo, por lo que Linux copia los datos hacia y desde el disco ram en la "memoria caché de página" (para los datos de archivo), y la "memoria caché dentry" (para las entradas de directorio) . La desventaja del disco ram que pretende ser un dispositivo de bloque es que se trata como un dispositivo de bloque.
Que espage cache
ydentry cache
? En el párrafo, ¿significa que los datos se duplicaron porqueramdisk
¿Se trata como un dispositivo de bloque, por lo que todos los datos se almacenan en caché?
En contraste,ramfs
:
Hace unos años, Linus Torvalds tuvo una buena idea: ¿qué pasaría si la memoria caché de Linux pudiera montarse como un sistema de archivos? ¿Simplemente mantenga los archivos en caché y nunca los elimine hasta que se eliminen o el sistema se reinicie? Linus escribió un pequeño envoltorio alrededor del caché llamado "ramfs", y otros desarrolladores del kernel crearon una versión mejorada llamada "tmpfs" (que puede escribir los datos en un espacio de intercambio y limitar el tamaño de un punto de montaje determinado para que se llene antes de consumir) toda la memoria disponible). Initramfs es una instancia de tmpfs.
Estos sistemas de archivos basados en RAM crecen o se reducen automáticamente para adaptarse al tamaño de los datos que contienen. Agregar archivos a un ramfs (o extender archivos existentes) asigna automáticamente más memoria, y eliminar o truncar archivos libera esa memoria. No hay duplicación entre el dispositivo de bloque y la memoria caché, porque no hay dispositivo de bloque. La copia en el caché es la única copia de los datos. Lo mejor de todo es que este no es un código nuevo, pero una nueva aplicación para el código de almacenamiento en caché de Linux existente, lo que significa que no agrega casi ningún tamaño, es muy simple y se basa en una infraestructura extremadamente bien probada.
En suma,ramfs
es solo un archivo abierto y cargado en la memoria, ¿no es así?
Ambosinitrd
yramfs
están comprimidos en tiempo de compilación, pero la diferencia es,initrd
es un dispositivo de bloque desempaquetado para ser montado por el kernel en el arranque, mientras queramfs
se desempaqueta a través de cpio en la memoria. ¿Estoy en lo correcto? O esramfs
¿Un sistema de archivos muy mínimo?
Finalmente, hasta el día de hoy, lainitrd
La imagen aún se presenta en el último kernel. Sin embargo, es queinitrd
en realidad elramfs
¿Se usa hoy y el nombre es solo para propósitos históricos?