La regla general que uso para el disco IO es:
75 IOP por husillo para SATA.
150 IOP por husillo para FC / SAS
1500 IOP por husillo para SSD.
Además de los IOP por matriz, también considere los IOP por terabyte. No es raro terminar con una relación IOP por TB muy mala si se hace SATA + RAID6. Es posible que esto no suene demasiado, pero a menudo terminará con alguien que ve 'espacio libre' en una matriz y desea usarlo. Es común que las personas compren conciertos e ignoren iops, cuando realmente lo contrario es cierto en la mayoría de los sistemas empresariales.
Luego agregue el costo de penalización por escritura para RAID:
- 2 para RAID1, RAID1 + 0
- 4 para RAID5 (o 4)
- 6 para RAID6.
La penalización de escritura se puede mitigar parcialmente en grandes cachés de escritura grandes y en las circunstancias correctas. Si tiene muchas IO de escritura secuencial (como registros de DB) puede reducir esas penalizaciones de escritura en RAID 5 y 6 de manera bastante significativa. Si puede escribir una franja completa (por ejemplo, un bloque por huso), no tiene que leer para calcular la paridad.
Suponga un conjunto RAID 6 8 + 2. En funcionamiento normal para una sola escritura IO necesita:
- Lea el bloque 'actualizado'.
- Lee el primer bloque de paridad
- Lee el segundo bloque de paridad
- Recalcule la paridad.
- escriba todos los 3. (6 IOs).
Con una escritura de banda completa en caché, por ejemplo, 8 'fragmentos' consecutivos del tamaño de la banda RAID, puede calcular la paridad en todo el lote, sin necesidad de una lectura. Por lo tanto, solo necesita 10 escrituras, una para cada dato y dos paridades.
Esto hace que su penalización de escritura sea 1.2.
También debe tener en cuenta que escribir IO es fácil de almacenar en caché; no necesita tenerlo en el disco de inmediato. Funciona bajo una restricción de tiempo suave: siempre que sus escrituras entrantes en promedio no excedan la velocidad del eje, todo podrá ejecutarse a 'velocidad de caché'.
Read IO, por otro lado, sufre una restricción de tiempo difícil: no puede completar una lectura hasta que se hayan recuperado los datos. Los algoritmos de almacenamiento en caché de lectura y carga de caché se vuelven importantes en ese punto: los patrones de lectura predecibles (por ejemplo, secuenciales, como se obtendrían de la copia de seguridad) se pueden predecir y buscar previamente, pero los patrones de lectura aleatorios no.
Para las bases de datos, generalmente le sugiero que asuma que:
la mayor parte de su 'base de datos' IO es de lectura aleatoria. (por ejemplo, malo para acceso aleatorio). Si puede pagar los gastos generales, RAID1 + 0 es bueno, porque los discos duplicados proporcionan dos fuentes de lecturas.
la mayor parte de su 'log' IO es escritura secuencial. (por ejemplo, bueno para el almacenamiento en caché y, al contrario de lo que sugerirán muchos DBA, probablemente desee RAID50 en lugar de RAID10).
La relación de los dos es difícil es difícil de decir. Depende de lo que haga el DB.
Debido a que IO de lectura aleatoria es el peor de los casos para el almacenamiento en caché, es donde el SSD realmente entra en juego: muchos fabricantes no se molestan en almacenar en caché el SSD porque de todos modos tiene la misma velocidad. Entonces, especialmente para cosas como bases de datos temporales e índices, SSD ofrece un buen retorno de la inversión.