vSphere 7 – Remove Inaccessible datastore from inventory

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

  1. Man benötigt Zugriff via SSH auf die vCenter Appliance (evtl. an der Konsole, in den Support Optionen, erst SSH aktivieren).
  2. Die root Anmeldedaten an der vCenter Appliance sind bekannt und liegen vor.
  3. 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.

    1. An der vCenter Appliance via SSH anmelden
    2. In die Bash wechseln
      shell
    3. Den Postgres Client starten und mit der Datenbank „VCDB“ als user „postgres“ verbinden
      /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
    4. Will man sich alle Tabellen anzeigen lassen… (hier aber nicht notwendig)
      \d

    1. Jetzt suchen wir die ID des Datastores, um diese ID bei weiteren Referenzierungen verwenden zu können:
      SELECT id FROM vpx_entity WHERE name = 'Datastore_1';

      Es sollte jetzt folgende Ausgabe erscheinen, bei der die ID bei Euch vermutlich abweicht…

    1. Jetzt durchsuchen wir die Datenbank nach den referenzierten Einträgen auf diese ID…
      SELECT * FROM vpx_ds_assignment WHERE ds_id=162667;

      Das Ergebnis könnte so aussehen:

    1. 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;

  1. 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.
  2. 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…

Beitrag Teilen via...

5 Kommentare

  1. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite ist durch reCAPTCHA und Google geschützt Datenschutz-Bestimmungen und Nutzungsbedingungen anwenden.