Общие сведения об использовании и производительности диска VHD

Это важно

Предстоящее изменение в Windows, включенное в обновление Windows За апрель 2026 г., тип шифрования Kerberos по умолчанию изменяется с RC4 на AES-SHA1.

Общие папки, в которых размещаются контейнеры FSLogix, которые не обновляются до AES-SHA1 могут иметь проблемы с доступом после применения этого изменения. Чтобы избежать сбоев, выполните обновление до AES-SHA1 перед установкой обновления.

Клиенты, которые уже обновились до AES-SHA1, не затронуты.

Дополнительные сведения см. в блоге FSLogix: Действие, необходимое: защита Windows Kerberos (RC4) может повлиять на профили FSLogix в хранилище SMB.

Вы можете использовать журнал событий Windows, чтобы понять, как часто используется сжатие диска VHD, сохраненное пространство и время выполнения. Ниже приведены некоторые примеры скриптов PowerShell и запросов Azure Log Analytics, которые можно использовать для интерпретации событий.

PowerShell

Скрипт метрик сжатия дисков VHD

В этом примере powerShell используется для получения событий сжатия дисков VHD из предыдущих 30 дней, отформатированных в сетку. В командной строке PowerShell с повышенными привилегиями выполните следующий блок кода:

# 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

Это важно

Чтобы использовать приведенный ниже запрос, сначала необходимо настроить виртуальные машины для отправки журналов событий в рабочую область Log Analytics. Дополнительные сведения см. в статье Сбор источников данных журнала событий Windows с помощью агента Log Analytics. Журналы, используемые для сжатия дисков VHD, являются следующими:

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

Запрос метрик сжатия дисков VHD

Время, затраченное на операцию VHD Disk Compact

Отображает среднее, минимальное и максимальное время, затраченное во время компактной операции. Данные суммируются на основе того, удалось ли сжать диск.

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

Пример результата выглядит следующим образом.

Линейчатая диаграмма, показывающая результат выполнения запроса на время

Количество сжатых файлов VHD(x) контейнера

Отображает количество файлов VHD(x) контейнера для сжатия на основе пороговых значений.

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 D (контейнеров)

Общее количество сохраненных дискового пространства

Отображает объем хранилища в ГБ, возвращенный во время операции сжатия диска 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"))

Предупреждения задержки Winlogon (выход)

Отображает любую службу, которая привела Winlogon к превышению порогового значения в 60 секунд. Показывает количество вхождений, а также среднее и максимальное время, затраченное.

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

Пример результата выглядит следующим образом.

Таблица со службами, превышающими пороговое значение Winlogon