Manchmal kommt das schon vor
Das Problem
Der Datastore kann nicht (mehr) durchsucht werden, da ja nicht mehr zugegriffen werden kann.
Alle Stellen wurden durchsucht, aber eigentlich verweist wirklich nichts mehr drauf!?
Übrigens hat das Neustarten der Management Services der ESXi Hosts und auch der Reboot der vCenter Appliance nichts gebracht!
Es gibt aber eine Variante, nämlich den Eintrag in der vPostgres Datenbank und damit die Referenzierung zum Objekt zu finden, welches das Entfernen und damit „Ausblenden“ des Datastores ermöglicht. Klingt kompliziert, sind aber tatsächlich nur ein paar Zeilen, wenn man weiß wo und welche… 😉
Voraussetzungen
- Man benötigt Zugriff via SSH auf die vCenter Appliance (evtl. an der Konsole, in den Support Optionen, erst SSH aktivieren).
- Die root Anmeldedaten an der vCenter Appliance sind bekannt und liegen vor.
- Der Anzeigename des zu entfernenden Datastore ist bekannt.
Die Lösung
Wir gehen im Beispiel davon aus, dass wir den Datastore mit dem Namen Datastore_1 entfernen wollen.
-
- Ok, wir haben also zwei Objekte, die scheinbar doch noch auf Datastore_1 referenzieren. Schauen wir gleich, welche genau das sind…
SELECT * FROM vpx_entity WHERE id=165936;
Siehe da, erstmalig sieht man das Objekt im Klartext! Kommt Dir bekannt vor? Na dann sollte man vllt. mal einen Blick in den Template Ordner werfen, ob da nicht doch noch ein oder in unserem Fall zwei alte Templates ihr Unwesen treiben!
Den zweiten Eintrag ebenfalls prüfen und siehe da, ein noch älteres Template… 😉
SELECT * FROM vpx_entity WHERE id=165936;
- Ok, wir haben also zwei Objekte, die scheinbar doch noch auf Datastore_1 referenzieren. Schauen wir gleich, welche genau das sind…
- Im vSphere Webclient suchen und das/die betreffende(n) Objekt(e) mit einem Rechtsklick und „Remove from Inventory“ entfernen. Der Datastore sollte jetzt automatisch verschwinden.
- Hartnäckige Fälle kann man natürlich jetzt auch via SQL Statement entfernen. In unserem Fall löschen wir einfach alle Referenzierungen für die Datastore ID…
DELETE FROM vpx_ds_assignment WHERE ds_id=162667;
DELETE FROM vpx_vm_ds_space WHERE ds_id=162667;
DELETE FROM vpx_datastore WHERE id=162667;
Das war’s, jetzt nur noch die Lorbeeren einheimsen, ein bisschen wichtig tun und alles ist wieder gut…
Du hast mir den Tag gerettet!
Vielen Dank dir Bester MANN!!!!! du hast mir den Tag gerettet! Super beschrieben.
Hi, bei mir hatte ein ESX Server eine seiner Platten verloren (nur mein Homelab hier) und dann kann man die nicht wieder hinbekommen – also musste ich die auf diese Methode löschen, hat gut funktioniert.
Eine Erwähnung noch:
Man sollte die Reihenfolge der Commandos (der letzten zwei) Umdrehen:
DELETE FROM vpx_vm_ds_space WHERE ds_id=162667;
DELETE FROM vpx_datastore WHERE id=162667;
Ansonsten beschwert sich die Datenbank, daß man einen Inkonsistenz verursachen würde, wenn man zuerst versucht den vpx_datastore Eintrag zu löschen.
Danke für den Tip, hab ich gerne übernommen!
super Artikel. Hat mich gerettet!
Bei mir war es eine vCLS VM