Différences entre versions de « DRBD »

De Cliss XXI
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
imported>SylvainBeucler
Ligne 96 : Ligne 96 :
 
== Gérer des erreurs d'entrées/sorties ==
 
== Gérer des erreurs d'entrées/sorties ==
  
Cas 1:
+
Cas 1 (par défaut):
  
  disk { on-io-error: passon; }
+
  disk { on-io-error pass_on; }
  
 
Dans ce cas, les erreurs sont passées au système de fichiers, qui habituellement va se remonter en lecture seule.
 
Dans ce cas, les erreurs sont passées au système de fichiers, qui habituellement va se remonter en lecture seule.
  
Cas 2: detach
+
Cas 2:
  
  disk { on-io-error: detach; }
+
  disk { on-io-error detach; }
  
Dans ce cas le disque continue de fonctionner de manière transparente sur le secondaire, en passant par le réseau.
+
Dans ce cas le disque continue de fonctionner de manière transparente sur le secondaire, en passant par le réseau (mode "diskless").
 +
 
 +
Cas 3:
 +
 
 +
disk { on-io-error call-local-io-error; }
 +
 
 +
Dans ce cas DRBD appelle un script spécifié via <code>local-io-error</code>.
  
 
== Liens ==
 
== Liens ==

Version du 31 octobre 2009 à 13:29

Distributed Replicated Block Device

apt-get install drbd8-utils drbd8-modules-2.6-686
# ou variante:
apt-get install drbd8-utils drbd8-modules-2.6-vserver-686

Configuration simple

Primary/Secondary (il existe aussi Primary/Primary):

global { 
  usage-count yes;
}
common {
  protocol C;
  syncer { rate 40M; }
  startup {
    wfc-timeout 15;
    degr-wfc-timeout 15;
    #outdated-wfc-timeout 15; # not in DRBD 8.0/Lenny
  }
}
resource r0 {
  startup { become-primary-on VM1; }
  on VM1 {
    device    /dev/drbd0;
    disk      /dev/VG0/test;
    address   192.168.101.115:7789;
    meta-disk /dev/VG0/test-drbdmeta[0];
  }
  on VM2 {
    device    /dev/drbd0;
    disk      /dev/VG0/test;
    address   192.168.101.118:7789;
    meta-disk /dev/VG0/test-drbdmeta[0];
  }
}

DRBD par dessus LVM

Snapshots LVM d'un volume DRBD:

Ce que je comprend:

  • léger risque d'incohérence du snapshot
  • pas de risque d'incohérence des données maîtres

En pratique, pour avoir un backup cohérent à partir du noeud secondaire:

lvcreate -s VG0/test -n test-snapshot -L 5G
mount /dev/VG0/test-snapshot -o ro /mnt/snapshots/test  # ro par parano
# backup avec rsync...
umount /mnt/snapshots/test
lvremove VG0/test-snapshot

Recharger la configuration

Utiliser

drbdadm adjust r0

Attention: comme indiqué ici, s'il y a un changement dans une section disk, les versions < 8.3.1 lancent une resynchronization complète. Pour éviter cela, passer le primaire en secondaire (donc les deux noeuds en secondaire) avant de lancer adjust; cela implique de démonter toutes les volumes DRBD actifs.

Simuler des erreurs d'entrées/sorties

Cf. http://lists.linbit.com/pipermail/drbd-dev/2009-July/001073.html

+	  The actual simulation of IO errors is done by writing 3 values to
+	  /sys/module/drbd/parameters/
+
+	  enable_faults: bitmask of...
+	  1	meta data write
+	  2               read
+	  4	resync data write
+	  8	            read
+	  16	data write
+	  32	data read
+	  64	read ahead
+	  128	kmalloc of bitmap
+	  256	allocation of EE (epoch_entries)
+
+	  fault_devs: bitmask of minor numbers
+	  fault_rate: frequency in percent
+
+	  Example: Simulate data write errors on /dev/drbd0 with a probability of 5%.
+		echo 16 > /sys/module/drbd/parameters/enable_faults
+		echo 1 > /sys/module/drbd/parameters/fault_devs
+		echo 5 > /sys/module/drbd/parameters/fault_rate

L'exemple occasionne une erreur disque au bout de quelques accès disque.

drbd0: Notified peer that my disk is broken

Gérer des erreurs d'entrées/sorties

Cas 1 (par défaut):

disk { on-io-error pass_on; }

Dans ce cas, les erreurs sont passées au système de fichiers, qui habituellement va se remonter en lecture seule.

Cas 2:

disk { on-io-error detach; }

Dans ce cas le disque continue de fonctionner de manière transparente sur le secondaire, en passant par le réseau (mode "diskless").

Cas 3:

disk { on-io-error call-local-io-error; }

Dans ce cas DRBD appelle un script spécifié via local-io-error.

Liens