TASK ERROR: rbd error: ... - Löschen eines VM-Templates auf ceph nicht möglich!

fpausp

Renowned Member
Aug 31, 2010
688
54
93
Austria near Vienna
Guten Morgen,

leider bekomme ich einen Fehler beim Versuch ein Template zu löschen:

1773300051273.png

Hab danach mit der CLI einiges löschen können:

Code:
rbd snap unprotect IKT-Labor/base-41999-disk-0@__base__

rbd snap purge IKT-Labor/base-41999-disk-0

rbd rm base-41999-disk-0 -p IKT-Labor


Code:
root@pve2:~# rbd ls -l IKT-Labor
rbd: error opening vm-41032-disk-0: (2) No such file or directory
NAME                            SIZE      PARENT  FMT  PROT  LOCK
base-999996-disk-0                 1 MiB            2
base-999996-disk-0@__base__        1 MiB            2  yes
...
vm-999991-disk-0                   1 MiB            2
vm-999991-disk-1                   4 MiB            2
vm-999991-disk-2                 128 GiB            2
rbd: listing images failed: (2) No such file or directory

bekomme aber immer noch den Fehler wenn ich versuche das Template über die GUI zu entfernen.
 

Attachments

  • 1773300040412.png
    1773300040412.png
    4.3 KB · Views: 0
Last edited:
OK, ich denke ich habs gelöst, ich musste noch 41032 löschen...

Code:
rbd -p IKT-Labor rm vm-41032-disk-0

Ich würde jetzt noch gerne testen ob mit dem Ceph alles in Ordnung ist, kann mir bitte jemand einen Tipp aus der "best practice" geben?
 
Gut zu hören, dass es gelöst ist. Der Hinweis: `rbd rm` kann auch auf einem teilweise gelöschten Image problemlos ausgeführt werden — es toleriert einen fehlenden Header und bereinigt trotzdem das verbleibende ID-Objekt und den Verzeichniseintrag. Das ist das richtige Werkzeug für diese Situation, ohne manuelle `rados`-Eingriffe.

Warum `vm-41032-disk-0` in diesen teilweise gelöschten Zustand geraten ist: Das ist ein separates, bereits vorher bestehendes Problem vom Löschen von VM 41032 (unabhängig vom Template, an dem du gerade gearbeitet hast). Die Ursache liegt darin, dass `rbd rm` keine atomare Operation ist — es handelt sich um eine client-gesteuerte Abfolge einzelner RADOS-Operationen:


SchrittWas entfernt wird
1Datenobjekte (`rbd_data.<id>.*`) — der eigentliche Image-Inhalt
2Image-Header (`rbd_header.<id>`) — Metadaten: Größe, Features, Snapshots
3Journal (falls Journaling aktiviert ist)
4Object Map (`rbd_object_map.<id>`)
5ID-Objekt (`rbd_id.<name>`)
6Verzeichniseintrag in `rbd_directory` — das, was `rbd ls` liest

Jeder einzelne Schritt ist atomar und dauerhaft (fällt eine OSD mitten in einem Schritt aus, wiederholt der RADOS-Client die Operation, bis sie abgeschlossen ist). Aber es gibt keine verteilte Transaktion über die gesamte Abfolge. Wird der Client-Prozess zwischen den Schritten beendet — zum Beispiel durch einen Node-Neustart oder `systemctl restart pveproxy`, der einen `qm destroy`-Task nach Schritt 2, aber vor den Schritten 5–6 unterbricht — bleiben diese Metadaten-Objekte einfach zurück. Das Ergebnis ist ein Image, das `rbd ls` weiterhin auflistet (Verzeichniseintrag vorhanden), das librbd aber nicht öffnen kann (Header fehlt) — was genau dem `(2) No such file or directory` entspricht, das du bei `rbd ls -l` gesehen hast.

Für die laufende Ceph-Cluster-Überwachung die wichtigsten Befehle:

