Probleme:
„vCenter Server Service startet nicht“ / vCenter Datenbank wächst massiv an
Error Message „Could not allocate space for object ‘dbo.VPX_EVENT’.’VPXI_EVENT_USERNAME’ in database ‘VCDB’ because the ‘PRIMARY’ filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.“
Was ist passiert?
Die VMware vCenter Datenbank ist voll. Sie haben den Recovery Mode des Microsoft SQL Server bereits auf simple gestellt um die Datenmenge zu beschränken?
Was löst das Problem?
In der vCenter Datenbank werden je nach Einstellung des Logging Level eine Menge Events und Tasks protokolliert. Hierzu zählen zum Beispiel Informationen, Warnungen und Fehlermeldungen (Error) in Bezug auf Aktionen im vCenter. Will man allerdings nur Warnungen und Fehler protokolliert haben, kann die Datenbank erheblich verkleinert und der Logging Level entsprechend herunter gestellt werden.
Was ist zu tun?
Als erstes geht man in die Einstellungen seines VMware vCenter. Hier im Bereich logging, einfach die Einstellungen Treffen die man benötigt. In unserem Fall „Warning and Error“. Jetzt werden nur noch Warnungen und Fehler in der Datenbank protokolliert. Rein informative Nachrichten werden nicht mehr gespeichert.
Es besteht auch die Möglichkeit nach Angabe der ESXi Host und VM Anzahl, sich die theoretische Datenbankgröße berechnen zu lassen. So erhält man einen guten Anhaltspunkt, welche Datenmenge realistisch zu erwarten ist.
Damit ist es aber noch nicht getan. Es muss zusätzlich ein Skript auf der Datenbank laufen gelassen werden, welches Einträge über eine Gewisse Zeitspanne hinaus löscht. ACHTUNG: das Skript löscht Daten in Schüben in bestimmten Tabellen in der vCenter Datenbank. Stoppt vorher den vCenter Dienst und macht ein Full Backup der vCenter Datenbank!
Zum Löschen der Daten in der VPX_EVENT Tabelle:
- Verbinden sie sich mit der vCenter Datenbank (Servername_sql\SQL Datenbank
- Gehen sie zur vCenter Datenbank, klappen die auf und gehen zu den Tabellen (VIM_VCDB > Tabellen)
- Suchen sie sich die dbo.VPX_PARAMETER Tabelle, Rechtsklick und öffen (Bei SQL 2008 ist es Rechtsklick Edit Top 200 Rows)
- Passen sie event.maxAge auf 30, und event.maxAgeEnabled auf true an
- Passen sie task.maxAge auf 30, und task.maxAgeEnabled auf true an
- Will man die Laufzeit des Skriptes verkürzen, kann das Löschen auch Schritt für Schritt durchgeführt werden. Hierzu einfach das Skript dbo.cleanup_events_tasks_proc mit den Standard Werten laufen lassen, dann die event.maxAge und task.maxAge erst auf 60 und dann auf 30 anpassen und jeweils laufen lassen.
Das Löschen der Daten:
- Das Skript bzw. die Prozedur laufen lassen.
-
- VIM_VCDB > Programmierbarkeit > gespeicherte Prozeduren.
- Rechtsklick dbo.cleanup_events_tasks_proc und gespeicherte Prozedur ausführen auswählen
- Somit werden die Daten aus folgenden Tabellen auf Basis der Einstellung in maxAge gelöscht vpx_event, vpx_event_arg, und vpx_task
- Nach Durchlauf der Prozedur kann das Microsoft SQL Management Studio geschlossen werden.
Der genaue Ablauf als englischer Artikel kann auch in der VMware Knowledgebase nachgelesen werden unter der KB Nummer 1025914 oder unter diesem Link: vCenterDB