Inzicht in het gebruik en prestaties van VHD-schijfcompressie

Belangrijk

Een aanstaande wijziging in Windows, opgenomen in de Windows Server-update van april 2026, verandert het standaardtype Kerberos-versleuteling van RC4 in AES-SHA1.

Bestandsshares die als host fungeren voor FSLogix-containers die niet worden bijgewerkt naar AES-SHA1 hebben mogelijk toegangsproblemen nadat deze wijziging is toegepast. Voltooi de upgrade naar AES-SHA1 voordat u de update installeert om onderbrekingen te voorkomen.

Klanten die al een upgrade naar AES-SHA1 hebben uitgevoerd, worden niet beïnvloed.

Zie de FSLogix-blog: Actie vereist: Windows Kerberos-beveiliging (RC4) kan van invloed zijn op FSLogix-profielen op SMB-opslag voor meer informatie.

U kunt windows-gebeurtenislogboek gebruiken om te begrijpen hoe vaak VHD-schijfcompressie wordt gebruikt, de ruimte die is opgeslagen en de tijd die nodig is om uit te voeren. Hier volgen enkele powerShell-voorbeeldscripts en Azure Log Analytics-query's die u kunt gebruiken om de gebeurtenissen te interpreteren.

PowerShell

Script voor metrische gegevens over compressie van VHD-schijven

In dit voorbeeld wordt PowerShell gebruikt om de VHD Disk Compaction-gebeurtenissen van de afgelopen 30 dagen op te halen die zijn geformatteerd in een raster. Voer vanuit een PowerShell-prompt met verhoogde bevoegdheid het volgende codeblok uit:

# 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

Azure Log Analytics-query's

Belangrijk

Als u de onderstaande query wilt gebruiken, moet u eerst uw virtuele machines configureren om hun gebeurtenislogboeken naar een Log Analytics-werkruimte te verzenden. Zie Gegevensbronnen voor Windows-gebeurtenislogboeken verzamelen met Log Analytics-agent voor meer informatie. De logboeken die worden gebruikt voor VHD-schijfcompressie zijn:

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

Query voor metrische gegevens over VHD-schijfcompressie

Tijd die is besteed tijdens het comprimeren van VHD-schijven

Geeft de gemiddelde, minimale en maximale tijd weer die tijdens de compacte bewerking is besteed. De gegevens worden samengevat op basis van of de schijf kon worden gecomprimeerd.

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

Hier is een voorbeeld van de output:

Een staafdiagram met het resultaat van het uitvoeren van de query Tijd besteed

Aantal bestanden met container-VHD(x) gecomprimeerd

Geeft weer hoeveel container-VHD(x)-bestanden zijn geselecteerd voor compressie op basis van de drempelwaarden.

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

Hier is een voorbeeld van de output:

Een cirkeldiagram met het aantal V H D-bestanden (containers) gecomprimeerd

Totale opslagruimte bespaard

Geeft de hoeveelheid opslagruimte weer die in GB is vrijgemaakt tijdens de VHD-schijfcompressiebewerking.

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"))

Vertragingswaarschuwingen voor Winlogon (afmelden)

Geeft een service weer die Winlogon de drempelwaarde van 60 seconden overschrijdt. Geeft het aantal exemplaren weer, samen met het gemiddelde en de maximale tijd die is besteed.

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

Hier is een voorbeeld van de output:

Een tabel met de services die de Winlogon-drempelwaarde hebben overschreden