Fehler beim Starten einer Hyper-V VM: Synthetic SCSI Controller Zugriff verweigert

    Error TeaserDas Eins­chalten oder das Zurück­holen einer virtu­ellen Maschine aus dem ge­speicherten Zu­stand kann mit dem Fehler scheitern, wonach das Konto nicht über die erfor­derlichen Berech­tigungen zum Öffnen der virtu­ellen Fest­platte ver­füge. Die Änderung der Zugriffs­rechte auf die VHD löst das Prob­lem aber nicht immer.

    Schilderungen in verschiedenen Foren und Blogs deuten darauf hin, dass die Fehler­meldung 0x80070005 in vielen Fällen auf tatsächlich fehlende Rechte verweist. Sie können etwa verloren­gehen, wenn man virtuelle Laufwerke auf ein anderes Storage verschiebt. In meinem Fall befand sich die VM im gespeicherten Zustand, als der Host wegen eines Updates neu starten musste.

    Hyper-V verweigert den Start einer VM wegen fehlender Rechte auf das virtuelle Laufwerk.

    Nachdem gute Chancen bestehen, dass die Fehler­meldung die wirkliche Ursache benennt, liegt es nahe, die Berechtigungen auf die VHD anzupassen. Microsoft bietet dazu eine Anleitung, wie man dies mit Hilfe von icacls erreicht:

    icacls <Pfad der .vhd oder .avhd file> /grant "NT VIRTUAL MACHINE\<ID der virtuellen Maschine> ":(F)

    Anstatt, wie dort empfohlen, die ID der VM und den Pfad zum virtuellen Laufwerk aus der Fehlermeldung abzutippen, kann man PowerShell bemühen und das Ergebnis in den icacls-Befehl kopieren:

    Get-VM -Name <Name der VM> | select name, VMId

    Get-VM -Name <Name der VM> | Get-VMHardDiskDrive | select vmname, path | fl

    Sind mehrere VMs oder virtuelle Laufwerke betroffen, dann kann man den Vorgang mit dem Script von Thomas Torggler abkürzen. Es ist in der Lage, die Rechte für alle VHDs mehrerer VMs in einem Durchgang anzupassen.

    Laufwerk entfernen und wieder anhängen

    Wenn das Setzen der Berechtigung nicht dazu führt, dass sich die VM starten lässt, dann bleibt noch die Möglichkeit, die betroffenen Laufwerke abzuhängen und neu mit der VM zu verbinden.

    Das Zugriffsproblem lässt sich nicht immer über das Setzen der Berechtigungen lösen.

    Befindet sich die VM in einem gespeicherten Zustand, dann muss man diesen erst löschen, um die VHD entfernen zu können.

    Gespeicherten Zustand der VM im Hyper-V Manager löschen

    Das Ab- und Anhängen des Laufwerks lässt sich über den Hyper-V Manager oder über PowerShell  bewerk­stelligen. Entscheidet man sich für Letztere, dann entfernt man ein virtuelles Laufwerk folgender­maßen:

    Remove-VMHardDiskDrive -VMName <VM-Name> -ControllerType SCSI `
    -ControllerNumber 0 -ControllerLocation 2

    Die Werte für die Controller-Parameter entnimmt man der Ausgabe des zweiten der oben angeführten Befehle.

    VHD mit PowerShell von der VM trennen und dann wieder hinzufügen

    Anschließend hängt man die VHD wieder ein:

    Add-VMHardDiskDrive -VMName <VM-Name> -ControllerType SCSI `
    -ControllerNumber 0 -Path "<Pfad zur VHD>"

    Für ControllerType und ControllerNumber wird man hier wieder die gleichen Werte verwenden wie beim Aufruf von Remove-VMHardDiskDrive.

    Keine Kommentare