14 votos

Mejora del IO con FlashCache

Tengo un servidor con 2 discos duros (2 de 1 TB), funcionando en RAID 1 (SW-RAID). Quiero mejorar el rendimiento de IO mediante el uso de flashcache . Hay máquinas virtuales KVM en funcionamiento en él, utilizando LVM .

Con respecto a esto, tengo las siguientes preguntas:

  • ¿Funcionará esto? flashcache funciona para los dispositivos de bloque, sin embargo estos son todas las máquinas virtuales con su propia configuración.
  • ¿En qué medida podría aumentar el rendimiento? La mayoría de las máquinas virtuales ejecutan sitios web y algunas alojan juegos.
  • ¿Qué tamaño debe tener el SSD? ¿Tener un SSD más grande aumentaría el rendimiento ya que es capaz de almacenar en caché más archivos?
  • ¿Qué pasa si el SSD muere? ¿Podría flashcache ¿recuperar los archivos del disco duro tradicional y poder sustituir simplemente el SSD?
  • ¿Cuánto más rápido sería writeback sea en comparación con writethrough y writearound ?

Lamentablemente no tengo acceso a un sistema de prueba, por lo que podría instalar flashcache en un servidor en vivo sin desmontar los discos? He encontrado un gran tutorial aquí que yo utilizaría.

0 votos

Creo que disfrutarías de un rendimiento más consistente si pudieras usar SSD's como tus discos principales.

0 votos

¿No tiene acceso a un sistema de pruebas? Todo lo que necesita es una estación de trabajo con un disco duro, un SSD y una máquina virtual con dos discos virtuales (uno en cada dispositivo). Los sistemas de producción no están pensados para ser utilizados como laboratorios de aprendizaje.

0 votos

El enlace está muerto en ese tutorial que mencionas. ¿Hay algún otro lugar donde pueda encontrar esa información?

18voto

sysadmin1138 Puntos 86362

Flashcache, para los que no lo hayan visto antes, es un método para ampliar la caché de bloques de Linux con una unidad SSD. Es más barato que ejecutar un servidor con medio TB de RAM sólo para el almacenamiento en caché.

¿Funcionará esto?

Debería. La caché de bloques de Linux funciona almacenando en caché los accesos bloques no archivos . Siempre que no esté dando a las máquinas KVM acceso directo a los dispositivos de bloque (no lo está haciendo), el Linux Block Cache estará en juego. Sin embargo, si usted son Si se da a las máquinas KVM acceso directo a los dispositivos de bloque, la respuesta es menos clara.

Si estás usando discos virtuales respaldados por archivos, definitivamente funcionará.

Si estás usando discos virtuales respaldados por LV, no lo sé.

¿En qué medida podría aumentar el rendimiento?

Eso es algo que no podemos responder. Depende de varias cosas. En abstracto, obtendrás el mejor rendimiento si dimensionas tu SSD para que sea mayor que el conjunto de bloques activos. Si consigues un almacenamiento en caché perfecto, tu rendimiento será similar al de ejecutar todo tu sistema en SSDs. Lo que efectivamente estarás haciendo.

¿Qué tamaño debe tener el SSD?

Averiguar la talla exacta que necesita es algo en lo que no podemos ayudarle. Más es mejor, obviamente, pero encontrar la proporción exacta entre caché-SSD y almacenamiento primario no es una cuestión sencilla.

Esto se complica con las escrituras configuradas para que se vacíen inmediatamente, como ciertas operaciones del sistema de archivos y algunas configuraciones de bases de datos. Estas escrituras sólo se almacenarán brevemente en la caché, y su rendimiento no se verá afectado en modo alguno por la presencia o ausencia de flashcache.

¿Qué pasa si el SSD muere?

Lo mismo ocurre cuando se le dice a Linux que abandone los cachés, pero con un giro. Con drop-caches, las escrituras que no se hayan vaciado en la caché de bloques se vaciarán en el disco. Lo que sucede cuando el SSD desaparece depende de la modo de caché :

Escribir a través de : Todas las escrituras se escriben en la caché y en el almacenamiento primario en paralelo, por lo que las posibilidades de que una pérdida repentina de SSD provoque errores en las máquinas virtuales son muy pequeñas.

Escriba en : Todas las escrituras se escriben en el almacenamiento primario y sólo se almacenan en caché cuando se leen. No hay posibilidad de errores en las máquinas virtuales.

Recuperación de fondos : Todas las escrituras van primero a la caché y se escriben en el almacenamiento primario en segundo plano. Es lo más probable que cause errores en sus máquinas virtuales si el SSD falla, y yo no usaría este modo en producción.

¿Cuánto más rápido sería el writeback en comparación con el writethrough y el writearound?

Depende de la cantidad de escritura que hagas. Si tus escrituras saturan periódicamente tu almacenamiento primario, el aumento de rendimiento podría ser bastante significativo. Si la mayoría de las veces lees con algo de escritura, probablemente no notarás mejoras.

Además, el writeback es una mala política para lo que estás haciendo así que no lo uses.

1 votos

Hola sysadmin, gracias por tu completa respuesta. No voy a utilizar writeback ya que podría corromper todo sin alguna BBU. Al fin y al cabo no voy a utilizar el SSD-caché sino un SSD normal. ¡Gracias de nuevo!

4voto

Pierre Carrier Puntos 2112

Sí, funcionará bien siempre que utilices los dispositivos de bloque adecuados. Y hay un truco.

Cuando LVM escanea en busca de PVs, debería ver la partición a través del propio disco duro, y también a través del dispositivo "virtual" flashcache.

Un síntoma obvio debe ser que las herramientas LVM se quejan de los PVs duplicados.

La solución, para evitar esas advertencias y, lo que es más importante, asegurarse de que el dispositivo flashcache es utilizado por LVM2, es adaptar el filtro en /etc/lvm/lvm.conf .

El LVM.CONF(5) manpage lo explicará mejor que yo, pero te dejaré un ejemplo, si todo los volúmenes físicos están respaldados por flashcache:

filter = [ "a/.*dm.*/" ]

2voto

James Tuttle Puntos 1

También hay un nivel del creador de los lessfs. Que le permitirá crear dispositivos híbridos entre SSD y HDD. El rendimiento de tier parece superar a Flashcache.

http://www.lessfs.com/wordpress/

http://www.lessfs.com/wordpress/?p=776

/Cristiano

1voto

Ruslan Puntos 111

Algunas aplicaciones abren los archivos de forma no búfer.

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT (Desde Linux 2.4.10) Intenta minimizar los efectos de la caché de la E/S hacia y desde este archivo. En general, esto degradará el rendimiento, pero es útil en situaciones especiales, como cuando las aplicaciones hacen su propia caché. La E/S de archivos se realiza directamente a/desde el usuario. usuario. La flag O_DIRECT por sí sola hace un esfuerzo para transferir datos de forma sincrónica, pero no da la garantías de la flag O_SYNC de que los datos y los metadatos necesarios son transferidos. Para garantizar una E/S sincrónica, O_SYNC debe ser O_SYNC además de O_DIRECT. Ver NOTAS más abajo para una mayor discusión.

Por ejemplo, esto es muy común en las bases de datos. Así que comprueba si flashcache funciona con este conjunto de aplicaciones.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X