[DRBD-user] "drbdmanage resize-volume" fails

Alexander Barton alex at barton.de
Wed Oct 11 18:35:07 CEST 2017

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


Hi All,
Hi Roland!

So I tried to debug my "resize problem" (see below) further, and I think 
I found the culprit -- including a patch:

drbdmanaged 0.99.12 tries to run the following command:

  drbdadm -vvv -- --assume-clean -c /var/lib/drbd.d/drbdmanage_vm-1001-disk-2.res resize vm-1001-disk-2/0

And this fails with "'vm-1001-disk-2/0' not defined in your config (for 
this host)". And this is because the syntax of the command above is 
wrong: the "-c /var/lib/drbd.d/drbdmanage_vm-1001-disk-2.res" is passed 
to backend and not handled by drbdadm, because of the "--" in the 
command line!

The right command to run would be the following:

  drbdadm -vvv -c /var/lib/drbd.d/drbdmanage_vm-1001-disk-2.res -- --assume-clean resize vm-1001-disk-2/0

I patched the "resize" function in drbd/commands.py like this:

--- drbd/commands.py.orig	2017-05-24 14:25:29.000000000 +0200
+++ drbd/commands.py	2017-10-11 18:06:54.067422451 +0200
@@ -75,10 +75,10 @@
             return 1
 
         exec_args = [self.DRBDADM_UTIL, "-vvv"]
+        exec_args += self._direct_res(res_name)
         if assume_clean:
             exec_args.append("--")
             exec_args.append("--assume-clean")
-        exec_args += self._direct_res(res_name)
         exec_args.append("resize")
         exec_args.append(res_name + "/" + str(vol_id))
         return self._run_drbdutils(exec_args)

... and now it works for me!

The signature of resize() is this:

  def resize(self, res_name, vol_id, assume_clean):

So basically I thing this error will happen ieach time "assume_clean" is set.

What do you think?

Thanks!
Alex


Am 26.09.2017 um 17:53 schrieb Alexander Barton <abarton at thomas-daily.de>:

>Hi all!
>
>I’m playing with drbdmanage in a test setup (two node cluster), and “drbdmanage resize” reproducibly fails for me.
>
>Steps to reproduce:
>
>$ drbdmanage new-volume -d 2 test 1
>Operation completed successfully
>Operation completed successfully
>$ # check that everything is ok:
>.drbdctrl role:Secondary
>  volume:0 disk:UpToDate
>  volume:1 disk:UpToDate
>  pvc1st02 role:Primary
>    volume:0 peer-disk:UpToDate
>    volume:1 peer-disk:UpToDate
>
>test role:Secondary
>  disk:UpToDate
>  pvc1st02 role:Secondary
>    peer-disk:UpToDate
>
>$ drbdmanage list-resources
>+------------------------------------------------------------------------------+
>| Name |                                                               | State |
>|------------------------------------------------------------------------------|
>| test |                                                               |    ok |
>+------------------------------------------------------------------------------+
>$ drbdmanage list-volumes
>+------------------------------------------------------------------------------+
>| Name | Vol ID |  Size | Minor |                                      | State |
>|------------------------------------------------------------------------------|
>| test |      0 | 1 GiB |   110 |                                      |    ok |
>+------------------------------------------------------------------------------+
>
>Now everything looks ok on both nodes, volume was created with 1 GB in size.
>Let’s resize it to 3 GB:
>
>$ drbdmanage resize-volume test 0 3
>Operation completed successfully
>
>BUT:
>
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       drbdsetup: External command 'drbdsetup': Exit code 0
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: WARNING    DrbdManager: Marked storage resource 'test' volume 0 deployed because DRBD reports the volume online and attached
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: WARNING    DrbdManager: Marked resource 'test' deployed because DRBD reports all its volumes deployed
>Sep 26 17:50:55 pvc1st01 org.drbd.drbdmanaged[908]:   Rounding size to boundary between physical extents: 3.00 GiB.
>Sep 26 17:50:55 pvc1st01 org.drbd.drbdmanaged[908]:   Size of logical volume drbdpool/test_00 changed from 1.00 GiB (257 extents) to 3.00 GiB (769 extents).
>Sep 26 17:50:55 pvc1st01 dmeventd[868]: No longer monitoring thin pool drbdpool-drbdthinpool-tpool.
>Sep 26 17:50:55 pvc1st01 lvm[868]: Monitoring thin pool drbdpool-drbdthinpool-tpool.
>Sep 26 17:50:55 pvc1st01 org.drbd.drbdmanaged[908]:   Logical volume drbdpool/test_00 successfully resized.
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: Running external command: drbdadm --config-to-test /var/lib/drbd.d/drbdmanage_test.res.tmp --config-to-exclude /var/lib/drbd.d/drbdmanage_test.res sh-nop
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: External command 'drbdadm': Exit code 0
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: Running external command: drbdadm -c /var/lib/drbd.d/drbdmanage_test.res.tmp -d up test
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: External command 'drbdadm': Exit code 0
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: Running external command: drbdsetup wait-connect-resource --wait-after-sb=yes --wfc-timeout=10 test
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: External command 'drbdsetup': Exit code 0
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: INFO       DrbdAdm: Running external command: drbdadm -vvv -- --assume-clean -c /var/lib/drbd.d/drbdmanage_test.res resize test/0
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: ERROR      DrbdAdm: External command 'drbdadm': Exit code 1
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: ERROR      drbdadm/stderr: 'test/0' not defined in your config (for this host).
>Sep 26 17:50:55 pvc1st01 drbdmanaged[1747]: ERROR      Resizing resource 'test' volume 0: DRBD resize command failed
>
>… and “drbdmanage list-volumes” still shows the volume with 1 GB.
>
>Sometimes I can see a “FAILED” in the “drbdmanage list-volumes” output, but not all the time.
>
>Any ideas?
>
>Version information:
>
>pvc1st01.int.dc3:~ # uname -a
>Linux pvc1st01 4.10.17-3-pve #1 SMP PVE 4.10.17-21 (Thu, 31 Aug 2017 14:57:17 +0200) x86_64 GNU/Linux
>pvc1st01.int.dc3:~ # cat /proc/drbd
>version: 9.0.9-1 (api:2/proto:86-112)
>GIT-hash: f7b979e7af01813e031aac579140237640c94569 build by root at debian9-wks01, 2017-09-20 13:07:09
>Transports (api:16): tcp (9.0.9-1)
>pvc1st01.int.dc3:~ # drbdmanage --version
>drbdmanage 0.99.11; GIT-hash: 30082017f3c5487fac791d42bf48deb91c148204
>
>Thanks!
>Alex



More information about the drbd-user mailing list