ZFS

Configuración de la caché de ZFS para E / S de alta velocidad

Configuración de la caché de ZFS para E / S de alta velocidad

Configuración de caché en su grupo de ZFS

Si ha revisado nuestras publicaciones anteriores sobre los conceptos básicos de ZFS, ya sabe que este es un sistema de archivos sólido. Realiza sumas de verificación en cada bloque de datos que se escriben en el disco y los metadatos importantes, como las sumas de verificación en sí, se escriben en varios lugares diferentes. ZFS puede perder sus datos, pero está garantizado que nunca le devolverá datos incorrectos, como si fueran los correctos.

La mayor parte de la redundancia de un grupo de ZFS proviene de los VDEV subyacentes. Lo mismo ocurre con el rendimiento del grupo de almacenamiento. Tanto el rendimiento de lectura como de escritura pueden mejorar enormemente mediante la adición de dispositivos SSD o NVMe de alta velocidad. Si ha utilizado discos híbridos en los que un SSD y un disco giratorio están empaquetados como una sola pieza de hardware, entonces sabe qué tan malos son los mecanismos de almacenamiento en caché a nivel de hardware. ZFS no es nada como esto, debido a varios factores, que exploraremos aquí.

Hay dos cachés diferentes que un grupo puede utilizar:

  1. ZFS Intent Log, o ZIL, para almacenar en búfer las operaciones de ESCRITURA.
  2. ARC y L2ARC que están destinados a operaciones READ.

Escrituras sincrónicas vs asincrónicas

ZFS, como la mayoría de los otros sistemas de archivos, intenta mantener un búfer de operaciones de escritura en la memoria y luego escribirlo en los discos en lugar de escribirlo directamente en los discos. Esto se conoce como asincrónico escribir y ofrece ganancias de rendimiento decentes para aplicaciones que son tolerantes a fallas o donde la pérdida de datos no causa mucho daño. El sistema operativo simplemente almacena los datos en la memoria y le dice a la aplicación, que solicitó la escritura, que la escritura se completó. Este es el comportamiento predeterminado de muchos sistemas operativos, incluso cuando se ejecuta ZFS.

Sin embargo, el hecho es que en caso de falla del sistema o pérdida de energía, se pierden todas las escrituras almacenadas en el búfer en la memoria principal. Por lo tanto, las aplicaciones que desean coherencia sobre el rendimiento pueden abrir archivos en sincrónico modo y luego los datos solo se consideran escritos una vez que están realmente en el disco. La mayoría de las bases de datos y aplicaciones como NFS se basan en escrituras síncronas todo el tiempo.

Puedes poner la bandera: sync = siempre para hacer que las escrituras sincrónicas sean el comportamiento predeterminado para cualquier conjunto de datos dado.

$ zfs set sync = siempre mypool / dataset1

Por supuesto, es posible que desee tener un buen rendimiento independientemente de si los archivos están en modo síncrono o no. Ahí es donde ZIL entra en escena.


ZFS Intent Log (ZIL) y dispositivos SLOG

El registro de intenciones de ZFS hace referencia a una parte de su grupo de almacenamiento que ZFS utiliza para almacenar datos nuevos o modificados primero, antes de distribuirlos por el grupo de almacenamiento principal, eliminando todos los VDEV.

De forma predeterminada, siempre se extrae una pequeña cantidad de almacenamiento del grupo para actuar como ZIL, incluso cuando está utilizando solo un montón de discos giratorios para su almacenamiento. Sin embargo, puede hacerlo mejor si tiene un NVMe pequeño o cualquier otro tipo de SSD a su disposición.

El almacenamiento pequeño y rápido se puede usar como un registro de intención separado (o SLOG), que es donde los datos recién llegados se almacenarían temporalmente antes de descargarse al almacenamiento principal más grande del grupo. Para agregar un dispositivo slog, ejecute el comando:

$ zpool agregar registro del tanque ada3

Dónde tanque es el nombre de tu piscina, Iniciar sesión es la palabra clave que le dice a ZFS que trate el dispositivo ada3 como dispositivo SLOG. El nodo del dispositivo de su SSD puede no ser necesariamente ada3, use el nombre de nodo correcto.

Ahora puede verificar los dispositivos en su grupo como se muestra a continuación:

Es posible que aún le preocupe que los datos en una memoria no volátil fallen, si falla la SSD. En ese caso, puede utilizar varios SSD que se reflejen entre sí o en cualquier configuración RAIDZ.

$ zpool agregar espejo de registro del tanque ada3 ada4

Para la mayoría de los casos de uso, los pequeños de 16 GB a 64 GB de almacenamiento flash realmente rápido y duradero son los candidatos más adecuados para un dispositivo SLOG.


Caché de reemplazo adaptable (ARC) y L2ARC

Al intentar almacenar en caché las operaciones de lectura, nuestro objetivo cambia. En lugar de asegurarnos de obtener un buen rendimiento, así como transacciones confiables, ahora el motivo de ZFS cambia a predecir el futuro. Esto significa, almacenar en caché la información que una aplicación requeriría en un futuro cercano, mientras descarta las que se necesitarán más adelante en el tiempo.

Para hacer esto, una parte de la memoria principal se usa para almacenar en caché los datos que se usaron recientemente o se accede a los datos con mayor frecuencia. De ahí proviene el término caché de reemplazo adaptable (ARC). Además del almacenamiento en caché de lectura tradicional, donde solo se almacenan en caché los objetos utilizados más recientemente, el ARC también presta atención a la frecuencia con la que se ha accedido a los datos.

L2ARC, o ARC de nivel 2, es una extensión de ARC. Si tiene un dispositivo de almacenamiento dedicado para actuar como su L2ARC, almacenará todos los datos que no son demasiado importantes para permanecer en el ARC, pero al mismo tiempo esos datos son lo suficientemente útiles como para merecer un lugar en la memoria más lenta. Dispositivo NVMe.

Para agregar un dispositivo como L2ARC a su grupo ZFS, ejecute el comando:

$ zpool agregar caché de tanque ada3

Dónde tanque es el nombre de su piscina y ada3 es el nombre del nodo del dispositivo para su almacenamiento L2ARC.


Resumen

Para abreviar, un sistema operativo a menudo almacena en búfer las operaciones de escritura en la memoria principal, si los archivos se abren en modo asincrónico. Esto no debe confundirse con la caché de escritura real de ZFS, ZIL.

ZIL, de forma predeterminada, es parte del almacenamiento no volátil del grupo donde los datos se almacenan temporalmente antes de que se distribuyan correctamente en todos los VDEV. Si usa un SSD como dispositivo ZIL dedicado, se lo conoce como SLOG. Como cualquier VDEV, SLOG puede estar en configuración espejo o raidz.

La caché de lectura, almacenada en la memoria principal, se conoce como ARC. Sin embargo, debido al tamaño limitado de la RAM, siempre puede agregar una SSD como L2ARC, donde las cosas que no caben en la RAM se almacenan en caché.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...