
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_size
sin 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 .config
archivo:
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_SIZE
está en KB.- No especifique más memoria de la que realmente tiene RAM en su computadora.
- Busque
menuconfig
en 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:
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.