Saltar a contenido

dm-writeboost

  • https://github.com/akiradeveloper/dm-writeboost

Esta configuración de ejemplo no utiliza DRBD, es solo una configuración simple de dm-writeboost.

Instalación en CentOS 7

DKMS

yum install dkms -y

Módulo DKMS de Writeboost

Clonar repositorio:

git clone https://github.com/akiradeveloper/dm-writeboost
cd dm-writeboost && make && make install

Verificar que DKMS de Writeboost está instalado:

dkms status
lsmod | grep dm_writeboost

Herramientas de Writeboost

git clone https://github.com/akiradeveloper/dm-writeboost-tools
yum install cargo
cargo install
cp /root/.cargo/bin/* /usr/sbin/

Reiniciar y verificar la instalación del módulo

Crear nueva caché Writeboost

wbcreate --reformat --read_cache_threshold=127  --writeback_threshold=80 storage /dev/md0 /dev/nvme0n1
  • storage: nombre del nuevo dispositivo de caché
  • md0: discos lentos
  • nvme0n1: discos rápidos (dispositivo de caché)

Crear writeboosttab y servicio

vi /etc/writeboosttab

## Archivo "tab" (mapeos) de dm-writeboost, ver writeboosttab(5).
##{Nombre objetivo DM}    {dispositivo de bloques en caché ej. HDD}    {dispositivo de bloques de caché ej. SSD}    [opciones]
##
## wb_hdd     /dev/disk/by-uuid/2e8260bc-024c-4252-a695-a73898c974c7     /dev/disk/by-partuuid/43372b68-3407-45fa-9b2f-61afe9c26a68    writeback_threshold=70,sync_data_interval=3600
##
storage     /dev/md0     /dev/nvme0n1    writeback_threshold=80,read_cache_threshold=127

Este es un archivo de unidad systemd de ejemplo de writeboost:

https://gitlab.com/onlyjob/writeboost/blob/master/writeboost.service
systemctl daemon-reload systemctl enable writeboost

DRBD9 sobre Writeboost

Para usar writeboost en una configuración drbd deberíamos crear un dispositivo de caché writeboost en cada nodo drbd y luego usar ese dispositivo de caché como pv para el grupo de volúmenes drbdpool de drbd9. Así drbd9 se ejecutará sobre un dispositivo de caché montado en cada nodo. Y este es el archivo de servicio writeboost modificado que usamos cuando drbd9 se utiliza sobre writeboost:

[Unit]
Description=Mapeador (dm-)writeboost
Documentation=man:writeboost
#DefaultDependencies=false
#Conflicts=shutdown.target

## "Before=local-fs-pre" es significativo ya que influye en el orden correcto
## de parada (después del desmontaje).
#Before=shutdown.target drbd.service cryptsetup.target local-fs-pre.target
#Before=shutdown.target cryptsetup.target local-fs-pre.target

Before=shutdown.target drbdmanaged.service

[Service]
Type=oneshot

## Debe permanecer después de la salida para evitar parar justo después de iniciar
## y para parar en el apagado.
RemainAfterExit=yes

## El escaneo de dispositivos de caché puede tomar mucho tiempo después de un apagado no limpio.
TimeoutStartSec=3600

ExecStart=/usr/bin/bash -c '/usr/sbin/writeboost; lvscan; lvchange -ay /dev/drbdpool/data_00'
ExecStop=/usr/sbin/writeboost -u

## Un "TimeoutStop" largo es esencial ya que puede ocurrir un bloqueo si writeboost
## es eliminado durante el vaciado de cachés en el apagado, etc.
TimeoutStopSec=3600

StandardOutput=syslog+console

[Install]
#WantedBy=cryptsetup.target
#WantedBy=local-fs.target
WantedBy=drbdmanaged.service
#Alias=dm-writeboost.service