ZFS 101: comprensión del almacenamiento y el rendimiento de ZFS

No, no puede comprar discos Ironwolf con el logotipo de OpenZFS, pero, como se garantiza que no contienen SMR, son una opción sólida.

Jim Salter

Fundamentos de almacenamiento

Ver más historias

Ya que todos entramos en el tercer mes de la pandemia de COVID-19 y estamos buscando nuevos proyectos para mantenernos comprometidos (lea: saludables), ¿podemos estar interesados ​​en aprender los conceptos básicos del almacenamiento de computadoras? En silencio esta primavera, ya hemos examinado algunos principios básicos necesarios, como probar la velocidad de sus discos y qué diablos es RAID. En la segunda de estas historias, incluso prometimos un seguimiento explorando el rendimiento de múltiples topologías de múltiples discos en ZFS, el sistema de archivos de próxima generación del que escuchó debido a su apariencia en todas partes, desde Apple hasta Ubuntu.

Bueno, hoy es el día para explorar, lectores de ZFS curiosos. Solo sepa de antemano que, en las discretas palabras del desarrollador de OpenZFS Matt Ahrens, «es realmente complicado».

Pero antes de llegar a los números, ¡y ya están llegando, lo prometo! – para todas las formas en que puede dar forma al valor de ocho discos ZFS, debemos hablar sobre cómo ZFS almacena sus datos en el disco en primer lugar.

Zpools, vdevs y dispositivos

Para comprender realmente ZFS, debe prestar mucha atención a su estructura real. ZFS fusiona la gestión de volúmenes tradicional y las capas del sistema de archivos y utiliza un mecanismo transaccional de copia en escritura, lo que significa que el sistema es muy diferente estructuralmente de los sistemas de archivos convencionales y las matrices RAID. El primer conjunto de bloques de construcción principales para comprender son zpools, vdevsy devices.

zpool

O zpool es la estructura superior de ZFS. Un zpool contiene uno o más vdevs, cada uno de los cuales, a su vez, contiene uno o más devices. Los Zpools son unidades independientes: una computadora física puede tener dos o más zpools separados, pero cada uno es completamente independiente de los demás. Zpools no puede compartir vdevs juntos.

La redundancia ZFS está en el vdev nivel, no el zpool nivel. No hay absolutamente ninguna redundancia en el nivel de zpool, si hay almacenamiento vdev o SPECIAL vdev está perdido, todo el zpool se pierde con eso.

Publicidad

Los zpools modernos pueden sobrevivir a la pérdida de un CACHE o LOG vdev: aunque pueden perder una pequeña cantidad de datos sucios, si pierden uno LOG vdev durante un corte de energía o una falla del sistema.

Es un error común pensar que ZFS «rastrea» la escritura en el grupo, pero esto es inexacto. Un zpool no es un RAID0 de aspecto divertido; es un JBOD de aspecto divertido, con un mecanismo de distribución complejo sujeto a cambios.

En su mayor parte, las grabaciones se distribuyen entre los DVD disponibles de acuerdo con su espacio libre disponible, de modo que teóricamente todos los DVD estarán llenos al mismo tiempo. En las versiones más recientes de ZFS, también se puede considerar el uso de vdev: si un vdev está significativamente más ocupado que otro (por ejemplo, debido a la carga de lectura), se puede omitir temporalmente para escribir, a pesar de tener la mayor proporción de espacio libre disponible.

El mecanismo de reconocimiento de uso integrado en los métodos modernos de distribución de grabación ZFS puede disminuir la latencia y aumentar el rendimiento durante períodos de carga excepcionalmente alta, pero no debe confundirse con carta blanca para mezclar discos oxidados lentos y SSD rápidos en en la misma piscina. Este conjunto incompatible generalmente seguirá funcionando como si estuviera completamente compuesto por el dispositivo más lento presente.

vdev

Cada zpool consta de uno o más vdevs(abreviatura de dispositivo virtual). Cada vdev, a su vez, consta de uno o más reales devices. La mayoría de los vdev se utilizan para un almacenamiento simple, pero también hay varias clases especiales de compatibilidad con vdev, que incluyen CACHE, LOGy SPECIAL. Cada uno de estos tipos de vdev puede ofrecer una de cinco topologías: dispositivo único, RAIDz1, RAIDz2, RAIDz3 o espejo.

RAIDz1, RAIDz2 y RAIDz3 son variedades especiales de lo que las barbas de almacenamiento grises llaman «RAID de paridad diagonal». El 1, 2 y 3 se refieren a cuántos bloques de paridad se asignan a cada rango de datos. En lugar de tener discos completos dedicados a la paridad, RAIDz vdevs distribuye esta paridad casi de manera uniforme entre los discos. Una matriz RAIDz puede perder tantos discos como bloques de paridad; si otro se pierde, falla y toma el zpool abajo con eso.

Los vdev reflejados son exactamente lo que parecen: en un vdev reflejado, cada bloque se almacena en cada dispositivo en el vdev. Aunque dos espejos anchos son los más comunes, un vdev espejo puede contener cualquier número arbitrario de dispositivos; tres formas son comunes en configuraciones más grandes para un mayor rendimiento de lectura y resistencia a fallas. Un vdev espejo puede sobrevivir a cualquier falla, siempre que al menos un dispositivo del vdev permanezca en buen estado.

Los vdevs de un solo dispositivo también son exactamente lo que parecen, y son intrínsecamente peligrosos. Un solo dispositivo vdev no puede sobrevivir a una falla, y si se usa como almacenamiento o SPECIAL vdev, tu falla tomará todos los zpool abajo con eso. Tenga mucho, mucho cuidado aquí.

CACHE, LOGy SPECIAL Los vdevs se pueden crear usando cualquiera de las topologías anteriores, pero recuerde, la pérdida de un SPECIAL vdev significa pérdida del grupo, por lo que se recomienda encarecidamente la topología redundante.