|  | # | 
|  | # DRBD device driver configuration | 
|  | # | 
|  |  | 
|  | comment "DRBD disabled because PROC_FS or INET not selected" | 
|  | depends on PROC_FS='n' || INET='n' | 
|  |  | 
|  | config BLK_DEV_DRBD | 
|  | tristate "DRBD Distributed Replicated Block Device support" | 
|  | depends on PROC_FS && INET | 
|  | select LRU_CACHE | 
|  | select LIBCRC32C | 
|  | default n | 
|  | help | 
|  |  | 
|  | NOTE: In order to authenticate connections you have to select | 
|  | CRYPTO_HMAC and a hash function as well. | 
|  |  | 
|  | DRBD is a shared-nothing, synchronously replicated block device. It | 
|  | is designed to serve as a building block for high availability | 
|  | clusters and in this context, is a "drop-in" replacement for shared | 
|  | storage. Simplistically, you could see it as a network RAID 1. | 
|  |  | 
|  | Each minor device has a role, which can be 'primary' or 'secondary'. | 
|  | On the node with the primary device the application is supposed to | 
|  | run and to access the device (/dev/drbdX). Every write is sent to | 
|  | the local 'lower level block device' and, across the network, to the | 
|  | node with the device in 'secondary' state.  The secondary device | 
|  | simply writes the data to its lower level block device. | 
|  |  | 
|  | DRBD can also be used in dual-Primary mode (device writable on both | 
|  | nodes), which means it can exhibit shared disk semantics in a | 
|  | shared-nothing cluster.  Needless to say, on top of dual-Primary | 
|  | DRBD utilizing a cluster file system is necessary to maintain for | 
|  | cache coherency. | 
|  |  | 
|  | For automatic failover you need a cluster manager (e.g. heartbeat). | 
|  | See also: http://www.drbd.org/, http://www.linux-ha.org | 
|  |  | 
|  | If unsure, say N. | 
|  |  | 
|  | config DRBD_FAULT_INJECTION | 
|  | bool "DRBD fault injection" | 
|  | depends on BLK_DEV_DRBD | 
|  | help | 
|  |  | 
|  | Say Y here if you want to simulate IO errors, in order to test DRBD's | 
|  | behavior. | 
|  |  | 
|  | 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 peer_requests | 
|  | 512	insert data corruption on receiving side | 
|  |  | 
|  | 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 | 
|  |  | 
|  | If unsure, say N. |