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 | sí |
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:
- DRAM – ARC – 32 GB
- L2ARC – SSD NVMe / SATA – 512 G
- 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 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.