Upgrades am ESXi sind hin und wieder notwendig um seine eigene IT Infrastruktur aktuell zu halten. Blöd ist es allerdings immer, wenn etwas nicht wie gewohnt funktioniert.

In diesem Fall geht es um das Upgrade 6.5 für den VMware Hypervisor ESXi.
Das Upgrade wurde wie gewohnt über das Webinterface im Update Manager freigegeben und auch bereits auf andere ESXi 5.5 Hosts mit gleicher Hardware angewendet. Aber es gibt immer einen Server, der aus der aus der Reihe tanzt.

Das Upgrade ließ sich auf dem besagten Host einwandfrei starten, aber kurz nach Abschluss bekommt man folgende Meldung

ESXi 6.5 Upgrade Fehler UnicodeDecodeError: utf-8 codec cant decode byte 0x8b in position 512: invalid start byte.
UnicodeDecodeError: utf-8 codec cant decode byte 0x8b in position 512: invalid start byte.

Nicht sehr aufschlussreich das ganze.
Selbst in den Logs findet man auf Anhieb nicht wirklich eine Info warum das Upgrade fehlgeschlagen ist.

Was ist die ESXi Bootbank und Altbootbank Partition?

Damit ein ESXi Host Booten kann, erstellt dieser sich auf seinem Bootvolume neben der System-Partition mit dem Bootloader auch zwei extra Partitionen.

Eine Bootbank Partition und eine Altbootbank Partition, welche maximal 250MB groß sind.

Die Bootbank Partition enthält das aktuelle zu startende ESXi Image inkl. Konfiguration. Welche Version hier genau liegt, erfährt man mit einen Blick in die boot.cfg.

Das Kommando hierfür wäre z.b. cat /bootbank/boot.cfg
Im Titel-Tag der Datei steht die jeweilige ESXi Version inkl. Patchstand.

Prüft man nun die boot.cfg der altbootbank Partition (cat /altbootbank/boot.cfg) wird man feststellen das hier die Vorgängerversion bzw. der vorherige Patchlevel stand hinterlegt ist.

Es ist also ein Backup der vorherigen Version.

Sollte nun also mal die Bootbank Partition nicht mehr Funktionieren, kann man mittels der Taste F12 beim Bootvorgang des ESXi Hosts die Vorgängerversion inkl. Konfiguration Hochfahren.

Der Upgrade Prozess wird also die Daten der Altbootbank mit denen der Bootbank Partition überschreiben – und genau hier liegt unser Problem.

Aus irgend einem Grund kann der Prozess diesen Vorgang nicht durchführen und wir müssen manuell nachhelfen.

Die Lösung step by step

Damit die folgenden Schritte Funktionieren muss auf den ESXi Hosts der SSH Zugang aktiviert sein. Dies geschieht über Konfiguration -> Sicherheitsprofile und dann die Dienste wählen und den SSH Dienst starten.

Ebenso sollte auch der Port 22 für SSH vom besagten Client auf den ESXi Host geöffnet sein.

Um das ganze zu verifizieren prüfen wir im ersten Schritt einmal die Größe und den Inhalt der beiden Partitionen. Dies geht mit folgenden Kommando.

df -h /bootbank/ /altbootbank/

Die Ausgabe sollte nun die Größen beider Partitionen anzeigen. Bis auf die Nachkommastelle sollte die Größe allerdings identisch sein. Gibt es hier schon größere Abweichungen, kann man sicher sein das die Altbootbank Partition nicht korrekt befüllt ist.

Zum Gegenprüfen kann man sich noch den Inhalt beider Partitionen aufrufen.

ls /bootbank/ /altbootbank

Hier sieht man meist auf Anhieb, das auf der Altbootbank Partition weniger Dateien vorhanden sind.

Als nächstes ist es aber ratsam sich eine Sicherung der Altboobank Daten zu machen.

Am einfachsten geht dies über das Programm Winscp und dem direkten Kopieren der Daten per Drag and Drop auf den lokalen Rechner.

ESXi Error Altbootbank backup

Danach erfolgt die Leerung der Altbootbank Partition.

rm /altbootbank/*

Der * am Ende setzt fest, das alle Dateien innerhalb dieser Partition entfernt werden. Mit dem Kommando ls /altbootbank kann man dies noch einmal überprüfen.

Im letzten Step fehlt nur noch das befüllen der Partition. Mittels des Copy Befehls „cp“ werden nun alle Dateien inkl. Berechtigungen von der Bootbank Partition in die Altbootbank Partition kopiert.

cp -p /bootbank/* /altbootbank

Abschließend fehlt nur noch ein Neustart des ESXi Hosts und das erneute durchführen des Upgrade Prozesses.