DRBD su un file system esistente senza perdere i dati

Questo articolo non l’ho scritto io, ma lo riporto come l’ho trovato con qualche precisazione.
E’ molto utile in quanto permette di attivare il drbd su una partizione attiva senza perdere i dati presenti.

Preso e testato da:
http://lists.linbit.com/pipermail/drbd-user/2009-February/011464.html

Attività Preliminari

Sul nostro server PIG avremo dei dati in un logical volume montato in un determinato percorso. Ad esempio:
LVM2 volume: /dev/example_vg/existing_data
montato su /opt/existing_data

Quello che vorremmo è replicare questi dati tramite DRBD su un altro server che chiameremo DUCK

Come prima cosa dobbiamo bloccare tutti i servizi che accedono ai dati esistenti su PIG. Se per esempio i dati fossero montati su la directory /var/www e venissero usati da apache o mysql dovremmo stoppare i servizi httpd e mysqld (service httpd stop)..
Una volta stoppati i servizi, smontiamo il volume:

PIG# umount /opt/existing_data

ora sul nostro volume aggiungiamo un po di spazio utile per i metadata del DRBD (circa 32MB per ogni Tera di spazio) Questa operazione può essere eseguita in modi diversi:

  • estendendo l’attuale Logical Volume:
    PIG# lvextend -L 32m example_vg/existing_data
  • aggiungendo un nuovo LV da usare per lo store dei meta data DRBD
    PIG# lvcreate -n existing_data-md -L altro_vg -L 32m
  • -lasciare il LV come è ma “stretto” o ricrearlo più piccolo. Questa opzione non è consigliata lavorando con dati già esistenti. Gli altri due metodi sono più efficiaci.
drbd

drbd

Configurazione DRBD

Prepara il file di configurazione drbd.conf (oppure il file /etc/drbd.d/risorse.conf)
indicando nella definizione delle risorse:

on PIG {
...
disk /dev/example_vg/existing_data;
flexible-meta-disk internal;
...
}

(or, flexible-meta-disk /dev/altro_vg/exiting.data-md)

a questo punto creiamo il drbd meta data

PIG# drbdadm create-md nome-della-risorsa

i prossimi passaggi vengono solitamente svolti dall’init script di drbd, ma in questo caso li eseguiamo uno alla volta

load drbd module:

PIG# modprobe drbd

attach drbd:

PIG# drbdadm attach all
PIG# cat /proc/drbd:
StandAlone Secondary/Unknown Inconsistent/DUnknown

Forziamo PIG a diventare primario dato che sappiamo che è il server con i dati

PIG# drbdadm -- --overwrite-data-of-peer primary all
PIG# cat /proc/drbd:
StandAlone Primary/Unknown UpToDate/DUnknown

rimuoviamo tutti i riferimenti a /dev/example_vg/existing_data (es. fstab) e procediamo con il mount del drbd

PIG# mount /dev/drbdX /opt/new_existing_data

Attenzione
NON MONTARE o ACCEDERE a  /dev/example_vg/existing_data
Ma da ora in poi usare SOLO /dev/drbdX

Prepariamo il nuovo server DUCK:
copiamo il file di configurazione drbd da PIG a DUCK (drbd.conf o quello che è)
creare il logical volume (vedi il comando lvcreate)
create i meta data lv se necessario
inizializzare i  meta data,

DUCK# drbdadm create-md

load drbd module

DUCK# modprobe drbd

attach drbd, sicronizza le configurazione e prova a contattare il peer (PIG)

DUCK# drbdadm adjust all

ora torna su PIG e contatta DUCK

PIG# drbdadm adjust all

verifica tramite /proc/drbd che i nodi siano ora connessi e sincronizzati, la sincronizzazione potrebbe richiedere del tempo ed è necessario aspettare che finisca.

Come fare lo switchover manualmente:
stop services su PIG, unmount, rendi il nodo secondary

PIG# service drbd stop
PIG# unmount /opt/new_existing_data
PIG# drbdadm --secondary nomerisorsa

Rendi primario DUCK

DUCK# drbdadm --primarynomerisorsa
DUCK# mount /opt/new_existing_data
DUCK# service drbd start

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.