Différences entre versions de « DRBD »
imported>SylvainBeucler |
imported>SylvainBeucler |
||
Ligne 67 : | Ligne 67 : | ||
Cf. http://lists.linbit.com/pipermail/drbd-dev/2009-July/001073.html | Cf. http://lists.linbit.com/pipermail/drbd-dev/2009-July/001073.html | ||
− | + | <pre> | |
+ | + 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 | ||
+ | </pre> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | disk { on-io-error: passon; } | ||
+ | |||
+ | Dans ce cas, les erreurs sont passées au système de fichiers, qui habituellement va se remonter en lecture seule. | ||
+ | |||
+ | Cas 2: 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. | ||
== Liens == | == Liens == |
Version du 31 octobre 2009 à 12:26
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:
- http://thread.gmane.org/gmane.comp.linux.drbd/6175 : en 2004
- http://www.mail-archive.com/drbd-user@lists.linbit.com/msg00277.html : en 2009
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:
disk { on-io-error: passon; }
Dans ce cas, les erreurs sont passées au système de fichiers, qui habituellement va se remonter en lecture seule.
Cas 2: 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.