NTFS文件系统级压缩是Windows性能日志压缩首选方案,支持零配置启用、保持可读性且不影响实时监控;ETW日志可配合logman /ct Compressed参数实现写入时原生压缩。Windows环境下性能日志(如ETW跟踪日志、PerfMon计数器日志、系统健康诊断日志)体积大、写入频密,直接存储会快速耗尽VPS或云服务器磁盘空间。压缩与存储的关键在于**不牺牲可读性、不影响实时监控、适配资源受限环境**。
优先启用NTFS文件系统级压缩
对存放性能日志的目录(如 d:\perflogs 或 %systemroot%\system32\winevt\logs)直接启用ntfs压缩,无需额外软件,零配置生效:
- 右键目标文件夹 → “属性” → “高级” → 勾选“压缩内容以便节省磁盘空间”
- 或命令行执行(管理员权限):
compact /c /s:D:\PerfLogs /i - 文本类性能日志(.blg、.etl、.csv导出文件)实测压缩率达65%–78%,且应用程序(如Relog.exe、Performance Monitor)仍可无缝读取
- 注意:已加密(EFS)或已用ZIP/RAR压缩的文件不建议重复启用NTFS压缩,收益极低
ETW日志写入时启用原生压缩
Windows Server 2016+ 支持在事件跟踪会话创建阶段启用实时压缩,从源头减小体积:
- 使用 logman 创建跟踪时添加 /ct Compressed 参数:
logman start "MyPerfTrace" -o D:\Traces\perf.etl -ct Compressed -ets - 该方式采用XPRESS算法,压缩率约40%–55%,CPU开销可控(实测单核占用
- 生成的.etl文件仍可用 tracerpt 或 Windows Performance Analyzer 直接打开分析
自动化归档压缩脚本(免安装)
针对每日生成的性能日志(如PerfMon导出的.csv、.blg),用PowerShell脚本自动压缩7天前文件并移至备份目录:
- 脚本核心逻辑(保存为 Compress-OldPerfLogs.ps1):
Get-ChildItem D:\PerfLogs -Filter "*.blg" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | ForEach-Object {
& Compress-Archive -Path $_.FullName -DestinationPath "D:\LOG_BACKUP\$($_.BaseName)_$(Get-Date -f yyyyMMdd).zip" -CompressionLevel Optimal
Remove-Item $_.FullName
} - 通过任务计划程序设置每日凌晨2点运行,全程无需第三方工具
- 建议配合 wevtutil sl 清理旧事件日志(如 wevtutil sl Security /ca:true 启用日志覆盖),避免EventLog自身膨胀
冷数据上云归档(合规+降本)
保留超90天的性能日志宜转为冷存储,兼顾GDPR/等保要求与成本控制:
- 将压缩后的ZIP包通过 azcopy(Azure)或 aws s3 cp(AWS)上传至对象存储
- 在云平台设置生命周期策略:90天后自动转为归档层(如Azure Archive Blob、S3 Glacier IR),存储费用可降低50%以上
- 关键提示:上传前建议用 Get-FileHash -Algorithm SHA256 记录校验值,确保归档完整性



















