[DRBD-user] Confused about no-disk-drain

Jake Smith jsmith at argotec.com
Thu Feb 2 16:27:05 CET 2012

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


Lars,

I didn't want to hijack a different thread so I started a new one.  I want to understand better why you said in another thread today not to use no-disk-drain (quote):

> Will people please STOP using no-disk-drain.  On most hardware, it does
> not provide measurable performance gain, but may risk data integrity
> because of potential violation of write-after-write dependencies!

I also found you said in another older thread:

>Do not use "no-disk-drain", unless you are absolutely sure that nothing 
>in the IO stack below DRBD could possibly reorder writes. 

Unfortunately I'm not that knowledgeable on storage so this may be a ignorant question but...

In the man page for drbd.conf (version 8.3.7) it states using none is the best performance choice if using a storage device with BBWC. The way I read it I believe that none would be the same as having  no-disk-barrier, no-disk-flushes, no-disk-drain?  I didn't see any mention there of write order considerations only performance and volatility of storage disks.  Which leads me to use no-disk-drain and thinking everything is fine :-) (plus I wouldn't know if something in the stack could/would re-order writes without a lot of Google)

Excerpt:

       no-disk-barrier, no-disk-flushes, no-disk-drain
           DRBD has four implementations to express write-after-write dependencies to its backing
           storage device. DRBD will use the first method that is supported by the backing
           storage device and that is not disabled by the user.

           When selecting the method you should not only base your decision on the measurable
           performance. In case your backing storage device has a volatile write cache (plain
           disks, RAID of plain disks) you should use one of the first two. In case your backing
           storage device has battery-backed write cache you may go with option 3 or 4. Option 4
           will deliver the best performance such devices.

           Unfortunately device mapper (LVM) does not support barriers.

           The letter after "wo:" in /proc/drbd indicates with method is currently in use for a
           device: b, f, d, n. The implementations:

           barrier
               The first requirs that the driver of the backing storage device support barriers
               (called ´tagged command queuing´ in SCSI and ´native command queuing´ in SATA
               speak). The use of this method can be disabled by the we no-disk-barrier option.

           flush
               The second requires that the backing device support disk flushes (called ´force
               unit access´ in the drive vendors speak). The use of this method can be disabled
               using the no-disk-flushes option.

           drain
               The third method is simply to let write requests drain before write requests of a
               new reordering domain are issued. That was the only implementation before 8.0.9.
               You can prevent to use of this method by using the no-disk-drain option.

           none
               The fourth method is to not express write-after-write dependencies to the backing
               store at all.


Jake 



More information about the drbd-user mailing list