Estoy considerando migrar de ext3 a ZFS para el almacenamiento de datos en mi host Debian Linux, usando ZFS en Linux . Una característica increíble de ZFS que realmente quiero es sus garantías de integridad de datos. La capacidad de hacer crecer trivialmente el almacenamiento a medida que aumentan mis necesidades de almacenamiento también es algo que espero con ansias.
Sin embargo, también ejecuto algunas máquinas virtuales en el mismo host. (Aunque normalmente, en mi caso, solo se ejecuta una VM en el host al mismo tiempo)
Teniendo en cuenta el comportamiento de la suma de comprobación de datos y la copia en escritura de ZFS, junto con el hecho de que las imágenes de disco de VM son archivos comparativamente grandes (el archivo de imagen de disco de mi VM principal actualmente se encuentra en 31 GB), ¿cuáles son las implicaciones de rendimiento dentro del huésped de VM? una migración? ¿Qué pasos puedo tomar para reducir el posible impacto negativo en el rendimiento?
Puedo vivir con menos garantías de integridad de datos en las imágenes de disco de la máquina virtual si es necesario (no hago nada realmente crítico dentro de ninguna de las máquinas virtuales) y puedo separarlas fácilmente del resto del sistema de archivos, pero sería bueno si no No tengo que (incluso selectivamente) desactivar prácticamente la característica que más me hace querer migrar a un sistema de archivos diferente.
El hardware es bastante robusto para un sistema de clase de estación de trabajo, pero no le dará mucha importancia a un servidor de gama alta (32 GB de RAM con raramente> 10 GB en uso, CPU de 6 núcleos a 3,3 GHz, actualmente 2,6 TB utilizables espacio en disco de acuerdo con df
un total de aproximadamente 1.1 TB libre; migrar a ZFS probablemente agregará más espacio libre ) y no planeo ejecutar deduplicación de datos (ya que activar deduplicación simplemente no agregaría mucho en mi situación). El plan es comenzar con una configuración JBOD (obviamente con buenas copias de seguridad), pero eventualmente puedo pasar a una configuración de espejo bidireccional si las condiciones lo justifican.
fuente
Respuestas:
Dado que ZFS funciona a nivel de bloque, el tamaño de los archivos no hace ninguna diferencia. ZFS requiere más memoria y CPU, pero no es inherentemente significativamente más lento como sistema de archivos. Aunque debe tener en cuenta que RAIDZ no es equivalente en velocidad a RAID5. RAID10 está bien donde la velocidad es una prioridad.
fuente
Es probable que ZFS en hardware decente (es decir, buff) sea más rápido que otros sistemas de archivos, es probable que desee crear un ZIL en una ubicación rápida (es decir, SSD). Esto es esencialmente una ubicación para escribir en caché (bueno, más como un diario en ext3 / 4). Esto permite que el cuadro ack escriba como escrito en el disco antes de que los husos reales tengan los datos.
También puede crear un ARC L2 en SSD para leer el caché. Esto es fantástico en un entorno de VM en el que puede poner los discos físicos de rodillas arrancando varias VM al mismo tiempo.
Las unidades van a los VDEV, los VDEV a los zpools (use discos completos a la vez). Si se trata de un sistema más pequeño, es posible que desee tener un único zpool y (si no le preocupa demasiado la pérdida de datos) un solo VDEV. Los VDEV son donde selecciona el nivel RAID (aunque también puede MIRROR VDEV si tiene suficientes discos). El disco más lento en un VDEV determina qué tan rápido es todo el VDEV.
ZFS tiene que ver con la integridad de los datos: la razón por la que muchas de las herramientas tradicionales para el mantenimiento del sistema de archivos no existen (como fsck) es que el problema que resuelven no puede existir en un sistema de archivos ZFS.
En mi opinión, el mayor inconveniente de ZFS es que si sus sistemas de archivos se acercan por completo (digamos 75% +) se vuelve MUY lento. Solo no vayas allí.
fuente
31GB realmente no es grande en absoluto ...
De todos modos, dependiendo del sistema de archivos que esté utilizando actualmente, es posible que ZFS sea un poco más lento, pero dadas las especificaciones de hardware, puede ser insignificante.
Obviamente, ZFS utilizará una buena porción de RAM para el almacenamiento en caché, lo que puede hacer que sus máquinas virtuales parezcan más ágiles en el uso general (cuando no está haciendo una lectura o escritura intensas). No estoy seguro de cómo ZFS está sintonizado en Linux, pero es posible que deba limitar su ARC, si es posible, para evitar que se escape con toda su RAM (ya que querrá un trozo decente para su sistema host y VM).
Permitiría la compresión (el consejo en estos días es activarla a menos que tenga una buena razón para no hacerlo). Recuerde que esto debe hacerse antes de poner datos en el sistema de archivos. La mayoría de las personas se sorprenden al descubrir que en realidad es más rápido, ya que los algoritmos de compresión generalmente se ejecutarán más rápido que el disco IO. Dudo que cause un gran problema de rendimiento con su procesador de 6 núcleos. No esperaba que las máquinas virtuales se comprimieran mucho, pero logré convertir ~ 470 GB de datos de máquinas virtuales en 304 GB solo con la configuración de compresión predeterminada.
No te molestes con la deduplicación, solo volverá para atormentarte más tarde y pasarás semanas barajando datos tratando de deshacerte de ella.
Si encuentra problemas de rendimiento, la respuesta obvia es agregar un SSD como ZIL / L2ARC o incluso ambos. No es ideal usar un dispositivo para ambos, pero lo más probable es que mejore el rendimiento en un grupo que contenga una pequeña cantidad de discos / vdevs.
Para agregar: Realmente trataría de comenzar con una configuración redundante, si es posible (idealmente espejos), o convertirlos en espejos desde una franja lo antes posible. Si bien ZFS comprobará todos los datos y detectará errores sobre la marcha (o durante un exfoliante), no podrá hacer nada al respecto (sin usar copias = 2, lo que duplicará el uso del disco). Simplemente se quedará con él diciéndole que hay errores en los archivos (probablemente sus imágenes de disco de VM) que no podrá hacer mucho sin eliminar y volver a crear esos archivos.
fuente
Dependiendo de sus casos de uso y máquinas virtuales, consideraría lo siguiente. Deje que el sistema operativo host se encargue de los archivos que está almacenando en los volúmenes ZFS.
Si es posible, cree solo un LUN para cada VM, que solo contenga el sistema operativo y los archivos binarios necesarios. Y presente la posición de almacenamiento para datos individuales como recursos compartidos a través de NFS, samba o iSCSI (o zvols como se menciona en los comentarios). ZFS puede realizar un seguimiento de cada archivo con suma de verificación y tiempos de acceso, etc. Por supuesto, si la velocidad no es tan importante, también podría habilitar la compresión en algunos almacenes de datos. El beneficio sería una capa faltante de otro sistema de archivos. Si crea un LUN para el segundo disco duro virtual y crea un sistema de archivos NTFS además de eso, ZFS tiene que manejar un gran blob binario y no conoce ninguno de los contenidos o archivos, y por lo tanto no puede aprovechar el caché ZIL o ARC en de la misma manera que los archivos del avión podrían.
Al mencionar las ACL, ZFS puede usar las ACL a través de NFSv4 o Samba (si está habilitado). Tengo que admitir que uso ZFS en FreeBSD, y no puedo asegurar cómo habilitar el acoplamiento de ACL de Sambas en volúmenes ZFS. Pero estoy seguro de que esto no debería ser un gran problema.
La deduplicación en combinación con un caché de lectura es una gran ventaja cuando se trata de ahorrar algo de espacio y mejorar las lecturas masivas (tormenta de arranque) ya que todas las máquinas virtuales comienzan a leer los mismos bloques.
Lo mismo ocurre con las instantáneas de ZFS para las máquinas virtuales y los almacenes de datos. Puede crear un script de shell simple, para congelar la VM, tomar una instantánea de la VM y el Datastore y continuar trabajando, o solo el Datastore solo, y clonar la VM para presentar la Instantánea de la original y probar algunas cosas.
Las posibilidades son infinitas con ZFS;)
EDITAR: Espero haberlo explicado un poco mejor ahora
EDIT2: Opinión personal: ¡Considere usar un RAIDZ2 (RAID6) ya que puede soportar una falla de doble disco! Si le queda un solo disco de repuesto, nunca estará mal, pero dos fallas de disco deberían ser suficientes para una reparación rápida. Acabo de publicar mi script para monitorear el estado del disco aquí
fuente