ClusterLabs / ClusterLabs/anvil

[storage] anvil-manage-server-storage database gets corrupted in server delete / create

Open
#657 9 comments 0 reactions 1 assignee Claimed by @digimer View on GitHub
pending test automation tested manually
Dominant language
Perl
Stars
7
Forks
6
PR merge metrics
No merged PRs in 30d

Description

Reproducer is easy, just takes time:

provision a server:

anvil-provision-server --ci-test --name an-test-deploy1 --os centos-stream9 --cpu 4 --ram 4G --storage-group "Storage group 1" --storage-size 30G --install-media CentOS-Stream-9-latest-x86_64-dvd1.iso --driver-disc deploy1.iso

(wait for server to be deployed)

```
anvil-manage-server-storage -vvv --log-secure --server an-test-deploy1
Working with the server: [an-test-deploy1], UUID: [a89d7fd5-1a1e-4c27-8148-056bd564ddea]

Disk Drives:
- Target: [vda], boot: [01], Replication Volume: [an-test-deploy1/0]
|- Resource / LV / Metadata sizes: [30.00 GiB / 30.00 GiB / 2.85 MiB], free space: [170.00 GiB]

Optical Drives:
- Target: [sda], boot: [02], ISO: [/mnt/shared/files/CentOS-Stream-9-latest-x86_64-dvd1.iso]
- Target: [sdb], boot: [03], ISO: [/mnt/shared/files/deploy1.iso]

Subnodes:
|- Name: [an-a01n01], UUID: [94b3bad6-2c4f-499e-b3e8-7cccb06793e5]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [170.00 GiB]
|- Name: [an-a01n02], UUID: [14d0bb17-6160-4f59-aa43-5a300653445b]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [170.00 GiB]
```

Add a disk:

anvil-manage-server-storage -vvv --log-secure --add 20G --disk vdb --server an-test-deploy1 --storage-group "Storage group 1" --confirm

disk is visible in the VM:

ssh an-test-deploy1 cat /proc/partitions |grep vdb
252 16 20969564 vdb

```
anvil-manage-server-storage -vvv --log-secure --server an-test-deploy1
Working with the server: [an-test-deploy1], UUID: [a89d7fd5-1a1e-4c27-8148-056bd564ddea]

Disk Drives:
- Target: [vda], boot: [01], Replication Volume: [an-test-deploy1/0]
|- Resource / LV / Metadata sizes: [30.00 GiB / 30.00 GiB / 2.85 MiB], free space: [170.00 GiB]
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 2938.
Use of uninitialized value $lv_name in hash element at /usr/sbin/anvil-manage-server-storage line 2940.
Use of uninitialized value $resource_size in subtraction (-) at /usr/sbin/anvil-manage-server-storage line 2941.
Use of uninitialized value $lv_size in subtraction (-) at /usr/sbin/anvil-manage-server-storage line 2941.
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 3098.
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 3099.
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 3100.
Use of uninitialized value $backing_lv in hash element at /usr/sbin/anvil-manage-server-storage line 3101.
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 3098.
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 3099.
Use of uninitialized value $drbd_volume in hash element at /usr/sbin/anvil-manage-server-storage line 3100.
Use of uninitialized value $backing_lv in hash element at /usr/sbin/anvil-manage-server-storage line 3101.
- Target: [vdb], boot: [--], Replication Volume: [an-test-deploy1/]
|- Resource / LV / Metadata sizes: [0 B / 0 B / 0 B], free space: [0 B]

Optical Drives:
- Target: [sda], boot: [02], ISO: [/mnt/shared/files/CentOS-Stream-9-latest-x86_64-dvd1.iso]
- Target: [sdb], boot: [03], ISO: [/mnt/shared/files/deploy1.iso]

Subnodes:
|- Name: [an-a01n01], UUID: [94b3bad6-2c4f-499e-b3e8-7cccb06793e5]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [170.00 GiB]
Use of uninitialized value $this_scan_lvm_lv_path in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
|- Volume: [1], backing device: [/dev/anvil-test-vg/an-test-deploy1_1], DRBD minor: [1], size: [20.00 GiB]
^- In storage group: [], size: [0 B], free: [0 B]
Use of uninitialized value $this_scan_lvm_lv_path in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
|- Name: [an-a01n02], UUID: [14d0bb17-6160-4f59-aa43-5a300653445b]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [170.00 GiB]
Use of uninitialized value $this_scan_lvm_lv_path in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
|- Volume: [1], backing device: [/dev/anvil-test-vg/an-test-deploy1_1], DRBD minor: [1], size: [20.00 GiB]
^- In storage group: [], size: [0 B], free: [0 B]
Use of uninitialized value $this_scan_lvm_lv_path in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
```

after some minutes, the output goes back to normal:

