为什么作为下游的WSUS更新服务器总有一直处于下载状态的文件
在上一篇关于WSUS无法更新Win10 1809之后,最近又遇到了下游服务器不正常的问题,而且在交流群中有群友问过这类问题……
问题现象:
在下游服务器上使用同步更新后会看到一个一直处于需要文件的更新。
图 1一直处于需要文件的更新
根据我的观察,最近几天一直都有,由于前一段时间修理了一下下游更新服务器,因大量文件需要同步,就一直等数据同步,可最近一段时间经常能看到这个,感觉到可能是哪里有问题,需要根据这个不正常的现象进行问题排查。
解决问题:
借助 HTTPNetworkSniffer嗅探工具,找找看HTTP请求中的不和谐反馈。
在点击立即同步后没多久,就在工具中看到了反馈404这个错误。
图 2无法获取上游服务器中的更新文件
通过猜测esd文件的性质,和图1 中文件大小,估摸着可能就是这个文件。
【ESD文件是用来升级操作系统,尤其是Win10 更新的一种加密压缩文件,因此等同于一个操作系统的WIM文件,所以体积比较大是正常的】
在上游更新服务器上搜索这个文件 “A7497EF7AFF694250BE967D2D10C6116A5D26523.esd” 无果,可以确定问题应该存在于上游服务器。
对于WSUS更新服务器的设计框架是有一个数据库(通常是系统内建的SQLServer或者WID)记录补丁信息,一个叫做WSUS更新服务目录的地方下载补丁本体在磁盘文件系统上。
在上游服务器上安装“SQL Server 2014 Management Studio”,使用“ \\.\pipe\MICROSOFT##WID\tsql\query ”作为服务器名称进行连接。
图 3通过SSMS数据库管理工具链接Win2012R2内置的数据库WID
新建一个SQL查询,在表 [dbo].[tbFile] 中查询缺失的文件信息。
图 4详细的查询语句展示
图 5查询所有表中列的全貌
增加一个筛选,我只要看到详细的URL下载链接即可(当多个缺失文件需要下载的时候,可将内容导出成表很有用)。
图 6这里需要的是下载URL的详细数据,使用Ctrl+C将他复制出来进行单独下载
下载该文件到Content\23\A7497EF7AFF694250BE967D2D10C6116A5D26523.esd 中,具体Content文件夹在哪里,可以在IIS管理器中获取到。
图 7使用IIS管理器的目录浏览功能进行本地文件系统中下载路径的确认
使用下载工具将缺失的“A7497EF7AFF694250BE967D2D10C6116A5D26523.esd”补充道对应目录
图 8复原缺失文件到指定文件夹内,修改日期和创建日期新鲜出炉
再次通过下游服务器更新同步。
图 9抓包工具中已经可以明确看到缺失文件成功被请求,并且在下载
图 10完成全部更新的下游服务器
问题总结:
1. 这个问题前段时间在微软一个内部交流群里有人问到过,但一直没有看到解决办法,无独有偶,在我们自己的环境中也遇到了,在没有现成解决方案的情况下,需要更多的知识储备来完成问题的处理
2. 使用合适的工具在问题处理上会很非常高效
3. 问题是如何发生的,目前还不确定,可能是因为清理历史过时更新引起,但是并不是偶然,或许以后可能还会出现
-=EOB=-