# Differences in DRBD resources

**URL:** <https://forums.linbit.com/t/differences-in-drbd-resources/557>\
**Category:** LINSTOR\
**Tags:** drbd, linstor\
**Created:** [January 18, 2025, 5:01pm UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557 "2025-01-18T17:01:35Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![proxmeup](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@proxmeup](https://forums.linbit.com/u/proxmeup)\
**Post date:** [January 18, 2025, 5:01pm UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/1 "2025-01-18T17:01:35Z")

</div>

I’m not sure whether this is the correct Category, for this topic stems from a problem I see with DRBD resources created by LINSTOR through the LINBIT Proxmox plugin. So it might be DRBD as well as LINSTOR as well as LINBIT SDS. @Mods: feel free to move around.

After [my journey with LINBIT SDS](https://forums.linbit.com/t/proxmox-no-drbd-storage-while-linbit-controller-is-down/489/30) and before I go further with LINSTOR controller HA, I checked the already cerated and running resources. Because of the problems I had during my journey, DRBD resources on my Proxmox cluster were created under different conditions: with or without the presence of a tie-breaker / DRBD quorum. But every DRBD resource was created using the LINBIT SDS plugin!

The differences I see are regarding to the connections / peer nodes I see for different resources. I guess best explained by output of commands. For this I’d like to provide you with the environment:

pve-1: Proxmox cluster node with disks  
pve-2: Proxmox cluster node with disks  
raspi-1: diskless node acting as Proxmox qDevice quorum and LINBIT tie-breaker / DRBD quorum

```auto
root@pve-1:~# drbdsetup status **pm-575f24e5**
pm-575f24e5 role:Secondary
  disk:UpToDate open:no
  pve-2 role:Primary
    peer-disk:UpToDate
  raspi-1 role:Secondary
    peer-disk:Diskless

(Hint: raspi-1 is missing)
root@pve-1:~# drbdsetup status **pm-335cc2f2**
pm-335cc2f2 role:Secondary
  disk:UpToDate open:no
  pve-2 role:Primary
    peer-disk:UpToDate

(Hint: compare the connections sections)
root@pve-1:~# drbdsetup show pm-575f24e5
resource "pm-575f24e5" {
    options {
        quorum majority;
        on-no-quorum io-error;
    }
    _this_host {
        node-id 1;
        volume 0 {
            device minor 1006;
            disk "/dev/pve/pm-575f24e5_00000";
            meta-disk internal;
            disk {
                rs-discard-granularity	65536; # bytes
            }
        }
    }
    connection {
        _peer_node_id 0;
        path {
            _this_host ipv4 192.168.113.21:7006;
            _remote_host ipv4 192.168.113.22:7006;
        }
        net {
            allow-two-primaries	yes;
            cram-hmac-alg "sha1";
            shared-secret "4irwAj6sEmAAGiVune2z";
            verify-alg "crct10dif";
            _name "pve-2";
        }
    }
    connection {
        _peer_node_id 2;
        path {
            _this_host ipv4 192.168.113.21:7006;
            _remote_host ipv4 192.168.111.20:7006;
        }
        net {
            allow-two-primaries	yes;
            cram-hmac-alg "sha1";
            shared-secret "4irwAj6sEmAAGiVune2z";
            verify-alg "crct10dif";
            _name "raspi-1";
        }
        volume 0 {
            disk {
                bitmap no;
            }
        }
    }
}

root@pve-1:~# drbdsetup show pm-335cc2f2
resource "pm-335cc2f2" {
    _this_host {
        node-id 0;
        volume 0 {
            device minor 1005;
            disk "/dev/pve/pm-335cc2f2_00000";
            meta-disk internal;
            disk {
                rs-discard-granularity	65536; # bytes
            }
        }
    }
    connection {
        _peer_node_id 1;
        path {
            _this_host ipv4 192.168.113.21:7005;
            _remote_host ipv4 192.168.113.22:7005;
        }
        net {
            allow-two-primaries	yes;
            cram-hmac-alg "sha1";
            shared-secret "fI2MVgaBxnvFvsj4aB9s";
            verify-alg "crct10dif";
            _name "pve-2";
        }
    }
}

```

Also running certain commands creates different output:

```auto
(Hint: raspi-1 is missing resource pm-335cc2f2 in the following)
root@pve-1:~# linstor node set-property pve-1 DrbdOptions/AutoEvictAllowEviction false
SUCCESS:
    Successfully set property key(s): DrbdOptions/AutoEvictAllowEviction
SUCCESS:
Description:
    Node 'pve-1' modified.
Details:
    Node 'pve-1' UUID is: bfe6c590-9157-45fc-810a-a1b410d097f5
SUCCESS:
    (raspi-1) Node changes applied.
SUCCESS:
    (raspi-1) Resource 'pm-575f24e5' [DRBD] adjusted.
SUCCESS:
    (pve-2) Node changes applied.
SUCCESS:
    (pve-2) Resource 'pm-335cc2f2' [DRBD] adjusted.
SUCCESS:
    (pve-2) Resource 'pm-575f24e5' [DRBD] adjusted.

(Hint: resource pm-335cc2f2 is completely missing in the following)
root@pve-1:~# linstor node set-property raspi-1 DrbdOptions/AutoEvictAllowEviction false
SUCCESS:
    Successfully set property key(s): DrbdOptions/AutoEvictAllowEviction
SUCCESS:
Description:
    Node 'raspi-1' modified.
Details:
    Node 'raspi-1' UUID is: 722433a6-b8a4-4756-b73d-ace7055b55c3
SUCCESS:
    (raspi-1) Node changes applied.
SUCCESS:
    (raspi-1) Resource 'pm-575f24e5' [DRBD] adjusted.
SUCCESS:
    (pve-1) Node changes applied.
SUCCESS:
    (pve-1) Resource 'pm-575f24e5' [DRBD] adjusted.
SUCCESS:
    (pve-2) Node changes applied.
SUCCESS:
    (pve-2) Resource 'pm-575f24e5' [DRBD] adjusted.

```

Now the questions:

- what has happened?
- is this still correct?
- should it be corrected? How?

---

<div class="post-metadata">

**Author:** ![proxmeup](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@proxmeup](https://forums.linbit.com/u/proxmeup)\
**Post date:** [January 28, 2025, 4:30am UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/2 "2025-01-28T04:30:56Z")

</div>

Does anybody have knowledge, please?

---

<div class="post-metadata">

**Author:** ![kermat](https://yyz1.discourse-cdn.com/flex003/user_avatar/forums.linbit.com/kermat/32/21_2.png) [@kermat](https://forums.linbit.com/u/kermat)\
**Post date:** [January 31, 2025, 6:24pm UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/3 "2025-01-31T18:24:09Z")

</div>

> [@proxmeup](#):
>
> - what has happened?

It looks like you created the `pm-335cc2f2` VM while the `raspi-1` node was offline. LINSTOR couldn’t assign a diskless tiebreaker resource to it, so it never got one.

> [@](#):
>
> - is this still correct?

Not if you intend to achieve quorum for that resource.

> [@](#):
>
> - should it be corrected? How?

Yes. You can manually assign the diskless resource to `raspi-1`:

```txt
linstor resource create raspi-1 pm-335cc2f2 --drbd-diskless

```

---

<div class="post-metadata">

**Author:** ![proxmeup](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@proxmeup](https://forums.linbit.com/u/proxmeup)\
**Post date:** [February 4, 2025, 8:53am UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/4 "2025-02-04T08:53:23Z")

</div>

Thanks for your answer. In my case, raspi-1 is a diskless tie breaker. raspi-1 is not meant to serve access to the resource.

If I do linstor resource list, every “correct” resource has three nodes (pve-1, pve-2 and raspi-1) with raspi-1’s state column saying _TieBreaker_.

If I issue

`linstor resource create raspi-1 pm-335cc2f2 --drbd-diskless`

the state column for raspi-1 will be _Diskless_. Shouldn’t it be _TieBreaker_?

Hmmm, looking through resource list, linstor\_db is also Diskless instead of TieBreaker. linstor\_db is a resource built following your [Linstor controller HA guide](https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-linstor_ha).

---

<div class="post-metadata">

**Author:** ![proxmeup](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@proxmeup](https://forums.linbit.com/u/proxmeup)\
**Post date:** [February 12, 2025, 3:50pm UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/5 "2025-02-12T15:50:04Z")

</div>

May I kindly ask for a final answer?

---

<div class="post-metadata">

**Author:** ![ghernadi](https://avatars.discourse-cdn.com/v4/letter/g/9e8a1a/32.png) [@ghernadi](https://forums.linbit.com/u/ghernadi)\
**Post date:** [February 13, 2025, 6:00pm UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/6 "2025-02-13T18:00:11Z")

</div>

This is completely fine and normal and nothing to worry about.

To begin with the explanation, let me start by saying that a _TieBreaker_ is just a special kind of _diskless_ resource. The _only_ difference in LINSTOR between a _TieBreaker_ and a _Diskless_ resource is how LINSTOR deals with this resource if for example you get an additional resource.

You usually only need a _TieBreaker_ if you would otherwise only have 2 peers. If the connection between these two peers break, none of the two peers would know if the other one is still alive / could continue the service. This situation does not happen if you have 3 peers (regardless if they are diskful or diskless), since if you lose one connection, the majority (2) peers still see each other, can figure out that they have majority so they can keep quorum while the minority (the isolated peer) also knows that it no longer has quorum.

So, if you have 2 diskful + 1 _TieBreaker_ resource in LINSTOR and you either delete 1 diskful or add another diskful, you will end up in either just 1 or 3 diskful peers. In neither case would a single additional _TieBreaker_ help you. That is why LINSTOR would be “brave enough” to delete such a _TieBreaker_ resource.

LINSTOR will under no circumstances delete a _Diskless_ on its own, even if you would do the same as in the scenarios above. That means, if you go from 2 diskful + 1 diskless (not a tiebreaker this time) resources to 1 or 3 diskful, LINSTOR will **not** delete the diskless resource for you. Having 1 or 3 diskful + 1 diskless does not help you with quorum, but LINSTOR still thinks that you want this diskless resource to stay there (maybe a VM will try to access it soon).

Another (slightly briefer) approach to explain this: A _TieBreaker_ is just a “LINSTOR-managed _Diskless_ resource”. A _TieBreaker_ is automatically created by LINSTOR and automatically deleted by LINSTOR if needed. The user can only create _Diskless_ resources, no _TieBreaker_s.

* * *

A side note: If a _TieBreaker_ resource gets _primary_ on DRBD level, it will automatically switch into _Diskless_ state/type, since LINSTOR can no longer assume that the resource can safely be removed in case it is no longer needed as a tie-breaker.

---

<div class="post-metadata">

**Author:** ![proxmeup](https://avatars.discourse-cdn.com/v4/letter/p/e47774/32.png) [@proxmeup](https://forums.linbit.com/u/proxmeup)\
**Post date:** [February 16, 2025, 9:03am UTC](https://forums.linbit.com/t/differences-in-drbd-resources/557/7 "2025-02-16T09:03:59Z")

</div>

Thank you very much for the explanation. My 2+1 config should be fine now.
