Förstå användning och prestanda för VHD Disk Compaction

Viktigt!

En kommande ändring av Windows, som ingår i Windows Server-uppdateringen i april 2026, ändrar standardtypen för Kerberos-kryptering från RC4 till AES-SHA1.

Filresurser som är värdar för FSLogix-containrar som inte uppgraderas till AES-SHA1 kan ha åtkomstproblem när den här ändringen har tillämpats. Slutför uppgraderingen till AES-SHA1 innan du installerar uppdateringen för att undvika avbrott.

Kunder som redan har uppgraderat till AES-SHA1 påverkas inte.

Mer information finns i FSLogix-bloggen: Åtgärd krävs: Windows Kerberos-härdning (RC4) kan påverka FSLogix-profiler på SMB-lagring.

Du kan använda Windows-händelseloggen för att förstå hur ofta VHD Disk Compaction används, vilket utrymme som sparas och hur mycket tid det tar att köra. Här följer några Exempel på PowerShell-skript och Azure Log Analytics-frågor som du kan använda för att tolka händelserna.

PowerShell

VHD Disk Compaction-måttskript

Det här exemplet använder PowerShell för att hämta VHD Disk Compaction-händelser från de senaste 30 dagarna, formaterade i ett rutnät. Kör följande kodblock från en upphöjd PowerShell-prompt:

# 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-frågor

Viktigt!

För att kunna använda frågan nedan måste du först konfigurera dina virtuella datorer för att skicka sina händelseloggar till en Log Analytics-arbetsyta. Mer information finns i Samla in Datakällor för Windows-händelseloggar med Log Analytics-agenten. Loggarna som används för VHD Disk Compaction är:

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

Fråga om mått för VHD Disk Compaction

Tid som spenderas under VHD Disk Compact-åtgärden

Visar den genomsnittliga, lägsta och högsta tid som använts under den kompakta åtgärden. Data sammanfattas baserat på om disken kunde komprimeras.

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

Här är ett exempel på utdata:

Ett stapeldiagram som visar resultatet av körningen av frågan Tidsåtgång

Antal VHD(x)-containerfiler komprimerade

Visar hur många VHD(x)-containerfiler som har valts för komprimering baserat på tröskelvärdena.

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

Här är ett exempel på utdata:

Ett cirkeldiagram som visar antalet V H D-filer (containrar) komprimerade

Totalt lagringsutrymme som sparats

Visar mängden lagringsutrymme i GB som frigörs under VHD Disk Compaction-åtgärden.

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

Varningar om winlogon-fördröjning (utloggning)

Visar alla tjänster som har orsakats Winlogon överskrida tröskelvärdet på 60 sekunder. Visar antalet förekomster tillsammans med den genomsnittliga och maximala tid som spenderas.

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

Här är ett exempel på utdata:

En tabell som visar de tjänster som överskred Winlogon-tröskelvärdet