drbd
Installare DRBD su un RPS di OVH e Fedora
Premessa
DRBD (Distributed Replicated Block Device) è una sorta di disco virtuale che gestice un RAID 1 via rete. In pratica due dischi installati su due macchine fisiche diverse possono essere visti come unico disco. DRBD è uno dei mattoni fondamentali per la gestione di un cluster HA (High Availability) low cost.
Requisiti
Esistono gli RPM di DRBD già fatti per Centos e si possono usare anche con la Fedora, però funzionano solo con i kernel ufficiali delle rispettive distribuzioni, quindi dovremo crearci il nostro pacchetto.
Innanzitutto dovete assicurarvi di avere installato un kernel che supporta i moduli e che supporta la funzionalità “Connector”.
Inoltre è consigliabile che abbiate riservato una partizione, identica sulle due macchine che vorrete mantenere sincronizzate, da utilizzare con DRBD.
Se non ne avete una potrete comunque provare creando un loop device (questo crea un loop device da 10GB):
shell# dd if=/dev/zero of=/home/drbdloop bs=1024 count=10485760 shell# losetup /dev/loop0 /home/drbdloop
In questo modo avrete un device (/dev/loop0) da utilizzare come disco per DRBD.
Compilazione di DRBD
shell# cd /usr/src shell# wget http://oss.linbit.com/drbd/8.3/drbd-8.3.1.tar.gz shell# tar -zxf drbd-8.3.1.tar.gz shell# cd drbd-8.3.1 shell# make rpm
Nel mio caso mi è stato dato un errore perchè nel mio sistema mancava flex.
errore: Compilazione dipendenze fallita:
flex necessita di drbd-8.3.1-3.i386
In realtà l’errore italiano è tradotto male. Il problema è l’esatto opposto. E’ sufficiente installare flex e ripetere il make:
shell# yum install flex Installato: flex.i386 0:2.5.35-2.fc9 shell# make rpm [ COMPILAZIONE ] + exit 0 You have now: -rw-r--r-- 1 root root 185530 3 apr 11:23 dist/RPMS/i386/drbd-8.3.1-3.i386.rpm -rw-r--r-- 1 root root 304874 3 apr 11:23 dist/RPMS/i386/drbd-debuginfo-8.3.1-3.i386.rpm -rw-r--r-- 1 root root 154010 3 apr 11:23 dist/RPMS/i386/drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386.rpm
A questo punto sarà sufficiente installare drbd (i tools) e drbd-km (il modulo del kernel).
Installazione di DRBD
shell# rpm -Uvh --force dist/RPMS/i386/drbd-8.3.1-3.i386.rpm dist/RPMS/i386/drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386.rpm errore: Dipendenze fallite: kernel necessita di drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386
La distribuzione di fedora core 9 fatta da OVH non include un pacchetto kernel, ma noi abbiamo installato il kernel manualmente e quindi forziamo l’installazione.
shell# rpm -Uvh --nodeps dist/RPMS/i386/drbd-8.3.1-3.i386.rpm dist/RPMS/i386/drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386.rpm Preparazione in corso... ########################################### [100%] 1:drbd ########################################### [ 50%] 2:drbd-km-2.6.28.4_custom########################################### [100%] shell#
Ogni volta che cambierete il kernel dovrete ripetere questa procedura ed installare il nuovo modulo del kernel (ne possono coesistere più di uno).
Configurazione DRBD
D’ora in poi ipotizzerò che le due macchine siano rXXXX1.ovh.net e rXXXX2.ovh.net, che l’IP delle due macchine sia rispettivamente 87.98.XXX.101 e 87.98.XXX.102 e che per entrambe le macchine la partizione di cui tenere il mirror sia /dev/sda5.
Innanzitutto dovremo configurare la risorsa (che chiamo “r0” ma alla quale potrete assegnare il nome che preferite) su /etc/mrtg.conf
resource r0 { protocol C; startup { degr-wfc-timeout 120; } syncer { rate 3M; al-extents 257; } on rXXXX1.ovh.net { device /dev/drbd0; disk /dev/sda5; address 87.98.XXX.101:7789; meta-disk internal; } on rXXXX2.ovh.net { device /dev/drbd0; disk /dev/sda5; address 87.98.XXX.102:7789; meta-disk internal; } }
Una volta configurato possiamo preparare il disco con i metadati di DRBD ed attivare la risorsa:
shell# drbdadm create-md r0 shell# drbdadm up r0
Fate la stessa cosa sul secondo server e poi, sul server che volete sia il primario (quello che potrà montare la partizione) fate:
shell# drbdadm -- -o primary r0
Ora /dev/drbd0 è un dispositivo a blocchi (disco virtuale) valido e possiamo procedere nella formattazione:
shell# mkfs.ext3 /dev/drbd0
A questo punto potrete montare il disco ed utilizzarlo
shell# mkdir /mnt/discoha shell# mount /dev/drbd0 /mnt/discoha
Se non volete rischiare di perdere tutti i dati per un comando errato è d’obbligo la lettura del manuale, per una buona comprensione dello stato di connessione, dello stato dei dischi e dello stato della sincronizzazione.
Se vi interessano configurazioni master-master in cui entrambi gli host possono usare contemporaneamente il disco allora avrete bisogno di una filesystem distribuita come OCFS2 o GFS: leggete l’articolo di GuiGui che riporto in fondo all’articolo per un esempio.
Riferimenti
Dal manuale – Building a DRBD RPM package
Articolo di GuiGui –
Mise en oeuvre d’un système de fichier distribué et accès concurrents en SAN avec DRBD, ISCSI ,OCFS2 et DM-Multipath
Pagine
Articoli recenti
Archivi
- Luglio 2009 (1)
- Giugno 2009 (3)
- Maggio 2009 (2)
- Aprile 2009 (8)
- Marzo 2009 (1)