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 vCenter Appliance (evtl. an der Konsole, in den Support Optionen, erst 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.
- An der vCenter Appliance via SSH anmelden
- In die Bash wechseln
1shell - Den Postgres Client starten und mit der Datenbank „VCDB“ als user „postgres“ verbinden
1/opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres - Will man sich alle Tabellen anzeigen lassen… (hier aber nicht notwendig)
1\d
- Jetzt suchen wir die ID des Datastores, um diese ID bei weiteren Referenzierungen verwenden zu können:
1SELECT id FROM vpx_entity WHERE name = 'Datastore_1';
Es sollte jetzt folgende Ausgabe erscheinen, bei der die ID bei Euch vermutlich abweicht… - Jetzt durchsuchen wir die Datenbank nach den referenzierten Einträgen auf diese ID…
1SELECT * FROM vpx_ds_assignment WHERE ds_id=162667;
Das Ergebnis könnte so aussehen:
- Ok, wir haben also zwei Objekte, die scheinbar doch noch auf Datastore_1 referenzieren. Schauen wir gleich, welche genau das sind…
1SELECT * FROM vpx_entity WHERE id=165936;
Siehe da, erstmalig sieht man 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… 😉
1SELECT * FROM vpx_entity WHERE id=165936;
- 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…
1DELETE FROM vpx_ds_assignment WHERE ds_id=162667;
1DELETE FROM vpx_datastore WHERE id=162667;
1DELETE FROM vpx_vm_ds_space WHERE ds_id=162667;
Du hast mir den Tag gerettet!