Hotfix per Hyper-V in Windows Server 2008 R2 e backup via VSS

Published 29 June 10 06:21 PM | claudiog 

Microsoft ha rilasciato una hotfix per risolvere un problema piuttosto subdolo, che si innesca nell'uso di VSS per fare backup di Virtual Machines su host Windows Server 2008 R2 / Windows Hyper-V Server 2008 R2. In breve, il VSS provider crea un nuovo device/volume per ciascuno shapshot effettutato, non rimuovendo mai queste informazioni dal registry, che crescerà a dismisura.

Ambienti partciolamente a rischio sono quelli basati su DPM 2007/2010, specie se i numeri di VM/VHD e la frequenza degli snapshot è elevata. Al limite (quando il numero di volumi supera qualche migliaio), l'host potrevbbe apparire "hung" al boot, o non completare mai il boot).

Il bug NON riguarda Hyper-V V1 di Windows Server 2008, anche se alcuni post su Internet affermano il contrario.

L'articolo (KB982210) pubblicato, ha diversi errori e imprecisioni, che rendono la comprensione e l'dentificazione del problema non proprio trasparente e semplice.

  • Le chiavi del registry indicate, sono o imprecise (la prima suggeria non cambia mai nel tempo) o sono assolutamete specifiche di un server e potreste non ritrovarle affatto sul vostro host
  • Alcuni rifermenti sono a 'ControlSet001', guardate invece sempre dentro a 'CurrentControlSet'
  • Il titolo dell'articolo parla di "after you back up the data on all the disks of the computer in Windows Server 2008 R2 if the computer runs some virtual machines", in realtà il problema si presenta SEMPRE, non solo se salvate TUTTI i dischi, basta innescare il VSS Provider per Hyper-V anche solo per un System State di una VM
  • L'articolo indica un supposto comando "devnodeclean", che NON esiste
Potrebbe essere un tool da richiedere al PSS, o da compilarsi da soli usando il codice di esempio nell'altra KB linkata ...ma non è chiaro e francamente mi pare un pò troppo !

Per semplificarmi la vita, ho scritto una piccola script Powershell 2.0, per verificare il numero di Volumi/Device presenti su una lista di hosts Hyper-V. Ha come prerequisito la funzionalità di Remoting, basata su WinRM, che deve essere configurata sugli host Hyper-V (anche via GPO).

Non si tratta di una script particolarmente "smart" o sofisticata, ma magari vi può servire. Va modificata per fornire la lista di host Hyper-V 2 si cui eseguire il controllo, per definire le credenziali di default per la connessione.

Quindi se a distanza di qualche giorno, osservate un incremento costante dei numeri riportati, dovete installare la hotfix. La fix però NON ripulisce il registry delle entry precedenti, quindi o vi procurate la "fantomatica" utility "devnodeclean" o usate il suggerimento pubblicato qui, sull'uso del vecchio "regchk".

Hyper-V comincia ad avere bisogno di un rollup !

 

Ecco la script:

$Cred = Get-credential DOMAIN\AdmAccount
$HVhosts = @("HVNODE1","HVNODE2")          # Potrebbe essere un 'get-content serverlist.txt'

$HvHosts | % {

  Invoke-Command -ComputerName $_ -Cred $Cred -ScriptBlock {
    #$RegKeys = 'Enum\SCSI\Disk&Ven_Msft&Prod_Virtual_Disk','Enum\STORAGE\Volume','Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}'
    $RegKeys = @('Enum\STORAGE\Volume','Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}')

    PushD 'HKLM:\System\CurrentControlSet'
    $RegKeys | % {
      Write-Host $Env:Computername,$_, (dir $_).Count
      }
    PopD
    }
}


Produrrà un output di questo tipo:

HVNODE1 Enum\STORAGE\Volume 768
HVNODE1 Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 774
HVNODE2 Enum\STORAGE\Volume 775
HVNODE2 Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 783

 

Anonymous comments are disabled

About claudiog

MCSA, MCSE, MCT su NT/2000/2003 MCTS: Windows Server 2008 Active Directory/Application Platform/Network Infrastructure