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

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

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

若要增加运行时间,请设置监视以检查覆盖是否已满。 达到特定级别时,设备可以警告用户和/或重启设备。

RAM 覆盖与磁盘覆盖

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

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

    • 可以使用可用空间直通来使用驱动器上除预留虚拟覆盖空间外的更多可用空间。
    • 在 Windows 10 版本 1803 上,可以使用永久覆盖,让用户即使在重启后也能将工作保存在虚拟覆盖中。

覆盖大小

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

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

对于 RAM 覆盖,你需要为系统预算一些 RAM。 例如,如果 OS 需要 2 GB RAM,而设备有 4 GB RAM,请将覆盖的最大大小设置为 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 消息并警告用户在设备上结束工作,这样他们就不会在覆盖被清除之前丢失内容。 你还可以提供脚本链接来清除覆盖内容。

    创建在 System 日志从 uwfvol 收到事件 ID 时触发的任务:

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

在具有磁盘重叠的设备上,可以使用可用空间直通来访问驱动器的更多可用空间。

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

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

  • CMD:uwfmgr overlay 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 及更高版本将自动重启。