ESXi-Boot-Image von USB-Stick sichern

    USB-Sticks klonenESXi-Hosts von einem USB-Stick zu booten gehört neben Auto Deploy zu den effizien­testen Start­verfahren, und es wird von VMware auch offiziell unter­stützt. Diese Speicher­medien sind aber nicht son­derlich halt­bar, so dass es sich empfiehlt, sie regel­mäßig zu sichern. Der Admin kann dazu das Linux-Tool dd auf der ESXi-Shell ver­wenden.

    Da lokale Platten in ESXi-Hosts, sieht man von SSDs für Readcache oder vSAN ab, als Shared Storage nicht zu gebrauchen sind, betreiben viele Unter­nehmen ihre ESXi-Server diskless. Für das Starten des Hyper­visors genügt dann ein 8GB großer USB-Stick. Aus einem dd-Image, das man von Zeit zu Zeit aktualisieren sollte, lässt sich im Notfall einen neuer Boot-Stick klonen.

    Sicherungsverzeichnis anlegen

    Im ersten Schritt legt man auf einem Datastore, der für den betreffenden ESXi-Host zugänglich ist, ein Zielverzeichnis an. Hier verwenden wir als Beispiel einen NFS-Datastore, der auf ein freigegebenes Verzeichnis auf einem SAN-Gerät verweist. Der zugehörige Pfad aus Sicht des ESXi-Hosts lautet /vmfs/volumes/73ce4fbc-10a9189c/Backup-Bootdevices.

    Verzeichnis anlegen mit dem Datenspeicher-Browser im Host-Client

    Das Anlegen des Verzeich­nisses kann wahlweise im Datastore-Browser des Web- oder Host-Clients erfolgen, auf der Kommandozeile mit mkdir oder mit Hilfe eines grafischen SFTP-Clients.

    Gerätedatei für USB-Stick finden

    Danach ermittelt man die passende Geräte­datei für den USB-Stick, die im nächsten Schritt als if-Parameter an das dd-Kommando übergeben wird. Auch das geht wahlweise auf der ESXi-Shell oder via SSH mit

    ls -la /dev/disks/ | grep mpx

    Alternativ schaut man einfach in die Storage-Adapter-Ansicht für den USB-Controller im Web Client.

    USB-Geräte im vSphere Web Client

    Image mit dd erstellen

    Nun steht der Ausführung des dd-Kommandos mit den Parametern if (Input File) und of (Output File), welcher auf das eben angelegte Sicherungs­verzeichnis zeigt, nichts mehr im Wege. In allgemeiner Form lautet der Aufruf

    dd if=/dev/disks/<USB-Device> of=/vmfs/volumes/<Datastore>/<Ordner>/<Name>.img

    und in unserem Beispiel würde er so aussehen:

    dd if=/dev/disks/ mpx.vmhba33:C0:T0:L0 of=/vmfs/volumes/73ce4fbc-10a9189c/Backup-Bootdevices/hv1.img

    Das Resultat auf dem Datastore sollte sich dann so darstellen wie im nächsten Screenshot, der den Download des dd-Images zeigt.

    Image auf neuen USB-Stick schreiben

    Anschließend kann man das Image auf einen beliebigen Rechner zur Weiter­verarbeitung herunterladen. Auch das erfolgt wahlweise mit dem Datastore-Browser des Web Clients oder wie in diesem Beispiel mit einem SFTP-Client:

    Download des dd-Images auf einen Windows-Rechner

    Danach lässt sich das Image unter Windows mit einem Tool wie Rufus auf einen neuen USB-Stick schreiben. Er sollte die gleiche Größe haben sollte wie das Quellmedium, um Komplikationen zu vermeiden.

    1 Kommentar

    Bild von Dr. Mario Rödiger
    Dr. Mario Rödiger sagt:
    13. Mai 2019 - 10:28

    Hallo Herr Drilling,
    vielen Dank für die ausführliche Anleitung.
    Bei mir funktioniert das Ganze leider nicht. Vielleicht können Sie weiterhelfen:
    Der Befehl
    ls -la /dev/disks/ | grep mpx
    liefert bei mir gar nichts.
    Wenn ich nur das Folgende eingebe:
    ls -la /dev/disks/ ,
    dann bekomme ich das erwartete Ergebnis.
    Mein Stick wird dann mit dem Namen "naa.2020030102060804" angezeigt.
    Der reine Kopiervorgang läuft dann unter Nutzung des DD-Befehls nach obigem Muster bis exakt 30.851.072 kB (32GB Stick) durch und bricht dann mit der Fehlermeldung "function not implemented" ab.
    Ich habe das Ganze mehrfach (auch mit anderem Zielordner) versucht, leider aber immer mit dem gleichen Ergebnis.
    Woran kann das liegen?
    Oder gibt es Alternativen zum Klonen/Sichern des Sticks (z.B. Acronis o.ä.)?