Condividi tramite


Informazioni sull'utilizzo e sulle prestazioni di Compattazione disco VHD

Importante

Una prossima modifica a Windows, inclusa nell'aggiornamento di Windows Server di aprile 2026, il tipo di crittografia Kerberos predefinito cambia da RC4 a AES-SHA1.

Le condivisioni file che ospitano contenitori FSLogix che non vengono aggiornati a AES-SHA1 potrebbero avere problemi di accesso dopo l'applicazione di questa modifica. Per evitare interruzioni, completare l'aggiornamento a AES-SHA1 prima di installare l'aggiornamento.

I clienti che hanno già eseguito l'aggiornamento a AES-SHA1 non sono interessati.

Per altre informazioni, vedere il blog di FSLogix: Azione richiesta: Protezione avanzata Kerberos di Windows (RC4) può influire sui profili FSLogix nell'archiviazione SMB.

È possibile usare il registro eventi di Windows per comprendere la frequenza con cui viene usata la compattazione del disco VHD, lo spazio salvato e il tempo necessario per l'esecuzione. Ecco alcuni script di PowerShell di esempio e query di Azure Log Analytics che è possibile usare per interpretare gli eventi.

PowerShell

Script delle metriche di VHD Disk Compaction

Questo esempio usa PowerShell per ottenere gli eventi VHD Disk Compaction dai 30 giorni precedenti, formattati in una griglia. Da un prompt di PowerShell con privilegi elevati eseguire il blocco di codice seguente:

# Set startTime to number of days to search the event logs
$startTime = (Get-Date).AddDays(-30)

# Query Event Log using Get-WinEvent filtered to the VHD Disk Compaction metric events
$diskCompactionEvents = Get-WinEvent -FilterHashtable @{
    StartTime       = $startTime
    ProviderName    = 'Microsoft-FSLogix-Apps'
    ID         = 57
}

# Format event properties
$compactionMetrics = $diskCompactionEvents | Select-Object `
    @{l="Timestamp";e={$_.TimeCreated}},`
    @{l="ComputerName";e={$_.MachineName}},`
    @{l="Path";e={$_.Properties[0].Value}},`
    @{l="WasCompacted";e={$_.Properties[1].Value}},`
    @{l="TimeSpent(sec)";e={[math]::round($_.Properties[7].Value / 1000,2)}},`
    @{l="MaxSize(GB)";e={[math]::round($_.Properties[2].Value / 1024,2)}},`
    @{l="MinSize(GB)";e={[math]::round($_.Properties[3].Value / 1024,2)}},`
    @{l="InitialSize(GB)";e={[math]::round($_.Properties[4].Value / 1024,2)}},`
    @{l="FinalSize(GB)";e={[math]::round($_.Properties[5].Value / 1024,2)}},`
    @{l="SavedSpace(GB)";e={[math]::round($_.Properties[6].Value / 1024,2)}}

# Display metrics in Out-GridView
$compactionMetrics | Out-GridView

Query di Azure Log Analytics

Importante

Per usare la query seguente, è prima necessario configurare le macchine virtuali per inviare i log eventi a un'area di lavoro Log Analytics. Per altre informazioni, vedere Raccogliere origini dati del log eventi di Windows con l'agente di Log Analytics. I log usati per la compattazione disco VHD sono:

  • Microsoft-FSLogix-Apps/Operational
  • Microsoft-FSLogix-Apps/Admin

Query sulle metriche di Compattazione dischi VHD

Tempo trascorso durante l'operazione di Compattazione dischi VHD

Visualizza il tempo medio, minimo e massimo impiegato durante l'operazione compatta. I dati vengono riepilogati in base a se il disco è stato in grado di compattare.

