VMware vCenter läuft nicht mehr, weil die maximale Datenbankgröße erreicht ist

Bei der Kontrolle des VMware vCenter eines Kunden benötigt der vSphere Client ungewöhnlich lange für den Start, verbindet sich dann auch nach mehreren Minuten Wartezeit nicht mit einem der ESX und hängt sich schließlich auf. Das Ereignisprotokoll ist voller Fehler mit der Quelle MSSQL_$SQLEXP_VIM, meistens mit der Event-ID 1827. Der Fehlertext verweist darauf, dass die maximale lizensierte Datenbankgröße von 4096 MB überschritten wurde.

Eine Analyse der Installation zeigt dass dieser (schon etwas länger laufende) VMware vCenter als Datenbank einen „Microsoft SQL Server 2005 Express“ verwendet, bei dem die maximale Dateigröße pro Datenbank tatsächlich 4 GB ist.

In dem VMware Knowledgebase-Artikel 1025914 wird auf diese Problematik Bezug genommen. Zusammengefaßt muß man mit dem „Microsoft SQL Server Management Studio“ in mehreren Schritten die Datenbank verkleinern.

  • Zuerst nach einem Rechtsklick auf „Datenbanken -> VIM_VCDB -> Tabellen -> dbo.VPX_PARAMETER“ im Kontextmenü den Befehl „Oberste 200 Zeilen bearbeiten“ auswählen. Im folgenden Fenster im ersten Schritt die Werte für „event.maxAge“ unverändert auf dem Default 180 stehen lassen, aber den Wert von „event.maxAgeEnabled“ auf „true“ ändern. Genauso mit „task.maxAge“ und „task.maxAgeEnabled“ verfahren.
  • Dann nach einem Rechtsklick auf „Datenbanken -> VIM_VCDB -> Programmierbarkeit -> Gespeicherte Prozeduren -> dbo.cleanup_events_tasks_proc“ im Kontextmenü den Befehl „Gespeicherte Prozedur ausführen …“ auswählen. Es öffnet sich ein neues Fenster und die Prozedur wird automatisch gestartet, was an der laufenden Zeit in der untersten Zeile erkennbar ist.
  • Wenn alles gut geht, erscheint nach einiger Zeit (10-30 Minuten!) das Ergebnis „0“. Wahrscheinlich wird aber irgendwann ein Fehler erscheinen, dass das Transaction-Log voll ist. Mit Hilfe eines Blog-Eintrags habe ich hierfür folgende Hilfe gefunden: Nach einem Rechtsklick auf „Datenbanken -> VIM_VCDB“ im Kontextmenü den Befehl „Tasks -> Verkleinern -> Dateien“ auswählen. Im folgenden Fenster als Dateityp „Protokoll“ wählen und die Verkleinerung mit OK starten. Anschließend die gespeicherte Prozedur „dbo.cleanup_events_tasks_proc“ erneut starten. Jetzt sollte sie ohne Fehler durchlaufen.
  • Jetzt die Werte für „event.maxAge“ und „task.maxAge“ auf 120 reduzieren und die gespeicherte Prozedur „dbo.cleanup_events_tasks_proc“ erneut laufen lassen, was wieder 10-30 Minuten dauern kann. Dann die beiden Werte auf 60 reduzieren und die gespeicherte Prozedure wieder laufen lassen. Schließlich die beiden Werte auf 30 reduzieren und die gespeicherte Prozedur ein letztes Mal laufen lassen.
  • Zum Abschluß habe ich zur Sicherheit noch einmal wie oben beschrieben mit „Tasks -> Verkleinern -> Dateien“ das „Protokol“ und jetzt auch die „Datenbank“ verkleinert

Nach diesen Schritt läuft der VMware vCenter wieder sauber, das Backup mit Veeam funktioniert und es erscheinen keine Fehler mit im Ereignisprotokoll. Durch diese Änderungen sollte ein erneutes Anwachsen der Datenbank auf die kritische Größe verhindert werden. Da man jetzt den vSphere Client wieder benutzen kann, sollte man unter „Verwaltung -> vCenter Server-Einstellungen…“ und dort unter „Datenbankaufbewahrungs-richtlinie“ kontrollieren, ob die oben manuell vorgenommenen Änderungen (beide Optionen aktiviert und auf 30 Tage beschränkt) richtig übernommen wurden.