Todavía soy nuevo en ZFS. He estado usando Nexenta pero estoy pensando en cambiarme a OpenIndiana o Solaris 11 Express. En este momento, estoy en un punto de considerar la virtualización del servidor ZFS como invitado dentro de ESXi, Hyper-V o XenServer (aún no he decidido cuál, me estoy inclinando hacia ESXi para VMDirectPath y soporte de FreeBSD).
La razón principal es que parece que tengo suficientes recursos para todos y que fácilmente podría tener otras 1-3 máquinas virtuales ejecutándose simultáneamente. Principalmente Windows Server. Tal vez una VM Linux / BSD también. Me gustaría que el servidor ZFS virtualizado aloje todos los datos para las otras máquinas virtuales para que sus datos puedan mantenerse en discos físicamente separados de los discos ZFS (montar como iscsi o nfs).
El servidor actualmente tiene un AMD Phenom II con 6 núcleos totales (2 desbloqueados), 16 GB de RAM (máximo) y un HBA LSI SAS 1068E con (7) discos SATA II de 1 TB conectados (planeando en RAIDZ2 con repuesto dinámico). También tengo (4) SSD SATA II de 32 GB conectados a la placa base. Espero duplicar dos de los SSD en un espejo de arranque (para el host virtual) y dejar los otros dos SSD para ZIL y L2ARC (para el invitado ZFS VM). Estoy dispuesto a agregar dos discos más para almacenar los invitados de VM y asignar los siete discos actuales como almacenamiento ZFS. Nota: La placa base no es compatible con IOMMU ya que el 880G no es compatible, pero tengo una placa 890FX que tiene IOMMU si hace una gran diferencia.
Mis preguntas son:
1) ¿Es sabio hacer esto? Obviamente no veo ningún inconveniente (lo que me hace preguntarme por qué nadie más lo ha mencionado). Siento que podría estar haciendo un gran descuido y odiaría comprometerme con esto, mover todos mis datos solo para volverme loco por algunos detalles que me perdí.
2) rendimiento de invitado virtual ZFS? Estoy dispuesto a tener un pequeño impacto en el rendimiento, pero creo que si el invitado de VM tiene acceso completo al disco a los discos, como mínimo, el rendimiento de E / S del disco será insignificante (en comparación con la ejecución de ZFS no virtualizado) . ¿Alguien puede hablar de esto desde la experiencia de hospedar un servidor ZFS como invitado de VM?
Respuestas:
He creado varias de estas configuraciones de almacenamiento ZFS "todo en uno". Inicialmente inspirado por las excelentes publicaciones en Ubiquitous Talk , mi solución adopta un enfoque ligeramente diferente al diseño del hardware, pero produce el resultado del almacenamiento ZFS virtualizado encapsulado.
Para responder tu pregunta:
Determinar si este es un enfoque inteligente realmente depende de sus objetivos. ¿Qué está tratando de lograr? Si tiene una tecnología (ZFS) y está buscando una aplicación para ella, entonces esta es una mala idea. Es mejor usar un controlador RAID de hardware adecuado y ejecutar sus máquinas virtuales en una partición VMFS local. Es el camino de menor resistencia. Sin embargo, si tiene una razón específica para querer usar ZFS (replicación, compresión, seguridad de datos, portabilidad, etc.), definitivamente esto es posible si está dispuesto a esforzarse.
El rendimiento depende en gran medida de su diseño, independientemente de si está ejecutando en metal desnudo o virtual. Usar PCI-passthrough (o AMD IOMMU en su caso) es esencial, ya que estaría proporcionando su acceso directo ZFS VM a un controlador de almacenamiento SAS y discos. Mientras su VM tenga asignada una cantidad adecuada de recursos de RAM y CPU, el rendimiento es casi nativo. Por supuesto, el diseño de su piscina es importante. Considere los espejos versus RAID Z2. ZFS escala en vdevs y no en la cantidad de discos .
Mi plataforma es VMWare ESXi 5 y mi sistema operativo preferido compatible con ZFS es NexentaStor Community Edition .
Este es mi servidor de
casa. Es un HP ProLiant DL370 G6 con ESXi desde una tarjeta SD interna. Los dos discos duplicados de 72GB en el centro están vinculados al controlador interno Smart Array P410 RAID y forman un volumen VMFS. Ese volumen contiene una VM NexentaStor. Recuerde que la máquina virtual ZFS necesita vivir en algún lugar con almacenamiento estable.Hay un controlador SAS LSI 9211-8i conectado a la caja de la unidad que aloja seis discos SATA de 1 TB a la derecha. Se pasa a la máquina virtual NexentaStor, lo que permite que Nexenta vea los discos como una configuración RAID 1 + 0. Los discos son unidades WD10EARS Western Digital Green de el-cheapo alineadas correctamente con un
zpool
binario modificado .No estoy usando un dispositivo ZIL o cualquier caché L2ARC en esta instalación.
La VM tiene 6 GB de RAM y 2 vCPU asignadas. En ESXi, si utiliza el paso de PCI, se creará una reserva de memoria para la cantidad total de RAM asignada de la VM.
Le doy a NexentaStor VM dos interfaces de red. Uno es para la gestión del tráfico. El otro es parte de un vSwitch separado y tiene una interfaz vmkernel (sin un enlace ascendente externo). Esto permite que la VM proporcione almacenamiento NFS montable por ESXi a través de una red privada. Puede agregar fácilmente una interfaz de enlace ascendente para proporcionar acceso a hosts externos.
Instale sus nuevas máquinas virtuales en el almacén de datos exportado por ZFS. Asegúrese de establecer los parámetros de "Inicio / apagado de la máquina virtual" en ESXi. Desea que la VM de almacenamiento se inicie antes que los sistemas invitados y se apague por última vez.
Aquí están los resultados de bonnie ++ y iozone de una ejecución directamente en la VM NexentaStor. La compresión ZFS está desactivada para que la prueba muestre números más identificables, pero en la práctica, la compresión predeterminada ZFS (no gzip) siempre debe estar habilitada.
# bonnie++ -u root -n 64:100000:16:64
# iozone -t1 -i0 -i1 -i2 -r1m -s12g
Este es un gráfico NexentaStor DTrace que muestra las IOPS de la VM de almacenamiento y las tasas de transferencia durante la ejecución de la prueba. 4000 IOPS y más de 400 Megabytes / segundo es bastante razonable para estos discos de gama baja. (tamaño de bloque grande, sin embargo)
Otras notas.
fuente