En un sistema con una carga de trabajo intensiva en memoria con picos de carga comunes, una gran memoria de intercambio puede ser útil para almacenar grandes contenidos de memoria que no se necesitan en este momento. Si bien el uso de intercambio en lugar de memoria ciertamente tendrá un gran impacto en el rendimiento, a veces esto es preferible a agregar más memoria a la máquina, ya que el espacio en disco es mucho más económico. A veces simplemente no hay más memoria, tal vez una máquina física que no tiene ranuras libres y no hay módulos de memoria más grandes en el mercado. En otras ocasiones, el rendimiento más lento en picos de carga puede ser preferible a que la aplicación se bloquee con un error de falta de memoria.
En algunos casos, es necesario aumentar la memoria de intercambio, un ejemplo en vivo podría ser expandir la memoria en la máquina y, por lo tanto, expandir el espacio de intercambio para que coincida con el doble del nuevo tamaño de memoria.
En este tutorial aprenderás:
- Cómo comprobar el espacio de intercambio.
- Cómo identificar el volumen de intercambio.
- Cómo ampliar el volumen de intercambio.
- Cómo agregar otro volumen de intercambio.
Comprobación del tamaño y uso del intercambio con el comando gratuito.
Requisitos de software y convenciones utilizadas
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | RHEL 8 / CentOS 8 |
Software | lvm2-2.03.00-0.4, util-linux-2.32.1-6 |
Otro | Acceso privilegiado a su sistema Linux como root o a través de sudo comando. |
Convenciones | # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
Instrucciones paso a paso sobre cómo aumentar el tamaño de intercambio en RHEL 8
En nuestra configuración de laboratorio, la partición de intercambio está en un volumen lógico. Esta es la configuración más común, ya que LVM es una forma muy flexible de manejar el espacio en disco. El tutorial de LVM cubre la arquitectura y el uso del Logical Volume Manager, por lo que no entraremos en detalles al usar lvextend
para aumentar el tamaño del volumen de intercambio. Aumentaremos el intercambio inicial de 1 GB a 2 GB.
- Necesitamos averiguar qué volumen es nuestra partición de intercambio:
# grep swap /etc/fstab
/dev/mapper/rhel_rhel8lab-swap swap swap defaults 0 0
Como los nombres de volumen predeterminados se generan con un nombre de host corto, y mientras creamos un volumen lógico podemos nombrarlo explícitamente, el nombre del volumen variará.
En nuestro ejemplo, tomamos nota del nombre del volumen con la ruta, que es /dev/mapper/rhel_rhel8lab-swap
o /dev/rhel_rhel8lab/swap
. Estos dos nombres para la partición pueden resultar confusos a primera vista, pero si enumeramos ambos, podemos ver que en realidad son enlaces simbólicos que apuntan al mismo dispositivo:
# ls -al /dev/rhel_rhel8lab/swap
lrwxrwxrwx. 1 root root 7 Nov 25 18:35 /dev/rhel_rhel8lab/swap -> ../dm-1
# ls -al /dev/mapper/rhel_rhel8lab-swap
lrwxrwxrwx. 1 root root 7 Nov 25 18:35 /dev/mapper/rhel_rhel8lab-swap -> ../dm-1
Los usaremos indistintamente en los próximos pasos.
-
Necesitamos deshabilitar el intercambio en el volumen mientras trabajamos en él. Usamos el nombre completo del volumen que encontramos en el primer paso.
# swapoff -v /dev/mapper/rhel_rhel8lab-swap
swapoff /dev/mapper/rhel_rhel8lab-swap
ADVERTENCIA
¡No deshabilite el intercambio en un servidor de producción mientras esté bajo carga pesada y esté usando el intercambio en exceso! En tal escenario, agregue otra partición de intercambio en su lugar.
- Para aumentar el tamaño del intercambio, extendemos el volumen lógico que lo contiene. En este ejemplo con un Gigabyte más:
# lvextend -L +1G /dev/rhel_rhel8lab/swap
Size of logical volume rhel_rhel8lab/swap changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
Logical volume rhel_rhel8lab/swap successfully resized.
Tenga en cuenta que debe asegurarse de tener suficiente espacio libre en el grupo de volúmenes que contiene el volumen lógico, como lo haría en cualquier otra extensión de volumen que contenga sistemas de archivos.
- Volvemos a crear el intercambio en el volumen extendido:
# mkswap /dev/mapper/rhel_rhel8lab-swap
mkswap: /dev/mapper/rhel_rhel8lab-swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=defca15e-a5ed-4fe8-bddd-5f11a3c76e80
- Volvemos a activar el intercambio en el volumen de intercambio extendido:
# swapon -v /dev/mapper/rhel_rhel8lab-swap
swapon: /dev/mapper/rhel_rhel8lab-swap: found signature [pagesize=4096, signature=swap]
swapon: /dev/mapper/rhel_rhel8lab-swap: pagesize=4096, swapsize=2147483648, devsize=2147483648
swapon /dev/mapper/rhel_rhel8lab-swap
- Es una buena práctica verificar siempre que la modificación del sistema sea exitosa. En este caso
free -m
(información de la memoria con valores en Megabytes) debería mostrar que tenemos 2 GB de intercambio: # free -m
total used free shared buff/cache available
Mem: 1989 1201 225 17 562 617
Swap: 2047 0 2047
Cómo agregar una nueva partición de intercambio en RHEL 8 instrucciones paso a paso
Cuando deshabilitar el intercambio para aumentar su tamaño no es apropiado, podemos aumentar el intercambio general agregando otro volumen que también sea una partición de intercambio. Cuando hayamos terminado, simplemente se lo damos al sistema, que comenzará a usarlo según sea necesario.
- Creamos un nuevo volumen lógico con
LVM
como lo haríamos si quisiéramos un nuevo volumen que almacene un sistema de archivos: # lvcreate -L 1G -n swap2 rhel_rhel8lab
Logical volume "swap2" created.
En la misma máquina de laboratorio, esto dará como resultado un nombre de ruta completo de la nueva partición como /dev/mapper/rhel_rhel8lab-swap2
, lo mismo que /dev/rhel_rhel8lab/swap2
.
- Cree el intercambio con
mkswap
: # mkswap /dev/rhel_rhel8lab/swap2
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=a319fb8d-18b8-42b7-b6bf-cafb27aaec2b
- Activar intercambio en el nuevo volumen:
# swapon /dev/rhel_rhel8lab/swap2
- Y verifica los resultados:
# free -m
total used free shared buff/cache available
Mem: 1989 1198 153 14 637 623
Swap: 2047 0 2047
- Para que el sistema operativo pueda usar la nueva partición de intercambio después de reiniciar, debemos agregarla a
/etc/fstab
: # grep swap /etc/fstab
/dev/mapper/rhel_rhel8lab-swap swap swap defaults 0 0
/dev/mapper/rhel_rhel8lab-swap2 swap swap defaults 0 0
La diferencia entre los dos métodos se puede delinear comprobando el contenido de /proc/swaps
, donde podemos ver que al agregar otro volumen en lugar de extender el que ya tenemos resultará en dos dispositivos utilizados para el intercambio:
# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -2
/dev/dm-2 partition 1048572 0 -3