```
anvil-manage-server-storage -vvv --log-secure --server an-test-deploy1
Working with the server: [an-test-deploy1], UUID: [a89d7fd5-1a1e-4c27-8148-056bd564ddea]

Disk Drives:
- Target: [vda], boot: [01], Replication Volume: [an-test-deploy1/0]
|- Resource / LV / Metadata sizes: [30.00 GiB / 30.00 GiB / 2.85 MiB], free space: [150.00 GiB]
- Target: [vdb], boot: [--], Replication Volume: [an-test-deploy1/1]
|- Resource / LV / Metadata sizes: [20.00 GiB / 20.00 GiB / 1.91 MiB], free space: [150.00 GiB]

Optical Drives:
- Target: [sda], boot: [02], ISO: [/mnt/shared/files/CentOS-Stream-9-latest-x86_64-dvd1.iso]
- Target: [sdb], boot: [03], ISO: [/mnt/shared/files/deploy1.iso]

Subnodes:
|- Name: [an-a01n01], UUID: [94b3bad6-2c4f-499e-b3e8-7cccb06793e5]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [150.00 GiB]
|- Volume: [1], backing device: [/dev/anvil-test-vg/an-test-deploy1_1], DRBD minor: [1], size: [20.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [150.00 GiB]
|- Name: [an-a01n02], UUID: [14d0bb17-6160-4f59-aa43-5a300653445b]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [150.00 GiB]
|- Volume: [1], backing device: [/dev/anvil-test-vg/an-test-deploy1_1], DRBD minor: [1], size: [20.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [150.00 GiB]
```

delete the server:

anvil-delete-server -vv --log-secure --force --server an-test-deploy1

make sure all server resources have been released:
pcs status |grep deploy1
drbdadm status
# No currently configured DRBD found.
lvs

no mention of deploy1.

recreate the server:

anvil-provision-server --ci-test --name an-test-deploy1 --os centos-stream9 --cpu 4 --ram 4G --storage-group "Storage group 1" --storage-size 30G --install-media CentOS-Stream-9-latest-x86_64-dvd1.iso --driver-disc deploy1.iso

```
[root@an-a01n01 ~]# pcs status |grep deploy1
* an-test-deploy1 (ocf:alteeve:server): Started an-a01n01
[root@an-a01n01 ~]# anvil-manage-server-storage -vvv --log-secure --server an-test-deploy1
Working with the server: [an-test-deploy1], UUID: [a89d7fd5-1a1e-4c27-8148-056bd564ddea]
The server: [an-test-deploy1] has been deleted.
```

wait some time and observe the DB corruption. The VM, that is brand new and created with only one disk, still expects an extra disk that does not exist:

```
anvil-manage-server-storage -vvv --log-secure --server an-test-deploy1
Working with the server: [an-test-deploy1], UUID: [a89d7fd5-1a1e-4c27-8148-056bd564ddea]
The server: [an-test-deploy1] has been deleted.
[root@an-a01n01 ~]# anvil-manage-server-storage -vvv --log-secure --server an-test-deploy1
Working with the server: [an-test-deploy1], UUID: [84874f9a-8100-4a2f-b1d7-29a5972ecb2f]

Disk Drives:
- Target: [vda], boot: [01], Replication Volume: [an-test-deploy1/0]
|- Resource / LV / Metadata sizes: [30.00 GiB / 30.00 GiB / 2.85 MiB], free space: [170.00 GiB]

Optical Drives:
- Target: [sda], boot: [02], ISO: [/mnt/shared/files/CentOS-Stream-9-latest-x86_64-dvd1.iso]
- Target: [sdb], boot: [03], ISO: [/mnt/shared/files/deploy1.iso]

Subnodes:
|- Name: [an-a01n01], UUID: [94b3bad6-2c4f-499e-b3e8-7cccb06793e5]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [170.00 GiB]
|- Volume: [1], backing device: [], DRBD minor: [1], size: [20.00 GiB]
^- In storage group: [], size: [0 B], free: [0 B]
Use of uninitialized value $backing_disk in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
Use of uninitialized value $backing_disk in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
|- Name: [an-a01n02], UUID: [14d0bb17-6160-4f59-aa43-5a300653445b]
|- Volume: [0], backing device: [/dev/anvil-test-vg/an-test-deploy1_0], DRBD minor: [0], size: [30.00 GiB]
^- In storage group: [Storage group 1], size: [200.00 GiB], free: [170.00 GiB]
|- Volume: [1], backing device: [], DRBD minor: [1], size: [20.00 GiB]
^- In storage group: [], size: [0 B], free: [0 B]
Use of uninitialized value $backing_disk in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
Use of uninitialized value $backing_disk in string eq at /usr/sbin/anvil-manage-server-storage line 3265.
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.