Tutoriales

Cómo configurar el tamaño de ZFS ARC en Ubuntu / Debian Linux

W.Si está utilizando Ubuntu, Debian Linux y ZFS, encontrará problemas de tamaño de caché de ZFS. Verá, no todos los servidores Ubuntu o Debian requieren un almacenamiento en caché de archivos agresivo. Algunos servidores actúan como servidores web o ejecutan cargas de trabajo de contenedores de Linux o máquinas virtuales invitadas KVM en las que estas máquinas virtuales invitadas deben administrar su propio almacenamiento en caché. Por lo tanto, sería mejor tener toneladas de RAM ECC para ZFS. Desafortunadamente, no todos los proyectos obtienen este tipo de extravagancia en la vida real. Esta página explica cómo configurar el tamaño de la hoja ZFS en Ubuntu / Debian o cualquier distribución de Linux de su elección. Para que el kernel de Linux no tenga suficiente memoria.

Detalles de las instrucciones
Nivel de dificultad Progresivo
Derechos de root
requisitos Linux con ZFS
Horario de verano europeo. Tiempo de leer 7 minutos

ADVERTENCIA: Las instrucciones que se enumeran a continuación solo funcionan con la distribución de Linux. No funcionará con FreeBSD, FreeNAS o cualquier otro sistema operativo que admita ZFS. Consulte el manual específico de FreeBSD aquí.

¿Qué es ARC en Linux para ZFS?

ZFS es un sistema de archivos avanzado desarrollado originalmente por Sun Microsystems. ARC es un acrónimo de Adaptive Replacement Cache. Es un algoritmo moderno para almacenar datos en caché en DRAM. En otras palabras, ARC no es nada, pero contiene datos en caché como datos del sistema de archivos y metadatos. ZFS intentará utilizar tanta RAM libre como sea posible para acelerar el funcionamiento del servidor.

También hay una caché secundaria llamada L2ARC (caché de reemplazo adaptable de nivel II). ¿Por qué utilizar L2ARC? Saben que la DRAM es cara y limitada en todos los sistemas. Usamos SSD más rápidos o almacenamiento PCIe NVMe para este propósito.

Ejemplos de

Así es como suele verse en un servidor corporativo:

  1. DRAM – ARC – 32 GB
  2. L2ARC – SSD NVMe / SATA – 512 G
  3. Almacenamiento ZFS: varios discos duros reflejados (p. Ej., 16 TB)

Cómo optimizar ARC en Ubuntu / Debian o cualquier distribución de Linux

No existe una fórmula fácil para que todos obtengan el tamaño de ARC correcto. Primero debe averiguar su función de servidor Linux y luego configurar ARC y L2ARC. Este es su trabajo como administrador o desarrollador de sistemas Linux. Para servidores de archivos como CIFS / NFS, podemos usar L2ARC para configurar un ARC grande para acelerar el proceso. Para MySQL / MariaDB / PostgreSQL configuré un pequeño ARC y optimicé el almacenamiento en caché de la base de datos junto con Redis o Memcached. En este ejemplo, mi servidor Ubuntu está ejecutando VM y Docker con solo 16 GB de RAM, y todavía no hay espacio para L2ARC. Basta de cháchara; ensuciemos nuestras manos.

Cómo configurar el tamaño del arco de ZFS en Ubuntu o Debian Linux

Estoy usando un servidor Ubuntu, pero las instrucciones deberían funcionar con cualquier distribución de Linux siempre que ZFS esté instalado y configurado. Establezcamos el tamaño máximo de ARC en 2 GB y el tamaño mínimo en 1 GB Bytes. Mi objetivo principal al utilizar ZFS es realizar instantáneas, clones y copias de seguridad más rápidos para LXD y otras máquinas virtuales. Así que establezco los límites de la siguiente manera, pero su millaje puede variar.

Los límites deben especificarse en bytes y no en GB / MB o cualquier otra unidad

Paso 1: cree un nuevo archivo zfs.conf

sudo vim /etc/modprobe.d/zfs.conf
Con un editor de texto como el comando vim o nano, cree un nuevo archivo llamado zfs.conf de la siguiente manera.

# Setting up ZFS ARC size on Ubuntu as per our needs
# Set Max ARC size => 2GB == 2147483648 Bytes
options zfs zfs_arc_min=2147483648
 
# Set Min ARC size => 1GB == 1073741824
options zfs zfs_arc_max=1073741824

Guarde y cierre el archivo presionando Esc +: x! al usar vim.

Paso 2: actualiza un initramfs existente para el kernel de Linux

Pero hay un paso más antes de reiniciar la caja. Necesita generar una imagen initramfs. Así es como funciona en Debian o Ubuntu Linux:
sudo update-initramfs -u -k all

[sudo] password for vivek: 
update-initramfs: Generating /boot/initrd.img-5.4.0-80-generic
update-initramfs: Generating /boot/initrd.img-5.4.0-77-generic
update-initramfs: Generating /boot/initrd.img-5.4.0-25-generic

Paso 3: reinicia el servidor Linux

Esta configuración solo funciona después de que haya reiniciado su caja de Linux. Por lo tanto, reinicie el servidor Linux con el comando reboot / shutdown o systemctl
sudo reboot
## OR ##
sudo systemctl reboot

Paso 4: verifique que el tamaño correcto de ZFS ARC esté configurado en Linux

Todo lo que tienes que hacer es ingresar el comando cat de esta manera:

cat /sys/module/zfs/parameters/zfs_arc_min
cat /sys/module/zfs/parameters/zfs_arc_max

Paso 5: encontrar las estadísticas de Arc en Linux

Solo ingrese:
$ arcstat
Esto es lo que veo:

    time  read  miss  miss%  dmis  dm%  pmis  pm%  mmis  mm%  arcsz     c  
09:30:15     0     0      0     0    0     0    0     0    0   3.9G  7.8G

Ejecute el siguiente comando arc_summary junto con el comando more para obtener un informe detallado del subsistema ZFS:
arc_summary | more
arc_summary -d | more

Resumir

Ha aprendido a controlar el tamaño de ZFS ARC en Ubuntu, Debian y otras distribuciones de Linux según sus necesidades. Le recomiendo encarecidamente que lea libros de ZFS que expliquen todas estas cosas en detalle.



Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba