BCACHE y LVM CACHE en Linux
By: Date: enero 17, 2021 Categories: Consultoria y Manuales

Ahora que los discos duros tienen muchísimo espacio a un precio bastante económico tienen el problema de que su almacenamiento es físico, depende de la rotación y la traslación de las agujas de lectura y escritura. Las máximas velocidad las alcanza los SSD pero mientras mas espacio de almacenamiento tienen mas costoso se vuelven.

Intel Optane y los discos híbridos


Intel está usando una especie de NVME para usarlo como CACHE de un disco duro, el mismo funcionamiento que tienen los discos híbridos, pero ambos son mas caros que un disco duro común y corriente y no siempre se pueden ajustar a las necesidades en el caso de Intel optane solo funciona con Windows y no con GNU/Linux

Solución en GNU/Linux

En Linux hay varias soluciones, una ya la incluye ZFS, el problema es que ZFS no es parte del kernel sino un parche para soportarlo. Sin embargo, de forma nativa tenemos 2 soluciones de Linux perfectamente soportadas y que amparas cualquier sistema de archivos

LVM con CACHE

Para ver como se hace con LVM se puede ver este video que hice en mi canal

BCACHE


BCACHE es un modulo del kernel que trata de convertir cualquier dispositivo de bloques en tipo de disco duro hibrido y/o optane se requiere tener un disco duro normal o un RAID ya sea físico o de software y al menos un disco SSD, incluso con tamaños pequeños es suficiente. Mas de 100GB es mas que suficiente. Yo recomendaría tener 250G en SSD para usar una parte de el para la instalación del sistema operativo y el resto para CACHE de un RAID o Disco duro de varios terabytes. Lugar donde podrías meter tu home o tus bases de datos a velocidades muy altas de lectura y escritura, pero a precio bastante económico.

Requerimientos

Instalar las bcache-tools en tu distribución o compilarlas de su condigo fuente si tu distribución no las incluye

Tener una partición en el SSD para hacer la función de CACHE y tener preparado el disco o el RAID a aplicar CACHE

Asumiremos que la partición 3 del /dev/sdb es el SSD y el /dev/md0 es un RAID por software, ni el RAID o cualquier disco duro a ponerle cache deben tener datos en esta configuración pues el dispositivo final será otro, posiblemente un /dev/bcache0

Configuración.

Preparar el MD0

make-bcache -B /dev/md0

El comando anterior generará un dispositivo /dev/bcache0 que estará ligado a /dev/md0

Preparar el SSD como zona de CACHE

make-bcache -C /dev/sdb3

Genera una salida similar al comando con el parámetro -B pero aquí es importante guardar el valor de Set UUID, para este ejemplo ese valor será: ee13ac8c-de91-43a5-ba24-0099f9d0bc8a

Enlazar la zona cache del SSD al RAID

echo “ee13ac8c-de91-43a5-ba24-0099f9d0bc8a” > /sys/block/bcache0/bcache/attach

Configurar el modo writeback, este modo significa que el SSD almacena los bloques escrito en el SSD y cuando el kernel tiene oportunidad los sincroniza con el RAID o cualquier otro disco duro normal, de forma que la escritura y lectura se hace la mayor parte del tiempo en el SSD dando la sensación de que todo los Terabytes de tu arreglo o de tu disco duro son SSD

echo writeback > /sys/block/bcache0/bcache/cache_mode

Configurar el tamaño del bloque a aplicar cache, si el bloque es mayor lo deja pasar directamente al RAID, debido a que los cambios grandes no son tan lentos como los cambios en archivos pequeños, pero se puede configurar del tamaño que se requiera expresándolo en bytes. Por ejemplo, 20MB

echo “20971520” > /sys/block/bcache0/bcache/sequential_cutoff

BCACHE y LVM CACHE en Linux

Usar /dev/bcache0 como sitio de almacenamiento

Darle formato
Mkfs.ext4 /dev/bcache0
Ejemplo de montado
Mount /dev/bcache0 /home

Verificaciones del funcionamiento del CACHE

DirtyBlocks, significa que hay datos en el cache SSD que no han sido escritos al RAID. Cuando cache y RAID/DiscosDuros están sincronizados la respuesta es CLEAN

cat /sys/block/bcache0/bcache/state

Mostrar el estado del CACHE con información para humanos

cache-super-show /dev/sda3

Separar el SSD del /dev/bcache0, usualmente para cambiar el SSD por otro

echo 1 > /sys/block/bcache0/bcache/stop

Actualizando el servidor personal de Last Dragon

3 thoughts on “BCACHE y LVM CACHE en Linux

  1. Usa: Google Chrome Google Chrome 83.0.4103.116 en Windows Windows NT - Detectado...

    Sin es cierto que en linux es posible hacer una cache sobre la unidad de estado sólido de forma nativa, pero esto desvirtúa totalmente la intención de intel de hacer este puente de comunicación entre la unidad de almacenamiento y la ram. Mas allá del sesgo defensor del pinguino.

  2. Usa: Google Chrome Google Chrome 123.0.0.0 en Windows Windows NT - Detectado...

    buenas noches gracias por el tutorial, ya pude realizar todo el proceso satisfactoriamente pero lo realize con los mismo parametros del tutorial, y talvez no sean correctos con los dispositivos que yo tengo instalados, mi pregunta seria que parametros usaria si el hdd fuera de 3tb (2.73) y el ssd de 120gb(111.79) y los parametros que use lso del video son 500m metadata 1.4g cache y 49g datos, tambien me gustaria saber si se pudiera hacer las modificaciones ya hecho todo el procedimiento o tendria que hacerlo desde el principio borrando todo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *