22 lines
1.7 KiB
Markdown
22 lines
1.7 KiB
Markdown
# 05 - Linstor & Storage Implementation
|
|
|
|
This document details the configuration enforcement executed by the Linstor roles.
|
|
|
|
## LVM Global Filter
|
|
To prevent PVE from detecting double LVM signatures (raw block vs DRBD layer), the playbook injects the following global filter into `/etc/lvm/lvm.conf`:
|
|
`global_filter =[ "r|^/dev/drbd|", "r|^/dev/mapper/[lL]instor|" ]`
|
|
|
|
## Storage Provisioning
|
|
The `community.general.lvg` task targets raw block devices strictly when the target string starts with `/dev/`. **The playbook does not invoke `wipefs`.** If residual partition tables exist on the target block device, the LVM module will purposefully fail to prevent data destruction.
|
|
|
|
## Double Provisioning Protection (local-lvm)
|
|
By default, Proxmox creates a local storage entry named `local-lvm` pointing to the `pve/data` thin-pool. If the playbook detects that you are reusing `pve/data` as a Linstor backend, it automatically executes `pvesm remove local-lvm`. This prevents users from accidentally deploying local VMs to the underlying pool, which causes silent thin-pool exhaustion and DRBD corruption. The `local` directory storage (`/var/lib/vz`) is intentionally retained for ISOs and backups.
|
|
|
|
## HA Controller Topology
|
|
Linstor Controller HA is handled via `drbd-reactor`.
|
|
1. A 200M DRBD resource (`linstor_db`) is spawned across all nodes.
|
|
2. The default `linstor-controller` systemd service is disabled.
|
|
3. A `var-lib-linstor.mount` unit is deployed.
|
|
4. The local `/var/lib/linstor` mount point is secured with the immutable flag (`chattr +i`). This guarantees that if the DRBD resource fails to mount, the local filesystem rejects writes, preventing database split-brains.
|
|
5. `drbd-reactor` manages the floating VIP and promoter plugin logic.
|