Tiempo de compilación del kernel

Tiempo de compilación del kernel

Al usar Linux, cuando inicio, automáticamente tengo 16 discos RAM de 16 MB; sin embargo, me gustaría crear un disco RAM realmente grande para probar algún software.

Descubrí que puedo ajustar el tamaño de los discos ram que ya están en el sistema con el parámetro de arranque del kernel; ramdisk_sizesin embargo, esto hace que los 16 discos ram (/dev/ram0 - /dev/ram15) tengan el tamaño especificado. Entonces, si quiero crear un disco RAM de 1 GB, necesitaría 16 GB de memoria.

Básicamente, quiero crear un disco ram de 10 GB que sería /dev/ram0. ¿Cómo haría para hacer eso? Supongo que hay un parámetro de arranque del kernel, pero no lo encontré.

Respuesta1

Tiempo de compilación del kernel

Hay dos opciones de configuración del kernel que puede configurar en su .configarchivo:

CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=10485760

Esto configuró mi kernel para crear un disco ram de 10G en el momento del arranque.

Notas:

  • CONFIG_BLK_DEV_RAM_SIZEestá en KB.
  • No especifique más memoria de la que realmente tiene RAM en su computadora.
  • Busque menuconfigen Controladores de dispositivo->Bloquear dispositivos.

Tiempo de arranque

Puede especificar el tamaño de los discos RAM que cree mediante el parámetro de arranque del kernel ramdisk_size. Por ejemplo:

kernel /vmlinuz-2.6.32.24 ro root=LABEL=/ rhgb quiet ramdisk_size=10485760

Ahora puedo arrancar mi máquina y crear un sistema de archivos en ella, montarla y usarla exactamente como un dispositivo de bloque.

# mkfs.xfs /dev/ram0
# mount /dev/ram0 /mnt/ramdisk

Fuentes:

  1. http://www.vanemery.com/Linux/Ramdisk/ramdisk.html[muerto]
  2. https://www.kernel.org/doc/Documentation/blockdev/ramdisk.txt

Respuesta2

Deberías usartmpfspor eso en su lugar.

mount -t tmpfs -o size=10g none /mnt/point

Respuesta3

Para crear un disco RAM grande después del arranque sin alterar los parámetros del kernel. Use tmpfs, cree un archivo, móntelo mediante un bucle y móntelo mediante un sistema de archivos:

mount -t tmpfs -o size=200M tmpfs temp/
cd temp/
dd if=/dev/zero of=disk.img bs=1M count=199
losetup /dev/loop0 disk.img
mkfs.ext4 /dev/loop0
cd ..
mount /dev/loop0 temp2/

Probablemente una pequeña penalización en el rendimiento al atravesar múltiples capas diferentes... pero al menos funciona.

Respuesta4

El objetivo de un ramdrive es la velocidad. Tmpfs no es un disco. Los dispositivos de bucle no son unidades, pero puede colocar una imagen de unidad en un dispositivo de bucle. Los discos RAM "son" unidades y unidades muy rápidas. Intenta ejecutar:

hdparm -t /dev/sda 

y luego:

hdparm -t /dev/ram0

¡Verás lo que quiero decir! Pero hdparm a veces destruye la unidad ram. Entonces tienes que hacerlo de nuevo.

A veces no hay dispositivos /dev/ram. Para hacer uno:

mknod -m 0777 /dev/ram0 b 1 0 

pero no tendrá ningún tamaño. Para darle tamaño:

dd if=/dev/zero of=/dev/ram0

y se detendrá cuando la unidad esté llena. El tamaño máximo está determinado por el parámetro de configuración del kernel: CONFIG_BLK_DEV_RAM_SIZE.

Luego, simplemente formatéelo, es decir

mke2fs /dev/ram0

Y montarlo:

mount /dev/ram0 /mnt/ramdrive

Uno de mis favoritos es el código de depuración almacenado en una memoria RAM. Las compilaciones tienen al menos 10 veces la velocidad del código almacenado en un disco duro. Las tablas de bases de datos almacenadas en ramdrive también vuelan, pero debe tener un script que escriba en el disco duro periódicamente. La mayoría de los administradores no tienen las agallas para poner datos en discos RAM. Y algunas mesas son demasiado grandes.

información relacionada