统一写入筛选器 (UWF) 覆盖位置和大小

统一写入筛选器 (UWF) 通过截获受保护卷的写入尝试来保护卷的内容,并将这些写入尝试重定向到虚拟覆盖。

可以选择覆盖层 (RAM 或磁盘) 的存储位置、保留的空间量以及覆盖填满时会发生什么情况。

若要增加运行时间,请设置监视以检查覆盖层是否填满。 在某些级别,你的设备可以警告用户和/或重新启动设备。

RAM 覆盖与磁盘覆盖

  • RAM 覆盖 (默认) :虚拟覆盖存储在 RAM 中,并在重新启动后清除。

    • 通过写入 RAM,可以减少写入敏感媒体(如固态硬盘)的磨损。
    • RAM 通常比驱动器空间更有限。 当驱动器覆盖填满可用 RAM 时,设备性能可能会降低,最终会提示用户重启设备。 如果预期用户对覆盖进行大量大型写入,请考虑改用磁盘覆盖。
  • 磁盘覆盖:虚拟覆盖存储在驱动器上的临时位置。 默认情况下,在重新启动时会清除覆盖层。

    • 可以使用 freespace passthrough 在驱动器上使用超出保留虚拟覆盖空间的额外可用空间。
    • 在 Windows 10 版本 1803 上,可以使用持久覆盖,以允许用户在虚拟覆盖中保存工作,即使在重新启动后也是如此。

覆盖大小

  • 默认值=1024MB。 使用 设置:
    • CMDuwfmgr overlay set-size
    • CSPNextSession/MaximumOverlaySize
    • WMIUWF\Overlay.SetMaximumSize

规划设备推出时,建议优化覆盖大小以满足需求。

对于 RAM 覆盖,需要为系统预算一些 RAM。 例如,如果 OS 需要 2 GB RAM,并且设备的 RAM 为 4 GB,请将覆盖的最大大小设置为 2048MB, (2 GB) 或更少。

我们建议在测试设备上启用 UWF,安装必要的应用,并使设备通过使用情况模拟。 可以使用此 Powershell 脚本来找出占用空间的文件:

$wmiobject = get-wmiobject -Namespace "root\standardcimv2\embedded" -Class UWF_Overlay
$files = $wmiobject.GetOverlayFiles("c:")
$files.OverlayFiles | select-object -Property FileName,FileSize  | export-csv -Path D:\output.csv

使用的覆盖量将取决于:

  • 设备使用模式。
  • 可以访问的应用。 (某些应用的写入量较高,并且会更快地填满覆盖层。)
  • 重置间隔时间。
  • 删除文件时,UWF 会将其从覆盖区中删除,并将释放的资源返回到可用池。

警告和关键事件

当驱动器覆盖填满可用空间时,可以警告用户空间不足,并提示他们重新启动设备或运行脚本以清除覆盖。

  1. (可选) 设置警告级别和严重级别。 当覆盖填充到此值时,UWF 将写入 Windows (ETW 的事件跟踪) 消息。

    • 警告级别:默认值=512MB。 使用 设置:
      • CMDuwfmgr overlay set-warningthreshold
      • CSPNextSession/WarningOverlayThreshold
      • WMIUWF_Overlay.SetWarningThreshold
    • 严重级别:默认值=1024MB。 使用 设置:
      • CMDuwfmgr overlay set-criticalthreshold
      • CSPNextSession/CriticalOverlayThreshold
      • WMIUWF_Overlay.SetCriticalThreshold

    请注意,这些设置将在下次重新启动后生效。

  2. 使用任务计划程序检测 ETW 消息,并警告用户在设备上完成工作,以便在清除覆盖之前不会丢失内容。 还可以提供脚本链接以清除覆盖的内容。

    创建在 系统 日志从 uwfvol 接收事件 ID 时触发的任务:

    覆盖使用情况 来源 级别 事件 ID
    警告阈值 uwfvol 警告 1
    严重阈值 uwfvol 错误 2
    恢复正常 uwfvol 信息 3
  3. 重新启动设备。

在具有磁盘覆盖层的设备上,可以使用 freespace 直通来访问驱动器的额外可用空间。

你仍需要在磁盘上保留一些空间以用于覆盖。 此空间用于管理覆盖层和存储覆盖,例如系统更新。 所有其他写入将发送到磁盘上的可用空间。 随着时间的推移,保留覆盖层会越来越慢,因为覆盖将不断替换彼此。

在具有 RAM 覆盖的设备上,还可以使用可用空间直通来访问驱动器的额外可用空间,以减少覆盖使用量。 但是,建议不要将自由空间直通与 RAM 覆盖一起使用,因为它不会减少固态硬盘等写入敏感介质上的磨损。

  • CMD:uwfmgr 覆盖 set-passthrough (on|off)

持久覆盖

注意

此模式是实验性的,建议在部署到多个设备之前对其进行全面测试。 默认情况下不使用此选项。

在具有磁盘覆盖的设备上,可以选择继续使用覆盖数据,即使在重新启动后也是如此。 如果来宾用户可能需要较长时间访问,并且可能需要在两次使用之间关闭设备电源,这可能很有用。

此选项使 IT 部门可以更好地控制覆盖何时重置。 还可以为用户提供有助于按需重置覆盖层的脚本。

若要打开或关闭持久覆盖,请:

  • CMD:uwfmgr overlay set-persistent (on|off)

重置覆盖层:

  • CMDuwfmgr overlay reset-persistentstate on

覆盖耗尽

如果覆盖的大小接近或等于最大覆盖大小,则任何写入尝试都将失败,并返回错误,指示没有足够的空间来完成操作。 如果设备上的覆盖层达到此状态,则设备可能会无响应且缓慢,可能需要重启设备。

当 Windows 关闭时,它会尝试将多个文件写入磁盘。 如果覆盖已满,则这些写入尝试会失败,导致 Windows 反复尝试重写文件,直到 UWF 可以确定设备正在尝试关闭并解决问题。 当覆盖已满或接近满时,尝试使用普通方法关闭可能会导致设备需要很长时间(在某些情况下长达一小时或更长时间)才能关闭。

通常可以通过使用 UWF 自动启动关闭或重启来避免此问题:

  • 关闭

    • CMDuwfmgr shutdown
    • CSPShutdownSystem
    • WMIUWF\Filter.ShutdownSystem
  • 重启

    • CMDuwfmgr restart
    • CSPRestartSystem
    • WMIUWF\Filter.RestartSystem

如果超过覆盖层的最大大小,Windows 10 19H1 及更高版本将自动重启。