Hyper-V Storage Migration schlägt fehl – One or more arguments are invalid (0x80070057)
Ein Kunde von uns hat mir von einem Fehler berichtet, der ihm bei einer Migration einer VM aufgefallen ist. Es ging um eine Storage-Migration der Daten einer VM. Die Daten sollten geplant von einem SMB3-Share auf einen anderen SMB3-Share verschoben werden, die VM hat eine Größe von mehreren TB.
Der virtuelle Server wird in einem Hyper-V Cluster betrieben, zusätzlich ist für die VM die Hyper-V Replica Funktionalität eingeschaltet.
Nachdem die Daten der VM per PowerShell mit Hilfe des Move-VMStorage Befehls verschoben wurden, gab es am Ende des Vorgangs eine Fehlermeldung, die wie folgt aussieht:
PS C:\\> Move-VMStorage -vmname <VMName> -DestinationStoragePath \\\\<SOFS>\\vDisk1\\VMs\\<VMName>
Move-VMStorage : Storage migration for virtual machine '<VMName>' (<ID der VM>) failed with error 'One or more arguments are invalid' (0x80070057).
Migration did not succeed. Could not complete mirror operation for the VHD file '\\\\<Anderer SOFS>\\vDisk1\\VMs\\<VMName>\\Virtual Hard Disks\\Disk1.vhdx': 'One or more arguments are invalid'('0x80070057').
A parameter that is not valid was passed to the operation.
An dem neuen Speicherplatz der VM-Daten lag zwar eine Kopie der VHDX-Dateien, die VM hat allerdings noch mit dem alten Speicherplatz weitergearbeitet. Dieser Vorgang wurde sichtbar, weil sich die Änderungszeiten der VHDX-Dateien an dem alten Speicherplatz noch geändert haben, das Datum der "neuen" bzw. kopierten Dateien wurde nicht mehr angepasst.
Im Failover Cluster Manager wird zu diesem Zeitpunkt der neue Speicherort angezeigt, obwohl dieser nicht genutzt wird. Startet man die VM nun durch oder fährt sie herunter, wechselt der aktive Datenträger und nimmt nun die kopierten VHDX-Dateien. Gab es zwischen dem Verschiebe-Vorgang und dem Neustart der VM einen zeitlichen Verzug, kommt es hier in diesem Fall zu einer Rücksetzung der VM, da die VHDX-Dateien vom Zeitpunkt des Verschiebens genutzt werden.
Lösen kann man dieses Problem, indem man die "alten" VHDX-Dateien wieder anhängt bzw. an den neuen Speicherplatz verschiebt. Der Vorgang ist bisher nur bei sehr großen VMs passiert, einen wirklichen Grund für dieses Verhalten haben wir bisher nicht feststellen können. Mir ist dieses Verhalten bisher nicht untergekommen, im Verdacht steht die Hyper-V Replikation, die bei diesem Vorgang nicht manuell gestoppt wurde. Möglicherweise tritt der Fehler nicht auf, wenn man die Hyper-V Replica vor dem Move-Vorgang deaktiviert und danach wieder per Hand einschaltet.