¿Es una buena idea particionar horizontalmente grupos de discos en diferentes dispositivos virtuales ZFS?

¿Es una buena idea particionar horizontalmente grupos de discos en diferentes dispositivos virtuales ZFS?
 ---------------------------  +-------+ --------
                              |       |
                              | part  | vdev 1
                              |       | no redundancy
 ------------------ +-------+ +-------+ --------
                    |       | |       | vdev 2
                    | part  | | part  | mirroring
                    |       | |       | (2 mirrors)
 -------- +-------+ +-------+ +-------+ --------
          |       | |       | |       | vdev 3
          | part  | | part  | | part  | mirroring
          |       | |       | |       | (3 mirrors)
+-------+ +-------+ +-------+ +-------+ --------
|       | |       | |       | |       | vdev 4
| part  | | part  | | part  | | part  | raidz2
|       | |       | |       | |       | 
+-------+ +-------+ +-------+ +-------+ -------
   Disk      Disk      Disk      Disk
   1TB       2TB       3TB       4TB

Digamos que tengo un montón de discos de diferentes tamaños y quiero particionarlos para utilizar todo el espacio disponible mientras agrego las particiones en vdevs con diferentes grados de redundancia.

Estoy pensando en una estructura en forma de escalera como la que se muestra arriba.

Cada disco 1 a 4 se divide en 1, 2, 3 o 4 particiones respectivamente, de 1 TB de tamaño. Cada disco se comparte entre 1,2,3 o 4 vdev respectivamente.

  • vdev 1 está dedicado a datos no críticos (sin redundancia)
  • vdev 2 contiene datos que se duplican una vez
  • vdev 3 contiene datos críticos, que se duplican dos veces mediante 3 espejos
  • vdev 4 contiene datos críticos, que se duplican dos veces, utilizando doble paridad. Esto debería tener la misma confiabilidad que vdev 3 pero ahorra más espacio.

Dado que no tengo una idea clara de cómo ZFS distribuye los datos internamente, me pregunto si dividir un disco entre varios vdevs sería una práctica común o una tontería en cuanto a rendimiento y robustez.

Respuesta1

El rendimiento será atroz en el momento en que acceda a más de uno de esos grupos simultáneamente.

La duplicación de 3 vías es algo de lo que probablemente no obtendrá muchos beneficios, aparte de desperdiciar espacio en el disco.

RAIDZn tiene un rendimiento de IOPS aproximado de un solo disco.

En términos de robustez, tenga cuidado porque perder cualquier unidad, excepto la más pequeña, degradará varios grupos. El estado degradado conlleva un impacto en el rendimiento.

Considere también sus gastos generales. Tiene 10 TB de discos pero 5 TB de espacio utilizable, de los cuales 1 TB no tiene redundancia.

Probablemente estaría mejor con un arreglo en el que tenga dos grupos, un 2+3 y un 4+1 y use sanoid/syncoid para tomar instantáneas regularmente (cada hora) y transferir los datos del grupo principal del grupo 2+3 al 4+. 1 piscina de respaldo. Eso todavía le brinda 5 TB de espacio utilizable, todo el cual está respaldado, con una configuración mucho menos retorcida.

información relacionada