Errore 0x80070005 durante esportazione dele VM Hyper-V su share di rete

Se si tenta di eseguire l’esportazione di VM dalla console di Hyper-V (o tramite script) viene segnalato l’errore 0x80070005.

image

Il motivo di questo errore dipende dal fatto che l’esportazione avviene tramite l’account di Sistema Locale (SYSTEM) come spiegato nella KB2008849 Error 0x80070005 when exporting Hyper-V VMs over the Network:

“When you export a virtual machine in Hyper-V manager, it is the System account of the Hyper-V host that executes the export.

This problem occurs because the Hyper-V host does not have permission on the network share.

Ensure the permissions allow the Computer account of the Hyper-V host performing the Export to update the shared folder.”

Come indicato la risoluzione sta nell’attribuire all’account computer i diritti sulla share e a livello NTFS (per i dettagli operativi si veda la KB2008849 oppure il post Exporting Hyper-V VMs Over the Network).

Se però la share sta su un NAS che non è integrato o no è integrabile in Active Directory, oppure ancora l’Hyper-V server non è membro di Active Directory questa soluzione non è attuabile.

Se ad esempio si desidera eseguire l’esportazione delle VM di Hyper-V server in workgroup su una share che risiede su di un NAS LenovoEMC px2-300d occorrerà rendere accessibile a tutti la share di rete senza necessità di fornire un’utente e una password.

image

Ovviamente questa impostazione non è consigliabile dal punto di vista della sicurezza, e anche anche il rendere la share nascosta impostando un nome che termini col carattere $ non rappresenta un metodo serio per proteggere la share (a riguardo si veda Create Shared Resources that Are Hidden).

Infatti la share anche se hidden può essere rilevata con tool di scansione di rete (come ad esempio NetResView) e permette di essere acceduta in lettura e scrittura da chiunque possa connettersi alla rete a cui il NAS è connesso.

Di conseguenza questo approccio può essere adottato solo negli scenari in cui il NAS sia connesso ad una rete dedicata al backup e a cui possono accedere solo amministratori di sistema. La rete di backup dovrà essere gestita mediate VLAN oppure se possibile tramite apparati fisicamente separati.

image Un’alternativa potrebbe essere quella di eseguire l’esportazione in locale e di copiare poi su share di rete l’esportazione successivamente come suggerito nel post Exporting to / Importing from a network share [Hyper-V] da Benjamin Armstrong. Questo approccio però implica che ci sia spazio locale sufficiente che l’operazione non impatti in maniera troppo negativa sullo storage locale.

Per ulteriori informazioni si vedano anche:

[Update 01]

Analizzando ulteriormente il problema mi sono venute in mente altre due possibili soluzioni:

  1. Se il NAS lo permette (come nel caso del LenovoEMC px2-300d) è possibile utilizzare iSCSI per connettere il server Hyper-V abilitando per maggior sicurezza l’autenticazione bidirezionale (Mutual CHAP).
    Questo approccio renderà leggermente più complesso l’utilizzo delle esportazioni su computer differenti, in quando occorrerà prima configurare l’iSCSI Initiator prima di poter accedere ai file
  2. Un’altra possibilità è quella di creare sulla share un file VHD (o VHDX) e di connetterlo sul server Hyper-V (la gestione è integrata in Gestione Computer in WS2008 R2 e successivi).
    Anche questo approccio obbligherà ad un minimo di configurazioni aggiuntive per utilizzare le esportazioni su computer differenti (l’operazione di connessione di un VHD su computer WS2008 R2/W7 e successivi è comunque decisamente rapida e semplice). In realtà però il vero contro di questo approccio è che se si vogliono mantenere più esportazioni queste ovviamente risiederanno tutte in un unico vhd/vhdx quindi nel caso di problemi hardware del NAS o di corruzione del file si corre il rischio di perdere l’intero set di esportazioni.