Jak odstranit neexistující datastore z inventáře vCenter Serveru

Pokud např. zanikne datastore, aniž měl správce možnost jej odebrat korektně z inventory VCS, je cesta k nápravě pomocí modifikace databáze VCS. V tomto článku předpokládám VCS 6.7 v podobě „virtual appliance“ (dále VCSA).
Půjde nám o výmaz fyzicky již neexistujících datastore Hydra-datastore1x a Hydra-datastore2x.

Přihlašte se pomocí SSH do VCSA a příkazem „shell“ se přepněte do příkazového interpreteru.

Pomocí příkazu „cat /etc/vmware-vpx/embedded_db.cfg“ si vylistujte nastavení připojení k databázi. Řádek s parametrem PGUSER_PASSWORD obsahuje (mezi uvozovkami) heslo k databázi.

Nyní se pomocí následujících příkazů přepněte do bin adresáře aktuální instance PostgreSQL a spusťt

root@vcenter [ /opt/vmware/vpostgres/current/bin ]# cd /opt/vmware/vpostgres
root@vcenter [ /opt/vmware/vpostgres ]# ls -l
total 12
drwxr-xr-x 7 root root 4096 Feb 28 14:00 9.4
drwxr-xr-x 7 root root 4096 Feb 28 14:00 9.5
drwxr-xr-x 8 root root 4096 Dec 13 2018 9.6
lrwxrwxrwx 1 root root 3 Dec 13 2018 current -> 9.6
root@vcenter [ /opt/vmware/vpostgres ]# cd current
root@vcenter [ /opt/vmware/vpostgres/current ]# cd bin
root@vcenter [ /opt/vmware/vpostgres/current/bin ]# ./psql -d VCDB postgres
psql.bin (9.6.11 (VMware Postgres 9.6.11.0-11269216 release))
Type „help“ for help.
Cannot read termcap database;
using dumb terminal settings.
VCDB=#

Nyní si vypište seznam objektů datastore pomocí příkazu:

VCDB=# SELECT ID, NAME FROM VPX_DATASTORE;
id | name
——-+——————-
9489 | Kraken-datastore2
2442 | Hydra-datastore2x
100 | Hydra-datastore1x
15715 | Janus-datastore1
9488 | Kraken-datastore1
15782 | Hydra-datastore1
19293 | SynologyDS1517
19295 | SynologyDS1815
19316 | SynologyDS415
(9 rows)

V našem případě chceme odstranit již neexistující datastore s názvem „Hydra-datastore1x“ a „Hydra-datastore2x“.

Nyní je třeba smazat reference na ID objektu Hydra-datastore1x ze všech relevantních tabulek pomocí příkazů:

delete from VPX_DS_ASSIGNMENT where DS_ID=100;
delete from VPX_VM_DS_SPACE where DS_ID=100;
delete from VPX_DATASTORE where ID=100;

Nyní musíte smazat referenci na objekt z hlavní tabulky inventáře VCSA pomocí příkazu „delete from VPX_ENTITY where ID=100“.

Pro úspěšné dokončení musíte restartovat VCSA!