Outils pour utilisateurs

Outils du site


documentations:drbd

~~DISCUSSIONS~~

Installer DRBD sur une Debian(Etch)

DRBD est un RAID1 via ethernet.

Prérequis

  • 2 machines installées en debian/Etch
  • Un noyeau debian correspondant aux machines
  • Une ou plusieurs partitions à répliquer.

Installation des softs

J'ai décidé d'utiliser la version 0.8 de drbd au lieu de la 0.7 qui était dans la Etch à cause de remarques sur le site de drbd comme quoi la 0.8 était plus stable.

Pour Etch, il faut rajouter dans le sources.list :

/etc/apt/sources.list

deb http://www.backports.org/debian etch-backports main contrib non-free
deb-src http://www.backports.org/debian etch-backports main contrib non-free

Installer les paquets suivant :

  • module-assistant
  • drbd8-utils
  • <d'autres paquets mais je me souviens plus, il faut que je reteste>

Avec module-assistant faire les paquets debian de drbd8 Installer le paquet crée sur les 2 machines :

# dpkg -i /usr/src/drbd8-module-2.6.18-5-686_8.0.4-1~bpo.1+[...].Custom_i386.deb

Remarque du JeD:
Vous pouvez aussi installer le module avec l'option d'auto-installation de module-assistant :
m-a a-i … Quel notation barbare ! :) (dixit JeD c'est pas peu dire)

Installation et configuration de DRBD

Lancer le démon drbd sur les 2 machines :

# modprobe drbd

Il faut que les 2 partitions soit de taille identique sur les 2 machines. La partition de la machine maitre peut être pleine.

Il faut faire le fichier de configuration drbd (/etc/drbd.conf) qui sera identique entre les 2 machines :

/etc/drbd.conf

skip { # Avec cette balise tu peux skip une partie de la conf
}

global { # Section globale
    minor-count 32; # Le nombre max de device gérer par drbd
    usage-count no; # Si vous voulez participer au conmptage des utilisateur de drbd mettre yes
}

common { # Section commune à toute les ressources
}

resource essai { # Ma ressource d'essai
  protocol C; # Protocole C : Ecriture validée qd c'est sur le disque distant
  handlers { # Ce qui se passe en cas d'erreur (valeur pas défaut)
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
  }
  startup { # Le timeout au démarrage à régler
    degr-wfc-timeout 10;    # 10s
  }
  disk { # Sur erreur détacher
    on-io-error   detach;
  }
  net { 
    timeout       60;    #  6 seconds  (unit = 0.1 seconds)
    connect-int   10;    # 10 seconds  (unit = 1 second)
    ping-int      10;    # 10 seconds  (unit = 1 second)
    ping-timeout   5;    # 500 ms (unit = 0.1 seconds)
    after-sb-0pri disconnect;
    after-sb-1pri disconnect;
    after-sb-2pri disconnect;
    rr-conflict disconnect;
  }
  syncer { # Vitesse de synchro
    rate 640M; # le max
    al-extents 257;
  }
  on hades { # la machine 1
    device     /dev/drbd0; # le device drbd
    disk       /dev/hda3; # le disque physique
    address    140.77.250.124:7788; # si plusieurs drbd il faut changer de port 
    meta-disk  internal; # Méta donnée en interne car c'est de l'ext3
    # meta-disk /dev/hda5[2] # Si c'est une partition non réductible on doit faire une partition sécial
                             # pour les métadata qui doit faire au moins 128Mo le [2] est un indice au cas
                             # ou on met plusieurs méta data dans la mm partition.                
  }
  on diane { # la machine 2
    device    /dev/drbd0;
    disk      /dev/hda3;
    address   140.77.250.122:7788;
    meta-disk internal;
  }
}

Ensuite sur chaque machine on doit initialiser les partitions :

# drbdadm create-md <nom de la ressource>

Utilisation de DRBD

On lance le démon sur chaque machine dans l'éccars de temps du timeout :

# /etc/init.d/drbd start
Starting DRBD resources:    [ d0 s0 n0 ].
#

Vérifier le drbd :

# cat /proc/drbd 
version: 8.0.4 (api:86/proto:86)
SVN Revision: 2947 build by root@hades, 2007-10-17 11:39:43
 0: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r---
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
        act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
#

Ils sont les 2 en secondaire. Tant que les partitions drbd sont en secondaire, vous ne pouvez pas les monter. Mettre le maitre en Primaire en forcant la réécriture du secondaire (seulement la premiere fois pour synchroniser les 2 partitions) :

# drbdsetup /dev/drbd0 primary --overwrite-data-of-peer
#

Il va recopier la partition bloc par bloc sur le secondaire. Une fois que c'est synchro entre les 2 ca se passe comme un raid normal.

Une fois la partition en primaire vous pouvez monter les données :

# mount /dev/drbd0 /mnt
#

Si il y a coupure réseau le secondaire récupère les données qui manque lorsque le réseau revient. Si la machine 1 crash il suffit de mettre la partition de la machine2 en primaire pour avoir accès au données.

Après un reboot la partition est automatiquement remise en secondaire. Pour l'activer, vous pourrez simplement faire :

# drbdsetup /dev/drbd0 primary
#

Il faudra scripter pour faire ca en automatique. (Via hearthbeat par exemple)

ATTENTION ! Les 2 partitions ne doivent pas être en primary en mm temps.

Si ca se passe (il faut une coupure réseau et que la secondaire passe en primary et que le réseau revienne), il faut dire à drbd qui est la partition valide :

# drbdadm invalidate essai

ou

# drbdadm invalidate-remote essai

~~DISCUSSION~~

documentations/drbd.txt · Dernière modification: 2008/03/19 11:53 (modification externe)