Udostępnij za pośrednictwem


Omówienie użycia i wydajności dysku VHD Disk Compaction

Możesz użyć dziennika zdarzeń systemu Windows, aby zrozumieć, jak często jest używany dysk VHD Compaction, miejsce zapisane i czas potrzebny na uruchomienie. Poniżej przedstawiono kilka przykładowych skryptów programu PowerShell i zapytań usługi Azure Log Analytics, których można użyć do interpretowania zdarzeń.

PowerShell

Skrypt metryk kompaktowania dysku VHD

W tym przykładzie użyto programu PowerShell do pobrania zdarzeń kompaktowania dysku VHD z poprzednich 30 dni sformatowanych w siatce. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień uruchom następujący blok kodu:

# 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

Zapytania usługi Azure Log Analytics

Ważne

Aby użyć poniższego zapytania, należy najpierw skonfigurować maszyny wirtualne w celu wysyłania dzienników zdarzeń do obszaru roboczego usługi Log Analytics. Aby uzyskać więcej informacji, zobacz Zbieranie źródeł danych dziennika zdarzeń systemu Windows za pomocą agenta usługi Log Analytics. Dzienniki używane do kompaktowania dysku VHD to:

  • Microsoft-FSLogix-Apps/Operational
  • Microsoft-FSLogix-Apps/Administracja

Zapytanie metryk kompaktowania dysku VHD

Czas spędzony podczas operacji VHD Disk Compact

Przedstawia średni, minimalny i maksymalny czas spędzony podczas operacji kompaktowej. Dane są podsumowywane na podstawie tego, czy dysk był w stanie zostać skompaktowany.

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

Poniżej przedstawiono przykładowe dane wyjściowe:

Wykres słupkowy przedstawiający wynik uruchamiania zapytania czas spędzonego

Liczba skompaktowanych plików VHD(x) kontenera

Przedstawia liczbę plików VHD(x) kontenera wybranych do kompaktowania na podstawie wartości progowych.

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

Poniżej przedstawiono przykładowe dane wyjściowe:

Wykres kołowy przedstawiający liczbę skompaktowanych plików V H D (kontenerów)

Łączna ilość miejsca do magazynowania

Przedstawia ilość miejsca w GB odzyskanego podczas operacji kompaktowania dysku 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"))

Ostrzeżenia dotyczące opóźnień w usłudze Winlogon (wylogowywanie)

Wyświetla dowolną usługę, która spowodowała Winlogon przekroczenie progu 60 sekund. Przedstawia liczbę wystąpień wraz ze średnią i maksymalną ilością czasu spędzonego.

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

Poniżej przedstawiono przykładowe dane wyjściowe:

Tabela przedstawiająca usługi, które przekroczyły próg winlogon