11 Jul, 2014

2 commits

  • In setups involving a DRBD-proxy and connections that experience a lot of
    buffer-bloat it might be necessary to set ping-timeout to an
    unusual high value. By default DRBD uses the same value to wait if a newly
    established TCP-connection is stable. Since the DRBD-proxy is usually located
    in the same data center such a long wait time may hinder DRBD's connect process.

    In such setups socket-check-timeout should be set to
    at least to the round trip time between DRBD and DRBD-proxy. I.e. in most
    cases to 1.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • Checksum based resync trades CPU cycles for network bandwidth,
    in situations where we expect much of the to-be-resynced blocks
    to be actually identical on both sides already.

    In a "network hickup" scenario, it won't help:
    all to-be-resynced blocks will typically be different.

    The use case is for the resync of *potentially* different blocks
    after crash recovery -- the crash recovery had marked larger areas
    (those covered by the activity log) as need-to-be-resynced,
    just in case. Most of those blocks will be identical.

    This option makes it possible to configure checksum based resync,
    but only actually use it for the first resync after primary crash.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     

28 Jun, 2013

1 commit

  • Allow to change the AL layout with an resize operation. For that
    the reisze command gets two new fields: al_stripes and al_stripe_size.

    In order to make the operation crash save:
    1) Lock out all IO and MD-IO
    2) Write the super block with MDF_PRIMARY_IND clear
    3) write the bitmap to the new location (all zeros, since
    we allow only while connected)
    4) Initialize the new AL-area
    5) Write the super block with the restored MDF_PRIMARY_IND.
    6) Unfreeze all IO

    Since the AL-layout has no influence on the protocol, this operation
    needs to be beforemed on both sides of a resource (if intended).

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Philipp Reisner
    Signed-off-by: Jens Axboe

    Philipp Reisner
     

23 Mar, 2013

1 commit

  • Now that the on-disk activity-log ring buffer size is adjustable,
    the maximum active set can become larger, and is now limited by
    the use of 16bit "labels".

    This increases the maximum working set from 6433 to 65534 extents,
    each of which covers an area of 4MiB.
    Which means that if you use the maximum, you'd have to resync
    more than 250 GiB after an unclean Primary shutdown.
    With capable backend storage and replication links,
    this is entirely feasible.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg
    Signed-off-by: Jens Axboe

    Lars Ellenberg
     

08 Nov, 2012

17 commits

  • By disabling al-updates one might increase performace. The price for
    that is that in case a crashed primary (that had al-updates disabled)
    is reintegraded, it will receive a full-resync instead of a bitmap
    based resync.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • New config option for the disk secition "read-balancing", with
    the values: prefer-local, prefer-remote, round-robin, when-congested-remote.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • * The max of minor_count is 255
    * In drbdadm count the number of minors, instead of finding
    the highest minor number
    * No longer us the magic in the init script

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • The maximum minor device number allowed by the kernel is (1<
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • * Enabled the resync controller, with a fill target of 50Kib. That gives
    reasonable resync speeds without tuning. A much better default than
    the 250KiB/s fixed.

    * Enable bitmap compression. It is save to use, and most people have
    more CPU power than network bandwidth.

    * ko-count of 7: Abort a connection if the peer fails to process a
    write request within 42 seconds.

    * al-extents of 1237: ~5 GiB seems to be a much more sane default
    these days.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • * drbd-8.3:
    documentation: Documented detach's --force and disk's --disk-timeout
    drbd: Implemented the disk-timeout option
    drbd: Force flag for the detach operation
    drbd: Allow new IOs while the local disk in in FAILED state
    drbd: Bitmap IO functions can not return prematurely if the disk breaks
    drbd: Added a kref to bm_aio_ctx
    drbd: Hold a reference to ldev while doing meta-data IO
    drbd: Keep a reference to the bio until the completion handler finished
    drbd: Implemented wait_until_done_or_disk_failure()
    drbd: Replaced md_io_mutex by an atomic: md_io_in_use
    drbd: moved md_io into mdev
    drbd: Immediately allow completion of IOs, that wait for IO completions on a failed disk
    drbd: Keep a reference to barrier acked requests

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • * commit 'ae57a0a':
    drbd: Only print sanitize state's warnings, if the state change happens
    drbd: we should write meta data updates with FLUSH FUA
    drbd: fix limit define, we support 1 PiByte now
    drbd: fix log message argument order
    drbd: Typo in user-visible message.
    drbd: Make "(rcv|snd)buf-size" and "ping-timeout" available for the proxy, too.
    drbd: Allow keywords to be used in multiple config sections.
    drbd: fix typos in comments.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Philipp Reisner
     
  • Allow up to 300 centi-seconds to be configured for the "ping timeout".
    There may be setups where heavy congestion, huge buffers, and asymmetric
    bandwidth limitations may need a "huge" ping-timeout as work-around
    for "spurious connection loss" problems.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     
  • These constants are useful for the same purpose in more than one place.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • We don't have the units in constant names in other places, either.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • The 32-bit resync_after netlink field takes a device minor number as
    parameter, which is no longer limited to 255. We cannot statically
    verify which device numbers are valid, so set the ummer limit to the
    highest possible signed 32-bit integer.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • The 8 byte header finally becomes too small. With the protocol 100 header we
    have 16 bit for the volume number, proper 32 bit for the data length, and
    32 bit for further extensions in the future.

    Previous versions of drbd are using version 80 headers for all packets
    short enough for protocol 80. They support both header versions in
    worker context, but only version 80 headers in asynchronous context.
    For backwards compatibility, continue to use version 80 headers for
    short packets before protocol version 100.

    From protocol version 100 on, use the same header version for all
    packets.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Andreas Gruenbacher
     
  • This commit breaks the API again.

    Move per-volume former syncer options into disk_conf.
    Move per-connection former syncer options into net_conf.
    Renamed the remainign sync_conf to res_opts

    Syncer settings have been changeable at runtime, so we need to prepare
    for these settings to be runtime-changeable in their new home as well.

    Introduce new configuration operations, and share the netlink attribute
    between "attach" (create new disk) and "disk-opts" (change options).
    Same for "connect" and "net-opts".

    Some fields cannot be changed at runtime, however.
    Introduce a new flag GENLA_F_INVARIANT to be able to trigger on that in
    the generated validation and assignment functions.

    Signed-off-by: Philipp Reisner
    Signed-off-by: Lars Ellenberg

    Lars Ellenberg
     

14 Oct, 2011

2 commits


30 Jun, 2011

1 commit


31 Mar, 2011

1 commit


10 Mar, 2011

2 commits


15 Oct, 2010

3 commits


14 Oct, 2010

1 commit


18 May, 2010

1 commit


04 Nov, 2009

1 commit


02 Oct, 2009

1 commit