VHD ディスクの圧縮の使用状況とパフォーマンスについて
Windows イベント ログを使用して、VHD ディスク圧縮が使用された頻度、節約されたスペース、実行にかかった時間を把握できます。 イベントの解釈に役立つ PowerShell スクリプトと Azure Log Analytics クエリのサンプルをいくつか次に示します。
PowerShell
VHD ディスク圧縮メトリック スクリプト
この例では、PowerShell を使用して、過去 30 日間の VHD ディスク圧縮イベントを取得し、書式をグリッドに設定します。 管理者特権の 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 ワークスペースにイベント ログを送信するように仮想マシンを構成する必要があります。 詳細については、「Log Analytics エージェントを使用して Windows イベント ログのデータ ソースを収集する」を参照してください。 VHD ディスク圧縮に使用されるログは次のとおりです。
- Microsoft-FSLogix-Apps/Operational
- Microsoft-FSLogix-Apps/Admin
VHD ディスク圧縮メトリックのクエリ
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 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
出力の例を次に示します。
節約された記憶域スペースの合計
VHD ディスク圧縮操作中に解放されたストレージの量を GB 単位で表示します。
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
出力の例を次に示します。