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