Bash:
# Allgemeiner Cluster-Status — hier anfangen

ceph -s


# Detaillierte Aufschlüsselung von Warnungen oder Fehlern

ceph health detail


# OSD-Auslastung pro Node — auf Ungleichgewichte prüfen

ceph osd df tree


# Pool-Auslastung

ceph df detail


# Auf blockierte oder degradierte Placement Groups prüfen

ceph pg stat

ceph pg dump_stuck   # zeigt blockierte inactive/unclean/undersized PGs


# RBD: tatsächliche Speichernutzung (berücksichtigt Thin Provisioning und COW)

rbd du -p IKT-Labor


# Prüfen, ob Images beim Auflisten Fehler melden

rbd ls -l IKT-Labor

Für regelmäßige Überwachung decken `ceph -s` und `ceph health detail` die meisten Fälle ab. Wenn `ceph health detail` `HEALTH_OK` ohne Warnungen meldet, ist der Cluster in gutem Zustand.

Zusätzliche Empfehlung: Die OSD-Auslastung regelmäßig mit `ceph osd df tree` prüfen. Wenn eine OSD oder ein Node deutlich höher ausgelastet ist als andere, lohnt sich ein Blick auf die CRUSH-Map-Gewichte und `rbd du` pro Pool, um unerwartet große Images zu identifizieren.

(I don't speak German — the translation above was done with a translation tool. Please excuse any awkward phrasing.)



Good to hear it's resolved. Worth noting: `rbd rm` is safe to run even on a partially-deleted image — it tolerates a missing header and still cleans up the remaining id object and directory entry, so it's the right tool for this situation rather than manual `rados` surgery.

As for why `vm-41032-disk-0` ended up in that partially-deleted state: it's a separate, pre-existing issue from a previous deletion of VM 41032 (unrelated to the template you were working on). The cause is that `rbd rm` is not an atomic operation — it is a client-driven sequence of individual RADOS operations:


StepWhat gets removed
1Data objects (`rbd_data.<id>.*`) — the actual image contents
2Image header (`rbd_header.<id>`) — metadata: size, features, snapshots
3Journal (if journaling is enabled)
4Object map (`rbd_object_map.<id>`)
5Id object (`rbd_id.<name>`)
6Directory entry in `rbd_directory` — what `rbd ls` reads

Each individual step is atomic and durable (if an OSD goes down mid-step, the RADOS client retries until the operation completes). But there is no distributed transaction across the full sequence. If the client process is killed between steps — for example, a node reboot or `systemctl restart pveproxy` interrupting a `qm destroy` task after step 2 but before steps 5–6 — those remaining metadata objects are simply never touched again. The result is an image that `rbd ls` still lists (directory entry present) but that librbd can't open (header gone), producing exactly the `(2) No such file or directory` you saw.

For ongoing Ceph health verification, the key commands:

Code:
# Overall cluster status — start here

ceph -s


# Detailed breakdown of any warnings or errors

ceph health detail


# OSD usage per node — check for imbalances

ceph osd df tree


# Pool-level usage

ceph df detail


# Check for any stuck or degraded placement groups

ceph pg stat

ceph pg dump_stuck   # shows stuck inactive/unclean/undersized PGs


# RBD-specific: actual on-disk usage (accounts for thin provisioning and COW)

rbd du -p IKT-Labor


# Verify no images are reporting errors when listing

rbd ls -l IKT-Labor


For periodic health monitoring, `ceph -s` and `ceph health detail` cover most cases. If `ceph health detail` shows `HEALTH_OK` with no warnings, the cluster is in good shape.

One additional recommendation: check the OSD utilization periodically with `ceph osd df tree`. When one OSD or node hits significantly higher utilization than others, it's worth checking your CRUSH map weights and `rbd du` per pool to identify unexpectedly large images.
 
Last edited:
  • Like
Reactions: fpausp