# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Cómo utilizar 4GB de RAM o más en CentOS /RHEL / Fedora


Si tienes un equipo con 4GB de RAM o más instalados, y monta un sistema operativo GNU/Linux CentOS/RHEL/Fedora probablemente veas que al mostrar la cantidad de RAM de la que dispone el sistema no llega a mostrar más de 3.3 GB aproximadamente.

Para permitir que nuestro sistema sea compatible con una capacidad de memoria RAM igual o superior a 4GB tenemos que instalar un kernel compilado de forma especial para ello (PAE kernel). La forma de hacerlo es sencilla:

yum install kernel-PAE

Una vez instalado, reiniciamos el sistema y con el comando uname -a comprobamos si ya estamos utilizando el nuevo kernel, y con el comando free verificamos que efectivamente la memoria RAM que detecta el sistema es la correcta.

Xen: Reducir cantidad de memoria reservada para Dom0


Por defecto, creo recordar que Xen reserva 256 MB de memoria RAM para el domain0. Esto puede suponer un problema en equipos con poca memoria. En el caso por ejemplo de querer añadir una máquina virtual con 256 MB en un sistema con 512 MB, es probable que salte un error similar a este:

Error: Error creating domain: I need XX MiB, but dom0_min_mem is XX and
shrinking to XX MiB would leave only XX MiB free.

Bien, no hay problema porque podemos reducir si lo deseamos la memoria reservada para el dom0. En el fichero de configuración xend-config.sxp podemos modificar este parámetro y adecuarlo a nuestras necesidades:

# Dom0 will balloon out when needed to free memory for domU.
# dom0-min-mem is the lowest memory level (in MB) dom0 will get down to.
# If dom0-min-mem=0, dom0 will never balloon out.
(dom0-min-mem 256)

Cambiad 256 por el valor que deseéis y reiniciar xend para reflejar los cambios (ahora mismo desconozco si hay otra forma de hacerlo sin tener que reiniciar el servicio).

Cómo usar 4Gb de RAM o más en Debian


En distribuciones 32-bit de Debian no es posible utilizar más de 3Gb de memoria RAM, la solución más sencilla es instalar desde el gestor de paquetes APT un kernel que sí lo soporta, concretamente el kernel con el sufijo bigmem.

En mi caso estaba utilizando un kernel 2.6 así que instalé el siguiente

linux-image-2.6-686-bigmem
apt-get install linux-image-2.6-686-bigmem

Reiniciamos y solucionado, ya podemos utilizar 4Gb de RAM o más en nuestro sistema.

Fuente: www.debianadmin.com

RamDisk: Cómo usar la memoria RAM para crear un disco virtual


Un RamDisk es básicamente utilizar una parte de la memoria RAM como si fuera un disco duro / partición. El objetivo de esto es conseguir una velocidad de acceso a los datos mucho más rápida. El tiempo de acceso a la memoria RAM es mucho menor que el de un disco duro.

Voy a utilizar/traducir este tutorial, en el que con unos sencillos pasos conseguimos crear discos virtuales o RamDisk.

Vamos a utilizar un sistema Red Hat o derivado con un kernel 2.4.x

Paso 1: Revisar los ramdisks que hay actualmente creados en el sistema:

Por defecto, Red-Hat crea 16 ramdisk, pero no están activos ni utilizan memoria, así que podemos utilizarlos o reconfigurarlos según nuestras necesidades. Podéis revisarlos con el siguiente comando:

