Ubuntu/Debian DRBD 8.0 Setup Guide

I've only used it on Centos, so I thought I'd make a quick Debian guide:

Install the DRBD Package

apt-get install drbd8-utils
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libswfdec-0.8-0
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  debconf-utils dpatch drbd8-source patchutils
Suggested packages:
  curl heartbeat
The following NEW packages will be installed:
  debconf-utils dpatch drbd8-source drbd8-utils patchutils
0 upgraded, 5 newly installed, 0 to remove and 19 not upgraded.
Need to get 644kB of archives.
After this operation, 2,277kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://mirror.its.uidaho.edu/pub/ubuntu/ lucid/main debconf-utils 1.5.28ubuntu4 [40.4kB]
Get:2 http://mirror.its.uidaho.edu/pub/ubuntu/ lucid/main dpatch 2.0.31 [88.4kB]
Get:3 http://mirror.its.uidaho.edu/pub/ubuntu/ lucid/main patchutils 0.3.1-2build1 [101kB]
Get:4 http://mirror.its.uidaho.edu/pub/ubuntu/ lucid-updates/main drbd8-source 2:8.3.7-1ubuntu2.1 [220kB]
Get:5 http://mirror.its.uidaho.edu/pub/ubuntu/ lucid-updates/main drbd8-utils 2:8.3.7-1ubuntu2.1 [195kB]
Fetched 644kB in 0s (1,566kB/s)   
Selecting previously deselected package debconf-utils.
(Reading database ... 316693 files and directories currently installed.)
Unpacking debconf-utils (from .../debconf-utils_1.5.28ubuntu4_all.deb) ...
Selecting previously deselected package dpatch.
Unpacking dpatch (from .../archives/dpatch_2.0.31_all.deb) ...
Selecting previously deselected package patchutils.
Unpacking patchutils (from .../patchutils_0.3.1-2build1_i386.deb) ...
Selecting previously deselected package drbd8-source.
Unpacking drbd8-source (from .../drbd8-source_2%3a8.3.7-1ubuntu2.1_all.deb) ...
Selecting previously deselected package drbd8-utils.
Unpacking drbd8-utils (from .../drbd8-utils_2%3a8.3.7-1ubuntu2.1_i386.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Setting up debconf-utils (1.5.28ubuntu4) ...

Setting up dpatch (2.0.31) ...
Setting up patchutils (0.3.1-2build1) ...
Setting up drbd8-source (2:8.3.7-1ubuntu2.1) ...
Loading new drbd8-8.3.7 DKMS files...
First Installation: checking all kernels...
Building only for 2.6.32-26-generic-pae
Building for architecture i686
Building initial module for 2.6.32-26-generic-pae
Done.

drbd.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/2.6.32-26-generic-pae/updates/dkms/

grep: /etc/modprobe.d/drbd.conf: No such file or directory
/etc/modprobe.d/drbd.conf: added 'options drbd cn_idx=7'
depmod.....

DKMS: install Completed.

Setting up drbd8-utils (2:8.3.7-1ubuntu2.1) ...

Configure DRBD / Edit /etc/drbd.conf

vi /etc/drbd.conf

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

#include "drbd.d/global_common.conf";
#include "drbd.d/*.res";

resource r0 {
  protocol A;

  handlers {
#    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
#    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
  }

   net {

   after-sb-0pri discard-older-primary;
   after-sb-1pri call-pri-lost-after-sb;
   after-sb-2pri call-pri-lost-after-sb;

   }

  startup {
    degr-wfc-timeout 120;
  }

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

  syncer {
    rate 80M;
    al-extents 257;
  }

  on QuadCoreAM2 {
    device    /dev/drbd0;
    disk      /dev/sdc3;
    address   192.168.1.125:7788;
    meta-disk internal;
  }

  on one-desktop {
    device    /dev/drbd0;
    disk      /dev/sdc3;
    address   192.168.1.115:7788;
    meta-disk internal;
  }
}


Copy drbd.conf to /etc on the other node (both configs must be the same)

Start DRBD on the main node and then after the second node:

 

service drbd start

        --== This is a new installation of DRBD ==--
Please take part in the global DRBD usage count at http://usage.drbd.org.

The counter works anonymously. It creates a random number to identify
your machine and sends that random number, along with
DRBD's version number, to usage.drbd.org.

The benefits for you are:
 * In response to your submission, the server (usage.drbd.org) will tell you
   how many users before you have installed this version (8.3.7).
 * With a high counter LINBIT has a strong motivation to
   continue funding DRBD's development.

http://usage.drbd.org/cgi-bin/insert_usage.pl?nu=15996461431638930486&git=ea9e28dbff98e331a62bcbcc63a6135808fe2917

In case you want to participate but know that this machine is firewalled,
simply issue the query string with your favorite web browser or wget.
You can control all of this by setting 'usage-count' in your drbd.conf.

* You may enter a free form comment about your machine, that gets
  used on usage.drbd.org instead of the big random number.
* If you wish to opt out entirely, simply enter 'no'.
* To count this node without comment, just press [RETURN]

 

On the main node you will get this:

* Starting DRBD resources                                                                                                                                   [ d(r0) 0: Failure: (119) No valid meta-data signature found.

    ==> Use 'drbdadm create-md res' to initialize meta-data area. <==


[r0] cmd /sbin/drbdsetup 0 disk /dev/sdc3 /dev/sdc3 internal --set-defaults --create-device --on-io-error=call-local-io-error  failed - continuing!
 
n(r0) ]..........
***************************************************************
 DRBD's startup script waits for the peer node(s) to appear.
 - In case this node was already a degraded cluster before the
   reboot the timeout is 120 seconds. [degr-wfc-timeout]
 - If the peer was available before the reboot the timeout will
   expire after 0 seconds. [wfc-timeout]
   (These values are for resource 'r0'; 0 sec -> wait forever)
 To abort waiting enter 'yes' [  27]:

 

drbdsetup /dev/drbd0 primary
/dev/drbd0: State change failed: (-2) Refusing to be Primary without at least one UpToDate disk
 

drbdadm create-md r0

I forgot that my sdc3 is an empty/unused ext3 so I got this error:

md_offset 12839657472
al_offset 12839624704
bm_offset 12839231488

Found ext3 filesystem
    12538732 kB data area apparently used
    12538312 kB left usable by current configuration

Device size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either
   * use external meta data (recommended)
   * shrink that filesystem first
   * zero out the device (destroy the filesystem)
Operation refused.

Command 'drbdmeta 0 v08 /dev/sdc3 internal create-md' terminated with exit code 40
drbdadm create-md r0: exited with code 40

I did a dd if=/dev/zero of=/dev/sdc3 and it fixed it then I ran it again.

drbdadm create-md r0

Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

I still can't run drbdsetup:

drbdsetup /dev/drbd0 primary -o
/dev/drbd0: State change failed: (-2) Refusing to be Primary without at least one UpToDate disk

Both nodes with cat /proc/drbd are unconfigured

GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@QuadCoreAM2, 2010-12-24 16:34:58
 0: cs:Unconfigured

How to fix it:

I restarted DRBD on the primary node and told it not to wait.

service drbd start
 * Starting DRBD resources                                                                                                                                   [ d(r0) n(r0) ]..........
***************************************************************
 DRBD's startup script waits for the peer node(s) to appear.
 - In case this node was already a degraded cluster before the
   reboot the timeout is 120 seconds. [degr-wfc-timeout]
 - If the peer was available before the reboot the timeout will
   expire after 0 seconds. [wfc-timeout]
   (These values are for resource 'r0'; 0 sec -> wait forever)
 To abort waiting enter 'yes' [  17]:yes

                                                                                                                                                      [ OK ]

Now DRBD is in WFConnection and Secondary mode, this is good:
version: 8.3.7 (api:88/proto:86-91)
GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@QuadCoreAM2, 2010-12-24 16:34:58
m:res  cs            ro                 ds                     p  mounted  fstype
0:r0   WFConnection  Secondary/Unknown  Inconsistent/DUnknown  A

     

Make DRBD primary
drbdsetup /dev/drbd0 primary -o

Start DRBD on the second node and it will begin syncing:

GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by ivoks@ubuntu, 2009-01-17 07:49:56
 0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate A r---
    ns:0 nr:463808 dw:463552 dr:0 al:0 bm:27 lo:10 pe:367 ua:8 ap:0 ep:1 wo:b oos:12074760
    [>....................] sync'ed:  3.8% (11791/12244)M
    finish: 0:03:28 speed: 57,944 (57,944) K/sec

 


 


Tags:

ubuntu, debian, drbd, guidei, ve, centos, install, apt, utils, lists, dependency, packages, automatically, installed, libswfdec, autoremove, debconf, dpatch, patchutils, curl, heartbeat, upgraded, newly, kb, archives, additional, disk, http, uidaho, edu, pub, lucid, updates, fetched, selecting, previously, deselected, database, directories, currently, unpacking, utils_, _all, deb, dpatch_, patchutils_, _i, source_, processing, triggers, db, ureadahead, loading, dkms, installation, kernels, generic, pae, architecture, initial, module, ko, sanity, kernel, installing, lib, modules, grep, etc, modprobe, conf, directory, cn_idx, depmod, completed, configure, edit, vi, usr, quot, global_common, res, resource, protocol, handlers, pri, incon, degr, echo, proc, sysrq, halt, sb, io, discard, primary, startup, wfc, timeout, syncer, extents, quadcoream, dev, sdc, meta, desktop, node, configs, global, usage, org, anonymously, creates, benefits, submission, server, users, linbit, motivation, funding, cgi, bin, insert_usage, pl, nu, git, ea, dbff, bcbcc, fe, participate, firewalled, query, browser, wget, opt, valid, drbdadm, md, initialize, cmd, sbin, drbdsetup, defaults, continuing, waits, peer, degraded, cluster, reboot, expire, abort, refusing, uptodate, unused, ext, md_offset, al_offset, bm_offset, filesystem, usable, configuration, truncated, corrupt, errors, external, recommended, drbdmeta, terminated, exited, dd, initializing, initialized, bitmap, successfully, nodes, unconfigured, hash, cs, restarted, ok, wfconnection, secondary, mode, api, proto, ro, ds, mounted, fstype, inconsistent, dunknown, syncing, fb, ddb, ivoks, synctarget, ns, nr, dw, bm, pe, ua, ap, ep, wo, oos, sync,

Latest Articles

  • FreePBX 17 How To Add a Trunk
  • Docker Container Onboot Policy - How to make sure a container is always running
  • FreePBX 17 How To Add Phones / Extensions and Register
  • Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes. solution
  • Cisco How To Use a Third Party SIP Phone (eg. Avaya, 3CX)
  • Cisco Unified Communication Manager (CUCM) - How To Add Phones
  • pptp / pptpd not working in DD-WRT iptables / router
  • systemd-journald high memory usage solution
  • How to Install FreePBX 17 in Linux Debian Ubuntu Mint Guide
  • How To Install Cisco's CUCM (Cisco Unified Communication Manager) 12 Guide
  • Linux Ubuntu Redhat How To Extract Images from PDF
  • Linux and Windows Dual Boot Issue NIC Won't work After Booting Windows
  • Cisco CME How To Enable ACD hunt groups
  • How to install gns3 on Linux Ubuntu Mint
  • How to convert audio for Asterisk .wav format
  • Using Cisco CME Router with Asterisk as a dial-peer
  • Cisco CME How To Configure SIP Trunk VOIP
  • Virtualbox host Only Network Error Failed to save host network interface parameter - Cannot change gateway IP of host only network
  • Cisco CME and C7200 Router Testing and Learning Environment on Ubuntu 20+ Setup Tutorial Guide
  • Abusive IP ranges blacklist