Event
| where EventLog == 'Microsoft-FSLogix-Apps/Operational' and EventID == 57
| parse kind=relaxed EventData with *
    "<Data Name=\"Path\">" Path
    "</Data><Data Name=\"WasCompacted\">" DiskCompaction
    "</Data><Data Name=\"MaxSupportedSizeMB\">" MaxSupportedSizeMB
    "</Data><Data Name=\"MinSupportedSizeMB\">" MinSupportedSizeMB
    "</Data><Data Name=\"SizeBeforeMB\">" SizeBeforeMB
    "</Data><Data Name=\"SizeAfterMB\">" SizeAfterMB
    "</Data><Data Name=\"SavedSpaceMB\">" SavedSpaceMB
    "</Data><Data Name=\"TimeSpentMillis\">" TimeSpentMillis "</Data>" *
| extend TimeSpent = todecimal(TimeSpentMillis) / 1024
| where DiskCompaction <> ""
| summarize Average=round(avg(TimeSpent),2), Max=round(max(TimeSpent),2), Min=round(min(TimeSpent),2) by DiskCompaction

Di seguito è riportato un esempio dell'output:

Grafico a barre che mostra il risultato dell'esecuzione della query Tempo impiegato

Numero di file VHD(x) del contenitore compattati

Visualizza il numero di file VHD(x) del contenitore selezionati per la compattazione in base ai valori soglia.

Event
| where EventLog == 'Microsoft-FSLogix-Apps/Operational' and EventID == 57
| parse kind=relaxed EventData with *
    "<Data Name=\"Path\">" Path
    "</Data><Data Name=\"WasCompacted\">" DiskCompaction
    "</Data><Data Name=\"MaxSupportedSizeMB\">" MaxSupportedSizeMB
    "</Data><Data Name=\"MinSupportedSizeMB\">" MinSupportedSizeMB
    "</Data><Data Name=\"SizeBeforeMB\">" SizeBeforeMB
    "</Data><Data Name=\"SizeAfterMB\">" SizeAfterMB
    "</Data><Data Name=\"SavedSpaceMB\">" SavedSpaceMB
    "</Data><Data Name=\"TimeSpentMillis\">" TimeSpentMillis "</Data>" *
| where DiskCompaction <> ""
| summarize NumberOfVhdContainers=count() by DiskCompaction

Di seguito è riportato un esempio dell'output:

Grafico a torta che mostra il numero di file V H D (contenitori) compattati

Spazio di archiviazione totale salvato

Visualizza la quantità di spazio di archiviazione in GB recuperati durante l'operazione di compattazione del disco VHD.

Event
| where EventLog == 'Microsoft-FSLogix-Apps/Operational' and EventID == 57
| parse kind=relaxed EventData with *
    "<Data Name=\"Path\">" Path
    "</Data><Data Name=\"WasCompacted\">" DiskCompaction
    "</Data><Data Name=\"MaxSupportedSizeMB\">" MaxSupportedSizeMB
    "</Data><Data Name=\"MinSupportedSizeMB\">" MinSupportedSizeMB
    "</Data><Data Name=\"SizeBeforeMB\">" SizeBeforeMB
    "</Data><Data Name=\"SizeAfterMB\">" SizeAfterMB
    "</Data><Data Name=\"SavedSpaceMB\">" SavedSpaceMB
    "</Data><Data Name=\"TimeSpentMillis\">" TimeSpentMillis "</Data>" *
| extend Storage = todecimal(SavedSpaceMB)
| summarize StorageSavings = (format_bytes(sum(Storage * 1024 * 1024),2,"GB"))

Avvisi di ritardo di Winlogon (disconnesso)

Visualizza qualsiasi servizio che ha causato il superamento Winlogon della soglia di 60 secondi. Mostra il numero di occorrenze insieme al tempo medio e massimo impiegato.

Event
| where Source == 'Microsoft-Windows-Winlogon' and EventID == 6006
| parse kind=relaxed ParameterXml with "<Param>" ServiceName "</Param><Param>" Duration "</Param><Param>" EventType "</Param><Param>-</Param>"
| extend TimeInSeconds = todecimal(Duration)
| where EventType == "Logoff"
| summarize Occurrences=count(),Average=round(avg(TimeInSeconds),2), Minimum=round(min(TimeInSeconds),2), Maximum=round(max(TimeInSeconds),2) by ServiceName

Di seguito è riportato un esempio dell'output:

Tabella che mostra i servizi che hanno superato la soglia winlogon