[root]# ls -l /dev/ram*
lrwxrwxrwx    1 root     root            4 Jun 12 00:31 /dev/ram -> ram1
brw-rw----    1 root     disk       1,   0 Jan 30  2003 /dev/ram0
brw-rw----    1 root     disk       1,   1 Jan 30  2003 /dev/ram1
brw-rw----    1 root     disk       1,  10 Jan 30  2003 /dev/ram10
brw-rw----    1 root     disk       1,  11 Jan 30  2003 /dev/ram11
brw-rw----    1 root     disk       1,  12 Jan 30  2003 /dev/ram12
brw-rw----    1 root     disk       1,  13 Jan 30  2003 /dev/ram13
brw-rw----    1 root     disk       1,  14 Jan 30  2003 /dev/ram14
brw-rw----    1 root     disk       1,  15 Jan 30  2003 /dev/ram15
brw-rw----    1 root     disk       1,  16 Jan 30  2003 /dev/ram16
brw-rw----    1 root     disk       1,  17 Jan 30  2003 /dev/ram17
brw-rw----    1 root     disk       1,  18 Jan 30  2003 /dev/ram18
brw-rw----    1 root     disk       1,  19 Jan 30  2003 /dev/ram19
brw-rw----    1 root     disk       1,   2 Jan 30  2003 /dev/ram2
brw-rw----    1 root     disk       1,   3 Jan 30  2003 /dev/ram3
brw-rw----    1 root     disk       1,   4 Jan 30  2003 /dev/ram4
brw-rw----    1 root     disk       1,   5 Jan 30  2003 /dev/ram5
brw-rw----    1 root     disk       1,   6 Jan 30  2003 /dev/ram6
brw-rw----    1 root     disk       1,   7 Jan 30  2003 /dev/ram7
brw-rw----    1 root     disk       1,   8 Jan 30  2003 /dev/ram8
brw-rw----    1 root     disk       1,   9 Jan 30  2003 /dev/ram9
lrwxrwxrwx    1 root     root            4 Jun 12 00:31 /dev/ramdisk -> ram0

Para averiguar el tamaño de cada disco (ramdisk) ejecutamos lo siguiente:

[root]# dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
RAMDISK: Compressed image found at block 0

Paso 2: Incrementar el tamaño de cada ramdisk

Según para lo que lo vayáis a usar, 4 Mb puede ser muy poco, así que vamos a cambiar el tamaño de cada uno de estos “discos”, editamos el fichero de configuración del GRUB (/etc/grub.conf) y añadimos a la línea del kernel el tamaño que queremos para cada ramdisk:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda5
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-20.9)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-20.9 ro root=LABEL=/ hdc=ide-scsi ramdisk_size=30000
        initrd /initrd-2.4.20-20.9.img

En este caso queremos cada disco de 30 Mb, es necesario reiniciar para que los cambios surtan efecto, una vez reiniciado, podemos comprobar que efectivamente ha cambiado el tamaño:

[root]# dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 30000K size 1024 blocksize
RAMDISK: Compressed image found at block 0

Paso 3: Formatear el ramdisk a utilizar

Este paso hay que realizarlo para cada ramdisk que queramos utilizar, en este caso solo utilizamos uno, así que lo formateamos el primero (/dev/ram0), por ejemplo como ext2:

[root]# mke2fs -m 0 /dev/ram0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
4000 inodes, 16000 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
2 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks:
        8193

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Paso 4: Crear el punto de montaje y montar el ramdisk

Esta parte es sencilla, creamos el punto de montaje y montamos seguidamente el disco:

[root]# mkdir /mnt/ramdisk
[root]# mount /dev/ram0 /mnt/ramdisk

Haciendo un df o mount podemos verificar que ha sido montado correctamente:

[root]# mount | grep ram0
/dev/ram0 on /mnt/ramdisk type ext2 (rw)
[root]# df -h | grep ram0
/dev/ram0              16M   13K   16M   1% /mnt/ramdisk

Paso 5: Usar el ramdisk

Poco hay que explicar aquí, ya podemos copiar ficheros, borrar, mover, etc al disco.

Paso 6: Automatizar la creación del ramdisk

Hay que recordar que esto es un disco dentro de la memoria RAM, por lo que con cada reinicio todo lo que haya en él se perderá, es recomendable no guardar ahí datos sensibles o que no sean temporales, para automatizar la creación del disco en el arranque podemos añadir las siguientes líneas al fichero /etc/rc.local:

# Formats, mounts, and sets permissions on my 16MB ramdisk
/sbin/mke2fs -q -m 0 /dev/ram0
/bin/mount /dev/ram0 /mnt/ramdisk

Con estos sencillos pasos podemos disfrutar de un disco virtual “ramdisk” en nuestra memoria RAM.