Descripción del uso y el rendimiento de la compactación de discos VHD
Puede usar el registro de eventos de Windows para comprender la frecuencia con la que se usa VHD Disk Compaction, el espacio guardado y el tiempo necesario para ejecutarse. Estos son algunos scripts de PowerShell de ejemplo y consultas de Azure Log Analytics que puede usar para ayudarle a interpretar los eventos.
PowerShell
Script de métricas de VHD Disk Compaction
En este ejemplo se usa PowerShell para obtener los eventos VHD Disk Compaction de los 30 días anteriores, con formato en una cuadrícula. Desde un símbolo del sistema de PowerShell con privilegios elevados, ejecute el siguiente bloque de código:
# 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
Consultas de Azure Log Analytics
Importante
Para usar la consulta siguiente, primero debe configurar las máquinas virtuales para enviar sus registros de eventos a un área de trabajo de Log Analytics. Para obtener más información, consulte Recopilación de orígenes de datos del registro de eventos de Windows con el agente de Log Analytics. Los registros que se usan para la compactación de disco VHD son:
- Microsoft-FSLogix-Apps/Operational
- Microsoft-FSLogix-Apps/Admin
Consulta de métricas de VHD Disk Compaction
Tiempo invertido durante la operación de VHD Disk Compact
Muestra el tiempo medio, mínimo y máximo invertido durante la operación compacta. Los datos se resumen en función de si el disco pudo compactarse.
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
A continuación, presentamos un ejemplo de la salida:
Número de archivos VHD(x) de contenedor compactados
Muestra cuántos archivos VHD(x) de contenedor se seleccionaron para la compactación en función de los valores de umbral.
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
A continuación, presentamos un ejemplo de la salida:
Espacio de almacenamiento total guardado
Muestra la cantidad de almacenamiento en GB reclamados durante la operación de compactación de 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"))
Advertencias de retraso de Winlogon (cierre de sesión)
Muestra cualquier servicio que haya provocado Winlogon
que supere el umbral de 60 segundos. Muestra el número de repeticiones junto con el promedio y el tiempo máximo invertido.
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
A continuación, presentamos un ejemplo de la salida: