====== DRBD ====== ===== Procédure de mise en place ===== ==== Mode Primaire/Secondaire ==== * Installation de drbd : apt-get install drbd8-utils * Créer le fichier de configuration de la ressource : ///etc/drbd.d/r0.res//resource r0 { protocol C; handlers { } startup { degr-wfc-timeout 120; outdated-wfc-timeout 2; } disk { on-io-error detach; } net { after-sb-0pri discard-younger-primary; after-sb-1pri consensus; after-sb-2pri disconnect; rr-conflict disconnect; cram-hmac-alg "sha1"; shared-secret "mon_sercret"; } syncer { rate 90M; al-extents 257; } on srvvirt1 { device /dev/drbd0; disk /dev/vg_srv1/drbd0; address 172.20.0.6:7788; meta-disk internal; } on srvvirt2 { device /dev/drbd0; disk /dev/vg_srv2/drbd0; address 172.20.0.7:7788; meta-disk internal; } } * Initialiser les devices via la commande : drbdadm create-md r0 * Lancer drbd : /etc/init.d/drbd restart * Sur une des deux machines, forcer en primary : drbdadm -- --overwrite-data-of-peer primary r0 ==== Mode Primaire/Primaire ==== * Installation de drbd : apt-get install drbd8-utils * Créer le fichier de configuration de la ressource : ///etc/drbd.d/r0.res//resource r0 { protocol C; handlers { } startup { degr-wfc-timeout 120; outdated-wfc-timeout 2; become-primary-on both; } disk { on-io-error detach; } net { after-sb-0pri discard-younger-primary; after-sb-1pri consensus; after-sb-2pri disconnect; rr-conflict disconnect; allow-two-primaries; cram-hmac-alg "sha1"; shared-secret "mon_sercret"; } syncer { rate 90M; al-extents 257; } on srvvirt1 { device /dev/drbd0; disk /dev/vg_srv1/drbd0; address 172.20.0.6:7788; meta-disk internal; } on srvvirt2 { device /dev/drbd0; disk /dev/vg_srv2/drbd0; address 172.20.0.7:7788; meta-disk internal; } } * Initialiser les devices via la commande : drbdadm create-md r0 * Lancer drbd : /etc/init.d/drbd restart Si vous êtes en prod vous pouvez utiliser la commande drbdadmn up r0 * Sur une des deux machines, forcer en primary : drbdadm -- --overwrite-data-of-peer primary r0 * La synchro commence, elle peut être suivie dans ///proc/drbd//. Une fois terminée, passer l'autre machine en primaire également : drbdadm primary r0 ===== Supprimer une ressource ===== drbdadmin remove /dev/drbd0 ===== Agrandir une ressource ===== Partons du principe qu'une ressource //myvol// partagé entre les machines //hyp01// et //hyp02// dans un LV //myvol// des VG LVM respectifs //vg_hypXX// : * On commence par redimensionner les LV LVM sous DRBD (avec **[size]** la taille en //Go//), sur chacune des machines : lvresize -L+[size]G /dev/vg_hypXX/myvol * Un fois les LV agrandi, il faut que DRBD le prenne en compte. La commande si après ne doit être fait que si **UN SEUL** des noeuds est **PRIMAIRY**, que l'état du volume est **CONNECTED** et les volumes sont **UpToDate** : drbdadm resize myvol * La machine //secondary// doit alors être en //resync//. Sans forcément attendre la fin de la synchro, il nous reste à redimenssionner le //filesystem// depuis la machine **PRIMARY** : resize2fs /dev/drbd0 ===== Trucs et astuces ===== ==== Triggers ==== Exemple : handlers { 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"; } ==== Reconnecter une ressource après incident ==== Lorsque la communication entre les serveurs a été interrompu et que les périphériques DRBD sont donc désynchronisé, il faut : * décider quelle machine contient les données valides (à  priori la dernière machine ayant été active) * sur la machine contenant les données invalides, lancer les commandes : drbdadm secondary r0 drbdadm -- --discard-my-data connect r0 * sur la machine contenant les données valides, lancer la commande : drbdadm connect r0 La synchronisation des données démarre alors, on peut suivre son état via la comande : cat /proc/drbd ==== En cas de blocage en état Consistent alors qu'un seul des deux nœuds est présent ==== drbdadm -- --overwrite-data-of-peer primary r0