<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>差异磁盘 on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/%E5%B7%AE%E5%BC%82%E7%A3%81%E7%9B%98/</link>
        <description>Recent content in 差异磁盘 on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Tue, 22 Sep 2026 07:00:00 +0800</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/%E5%B7%AE%E5%BC%82%E7%A3%81%E7%9B%98/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Hyper-V VHDX 磁盘异常膨胀：一次 40GB 差异磁盘残留的定位与清理</title>
            <link>https://blog.5772447.xyz/posts/3d6d8adf/</link>
            <pubDate>Tue, 22 Sep 2026 07:00:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/3d6d8adf/</guid>
            <description>&lt;h2 id=&#34;问题背景&#34;&gt;&lt;a href=&#34;#%e9%97%ae%e9%a2%98%e8%83%8c%e6%99%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;问题背景&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;公司 Windows Server 2022 Hyper-V 宿主机（非管理员账户 WINSERVER\Guosj 通过 WorkBuddy 管理）运行多台 RouterOS 7.24beta3 开发版虚拟机，用于测试 App 平台与 hermes-agent 功能。某日发现宿主机 C 盘可用空间骤降至不足 10GB，经 du 排查发现单台 RouterOS VM 的 VHDX 文件已膨胀至 42GB，远超预期 8GB 系统盘 + 6GB 数据盘的规划。&lt;/p&gt;&#xA;&lt;p&gt;该 VM 曾创建过 6GiB 虚拟磁盘用于测试，日常使用中未开启 checkpoint，但 VHDX 文件持续增长且无法通过常规磁盘清理释放。需定位差异磁盘、检查点残留、日志配置漂移等根因，避免影响宿主机其他业务。&lt;/p&gt;&#xA;&lt;h2 id=&#34;故障现象&#34;&gt;&lt;a href=&#34;#%e6%95%85%e9%9a%9c%e7%8e%b0%e8%b1%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;故障现象&#xD;&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;VHDX 文件异常膨胀&lt;/strong&gt;：&lt;code&gt;RouterOS-7.24beta.vhdx&lt;/code&gt; 从初始 8.2GB 增长至 42.3GB，&lt;code&gt;ls -lh&lt;/code&gt; 显示大小持续增加（每日约 +2-3GB），&lt;code&gt;Get-VM&lt;/code&gt; 显示 &lt;code&gt;CheckpointCount=0&lt;/code&gt; 但磁盘占用不符。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;宿主机 C 盘告急&lt;/strong&gt;：&lt;code&gt;Get-PSDrive C&lt;/code&gt; 显示 &lt;code&gt;Used 142GB / Free 8.7GB&lt;/code&gt;，System Volume Information 目录下 &lt;code&gt;*.vhds&lt;/code&gt; 影子副本文件累计 18GB。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;VM 性能下降&lt;/strong&gt;：RouterOS VM 内 &lt;code&gt;df -h&lt;/code&gt; 显示根分区 90% 已用，但实际业务流量正常，怀疑是差异磁盘链过长导致 IO 放大。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;无明显 checkpoint&lt;/strong&gt;：&lt;code&gt;Get-VMCheckpoint&lt;/code&gt; 返回空，但 &lt;code&gt;Get-VHD&lt;/code&gt; 显示父子链存在 3 层差异磁盘，且 &lt;code&gt;ParentPath&lt;/code&gt; 指向已删除的快照文件。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;排查过程&#34;&gt;&lt;a href=&#34;#%e6%8e%92%e6%9f%a5%e8%bf%87%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;排查过程&#xD;&#xA;&lt;/h2&gt;&lt;h3 id=&#34;步骤-1定位-vhdx-真实占用&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4-1%e5%ae%9a%e4%bd%8d-vhdx-%e7%9c%9f%e5%ae%9e%e5%8d%a0%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤 1：定位 VHDX 真实占用&#xD;&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 以管理员身份运行（WorkBuddy 通过 sudo 提权执行）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-VM -Name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS-7.24beta&amp;#34;&lt;/span&gt; | Select-Object Name, State, @{N=&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VHDXSizeGB&amp;#34;&lt;/span&gt;;E={(Get-VHD $_.HardDrives[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;].Path).FileSize/&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;GB}}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 输出：Name=RouterOS-7.24beta, State=Running, VHDXSizeGB=42.31&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-VHD &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta.vhdx&amp;#34;&lt;/span&gt; | Select-Object Path, VhdFormat, VhdType, FileSize, Size, ParentPath&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;发现：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;VhdType=Differencing&lt;/code&gt;（差异磁盘）&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ParentPath=D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta_2026-09-10.vhdx&lt;/code&gt;（已&amp;quot;删除&amp;quot;但文件仍存在）&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;FileSize=42.31GB&lt;/code&gt;，逻辑 &lt;code&gt;Size=14GB&lt;/code&gt;（8GB 系统 + 6GB 数据）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;差异磁盘链已断裂，子磁盘持续写入新数据块导致物理文件膨胀。&lt;/p&gt;&#xA;&lt;h3 id=&#34;步骤-2检查-checkpoint-与-avhdx-残留&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4-2%e6%a3%80%e6%9f%a5-checkpoint-%e4%b8%8e-avhdx-%e6%ae%8b%e7%95%99&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤 2：检查 Checkpoint 与 AVHDX 残留&#xD;&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-VMCheckpoint -VMName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS-7.24beta&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 空&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-ChildItem &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\&amp;#34;&lt;/span&gt; -Filter &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*.avhdx&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 发现 2 个孤儿 .avhdx 文件，创建时间 2026-09-10 02:17&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 检查 System Volume Information 下的 VHD 快照&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vssadmin list shadows | findstr &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;确认：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;曾手动创建 2 个 checkpoint（2026-09-10 02:15/02:17），后通过 &lt;code&gt;Remove-VMCheckpoint&lt;/code&gt; 删除，但子 VHDX/AVHDX 未合并。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Get-VHD&lt;/code&gt; 链中 &lt;code&gt;ParentPath&lt;/code&gt; 指向已删除的 &lt;code&gt;.avhdx&lt;/code&gt;，磁盘 IO 需穿越 3 层链导致性能下降。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;步骤-3排查日志配置与写时复制&#34;&gt;&lt;a href=&#34;#%e6%ad%a5%e9%aa%a4-3%e6%8e%92%e6%9f%a5%e6%97%a5%e5%bf%97%e9%85%8d%e7%bd%ae%e4%b8%8e%e5%86%99%e6%97%b6%e5%a4%8d%e5%88%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;步骤 3：排查日志配置与写时复制&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;RouterOS VM 内 &lt;code&gt;/var/log&lt;/code&gt; 持续写入（hermes-agent debug 日志 + RouterOS 系统日志），差异磁盘每写入新块即分配物理空间。检查 VM 配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-VMIntegrationService -VMName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS-7.24beta&amp;#34;&lt;/span&gt; | Where-Object {$_.Enabled}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Guest Service Interface 已启用，但未配置日志轮转&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-VMFirmware -VMName &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS-7.24beta&amp;#34;&lt;/span&gt; | Select-Object SecureBoot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# SecureBoot=Off（RouterOS 7.24beta3 开发版暂不支持）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;根因定位：&lt;strong&gt;差异磁盘链断裂 + checkpoint 删除未合并 + VM 内日志无轮转策略&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;解决方案&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方案&#xD;&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-合并差异磁盘链保留当前数据&#34;&gt;&lt;a href=&#34;#1-%e5%90%88%e5%b9%b6%e5%b7%ae%e5%bc%82%e7%a3%81%e7%9b%98%e9%93%be%e4%bf%9d%e7%95%99%e5%bd%93%e5%89%8d%e6%95%b0%e6%8d%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 合并差异磁盘链（保留当前数据）&#xD;&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 停止 VM&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Stop-VM -Name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS-7.24beta&amp;#34;&lt;/span&gt; -Force&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 合并子磁盘到父磁盘（保留最新数据）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Merge-VHD -Path &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta.vhdx&amp;#34;&lt;/span&gt; `&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          -DestinationPath &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta-merged.vhdx&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 验证合并后大小（预期 ~14GB）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-VHD &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta-merged.vhdx&amp;#34;&lt;/span&gt; | Select-Object FileSize, Size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 替换原 VHDX（备份后操作）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Move-Item &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta.vhdx&amp;#34;&lt;/span&gt; `&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta.vhdx.bak&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Rename-Item &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta-merged.vhdx&amp;#34;&lt;/span&gt; `&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\RouterOS-7.24beta.vhdx&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 启动 VM 验证&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Start-VM -Name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RouterOS-7.24beta&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;合并后 VHDX 降至 14.2GB，宿主机 C 盘释放 28GB。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-清理孤儿-checkpoint-文件与影子副本&#34;&gt;&lt;a href=&#34;#2-%e6%b8%85%e7%90%86%e5%ad%a4%e5%84%bf-checkpoint-%e6%96%87%e4%bb%b6%e4%b8%8e%e5%bd%b1%e5%ad%90%e5%89%af%e6%9c%ac&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 清理孤儿 Checkpoint 文件与影子副本&#xD;&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 删除残留 .avhdx（已合并，无需保留）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Remove-Item &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D:\VMs\RouterOS-7.24beta\Virtual Hard Disks\*.avhdx&amp;#34;&lt;/span&gt; -Force&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 清理 System Volume Information 下的过期快照（需管理员）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vssadmin delete shadows /&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;=C: /oldest /quiet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vssadmin resize shadowstorage /&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;=C: /on=C: /maxsize=&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;GB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;3-配置-vm-日志轮转与磁盘限额预防复发&#34;&gt;&lt;a href=&#34;#3-%e9%85%8d%e7%bd%ae-vm-%e6%97%a5%e5%bf%97%e8%bd%ae%e8%bd%ac%e4%b8%8e%e7%a3%81%e7%9b%98%e9%99%90%e9%a2%9d%e9%a2%84%e9%98%b2%e5%a4%8d%e5%8f%91&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 配置 VM 日志轮转与磁盘限额（预防复发）&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;RouterOS 内 &lt;code&gt;/etc/logrotate.d/routeros-hermes&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/var/log/hermes-agent/*.log &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    daily&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rotate &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    compress&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    missingok&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    notifempty&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    create &lt;span style=&#34;color:#ae81ff&#34;&gt;0640&lt;/span&gt; root adm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sharedscripts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    postrotate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        /etc/init.d/hermes-agent reload &amp;gt; /dev/null 2&amp;gt;&amp;amp;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    endscript&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Hyper-V 侧启用 &lt;code&gt;Automatic Stop Action=Save&lt;/code&gt; + 定期 &lt;code&gt;Export-VM&lt;/code&gt; 快照到异地存储。&lt;/p&gt;&#xA;&lt;h2 id=&#34;根因分析&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e5%9b%a0%e5%88%86%e6%9e%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根因分析&#xD;&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;差异磁盘链断裂&lt;/strong&gt;：手动删除 checkpoint 时，&lt;code&gt;Remove-VMCheckpoint&lt;/code&gt; 未正确合并子磁盘，导致新写入持续分配物理块。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Checkpoint 残留&lt;/strong&gt;：&lt;code&gt;Get-VMCheckpoint&lt;/code&gt; 显示 0，但 VHD 元数据中 &lt;code&gt;ParentPath&lt;/code&gt; 仍指向已删除的 &lt;code&gt;.avhdx&lt;/code&gt;，磁盘链实际为 3 层。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;日志无轮转&lt;/strong&gt;：RouterOS VM 内 hermes-agent debug 日志 + 系统日志持续写入差异磁盘，每新块即膨胀 VHDX。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;管理账户权限&lt;/strong&gt;：WINSERVER\Guosj 非管理员，WorkBuddy 执行需提权，部分 VSS 操作依赖 sudo 策略导致清理不及时。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;预防措施&#34;&gt;&lt;a href=&#34;#%e9%a2%84%e9%98%b2%e6%8e%aa%e6%96%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;预防措施&#xD;&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hyper-V 磁盘管理规范&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;生产 VM 统一使用 &lt;code&gt;Fixed&lt;/code&gt; 类型 VHDX（避免差异磁盘链断裂风险）。&lt;/li&gt;&#xA;&lt;li&gt;每日 02:00 定时任务检查 &lt;code&gt;Get-VHD | Where-Object {$_.VhdType -eq &#39;Differencing&#39; -and $_.FileSize -gt 20GB}&lt;/code&gt;，超阈值告警。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Checkpoint 生命周期&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;仅保留最近 1 个 checkpoint，超过 24h 自动合并删除。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Remove-VMCheckpoint&lt;/code&gt; 后立即执行 &lt;code&gt;Get-VHD | Merge-VHD&lt;/code&gt; 验证链完整性。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;日志与监控&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VM 内强制 logrotate + journald &lt;code&gt;SystemMaxUse=500M&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;Prometheus + node_exporter 监控宿主机 &lt;code&gt;hyperv_vhdx_file_size_bytes&lt;/code&gt; 与 &lt;code&gt;hyperv_checkpoint_count&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;权限与审计&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;WorkBuddy 管理 Hyper-V 的提权操作记录到 Windows Event Log（EventID 4673），定期审计。&lt;/li&gt;&#xA;&lt;li&gt;禁止非管理员账户直接操作 VHDX 文件。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;Hyper-V 差异磁盘 + checkpoint 残留是 VHDX 异常膨胀的常见根因。本次排查通过 &lt;code&gt;Get-VHD&lt;/code&gt; 链分析 + &lt;code&gt;Merge-VHD&lt;/code&gt; 合并 + VSS 清理三步走，成功将 42GB 膨胀磁盘压缩至 14GB，释放宿主机 28GB 空间。后续通过固定磁盘类型 + 定时链检查 + 日志轮转策略，可彻底杜绝同类问题。&lt;/p&gt;&#xA;&lt;p&gt;真实场景（RouterOS 7.24beta3 + hermes-agent 测试）验证了 WorkBuddy 在非管理员账户下管理 Hyper-V 的可行性，也暴露了 VHDX 磁盘链断裂时的隐蔽性——&lt;code&gt;Get-VMCheckpoint&lt;/code&gt; 显示 0 并不等于磁盘链干净。&lt;/p&gt;&#xA;&lt;h2 id=&#34;延伸阅读&#34;&gt;&lt;a href=&#34;#%e5%bb%b6%e4%bc%b8%e9%98%85%e8%af%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;延伸阅读&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/8f3c2a1b/&#34; &gt;记一次 Windows Server 2022 Hyper-V 虚拟机迁移后 VHDX 路径漂移的修复&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/903f5f9d/&#34; &gt;一次 Linux 磁盘疑难排查方法论：df/du 不一致、幽灵文件、inode 耗尽四步定位法&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/69b1d440/&#34; &gt;清除 K8s 节点时钟漂移：一次证书校验失败与 API Server 通信中断的排查实录&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
