![¿JBOD o striping son mejores para muchos archivos pequeños?](https://rvso.com/image/1672308/%C2%BFJBOD%20o%20striping%20son%20mejores%20para%20muchos%20archivos%20peque%C3%B1os%3F.png)
Tengo un servidor en configuración multidisco usandoLVM en LUKSen modo JBOD. Pero me doy cuenta de htop
que el tiempo del kernel en el uso de la CPU es (in)normalmente muy alto, y en iotop
eljbd2/dm-5-8ydmcrypt_write/2Los procesos frecuentemente toman la mayor parte del IO%.
Lo verifiqué fio
y me di cuenta de que el IOPS aleatorio de 4K también está muy por debajo del valor de cada unidad, y mucho menos del conjunto completo de discos LVM. Pensé que al agregar más discos al conjunto JBOD, LVM puede ofrecer accesos a discos individuales en paralelo, así que, por ejemplo, tengo 4 unidades SSD a 600k IOPS cada una, entonces debería poder alcanzar ~4×600k IOPS, pero parece que ese no es el caso
Así que estoy intentando hacer algunos ajustes, posiblemente reconstruyendo el conjunto de unidades desde cero. Dado que se supone que el servidor maneja muchos archivos pequeños de aproximadamente 40-80 KB en promedio, creo que JBOD debería ser mejor, porque incluso el tamaño de banda RAID0 predeterminado es más grande que los archivos mismos. Además, si se ejecuta en modo RAID0, cada vez que se lee/escribe un archivo pequeño, se accederá innecesariamente a todas las franjas de todas las unidades.
¿Es correcto mi entendimiento? ¿Cómo puedo mejorar IOPS en este caso? ¿Sería útil cambiar a Btrfs o ZFS y eliminar la capa LVM?
Respuesta1
Actualización: mi respuesta inicial sigue siendo útil, pero al volver a leer veo que estás usando SSD. Esto me hace pensar que estás buscando en el lugar equivocado. Postulo que lo que lo está frenando es el cifrado/descifrado de sus datos. Tal vez puedas intentar mover eso para que se haga en el firmware SSD.
Respuesta inicial -
Esperaría que RAID0 le brinde un mejor rendimiento que JBOD, ya que aumenta en gran medida la posibilidad de que los archivos estén en discos diferentes, lo que acelerará las lecturas.
(Supongamos por un momento que la matriz tenía 5 discos del mismo tamaño, y 1/5 de su capacidad estaba llena y no estaba fragmentada; los datos se distribuirían en 5 discos para RAUD0, pero todos en 1 disco en JBOD. Incluso si el disco estuviera lleno (pero razonablemente nrw): todos los archivos más recientes estarían en 1 disco, por lo que las operaciones que solo miran los archivos más recientes estarían nuevamente en solo 1 disco con JBOD)
Si los archivos están en el mismo sector/bloque de disco, todavía no hay ningún beneficio para jbod sobre RAID0. Las ventajas de JBODS son su capacidad para utilizar discos de diferentes tamaños, la capacidad de recuperar datos parcialmente y aumentar el espacio en disco más fácilmente.