Salta el contingut

dm-writeboost

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

Aquesta configuració d'exemple no utilitza DRBD, és només una configuració simple de dm-writeboost.

Instal·lació a CentOS 7

DKMS

yum install dkms -y

Mòdul DKMS de Writeboost

Clonar repositori:

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

Comprovar que DKMS de Writeboost està instal·lat:

dkms status
lsmod | grep dm_writeboost

Eines de Writeboost

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

Reiniciar i comprovar la instal·lació del mòdul

Crear nova memòria cau Writeboost

wbcreate --reformat --read_cache_threshold=127  --writeback_threshold=80 storage /dev/md0 /dev/nvme0n1
  • storage: nom del nou dispositiu de memòria cau
  • md0: discs lents
  • nvme0n1: discs ràpids (dispositiu de memòria cau)

Crear writeboosttab i servei

vi /etc/writeboosttab

## Fitxer "tab" (mapejos) de dm-writeboost, vegeu writeboosttab(5).
##{Nom objectiu DM}    {dispositiu de blocs en memòria cau p.ex. HDD}    {dispositiu de blocs de memòria cau p.ex. SSD}    [opcions]
##
## 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

Aquest és un fitxer d'unitat systemd d'exemple de writeboost:

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

DRBD9 sobre Writeboost

Per utilitzar writeboost en una configuració drbd hauríem de crear un dispositiu de memòria cau writeboost a cada node drbd i després utilitzar aquest dispositiu de memòria cau com a pv per al grup de volums drbdpool de drbd9. Així drbd9 s'executarà sobre un dispositiu de memòria cau muntat a cada node. I aquest és el fitxer de servei writeboost modificat que utilitzem quan drbd9 s'utilitza sobre writeboost:

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

## "Before=local-fs-pre" és significatiu ja que influeix en l'ordre correcte
## d'aturada (després del desmuntatge).
#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

## Ha de romandre després de la sortida per evitar aturar-se just després d'iniciar
## i per aturar-se en l'apagada.
RemainAfterExit=yes

## L'escaneig de dispositius de memòria cau pot trigar molt de temps després d'una aturada no neta.
TimeoutStartSec=3600

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

## Un "TimeoutStop" llarg és essencial ja que pot passar un bloqueig si writeboost
## és eliminat durant el buidat de memòries cau en l'apagada, etc.
TimeoutStopSec=3600

StandardOutput=syslog+console

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